IyBOb3J3ZWdpYW4gYm9rbeVsIHRyYW5zbGF0aW9uIG9mIEdOVSBiaXNvbi4KIyBDb3B5cmlnaHQgKEMpIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIFBBQ0tBR0UgcGFja2FnZS4KIyBUcm9uZCBFbmRyZXN0+GwgPFRyb25kLkVuZHJlc3RvbEBndGYub2wubm8+LCAyMDA0LgojCiMgU2VuZCB0aGlzIGZpbGUgYXMgYW4gZ3ppcHBlZCBhdHRhY2htZW50IHRvOgojIHRyYW5zbGF0aW9uQGlyby51bW9udHJlYWwuY2EKIyB3aXRoIHRoZSBzdWJqZWN0OgojIFRQLVJvYm90IFBBQ0tBR0UtVkVSU0lPTi5URUFNLnBvCiMKIyBUaGUgc3ViamVjdCBmb3IgdGhlIE5vcndlZ2lhbiBib2tt5WwgdHJhbnNsYXRpb24gb2YgR05VIGJpc29uLXJ1bnRpbWUgMi4xCiMgd291bGQgdGhlbiBiZToKIyBUUC1Sb2JvdCBiaXNvbi1ydW50aW1lLTIuMS5uYi5wbwojCiMgSGVyZSdzIHRoZSBVUkwgZm9yIHRoZSBOb3J3ZWdpYW4gYm9rbeVsIHRyYW5zbGF0aW9uIHRlYW06CiMgaHR0cDovL3d3dy5pcm8udW1vbnRyZWFsLmNhL3RyYW5zbGF0aW9uL3JlZ2lzdHJ5LmNnaT90ZWFtPW5iCiMKIyBIZXJlJ3MgdGhlIFVSTCBmb3IgdGhlIGN1cnJlbnQgdHJhbnNsYXRpb25zIG9mIEdOVSBiaXNvbi1ydW50aW1lOgojIGh0dHA6Ly93d3cuaXJvLnVtb250cmVhbC5jYS90cmFuc2xhdGlvbi9yZWdpc3RyeS5jZ2k/ZG9tYWluPWJpc29uLXJ1bnRpbWUKIwptc2dpZCAiIgptc2dzdHIgIiIKIlByb2plY3QtSWQtVmVyc2lvbjogYmlzb24tcnVudGltZSAyLjFcbiIKIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBidWctYmlzb25AZ251Lm9yZ1xuIgoiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTktMTItMTEgMDc6NDMrMDEwMFxuIgoiUE8tUmV2aXNpb24tRGF0ZTogMjAwNS0wOS0yMSAwOTozNSswMjAwXG4iCiJMYXN0LVRyYW5zbGF0b3I6IFRyb25kIEVuZHJlc3T4bCA8VHJvbmQuRW5kcmVzdG9sQGd0Zi5vbC5ubz5cbiIKIkxhbmd1YWdlLVRlYW06IE5vcndlZ2lhbiBCb2ttYWFsIDxpMThuLW5iQGxpc3Rlci5waW5nLnVpby5ubz5cbiIKIkxhbmd1YWdlOiBuYlxuIgoiTUlNRS1WZXJzaW9uOiAxLjBcbiIKIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xXG4iCiJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCiJYLUJ1Z3M6IFJlcG9ydCB0cmFuc2xhdGlvbiBlcnJvcnMgdG8gdGhlIExhbmd1YWdlLVRlYW0gYWRkcmVzcy5cbiIKIlBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPShuICE9IDEpO1xuIgoKIzogZGF0YS9za2VsZXRvbnMvZ2xyLmM6ODg0IGRhdGEvc2tlbGV0b25zL3lhY2MuYzo2NjkKbXNnaWQgInN5bnRheCBlcnJvcjogY2Fubm90IGJhY2sgdXAiCm1zZ3N0ciAic3ludGFrc2ZlaWw6IGthbiBpa2tlIGflIHRpbGJha2UiCgojOiBkYXRhL3NrZWxldG9ucy9nbHIuYzoxNzkzCm1zZ2lkICJzeW50YXggaXMgYW1iaWd1b3VzIgptc2dzdHIgInN5bnRha3NlbiBlciBmbGVydHlkaWciCgojOiBkYXRhL3NrZWxldG9ucy9nbHIuYzoyMDc5IGRhdGEvc2tlbGV0b25zL2dsci5jOjIxNjQKIzogZGF0YS9za2VsZXRvbnMvZ2xyLmM6MjIwOCBkYXRhL3NrZWxldG9ucy9nbHIuYzoyNDQ2CiM6IGRhdGEvc2tlbGV0b25zL2xhbHIxLmNjOjEzODUgZGF0YS9za2VsZXRvbnMvbGFscjEuY2M6MTQwNgojOiBkYXRhL3NrZWxldG9ucy95YWNjLmM6MTI1MCBkYXRhL3NrZWxldG9ucy95YWNjLmM6MTc2MgojOiBkYXRhL3NrZWxldG9ucy95YWNjLmM6MTc2OAptc2dpZCAic3ludGF4IGVycm9yIgptc2dzdHIgInN5bnRha3NmZWlsIgoKIzogZGF0YS9za2VsZXRvbnMvZ2xyLmM6MjE2NSBkYXRhL3NrZWxldG9ucy9sYWxyMS5jYzoxMzg2CiM6IGRhdGEvc2tlbGV0b25zL3lhY2MuYzoxMjUxCiMsIGMtZm9ybWF0Cm1zZ2lkICJzeW50YXggZXJyb3IsIHVuZXhwZWN0ZWQgJXMiCm1zZ3N0ciAic3ludGFrc2ZlaWwsIHVmb3J2ZW50ZXQgJXMiCgojOiBkYXRhL3NrZWxldG9ucy9nbHIuYzoyMTY2IGRhdGEvc2tlbGV0b25zL2xhbHIxLmNjOjEzODcKIzogZGF0YS9za2VsZXRvbnMveWFjYy5jOjEyNTIKIywgYy1mb3JtYXQKbXNnaWQgInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIgptc2dzdHIgInN5bnRha3NmZWlsLCB1Zm9ydmVudGV0ICVzLCBmb3J2ZW50ZXQgJXMiCgojOiBkYXRhL3NrZWxldG9ucy9nbHIuYzoyMTY3IGRhdGEvc2tlbGV0b25zL2xhbHIxLmNjOjEzODgKIzogZGF0YS9za2VsZXRvbnMveWFjYy5jOjEyNTMKIywgYy1mb3JtYXQKbXNnaWQgInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIgptc2dzdHIgInN5bnRha3NmZWlsLCB1Zm9ydmVudGV0ICVzLCBmb3J2ZW50ZXQgJXMgZWxsZXIgJXMiCgojOiBkYXRhL3NrZWxldG9ucy9nbHIuYzoyMTY4IGRhdGEvc2tlbGV0b25zL2xhbHIxLmNjOjEzODkKIzogZGF0YS9za2VsZXRvbnMveWFjYy5jOjEyNTQKIywgYy1mb3JtYXQKbXNnaWQgInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIgptc2dzdHIgInN5bnRha3NmZWlsLCB1Zm9ydmVudGV0ICVzLCBmb3J2ZW50ZXQgJXMgZWxsZXIgJXMgZWxsZXIgJXMiCgojOiBkYXRhL3NrZWxldG9ucy9nbHIuYzoyMTY5IGRhdGEvc2tlbGV0b25zL2xhbHIxLmNjOjEzOTAKIzogZGF0YS9za2VsZXRvbnMveWFjYy5jOjEyNTUKIywgYy1mb3JtYXQKbXNnaWQgInN5bnRheCBlcnJvciwgdW5leHBlY3RlZCAlcywgZXhwZWN0aW5nICVzIG9yICVzIG9yICVzIG9yICVzIgptc2dzdHIgInN5bnRha3NmZWlsLCB1Zm9ydmVudGV0ICVzLCBmb3J2ZW50ZXQgJXMgZWxsZXIgJXMgZWxsZXIgJXMgZWxsZXIgJXMiCgojOiBkYXRhL3NrZWxldG9ucy9nbHIuYzoyNTA1IGRhdGEvc2tlbGV0b25zL3lhY2MuYzoxMzM1CiM6IGRhdGEvc2tlbGV0b25zL3lhY2MuYzoxMzM3IGRhdGEvc2tlbGV0b25zL3lhY2MuYzoxNTI2CiM6IGRhdGEvc2tlbGV0b25zL3lhY2MuYzoxOTE4Cm1zZ2lkICJtZW1vcnkgZXhoYXVzdGVkIgptc2dzdHIgIm1pbm5lIGVyIHV0dPhtdCIK