IyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCiMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCiMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCiMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQojICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiMKIyAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiMKIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCiMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KIyAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCiMgdW5kZXIgdGhlIExpY2Vuc2UuCgojZmllbGRzCmZpZWxkLnRpdGxlLmVtcGxveWVlcy5lbXBsb3llZUlkPU1pdGFyYmVpdGVyIE5yLgpmaWVsZC50aXRsZS5lbXBsb3llZXMuc2FsdXRhdGlvbj1BbnJlZGUKZmllbGQudGl0bGUuZW1wbG95ZWVzLmZpcnN0bmFtZT1Wb3JuYW1lCmZpZWxkLnRpdGxlLmVtcGxveWVlcy5sYXN0bmFtZT1OYWNobmFtZQpmaWVsZC50aXRsZS5lbXBsb3llZXMuZGF0ZU9mQmlydGg9R2VidXJ0c2RhdHVtCmZpZWxkLnRpdGxlLmVtcGxveWVlcy5kZXBhcnRtZW50SWQ9QWJ0ZWlsdW5nCmZpZWxkLnRpdGxlLmVtcGxveWVlcy5nZW5kZXI9R2VzY2hsZWNodApmaWVsZC50aXRsZS5lbXBsb3llZXMucGhvbmVOdW1iZXI9VGVsZWZvbm51bW1lcgpmaWVsZC50aXRsZS5lbXBsb3llZXMuZW1haWw9RS1NYWlsCmZpZWxkLnRpdGxlLmVtcGxveWVlcy5yZXRpcmVkPUF1c2dlc2NoaWVkZW4KZmllbGQudGl0bGUuZW1wbG95ZWVzLnVwZGF0ZVRpbWVzdGFtcD1adWxldHp0IGdl5G5kZXJ0IGFtCmZpZWxkLnRpdGxlLmRlcGFydG1lbnRzLm5hbWU9QWJ0ZWlsdW5nc25hbWUKZmllbGQudGl0bGUuZGVwYXJ0bWVudHMuaGVhZD1BYnRlaWx1Z25zbGVpdGVyCgojb3B0aW9ucwpvcHRpb24uZW1wbG95ZWUuZ2VuZGVyLm1hbGU9TeRubmxpY2gKb3B0aW9uLmVtcGxveWVlLmdlbmRlci5mZW1hbGU9V2VpYmxpY2gKCiNsYWJlbHMKYXBwbGljYXRpb24udGl0bGU9TWl0YXJiZWl0ZXJ2ZXJ3YWx0dW5nIChFbXBpcmUtZGIpCmxhYmVsLmVtcGxveWVlcz1NaXRhcmJlaXRlcmxpc3RlCmxhYmVsLmVtcGxveWVlcy5iZWFuTGlzdD1NaXRhcmJlaXRlcmxpc3RlIChCZWFuLUxpc3RlKQpsYWJlbC5lbXBsb3llZXMucmVhZGVyPU1pdGFyYmVpdGVybGlzdGUgKERCUmVhZGVyKQpsYWJlbC5kZWxldGU9TPZzY2hlbgpsYWJlbC5lZGl0PUJlYXJiZWl0ZW4KbGFiZWwuZW1wbG95ZWUuZWRpdD1FaW50cmFnIGJlYXJiZWl0ZW4KbGFiZWwuZW1wbG95ZWUuYWRkPUVpbnRyYWcgaGluenVm/GdlbgpsYWJlbC5uYW1lPU5hbWUKbGFiZWwuZ2VuZGVyPUdlc2NobGVjaHQKbGFiZWwuYWdlPUFsdGVyCmxhYmVsLmRlcGFydG1lbnQ9QWJ0ZWlsdW5nCmxhYmVsLnVzZXIuTmFtZT1OYW1lCmxhYmVsLnVzZXIuUHdkPVBhc3N3b3J0CgpwYWdlLmxhYmVsLmxvZ2luPUFubWVsZGVuCnBhZ2UubGFiZWwubG9naW5IaW50PUhpbndlaXM6IEdlYmVuIFNpZSBlaW5lbiBiZWxpZWJpZ2VuIEJlbnV0emVybmFtZW4gdW5kIEtlbm53b3J0IGFuLgpwYWdlLmxhYmVsLmxvZ2luaW5mbz1TaWUgc2luZCBhbmdlbWVsZGV0IGFsczoKcGFnZS5sYWJlbC5zZWFyY2g9TWl0YXJiZWl0ZXIgc3VjaGVuCnBhZ2UubGFiZWwubGlzdD1NaXRhcmJlaXRlciBhdXN35GhsZW4KcGFnZS5sYWJlbC51cGRhdGU9TWl0YXJiZWl0ZXIgYmVhcmJlaXRlbgpwYWdlLmxhYmVsLmFkZD1NaXRhcmJlaXRlciBoaW56dWb8Z2VuCgojYnV0dG9uIGxhYmVscwpidXR0b24ubGFiZWwubG9naW49QW5tZWxkZW4KYnV0dG9uLmxhYmVsLnNlYXJjaD1TdWNoZW4uLi4KYnV0dG9uLmxhYmVsLnNhdmU9U3BlaWNoZXJuCmJ1dHRvbi5sYWJlbC5jYW5jZWw9QWJicmVjaGVuCmJ1dHRvbi5sYWJlbC5kZWxldGU9TPZzY2hlbgoKI2xpbmsgbGFiZWxzCmxpbmsubGFiZWwuYWRkZW1wbG95ZWU9TmV1ZW4gRWludHJhZyBhbmxlZ2VuCmxpbmsubGFiZWwuZWRpdD1CZWFyYmVpdGVuCmxpbmsubGFiZWwuZGVsZXRlPUz2c2NoZW4KbGluay5sYWJlbC5sb2dvdXQ9TG9nb3V0CmxpbmsubGFiZWwuc2VhcmNoPVN1Y2hlbgoKIyMtLSBlcnJvcnMKZXJyb3JzLnByZWZpeD08c3BhbiBzdHlsZT0iY29sb3I6cmVkO2ZvbnQtd2VpZ2h0OmJvbGQ7Ij4KZXJyb3JzLnN1ZmZpeD08L3NwYW4+CgplcnJvci5pbnZhbGlkcGFzc3dvcmQ9RGVyIGVpbmdlZ2ViZW5lIEJlbnV0emVybmFtZSBpc3QgdW5n/Gx0aWcgKEVzIGlzdCBtaW5kZXN0ZW5zIGVpbiBaZWljaGVuIGVyZm9yZGVybGljaCEpCmVycm9yLndlYi5yZWNvcmRzRG9udE1hdGNoPVRoZSBmb3JtIHN1Ym1pdHRlZCBpcyBpbnZhbGlkIGZvciB0aGUgY3VycmVudCBjb250ZXh0LgplcnJvci53ZWIuY29sdW1uTm90Rm91bmQ9RGllIFNwYWx0ZSB7MH0gd3VyZGUgbmljaHQgZ2VmdW5kZW4hCmVycm9yLndlYi5maWVsZEVycm9yPUZlbGQgezB9OiB7MX0KZXJyb3Iud2ViLmlucHV0LmludGVnZXJGb3JtYXQ9VW5n/Gx0aWdlcyBaYWhsZW5mb3JtYXQKZXJyb3Iud2ViLmlucHV0Lm51bWJlckZvcm1hdD1Vbmf8bHRpZ2VzIFphaGxlbmZvcm1hdAplcnJvci53ZWIuaW5wdXQuZGF0ZUZvcm1hdD1Vbmf8bHRpZ2VzIERhdHVtc2Zvcm1hdAplcnJvci53ZWIuaW5wdXQuZGF0ZS5ub3RpbWU9RXMgd3VyZGUga2VpbmUgWmVpdCBhbmdlZ2ViZW4KZXJyb3Iud2ViLmlucHV0LnJlcXVpcmVkPURhcyBGZWxkIGlzdCBlaW5nYWJlcGZsaWNodGlnIAplcnJvci53ZWIuaW5wdXQub3V0T2ZSYW5nZT1EZXIgV2VydCBtdXNzIHp3aXNjaGVuIHswfSB1bmQgezF9IGxpZWdlbi4KZXJyb3Iud2ViLmlucHV0LnRleHRUb29TaG9ydD1EZXIgV2VydCBtdXNzIG1pbmRlc3RlbnMgezB9IFplaWNoZW4gZW50aGFsdGVuLiAK