From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Robert Scheck To: git-commits@fedoraproject.org Subject: [rpms/playonlinux] epel8: Add patch to replace urllib.request.URLopener (#2403290) Date: Fri, 12 Jun 2026 22:39:03 GMT Message-ID: <178130394353.1.693696825232665163.rpms-playonlinux-91959b62290c@fedoraproject.org> List-ID: X-Git-Repo: rpms/playonlinux X-Git-Branch: epel8 X-Git-Rev: 91959b62290c886f57f98f151591de15b811c529 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcGxheW9ubGludXgK QnJhbmNoIDogZXBlbDgKQ29tbWl0IDogOTE5NTliNjIyOTBjODg2ZjU3Zjk4ZjE1MTU5MWRlMTVi ODExYzUyOQpBdXRob3IgOiBSb2JlcnQgU2NoZWNrIDxyb2JlcnRAZmVkb3JhcHJvamVjdC5vcmc+ CkRhdGUgICA6IDIwMjYtMDYtMTNUMDA6MzY6MjUrMDI6MDAKU3RhdHMgIDogKzQ5MjAvLTQ4MDUg aW4gMyBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMv cGxheW9ubGludXgvYy85MTk1OWI2MjI5MGM4ODZmNTdmOThmMTUxNTkxZGUxNWI4MTFjNTI5P2Jy YW5jaD1lcGVsOAoKTG9nOgpBZGQgcGF0Y2ggdG8gcmVwbGFjZSB1cmxsaWIucmVxdWVzdC5VUkxv cGVuZXIgKCMyNDAzMjkwKQoKLS0tCmRpZmYgLS1naXQgYS9wbGF5b25saW51eC00LjQtZ2l0NzZh NjU4MC5wYXRjaCBiL3BsYXlvbmxpbnV4LTQuNC1naXQ3NmE2NTgwLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCA1ZjgxNThlLi4wMDAwMDAwCi0tLSBhL3BsYXlvbmxpbnV4LTQu NC1naXQ3NmE2NTgwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDgwMyArMCwwIEBACi1Gcm9t IDlmZjRiNzYxNjhhN2M2NGU0YTJkZTdiZTUxNTg2MThmYmIxMjQyYTIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/UXVlbnRpbj0yMFA9QzM9QTJyaXM/PSA8Z2l0aHVi QHBsYXlvbmxpbnV4LmNvbT4KLURhdGU6IFN1biwgMTcgTWF5IDIwMjAgMTY6MTU6MzAgKzAyMDAK LVN1YmplY3Q6IFtQQVRDSCAwMS8zM10gVXBkYXRlIENIQU5HRUxPRy5tZAotCi0tLS0KLSBDSEFO R0VMT0cubWQgfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlm ZiAtLWdpdCBhL0NIQU5HRUxPRy5tZCBiL0NIQU5HRUxPRy5tZAotaW5kZXggYTU4OTYyNWMzLi5j ZGUyZDgyYzQgMTAwNjQ0Ci0tLS0gYS9DSEFOR0VMT0cubWQKLSsrKyBiL0NIQU5HRUxPRy5tZAot QEAgLTEsMyArMSw2IEBACi0rIyA0LjQKLSsqIFB5dGhvbiAzIHN1cHBvcnQgCi0rCi0gIyA0LjMu NAotICogRml4ZWQgc29tZSBidWdzIGluIHRoZSB3aW5ldmVyc2lvbiBwcm9jZXNzCi0gKiBCZWdp bmluZyBvZiBjb2RlIGNsZWFuaW5nIGFuZCByZWZhY3RvcmluZwotCi1Gcm9tIDc4OGZhZDE2ZWZm NDkwNDE5M2U0ZTljNTJiMjM2NzI1MzVhMjNjMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBHaWxsZXMgPGdpbGxlcy53aWJlckBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIE1heSAy MDIwIDExOjE5OjM1ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMzNdIFJlbW92aW5nIFNldFNw YWNpbmcgZnVudGlvbgotCi0tLS0KLSBweXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdp bmRvdy5weSAgICAgICAgIHwgMiArLQotIHB5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJl V2luZG93Tm90ZWJvb2sucHkgfCAyICstCi0gcHl0aG9uL2RlYnVnLnB5ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBweXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93 LnB5ICAgICAgICAgICAgICAgICAgIHwgMiArLQotIHB5dGhvbi9tYWlud2luZG93LnB5ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gcHl0aG9uL29wdGlvbnMucHkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBweXRob24vc2V0dXB3aW5kb3cvUE9M X1NldHVwRnJhbWUucHkgICAgICAgICAgICAgIHwgMiArLQotIHB5dGhvbi93aW5lX3ZlcnNpb25z L1dpbmVWZXJzaW9uc05vdGVib29rLnB5ICAgICAgfCA0ICsrLS0KLSA4IGZpbGVzIGNoYW5nZWQs IDkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9j b25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93LnB5IGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRv dy9Db25maWd1cmVXaW5kb3cucHkKLWluZGV4IDMwZjc3OWRiMS4uYTI2MzIxNDM3IDEwMDc1NQot LS0tIGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3cucHkKLSsrKyBiL3B5 dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93LnB5Ci1AQCAtNzUsNyArNzUsNyBA QCBkZWYgX19pbml0X18oc2VsZixwYXJlbnQsaWQsdGl0bGUsc2hvcnRjdXQsIGlzUHJlZml4ID0g RmFsc2UpOgotICAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuRGVsZXRlUHJl Zml4LCBpZD0xMDAyKQotIAotIAotLSAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygw KQotKyAgICAgICAgI3NlbGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCkKLSAgICAgICAgIHNlbGYu bGlzdF9nYW1lLlNldEltYWdlTGlzdChzZWxmLmltYWdlcykKLSAKLSAKLWRpZmYgLS1naXQgYS9w eXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5IGIvcHl0aG9u L2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weQotaW5kZXggOGI0ZTM4 N2VhLi45NzNkOWJiZDMgMTAwNjQ0Ci0tLS0gYS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZp Z3VyZVdpbmRvd05vdGVib29rLnB5Ci0rKysgYi9weXRob24vY29uZmlndXJld2luZG93L0NvbmZp Z3VyZVdpbmRvd05vdGVib29rLnB5Ci1AQCAtMjY5LDcgKzI2OSw3IEBAIGRlZiBQYWNrYWdlcyhz ZWxmLCBub20pOgotIAotICAgICAgICAgc2VsZi5NZW51ID0gd3guVHJlZUN0cmwoc2VsZi5wYW5l bFBhY2thZ2VzLCA5OSwgcG9zPSgxNSwgNzUpLCBzaXplPSg1MzAsIDI2MCksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxM X1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMpCi0tICAgICAgICBzZWxm Lk1lbnUuU2V0U3BhY2luZygwKTsKLSsgICAgICAgICNzZWxmLk1lbnUuU2V0U3BhY2luZygwKTsK LSAgICAgICAgIHNlbGYuTWVudS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZVBhY2thZ2VzKQotICAg ICAgICAgc2VsZi5pbWFnZVBhY2thZ2VzLlJlbW92ZUFsbCgpCi0gCi1kaWZmIC0tZ2l0IGEvcHl0 aG9uL2RlYnVnLnB5IGIvcHl0aG9uL2RlYnVnLnB5Ci1pbmRleCAwMjIxZTg5YzAuLjQzZThjZjAy MSAxMDA3NTUKLS0tLSBhL3B5dGhvbi9kZWJ1Zy5weQotKysrIGIvcHl0aG9uL2RlYnVnLnB5Ci1A QCAtNjAsNyArNjAsNyBAQCBkZWYgX19pbml0X18oc2VsZixwYXJlbnQsaWQsdGl0bGUsbG9nY2hl Y2s9Ii9kZXYvbnVsbCIsbG9ndHlwZT1Ob25lKToKLSAgICAgICAgIHNlbGYuQmluZCh3eC5FVlRf VFJFRV9TRUxfQ0hBTkdFRCwgc2VsZi5hbmFseXNlTG9nLCBpZD05MDApCi0gCi0gCi0tICAgICAg ICBzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApOwotKyAgICAgICAgI3NlbGYubGlzdF9nYW1l LlNldFNwYWNpbmcoMCk7Ci0gICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRJbWFnZUxpc3Qoc2Vs Zi5pbWFnZXMpCi0gCi0gCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRv dy5weSBiL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkKLWluZGV4IDI3YTZiNTFhNS4u NWI1ODQ3NzRkIDEwMDc1NQotLS0tIGEvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weQot KysrIGIvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weQotQEAgLTE4Myw3ICsxODMsNyBA QCBkZWYgX2NyZWF0ZUFwcE5hdmlnYXRpb24oc2VsZik6Ci0gICAgICAgICBzZWxmLmFwcHNMaXN0 ID0gd3guVHJlZUN0cmwoc2VsZi5hcHBOYXZpZ2F0aW9uUGFuZWwsIDEwNiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9G VUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMpCi0gICAgICAgICBz ZWxmLmFwcHNMaXN0LlNldEltYWdlTGlzdChzZWxmLmltYWdlc2FwcHMpCi0tICAgICAgICBzZWxm LmFwcHNMaXN0LlNldFNwYWNpbmcoMCkKLSsgICAgICAgICNzZWxmLmFwcHNMaXN0LlNldFNwYWNp bmcoMCkKLSAKLSAgICAgICAgIHNlbGYuYXBwTmF2aWdhdGlvblNpemVyLkFkZFNwYWNlcigxMCkK LSAgICAgICAgIHNlbGYuYXBwTmF2aWdhdGlvblNpemVyLkFkZChzZWxmLmFwcHNMaXN0LCA0LCB3 eC5FWFBBTkQsIDUpCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRob24v bWFpbndpbmRvdy5weQotaW5kZXggN2MyMTE0MmRmLi44ZGYxZmYxNGIgMTAwNzU1Ci0tLS0gYS9w eXRob24vbWFpbndpbmRvdy5weQotKysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKLUBAIC0yNDAs NyArMjQwLDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQsIHRpdGxlKToKLSAKLSAg ICAgICAgICMjIExpc3QgZ2FtZQotICAgICAgICAgc2VsZi5saXN0X2dhbWUgPSB3eC5UcmVlQ3Ry bChzZWxmLCAxMDUsIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hM SUdIVCkKLS0gICAgICAgIHNlbGYubGlzdF9nYW1lLlNldFNwYWNpbmcoMCkKLSsgICAgICAgICNz ZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApCi0gICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRJ bmRlbnQoNSkKLSAgICAgICAgIHNlbGYubGlzdF9nYW1lLlNldEltYWdlTGlzdChzZWxmLmltYWdl cykKLSAgICAgICAgIHNlbGYubWVudV9nYXVjaGUgPSB3eC5QYW5lbChzZWxmLCAtMSkKLWRpZmYg LS1naXQgYS9weXRob24vb3B0aW9ucy5weSBiL3B5dGhvbi9vcHRpb25zLnB5Ci1pbmRleCBhNTRj MTEwMDAuLjcyMzA3M2NlNCAxMDA3NTUKLS0tLSBhL3B5dGhvbi9vcHRpb25zLnB5Ci0rKysgYi9w eXRob24vb3B0aW9ucy5weQotQEAgLTE4Nyw3ICsxODcsNyBAQCBkZWYgUGx1Z2lucyhzZWxmLCBu b20pOgotICAgICAgICAgc2VsZi50eHRQbHVnaW4gPSB3eC5TdGF0aWNUZXh0KHNlbGYucGFuZWxQ bHVnaW5zLCAtMSwgXygiSW5zdGFsbGVkIHBsdWdpbnMiKSwgc2l6ZT13eC5EZWZhdWx0U2l6ZSkK LSAgICAgICAgIHNlbGYudHh0UGx1Z2luLlNldEZvbnQoc2VsZi5mb250VGl0bGUpCi0gICAgICAg ICBzZWxmLnBsdWdpbmxpc3QgPSB3eC5UcmVlQ3RybChzZWxmLnBhbmVsUGx1Z2lucywgMjIwLCBz dHlsZT1WYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnN8d3guVFJfSElERV9ST09UfHd4LlRSX0ZVTExf Uk9XX0hJR0hMSUdIVCkKLS0gICAgICAgIHNlbGYucGx1Z2lubGlzdC5TZXRTcGFjaW5nKDApCi0r ICAgICAgICAjc2VsZi5wbHVnaW5saXN0LlNldFNwYWNpbmcoMCkKLSAKLSAgICAgICAgIHNlbGYu cGx1Z2luSW1nTGlzdCA9IHd4LkltYWdlTGlzdCgxNiwxNikKLSAKLWRpZmYgLS1naXQgYS9weXRo b24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkgYi9weXRob24vc2V0dXB3aW5kb3cvUE9M X1NldHVwRnJhbWUucHkKLWluZGV4IDY2YmVlODUzMy4uMzNkNzNkMzhhIDEwMDc1NQotLS0tIGEv cHl0aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5Ci0rKysgYi9weXRob24vc2V0dXB3 aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKLUBAIC0yMTIsNyArMjEyLDcgQEAgZGVmIF9jcmVhdGVV SShzZWxmKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3gu VFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdl dF9ib3JkZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3M9KDI1 LCAyNSksIHNpemU9KDQ2MCwgMjIwKSkKLSAgICAgICAgIHNlbGYuTWVudUdhbWVzLlNldEltYWdl TGlzdChzZWxmLmltYWdlcykKLS0gICAgICAgIHNlbGYuTWVudUdhbWVzLlNldFNwYWNpbmcoMCkK LSsgICAgICAgICNzZWxmLk1lbnVHYW1lcy5TZXRTcGFjaW5nKDApCi0gCi0gICAgICAgICAjIExv Z2luCi0gICAgICAgICBzZWxmLmxvZ2luID0gd3guU3RhdGljVGV4dChzZWxmLmNvbnRlbnRQYW5l bCwgLTEsIF8oIkxvZ2luOiAiKSwgcG9zPSgyMCwgNDApLCBzaXplPSg0NjAsIDIwKSkKLWRpZmYg LS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weSBiL3B5 dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5Ci1pbmRleCBlMDg4YWJl YjIuLmVjNWYxMjUzNSAxMDA2NDQKLS0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJz aW9uc05vdGVib29rLnB5Ci0rKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNO b3RlYm9vay5weQotQEAgLTM5LDcgKzM5LDcgQEAgZGVmIF9jcmVhdGVJbnN0YWxsZWRXaW5lVmVy c2lvbnNQYW5lbChzZWxmLCBhcmNoKToKLSAgICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZlcnNp b25zVHJlZVNlbGVjdG9yW2FyY2hdID0gd3guVHJlZUN0cmwoaW5zdGFsbGVkV2luZVZlcnNpb25z UGFuZWwsIDEwNyArIHNlbGYuY2FsY3VsYXRlRXZlbnREZWx0YShhcmNoKSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFi bGVzLndpZGdldF9ib3JkZXJzKQotICAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNU cmVlU2VsZWN0b3JbYXJjaF0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzYXBwc19pW2FyY2hdKQot LSAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0 U3BhY2luZygwKQotKyAgICAgICAgI3NlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVj dG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKLSAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1Np emVyLkFkZChzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSwgMSwg d3guRVhQQU5EKQotICAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2Vy KDEwKQotIAotQEAgLTU1LDcgKzU1LDcgQEAgZGVmIF9jcmVhdGVBdmFpbGFibGVXaW5lVmVyc2lv bnNQYW5lbChzZWxmLCBhcmNoKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwg d3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJzLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaXplPSgzMjAsIDMwMCksIHBvcz0oMTAsIDM1KSkKLSAgICAgICAgIHNlbGYuYXZh aWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEltYWdlTGlzdChzZWxmLmlt YWdlc2FwcHNbYXJjaF0pCi0tICAgICAgICBzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVT ZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDApCi0rICAgICAgICAjc2VsZi5hdmFpbGFibGVXaW5l VmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQotICAgICAgICAgYXZhaWxh YmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNl bGVjdG9yW2FyY2hdLCAxLCB3eC5FWFBBTkQpCi0gICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lv bnNTaXplci5BZGRTcGFjZXIoMTApCi0gCi0KLUZyb20gNzdhM2NhM2JlMjkzZWJjYWZhMjQwMDcw M2E1ZGQ0MDc5YTVmMjAwYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEdpbGxlcyA8 Z2lsbGVzLndpYmVyQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgTWF5IDIwMjAgMTE6MzI6MTMg KzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8zM10gU29sdmluZyBwbHVnaW5nIG1hbmFnZXIgaXNz dWUgKGV4dGVuc2lvbiBtYW5hZ2VtZW50KQotCi0tLS0KLSBweXRob24vb3B0aW9ucy5weSB8IDEx ICsrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9vcHRpb25zLnB5IGIvcHl0aG9uL29wdGlvbnMu cHkKLWluZGV4IDcyMzA3M2NlNC4uZjQwZjI2YTcwIDEwMDc1NQotLS0tIGEvcHl0aG9uL29wdGlv bnMucHkKLSsrKyBiL3B5dGhvbi9vcHRpb25zLnB5Ci1AQCAtMjI5LDkgKzIyOSw5IEBAIGRlZiBn ZW5lcmF0ZUV4dHMoc2VsZik6Ci0gICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiXG4i LCIiKQotICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnNwbGl0KCI9IikKLSAgICAgICAgICAgICBs aW5lciA9ICJMaW5lICVzIiAlIGkKLS0gICAgICAgICAgICBzZWxmLmxpc3RfZXh0Lkluc2VydFN0 cmluZ0l0ZW0oaSwgbGluZXIpCi0tICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5TZXRTdHJpbmdJ dGVtKGksIDAsIGxpbmVbMF0pCi0tICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5TZXRTdHJpbmdJ dGVtKGksIDEsIGxpbmVbMV0pCi0rICAgICAgICAgICAgc2VsZi5saXN0X2V4dC5JbnNlcnRJdGVt KGksIGxpbmVyKQotKyAgICAgICAgICAgIHNlbGYubGlzdF9leHQuU2V0SXRlbShpLCAwLCBsaW5l WzBdKQotKyAgICAgICAgICAgIHNlbGYubGlzdF9leHQuU2V0SXRlbShpLCAxLCBsaW5lWzFdKQot ICAgICAgICAgICAgIGkgKz0gMQotICAgICAgICAgc2VsZi5hcHBfaW5zdGFsbGVkX3RleHQuSGlk ZSgpCi0gICAgICAgICBzZWxmLmFwcF9pbnN0YWxsZWQuSGlkZSgpCi1AQCAtMjQ5LDggKzI0OSw5 IEBAIGRlZiBlZGl0RXh0KHNlbGYsIGV2ZW50KToKLSAgICAgICAgIHNlbGYuYXBwX2luc3RhbGxl ZC5TaG93KCkKLSAgICAgICAgIHNlbGYuZGVsZXRlX2V4dC5TaG93KCkKLSAKLS0gICAgICAgIHNl bGYuYXBwX3NlbGVjdGVkID0gc2VsZi5leHRzW2V2ZW50Lm1faXRlbUluZGV4XS5zcGxpdCgiPSIp WzFdCi0tICAgICAgICBzZWxmLmV4dF9zZWxlY3RlZCA9IHNlbGYuZXh0c1tldmVudC5tX2l0ZW1J bmRleF0uc3BsaXQoIj0iKVswXQotKyAgICAgICAgaW5kID0gZXZlbnQuR2V0SW5kZXgoKQotKyAg ICAgICAgc2VsZi5hcHBfc2VsZWN0ZWQgPSBzZWxmLmxpc3RfZXh0LkdldEl0ZW0oaW5kLDEpLkdl dFRleHQoKQotKyAgICAgICAgc2VsZi5leHRfc2VsZWN0ZWQgPSBzZWxmLmxpc3RfZXh0LkdldEl0 ZW0oaW5kLDApLkdldFRleHQoKQotIAotICAgICAgICAgc2VsZi5hcHBfaW5zdGFsbGVkLlNldFZh bHVlKHNlbGYuYXBwX3NlbGVjdGVkLnJlcGxhY2UoIlxuIiwiIikucmVwbGFjZSgiXHIiLCIiKSkK LSAKLQotRnJvbSBhNjU2ZjViMmJkZDIzMzc1ZTNkOTU0N2E5YzM4Y2NmOTllMmRjNjcwIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2lsbGVzIDxnaWxsZXMud2liZXJAZ21haWwuY29t PgotRGF0ZTogU2F0LCAzMCBNYXkgMjAyMCAxNDozNDoyOCArMDIwMAotU3ViamVjdDogW1BBVENI IDA0LzMzXSBTb2x2aW5nIGRpZmZlcmVudCBpc3N1ZSBvbiBkZWJ1ZyB3aW5kb3cKLQotLS0tCi0g cHl0aG9uL2RlYnVnLnB5ICAgICAgICAgfCA3ICsrKystLS0KLSBweXRob24vbGliL1ZhcmlhYmxl cy5weSB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9kZWJ1Zy5weSBiL3B5dGhvbi9kZWJ1Zy5weQot aW5kZXggNDNlOGNmMDIxLi4xZTM0NGVkYzggMTAwNzU1Ci0tLS0gYS9weXRob24vZGVidWcucHkK LSsrKyBiL3B5dGhvbi9kZWJ1Zy5weQotQEAgLTM4LDcgKzM4LDcgQEAgZGVmIF9faW5pdF9fKHNl bGYscGFyZW50LGlkLHRpdGxlLGxvZ2NoZWNrPSIvZGV2L251bGwiLGxvZ3R5cGU9Tm9uZSk6Ci0g Ci0gICAgICAgICB3eC5GcmFtZS5fX2luaXRfXyhzZWxmLCBwYXJlbnQsIC0xLCB0aXRsZSwgc2l6 ZSA9ICg4MTAsIDYwMCtWYXJpYWJsZXMud2luZG93c19hZGRfc2l6ZSksIHN0eWxlID0gd3guQ0xP U0VfQk9YIHwgd3guQ0FQVElPTiB8IHd4Lk1JTklNSVpFX0JPWCkKLSAgICAgICAgIHNlbGYuU2V0 SWNvbih3eC5JY29uKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYrIi9ldGMvcGxheW9ubGludXgu cG5nIiwgd3guQklUTUFQX1RZUEVfQU5ZKSkKLS0gICAgICAgIHNlbGYuU2V0VGl0bGUoXygnezB9 IGRlYnVnZ2VyJykuZm9ybWF0KG9zLmVudmlyb25bIkFQUExJQ0FUSU9OX1RJVExFIl0pKQotKyAg ICAgICAgc2VsZi5TZXRUaXRsZSh0aXRsZSkKLSAgICAgICAgICNzZWxmLnBhbmVsRmVucCA9IHd4 LlBhbmVsKHNlbGYsIC0xKQotIAotICAgICAgICAgc2VsZi5wcmVmaXhlc19pdGVtID0ge30KLUBA IC03OSw3ICs3OSw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCxpZCx0aXRsZSxsb2djaGVj az0iL2Rldi9udWxsIixsb2d0eXBlPU5vbmUpOgotICAgICAgICAgc2VsZi5sb2dfcmVhZGVyID0g d3guVGV4dEN0cmwoc2VsZi5wYW5lbFRleHQsIDEwMCwgIiIsIHNpemU9d3guU2l6ZSg1OTAsNTAw KSwgcG9zPSgyLDIpLCBzdHlsZT1WYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnN8d3guVEVfUklDSDJ8 d3guVEVfUkVBRE9OTFl8d3guVEVfTVVMVElMSU5FKQotICAgICAgICAgc2VsZi5sb2dfcmVhZGVy LkJpbmQod3guRVZUX1NFVF9GT0NVUywgc2VsZi5PbkZvY3VzKQotICAgICAgICAgc2VsZi5vcGVu VGV4dEVkaXQgPSB3eC5CdXR0b24oc2VsZi5wYW5lbE5vdEVtcHR5LCAxMDEsIF8oIkxvY2F0ZSB0 aGlzIGxvZ2ZpbGUiKSwgc2l6ZT0oNDAwLDMwKSwgcG9zPSg3MCw1MTIpKQotLSAgICAgICAgc2Vs Zi5yZXBvcnRQcm9ibGVtID0gd3guQnV0dG9uKHNlbGYucGFuZWxOb3RFbXB0eSwgMTAyLCAiIiwg c2l6ZT0oNDAwLDMwKSwgcG9zPSg3MCw1NTIpKQotKyAgICAgICAgc2VsZi5yZXBvcnRQcm9ibGVt ID0gd3guQnV0dG9uKHNlbGYucGFuZWxOb3RFbXB0eSwgMTAyLCBfKCJCdWcgcmVwb3J0IiksIHNp emU9KDQwMCwzMCksIHBvcz0oNzAsNTUyKSkKLSAKLSAgICAgICAgIGlmKGxvZ2NoZWNrID09ICIv ZGV2L251bGwiKToKLSAgICAgICAgICAgICBzZWxmLkhpZGVMb2dGaWxlKCkKLUBAIC05NSw3ICs5 NSw4IEBAIGRlZiBidWdSZXBvcnQoc2VsZiwgZXZlbnQpOgotICAgICAgICAgbmV3X2VudiA9IG9z LmVudmlyb24KLSAgICAgICAgIG5ld19lbnZbIkxPR1RJVExFIl0gPSBzZWxmLmxvZ25hbWUKLSAg ICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFyaWFibGVzLnBsYXlvbmxpbnV4X2Vu disiL2Jhc2gvYnVnX3JlcG9ydCJdLCBlbnY9bmV3X2VudikKLS0gICAgICAgIHNlbGYucmVwb3J0 UHJvYmxlbS5FbmFibGUoRmFsc2UpCi0rICAgICAgICAjIERvZXNuJ3Qgd29yayBpZiBjYW5jZWwg b24gUE9MIFdpbmRvdyA6IG5lZWQgdG8gZmluZCBhbm90aGVyIHdheSAuLi4KLSsgICAgICAgICNz ZWxmLnJlcG9ydFByb2JsZW0uRW5hYmxlKEZhbHNlKQotIAotICAgICBkZWYgbG9jYXRlKHNlbGYs IGV2ZW50KToKLSAgICAgICAgIGlmKHNlbGYubG9ndHlwZSA9PSAwKToKLWRpZmYgLS1naXQgYS9w eXRob24vbGliL1ZhcmlhYmxlcy5weSBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5Ci1pbmRleCAw NTVmZTE3ZjkuLjhiZWQ3NjAxYiAxMDA3NTUKLS0tLSBhL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5 Ci0rKysgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQotQEAgLTUxLDcgKzUxLDcgQEAKLSAgICAg ICAgIHdpbmRvd3NfYWRkX3NpemUgPSAwCi0gICAgICAgICB3aW5kb3dzX2FkZF9wbGF5b25tYWMg PSAwCi0gICAgIGVsc2U6Ci0tICAgICAgICB3aW5kb3dzX2FkZF9zaXplID0gZHBpRmV0Y2hlcigp LmZldGNoX2V4dHJhX3BpeGVsKCkKLSsgICAgICAgIHdpbmRvd3NfYWRkX3NpemUgPSBkcGlGZXRj aGVyKCkuZmV0Y2hfZXh0cmFfcGl4ZWwoKSs2MAotICAgICAgICAgd2luZG93c19hZGRfcGxheW9u bWFjID0gMAotIAotICAgICB3aWRnZXRfYm9yZGVycyA9IHd4LlJBSVNFRF9CT1JERVIKLQotRnJv bSAwMmJlYWIwNWQ0MjU1ODAyYzI2ZGIyMGExODc4NzM0OWU5YjE1YmJjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogR2lsbGVzIDxnaWxsZXMud2liZXJAZ21haWwuY29tPgotRGF0ZTog U2F0LCAzMCBNYXkgMjAyMCAxNToxNzozMyArMDIwMAotU3ViamVjdDogW1BBVENIIDA1LzMzXSBT b2x2aW5nIHNtYWxsIGJ1Z3MKLQotLS0tCi0gcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1 cmVXaW5kb3dOb3RlYm9vay5weSB8IDIgKysKLSBweXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93 LnB5ICAgICAgICAgICAgICAgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vY29uZmlndXJld2lu ZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5IGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9D b25maWd1cmVXaW5kb3dOb3RlYm9vay5weQotaW5kZXggOTczZDliYmQzLi4yOTY0NDNlNjYgMTAw NjQ0Ci0tLS0gYS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29r LnB5Ci0rKysgYi9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29r LnB5Ci1AQCAtNDY3LDYgKzQ2Nyw4IEBAIGRlZiBtaXNjX2J1dHRvbihzZWxmLCBldmVudCk6Ci0g ICAgICAgICAgICAgc2VsZi5GaWxlRGlhbG9nLlNob3dNb2RhbCgpCi0gICAgICAgICAgICAgaWYg KHNlbGYuRmlsZURpYWxvZy5HZXRQYXRoKCkgIT0gIiIpOgotICAgICAgICAgICAgICAgICBmaWxl bmFtZSA9IHNlbGYuRmlsZURpYWxvZy5HZXRQYXRoKCkKLSsgICAgICAgICAgICAgICAgaWYgbm90 IG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKLSsgICAgICAgICAgICAgICAgICAgIHJldHVybgot ICAgICAgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQotICAg ICAgICAgICAgICAgICBpZiAoc2VsZi5zX2lzUHJlZml4ID09IFRydWUpOgotICAgICAgICAgICAg ICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJsZXMucGxheW9ubGludXhf ZW52ICsgIi9iYXNoL1BPTF9Db21tYW5kIiwgIi0tcHJlZml4IiwKLWRpZmYgLS1naXQgYS9weXRo b24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5IGIvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRv dy5weQotaW5kZXggNWI1ODQ3NzRkLi4yZTQ5ZTRhMTggMTAwNzU1Ci0tLS0gYS9weXRob24vaW5z dGFsbC9JbnN0YWxsV2luZG93LnB5Ci0rKysgYi9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93 LnB5Ci1AQCAtMzMzLDcgKzMzMyw3IEBAIGRlZiBjbG9zZWFwcChzZWxmLCBldmVudCk6Ci0gCi0g ICAgIGRlZiBtYW51YWwoc2VsZiwgZXZlbnQpOgotICAgICAgICAgc2VsZi5saXZlID0gMQotLSAg ICAgICAgc2VsZi5pbnN0YWxsYXBwKHNlbGYpCi0rICAgICAgICBzZWxmLmluc3RhbGxhcHAoZXZl bnQpCi0gCi0gICAgIGRlZiBzaG93U3RhcnMoc2VsZiwgc3RhcnMpOgotICAgICAgICAgc3Rhcldp ZHRoID0gMjAKLQotRnJvbSBlM2E5MjRmY2Y0ZmYzNDA5ZDMxZjA5NTZkMzgwMmQ2YTY1OTU2YWUy IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVz ZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IEZyaSwgMjQgSnVsIDIwMjAgMTk6NDI6NTAg KzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNi8zM10gVXBkYXRlIFJFQURNRS5tZAotCi0tLS0KLSBS RUFETUUubWQgfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCi1pbmRleCA5YjZjYTMxY2Eu Ljk3Nzk1YzQyNyAxMDA2NDQKLS0tLSBhL1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAt MSwyOCArMSw0NyBAQAotLVBPTC1QT00tNAotLT09PT09PT09PQotKyMgUGxheU9uTGludXggYW5k IFBsYXlPbk1hYyA0IChQT0wtUE9NLTQpCi0gCi0tUGxheU9uTGludXggNCByZXBvc2l0b3J5Ci0t Tm90ZTogUGxheU9uTGludXggNSBpcyBjdXJyZW50bHkgdW5kZXIgZGV2ZWxvcG1lbnQuIFBsZWFz ZSBjbG9uZSBQT0wtUE9NLTUgcmVwb3NpdG9yeSBpZiB5b3Ugd2FudCB0byBjb250cmlidXRlCi0r Tm90ZTogW1Bob2VuaWNpcyBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDVdKGh0dHBzOi8vd3d3 LnBob2VuaWNpcy5vcmcvKSBpcyBjdXJyZW50bHkgdW5kZXIgZGV2ZWxvcG1lbnQuIFBsZWFzZSBj bG9uZSBbUGhvZW5pY2lzIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNSByZXBvc2l0b3J5XSho dHRwczovL2dpdGh1Yi5jb20vUGhvZW5pY2lzT3JnL3Bob2VuaWNpcykgaWYgeW91IHdhbnQgdG8g Y29udHJpYnV0ZS4KLSAKLS1XaGF0IGlzIFBsYXlPbkxpbnV4PwotLT09PT09PT09PT09PT09PT09 PT09PQotK1BsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNCBhbGxvd3MgeW91IHRvIGluc3RhbGwg YW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9ucyBvbiB5b3VyIGZhdm9yaXRlIG9wZXJhdGlu ZyBzeXN0ZW0uCi0rCi0rU3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOgotKwotKyogTGludXgK LSsqIE1hYyBPU1gKLSsKLStTdXBwb3J0ZWQgZW5naW5lczoKLSsKLSsqIFtXaW5lXShodHRwczov L3d3dy53aW5laHEub3JnLykKLSsKLSsKLSsjIFdoYXQgaXMgUGxheU9uTGludXg/Ci0gCi0gUGxh eU9uTGludXggaXMgYSBwaWVjZSBvZiBzb2Z0d2FyZSB3aGljaCBhbGxvd3MgeW91IHRvIGVhc2ls eSBpbnN0YWxsIGFuZCB1c2UgbnVtZXJvdXMgZ2FtZXMgYW5kIGFwcHMgZGVzaWduZWQgdG8gcnVu IHdpdGggTWljcm9zb2Z0wq4gV2luZG93c8KuLgotKwotIEZldyBnYW1lcyBhcmUgY29tcGF0aWJs ZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0YWlubHkgaXMgYSBmYWN0 b3IgcHJldmVudGluZyB0aGUgbWlncmF0aW9uIHRvIHRoaXMgc3lzdGVtLiBQbGF5T25MaW51eCBi cmluZ3MgYSBjb3N0LWZyZWUsIGFjY2Vzc2libGUgYW5kIGVmZmljaWVudCBzb2x1dGlvbiB0byB0 aGlzIHByb2JsZW0uCi0gCi0gCi0tV2hhdCBhcmUgUGxheU9uTGludXgncyBmZWF0dXJlcz8KLS09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyMgV2hhdCBhcmUgUGxheU9uTGludXgn cyBmZWF0dXJlcz8KLSAKLSBIZXJlIGlzIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZiB0aGUgaW50 ZXJlc3RpbmcgcG9pbnRzIHRvIGtub3c6Ci0rKiBZb3UgZG9uJ3QgaGF2ZSB0byBvd24gYSBXaW5k b3dzIGxpY2Vuc2UgdG8gdXNlIFBsYXlPbkxpbnV4LgotKyogUGxheU9uTGludXggaXMgYmFzZWQg b24gW1dpbmVdKGh0dHBzOi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNvIHByb2ZpdHMgZnJvbSBh bGwgaXRzIGZlYXR1cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBkZWFs IHdpdGggaXRzIGNvbXBsZXhpdHkuCi0rKiBQbGF5T25MaW51eCBpcyBmcmVlIHNvZnR3YXJlLgot KyogUGxheU9uTGludXggdXNlcyBbQmFzaF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kv QmFzaF8lMjhVbml4X3NoZWxsJTI5KSBhbmQgW1B5dGhvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEu b3JnL3dpa2kvUHl0aG9uXyhwcm9ncmFtbWluZ19sYW5ndWFnZSkpLgotIAotLVlvdSBkb24ndCBo YXZlIHRvIG93biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCi0tUGxheU9u TGludXggaXMgYmFzZWQgb24gV2luZSwgYW5kIHNvIHByb2ZpdHMgZnJvbSBhbGwgaXRzIGZlYXR1 cmVzIHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBkZWFsIHdpdGggaXRzIGNv bXBsZXhpdHkuCi0tUGxheU9uTGludXggaXMgZnJlZSBzb2Z0d2FyZS4KLS1QbGF5T25MaW51eCB1 c2VzIEJhc2ggYW5kIFB5dGhvbi4KLSBOZXZlcnRoZWxlc3MsIFBsYXlPbkxpbnV4IGhhcyBzb21l IGJ1Z3MsIGFzIGV2ZXJ5IHBpZWNlIG9mIHNvZnR3YXJlOgotLQotLU9jY2FzaW9uYWwgcGVyZm9y bWFuY2UgZGVjcmVhc2UgKGltYWdlIG1heSBiZSBsZXNzIGZsdWlkIGFuZCBncmFwaGljcyBsZXNz IGRldGFpbGVkKS4KLS1Ob3QgYWxsIGdhbWVzIGFyZSBzdXBwb3J0ZWQuIE5ldmVydGhlbGVzcywg eW91IGNhbiB1c2Ugb3VyIG1hbnVhbCBpbnN0YWxsYXRpb24gbW9kdWxlLgotKyogT2NjYXNpb25h bCBwZXJmb3JtYW5jZSBkZWNyZWFzZSAoaW1hZ2UgbWF5IGJlIGxlc3MgZmx1aWQgYW5kIGdyYXBo aWNzIGxlc3MgZGV0YWlsZWQpLgotKyogTm90IGFsbCBnYW1lcyBhcmUgc3VwcG9ydGVkLiBOZXZl cnRoZWxlc3MsIHlvdSBjYW4gdXNlIG91ciBtYW51YWwgaW5zdGFsbGF0aW9uIG1vZHVsZS4KLSAK LSBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgdmlzaXQgaHR0cDovL3d3dy5wbGF5b25saW51eC5jb20K LSsKLSsKLSsjIyBUcmFuc2xhdGUKLStQbGF5T25MaW51eC9QbGF5T25NYWMgNCBpcyBsb2NhbGl6 ZWQgdXNpbmcgTGF1bmNocGFkOiBodHRwczovL3RyYW5zbGF0aW9ucy5sYXVuY2hwYWQubmV0L3Bs YXlvbmxpbnV4Ci0rSWYgeW91ciBsYW5ndWFnZSBpcyBub3QgbGlzdGVkLCBwbGVhc2UgY3JlYXRl IGFuIFtpc3N1ZV0oaHR0cHM6Ly9naXRodWIuY29tL1BsYXlPbkxpbnV4L1BPTC1QT00tNC9pc3N1 ZXMpLgotKwotKwotKyMjIENvbW11bml0eQotKyogSXNzdWVzIG9yIGlkZWFzOiBodHRwczovL2dp dGh1Yi5jb20vUGhvZW5pY2lzT3JnL3Bob2VuaWNpcy9pc3N1ZXMKLSsqIEZvcnVtcyA6IGh0dHA6 Ly93d3cucGxheW9ubGludXguY29tL2VuL2ZvcnVtcy5odG1sCi0rKiBTbGFjayA6IGh0dHBzOi8v am9pbi5zbGFjay5jb20vcGhvZW5pY2lzLW9yZy9zaGFyZWRfaW52aXRlL01Ua3pNVE13TWpNM01q Y3hMVEUwT1RZMU1UUXpOemt0WTJJek9URTJObUUzTkEKLQotRnJvbSAyZmIxM2UzMjg4NjEyNjRl ZTNhNGY2ZDg5NzliYjFlZTAxOGNlYTc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog b3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IEZy aSwgMjQgSnVsIDIwMjAgMTk6NDQ6MTYgKzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8zM10gVXBk YXRlIFJFQURNRS5tZAotCi0tLS0KLSBSRUFETUUubWQgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvUkVBRE1F Lm1kIGIvUkVBRE1FLm1kCi1pbmRleCA5Nzc5NWM0MjcuLmMxZTllZDAzMyAxMDA2NDQKLS0tLSBh L1JFQURNRS5tZAotKysrIGIvUkVBRE1FLm1kCi1AQCAtMjEsMTAgKzIxLDEwIEBAIFBsYXlPbkxp bnV4IGlzIGEgcGllY2Ugb2Ygc29mdHdhcmUgd2hpY2ggYWxsb3dzIHlvdSB0byBlYXNpbHkgaW5z dGFsbCBhbmQgdXNlIG51Ci0gRmV3IGdhbWVzIGFyZSBjb21wYXRpYmxlIHdpdGggR05VL0xpbnV4 IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNlcnRhaW5seSBpcyBhIGZhY3RvciBwcmV2ZW50aW5nIHRo ZSBtaWdyYXRpb24gdG8gdGhpcyBzeXN0ZW0uIFBsYXlPbkxpbnV4IGJyaW5ncyBhIGNvc3QtZnJl ZSwgYWNjZXNzaWJsZSBhbmQgZWZmaWNpZW50IHNvbHV0aW9uIHRvIHRoaXMgcHJvYmxlbS4KLSAK LSAKLS0jIFdoYXQgYXJlIFBsYXlPbkxpbnV4J3MgZmVhdHVyZXM/Ci0rIyBXaGF0IGFyZSBQbGF5 T25MaW51eOKAmXMgZmVhdHVyZXM/Ci0gCi0gSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qg b2YgdGhlIGludGVyZXN0aW5nIHBvaW50cyB0byBrbm93OgotLSogWW91IGRvbid0IGhhdmUgdG8g b3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KLSsqIFlvdSBkb27igJl0 IGhhdmUgdG8gb3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KLSAqIFBs YXlPbkxpbnV4IGlzIGJhc2VkIG9uIFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFu ZCBzbyBwcm9maXRzIGZyb20gYWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIg ZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGl0cyBjb21wbGV4aXR5LgotICogUGxheU9uTGludXgg aXMgZnJlZSBzb2Z0d2FyZS4KLSAqIFBsYXlPbkxpbnV4IHVzZXMgW0Jhc2hdKGh0dHBzOi8vZW4u d2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4VW5peF9zaGVsbCUyOSkgYW5kIFtQeXRob25dKGh0 dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2Up KS4KLQotRnJvbSBmNDIyOWFjODMwMTVhNTgzZDBjMGU0NTQ0NWQyOGVlMzMyMzIxMzU2IE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5v cmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IEZyaSwgMjQgSnVsIDIwMjAgMTk6NDU6MTEgKzEwMDAK LVN1YmplY3Q6IFtQQVRDSCAwOC8zM10gVXBkYXRlIFJFQURNRS5tZAotCi0tLS0KLSBSRUFETUUu bWQgfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAotaW5kZXggYzFlOWVk MDMzLi43NWZiYzVmYWUgMTAwNjQ0Ci0tLS0gYS9SRUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAot QEAgLTYsOCArNiw5IEBAIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNCBhbGxvd3MgeW91IHRv IGluc3RhbGwgYW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9uCi0gCi0gU3VwcG9ydGVkIG9w ZXJhdGluZyBzeXN0ZW1zOgotIAotLSogTGludXgKLS0qIE1hYyBPU1gKLSsqIEdOVS9MaW51eAot KyogTWFjIE9TIFgKLSsqIG1hY09TCi0gCi0gU3VwcG9ydGVkIGVuZ2luZXM6Ci0gCi0KLUZyb20g NjQ4MGU2OTQxNTRmNGYyNGM0YmYzMWJhYmM3ZTkyNzE1NzRlMDRjYSBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1 Yi5jb20+Ci1EYXRlOiBGcmksIDI0IEp1bCAyMDIwIDE5OjQ5OjMxICsxMDAwCi1TdWJqZWN0OiBb UEFUQ0ggMDkvMzNdIFVwZGF0ZSBSRUFETUUubWQKLQotLS0tCi0gUkVBRE1FLm1kIHwgNyArKyst LS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQot ZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAotaW5kZXggNzVmYmM1ZmFlLi4wZDY0 YTU5NjIgMTAwNjQ0Ci0tLS0gYS9SRUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAotQEAgLTYsOSAr Niw4IEBAIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNCBhbGxvd3MgeW91IHRvIGluc3RhbGwg YW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9uCi0gCi0gU3VwcG9ydGVkIG9wZXJhdGluZyBz eXN0ZW1zOgotIAotLSogR05VL0xpbnV4Ci0tKiBNYWMgT1MgWAotLSogbWFjT1MKLSsqIFtHTlUv TGludXhdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpbnV4KQotKyogW21hY09TXSho dHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsZV9NYWNpbnRvc2hfT1NfWCkKLSAKLSBT dXBwb3J0ZWQgZW5naW5lczoKLSAKLUBAIC0yNSw3ICsyNCw3IEBAIEZldyBnYW1lcyBhcmUgY29t cGF0aWJsZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0YWlubHkgaXMg YSBmYWN0Ci0gIyBXaGF0IGFyZSBQbGF5T25MaW51eOKAmXMgZmVhdHVyZXM/Ci0gCi0gSGVyZSBp cyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGludGVyZXN0aW5nIHBvaW50cyB0byBrbm93 OgotLSogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBs YXlPbkxpbnV4LgotKyogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBbTWljcm9zb2Z0IFdpbmRv d3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdF9XaW5kb3dzKSBsaWNl bnNlIHRvIHVzZSBQbGF5T25MaW51eC4KLSAqIFBsYXlPbkxpbnV4IGlzIGJhc2VkIG9uIFtXaW5l XShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFuZCBzbyBwcm9maXRzIGZyb20gYWxsIGl0cyBm ZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGl0 cyBjb21wbGV4aXR5LgotICogUGxheU9uTGludXggaXMgZnJlZSBzb2Z0d2FyZS4KLSAqIFBsYXlP bkxpbnV4IHVzZXMgW0Jhc2hdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4 VW5peF9zaGVsbCUyOSkgYW5kIFtQeXRob25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp L1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2UpKS4KLQotRnJvbSBjNDY2OTMwNWYyNTZjNGMx NmJjNjhhMzUzMjM5Y2JjOGM1ZGFlN2JhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTog b3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IEZy aSwgMjQgSnVsIDIwMjAgMTk6NTA6MzEgKzEwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8zM10gVXBk YXRlIFJFQURNRS5tZAotCi0tLS0KLSBSRUFETUUubWQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9SRUFETUUubWQg Yi9SRUFETUUubWQKLWluZGV4IDBkNjRhNTk2Mi4uNTdmYWRmYmI2IDEwMDY0NAotLS0tIGEvUkVB RE1FLm1kCi0rKysgYi9SRUFETUUubWQKLUBAIC0yNiw3ICsyNiw3IEBAIEZldyBnYW1lcyBhcmUg Y29tcGF0aWJsZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0YWlubHkg aXMgYSBmYWN0Ci0gSGVyZSBpcyBhIG5vbi1leGhhdXN0aXZlIGxpc3Qgb2YgdGhlIGludGVyZXN0 aW5nIHBvaW50cyB0byBrbm93OgotICogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBbTWljcm9z b2Z0IFdpbmRvd3NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL01pY3Jvc29mdF9XaW5k b3dzKSBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KLSAqIFBsYXlPbkxpbnV4IGlzIGJhc2Vk IG9uIFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFuZCBzbyBwcm9maXRzIGZyb20g YWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8gZGVh bCB3aXRoIGl0cyBjb21wbGV4aXR5LgotLSogUGxheU9uTGludXggaXMgZnJlZSBzb2Z0d2FyZS4K LSsqIFBsYXlPbkxpbnV4IGlzIFtmcmVlIHNvZnR3YXJlXShodHRwczovL2VuLndpa2lwZWRpYS5v cmcvd2lraS9GcmVlX3NvZnR3YXJlKS4KLSAqIFBsYXlPbkxpbnV4IHVzZXMgW0Jhc2hdKGh0dHBz Oi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4VW5peF9zaGVsbCUyOSkgYW5kIFtQeXRo b25dKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFu Z3VhZ2UpKS4KLSAKLSBOZXZlcnRoZWxlc3MsIFBsYXlPbkxpbnV4IGhhcyBzb21lIGJ1Z3MsIGFz IGV2ZXJ5IHBpZWNlIG9mIHNvZnR3YXJlOgotCi1Gcm9tIGE2Y2MyM2Q0MzM3NWZjYTBlMjhlOTAw YTExMGQxOTViZTI1MWVlMjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBvdmFyaSA8 MTc0NjU4NzIrb3ZhcmlAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogRnJpLCAyNCBK dWwgMjAyMCAyMDoxMjozNiArMTAwMAotU3ViamVjdDogW1BBVENIIDExLzMzXSBVcGRhdGUgUkVB RE1FLm1kCi0KLS0tLQotIFJFQURNRS5tZCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNl cnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURN RS5tZAotaW5kZXggNTdmYWRmYmI2Li4wZmU3OWYzZmEgMTAwNjQ0Ci0tLS0gYS9SRUFETUUubWQK LSsrKyBiL1JFQURNRS5tZAotQEAgLTcsNyArNyw3IEBAIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25N YWMgNCBhbGxvd3MgeW91IHRvIGluc3RhbGwgYW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9u Ci0gU3VwcG9ydGVkIG9wZXJhdGluZyBzeXN0ZW1zOgotIAotICogW0dOVS9MaW51eF0oaHR0cHM6 Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGludXgpCi0tKiBbbWFjT1NdKGh0dHBzOi8vZW4ud2lr aXBlZGlhLm9yZy93aWtpL0FwcGxlX01hY2ludG9zaF9PU19YKQotKyogW21hY09TXShodHRwczov L2VuLndpa2lwZWRpYS5vcmcvd2lraS9NYWNPUykKLSAKLSBTdXBwb3J0ZWQgZW5naW5lczoKLSAK LQotRnJvbSAwOGU4N2VkMGE3OGIwYzc3NDM5MzVjZDM5YjM1NWRiMzAzMTU3MzU0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5vcmVw bHkuZ2l0aHViLmNvbT4KLURhdGU6IFNhdCwgMjUgSnVsIDIwMjAgMTg6MzE6MTAgKzEwMDAKLVN1 YmplY3Q6IFtQQVRDSCAxMi8zM10gVXBkYXRlIFJFQURNRS5tZAotCi0tLS0KLSBSRUFETUUubWQg fCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAotaW5kZXggMGZlNzlm M2ZhLi4zZDAwZTY1YzEgMTAwNjQ0Ci0tLS0gYS9SRUFETUUubWQKLSsrKyBiL1JFQURNRS5tZAot QEAgLTYsOCArNiw4IEBAIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNCBhbGxvd3MgeW91IHRv IGluc3RhbGwgYW5kIHVzZSBub24tbmF0aXZlIGFwcGxpY2F0aW9uCi0gCi0gU3VwcG9ydGVkIG9w ZXJhdGluZyBzeXN0ZW1zOgotIAotLSogW0dOVS9MaW51eF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEu b3JnL3dpa2kvTGludXgpCi0tKiBbbWFjT1NdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtp L01hY09TKQotKyogR05VL0xpbnV4Ci0rKiBtYWNPUwotIAotIFN1cHBvcnRlZCBlbmdpbmVzOgot IAotQEAgLTI0LDEwICsyNCwxMCBAQCBGZXcgZ2FtZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBHTlUv TGludXggYXQgdGhlIG1vbWVudCBhbmQgaXQgY2VydGFpbmx5IGlzIGEgZmFjdAotICMgV2hhdCBh cmUgUGxheU9uTGludXjigJlzIGZlYXR1cmVzPwotIAotIEhlcmUgaXMgYSBub24tZXhoYXVzdGl2 ZSBsaXN0IG9mIHRoZSBpbnRlcmVzdGluZyBwb2ludHMgdG8ga25vdzoKLS0qIFlvdSBkb27igJl0 IGhhdmUgdG8gb3duIGEgW01pY3Jvc29mdCBXaW5kb3dzXShodHRwczovL2VuLndpa2lwZWRpYS5v cmcvd2lraS9NaWNyb3NvZnRfV2luZG93cykgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCi0r KiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIE1pY3Jvc29mdCBXaW5kb3dzIGxpY2Vuc2UgdG8g dXNlIFBsYXlPbkxpbnV4LgotICogUGxheU9uTGludXggaXMgYmFzZWQgb24gW1dpbmVdKGh0dHBz Oi8vd3d3LndpbmVocS5vcmcvKSwgYW5kIHNvIHByb2ZpdHMgZnJvbSBhbGwgaXRzIGZlYXR1cmVz IHlldCBpdCBrZWVwcyB0aGUgdXNlciBmcm9tIGhhdmluZyB0byBkZWFsIHdpdGggaXRzIGNvbXBs ZXhpdHkuCi0gKiBQbGF5T25MaW51eCBpcyBbZnJlZSBzb2Z0d2FyZV0oaHR0cHM6Ly9lbi53aWtp cGVkaWEub3JnL3dpa2kvRnJlZV9zb2Z0d2FyZSkuCi0tKiBQbGF5T25MaW51eCB1c2VzIFtCYXNo XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVuaXhfc2hlbGwlMjkpIGFu ZCBbUHl0aG9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QeXRob25fKHByb2dyYW1t aW5nX2xhbmd1YWdlKSkuCi0rKiBQbGF5T25MaW51eCB1c2VzIEJhc2ggYW5kIFB5dGhvbi4KLSAK LSBOZXZlcnRoZWxlc3MsIFBsYXlPbkxpbnV4IGhhcyBzb21lIGJ1Z3MsIGFzIGV2ZXJ5IHBpZWNl IG9mIHNvZnR3YXJlOgotICogT2NjYXNpb25hbCBwZXJmb3JtYW5jZSBkZWNyZWFzZSAoaW1hZ2Ug bWF5IGJlIGxlc3MgZmx1aWQgYW5kIGdyYXBoaWNzIGxlc3MgZGV0YWlsZWQpLgotCi1Gcm9tIDJi ZjllZDJkMzIxYTI2YjQ4ZGU4M2ExMzA2NGY3YjlmMGRiMGRjZDcgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiByYXlkZXJ1YSA8cmF5ZGVyLnVhQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwg NSBPY3QgMjAyMCAxNzoxOTo0NyArMDMwMAotU3ViamVjdDogW1BBVENIIDEzLzMzXSBmaXggc3Bs aXQgdmVyc2lvbiB0byBmaXJzdCAzIGVsZW1lbnRzCi0KLVZhbHVlRXJyb3I6IGludmFsaWQgbGl0 ZXJhbCBmb3IgaW50KCkgd2l0aCBiYXNlIDEwOiAncG9zdDInCi0KLVZlcnNpb25zIGNhbiBjb250 YWluIG5vdCBvbmx5IGRpZ2l0cyAoZm9yIGV4YW1wbGUgd3ggcmVsZWFzZXM6IDQuMC43LCA0LjAu Ny5wb3N0MSwgNC4wLjcucG9zdDIsIDQuMS4wKQotLS0tCi0gcHl0aG9uL2xpYi9wbGF5b25saW51 eC5weSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5IGIvcHl0aG9u L2xpYi9wbGF5b25saW51eC5weQotaW5kZXggODI3ZGI5MjAyLi4zZTg3ZDkwYWEgMTAwNzU1Ci0t LS0gYS9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5Ci0rKysgYi9weXRob24vbGliL3BsYXlvbmxp bnV4LnB5Ci1AQCAtMjc4LDExICsyNzgsMTEgQEAgZGVmIFZlcnNpb25Mb3dlcih2ZXJzaW9uMSwg dmVyc2lvbjIpOgotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAK LS0gICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNw bGl0KCIuIikgXQotKyAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVy c2lvbjFbMF0uc3BsaXQoIi4iKVs6M10gXQotICAgICB3aGlsZSBsZW4odmVyc2lvbjEpIDwgMzoK LSAgICAgICAgIHZlcnNpb24xLmFwcGVuZCgwKQotIAotLSAgICB2ZXJzaW9uMiA9IFsgaW50KGRp Z2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBdCi0rICAgIHZlcnNpb24y ID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpWzozXSBd Ci0gICAgIHdoaWxlIGxlbih2ZXJzaW9uMikgPCAzOgotICAgICAgICAgdmVyc2lvbjIuYXBwZW5k KDApCi0gCi0KLUZyb20gNmE5YmZhYTFkYzRmNTM3ZjJlZTAzYjlhYzk5YWRmNmZlOGYyZjA0NyBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzQjg1IDxrcnp5c3p0b2YuYmxhY2hv d2ljekBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIwIE9jdCAyMDIwIDE4OjEwOjM0ICswMjAwCi1T dWJqZWN0OiBbUEFUQ0ggMTQvMzNdIFBvbGlzaCB0cmFuc2xhdGlvbnMKLQotLS0tCi0gbGFuZy9w by9wbC5wbyB8IDEwOSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL2xhbmcvcG8vcGwucG8gYi9sYW5nL3BvL3BsLnBvCi1pbmRleCBh ZTY5ZjQ5N2UuLmYwNDdiNWI0NCAxMDA2NDQKLS0tLSBhL2xhbmcvcG8vcGwucG8KLSsrKyBiL2xh bmcvcG8vcGwucG8KLUBAIC0xMSwyMiArMTEsMjIgQEAgbXNnc3RyICIiCi0gIlByb2plY3QtSWQt VmVyc2lvbjogcG9sXG4iCi0gIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBUaW5vdVxuIgotICJQT1Qt Q3JlYXRpb24tRGF0ZTogMjAxNS0wOC0zMSAxOTowMCswMjAwXG4iCi0tIlBPLVJldmlzaW9uLURh dGU6IDIwMTQtMDQtMjMgMTM6MzUrMDAwMFxuIgotKyJQTy1SZXZpc2lvbi1EYXRlOiAyMDIwLTEw LTIwIDE4OjA5KzAyMDBcbiIKLSAiTGFzdC1UcmFuc2xhdG9yOiBBZGFtIE1hxIdrb3dpYWsgPFVu a25vd24+XG4iCi0gIkxhbmd1YWdlLVRlYW06IHBsX1BMLlVURi04IDxMTEBsaS5vcmc+XG4iCi0g Ik1JTUUtVmVyc2lvbjogMS4wXG4iCi0gIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOFxuIgotICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCi0gIlgtTGF1 bmNocGFkLUV4cG9ydC1EYXRlOiAyMDE1LTA5LTAxIDA1OjEyKzAwMDBcbiIKLS0iWC1HZW5lcmF0 b3I6IExhdW5jaHBhZCAoYnVpbGQgMTc2OTApXG4iCi0rIlgtR2VuZXJhdG9yOiBQb2VkaXQgMi4z XG4iCi0rIkxhbmd1YWdlOiBwbFxuIgotIAotICM6IENhcHR1cmUgcGx1Z2luOjIsIERldG91ciBw bHVnaW46NAotIG1zZ2lkICJXaGljaCBhcHBsaWNhdGlvbiBkbyB5b3Ugd2FudCB0byBhcHBseSB0 aGUgbW9kaWZpY2F0aW9uIHRvPyIKLSBtc2dzdHIgIkRvIGpha2llaiBhcGxpa2FjamkgY2hjZXN6 IHd5a29uYcSHIG1vZHlmaWthY2plPyIKLSAKLSAjOiBDYXB0dXJlIHBsdWdpbjozCi0tbXNnaWQg IiIKLS0iVGhpcyBwbHVnaW4gd2lsIGFsbG93IHlvdSB0byBjYXB0dXJlIHlvdSBhcHBsaWNhdGlv bnMgdW5kZXIgUGxheU9uTGludXgiCi0rbXNnaWQgIlRoaXMgcGx1Z2luIHdpbCBhbGxvdyB5b3Ug dG8gY2FwdHVyZSB5b3UgYXBwbGljYXRpb25zIHVuZGVyIFBsYXlPbkxpbnV4IgotIG1zZ3N0ciAi V3R5Y3prYSB1bW/FvGxpd2lhIHByemVjaHd5dHl3YW5pZSBvYnJhenUgeiBhcGxpa2FjamkgcG9k IFBsYXlPbkxpbnV4IgotIAotICM6IENhcHR1cmUgcGx1Z2luOjQKLUBAIC01Niw4ICs1Niw4IEBA IG1zZ2lkICIiCi0gInN0YXJ0IGF1dG9tYXRpY2FsbHkgYWZ0ZXIgNSBzZWNvbmRzLlxcbk9ubHkg dmlkZW8gd2lsbCBiZSBjYXB0dXJlZC4iCi0gbXNnc3RyICIiCi0gIlByb3N6xJkgd2Npc27EhcSH IERhbGVqLCBuYXN0xJlwbmllIGtsaWtuxIXEh1xcbncgb2tubyBwcm9ncmFtdSwga3TDs3JlIGNo Y2VzeiAiCi0tInByemVjaHd5Y2nEhy5cXG5OYWdyeXdhbmllIHJvenBvY3puaWUgc2nEmSBhdXRv bWF0eWN6bmllIHBvIDUgc2VrdW5kYWNoLlxcIgotLSJuTmFncmFueSB6b3N0YW5pZSB3ecWCxIVj em5pZSBvYnJhei4iCi0rInByemVjaHd5Y2nEhy5cXG5OYWdyeXdhbmllIHJvenBvY3puaWUgc2nE mSBhdXRvbWF0eWN6bmllIHBvIDUgc2VrdW5kYWNoLiIKLSsiXFxuTmFncmFueSB6b3N0YW5pZSB3 ecWCxIVjem5pZSBvYnJhei4iCi0gCi0gIzogQ2FwdHVyZSBwbHVnaW46MTAKLSBtc2dpZCAiQ2Fw dHVyZSB3aWxsIGJlZ2luLi4uIgotQEAgLTMwOSw3ICszMDksNyBAQCBtc2dzdHIgIkRva8WCYWRu eSBvcGlzIGplc3Qgd3ltYWdhbnkuIgotICM6IGJhc2gvYnVnX3JlcG9ydDoxMDEKLSAjLCBzaC1m b3JtYXQKLSBtc2dpZCAiVGhhbmsgeW91ICFcXG5cXG5Zb3VyIHJlcG9ydCBoYXMgYmVlbiBzZW50 LiIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIkR6acSZa3VqZW15ICFcXG5cXG5Ud29qZSB6Z8WCb3N6 ZW5pZSB6b3N0YcWCbyB3eXPFgmFuZS4iCi0gCi0gIzogYmFzaC9jcmVhdGVfcHJlZml4OjI2Ci0g Iywgc2gtZm9ybWF0Ci1AQCAtNDU4LDYgKzQ1OCw5IEBAIG1zZ2lkICIiCi0gImFsbCB0aGUgdG9v bHNcXG5cXG5XYXJuaW5nOiBXZSBhcmUgdW5hYmxlIHRvIGd1YXJhbnRlZSB0aGF0IHlvdXIgYXBw bGljYXRpb24gIgotICJ3aWxsIHdvcmsgcGVyZmVjdGx5LiIKLSBtc2dzdHIgIiIKLSsiV2l0YW15 IHcga3JlYXRvcnplIGluc3RhbGFjamkgcsSZY3puZWogJEFQUExJQ0FUSU9OX1RJVExFLlxcblxc bktyZWF0b3IgdGVuICIKLSsicG96d29saSBDaSB6YWluc3RhbG93YcSHIGthxbxkeSBwcm9ncmFt IHcgJEFQUExJQ0FUSU9OX1RJVExFXFxuXFxuVXdhZ2E6IE5pZSAiCi0rIm1vxbxlbXkgemFnd2Fy YW50b3dhxIcsIMW8ZSB0d29qYSBhcGxpa2FjamEgYsSZZHppZSBkemlhxYJhxIcgcG9wcmF3bmll LiIKLSAKLSAjOiBiYXNoL21hbnVhbF9pbnN0YWxsOjEwMgotICMsIHNoLWZvcm1hdAotQEAgLTcw Nyw4ICs3MTAsOCBAQCBtc2dpZCAiIgotICJ0b29sIE9OTFkgaWYgeW91IENELVJPTSBpcyBhIGh5 YnJpZGUgQ0QtUk9NIChDb21wYXRpYmxlIHdpdGggV2luZG93cyBhbmQgIgotICJNYWNPUyksIGFu ZCBpZiB5b3UgYXJlIG5vdCBhYmxlIHRvIHNlZSB0aGUgV2luZG93cyBwYXJ0IgotIG1zZ3N0ciAi IgotLSJEemnEmWtpIHRlbXUgbmFyesSZZHppIHR3w7NqIE1hYyBixJlkemllIHcgc3RhbmllIHBy emVjenl0YcSHIGN6xJnFm8SHIENELVJPTXVcXCIKLS0ibnByemV6bmFjem9uZWdvIGRsYSBrb21w dXRlcsOzdyBQQy5cXG5cXG5Vxbx5aiB0ZWdvIG5hcnrEmWR6aWEgVFlMS08gamXFvGVsaSAiCi0r IkR6acSZa2kgdGVtdSBuYXJ6xJlkemkgdHfDs2ogTWFjIGLEmWR6aWUgdyBzdGFuaWUgcHJ6ZWN6 eXRhxIcgY3rEmcWbxIcgQ0QtUk9NdSIKLSsiXFxucHJ6ZXpuYWN6b25lZ28gZGxhIGtvbXB1dGVy w7N3IFBDLlxcblxcblXFvHlqIHRlZ28gbmFyesSZZHppYSBUWUxLTyBqZcW8ZWxpICIKLSAicG9z aWFkYXN6IGh5YnJ5ZG93eSBDRC1ST00gKGtvbXBhdHliaWxueSB6IFdpbmRvd3MgaSBNYWNPUylc XG5pIHR5bGtvIHd0ZWR5ICIKLSAiZ2R5IG5pZSBqZXN0ZcWbIHcgc3RhbmllIHpvYmFjennEhyBj esSZxZtjaSBkbGEgV2luZG93c2EuIgotIAotQEAgLTc2MiwxNiArNzY1LDE4IEBAIG1zZ2lkICIi Ci0gIiRQQUNLQUdFIGNyYXNoZWQuXFxuU2VsZWN0IGl0cyBzaG9ydGN1dCBhbmQgY2xpY2sgb24g XCJEZWJ1Z1wiIGluIHRoZSBzaWRlICIKLSAicGFuZWwgdG8gZ2V0IG1vcmUgZGV0YWlscy4iCi0g bXNnc3RyICIiCi0rIiRQQUNLQUdFIHVsZWfFgiBhd2FyaWkuXFxuWmF6bmFjeiBqZWdvIHNrcsOz dCBpIGtsaWtuaWogXCJEZWJ1Z3VqXCIgdyBwYW5lbHUgIgotKyJib2N6bnltIGFieSBwb3puYcSH IHN6Y3plZ8OzxYJ5LiIKLSAKLSAjOiBiYXNoL3J1bl9hcHA6MTIwCi0gIywgc2gtZm9ybWF0Ci0g bXNnaWQgIiRQQUNLQUdFIGNyYXNoZWQuIgotLW1zZ3N0ciAiJFBBQ0tBR0UgemF3aWVzacWCIHNp xJkuIgotK21zZ3N0ciAiJFBBQ0tBR0UgdWxlZ8WCIGF3YXJpaS4iCi0gCi0gIzogYmFzaC9ydW5f ZXhlOjMzCi0gIywgc2gtZm9ybWF0Ci0gbXNnaWQgIldhaXRpbmcgWFF1YXJ0eiB0byBiZSBpbnN0 YWxsZWQiCi0tbXNnc3RyICIiCi0rbXNnc3RyICJPY3pla2l3YW5pZSBuYSBpbnN0YWxhY2rEmSBY UXVhcnR6IgotIAotICM6IGJhc2gvcnVuX2V4ZTo3MAotICMsIHNoLWZvcm1hdAotQEAgLTgxNSwx MiArODIwLDEyIEBAIG1zZ3N0ciAiSW5zdGFsYWNqYSB6YWtvxYRjem9uYSIKLSAjOiBiYXNoL3N0 YXJ0dXBfYWZ0ZXJfc2VydmVyOjM4Ci0gIywgc2gtZm9ybWF0Ci0gbXNnaWQgIlBsYXlPbk1hYyBu ZWVkcyB0byBpbnN0YWxsIFhRdWFydHogdG8gd29yayBwcm9wZXJseS4iCi0tbXNnc3RyICIiCi0r bXNnc3RyICJQbGF5T25NYWMgd3ltYWdhIHphaW5zdGFsb3dhbmlhIFhRdWFydHogZG8gcG9wcmF3 bmVnbyBkemlhxYJhbmlhLiIKLSAKLSAjOiBiYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyOjM5Ci0g Iywgc2gtZm9ybWF0Ci0gbXNnaWQgIlBsYXlPbk1hYyB3aWxsIGhlbHAgeW91IHRvIHNpbXBsaWZ5 IHRoaXMgc3RlcCIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIlBsYXlPbk1hYyBwb21vxbxlIGNpIHVw cm/Fm2NpxIcgdGVuIGtyb2siCi0gCi0gIzogYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlcjo0Mgot ICMsIHNoLWZvcm1hdAotQEAgLTg2MSw2ICs4NjYsOCBAQCBtc2dzdHIgIlhRdWFydHogem9zdGHF giB6YWluc3RhbG93YW55LiIKLSAjLCBzaC1mb3JtYXQKLSBtc2dpZCAiVW5hYmxlIHRvIGluc3Rh bGwgWFF1YXJ0eiEgWW91IG11c3QgaW5zdGFsbCBpdCB0byB1c2Ugd2luZSBwcm9wZXJseS4iCi0g bXNnc3RyICIiCi0rIk5pZSB1ZGHFgm8gc2nEmSB6YWluc3RhbG93YcSHIFhRdWFydHohIEplc3Qg b24gd3ltYWdhbnkgZG8gcG9wcmF3bmVnbyBkemlhxYJhbmlhICIKLSsiV2luZS4iCi0gCi0gIzog YmFzaC91bmluc3RhbGw6MzEgYmFzaC91bmluc3RhbGw6NjUgYmFzaC91bmluc3RhbGw6NjggYmFz aC91bmluc3RhbGw6NzUKLSAjOiBsaWIvd2luZS5saWI6ODY3Ci1AQCAtOTMzLDEyICs5NDAsMTIg QEAgbXNnc3RyICIiCi0gIywgc2gtZm9ybWF0Ci0gbXNnaWQgIiIKLSAiJEFQUExJQ0FUSU9OX1RJ VExFIGhhcyBlbmNvdW50ZXJlZCBhbiBlcnJvci4gSWYgdGhlIHByb2dyYW0geW91IGFyZSAiCi0t Imluc3RhbGxpbmcgZG9lcyBub3Qgd29yayBjb3JyZWN0bHksIGl0IG1pZ2h0IGJlIHRoZSBjYXVz ZSBvZiB0aGUgcHJvYmxlbS5cXCIKLS0iblZpc2l0IHd3dy4kUE9MX0ROUyB0byBnZXQgZnVydGhl ciBpbmZvcm1hdGlvbiIKLSsiaW5zdGFsbGluZyBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSwgaXQg bWlnaHQgYmUgdGhlIGNhdXNlIG9mIHRoZSBwcm9ibGVtLiIKLSsiXFxuVmlzaXQgd3d3LiRQT0xf RE5TIHRvIGdldCBmdXJ0aGVyIGluZm9ybWF0aW9uIgotIG1zZ3N0ciAiIgotICIkQVBQTElDQVRJ T05fVElUTEUgbmFwb3RrYcWCIG5hIGLFgsSFZC4gSmXFm2xpIHByb2dyYW0sIGt0w7NyeSBqZXN0 IGluc3RhbG93YW55ICIKLS0ibmllIGR6aWHFgmEgcHJhd2lkxYJvd28sIHRvIG1vxbxlIGJ5xIcg cHJ6eWN6eW7EhSBwcm9ibGVtdS5cXG4gT2R3aWVkxbogIgotLSJ3d3cuJFBPTF9ETlMgdyBjZWx1 IHV6eXNrYW5pYSBkYWxzenljaCBpbmZvcm1hY2ppIgotKyJuaWUgZHppYcWCYSBwcmF3aWTFgm93 bywgdG8gbW/FvGUgYnnEhyBwcnp5Y3p5bsSFIHByb2JsZW11LlxcbiBPZHdpZWTFuiB3d3cuIgot KyIkUE9MX0ROUyB3IGNlbHUgdXp5c2thbmlhIGRhbHN6eWNoIGluZm9ybWFjamkiCi0gCi0gIzog bGliL2RlYnVnLmxpYjoxNTUKLSAjLCBzaC1mb3JtYXQKLUBAIC05ODAsOSArOTg3LDkgQEAgbXNn aWQgIiIKLSAidmFsaWRcXG5cXG5QbGF5T25MaW51eCBoYXMgbm90IGFwcHJvdmVkIHRoaXMgc2Ny aXB0IGFuZCB3aWxsIG5vdCBiZSAiCi0gInJlc3BvbnNpYmxlIGZyb20gaXQuXFxuUGxlYXNlIGVu c3VyZSB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmcgISIKLSBtc2dzdHIgIiIKLS0iT3N0cnpl xbxlbmllIVxcblxcblN5Z25hdHVyYSB0ZWdvIHNrcnlwdHUgTklFIGplc3QgcHJhd2lkxYJvd2Fc XG5cXCIKLS0iblBsYXlPbkxpbnV4IG5pZSB6YWFrY2VwdG93YcWCIHRlZ28gc2tyeXB0dSBuaWUg YsSZZHppZSBvZHBvd2llZHppYWxueSB6YSBqZWdvICIKLS0iYsWCxJlkbmUgZHppYcWCYW5pZS5c XG5Lb250eW51dWogdHlsa28gamXFm2xpIHdpZXN6IGNvIHJvYmlzei4iCi0rIk9zdHJ6ZcW8ZW5p ZSFcXG5cXG5TeWduYXR1cmEgdGVnbyBza3J5cHR1IE5JRSBqZXN0IHByYXdpZMWCb3dhXFxuIgot KyJcXG5QbGF5T25MaW51eCBuaWUgemFha2NlcHRvd2HFgiB0ZWdvIHNrcnlwdHUgbmllIGLEmWR6 aWUgb2Rwb3dpZWR6aWFsbnkgemEgIgotKyJqZWdvIGLFgsSZZG5lIGR6aWHFgmFuaWUuXFxuS29u dHludXVqIHR5bGtvIGplxZtsaSB3aWVzeiBjbyByb2Jpc3ouIgotIAotICM6IGxpYi9wbGF5b25s aW51eC5saWI6MzQ5IGxpYi9wbGF5b25saW51eC5saWI6MzcyCi0gIywgc2gtZm9ybWF0Ci1AQCAt OTk2LDggKzEwMDMsOCBAQCBtc2dpZCAiIgotICJ2YWxpZFxcblxcbiRBUFBMSUNBVElPTl9USVRM RSBoYXMgbm90IGFwcHJvdmVkIHRoaXMgc2NyaXB0IGFuZCB3aWxsIG5vdCBiZSAiCi0gInJlc3Bv bnNpYmxlIGZyb20gaXQuXFxuUGxlYXNlIGVuc3VyZSB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9p bmchIgotIG1zZ3N0ciAiIgotLSJPc3RyemXFvGVuaWUhXFxuXFxuU3lnbmF0dXJhIHRlZ28gc2ty eXB0dSBOSUUgamVzdCBwcmF3aWTFgm93YVxcblxcIgotLSJuJEFQUExJQ0FUSU9OX1RJVExFIG5p ZSB6YWFrY2VwdG93YcWCIHRlZ28gc2tyeXB0dSBuaWUgYsSZZHppZSBvZHBvd2llZHppYWxueSAi Ci0rIk9zdHJ6ZcW8ZW5pZSFcXG5cXG5TeWduYXR1cmEgdGVnbyBza3J5cHR1IE5JRSBqZXN0IHBy YXdpZMWCb3dhXFxuXFxuIgotKyIkQVBQTElDQVRJT05fVElUTEUgbmllIHphYWtjZXB0b3dhxYIg dGVnbyBza3J5cHR1IG5pZSBixJlkemllIG9kcG93aWVkemlhbG55ICIKLSAiemEgamVnbyBixYLE mWRuZSBkemlhxYJhbmllLlxcbktvbnR5bnV1aiB0eWxrbyBqZcWbbGkgd2llc3ogY28gcm9iaXN6 LiIKLSAKLSAjOiBsaWIvcGxheW9ubGludXgubGliOjM3MgotQEAgLTEwNTQsOSArMTA2MSwxMSBA QCBtc2dzdHIgIiIKLSAjOiBsaWIvcGxheW9ubGludXgubGliOjkxMwotICMsIHNoLWZvcm1hdAot IG1zZ2lkICIiCi0tIllvdXIgTGludXgga2VybmVsIG1heSBub3QgYmUgY29uZmlndXJlZCB0byBy dW4gV2luMTYgcHJvZ3JhbXMgdW5kZXIgV2luZVxcIgotLSJuU2VlICRFWFBMQU5BVElPTl9VUkwi Ci0rIllvdXIgTGludXgga2VybmVsIG1heSBub3QgYmUgY29uZmlndXJlZCB0byBydW4gV2luMTYg cHJvZ3JhbXMgdW5kZXIgV2luZSIKLSsiXFxuU2VlICRFWFBMQU5BVElPTl9VUkwiCi0gbXNnc3Ry ICIiCi0rIkrEhWRybyB0d29qZWdvIGxpbnVrc2EgbW/FvGUgbmllIGJ5xIcgc2tvbmZpZ3Vyb3dh bmUgZG8gdXJ1Y2hhbWlhbmlhIHByb2dyYW3Ds3cgIgotKyJXaW4xNiB3IFdpbmVcXG5TZWUgJEVY UExBTkFUSU9OX1VSTCIKLSAKLSAjOiBsaWIvcGxheW9ubGludXgubGliOjkxNgotICMsIHNoLWZv cm1hdAotQEAgLTEwNjQsNiArMTA3Myw4IEBAIG1zZ2lkICIiCi0gIllvdXIga2VybmVsIG1heSBi ZSBpbmNvbXBhdGlibGUgd2l0aCBydW5uaW5nIFdpbjE2IHByb2dyYW1zIHVuZGVyIFdpbmVcXG5T ZWUgIgotICIkRVhQTEFOQVRJT05fVVJMIgotIG1zZ3N0ciAiIgotKyJKxIVkcm8gdHdvamVnbyBs aW51a3NhIG1vxbxlIGJ5xIcgbmlla29tcGF0eWJpbG5lIHogYXBsaWthY2phbWkgV2luMTYgIgot KyJ1cnVjaGFtaWFueW1pIHcgV2luZVxcblNlZSAkRVhQTEFOQVRJT05fVVJMIgotIAotICM6IGxp Yi9wbHVnaW5zLmxpYjo2MwotICMsIHNoLWZvcm1hdAotQEAgLTExMzEsNyArMTE0Miw3IEBAIG1z Z3N0ciAiIgotICM6IGxpYi9zY3JpcHRzLmxpYjo2OTYgbGliL3NjcmlwdHMubGliOjcwNAotICMs IHNoLWZvcm1hdAotIG1zZ2lkICJQbGVhc2Ugd2FpdCB3aGlsZSAkQVBQTElDQVRJT05fVElUTEUg aXMgaGFuZGxpbmcgYXJjaGl2ZS4uLiIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIlByb3N6xJkgY3pl a2HEhywgJEFQUExJQ0FUSU9OX1RJVExFIHd5cGFrb3d1amUgYXJjaGl3dW0uLi4iCi0gCi0gIzog bGliL3NjcmlwdHMubGliOjcyNwotICMsIHNoLWZvcm1hdAotQEAgLTExNjksMTEgKzExODAsMTEg QEAgbXNnc3RyICJSb3ptaWFyIHBsaWt1IG5pZSB6Z2FkemEgc2nEmSEiCi0gIzogbGliL3Njcmlw dHMubGliOjk1NQotICMsIHNoLWZvcm1hdAotIG1zZ2lkICIiCi0tIlNvcnJ5LCAkQVBQTElDQVRJ T05fVElUTEUgJFZFUlNJT04gaXMgdG9vIG9sZCB0byBjb250aW51ZS5cXCIKLS0ibiRBUFBMSUNB VElPTl9USVRMRSAkTkVFREVEIGlzIHJlcXVpcmVkLiIKLSsiU29ycnksICRBUFBMSUNBVElPTl9U SVRMRSAkVkVSU0lPTiBpcyB0b28gb2xkIHRvIGNvbnRpbnVlLlxcbiIKLSsiJEFQUExJQ0FUSU9O X1RJVExFICRORUVERUQgaXMgcmVxdWlyZWQuIgotIG1zZ3N0ciAiIgotLSIkQVBQTElDQVRJT05f VElUTEUgJFZFUlNJT04gamVzdCB6Ynl0IHN0YXJ5IGFieSBrb250eW51b3dhxIcuXFwiCi0tIm4k QVBQTElDQVRJT05fVElUTEUgJE5FRURFRCBqZXN0IHd5bWFnYW55LiIKLSsiJEFQUExJQ0FUSU9O X1RJVExFICRWRVJTSU9OIGplc3QgemJ5dCBzdGFyeSBhYnkga29udHludW93YcSHLlxcbiIKLSsi JEFQUExJQ0FUSU9OX1RJVExFICRORUVERUQgamVzdCB3eW1hZ2FueS4iCi0gCi0gIzogbGliL3Nj cmlwdHMubGliOjk3MAotICMsIHNoLWZvcm1hdAotQEAgLTEyODUsNyArMTI5Niw3IEBAIG1zZ3N0 ciAiV3lzenVraXdhbmllIHdpcnR1YWxuZWdvIGR5c2t1IHR3YXJkZWdvLi4uIgotICM6IGxpYi9z ZXR1cHdpbmRvdy5saWI6NTgyCi0gIywgc2gtZm9ybWF0Ci0gbXNnaWQgIkhvdyBtdWNoIG1lbW9y eSAoaW4gTUIpIGRvZXMgeW91ciBncmFwaGljcyBib2FyZCBoYXZlPyIKLS1tc2dzdHIgIiIKLStt c2dzdHIgIklsZSBwYW1pxJljaSAodyBNQikgcG9zaWFkYSB0d29qYSBrYXJ0YSBncmFmaWN6bmE/ IgotIAotICM6IGxpYi9zZXR1cHdpbmRvdy5saWI6NTkxCi0gIywgc2gtZm9ybWF0Ci1AQCAtMTM2 OSw3ICsxMzgwLDcgQEAgbXNnc3RyICJQcnplZ2zEhWRhaiIKLSAjOiBsaWIvc2V0dXB3aW5kb3cu bGliOjc2MwotICMsIHNoLWZvcm1hdAotIG1zZ2lkICJBIHNob3J0Y3V0IGJ5IHRoYXQgbmFtZSBh bHJlYWR5IGV4aXN0cywgb3ZlcndyaXRlPyIKLS1tc2dzdHIgIiIKLSttc2dzdHIgIlNrcsOzdCBv IHRlaiBuYXp3aWUganXFvCBpc3RuaWVqZSwgemFzdMSFcGnEhyBnbz8iCi0gCi0gIzogbGliL3dl YnNpdGUubGliOjI5Ci0gIywgc2gtZm9ybWF0Ci1AQCAtMTQwMyw2ICsxNDE0LDggQEAgbXNnc3Ry ICJXeWJpZXJ6IGfFgsOzd27EhSBrYXJ0xJkgZ3JhZmljem7EhSBrdMOzcsSFIHdpbmUgbWEgemfF gmFzemHEhyBncm9tIgotIG1zZ2lkICIiCi0gIlN0YXJ0aW5nIDY0LWJpdCBwcm9jZXNzICRFWEVG SUxFIGlzIG5vdCBzdXBwb3J0ZWQgaW4gMzItYml0IHZpcnR1YWwgZHJpdmVzIgotIG1zZ3N0ciAi IgotKyJVcnVjaGFtaWFuaWUgcHJvY2Vzw7N3IDY0LWJpdG93eWNoICRFWEVGSUxFIG5pZSBqZXN0 IG9ic8WCdWdpd2FuZSB3IDMyLSIKLSsiYml0b3d5Y2ggZHlza2FjaCB3aXJ0dWFsbnljaCIKLSAK LSAjOiBsaWIvd2luZS5saWI6NTc5Ci0gIywgc2gtZm9ybWF0Ci1AQCAtMTYzOCw2ICsxNjUxLDEx IEBAIG1zZ2lkICIiCi0gIldpbmUgdmVyc2lvbiBpcyBjaGFuZ2VkLlxuIgotICJBcmUgeW91IHN1 cmUgeW91IHdhbnQgdG8gY29udGludWU/IgotIG1zZ3N0ciAiIgotKyJVd2FnYTpcbiIKLSsiXG4i Ci0rIkthxbxkYSB1cnVjaG9taW9uYSBhcGxpa2FjamEgem5hamR1asSFY2Egc2nEmSBuYSB0eW0g ZHlza3Ugd2lydHVhbG55bSB6b3N0YW5pZSAiCi0rInphdHJ6eW1hbmEgcHJ6ZWQgem1pYW7EhSB3 ZXJzamkgV2luZS5cbiIKLSsiQ3p5IGNoY2VzeiBrb250eW51b3dhxIc/IgotIAotICM6IHB5dGhv bi9jb25maWd1cmUucHk6NjA2Ci0gbXNnaWQgIiIKLUBAIC0xNzUyLDcgKzE3NzAsNyBAQCBtc2dz dHIgIlpnYWR6YW0gc2nEmSIKLSAKLSAjOiBweXRob24vZ3VpdjMucHk6MTc5Ci0gbXNnaWQgIkRv bid0IHJlbWluZCBtZSBhbnltb3JlIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiTmllIHByenlwb21p bmFqIG1pIHdpxJljZWoiCi0gCi0gIzogcHl0aG9uL2d1aXYzLnB5OjE4MAotIG1zZ2lkICJTaG93 IHZpcnR1YWwgZHJpdmVzIgotQEAgLTE4NzUsNyArMTg5Myw3IEBAIG1zZ3N0ciAiIgotIAotICM6 IHB5dGhvbi9pbnN0YWxsLnB5OjU3NwotIG1zZ2lkICJBdHRlbnRpb24hIgotLW1zZ3N0ciAiIgot K21zZ3N0ciAiVXdhZ2EhIgotIAotICM6IHB5dGhvbi9pbnN0YWxsLnB5OjU3NwotIG1zZ2lkICIi Ci1AQCAtMTg4Nyw2ICsxOTA1LDEzIEBAIG1zZ2lkICIiCi0gInBpcmFjeSBhbmQgYXMgc3VjaCwg d2Ugd2lsbCBub3Qgb2ZmZXIgYW55IHN1cHBvcnQgZm9yIGlzc3VlcyByZXN1bHRpbmcgZnJvbSAi Ci0gInVzaW5nIHRoaXMgb3B0aW9uLiIKLSBtc2dzdHIgIiIKLSsiV8WCxIVjemFqxIVjIHTEmSBv cGNqxJksIG1vxbxlc3ogaW5zdGFsb3dhxIcgcHJvZ3JhbXkgdcW8eXdhasSFY2Ugc3lzdGVtdSB6 YXJ6xIVkemFuaWEgIgotKyJwcmF3YW1pIGN5ZnJvd3ltaSAoRFJNKSwgYWxlIG5pZSBzxIUgb25l IHdzcGllcmFuZSBwcnpleiB7MH0gaSBtb2fEhSB3eW1hZ2HEhyAiCi0rIm9iZWrFm2NpYS5cbiIK LSsiXG4iCi0rIkZ1bmtjamEgdGEgbmllIHBvd2lubmEgYnnEhyBpbnRlcnByZXRvd2FuYSBqYWtv IHVrcnl0ZSBsdWIgZG9tbmllbWFuZSAiCi0rInByenl6d29sZW5pZSBuYSBwaXJhY3R3byBpIG5p ZSBixJlkemllbXkgb2Zlcm93YcSHIMW8YWRuZWdvIHdzcGFyY2lhIHcgIgotKyJrd2VzdGlhY2gg d3luaWthasSFY3ljaCB6IGtvcnp5c3RhbmlhIHogdGVqIG9wY2ppLiIKLSAKLSAjOiBweXRob24v aW5zdGFsbC5weTo1ODAKLSBtc2dpZCAiIgotQEAgLTE5NzYsMjMgKzIwMDEsMjMgQEAgbXNnc3Ry ICJNZW5lZMW8ZXIgd3R5Y3playIKLSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weToyOTQKLSBt c2dpZCAiU3VwcG9ydGVkIHNvZnR3YXJlIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiT2JzxYJ1Z2l3 YW5lIG9wcm9ncmFtb3dhbmllIgotIAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjI5NQotIG1z Z2lkICJOZXdzIgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiQWt0dWFsbm/Fm2NpIgotIAotICM6IHB5 dGhvbi9tYWlud2luZG93LnB5OjI5NgotIG1zZ2lkICJEb2N1bWVudGF0aW9uIgotLW1zZ3N0ciAi IgotK21zZ3N0ciAiRG9rdW1lbnRhY2phIgotIAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjI5 NwotIG1zZ2lkICJGb3J1bXMiCi0tbXNnc3RyICIiCi0rbXNnc3RyICJGb3JhIGR5c2t1c3lqbmUi Ci0gCi0gIzogcHl0aG9uL21haW53aW5kb3cucHk6Mjk4Ci0gbXNnaWQgIkJ1Z3MiCi0tbXNnc3Ry ICIiCi0rbXNnc3RyICJCxYLEmWR5IgotIAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjMwMAot IG1zZ2lkICJUd2l0dGVyIgotQEAgLTIwMjgsNyArMjA1Myw3IEBAIG1zZ3N0ciAiV3R5Y3praSIK LSAKLSAjOiBweXRob24vbWFpbndpbmRvdy5weTozNjkKLSBtc2dpZCAiU3VwcG9ydCIKLS1tc2dz dHIgIiIKLSttc2dzdHIgIldzcGFyY2llIgotIAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjM4 MSBweXRob24vbWFpbndpbmRvdy5weTo3NzcKLSBtc2dpZCAiQ2xvc2UiCi1AQCAtMjA4MCw3ICsy MTA1LDcgQEAgbXNnc3RyICJEZWJ1Z3VqIgotIAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5Ojc4 NQotIG1zZ2lkICJTZW5kIGEgZmVlZGJhY2siCi0tbXNnc3RyICIiCi0rbXNnc3RyICJXecWbbGlq IHpnxYJvc3plbmllIgotIAotICM6IHB5dGhvbi9tYWlud2luZG93LnB5Ojc5MAotIG1zZ2lkICJD cmVhdGUgYSBzaG9ydGN1dCIKLUBAIC0yMTE3LDcgKzIxNDIsNyBAQCBtc2dzdHIgIldpcnR1YWxu eSBkeXNrIHR3YXJkeSB6d2nEhXphbnkgeiB7MH0gKHsxfSkgbmllIGlzdG5pZWplLiIKLSAKLSAj OiBweXRob24vbWFpbndpbmRvdy5weToxMTAyCi0gbXNnaWQgIkFyZSB5b3Ugc3VyZSB5b3Ugd2Fu dCB0byBjbG9zZSBhbGwgezB9IHdpbmRvd3M/IgotLW1zZ3N0ciAiIgotK21zZ3N0ciAiQ3p5IG5h IHBld25vIGNoY2VzeiB6YW1rbsSFxIcgd3N6eXN0a2llIHswfSBva25hPyIKLSAKLSAjOiBweXRo b24vbWFpbndpbmRvdy5weToxMTI0Ci0gbXNnaWQgIlJ1biB5b3VyIFdpbmRvd3MgcHJvZ3JhbXMg b24gIgotQEAgLTIzNDIsNyArMjM2Nyw3IEBAIG1zZ3N0ciAiSmVzdGXFmyBwZXdpZW4gemUgY2hj ZXN6IHVzdW7EhcSHIFdpbmUgezB9PyIKLSAKLSAjOiBweXRob24vd2luZV92ZXJzaW9ucy5weToz MzQKLSBtc2dpZCAiVGhpcyB2ZXJzaW9uIGlzIENVUlJFTlRMWSBJTiBVU0UiCi0tbXNnc3RyICIi Ci0rbXNnc3RyICJUYSB3ZXJzamEgamVzdCBvYmVjbmllIHcgdcW8eWNpdSIKLSAKLSAjOiBweXRo b24vd3JhcHBlci5weToxMzUKLSBtc2dpZCAiezB9IGlzIG5vdCBhYmxlIHRvIHN0YXJ0IFBPTF9T ZXR1cFdpbmRvd19zZXJ2ZXIuIgotCi1Gcm9tIDhmMDgyNjMyYzMwYzg1NDYxYzc2ZjBmOTVhYzc0 NzY3NWJjMGFmOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBRdWVudGluIFBBUklT IDxnaXRAcXVlbnRpbi5wYXJpcz4KLURhdGU6IFN1biwgMjQgSmFuIDIwMjEgMTU6MjE6NTQgKzAx MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8zM10gUmVhZmN0b3Jpbmcgd2luZSB2ZXJzaW9uIG1hbmFn ZXIgY29kZQotCi0tLS0KLSBiYXNoL3N0YXJ0dXAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgIDggKwotIGxpYi92YXJpYWJsZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgMSArCi0gbGliL3dpbmUubGliICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAyMTU5ICsrKysrKysrKy0tLS0tLS0tLQotIHB5dGhvbi9saWIvVmFyaWFibGVzLnB5ICAg ICAgICAgICAgICAgICAgICAgIHwgICAgOSArLQotIHB5dGhvbi9tYWlud2luZG93LnB5ICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQotIHB5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVW ZXJzaW9uc0ZldGNoZXIucHkgIHwgIDEzOSArLQotIHB5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVW ZXJzaW9uc05vdGVib29rLnB5IHwgIDEzOSArLQotIHB5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVW ZXJzaW9uc1Rvb2xzLnB5ICAgIHwgICAyNCArLQotIHB5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVW ZXJzaW9uc1dpbmRvdy5weSAgIHwgIDI2MCArLS0KLSA5IGZpbGVzIGNoYW5nZWQsIDEzMTUgaW5z ZXJ0aW9ucygrKSwgMTQyNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jhc2gvc3RhcnR1 cCBiL2Jhc2gvc3RhcnR1cAotaW5kZXggYWIwYjVkY2I1Li5mYjYyZTdhOGIgMTAwNzU1Ci0tLS0g YS9iYXNoL3N0YXJ0dXAKLSsrKyBiL2Jhc2gvc3RhcnR1cAotQEAgLTMxLDYgKzMxLDE0IEBAIGJ1 aWxkX3VzZXJfc3RhdGVfZGlyZWN0b3J5Ci0gIyBDbGVhbmluZyB0bXAgZGlyZWN0b3J5Ci0gY2xl YW5fdG1wCi0gCi0rIyBNYWMgT1MgQ2F0YWxpbmE6IFJlbW92ZSBsZWdhY3kgd2luZSB2ZXJzaW9u cwotK2lmIFtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBdXTsgdGhlbgotKyAgICBpZiBbWyAhIC1l ICIkUE9MX1VTRVJfUk9PVC93aW5lL2Rhcndpbi14ODYtbGVnYWN5IiBdXTsgdGhlbgotKyAgICAg ICAgW1sgLWUgIiRQT0xfVVNFUl9ST09UL3dpbmUvZGFyd2luLXg4NiIgXV0gJiYgbXYgIiRQT0xf VVNFUl9ST09UL3dpbmUvZGFyd2luLXg4NiIgIiRQT0xfVVNFUl9ST09UL3dpbmUvZGFyd2luLXg4 Ni1sZWdhY3kiCi0rICAgICAgICBta2RpciAtcCAiJFBPTF9VU0VSX1JPT1Qvd2luZS9kYXJ3aW4t eDg2LWxlZ2FjeSIKLSsgICAgZmkKLStmaQotKwotICMjIyBPcGVyYXRpb25zIGJlbG93IGFyZSBi YWNrZ3JvdW5kIGFzeW5jaHJvbm91cyB0YXNrcwotIAotICgKLWRpZmYgLS1naXQgYS9saWIvdmFy aWFibGVzIGIvbGliL3ZhcmlhYmxlcwotaW5kZXggM2RmNGI2NzA4Li45YzE2ZmUxYTcgMTAwNzU1 Ci0tLS0gYS9saWIvdmFyaWFibGVzCi0rKysgYi9saWIvdmFyaWFibGVzCi1AQCAtMjEsNiArMjEs NyBAQAotICMjIEhhY2sgZm9yIEVsIENhcGl0YWluCi0gWyAhICIkV1JJVEVfTEQiID0gIiIgXSAm JiBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkV1JJVEVfTEQiCi0gWyAhICIkV1JJVEVfRFlMRCIg PSAiIiBdICYmIGV4cG9ydCBEWUxEX0xJQlJBUllfUEFUSD0iJFdSSVRFX0RZTEQiCi0rWyAhICIk V1JJVEVfRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiID0gIiIgXSAmJiBleHBvcnQgRFlMRF9G QUxMQkFDS19MSUJSQVJZX1BBVEg9IiRXUklURV9EWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCIK LSAKLSAjIFRoaXMgaXMganVzdCBhIGNvcHkgb2YgZnVuY3Rpb24gaW4gcGxheW9ubGludXgsIGJ1 dCB3ZSBuZWVkIGl0IGVhcmxpZXIKLSBbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgZXhwb3J0IExB Tkc9IiRSTEFORyIKLWRpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9saWIvd2luZS5saWIKLWlu ZGV4IDc3MTc5ZDEzNy4uZDI3ZGUxNTA5IDEwMDc1NQotLS0tIGEvbGliL3dpbmUubGliCi0rKysg Yi9saWIvd2luZS5saWIKLUBAIC0yMiw4MiArMjIsODMgQEAKLSAjCi0gIyBUaGlzIGxpYiBjb250 YWlucyB3aW5lJ3MgYXBpCi0gCi0tUE9MX1dpbmVfR2V0UmVnVmFsdWUoKQotLXsKLS0JIyBHZXQg YSB2YWx1ZSBpbiByZWdpc3RyeQotLQkjIEV4YW1wbGUgOiBQT0xfV2luZV9HZXRSZWdfVmFsdWUg TXVsdGlzYW1wbGluZwotLQkjCi0tCSMgUmVhZCBodHRwOi8vd2lraS53aW5laHEub3JnL1VzZWZ1 bFJlZ2lzdHJ5S2V5cwotLQotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0 YWwgIldJTkVQUkVGSVggbm90IHNldCIKLS0JbG9jYWwgdmFsdWUKLS0JIyB0ciAtZCAnXDAnIGlz IGEgd29ya2Fyb3VuZCBmb3IgV2luZSBidWcgIzM3NTc1Ci0tCVsgLWUgIiRXSU5FUFJFRklYL3Vz ZXIucmVnIiBdICYmIHZhbHVlPSIkKGdyZXAgIl5cIiQxXCI9IiAiJFdJTkVQUkVGSVgvdXNlci5y ZWciIHwgaGVhZCAtbiAxIHwgdHIgLWQgJyInIHwgY3V0IC1kPSAtZjItIHwgdHIgLWQgJ1wwJyki Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0aW5nIHJlZ2lzdHJ5IHZhbHVlICQxLiBSZXR1cm46 ICR2YWx1ZSIKLS0JZWNobyAtbiAiJHt2YWx1ZTotZGVmYXVsdH0iCi0rUE9MX1dpbmVfR2V0UmVn VmFsdWUoKSB7Ci0rICAjIEdldCBhIHZhbHVlIGluIHJlZ2lzdHJ5Ci0rICAjIEV4YW1wbGUgOiBQ T0xfV2luZV9HZXRSZWdfVmFsdWUgTXVsdGlzYW1wbGluZwotKyAgIwotKyAgIyBSZWFkIGh0dHA6 Ly93aWtpLndpbmVocS5vcmcvVXNlZnVsUmVnaXN0cnlLZXlzCi0rCi0rICBbIC16ICIkV0lORVBS RUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsgIGxvY2Fs IHZhbHVlCi0rICAjIHRyIC1kICdcMCcgaXMgYSB3b3JrYXJvdW5kIGZvciBXaW5lIGJ1ZyAjMzc1 NzUKLSsgIFsgLWUgIiRXSU5FUFJFRklYL3VzZXIucmVnIiBdICYmIHZhbHVlPSIkKGdyZXAgIl5c IiQxXCI9IiAiJFdJTkVQUkVGSVgvdXNlci5yZWciIHwgaGVhZCAtbiAxIHwgdHIgLWQgJyInIHwg Y3V0IC1kPSAtZjItIHwgdHIgLWQgJ1wwJykiCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGlu ZyByZWdpc3RyeSB2YWx1ZSAkMS4gUmV0dXJuOiAkdmFsdWUiCi0rICBlY2hvIC1uICIke3ZhbHVl Oi1kZWZhdWx0fSIKLSB9Ci0gCi0tUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgKCkKLS17Ci0tCSMg VXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHJlZ2Jhc2VuYW1lCi0tCSMgcmVnaXN0cnkg ZmlsZSBtdXN0IGJlIHByb3ZpZGVkIHRocnUgc3RkaW4KLS0JIyBGaWxlIHNpZ25hdHVyZSAoIlJF R0VESVQ0IikgaW4gYXBwZW5kZWQgYXV0b21hdGljYWxseQotLQotLQkoZWNobyAiUkVHRURJVDQi OyBlY2hvICIiOyBjYXQpID4gIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWciCi0tCVBPTF9XaW5l IHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWciICYmCi0tCXJtICIkUE9MX1VTRVJf Uk9PVC90bXAvJDEucmVnIgotK1BPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5KCkgewotKyAgIyBVc2Fn ZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgcmVnYmFzZW5hbWUKLSsgICMgcmVnaXN0cnkgZmls ZSBtdXN0IGJlIHByb3ZpZGVkIHRocnUgc3RkaW4KLSsgICMgRmlsZSBzaWduYXR1cmUgKCJSRUdF RElUNCIpIGluIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkKLSsKLSsgICgKLSsgICAgZWNobyAiUkVH RURJVDQiCi0rICAgIGVjaG8gIiIKLSsgICAgY2F0Ci0rICApID4iJFBPTF9VU0VSX1JPT1QvdG1w LyQxLnJlZyIKLSsgIFBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWci ICYmCi0rICAgIHJtICIkUE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIgotIH0KLSAKLS1QT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVBhaXIgKCkKLS17Ci0tCSMgVXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJl Z2lzdHJ5UGFpciBrZXkgbmFtZSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0gZGF0 YQotLQkjIGRhdGE9ImRlZmF1bHQiOiByZW1vdmUgdGhlIG5hbWUKLS0gICAgICAgIGxvY2FsIGtl eT0iJDEiCi0tICAgICAgICBsb2NhbCBzdWJrZXk9IiQyIgotLSAgICAgICAgc2hpZnQgMgotLSAg ICAgICAgbG9jYWwgdmFsdWUKLS0gICAgICAgIGNhc2UgIiQxIiBpbgotLSAgICAgICAgICAtLXN6 fC0tU1opCi0tICAgICAgICAgICAgc2hpZnQKLS0gICAgICAgICAgICAjIGJhY2tzbGFzaCBccyBh bmQgInM/Ci0tICAgICAgICAgICAgdmFsdWU9IlwiJDFcIiIKLS0gICAgICAgICAgICA7OwotLSAg ICAgICAgICAtLWJpbmFyeXwtLUJJTkFSWSkKLS0gICAgICAgICAgICBzaGlmdAotLSAgICAgICAg ICAgIHZhbHVlPSJoZXg6JDEiCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgLS1kd29yZHwt LURXT1JEKQotLSAgICAgICAgICAgIHNoaWZ0Ci0tICAgICAgICAgICAgdmFsdWU9ImR3b3JkOiQx IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgIC0tbXVsdGlzenwtLU1VTFRJU1opCi0tICAg ICAgICAgICAgc2hpZnQKLS0gICAgICAgICAgICB2YWx1ZT0iaGV4KDcpOiQxIgotLSAgICAgICAg ICAgIDs7Ci0tICAgICAgICAgIC0tKikKLS0gICAgICAgICAgICBQT0xfRGVidWdfRmF0YWwgIlVu cmVjb2duaXplZCB2YWx1ZSB0eXBlOiAkMSwgc3VwcG9ydGVkIGFyZSAtLXN6IC0tYmluYXJ5IC0t ZHdvcmQgLS1tdWx0aXN6IgotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgIGRlZmF1bHQpCi0t ICAgICAgICAgICAgdmFsdWU9Ii0iCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKikKLS0g ICAgICAgICAgICAjIGJhY2tzbGFzaCBccyBhbmQgInM/Ci0tICAgICAgICAgICAgdmFsdWU9Ilwi JDFcIiIKLS0gICAgICAgIGVzYWMKLS0KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHJlZ2tl eSA8PC0gX0VPRklOSV8KLStQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIoKSB7Ci0rICAjIFVz YWdlOiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIga2V5IG5hbWUgWy0tc3p8LS1iaW5hcnl8 LS1kd29yZHwtLW11bHRpc3pdIGRhdGEKLSsgICMgZGF0YT0iZGVmYXVsdCI6IHJlbW92ZSB0aGUg bmFtZQotKyAgbG9jYWwga2V5PSIkMSIKLSsgIGxvY2FsIHN1YmtleT0iJDIiCi0rICBzaGlmdCAy Ci0rICBsb2NhbCB2YWx1ZQotKyAgY2FzZSAiJDEiIGluCi0rICAtLXN6IHwgLS1TWikKLSsgICAg c2hpZnQKLSsgICAgIyBiYWNrc2xhc2ggXHMgYW5kICJzPwotKyAgICB2YWx1ZT0iXCIkMVwiIgot KyAgICA7OwotKyAgLS1iaW5hcnkgfCAtLUJJTkFSWSkKLSsgICAgc2hpZnQKLSsgICAgdmFsdWU9 ImhleDokMSIKLSsgICAgOzsKLSsgIC0tZHdvcmQgfCAtLURXT1JEKQotKyAgICBzaGlmdAotKyAg ICB2YWx1ZT0iZHdvcmQ6JDEiCi0rICAgIDs7Ci0rICAtLW11bHRpc3ogfCAtLU1VTFRJU1opCi0r ICAgIHNoaWZ0Ci0rICAgIHZhbHVlPSJoZXgoNyk6JDEiCi0rICAgIDs7Ci0rICAtLSopCi0rICAg IFBPTF9EZWJ1Z19GYXRhbCAiVW5yZWNvZ25pemVkIHZhbHVlIHR5cGU6ICQxLCBzdXBwb3J0ZWQg YXJlIC0tc3ogLS1iaW5hcnkgLS1kd29yZCAtLW11bHRpc3oiCi0rICAgIDs7Ci0rICBkZWZhdWx0 KQotKyAgICB2YWx1ZT0iLSIKLSsgICAgOzsKLSsgICopCi0rICAgICMgYmFja3NsYXNoIFxzIGFu ZCAicz8KLSsgICAgdmFsdWU9IlwiJDFcIiIKLSsgICAgOzsKLSsgIGVzYWMKLSsKLSsgIFBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5IHJlZ2tleSA8PC1fRU9GSU5JXwotIAkJWyRrZXldCi0gCQkiJHN1 YmtleSI9JHZhbHVlCi0gCQlfRU9GSU5JXwotIH0KLSAKLS1QT0xfV2luZV9VcGRhdGVSZWdpc3Ry eVdpbmVQYWlyICgpCi0tewotLQkjIFVzYWdlOiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIg c3Via2V5IG5hbWUgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIGRhdGEKLS0JIyBk YXRhPSJkZWZhdWx0IjogcmVtb3ZlIHRoZSBuYW1lCi0rUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpcigpIHsKLSsgICMgVXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5UGFpciBzdWJr ZXkgbmFtZSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0gZGF0YQotKyAgIyBkYXRh PSJkZWZhdWx0IjogcmVtb3ZlIHRoZSBuYW1lCi0gCi0tCSMgUHV0IGEgIlwiIGJlZm9yZSAkMSBp ZiBpdCdzIG5vdCBlbXB0eQotLQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIgIkhLRVlfQ1VS UkVOVF9VU0VSXFxTb2Z0d2FyZVxcV2luZSR7MTorXFwkMX0iICIkMiIgIiQzIiAiJDQiCi0rICAj IFB1dCBhICJcIiBiZWZvcmUgJDEgaWYgaXQncyBub3QgZW1wdHkKLSsgIFBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5UGFpciAiSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlXFxXaW5lJHsxOitcXCQx fSIgIiQyIiAiJDMiICIkNCIKLSB9Ci0gCi0gIyBGb3IgYWxsIGZ1bmN0aW9ucyBiZWxvdywgdGhh dCBjYW4gYmUgY2FsbGVkIGZyb20gdGhlIGNvbnRyb2wgcGFuZWw6Ci1AQCAtMTA1LDM2MSArMTA2 LDM0NCBAQCBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICgpCi0gIyAgIGNoYW5nZWQg V2luZSB2ZXJzaW9uIG91dCBvZiBvdXIgY29udHJvbDsKLSAjIC0gS2lsbCB3aW5lc2VydmVyIGFm dGVyIHJlZ2VkaXQgc28gY2hhbmdlIHRha2VzIGVmZmVjdCBpbW1lZGlhdGVseQotIAotLVBPTF9X aW5lX0RpcmVjdDNEICgpCi0tewotLQkjIENoYW5nZSBhIERpcmVjdDNEIHZhbHVlIGluIHJlZ2lz dHJ5Ci0tCSMgVXNhZ2UgUE9MX1dpbmVfRGlyZWN0M0QgS2V5ICBbLS1zenwtLWJpbmFyeXwtLWR3 b3JkfC0tbXVsdGlzel0gVmFsdWUKLStQT0xfV2luZV9EaXJlY3QzRCgpIHsKLSsgICMgQ2hhbmdl IGEgRGlyZWN0M0QgdmFsdWUgaW4gcmVnaXN0cnkKLSsgICMgVXNhZ2UgUE9MX1dpbmVfRGlyZWN0 M0QgS2V5ICBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0gVmFsdWUKLSAKLS0JIyBF eGFtcGxlIDo6IFBPTF9XaW5lX0RpcmVjdDNEIFVzZUdMU0wgW2RlZmF1bHQgLyBlbmFibGVkIC8g ZGlzYWJsZWRdCi0tCSMgZGVmYXVsdDogcmVtb3ZlIHRoZSBrZXkKLS0JUE9MX0RlYnVnX01lc3Nh Z2UgIlNldHRpbmcgd2luZSBEaXJlY3QzRCAkV0lORVBSRUZJWCAkMSAkMiAkMyIKLS0JWyAteiAi JFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0r ICAjIEV4YW1wbGUgOjogUE9MX1dpbmVfRGlyZWN0M0QgVXNlR0xTTCBbZGVmYXVsdCAvIGVuYWJs ZWQgLyBkaXNhYmxlZF0KLSsgICMgZGVmYXVsdDogcmVtb3ZlIHRoZSBrZXkKLSsgIFBPTF9EZWJ1 Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0M0QgJFdJTkVQUkVGSVggJDEgJDIgJDMiCi0r ICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90 IHNldCIKLSAKLS0JUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLS0Jd2luZXNlcnZlciAtawot LQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3QzRCcgIiQxIiAiJDIiICIk MyIKLS0Jd2luZXNlcnZlciAtawotKyAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLSsgIHdp bmVzZXJ2ZXIgLWsKLSsgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdDNE JyAiJDEiICIkMiIgIiQzIgotKyAgd2luZXNlcnZlciAtawotIH0KLSAKLS1QT0xfV2luZV9YMTFE cnYgKCkKLS17Ci0tCSMgQ2hhbmdlIGEgWDExRHJ2IHZhbHVlIGluIHJlZ2lzdHJ5Ci0tCSMgVXNh Z2UgUE9MX1dpbmVfWDExRHJ2IEtleSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0g VmFsdWUKLStQT0xfV2luZV9YMTFEcnYoKSB7Ci0rICAjIENoYW5nZSBhIFgxMURydiB2YWx1ZSBp biByZWdpc3RyeQotKyAgIyBVc2FnZSBQT0xfV2luZV9YMTFEcnYgS2V5IFstLXN6fC0tYmluYXJ5 fC0tZHdvcmR8LS1tdWx0aXN6XSBWYWx1ZQotIAotLQkjIEV4YW1wbGUgOjogUE9MX1dpbmVfWDEx RHJ2IFVzZUdMU0wgW2RlZmF1bHQgLyBlbmFibGVkIC8gZGlzYWJsZWRdCi0tCSMgZGVmYXVsdDog cmVtb3ZlIHRoZSBrZXkKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBYMTFEcnYg JFdJTkVQUkVGSVggJDEgJDIgJDMiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1 Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotKyAgIyBFeGFtcGxlIDo6IFBPTF9XaW5lX1gx MURydiBVc2VHTFNMIFtkZWZhdWx0IC8gZW5hYmxlZCAvIGRpc2FibGVkXQotKyAgIyBkZWZhdWx0 OiByZW1vdmUgdGhlIGtleQotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBYMTFE cnYgJFdJTkVQUkVGSVggJDEgJDIgJDMiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xf RGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSAKLS0JUE9MX1dpbmVfQXV0b1NldFZl cnNpb25FbnYKLS0Jd2luZXNlcnZlciAtawotLQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQ YWlyICdYMTEgRHJpdmVyJyAiJDEiICIkMiIgIiQzIgotLQl3aW5lc2VydmVyIC1rCi0rICBQT0xf V2luZV9BdXRvU2V0VmVyc2lvbkVudgotKyAgd2luZXNlcnZlciAtawotKyAgUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgIiQxIiAiJDIiICIkMyIKLSsgIHdpbmVz ZXJ2ZXIgLWsKLSB9Ci0gCi0tUE9MX1dpbmVfRGlyZWN0U291bmQgKCkKLS17Ci0tCSMgU2FtZSB0 aGF0IFBPTF9XaW5lX0RpcmVjdDNELCBidXQgZm9yIERpcmVjdFNvdW5kCi0tCVBPTF9EZWJ1Z19N ZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0U291bmQgJFdJTkVQUkVGSVggJDEgJDIgJDMiCi0t CVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qg c2V0IgotK1BPTF9XaW5lX0RpcmVjdFNvdW5kKCkgewotKyAgIyBTYW1lIHRoYXQgUE9MX1dpbmVf RGlyZWN0M0QsIGJ1dCBmb3IgRGlyZWN0U291bmQKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0 aW5nIHdpbmUgRGlyZWN0U291bmQgJFdJTkVQUkVGSVggJDEgJDIgJDMiCi0rICBbIC16ICIkV0lO RVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSAKLS0J UE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLS0Jd2luZXNlcnZlciAtawotLQlQT0xfV2luZV9V cGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgIiQxIiAiJDIiICIkMyIKLS0Jd2lu ZXNlcnZlciAtawotKyAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLSsgIHdpbmVzZXJ2ZXIg LWsKLSsgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAiJDEi ICIkMiIgIiQzIgotKyAgd2luZXNlcnZlciAtawotIH0KLSAKLS1QT0xfV2luZV9EaXJlY3RJbnB1 dCAoKQotLXsKLS0JIyBTYW1lIHRoYXQgUE9MX1dpbmVfRGlyZWN0M0QsIGJ1dCBmb3IgRGlyZWN0 SW5wdXQKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3RJbnB1dCAkV0lO RVBSRUZJWCAkMSAkMiAkMyIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0rUE9MX1dpbmVfRGlyZWN0SW5wdXQoKSB7Ci0rICAj IFNhbWUgdGhhdCBQT0xfV2luZV9EaXJlY3QzRCwgYnV0IGZvciBEaXJlY3RJbnB1dAotKyAgUE9M X0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSBEaXJlY3RJbnB1dCAkV0lORVBSRUZJWCAkMSAk MiAkMyIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBS RUZJWCBub3Qgc2V0IgotIAotLQlQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotLQl3aW5lc2Vy dmVyIC1rCi0tCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdElucHV0JyAi JDEiICIkMiIgIiQzIgotLQl3aW5lc2VydmVyIC1rCi0rICBQT0xfV2luZV9BdXRvU2V0VmVyc2lv bkVudgotKyAgd2luZXNlcnZlciAtawotKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFp ciAnRGlyZWN0SW5wdXQnICIkMSIgIiQyIiAiJDMiCi0rICB3aW5lc2VydmVyIC1rCi0gfQotIAot LVNldF9PUyAoKQotLXsKLS0JIyBTZXQgZmFrZSB3aW5kb3dzIE9TCi0tCSMgVXNhZ2U6IFNldF9P UyBbMV0gWzJdCi0tCSMKLS0JIyAxOiBQb3NzaWJsZSB2YWx1ZXM6IHdpbjcsIHdpbjIwMDgsIHZp c3RhLCB3aW4yMDAzLCB3aW54cCwgd2luMjAwMCwgbnQ0MCwgd2lubnQzNTEsIHdpbm1lLCB3aW45 OCwgd2luOTUsIHdpbjMxLCB3aW4zMCwgd2luMjAKLS0JIyAyOiBTZXJ2aWNlIFBhY2s6IHNwMSwg c3AyLCBzcDMsIHNwNCwgc3A1Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFdpbmRvd3Mg T1MgdG8gJDEgJDIiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgotLQotLQlpZiBbIC1uICIkMSIgXTsgdGhlbgotLQkJUE9MX1dp bmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnJyAnVmVyc2lvbicgIiQxIgotLQlmaQotLQotLQlp ZiBbIC1uICIkMiIgXTsgdGhlbiAjIE5lZWQgbW9yZSB0ZXN0aW5nCi0tCQlsb2NhbCBuCi0tCQlb ICIkMiIgPSAic3AxIiBdICYmIG49MQotLQkJWyAiJDIiID0gInNwMiIgXSAmJiBuPTIKLS0JCVsg IiQyIiA9ICJzcDMiIF0gJiYgbj0zCi0tCQlbICIkMiIgPSAic3A0IiBdICYmIG49NAotLQkJWyAi JDIiID0gInNwNSIgXSAmJiBuPTUKLS0KLS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHNldG9z IDw8LSBfRU9GSU5JXwotK1NldF9PUygpIHsKLSsgICMgU2V0IGZha2Ugd2luZG93cyBPUwotKyAg IyBVc2FnZTogU2V0X09TIFsxXSBbMl0KLSsgICMKLSsgICMgMTogUG9zc2libGUgdmFsdWVzOiB3 aW43LCB3aW4yMDA4LCB2aXN0YSwgd2luMjAwMywgd2lueHAsIHdpbjIwMDAsIG50NDAsIHdpbm50 MzUxLCB3aW5tZSwgd2luOTgsIHdpbjk1LCB3aW4zMSwgd2luMzAsIHdpbjIwCi0rICAjIDI6IFNl cnZpY2UgUGFjazogc3AxLCBzcDIsIHNwMywgc3A0LCBzcDUKLSsgIFBPTF9EZWJ1Z19NZXNzYWdl ICJTZXR0aW5nIFdpbmRvd3MgT1MgdG8gJDEgJDIiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsKLSsgIGlmIFsgLW4gIiQx IiBdOyB0aGVuCi0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJycgJ1ZlcnNp b24nICIkMSIKLSsgIGZpCi0rCi0rICBpZiBbIC1uICIkMiIgXTsgdGhlbiAjIE5lZWQgbW9yZSB0 ZXN0aW5nCi0rICAgIGxvY2FsIG4KLSsgICAgWyAiJDIiID0gInNwMSIgXSAmJiBuPTEKLSsgICAg WyAiJDIiID0gInNwMiIgXSAmJiBuPTIKLSsgICAgWyAiJDIiID0gInNwMyIgXSAmJiBuPTMKLSsg ICAgWyAiJDIiID0gInNwNCIgXSAmJiBuPTQKLSsgICAgWyAiJDIiID0gInNwNSIgXSAmJiBuPTUK LSsKLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnkgc2V0b3MgPDwtX0VPRklOSV8KLSAJCVtI S0VZX0xPQ0FMX01BQ0hJTkVcXFNvZnR3YXJlXFxNaWNyb3NvZnRcXFdpbmRvd3MgTlRcXEN1cnJl bnRWZXJzaW9uXQotIAkJIkNTRFZlcnNpb24iPSJTZXJ2aWNlIFBhY2sgJG4iCi0gCQlbSEtFWV9M T0NBTF9NQUNISU5FXFxTeXN0ZW1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxXaW5kb3dz XQotIAkJIkNTRFZlcnNpb24iPWR3b3JkOjAwMDAwJHtufTAwCi0gCQlfRU9GSU5JXwotLQlmaQot KyAgZmkKLSB9Ci0gCi0tU2V0X01hbmFnZWQgKCkKLS17Ci0tCSMgTGV0IHRoZSB3aW5kb3dzIG1h bmFnZXIgdG8gY29udHJvbCB3aW5lCi0tCSMgVXNhZ2U6IFNldF9NYW5hZ2VkIChPbnxPZmYpCi0t Ci0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgbWFuYWdlZDogJDEiCi0tCVsgLXog IiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0Igot LQotLQlsb2NhbCBuCi0tCVsgIiQxIiA9ICJPbiIgXSAmJiBuPSJZIgotLQlbICIkMSIgPSAiT2Zm IiBdICYmIG49Ik4iCi0tCWlmIFsgLW4gIiRuIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9VcGRhdGVS ZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAiTWFuYWdlZCIgIiRuIgotLQllbHNlCi0tCQlQ T0xfRGVidWdfV2FybmluZyAiVW5yZWNvZ25pemVkIGZsYWcgJyQxJyIKLS0JZmkKLStTZXRfTWFu YWdlZCgpIHsKLSsgICMgTGV0IHRoZSB3aW5kb3dzIG1hbmFnZXIgdG8gY29udHJvbCB3aW5lCi0r ICAjIFVzYWdlOiBTZXRfTWFuYWdlZCAoT258T2ZmKQotKwotKyAgUE9MX0RlYnVnX01lc3NhZ2Ug IlNldHRpbmcgd2luZSBtYW5hZ2VkOiAkMSIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotKwotKyAgbG9jYWwgbgotKyAgWyAi JDEiID0gIk9uIiBdICYmIG49IlkiCi0rICBbICIkMSIgPSAiT2ZmIiBdICYmIG49Ik4iCi0rICBp ZiBbIC1uICIkbiIgXTsgdGhlbgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWly ICdYMTEgRHJpdmVyJyAiTWFuYWdlZCIgIiRuIgotKyAgZWxzZQotKyAgICBQT0xfRGVidWdfV2Fy bmluZyAiVW5yZWNvZ25pemVkIGZsYWcgJyQxJyIKLSsgIGZpCi0gfQotIAotLVNldF9Tb3VuZERy aXZlciAoKQotLXsKLS0JIyBTZXQgdGhlIHNvdW5kIGRyaXZlcgotLQkjIFVzYWdlOiBTZXRfU291 bmREcml2ZXIgW0RyaXZlcl0KLS0JIyBVc2UgYW4gZW1wdHkgc3RyaW5nIHBhcmFtZXRlciB0byBk aXNhYmxlIHNvdW5kCi0tCSMgRGlzYWJsZWQgaW4gTWFjIE9TCi0tCVBPTF9EZWJ1Z19NZXNzYWdl ICJTZXR0aW5nIHdpbmUgU291bmREcml2ZXIgJEAiCi0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYm IFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLQotLQlpZiBbICIkUE9MX09T IiA9ICJMaW51eCIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAn RHJpdmVycycgJ0F1ZGlvJyAiJDEiCi0tCWVsc2UKLS0JCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXRf U291bmREcml2ZXIgZGlzYWJsZWQgb24gJFBPTF9PUyIKLS0JZmkKLStTZXRfU291bmREcml2ZXIo KSB7Ci0rICAjIFNldCB0aGUgc291bmQgZHJpdmVyCi0rICAjIFVzYWdlOiBTZXRfU291bmREcml2 ZXIgW0RyaXZlcl0KLSsgICMgVXNlIGFuIGVtcHR5IHN0cmluZyBwYXJhbWV0ZXIgdG8gZGlzYWJs ZSBzb3VuZAotKyAgIyBEaXNhYmxlZCBpbiBNYWMgT1MKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJT ZXR0aW5nIHdpbmUgU291bmREcml2ZXIgJEAiCi0rICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQ T0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKLSsKLSsgIGlmIFsgIiRQT0xfT1Mi ID0gIkxpbnV4IiBdOyB0aGVuCi0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIg J0RyaXZlcnMnICdBdWRpbycgIiQxIgotKyAgZWxzZQotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAi U2V0X1NvdW5kRHJpdmVyIGRpc2FibGVkIG9uICRQT0xfT1MiCi0rICBmaQotIH0KLSAKLS1TZXRf RFhHcmFiICgpCi0tewotLQkjIEVuYWJsZSBvciBkaXNhYmxlIERYR3JhYgotLQkjIFVzYWdlOiBT ZXRfRFhHcmFiIChPbnxPZmYpCi0tCSMgT24gb3UgT2ZmCi0tCVsgLXogIiRXSU5FUFJFRklYIiBd ICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLQotLQlsb2NhbCBuCi0t CVsgIiQxIiA9ICJPbiIgXSAmJiBuPSJZIiAmJiBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBE WEdyYWIiCi0tCVsgIiQxIiA9ICJPZmYiIF0gJiYgbj0iTiIgJiYgUE9MX0RlYnVnX01lc3NhZ2Ug IlVuc2V0dGluZyBEWEdyYWIiCi0tCWlmIFsgLW4gIiRuIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9V cGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAnRFhHcmFiJyAiJG4iCi0tCWVsc2UK LS0JCVBPTF9EZWJ1Z19XYXJuaW5nICJTZXRfRFhHcmFiOiB1bnJlY29nbml6ZWQgZmxhZyAnJDEn IgotLQlmaQotK1NldF9EWEdyYWIoKSB7Ci0rICAjIEVuYWJsZSBvciBkaXNhYmxlIERYR3JhYgot KyAgIyBVc2FnZTogU2V0X0RYR3JhYiAoT258T2ZmKQotKyAgIyBPbiBvdSBPZmYKLSsgIFsgLXog IiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0Igot KwotKyAgbG9jYWwgbgotKyAgWyAiJDEiID0gIk9uIiBdICYmIG49IlkiICYmIFBPTF9EZWJ1Z19N ZXNzYWdlICJTZXR0aW5nIERYR3JhYiIKLSsgIFsgIiQxIiA9ICJPZmYiIF0gJiYgbj0iTiIgJiYg UE9MX0RlYnVnX01lc3NhZ2UgIlVuc2V0dGluZyBEWEdyYWIiCi0rICBpZiBbIC1uICIkbiIgXTsg dGhlbgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAn RFhHcmFiJyAiJG4iCi0rICBlbHNlCi0rICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJTZXRfRFhHcmFi OiB1bnJlY29nbml6ZWQgZmxhZyAnJDEnIgotKyAgZmkKLSB9Ci0gCi0tU2V0X0lleHBsb3JlICgp Ci0tewotLQkjIE1ha2UgYSBmYWtlIElFNiBpbnN0YWxsYXRpb24KLS0JIyBVc2FnZTogU2V0X0ll eHBsb3JlCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJGYWtpbmcgaWU2IGluc3RhbGxhdGlvbiIKLS0J WyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBz ZXQiCi0rU2V0X0lleHBsb3JlKCkgewotKyAgIyBNYWtlIGEgZmFrZSBJRTYgaW5zdGFsbGF0aW9u Ci0rICAjIFVzYWdlOiBTZXRfSWV4cGxvcmUKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJGYWtpbmcg aWU2IGluc3RhbGxhdGlvbiIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19G YXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotIAotLQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSBp ZSA8PC0gX0VPRklOSV8KLSsgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IGllIDw8LV9FT0ZJTklf Ci0gCVtIS0VZX0xPQ0FMX01BQ0hJTkVcXFNvZnR3YXJlXFxNaWNyb3NvZnRcXEludGVybmV0IEV4 cGxvcmVyXQotIAkiVmVyc2lvbiI9IjYuMC4yOTAwLjIxODAiCi0gCV9FT0ZJTklfCi0gfQotIAot LVNldF9EZXNrdG9wICgpCi0tewotLQkjIFNldCBhIGRlc2t0b3AgZW52aXJvbm1lbnQKLS0JIyBV c2FnZTogU2V0X0Rlc2t0b3AgKG9ufG9mZikgW3dpZHRoXSBbaGVpZ2h0XQotLQotLQlQT0xfRGVi dWdfTWVzc2FnZSAiU2V0dGluZyBEZXNrdG9wIDogJDEgJDIgJDMiCi0tCVsgLXogIiRXSU5FUFJF RklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLQotLQlpZiBb ICIkMSIgPSAiT2ZmIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWly ICdYMTEgRHJpdmVyJyAnRGVza3RvcCcgIi0xIgotLQkJIyBSZW1vdmUga2V5Ci0tCQlQT0xfV2lu ZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdFeHBsb3JlcicgJ0Rlc2t0b3AnICdkZWZhdWx0Jwot LQllbGlmIFsgIiQxIiA9ICJPbiIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpciAnWDExIERyaXZlcicgJ0Rlc2t0b3AnICIkMngkMyIKLS0JCVBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgIkV4cGxvcmVyXFxEZXNrdG9wcyIgJ0RlZmF1bHQnICIkMngkMyIK LS0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0V4cGxvcmVyJyAnRGVza3RvcCcg J0RlZmF1bHQnCi0tCWVsc2UKLS0JCVBPTF9EZWJ1Z19XYXJuaW5nICJVbnJlY29nbml6ZWQgZmxh ZyAnJDEnIgotLQlmaQotK1NldF9EZXNrdG9wKCkgewotKyAgIyBTZXQgYSBkZXNrdG9wIGVudmly b25tZW50Ci0rICAjIFVzYWdlOiBTZXRfRGVza3RvcCAob258b2ZmKSBbd2lkdGhdIFtoZWlnaHRd Ci0rCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBEZXNrdG9wIDogJDEgJDIgJDMiCi0r ICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90 IHNldCIKLSsKLSsgIGlmIFsgIiQxIiA9ICJPZmYiIF07IHRoZW4KLSsgICAgUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0Rlc2t0b3AnICItMSIKLSsgICAgIyBS ZW1vdmUga2V5Ci0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0V4cGxvcmVy JyAnRGVza3RvcCcgJ2RlZmF1bHQnCi0rICBlbGlmIFsgIiQxIiA9ICJPbiIgXTsgdGhlbgotKyAg ICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdYMTEgRHJpdmVyJyAnRGVza3RvcCcg IiQyeCQzIgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICJFeHBsb3Jlclxc RGVza3RvcHMiICdEZWZhdWx0JyAiJDJ4JDMiCi0rICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 V2luZVBhaXIgJ0V4cGxvcmVyJyAnRGVza3RvcCcgJ0RlZmF1bHQnCi0rICBlbHNlCi0rICAgIFBP TF9EZWJ1Z19XYXJuaW5nICJVbnJlY29nbml6ZWQgZmxhZyAnJDEnIgotKyAgZmkKLSB9Ci0gCi0t U2V0X1NvdW5kU2FtcGxlUmF0ZSAoKQotLXsKLS0JIyBTZXQgU291bmQgc2FtcGxlIHJhdGUKLS0J IyBVc2FnZTogU2V0X1NvdW5kU2FtcGxlUmF0ZSBbdmFsdWVdCi0tCSMgdmFsdWVzIGNhbiBiZTog NDgwMDAsIDQ0MTAwLCAyMjA1MCwgMTYwMDAsIDExMDI1LCA4MDAwCi0tCVBPTF9EZWJ1Z19NZXNz YWdlICJTZXR0aW5nIFNvdW5kU2FtcGxlUmF0ZSB0byAkMSIKLS0JWyAteiAiJFdJTkVQUkVGSVgi IF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCi0tCWlmIFsgLW4g IiQxIiBdOyB0aGVuCi0tCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RT b3VuZCcgJ0RlZmF1bHRTYW1wbGVSYXRlJyAiJDEiCi0tCWVsc2UKLS0JCSMgRklYTUU6IHNob3Vs ZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/Ci0tCQlQT0xfRGVidWdfV2FybmluZyAiU2FtcGxl IHJhdGUgbWlzc2luZywgc2tpcHBlZCIKLS0JZmkKLStTZXRfU291bmRTYW1wbGVSYXRlKCkgewot KyAgIyBTZXQgU291bmQgc2FtcGxlIHJhdGUKLSsgICMgVXNhZ2U6IFNldF9Tb3VuZFNhbXBsZVJh dGUgW3ZhbHVlXQotKyAgIyB2YWx1ZXMgY2FuIGJlOiA0ODAwMCwgNDQxMDAsIDIyMDUwLCAxNjAw MCwgMTEwMjUsIDgwMDAKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kU2FtcGxl UmF0ZSB0byAkMSIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgotKwotKyAgaWYgWyAtbiAiJDEiIF07IHRoZW4KLSsgICAgUE9M X1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdEZWZhdWx0U2FtcGxl UmF0ZScgIiQxIgotKyAgZWxzZQotKyAgICAjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFt ZSBpbnN0ZWFkPwotKyAgICBQT0xfRGVidWdfV2FybmluZyAiU2FtcGxlIHJhdGUgbWlzc2luZywg c2tpcHBlZCIKLSsgIGZpCi0gfQotIAotLVNldF9Tb3VuZEJpdHNQZXJTYW1wbGUgKCkKLS17Ci0t CSMgU2V0IFNvdW5kIGJpdHMgcGVyIHNhbXBsZSByYXRlCi0tCSMgVXNhZ2U6IFNldF9Tb3VuZEJp dHNQZXJTYXBsZSBbdmFsdWVdCi0tCSMgdmFsdWVzOiA4LCAxNgotLQlQT0xfRGVidWdfTWVzc2Fn ZSAiU2V0dGluZyBzb3VuZCBEZWZhdWx0c0JpdHNQZXJTYW1wbGUgdG8gJDEiCi0tCVsgLXogIiRX SU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLQot LQlpZiBbIC1uICIkMSIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFp ciAnRGlyZWN0U291bmQnICdEZWZhdWx0Qml0c1BlclNhbXBsZScgIiQxIgotLQllbHNlCi0tCQkj IEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPwotLQkJUE9MX0RlYnVnX1dh cm5pbmcgIkJpdHNQZXJTYW1wbGUgbWlzc2luZywgc2tpcHBlZCIKLS0JZmkKLStTZXRfU291bmRC aXRzUGVyU2FtcGxlKCkgewotKyAgIyBTZXQgU291bmQgYml0cyBwZXIgc2FtcGxlIHJhdGUKLSsg ICMgVXNhZ2U6IFNldF9Tb3VuZEJpdHNQZXJTYXBsZSBbdmFsdWVdCi0rICAjIHZhbHVlczogOCwg MTYKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHNvdW5kIERlZmF1bHRzQml0c1BlclNh bXBsZSB0byAkMSIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgotKwotKyAgaWYgWyAtbiAiJDEiIF07IHRoZW4KLSsgICAgUE9M X1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdEZWZhdWx0Qml0c1Bl clNhbXBsZScgIiQxIgotKyAgZWxzZQotKyAgICAjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUg bmFtZSBpbnN0ZWFkPwotKyAgICBQT0xfRGVidWdfV2FybmluZyAiQml0c1BlclNhbXBsZSBtaXNz aW5nLCBza2lwcGVkIgotKyAgZmkKLSB9Ci0gCi0tUE9MX1dpbmVfSW5zdGFsbEZvbnRzKCkKLS17 Ci0tCSMgSW5zdGFsbCBtaWNyb3NvZnQgZm9udHMKLS0JIyBVc2FnZTogUE9MX1dpbmVfSW5zdGFs bEZvbnRzCi0tCXB1c2hkIC4KLS0JUE9MX0NhbGwgUE9MX0luc3RhbGxfY29yZWZvbnRzCi0tICAg ICAgICBwb3BkCi0rUE9MX1dpbmVfSW5zdGFsbEZvbnRzKCkgewotKyAgIyBJbnN0YWxsIG1pY3Jv c29mdCBmb250cwotKyAgIyBVc2FnZTogUE9MX1dpbmVfSW5zdGFsbEZvbnRzCi0rICBwdXNoZCAu Ci0rICBQT0xfQ2FsbCBQT0xfSW5zdGFsbF9jb3JlZm9udHMKLSsgIHBvcGQKLSB9Ci0gCi0tU2V0 X1NvdW5kSGFyZHdhcmVBY2NlbGVyYXRpb24gKCkKLS17Ci0tCSMgU2V0IHNvdW5kIGRyaXZlciBo YXJkd2FyZSBhY2NlbGVyYXRpb24KLS0JIyBWYWx1ZXMgOiBGdWxsLCBTdGFuZGFyZCwgQmFzaWMs IEVtdWxhdGlvbgotLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBTb3VuZCBIYXJkd2FyZUFj Y2VsZXJhdGlvbiB0byAkMSIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCi0tCWlmIFsgLW4gIiQxIiBdOyB0aGVuCi0tCQlQ T0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0hhcmR3YXJlQWNj ZWxlcmF0aW9uJyAiJDEiCi0tCWVsc2UKLS0JCSMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBu YW1lIGluc3RlYWQ/Ci0tCQlQT0xfRGVidWdfV2FybmluZyAiSGFyZHdhcmUgYWNjZWxlcmF0aW9u IG1vZGUgbWlzc2luZywgc2tpcHBlZCIKLS0JZmkKLStTZXRfU291bmRIYXJkd2FyZUFjY2VsZXJh dGlvbigpIHsKLSsgICMgU2V0IHNvdW5kIGRyaXZlciBoYXJkd2FyZSBhY2NlbGVyYXRpb24KLSsg ICMgVmFsdWVzIDogRnVsbCwgU3RhbmRhcmQsIEJhc2ljLCBFbXVsYXRpb24KLSsgIFBPTF9EZWJ1 Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kIEhhcmR3YXJlQWNjZWxlcmF0aW9uIHRvICQxIgotKyAg WyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBz ZXQiCi0rCi0rICBpZiBbIC1uICIkMSIgXTsgdGhlbgotKyAgICBQT0xfV2luZV9VcGRhdGVSZWdp c3RyeVdpbmVQYWlyICdEaXJlY3RTb3VuZCcgJ0hhcmR3YXJlQWNjZWxlcmF0aW9uJyAiJDEiCi0r ICBlbHNlCi0rICAgICMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/Ci0r ICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJIYXJkd2FyZSBhY2NlbGVyYXRpb24gbW9kZSBtaXNzaW5n LCBza2lwcGVkIgotKyAgZmkKLSB9Ci0gCi0tU2V0X1NvdW5kRW11bERyaXZlciAoKQotLXsKLS0J IyBTZXQgc291bmQgZW11bCBkcml2ZXIKLS0JIyBVc2FnZTogU2V0X1NvdW5kRW11bERyaXZlcihZ fE4pCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kIEVtdWxEcml2ZXIgdG8gJDEi Ci0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBu b3Qgc2V0IgotLQotLQlpZiBbIC1uICIkMSIgXTsgdGhlbgotLQkJUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdFbXVsRHJpdmVyJyAiJDEiCi0tCWVsc2UKLS0J CSMgRklYTUU6IHNob3VsZCB3ZSBkcm9wIHRoZSBuYW1lIGluc3RlYWQ/Ci0tCQlQT0xfRGVidWdf V2FybmluZyAiU291bmQgZW11bGF0aW9uIG1vZGUgbWlzc2luZywgc2tpcHBlZCIKLS0JZmkKLStT ZXRfU291bmRFbXVsRHJpdmVyKCkgewotKyAgIyBTZXQgc291bmQgZW11bCBkcml2ZXIKLSsgICMg VXNhZ2U6IFNldF9Tb3VuZEVtdWxEcml2ZXIoWXxOKQotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNl dHRpbmcgU291bmQgRW11bERyaXZlciB0byAkMSIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYm IFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotKwotKyAgaWYgWyAtbiAiJDEi IF07IHRoZW4KLSsgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291 bmQnICdFbXVsRHJpdmVyJyAiJDEiCi0rICBlbHNlCi0rICAgICMgRklYTUU6IHNob3VsZCB3ZSBk cm9wIHRoZSBuYW1lIGluc3RlYWQ/Ci0rICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJTb3VuZCBlbXVs YXRpb24gbW9kZSBtaXNzaW5nLCBza2lwcGVkIgotKyAgZmkKLSB9Ci0gCi0tUE9MX0xvYWRWYXJf UFJPR1JBTUZJTEVTKCkKLS17Ci0tCSMgR2V0IFByb2dyYW0gRmlsZXMgZm9sZGVyIG5hbWUgYW5k IHN0b3JlIGl0IHRvIFBST0dSQU1GSUxFUyB2YXJpYWJsZQotLQkjIFVzYWdlOiBQT0xfTG9hZFZh cl9QUk9HUkFNRklMRVMKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkdldHRpbmcgUHJvZ3JhbSBGaWxl cyBuYW1lIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQ UkVGSVggbm90IHNldCIKLS0KLS0JUFJPR1JBTUZJTEVTPWBQT0xfV2luZSBjbWQgL2MgZWNobyAi JVByb2dyYW1GaWxlcyUiIHx0ciAtZCAnXDAxNVwwMTInYAotLQlpZiBbICIke1BST0dSQU1GSUxF U30iID0gIiVQcm9ncmFtRmlsZXMlIiBdCi0tCXRoZW4gIyBWYXIgaXMgbm90IGRlZmluZWQgYnkg d2luZQotLQkJZXhwb3J0IFBST0dSQU1GSUxFUz0iUHJvZ3JhbSBGaWxlcyIKLS0JZWxzZQotLQkJ ZXhwb3J0IFBST0dSQU1GSUxFUz0iJHtQUk9HUkFNRklMRVM6M30iCi0tCWZpCi0rUE9MX0xvYWRW YXJfUFJPR1JBTUZJTEVTKCkgewotKyAgIyBHZXQgUHJvZ3JhbSBGaWxlcyBmb2xkZXIgbmFtZSBh bmQgc3RvcmUgaXQgdG8gUFJPR1JBTUZJTEVTIHZhcmlhYmxlCi0rICAjIFVzYWdlOiBQT0xfTG9h ZFZhcl9QUk9HUkFNRklMRVMKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0aW5nIFByb2dyYW0g RmlsZXMgbmFtZSIKLSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgotKwotKyAgUFJPR1JBTUZJTEVTPSQoUE9MX1dpbmUgY21kIC9j IGVjaG8gIiVQcm9ncmFtRmlsZXMlIiB8IHRyIC1kICdcMDE1XDAxMicpCi0rICBpZiBbICIke1BS T0dSQU1GSUxFU30iID0gIiVQcm9ncmFtRmlsZXMlIiBdOyB0aGVuICMgVmFyIGlzIG5vdCBkZWZp bmVkIGJ5IHdpbmUKLSsgICAgZXhwb3J0IFBST0dSQU1GSUxFUz0iUHJvZ3JhbSBGaWxlcyIKLSsg IGVsc2UKLSsgICAgZXhwb3J0IFBST0dSQU1GSUxFUz0iJHtQUk9HUkFNRklMRVM6M30iCi0rICBm aQotIH0KLSAKLS1TZXRfV2luZVdpbmRvd1RpdGxlICgpCi0tewotLQkjbmFtZSBvZiB3aW5kb3dl ZCB0aXRsZTokMQotLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5kb3cgdGl0bGUiCi0t CVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qg c2V0IgotK1NldF9XaW5lV2luZG93VGl0bGUoKSB7Ci0rICAjbmFtZSBvZiB3aW5kb3dlZCB0aXRs ZTokMQotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZG93IHRpdGxlIgotKyAgWyAt eiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQi Ci0gCi0tCVBPTF9EZWJ1Z19XYXJuaW5nICJTZXRfV2luZVdpbmRvd1RpdGxlIGhhcyBiZWVuIGRl cHJlY2F0ZWQgKCM1MTE4KSIKLSsgIFBPTF9EZWJ1Z19XYXJuaW5nICJTZXRfV2luZVdpbmRvd1Rp dGxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgKCM1MTE4KSIKLSB9Ci0gCi0tUE9MX0xvYWRWYXJfRGV2 aWNlICgpCi0tewotLQkjIEdldCBHUFUgZGV2aWNlIGlkIGFuZCB2ZW5kb3IgaWQKLS0JIyBVc2Fn ZTogUE9MX0xvYWRWYXJfRGV2aWNlIFstLW5vbi1pbnRlcmFjdGl2ZV0KLS0JIyBSZXN1bHRzIGFy ZSBzdG9yZWQgaW4gVmVuZG9ySUQgYW5kIERldmljZUlEIHZhcmlhYmxlcwotLQotLQlsb2NhbCBJ TlRFUkFDVElWRT0xCi0tCWlmIFsgIiQxIiA9ICItLW5vbi1pbnRlcmFjdGl2ZSIgXTsgdGhlbgot LQkJSU5URVJBQ1RJVkU9JycKLS0JCXNoaWZ0Ci0tCWZpCi0tCi0tCVsgIiRJTlRFUkFDVElWRSIg XSAmJiBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdo aWxlICRBUFBMSUNBVElPTl9USVRMRSBpcyBzY2FubmluZyB5b3VyIGhhcmR3YXJlJykiICIkVElU TEUiCi0tCVZHQV9ERVZJQ0VTPSIkKFBPTF9EZXRlY3RWaWRlb0NhcmRzKSIKLS0JIyBNb3JlIHRo YW4gb25lIGNhcmQgYXZhaWxhYmxlPwotLQlpZiBncmVwIC1xICd+JyA8PDwiJFZHQV9ERVZJQ0VT IjsgdGhlbgotLQkJaWYgWyAiJElOVEVSQUNUSVZFIiBdOyB0aGVuCi0tCQkJbG9jYWwgT0xEX0FQ UF9BTlNXRVI9IiRBUFBfQU5TV0VSIgotLQkJCVBPTF9TZXR1cFdpbmRvd19tZW51ICIkKGV2YWxf Z2V0dGV4dCAnU2VsZWN0IHRoZSBtYWluIHZpZGVvY2FyZCB0byByZXBvcnQ6JykiICIkVElUTEUi ICIkVkdBX0RFVklDRVMiICJ+IgotLQkJCVZHQV9ERVZJQ0VTPSIkQVBQX0FOU1dFUiIKLS0JCQlB UFBfQU5TV0VSPSIkT0xEX0FQUF9BTlNXRVIiCi0tCQllbHNlCi0tCQkJIyBDYW4ndCBhc2sgdXNl ciwgcGljayBmaXJzdAotLQkJCVZHQV9ERVZJQ0VTPSIke1ZHQV9ERVZJQ0VTJSV+Kn0iCi0tCQlm aQotLQlmaQotLQlleHBvcnQgVmVuZG9ySUQ9YGN1dCAtZCd8JyAtZjIgPDw8IiRWR0FfREVWSUNF UyJgCi0tCWV4cG9ydCBEZXZpY2VJRD1gY3V0IC1kJ3wnIC1mMyA8PDwiJFZHQV9ERVZJQ0VTImAK LS0JUE9MX0RlYnVnX01lc3NhZ2UgIlZlbmRvcklEIDogJFZlbmRvcklEIgotLQlQT0xfRGVidWdf TWVzc2FnZSAiRGV2aWNlSUQgOiAkRGV2aWNlSUQiCi0rUE9MX0xvYWRWYXJfRGV2aWNlKCkgewot KyAgIyBHZXQgR1BVIGRldmljZSBpZCBhbmQgdmVuZG9yIGlkCi0rICAjIFVzYWdlOiBQT0xfTG9h ZFZhcl9EZXZpY2UgWy0tbm9uLWludGVyYWN0aXZlXQotKyAgIyBSZXN1bHRzIGFyZSBzdG9yZWQg aW4gVmVuZG9ySUQgYW5kIERldmljZUlEIHZhcmlhYmxlcwotKwotKyAgbG9jYWwgSU5URVJBQ1RJ VkU9MQotKyAgaWYgWyAiJDEiID0gIi0tbm9uLWludGVyYWN0aXZlIiBdOyB0aGVuCi0rICAgIElO VEVSQUNUSVZFPScnCi0rICAgIHNoaWZ0Ci0rICBmaQotKwotKyAgWyAiJElOVEVSQUNUSVZFIiBd ICYmIFBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hp bGUgJEFQUExJQ0FUSU9OX1RJVExFIGlzIHNjYW5uaW5nIHlvdXIgaGFyZHdhcmUnKSIgIiRUSVRM RSIKLSsgIFZHQV9ERVZJQ0VTPSIkKFBPTF9EZXRlY3RWaWRlb0NhcmRzKSIKLSsgICMgTW9yZSB0 aGFuIG9uZSBjYXJkIGF2YWlsYWJsZT8KLSsgIGlmIGdyZXAgLXEgJ34nIDw8PCIkVkdBX0RFVklD RVMiOyB0aGVuCi0rICAgIGlmIFsgIiRJTlRFUkFDVElWRSIgXTsgdGhlbgotKyAgICAgIGxvY2Fs IE9MRF9BUFBfQU5TV0VSPSIkQVBQX0FOU1dFUiIKLSsgICAgICBQT0xfU2V0dXBXaW5kb3dfbWVu dSAiJChldmFsX2dldHRleHQgJ1NlbGVjdCB0aGUgbWFpbiB2aWRlb2NhcmQgdG8gcmVwb3J0Oicp IiAiJFRJVExFIiAiJFZHQV9ERVZJQ0VTIiAifiIKLSsgICAgICBWR0FfREVWSUNFUz0iJEFQUF9B TlNXRVIiCi0rICAgICAgQVBQX0FOU1dFUj0iJE9MRF9BUFBfQU5TV0VSIgotKyAgICBlbHNlCi0r ICAgICAgIyBDYW4ndCBhc2sgdXNlciwgcGljayBmaXJzdAotKyAgICAgIFZHQV9ERVZJQ0VTPSIk e1ZHQV9ERVZJQ0VTJSV+Kn0iCi0rICAgIGZpCi0rICBmaQotKyAgZXhwb3J0IFZlbmRvcklEPSQo Y3V0IC1kJ3wnIC1mMiA8PDwiJFZHQV9ERVZJQ0VTIikKLSsgIGV4cG9ydCBEZXZpY2VJRD0kKGN1 dCAtZCd8JyAtZjMgPDw8IiRWR0FfREVWSUNFUyIpCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiVmVu ZG9ySUQgOiAkVmVuZG9ySUQiCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiRGV2aWNlSUQgOiAkRGV2 aWNlSUQiCi0gfQotIAotLVBPTF9EZXRlY3RWaWRlb0NhcmRzICgpIHsKLS0JIyBEZXRlY3Qga25v d24gdmlkZW9jYXJkcwotLQlQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGluZ3MgR1BVIGluZm9ybWF0 aW9ucyIKLS0gICAgICAgIGNhc2UgIiRQT0xfT1MiIGluCi0tICAgICAgICAgICAgTGludXh8RnJl ZUJTRCkKLS0JCVsgLXggL3Vzci9zYmluL2xzcGNpIF0gJiYgTFNQQ0k9L3Vzci9zYmluL2xzcGNp IHx8IExTUENJPWxzcGNpCi0tCQkjIERldmljZSBOYW1lfFZlbmRvciBJRHxEZXZpY2UgSURcbi4u LgotLSAgICAgICAgICAgICAgICAjIFswMzAwXSA9IFZHQSBjb21wYXRpYmxlIGNvbnRyb2xsZXIs IFswMzAyXSA9IDNEIGNvbnRyb2xsZXIKLS0JCVZHQV9ERVZJQ0VTPWAkTFNQQ0kgLW5uIHwgcGVy bCAtbmUgJ2lmICgvXFswMzBbMDJdXF0vKSB7IHMvLipcXTogKC4qKSBcWyhbMC05YS1mXXs0fSk6 KFswLTlhLWZdezR9KVxdLiovXDF8XDJ8XDMvOyBwcmludCB9J2AKLS0gICAgICAgICAgICAgICAg OzsKLS0gICAgICAgICAgICBNYWMpCi0tCQkjIERldmljZSBOYW1lfFZlbmRvciBJRHxEZXZpY2Ug SURcbi4uLgotLQkJVkdBX0RFVklDRVM9YHN5c3RlbV9wcm9maWxlciBTUERpc3BsYXlzRGF0YVR5 cGUgfCBwZXJsIC1uZSAncy9eXHMrLy87IGlmKC9DaGlwc2V0IE1vZGVsOi8pIHsgY2hvbXA7IHMv XlteOl0qOiAvLzsgcHJpbnQgIiRffCIgfSBlbHNpZigvVmVuZG9yOi8pIHsgY2hvbXA7IHMvLipc KDB4KC4qKVwpL1wxLzsgcHJpbnQgIiQxfCIgfSBlbHNpZiAoL0RldmljZSBJRDovKSB7IHMvXlte Ol0qOiAweC8vOyBwcmludCB9J2AKLS0gICAgICAgICAgICAgICAgOzsKLS0gICAgICAgICAgICAq KQotLSAgICAgICAgICAgICAgICBQT0xfRGVidWdfRmF0YWwgIlVuc3VwcG9zZWQgb3BlcmF0aW5n IHN5c3RlbTogJFBPTF9PUyIKLS0gICAgICAgIGVzYWMKLS0JIyBNb3JlIHRoYW4gb25lIGNhcmQg YXZhaWxhYmxlPwotLQlpZiBbICQod2MgLWwgPDw8IiRWR0FfREVWSUNFUyIpIC1ndCAxIF07IHRo ZW4KLS0JCSMgVHJ5IHRvIHB1dCB3aGF0J3MgcHJvYmFibHkgdGhlIG1haW4gY2FyZCBmaXJzdAot LQkJVkdBX0RFVklDRVM9YGdyZXAgLWlFICdudmlkaWF8YXRpfGFtZCcgPDw8IiRWR0FfREVWSUNF UyI7IGdyZXAgLWlFdiAnbnZpZGlhfGF0aXxhbWQnIDw8PCIkVkdBX0RFVklDRVMiYAotLQlmaQot LQkjIERldmljZSBOYW1lfFZlbmRvciBJRHxEZXZpY2UgSUR+Li4uCi0tCWVjaG8gLW4gIiRWR0Ff REVWSUNFUyJ8dHIgIlxuIiAifiIKLStQT0xfRGV0ZWN0VmlkZW9DYXJkcygpIHsKLSsgICMgRGV0 ZWN0IGtub3duIHZpZGVvY2FyZHMKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJHZXR0aW5ncyBHUFUg aW5mb3JtYXRpb25zIgotKyAgY2FzZSAiJFBPTF9PUyIgaW4KLSsgIExpbnV4IHwgRnJlZUJTRCkK LSsgICAgWyAteCAvdXNyL3NiaW4vbHNwY2kgXSAmJiBMU1BDST0vdXNyL3NiaW4vbHNwY2kgfHwg TFNQQ0k9bHNwY2kKLSsgICAgIyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8RGV2aWNlIElEXG4uLi4K LSsgICAgIyBbMDMwMF0gPSBWR0EgY29tcGF0aWJsZSBjb250cm9sbGVyLCBbMDMwMl0gPSAzRCBj b250cm9sbGVyCi0rICAgIFZHQV9ERVZJQ0VTPSQoJExTUENJIC1ubiB8IHBlcmwgLW5lICdpZiAo L1xbMDMwWzAyXVxdLykgeyBzLy4qXF06ICguKikgXFsoWzAtOWEtZl17NH0pOihbMC05YS1mXXs0 fSlcXS4qL1wxfFwyfFwzLzsgcHJpbnQgfScpCi0rICAgIDs7Ci0rICBNYWMpCi0rICAgICMgRGV2 aWNlIE5hbWV8VmVuZG9yIElEfERldmljZSBJRFxuLi4uCi0rICAgIFZHQV9ERVZJQ0VTPSQoc3lz dGVtX3Byb2ZpbGVyIFNQRGlzcGxheXNEYXRhVHlwZSB8IHBlcmwgLW5lICdzL15ccysvLzsgaWYo L0NoaXBzZXQgTW9kZWw6LykgeyBjaG9tcDsgcy9eW146XSo6IC8vOyBwcmludCAiJF98IiB9IGVs c2lmKC9WZW5kb3I6LykgeyBjaG9tcDsgcy8uKlwoMHgoLiopXCkvXDEvOyBwcmludCAiJDF8IiB9 IGVsc2lmICgvRGV2aWNlIElEOi8pIHsgcy9eW146XSo6IDB4Ly87IHByaW50IH0nKQotKyAgICA7 OwotKyAgKikKLSsgICAgUE9MX0RlYnVnX0ZhdGFsICJVbnN1cHBvc2VkIG9wZXJhdGluZyBzeXN0 ZW06ICRQT0xfT1MiCi0rICAgIDs7Ci0rICBlc2FjCi0rICAjIE1vcmUgdGhhbiBvbmUgY2FyZCBh dmFpbGFibGU/Ci0rICBpZiBbICQod2MgLWwgPDw8IiRWR0FfREVWSUNFUyIpIC1ndCAxIF07IHRo ZW4KLSsgICAgIyBUcnkgdG8gcHV0IHdoYXQncyBwcm9iYWJseSB0aGUgbWFpbiBjYXJkIGZpcnN0 Ci0rICAgIFZHQV9ERVZJQ0VTPSQoCi0rICAgICAgZ3JlcCAtaUUgJ252aWRpYXxhdGl8YW1kJyA8 PDwiJFZHQV9ERVZJQ0VTIgotKyAgICAgIGdyZXAgLWlFdiAnbnZpZGlhfGF0aXxhbWQnIDw8PCIk VkdBX0RFVklDRVMiCi0rICAgICkKLSsgIGZpCi0rICAjIERldmljZSBOYW1lfFZlbmRvciBJRHxE ZXZpY2UgSUR+Li4uCi0rICBlY2hvIC1uICIkVkdBX0RFVklDRVMiIHwgdHIgIlxuIiAifiIKLSB9 Ci0gCi0tUE9MX0xvYWRWYXJfU2NyZWVuUmVzb2x1dGlvbiAoKQotLXsKLS0JaWYgWyAiJFBPTF9P UyIgPSAiTGludXgiIF0gfHwgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXTsgdGhlbgotLQkJbG9j YWwgUkVTT0xVVElPTj0iJCh4ZHB5aW5mbyB8IGdyZXAgZGltZW5zaW9ucyB8IGF3ayAne3ByaW50 ICQyfScpIgotLQkJZXhwb3J0IFNjcmVlbldpZHRoPSIkKGVjaG8gJFJFU09MVVRJT04gfCBjdXQg LWR4IC1mMSkiCi0tCQlleHBvcnQgU2NyZWVuSGVpZ2h0PSIkKGVjaG8gJFJFU09MVVRJT04gfCBj dXQgLWR4IC1mMikiCi0tCWZpCi0tCWlmIFsgIiRQT0xfT1MiID0gIk1hYyIgXTsgdGhlbgotLQkJ ZXhwb3J0IFNjcmVlbldpZHRoPSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJvZmlsZXIgU1BEaXNwbGF5 c0RhdGFUeXBlIHwgZ3JlcCBSZXNvbHV0aW9ufCBhd2sgJ3twcmludCAkMn0nKSIKLS0JCWV4cG9y dCBTY3JlZW5IZWlnaHQ9IiQoL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlciBTUERpc3BsYXlzRGF0 YVR5cGUgfCBncmVwIFJlc29sdXRpb258IGF3ayAne3ByaW50ICQ0fScpIgotLQlmaQotLQlQT0xf RGVidWdfTWVzc2FnZSAiU2NyZWVuIHdpZHRoOiAkU2NyZWVuV2lkdGgiCi0tCVBPTF9EZWJ1Z19N ZXNzYWdlICJTY3JlZW4gaGVpZ2h0OiAkU2NyZWVuSGVpZ2h0IgotK1BPTF9Mb2FkVmFyX1NjcmVl blJlc29sdXRpb24oKSB7Ci0rICBpZiBbICIkUE9MX09TIiA9ICJMaW51eCIgXSB8fCBbICIkUE9M X09TIiA9ICJGcmVlQlNEIiBdOyB0aGVuCi0rICAgIGxvY2FsIFJFU09MVVRJT049IiQoeGRweWlu Zm8gfCBncmVwIGRpbWVuc2lvbnMgfCBhd2sgJ3twcmludCAkMn0nKSIKLSsgICAgZXhwb3J0IFNj cmVlbldpZHRoPSIkKGVjaG8gJFJFU09MVVRJT04gfCBjdXQgLWR4IC1mMSkiCi0rICAgIGV4cG9y dCBTY3JlZW5IZWlnaHQ9IiQoZWNobyAkUkVTT0xVVElPTiB8IGN1dCAtZHggLWYyKSIKLSsgIGZp Ci0rICBpZiBbICIkUE9MX09TIiA9ICJNYWMiIF07IHRoZW4KLSsgICAgZXhwb3J0IFNjcmVlbldp ZHRoPSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJvZmlsZXIgU1BEaXNwbGF5c0RhdGFUeXBlIHwgZ3Jl cCBSZXNvbHV0aW9uIHwgYXdrICd7cHJpbnQgJDJ9JykiCi0rICAgIGV4cG9ydCBTY3JlZW5IZWln aHQ9IiQoL3Vzci9zYmluL3N5c3RlbV9wcm9maWxlciBTUERpc3BsYXlzRGF0YVR5cGUgfCBncmVw IFJlc29sdXRpb24gfCBhd2sgJ3twcmludCAkNH0nKSIKLSsgIGZpCi0rICBQT0xfRGVidWdfTWVz c2FnZSAiU2NyZWVuIHdpZHRoOiAkU2NyZWVuV2lkdGgiCi0rICBQT0xfRGVidWdfTWVzc2FnZSAi U2NyZWVuIGhlaWdodDogJFNjcmVlbkhlaWdodCIKLSB9Ci0gCi0tUE9MX1dpbmVfU2V0VmlkZW9E cml2ZXIoKQotLXsKLS0JIyBTZXQgd2luZSB2aWRlbyBkcml2ZXIKLS0JIyBVc2FnZSBQT0xfV2lu ZV9TZXRWaWRlb0RyaXZlcgotLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0IHdpbmUgdmlkZW8gZHJp dmVyIgotLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVG SVggbm90IHNldCIKLS0JUE9MX0xvYWRWYXJfRGV2aWNlCi0tCURSVklEPSJ2Z2EuZGxsIgotLQlb ICIkVmVuZG9ySUQiID0gIjEwZGUiIF0gJiYgRFJWSUQ9Im52NF9kaXNwLmRsbCIKLS0JWyAiJFZl bmRvcklEIiA9ICIxMDAyIiBdICYmIERSVklEPSJhdGkyZHZhZy5kbGwiCi0tCVsgIiRWZW5kb3JJ RCIgPSAiODA4NiIgXSAmJiBEUlZJRD0iaWc0aWNkMzIuZGxsIgotLQlQT0xfRGVidWdfTWVzc2Fn ZSAiRGV0ZWN0ZWQgdmlkZW8gZHJpdmVyOiAkRFJWSUQiCi0tCi0tCVBPTF9XaW5lX1VwZGF0ZVJl Z2lzdHJ5IFZHQV9JRF9maXggPDwtIF9FT0ZJTklfCi0rUE9MX1dpbmVfU2V0VmlkZW9Ecml2ZXIo KSB7Ci0rICAjIFNldCB3aW5lIHZpZGVvIGRyaXZlcgotKyAgIyBVc2FnZSBQT0xfV2luZV9TZXRW aWRlb0RyaXZlcgotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldCB3aW5lIHZpZGVvIGRyaXZlciIK LSsgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBu b3Qgc2V0IgotKyAgUE9MX0xvYWRWYXJfRGV2aWNlCi0rICBEUlZJRD0idmdhLmRsbCIKLSsgIFsg IiRWZW5kb3JJRCIgPSAiMTBkZSIgXSAmJiBEUlZJRD0ibnY0X2Rpc3AuZGxsIgotKyAgWyAiJFZl bmRvcklEIiA9ICIxMDAyIiBdICYmIERSVklEPSJhdGkyZHZhZy5kbGwiCi0rICBbICIkVmVuZG9y SUQiID0gIjgwODYiIF0gJiYgRFJWSUQ9ImlnNGljZDMyLmRsbCIKLSsgIFBPTF9EZWJ1Z19NZXNz YWdlICJEZXRlY3RlZCB2aWRlbyBkcml2ZXI6ICREUlZJRCIKLSsKLSsgIFBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5IFZHQV9JRF9maXggPDwtX0VPRklOSV8KLSAJW0hLRVlfQ1VSUkVOVF9VU0VSXFxT b2Z0d2FyZVxcV2luZVxcRGlyZWN0M0RdCi0gCSJWaWRlb1BDSVZlbmRvcklEIj1kd29yZDowMDAw JFZlbmRvcklECi0gCSJWaWRlb1BDSURldmljZUlEIj1kd29yZDowMDAwJERldmljZUlECi1AQCAt NDY3LDgwMCArNDUxLDc3NyBAQCBQT0xfV2luZV9TZXRWaWRlb0RyaXZlcigpCi0gCV9FT0ZJTklf Ci0gfQotIAotLVBPTF9XaW5lX0RldGVjdENhcmQoKQotLXsKLS0JIyBTZXQgd2luZSB2aWRlbyBk cml2ZXIKLS0JIyBVc2FnZSBQT0xfV2luZV9EZXRlY3RDYXJkCi0tCVBPTF9EZWJ1Z19NZXNzYWdl ICJEZXRlY3RpbmcgdmlkZW8gY2FyZCIKLS0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCi0tCVBPTF9Mb2FkVmFyX0RldmljZQotLQlE UlZJRD0iT1RIRVIiCi0tCVsgIiRWZW5kb3JJRCIgPSAiMTBkZSIgXSAmJiBEUlZJRD0iTlZJRElB IgotLQlbICIkVmVuZG9ySUQiID0gIjEwMDIiIF0gJiYgRFJWSUQ9IkFUSSIKLS0JWyAiJFZlbmRv cklEIiA9ICI4MDg2IiBdICYmIERSVklEPSJJTlRFTCIKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIkRl dGVjdGVkIHZpZGVvIGNhcmQ6ICREUlZJRCIKLS0KLS0JZWNobyAkRFJWSUQKLStQT0xfV2luZV9E ZXRlY3RDYXJkKCkgewotKyAgIyBTZXQgd2luZSB2aWRlbyBkcml2ZXIKLSsgICMgVXNhZ2UgUE9M X1dpbmVfRGV0ZWN0Q2FyZAotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkRldGVjdGluZyB2aWRlbyBj YXJkIgotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJF RklYIG5vdCBzZXQiCi0rICBQT0xfTG9hZFZhcl9EZXZpY2UKLSsgIERSVklEPSJPVEhFUiIKLSsg IFsgIiRWZW5kb3JJRCIgPSAiMTBkZSIgXSAmJiBEUlZJRD0iTlZJRElBIgotKyAgWyAiJFZlbmRv cklEIiA9ICIxMDAyIiBdICYmIERSVklEPSJBVEkiCi0rICBbICIkVmVuZG9ySUQiID0gIjgwODYi IF0gJiYgRFJWSUQ9IklOVEVMIgotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkRldGVjdGVkIHZpZGVv IGNhcmQ6ICREUlZJRCIKLSsKLSsgIGVjaG8gJERSVklECi0gfQotIAotLQotLQotLVBPTF9BdXRv V2luZSAoKQotLXsKLS0JIyBEZXRlY3QgaWYgdGhlIGZpbGUgaXMgYSAuZXhlIG9yIGEgLm1zaSBm aWxlIGFuZCBydW4gaXQgd2l0aCBQT0xfV2luZQotLQkjIFNhbWUgdXNhZ2UgdGhhbiAid2luZSIK LS0JU0VUVVBfUEFUSD0iJEAiCi0tCSMgcmVtb3ZlIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGxhc3Qg ZG90Ci0tCWV4dGVuc2lvbj0iJHtTRVRVUF9QQVRIIyMqLn0iCi0tCWlmIFsgIiRleHRlbnNpb24i ID0gIm1zaSIgXQotLQl0aGVuCi0tCQlQT0xfV2luZSBtc2lleGVjIC9pICIkU0VUVVBfUEFUSCIK LS0JZWxzZQotLQkJIyBGSVhNRSAvdW5peD8KLS0JCVBPTF9XaW5lICIkU0VUVVBfUEFUSCIKLS0J ZmkKLStQT0xfQXV0b1dpbmUoKSB7Ci0rICAjIERldGVjdCBpZiB0aGUgZmlsZSBpcyBhIC5leGUg b3IgYSAubXNpIGZpbGUgYW5kIHJ1biBpdCB3aXRoIFBPTF9XaW5lCi0rICAjIFNhbWUgdXNhZ2Ug dGhhbiAid2luZSIKLSsgIFNFVFVQX1BBVEg9IiRAIgotKyAgIyByZW1vdmUgZXZlcnl0aGluZyB1 cCB0byB0aGUgbGFzdCBkb3QKLSsgIGV4dGVuc2lvbj0iJHtTRVRVUF9QQVRIIyMqLn0iCi0rICBp ZiBbICIkZXh0ZW5zaW9uIiA9ICJtc2kiIF07IHRoZW4KLSsgICAgUE9MX1dpbmUgbXNpZXhlYyAv aSAiJFNFVFVQX1BBVEgiCi0rICBlbHNlCi0rICAgICMgRklYTUUgL3VuaXg/Ci0rICAgIFBPTF9X aW5lICIkU0VUVVBfUEFUSCIKLSsgIGZpCi0gfQotIAotLVBPTF9XaW5lICgpCi0tewotLQkjIFJ1 biB0aGUgZ29vZCB3aW5ldmVyc2lvbiBhbmQgc3RvcmUgdGhlIHJlc3VsdCB0byBhIGxvZ2ZpbGUK LS0JIyBTYW1lIHVzYWdlIHRoYW4gIndpbmUiCi0tCW1rZGlyIC1wICIkV0lORVBSRUZJWCIKLS0J dG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKLS0JbG9jYWwgTm9FcnJvcnMKLS0J aWYgWyAiJDEiID0gIi0taWdub3JlLWVycm9ycyIgXTsgdGhlbgotLQkJTm9FcnJvcnM9IlRydWUi Ci0tCQlzaGlmdAotLQlmaQotLQotLQlpZiBbICEgIiQoUE9MX0NvbmZpZ19SZWFkIE5PX0ZTQ0hF Q0spIiA9ICJUUlVFIiBdOyB0aGVuCi0tCQlpZiBbICIkMSIgPSAic3RhcnQiIF07IHRoZW4KLS0J CQlpZiBbICIkMiIgPSAiL3VuaXgiIF07IHRoZW4KLS0JCQkJUE9MX1N5c3RlbV9DaGVja0ZTICIk MyIKLS0JCQllbHNlCi0tCQkJCVBPTF9TeXN0ZW1fQ2hlY2tGUyAiJDIiCi0tCQkJZmkKLS0JCWVs c2UKLS0JCQlQT0xfU3lzdGVtX0NoZWNrRlMgIiQxIgotLQkJZmkKLS0JZWxzZQotLQkJUE9MX0Rl YnVnX01lc3NhZ2UgIioqIEZpbGVzeXN0ZW0gY2hlY2tzIGRpc2FibGVkICoqIgotLQlmaQotLQot LQlQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotLQlQT0xfRGVidWdfTWVzc2FnZSAiUnVubmlu ZyB3aW5lLSRQT0xfV0lORVZFUlNJT04gIiRAIiAoV29ya2luZyBkaXJlY3RvcnkgOiAkUFdEKSIK LS0JUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJSdW5uaW5nIHdpbmUtJFBPTF9XSU5FVkVSU0lPTiAi JEAiIChXb3JraW5nIGRpcmVjdG9yeSA6ICRQV0QpIgotLQotLSAgICAgICAgIyBFaXRoZXIgdGhh dCBvciBtb25pdG9yICJlcnI6cHJvY2VzczpjcmVhdGVfcHJvY2VzcyBzdGFydGluZyA2NC1iaXQg cHJvY2VzcyBMInh4eCIgbm90IHN1cHBvcnRlZCBpbiAzMi1iaXQgd2luZXByZWZpeFxud2luZTog QmFkIEVYRSBmb3JtYXQgZm9yIHh4eC4iIGluIGxvZ3MKLS0gICAgICAgIGlmIFsgIiRQT0xfQVJD SCIgPSAieDg2IiAtYSAtZSAiJDEiIF07IHRoZW4KLS0gICAgICAgICAgICBsb2NhbCBFWEVGSUxF PSIkMSIKLS0gICAgICAgICAgICBpZiBQT0xfU3lzdGVtX2lzNjRiaXQgIiRFWEVGSUxFIjsgdGhl bgotLSAgICAgICAgICAgICAgICBOT0JVR1JFUE9SVD0iVFJVRSIgIyB1c2VyIG1pc3Rha2UKLS0g ICAgICAgICAgICAgICAgUE9MX0RlYnVnX0ZhdGFsICIkKGV2YWxfZ2V0dGV4dCAnU3RhcnRpbmcg NjQtYml0IHByb2Nlc3MgJEVYRUZJTEUgaXMgbm90IHN1cHBvcnRlZCBpbiAzMi1iaXQgdmlydHVh bCBkcml2ZXMnKSIKLS0gICAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0KLS0gICAgICAgIGlm IFsgISAiJFdJTkVNRU5VQlVJTERFUl9BTEVSVCIgXTsgdGhlbgotLQkJUE9MX0RlYnVnX01lc3Nh Z2UgIk5vdGljZTogUGxheU9uTGludXggZGVsaWJlcmF0ZWx5IGRpc2FibGVzIHdpbmVtZW51YnVp bGRlci4gU2VlIGh0dHA6Ly93d3cucGxheW9ubGludXguY29tL2ZyL3BhZ2UtMjYtV2luZW1lbnVi dWlsZGVyLmh0bWwiCi0tCQlXSU5FTUVOVUJVSUxERVJfQUxFUlQ9IkRvbmUiCi0tCWZpCi0tCWlm IFsgIiQxIiA9ICJyZWdlZGl0IiAtYSAhICIkMiIgPSAiIiBdOyB0aGVuCi0tCQlpZiBbIC1lICIk MiIgXTsgdGhlbgotLQkJCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiQ29udGVudCBvZiAkMiIKLS0J CQkoZWNobyAnLS0tLS0tLS0tLS0nCi0tCQkJIGNhdCAiJDIiCi0tCQkJIGVjaG8gJy0tLS0tLS0t LS0tJykgPj4gIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKLS0JCWVsc2UKLS0JCQlQT0xf RGVidWdfTG9nVG9QcmVmaXggInJlZ2VkaXQgcGFyYW1ldGVyICckMicgaXMgbm90IGEgZmlsZSwg bm90IGR1bXBlZCB0byBsb2ciCi0tCQlmaQotLQllbGlmIFsgIiQxIiA9ICJyZWdlZGl0IiBdOyB0 aGVuCi0tCQlQT0xfRGVidWdfTG9nVG9QcmVmaXggIlVzZXIgbW9kaWZpZWQgc29tZXRoaW5nIGlu IHRoZSByZWdpc3RyeSBtYW51YWxseSIKLS0JZmkKLS0KLS0KLS0JaWYgWyAiJFBPTF9PUyIgPSAi TGludXgiIF0gfHwgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOwotLQl0aGVuCi0tCQlpZiBbICIkTE9H RklMRSIgPSAiL2Rldi9udWxsIiBdOyB0aGVuCi0tCQkJJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZp Z19SZWFkIEJFRk9SRV9XSU5FKSB3aW5lICIkQCIgIDI+ID4oZ3JlcCAtdiBtZW51YnVpbGRlciAt LWxpbmUtYnVmZmVyZWQgfCB0ZWUgLWEgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIgPiYy KSA+ID4odGVlIC1hICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciKQotLQkJCWVycm9ycz0k PwotLQkJZWxzZQotLQkJCSRCRUZPUkVfV0lORSAkKFBPTF9Db25maWdfUmVhZCBCRUZPUkVfV0lO RSkgd2luZSAiJEAiIDI+ID4oZ3JlcCAtdiBtZW51YnVpbGRlciAtLWxpbmUtYnVmZmVyZWQgfCB0 ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIiA+JjIpID4gPih0 ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIikKLS0JCQllcnJv cnM9JD8KLS0JCWZpCi0tCWVsc2UKLS0JCSMgRklYTUUKLS0JCSRCRUZPUkVfV0lORSAkKFBPTF9D b25maWdfUmVhZCBCRUZPUkVfV0lORSkgd2luZSAiJEAiICAyPiAiJFdJTkVQUkVGSVgvcGxheW9u bGludXgubG9nIiA+ICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCi0tCQllcnJvcnM9JD8K LS0JZmkKLS0KLS0JaWYgWyAiJGVycm9ycyIgIT0gMCAtYSAiJE5vRXJyb3JzIiAhPSAiVHJ1ZSIg LWEgIiRQT0xfSWdub3JlV2luZUVycm9ycyIgIT0gIlRydWUiIF07IHRoZW4KLS0JCVBPTF9EZWJ1 Z19FcnJvciAiJChldmFsX2dldHRleHQgJ1dpbmUgc2VlbXMgdG8gaGF2ZSBjcmFzaGVkXG5cbklm IHlvdXIgcHJvZ3JhbSBpcyBydW5uaW5nLCBqdXN0IGlnbm9yZSB0aGlzIG1lc3NhZ2UnKSIKLS0J ZmkKLS0JUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgcmV0dXJuOiAkZXJyb3JzIgotLQlyZXR1cm4g JGVycm9ycwotK1BPTF9XaW5lKCkgewotKyAgIyBSdW4gdGhlIGdvb2Qgd2luZXZlcnNpb24gYW5k IHN0b3JlIHRoZSByZXN1bHQgdG8gYSBsb2dmaWxlCi0rICAjIFNhbWUgdXNhZ2UgdGhhbiAid2lu ZSIKLSsgIG1rZGlyIC1wICIkV0lORVBSRUZJWCIKLSsgIHRvdWNoICIkV0lORVBSRUZJWC9wbGF5 b25saW51eC5sb2ciCi0rICBsb2NhbCBOb0Vycm9ycwotKyAgaWYgWyAiJDEiID0gIi0taWdub3Jl LWVycm9ycyIgXTsgdGhlbgotKyAgICBOb0Vycm9ycz0iVHJ1ZSIKLSsgICAgc2hpZnQKLSsgIGZp Ci0rCi0rICBpZiBbICEgIiQoUE9MX0NvbmZpZ19SZWFkIE5PX0ZTQ0hFQ0spIiA9ICJUUlVFIiBd OyB0aGVuCi0rICAgIGlmIFsgIiQxIiA9ICJzdGFydCIgXTsgdGhlbgotKyAgICAgIGlmIFsgIiQy IiA9ICIvdW5peCIgXTsgdGhlbgotKyAgICAgICAgUE9MX1N5c3RlbV9DaGVja0ZTICIkMyIKLSsg ICAgICBlbHNlCi0rICAgICAgICBQT0xfU3lzdGVtX0NoZWNrRlMgIiQyIgotKyAgICAgIGZpCi0r ICAgIGVsc2UKLSsgICAgICBQT0xfU3lzdGVtX0NoZWNrRlMgIiQxIgotKyAgICBmaQotKyAgZWxz ZQotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiKiogRmlsZXN5c3RlbSBjaGVja3MgZGlzYWJsZWQg KioiCi0rICBmaQotKwotKyAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKLSsgIFBPTF9EZWJ1 Z19NZXNzYWdlICJSdW5uaW5nIHdpbmUtJFBPTF9XSU5FVkVSU0lPTiAiJEAiIChXb3JraW5nIGRp cmVjdG9yeSA6ICRQV0QpIgotKyAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJSdW5uaW5nIHdpbmUt JFBPTF9XSU5FVkVSU0lPTiAiJEAiIChXb3JraW5nIGRpcmVjdG9yeSA6ICRQV0QpIgotKwotKyAg IyBFaXRoZXIgdGhhdCBvciBtb25pdG9yICJlcnI6cHJvY2VzczpjcmVhdGVfcHJvY2VzcyBzdGFy dGluZyA2NC1iaXQgcHJvY2VzcyBMInh4eCIgbm90IHN1cHBvcnRlZCBpbiAzMi1iaXQgd2luZXBy ZWZpeFxud2luZTogQmFkIEVYRSBmb3JtYXQgZm9yIHh4eC4iIGluIGxvZ3MKLSsgIGlmIFsgIiRQ T0xfQVJDSCIgPSAieDg2IiAtYSAtZSAiJDEiIF07IHRoZW4KLSsgICAgbG9jYWwgRVhFRklMRT0i JDEiCi0rICAgIGlmIFBPTF9TeXN0ZW1faXM2NGJpdCAiJEVYRUZJTEUiOyB0aGVuCi0rICAgICAg Tk9CVUdSRVBPUlQ9IlRSVUUiICMgdXNlciBtaXN0YWtlCi0rICAgICAgUE9MX0RlYnVnX0ZhdGFs ICIkKGV2YWxfZ2V0dGV4dCAnU3RhcnRpbmcgNjQtYml0IHByb2Nlc3MgJEVYRUZJTEUgaXMgbm90 IHN1cHBvcnRlZCBpbiAzMi1iaXQgdmlydHVhbCBkcml2ZXMnKSIKLSsgICAgZmkKLSsgIGZpCi0r Ci0rICBpZiBbICEgIiRXSU5FTUVOVUJVSUxERVJfQUxFUlQiIF07IHRoZW4KLSsgICAgUE9MX0Rl YnVnX01lc3NhZ2UgIk5vdGljZTogUGxheU9uTGludXggZGVsaWJlcmF0ZWx5IGRpc2FibGVzIHdp bmVtZW51YnVpbGRlci4gU2VlIGh0dHA6Ly93d3cucGxheW9ubGludXguY29tL2ZyL3BhZ2UtMjYt V2luZW1lbnVidWlsZGVyLmh0bWwiCi0rICAgIFdJTkVNRU5VQlVJTERFUl9BTEVSVD0iRG9uZSIK LSsgIGZpCi0rICBpZiBbICIkMSIgPSAicmVnZWRpdCIgLWEgISAiJDIiID0gIiIgXTsgdGhlbgot KyAgICBpZiBbIC1lICIkMiIgXTsgdGhlbgotKyAgICAgIFBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAi Q29udGVudCBvZiAkMiIKLSsgICAgICAoCi0rICAgICAgICBlY2hvICctLS0tLS0tLS0tLScKLSsg ICAgICAgIGNhdCAiJDIiCi0rICAgICAgICBlY2hvICctLS0tLS0tLS0tLScKLSsgICAgICApID4+ IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIKLSsgICAgZWxzZQotKyAgICAgIFBPTF9EZWJ1 Z19Mb2dUb1ByZWZpeCAicmVnZWRpdCBwYXJhbWV0ZXIgJyQyJyBpcyBub3QgYSBmaWxlLCBub3Qg ZHVtcGVkIHRvIGxvZyIKLSsgICAgZmkKLSsgIGVsaWYgWyAiJDEiID0gInJlZ2VkaXQiIF07IHRo ZW4KLSsgICAgUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJVc2VyIG1vZGlmaWVkIHNvbWV0aGluZyBp biB0aGUgcmVnaXN0cnkgbWFudWFsbHkiCi0rICBmaQotKwotKyAgW1sgJE9TWF9WRVJTSU9OIC1n ZSAxOSBdXSAmJiBXSU5FQ01EPSJ3aW5lMzJvbjY0IiB8fCBXSU5FQ01EPSJ3aW5lIgotKyAgW1sg JE9TWF9WRVJTSU9OIC1nZSAxOSBdXSAmJiBbWyAtZSAiJDEiIF1dICYmIHhhdHRyIC1kIGNvbS5h cHBsZS5xdWFyYW50aW5lICIkMSIKLSsgIGlmIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdIHx8IFsg IiRQT0xfT1MiID0gIk1hYyIgXTsgdGhlbgotKyAgICBpZiBbICIkTE9HRklMRSIgPSAiL2Rldi9u dWxsIiBdOyB0aGVuCi0rICAgICAgJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZpZ19SZWFkIEJFRk9S RV9XSU5FKSAkV0lORUNNRCAiJEAiIDI+ID4oZ3JlcCAtdiBtZW51YnVpbGRlciAtLWxpbmUtYnVm ZmVyZWQgfCB0ZWUgLWEgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIgPiYyKSA+ID4odGVl IC1hICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciKQotKyAgICAgIGVycm9ycz0kPwotKyAg ICBlbHNlCi0rICAgICAgJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZpZ19SZWFkIEJFRk9SRV9XSU5F KSAkV0lORUNNRCAiJEAiIDI+ID4oZ3JlcCAtdiBtZW51YnVpbGRlciAtLWxpbmUtYnVmZmVyZWQg fCB0ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIiA+JjIpID4g Pih0ZWUgLWEgIiRMT0dGSUxFIiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIikKLSsgICAg ICBlcnJvcnM9JD8KLSsgICAgZmkKLSsgIGVsc2UKLSsgICAgIyBGSVhNRQotKyAgICAkQkVGT1JF X1dJTkUgJChQT0xfQ29uZmlnX1JlYWQgQkVGT1JFX1dJTkUpICRXSU5FQ01EICIkQCIgMj4iJFdJ TkVQUkVGSVgvcGxheW9ubGludXgubG9nIiA+IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIK LSsgICAgZXJyb3JzPSQ/Ci0rICBmaQotKwotKyAgaWYgWyAiJGVycm9ycyIgIT0gMCAtYSAiJE5v RXJyb3JzIiAhPSAiVHJ1ZSIgLWEgIiRQT0xfSWdub3JlV2luZUVycm9ycyIgIT0gIlRydWUiIF07 IHRoZW4KLSsgICAgUE9MX0RlYnVnX0Vycm9yICIkKGV2YWxfZ2V0dGV4dCAnV2luZSBzZWVtcyB0 byBoYXZlIGNyYXNoZWRcblxuSWYgeW91ciBwcm9ncmFtIGlzIHJ1bm5pbmcsIGp1c3QgaWdub3Jl IHRoaXMgbWVzc2FnZScpIgotKyAgZmkKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIHJldHVy bjogJGVycm9ycyIKLSsgIHJldHVybiAkZXJyb3JzCi0gfQotIAotLVBPTF9XaW5lX1NlbGVjdFBy ZWZpeCgpCi0tewotLQkjIFNlbGVjdCBhIHdpbmVwcmVmaXggYW5kIHJlbW92ZSB1bmV4cGVjdGVk IGNoYXJzCi0tCSMgVXNhZ2U6IFBPTF9XaW5lX1NlbGVjdFByZWZpeCBbcHJlZml4bmFtZV0KLS0J UFJFRk5BTUU9YHByaW50ZiAiJDEifCB0ciAtYyBbW2EtekEtWjAtOV1cLl0gJ18nYAotLQlQT0xf RGVidWdfTWVzc2FnZSAiU2VsZWN0aW5nIHByZWZpeDogJFBSRUZOQU1FIgotLSAgICAgICAgIyBF bXB0eSBuYW1lIGlzIGRhbmdlcm91cwotLSAgICAgICAgWyAteiAiJFBSRUZOQU1FIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiQmFkIG9yIGVtcHR5IHZpcnR1YWwgZHJpdmUgbmFtZSBzZWxlY3RlZCIK LS0JZXhwb3J0IFdJTkVQUkVGSVg9IiRQT0xfVVNFUl9ST09UL3dpbmVwcmVmaXgvJFBSRUZOQU1F IgotLQlleHBvcnQgRE9TUFJFRklYPSIkV0lORVBSRUZJWCIKLS0JaWYgWyAtZSAiJFdJTkVQUkVG SVgvcGxheW9ubGludXguY2ZnIiBdOyB0aGVuCi0tCQlleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIk KFBPTF9Db25maWdfUHJlZml4UmVhZCBWRVJTSU9OKSIKLS0JCVBPTF9TeXN0ZW1fU2V0QXJjaCAi JChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgQVJDSCkiICJkZXRlY3RlZCIKLS0JZWxzZQotLQkJdG91 Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgMj4gL2Rldi9udWxsCi0tCWZpCi0tCi0t CSMjIEluIGZhY3QgaXQncyBhIGJhZCBpZGVhCi0tCSNpZiBbICIkKFBPTF9Db25maWdfUHJlZml4 UmVhZCBBUkNIKSIgPSAieDg2IiBdOyB0aGVuICMjIENvbW1lIGNhLCBwYXMgZGUgY29uZmxpdHMK LS0JIwlleHBvcnQgV0lORUFSQ0g9d2luMzIKLS0JI2ZpCi0rUE9MX1dpbmVfU2VsZWN0UHJlZml4 KCkgewotKyAgIyBTZWxlY3QgYSB3aW5lcHJlZml4IGFuZCByZW1vdmUgdW5leHBlY3RlZCBjaGFy cwotKyAgIyBVc2FnZTogUE9MX1dpbmVfU2VsZWN0UHJlZml4IFtwcmVmaXhuYW1lXQotKyAgUFJF Rk5BTUU9JChwcmludGYgIiQxIiB8IHRyIC1jIFtbYS16QS1aMC05XVwuXSAnXycpCi0rICBQT0xf RGVidWdfTWVzc2FnZSAiU2VsZWN0aW5nIHByZWZpeDogJFBSRUZOQU1FIgotKyAgIyBFbXB0eSBu YW1lIGlzIGRhbmdlcm91cwotKyAgWyAteiAiJFBSRUZOQU1FIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiQmFkIG9yIGVtcHR5IHZpcnR1YWwgZHJpdmUgbmFtZSBzZWxlY3RlZCIKLSsgIGV4cG9ydCBX SU5FUFJFRklYPSIkUE9MX1VTRVJfUk9PVC93aW5lcHJlZml4LyRQUkVGTkFNRSIKLSsgIGV4cG9y dCBET1NQUkVGSVg9IiRXSU5FUFJFRklYIgotKyAgaWYgWyAtZSAiJFdJTkVQUkVGSVgvcGxheW9u bGludXguY2ZnIiBdOyB0aGVuCi0rICAgIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQoUE9MX0Nv bmZpZ19QcmVmaXhSZWFkIFZFUlNJT04pIgotKyAgICBQT0xfU3lzdGVtX1NldEFyY2ggIiQoUE9M X0NvbmZpZ19QcmVmaXhSZWFkIEFSQ0gpIiAiZGV0ZWN0ZWQiCi0rICBlbHNlCi0rICAgIHRvdWNo ICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIDI+L2Rldi9udWxsCi0rICBmaQotKwotKyAg IyMgSW4gZmFjdCBpdCdzIGEgYmFkIGlkZWEKLSsgICNpZiBbICIkKFBPTF9Db25maWdfUHJlZml4 UmVhZCBBUkNIKSIgPSAieDg2IiBdOyB0aGVuICMjIENvbW1lIGNhLCBwYXMgZGUgY29uZmxpdHMK LSsgICMJZXhwb3J0IFdJTkVBUkNIPXdpbjMyCi0rICAjZmkKLSB9Ci0tUE9MX1dpbmVfUHJlZml4 RXhpc3RzKCkKLS17Ci0tCSMgQ2hlY2tzIGlmIGEgcHJlZml4IGV4aXN0cwotLQkjIFVzYWdlOiBQ T0xfV2luZV9QcmVmaXhFeGlzdHMKLS0JIyBSZXR1cm4gVHJ1ZSBvciBGYWxzZQotLQlQUkVGTkFN RT1gcHJpbnRmICIkMSJ8IHRyIC1jIFtbYS16QS1aMC05XVwuXSAnXydgCi0tCVsgLWQgIiRQT0xf VVNFUl9ST09UL3dpbmVwcmVmaXgvJFBSRUZOQU1FL2RyaXZlX2MiIF0gJiYgZWNobyAiVHJ1ZSIg fHwgZWNobyAiRmFsc2UiCi0rUE9MX1dpbmVfUHJlZml4RXhpc3RzKCkgewotKyAgIyBDaGVja3Mg aWYgYSBwcmVmaXggZXhpc3RzCi0rICAjIFVzYWdlOiBQT0xfV2luZV9QcmVmaXhFeGlzdHMKLSsg ICMgUmV0dXJuIFRydWUgb3IgRmFsc2UKLSsgIFBSRUZOQU1FPSQocHJpbnRmICIkMSIgfCB0ciAt YyBbW2EtekEtWjAtOV1cLl0gJ18nKQotKyAgWyAtZCAiJFBPTF9VU0VSX1JPT1Qvd2luZXByZWZp eC8kUFJFRk5BTUUvZHJpdmVfYyIgXSAmJiBlY2hvICJUcnVlIiB8fCBlY2hvICJGYWxzZSIKLSB9 Ci0tUE9MX1dpbmVfQ2hlY2tQcmVmaXhFeGlzdHMoKQotLXsKLS0JIyBDaGVja3MgaWYgYSBwcmVm aXggZXhpc3RzCi0tCSMgVXNhZ2U6IFBPTF9XaW5lX0NoZWNrUHJlZml4RXhpc3RzIFtQUkVGSVhd IFtUSVRMRV9SRVFVSVJFRF0KLS0JIyBSZXR1cm4gYSBtZXNzYWdlIGlmIG5vdCBhbmQgcXVpdAot LQlQUkVGSVg9JDEKLS0JVElUTEVfUkVRVUlSRUQ9IiQyIgotLQlpZiBbICIkKFBPTF9XaW5lX1By ZWZpeEV4aXN0cyAiJFBSRUZJWCIpIiA9ICJGYWxzZSIgXTsgdGhlbgotLQkJUE9MX0RlYnVnX1dh cm5pbmcgIlRoZSBwcmVmaXggJyRQUkVGSVgnIGRvZXMgbm90IGV4aXN0IgotLQkJUE9MX1NldHVw V2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGlzIGlzIGFuIGluc3RhbGxlciBmb3Ig YW4gdXBkYXRlIG9yIGFuIGFkZG9uO1xuUGxlYXNlIGluc3RhbGwgJFRJVExFX1JFUVVJUkVEIGZp cnN0JykiICIkVElUTEUiCi0tCQlQT0xfU2V0dXBXaW5kb3dfQ2xvc2UKLS0JCWV4aXQgMQotLQlm aQotK1BPTF9XaW5lX0NoZWNrUHJlZml4RXhpc3RzKCkgewotKyAgIyBDaGVja3MgaWYgYSBwcmVm aXggZXhpc3RzCi0rICAjIFVzYWdlOiBQT0xfV2luZV9DaGVja1ByZWZpeEV4aXN0cyBbUFJFRklY XSBbVElUTEVfUkVRVUlSRURdCi0rICAjIFJldHVybiBhIG1lc3NhZ2UgaWYgbm90IGFuZCBxdWl0 Ci0rICBQUkVGSVg9JDEKLSsgIFRJVExFX1JFUVVJUkVEPSIkMiIKLSsgIGlmIFsgIiQoUE9MX1dp bmVfUHJlZml4RXhpc3RzICIkUFJFRklYIikiID0gIkZhbHNlIiBdOyB0aGVuCi0rICAgIFBPTF9E ZWJ1Z19XYXJuaW5nICJUaGUgcHJlZml4ICckUFJFRklYJyBkb2VzIG5vdCBleGlzdCIKLSsgICAg UE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGlzIGlzIGFuIGluc3Rh bGxlciBmb3IgYW4gdXBkYXRlIG9yIGFuIGFkZG9uO1xuUGxlYXNlIGluc3RhbGwgJFRJVExFX1JF UVVJUkVEIGZpcnN0JykiICIkVElUTEUiCi0rICAgIFBPTF9TZXR1cFdpbmRvd19DbG9zZQotKyAg ICBleGl0IDEKLSsgIGZpCi0gfQotLVBPTF9XaW5lX1ZlcnNpb25TaWduYXR1cmUoKQotLXsKLS0J IyBSZXR1cm4gdGhlIHNpZ25hdHVyZSBvZiBhIFdpbmUgcGFja2FnZQotLQkjIFVzYWdlOiBQT0xf V2luZV9WZXJzaW9uU2lnbmF0dXJlIFtESVJdCi0tCi0tCSMgT24gTGludXgsIHJlc3VsdCBzaG91 bGQgbWF0Y2ggdGhlIG9uZSBvZgotLQkjIGNkICRESVI7IGZpbmQgKiAtdHlwZSBmfHNvcnR8eGFy Z3MgbWQ1c3VtfG1kNXN1bSAtfGN1dCAtYzEtMzIKLS0KLS0JbG9jYWwgV0lORVBLR1BBVEg9IiQx IgotLQlbIC1kICIkV0lORVBLR1BBVEgiIF0gfHwgcmV0dXJuCi0tCSMgWyAtZSAiJFdJTkVQS0dQ QVRIL2Jpbi93aW5lIiBdIHx8IHJldHVybgotLQotLQlsb2NhbCBDVVJSU0lHVkVSPSIkV0lORVBL R1BBVEgvLnNpZ25hdHVyZS52MSIgIyBjYWNoZSB2ZXJzaW9uCi0tCWxvY2FsIFdJTkVTSUcKLS0J WyAtZSAiJENVUlJTSUdWRVIiIF0gJiYgcmVhZCBXSU5FU0lHIDwgIiRDVVJSU0lHVkVSIgotLQlp ZiBbIC16ICIkV0lORVNJRyIgXTsgdGhlbgotLQkJbG9jYWwgTUFOSUZFU1RGSUxFPSIkUE9MX1VT RVJfUk9PVC90bXAvUE9MX1dpbmVfVmVyc2lvblNpZ25hdHVyZV9tYW5pZmVzdCQkIgotLQkJKGNk ICIkV0lORVBLR1BBVEgiICYmIGZpbmQgKiAtdHlwZSBmIHxcCi0tCQkgIHNvcnQgfFwKLS0JCSAg d2hpbGUgcmVhZCBzaWdmaWxlbmFtZTsgZG8KLS0JCSAgICBlY2hvICIkKFBPTF9NRDVfZmlsZSAi JHNpZ2ZpbGVuYW1lIikgICRzaWdmaWxlbmFtZSIKLS0JCSAgZG9uZSkgPiAiJE1BTklGRVNURklM RSIKLS0JCVdJTkVTSUc9IiQoUE9MX01ENV9maWxlICIkTUFOSUZFU1RGSUxFIikiCi0tCQlybSAt ZiAiJE1BTklGRVNURklMRSIKLS0JCWVjaG8gIiRXSU5FU0lHIiA+ICIkQ1VSUlNJR1ZFUiIKLS0J ZmkKLS0JZWNobyAiJFdJTkVTSUciCi0rUE9MX1dpbmVfVmVyc2lvblNpZ25hdHVyZSgpIHsKLSsg ICMgUmV0dXJuIHRoZSBzaWduYXR1cmUgb2YgYSBXaW5lIHBhY2thZ2UKLSsgICMgVXNhZ2U6IFBP TF9XaW5lX1ZlcnNpb25TaWduYXR1cmUgW0RJUl0KLSsKLSsgICMgT24gTGludXgsIHJlc3VsdCBz aG91bGQgbWF0Y2ggdGhlIG9uZSBvZgotKyAgIyBjZCAkRElSOyBmaW5kICogLXR5cGUgZnxzb3J0 fHhhcmdzIG1kNXN1bXxtZDVzdW0gLXxjdXQgLWMxLTMyCi0rCi0rICBsb2NhbCBXSU5FUEtHUEFU SD0iJDEiCi0rICBbIC1kICIkV0lORVBLR1BBVEgiIF0gfHwgcmV0dXJuCi0rICAjIFsgLWUgIiRX SU5FUEtHUEFUSC9iaW4vd2luZSIgXSB8fCByZXR1cm4KLSsKLSsgIGxvY2FsIENVUlJTSUdWRVI9 IiRXSU5FUEtHUEFUSC8uc2lnbmF0dXJlLnYxIiAjIGNhY2hlIHZlcnNpb24KLSsgIGxvY2FsIFdJ TkVTSUcKLSsgIFsgLWUgIiRDVVJSU0lHVkVSIiBdICYmIHJlYWQgV0lORVNJRyA8IiRDVVJSU0lH VkVSIgotKyAgaWYgWyAteiAiJFdJTkVTSUciIF07IHRoZW4KLSsgICAgbG9jYWwgTUFOSUZFU1RG SUxFPSIkUE9MX1VTRVJfUk9PVC90bXAvUE9MX1dpbmVfVmVyc2lvblNpZ25hdHVyZV9tYW5pZmVz dCQkIgotKyAgICAoY2QgIiRXSU5FUEtHUEFUSCIgJiYgZmluZCAqIC10eXBlIGYgfAotKyAgICAg IHNvcnQgfAotKyAgICAgIHdoaWxlIHJlYWQgc2lnZmlsZW5hbWU7IGRvCi0rICAgICAgICBlY2hv ICIkKFBPTF9NRDVfZmlsZSAiJHNpZ2ZpbGVuYW1lIikgICRzaWdmaWxlbmFtZSIKLSsgICAgICBk b25lKSA+IiRNQU5JRkVTVEZJTEUiCi0rICAgIFdJTkVTSUc9IiQoUE9MX01ENV9maWxlICIkTUFO SUZFU1RGSUxFIikiCi0rICAgIHJtIC1mICIkTUFOSUZFU1RGSUxFIgotKyAgICBlY2hvICIkV0lO RVNJRyIgPiIkQ1VSUlNJR1ZFUiIKLSsgIGZpCi0rICBlY2hvICIkV0lORVNJRyIKLSB9Ci0tUE9M X1dpbmVfSW5zdGFsbFZlcnNpb24oKQotLXsKLS0JIyBJbnN0YWxsIGEgd2luZXZlcnNpb24KLS0J IyBVc2FnZTogUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gW1ZFUlNJT05dCi0tCVsgISAiJDEiID0g IiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKLS0JWyAhICIkMiIgPSAiIiBdICYm IGV4cG9ydCBQT0xfV0lORURJU1RSSUJVVElPTj0iJDIiIHx8IGV4cG9ydCBQT0xfV0lORURJU1RS SUJVVElPTj0idXBzdHJlYW0iCi0tCi0tCWlmIFtbICIkUE9MX1dJTkVWRVJTSU9OIiA9PSAqIi1z dGFnaW5nIiogXV07IHRoZW4KLS0JICAgIGxvY2FsIHBvbF93aW5ldmVyc2lvbj0iJHtQT0xfV0lO RVZFUlNJT04vLXN0YWdpbmcvfSIKLS0JCQlQT0xfV0lORURJU1RSSUJVVElPTj0ic3RhZ2luZyIK LS0JZWxzZQotLQkJCWxvY2FsIHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsPSIkUE9MX1dJTkVWRVJT SU9OIgotLQkJCWxvY2FsIHBvbF93aW5ldmVyc2lvbj0iJFBPTF9XSU5FVkVSU0lPTiIKLS0JZmkK LS0KLS0JaWYgWyAiJFBPTF9XSU5FRElTVFJJQlVUSU9OIiA9PSAic3RhZ2luZyIgXTsgdGhlbgot LQkJbG9jYWwgcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGw9IiRwb2xfd2luZXZlcnNpb24tc3RhZ2lu ZyIKLS0JZmkKLS0KLS0JWyAiJHBvbF93aW5ldmVyc2lvbiIgPSAiIiBdICYmIFBPTF9EZWJ1Z19G YXRhbCAiTm8gUE9MX1dJTkVWRVJTSU9OIHNldCIKLS0JWyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYg UE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgotLQlQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGlu ZyB3aW5lIHZlcnNpb24gcGF0aDogJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsLCAkUE9MX0FSQ0gi Ci0tCVsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBBUkNIX1BSRUZJWD0iZGFyd2luIgotLQlbICIk UE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIEFSQ0hfUFJFRklYPSJmcmVlYnNkIgotLQlbICIkUE9M X09TIiA9ICJMaW51eCIgXSAmJiBBUkNIX1BSRUZJWD0ibGludXgiCi0tCU9MRFBBVEg9IiRQV0Qi Ci0tCVdJTkVfU0VDVElPTj0iJEFSQ0hfUFJFRklYLSRQT0xfQVJDSCIKLS0JV0lORURJUj0iJFBP TF9VU0VSX1JPT1Qvd2luZS8kV0lORV9TRUNUSU9OIgotLQl0b3VjaCAiJFdJTkVESVIvaW5zdGFs bGluZyIKLS0JaWYgWyAhIC1lICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9M X0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIiBdCi0tCXRoZW4KLS0JCVBPTF9EZWJ1Z19N ZXNzYWdlICJXaW5lIHNpdGU6ICRXSU5FX1NJVEUiCi0tCQllY2hvICRQT0xfV0dFVCAiJFdJTkVf U0lURSIgLU8tCi0tCQlXSU5FREFUQT0iJCgkUE9MX1dHRVQgIiRXSU5FX1NJVEUiIC1PLSB8anEg LXIgIi5bXSB8IHNlbGVjdCgubmFtZT09XCIkUE9MX1dJTkVESVNUUklCVVRJT04tJEFSQ0hfUFJF RklYLSRQT0xfQVJDSFwiKSB8IC5wYWNrYWdlcyB8IC5bXSB8IHNlbGVjdCgudmVyc2lvbj09XCIk cG9sX3dpbmV2ZXJzaW9uXCIpIikiCi0tCQlQT0xfRGVidWdfTWVzc2FnZSAiV2luZWJ1aWxkIGRh dGE6ICRXSU5FREFUQSIKLS0KLS0JCVdJTkVfQUREUkVTUz0iJChlY2hvICIkV0lORURBVEEiIHwg anEgJy51cmwnIC1yKSIKLS0JCVBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIGFkZHJlc3MgZm91bmQ6 ICRXSU5FX0FERFJFU1MiCi0tCQkjV0lORV9BRERSRVNTPSQoJFBPTF9XR0VUICIkV0lORV9TSVRF LyRXSU5FX1NFQ1RJT04ubHN0IiAtTy0gfCBncmVwICI7JHBvbF93aW5ldmVyc2lvbjsiIHwgdGFp bCAtbiAxIHwgY3V0IC1kICI7IiAtZjEpCi0tCi0tCQlpZiBbICIkV0lORV9BRERSRVNTIiA9ICIi IF0gJiYgWyAiJFBPTF9BUkNIIiA9ICJhbWQ2NCIgXQotLQkJdGhlbgotLQkJCVBPTF9EZWJ1Z19X YXJuaW5nICJXaW5lICQxIGFtZDY0IGRvZXMgbm90IGV4aXN0LiBTd2l0Y2hpbmcgdG8geDg2Igot LQkJCVBPTF9TeXN0ZW1fU2V0QXJjaCAieDg2IgotLQkJCVBPTF9XaW5lX0luc3RhbGxWZXJzaW9u ICIkMSIKLS0JCWVsc2UKLS0JCQlpZiBbICIkV0lORV9BRERSRVNTIiA9ICIiIF0KLS0JCQl0aGVu Ci0tCQkJCVBPTF9EZWJ1Z19FcnJvciAiJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBmaW5kIHZl cnNpb246ICIpJHBvbF93aW5ldmVyc2lvbiIKLS0JCQkJUE9MX1NldHVwV2luZG93X0Nsb3NlCi0t CQkJCWV4aXQKLS0JCQlmaQotLQotLQkJCWNkICIkUE9MX1VTRVJfUk9PVC90bXAiCi0tCQkJZmls ZW5hbWU9IiRQV0QvUGxheU9uTGludXgtd2luZS0kcG9sX3dpbmV2ZXJzaW9uLSRQT0xfV0lORURJ U1RSSUJVVElPTi0kQVJDSF9QUkVGSVgtJFBPTF9BUkNILnRhci5neiIKLS0JCQlQT0xfU2V0dXBX aW5kb3dfZG93bmxvYWQgIiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAiKSRwb2xf d2luZXZlcnNpb24iICIkVElUTEUiICIkV0lORV9BRERSRVNTIgotLQkJCVBPTF9TZXR1cFdpbmRv d193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcgV2luZTogIikk cG9sX3dpbmV2ZXJzaW9uIiAiJFRJVExFIgotLQkJCXNsZWVwIDEKLS0JCQlzaGExPSIkKGVjaG8g IiRXSU5FREFUQSIgfCBqcSAnLnNoYTFzdW0nIC1yKSIKLS0JCQlzaGExX2ZpbGU9JChzaGFzdW0g IiRmaWxlbmFtZSIgfCBhd2sgJ3twcmludCAkMX0nKQotLQkJCWVjaG8gIlNlcnZlciBzaGExIDog JHNoYTEiCi0tCQkJZWNobyAiQ2xpZW50IHNoYTEgOiAkc2hhMV9maWxlIgotLQotLQkJCWlmIFsg ISAiJHNoYTEiID0gIiRzaGExX2ZpbGUiIF0KLS0JCQl0aGVuCi0tCQkJCVBPTF9TZXR1cFdpbmRv d19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhlIGRvd25sb2FkIHNlZW1zIHRvIGhhdmUgZmFp bGVkLicpIiAiJFRJVExFIgotLQkJCWVsc2UKLS0JCQkJUE9MX1NldHVwV2luZG93X3dhaXQgIiQo ZXZhbF9nZXR0ZXh0ICdFeHRyYWN0aW5nIFdpbmUuLi4nKSIgIiRUSVRMRSIKLS0JCQkJbWtkaXIg LXAgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC8kcG9sX3dpbmV2 ZXJzaW9uX2luc3RhbGwiCi0tCQkJCWNkICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJ WC0kUE9MX0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIgotLQkJCQl0YXIgLXh2ZiAiJGZp bGVuYW1lIgotLQkJCWZpCi0tCQkJcm0gIiRmaWxlbmFtZSIKLS0JCQkjIFBPTF9XaW5lX0luc3Rh bGxfcmVzb3VyY2VzIGdlY2tvICIkcG9sX3dpbmV2ZXJzaW9uIiAiJFBPTF9BUkNIIgotLQkJCSMg UE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMgbW9ubyAiJHBvbF93aW5ldmVyc2lvbiIgIiRQT0xf QVJDSCIKLS0JCWZpCi0tCWZpCi0tCXJtICIkV0lORURJUi9pbnN0YWxsaW5nIgotK1BPTF9XaW5l X0luc3RhbGxWZXJzaW9uKCkgewotKyAgIyBJbnN0YWxsIGEgd2luZXZlcnNpb24KLSsgICMgVXNh Z2U6IFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uIFtWRVJTSU9OXQotKyAgWyAhICIkMSIgPSAiIiBd ICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgotKyAgWyAhICIkMiIgPSAiIiBdICYmIGV4 cG9ydCBQT0xfV0lORURJU1RSSUJVVElPTj0iJDIiIHx8IGV4cG9ydCBQT0xfV0lORURJU1RSSUJV VElPTj0idXBzdHJlYW0iCi0rCi0rICBpZiBbWyAiJFBPTF9XSU5FVkVSU0lPTiIgPT0gKiItc3Rh Z2luZyIqIF1dOyB0aGVuCi0rICAgIGxvY2FsIHBvbF93aW5ldmVyc2lvbj0iJHtQT0xfV0lORVZF UlNJT04vLXN0YWdpbmcvfSIKLSsgICAgUE9MX1dJTkVESVNUUklCVVRJT049InN0YWdpbmciCi0r ICBlbGlmIFtbICIkUE9MX1dJTkVWRVJTSU9OIiA9PSAqIi1jeCIqIF1dOyB0aGVuCi0rICAgIGxv Y2FsIHBvbF93aW5ldmVyc2lvbj0iJHtQT0xfV0lORVZFUlNJT04vLWN4L30iCi0rICAgIFBPTF9X SU5FRElTVFJJQlVUSU9OPSJjeCIKLSsgIGVsc2UKLSsgICAgbG9jYWwgcG9sX3dpbmV2ZXJzaW9u X2luc3RhbGw9IiRQT0xfV0lORVZFUlNJT04iCi0rICAgIGxvY2FsIHBvbF93aW5ldmVyc2lvbj0i JFBPTF9XSU5FVkVSU0lPTiIKLSsgIGZpCi0rCi0rICBpZiBbICIkUE9MX1dJTkVESVNUUklCVVRJ T04iID09ICJzdGFnaW5nIiBdOyB0aGVuCi0rICAgIGxvY2FsIHBvbF93aW5ldmVyc2lvbl9pbnN0 YWxsPSIkcG9sX3dpbmV2ZXJzaW9uLXN0YWdpbmciCi0rICBmaQotKwotKyAgaWYgWyAiJFBPTF9X SU5FRElTVFJJQlVUSU9OIiA9PSAiY3giIF07IHRoZW4KLSsgICAgbG9jYWwgcG9sX3dpbmV2ZXJz aW9uX2luc3RhbGw9IiRwb2xfd2luZXZlcnNpb24tY3giCi0rICBmaQotKwotKyAgWyAiJHBvbF93 aW5ldmVyc2lvbiIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiTm8gUE9MX1dJTkVWRVJTSU9O IHNldCIKLSsgIFsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0 byIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxsaW5nIHdpbmUgdmVyc2lvbiBwYXRoOiAk cG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwsICRQT0xfQVJDSCIKLSsgIFsgIiRQT0xfT1MiID0gIk1h YyIgXSAmJiBBUkNIX1BSRUZJWD0iZGFyd2luIgotKyAgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIg XSAmJiBBUkNIX1BSRUZJWD0iZnJlZWJzZCIKLSsgIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdICYm IEFSQ0hfUFJFRklYPSJsaW51eCIKLSsgIE9MRFBBVEg9IiRQV0QiCi0rICBXSU5FX1NFQ1RJT049 IiRBUkNIX1BSRUZJWC0kUE9MX0FSQ0giCi0rICBXSU5FRElSPSIkUE9MX1VTRVJfUk9PVC93aW5l LyRXSU5FX1NFQ1RJT04iCi0rICB0b3VjaCAiJFdJTkVESVIvaW5zdGFsbGluZyIKLSsgIGlmIFsg ISAtZSAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNILyRwb2xfd2lu ZXZlcnNpb25faW5zdGFsbCIgXTsgdGhlbgotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiV2luZSBz aXRlOiAkV0lORV9TSVRFIgotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAid2dldCBsaXN0IGNvbW1h bmQ6ICRQT0xfV0dFVCAkV0lORV9TSVRFIC1PLSIKLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlBP TF9BUkNIOiAkUE9MX0FSQ0giCi0rCi0rICAgIGlmIFsgIiRQT0xfQVJDSCIgPSAieDg2IiBdOyB0 aGVuCi0rICAgICAgW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dICYmIHNpdGVfYXJjaD0ieDg2 b242NCIgfHwgc2l0ZV9hcmNoPSJ4ODYiCi0rICAgIGVsc2UKLSsgICAgICBzaXRlX2FyY2g9IiRQ T0xfQVJDSCIKLSsgICAgZmkKLSsgICAgV0lORURBVEE9IiQoJFBPTF9XR0VUICIkV0lORV9TSVRF IiAtTy0gfCBqcSAtciAiLltdIHwgc2VsZWN0KC5uYW1lPT1cIiRQT0xfV0lORURJU1RSSUJVVElP Ti0kQVJDSF9QUkVGSVgtJHNpdGVfYXJjaFwiKSB8IC5wYWNrYWdlcyB8IC5bXSB8IHNlbGVjdCgu dmVyc2lvbj09XCIkcG9sX3dpbmV2ZXJzaW9uXCIpIikiCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdl ICJXaW5lYnVpbGQgZGF0YTogJFdJTkVEQVRBIgotKwotKyAgICBXSU5FX0FERFJFU1M9IiQoZWNo byAiJFdJTkVEQVRBIiB8IGpxICcudXJsJyAtcikiCi0rICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJX aW5lIGFkZHJlc3MgZm91bmQ6ICRXSU5FX0FERFJFU1MiCi0rICAgICNXSU5FX0FERFJFU1M9JCgk UE9MX1dHRVQgIiRXSU5FX1NJVEUvJFdJTkVfU0VDVElPTi5sc3QiIC1PLSB8IGdyZXAgIjskcG9s X3dpbmV2ZXJzaW9uOyIgfCB0YWlsIC1uIDEgfCBjdXQgLWQgIjsiIC1mMSkKLSsKLSsgICAgaWYg WyAiJFdJTkVfQUREUkVTUyIgPSAiIiBdICYmIFsgIiRQT0xfQVJDSCIgPSAiYW1kNjQiIF07IHRo ZW4KLSsgICAgICBQT0xfRGVidWdfV2FybmluZyAiV2luZSAkMSBhbWQ2NCBkb2VzIG5vdCBleGlz dC4gU3dpdGNoaW5nIHRvIHg4NiIKLSsgICAgICBQT0xfU3lzdGVtX1NldEFyY2ggIng4NiIKLSsg ICAgICBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJDEiCi0rICAgIGVsc2UKLSsgICAgICBpZiBb ICIkV0lORV9BRERSRVNTIiA9ICIiIF07IHRoZW4KLSsgICAgICAgIGlmIFtbICRPU1hfVkVSU0lP TiAtZ2UgMTkgXV07IHRoZW4KLSsgICAgICAgICAgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQo ZXZhbF9nZXR0ZXh0ICJtYWNPUyBDYXRhbGluYSB1c2VyOiAzMmJpdHMgd2luZSB2ZXJzaW9uIGFy ZSBubyBsb25nZXIgYXZhaWxhYmxlLlxuV2UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgc3lzdGVtIHdp bmUgdmVyc2lvbiBpbnN0ZWFkIikiCi0rICAgICAgICAgIHJldHVybiAyCi0rICAgICAgICBlbHNl Ci0rICAgICAgICAgIFBPTF9EZWJ1Z19FcnJvciAiJChldmFsX2dldHRleHQgIlVuYWJsZSB0byBm aW5kIHZlcnNpb246ICIpJHBvbF93aW5ldmVyc2lvbiIKLSsgICAgICAgICAgUE9MX1NldHVwV2lu ZG93X0Nsb3NlCi0rICAgICAgICAgIGV4aXQKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsKLSsg ICAgICBjZCAiJFBPTF9VU0VSX1JPT1QvdG1wIgotKyAgICAgIGZpbGVuYW1lPSIkUFdEL1BsYXlP bkxpbnV4LXdpbmUtJHBvbF93aW5ldmVyc2lvbi0kUE9MX1dJTkVESVNUUklCVVRJT04tJEFSQ0hf UFJFRklYLSRzaXRlX2FyY2gudGFyLmd6IgotKyAgICAgIFBPTF9TZXR1cFdpbmRvd19kb3dubG9h ZCAiJChldmFsX2dldHRleHQgIkRvd25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lvbiIg IiRUSVRMRSIgIiRXSU5FX0FERFJFU1MiCi0rICAgICAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4 dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAiKSRwb2xfd2luZXZl cnNpb24iICIkVElUTEUiCi0rICAgICAgc2xlZXAgMQotKyAgICAgIHNoYTE9IiQoZWNobyAiJFdJ TkVEQVRBIiB8IGpxICcuc2hhMXN1bScgLXIpIgotKyAgICAgIHNoYTFfZmlsZT0kKHNoYXN1bSAi JGZpbGVuYW1lIiB8IGF3ayAne3ByaW50ICQxfScpCi0rICAgICAgZWNobyAiU2VydmVyIHNoYTEg OiAkc2hhMSIKLSsgICAgICBlY2hvICJDbGllbnQgc2hhMSA6ICRzaGExX2ZpbGUiCi0rCi0rICAg ICAgaWYgWyAhICIkc2hhMSIgPSAiJHNoYTFfZmlsZSIgXSAmJiBbWyAkT1NYX1ZFUlNJT04gLWx0 IDE5IF1dOyB0aGVuCi0rICAgICAgICBQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dl dHRleHQgJ1RoZSBkb3dubG9hZCBzZWVtcyB0byBoYXZlIGZhaWxlZC4nKSIgIiRUSVRMRSIKLSsg ICAgICBlbHNlCi0rICAgICAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQg J0V4dHJhY3RpbmcgV2luZS4uLicpIiAiJFRJVExFIgotKyAgICAgICAgbWtkaXIgLXAgIiRQT0xf VVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2lu c3RhbGwiCi0rICAgICAgICBjZCAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBP TF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIKLSsgICAgICAgIHRhciAteHZmICIkZmls ZW5hbWUiCi0rICAgICAgZmkKLSsgICAgICBybSAiJGZpbGVuYW1lIgotKyAgICAgICMgUE9MX1dp bmVfSW5zdGFsbF9yZXNvdXJjZXMgZ2Vja28gIiRwb2xfd2luZXZlcnNpb24iICIkUE9MX0FSQ0gi Ci0rICAgICAgIyBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcyBtb25vICIkcG9sX3dpbmV2ZXJz aW9uIiAiJFBPTF9BUkNIIgotKyAgICBmaQotKyAgZmkKLSsgIHJtICIkV0lORURJUi9pbnN0YWxs aW5nIgotIAotIH0KLSAKLS1QT0xfV2luZV9JbnN0YWxsQ0RST00oKQotLXsKLS0JUE9MX1dpbmVf SW5zdGFsbENEUk9NQ3VzdG9tICIkMSIgIiRDRFJPTSIKLStQT0xfV2luZV9JbnN0YWxsQ0RST00o KSB7Ci0rICBQT0xfV2luZV9JbnN0YWxsQ0RST01DdXN0b20gIiQxIiAiJENEUk9NIgotIH0KLS1Q T0xfV2luZV9JbnN0YWxsQ0RST01DdXN0b20oKQotLXsKLS0JaWYgWyAiJDEiIF07IHRoZW4KLS0J CWxldHRlcj0iJDE6IgotLQllbHNlCi0tCQlsZXR0ZXI9InA6IgotLQlmaQotLQlpZiBbICIkQ0RS T00iIF07IHRoZW4KLS0JCWNkICIkV0lORVBSRUZJWC9kb3NkZXZpY2VzIgotLQkJcm0gIiRsZXR0 ZXIiIDI+IC9kZXYvbnVsbAotLQkJbG4gLXMgIiQyIiAiJGxldHRlciIKLS0JZmkKLStQT0xfV2lu ZV9JbnN0YWxsQ0RST01DdXN0b20oKSB7Ci0rICBpZiBbICIkMSIgXTsgdGhlbgotKyAgICBsZXR0 ZXI9IiQxOiIKLSsgIGVsc2UKLSsgICAgbGV0dGVyPSJwOiIKLSsgIGZpCi0rICBpZiBbICIkQ0RS T00iIF07IHRoZW4KLSsgICAgY2QgIiRXSU5FUFJFRklYL2Rvc2RldmljZXMiCi0rICAgIHJtICIk bGV0dGVyIiAyPi9kZXYvbnVsbAotKyAgICBsbiAtcyAiJDIiICIkbGV0dGVyIgotKyAgZmkKLSB9 Ci0tUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMoKQotLXsKLS0JIyBJbnN0YWxsIGdlY2tvIG9y IG1vbm8gZm9yIHNlbGVjdGVkIHdpbmUgdmVyc2lvbgotLQkjIFVzYWdlIDogUE9MX1dpbmVfSW5z dGFsbF9yZXNvdXJjZXMgKGdlY2tvfG1vbm8pIFsgVmVyc2lvbiBdICggQXJjaCApCi0tCVsgLXog IiQxIiBdICYmIHJldHVybiAxCi0tCVsgIiQxIiA9ICJtb25vIiBdICYmIHJlc291cmNlPSIkMSIg fHwgcmVzb3VyY2U9ImdlY2tvIgotLQl3aW5lX3ZlcnNpb249IiQyIgotLQl1bnBhdGNoZWRfdmVy c2lvbj1gUE9MX1dpbmVfR2V0QmFzZU5hbWUgIiQyImAKLS0JWyAiJDMiID0gImFtZDY0IiBdICYm IGFyY2g9IiQzIiB8fCBhcmNoPSJ4ODYiCi0tCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxs aW5nICRyZXNvdXJjZSBmb3Igd2luZSAkdW5wYXRjaGVkX3ZlcnNpb24gJGFyY2giCi0tCXJlc291 cmNlX2Rpcj0iJFBPTF9VU0VSX1JPT1Qvd2luZS8kcmVzb3VyY2UiCi0tCXJlc291cmNlX2ZpbGU9 IiRQT0xfVVNFUl9ST09UL2NvbmZpZ3VyYXRpb25zL2xpc3Rlcy8kcmVzb3VyY2UubHN0IgotLQlm b3VuZD0iJChncmVwICJeJHt1bnBhdGNoZWRfdmVyc2lvbi8vLi9cLn07IiAiJHJlc291cmNlX2Zp bGUiKSIKLS0JWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gJiYgd29zPSJsaW51eCIKLS0JWyAiJFBP TF9PUyIgPSAiRnJlZUJTRCIgXSAmJiB3b3M9ImZyZWVic2QiCi0tCVsgIiRQT0xfT1MiID0gIk1h YyIgXSAmJiB3b3M9ImRhcndpbiIKLS0KLS0JaWYgWyAhIC1MICIkUE9MX1VTRVJfUk9PVC93aW5l LyR3b3MtJGFyY2gvJHdpbmVfdmVyc2lvbi9zaGFyZS93aW5lLyRyZXNvdXJjZSIgXQotLQl0aGVu Ci0tCQlQT0xfRGVidWdfTWVzc2FnZSAiTGlua2luZyAkcmVzb3VyY2UiCi0tCQlsbiAtcyAiJFBP TF9VU0VSX1JPT1Qvd2luZS8kcmVzb3VyY2UvIiAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kd29zLSRh cmNoLyR3aW5lX3ZlcnNpb24vc2hhcmUvd2luZS8kcmVzb3VyY2UiCi0tCWZpCi0tCWlmIFsgIiRm b3VuZCIgXTsgdGhlbgotLQkJcmVzb3VyY2V4ODY9IiQoY3V0IC1kICc7JyAtZjIgPDw8ICRmb3Vu ZCkiCi0tCQlyZXNvdXJjZWFtZDY0PSIkKGN1dCAtZCAnOycgLWYzIDw8PCAkZm91bmQpIgotLQkJ bWQ1eDg2PSIkKGN1dCAtZCAnOycgLWY0IDw8PCAkZm91bmQpIgotLQkJbWQ1YW1kNjQ9IiQoY3V0 IC1kICc7JyAtZjUgPDw8ICRmb3VuZCkiCi0tCi0tCQljZCAiJHJlc291cmNlX2RpciIKLS0JCWlm IFsgIiRyZXNvdXJjZXg4NiIgXTsgdGhlbgotLQkJCWlmIFsgLWUgIiRyZXNvdXJjZXg4NiIgXTsg dGhlbgotLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiJHJlc291cmNleDg2IGFscmVhZHkgaW5zdGFs bGVkLiBTa2lwcGluZyIKLS0JCQllbHNlCi0tCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxs aW5nICRyZXNvdXJjZXg4NiIKLS0JCQkJUE9MX0Rvd25sb2FkICIkKHJlc291cmNlX2Rvd25sb2Fk X3VybCAkcmVzb3VyY2UgeDg2ICRyZXNvdXJjZXg4NikiICIkbWQ1eDg2IgotLQkJCWZpCi0tCQlm aQotLQotLQkJaWYgWyAiJGFyY2giID0gImFtZDY0IiBdOyB0aGVuCi0tCQkJaWYgWyAiJHJlc291 cmNlYW1kNjQiIF07IHRoZW4KLS0JCQkJaWYgWyAtZSAiJHJlc291cmNlYW1kNjQiIF07IHRoZW4K LS0JCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICIkcmVzb3VyY2VhbWQ2NCBhbHJlYWR5IGluc3RhbGxl ZC4gU2tpcHBpbmciCi0tCQkJCWVsc2UKLS0JCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxs aW5nICRyZXNvdXJjZWFtZDY0IgotLQkJCQkJUE9MX0Rvd25sb2FkICIkKHJlc291cmNlX2Rvd25s b2FkX3VybCAkcmVzb3VyY2UgYW1kNjQgJHJlc291cmNlYW1kNjQpIiAiJG1kNWFtZDY0IgotLQkJ CQlmaQotLQkJCWZpCi0tCQlmaQotLQlmaQotK1BPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzKCkg ewotKyAgIyBJbnN0YWxsIGdlY2tvIG9yIG1vbm8gZm9yIHNlbGVjdGVkIHdpbmUgdmVyc2lvbgot KyAgIyBVc2FnZSA6IFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIChnZWNrb3xtb25vKSBbIFZl cnNpb24gXSAoIEFyY2ggKQotKyAgWyAteiAiJDEiIF0gJiYgcmV0dXJuIDEKLSsgIFsgIiQxIiA9 ICJtb25vIiBdICYmIHJlc291cmNlPSIkMSIgfHwgcmVzb3VyY2U9ImdlY2tvIgotKyAgd2luZV92 ZXJzaW9uPSIkMiIKLSsgIHVucGF0Y2hlZF92ZXJzaW9uPSQoUE9MX1dpbmVfR2V0QmFzZU5hbWUg IiQyIikKLSsgIFsgIiQzIiA9ICJhbWQ2NCIgXSAmJiBhcmNoPSIkMyIgfHwgYXJjaD0ieDg2Igot KwotKyAgUE9MX0RlYnVnX01lc3NhZ2UgIkluc3RhbGxpbmcgJHJlc291cmNlIGZvciB3aW5lICR1 bnBhdGNoZWRfdmVyc2lvbiAkYXJjaCIKLSsgIHJlc291cmNlX2Rpcj0iJFBPTF9VU0VSX1JPT1Qv d2luZS8kcmVzb3VyY2UiCi0rICByZXNvdXJjZV9maWxlPSIkUE9MX1VTRVJfUk9PVC9jb25maWd1 cmF0aW9ucy9saXN0ZXMvJHJlc291cmNlLmxzdCIKLSsgIGZvdW5kPSIkKGdyZXAgIl4ke3VucGF0 Y2hlZF92ZXJzaW9uLy8uL1wufTsiICIkcmVzb3VyY2VfZmlsZSIpIgotKyAgWyAiJFBPTF9PUyIg PSAiTGludXgiIF0gJiYgd29zPSJsaW51eCIKLSsgIFsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0g JiYgd29zPSJmcmVlYnNkIgotKyAgWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIHdvcz0iZGFyd2lu IgotKwotKyAgaWYgWyAhIC1MICIkUE9MX1VTRVJfUk9PVC93aW5lLyR3b3MtJGFyY2gvJHdpbmVf dmVyc2lvbi9zaGFyZS93aW5lLyRyZXNvdXJjZSIgXTsgdGhlbgotKyAgICBQT0xfRGVidWdfTWVz c2FnZSAiTGlua2luZyAkcmVzb3VyY2UiCi0rICAgIGxuIC1zICIkUE9MX1VTRVJfUk9PVC93aW5l LyRyZXNvdXJjZS8iICIkUE9MX1VTRVJfUk9PVC93aW5lLyR3b3MtJGFyY2gvJHdpbmVfdmVyc2lv bi9zaGFyZS93aW5lLyRyZXNvdXJjZSIKLSsgIGZpCi0rICBpZiBbICIkZm91bmQiIF07IHRoZW4K LSsgICAgcmVzb3VyY2V4ODY9IiQoY3V0IC1kICc7JyAtZjIgPDw8JGZvdW5kKSIKLSsgICAgcmVz b3VyY2VhbWQ2ND0iJChjdXQgLWQgJzsnIC1mMyA8PDwkZm91bmQpIgotKyAgICBtZDV4ODY9IiQo Y3V0IC1kICc7JyAtZjQgPDw8JGZvdW5kKSIKLSsgICAgbWQ1YW1kNjQ9IiQoY3V0IC1kICc7JyAt ZjUgPDw8JGZvdW5kKSIKLSsKLSsgICAgY2QgIiRyZXNvdXJjZV9kaXIiCi0rICAgIGlmIFsgIiRy ZXNvdXJjZXg4NiIgXTsgdGhlbgotKyAgICAgIGlmIFsgLWUgIiRyZXNvdXJjZXg4NiIgXTsgdGhl bgotKyAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIiRyZXNvdXJjZXg4NiBhbHJlYWR5IGluc3Rh bGxlZC4gU2tpcHBpbmciCi0rICAgICAgZWxzZQotKyAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2Ug Ikluc3RhbGxpbmcgJHJlc291cmNleDg2IgotKyAgICAgICAgUE9MX0Rvd25sb2FkICIkKHJlc291 cmNlX2Rvd25sb2FkX3VybCAkcmVzb3VyY2UgeDg2ICRyZXNvdXJjZXg4NikiICIkbWQ1eDg2Igot KyAgICAgIGZpCi0rICAgIGZpCi0rCi0rICAgIGlmIFsgIiRhcmNoIiA9ICJhbWQ2NCIgXTsgdGhl bgotKyAgICAgIGlmIFsgIiRyZXNvdXJjZWFtZDY0IiBdOyB0aGVuCi0rICAgICAgICBpZiBbIC1l ICIkcmVzb3VyY2VhbWQ2NCIgXTsgdGhlbgotKyAgICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAi JHJlc291cmNlYW1kNjQgYWxyZWFkeSBpbnN0YWxsZWQuIFNraXBwaW5nIgotKyAgICAgICAgZWxz ZQotKyAgICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGluZyAkcmVzb3VyY2VhbWQ2 NCIKLSsgICAgICAgICAgUE9MX0Rvd25sb2FkICIkKHJlc291cmNlX2Rvd25sb2FkX3VybCAkcmVz b3VyY2UgYW1kNjQgJHJlc291cmNlYW1kNjQpIiAiJG1kNWFtZDY0IgotKyAgICAgICAgZmkKLSsg ICAgICBmaQotKyAgICBmaQotKyAgZmkKLSB9Ci0tcmVzb3VyY2VfZG93bmxvYWRfdXJsKCkKLS17 Ci0tCSMgcmVzb3VyY2VfZG93bmxvYWRfdXJsIChnZWNrb3xtb25vKSBbIEFyY2ggXSBbIEZpbGVu YW1lIF0KLS0JaWYgWyAiJDEiID0gImdlY2tvIiBdOyB0aGVuCi0tCQllY2hvICIkR0VDS09fU0lU RS8kMi8kMyIKLS0JZmkKLS0JaWYgWyAiJDEiID0gIm1vbm8iIF07IHRoZW4KLS0jCQlsb2NhbCB2 ZXJzaW9uPSIkezMlLm1zaX0iCi0tIwkJdmVyc2lvbj0iJHt2ZXJzaW9uI3dpbmUtbW9uby19Igot LSMJCWVjaG8gImh0dHA6Ly9zb3VyY2Uud2luZWhxLm9yZy93aW5lbW9uby5waHA/dj0ke3ZlcnNp b259IgotLSMJCWVjaG8gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3dpbmUvJDMi Ci0tIwkJZWNobyAiJE1PTk9fU0lURS8kMi8kMyIKLS0JCWVjaG8gIiRNT05PX1NJVEUvJDMiCi0t CWZpCi0rcmVzb3VyY2VfZG93bmxvYWRfdXJsKCkgewotKyAgIyByZXNvdXJjZV9kb3dubG9hZF91 cmwgKGdlY2tvfG1vbm8pIFsgQXJjaCBdIFsgRmlsZW5hbWUgXQotKyAgaWYgWyAiJDEiID0gImdl Y2tvIiBdOyB0aGVuCi0rICAgIGVjaG8gIiRHRUNLT19TSVRFLyQyLyQzIgotKyAgZmkKLSsgIGlm IFsgIiQxIiA9ICJtb25vIiBdOyB0aGVuCi0rICAgICMJCWxvY2FsIHZlcnNpb249IiR7MyUubXNp fSIKLSsgICAgIwkJdmVyc2lvbj0iJHt2ZXJzaW9uI3dpbmUtbW9uby19IgotKyAgICAjCQllY2hv ICJodHRwOi8vc291cmNlLndpbmVocS5vcmcvd2luZW1vbm8ucGhwP3Y9JHt2ZXJzaW9ufSIKLSsg ICAgIwkJZWNobyAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvd2luZS8kMyIKLSsg ICAgIwkJZWNobyAiJE1PTk9fU0lURS8kMi8kMyIKLSsgICAgZWNobyAiJE1PTk9fU0lURS8kMyIK LSsgIGZpCi0gfQotLVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52KCkKLS17Ci0tCSMgR2V0IHRo ZSBjdXJyZW50IHByZWZpeCdzIHZlcnNpb24gYW5kIHNldCBQQVRIIGVudmlyb25tZW50IHZhcmlh YmxlCi0tCSMgVXNhZ2U6IFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52Ci0tCVsgIiRXSU5FUFJF RklYIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgot LQlQT0xfV0lORVZFUlNJT049IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJWRVJTSU9OIikiCi0t CVBPTF9BUkNIPSIkKFBPTF9Db25maWdfUHJlZml4UmVhZCAiQVJDSCIpIgotLQlbICIkUE9MX1dJ TkVWRVJTSU9OIiA9ICIiIF0gfHwgUE9MX1dpbmVfU2V0VmVyc2lvbkVudgotK1BPTF9XaW5lX0F1 dG9TZXRWZXJzaW9uRW52KCkgewotKyAgIyBHZXQgdGhlIGN1cnJlbnQgcHJlZml4J3MgdmVyc2lv biBhbmQgc2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUKLSsgICMgVXNhZ2U6IFBPTF9XaW5l X0F1dG9TZXRWZXJzaW9uRW52Ci0rICBbICIkV0lORVBSRUZJWCIgPSAiIiBdICYmIFBPTF9EZWJ1 Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIKLSsgIFBPTF9XSU5FVkVSU0lPTj0iJChQ T0xfQ29uZmlnX1ByZWZpeFJlYWQgIlZFUlNJT04iKSIKLSsgIFBPTF9BUkNIPSIkKFBPTF9Db25m aWdfUHJlZml4UmVhZCAiQVJDSCIpIgotKyAgWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdIHx8 IFBPTF9XaW5lX1NldFZlcnNpb25FbnYKLSB9Ci0tUE9MX1dpbmVfU2V0VmVyc2lvbkVudigpCi0t ewotLQkjIFVzYWdlOiBQT0xfV2luZV9TZXRXaW5lVmVyc2lvbiBbVkVSU0lPTl0KLS0JIyBHZXQg Zmlyc3QgYXJndW1lbnQncyB3aW5lIHZlcnNpb24gYW5kIHNldCBQQVRIIGVudmlyb25tZW50IHZh cmlhYmxlCi0tCVsgISAiJDEiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIK LS0JWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdICYmIFBPTF9EZWJ1Z19XYXJuaW5nICJObyBQ T0xfV0lORVZFUlNJT04gc2V0LCBhc3N1bWluZyBpdCBpcyByZXNldCIKLS0JWyAiJFBPTF9XSU5F VkVSU0lPTiIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049Ii0tcmVzZXQiCi0tCWlm IFsgISAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdCi0tCXRoZW4KLS0JCVsgIiRQT0xfQVJDSCIg PSAiIiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKLS0JCSNQT0xfRGVidWdfTWVzc2Fn ZSAiU2V0dGluZyB3aW5lIHZlcnNpb24gcGF0aDogJFBPTF9XSU5FVkVSU0lPTiwgJFBPTF9BUkNI IgotLQkJWyAiJFBPTF9PUyIgPSAiTWFjIiBdICYmIEFSQ0hfUFJFRklYPSJkYXJ3aW4iCi0tCQlb ICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIEFSQ0hfUFJFRklYPSJmcmVlYnNkIgotLQkJWyAi JFBPTF9PUyIgPSAiTGludXgiIF0gJiYgQVJDSF9QUkVGSVg9ImxpbnV4IgotLQkJT0xEUEFUSD0i JFBXRCIKLS0JCVdJTkVESVI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklYLSRQT0xf QVJDSCIKLS0JCW1rZGlyIC1wICIkV0lORURJUiIKLS0JCWNkICIkV0lORURJUiIKLS0KLS0JCWlm IFsgIiRQT0xfV0lORVZFUlNJT04iID0gIi0tcmVzZXQiIF0KLS0JCXRoZW4KLS0JCQlleHBvcnQg UEFUSD0iJFBBVEhfT1JJR0lOIgotLQkJCWV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRMRF9QQVRI X09SSUdJTiIKLS0JCQlbICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIGV4cG9ydCBMRF8zMl9M SUJSQVJZX1BBVEg9IiRMRF8zMl9QQVRIX09SSUdJTiIKLS0JCQlleHBvcnQgUE9MX1dJTkVWRVJT SU9OPSIiCi0tCQllbHNlCi0tCQkJaWYgWyAhIC1lICIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9O IiBdCi0tCQkJdGhlbgotLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiV2luZSAkUE9MX1dJTkVWRVJT SU9OIG5vdCBpbnN0YWxsZWQuIEluc3RhbGxpbmcgaXQiCi0tCQkgCQlQT0xfV2luZV9JbnN0YWxs VmVyc2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIKLS0JCQlmaQotLQkJCWV4cG9ydCBQQVRIPSIkV0lO RURJUi8kUE9MX1dJTkVWRVJTSU9OL2Jpbi86JFBBVEgiCi0tCQkJWyAiJFBPTF9PUyIgPSAiTWFj IiBdICYmIGV4cG9ydCBEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9X SU5FVkVSU0lPTi9saWIvIgotLQkJCWV4cG9ydCBGUkVFVFlQRV9QUk9QRVJUSUVTPSJ0cnVldHlw ZTppbnRlcnByZXRlci12ZXJzaW9uPTM1IgotLQkJCWV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9IiRX SU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLzokV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xp YjY0LzokTERfTElCUkFSWV9QQVRIIgotLQkJCVsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYg ZXhwb3J0IExEXzMyX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWIv OiRMRF8zMl9MSUJSQVJZX1BBVEgiCi0tCQlmaQotLQllbHNlCi0tCQlpZiBbICIkUE9MX09TIiA9 ICJNYWMiIF07IHRoZW4KLS0JCQlbICIkRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiID0gIiIg XSAmJiBleHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEg9IiRSRVNPVVJDRVBBVEgvdW5p eC93aW5lL2xpYi8iCi0tCQlmaQotLQlmaQotLQljZCAiJE9MRFBBVEgiCi0rUE9MX1dpbmVfU2V0 VmVyc2lvbkVudigpIHsKLSsgICMgVXNhZ2U6IFBPTF9XaW5lX1NldFdpbmVWZXJzaW9uIFtWRVJT SU9OXQotKyAgIyBHZXQgZmlyc3QgYXJndW1lbnQncyB3aW5lIHZlcnNpb24gYW5kIHNldCBQQVRI IGVudmlyb25tZW50IHZhcmlhYmxlCi0rICBbICEgIiQxIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9X SU5FVkVSU0lPTj0iJDEiCi0rICBbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF0gJiYgUE9MX0Rl YnVnX1dhcm5pbmcgIk5vIFBPTF9XSU5FVkVSU0lPTiBzZXQsIGFzc3VtaW5nIGl0IGlzIHJlc2V0 IgotKyAgWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJ T049Ii0tcmVzZXQiCi0rICBpZiBbICEgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXTsgdGhlbgot KyAgICBbICIkUE9MX0FSQ0giID0gIiIgXSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCi0r ICAgICNQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIHZlcnNpb24gcGF0aDogJFBPTF9X SU5FVkVSU0lPTiwgJFBPTF9BUkNIIgotKyAgICBbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgQVJD SF9QUkVGSVg9ImRhcndpbiIKLSsgICAgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBBUkNI X1BSRUZJWD0iZnJlZWJzZCIKLSsgICAgWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gJiYgQVJDSF9Q UkVGSVg9ImxpbnV4IgotKyAgICBPTERQQVRIPSIkUFdEIgotKyAgICBXSU5FRElSPSIkUE9MX1VT RVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0giCi0rICAgIG1rZGlyIC1wICIkV0lO RURJUiIKLSsgICAgY2QgIiRXSU5FRElSIgotKwotKyAgICBpZiBbICIkUE9MX1dJTkVWRVJTSU9O IiA9ICItLXJlc2V0IiBdOyB0aGVuCi0rICAgICAgZXhwb3J0IFBBVEg9IiRQQVRIX09SSUdJTiIK LSsgICAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSIkTERfUEFUSF9PUklHSU4iCi0rICAgICAg WyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBleHBvcnQgTERfMzJfTElCUkFSWV9QQVRIPSIk TERfMzJfUEFUSF9PUklHSU4iCi0rICAgICAgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iIgotKyAg ICBlbHNlCi0rICAgICAgaWYgWyAhIC1lICIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OIiBdOyB0 aGVuCi0rICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiV2luZSAkUE9MX1dJTkVWRVJTSU9OIG5v dCBpbnN0YWxsZWQuIEluc3RhbGxpbmcgaXQiCi0rICAgICAgICBQT0xfV2luZV9JbnN0YWxsVmVy c2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIKLSsgICAgICAgIFtbICIkPyIgPT0gMiBdXSAmJiByZXR1 cm4gMAotKyAgICAgIGZpCi0rICAgICAgZWNobyAiU2V0dGluZyBwYXRocy4uLiIKLSsgICAgICBl eHBvcnQgUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9iaW4vOiRQQVRIIgotKyAgICAg IFsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBleHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BB VEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLyIKLSsgICAgICBleHBvcnQgRlJFRVRZ UEVfUFJPUEVSVElFUz0idHJ1ZXR5cGU6aW50ZXJwcmV0ZXItdmVyc2lvbj0zNSIKLSsgICAgICBl eHBvcnQgTERfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi86JFdJ TkVESVIvJFBPTF9XSU5FVkVSU0lPTi9saWI2NC86JExEX0xJQlJBUllfUEFUSCIKLSsgICAgICBb ICIkUE9MX09TIiA9ICJGcmVlQlNEIiBdICYmIGV4cG9ydCBMRF8zMl9MSUJSQVJZX1BBVEg9IiRX SU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLzokTERfMzJfTElCUkFSWV9QQVRIIgotKyAgICBm aQotKyAgZWxzZQotKyAgICBpZiBbICIkUE9MX09TIiA9ICJNYWMiIF07IHRoZW4KLSsgICAgICBb ICIkRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiID0gIiIgXSAmJiBleHBvcnQgRFlMRF9GQUxM QkFDS19MSUJSQVJZX1BBVEg9IiRSRVNPVVJDRVBBVEgvdW5peC93aW5lL2xpYi8iCi0rICAgIGZp Ci0rICBmaQotKyAgY2QgIiRPTERQQVRIIgotIH0KLS1QT0xfV2luZV9TZXRWZXJzaW9uUHJlZml4 KCkKLS17Ci0tCSMgVXNhZ2U6IFBPTF9XaW5lX1NldFZlcnNpb25QcmVmaXggW1ZFUlNJT05dCi0t CSMgQ2hhbmdlIGEgcHJlZml4IHdpbmUgdmVyc2lvbgotLQlbICEgIiQxIiA9ICIiIF0gJiYgZXhw b3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCi0tCVsgIiRXSU5FUFJFRklYIiA9ICIiIF0gJiYgUE9M X0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgotLQotLQlQT0xfQ29uZmlnX1By ZWZpeFdyaXRlICJWRVJTSU9OIiAiJFBPTF9XSU5FVkVSU0lPTiIKLStQT0xfV2luZV9TZXRWZXJz aW9uUHJlZml4KCkgewotKyAgIyBVc2FnZTogUE9MX1dpbmVfU2V0VmVyc2lvblByZWZpeCBbVkVS U0lPTl0KLSsgICMgQ2hhbmdlIGEgcHJlZml4IHdpbmUgdmVyc2lvbgotKyAgWyAhICIkMSIgPSAi IiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgotKyAgWyAiJFdJTkVQUkVGSVgiID0g IiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCi0rCi0rICBQ T0xfQ29uZmlnX1ByZWZpeFdyaXRlICJWRVJTSU9OIiAiJFBPTF9XSU5FVkVSU0lPTiIKLSB9Ci0t UE9MX1dpbmVfUHJlZml4RGVsZXRlKCkKLS17Ci0tCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgotLSAJbG9jYWwgd2luZXByZWZpeD0i JFdJTkVQUkVGSVgiCi0tCXdpbmVwcmVmaXg9JHt3aW5lcHJlZml4Ly8iLy8iLyIvIn0KLS0JbG9j YWwgc2hvcnRjdXRzPSgpCi0tCWxvY2FsIE9MRElGUz0iJElGUyIKLS0JSUZTPSQnXG4nCi0tCWNk ICIkUE9MX1VTRVJfUk9PVC9zaG9ydGN1dHMvIiAmJgotLQlmb3Igc2hvcnRjdXQgaW4gKgotLQlk bwotLQkJWyAiJChkZXRlY3Rfd2luZXByZWZpeCAiJHNob3J0Y3V0IikiID0gIiR3aW5lcHJlZml4 IiBdICYmIHNob3J0Y3V0cys9KCIkc2hvcnRjdXQiKQotLQlkb25lCi0tCUlGUz0iJE9MRElGUyIK LS0KLS0JIyBjZiBNYWluV2luZG93LkRlbGV0ZVByZWZpeCgpCi0tCVBPTF9TZXR1cFdpbmRvd193 YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnVW5pbnN0YWxsaW5nLi4uJykiICIkKGV2 YWxfZ2V0dGV4dCAnJEFQUExJQ0FUSU9OX1RJVExFIFVuaW5zdGFsbGVyJykiCi0tCWlmIFsgIiR7 I3Nob3J0Y3V0c1tAXX0iIC1ndCAwIF07IHRoZW4KLS0gCQlQT0xfRGVidWdfV2FybmluZyAiJHdp bmVwcmVmaXggaXMgc3RpbGwgaW4gdXNlIGJ5ICR7I3Nob3J0Y3V0c1tAXX0gc2hvcnRjdXRzLCBy ZW1vdmluZyB0aGVtIGZpcnN0IgotLQkJZm9yIHNob3J0Y3V0IGluICIke3Nob3J0Y3V0c1tAXX0i OyBkbwotLQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJSZW1vdmluZyBzaG9ydGN1dCAkc2hvcnRjdXQu Li4iCi0tCQkJYmFzaCAiJFBMQVlPTkxJTlVYL2Jhc2gvdW5pbnN0YWxsIiAtLW5vbi1pbnRlcmFj dGl2ZSAiJHNob3J0Y3V0IgotLQkJZG9uZQotLQlmaQotLQotLSAgICAgICAgY2xlYW5fd2luZXBy ZWZpeCAtLW5vbi1pbnRlcmFjdGl2ZSAiJFdJTkVQUkVGSVgiCi0rUE9MX1dpbmVfUHJlZml4RGVs ZXRlKCkgewotKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5F UFJFRklYIG5vdCBzZXQiCi0rICBsb2NhbCB3aW5lcHJlZml4PSIkV0lORVBSRUZJWCIKLSsgIHdp bmVwcmVmaXg9JHt3aW5lcHJlZml4Ly8iLy8iLyIvIn0KLSsgIGxvY2FsIHNob3J0Y3V0cz0oKQot KyAgbG9jYWwgT0xESUZTPSIkSUZTIgotKyAgSUZTPSQnXG4nCi0rICBjZCAiJFBPTF9VU0VSX1JP T1Qvc2hvcnRjdXRzLyIgJiYKLSsgICAgZm9yIHNob3J0Y3V0IGluICo7IGRvCi0rICAgICAgWyAi JChkZXRlY3Rfd2luZXByZWZpeCAiJHNob3J0Y3V0IikiID0gIiR3aW5lcHJlZml4IiBdICYmIHNo b3J0Y3V0cys9KCIkc2hvcnRjdXQiKQotKyAgICBkb25lCi0rICBJRlM9IiRPTERJRlMiCi0rCi0r ICAjIGNmIE1haW5XaW5kb3cuRGVsZXRlUHJlZml4KCkKLSsgIFBPTF9TZXR1cFdpbmRvd193YWl0 X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnVW5pbnN0YWxsaW5nLi4uJykiICIkKGV2YWxf Z2V0dGV4dCAnJEFQUExJQ0FUSU9OX1RJVExFIFVuaW5zdGFsbGVyJykiCi0rICBpZiBbICIkeyNz aG9ydGN1dHNbQF19IiAtZ3QgMCBdOyB0aGVuCi0rICAgIFBPTF9EZWJ1Z19XYXJuaW5nICIkd2lu ZXByZWZpeCBpcyBzdGlsbCBpbiB1c2UgYnkgJHsjc2hvcnRjdXRzW0BdfSBzaG9ydGN1dHMsIHJl bW92aW5nIHRoZW0gZmlyc3QiCi0rICAgIGZvciBzaG9ydGN1dCBpbiAiJHtzaG9ydGN1dHNbQF19 IjsgZG8KLSsgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiUmVtb3Zpbmcgc2hvcnRjdXQgJHNob3J0 Y3V0Li4uIgotKyAgICAgIGJhc2ggIiRQTEFZT05MSU5VWC9iYXNoL3VuaW5zdGFsbCIgLS1ub24t aW50ZXJhY3RpdmUgIiRzaG9ydGN1dCIKLSsgICAgZG9uZQotKyAgZmkKLSsKLSsgIGNsZWFuX3dp bmVwcmVmaXggLS1ub24taW50ZXJhY3RpdmUgIiRXSU5FUFJFRklYIgotIH0KLS1QT0xfV2luZV9Q cmVmaXhDcmVhdGUoKQotLXsKLS0JIyBDcmVhdGUgYSB3aW5lcHJlZml4Ci0tCSMgVXNhZ2U6IFBP TF9XaW5lX1ByZWZpeENyZWF0ZSBbVkVSU0lPTl0KLS0JaWYgWyAhICIkMSIgPSAiIiBdOyB0aGVu Ci0tCQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBQT0xfV0lORVZFUlNJT04gdG8gJDEiCi0t CQlleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKLS0JZWxpZiBbICIkUE9MX1dJTkVWRVJTSU9O IiBdOyB0aGVuCi0tCQlQT0xfRGVidWdfTWVzc2FnZSAiUE9MX1dJTkVWRVJTSU9OIGlzIGFscmVh ZHkgc2V0IHRvICRQT0xfV0lORVZFUlNJT04uIFVzaW5nIGl0IgotLQllbHNlCi0tCQlQT0xfRGVi dWdfTWVzc2FnZSAiTm8gdmVyc2lvbiBzcGVjaWZpZWQuIFVzaW5nIHN5c3RlbSB2ZXJzaW9uICgk KHdpbmUgLS12ZXJzaW9uKSkiCi0tCWZpCi0tCi0tCVBPTF9EZWJ1Z19NZXNzYWdlICJDcmVhdGlu ZyBwcmVmaXggKCRQT0xfV0lORVZFUlNJT04pLi4uIgotLQlbICIkUE9MX0FSQ0giID0gIiIgXSAm JiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCi0tCVsgIiRXSU5FUFJFRklYIiA9ICIiIF0gJiYg UE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlzIG5vdCBzZXQhIgotLQotLQlpZiBbIC1lICIk V0lORVBSRUZJWCIgXTsgdGhlbgotLQkJUE9MX0RlYnVnX01lc3NhZ2UgIlByZWZpeCBhbHJlYWR5 IGV4aXN0cyIKLS0JCUxOR19PVkVSV1JJVEU9IiQoZXZhbF9nZXR0ZXh0ICdPdmVyd3JpdGUgKHVz dWFsbHkgd29ya3MsIG5vIGd1YXJhbnRlZSknKSIKLS0JCUxOR19FUkFTRT0iJChldmFsX2dldHRl eHQgJ0VyYXNlICh2aXJ0dWFsIGRyaXZlIGNvbnRlbnQgd2lsbCBiZSBsb3N0KScpIgotLQkJTE5H X0FCT1JUPSIkKGV2YWxfZ2V0dGV4dCAnQWJvcnQgaW5zdGFsbGF0aW9uJykiCi0tCi0tCQlPTERf QVJDSD0iIgotLQkJWyAtZSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiBdICYmIE9MRF9B UkNIPSQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJBUkNIIikKLS0JCWlmIFsgIiRPTERfQVJDSCIg PSAiJFBPTF9VU0VSX0FSQ0giIF07IHRoZW4KLS0JCQlQUkVGSVhfQ0hPSUNFUz0iJExOR19PVkVS V1JJVEV+JExOR19FUkFTRX4kTE5HX0FCT1JUIgotLQkJZWxzZQotLQkJCSMgU2V0dGluZ3MgYXJl IG5vdCBjb21wYXRpYmxlLCBvdmVyd3JpdGluZyBpcyBub3QgYW4gb3B0aW9uCi0tCQkJUFJFRklY X0NIT0lDRVM9IiRMTkdfRVJBU0V+JExOR19BQk9SVCIKLS0JCWZpCi0tCi0tCQlPTERfQVBQX0FO V1NFUj0iJEFQUF9BTlNXRVIiCi0tCQlQUkVGTkFNRT0iJChiYXNlbmFtZSAkV0lORVBSRUZJWCki Ci0tCQlQT0xfU2V0dXBXaW5kb3dfbWVudSAiJChldmFsX2dldHRleHQgJ1RoZSB0YXJnZXQgdmly dHVhbCBkcml2ZSAkUFJFRk5BTUUgYWxyZWFkeSBleGlzdHM6JykiICIkVElUTEUiICIkUFJFRklY X0NIT0lDRVMiICJ+IgotLQkJY2FzZSAiJEFQUF9BTlNXRVIiIGluCi0tCQkJIiRMTkdfT1ZFUldS SVRFIikKLS0JCQkJIyBQcmVmaXggY29udGVudCBpcyBub3QgcmVwcm9kdWNpYmxlLCBpdCdzIHRl bXB0aW5nIHRvIGRpc2FsbG93IHJlcG9ydHMKLS0JCQkJIyBOT0JVR1JFUE9SVD0iVFJVRSIKLS0J CQkJUE9MX0RlYnVnX01lc3NhZ2UgIk92ZXJ3cml0ZSBQcmVmaXgiCi0tCQkJCSMgU2hvdWxkIHdl IHJldmVydCB3aGF0IGhhcyBiZWVuIGF1dG9kZXRlY3RlZCBieSBTZWxlY3RQcmVmaXggaGVyZSB0 b28/Ci0tCQkJCTs7Ci0tCQkJIiRMTkdfRVJBU0UiKQotLQkJCQlQT0xfRGVidWdfTWVzc2FnZSAi RXJhc2UgUHJlZml4IgotLQkJCQlQT0xfV2luZV9QcmVmaXhEZWxldGUKLS0JCQkJIyBSZXZlcnQg d2hhdCBjb3VsZCBoYXZlIGJlZW4gYXV0b2RldGVjdGVkIHdpdGggU2VsZWN0UHJlZml4Ci0tCQkJ CVBPTF9BUkNIPSIkUE9MX1VTRVJfQVJDSCIKLS0JCQkJOzsKLS0JCQkqKQotLQkJCQlOT0JVR1JF UE9SVD0iVFJVRSIKLS0JCQkJUE9MX0RlYnVnX0ZhdGFsICIkKGV2YWxfZ2V0dGV4dCAnVXNlciBh Ym9ydCcpIgotLQkJCQk7OwotLQkJZXNhYwotLQkJQVBQX0FOU1dFUj0iJE9MRF9BUFBfQU5XU0VS IgotLQlmaQotLQotLQlQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRleHQgJ1BsZWFz ZSB3YWl0IHdoaWxlIHRoZSB2aXJ0dWFsIGRyaXZlIGlzIGJlaW5nIGNyZWF0ZWQuLi4nKSIgIiRU SVRMRSIKLS0JaWYgWyAtZSAiJFdJTkVQUkVGSVgiIF07IHRoZW4KLS0JCXRvdWNoICIkV0lORVBS RUZJWC9wbGF5b25saW51eC5jZmciCi0tCQlpZiBbICEgIiRQT0xfV0lORVZFUlNJT04iID0gIiIg XTsgdGhlbgotLQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHZlcnNpb24gdG8gJFBPTF9X SU5FVkVSU0lPTiIKLS0JCQlQT0xfV2luZV9TZXRWZXJzaW9uUHJlZml4ICIkUE9MX1dJTkVWRVJT SU9OIgotLQkJCVBPTF9XaW5lX1NldFZlcnNpb25FbnYKLS0JCWZpCi0tCWVsc2UJIyBQcmVmaXgg ZG9lcyBub3QgZXhpdCwgbGV0J3MgY3JlYXRlIGl0Ci0tCQlpZiBbICIkUE9MX1dJTkVWRVJTSU9O IiA9ICIiIF07IHRoZW4KLS0JCQkjIFN5c3RlbSB3aW5ldmVyc2lvbgotLQkJCSMjIFJlYWxseSBi YWQgaWRlYQotLQkJCSMjIGV4cG9ydCBXSU5FQVJDSD13aW4zMgotLQkJCWlmIFsgISAiJFBPTF9B UkNIIiA9ICIiIF07IHRoZW4KLS0JCQkJaWYgWyAiJFBPTF9BUkNIIiA9ICJ4ODYiIF07IHRoZW4K LS0JCQkJCWV4cG9ydCBXSU5FQVJDSD13aW4zMgotLQkJCQllbHNlCi0tCQkJCQlleHBvcnQgV0lO RUFSQ0g9d2luNjQKLS0JCQkJZmkKLS0JCQkJUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgV0lO RUFSQ0ggdG8gJFdJTkVBUkNIIgotLQkJCWZpCi0tCi0tCQkJd2luZSB3aW5lYm9vdAotLQkJCVBP TF9EZWJ1Z19Jbml0UHJlZml4Ci0tCi0tCQkJaWYgWyAtZSAiJFdJTkVQUkVGSVgvZHJpdmVfYy93 aW5kb3dzL3N5c3dvdzY0IiBdICMgSXQgaXMgYSA2NCBiaXRzIHByZWZpeAotLQkJCXRoZW4KLS0J CQkJUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgImFtZDY0IgotLQkJCQlQT0xfRGVidWdf TG9nVG9QcmVmaXggIlRoaXMgaXMgYSA2NGJpdHMgcHJlZml4ISIKLS0JCQkJUE9MX0NvbmZpZ19X cml0ZSBXSU5FX1NZU1RFTV9BUkNIIGFtZDY0Ci0tCQkJZWxzZQotLQkJCQlQT0xfQ29uZmlnX1By ZWZpeFdyaXRlICJBUkNIIiAieDg2IgotLQkJCQlQT0xfRGVidWdfTG9nVG9QcmVmaXggIlRoaXMg aXMgYSAzMmJpdHMgcHJlZml4ISIKLS0JCQkJUE9MX0NvbmZpZ19Xcml0ZSBXSU5FX1NZU1RFTV9B UkNIIHg4NgotLQkJCWZpCi0tCQllbHNlCi0tCQkJbWtkaXIgLXAgIiRXSU5FUFJFRklYIgotLQkJ CVBPTF9EZWJ1Z19NZXNzYWdlICJVc2luZyB3aW5lICRQT0xfV0lORVZFUlNJT04iCi0tCQkJUE9M X1dpbmVfSW5zdGFsbFZlcnNpb24gIiRQT0xfV0lORVZFUlNJT04iCi0tCQkJUE9MX1NldHVwV2lu ZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgdmlydHVhbCBk cml2ZSBpcyBiZWluZyBjcmVhdGVkLi4uJykiICIkVElUTEUiCi0tCQkJUE9MX0NvbmZpZ19QcmVm aXhXcml0ZSAiQVJDSCIgIiRQT0xfQVJDSCIKLS0JCQlQT0xfQ29uZmlnX1ByZWZpeFdyaXRlICJW RVJTSU9OIiAiJFBPTF9XSU5FVkVSU0lPTiIKLS0JCQlQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVu dgotLQotLQkJCVBPTF9EZWJ1Z19Jbml0UHJlZml4Ci0tCi0tCQkJd2hpY2ggd2luZXByZWZpeGNy ZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlKSIpIiAh PSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThhNTM0MTViNDc2NWQiIF0gJiYgWyAhICIkKHdoaWNoIHdp bmVwcmVmaXhjcmVhdGUgfCBncmVwICRBUFBMSUNBVElPTl9USVRMRSkiID0gIiIgXSAmJiB3aW5l IHdpbmVwcmVmaXhjcmVhdGUKLS0JCQl3aW5lIHdpbmVib290Ci0tCQlmaQotLQlmaQotLQotLQkj IE1ha2Ugc3VyZSB0aGF0IC5yZWcgZmlsZXMgYXJlIGNyZWF0ZWQKLS0JaWYgd2hpY2ggd2luZXNl cnZlcjsgdGhlbgotLQkJd2luZXNlcnZlciAtdwotLQllbHNlCi0tCQlQT0xfRGVidWdfTWVzc2Fn ZSAiV2FybmluZywgd2luZXNlcnZlciBub3QgZm91bmQiCi0tCQlzbGVlcCA0Ci0tCWZpCi0tCVBP TF9Mb2FkVmFyX1BST0dSQU1GSUxFUwotLQlbIC1lICIkUE9MX1VTRVJfUk9PVC9jb25maWd1cmF0 aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIgXSAmJiBcCi0tCSAgICBzb3VyY2UgIiRQT0xfVVNFUl9S T09UL2NvbmZpZ3VyYXRpb25zL3Bvc3RfcHJlZml4Y3JlYXRlIgotK1BPTF9XaW5lX1ByZWZpeENy ZWF0ZSgpIHsKLSsgICMgQ3JlYXRlIGEgd2luZXByZWZpeAotKyAgIyBVc2FnZTogUE9MX1dpbmVf UHJlZml4Q3JlYXRlIFtWRVJTSU9OXQotKyAgaWYgWyAhICIkMSIgPSAiIiBdOyB0aGVuCi0rICAg IFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFBPTF9XSU5FVkVSU0lPTiB0byAkMSIKLSsgICAg ZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCi0rICBlbGlmIFsgIiRQT0xfV0lORVZFUlNJT04i IF07IHRoZW4KLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlBPTF9XSU5FVkVSU0lPTiBpcyBhbHJl YWR5IHNldCB0byAkUE9MX1dJTkVWRVJTSU9OLiBVc2luZyBpdCIKLSsgIGVsc2UKLSsgICAgUE9M X0RlYnVnX01lc3NhZ2UgIk5vIHZlcnNpb24gc3BlY2lmaWVkLiBVc2luZyBzeXN0ZW0gdmVyc2lv biAoJCh3aW5lIC0tdmVyc2lvbikpIgotKyAgZmkKLSsKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJD cmVhdGluZyBwcmVmaXggKCRQT0xfV0lORVZFUlNJT04pLi4uIgotKyAgWyAiJFBPTF9BUkNIIiA9 ICIiIF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgotKyAgWyAiJFdJTkVQUkVGSVgiID0g IiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCi0rCi0rICBp ZiBbIC1lICIkV0lORVBSRUZJWCIgXTsgdGhlbgotKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiUHJl Zml4IGFscmVhZHkgZXhpc3RzIgotKyAgICBMTkdfT1ZFUldSSVRFPSIkKGV2YWxfZ2V0dGV4dCAn T3ZlcndyaXRlICh1c3VhbGx5IHdvcmtzLCBubyBndWFyYW50ZWUpJykiCi0rICAgIExOR19FUkFT RT0iJChldmFsX2dldHRleHQgJ0VyYXNlICh2aXJ0dWFsIGRyaXZlIGNvbnRlbnQgd2lsbCBiZSBs b3N0KScpIgotKyAgICBMTkdfQUJPUlQ9IiQoZXZhbF9nZXR0ZXh0ICdBYm9ydCBpbnN0YWxsYXRp b24nKSIKLSsKLSsgICAgT0xEX0FSQ0g9IiIKLSsgICAgWyAtZSAiJFdJTkVQUkVGSVgvcGxheW9u bGludXguY2ZnIiBdICYmIE9MRF9BUkNIPSQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJBUkNIIikK LSsgICAgaWYgWyAiJE9MRF9BUkNIIiA9ICIkUE9MX1VTRVJfQVJDSCIgXTsgdGhlbgotKyAgICAg IFBSRUZJWF9DSE9JQ0VTPSIkTE5HX09WRVJXUklURX4kTE5HX0VSQVNFfiRMTkdfQUJPUlQiCi0r ICAgIGVsc2UKLSsgICAgICAjIFNldHRpbmdzIGFyZSBub3QgY29tcGF0aWJsZSwgb3ZlcndyaXRp bmcgaXMgbm90IGFuIG9wdGlvbgotKyAgICAgIFBSRUZJWF9DSE9JQ0VTPSIkTE5HX0VSQVNFfiRM TkdfQUJPUlQiCi0rICAgIGZpCi0rCi0rICAgIE9MRF9BUFBfQU5XU0VSPSIkQVBQX0FOU1dFUiIK LSsgICAgUFJFRk5BTUU9IiQoYmFzZW5hbWUgJFdJTkVQUkVGSVgpIgotKyAgICBQT0xfU2V0dXBX aW5kb3dfbWVudSAiJChldmFsX2dldHRleHQgJ1RoZSB0YXJnZXQgdmlydHVhbCBkcml2ZSAkUFJF Rk5BTUUgYWxyZWFkeSBleGlzdHM6JykiICIkVElUTEUiICIkUFJFRklYX0NIT0lDRVMiICJ+Igot KyAgICBjYXNlICIkQVBQX0FOU1dFUiIgaW4KLSsgICAgIiRMTkdfT1ZFUldSSVRFIikKLSsgICAg ICAjIFByZWZpeCBjb250ZW50IGlzIG5vdCByZXByb2R1Y2libGUsIGl0J3MgdGVtcHRpbmcgdG8g ZGlzYWxsb3cgcmVwb3J0cwotKyAgICAgICMgTk9CVUdSRVBPUlQ9IlRSVUUiCi0rICAgICAgUE9M X0RlYnVnX01lc3NhZ2UgIk92ZXJ3cml0ZSBQcmVmaXgiCi0rICAgICAgIyBTaG91bGQgd2UgcmV2 ZXJ0IHdoYXQgaGFzIGJlZW4gYXV0b2RldGVjdGVkIGJ5IFNlbGVjdFByZWZpeCBoZXJlIHRvbz8K LSsgICAgICA7OwotKyAgICAiJExOR19FUkFTRSIpCi0rICAgICAgUE9MX0RlYnVnX01lc3NhZ2Ug IkVyYXNlIFByZWZpeCIKLSsgICAgICBQT0xfV2luZV9QcmVmaXhEZWxldGUKLSsgICAgICAjIFJl dmVydCB3aGF0IGNvdWxkIGhhdmUgYmVlbiBhdXRvZGV0ZWN0ZWQgd2l0aCBTZWxlY3RQcmVmaXgK LSsgICAgICBQT0xfQVJDSD0iJFBPTF9VU0VSX0FSQ0giCi0rICAgICAgOzsKLSsgICAgKikKLSsg ICAgICBOT0JVR1JFUE9SVD0iVFJVRSIKLSsgICAgICBQT0xfRGVidWdfRmF0YWwgIiQoZXZhbF9n ZXR0ZXh0ICdVc2VyIGFib3J0JykiCi0rICAgICAgOzsKLSsgICAgZXNhYwotKyAgICBBUFBfQU5T V0VSPSIkT0xEX0FQUF9BTldTRVIiCi0rICBmaQotKwotKyAgUE9MX1NldHVwV2luZG93X3dhaXQg IiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgdmlydHVhbCBkcml2ZSBpcyBi ZWluZyBjcmVhdGVkLi4uJykiICIkVElUTEUiCi0rICBpZiBbIC1lICIkV0lORVBSRUZJWCIgXTsg dGhlbgotKyAgICB0b3VjaCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIgotKyAgICBpZiBb ICEgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXTsgdGhlbgotKyAgICAgIFBPTF9EZWJ1Z19NZXNz YWdlICJTZXR0aW5nIHZlcnNpb24gdG8gJFBPTF9XSU5FVkVSU0lPTiIKLSsgICAgICBQT0xfV2lu ZV9TZXRWZXJzaW9uUHJlZml4ICIkUE9MX1dJTkVWRVJTSU9OIgotKyAgICAgIFBPTF9XaW5lX1Nl dFZlcnNpb25FbnYKLSsgICAgZmkKLSsgIGVsc2UgIyBQcmVmaXggZG9lcyBub3QgZXhpdCwgbGV0 J3MgY3JlYXRlIGl0Ci0rICAgIGlmIFsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXTsgdGhlbgot KyAgICAgICMgU3lzdGVtIHdpbmV2ZXJzaW9uCi0rICAgICAgIyMgUmVhbGx5IGJhZCBpZGVhCi0r ICAgICAgIyMgZXhwb3J0IFdJTkVBUkNIPXdpbjMyCi0rICAgICAgaWYgWyAhICIkUE9MX0FSQ0gi ID0gIiIgXTsgdGhlbgotKyAgICAgICAgaWYgWyAiJFBPTF9BUkNIIiA9ICJ4ODYiIF07IHRoZW4K LSsgICAgICAgICAgZXhwb3J0IFdJTkVBUkNIPXdpbjMyCi0rICAgICAgICBlbHNlCi0rICAgICAg ICAgIGV4cG9ydCBXSU5FQVJDSD13aW42NAotKyAgICAgICAgZmkKLSsgICAgICAgIFBPTF9EZWJ1 Z19NZXNzYWdlICJTZXR0aW5nIFdJTkVBUkNIIHRvICRXSU5FQVJDSCIKLSsgICAgICBmaQotKwot KyAgICAgIHdpbmUgd2luZWJvb3QKLSsgICAgICBQT0xfRGVidWdfSW5pdFByZWZpeAotKwotKyAg ICAgIGlmIFsgLWUgIiRXSU5FUFJFRklYL2RyaXZlX2Mvd2luZG93cy9zeXN3b3c2NCIgXTsgdGhl biAjIEl0IGlzIGEgNjQgYml0cyBwcmVmaXgKLSsgICAgICAgIFBPTF9Db25maWdfUHJlZml4V3Jp dGUgIkFSQ0giICJhbWQ2NCIKLSsgICAgICAgIFBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVGhpcyBp cyBhIDY0Yml0cyBwcmVmaXghIgotKyAgICAgICAgUE9MX0NvbmZpZ19Xcml0ZSBXSU5FX1NZU1RF TV9BUkNIIGFtZDY0Ci0rICAgICAgZWxzZQotKyAgICAgICAgUE9MX0NvbmZpZ19QcmVmaXhXcml0 ZSAiQVJDSCIgIng4NiIKLSsgICAgICAgIFBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVGhpcyBpcyBh IDMyYml0cyBwcmVmaXghIgotKyAgICAgICAgUE9MX0NvbmZpZ19Xcml0ZSBXSU5FX1NZU1RFTV9B UkNIIHg4NgotKyAgICAgIGZpCi0rICAgIGVsc2UKLSsgICAgICBta2RpciAtcCAiJFdJTkVQUkVG SVgiCi0rICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlVzaW5nIHdpbmUgJFBPTF9XSU5FVkVSU0lP TiIKLSsgICAgICBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIKLSsg ICAgICBleGl0Q29kZT0iJD8iCi0rICAgICAgUE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9n ZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgdmlydHVhbCBkcml2ZSBpcyBiZWluZyBjcmVh dGVkLi4uJykiICIkVElUTEUiCi0rCi0rICAgICAgaWYgW1sgISAiJGV4aXRDb2RlIiA9PSAiMiIg XV07IHRoZW4gIyMgV2luZSB2ZXJzaW9uIGlzIGFjdHVhbGx5IGZvdW5kCi0rICAgICAgICBQT0xf Q29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAiJFBPTF9BUkNIIgotKyAgICAgICAgUE9MX0NvbmZp Z19QcmVmaXhXcml0ZSAiVkVSU0lPTiIgIiRQT0xfV0lORVZFUlNJT04iCi0rICAgICAgZmkKLSsK LSsgICAgICBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgotKwotKyAgICAgIFBPTF9EZWJ1Z19J bml0UHJlZml4Ci0rCi0rICAgICAgd2hpY2ggd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9N RDVfZmlsZSAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4 MTE2OThhNTM0MTViNDc2NWQiIF0gJiYgWyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgfCBn cmVwICRBUFBMSUNBVElPTl9USVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUK LSsgICAgICB3aW5lIHdpbmVib290Ci0rICAgIGZpCi0rICBmaQotKwotKyAgIyBNYWtlIHN1cmUg dGhhdCAucmVnIGZpbGVzIGFyZSBjcmVhdGVkCi0rICBpZiB3aGljaCB3aW5lc2VydmVyOyB0aGVu Ci0rICAgIHdpbmVzZXJ2ZXIgLXcKLSsgIGVsc2UKLSsgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldh cm5pbmcsIHdpbmVzZXJ2ZXIgbm90IGZvdW5kIgotKyAgICBzbGVlcCA0Ci0rICBmaQotKyAgUE9M X0xvYWRWYXJfUFJPR1JBTUZJTEVTCi0rICBbIC1lICIkUE9MX1VTRVJfUk9PVC9jb25maWd1cmF0 aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIgXSAmJgotKyAgICBzb3VyY2UgIiRQT0xfVVNFUl9ST09U L2NvbmZpZ3VyYXRpb25zL3Bvc3RfcHJlZml4Y3JlYXRlIgotIH0KLS1QT0xfV2luZV9PdmVycmlk ZURMTCgpCi0tewotLQkjIE92ZXJyaWRlIERMTHMKLS0JTU9ERT0kMQotLQlbICIkTU9ERSIgPSAi ZGlzYWJsZWQiIF0gJiYgdW5zZXQgTU9ERQotLQlzaGlmdAotLQotLQkoY2F0IDw8ICdFT0YnCi0r UE9MX1dpbmVfT3ZlcnJpZGVETEwoKSB7Ci0rICAjIE92ZXJyaWRlIERMTHMKLSsgIE1PREU9JDEK LSsgIFsgIiRNT0RFIiA9ICJkaXNhYmxlZCIgXSAmJiB1bnNldCBNT0RFCi0rICBzaGlmdAotKwot KyAgKAotKyAgICBjYXQgPDwnRU9GJwotIFJFR0VESVQ0Ci0gCi0gW0hLRVlfQ1VSUkVOVF9VU0VS XFNvZnR3YXJlXFdpbmVcRGxsT3ZlcnJpZGVzXQotIEVPRgotIAotLQlmb3IgRExMIGluICIkQCIK LS0JZG8KLS0JCWVjaG8gIlwiKiRETExcIj1cIiRNT0RFXCIiCi0tCWRvbmUpID4gIiRQT0xfVVNF Ul9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgotKyAgICBmb3IgRExMIGluICIkQCI7IGRvCi0r ICAgICAgZWNobyAiXCIqJERMTFwiPVwiJE1PREVcIiIKLSsgICAgZG9uZQotKyAgKSA+IiRQT0xf VVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgotIAotLQlQT0xfRGVidWdfTWVzc2FnZSAi T3ZlcnJpZGluZyBETExzIgotLQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChl dmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0Li4uJykiICIkVElUTEUiCi0tCVBPTF9XaW5lIHJlZ2Vk aXQgIiRQT0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgotLQlybSAiJFBPTF9VU0VS X1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCi0rICBQT0xfRGVidWdfTWVzc2FnZSAiT3ZlcnJp ZGluZyBETExzIgotKyAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9n ZXR0ZXh0ICdQbGVhc2Ugd2FpdC4uLicpIiAiJFRJVExFIgotKyAgUE9MX1dpbmUgcmVnZWRpdCAi JFBPTF9VU0VSX1JPT1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCi0rICBybSAiJFBPTF9VU0VSX1JP T1QvdG1wL292ZXJyaWRlLWRsbC5yZWciCi0gfQotLVBPTF9XaW5lX0RlbE92ZXJyaWRlRExMKCkK LS17Ci0tCSMgRGVsZXRlIG92ZXJyaWRlIERMTHMKLS0JKGNhdCA8PCAnRU9GJwotK1BPTF9XaW5l X0RlbE92ZXJyaWRlRExMKCkgewotKyAgIyBEZWxldGUgb3ZlcnJpZGUgRExMcwotKyAgKAotKyAg ICBjYXQgPDwnRU9GJwotIFJFR0VESVQ0Ci0gCi0gW0hLRVlfQ1VSUkVOVF9VU0VSXFNvZnR3YXJl XFdpbmVcRGxsT3ZlcnJpZGVzXQotIEVPRgotIAotLQlmb3IgRExMIGluICIkQCIKLS0JZG8KLS0J CWVjaG8gIlwiJERMTFwiPS0iCi0tCQllY2hvICJcIiokRExMXCI9LSIKLS0JZG9uZSkgPiAiJFBP TF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgotLQlQT0xfRGVidWdfTWVzc2Fn ZSAiRGVsZXRpbmcgb3ZlcnJpZGVzIERMTHMiCi0tCVBPTF9TZXR1cFdpbmRvd193YWl0X25leHRf c2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQuLi4nKSIgIiRUSVRMRSIKLS0JUE9M X1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgot LQlybSAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgotKyAgICBmb3Ig RExMIGluICIkQCI7IGRvCi0rICAgICAgZWNobyAiXCIkRExMXCI9LSIKLSsgICAgICBlY2hvICJc IiokRExMXCI9LSIKLSsgICAgZG9uZQotKyAgKSA+IiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtb3Zl cnJpZGUtZGxsLnJlZyIKLSsgIFBPTF9EZWJ1Z19NZXNzYWdlICJEZWxldGluZyBvdmVycmlkZXMg RExMcyIKLSsgIFBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4 dCAnUGxlYXNlIHdhaXQuLi4nKSIgIiRUSVRMRSIKLSsgIFBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xf VVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIKLSsgIHJtICIkUE9MX1VTRVJfUk9P VC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCi0gfQotLVBPTF9XaW5lX092ZXJyaWRlRExMX0Fw cCgpCi0tewotLQkjIEFwcC1zcGVjaWZpYyBETEwgb3ZlcnJpZGVzCi0tCUFQUD0iJDEiCi0tCU1P REU9IiQyIgotLQlbICIkTU9ERSIgPSAiZGlzYWJsZWQiIF0gJiYgdW5zZXQgTU9ERQotLQlzaGlm dCAyCi0tCi0tCShjYXQgPDwgRU9GCi0rUE9MX1dpbmVfT3ZlcnJpZGVETExfQXBwKCkgewotKyAg IyBBcHAtc3BlY2lmaWMgRExMIG92ZXJyaWRlcwotKyAgQVBQPSIkMSIKLSsgIE1PREU9IiQyIgot KyAgWyAiJE1PREUiID0gImRpc2FibGVkIiBdICYmIHVuc2V0IE1PREUKLSsgIHNoaWZ0IDIKLSsK LSsgICgKLSsgICAgY2F0IDw8RU9GCi0gUkVHRURJVDQKLSAKLSBbSEtFWV9DVVJSRU5UX1VTRVJc XFNvZnR3YXJlXFxXaW5lXFxBcHBEZWZhdWx0c1xcJEFQUFxcRGxsT3ZlcnJpZGVzXQotIEVPRgot LQlmb3IgRExMIGluICIkQCIKLS0JZG8KLS0JCSMgV2hvIGtub3dzIHdoYXQgdGhpcyBoYWNrIGlz IGZvcj8KLS0JCWlmIFsgIiRETEwiID0gImNvbWN0bDMyIiBdOyB0aGVuCi0tCQkJcm0gLXJmICIk V0lORVBSRUZJWC93aW5zeHMvbWFuaWZlc3RzL3g4Nl9taWNyb3NvZnQud2luZG93cy5jb21tb24t Y29udHJvbHNfNjU5NWI2NDE0NGNjZjFkZl82LjAuMjYwMC4yOTgyX25vbmVfZGVhZGJlZWYubWFu aWZlc3QiCi0tCQlmaQotLQkJZWNobyAiXCIqJERMTFwiPVwiJE1PREVcIiIKLS0JZG9uZSkgPiAi JFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgotLQlQT0xfV2luZSByZWdl ZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWciCi0tCXJtICIkUE9M X1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWciCi0rICAgIGZvciBETEwgaW4gIiRA IjsgZG8KLSsgICAgICAjIFdobyBrbm93cyB3aGF0IHRoaXMgaGFjayBpcyBmb3I/Ci0rICAgICAg aWYgWyAiJERMTCIgPSAiY29tY3RsMzIiIF07IHRoZW4KLSsgICAgICAgIHJtIC1yZiAiJFdJTkVQ UkVGSVgvd2luc3hzL21hbmlmZXN0cy94ODZfbWljcm9zb2Z0LndpbmRvd3MuY29tbW9uLWNvbnRy b2xzXzY1OTViNjQxNDRjY2YxZGZfNi4wLjI2MDAuMjk4Ml9ub25lX2RlYWRiZWVmLm1hbmlmZXN0 IgotKyAgICAgIGZpCi0rICAgICAgZWNobyAiXCIqJERMTFwiPVwiJE1PREVcIiIKLSsgICAgZG9u ZQotKyAgKSA+IiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLSsgIFBP TF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJlZyIK LSsgIHJtICIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1vdmVycmlkZS5yZWciCi0gfQotLVBP TF9XaW5lX0RlbE92ZXJyaWRlRExMX0FwcCgpCi0tewotLQkjIERlbGV0ZSBhcHAtc3BlY2lmaWMg RExMIG92ZXJyaWRlcwotLQlBUFA9IiQxIgotLQlzaGlmdAotK1BPTF9XaW5lX0RlbE92ZXJyaWRl RExMX0FwcCgpIHsKLSsgICMgRGVsZXRlIGFwcC1zcGVjaWZpYyBETEwgb3ZlcnJpZGVzCi0rICBB UFA9IiQxIgotKyAgc2hpZnQKLSAKLS0JKGNhdCA8PCBFT0YKLSsgICgKLSsgICAgY2F0IDw8RU9G Ci0gUkVHRURJVDQKLSAKLSBbSEtFWV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlXFxXaW5lXFxBcHBE ZWZhdWx0c1xcJEFQUFxcRGxsT3ZlcnJpZGVzXQotIEVPRgotLQlmb3IgRExMIGluICIkQCIKLS0J ZG8KLS0JCWVjaG8gIlwiJERMTFwiPS0iCi0tCQllY2hvICJcIiokRExMXCI9LSIKLS0JZG9uZSkg PiAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLS0JUE9MX1dp bmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIK LS0Jcm0gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCi0rICAg IGZvciBETEwgaW4gIiRAIjsgZG8KLSsgICAgICBlY2hvICJcIiRETExcIj0tIgotKyAgICAgIGVj aG8gIlwiKiRETExcIj0tIgotKyAgICBkb25lCi0rICApID4iJFBPTF9VU0VSX1JPT1QvdG1wL2Rl bC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLSsgIFBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9S T09UL3RtcC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCi0rICBybSAiJFBPTF9VU0VSX1JPT1Qv dG1wL2RlbC1hcHAtZGxsLW92ZXJyaWRlLnJlZyIKLSB9Ci0tUE9MX1dpbmVfUmVkaXJlY3RETEwo KQotLXsKLS0gICAgIyBSZWRpcmVjdCBETExzIHdpbmUtc3RhZ2luZyBmZWF0dXJlCi0tICAgICMg aHR0cHM6Ly9naXRodWIuY29tL3dpbmUtY29tcGhvbGlvL3dpbmUtc3RhZ2luZy93aWtpL0RMTC1S ZWRpcmVjdHMKLS0gICAgbG9jYWwgU09VUkNFPSIkMSIKLS0gICAgbG9jYWwgVEFSR0VUPSIkMiIK LS0gICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGxsUmVkaXJlY3RzJyAiJFNP VVJDRSIgIiRUQVJHRVQiCi0rUE9MX1dpbmVfUmVkaXJlY3RETEwoKSB7Ci0rICAjIFJlZGlyZWN0 IERMTHMgd2luZS1zdGFnaW5nIGZlYXR1cmUKLSsgICMgaHR0cHM6Ly9naXRodWIuY29tL3dpbmUt Y29tcGhvbGlvL3dpbmUtc3RhZ2luZy93aWtpL0RMTC1SZWRpcmVjdHMKLSsgIGxvY2FsIFNPVVJD RT0iJDEiCi0rICBsb2NhbCBUQVJHRVQ9IiQyIgotKyAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpciAnRGxsUmVkaXJlY3RzJyAiJFNPVVJDRSIgIiRUQVJHRVQiCi0gfQotLVBPTF9XaW5l X0RlbFJlZGlyZWN0RExMKCkKLS17Ci0tICAgIGxvY2FsIFNPVVJDRT0iJDEiCi0tICAgIFBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RsbFJlZGlyZWN0cycgIiRTT1VSQ0UiICdkZWZh dWx0JwotK1BPTF9XaW5lX0RlbFJlZGlyZWN0RExMKCkgewotKyAgbG9jYWwgU09VUkNFPSIkMSIK LSsgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RsbFJlZGlyZWN0cycgIiRTT1VS Q0UiICdkZWZhdWx0JwotIH0KLS1QT0xfV2luZV9SZWRpcmVjdERMTF9BcHAoKQotLXsKLS0gICAg IyBBcHAtc3BlY2lmaWMgRExMIHJlZGlyZWN0Ci0tICAgIGxvY2FsIEFQUD0iJDEiCi0tICAgIGxv Y2FsIFNPVVJDRT0iJDIiCi0tICAgIGxvY2FsIFRBUkdFVD0iJDMiCi0tICAgIFBPTF9XaW5lX1Vw ZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgIkFwcERlZmF1bHRzXFwkQVBQXFxEbGxSZWRpcmVjdHMiICIk U09VUkNFIiAiJFRBUkdFVCIKLStQT0xfV2luZV9SZWRpcmVjdERMTF9BcHAoKSB7Ci0rICAjIEFw cC1zcGVjaWZpYyBETEwgcmVkaXJlY3QKLSsgIGxvY2FsIEFQUD0iJDEiCi0rICBsb2NhbCBTT1VS Q0U9IiQyIgotKyAgbG9jYWwgVEFSR0VUPSIkMyIKLSsgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 V2luZVBhaXIgIkFwcERlZmF1bHRzXFwkQVBQXFxEbGxSZWRpcmVjdHMiICIkU09VUkNFIiAiJFRB UkdFVCIKLSB9Ci0tUE9MX1dpbmVfRGVsUmVkaXJlY3RETExfQXBwKCkKLS17Ci0tICAgICMgQXBw LXNwZWNpZmljIERMTCByZWRpcmVjdAotLSAgICBsb2NhbCBBUFA9IiQxIgotLSAgICBsb2NhbCBT T1VSQ0U9IiQyIgotLSAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICJBcHBEZWZh dWx0c1xcJEFQUFxcRGxsUmVkaXJlY3RzIiAiJFNPVVJDRSIgJ2RlZmF1bHQnCi0rUE9MX1dpbmVf RGVsUmVkaXJlY3RETExfQXBwKCkgewotKyAgIyBBcHAtc3BlY2lmaWMgRExMIHJlZGlyZWN0Ci0r ICBsb2NhbCBBUFA9IiQxIgotKyAgbG9jYWwgU09VUkNFPSIkMiIKLSsgIFBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgIkFwcERlZmF1bHRzXFwkQVBQXFxEbGxSZWRpcmVjdHMiICIkU09V UkNFIiAnZGVmYXVsdCcKLSB9Ci0tUE9MX1dpbmVfV2FpdEJlZm9yZSAoKQotLXsKLS0JIyBMb2Nr IGJhc2ggY29tbWFuZHMgdW50aWwgd2luZSBpcyBleGl0ZWQKLS0JIyBVc2FnZSA6IFBPTF9XaW5l X1dhaXRCZWZvcmUgW1Byb2dyYW0gdGl0bGVdICgtLWFsbG93LWtpbGwpCi0tCVNPRlROQU1FPSIk MSIKLS0JaWYgWyAiJDIiID0gIi0tYWxsb3cta2lsbCIgXQotLQl0aGVuCi0tCQlhbGxvd0tpbGw9 InRydWUiCi0tCWVsc2UKLS0JCWFsbG93S2lsbD0iZmFsc2UiCi0tCWZpCi0tCi0tCVsgIiQxIiA9 ICIiIF0gJiYgbWVzc2FnZT0iJChldmFsX2dldHRleHQgIlBsZWFzZSB3YWl0Li4uIikiIHx8IG1l c3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkU09GVE5BTUUgaXMgaW5z dGFsbGVkLi4uJykiCi0tCi0tCWlmIFsgIiRhbGxvd0tpbGwiID0gInRydWUiIF0KLS0JdGhlbgot LQkJUE9MX1NldHVwV2luZG93X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIgIiRUSVRMRSIgIiQoZXZh bF9nZXR0ZXh0ICdJbnN0YWxsIGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIgLWsiICIkKGV2YWxfZ2V0 dGV4dCAnQmUgY2FyZWZ1bCEgVGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBwcm9jZXNzLiBJZiBpdCBp cyBub3QgZmluaXNoZWQsIHlvdSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxsICRTT0ZUTkFNRScpIgot LQllbHNlCi0tCQlQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2UiICIkVElUTEUiCi0tCWZp Ci0rUE9MX1dpbmVfV2FpdEJlZm9yZSgpIHsKLSsgICMgTG9jayBiYXNoIGNvbW1hbmRzIHVudGls IHdpbmUgaXMgZXhpdGVkCi0rICAjIFVzYWdlIDogUE9MX1dpbmVfV2FpdEJlZm9yZSBbUHJvZ3Jh bSB0aXRsZV0gKC0tYWxsb3cta2lsbCkKLSsgIFNPRlROQU1FPSIkMSIKLSsgIGlmIFsgIiQyIiA9 ICItLWFsbG93LWtpbGwiIF07IHRoZW4KLSsgICAgYWxsb3dLaWxsPSJ0cnVlIgotKyAgZWxzZQot KyAgICBhbGxvd0tpbGw9ImZhbHNlIgotKyAgZmkKLSsKLSsgIFsgIiQxIiA9ICIiIF0gJiYgbWVz c2FnZT0iJChldmFsX2dldHRleHQgIlBsZWFzZSB3YWl0Li4uIikiIHx8IG1lc3NhZ2U9IiQoZXZh bF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkU09GVE5BTUUgaXMgaW5zdGFsbGVkLi4uJyki Ci0rCi0rICBpZiBbICIkYWxsb3dLaWxsIiA9ICJ0cnVlIiBdOyB0aGVuCi0rICAgIFBPTF9TZXR1 cFdpbmRvd193YWl0X2J1dHRvbiAiJG1lc3NhZ2UiICIkVElUTEUiICIkKGV2YWxfZ2V0dGV4dCAn SW5zdGFsbCBpcyBkb25lJykiICJ3aW5lc2VydmVyIC1rIiAiJChldmFsX2dldHRleHQgJ0JlIGNh cmVmdWwhIFRoaXMgd2lsbCBraWxsIGluc3RhbGwgcHJvY2Vzcy4gSWYgaXQgaXMgbm90IGZpbmlz aGVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJlaW5zdGFsbCAkU09GVE5BTUUnKSIKLSsgIGVsc2UKLSsg ICAgUE9MX1NldHVwV2luZG93X3dhaXQgIiRtZXNzYWdlIiAiJFRJVExFIgotKyAgZmkKLSAKLSB9 Ci0tUE9MX1dpbmVfV2FpdEV4aXQgKCkKLS17Ci0tCSMgTG9jayBiYXNoIGNvbW1hbmRzIHVudGls IHdpbmUgaXMgZXhpdGVkCi0tCSMgVXNhZ2UgOiBQT0xfV2luZV9XYWl0RXhpdCAoLS1mb3JjZS1p bnB1dCkgW1Byb2dyYW0gdGl0bGVdICgtLWFsbG93LWtpbGwpCi0tCWlmIFsgIiQxIiA9ICItLWZv cmNlLWlucHV0IiBdCi0tCXRoZW4KLS0JCWZvcmNlSW5wdXQ9InRydWUiCi0tCQlzaGlmdAotLQll bHNlCi0tCQlmb3JjZUlucHV0PSJmYWxzZSIKLS0JZmkKLS0KLS0JU09GVE5BTUU9IiQxIgotLQlp ZiBbICIkMiIgPSAiLS1hbGxvdy1raWxsIiBdCi0tCXRoZW4KLS0JCWFsbG93S2lsbD0idHJ1ZSIK LS0JZWxzZQotLQkJYWxsb3dLaWxsPSJmYWxzZSIKLS0JZmkKLS0KLS0JWyAiJDEiID0gIiIgXSAm JiBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNlIHdhaXQuLi4iKSIgfHwgbWVzc2FnZT0i JChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRTT0ZUTkFNRSBpcyBpbnN0YWxsZWQu Li4nKSIKLS0JaWYgWyAiJGFsbG93S2lsbCIgPSAidHJ1ZSIgXQotLQl0aGVuCi0tCQlQT0xfU2V0 dXBXaW5kb3dfd2FpdF9idXR0b24gIiRtZXNzYWdlIiAiJFRJVExFIiAiJChldmFsX2dldHRleHQg J0luc3RhbGwgaXMgZG9uZScpIiAid2luZXNlcnZlciAtayIgIiQoZXZhbF9nZXR0ZXh0ICdCZSBj YXJlZnVsISBUaGlzIHdpbGwga2lsbCBpbnN0YWxsIHByb2Nlc3MuIElmIGl0IGlzIG5vdCBmaW5p c2hlZCwgeW91IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgJFNPRlROQU1FJykiCi0tCWVsc2UKLS0J CVBPTF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2FnZSIgIiRUSVRMRSIKLS0JZmkKLS0Jd2luZXNl cnZlciAtdyB8fCBQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1ByZXNz IG5leHQgb25seSB3aGVuIHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcyBpcyBmaW5pc2hlZCcpIiAi JFRJVExFIgotLQlbICIkZm9yY2VJbnB1dCIgPSAidHJ1ZSIgXSAmJiBQT0xfU2V0dXBXaW5kb3df bWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1ByZXNzIG5leHQgb25seSB3aGVuIHRoZSBpbnN0YWxs YXRpb24gcHJvY2VzcyBpcyBmaW5pc2hlZCcpIiAiJFRJVExFIgotK1BPTF9XaW5lX1dhaXRFeGl0 KCkgewotKyAgIyBMb2NrIGJhc2ggY29tbWFuZHMgdW50aWwgd2luZSBpcyBleGl0ZWQKLSsgICMg VXNhZ2UgOiBQT0xfV2luZV9XYWl0RXhpdCAoLS1mb3JjZS1pbnB1dCkgW1Byb2dyYW0gdGl0bGVd ICgtLWFsbG93LWtpbGwpCi0rICBpZiBbICIkMSIgPSAiLS1mb3JjZS1pbnB1dCIgXTsgdGhlbgot KyAgICBmb3JjZUlucHV0PSJ0cnVlIgotKyAgICBzaGlmdAotKyAgZWxzZQotKyAgICBmb3JjZUlu cHV0PSJmYWxzZSIKLSsgIGZpCi0rCi0rICBTT0ZUTkFNRT0iJDEiCi0rICBpZiBbICIkMiIgPSAi LS1hbGxvdy1raWxsIiBdOyB0aGVuCi0rICAgIGFsbG93S2lsbD0idHJ1ZSIKLSsgIGVsc2UKLSsg ICAgYWxsb3dLaWxsPSJmYWxzZSIKLSsgIGZpCi0rCi0rICBbICIkMSIgPSAiIiBdICYmIG1lc3Nh Z2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVhc2Ugd2FpdC4uLiIpIiB8fCBtZXNzYWdlPSIkKGV2YWxf Z2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJFNPRlROQU1FIGlzIGluc3RhbGxlZC4uLicpIgot KyAgaWYgWyAiJGFsbG93S2lsbCIgPSAidHJ1ZSIgXTsgdGhlbgotKyAgICBQT0xfU2V0dXBXaW5k b3dfd2FpdF9idXR0b24gIiRtZXNzYWdlIiAiJFRJVExFIiAiJChldmFsX2dldHRleHQgJ0luc3Rh bGwgaXMgZG9uZScpIiAid2luZXNlcnZlciAtayIgIiQoZXZhbF9nZXR0ZXh0ICdCZSBjYXJlZnVs ISBUaGlzIHdpbGwga2lsbCBpbnN0YWxsIHByb2Nlc3MuIElmIGl0IGlzIG5vdCBmaW5pc2hlZCwg eW91IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgJFNPRlROQU1FJykiCi0rICBlbHNlCi0rICAgIFBP TF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2FnZSIgIiRUSVRMRSIKLSsgIGZpCi0rICB3aW5lc2Vy dmVyIC13IHx8IFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnUHJlc3Mg bmV4dCBvbmx5IHdoZW4gdGhlIGluc3RhbGxhdGlvbiBwcm9jZXNzIGlzIGZpbmlzaGVkJykiICIk VElUTEUiCi0rICBbICIkZm9yY2VJbnB1dCIgPSAidHJ1ZSIgXSAmJiBQT0xfU2V0dXBXaW5kb3df bWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1ByZXNzIG5leHQgb25seSB3aGVuIHRoZSBpbnN0YWxs YXRpb24gcHJvY2VzcyBpcyBmaW5pc2hlZCcpIiAiJFRJVExFIgotIH0KLSAKLS0KLS0KLS1QT0xf V2luZV9yZWJvb3QgKCkKLS17Ci0tCSMgU2ltdWxhdGUgd2luZG93cyByZWJvb3QKLS0JUE9MX1Nl dHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3 aGlsZSAkQVBQTElDQVRJT05fVElUTEUgaXMgc2ltdWxhdGluZyBhIHJlYm9vdCcpIiAiJFRJVExF IgotLQlQT0xfV2luZSB3aW5lYm9vdAotK1BPTF9XaW5lX3JlYm9vdCgpIHsKLSsgICMgU2ltdWxh dGUgd2luZG93cyByZWJvb3QKLSsgIFBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIk KGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJEFQUExJQ0FUSU9OX1RJVExFIGlzIHNp bXVsYXRpbmcgYSByZWJvb3QnKSIgIiRUSVRMRSIKLSsgIFBPTF9XaW5lIHdpbmVib290Ci0gfQot LVBPTF9XaW5lX0dldFByZWZpeEZyb21QYXRoICgpCi0tewotLQkjIFJldHVybiB3aW5lcHJlZml4 IGZyb20gcGF0aAotLQkjIFVzYWdlIFBPTF9XaW5lX0dldFByZWZpeEZyb21QYXRoIFtFeGUgZmls ZV0KLS0JbG9jYWwgcD0iJDEiCi0tCXA9IiR7cCMqL3dpbmVwcmVmaXgvfSIKLS0JcD0iJHtwJSUv Kn0iCi0tCWVjaG8gIiRwIgotK1BPTF9XaW5lX0dldFByZWZpeEZyb21QYXRoKCkgewotKyAgIyBS ZXR1cm4gd2luZXByZWZpeCBmcm9tIHBhdGgKLSsgICMgVXNhZ2UgUE9MX1dpbmVfR2V0UHJlZml4 RnJvbVBhdGggW0V4ZSBmaWxlXQotKyAgbG9jYWwgcD0iJDEiCi0rICBwPSIke3AjKi93aW5lcHJl Zml4L30iCi0rICBwPSIke3AlJS8qfSIKLSsgIGVjaG8gIiRwIgotIH0KLS1QT0xfV2luZV9HZXRC YXNlTmFtZSgpCi0tewotLQlwZXJsIC1lICckcmVsZWFzZT0kQVJHVlswXTsgJHJlbGVhc2UgPX4g cy9eKFswLTldK1wuWzAtOV0rKFwuWzAtOV0rKT8oLXJjWzAtOV0rKT8pLT8uKiQvJDEvOyBwcmlu dCAiJHJlbGVhc2VcbiInICIkMSIKLStQT0xfV2luZV9HZXRCYXNlTmFtZSgpIHsKLSsgIHBlcmwg LWUgJyRyZWxlYXNlPSRBUkdWWzBdOyAkcmVsZWFzZSA9fiBzL14oWzAtOV0rXC5bMC05XSsoXC5b MC05XSspPygtcmNbMC05XSspPyktPy4qJC8kMS87IHByaW50ICIkcmVsZWFzZVxuIicgIiQxIgot IH0KLS1QT0xfV2luZV9HZXRQYXRjaE5hbWUoKQotLXsKLS0JcGVybCAtZSAnJHJlbGVhc2U9JEFS R1ZbMF07ICRyZWxlYXNlID1+IHMvXlswLTldK1wuWzAtOV0rKFwuWzAtOV0rKT8oLXJjWzAtOV0r KT8tPy8vOyBwcmludCAiJHJlbGVhc2VcbiInICIkMSIKLStQT0xfV2luZV9HZXRQYXRjaE5hbWUo KSB7Ci0rICBwZXJsIC1lICckcmVsZWFzZT0kQVJHVlswXTsgJHJlbGVhc2UgPX4gcy9eWzAtOV0r XC5bMC05XSsoXC5bMC05XSspPygtcmNbMC05XSspPy0/Ly87IHByaW50ICIkcmVsZWFzZVxuIicg IiQxIgotIH0KLS1QT0xfTG5rX1JlYWQoKQotLXsKLS0JZHJpdmVfY19mb3VuZD0iZmFsc2UiCi0t CWV4cG9ydCBBTlNXRVJfUEFUSD0iIgotLQlleHBvcnQgQU5TV0VSX1BSRUZJWD0iIgotLQlleHBv cnQgQU5TV0VSX05BTUU9IiQxIgotLQlBTlNXRVJfTkFNRT0iJHtBTlNXRVJfTkFNRS8ubG5rL30i Ci0tCXdoaWxlIHJlYWQgbGluZTsgZG8KLS0JCWlmIFsgIiRkcml2ZV9jX2ZvdW5kIiA9ICJ0cnVl IiBdOyB0aGVuCi0tCQkJaWYgWyAiJHtsaW5lOjE6MX0iID0gIjoiIF07IHRoZW4KLS0JCQkJYnJl YWsKLS0JCQlmaQotLQkJCWlmIFsgIiRBTlNXRVJfUEFUSCIgPSAiIiBdOyB0aGVuCi0tCQkJCUFO U1dFUl9QQVRIPSIkbGluZSIKLS0JCQllbHNlCi0tCQkJCUFOU1dFUl9QQVRIPSIkQU5TV0VSX1BB VEgvJGxpbmUiCi0tCQkJZmkKLS0JCWZpCi0tCQlpZiBbICIkbGluZSIgPSAiZHJpdmVfYyIgXTsg dGhlbgotLQkJCWRyaXZlX2NfZm91bmQ9InRydWUiCi0tCQkJQU5TV0VSX1BSRUZJWD0iJGxhc3Rs aW5lIgotLQkJZmkKLS0JCWxhc3RsaW5lPSIkbGluZSIKLS0JZG9uZSA8IDwoc3RyaW5ncyAiJDEi KQotK1BPTF9MbmtfUmVhZCgpIHsKLSsgIGRyaXZlX2NfZm91bmQ9ImZhbHNlIgotKyAgZXhwb3J0 IEFOU1dFUl9QQVRIPSIiCi0rICBleHBvcnQgQU5TV0VSX1BSRUZJWD0iIgotKyAgZXhwb3J0IEFO U1dFUl9OQU1FPSIkMSIKLSsgIEFOU1dFUl9OQU1FPSIke0FOU1dFUl9OQU1FLy5sbmsvfSIKLSsg IHdoaWxlIHJlYWQgbGluZTsgZG8KLSsgICAgaWYgWyAiJGRyaXZlX2NfZm91bmQiID0gInRydWUi IF07IHRoZW4KLSsgICAgICBpZiBbICIke2xpbmU6MToxfSIgPSAiOiIgXTsgdGhlbgotKyAgICAg ICAgYnJlYWsKLSsgICAgICBmaQotKyAgICAgIGlmIFsgIiRBTlNXRVJfUEFUSCIgPSAiIiBdOyB0 aGVuCi0rICAgICAgICBBTlNXRVJfUEFUSD0iJGxpbmUiCi0rICAgICAgZWxzZQotKyAgICAgICAg QU5TV0VSX1BBVEg9IiRBTlNXRVJfUEFUSC8kbGluZSIKLSsgICAgICBmaQotKyAgICBmaQotKyAg ICBpZiBbICIkbGluZSIgPSAiZHJpdmVfYyIgXTsgdGhlbgotKyAgICAgIGRyaXZlX2NfZm91bmQ9 InRydWUiCi0rICAgICAgQU5TV0VSX1BSRUZJWD0iJGxhc3RsaW5lIgotKyAgICBmaQotKyAgICBs YXN0bGluZT0iJGxpbmUiCi0rICBkb25lIDwgPChzdHJpbmdzICIkMSIpCi0gfQotIAotLVBPTF9X aW5lX2V4ZW5hbWUoKQotLXsKLS0JRVhFTkFNRT0iJDEiCi0tCXdoaWxlIFsgIiQxIiBdOyBkbwot LQkJWyAiJChncmVwICcuZXhlJyA8PDwgIiQxIikiIF0gJiYgZWNobyAiJDEiICYmIHJldHVybiAw Ci0tCQlzaGlmdAotLQlkb25lCi0tCWVjaG8gIiRFWEVOQU1FIgotLQlyZXR1cm4gMAotK1BPTF9X aW5lX2V4ZW5hbWUoKSB7Ci0rICBFWEVOQU1FPSIkMSIKLSsgIHdoaWxlIFsgIiQxIiBdOyBkbwot KyAgICBbICIkKGdyZXAgJy5leGUnIDw8PCIkMSIpIiBdICYmIGVjaG8gIiQxIiAmJiByZXR1cm4g MAotKyAgICBzaGlmdAotKyAgZG9uZQotKyAgZWNobyAiJEVYRU5BTUUiCi0rICByZXR1cm4gMAot IH0KLS1QT0xfV2luZV9Db21tb25OYW1lKCkKLS17Ci0tCWNuYW1lPSIkKFBPTF9XaW5lX2V4ZW5h bWUgIiRAIikiCi0tCVsgIiRjbmFtZSIgPSAid2luZWNmZyIgXSAmJiBjbmFtZT0iQ29uZmlndXJl IHdpbmUiCi0tCVsgIiRjbmFtZSIgPSAicmVnZWRpdCIgXSAmJiBjbmFtZT0iUmVnaXN0cnkgRWRp dG9yIgotLQlbICIkY25hbWUiID0gIndpbmVib290IiBdICYmIGNuYW1lPSJWaXJ0dWFsIGRyaXZl IGNyZWF0aW9uIgotLQllY2hvICIkY25hbWUiCi0rUE9MX1dpbmVfQ29tbW9uTmFtZSgpIHsKLSsg IGNuYW1lPSIkKFBPTF9XaW5lX2V4ZW5hbWUgIiRAIikiCi0rICBbICIkY25hbWUiID0gIndpbmVj ZmciIF0gJiYgY25hbWU9IkNvbmZpZ3VyZSB3aW5lIgotKyAgWyAiJGNuYW1lIiA9ICJyZWdlZGl0 IiBdICYmIGNuYW1lPSJSZWdpc3RyeSBFZGl0b3IiCi0rICBbICIkY25hbWUiID0gIndpbmVib290 IiBdICYmIGNuYW1lPSJWaXJ0dWFsIGRyaXZlIGNyZWF0aW9uIgotKyAgZWNobyAiJGNuYW1lIgot IH0KLS1QT0xfV2luZV9FbmFibGVPU1hOYXRpdmVEb2NrKCkKLS17Ci0tCWlmIFsgIiRQT0xfT1Mi ID0gIk1hYyIgLWEgIiQoUE9MX0NvbmZpZ19SZWFkICJPU1hfTkFUSVZFX01PREUiKSIgPSAiVFJV RSIgXTsgdGhlbgotLQkJZXhwb3J0IEZPUkNFX09TWF9ET0NLPSJUUlVFIgotLQlmaQotK1BPTF9X aW5lX0VuYWJsZU9TWE5hdGl2ZURvY2soKSB7Ci0rICBpZiBbICIkUE9MX09TIiA9ICJNYWMiIC1h ICIkKFBPTF9Db25maWdfUmVhZCAiT1NYX05BVElWRV9NT0RFIikiID0gIlRSVUUiIF07IHRoZW4K LSsgICAgZXhwb3J0IEZPUkNFX09TWF9ET0NLPSJUUlVFIgotKyAgZmkKLSB9Ci1kaWZmIC0tZ2l0 IGEvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQotaW5k ZXggOGJlZDc2MDFiLi5kYmUyYWI3MTkgMTAwNzU1Ci0tLS0gYS9weXRob24vbGliL1ZhcmlhYmxl cy5weQotKysrIGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLUBAIC0xNyw3ICsxNyw3IEBACi0g b3MuZW52aXJvblsiUE9MX1BPUlQiXSA9ICIwIgotIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0g PSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKyIvLi4vLi4vLi4v IikKLSBvcy5lbnZpcm9uWyJTSVRFIl0gPSAiaHR0cDovL3JlcG9zaXRvcnkucGxheW9ubGludXgu Y29tIgotLW9zLmVudmlyb25bIlZFUlNJT04iXSA9ICI0LjQiCi0rb3MuZW52aXJvblsiVkVSU0lP TiJdID0gIjQuNC4xIgotIG9zLmVudmlyb25bIlBPTF9JRCJdID0gc3RyKHJhbmRvbS5yYW5kaW50 KDEsIDEwMDAwMDAwMCkpCi0gb3MuZW52aXJvblsiR0VDS09fU0lURSJdID0gImh0dHA6Ly93aW5l LnBsYXlvbmxpbnV4LmNvbS9nZWNrbyIKLSBvcy5lbnZpcm9uWyJNT05PX1NJVEUiXSA9ICJodHRw Oi8vd2luZS5wbGF5b25saW51eC5jb20vbW9ubyIKLUBAIC0xMTksMTEgKzExOSwxMiBAQAotIAot ICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4v dW5peC93aW5lL2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvaW1h Z2VfbWFnaWNrL2JpbjoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvdG9v bHMvYmluLzoiICsgb3MuZW52aXJvblsiUEFUSCJdCi0gCi0tICAgIG9zLmVudmlyb25bIldSSVRF X0xEIl0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvaW1hZ2VfbWFnaWNr L2xpYjoiKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC90b29scy9saWIvbGQ6 L29wdC9YMTEvbGliLzoiICsgb3MuZW52aXJvblsiTERfTElCUkFSWV9QQVRIIl0KLS0gICAgb3Mu ZW52aXJvblsiRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZ T05MSU5VWCJdKyIvLi4vd2luZS9saWIiCi0rICAgIG9zLmVudmlyb25bIldSSVRFX0xEIl0gPSBv cy5lbnZpcm9uWyJMRF9MSUJSQVJZX1BBVEgiXQotKyAgICBvcy5lbnZpcm9uWyJEWUxEX0ZBTExC QUNLX0xJQlJBUllfUEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4 L3dpbmUvbGliIgotKyAgICBvcy5lbnZpcm9uWyJXUklURV9EWUxEX0ZBTExCQUNLX0xJQlJBUllf UEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3dpbmUvbGliIgot ICAgICBvcy5lbnZpcm9uWyJGUkVFVFlQRV9QUk9QRVJUSUVTIl09InRydWV0eXBlOmludGVycHJl dGVyLXZlcnNpb249MzUiCi0gCi0tICAgIG9zLmVudmlyb25bIldSSVRFX0RZTEQiXSA9IG9zLmVu dmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3Rvb2xzL2xpYi9keWxkOiIgKyBvcy5lbnZp cm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC9pbWFnZV9tYWdpY2svbGliOiIrIG9zLmVudmly b25bIkRZTERfTElCUkFSWV9QQVRIIl0KLSsgICAgb3MuZW52aXJvblsiV1JJVEVfRFlMRCJdID0g b3MuZW52aXJvblsiRFlMRF9MSUJSQVJZX1BBVEgiXQotIGVsc2U6Ci0gICAgICMgRGViaWFuIG1h aW50YWluZXIgZGVjaWRlZCBmb3Igc29tZSByZWFzb24gbm90IHRvIGxldCB3aW5lc2VydmVyIGJp bmFyeSBpbnRvIFBBVEguLi4KLSAgICAgZm9yIHdpbmVwYXRoIGluICgnL3Vzci9saWIvaTM4Ni1s aW51eC1nbnUvd2luZS9iaW4nLCAnL3Vzci9saWIvaTM4Ni1saW51eC1nbnUvd2luZS11bnN0YWJs ZS9iaW4nLAotZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9uL21haW53 aW5kb3cucHkKLWluZGV4IDhkZjFmZjE0Yi4uYzhmZTExMTYwIDEwMDc1NQotLS0tIGEvcHl0aG9u L21haW53aW5kb3cucHkKLSsrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5Ci1AQCAtMjU0LDcgKzI1 NCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGlkLCB0aXRsZSk6Ci0gICAgICAgICBz ZWxmLmZpbGVtZW51ID0gd3guTWVudSgpCi0gICAgICAgICAjIyMgT24gTWFjT1MgWCwgcHJlZmVy ZW5jZSBpcyBhbHdheXMgb24gdGhlIG1haW4gbWVudQotICAgICAgICAgaWYgKG9zLmVudmlyb25b IlBPTF9PUyJdID09ICJNYWMiKToKLS0gICAgICAgICAgICBwcmVmSXRlbSA9IHNlbGYuZmlsZW1l bnUuQXBwZW5kKHd4LklEX1BSRUZFUkVOQ0VTLCB0ZXh0PSImUHJlZmVyZW5jZXMiKQotKyAgICAg ICAgICAgIHByZWZJdGVtID0gc2VsZi5maWxlbWVudS5BcHBlbmQod3guSURfUFJFRkVSRU5DRVMs IF8oIiZQcmVmZXJlbmNlcyIpKQotICAgICAgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfTUVOVSwg c2VsZi5PcHRpb25zLCBwcmVmSXRlbSkKLSAKLSAgICAgICAgICMjIyBGaWxlIG1lbnUKLWRpZmYg LS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5IGIvcHl0 aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQotaW5kZXggMGZkYzc2ZTM4 Li5mZDc1ODc5OGUgMTAwNjQ0Ci0tLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lv bnNGZXRjaGVyLnB5Ci0rKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRj aGVyLnB5Ci1AQCAtMSw2NyArMSw4OCBAQAotIGltcG9ydCBqc29uCi0gaW1wb3J0IG9zCi0gaW1w b3J0IHRocmVhZGluZwotLWltcG9ydCB0aW1lCi0raW1wb3J0IHRyYWNlYmFjawotIGltcG9ydCB1 cmxsaWIucmVxdWVzdAotLWltcG9ydCBuYXRzb3J0Ci0gCi0gZnJvbSBsaWIgaW1wb3J0IFZhcmlh YmxlcwotLWZyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29scyBpbXBvcnQgZmV0Y2hV c2VyT1MKLS0KLS1jbGFzcyBXaW5lVmVyc2lvbkZldGNoZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0t ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBhcmNoPSJ4ODYiKToKLS0gICAgICAgIHRocmVhZGluZy5U aHJlYWQuX19pbml0X18oc2VsZikKLS0gICAgICAgIHNlbGYudGhyZWFkX21lc3NhZ2UgPSAiI1dB SVQjIgotLSAgICAgICAgc2VsZi52ZXJzaW9ucyA9IFtdCi0tICAgICAgICBzZWxmLmFyY2hpdGVj dHVyZSA9IGFyY2gKLS0gICAgICAgIHNlbGYuc3RhcnQoKQotLQotLSAgICBkZWYgZG93bmxvYWQo c2VsZiwgZ2FtZSk6Ci0tICAgICAgICBzZWxmLmdldERlc2NyaXB0aW9uID0gZ2FtZQotLQotLSAg ICBkZWYgcnVuKHNlbGYpOgotLSAgICAgICAgc2VsZi50aHJlYWRfcnVubmluZyA9IFRydWUKLS0g ICAgICAgIHdoaWxlKHNlbGYudGhyZWFkX3J1bm5pbmcpOgotLSAgICAgICAgICAgIGlmKHNlbGYu dGhyZWFkX21lc3NhZ2UgPT0gImdldCIpOgotLSAgICAgICAgICAgICAgICB0cnkgOgotLSAgICAg ICAgICAgICAgICAgICAgdXJsID0gb3MuZW52aXJvblsiV0lORV9TSVRFIl0KLS0gICAgICAgICAg ICAgICAgICAgIHdmb2xkZXIgPSAiLSIuam9pbihbZmV0Y2hVc2VyT1MoKSwgc2VsZi5hcmNoaXRl Y3R1cmVdKQotLQotLQotLSAgICAgICAgICAgICAgICAgICAgcmVxID0gdXJsbGliLnJlcXVlc3Qu UmVxdWVzdCh1cmwsIE5vbmUsIHsnVXNlci1BZ2VudCc6IFZhcmlhYmxlcy51c2VyQWdlbnR9KQot LSAgICAgICAgICAgICAgICAgICAgaGFuZGxlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEs IHRpbWVvdXQgPSA1KQotLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQotLSAgICAg ICAgICAgICAgICAgICAgYXZhaWxhYmxlX2Rpc3RyaWJ1dGlvbnMgPSBqc29uLmxvYWRzKGhhbmRs ZS5yZWFkKCkpCi0tICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zXyA9IFtdCi0tICAg ICAgICAgICAgICAgICAgICBmb3IgZGlzdHJpYnV0aW9uIGluIGF2YWlsYWJsZV9kaXN0cmlidXRp b25zOgotLSAgICAgICAgICAgICAgICAgICAgICAgIGlmKGRpc3RyaWJ1dGlvblsibmFtZSJdID09 ICItIi5qb2luKFsidXBzdHJlYW0iLCBmZXRjaFVzZXJPUygpLCBzZWxmLmFyY2hpdGVjdHVyZV0p KToKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhY2thZ2UgaW4gZGlzdHJpYnV0 aW9uWyJwYWNrYWdlcyJdOgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv biA9IHBhY2thZ2VbInZlcnNpb24iXQotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGFja2FnZVVybCA9IHBhY2thZ2VbInVybCJdCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzaGExc3VtID0gcGFja2FnZVsic2hhMXN1bSJdCi0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZihub3Qgb3MucGF0aC5leGlzdHMoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3Jl cCsiL3dpbmUvIit3Zm9sZGVyKyIvIit2ZXJzaW9uKSk6Ci0tICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc18uYXBwZW5kKHZlcnNpb24pCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHByaW50KCJEaXJlY3Rvcnk6ICVzIGV4aXN0cyIgJSAoVmFyaWFibGVzLnBsYXlv bmxpbnV4X3JlcCsiL3dpbmUvIit3Zm9sZGVyKyIvIit2ZXJzaW9uKSkKLS0gICAgICAgICAgICAg ICAgICAgICAgICBlbGlmKGRpc3RyaWJ1dGlvblsibmFtZSJdID09ICItIi5qb2luKFsic3RhZ2lu ZyIsIGZldGNoVXNlck9TKCksIHNlbGYuYXJjaGl0ZWN0dXJlXSkpOgotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBmb3IgcGFja2FnZSBpbiBkaXN0cmlidXRpb25bInBhY2thZ2VzIl06Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gcGFja2FnZVsidmVyc2lv biJdCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZihub3Qgb3MucGF0aC5leGlz dHMoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCsiL3dpbmUvIit3Zm9sZGVyKyIvIit2ZXJzaW9u KyItc3RhZ2luZyIpKToKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnZlcnNpb25zXy5hcHBlbmQodmVyc2lvbisiLXN0YWdpbmciKQotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZWxzZToKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwcmludCgiRGlyZWN0b3J5OiAlcyBleGlzdHMiICUgKFZhcmlhYmxlcy5wbGF5b25saW51eF9y ZXArIi93aW5lLyIrd2ZvbGRlcisiLyIrdmVyc2lvbisiLXN0YWdpbmciKSkKLS0gICAgICAgICAg ICAgICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludChk aXN0cmlidXRpb25bIm5hbWUiXSArICIgZG9lcyBub3QgbWF0Y2giKQotLQotLSAgICAgICAgICAg ICAgICAgICAgc2VsZi52ZXJzaW9uc18uc29ydChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigp KQotLSAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc18ucmV2ZXJzZSgpCi0tICAgICAg ICAgICAgICAgICAgICBzZWxmLnZlcnNpb25zID0gc2VsZi52ZXJzaW9uc19bOl0KLS0gICAgICAg ICAgICAgICAgICAgIHNlbGYudGhyZWFkX21lc3NhZ2UgPSAiT2siCi0tICAgICAgICAgICAgICAg IGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLS0gICAgICAgICAgICAgICAgICAgIHByaW50KGUpCi0t ICAgICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0tICAgICAgICAgICAgICAgICAgICBz ZWxmLnRocmVhZF9tZXNzYWdlID0gIkVyciIKLS0gICAgICAgICAgICAgICAgICAgIHNlbGYudmVy c2lvbnMgPSBbIldpbmUgcGFja2FnZXMgd2Vic2l0ZSBpcyB1bmF2YWlsYWJsZSJdCi0rZnJvbSB3 aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rvb2xzIGltcG9ydCBmZXRjaFVzZXJPUywgZmV0Y2hf c3VwcG9ydGVkX2FyY2hzCi0gCi0rCi0rY2xhc3MgV2luZVZlcnNpb25GZXRjaGVyKCk6Ci0rICAg IGRlZiBfX2luaXRfXyhzZWxmLCBvcGVyYXRpbmdfc3lzdGVtKToKLSsgICAgICAgIHNlbGYub3Bl cmF0aW5nX3N5c3RlbSA9IG9wZXJhdGluZ19zeXN0ZW0KLSsKLSsgICAgZGVmIGZldGNoX2FsbF9h dmFpbGFibGVfd2luZV92ZXJzaW9uKHNlbGYsIGNhbGxiYWNrLCBlcnJvcik6Ci0rICAgICAgICB0 aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9zeW5jX2ZldGNoX2FsbF9hdmFp bGFibGVfd2luZV92ZXJzaW9ucywgYXJncz0oY2FsbGJhY2ssIGVycm9yKSkKLSsgICAgICAgIHRo cmVhZC5zdGFydCgpCi0rCi0rICAgIGRlZiBfc3luY19mZXRjaF9hbGxfYXZhaWxhYmxlX3dpbmVf dmVyc2lvbnMoc2VsZiwgY2FsbGJhY2ssIGVycm9yKToKLSsgICAgICAgIHdpbmVfdmVyc2lvbl91 cmwgPSAiaHR0cHM6Ly9waG9lbmljaXMucGxheW9ubGludXguY29tL2luZGV4LnBocC93aW5lP29z PSVzIiAlIHNlbGYub3BlcmF0aW5nX3N5c3RlbQotKyAgICAgICAgcHJpbnQoIkRvbndsb2FkaW5n ICVzICIgJSB3aW5lX3ZlcnNpb25fdXJsKQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIHJl cXVlc3QgPSB1cmxsaWIucmVxdWVzdC5SZXF1ZXN0KHdpbmVfdmVyc2lvbl91cmwsIE5vbmUsIHsn VXNlci1BZ2VudCc6IFZhcmlhYmxlcy51c2VyQWdlbnR9KQotKyAgICAgICAgICAgIGhhbmRsZSA9 IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgdGltZW91dD01KQotKyAgICAgICAgICAg IGNhbGxiYWNrKHNlbGYuX2NvbnZlcnRfcGhvZW5pY2lzX3dpbmVfdmVyc2lvbnNfdG9fdjQoanNv bi5sb2FkKGhhbmRsZSkpKQotKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotKyAgICAg ICAgICAgIGVycm9yKHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCi0rCi0rICAgIGRlZiBfc3luY19m ZXRjaF9hbGxfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbihzZWxmKToKLSsgICAgICAgIGFyY2hpdGVj dHVyZXMgPSB7fQotKyAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiBmZXRjaF9zdXBwb3J0ZWRf YXJjaHMoKToKLSsgICAgICAgICAgICB3aW5lX2ZvbGRlciA9IGZldGNoVXNlck9TKCkgKyAiLSIg KyBhcmNoaXRlY3R1cmUKLSsKLSsgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhWYXJpYWJs ZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3aW5lX2ZvbGRlcik6Ci0rICAgICAgICAg ICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFt7Ci0rICAgICAgICAgICAgICAgICAgICAibmFt ZSI6IHZlcnNpb24sCi0rICAgICAgICAgICAgICAgIH0gZm9yIHZlcnNpb24gaW4gb3MubGlzdGRp cihWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3aW5lX2ZvbGRlcikgaWYK LSsgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gIT0gImluc3RhbGxpbmciXQotICAgICAgICAg ICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4yKQotKyAgICAgICAgICAg ICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbXQotKwotKyAgICAgICAgICAgIGlmIGFyY2hpdGVj dHVyZSBub3QgaW4gYXJjaGl0ZWN0dXJlczoKLSsgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJl c1thcmNoaXRlY3R1cmVdID0gW10KLSsKLSsgICAgICAgICAgICBhcmNoaXRlY3R1cmVzW2FyY2hp dGVjdHVyZV0gKz0gYXZhaWxhYmxlX3ZlcnNpb25zCi0rICAgICAgICByZXR1cm4gYXJjaGl0ZWN0 dXJlcwotKwotKyAgICBkZWYgZmV0Y2hfYWxsX2luc3RhbGxlZF93aW5lX3ZlcnNpb24oc2VsZiwg Y2FsbGJhY2ssIGVycm9yKToKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBhcmNoaXRlY3R1 cmVzID0gc2VsZi5fc3luY19mZXRjaF9hbGxfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbigpCi0rCi0r ICAgICAgICAgICAgY2FsbGJhY2soYXJjaGl0ZWN0dXJlcykKLSsgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKLSsgICAgICAgICAgICBlcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQot KwotKyAgICBkZWYgX2NvbnZlcnRfcGhvZW5pY2lzX3dpbmVfdmVyc2lvbnNfdG9fdjQoc2VsZiwg d2luZV9kaXN0cmlidXRpb25zKToKLSsgICAgICAgICIiIgotKyAgICAgICAgQ29udmVydHMgdmVy c2lvbnMgZnJvbSBwaG9lbmljaXMgZm9ybWF0IGludG8gYSBmb3JtYXQgdGhhdCBQT0wvUE9NIDQg Y2FuIGhhbmRsZQotKyAgICAgICAgIiIiCi0rICAgICAgICBhcmNoaXRlY3R1cmVzID0ge30KLSsg ICAgICAgIGZvciB3aW5lX2Rpc3RyaWJ1dGlvbiBpbiB3aW5lX2Rpc3RyaWJ1dGlvbnM6Ci0rICAg ICAgICAgICAgbmFtZSA9IHdpbmVfZGlzdHJpYnV0aW9uWyJuYW1lIl0KLSsgICAgICAgICAgICBh cmNoaXRlY3R1cmUgPSBuYW1lLnNwbGl0KCItIilbMl0KLSsgICAgICAgICAgICBkaXN0cmlidXRp b24gPSBuYW1lLnNwbGl0KCItIilbMF0KLSsKLSsgICAgICAgICAgICBpZiBhcmNoaXRlY3R1cmUg bm90IGluIGFyY2hpdGVjdHVyZXM6Ci0rICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXNbYXJj aGl0ZWN0dXJlXSA9IFtdCi0rCi0rICAgICAgICAgICAgZm9yIHBhY2thZ2UgaW4gd2luZV9kaXN0 cmlidXRpb25bInBhY2thZ2VzIl06Ci0rICAgICAgICAgICAgICAgIGlmIGRpc3RyaWJ1dGlvbiA9 PSAidXBzdHJlYW0iOgotKyAgICAgICAgICAgICAgICAgICAgcGFja2FnZV9uYW1lID0gcGFja2Fn ZVsidmVyc2lvbiJdCi0rICAgICAgICAgICAgICAgIGVsc2U6Ci0rICAgICAgICAgICAgICAgICAg ICBwYWNrYWdlX25hbWUgPSBwYWNrYWdlWyJ2ZXJzaW9uIl0gKyAiLSIgKyBkaXN0cmlidXRpb24K LSsKLSsgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlc1thcmNoaXRlY3R1cmVdICs9IFt7Ci0r ICAgICAgICAgICAgICAgICAgICAibmFtZSI6IHBhY2thZ2VfbmFtZSwKLSsgICAgICAgICAgICAg ICAgICAgICJhcmNoaXRlY3R1cmUiOiBhcmNoaXRlY3R1cmUsCi0rICAgICAgICAgICAgICAgICAg ICAic2hhMXN1bSI6IHBhY2thZ2VbInNoYTFzdW0iXSwKLSsgICAgICAgICAgICAgICAgICAgICJ1 cmwiOiBwYWNrYWdlWyJ1cmwiXQotKyAgICAgICAgICAgICAgICB9XQotKwotKwotKyAgICAgICAg cmV0dXJuIGFyY2hpdGVjdHVyZXMKLSsKLSsgICAgZGVmIGNhbGN1bGF0ZV9pbnN0YWxsZWRfaGFz aChzZWxmKToKLSsgICAgICAgIHJldHVybiBoYXNoKGpzb24uZHVtcHMoKHNlbGYuX3N5bmNfZmV0 Y2hfYWxsX2luc3RhbGxlZF93aW5lX3ZlcnNpb24oKSkpKQotKwotKwotZGlmZiAtLWdpdCBhL3B5 dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5IGIvcHl0aG9uL3dpbmVf dmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkKLWluZGV4IGVjNWYxMjUzNS4uYjQzYzI1 ZGM5IDEwMDY0NAotLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zTm90ZWJv b2sucHkKLSsrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5 Ci1AQCAtMiw4OSArMiwxMDYgQEAKLSAKLSBmcm9tIGxpYiBpbXBvcnQgVmFyaWFibGVzCi0gCi0t Ci0gIyMgRklYTUU6IFJlZmFjdG9yIHRoaXMgY29kZSBsYXRlcgotK2Zyb20gd2luZV92ZXJzaW9u cy5XaW5lVmVyc2lvbnNUb29scyBpbXBvcnQgZmV0Y2hfc3VwcG9ydGVkX2FyY2hzCi0rCi0rCi0g Y2xhc3MgV2luZVZlcnNpb25zTm90ZWJvb2sod3guTm90ZWJvb2spOgotICAgICBkZWYgX19pbml0 X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgIHNlbGYubm90ZWJvb2sgPSB3eC5Ob3RlYm9vay5f X2luaXRfXyhzZWxmLCBwYXJlbnQsIC0xKQotICAgICAgICAgc2VsZi5pbWFnZXNfb25nbGV0cyA9 IHd4LkltYWdlTGlzdCgxNiwgMTYpCi0gICAgICAgICBzZWxmLmltYWdlc19vbmdsZXRzLkFkZCh3 eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL29uZ2xldC93aW5lLnBu ZyIpKQotKwotICAgICAgICAgc2VsZi5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXNfb25nbGV0cykK LSAKLSAgICAgICAgIHNlbGYuc2l6ZXJzID0ge30KLS0gICAgICAgIHNlbGYuaW1hZ2VzYXBwcyA9 IHt9Ci0tICAgICAgICBzZWxmLmltYWdlc2FwcHNfaSA9IHt9Ci0tICAgICAgICBzZWxmLmF2YWls YWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvciA9IHt9Ci0rICAgICAgICBzZWxmLmltYWdlX2xp c3QgPSBzZWxmLl9jcmVhdGVfaW1hZ2VfbGlzdCgpCi0rICAgICAgICBzZWxmLmF2YWlsYWJsZV93 aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3IgPSB7fQotICAgICAgICAgc2VsZi53YWl0UGFuZWwg PSB7fQotLSAgICAgICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3IgPSB7 fQotLSAgICAgICAgc2VsZi5idXR0b25fcm0gPSB7fQotLSAgICAgICAgc2VsZi5idXR0b25faW4g PSB7fQotKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9y ID0ge30KLSsgICAgICAgIHNlbGYuYnV0dG9uX3VuaW5zdGFsbCA9IHt9Ci0rICAgICAgICBzZWxm LmJ1dHRvbl9pbnN0YWxsID0ge30KLSAgICAgICAgIHNlbGYuYm94U2l6ZXJzID0ge30KLSAgICAg ICAgIHNlbGYucGFuZWxzID0ge30KLS0KLS0gICAgZGVmIGNhbGN1bGF0ZUV2ZW50RGVsdGEoc2Vs ZiwgYXJjaCk6Ci0tICAgICAgICBpZiAoYXJjaCA9PSAiYW1kNjQiKToKLS0gICAgICAgICAgICBy ZXR1cm4gMTAwCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHJldHVybiAwCi0tCi0tICAg IGRlZiBfY3JlYXRlSW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJjaCk6Ci0tICAg ICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCA9IHd4LlBhbmVsKHNlbGYucGFuZWxzW2Fy Y2hdLCAtMSkKLSsgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbl9yb290cyA9IHt9 Ci0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25fcm9vdHMgPSB7fQotKyAgICAg ICAgc2VsZi5udW1iZXJfb2ZfYXZhaWxhYmxlX3ZlcnNpb25zID0ge30KLSsgICAgICAgIHNlbGYu bnVtYmVyX29mX2luc3RhbGxlZF92ZXJzaW9ucyA9IHt9Ci0rICAgICAgICBzZWxmLm9uX2luc3Rh bGxfaGFuZGxlciA9IE5vbmUKLSsgICAgICAgIHNlbGYub25fcmVtb3ZlX2hhbmRsZXIgPSBOb25l Ci0rCi0rICAgIGRlZiBfY3JlYXRlX2ltYWdlX2xpc3Qoc2VsZik6Ci0rICAgICAgICBpbWFnZV9s aXN0ID0gd3guSW1hZ2VMaXN0KDIyLCAyMikKLSsgICAgICAgIGltYWdlX2xpc3QuQWRkKHd4LkJp dG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLXBhY2th Z2VzLnBuZyIpKQotKyAgICAgICAgaW1hZ2VfbGlzdC5BZGQod3guQml0bWFwKFZhcmlhYmxlcy5w bGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtaW4tdXNlLnBuZyIpKQotKyAgICAg ICAgcmV0dXJuIGltYWdlX2xpc3QKLSsKLSsgICAgZGVmIF9jYWxjdWxhdGVfZXZlbnRfbnVtYmVy KHNlbGYsIGV2ZW50X2lkLCBhcmNoKToKLSsgICAgICAgIHJldHVybiBldmVudF9pZCArIGxpc3Qo ZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCkpLmluZGV4KGFyY2gpICogMTAwCi0rCi0rICAgIGRlZiBf Y3JlYXRlSW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJjaGl0ZWN0dXJlKToKLSsg ICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsID0gd3guUGFuZWwoc2VsZi5wYW5lbHNb YXJjaGl0ZWN0dXJlXSwgLTEpCi0gICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplciA9 IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FMKQotICAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25z UGFuZWwuU2V0U2l6ZXIoaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIpCi0tICAgICAgICBzZWxm LmJveFNpemVyc1thcmNoXS5BZGQoaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwsIDMsIHd4LkVY UEFORCkKLSsgICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hpdGVjdHVyZV0uQWRkKGluc3RhbGxl ZFdpbmVWZXJzaW9uc1BhbmVsLCAzLCB3eC5FWFBBTkQpCi0gICAgICAgICBpbnN0YWxsZWRXaW5l VmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCi0gICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lv bnNTaXplci5BZGQod3guU3RhdGljVGV4dChpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCwgLTEs IF8oIkluc3RhbGxlZCBXaW5lIHZlcnNpb25zOiAiKSksIDApCi0gICAgICAgICBpbnN0YWxsZWRX aW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCi0tICAgICAgICBzZWxmLmluc3RhbGxlZFdp bmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSA9IHd4LlRyZWVDdHJsKGluc3RhbGxlZFdpbmVW ZXJzaW9uc1BhbmVsLCAxMDcgKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVsdGEoYXJjaCksCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8 IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycykKLS0gICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZl cnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEltYWdlTGlzdChzZWxmLmltYWdlc2FwcHNfaVth cmNoXSkKLS0gICAgICAgICNzZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3Rvclth cmNoXS5TZXRTcGFjaW5nKDApCi0tICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplci5B ZGQoc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0sIDEsIHd4LkVY UEFORCkKLSsgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3Rv clthcmNoaXRlY3R1cmVdID0gd3guVHJlZUN0cmwoaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWws Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA3 LCBhcmNoaXRlY3R1cmUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURF X1JPT1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRl cnMpCi0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3Jb YXJjaGl0ZWN0dXJlXS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZV9saXN0KQotKyAgICAgICAgc2Vs Zi5CaW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBsYW1iZGEgZXZ0OiBzZWxmLl9vbl9zZWxl Y3RfaW5zdGFsbGVkX3dpbmVfdmVyc2lvbihhcmNoaXRlY3R1cmUpLCBpZD1zZWxmLl9jYWxjdWxh dGVfZXZlbnRfbnVtYmVyKDEwNywgYXJjaGl0ZWN0dXJlKSkKLSsKLSsgICAgICAgIGluc3RhbGxl ZFdpbmVWZXJzaW9uc1NpemVyLkFkZChzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVf c2VsZWN0b3JbYXJjaGl0ZWN0dXJlXSwgMSwgd3guRVhQQU5EKQotICAgICAgICAgaW5zdGFsbGVk V2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQotIAotLSAgICBkZWYgX2NyZWF0ZUF2YWls YWJsZVdpbmVWZXJzaW9uc1BhbmVsKHNlbGYsIGFyY2gpOgotLSAgICAgICAgYXZhaWxhYmxlV2lu ZVZlcnNpb25zUGFuZWwgPSB3eC5QYW5lbChzZWxmLnBhbmVsc1thcmNoXSAsIC0xKQotKyAgICBk ZWYgX2NyZWF0ZUF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsKHNlbGYsIGFyY2hpdGVjdHVyZSk6 Ci0rICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCA9IHd4LlBhbmVsKHNlbGYucGFu ZWxzW2FyY2hpdGVjdHVyZV0sIC0xKQotICAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6 ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKLSAgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJz aW9uc1BhbmVsLlNldFNpemVyKGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyKQotLSAgICAgICAg c2VsZi5ib3hTaXplcnNbYXJjaF0uQWRkKGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsLCAzLCB3 eC5FWFBBTkQpCi0rICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoaXRlY3R1cmVdLkFkZChhdmFp bGFibGVXaW5lVmVyc2lvbnNQYW5lbCwgMywgd3guRVhQQU5EKQotICAgICAgICAgYXZhaWxhYmxl V2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQotICAgICAgICAgYXZhaWxhYmxlV2luZVZl cnNpb25zU2l6ZXIuQWRkKHd4LlN0YXRpY1RleHQoYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWws IC0xLCBfKCJBdmFpbGFibGUgV2luZSB2ZXJzaW9uczogIiksICg1LCAxMCkpLCAwKQotICAgICAg ICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQotLSAgICAgICAgc2Vs Zi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0gPSB3eC5UcmVlQ3RybChh dmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbCwgMTA2ICsgc2VsZi5jYWxjdWxhdGVFdmVudERlbHRh KGFyY2gpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9GVUxMX1JP V19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMsCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9 KDMyMCwgMzAwKSwgcG9zPSgxMCwgMzUpKQotLSAgICAgICAgc2VsZi5hdmFpbGFibGVXaW5lVmVy c2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzYXBwc1thcmNo XSkKLS0gICAgICAgICNzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNo XS5TZXRTcGFjaW5nKDApCi0tICAgICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGQo c2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0sIDEsIHd4LkVYUEFO RCkKLSsgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3Rvclth cmNoaXRlY3R1cmVdID0gd3guVHJlZUN0cmwoYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA2LCBh cmNoaXRlY3R1cmUpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JP T1QgfCB3eC5UUl9GVUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9KDMyMCwgMzAwKSwgcG9zPSgxMCwgMzUpKQot KyAgICAgICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hp dGVjdHVyZV0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VfbGlzdCkKLSsgICAgICAgIHNlbGYuQmlu ZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgbGFtYmRhIGV2dDogc2VsZi5fb25fc2VsZWN0X2F2 YWlsYWJsZV93aW5lX3ZlcnNpb24oYXJjaGl0ZWN0dXJlKSwgaWQ9c2VsZi5fY2FsY3VsYXRlX2V2 ZW50X251bWJlcigxMDYsIGFyY2hpdGVjdHVyZSkpCi0rCi0rICAgICAgICBhdmFpbGFibGVXaW5l VmVyc2lvbnNTaXplci5BZGQoc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVj dG9yW2FyY2hpdGVjdHVyZV0sIDEsIHd4LkVYUEFORCkKLSAgICAgICAgIGF2YWlsYWJsZVdpbmVW ZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKLSAKLS0gICAgZGVmIF9jcmVhdGVCdXR0b25QYW5l bChzZWxmLCBhcmNoKToKLS0gICAgICAgIGJ1dHRvbnNQYW5lbCA9IHd4LlBhbmVsKHNlbGYucGFu ZWxzW2FyY2hdICwgLTEpCi0rICAgIGRlZiBfY3JlYXRlQnV0dG9uUGFuZWwoc2VsZiwgYXJjaGl0 ZWN0dXJlKToKLSsgICAgICAgIGJ1dHRvbnNQYW5lbCA9IHd4LlBhbmVsKHNlbGYucGFuZWxzW2Fy Y2hpdGVjdHVyZV0sIC0xKQotICAgICAgICAgYnV0dG9uc1NpemVyID0gd3guQm94U2l6ZXIod3gu VkVSVElDQUwpCi0gICAgICAgICBidXR0b25zUGFuZWwuU2V0U2l6ZXIoYnV0dG9uc1NpemVyKQot IAotLSAgICAgICAgc2VsZi5idXR0b25fcm1bYXJjaF0gPSB3eC5CdXR0b24oYnV0dG9uc1BhbmVs LCAxMDggKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVsdGEoYXJjaCksICI8IikKLS0gICAgICAgIHNl bGYuYnV0dG9uX2luW2FyY2hdID0gd3guQnV0dG9uKGJ1dHRvbnNQYW5lbCwgMTA5ICsgc2VsZi5j YWxjdWxhdGVFdmVudERlbHRhKGFyY2gpLCAiPiIpCi0rICAgICAgICBzZWxmLmJ1dHRvbl91bmlu c3RhbGxbYXJjaGl0ZWN0dXJlXSA9IHd4LkJ1dHRvbihidXR0b25zUGFuZWwsIHNlbGYuX2NhbGN1 bGF0ZV9ldmVudF9udW1iZXIoMTA4LCBhcmNoaXRlY3R1cmUpLCAiPCIpCi0rICAgICAgICBzZWxm LmJ1dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0gPSB3eC5CdXR0b24oYnV0dG9uc1BhbmVsLCBz ZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwOSwgYXJjaGl0ZWN0dXJlKSwgIj4iKQotIAot ICAgICAgICAgYnV0dG9uc1NpemVyLkFkZFN0cmV0Y2hTcGFjZXIoKQotLSAgICAgICAgYnV0dG9u c1NpemVyLkFkZChzZWxmLmJ1dHRvbl9ybVthcmNoXSwgMCwgd3guQ0VOVEVSKQotKyAgICAgICAg YnV0dG9uc1NpemVyLkFkZChzZWxmLmJ1dHRvbl91bmluc3RhbGxbYXJjaGl0ZWN0dXJlXSwgMCwg d3guQ0VOVEVSKQotICAgICAgICAgYnV0dG9uc1NpemVyLkFkZFNwYWNlcigxMCkKLS0gICAgICAg IGJ1dHRvbnNTaXplci5BZGQoc2VsZi5idXR0b25faW5bYXJjaF0sIDAsIHd4LkNFTlRFUikKLSsg ICAgICAgIGJ1dHRvbnNTaXplci5BZGQoc2VsZi5idXR0b25faW5zdGFsbFthcmNoaXRlY3R1cmVd LCAwLCB3eC5DRU5URVIpCi0gICAgICAgICBidXR0b25zU2l6ZXIuQWRkU3RyZXRjaFNwYWNlcigp Ci0gCi0tICAgICAgICBzZWxmLmJ1dHRvbl9ybVthcmNoXS5FbmFibGUoRmFsc2UpCi0tICAgICAg ICBzZWxmLmJ1dHRvbl9pblthcmNoXS5FbmFibGUoRmFsc2UpCi0rICAgICAgICBzZWxmLmJ1dHRv bl91bmluc3RhbGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoRmFsc2UpCi0rICAgICAgICBzZWxmLmJ1 dHRvbl9pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxlKEZhbHNlKQotKwotKyAgICAgICAgc2Vs Zi5CaW5kKHd4LkVWVF9CVVRUT04sIGxhbWJkYSBldnQ6IHNlbGYuX29uX2RlbGV0ZShhcmNoaXRl Y3R1cmUpLCBpZD1zZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwOCwgYXJjaGl0ZWN0dXJl KSkKLSsgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBsYW1iZGEgZXZ0OiBzZWxmLl9v bl9pbnN0YWxsKGFyY2hpdGVjdHVyZSksIGlkPXNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIo MTA5LCBhcmNoaXRlY3R1cmUpKQotIAotLSAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaF0uQWRk KGJ1dHRvbnNQYW5lbCwgMSwgd3guRVhQQU5EKQotIAotLSAgICBkZWYgbGlzdGVfdmVyc2lvbnMo c2VsZiwgYXJjaD0ieDg2Iik6Ci0rICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoaXRlY3R1cmVd LkFkZChidXR0b25zUGFuZWwsIDEsIHd4LkVYUEFORCkKLSsKLSsgICAgZGVmIGFkZF9hcmNoaXRl Y3R1cmVfdGFiKHNlbGYsIGFyY2g9Ing4NiIpOgotICAgICAgICAgc2VsZi5wYW5lbHNbYXJjaF0g PSB3eC5QYW5lbChzZWxmLCAtMSkKLSAKLSAgICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hdID0g d3guQm94U2l6ZXIod3guSE9SSVpPTlRBTCkKLSAgICAgICAgIHNlbGYucGFuZWxzW2FyY2hdLlNl dFNpemVyKHNlbGYuYm94U2l6ZXJzW2FyY2hdKQotLSAgICAgICAgc2VsZi5pbWFnZXNhcHBzW2Fy Y2hdID0gd3guSW1hZ2VMaXN0KDIyLCAyMikKLS0gICAgICAgIHNlbGYuaW1hZ2VzYXBwc19pW2Fy Y2hdID0gd3guSW1hZ2VMaXN0KDIyLCAyMikKLSAKLSAgICAgICAgIHNlbGYuYm94U2l6ZXJzW2Fy Y2hdLkFkZFNwYWNlcigxMCkKLSAgICAgICAgIHNlbGYuX2NyZWF0ZUF2YWlsYWJsZVdpbmVWZXJz aW9uc1BhbmVsKGFyY2gpCi1AQCAtOTMsMyArMTEwLDM5IEBAIGRlZiBsaXN0ZV92ZXJzaW9ucyhz ZWxmLCBhcmNoPSJ4ODYiKToKLSAgICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hdLkFkZFNwYWNl cigxMCkKLSAKLSAgICAgICAgIHNlbGYuQWRkUGFnZShzZWxmLnBhbmVsc1thcmNoXSwgXygiV2lu ZSB2ZXJzaW9ucyIpICsgIiAoIiArIGFyY2ggKyAiKSIsIGltYWdlSWQ9MCkKLSsKLSsgICAgZGVm IGNsZWFuX3ZlcnNpb25fb2ZfYXJjaGl0ZWN0dXJlKHNlbGYsIGFyY2gpOgotKyAgICAgICAgc2Vs Zi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hdLkRlbGV0ZUFsbEl0 ZW1zKCkKLSsgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3Rv clthcmNoXS5EZWxldGVBbGxJdGVtcygpCi0rICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3Zl cnNpb25fcm9vdHNbYXJjaF0gPSBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2Vs ZWN0b3JbYXJjaF0uQWRkUm9vdCgiIikKLSsgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVy c2lvbl9yb290c1thcmNoXSA9IHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxl Y3RvclthcmNoXS5BZGRSb290KCIiKQotKyAgICAgICAgc2VsZi5udW1iZXJfb2ZfYXZhaWxhYmxl X3ZlcnNpb25zW2FyY2hdID0gMAotKyAgICAgICAgc2VsZi5udW1iZXJfb2ZfaW5zdGFsbGVkX3Zl cnNpb25zW2FyY2hdID0gMAotKwotKyAgICBkZWYgYWRkX2F2YWlsYWJsZV92ZXJzaW9uKHNlbGYs IGFyY2gsIHZlcnNpb24pOgotKyAgICAgICAgc2VsZi5udW1iZXJfb2ZfYXZhaWxhYmxlX3ZlcnNp b25zW2FyY2hdICs9IDEKLSsgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJl ZV9zZWxlY3RvclthcmNoXS5BcHBlbmRJdGVtKHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbl9y b290c1thcmNoXSwgdmVyc2lvbiwgMCkKLSsKLSsgICAgZGVmIGFkZF9pbnN0YWxsZWRfdmVyc2lv bihzZWxmLCBhcmNoLCB2ZXJzaW9uKToKLSsgICAgICAgIHNlbGYubnVtYmVyX29mX2luc3RhbGxl ZF92ZXJzaW9uc1thcmNoXSArPSAxCi0rICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNp b25zX3RyZWVfc2VsZWN0b3JbYXJjaF0uQXBwZW5kSXRlbShzZWxmLmluc3RhbGxlZF93aW5lX3Zl cnNpb25fcm9vdHNbYXJjaF0sIHZlcnNpb24sIDApCi0rCi0rICAgIGRlZiBfb25fc2VsZWN0X2lu c3RhbGxlZF93aW5lX3ZlcnNpb24oc2VsZiwgYXJjaGl0ZWN0dXJlKToKLSsgICAgICAgIHNlbGYu YXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLlVuc2Vs ZWN0QWxsKCkKLSsgICAgICAgIHNlbGYuYnV0dG9uX3VuaW5zdGFsbFthcmNoaXRlY3R1cmVdLkVu YWJsZShUcnVlKQotKyAgICAgICAgc2VsZi5idXR0b25faW5zdGFsbFthcmNoaXRlY3R1cmVdLkVu YWJsZShGYWxzZSkKLSsKLSsgICAgZGVmIF9vbl9zZWxlY3RfYXZhaWxhYmxlX3dpbmVfdmVyc2lv bihzZWxmLCBhcmNoaXRlY3R1cmUpOgotKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJz aW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uVW5zZWxlY3RBbGwoKQotKyAgICAgICAg c2VsZi5idXR0b25fdW5pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxlKEZhbHNlKQotKyAgICAg ICAgc2VsZi5idXR0b25faW5zdGFsbFthcmNoaXRlY3R1cmVdLkVuYWJsZShUcnVlKQotKwotKyAg ICBkZWYgX29uX2luc3RhbGwoc2VsZiwgYXJjaGl0ZWN0dXJlKToKLSsgICAgICAgIHNlbGVjdGVk X3ZlcnNpb24gPSBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJj aGl0ZWN0dXJlXS5HZXRJdGVtVGV4dChzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVf c2VsZWN0b3JbYXJjaGl0ZWN0dXJlXS5HZXRTZWxlY3Rpb24oKSkKLSsgICAgICAgIGlmIHNlbGYu b25faW5zdGFsbF9oYW5kbGVyIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIHNlbGYub25faW5z dGFsbF9oYW5kbGVyKGFyY2hpdGVjdHVyZSwgc2VsZWN0ZWRfdmVyc2lvbikKLSsKLSsgICAgZGVm IF9vbl9kZWxldGUoc2VsZiwgYXJjaGl0ZWN0dXJlKToKLSsgICAgICAgIHNlbGVjdGVkX3ZlcnNp b24gPSBzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0 dXJlXS5HZXRJdGVtVGV4dChzZWxmLmluc3RhbGxlZF93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0 b3JbYXJjaGl0ZWN0dXJlXS5HZXRTZWxlY3Rpb24oKSkKLSsgICAgICAgIGlmIHNlbGYub25fcmVt b3ZlX2hhbmRsZXIgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgc2VsZi5vbl9yZW1vdmVfaGFu ZGxlcihhcmNoaXRlY3R1cmUsIHNlbGVjdGVkX3ZlcnNpb24pCi1kaWZmIC0tZ2l0IGEvcHl0aG9u L3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkgYi9weXRob24vd2luZV92ZXJzaW9u cy9XaW5lVmVyc2lvbnNUb29scy5weQotaW5kZXggMDZmYjQwMWU2Li42OWQ0Y2YyYjIgMTAwNjQ0 Ci0tLS0gYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weQotKysrIGIv cHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkKLUBAIC0xMCwyMiArMTAs MTAgQEAgZGVmIGZldGNoVXNlck9TKCk6Ci0gICAgIGVsc2U6Ci0gICAgICAgICByZXR1cm4gImZy ZWVic2QiCi0gCi0tZGVmIEdldFdpbmVWZXJzaW9uKGdhbWUpOgotLSAgICBjZmlsZSA9IFZhcmlh Ymxlcy5wbGF5b25saW51eF9yZXAgKyAic2hvcnRjdXRzLyIgKyBnYW1lCi0tICAgIGZpY2hpZXIg PSBvcGVuKGNmaWxlLCAiciIpLnJlYWRsaW5lcygpCi0tICAgIGkgPSAwCi0tICAgIGxpbmUgPSAi IgotLSAgICB3aGlsZSAoaSA8IGxlbihmaWNoaWVyKSk6Ci0tICAgICAgICBmaWNoaWVyW2ldID0g ZmljaGllcltpXS5yZXBsYWNlKCJcbiIsICIiKQotLSAgICAgICAgaWYgKCJQQVRIPSIgaW4gZmlj aGllcltpXSBhbmQgIldpbmVWZXJzaW9ucyIgaW4gZmljaGllcltpXSk6Ci0tICAgICAgICAgICAg bGluZSA9IGZpY2hpZXJbaV0ucmVwbGFjZSgiLy8iLCAiLyIpCi0tICAgICAgICBpICs9IDEKLStk ZWYgYXJjaGl0ZWN0dXJlX2lzX3N1cHBvcnRlZChhcmNoaXRlY3R1cmVfbmFtZSk6Ci0rICAgIHJl dHVybiBUcnVlICMjIEZJWE1FCi0gCi0tICAgIGlmIGxpbmUgPT0gIiI6Ci0tICAgICAgICB2ZXJz aW9uID0gIlN5c3RlbSIKLS0gICAgZWxzZToKLS0gICAgICAgIHZlcnNpb24gPSBsaW5lLnJlcGxh Y2UoIlBBVEg9IiwgIiIpLnJlcGxhY2UoIlwiIiwgIiIpLnJlcGxhY2UoVmFyaWFibGVzLnBsYXlv bmxpbnV4X3JlcCwgIiIpLnJlcGxhY2UoIi8vIiwgIi8iKQotLSAgICAgICAgdmVyc2lvbiA9IHZl cnNpb24uc3BsaXQoIi8iKQotLSAgICAgICAgdmVyc2lvbiA9IHZlcnNpb25bMV0KLS0KLS0gICAg cmV0dXJuIHZlcnNpb24KLStkZWYgZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCk6Ci0rICAgIGZvciBh dmFpbGFibGVfYXJjaCBpbiBbIng4NiIsICJ4ODZvbjY0IiwgImFtZDY0Il06Ci0rICAgICAgICBp ZiBhcmNoaXRlY3R1cmVfaXNfc3VwcG9ydGVkKGF2YWlsYWJsZV9hcmNoKToKLSsgICAgICAgICAg ICB5aWVsZCBhdmFpbGFibGVfYXJjaAotZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25z L1dpbmVWZXJzaW9uc1dpbmRvdy5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9u c1dpbmRvdy5weQotaW5kZXggZTNiOGI0MTYwLi5iNzZkYjBiMjUgMTAwNzU1Ci0tLS0gYS9weXRo b24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKLSsrKyBiL3B5dGhvbi93aW5l X3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQotQEAgLTMwLDE4MyArMzAsOTUgQEAKLSBp bXBvcnQgbGliLnBsYXlvbmxpbnV4IGFzIHBsYXlvbmxpbnV4Ci0gZnJvbSB3aW5lX3ZlcnNpb25z LldpbmVWZXJzaW9uc0ZldGNoZXIgaW1wb3J0IFdpbmVWZXJzaW9uRmV0Y2hlcgotIGZyb20gd2lu ZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNOb3RlYm9vayBpbXBvcnQgV2luZVZlcnNpb25zTm90ZWJv b2sKLS1mcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zVG9vbHMgaW1wb3J0IGZldGNoVXNl ck9TCi0rZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rvb2xzIGltcG9ydCBmZXRjaFVz ZXJPUywgZmV0Y2hfc3VwcG9ydGVkX2FyY2hzCi0gCi0gbGliLmxuZy5MYW5nKCkKLSAKLSAKLS1k ZWYgU2V0V2luZVZlcnNpb24oZ2FtZSwgdmVyc2lvbik6Ci0tICAgIGNmaWxlID0gVmFyaWFibGVz LnBsYXlvbmxpbnV4X3JlcCArICJzaG9ydGN1dHMvIiArIGdhbWUKLS0gICAgZmljaGllciA9IG9w ZW4oY2ZpbGUsICJyIikucmVhZGxpbmVzKCkKLS0gICAgaSA9IDAKLS0gICAgbGluZSA9IFtdCi0t ICAgIHdoaWxlIChpIDwgbGVuKGZpY2hpZXIpKTogICMgT24gcmV0aXJlIGwnZXZlbnR1ZWwKLS0g ICAgICAgIGZpY2hpZXJbaV0gPSBmaWNoaWVyW2ldLnJlcGxhY2UoIlxuIiwgIiIpCi0tICAgICAg ICBpZiAoIlBBVEg9IiBub3QgaW4gZmljaGllcltpXSBvciAiV2luZVZlcnNpb25zIiBub3QgaW4g ZmljaGllcltpXSk6Ci0tICAgICAgICAgICAgbGluZS5hcHBlbmQoZmljaGllcltpXSkKLS0gICAg ICAgIGkgKz0gMQotLQotLSAgICBmaWNoaWVyX3dyaXRlID0gb3BlbihjZmlsZSwgInciKQotK2Ns YXNzIFdpbmVWZXJzaW9uc1dpbmRvdyh3eC5GcmFtZSk6Ci0rICAgIGRlZiBvbl9hdmFpbGFibGVf d2luZV92ZXJzaW9uc19kb3dubG9hZGVkKHNlbGYsIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmUp OgotKyAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJl OgotKyAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucyA9IFtdCi0rICAgICAgICAgICAgZm9y IHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1cmVdOgotKyAg ICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25bIm5hbWUiXSkK LSAKLS0gICAgaWYgKHZlcnNpb24gIT0gIlN5c3RlbSIpOiAgIyBPbiBpbnNlcmUKLS0gICAgICAg IGlmIG9zLmVudmlyb25bIlBPTF9PUyJdID09ICJNYWMiOgotLSAgICAgICAgICAgIGxpbmUuaW5z ZXJ0KDEsICJQQVRIPVwiIiArIFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiV2luZVZlcnNp b25zLyIgKyB2ZXJzaW9uICsgIi9iaW4vOiRQQVRIXCIiKQotLSAgICAgICAgICAgIGxpbmUuaW5z ZXJ0KDEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIkxEX0xJQlJBUllfUEFUSD1cIiIgKyBW YXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIldpbmVWZXJzaW9ucy8iICsgdmVyc2lvbiArICIv bGliLzokTERfTElCUkFSWV9QQVRIXCIiKQotLSAgICAgICAgZWxzZToKLS0gICAgICAgICAgICBs aW5lLmluc2VydCgxLCAiUEFUSD1cIiIgKyBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgIldp bmVWZXJzaW9ucy8iICsgdmVyc2lvbiArICIvdXNyL2Jpbi86JFBBVEhcIiIpCi0tICAgICAgICAg ICAgbGluZS5pbnNlcnQoMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAiTERfTElCUkFSWV9Q QVRIPVwiIiArIFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiV2luZVZlcnNpb25zLyIgKyB2 ZXJzaW9uICsgIi91c3IvbGliLzokTERfTElCUkFSWV9QQVRIXCIiKQotKyAgICAgICAgICAgIGF2 YWlsYWJsZV92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCi0rICAg ICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLnJldmVyc2UoKQotKyAgICAgICAgICAgIGF2YWls YWJsZV92ZXJzaW9ucyA9IGF2YWlsYWJsZV92ZXJzaW9uc1s6XQotIAotLSAgICBpID0gMAotLSAg ICB3aGlsZSAoaSA8IGxlbihsaW5lKSk6ICAjIE9uIGVjcml0Ci0tICAgICAgICBmaWNoaWVyX3dy aXRlLndyaXRlKGxpbmVbaV0gKyAiXG4iKQotLSAgICAgICAgaSArPSAxCi0rICAgICAgICAgICAg Zm9yIHZlcnNpb24gaW4gYXZhaWxhYmxlX3ZlcnNpb25zOgotKyAgICAgICAgICAgICAgICB3eC5D YWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfYXZhaWxhYmxlX3ZlcnNpb24sIGFyY2hpdGVjdHVy ZSwgdmVyc2lvbikKLSAKLSsgICAgZGVmIG9uX2luc3RhbGxlZF93aW5lX3ZlcnNpb25zX2Rvd25s b2FkZWQoc2VsZiwgdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZSk6Ci0rICAgICAgICBmb3IgYXJj aGl0ZWN0dXJlIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmU6Ci0rICAgICAgICAgICAgaW5z dGFsbGVkX3ZlcnNpb25zID0gW10KLSsgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiB2ZXJzaW9u c19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06Ci0rICAgICAgICAgICAgICAgIGluc3Rh bGxlZF92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFtZSJdKQotIAotKyAgICAgICAgICAgIGlu c3RhbGxlZF92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCi0rICAg ICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnJldmVyc2UoKQotKyAgICAgICAgICAgIGluc3Rh bGxlZF92ZXJzaW9ucyA9IGluc3RhbGxlZF92ZXJzaW9uc1s6XQotIAotKyAgICAgICAgICAgIGZv ciB2ZXJzaW9uIGluIGluc3RhbGxlZF92ZXJzaW9uczoKLSsgICAgICAgICAgICAgICAgd3guQ2Fs bEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2luc3RhbGxlZF92ZXJzaW9uLCBhcmNoaXRlY3R1cmUs IHZlcnNpb24pCi0gCi0rICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgZXJyb3IpOgotKyAgICAg ICAgcHJpbnQoZXJyb3IpCi0gCi0tY2xhc3MgV2luZVZlcnNpb25zV2luZG93KHd4LkZyYW1lKToK LSAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgaWQsIHRpdGxlKToKLS0gICAgICAgIHNl bGYuZG93bmxvYWQzMiA9IFdpbmVWZXJzaW9uRmV0Y2hlcigieDg2IikKLS0gICAgICAgIGlmIChv cy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKLS0gICAgICAgICAgICBz ZWxmLmRvd25sb2FkNjQgPSBXaW5lVmVyc2lvbkZldGNoZXIoImFtZDY0IikKLS0KLS0gICAgICAg IHd4LkZyYW1lLl9faW5pdF9fKHNlbGYsIHBhcmVudCwgLTEsIHRpdGxlLCBzaXplPSg3NTAsIDQw MCArIFZhcmlhYmxlcy53aW5kb3dzX2FkZF9zaXplKSwKLSsgICAgICAgIHd4LkZyYW1lLl9faW5p dF9fKHNlbGYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAtMSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0oNzUwLCA0MDAgKyBWYXJpYWJsZXMud2lu ZG93c19hZGRfc2l6ZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5DTE9T RV9CT1ggfCB3eC5DQVBUSU9OIHwgd3guTUlOSU1JWkVfQk9YKQotICAgICAgICAgc2VsZi50aW1l ciA9IHd4LlRpbWVyKHNlbGYsIDEpCi0gICAgICAgICBzZWxmLlNldEljb24od3guSWNvbihWYXJp YWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvcGxheW9ubGludXgucG5nIiwgd3guQklUTUFQ X1RZUEVfQU5ZKSkKLS0gICAgICAgICMgc2VsZi5wYW5lbCA9IHd4LlBhbmVsKHNlbGYsIC0xKQot LQotLSAgICAgICAgc2VsZi5vbmdsZXRzID0gV2luZVZlcnNpb25zTm90ZWJvb2soc2VsZikKLS0g ICAgICAgICMgc2VsZi5zaXplciA9IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FMKQotLSAgICAgICAg IyBzZWxmLnNpemVyLkFkZChzZWxmLm9uZ2xldHMsIDE1LCB3eC5FWFBBTkR8d3guQUxMLCAyKQot KyAgICAgICAgc2VsZi53aW5lX3ZlcnNpb25fZmV0Y2hlciA9IFdpbmVWZXJzaW9uRmV0Y2hlcihm ZXRjaFVzZXJPUygpKQotIAotLSAgICAgICAgc2VsZi5nZXRWZXJzaW9ucygieDg2IikKLS0gICAg ICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKLS0gICAg ICAgICAgICBzZWxmLmdldFZlcnNpb25zKCJhbWQ2NCIpCi0tICAgICAgICAjIHNlbGYucGFuZWwu U2V0U2l6ZXIoc2VsZi5zaXplcikKLS0gICAgICAgICMgc2VsZi5wYW5lbC5TZXRBdXRvTGF5b3V0 KFRydWUpCi0tCi0tICAgICAgICBzZWxmLm9uZ2xldHMubGlzdGVfdmVyc2lvbnMoKQotLSAgICAg ICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgotLSAgICAg ICAgICAgIHNlbGYub25nbGV0cy5saXN0ZV92ZXJzaW9ucygiYW1kNjQiKQotLSAgICAgICAgc2Vs Zi5vbGRyZWxvYWQzMiA9ICIiCi0rICAgICAgICBzZWxmLm5vdGVib29rID0gV2luZVZlcnNpb25z Tm90ZWJvb2soc2VsZikKLSsgICAgICAgIHNlbGYuc2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJU SUNBTCkKLSsgICAgICAgIHNlbGYuc2l6ZXIuQWRkKHNlbGYubm90ZWJvb2ssIDE1LCB3eC5FWFBB TkQgfCB3eC5BTEwsIDIpCi0gCi0tICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFU SUJMRSJdID09ICJUcnVlIik6Ci0tICAgICAgICAgICAgc2VsZi5vbGRyZWxvYWQ2NCA9ICIiCi0r ICAgICAgICBmb3IgYXZhaWxhYmxlX2FyY2ggaW4gZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCk6Ci0r ICAgICAgICAgICAgc2VsZi5ub3RlYm9vay5hZGRfYXJjaGl0ZWN0dXJlX3RhYihhdmFpbGFibGVf YXJjaCkKLSAKLS0gICAgICAgIHNlbGYub2xkdmVyc2lvbnMzMiA9IFtdCi0rICAgICAgICBzZWxm Lmxhc3RfY2hlY2tzdW0gPSBOb25lCi0rICAgICAgICBzZWxmLm5vdGVib29rLm9uX2luc3RhbGxf aGFuZGxlciA9IHNlbGYuaW5zdGFsbF93aW5lX3ZlcnNpb24KLSsgICAgICAgIHNlbGYubm90ZWJv b2sub25fcmVtb3ZlX2hhbmRsZXIgPSBzZWxmLnJlbW92ZV93aW5lX3ZlcnNpb24KLSAKLS0gICAg ICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKLS0gICAg ICAgICAgICBzZWxmLm9sZHZlcnNpb25zNjQgPSBbXQotKyAgICAgICAgc2VsZi5CaW5kKHd4LkVW VF9USU1FUiwgc2VsZi5kZXRlY3RfY2hhbmdlcywgc2VsZi50aW1lcikKLSsgICAgICAgIHNlbGYu dGltZXIuU3RhcnQoMTAwMCkKLSAKLS0gICAgICAgICMgc2VsZi5idXR0b24gPSB3eC5CdXR0b24o c2VsZi5wYW5lbHNfYnV0dG9ucywgd3guSURfQ0xPU0UsIF8oIkNsb3NlIiksIHBvcz0oNTEwLCA1 KSwgc2l6ZT13eC5EZWZhdWx0U2l6ZSkKLSsgICAgZGVmIHJlZnJlc2goc2VsZik6Ci0rICAgICAg ICBmb3IgYXZhaWxhYmxlX2FyY2ggaW4gZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCk6Ci0rICAgICAg ICAgICAgc2VsZi5ub3RlYm9vay5jbGVhbl92ZXJzaW9uX29mX2FyY2hpdGVjdHVyZShhdmFpbGFi bGVfYXJjaCkKLSAKLS0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmNsb3Nl YXBwLCBpZD13eC5JRF9DTE9TRSkKLS0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQ0xPU0UsIHNl bGYuY2xvc2VhcHApCi0tICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQs IHNlbGYudW5zZWxlY3QzMiwgaWQ9MTA2KQotLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9UUkVF X1NFTF9DSEFOR0VELCBzZWxmLnVuc2VsZWN0MzIsIGlkPTEwNykKLS0gICAgICAgIHNlbGYuQmlu ZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmRlbGV0ZTMyLCBpZD0xMDgpCi0tICAgICAgICBzZWxmLkJp bmQod3guRVZUX0JVVFRPTiwgc2VsZi5pbnN0YWxsMzIsIGlkPTEwOSkKLSsgICAgICAgIHNlbGYu d2luZV92ZXJzaW9uX2ZldGNoZXIuZmV0Y2hfYWxsX2F2YWlsYWJsZV93aW5lX3ZlcnNpb24oc2Vs Zi5vbl9hdmFpbGFibGVfd2luZV92ZXJzaW9uc19kb3dubG9hZGVkLCBzZWxmLmhhbmRsZV9lcnJv cikKLSsgICAgICAgIHNlbGYud2luZV92ZXJzaW9uX2ZldGNoZXIuZmV0Y2hfYWxsX2luc3RhbGxl ZF93aW5lX3ZlcnNpb24oc2VsZi5vbl9pbnN0YWxsZWRfd2luZV92ZXJzaW9uc19kb3dubG9hZGVk LCBzZWxmLmhhbmRsZV9lcnJvcikKLSAKLS0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfVFJFRV9T RUxfQ0hBTkdFRCwgc2VsZi51bnNlbGVjdDY0LCBpZD0yMDYpCi0tICAgICAgICBzZWxmLkJpbmQo d3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIHNlbGYudW5zZWxlY3Q2NCwgaWQ9MjA3KQotLSAgICAg ICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuZGVsZXRlNjQsIGlkPTIwOCkKLS0gICAg ICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmluc3RhbGw2NCwgaWQ9MjA5KQotKyAg ICBkZWYgZGV0ZWN0X2NoYW5nZXMoc2VsZiwgZXZlbnQpOgotKyAgICAgICAgY2hlY2tzdW0gPSBz ZWxmLndpbmVfdmVyc2lvbl9mZXRjaGVyLmNhbGN1bGF0ZV9pbnN0YWxsZWRfaGFzaCgpCi0gCi0t ICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RJTUVSLCBzZWxmLkF1dG9SZWxvYWQsIHNlbGYudGlt ZXIpCi0tICAgICAgICBzZWxmLnRpbWVyLlN0YXJ0KDIwMCkKLSsgICAgICAgIGlmIHNlbGYubGFz dF9jaGVja3N1bSAhPSBjaGVja3N1bToKLSsgICAgICAgICAgICBzZWxmLmxhc3RfY2hlY2tzdW0g PSBjaGVja3N1bQotKyAgICAgICAgICAgIHNlbGYucmVmcmVzaCgpCi0gCi0tICAgIGRlZiBBdXRv UmVsb2FkKHNlbGYsIGV2ZW50KToKLS0gICAgICAgIHJlbG9hZDMyID0gb3MubGlzdGRpcihWYXJp YWJsZXMucGxheW9ubGludXhfcmVwICsgIi93aW5lLyIgKyBmZXRjaFVzZXJPUygpICsgIi14ODYi KQotLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIp OgotLSAgICAgICAgICAgIHJlbG9hZDY0ID0gb3MubGlzdGRpcihWYXJpYWJsZXMucGxheW9ubGlu dXhfcmVwICsgIi93aW5lLyIgKyBmZXRjaFVzZXJPUygpICsgIi1hbWQ2NCIpCi0tICAgICAgICBp ZiAoc2VsZi5kb3dubG9hZDMyLnRocmVhZF9tZXNzYWdlID09ICJPayIgb3Igc2VsZi5kb3dubG9h ZDMyLnRocmVhZF9tZXNzYWdlID09ICJFcnIiKToKLS0gICAgICAgICAgICBzZWxmLldyaXRlVmVy c2lvbigpCi0tICAgICAgICAgICAgc2VsZi5kb3dubG9hZDMyLnRocmVhZF9tZXNzYWdlID0gIldh aXQiCi0gCi0tICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJU cnVlIik6Ci0tICAgICAgICAgICAgaWYgKHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfbWVzc2FnZSA9 PSAiT2siIG9yIHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfbWVzc2FnZSA9PSAiRXJyIik6Ci0tICAg ICAgICAgICAgICAgIHNlbGYuV3JpdGVWZXJzaW9uKCJhbWQ2NCIpCi0tICAgICAgICAgICAgICAg IHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfbWVzc2FnZSA9ICJXYWl0IgotLQotLSAgICAgICAgaWYg KG9zLmVudmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgotLSAgICAgICAgICAg IGlmIChyZWxvYWQ2NCAhPSBzZWxmLm9sZHJlbG9hZDY0KToKLS0gICAgICAgICAgICAgICAgc2Vs Zi5nZXRWZXJzaW9ucygiYW1kNjQiKQotLSAgICAgICAgICAgICAgICBzZWxmLm9sZHJlbG9hZDY0 ID0gcmVsb2FkNjQKLS0KLS0gICAgICAgIGlmIChyZWxvYWQzMiAhPSBzZWxmLm9sZHJlbG9hZDMy KToKLS0gICAgICAgICAgICBzZWxmLmdldFZlcnNpb25zKCkKLS0gICAgICAgICAgICBzZWxmLm9s ZHJlbG9hZDMyID0gcmVsb2FkMzIKLS0KLS0gICAgICAgIGlmIChzZWxmLmRvd25sb2FkMzIudmVy c2lvbnMgIT0gc2VsZi5vbGR2ZXJzaW9uczMyKToKLS0gICAgICAgICAgICBzZWxmLm9sZHZlcnNp b25zMzIgPSBzZWxmLmRvd25sb2FkMzIudmVyc2lvbnNbOl0KLS0KLS0gICAgICAgIGlmIChvcy5l bnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKLS0gICAgICAgICAgICBpZiAo c2VsZi5kb3dubG9hZDY0LnZlcnNpb25zICE9IHNlbGYub2xkdmVyc2lvbnM2NCk6Ci0tICAgICAg ICAgICAgICAgIHNlbGYub2xkdmVyc2lvbnM2NCA9IHNlbGYuZG93bmxvYWQ2NC52ZXJzaW9uc1s6 XQotLQotLSAgICBkZWYgc2l6ZWRpcmVjdG9yeShzZWxmLCBwYXRoKToKLS0gICAgICAgIHNpemUg PSAwCi0tICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwYXRoKToKLS0g ICAgICAgICAgICBmb3IgZmljIGluIGZpbGVzOgotLSAgICAgICAgICAgICAgICBzaXplICs9IG9z LnBhdGguZ2V0c2l6ZShvcy5wYXRoLmpvaW4ocm9vdCwgZmljKSkKLS0gICAgICAgIHJldHVybiBz aXplCi0tCi0tICAgIGRlZiB1bnNlbGVjdDMyKHNlbGYsIGV2ZW50KToKLS0gICAgICAgIGlmIChl dmVudC5HZXRJZCgpID09IDEwNik6Ci0tICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmluc3RhbGxl ZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclsieDg2Il0uVW5zZWxlY3RBbGwoKQotLSAgICAgICAg ICAgIHNlbGYub25nbGV0cy5idXR0b25fcm1bIng4NiJdLkVuYWJsZShGYWxzZSkKLS0gICAgICAg ICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX2luWyJ4ODYiXS5FbmFibGUoVHJ1ZSkKLS0gICAgICAg IGlmIChldmVudC5HZXRJZCgpID09IDEwNyk6Ci0tICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmF2 YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclsieDg2Il0uVW5zZWxlY3RBbGwoKQotLSAg ICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25fcm1bIng4NiJdLkVuYWJsZShUcnVlKQotLSAg ICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25faW5bIng4NiJdLkVuYWJsZShGYWxzZSkKLS0K LS0gICAgZGVmIGRlbGV0ZTMyKHNlbGYsIGV2ZW50KToKLS0gICAgICAgIHNlbGYuZGVsZXRlX2Nv bW1vbihldmVudCwgIng4NiIpCi0tCi0tICAgIGRlZiBkZWxldGVfY29tbW9uKHNlbGYsIGV2ZW50 LCBhcmNoKToKLS0gICAgICAgIHZlcnNpb24gPSBzZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZl cnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkdldEl0ZW1UZXh0KAotLSAgICAgICAgICAgIHNlbGYu b25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uR2V0U2VsZWN0 aW9uKCkpCi0tICAgICAgICB1c2VkX3ZlcnNpb24gPSBzZWxmLmNoZWNrVmVyc2lvblVzZShhcmNo KSAgIyBHZXQgdGhlIHNldCBvZiB3aW5lIHZlcnNpb24gdXNlZCBieSB3aW5lcHJlZml4Ci0rICAg IGRlZiByZW1vdmVfd2luZV92ZXJzaW9uKHNlbGYsIGFyY2hpdGVjdHVyZSwgdmVyc2lvbik6Ci0r ICAgICAgICB1c2VkX3ZlcnNpb24gPSBzZWxmLmNoZWNrVmVyc2lvblVzZShhcmNoaXRlY3R1cmUp ICAjIEdldCB0aGUgc2V0IG9mIHdpbmUgdmVyc2lvbiB1c2VkIGJ5IHdpbmVwcmVmaXgKLSAgICAg ICAgIG1lc3NhZ2UgPSBfKCdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHdpbmUgezB9 PycpLmZvcm1hdCh2ZXJzaW9uKQotICAgICAgICAgaWYgdmVyc2lvbiBpbiB1c2VkX3ZlcnNpb246 Ci0gICAgICAgICAgICAgbWVzc2FnZSArPSAiXG4iICsgXygnVGhpcyB2ZXJzaW9uIGlzIENVUlJF TlRMWSBJTiBVU0UnKQotICAgICAgICAgaWYgKHd4LllFUyA9PSB3eC5NZXNzYWdlQm94KG1lc3Nh Z2UsIG9zLmVudmlyb25bIkFQUExJQ0FUSU9OX1RJVExFIl0sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3R5bGU9d3guWUVTX05PIHwgd3guSUNPTl9RVUVTVElPTikpOgot LSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIv d2luZS8iICsgZmV0Y2hVc2VyT1MoKSArICItIiArIGFyY2ggKyAiLyIgKyB2ZXJzaW9uKQotLQot LSAgICBkZWYgaW5zdGFsbDMyKHNlbGYsIGV2ZW50KToKLS0gICAgICAgIHNlbGYuaW5zdGFsbF9j b21tb24oZXZlbnQsICJ4ODYiKQotLQotLSAgICBkZWYgaW5zdGFsbF9jb21tb24oc2VsZiwgZXZl bnQsIGFyY2gpOgotLSAgICAgICAgaW5zdGFsbCA9IHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5l VmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uR2V0SXRlbVRleHQoc2VsZi5vbmdsZXRzLmF2YWls YWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5HZXRTZWxlY3Rpb24oKSkKLS0gICAg ICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiAr ICIvYmFzaC9pbnN0YWxsX3d2ZXIiLCBpbnN0YWxsLCBhcmNoXSkKLSsgICAgICAgICAgICBzaHV0 aWwucm10cmVlKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIGZldGNoVXNl ck9TKCkgKyAiLSIgKyBhcmNoaXRlY3R1cmUgKyAiLyIgKyB2ZXJzaW9uKQotIAotLSAgICBkZWYg dW5zZWxlY3Q2NChzZWxmLCBldmVudCk6Ci0tICAgICAgICBpZiAoZXZlbnQuR2V0SWQoKSA9PSAy MDYpOgotLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVl U2VsZWN0b3JbImFtZDY0Il0uVW5zZWxlY3RBbGwoKQotLSAgICAgICAgICAgIHNlbGYub25nbGV0 cy5idXR0b25fcm1bImFtZDY0Il0uRW5hYmxlKEZhbHNlKQotLSAgICAgICAgICAgIHNlbGYub25n bGV0cy5idXR0b25faW5bImFtZDY0Il0uRW5hYmxlKFRydWUpCi0tICAgICAgICBpZiAoZXZlbnQu R2V0SWQoKSA9PSAyMDcpOgotLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5l VmVyc2lvbnNUcmVlU2VsZWN0b3JbImFtZDY0Il0uVW5zZWxlY3RBbGwoKQotLSAgICAgICAgICAg IHNlbGYub25nbGV0cy5idXR0b25fcm1bImFtZDY0Il0uRW5hYmxlKFRydWUpCi0tICAgICAgICAg ICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblsiYW1kNjQiXS5FbmFibGUoRmFsc2UpCi0gCi0tICAg IGRlZiBkZWxldGU2NChzZWxmLCBldmVudCk6Ci0tICAgICAgICBzZWxmLmRlbGV0ZV9jb21tb24o ZXZlbnQsICJhbWQ2NCIpCi0rICAgIGRlZiBpbnN0YWxsX3dpbmVfdmVyc2lvbihzZWxmLCBhcmNo aXRlY3R1cmUsIHZlcnNpb24pOgotKyAgICAgICAgcHJpbnQoIiVzIG9mIGFyY2hpdGVjdHVyZSAl cyB3aWxsIGJlIGluc3RhbGxlZCAiICUgKHZlcnNpb24sIGFyY2hpdGVjdHVyZSkpCi0rICAgICAg ICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAi L2Jhc2gvaW5zdGFsbF93dmVyIiwgdmVyc2lvbiwgYXJjaGl0ZWN0dXJlXSkKLSAKLS0gICAgZGVm IGluc3RhbGw2NChzZWxmLCBldmVudCk6Ci0tICAgICAgICBzZWxmLmluc3RhbGxfY29tbW9uKGV2 ZW50LCAiYW1kNjQiKQotLQotLSAgICBkZWYgZ2V0VmVyc2lvbnMoc2VsZiwgYXJjaD0ieDg2Iik6 Ci0tICAgICAgICBpZiAoYXJjaCA9PSAieDg2Iik6Ci0tICAgICAgICAgICAgc2VsZi5kb3dubG9h ZDMyLnRocmVhZF9tZXNzYWdlID0gImdldCIKLS0gICAgICAgIGlmIChhcmNoID09ICJhbWQ2NCIp OgotLSAgICAgICAgICAgIHNlbGYuZG93bmxvYWQ2NC50aHJlYWRfbWVzc2FnZSA9ICJnZXQiCi0g Ci0gICAgIGRlZiBjaGVja1ZlcnNpb25Vc2Uoc2VsZiwgYXJjaCk6ICAjIENoZWNrIHRoZSB3aW5l IHZlcnNpb24gdXNlIGJ5IHdpbmVwcmVmaXgKLSAgICAgICAgIHVzZWRfdmVyc2lvbnMgPSBzZXQo W10pCi1AQCAtMjE4LDY0ICsxMzAsOCBAQCBkZWYgY2hlY2tWZXJzaW9uVXNlKHNlbGYsIGFyY2gp OiAgIyBDaGVjayB0aGUgd2luZSB2ZXJzaW9uIHVzZSBieSB3aW5lcHJlZml4Ci0gICAgICAgICAg ICAgICAgIHVzZWRfdmVyc2lvbnMuYWRkKHdpbmVfdmVyc2lvbikKLSAgICAgICAgIHJldHVybiAo dXNlZF92ZXJzaW9ucykKLSAKLS0gICAgZGVmIFdyaXRlVmVyc2lvbihzZWxmLCBhcmNoPSJ4ODYi KToKLS0gICAgICAgIHNlbGYub25nbGV0cy5pbWFnZXNhcHBzW2FyY2hdLlJlbW92ZUFsbCgpCi0t ICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc19pW2FyY2hdLlJlbW92ZUFsbCgpCi0tICAg ICAgICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hd LkRlbGV0ZUFsbEl0ZW1zKCkKLS0gICAgICAgIHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVy c2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uRGVsZXRlQWxsSXRlbXMoKQotLQotLSAgICAgICAgcm9v dCA9IHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0u QWRkUm9vdCgiIikKLS0gICAgICAgIHNlbGYuaSA9IDAKLS0gICAgICAgIGlmIChhcmNoID09ICJ4 ODYiKToKLS0gICAgICAgICAgICB3aGlsZSAoc2VsZi5pIDwgbGVuKHNlbGYuZG93bmxvYWQzMi52 ZXJzaW9ucykpOgotLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc1thcmNo XS5BZGQoCi0tICAgICAgICAgICAgICAgICAgICB3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxp bnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS1wYWNrYWdlcy5wbmciKSkKLS0gICAgICAgICAg ICAgICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNo XS5BcHBlbmRJdGVtKHJvb3QsIHNlbGYuZG93bmxvYWQzMi52ZXJzaW9uc1tzZWxmLmldLCBzZWxm LmkpCi0tICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCi0tICAgICAgICBpZiAoYXJjaCA9PSAi YW1kNjQiKToKLS0gICAgICAgICAgICB3aGlsZSAoc2VsZi5pIDwgbGVuKHNlbGYuZG93bmxvYWQ2 NC52ZXJzaW9ucykpOgotLSAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc1th cmNoXS5BZGQoCi0tICAgICAgICAgICAgICAgICAgICB3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlv bmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS1wYWNrYWdlcy5wbmciKSkKLS0gICAgICAg ICAgICAgICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3Rvclth cmNoXS5BcHBlbmRJdGVtKHJvb3QsIHNlbGYuZG93bmxvYWQ2NC52ZXJzaW9uc1tzZWxmLmldLCBz ZWxmLmkpCi0tICAgICAgICAgICAgICAgIHNlbGYuaSArPSAxCi0tCi0tICAgICAgICByb290MiA9 IHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uQWRk Um9vdCgiIikKLS0gICAgICAgIHdmb2xkZXIgPSBmZXRjaFVzZXJPUygpICsgIi0iICsgYXJjaAot LQotLSAgICAgICAgdXNlZF92ZXJzaW9uID0gc2VsZi5jaGVja1ZlcnNpb25Vc2UoYXJjaCkgICMg R2V0IHRoZSBzZXQgb2Ygd2luZSB2ZXJzaW9uIHVzZWQgYnkgd2luZXByZWZpeAotLQotLSAgICAg ICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gb3MubGlzdGRpcihWYXJpYWJsZXMucGxheW9ubGludXhf cmVwICsgIi93aW5lLyIgKyB3Zm9sZGVyKQotLSAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnNv cnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKLS0gICAgICAgIGluc3RhbGxlZF92ZXJz aW9ucy5yZXZlcnNlKCkKLS0gICAgICAgIHNlbGYuaSA9IDAKLS0gICAgICAgIHNlbGYuaiA9IDAK LS0gICAgICAgIGJvbGRGb250ID0gc2VsZi5HZXRGb250KCkKLS0gICAgICAgIGJvbGRGb250LlNl dFdlaWdodCh3eC5CT0xEKQotLSAgICAgICAgd2hpbGUgKHNlbGYuaSA8IGxlbihpbnN0YWxsZWRf dmVyc2lvbnMpKToKLS0gICAgICAgICAgICBpZiAob3MucGF0aC5pc2RpcihWYXJpYWJsZXMucGxh eW9ubGludXhfcmVwICsgIi93aW5lLyIgKyB3Zm9sZGVyICsgIi8iICsgaW5zdGFsbGVkX3ZlcnNp b25zW3NlbGYuaV0pKToKLS0gICAgICAgICAgICAgICAgaXRlbUlkID0gc2VsZi5vbmdsZXRzLmlu c3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5BcHBlbmRJdGVtKHJvb3QyLCBp bnN0YWxsZWRfdmVyc2lvbnNbc2VsZi5pXSwgc2VsZi5qKQotLSAgICAgICAgICAgICAgICBpZiAo bGVuKG9zLmxpc3RkaXIoCi0tICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVzLnBsYXlv bmxpbnV4X3JlcCArICIvd2luZS8iICsgd2ZvbGRlciArICIvIiArIGluc3RhbGxlZF92ZXJzaW9u c1tzZWxmLmldKSkgPT0gMCk6Ci0tICAgICAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW1h Z2VzYXBwc19pW2FyY2hdLkFkZCgKLS0gICAgICAgICAgICAgICAgICAgICAgICB3eC5CaXRtYXAo VmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwvd2luZS13YXJuaW5nLnBu ZyIpKQotLSAgICAgICAgICAgICAgICBlbGlmIGluc3RhbGxlZF92ZXJzaW9uc1tzZWxmLmldIG5v dCBpbiB1c2VkX3ZlcnNpb246Ci0tICAgICAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW1h Z2VzYXBwc19pW2FyY2hdLkFkZCh3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiAr ICIvZXRjL2luc3RhbGwvd2luZS5wbmciKSkKLS0gICAgICAgICAgICAgICAgZWxzZTogICMgQ2xl YXJseSBzaG93IHRoZSB3aW5lIHZlcnNpb24gaW4gdXNlCi0tICAgICAgICAgICAgICAgICAgICBz ZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc19pW2FyY2hdLkFkZCgKLS0gICAgICAgICAgICAgICAgICAg ICAgICB3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL2luc3RhbGwv d2luZS1pbi11c2UucG5nIikpCi0tICAgICAgICAgICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW5z dGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEl0ZW1Gb250KGl0ZW1JZCwg Ym9sZEZvbnQpCi0tICAgICAgICAgICAgICAgIHNlbGYuaiArPSAxCi0tICAgICAgICAgICAgc2Vs Zi5pICs9IDEKLS0gICAgICAgIHRyeToKLS0gICAgICAgICAgICBpZiAodmVyc2lvbnNbMF0gPT0g IldpbmUgcGFja2FnZXMgd2Vic2l0ZSBpcyB1bmF2YWlsYWJsZSIpOgotLSAgICAgICAgICAgICAg ICBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkVu YWJsZShGYWxzZSkKLS0gICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNbYXJj aF0uUmVtb3ZlQWxsKCkKLS0gICAgICAgIGV4Y2VwdDoKLS0gICAgICAgICAgICBwYXNzCi0tICAg ICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtW2FyY2hdLkVuYWJsZShGYWxzZSkKLS0gICAgICAg IHNlbGYub25nbGV0cy5idXR0b25faW5bYXJjaF0uRW5hYmxlKEZhbHNlKQotLQotLSAgICBkZWYg Y2xvc2VhcHAoc2VsZiwgZXZlbnQpOgotKwotKyAgICBkZWYgY2xvc2Uoc2VsZiwgZXZlbnQpOgot ICAgICAgICAgc2VsZi5kb3dubG9hZDMyLnRocmVhZF9ydW5uaW5nID0gRmFsc2UKLSAgICAgICAg IGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRydWUiKToKLSAgICAgICAg ICAgICBzZWxmLmRvd25sb2FkNjQudGhyZWFkX3J1bm5pbmcgPSBGYWxzZQotCi1Gcm9tIDk3MDQy NTkyMWE0OTM0YWQ1ODQyM2U2MWM3OTlmNDc4NWZjZGU4YzIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCi1Gcm9tOiBRdWVudGluIFBBUklTIDxnaXRAcXVlbnRpbi5wYXJpcz4KLURhdGU6IFN1biwg MjQgSmFuIDIwMjEgMTU6NDE6MzIgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8zM10gUmVhZmN0 b3Jpbmcgd2luZSB2ZXJzaW9uIG1hbmFnZXIgY29kZQotCi0tLS0KLSBsaWIvc2NyaXB0cy5saWIg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOSArKysrKysrKystLS0KLSBsaWIvd2luZS5s aWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNiArKy0tCi0gcHl0aG9uL3dpbmVf dmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkgIHwgMTAgKysrKysrLQotIHB5dGhvbi93aW5l X3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weSB8IDM0ICsrKysrKysrKysrKy0tLS0tLS0t LS0KLSA0IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9ucygtKQot Ci1kaWZmIC0tZ2l0IGEvbGliL3NjcmlwdHMubGliIGIvbGliL3NjcmlwdHMubGliCi1pbmRleCBm YmQzNjM0YzQuLjRmZDNmYjVjNSAxMDA3NTUKLS0tLSBhL2xpYi9zY3JpcHRzLmxpYgotKysrIGIv bGliL3NjcmlwdHMubGliCi1AQCAtNzcsMTcgKzc3LDI4IEBAIFBPTF9TeXN0ZW1fU2V0QXJjaCgp Ci0gCSMgVXNhZ2U6IFBPTF9TeXN0ZW1fU2V0QXJjaCAoYXV0b3x4ODZ8YW1kNjQpCi0gCSMgSWYg YW1kNjQgaXMgc3BlY2lmaWVkIGFuZCBub3Qgc3VwcG9ydGVkLCB0aGUgc2NyaXB0IHdpbGwgZW5k Ci0gCi0tCSMgJDEgPSBBdXRvLCB4ODYsIGFtZDY0Ci0rCSMgJDEgPSBBdXRvLCB4ODYsIGFtZDY0 LCB4ODZvbjY0Ci0gCSMgJDIgPSBkZXRlY3RlZCwgaWYgdGhlIHJlc3VsdCBvZiBhbiBhdXRvbWF0 aWMgc2VsZWN0aW9uCi0gCi0tCWlmIFsgISAiJDEiID09ICJ4ODYiIF0gJiYgWyAhICIkMSIgPT0g ImFtZDY0IiBdCi0rCWlmIFsgISAiJDEiID09ICJ4ODYiIF0gJiYgWyAhICIkMSIgPT0gImFtZDY0 IiBdICYmIFsgISAiJDEiID09ICJ4ODZvbjY0IiBdCi0gCXRoZW4KLS0JCVsgIiRBTUQ2NF9DT01Q QVRJQkxFIiA9PSAiVHJ1ZSIgXSAmJiBleHBvcnQgUE9MX0FSQ0g9ImFtZDY0IiB8fCBleHBvcnQg UE9MX0FSQ0g9Ing4NiIKLSsJICBpZiBbWyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV07IHRoZW4K LSsJICAgIGV4cG9ydCBQT0xfQVJDSD0ieDg2b242NCIKLSsJICBlbHNlCi0rICAJCVsgIiRBTUQ2 NF9DT01QQVRJQkxFIiA9PSAiVHJ1ZSIgXSAmJiBleHBvcnQgUE9MX0FSQ0g9ImFtZDY0IiB8fCBl eHBvcnQgUE9MX0FSQ0g9Ing4NiIKLSsgIAlmaQotIAlmaQotKwotIAlpZiBbICIkMSIgPT0gIng4 NiIgXQotIAl0aGVuCi0tCQlleHBvcnQgUE9MX0FSQ0g9Ing4NiIKLSsJCVtbICIkT1NYX1ZFUlNJ T04iIC1nZSAxOSBdXSAmJiBleHBvcnQgUE9MX0FSQ0g9Ing4Nm9uNjQiIHx8IGV4cG9ydCBQT0xf QVJDSD0ieDg2IgotIAlmaQotKwotKwlpZiBbICIkMSIgPT0gIng4Nm9uNjQiIF0KLSsJdGhlbgot KwkJW1sgIiRPU1hfVkVSU0lPTiIgLWdlIDE5IF1dICYmIGV4cG9ydCBQT0xfQVJDSD0ieDg2b242 NCIgfHwgUE9MX0RlYnVnX0ZhdGFsICJ4ODZvbjY0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgeW91ciBz eXN0ZW0iCi0rCWZpCi0rCi0gCWlmIFsgIiQxIiA9PSAiYW1kNjQiIF0KLSAJdGhlbgotIAkJWyAi JEFNRDY0X0NPTVBBVElCTEUiID09ICJUcnVlIiBdICYmIGV4cG9ydCBQT0xfQVJDSD0iYW1kNjQi IHx8IFBPTF9EZWJ1Z19GYXRhbCAiYW1kNjQgaXMgbm90IHN1cHBvcnRlZCBieSB5b3VyIHN5c3Rl bSIKLWRpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9saWIvd2luZS5saWIKLWluZGV4IGQyN2Rl MTUwOS4uNDM0NzVmMzEwIDEwMDc1NQotLS0tIGEvbGliL3dpbmUubGliCi0rKysgYi9saWIvd2lu ZS5saWIKLUBAIC02NzgsNyArNjc4LDYgQEAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24oKSB7Ci0g Ci0gICAgIFdJTkVfQUREUkVTUz0iJChlY2hvICIkV0lORURBVEEiIHwganEgJy51cmwnIC1yKSIK LSAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUgYWRkcmVzcyBmb3VuZDogJFdJTkVfQUREUkVT UyIKLS0gICAgI1dJTkVfQUREUkVTUz0kKCRQT0xfV0dFVCAiJFdJTkVfU0lURS8kV0lORV9TRUNU SU9OLmxzdCIgLU8tIHwgZ3JlcCAiOyRwb2xfd2luZXZlcnNpb247IiB8IHRhaWwgLW4gMSB8IGN1 dCAtZCAiOyIgLWYxKQotIAotICAgICBpZiBbICIkV0lORV9BRERSRVNTIiA9ICIiIF0gJiYgWyAi JFBPTF9BUkNIIiA9ICJhbWQ2NCIgXTsgdGhlbgotICAgICAgIFBPTF9EZWJ1Z19XYXJuaW5nICJX aW5lICQxIGFtZDY0IGRvZXMgbm90IGV4aXN0LiBTd2l0Y2hpbmcgdG8geDg2IgotQEAgLTY5Nyw3 ICs2OTYsOCBAQCBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbigpIHsKLSAgICAgICBmaQotIAotICAg ICAgIGNkICIkUE9MX1VTRVJfUk9PVC90bXAiCi0tICAgICAgZmlsZW5hbWU9IiRQV0QvUGxheU9u TGludXgtd2luZS0kcG9sX3dpbmV2ZXJzaW9uLSRQT0xfV0lORURJU1RSSUJVVElPTi0kQVJDSF9Q UkVGSVgtJHNpdGVfYXJjaC50YXIuZ3oiCi0rICAgICAgZmlsZW5hbWU9IiRQV0QvJChiYXNlbmFt ZSAiJFdJTkVfQUREUkVTUyIpIgotKyAgICAgIGVjaG8gIkxvY2FsIGZpbGUgbmFtZTogJGZpbGVu YW1lIgotICAgICAgIFBPTF9TZXR1cFdpbmRvd19kb3dubG9hZCAiJChldmFsX2dldHRleHQgIkRv d25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lvbiIgIiRUSVRMRSIgIiRXSU5FX0FERFJF U1MiCi0gICAgICAgUE9MX1NldHVwV2luZG93X3dhaXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0 ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAiKSRwb2xfd2luZXZlcnNpb24iICIkVElUTEUiCi0gICAg ICAgc2xlZXAgMQotQEAgLTcwNiw3ICs3MDYsNyBAQCBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbigp IHsKLSAgICAgICBlY2hvICJTZXJ2ZXIgc2hhMSA6ICRzaGExIgotICAgICAgIGVjaG8gIkNsaWVu dCBzaGExIDogJHNoYTFfZmlsZSIKLSAKLS0gICAgICBpZiBbICEgIiRzaGExIiA9ICIkc2hhMV9m aWxlIiBdICYmIFtbICRPU1hfVkVSU0lPTiAtbHQgMTkgXV07IHRoZW4KLSsgICAgICBpZiBbICEg IiRzaGExIiA9ICIkc2hhMV9maWxlIiBdOyB0aGVuCi0gICAgICAgICBQT0xfU2V0dXBXaW5kb3df bWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1RoZSBkb3dubG9hZCBzZWVtcyB0byBoYXZlIGZhaWxl ZC4nKSIgIiRUSVRMRSIKLSAgICAgICBlbHNlCi0gICAgICAgICBQT0xfU2V0dXBXaW5kb3dfd2Fp dCAiJChldmFsX2dldHRleHQgJ0V4dHJhY3RpbmcgV2luZS4uLicpIiAiJFRJVExFIgotZGlmZiAt LWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5IGIvcHl0aG9u L3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkKLWluZGV4IDY5ZDRjZjJiMi4uMzU5 MzU1OTliIDEwMDY0NAotLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9v bHMucHkKLSsrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5Ci1A QCAtMSw2ICsxLDUgQEAKLSBpbXBvcnQgb3MKLSAKLS1mcm9tIGxpYiBpbXBvcnQgVmFyaWFibGVz Ci0gCi0gZGVmIGZldGNoVXNlck9TKCk6Ci0gICAgIGlmIChvcy5lbnZpcm9uWyJQT0xfT1MiXSA9 PSAiTWFjIik6Ci1AQCAtMTAsNyArOSwxNiBAQCBkZWYgZmV0Y2hVc2VyT1MoKToKLSAgICAgZWxz ZToKLSAgICAgICAgIHJldHVybiAiZnJlZWJzZCIKLSAKLSsKLSBkZWYgYXJjaGl0ZWN0dXJlX2lz X3N1cHBvcnRlZChhcmNoaXRlY3R1cmVfbmFtZSk6Ci0rICAgIGlmIGZldGNoVXNlck9TKCkgPT0g ImxpbnV4IjoKLSsgICAgICAgIHJldHVybiBhcmNoaXRlY3R1cmVfbmFtZSBpbiBbIng4NiIsICJh bWQ2NCJdCi0rCi0rICAgIGlmIGZldGNoVXNlck9TKCkgPT0gImRhcndpbiI6Ci0rICAgICAgICBp ZiBpbnQob3MuZW52aXJvbi5nZXQoIk9TWF9WRVJTSU9OIiwgMCkpID49IDE5OgotKyAgICAgICAg ICAgIHJldHVybiBhcmNoaXRlY3R1cmVfbmFtZSBpbiBbIng4Nm9uNjQiLCAiYW1kNjQiXQotKyAg ICAgICAgZWxzZToKLSsgICAgICAgICAgICByZXR1cm4gYXJjaGl0ZWN0dXJlX25hbWUgaW4gWyJ4 ODYiLCAiYW1kNjQiXQotICAgICByZXR1cm4gVHJ1ZSAjIyBGSVhNRQotIAotIGRlZiBmZXRjaF9z dXBwb3J0ZWRfYXJjaHMoKToKLWRpZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5l VmVyc2lvbnNXaW5kb3cucHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5k b3cucHkKLWluZGV4IGI3NmRiMGIyNS4uMmVjYWMzZjU1IDEwMDc1NQotLS0tIGEvcHl0aG9uL3dp bmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5Ci0rKysgYi9weXRob24vd2luZV92ZXJz aW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKLUBAIC0zOCwyOSArMzgsMzEgQEAKLSBjbGFzcyBX aW5lVmVyc2lvbnNXaW5kb3cod3guRnJhbWUpOgotICAgICBkZWYgb25fYXZhaWxhYmxlX3dpbmVf dmVyc2lvbnNfZG93bmxvYWRlZChzZWxmLCB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlKToKLSAg ICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZToKLS0g ICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbXQotLSAgICAgICAgICAgIGZvciB2ZXJz aW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJjaGl0ZWN0dXJlXToKLS0gICAgICAg ICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJuYW1lIl0pCi0rICAg ICAgICAgICAgaWYgYXJjaGl0ZWN0dXJlIGluIGZldGNoX3N1cHBvcnRlZF9hcmNocygpOgotKyAg ICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbXQotKyAgICAgICAgICAgICAgICBm b3IgdmVyc2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06Ci0r ICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25bIm5h bWUiXSkKLSAKLS0gICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuc29ydChrZXk9bmF0c29y dC5uYXRzb3J0X2tleWdlbigpKQotLSAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5yZXZl cnNlKCkKLS0gICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBhdmFpbGFibGVfdmVyc2lv bnNbOl0KLSsgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNv cnQubmF0c29ydF9rZXlnZW4oKSkKLSsgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25z LnJldmVyc2UoKQotKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBhdmFpbGFi bGVfdmVyc2lvbnNbOl0KLSAKLS0gICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiBhdmFpbGFibGVf dmVyc2lvbnM6Ci0tICAgICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFk ZF9hdmFpbGFibGVfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKQotKyAgICAgICAgICAg ICAgICBmb3IgdmVyc2lvbiBpbiBhdmFpbGFibGVfdmVyc2lvbnM6Ci0rICAgICAgICAgICAgICAg ICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfYXZhaWxhYmxlX3ZlcnNpb24sIGFy Y2hpdGVjdHVyZSwgdmVyc2lvbikKLSAKLSAgICAgZGVmIG9uX2luc3RhbGxlZF93aW5lX3ZlcnNp b25zX2Rvd25sb2FkZWQoc2VsZiwgdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZSk6Ci0gICAgICAg ICBmb3IgYXJjaGl0ZWN0dXJlIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmU6Ci0tICAgICAg ICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gW10KLS0gICAgICAgICAgICBmb3IgdmVyc2lvbiBp biB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hpdGVjdHVyZV06Ci0tICAgICAgICAgICAg ICAgIGluc3RhbGxlZF92ZXJzaW9ucy5hcHBlbmQodmVyc2lvblsibmFtZSJdKQotKyAgICAgICAg ICAgIGlmIGFyY2hpdGVjdHVyZSBpbiBmZXRjaF9zdXBwb3J0ZWRfYXJjaHMoKToKLSsgICAgICAg ICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gW10KLSsgICAgICAgICAgICAgICAgZm9yIHZl cnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1cmVdOgotKyAgICAg ICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLmFwcGVuZCh2ZXJzaW9uWyJuYW1lIl0p Ci0gCi0tICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zLnNvcnQoa2V5PW5hdHNvcnQubmF0 c29ydF9rZXlnZW4oKSkKLS0gICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMucmV2ZXJzZSgp Ci0tICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gaW5zdGFsbGVkX3ZlcnNpb25zWzpd Ci0rICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5h dHNvcnRfa2V5Z2VuKCkpCi0rICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5yZXZl cnNlKCkKLSsgICAgICAgICAgICAgICAgaW5zdGFsbGVkX3ZlcnNpb25zID0gaW5zdGFsbGVkX3Zl cnNpb25zWzpdCi0gCi0tICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gaW5zdGFsbGVkX3ZlcnNp b25zOgotLSAgICAgICAgICAgICAgICB3eC5DYWxsQWZ0ZXIoc2VsZi5ub3RlYm9vay5hZGRfaW5z dGFsbGVkX3ZlcnNpb24sIGFyY2hpdGVjdHVyZSwgdmVyc2lvbikKLSsgICAgICAgICAgICAgICAg Zm9yIHZlcnNpb24gaW4gaW5zdGFsbGVkX3ZlcnNpb25zOgotKyAgICAgICAgICAgICAgICAgICAg d3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2luc3RhbGxlZF92ZXJzaW9uLCBhcmNoaXRl Y3R1cmUsIHZlcnNpb24pCi0gCi0gICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgZXJyb3IpOgot ICAgICAgICAgcHJpbnQoZXJyb3IpCi0KLUZyb20gNzQ5OTE3YjBkMGM2ZDQzOWY3MTAwNGZkZDli YzU2OTkyYmI5MWYxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFF1ZW50aW4gUEFS SVMgPGdpdEBxdWVudGluLnBhcmlzPgotRGF0ZTogU3VuLCAyNCBKYW4gMjAyMSAxNTo0Njo0NCAr MDEwMAotU3ViamVjdDogW1BBVENIIDE3LzMzXSBSZWFmY3RvcmluZyB3aW5lIHZlcnNpb24gbWFu YWdlciBjb2RlCi0KLS0tLQotIENIQU5HRUxPRy5tZCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQs IDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvQ0hBTkdFTE9HLm1kIGIvQ0hBTkdFTE9H Lm1kCi1pbmRleCBjZGUyZDgyYzQuLjczNWY2MTE0YSAxMDA2NDQKLS0tLSBhL0NIQU5HRUxPRy5t ZAotKysrIGIvQ0hBTkdFTE9HLm1kCi1AQCAtMSwzICsxLDYgQEAKLSsjIDQuNC4yIAotKyogUmVm YWN0b3JlZCB3aW5lIHZlcnNpb24gd2luZG93IAotKwotICMgNC40Ci0gKiBQeXRob24gMyBzdXBw b3J0IAotIAotCi1Gcm9tIGM1OWQwM2I1NzE3MTQzYjQxMDJiNzAxNTlhMGQyMTg1MDQyMmNlNjQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTbTBrM3IgPDExNTU4NDk5KzVtMGszckB1 c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBUaHUsIDMgRmViIDIwMjIgMjI6NDE6MDkg LTAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8zM10gVXBkYXRlIHBsYXlvbmxpbnV4LnB5Ci0KLUF2 b2lkIHN0cmluZ3MgaW4gdmVyc2lvbjEgYW5kIHZlcnNpb24yIHZhcmlhYmxlcyB3aXRoIGlzbnVt ZXJpYygpIGZ1bmN0aW9uLCBhbmQgaGFuZGxpbmcgZXJyb3Igd2l0aCB0cnktZXhjZXB0IGJsb2Nr LgotLS0tCi0gcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSB8IDEwICsrKysrKysrLS0KLSAxIGZp bGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSBiL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkK LWluZGV4IDNlODdkOTBhYS4uOTYwNzA3ZDkxIDEwMDc1NQotLS0tIGEvcHl0aG9uL2xpYi9wbGF5 b25saW51eC5weQotKysrIGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQotQEAgLTI3OCwxMSAr Mjc4LDE3IEBAIGRlZiBWZXJzaW9uTG93ZXIodmVyc2lvbjEsIHZlcnNpb24yKToKLSAgICAgICAg IGVsc2U6Ci0gICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gCi0tICAgIHZlcnNpb24xID0gWyBp bnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpWzozXSBdCi0rICAg IHRyeToKLSsgICAgICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJz aW9uMVswXS5zcGxpdCgiLiIpIF0KLSsgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0rICAgICAgICB2 ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4i KSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCi0gICAgIHdoaWxlIGxlbih2ZXJzaW9uMSkgPCAzOgot ICAgICAgICAgdmVyc2lvbjEuYXBwZW5kKDApCi0gCi0tICAgIHZlcnNpb24yID0gWyBpbnQoZGln aXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpWzozXSBdCi0rICAgIHRyeToK LSsgICAgICAgIHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlsw XS5zcGxpdCgiLiIpIF0KLSsgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0rICAgICAgICB2ZXJzaW9u MiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBpZiBk aWdpdC5pc251bWVyaWMoKSBdCi0gICAgIHdoaWxlIGxlbih2ZXJzaW9uMikgPCAzOgotICAgICAg ICAgdmVyc2lvbjIuYXBwZW5kKDApCi0gCi0KLUZyb20gMjE2YzQ0ODlhZDQxNTQ2YzYxNWZjZDU3 MzJkNmM5YzVjOGYzMTUzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNtMGszciA8 MTE1NTg0OTkrNW0wazNyQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFRodSwgMyBG ZWIgMjAyMiAyMjo0Nzo1NCAtMDMwMAotU3ViamVjdDogW1BBVENIIDE5LzMzXSBVcGRhdGUgcGxh eW9ubGludXgucHkKLQotV29ya2Fyb3VuZCBmb3Igbm9uLW51bWVyaWMgY2hhcmFjdGVycyBpbiBs aXN0IHZlcnNpb24xIGFuZCB2ZXJzaW9uMiB3aXRob3V0IGVycm9yIGhhbmRsaW5nIHRvIGtlZXAg c2ltcGxlLgotLS0tCi0gcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSB8IDEwICsrLS0tLS0tLS0K LSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQotCi1kaWZm IC0tZ2l0IGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSBiL3B5dGhvbi9saWIvcGxheW9ubGlu dXgucHkKLWluZGV4IDk2MDcwN2Q5MS4uZmE5YjkwZmI5IDEwMDc1NQotLS0tIGEvcHl0aG9uL2xp Yi9wbGF5b25saW51eC5weQotKysrIGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQotQEAgLTI3 OCwxNyArMjc4LDExIEBAIGRlZiBWZXJzaW9uTG93ZXIodmVyc2lvbjEsIHZlcnNpb24yKToKLSAg ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gCi0tICAgIHRyeToKLS0g ICAgICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMVswXS5z cGxpdCgiLiIpIF0KLS0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0tICAgICAgICB2ZXJzaW9uMSA9 IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4iKSBpZiBkaWdp dC5pc251bWVyaWMoKSBdCi0rICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBp biB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpIGlmIGRpZ2l0LmlzbnVtZXJpYygpIF0KLSAgICAgd2hp bGUgbGVuKHZlcnNpb24xKSA8IDM6Ci0gICAgICAgICB2ZXJzaW9uMS5hcHBlbmQoMCkKLSAKLS0g ICAgdHJ5OgotLSAgICAgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZl cnNpb24yWzBdLnNwbGl0KCIuIikgXQotLSAgICBleGNlcHQgVmFsdWVFcnJvcjoKLS0gICAgICAg IHZlcnNpb24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgi LiIpIGlmIGRpZ2l0LmlzbnVtZXJpYygpIF0KLSsgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkg Zm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIuIikgaWYgZGlnaXQuaXNudW1lcmljKCkg XQotICAgICB3aGlsZSBsZW4odmVyc2lvbjIpIDwgMzoKLSAgICAgICAgIHZlcnNpb24yLmFwcGVu ZCgwKQotIAotCi1Gcm9tIDRlMzIzNWE1YmI5YjJkZjYxZjI4N2Y5MzI2ODU2NTQ1ZjllNTM1YTUg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFZHVhcmRvIE1vemFydCBkZSBPbGl2ZWly YQotIDwyOTc0ODk1K2VkdWFyZG9tb3phcnRAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0 ZTogVGh1LCAxMiBNYXkgMjAyMiAwOToxNTo1OSAtMDMwMAotU3ViamVjdDogW1BBVENIIDIwLzMz XSBGaXggWFF1YXJ0eiBVUkwKLQotWFF1YXJ0eiBmYWlscyB0byBpbnN0YWxsIGludG8gbWFjT1MK LS0tLQotIGJhc2gvc3RhcnR1cF9hZnRlcl9zZXJ2ZXIgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQs IDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNoL3N0YXJ0 dXBfYWZ0ZXJfc2VydmVyIGIvYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlcgotaW5kZXggYWEwN2E0 ZWU5Li5lNzQ4NjMzOWMgMTAwNzU1Ci0tLS0gYS9iYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyCi0r KysgYi9iYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyCi1AQCAtMzAsNyArMzAsNyBAQCBleHBvcnQg WFFVQVJUWl9WRVJTSU9OPSIyLjcuMTEiCi0gaW5zdGFsbF94MTEoKQotIHsKLSAKLS0JWFF1YXJ0 elVybD0iaHR0cDovL2RsLmJpbnRyYXkuY29tL3hxdWFydHovZG93bmxvYWRzL1hRdWFydHotJFhR VUFSVFpfVkVSU0lPTi5kbWciCi0rCVhRdWFydHpVcmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9YUXVh cnR6L1hRdWFydHovcmVsZWFzZXMvZG93bmxvYWQvWFF1YXJ0ei0kWFFVQVJUWl9WRVJTSU9OL1hR dWFydHotJFhRVUFSVFpfVkVSU0lPTi5kbWciCi0gCUZpbGVQcmVmaXg9IlhRdWFydHoiCi0gCi0g CVNURVBfVElUTEU9IlhRdWFydHoiCi0KLUZyb20gOGZmMDFmMzQxOTI1YTM2NzNkNGExZGU4NTEy ZDllMjM3MmE0ZDllMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVkdWFyZG8gTW96 YXJ0IGRlIE9saXZlaXJhCi0gPDI5NzQ4OTUrZWR1YXJkb21vemFydEB1c2Vycy5ub3JlcGx5Lmdp dGh1Yi5jb20+Ci1EYXRlOiBUaHUsIDEyIE1heSAyMDIyIDA5OjUzOjA5IC0wMzAwCi1TdWJqZWN0 OiBbUEFUQ0ggMjEvMzNdIFVwZGF0ZSBsbmcucHkKLQotRml4IHBsYXlvbmxpbnV4LWJhc2ggZXhl YyBvbiBtYWNPUyBNb250ZXJleQotLS0tCi0gcHl0aG9uL2xpYi9sbmcucHkgfCAxNSArKysrKysr KystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygt KQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9sbmcucHkgYi9weXRob24vbGliL2xuZy5weQot aW5kZXggYTM5MGQ5MjBiLi41ZmIxNjFjM2MgMTAwNzU1Ci0tLS0gYS9weXRob24vbGliL2xuZy5w eQotKysrIGIvcHl0aG9uL2xpYi9sbmcucHkKLUBAIC0xOCwxMiArMTgsMTUgQEAgZGVmIF9faW5p dF9fKHNlbGYpOgotICAgICAgICAgICAgIGxhbmd1YWdlcyA9IG9zLmxpc3RkaXIoVmFyaWFibGVz LnBsYXlvbmxpbnV4X2VudisnL2xhbmcvbG9jYWxlJykKLSAKLSAgICAgICAgIGlmKG9zLmVudmly b25bIlBPTF9PUyJdID09ICJNYWMiKToKLS0gICAgICAgICAgICB3eExvY2FsZSA9IHd4LkxvY2Fs ZSgpLkZpbmRMYW5ndWFnZUluZm8ob3MuZW52aXJvblsiUkxBTkciXSkKLS0KLS0gICAgICAgICAg ICBpZiB3eExvY2FsZSBpcyBub3QgTm9uZToKLS0gICAgICAgICAgICAgICAgbGFuZ2lkID0gd3gu TG9jYWxlKCkuRmluZExhbmd1YWdlSW5mbyhvcy5lbnZpcm9uWyJSTEFORyJdKS5MYW5ndWFnZQot LSAgICAgICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgICAgIGxhbmdpZCA9IHd4LkxBTkdVQUdF X0RFRkFVTFQKLSsgICAgICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgICAgIHd4TG9jYWxlID0g d3guTG9jYWxlKCkuRmluZExhbmd1YWdlSW5mbyhvcy5lbnZpcm9uWyJSTEFORyJdKQotKwotKyAg ICAgICAgICAgICAgICBpZiB3eExvY2FsZSBpcyBub3QgTm9uZToKLSsgICAgICAgICAgICAgICAg ICAgIGxhbmdpZCA9IHd4LkxvY2FsZSgpLkZpbmRMYW5ndWFnZUluZm8ob3MuZW52aXJvblsiUkxB TkciXSkuTGFuZ3VhZ2UKLSsgICAgICAgICAgICAgICAgZWxzZToKLSsgICAgICAgICAgICAgICAg ICAgIGxhbmdpZCA9IHd4LkxBTkdVQUdFX0RFRkFVTFQKLSsgICAgICAgICAgICBleGNlcHQ6Ci0r ICAgICAgICAgICAgICAgIGxhbmdpZCA9IHd4LkxBTkdVQUdFX0RFRkFVTFQgCi0gICAgICAgICBl bHNlOgotICAgICAgICAgICAgIGxhbmdpZCA9IHd4LkxBTkdVQUdFX0RFRkFVTFQKLSAKLQotRnJv bSA5YTI3YzhmNGYxYzE0NTgzODhhZTA0NjhjY2RiZDc1ODE2OWE4ZWU2IE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogRWR1YXJkbyBNb3phcnQgZGUgT2xpdmVpcmEKLSA8Mjk3NDg5NStl ZHVhcmRvbW96YXJ0QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFRodSwgMTIgTWF5 IDIwMjIgMTU6NTM6NTQgLTAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyMi8zM10gVXBkYXRlIE1ha2Vm aWxlIHRvIG1hY09TCi0KLU5vdyBtYWNPUyBjYW4gYWxzbyBydW4gdGhlIG1ha2UgY29tbWFuZAot LS0tCi0gTWFrZWZpbGUgfCAxOCArKysrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwg MTQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxl IGIvTWFrZWZpbGUKLWluZGV4IGE4ZDgxYjg5Mi4uMTE1ZDI2OThjIDEwMDY0NAotLS0tIGEvTWFr ZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMjAsOSArMjAsMTggQEAKLSAjIERFU1RESVIgLS0g V2hlcmUgeW91IHdhbnQgdG8gaW5zdGFsbAotICMKLSAKLS1DRkxBR1MgPz0gLU8yCi0raWZlcSAo JChzaGVsbCB1bmFtZSAtcyksRGFyd2luKQotKyAgICBDRkxBR1MgPz0gLU8yIC1JL29wdC9YMTEv aW5jbHVkZQotKyAgICBMRkxBR1MgPz0gLUwvb3B0L1gxMS9saWIgLWxHTCAtbFgxMQotKyAgICBQ WVRIT04gPSBweXRob24yLjcgLW0gcHlfY29tcGlsZQotKyAgICBTRUQgPSBzZWQgLWkgJycgLWUK LStlbHNlCi0rICAgIENGTEFHUyA/PSAtTzIgCi0rICAgIENGTEFHUyA/PSAtbEdMIC1sWDExCi0r ICAgIFBZVEhPTiA9IHB5dGhvbjIgLW0gcHlfY29tcGlsZQotKyAgICBTRUQgPSBzZWQgLWkKLStl bmRpZgotIENDID0gZ2NjICQoQ0ZMQUdTKQotLVBZVEhPTiA9IHB5dGhvbjIgLW0gcHlfY29tcGls ZQotIEdaSVAgPSBnemlwCi0gU0hFTEwgOj0gL2Jpbi9iYXNoCi0gCi1AQCAtNDUsMTQgKzU0LDE0 IEBAIGNsZWFuOgotIAkkKFJNKSAuL0NoYW5nZUxvZwotIAotIGJ1aWxkOgotLQkkKENDKSAuL3Ny Yy9jaGVja19kaXJlY3RfcmVuZGVyaW5nLmMgLW8gLi9iaW4vcGxheW9ubGludXgtY2hlY2tfZGQg LWxHTCAtbFgxMQotKwkkKENDKSAuL3NyYy9jaGVja19kaXJlY3RfcmVuZGVyaW5nLmMgLW8gLi9i aW4vcGxheW9ubGludXgtY2hlY2tfZGQgJChMRkxBR1MpCi0gCSQoUFlUSE9OKSAuL3B5dGhvbi8q LnB5Ci0gCSQoUFlUSE9OKSAuL3B5dGhvbi9saWIvKi5weQotIAllY2hvIC1lICcjIS9iaW4vYmFz aFxuR0RLX0JBQ0tFTkQ9eDExICR7c2hhcmVkaXJ9L3BsYXlvbmxpbnV4L3BsYXlvbmxpbnV4ICIk JEAiXG5leGl0IDAnID4gLi9iaW4vcGxheW9ubGludXgKLSAJZWNobyAtZSAnIyEvYmluL2Jhc2hc biR7c2hhcmVkaXJ9L3BsYXlvbmxpbnV4L3BsYXlvbmxpbnV4LXBrZyAiJCRAIlxuZXhpdCAwJyA+ IC4vYmluL3BsYXlvbmxpbnV4LXBrZwotIAljaG1vZCAreCAuL2Jpbi9wbGF5b25saW51eAotIAlj aG1vZCAreCAuL2Jpbi9wbGF5b25saW51eC1wa2cKLS0Jc2VkIC1pICdzL1woXFsiREVCSUFOX1BB Q0tBR0UiXF1ccyo9XHMqXCkiRkFMU0UiL1wxIlRSVUUiLycgXAotKwkkKFNFRCkgJ3MvXChcWyJE RUJJQU5fUEFDS0FHRSJcXVxzKj1ccypcKSJGQUxTRSIvXDEiVFJVRSIvJyBcCi0gCQkuL3B5dGhv bi9saWIvVmFyaWFibGVzLnB5Ci0gCi0gaW5zdGFsbDoKLUBAIC04MSwzICs5MCw0IEBAIGNoYW5n ZWxvZzoKLSAJKEdJVF9ESVI9LmdpdCBnaXQgbG9nID4gLmNoYW5nZWxvZy50bXAgJiYgbXYgLmNo YW5nZWxvZy50bXAgQ2hhbmdlTG9nOyBybSAtZiAuY2hhbmdlbG9nLnRtcCkgfHwgKHRvdWNoIENo YW5nZUxvZzsgZWNobyAnZ2l0IGRpcmVjdG9yeSBub3QgZm91bmQ6IGluc3RhbGxpbmcgcG9zc2li bHkgZW1wdHkgY2hhbmdlbG9nLicgPiYyKQotIAotIC5QSE9OWTogYWxsIGNsZWFuIGJ1aWxkIGlu c3RhbGwgY2hhbmdlbG9nCi0rCi0KLUZyb20gNWM3M2VkMWVlMjNiYTJlNTE3MDEwOTRlMzY2ZjVj YmNlZDFmZWJiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGhpZXUgUGFyZW50 IDxtYXRoLnBhcmVudEBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIwIERlYyAyMDIyIDEwOjIwOjI1 ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMjMvMzNdIFVzZSBtb3JlIHBvd2VyZnVsIGRpc2NyZXRl IEdQVSBpZiBhdmFpbGFibGUKLQotU2VlIGh0dHBzOi8vc3BlY2lmaWNhdGlvbnMuZnJlZWRlc2t0 b3Aub3JnL2Rlc2t0b3AtZW50cnktc3BlYy9sYXRlc3QvYXIwMXMwNi5odG1sCi0tLS0KLSBldGMv UGxheU9uTGludXguZGVza3RvcCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KQotCi1kaWZmIC0tZ2l0IGEvZXRjL1BsYXlPbkxpbnV4LmRlc2t0b3AgYi9ldGMvUGxheU9uTGlu dXguZGVza3RvcAotaW5kZXggNDkwMTA4YzExLi41M2NkNDJmOTQgMTAwNjQ0Ci0tLS0gYS9ldGMv UGxheU9uTGludXguZGVza3RvcAotKysrIGIvZXRjL1BsYXlPbkxpbnV4LmRlc2t0b3AKLUBAIC02 LDMgKzYsNCBAQCBUeXBlPUFwcGxpY2F0aW9uCi0gRXhlYz1wbGF5b25saW51eCAlRgotIEljb249 cGxheW9ubGludXgKLSBDYXRlZ29yaWVzPVV0aWxpdHk7RW11bGF0b3I7Ci0rUHJlZmVyc05vbkRl ZmF1bHRHUFU9dHJ1ZQotCi1Gcm9tIDczZmYxZGY5MjRjMWI3YmRjNGU5M2E1YTMyOGIyODcwOTdk OGNjYzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBhbmRyZXkgPDMyOTg4MzA1K3Zv c3RvazAxQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFNhdCwgMzEgRGVjIDIwMjIg MjM6MTY6MTggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyNC8zM10gQlVHIEZJWDogQ0ZMQUdTIHJl bmFtZWQgdG8gTEZMQUdTIGluIE1ha2VmaWxlLgotCi0tLS0KLSBNYWtlZmlsZSB8IDIgKy0KLSAx IGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdp dCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKLWluZGV4IDExNWQyNjk4Yy4uNGMwOGE5NmZlIDEwMDY0 NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMjcsNyArMjcsNyBAQCBpZmVx ICgkKHNoZWxsIHVuYW1lIC1zKSxEYXJ3aW4pCi0gICAgIFNFRCA9IHNlZCAtaSAnJyAtZQotIGVs c2UKLSAgICAgQ0ZMQUdTID89IC1PMiAKLS0gICAgQ0ZMQUdTID89IC1sR0wgLWxYMTEKLSsgICAg TEZMQUdTID89IC1sR0wgLWxYMTEKLSAgICAgUFlUSE9OID0gcHl0aG9uMiAtbSBweV9jb21waWxl Ci0gICAgIFNFRCA9IHNlZCAtaQotIGVuZGlmCi0KLUZyb20gZDZjZDdmZjY5MjI4ZGE4OGFkOTA3 NDNjN2Q2NTIyODE5NDkzODAzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE5yZXpp bm9ybiA8bnJlemlub3JuQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTkgSnVuIDIwMjMgMDc6NDk6 MjMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8zM10gRml4IE1hYyBXSU5FIFZlcnNpb25GZXRj aGVyIGFuZCBidW1wIHZlcnNpb25pbmcgdG8KLSA0LjQuMwotCi0tLS0KLSBweXRob24vbGliL1Zh cmlhYmxlcy5weSAgICAgICAgICAgICAgICAgICAgIHwgNSArKystLQotIHB5dGhvbi93aW5lX3Zl cnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkgfCA3ICsrKysrLS0KLSAyIGZpbGVzIGNoYW5n ZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhv bi9saWIvVmFyaWFibGVzLnB5IGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLWluZGV4IGRiZTJh YjcxOS4uMjZlMjM0YTUzIDEwMDc1NQotLS0tIGEvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKLSsr KyBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5Ci1AQCAtMTcsNyArMTcsNyBAQAotIG9zLmVudmly b25bIlBPTF9QT1JUIl0gPSAiMCIKLSBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdID0gb3MucGF0 aC5yZWFscGF0aChvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSsiLy4uLy4uLy4uLyIpCi0gb3Mu ZW52aXJvblsiU0lURSJdID0gImh0dHA6Ly9yZXBvc2l0b3J5LnBsYXlvbmxpbnV4LmNvbSIKLS1v cy5lbnZpcm9uWyJWRVJTSU9OIl0gPSAiNC40LjEiCi0rb3MuZW52aXJvblsiVkVSU0lPTiJdID0g IjQuNC4zIgotIG9zLmVudmlyb25bIlBPTF9JRCJdID0gc3RyKHJhbmRvbS5yYW5kaW50KDEsIDEw MDAwMDAwMCkpCi0gb3MuZW52aXJvblsiR0VDS09fU0lURSJdID0gImh0dHA6Ly93aW5lLnBsYXlv bmxpbnV4LmNvbS9nZWNrbyIKLSBvcy5lbnZpcm9uWyJNT05PX1NJVEUiXSA9ICJodHRwOi8vd2lu ZS5wbGF5b25saW51eC5jb20vbW9ubyIKLUBAIC0zOSw2ICszOSw3IEBACi0gICAgIHdpbmRvd3Nf YWRkX3BsYXlvbm1hYyA9IDEKLSAgICAgd2lkZ2V0X2JvcmRlcnMgPSB3eC5TSU1QTEVfQk9SREVS Ci0gICAgIG9zX25hbWUgPSAiZGFyd2luIgotKyAgICBjYV9maWxlID0gJy4uLy4uL2xpYi9weXRo b24zLjgvY2VydGlmaS9jYWNlcnQucGVtJyAKLSAgICAgb3MuZW52aXJvblsiUE9MX1dHRVQiXSA9 ICJ3Z2V0IC0tcHJlZmVyLWZhbWlseT1JUHY0IC1xIC0tbm8tY2hlY2stY2VydGlmaWNhdGUiCi0g Ci0gIyBWYXJpYWJsZXMgUGxheU9uTGludXgKLUBAIC0xMTksNyArMTIwLDcgQEAKLSAKLSAgICAg b3MuZW52aXJvblsiUEFUSCJdID0gb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgv d2luZS9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L2ltYWdlX21h Z2ljay9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3Rvb2xzL2Jp bi86IiArIG9zLmVudmlyb25bIlBBVEgiXQotIAotLSAgICBvcy5lbnZpcm9uWyJXUklURV9MRCJd ID0gb3MuZW52aXJvblsiTERfTElCUkFSWV9QQVRIIl0KLSsgICAgb3MuZW52aXJvblsiV1JJVEVf TEQiXSA9IG9zLmVudmlyb25bIkxEX0xJQlJBUllfUEFUSCJdICsgIjoiICsgb3MuZW52aXJvblsi UExBWU9OTElOVVgiXSsiLy4uL3VuaXgvd2luZS9saWIiCi0gICAgIG9zLmVudmlyb25bIkRZTERf RkFMTEJBQ0tfTElCUkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4u L3VuaXgvd2luZS9saWIiCi0gICAgIG9zLmVudmlyb25bIldSSVRFX0RZTERfRkFMTEJBQ0tfTElC UkFSWV9QQVRIIl0gPSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvd2luZS9s aWIiCi0gICAgIG9zLmVudmlyb25bIkZSRUVUWVBFX1BST1BFUlRJRVMiXT0idHJ1ZXR5cGU6aW50 ZXJwcmV0ZXItdmVyc2lvbj0zNSIKLWRpZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9X aW5lVmVyc2lvbnNGZXRjaGVyLnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25z RmV0Y2hlci5weQotaW5kZXggZmQ3NTg3OThlLi42MTYwNTIyN2MgMTAwNjQ0Ci0tLS0gYS9weXRo b24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5Ci0rKysgYi9weXRob24vd2lu ZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5Ci1AQCAtMTgsMTAgKzE4LDEzIEBAIGRl ZiBmZXRjaF9hbGxfYXZhaWxhYmxlX3dpbmVfdmVyc2lvbihzZWxmLCBjYWxsYmFjaywgZXJyb3Ip OgotIAotICAgICBkZWYgX3N5bmNfZmV0Y2hfYWxsX2F2YWlsYWJsZV93aW5lX3ZlcnNpb25zKHNl bGYsIGNhbGxiYWNrLCBlcnJvcik6Ci0gICAgICAgICB3aW5lX3ZlcnNpb25fdXJsID0gImh0dHBz Oi8vcGhvZW5pY2lzLnBsYXlvbmxpbnV4LmNvbS9pbmRleC5waHAvd2luZT9vcz0lcyIgJSBzZWxm Lm9wZXJhdGluZ19zeXN0ZW0KLS0gICAgICAgIHByaW50KCJEb253bG9hZGluZyAlcyAiICUgd2lu ZV92ZXJzaW9uX3VybCkKLSsgICAgICAgIHByaW50KCJEb3dubG9hZGluZyAlcyAiICUgd2luZV92 ZXJzaW9uX3VybCkKLSAgICAgICAgIHRyeToKLSAgICAgICAgICAgICByZXF1ZXN0ID0gdXJsbGli LnJlcXVlc3QuUmVxdWVzdCh3aW5lX3ZlcnNpb25fdXJsLCBOb25lLCB7J1VzZXItQWdlbnQnOiBW YXJpYWJsZXMudXNlckFnZW50fSkKLS0gICAgICAgICAgICBoYW5kbGUgPSB1cmxsaWIucmVxdWVz dC51cmxvcGVuKHJlcXVlc3QsIHRpbWVvdXQ9NSkKLSsgICAgICAgICAgICBpZiBzZWxmLm9wZXJh dGluZ19zeXN0ZW0gPT0gJ2Rhcndpbic6Ci0rICAgICAgICAgICAgICAgIGhhbmRsZSA9IHVybGxp Yi5yZXF1ZXN0LnVybG9wZW4ocmVxdWVzdCwgY2FmaWxlPScuLi8uLi9saWIvcHl0aG9uMy44L2Nl cnRpZmkvY2FjZXJ0LnBlbScsIHRpbWVvdXQ9NSkKLSsgICAgICAgICAgICBlbHNlOgotKyAgICAg ICAgICAgICAgICBoYW5kbGUgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcXVlc3QsIHRpbWVv dXQ9NSkKLSAgICAgICAgICAgICBjYWxsYmFjayhzZWxmLl9jb252ZXJ0X3Bob2VuaWNpc193aW5l X3ZlcnNpb25zX3RvX3Y0KGpzb24ubG9hZChoYW5kbGUpKSkKLSAgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKLSAgICAgICAgICAgICBlcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQot Ci1Gcm9tIGQzMmMwMTJhYzc0YjZiMDVkZjgxNWRhYzVkYTk0OGI2NDhkMDk5MDggTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiRHIuIE5pY2siIDxkYXMtaW50ZW5zaXR5QHVzZXJzLm5v cmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFN1biwgMiBKdWwgMjAyMyAxNzozMToyNiAtMDQwMAot U3ViamVjdDogW1BBVENIIDI2LzMzXSBGaXhlZCBkZWJ1ZyBtZXNzYWdlIGluIFBPTF9XaW5lX1Nl dFZlcnNpb25FbnYgdG8gbG9nCi0gdXNpbmcgUE9MX0RlYnVnX01lc3NhZ2UKLQotLS0tCi0gbGli L3dpbmUubGliIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxl dGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGliL3dpbmUubGliCi1pbmRl eCA0MzQ3NWYzMTAuLjNiZjExODc2NSAxMDA3NTUKLS0tLSBhL2xpYi93aW5lLmxpYgotKysrIGIv bGliL3dpbmUubGliCi1AQCAtODM3LDcgKzgzNyw3IEBAIFBPTF9XaW5lX1NldFZlcnNpb25FbnYo KSB7Ci0gICAgICAgICBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiAiJFBPTF9XSU5FVkVSU0lPTiIK LSAgICAgICAgIFtbICIkPyIgPT0gMiBdXSAmJiByZXR1cm4gMAotICAgICAgIGZpCi0tICAgICAg ZWNobyAiU2V0dGluZyBwYXRocy4uLiIKLSsgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGlu ZyBwYXRocy4uLiIKLSAgICAgICBleHBvcnQgUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lP Ti9iaW4vOiRQQVRIIgotICAgICAgIFsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBleHBvcnQgRFlM RF9GQUxMQkFDS19MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLyIK LSAgICAgICBleHBvcnQgRlJFRVRZUEVfUFJPUEVSVElFUz0idHJ1ZXR5cGU6aW50ZXJwcmV0ZXIt dmVyc2lvbj0zNSIKLQotRnJvbSBmYjg4MTM3Mjg2Nzk4ZDQ5MjY5MWE5NWVhMGMzNmIzMTQ4ZmQw MjkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmktSG8gTGVlIDxzZWFyY2g1QGdt YWlsLmNvbT4KLURhdGU6IFRodSwgMTAgQXVnIDIwMjMgMTc6Mjk6MTkgKzA5MDAKLVN1YmplY3Q6 IFtQQVRDSCAyNy8zM10gUGF0Y2ggZnVuY3Rpb24gZXhlY3V0aW9uIGVycm9yIGNhdXNlZCBieSB0 aGUgZGVsZXRpb24KLSBvZiB0aGUgd2hpY2ggY29tbWFuZCBpbiBEZWJpYW4gMTIKLQotLS0tCi0g YmFzaC9maW5kX3B5dGhvbiAgICAgfCAyICstCi0gbGliL3BsYXlvbmxpbnV4LmxpYiAgfCA4ICsr KystLS0tCi0gbGliL3NjcmlwdHMubGliICAgICAgfCAyICstCi0gbGliL3ZhcmlhYmxlcyAgICAg ICAgfCA2ICsrKy0tLQotIGxpYi93aW5lLmxpYiAgICAgICAgIHwgNCArKy0tCi0gcHl0aG9uL21h aW53aW5kb3cucHkgfCAzICsrLQotIDYgZmlsZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKSwg MTIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iYXNoL2ZpbmRfcHl0aG9uIGIvYmFzaC9m aW5kX3B5dGhvbgotaW5kZXggODExYjZjMDQ0Li41Y2NmMTkxMjUgMTAwNzU1Ci0tLS0gYS9iYXNo L2ZpbmRfcHl0aG9uCi0rKysgYi9iYXNoL2ZpbmRfcHl0aG9uCi1AQCAtMjYsNyArMjYsNyBAQCBz ZWFyY2hfcHl0aG9uICgpIHsKLSAJCWZpICAgICAgICAgICAgICAgICAgIAotIAkKLSAJCWVjaG8g LW4gIkxvb2tpbmcgZm9yICRQT0xfUFlUSE9OLi4uICIgMT4mMgotLQkJaWYgWyAiJCh3aGljaCAk UE9MX1BZVEhPTikiIF07IHRoZW4KLSsJCWlmIFsgIiQoY29tbWFuZCAtdiAkUE9MX1BZVEhPTiki IF07IHRoZW4KLSAJCQlsb2NhbCBWZXJzaW9uPSQoJFBPTF9QWVRIT04gLS12ZXJzaW9uIDI+JjEg fHRhaWwgLW4gMXxzZWQgLWUgJ3MvXlB5dGhvbiAvLycpCi0gCQkJZWNobyAtbiAiJFZlcnNpb24g LSAiIDE+JjIKLSAJCQljYXNlICIkVmVyc2lvbiIgaW4KLWRpZmYgLS1naXQgYS9saWIvcGxheW9u bGludXgubGliIGIvbGliL3BsYXlvbmxpbnV4LmxpYgotaW5kZXggMTBiZTZiNDg4Li5kMjg0NjZm OGUgMTAwNzU1Ci0tLS0gYS9saWIvcGxheW9ubGludXgubGliCi0rKysgYi9saWIvcGxheW9ubGlu dXgubGliCi1AQCAtOTE2LDE2ICs5MTYsMTYgQEAgUE9MX1N1ZG8oKQotIAkJZmkKLSAJCWlmIFsg IiRQT0xfT1MiID0gIkxpbnV4IiBdOyB0aGVuCi0gCQkJIyBOb3csIHdlIGRldGVjdCB3aGF0IHN1 ZG8gdG8gdXNlCi0tCQkJaWYgd2hpY2ggZ2tzdWRvOyB0aGVuCi0rCQkJaWYgY29tbWFuZCAtdiBn a3N1ZG87IHRoZW4KLSAJCQkJU1VET19DT01NQU5EPSJna3N1ZG8gLS0iCi0gCQkJCXVuc2V0IGdr c3VkbwotLQkJCWVsaWYgd2hpY2ggZ2tzdTsgdGhlbgotKwkJCWVsaWYgY29tbWFuZCAtdiBna3N1 OyB0aGVuCi0gCQkJCVNVRE9fQ09NTUFORD0iZ2tzdSAtLSIKLSAJCQkJdW5zZXQgZ2tzdQotLQkJ CWVsaWYgd2hpY2gga2Rlc3U7IHRoZW4KLSsJCQllbGlmIGNvbW1hbmQgLXYga2Rlc3U7IHRoZW4K LSAJCQkJU1VET19DT01NQU5EPSJrZGVzdSAtLSIKLSAJCQkJdW5zZXQga2Rlc3UKLS0JCQllbGlm IHdoaWNoIHN1ZG87IHRoZW4KLSsJCQllbGlmIGNvbW1hbmQgLXYgc3VkbzsgdGhlbgotIAkJCQlT VURPX0NPTU1BTkQ9IiRQT0xfVEVSTSAtZSBzdWRvIgotIAkJCQl1bnNldCBzdWRvCi0gCQkJZWxz ZQotZGlmZiAtLWdpdCBhL2xpYi9zY3JpcHRzLmxpYiBiL2xpYi9zY3JpcHRzLmxpYgotaW5kZXgg NGZkM2ZiNWM1Li4yM2M1NzY2MTMgMTAwNzU1Ci0tLS0gYS9saWIvc2NyaXB0cy5saWIKLSsrKyBi L2xpYi9zY3JpcHRzLmxpYgotQEAgLTczNyw3ICs3MzcsNyBAQCBQT0xfU3lzdGVtX0V4dHJhY3RT aW5nbGVGaWxlICgpCi0gICAgIGxvY2FsIGFyY2hpdmVuYW1lPWBiYXNlbmFtZSAiJGFyY2hpdmUi YAotICAgICBsb2NhbCBmaWxlbmFtZT1gYmFzZW5hbWUgIiRmaWxlImAKLSAgICAgbG9jYWwgc3pw aWQKLS0gICAgbG9jYWwgc3ppcD1gd2hpY2ggN3pgCi0rICAgIGxvY2FsIHN6aXA9YGNvbW1hbmQg LXYgN3pgCi0gCi0gICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJFeHRyYWN0aW5nIHNpbmdsZSBmaWxl IDogXCIkYXJjaGl2ZVwiLCBcIiRmaWxlXCIsIFwiJGRlc3RcIiIKLSAKLWRpZmYgLS1naXQgYS9s aWIvdmFyaWFibGVzIGIvbGliL3ZhcmlhYmxlcwotaW5kZXggOWMxNmZlMWE3Li4xMzBhY2M4NTYg MTAwNzU1Ci0tLS0gYS9saWIvdmFyaWFibGVzCi0rKysgYi9saWIvdmFyaWFibGVzCi1AQCAtMzEs NyArMzEsNyBAQCBQT0xfQ29uZmlnX3BSZWFkICgpeyBjYXQgIiRQT0xfVVNFUl9ST09UL3BsYXlv bmxpbnV4LmNmZyIgMj4gL2Rldi9udWxsIHwgZ3JlcCAiXgotIGFsaWFzIGZpbmQ9ImZpbmQgLUgi Ci0gCi0gIyMjIFNlY3VyaXR5IGZlYXR1cmUKLS1bICIkKHdoaWNoIHN1ZG8pIiBdICYmIHN1ZG8g LWsgMj4gL2Rldi9udWxsCi0rWyAiJChjb21tYW5kIC12IHN1ZG8pIiBdICYmIHN1ZG8gLWsgMj4g L2Rldi9udWxsCi0gCi0gIyMjIFRlcm1pbmFsCi0gIyBVc2VyIG92ZXJyaWRlLCBtdXN0IHN1cHBv cnQgLVQgdG8gc2V0IHRpdGxlIGFuZCAtZSB0byBydW4gYSBjb21tYW5kCi1AQCAtNTMsNyArNTMs NyBAQCBmaQotIGV4cG9ydCBQT0xfVEVSTQotIAotICMjIyBEZXNrdG9wCi0tWyAiJCh3aGljaCB4 ZGctdXNlci1kaXIpIiBdICYmIGV4cG9ydCBERVNLVE9QPSIkKHhkZy11c2VyLWRpciBERVNLVE9Q KSIgfHwgZXhwb3J0IERFU0tUT1A9IiRIT01FL0Rlc2t0b3AiCi0rWyAiJChjb21tYW5kIC12IHhk Zy11c2VyLWRpcikiIF0gJiYgZXhwb3J0IERFU0tUT1A9IiQoeGRnLXVzZXItZGlyIERFU0tUT1Ap IiB8fCBleHBvcnQgREVTS1RPUD0iJEhPTUUvRGVza3RvcCIKLSAKLSAjIyMgT3ZlcnJpZGUgfi8u d2dldHJjCi0gZXhwb3J0IFdHRVRSQz0iJFBPTF9VU0VSX1JPT1QvY29uZmlndXJhdGlvbnMvd2dl dHJjIgotQEAgLTcwLDcgKzcwLDcgQEAgZWxzZQotIAlldmFsX2dldHRleHQoKSB7IHByaW50ZiAi JEAiOyB9Ci0gZmkKLSAKLS13aGljaCBzaGFzdW0gPiAvZGV2L251bGwgMj4gL2Rldi9udWxsIHx8 IHNoYXN1bSAoKSB7IHNoYTFzdW0gIiRAIjsgfQotK2NvbW1hbmQgLXYgc2hhc3VtID4gL2Rldi9u dWxsIDI+IC9kZXYvbnVsbCB8fCBzaGFzdW0gKCkgeyBzaGExc3VtICIkQCI7IH0KLSAKLSAKLSBp ZiBbICIkUE9MX09TIiA9PSAiTGludXgiIF0KLWRpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9s aWIvd2luZS5saWIKLWluZGV4IDNiZjExODc2NS4uODc1NmNkY2QzIDEwMDc1NQotLS0tIGEvbGli L3dpbmUubGliCi0rKysgYi9saWIvd2luZS5saWIKLUBAIC05ODksMTMgKzk4OSwxMyBAQCBQT0xf V2luZV9QcmVmaXhDcmVhdGUoKSB7Ci0gCi0gICAgICAgUE9MX0RlYnVnX0luaXRQcmVmaXgKLSAK LS0gICAgICB3aGljaCB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9maWxlICIkKHdo aWNoIHdpbmVwcmVmaXhjcmVhdGUpIikiICE9ICI1YzBlZTkwNjgyNzQ2ZTgxMTY5OGE1MzQxNWI0 NzY1ZCIgXSAmJiBbICEgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSB8IGdyZXAgJEFQUExJQ0FU SU9OX1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQotKyAgICAgIGNvbW1h bmQgLXYgd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAiJCh3aGljaCB3aW5l cHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThhNTM0MTViNDc2NWQiIF0g JiYgWyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgfCBncmVwICRBUFBMSUNBVElPTl9USVRM RSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUKLSAgICAgICB3aW5lIHdpbmVib290 Ci0gICAgIGZpCi0gICBmaQotIAotICAgIyBNYWtlIHN1cmUgdGhhdCAucmVnIGZpbGVzIGFyZSBj cmVhdGVkCi0tICBpZiB3aGljaCB3aW5lc2VydmVyOyB0aGVuCi0rICBpZiBjb21tYW5kIC12IHdp bmVzZXJ2ZXI7IHRoZW4KLSAgICAgd2luZXNlcnZlciAtdwotICAgZWxzZQotICAgICBQT0xfRGVi dWdfTWVzc2FnZSAiV2FybmluZywgd2luZXNlcnZlciBub3QgZm91bmQiCi1kaWZmIC0tZ2l0IGEv cHl0aG9uL21haW53aW5kb3cucHkgYi9weXRob24vbWFpbndpbmRvdy5weQotaW5kZXggYzhmZTEx MTYwLi5jMzc5ZDJhZTUgMTAwNzU1Ci0tLS0gYS9weXRob24vbWFpbndpbmRvdy5weQotKysrIGIv cHl0aG9uL21haW53aW5kb3cucHkKLUBAIC0xMjE2LDcgKzEyMTYsOCBAQCBkZWYgT25Jbml0KHNl bGYpOgotICAgICBkZWYgX2V4ZWN1dGFibGVGb3VuZChzZWxmLCBleGVjdXRhYmxlKToKLSAgICAg ICAgIGRldm51bGwgPSBvcGVuKCcvZGV2L251bGwnLCAnd2InKQotICAgICAgICAgdHJ5OgotLSAg ICAgICAgICAgIHJldHVybmNvZGUgPSBzdWJwcm9jZXNzLmNhbGwoWyJ3aGljaCIsIGV4ZWN1dGFi bGVdLCBzdGRvdXQ9ZGV2bnVsbCkKLSsgICAgICAgICAgICBleGVjdXRhYmxlX3BhdGggPSBzaHV0 aWwud2hpY2goZXhlY3V0YWJsZSkKLSsgICAgICAgICAgICByZXR1cm5jb2RlID0gc3VicHJvY2Vz cy5jYWxsKGV4ZWN1dGFibGVfcGF0aCwgc3Rkb3V0PWRldm51bGwpCi0gICAgICAgICAgICAgcmV0 dXJuIChyZXR1cm5jb2RlID09IDApCi0gICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgcmV0 dXJuIEZhbHNlCi0KLUZyb20gNWEyOTIxZWUxOWQzNTJkZmUyNWE4YzBjMjEwY2RjMjQwNGZiZjAx NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEppaG8gUGVyc3kgTGVlIDxzZWFyY2g1 QGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTAgQXVnIDIwMjMgMTc6NTU6NTMgKzA5MDAKLVN1Ympl Y3Q6IFtQQVRDSCAyOC8zM10gVXBkYXRlIG1haW53aW5kb3cucHkKLQotbWlzc2luZyBpbXBvcnQg YWRkCi0tLS0KLSBweXRob24vbWFpbndpbmRvdy5weSB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRo b24vbWFpbndpbmRvdy5weQotaW5kZXggYzM3OWQyYWU1Li5jYmI3NmRkYTEgMTAwNzU1Ci0tLS0g YS9weXRob24vbWFpbndpbmRvdy5weQotKysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKLUBAIC0y Nyw2ICsyNyw3IEBACi0gaW1wb3J0IHRpbWUKLSBpbXBvcnQgdXJsbGliLnBhcnNlCi0gaW1wb3J0 IHdlYmJyb3dzZXIKLStpbXBvcnQgc2h0aWwKLSAKLSB0cnk6Ci0gICAgIG9zLmVudmlyb25bIlBP TF9PUyJdCi0KLUZyb20gNWMyNjNiZjBjMzJiOTk5Y2RiNjM2NTU1ZDBkZTg0YWY2NjU3Mzk2ZSBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEppaG8gUGVyc3kgTGVlIDxzZWFyY2g1QGdt YWlsLmNvbT4KLURhdGU6IFRodSwgMTAgQXVnIDIwMjMgMTc6NTY6NTQgKzA5MDAKLVN1YmplY3Q6 IFtQQVRDSCAyOS8zM10gVXBkYXRlIG1haW53aW5kb3cucHkKLQotbWlzc2luZyBtb2R1bGUgaW1w b3J0IGFuZCBpbXBvcnQgbmFtZSBmaXguCi0tLS0KLSBweXRob24vbWFpbndpbmRvdy5weSB8IDIg Ky0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlm ZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9uL21haW53aW5kb3cucHkKLWlu ZGV4IGNiYjc2ZGRhMS4uN2JjNjk1YTk4IDEwMDc1NQotLS0tIGEvcHl0aG9uL21haW53aW5kb3cu cHkKLSsrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5Ci1AQCAtMjcsNyArMjcsNyBAQAotIGltcG9y dCB0aW1lCi0gaW1wb3J0IHVybGxpYi5wYXJzZQotIGltcG9ydCB3ZWJicm93c2VyCi0taW1wb3J0 IHNodGlsCi0raW1wb3J0IHNodXRpbAotIAotIHRyeToKLSAgICAgb3MuZW52aXJvblsiUE9MX09T Il0KLQotRnJvbSAzOTlmZjI4ZGExNTkzNmM0NGRkYzEyOTA1NzdiODQ3ZDA1Y2I3MWIyIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmlobyBQZXJzeSBMZWUgPHNlYXJjaDVAZ21haWwu Y29tPgotRGF0ZTogVHVlLCAxNSBBdWcgMjAyMyAxNTowNDo0NiArMDkwMAotU3ViamVjdDogW1BB VENIIDMwLzMzXSBVcGRhdGUgd2luZS5saWIKLQotZml4IG1pc3Npbmcgd2hpY2ggY29tbWFuZAot LS0tCi0gbGliL3dpbmUubGliIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGliL3dpbmUu bGliCi1pbmRleCA4NzU2Y2RjZDMuLjNhZTkxNmIxNyAxMDA3NTUKLS0tLSBhL2xpYi93aW5lLmxp YgotKysrIGIvbGliL3dpbmUubGliCi1AQCAtOTg5LDcgKzk4OSw3IEBAIFBPTF9XaW5lX1ByZWZp eENyZWF0ZSgpIHsKLSAKLSAgICAgICBQT0xfRGVidWdfSW5pdFByZWZpeAotIAotLSAgICAgIGNv bW1hbmQgLXYgd2luZXByZWZpeGNyZWF0ZSAmJiBbICIkKFBPTF9NRDVfZmlsZSAiJCh3aGljaCB3 aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThhNTM0MTViNDc2NWQi IF0gJiYgWyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgfCBncmVwICRBUFBMSUNBVElPTl9U SVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVhdGUKLSsgICAgICBjb21tYW5kIC12 IHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQoY29tbWFuZCAtdiB3aW5l cHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4Mjc0NmU4MTE2OThhNTM0MTViNDc2NWQiIF0g JiYgWyAhICIkKGNvbW1hbmQgLXYgd2luZXByZWZpeGNyZWF0ZSB8IGdyZXAgJEFQUExJQ0FUSU9O X1RJVExFKSIgPSAiIiBdICYmIHdpbmUgd2luZXByZWZpeGNyZWF0ZQotICAgICAgIHdpbmUgd2lu ZWJvb3QKLSAgICAgZmkKLSAgIGZpCi0KLUZyb20gNzljNTEzZmE4YTE5MzhlNTViZTBhMjM5MTIx MTc2ZjE0MTUwNDlmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBTY2hl Y2sgPHJvYmVydC1zY2hlY2tAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogU3VuLCAy NiBNYXkgMjAyNCAyMDozMjo1MyArMDIwMAotU3ViamVjdDogW1BBVENIIDMxLzMzXSBSZW1vdmUg dW51c2VkIGltcG9ydCBvZiBkZXByZWNhdGVkIFB5dGhvbgotIGFzeW5jb3JlLmRpc3BhdGNoZXIK LQotLS0tCi0gcHl0aG9uL29wdGlvbnMucHkgfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxl dGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL29wdGlvbnMucHkgYi9weXRob24vb3B0aW9u cy5weQotaW5kZXggZjQwZjI2YTcwLi5lMThkZGIzMmIgMTAwNzU1Ci0tLS0gYS9weXRob24vb3B0 aW9ucy5weQotKysrIGIvcHl0aG9uL29wdGlvbnMucHkKLUBAIC0xOCw3ICsxOCw2IEBACi0gIyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuLAotICMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9u LCBNQSAwMjExMC0xMzAxIFVTQS4KLSAKLS1mcm9tIGFzeW5jb3JlIGltcG9ydCBkaXNwYXRjaGVy Ci0gaW1wb3J0IG9zLCBzdWJwcm9jZXNzLCBnZXRvcHQsIHN5cywgdXJsbGliLnJlcXVlc3QsIHNp Z25hbCwgc29ja2V0Ci0gaW1wb3J0IHd4LCB0aW1lLCByZQotIGltcG9ydCB3ZWJicm93c2VyLCBz aHV0aWwKLQotRnJvbSAyMjk1OTQ4YjM1NmY4NDYxYzU2NDJjZjk2ZGJiNDNkMDNjNjI5MjEwIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFNjaGVjayA8cm9iZXJ0LXNjaGVj a0B1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBTdW4sIDI2IE1heSAyMDI0IDIxOjUz OjM0ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMzIvMzNdIFJldHVybiBiYXNlZCBvbiBzaHV0aWwu d2hpY2goKSBpbnN0ZWFkIG9mCi0gc3VicHJvY2Vzcy5jYWxsKCkKLQotLS0tCi0gcHl0aG9uL21h aW53aW5kb3cucHkgfCA1ICstLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA0 IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRo b24vbWFpbndpbmRvdy5weQotaW5kZXggN2JjNjk1YTk4Li4zMzEyOTdmNzggMTAwNzU1Ci0tLS0g YS9weXRob24vbWFpbndpbmRvdy5weQotKysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKLUBAIC0x MjE1LDExICsxMjE1LDggQEAgZGVmIE9uSW5pdChzZWxmKToKLSAgICAgICAgIHJldHVybiBUcnVl Ci0gCi0gICAgIGRlZiBfZXhlY3V0YWJsZUZvdW5kKHNlbGYsIGV4ZWN1dGFibGUpOgotLSAgICAg ICAgZGV2bnVsbCA9IG9wZW4oJy9kZXYvbnVsbCcsICd3YicpCi0gICAgICAgICB0cnk6Ci0tICAg ICAgICAgICAgZXhlY3V0YWJsZV9wYXRoID0gc2h1dGlsLndoaWNoKGV4ZWN1dGFibGUpCi0tICAg ICAgICAgICAgcmV0dXJuY29kZSA9IHN1YnByb2Nlc3MuY2FsbChleGVjdXRhYmxlX3BhdGgsIHN0 ZG91dD1kZXZudWxsKQotLSAgICAgICAgICAgIHJldHVybiAocmV0dXJuY29kZSA9PSAwKQotKyAg ICAgICAgICAgIHJldHVybiAoc2h1dGlsLndoaWNoKGV4ZWN1dGFibGUpIGlzIG5vdCBOb25lKQot ICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgIHJldHVybiBGYWxzZQotIAotCi1Gcm9tIDEw Zjc4NTNjODRmNDU2ZjE5Mjg5YzIyZmUxOWE5YTk5Zjk0ZDlkZGEgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBSb2JlcnQgU2NoZWNrIDxyb2JlcnRAZmVkb3JhcHJvamVjdC5vcmc+Ci1E YXRlOiBNb24sIDE0IE9jdCAyMDI0IDAwOjAwOjUyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMzMv MzNdIFJlcGxhY2UgcGlwZXMucXVvdGUoKSBmcm9tIGRlcHJlY2F0ZWQgUHl0aG9uIHBpcGVzCi0K LS0tLQotIHB5dGhvbi9saWIvcGxheW9ubGludXgucHkgfCA2ICsrKy0tLQotIDEgZmlsZSBjaGFu Z2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9weXRo b24vbGliL3BsYXlvbmxpbnV4LnB5IGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQotaW5kZXgg ZmE5YjkwZmI5Li5iMzlmOGE5YTkgMTAwNzU1Ci0tLS0gYS9weXRob24vbGliL3BsYXlvbmxpbnV4 LnB5Ci0rKysgYi9weXRob24vbGliL3BsYXlvbmxpbnV4LnB5Ci1AQCAtNSw3ICs1LDcgQEAKLSAK LSBmcm9tIC4gaW1wb3J0IFZhcmlhYmxlcwotIGltcG9ydCBvcwotLWltcG9ydCBzdWJwcm9jZXNz LCBzaGxleCwgcGlwZXMsIHd4Ci0raW1wb3J0IHN1YnByb2Nlc3MsIHNobGV4LCB3eAotIGltcG9y dCBuYXRzb3J0Ci0gCi0gZGVmIHdpbnBhdGgoc2NyaXB0LCBwYXRoKToKLUBAIC0zNzMsNyArMzcz LDcgQEAgZGVmIGdldEFyZ3Moc2hvcnRjdXQpOiAjIEdldCBwcmVmaXggbmFtZSBmcm9tIHNob3J0 Y3V0Ci0gICAgIHRyeToKLSAgICAgICAgIGFyZ3MgPSBzaGxleC5zcGxpdChmaWNoaWVyW2ldKVsy Oi0xXQotICAgICAgICAgI3ByaW50IGFyZ3MKLS0gICAgICAgIGFyZ3MgPSAiICIuam9pbihbIHBp cGVzLnF1b3RlKHgpIGZvciB4IGluIGFyZ3NdKQotKyAgICAgICAgYXJncyA9ICIgIi5qb2luKFsg c2hsZXgucXVvdGUoeCkgZm9yIHggaW4gYXJnc10pCi0gICAgICAgICAjcHJpbnQgYXJncwotICAg ICBleGNlcHQ6Ci0gICAgICAgICBhcmdzID0gIiIKLUBAIC00MzIsNyArNDMyLDcgQEAgZGVmIHdy aXRlQXJncyhnYW1lLCBhcmdzKToKLSAgICAgICAgICAgICAgICAgb2xkX3N0cmluZyA9IHNobGV4 LnNwbGl0KGZpY2hpZXJbaV0pCi0gICAgICAgICAgICAgICAgIG5ld19zdHJpbmcgPSBzaGxleC5z cGxpdChzdHIoYXJncykpCi0gICAgICAgICAgICAgICAgIG5ld19zdHJpbmcgPSBvbGRfc3RyaW5n WzA6Ml0gKyBuZXdfc3RyaW5nCi0tICAgICAgICAgICAgICAgIG5ld19zdHJpbmcgPSAiICIuam9p bihbIHBpcGVzLnF1b3RlKHgpIGZvciB4IGluIG5ld19zdHJpbmddKQotKyAgICAgICAgICAgICAg ICBuZXdfc3RyaW5nID0gIiAiLmpvaW4oWyBzaGxleC5xdW90ZSh4KSBmb3IgeCBpbiBuZXdfc3Ry aW5nXSkKLSAKLSAgICAgICAgICAgICAgICAgbmV3X3N0cmluZyA9IG5ld19zdHJpbmcrJyAiJEAi JwotICAgICAgICAgICAgICAgICBsaW5lLmFwcGVuZChuZXdfc3RyaW5nKQoKZGlmZiAtLWdpdCBh L3BsYXlvbmxpbnV4LTQuNC1naXRmZGUwMGZlLnBhdGNoIGIvcGxheW9ubGludXgtNC40LWdpdGZk ZTAwZmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlOTQxYwot LS0gL2Rldi9udWxsCisrKyBiL3BsYXlvbmxpbnV4LTQuNC1naXRmZGUwMGZlLnBhdGNoCkBAIC0w LDAgKzEsNDkxNSBAQAorRnJvbSA5ZmY0Yjc2MTY4YTdjNjRlNGEyZGU3YmU1MTU4NjE4ZmJiMTI0 MmEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1F1ZW50aW49MjBQ PUMzPUEycmlzPz0gPGdpdGh1YkBwbGF5b25saW51eC5jb20+CitEYXRlOiBTdW4sIDE3IE1heSAy MDIwIDE2OjE1OjMwICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMzddIFVwZGF0ZSBDSEFOR0VM T0cubWQKKworLS0tCisgQ0hBTkdFTE9HLm1kIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBp bnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9DSEFOR0VMT0cubWQgYi9DSEFOR0VMT0cubWQK K2luZGV4IGE1ODk2MjVjMy4uY2RlMmQ4MmM0IDEwMDY0NAorLS0tIGEvQ0hBTkdFTE9HLm1kCisr KysgYi9DSEFOR0VMT0cubWQKK0BAIC0xLDMgKzEsNiBAQAorKyMgNC40CisrKiBQeXRob24gMyBz dXBwb3J0IAorKworICMgNC4zLjQKKyAqIEZpeGVkIHNvbWUgYnVncyBpbiB0aGUgd2luZXZlcnNp b24gcHJvY2VzcworICogQmVnaW5pbmcgb2YgY29kZSBjbGVhbmluZyBhbmQgcmVmYWN0b3JpbmcK KworRnJvbSA3ODhmYWQxNmVmZjQ5MDQxOTNlNGU5YzUyYjIzNjcyNTM1YTIzYzMzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2lsbGVzIDxnaWxsZXMud2liZXJAZ21haWwuY29tPgor RGF0ZTogU2F0LCAzMCBNYXkgMjAyMCAxMToxOTozNSArMDIwMAorU3ViamVjdDogW1BBVENIIDAy LzM3XSBSZW1vdmluZyBTZXRTcGFjaW5nIGZ1bnRpb24KKworLS0tCisgcHl0aG9uL2NvbmZpZ3Vy ZXdpbmRvdy9Db25maWd1cmVXaW5kb3cucHkgICAgICAgICB8IDIgKy0KKyBweXRob24vY29uZmln dXJld2luZG93L0NvbmZpZ3VyZVdpbmRvd05vdGVib29rLnB5IHwgMiArLQorIHB5dGhvbi9kZWJ1 Zy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgcHl0aG9uL2lu c3RhbGwvSW5zdGFsbFdpbmRvdy5weSAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBweXRob24v bWFpbndpbmRvdy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHB5dGhv bi9vcHRpb25zLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgcHl0 aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5ICAgICAgICAgICAgICB8IDIgKy0KKyBw eXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weSAgICAgIHwgNCArKy0t CisgOCBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvdy5weSBiL3B5 dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93LnB5CitpbmRleCAzMGY3NzlkYjEu LmEyNjMyMTQzNyAxMDA3NTUKKy0tLSBhL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJl V2luZG93LnB5CisrKysgYi9weXRob24vY29uZmlndXJld2luZG93L0NvbmZpZ3VyZVdpbmRvdy5w eQorQEAgLTc1LDcgKzc1LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LGlkLHRpdGxlLHNo b3J0Y3V0LCBpc1ByZWZpeCA9IEZhbHNlKToKKyAgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVU VE9OLCBzZWxmLkRlbGV0ZVByZWZpeCwgaWQ9MTAwMikKKyAKKyAKKy0gICAgICAgIHNlbGYubGlz dF9nYW1lLlNldFNwYWNpbmcoMCkKKysgICAgICAgICNzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5n KDApCisgICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXMpCisg CisgCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dO b3RlYm9vay5weSBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJv b2sucHkKK2luZGV4IDhiNGUzODdlYS4uOTczZDliYmQzIDEwMDY0NAorLS0tIGEvcHl0aG9uL2Nv bmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weQorKysrIGIvcHl0aG9uL2Nv bmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weQorQEAgLTI2OSw3ICsyNjks NyBAQCBkZWYgUGFja2FnZXMoc2VsZiwgbm9tKToKKyAKKyAgICAgICAgIHNlbGYuTWVudSA9IHd4 LlRyZWVDdHJsKHNlbGYucGFuZWxQYWNrYWdlcywgOTksIHBvcz0oMTUsIDc1KSwgc2l6ZT0oNTMw LCAyNjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElE RV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3Jk ZXJzKQorLSAgICAgICAgc2VsZi5NZW51LlNldFNwYWNpbmcoMCk7CisrICAgICAgICAjc2VsZi5N ZW51LlNldFNwYWNpbmcoMCk7CisgICAgICAgICBzZWxmLk1lbnUuU2V0SW1hZ2VMaXN0KHNlbGYu aW1hZ2VQYWNrYWdlcykKKyAgICAgICAgIHNlbGYuaW1hZ2VQYWNrYWdlcy5SZW1vdmVBbGwoKQor IAorZGlmZiAtLWdpdCBhL3B5dGhvbi9kZWJ1Zy5weSBiL3B5dGhvbi9kZWJ1Zy5weQoraW5kZXgg MDIyMWU4OWMwLi40M2U4Y2YwMjEgMTAwNzU1CistLS0gYS9weXRob24vZGVidWcucHkKKysrKyBi L3B5dGhvbi9kZWJ1Zy5weQorQEAgLTYwLDcgKzYwLDcgQEAgZGVmIF9faW5pdF9fKHNlbGYscGFy ZW50LGlkLHRpdGxlLGxvZ2NoZWNrPSIvZGV2L251bGwiLGxvZ3R5cGU9Tm9uZSk6CisgICAgICAg ICBzZWxmLkJpbmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIHNlbGYuYW5hbHlzZUxvZywgaWQ9 OTAwKQorIAorIAorLSAgICAgICAgc2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygwKTsKKysgICAg ICAgICNzZWxmLmxpc3RfZ2FtZS5TZXRTcGFjaW5nKDApOworICAgICAgICAgc2VsZi5saXN0X2dh bWUuU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2VzKQorIAorIAorZGlmZiAtLWdpdCBhL3B5dGhvbi9p bnN0YWxsL0luc3RhbGxXaW5kb3cucHkgYi9weXRob24vaW5zdGFsbC9JbnN0YWxsV2luZG93LnB5 CitpbmRleCAyN2E2YjUxYTUuLjViNTg0Nzc0ZCAxMDA3NTUKKy0tLSBhL3B5dGhvbi9pbnN0YWxs L0luc3RhbGxXaW5kb3cucHkKKysrKyBiL3B5dGhvbi9pbnN0YWxsL0luc3RhbGxXaW5kb3cucHkK K0BAIC0xODMsNyArMTgzLDcgQEAgZGVmIF9jcmVhdGVBcHBOYXZpZ2F0aW9uKHNlbGYpOgorICAg ICAgICAgc2VsZi5hcHBzTGlzdCA9IHd4LlRyZWVDdHJsKHNlbGYuYXBwTmF2aWdhdGlvblBhbmVs LCAxMDYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJf SElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9i b3JkZXJzKQorICAgICAgICAgc2VsZi5hcHBzTGlzdC5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXNh cHBzKQorLSAgICAgICAgc2VsZi5hcHBzTGlzdC5TZXRTcGFjaW5nKDApCisrICAgICAgICAjc2Vs Zi5hcHBzTGlzdC5TZXRTcGFjaW5nKDApCisgCisgICAgICAgICBzZWxmLmFwcE5hdmlnYXRpb25T aXplci5BZGRTcGFjZXIoMTApCisgICAgICAgICBzZWxmLmFwcE5hdmlnYXRpb25TaXplci5BZGQo c2VsZi5hcHBzTGlzdCwgNCwgd3guRVhQQU5ELCA1KQorZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlu d2luZG93LnB5IGIvcHl0aG9uL21haW53aW5kb3cucHkKK2luZGV4IDdjMjExNDJkZi4uOGRmMWZm MTRiIDEwMDc1NQorLS0tIGEvcHl0aG9uL21haW53aW5kb3cucHkKKysrKyBiL3B5dGhvbi9tYWlu d2luZG93LnB5CitAQCAtMjQwLDcgKzI0MCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQs IGlkLCB0aXRsZSk6CisgCisgICAgICAgICAjIyBMaXN0IGdhbWUKKyAgICAgICAgIHNlbGYubGlz dF9nYW1lID0gd3guVHJlZUN0cmwoc2VsZiwgMTA1LCBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3 eC5UUl9GVUxMX1JPV19ISUdITElHSFQpCistICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRTcGFj aW5nKDApCisrICAgICAgICAjc2VsZi5saXN0X2dhbWUuU2V0U3BhY2luZygwKQorICAgICAgICAg c2VsZi5saXN0X2dhbWUuU2V0SW5kZW50KDUpCisgICAgICAgICBzZWxmLmxpc3RfZ2FtZS5TZXRJ bWFnZUxpc3Qoc2VsZi5pbWFnZXMpCisgICAgICAgICBzZWxmLm1lbnVfZ2F1Y2hlID0gd3guUGFu ZWwoc2VsZiwgLTEpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL29wdGlvbnMucHkgYi9weXRob24vb3B0 aW9ucy5weQoraW5kZXggYTU0YzExMDAwLi43MjMwNzNjZTQgMTAwNzU1CistLS0gYS9weXRob24v b3B0aW9ucy5weQorKysrIGIvcHl0aG9uL29wdGlvbnMucHkKK0BAIC0xODcsNyArMTg3LDcgQEAg ZGVmIFBsdWdpbnMoc2VsZiwgbm9tKToKKyAgICAgICAgIHNlbGYudHh0UGx1Z2luID0gd3guU3Rh dGljVGV4dChzZWxmLnBhbmVsUGx1Z2lucywgLTEsIF8oIkluc3RhbGxlZCBwbHVnaW5zIiksIHNp emU9d3guRGVmYXVsdFNpemUpCisgICAgICAgICBzZWxmLnR4dFBsdWdpbi5TZXRGb250KHNlbGYu Zm9udFRpdGxlKQorICAgICAgICAgc2VsZi5wbHVnaW5saXN0ID0gd3guVHJlZUN0cmwoc2VsZi5w YW5lbFBsdWdpbnMsIDIyMCwgc3R5bGU9VmFyaWFibGVzLndpZGdldF9ib3JkZXJzfHd4LlRSX0hJ REVfUk9PVHx3eC5UUl9GVUxMX1JPV19ISUdITElHSFQpCistICAgICAgICBzZWxmLnBsdWdpbmxp c3QuU2V0U3BhY2luZygwKQorKyAgICAgICAgI3NlbGYucGx1Z2lubGlzdC5TZXRTcGFjaW5nKDAp CisgCisgICAgICAgICBzZWxmLnBsdWdpbkltZ0xpc3QgPSB3eC5JbWFnZUxpc3QoMTYsMTYpCisg CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5IGIvcHl0 aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5CitpbmRleCA2NmJlZTg1MzMuLjMzZDcz ZDM4YSAxMDA3NTUKKy0tLSBhL3B5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weQor KysrIGIvcHl0aG9uL3NldHVwd2luZG93L1BPTF9TZXR1cEZyYW1lLnB5CitAQCAtMjEyLDcgKzIx Miw3IEBAIGRlZiBfY3JlYXRlVUkoc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdI VCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcG9zPSgyNSwgMjUpLCBzaXplPSg0NjAsIDIyMCkpCisgICAgICAgICBzZWxm Lk1lbnVHYW1lcy5TZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXMpCistICAgICAgICBzZWxmLk1lbnVH YW1lcy5TZXRTcGFjaW5nKDApCisrICAgICAgICAjc2VsZi5NZW51R2FtZXMuU2V0U3BhY2luZygw KQorIAorICAgICAgICAgIyBMb2dpbgorICAgICAgICAgc2VsZi5sb2dpbiA9IHd4LlN0YXRpY1Rl eHQoc2VsZi5jb250ZW50UGFuZWwsIC0xLCBfKCJMb2dpbjogIiksIHBvcz0oMjAsIDQwKSwgc2l6 ZT0oNDYwLCAyMCkpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNp b25zTm90ZWJvb2sucHkgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9v ay5weQoraW5kZXggZTA4OGFiZWIyLi5lYzVmMTI1MzUgMTAwNjQ0CistLS0gYS9weXRob24vd2lu ZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weQorKysrIGIvcHl0aG9uL3dpbmVfdmVy c2lvbnMvV2luZVZlcnNpb25zTm90ZWJvb2sucHkKK0BAIC0zOSw3ICszOSw3IEBAIGRlZiBfY3Jl YXRlSW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJjaCk6CisgICAgICAgICBzZWxm Lmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSA9IHd4LlRyZWVDdHJsKGlu c3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsLCAxMDcgKyBzZWxmLmNhbGN1bGF0ZUV2ZW50RGVsdGEo YXJjaCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9X X0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53aWRnZXRfYm9yZGVycykKKyAgICAgICAgIHNlbGYuaW5z dGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEltYWdlTGlzdChzZWxmLmlt YWdlc2FwcHNfaVthcmNoXSkKKy0gICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJl ZVNlbGVjdG9yW2FyY2hdLlNldFNwYWNpbmcoMCkKKysgICAgICAgICNzZWxmLmluc3RhbGxlZFdp bmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRTcGFjaW5nKDApCisgICAgICAgICBpbnN0 YWxsZWRXaW5lVmVyc2lvbnNTaXplci5BZGQoc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVl U2VsZWN0b3JbYXJjaF0sIDEsIHd4LkVYUEFORCkKKyAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJz aW9uc1NpemVyLkFkZFNwYWNlcigxMCkKKyAKK0BAIC01NSw3ICs1NSw3IEBAIGRlZiBfY3JlYXRl QXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwoc2VsZiwgYXJjaCk6CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxl PXd4LlRSX0hJREVfUk9PVCB8IHd4LlRSX0ZVTExfUk9XX0hJR0hMSUdIVCB8IFZhcmlhYmxlcy53 aWRnZXRfYm9yZGVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT0oMzIwLCAzMDApLCBwb3M9KDEwLCAzNSkp CisgICAgICAgICBzZWxmLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5T ZXRJbWFnZUxpc3Qoc2VsZi5pbWFnZXNhcHBzW2FyY2hdKQorLSAgICAgICAgc2VsZi5hdmFpbGFi bGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQorKyAgICAgICAg I3NlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldFNwYWNpbmco MCkKKyAgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZChzZWxmLmF2YWlsYWJs ZVdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXSwgMSwgd3guRVhQQU5EKQorICAgICAgICAg YXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQorIAorCitGcm9tIDc3YTNj YTNiZTI5M2ViY2FmYTI0MDA3MDNhNWRkNDA3OWE1ZjIwMGIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBHaWxsZXMgPGdpbGxlcy53aWJlckBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMw IE1heSAyMDIwIDExOjMyOjEzICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMDMvMzddIFNvbHZpbmcg cGx1Z2luZyBtYW5hZ2VyIGlzc3VlIChleHRlbnNpb24gbWFuYWdlbWVudCkKKworLS0tCisgcHl0 aG9uL29wdGlvbnMucHkgfCAxMSArKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2Vy dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vb3B0aW9ucy5w eSBiL3B5dGhvbi9vcHRpb25zLnB5CitpbmRleCA3MjMwNzNjZTQuLmY0MGYyNmE3MCAxMDA3NTUK Ky0tLSBhL3B5dGhvbi9vcHRpb25zLnB5CisrKysgYi9weXRob24vb3B0aW9ucy5weQorQEAgLTIy OSw5ICsyMjksOSBAQCBkZWYgZ2VuZXJhdGVFeHRzKHNlbGYpOgorICAgICAgICAgICAgIGxpbmUg PSBsaW5lLnJlcGxhY2UoIlxuIiwiIikKKyAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgi PSIpCisgICAgICAgICAgICAgbGluZXIgPSAiTGluZSAlcyIgJSBpCistICAgICAgICAgICAgc2Vs Zi5saXN0X2V4dC5JbnNlcnRTdHJpbmdJdGVtKGksIGxpbmVyKQorLSAgICAgICAgICAgIHNlbGYu bGlzdF9leHQuU2V0U3RyaW5nSXRlbShpLCAwLCBsaW5lWzBdKQorLSAgICAgICAgICAgIHNlbGYu bGlzdF9leHQuU2V0U3RyaW5nSXRlbShpLCAxLCBsaW5lWzFdKQorKyAgICAgICAgICAgIHNlbGYu bGlzdF9leHQuSW5zZXJ0SXRlbShpLCBsaW5lcikKKysgICAgICAgICAgICBzZWxmLmxpc3RfZXh0 LlNldEl0ZW0oaSwgMCwgbGluZVswXSkKKysgICAgICAgICAgICBzZWxmLmxpc3RfZXh0LlNldEl0 ZW0oaSwgMSwgbGluZVsxXSkKKyAgICAgICAgICAgICBpICs9IDEKKyAgICAgICAgIHNlbGYuYXBw X2luc3RhbGxlZF90ZXh0LkhpZGUoKQorICAgICAgICAgc2VsZi5hcHBfaW5zdGFsbGVkLkhpZGUo KQorQEAgLTI0OSw4ICsyNDksOSBAQCBkZWYgZWRpdEV4dChzZWxmLCBldmVudCk6CisgICAgICAg ICBzZWxmLmFwcF9pbnN0YWxsZWQuU2hvdygpCisgICAgICAgICBzZWxmLmRlbGV0ZV9leHQuU2hv dygpCisgCistICAgICAgICBzZWxmLmFwcF9zZWxlY3RlZCA9IHNlbGYuZXh0c1tldmVudC5tX2l0 ZW1JbmRleF0uc3BsaXQoIj0iKVsxXQorLSAgICAgICAgc2VsZi5leHRfc2VsZWN0ZWQgPSBzZWxm LmV4dHNbZXZlbnQubV9pdGVtSW5kZXhdLnNwbGl0KCI9IilbMF0KKysgICAgICAgIGluZCA9IGV2 ZW50LkdldEluZGV4KCkKKysgICAgICAgIHNlbGYuYXBwX3NlbGVjdGVkID0gc2VsZi5saXN0X2V4 dC5HZXRJdGVtKGluZCwxKS5HZXRUZXh0KCkKKysgICAgICAgIHNlbGYuZXh0X3NlbGVjdGVkID0g c2VsZi5saXN0X2V4dC5HZXRJdGVtKGluZCwwKS5HZXRUZXh0KCkKKyAKKyAgICAgICAgIHNlbGYu YXBwX2luc3RhbGxlZC5TZXRWYWx1ZShzZWxmLmFwcF9zZWxlY3RlZC5yZXBsYWNlKCJcbiIsIiIp LnJlcGxhY2UoIlxyIiwiIikpCisgCisKK0Zyb20gYTY1NmY1YjJiZGQyMzM3NWUzZDk1NDdhOWMz OGNjZjk5ZTJkYzY3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdpbGxlcyA8Z2ls bGVzLndpYmVyQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgTWF5IDIwMjAgMTQ6MzQ6MjggKzAy MDAKK1N1YmplY3Q6IFtQQVRDSCAwNC8zN10gU29sdmluZyBkaWZmZXJlbnQgaXNzdWUgb24gZGVi dWcgd2luZG93CisKKy0tLQorIHB5dGhvbi9kZWJ1Zy5weSAgICAgICAgIHwgNyArKysrLS0tCisg cHl0aG9uL2xpYi9WYXJpYWJsZXMucHkgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vZGVidWcucHkg Yi9weXRob24vZGVidWcucHkKK2luZGV4IDQzZThjZjAyMS4uMWUzNDRlZGM4IDEwMDc1NQorLS0t IGEvcHl0aG9uL2RlYnVnLnB5CisrKysgYi9weXRob24vZGVidWcucHkKK0BAIC0zOCw3ICszOCw3 IEBAIGRlZiBfX2luaXRfXyhzZWxmLHBhcmVudCxpZCx0aXRsZSxsb2djaGVjaz0iL2Rldi9udWxs Iixsb2d0eXBlPU5vbmUpOgorIAorICAgICAgICAgd3guRnJhbWUuX19pbml0X18oc2VsZiwgcGFy ZW50LCAtMSwgdGl0bGUsIHNpemUgPSAoODEwLCA2MDArVmFyaWFibGVzLndpbmRvd3NfYWRkX3Np emUpLCBzdHlsZSA9IHd4LkNMT1NFX0JPWCB8IHd4LkNBUFRJT04gfCB3eC5NSU5JTUlaRV9CT1gp CisgICAgICAgICBzZWxmLlNldEljb24od3guSWNvbihWYXJpYWJsZXMucGxheW9ubGludXhfZW52 KyIvZXRjL3BsYXlvbmxpbnV4LnBuZyIsIHd4LkJJVE1BUF9UWVBFX0FOWSkpCistICAgICAgICBz ZWxmLlNldFRpdGxlKF8oJ3swfSBkZWJ1Z2dlcicpLmZvcm1hdChvcy5lbnZpcm9uWyJBUFBMSUNB VElPTl9USVRMRSJdKSkKKysgICAgICAgIHNlbGYuU2V0VGl0bGUodGl0bGUpCisgICAgICAgICAj c2VsZi5wYW5lbEZlbnAgPSB3eC5QYW5lbChzZWxmLCAtMSkKKyAKKyAgICAgICAgIHNlbGYucHJl Zml4ZXNfaXRlbSA9IHt9CitAQCAtNzksNyArNzksNyBAQCBkZWYgX19pbml0X18oc2VsZixwYXJl bnQsaWQsdGl0bGUsbG9nY2hlY2s9Ii9kZXYvbnVsbCIsbG9ndHlwZT1Ob25lKToKKyAgICAgICAg IHNlbGYubG9nX3JlYWRlciA9IHd4LlRleHRDdHJsKHNlbGYucGFuZWxUZXh0LCAxMDAsICIiLCBz aXplPXd4LlNpemUoNTkwLDUwMCksIHBvcz0oMiwyKSwgc3R5bGU9VmFyaWFibGVzLndpZGdldF9i b3JkZXJzfHd4LlRFX1JJQ0gyfHd4LlRFX1JFQURPTkxZfHd4LlRFX01VTFRJTElORSkKKyAgICAg ICAgIHNlbGYubG9nX3JlYWRlci5CaW5kKHd4LkVWVF9TRVRfRk9DVVMsIHNlbGYuT25Gb2N1cykK KyAgICAgICAgIHNlbGYub3BlblRleHRFZGl0ID0gd3guQnV0dG9uKHNlbGYucGFuZWxOb3RFbXB0 eSwgMTAxLCBfKCJMb2NhdGUgdGhpcyBsb2dmaWxlIiksIHNpemU9KDQwMCwzMCksIHBvcz0oNzAs NTEyKSkKKy0gICAgICAgIHNlbGYucmVwb3J0UHJvYmxlbSA9IHd4LkJ1dHRvbihzZWxmLnBhbmVs Tm90RW1wdHksIDEwMiwgIiIsIHNpemU9KDQwMCwzMCksIHBvcz0oNzAsNTUyKSkKKysgICAgICAg IHNlbGYucmVwb3J0UHJvYmxlbSA9IHd4LkJ1dHRvbihzZWxmLnBhbmVsTm90RW1wdHksIDEwMiwg XygiQnVnIHJlcG9ydCIpLCBzaXplPSg0MDAsMzApLCBwb3M9KDcwLDU1MikpCisgCisgICAgICAg ICBpZihsb2djaGVjayA9PSAiL2Rldi9udWxsIik6CisgICAgICAgICAgICAgc2VsZi5IaWRlTG9n RmlsZSgpCitAQCAtOTUsNyArOTUsOCBAQCBkZWYgYnVnUmVwb3J0KHNlbGYsIGV2ZW50KToKKyAg ICAgICAgIG5ld19lbnYgPSBvcy5lbnZpcm9uCisgICAgICAgICBuZXdfZW52WyJMT0dUSVRMRSJd ID0gc2VsZi5sb2duYW1lCisgICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlh Ymxlcy5wbGF5b25saW51eF9lbnYrIi9iYXNoL2J1Z19yZXBvcnQiXSwgZW52PW5ld19lbnYpCist ICAgICAgICBzZWxmLnJlcG9ydFByb2JsZW0uRW5hYmxlKEZhbHNlKQorKyAgICAgICAgIyBEb2Vz bid0IHdvcmsgaWYgY2FuY2VsIG9uIFBPTCBXaW5kb3cgOiBuZWVkIHRvIGZpbmQgYW5vdGhlciB3 YXkgLi4uCisrICAgICAgICAjc2VsZi5yZXBvcnRQcm9ibGVtLkVuYWJsZShGYWxzZSkKKyAKKyAg ICAgZGVmIGxvY2F0ZShzZWxmLCBldmVudCk6CisgICAgICAgICBpZihzZWxmLmxvZ3R5cGUgPT0g MCk6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkgYi9weXRob24vbGliL1Zh cmlhYmxlcy5weQoraW5kZXggMDU1ZmUxN2Y5Li44YmVkNzYwMWIgMTAwNzU1CistLS0gYS9weXRo b24vbGliL1ZhcmlhYmxlcy5weQorKysrIGIvcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKK0BAIC01 MSw3ICs1MSw3IEBACisgICAgICAgICB3aW5kb3dzX2FkZF9zaXplID0gMAorICAgICAgICAgd2lu ZG93c19hZGRfcGxheW9ubWFjID0gMAorICAgICBlbHNlOgorLSAgICAgICAgd2luZG93c19hZGRf c2l6ZSA9IGRwaUZldGNoZXIoKS5mZXRjaF9leHRyYV9waXhlbCgpCisrICAgICAgICB3aW5kb3dz X2FkZF9zaXplID0gZHBpRmV0Y2hlcigpLmZldGNoX2V4dHJhX3BpeGVsKCkrNjAKKyAgICAgICAg IHdpbmRvd3NfYWRkX3BsYXlvbm1hYyA9IDAKKyAKKyAgICAgd2lkZ2V0X2JvcmRlcnMgPSB3eC5S QUlTRURfQk9SREVSCisKK0Zyb20gMDJiZWFiMDVkNDI1NTgwMmMyNmRiMjBhMTg3ODczNDllOWIx NWJiYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdpbGxlcyA8Z2lsbGVzLndpYmVy QGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgTWF5IDIwMjAgMTU6MTc6MzMgKzAyMDAKK1N1Ympl Y3Q6IFtQQVRDSCAwNS8zN10gU29sdmluZyBzbWFsbCBidWdzCisKKy0tLQorIHB5dGhvbi9jb25m aWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkgfCAyICsrCisgcHl0aG9uL2lu c3RhbGwvSW5zdGFsbFdpbmRvdy5weSAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVz IGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEv cHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weSBiL3B5dGhv bi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJvb2sucHkKK2luZGV4IDk3M2Q5 YmJkMy4uMjk2NDQzZTY2IDEwMDY0NAorLS0tIGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25m aWd1cmVXaW5kb3dOb3RlYm9vay5weQorKysrIGIvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25m aWd1cmVXaW5kb3dOb3RlYm9vay5weQorQEAgLTQ2Nyw2ICs0NjcsOCBAQCBkZWYgbWlzY19idXR0 b24oc2VsZiwgZXZlbnQpOgorICAgICAgICAgICAgIHNlbGYuRmlsZURpYWxvZy5TaG93TW9kYWwo KQorICAgICAgICAgICAgIGlmIChzZWxmLkZpbGVEaWFsb2cuR2V0UGF0aCgpICE9ICIiKToKKyAg ICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBzZWxmLkZpbGVEaWFsb2cuR2V0UGF0aCgpCisrICAg ICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShmaWxlbmFtZSk6CisrICAgICAgICAg ICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgZGlybmFtZSA9IG9zLnBhdGguZGly bmFtZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICAgaWYgKHNlbGYuc19pc1ByZWZpeCA9PSBU cnVlKToKKyAgICAgICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oWyJiYXNoIiwgVmFy aWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvYmFzaC9QT0xfQ29tbWFuZCIsICItLXByZWZpeCIs CitkaWZmIC0tZ2l0IGEvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weSBiL3B5dGhvbi9p bnN0YWxsL0luc3RhbGxXaW5kb3cucHkKK2luZGV4IDViNTg0Nzc0ZC4uMmU0OWU0YTE4IDEwMDc1 NQorLS0tIGEvcHl0aG9uL2luc3RhbGwvSW5zdGFsbFdpbmRvdy5weQorKysrIGIvcHl0aG9uL2lu c3RhbGwvSW5zdGFsbFdpbmRvdy5weQorQEAgLTMzMyw3ICszMzMsNyBAQCBkZWYgY2xvc2VhcHAo c2VsZiwgZXZlbnQpOgorIAorICAgICBkZWYgbWFudWFsKHNlbGYsIGV2ZW50KToKKyAgICAgICAg IHNlbGYubGl2ZSA9IDEKKy0gICAgICAgIHNlbGYuaW5zdGFsbGFwcChzZWxmKQorKyAgICAgICAg c2VsZi5pbnN0YWxsYXBwKGV2ZW50KQorIAorICAgICBkZWYgc2hvd1N0YXJzKHNlbGYsIHN0YXJz KToKKyAgICAgICAgIHN0YXJXaWR0aCA9IDIwCisKK0Zyb20gZTNhOTI0ZmNmNGZmMzQwOWQzMWYw OTU2ZDM4MDJkNmE2NTk1NmFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IG92YXJp IDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBGcmksIDI0 IEp1bCAyMDIwIDE5OjQyOjUwICsxMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMzddIFVwZGF0ZSBS RUFETUUubWQKKworLS0tCisgUkVBRE1FLm1kIHwgNDkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25z KCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5t ZAoraW5kZXggOWI2Y2EzMWNhLi45Nzc5NWM0MjcgMTAwNjQ0CistLS0gYS9SRUFETUUubWQKKysr KyBiL1JFQURNRS5tZAorQEAgLTEsMjggKzEsNDcgQEAKKy1QT0wtUE9NLTQKKy09PT09PT09PT0K KysjIFBsYXlPbkxpbnV4IGFuZCBQbGF5T25NYWMgNCAoUE9MLVBPTS00KQorIAorLVBsYXlPbkxp bnV4IDQgcmVwb3NpdG9yeQorLU5vdGU6IFBsYXlPbkxpbnV4IDUgaXMgY3VycmVudGx5IHVuZGVy IGRldmVsb3BtZW50LiBQbGVhc2UgY2xvbmUgUE9MLVBPTS01IHJlcG9zaXRvcnkgaWYgeW91IHdh bnQgdG8gY29udHJpYnV0ZQorK05vdGU6IFtQaG9lbmljaXMgUGxheU9uTGludXggYW5kIFBsYXlP bk1hYyA1XShodHRwczovL3d3dy5waG9lbmljaXMub3JnLykgaXMgY3VycmVudGx5IHVuZGVyIGRl dmVsb3BtZW50LiBQbGVhc2UgY2xvbmUgW1Bob2VuaWNpcyBQbGF5T25MaW51eCBhbmQgUGxheU9u TWFjIDUgcmVwb3NpdG9yeV0oaHR0cHM6Ly9naXRodWIuY29tL1Bob2VuaWNpc09yZy9waG9lbmlj aXMpIGlmIHlvdSB3YW50IHRvIGNvbnRyaWJ1dGUuCisgCistV2hhdCBpcyBQbGF5T25MaW51eD8K Ky09PT09PT09PT09PT09PT09PT09PT0KKytQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDQgYWxs b3dzIHlvdSB0byBpbnN0YWxsIGFuZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlvbnMgb24geW91 ciBmYXZvcml0ZSBvcGVyYXRpbmcgc3lzdGVtLgorKworK1N1cHBvcnRlZCBvcGVyYXRpbmcgc3lz dGVtczoKKysKKysqIExpbnV4CisrKiBNYWMgT1NYCisrCisrU3VwcG9ydGVkIGVuZ2luZXM6Cisr CisrKiBbV2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pCisrCisrCisrIyBXaGF0IGlzIFBs YXlPbkxpbnV4PworIAorIFBsYXlPbkxpbnV4IGlzIGEgcGllY2Ugb2Ygc29mdHdhcmUgd2hpY2gg YWxsb3dzIHlvdSB0byBlYXNpbHkgaW5zdGFsbCBhbmQgdXNlIG51bWVyb3VzIGdhbWVzIGFuZCBh cHBzIGRlc2lnbmVkIHRvIHJ1biB3aXRoIE1pY3Jvc29mdMKuIFdpbmRvd3PCri4KKysKKyBGZXcg Z2FtZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVudCBhbmQgaXQg Y2VydGFpbmx5IGlzIGEgZmFjdG9yIHByZXZlbnRpbmcgdGhlIG1pZ3JhdGlvbiB0byB0aGlzIHN5 c3RlbS4gUGxheU9uTGludXggYnJpbmdzIGEgY29zdC1mcmVlLCBhY2Nlc3NpYmxlIGFuZCBlZmZp Y2llbnQgc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtLgorIAorIAorLVdoYXQgYXJlIFBsYXlPbkxp bnV4J3MgZmVhdHVyZXM/CistPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKysjIFdo YXQgYXJlIFBsYXlPbkxpbnV4J3MgZmVhdHVyZXM/CisgCisgSGVyZSBpcyBhIG5vbi1leGhhdXN0 aXZlIGxpc3Qgb2YgdGhlIGludGVyZXN0aW5nIHBvaW50cyB0byBrbm93OgorKyogWW91IGRvbid0 IGhhdmUgdG8gb3duIGEgV2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KKysqIFBs YXlPbkxpbnV4IGlzIGJhc2VkIG9uIFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFu ZCBzbyBwcm9maXRzIGZyb20gYWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIg ZnJvbSBoYXZpbmcgdG8gZGVhbCB3aXRoIGl0cyBjb21wbGV4aXR5LgorKyogUGxheU9uTGludXgg aXMgZnJlZSBzb2Z0d2FyZS4KKysqIFBsYXlPbkxpbnV4IHVzZXMgW0Jhc2hdKGh0dHBzOi8vZW4u d2lraXBlZGlhLm9yZy93aWtpL0Jhc2hfJTI4VW5peF9zaGVsbCUyOSkgYW5kIFtQeXRob25dKGh0 dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1B5dGhvbl8ocHJvZ3JhbW1pbmdfbGFuZ3VhZ2Up KS4KKyAKKy1Zb3UgZG9uJ3QgaGF2ZSB0byBvd24gYSBXaW5kb3dzIGxpY2Vuc2UgdG8gdXNlIFBs YXlPbkxpbnV4LgorLVBsYXlPbkxpbnV4IGlzIGJhc2VkIG9uIFdpbmUsIGFuZCBzbyBwcm9maXRz IGZyb20gYWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcg dG8gZGVhbCB3aXRoIGl0cyBjb21wbGV4aXR5LgorLVBsYXlPbkxpbnV4IGlzIGZyZWUgc29mdHdh cmUuCistUGxheU9uTGludXggdXNlcyBCYXNoIGFuZCBQeXRob24uCisgTmV2ZXJ0aGVsZXNzLCBQ bGF5T25MaW51eCBoYXMgc29tZSBidWdzLCBhcyBldmVyeSBwaWVjZSBvZiBzb2Z0d2FyZToKKy0K Ky1PY2Nhc2lvbmFsIHBlcmZvcm1hbmNlIGRlY3JlYXNlIChpbWFnZSBtYXkgYmUgbGVzcyBmbHVp ZCBhbmQgZ3JhcGhpY3MgbGVzcyBkZXRhaWxlZCkuCistTm90IGFsbCBnYW1lcyBhcmUgc3VwcG9y dGVkLiBOZXZlcnRoZWxlc3MsIHlvdSBjYW4gdXNlIG91ciBtYW51YWwgaW5zdGFsbGF0aW9uIG1v ZHVsZS4KKysqIE9jY2FzaW9uYWwgcGVyZm9ybWFuY2UgZGVjcmVhc2UgKGltYWdlIG1heSBiZSBs ZXNzIGZsdWlkIGFuZCBncmFwaGljcyBsZXNzIGRldGFpbGVkKS4KKysqIE5vdCBhbGwgZ2FtZXMg YXJlIHN1cHBvcnRlZC4gTmV2ZXJ0aGVsZXNzLCB5b3UgY2FuIHVzZSBvdXIgbWFudWFsIGluc3Rh bGxhdGlvbiBtb2R1bGUuCisgCisgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHZpc2l0IGh0dHA6Ly93 d3cucGxheW9ubGludXguY29tCisrCisrCisrIyMgVHJhbnNsYXRlCisrUGxheU9uTGludXgvUGxh eU9uTWFjIDQgaXMgbG9jYWxpemVkIHVzaW5nIExhdW5jaHBhZDogaHR0cHM6Ly90cmFuc2xhdGlv bnMubGF1bmNocGFkLm5ldC9wbGF5b25saW51eAorK0lmIHlvdXIgbGFuZ3VhZ2UgaXMgbm90IGxp c3RlZCwgcGxlYXNlIGNyZWF0ZSBhbiBbaXNzdWVdKGh0dHBzOi8vZ2l0aHViLmNvbS9QbGF5T25M aW51eC9QT0wtUE9NLTQvaXNzdWVzKS4KKysKKysKKysjIyBDb21tdW5pdHkKKysqIElzc3VlcyBv ciBpZGVhczogaHR0cHM6Ly9naXRodWIuY29tL1Bob2VuaWNpc09yZy9waG9lbmljaXMvaXNzdWVz CisrKiBGb3J1bXMgOiBodHRwOi8vd3d3LnBsYXlvbmxpbnV4LmNvbS9lbi9mb3J1bXMuaHRtbAor KyogU2xhY2sgOiBodHRwczovL2pvaW4uc2xhY2suY29tL3Bob2VuaWNpcy1vcmcvc2hhcmVkX2lu dml0ZS9NVGt6TVRNd01qTTNNamN4TFRFME9UWTFNVFF6TnprdFkySXpPVEUyTm1FM05BCisKK0Zy b20gMmZiMTNlMzI4ODYxMjY0ZWUzYTRmNmQ4OTc5YmIxZWUwMThjZWE3OSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5Lmdp dGh1Yi5jb20+CitEYXRlOiBGcmksIDI0IEp1bCAyMDIwIDE5OjQ0OjE2ICsxMDAwCitTdWJqZWN0 OiBbUEFUQ0ggMDcvMzddIFVwZGF0ZSBSRUFETUUubWQKKworLS0tCisgUkVBRE1FLm1kIHwgNCAr Ky0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL1JFQURNRS5tZCBiL1JFQURNRS5tZAoraW5kZXggOTc3OTVjNDI3Li5jMWU5 ZWQwMzMgMTAwNjQ0CistLS0gYS9SRUFETUUubWQKKysrKyBiL1JFQURNRS5tZAorQEAgLTIxLDEw ICsyMSwxMCBAQCBQbGF5T25MaW51eCBpcyBhIHBpZWNlIG9mIHNvZnR3YXJlIHdoaWNoIGFsbG93 cyB5b3UgdG8gZWFzaWx5IGluc3RhbGwgYW5kIHVzZSBudQorIEZldyBnYW1lcyBhcmUgY29tcGF0 aWJsZSB3aXRoIEdOVS9MaW51eCBhdCB0aGUgbW9tZW50IGFuZCBpdCBjZXJ0YWlubHkgaXMgYSBm YWN0b3IgcHJldmVudGluZyB0aGUgbWlncmF0aW9uIHRvIHRoaXMgc3lzdGVtLiBQbGF5T25MaW51 eCBicmluZ3MgYSBjb3N0LWZyZWUsIGFjY2Vzc2libGUgYW5kIGVmZmljaWVudCBzb2x1dGlvbiB0 byB0aGlzIHByb2JsZW0uCisgCisgCistIyBXaGF0IGFyZSBQbGF5T25MaW51eCdzIGZlYXR1cmVz PworKyMgV2hhdCBhcmUgUGxheU9uTGludXjigJlzIGZlYXR1cmVzPworIAorIEhlcmUgaXMgYSBu b24tZXhoYXVzdGl2ZSBsaXN0IG9mIHRoZSBpbnRlcmVzdGluZyBwb2ludHMgdG8ga25vdzoKKy0q IFlvdSBkb24ndCBoYXZlIHRvIG93biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2UgUGxheU9uTGlu dXguCisrKiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIFdpbmRvd3MgbGljZW5zZSB0byB1c2Ug UGxheU9uTGludXguCisgKiBQbGF5T25MaW51eCBpcyBiYXNlZCBvbiBbV2luZV0oaHR0cHM6Ly93 d3cud2luZWhxLm9yZy8pLCBhbmQgc28gcHJvZml0cyBmcm9tIGFsbCBpdHMgZmVhdHVyZXMgeWV0 IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2aW5nIHRvIGRlYWwgd2l0aCBpdHMgY29tcGxleGl0 eS4KKyAqIFBsYXlPbkxpbnV4IGlzIGZyZWUgc29mdHdhcmUuCisgKiBQbGF5T25MaW51eCB1c2Vz IFtCYXNoXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVuaXhfc2hlbGwl MjkpIGFuZCBbUHl0aG9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QeXRob25fKHBy b2dyYW1taW5nX2xhbmd1YWdlKSkuCisKK0Zyb20gZjQyMjlhYzgzMDE1YTU4M2QwYzBlNDU0NDVk MjhlZTMzMjMyMTM1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IG92YXJpIDwxNzQ2 NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBGcmksIDI0IEp1bCAy MDIwIDE5OjQ1OjExICsxMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDgvMzddIFVwZGF0ZSBSRUFETUUu bWQKKworLS0tCisgUkVBRE1FLm1kIHwgNSArKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFE TUUubWQKK2luZGV4IGMxZTllZDAzMy4uNzVmYmM1ZmFlIDEwMDY0NAorLS0tIGEvUkVBRE1FLm1k CisrKysgYi9SRUFETUUubWQKK0BAIC02LDggKzYsOSBAQCBQbGF5T25MaW51eCBhbmQgUGxheU9u TWFjIDQgYWxsb3dzIHlvdSB0byBpbnN0YWxsIGFuZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlv bgorIAorIFN1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczoKKyAKKy0qIExpbnV4CistKiBNYWMg T1NYCisrKiBHTlUvTGludXgKKysqIE1hYyBPUyBYCisrKiBtYWNPUworIAorIFN1cHBvcnRlZCBl bmdpbmVzOgorIAorCitGcm9tIDY0ODBlNjk0MTU0ZjRmMjRjNGJmMzFiYWJjN2U5MjcxNTc0ZTA0 Y2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBvdmFyaSA8MTc0NjU4NzIrb3ZhcmlA dXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogRnJpLCAyNCBKdWwgMjAyMCAxOTo0OToz MSArMTAwMAorU3ViamVjdDogW1BBVENIIDA5LzM3XSBVcGRhdGUgUkVBRE1FLm1kCisKKy0tLQor IFJFQURNRS5tZCB8IDcgKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyks IDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFETUUubWQKK2lu ZGV4IDc1ZmJjNWZhZS4uMGQ2NGE1OTYyIDEwMDY0NAorLS0tIGEvUkVBRE1FLm1kCisrKysgYi9S RUFETUUubWQKK0BAIC02LDkgKzYsOCBAQCBQbGF5T25MaW51eCBhbmQgUGxheU9uTWFjIDQgYWxs b3dzIHlvdSB0byBpbnN0YWxsIGFuZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlvbgorIAorIFN1 cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczoKKyAKKy0qIEdOVS9MaW51eAorLSogTWFjIE9TIFgK Ky0qIG1hY09TCisrKiBbR05VL0xpbnV4XShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9M aW51eCkKKysqIFttYWNPU10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQXBwbGVfTWFj aW50b3NoX09TX1gpCisgCisgU3VwcG9ydGVkIGVuZ2luZXM6CisgCitAQCAtMjUsNyArMjQsNyBA QCBGZXcgZ2FtZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVudCBh bmQgaXQgY2VydGFpbmx5IGlzIGEgZmFjdAorICMgV2hhdCBhcmUgUGxheU9uTGludXjigJlzIGZl YXR1cmVzPworIAorIEhlcmUgaXMgYSBub24tZXhoYXVzdGl2ZSBsaXN0IG9mIHRoZSBpbnRlcmVz dGluZyBwb2ludHMgdG8ga25vdzoKKy0qIFlvdSBkb27igJl0IGhhdmUgdG8gb3duIGEgV2luZG93 cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KKysqIFlvdSBkb27igJl0IGhhdmUgdG8gb3du IGEgW01pY3Jvc29mdCBXaW5kb3dzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9NaWNy b3NvZnRfV2luZG93cykgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCisgKiBQbGF5T25MaW51 eCBpcyBiYXNlZCBvbiBbV2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBhbmQgc28gcHJv Zml0cyBmcm9tIGFsbCBpdHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2VyIGZyb20gaGF2 aW5nIHRvIGRlYWwgd2l0aCBpdHMgY29tcGxleGl0eS4KKyAqIFBsYXlPbkxpbnV4IGlzIGZyZWUg c29mdHdhcmUuCisgKiBQbGF5T25MaW51eCB1c2VzIFtCYXNoXShodHRwczovL2VuLndpa2lwZWRp YS5vcmcvd2lraS9CYXNoXyUyOFVuaXhfc2hlbGwlMjkpIGFuZCBbUHl0aG9uXShodHRwczovL2Vu Lndpa2lwZWRpYS5vcmcvd2lraS9QeXRob25fKHByb2dyYW1taW5nX2xhbmd1YWdlKSkuCisKK0Zy b20gYzQ2NjkzMDVmMjU2YzRjMTZiYzY4YTM1MzIzOWNiYzhjNWRhZTdiYSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IG92YXJpIDwxNzQ2NTg3MitvdmFyaUB1c2Vycy5ub3JlcGx5Lmdp dGh1Yi5jb20+CitEYXRlOiBGcmksIDI0IEp1bCAyMDIwIDE5OjUwOjMxICsxMDAwCitTdWJqZWN0 OiBbUEFUQ0ggMTAvMzddIFVwZGF0ZSBSRUFETUUubWQKKworLS0tCisgUkVBRE1FLm1kIHwgMiAr LQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZm IC0tZ2l0IGEvUkVBRE1FLm1kIGIvUkVBRE1FLm1kCitpbmRleCAwZDY0YTU5NjIuLjU3ZmFkZmJi NiAxMDA2NDQKKy0tLSBhL1JFQURNRS5tZAorKysrIGIvUkVBRE1FLm1kCitAQCAtMjYsNyArMjYs NyBAQCBGZXcgZ2FtZXMgYXJlIGNvbXBhdGlibGUgd2l0aCBHTlUvTGludXggYXQgdGhlIG1vbWVu dCBhbmQgaXQgY2VydGFpbmx5IGlzIGEgZmFjdAorIEhlcmUgaXMgYSBub24tZXhoYXVzdGl2ZSBs aXN0IG9mIHRoZSBpbnRlcmVzdGluZyBwb2ludHMgdG8ga25vdzoKKyAqIFlvdSBkb27igJl0IGhh dmUgdG8gb3duIGEgW01pY3Jvc29mdCBXaW5kb3dzXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcv d2lraS9NaWNyb3NvZnRfV2luZG93cykgbGljZW5zZSB0byB1c2UgUGxheU9uTGludXguCisgKiBQ bGF5T25MaW51eCBpcyBiYXNlZCBvbiBbV2luZV0oaHR0cHM6Ly93d3cud2luZWhxLm9yZy8pLCBh bmQgc28gcHJvZml0cyBmcm9tIGFsbCBpdHMgZmVhdHVyZXMgeWV0IGl0IGtlZXBzIHRoZSB1c2Vy IGZyb20gaGF2aW5nIHRvIGRlYWwgd2l0aCBpdHMgY29tcGxleGl0eS4KKy0qIFBsYXlPbkxpbnV4 IGlzIGZyZWUgc29mdHdhcmUuCisrKiBQbGF5T25MaW51eCBpcyBbZnJlZSBzb2Z0d2FyZV0oaHR0 cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvRnJlZV9zb2Z0d2FyZSkuCisgKiBQbGF5T25MaW51 eCB1c2VzIFtCYXNoXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CYXNoXyUyOFVuaXhf c2hlbGwlMjkpIGFuZCBbUHl0aG9uXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9QeXRo b25fKHByb2dyYW1taW5nX2xhbmd1YWdlKSkuCisgCisgTmV2ZXJ0aGVsZXNzLCBQbGF5T25MaW51 eCBoYXMgc29tZSBidWdzLCBhcyBldmVyeSBwaWVjZSBvZiBzb2Z0d2FyZToKKworRnJvbSBhNmNj MjNkNDMzNzVmY2EwZTI4ZTkwMGExMTBkMTk1YmUyNTFlZTIwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogb3ZhcmkgPDE3NDY1ODcyK292YXJpQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNv bT4KK0RhdGU6IEZyaSwgMjQgSnVsIDIwMjAgMjA6MTI6MzYgKzEwMDAKK1N1YmplY3Q6IFtQQVRD SCAxMS8zN10gVXBkYXRlIFJFQURNRS5tZAorCistLS0KKyBSRUFETUUubWQgfCAyICstCisgMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQg YS9SRUFETUUubWQgYi9SRUFETUUubWQKK2luZGV4IDU3ZmFkZmJiNi4uMGZlNzlmM2ZhIDEwMDY0 NAorLS0tIGEvUkVBRE1FLm1kCisrKysgYi9SRUFETUUubWQKK0BAIC03LDcgKzcsNyBAQCBQbGF5 T25MaW51eCBhbmQgUGxheU9uTWFjIDQgYWxsb3dzIHlvdSB0byBpbnN0YWxsIGFuZCB1c2Ugbm9u LW5hdGl2ZSBhcHBsaWNhdGlvbgorIFN1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczoKKyAKKyAq IFtHTlUvTGludXhdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpbnV4KQorLSogW21h Y09TXShodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9BcHBsZV9NYWNpbnRvc2hfT1NfWCkK KysqIFttYWNPU10oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWFjT1MpCisgCisgU3Vw cG9ydGVkIGVuZ2luZXM6CisgCisKK0Zyb20gMDhlODdlZDBhNzhiMGM3NzQzOTM1Y2QzOWIzNTVk YjMwMzE1NzM1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IG92YXJpIDwxNzQ2NTg3 MitvdmFyaUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBTYXQsIDI1IEp1bCAyMDIw IDE4OjMxOjEwICsxMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMzddIFVwZGF0ZSBSRUFETUUubWQK KworLS0tCisgUkVBRE1FLm1kIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2Vy dGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9SRUFETUUubWQgYi9SRUFE TUUubWQKK2luZGV4IDBmZTc5ZjNmYS4uM2QwMGU2NWMxIDEwMDY0NAorLS0tIGEvUkVBRE1FLm1k CisrKysgYi9SRUFETUUubWQKK0BAIC02LDggKzYsOCBAQCBQbGF5T25MaW51eCBhbmQgUGxheU9u TWFjIDQgYWxsb3dzIHlvdSB0byBpbnN0YWxsIGFuZCB1c2Ugbm9uLW5hdGl2ZSBhcHBsaWNhdGlv bgorIAorIFN1cHBvcnRlZCBvcGVyYXRpbmcgc3lzdGVtczoKKyAKKy0qIFtHTlUvTGludXhdKGh0 dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xpbnV4KQorLSogW21hY09TXShodHRwczovL2Vu Lndpa2lwZWRpYS5vcmcvd2lraS9NYWNPUykKKysqIEdOVS9MaW51eAorKyogbWFjT1MKKyAKKyBT dXBwb3J0ZWQgZW5naW5lczoKKyAKK0BAIC0yNCwxMCArMjQsMTAgQEAgRmV3IGdhbWVzIGFyZSBj b21wYXRpYmxlIHdpdGggR05VL0xpbnV4IGF0IHRoZSBtb21lbnQgYW5kIGl0IGNlcnRhaW5seSBp cyBhIGZhY3QKKyAjIFdoYXQgYXJlIFBsYXlPbkxpbnV44oCZcyBmZWF0dXJlcz8KKyAKKyBIZXJl IGlzIGEgbm9uLWV4aGF1c3RpdmUgbGlzdCBvZiB0aGUgaW50ZXJlc3RpbmcgcG9pbnRzIHRvIGtu b3c6CistKiBZb3UgZG9u4oCZdCBoYXZlIHRvIG93biBhIFtNaWNyb3NvZnQgV2luZG93c10oaHR0 cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTWljcm9zb2Z0X1dpbmRvd3MpIGxpY2Vuc2UgdG8g dXNlIFBsYXlPbkxpbnV4LgorKyogWW91IGRvbuKAmXQgaGF2ZSB0byBvd24gYSBNaWNyb3NvZnQg V2luZG93cyBsaWNlbnNlIHRvIHVzZSBQbGF5T25MaW51eC4KKyAqIFBsYXlPbkxpbnV4IGlzIGJh c2VkIG9uIFtXaW5lXShodHRwczovL3d3dy53aW5laHEub3JnLyksIGFuZCBzbyBwcm9maXRzIGZy b20gYWxsIGl0cyBmZWF0dXJlcyB5ZXQgaXQga2VlcHMgdGhlIHVzZXIgZnJvbSBoYXZpbmcgdG8g ZGVhbCB3aXRoIGl0cyBjb21wbGV4aXR5LgorICogUGxheU9uTGludXggaXMgW2ZyZWUgc29mdHdh cmVdKGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWVfc29mdHdhcmUpLgorLSogUGxh eU9uTGludXggdXNlcyBbQmFzaF0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzaF8l MjhVbml4X3NoZWxsJTI5KSBhbmQgW1B5dGhvbl0oaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dp a2kvUHl0aG9uXyhwcm9ncmFtbWluZ19sYW5ndWFnZSkpLgorKyogUGxheU9uTGludXggdXNlcyBC YXNoIGFuZCBQeXRob24uCisgCisgTmV2ZXJ0aGVsZXNzLCBQbGF5T25MaW51eCBoYXMgc29tZSBi dWdzLCBhcyBldmVyeSBwaWVjZSBvZiBzb2Z0d2FyZToKKyAqIE9jY2FzaW9uYWwgcGVyZm9ybWFu Y2UgZGVjcmVhc2UgKGltYWdlIG1heSBiZSBsZXNzIGZsdWlkIGFuZCBncmFwaGljcyBsZXNzIGRl dGFpbGVkKS4KKworRnJvbSAyYmY5ZWQyZDMyMWEyNmI0OGRlODNhMTMwNjRmN2I5ZjBkYjBkY2Q3 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogcmF5ZGVydWEgPHJheWRlci51YUBnbWFp bC5jb20+CitEYXRlOiBNb24sIDUgT2N0IDIwMjAgMTc6MTk6NDcgKzAzMDAKK1N1YmplY3Q6IFtQ QVRDSCAxMy8zN10gZml4IHNwbGl0IHZlcnNpb24gdG8gZmlyc3QgMyBlbGVtZW50cworCitWYWx1 ZUVycm9yOiBpbnZhbGlkIGxpdGVyYWwgZm9yIGludCgpIHdpdGggYmFzZSAxMDogJ3Bvc3QyJwor CitWZXJzaW9ucyBjYW4gY29udGFpbiBub3Qgb25seSBkaWdpdHMgKGZvciBleGFtcGxlIHd4IHJl bGVhc2VzOiA0LjAuNywgNC4wLjcucG9zdDEsIDQuMC43LnBvc3QyLCA0LjEuMCkKKy0tLQorIHB5 dGhvbi9saWIvcGxheW9ubGludXgucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9wbGF5 b25saW51eC5weSBiL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKK2luZGV4IDgyN2RiOTIwMi4u M2U4N2Q5MGFhIDEwMDc1NQorLS0tIGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQorKysrIGIv cHl0aG9uL2xpYi9wbGF5b25saW51eC5weQorQEAgLTI3OCwxMSArMjc4LDExIEBAIGRlZiBWZXJz aW9uTG93ZXIodmVyc2lvbjEsIHZlcnNpb24yKToKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAg ICAgcmV0dXJuIEZhbHNlCisgCistICAgIHZlcnNpb24xID0gWyBpbnQoZGlnaXQpIGZvciBkaWdp dCBpbiB2ZXJzaW9uMVswXS5zcGxpdCgiLiIpIF0KKysgICAgdmVyc2lvbjEgPSBbIGludChkaWdp dCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBdLnNwbGl0KCIuIilbOjNdIF0KKyAgICAgd2hpbGUg bGVuKHZlcnNpb24xKSA8IDM6CisgICAgICAgICB2ZXJzaW9uMS5hcHBlbmQoMCkKKyAKKy0gICAg dmVyc2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24yWzBdLnNwbGl0KCIu IikgXQorKyAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJb MF0uc3BsaXQoIi4iKVs6M10gXQorICAgICB3aGlsZSBsZW4odmVyc2lvbjIpIDwgMzoKKyAgICAg ICAgIHZlcnNpb24yLmFwcGVuZCgwKQorIAorCitGcm9tIDZhOWJmYWExZGM0ZjUzN2YyZWUwM2I5 YWM5OWFkZjZmZThmMmYwNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc0I4 NSA8a3J6eXN6dG9mLmJsYWNob3dpY3pAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyMCBPY3QgMjAy MCAxODoxMDozNCArMDIwMAorU3ViamVjdDogW1BBVENIIDE0LzM3XSBQb2xpc2ggdHJhbnNsYXRp b25zCisKKy0tLQorIGxhbmcvcG8vcGwucG8gfCAxMDkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNjcgaW5zZXJ0aW9u cygrKSwgNDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sYW5nL3BvL3BsLnBvIGIvbGFu Zy9wby9wbC5wbworaW5kZXggYWU2OWY0OTdlLi5mMDQ3YjViNDQgMTAwNjQ0CistLS0gYS9sYW5n L3BvL3BsLnBvCisrKysgYi9sYW5nL3BvL3BsLnBvCitAQCAtMTEsMjIgKzExLDIyIEBAIG1zZ3N0 ciAiIgorICJQcm9qZWN0LUlkLVZlcnNpb246IHBvbFxuIgorICJSZXBvcnQtTXNnaWQtQnVncy1U bzogVGlub3VcbiIKKyAiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTUtMDgtMzEgMTk6MDArMDIwMFxu IgorLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDE0LTA0LTIzIDEzOjM1KzAwMDBcbiIKKysiUE8tUmV2 aXNpb24tRGF0ZTogMjAyMC0xMC0yMCAxODowOSswMjAwXG4iCisgIkxhc3QtVHJhbnNsYXRvcjog QWRhbSBNYcSHa293aWFrIDxVbmtub3duPlxuIgorICJMYW5ndWFnZS1UZWFtOiBwbF9QTC5VVEYt OCA8TExAbGkub3JnPlxuIgorICJNSU1FLVZlcnNpb246IDEuMFxuIgorICJDb250ZW50LVR5cGU6 IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLThcbiIKKyAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGlu ZzogOGJpdFxuIgorICJYLUxhdW5jaHBhZC1FeHBvcnQtRGF0ZTogMjAxNS0wOS0wMSAwNToxMisw MDAwXG4iCistIlgtR2VuZXJhdG9yOiBMYXVuY2hwYWQgKGJ1aWxkIDE3NjkwKVxuIgorKyJYLUdl bmVyYXRvcjogUG9lZGl0IDIuM1xuIgorKyJMYW5ndWFnZTogcGxcbiIKKyAKKyAjOiBDYXB0dXJl IHBsdWdpbjoyLCBEZXRvdXIgcGx1Z2luOjQKKyBtc2dpZCAiV2hpY2ggYXBwbGljYXRpb24gZG8g eW91IHdhbnQgdG8gYXBwbHkgdGhlIG1vZGlmaWNhdGlvbiB0bz8iCisgbXNnc3RyICJEbyBqYWtp ZWogYXBsaWthY2ppIGNoY2VzeiB3eWtvbmHEhyBtb2R5ZmlrYWNqZT8iCisgCisgIzogQ2FwdHVy ZSBwbHVnaW46MworLW1zZ2lkICIiCistIlRoaXMgcGx1Z2luIHdpbCBhbGxvdyB5b3UgdG8gY2Fw dHVyZSB5b3UgYXBwbGljYXRpb25zIHVuZGVyIFBsYXlPbkxpbnV4IgorK21zZ2lkICJUaGlzIHBs dWdpbiB3aWwgYWxsb3cgeW91IHRvIGNhcHR1cmUgeW91IGFwcGxpY2F0aW9ucyB1bmRlciBQbGF5 T25MaW51eCIKKyBtc2dzdHIgIld0eWN6a2EgdW1vxbxsaXdpYSBwcnplY2h3eXR5d2FuaWUgb2Jy YXp1IHogYXBsaWthY2ppIHBvZCBQbGF5T25MaW51eCIKKyAKKyAjOiBDYXB0dXJlIHBsdWdpbjo0 CitAQCAtNTYsOCArNTYsOCBAQCBtc2dpZCAiIgorICJzdGFydCBhdXRvbWF0aWNhbGx5IGFmdGVy IDUgc2Vjb25kcy5cXG5Pbmx5IHZpZGVvIHdpbGwgYmUgY2FwdHVyZWQuIgorIG1zZ3N0ciAiIgor ICJQcm9zesSZIHdjaXNuxIXEhyBEYWxlaiwgbmFzdMSZcG5pZSBrbGlrbsSFxIdcXG53IG9rbm8g cHJvZ3JhbXUsIGt0w7NyZSBjaGNlc3ogIgorLSJwcnplY2h3eWNpxIcuXFxuTmFncnl3YW5pZSBy b3pwb2N6bmllIHNpxJkgYXV0b21hdHljem5pZSBwbyA1IHNla3VuZGFjaC5cXCIKKy0ibk5hZ3Jh bnkgem9zdGFuaWUgd3nFgsSFY3puaWUgb2JyYXouIgorKyJwcnplY2h3eWNpxIcuXFxuTmFncnl3 YW5pZSByb3pwb2N6bmllIHNpxJkgYXV0b21hdHljem5pZSBwbyA1IHNla3VuZGFjaC4iCisrIlxc bk5hZ3Jhbnkgem9zdGFuaWUgd3nFgsSFY3puaWUgb2JyYXouIgorIAorICM6IENhcHR1cmUgcGx1 Z2luOjEwCisgbXNnaWQgIkNhcHR1cmUgd2lsbCBiZWdpbi4uLiIKK0BAIC0zMDksNyArMzA5LDcg QEAgbXNnc3RyICJEb2vFgmFkbnkgb3BpcyBqZXN0IHd5bWFnYW55LiIKKyAjOiBiYXNoL2J1Z19y ZXBvcnQ6MTAxCisgIywgc2gtZm9ybWF0CisgbXNnaWQgIlRoYW5rIHlvdSAhXFxuXFxuWW91ciBy ZXBvcnQgaGFzIGJlZW4gc2VudC4iCistbXNnc3RyICIiCisrbXNnc3RyICJEemnEmWt1amVteSAh XFxuXFxuVHdvamUgemfFgm9zemVuaWUgem9zdGHFgm8gd3lzxYJhbmUuIgorIAorICM6IGJhc2gv Y3JlYXRlX3ByZWZpeDoyNgorICMsIHNoLWZvcm1hdAorQEAgLTQ1OCw2ICs0NTgsOSBAQCBtc2dp ZCAiIgorICJhbGwgdGhlIHRvb2xzXFxuXFxuV2FybmluZzogV2UgYXJlIHVuYWJsZSB0byBndWFy YW50ZWUgdGhhdCB5b3VyIGFwcGxpY2F0aW9uICIKKyAid2lsbCB3b3JrIHBlcmZlY3RseS4iCisg bXNnc3RyICIiCisrIldpdGFteSB3IGtyZWF0b3J6ZSBpbnN0YWxhY2ppIHLEmWN6bmVqICRBUFBM SUNBVElPTl9USVRMRS5cXG5cXG5LcmVhdG9yIHRlbiAiCisrInBvendvbGkgQ2kgemFpbnN0YWxv d2HEhyBrYcW8ZHkgcHJvZ3JhbSB3ICRBUFBMSUNBVElPTl9USVRMRVxcblxcblV3YWdhOiBOaWUg IgorKyJtb8W8ZW15IHphZ3dhcmFudG93YcSHLCDFvGUgdHdvamEgYXBsaWthY2phIGLEmWR6aWUg ZHppYcWCYcSHIHBvcHJhd25pZS4iCisgCisgIzogYmFzaC9tYW51YWxfaW5zdGFsbDoxMDIKKyAj LCBzaC1mb3JtYXQKK0BAIC03MDcsOCArNzEwLDggQEAgbXNnaWQgIiIKKyAidG9vbCBPTkxZIGlm IHlvdSBDRC1ST00gaXMgYSBoeWJyaWRlIENELVJPTSAoQ29tcGF0aWJsZSB3aXRoIFdpbmRvd3Mg YW5kICIKKyAiTWFjT1MpLCBhbmQgaWYgeW91IGFyZSBub3QgYWJsZSB0byBzZWUgdGhlIFdpbmRv d3MgcGFydCIKKyBtc2dzdHIgIiIKKy0iRHppxJlraSB0ZW11IG5hcnrEmWR6aSB0d8OzaiBNYWMg YsSZZHppZSB3IHN0YW5pZSBwcnplY3p5dGHEhyBjesSZxZvEhyBDRC1ST011XFwiCistIm5wcnpl em5hY3pvbmVnbyBkbGEga29tcHV0ZXLDs3cgUEMuXFxuXFxuVcW8eWogdGVnbyBuYXJ6xJlkemlh IFRZTEtPIGplxbxlbGkgIgorKyJEemnEmWtpIHRlbXUgbmFyesSZZHppIHR3w7NqIE1hYyBixJlk emllIHcgc3RhbmllIHByemVjenl0YcSHIGN6xJnFm8SHIENELVJPTXUiCisrIlxcbnByemV6bmFj em9uZWdvIGRsYSBrb21wdXRlcsOzdyBQQy5cXG5cXG5Vxbx5aiB0ZWdvIG5hcnrEmWR6aWEgVFlM S08gamXFvGVsaSAiCisgInBvc2lhZGFzeiBoeWJyeWRvd3kgQ0QtUk9NIChrb21wYXR5Ymlsbnkg eiBXaW5kb3dzIGkgTWFjT1MpXFxuaSB0eWxrbyB3dGVkeSAiCisgImdkeSBuaWUgamVzdGXFmyB3 IHN0YW5pZSB6b2JhY3p5xIcgY3rEmcWbY2kgZGxhIFdpbmRvd3NhLiIKKyAKK0BAIC03NjIsMTYg Kzc2NSwxOCBAQCBtc2dpZCAiIgorICIkUEFDS0FHRSBjcmFzaGVkLlxcblNlbGVjdCBpdHMgc2hv cnRjdXQgYW5kIGNsaWNrIG9uIFwiRGVidWdcIiBpbiB0aGUgc2lkZSAiCisgInBhbmVsIHRvIGdl dCBtb3JlIGRldGFpbHMuIgorIG1zZ3N0ciAiIgorKyIkUEFDS0FHRSB1bGVnxYIgYXdhcmlpLlxc blphem5hY3ogamVnbyBza3LDs3QgaSBrbGlrbmlqIFwiRGVidWd1alwiIHcgcGFuZWx1ICIKKysi Ym9jem55bSBhYnkgcG96bmHEhyBzemN6ZWfDs8WCeS4iCisgCisgIzogYmFzaC9ydW5fYXBwOjEy MAorICMsIHNoLWZvcm1hdAorIG1zZ2lkICIkUEFDS0FHRSBjcmFzaGVkLiIKKy1tc2dzdHIgIiRQ QUNLQUdFIHphd2llc2nFgiBzacSZLiIKKyttc2dzdHIgIiRQQUNLQUdFIHVsZWfFgiBhd2FyaWku IgorIAorICM6IGJhc2gvcnVuX2V4ZTozMworICMsIHNoLWZvcm1hdAorIG1zZ2lkICJXYWl0aW5n IFhRdWFydHogdG8gYmUgaW5zdGFsbGVkIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiT2N6ZWtpd2Fu aWUgbmEgaW5zdGFsYWNqxJkgWFF1YXJ0eiIKKyAKKyAjOiBiYXNoL3J1bl9leGU6NzAKKyAjLCBz aC1mb3JtYXQKK0BAIC04MTUsMTIgKzgyMCwxMiBAQCBtc2dzdHIgIkluc3RhbGFjamEgemFrb8WE Y3pvbmEiCisgIzogYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlcjozOAorICMsIHNoLWZvcm1hdAor IG1zZ2lkICJQbGF5T25NYWMgbmVlZHMgdG8gaW5zdGFsbCBYUXVhcnR6IHRvIHdvcmsgcHJvcGVy bHkuIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiUGxheU9uTWFjIHd5bWFnYSB6YWluc3RhbG93YW5p YSBYUXVhcnR6IGRvIHBvcHJhd25lZ28gZHppYcWCYW5pYS4iCisgCisgIzogYmFzaC9zdGFydHVw X2FmdGVyX3NlcnZlcjozOQorICMsIHNoLWZvcm1hdAorIG1zZ2lkICJQbGF5T25NYWMgd2lsbCBo ZWxwIHlvdSB0byBzaW1wbGlmeSB0aGlzIHN0ZXAiCistbXNnc3RyICIiCisrbXNnc3RyICJQbGF5 T25NYWMgcG9tb8W8ZSBjaSB1cHJvxZtjacSHIHRlbiBrcm9rIgorIAorICM6IGJhc2gvc3RhcnR1 cF9hZnRlcl9zZXJ2ZXI6NDIKKyAjLCBzaC1mb3JtYXQKK0BAIC04NjEsNiArODY2LDggQEAgbXNn c3RyICJYUXVhcnR6IHpvc3RhxYIgemFpbnN0YWxvd2FueS4iCisgIywgc2gtZm9ybWF0CisgbXNn aWQgIlVuYWJsZSB0byBpbnN0YWxsIFhRdWFydHohIFlvdSBtdXN0IGluc3RhbGwgaXQgdG8gdXNl IHdpbmUgcHJvcGVybHkuIgorIG1zZ3N0ciAiIgorKyJOaWUgdWRhxYJvIHNpxJkgemFpbnN0YWxv d2HEhyBYUXVhcnR6ISBKZXN0IG9uIHd5bWFnYW55IGRvIHBvcHJhd25lZ28gZHppYcWCYW5pYSAi CisrIldpbmUuIgorIAorICM6IGJhc2gvdW5pbnN0YWxsOjMxIGJhc2gvdW5pbnN0YWxsOjY1IGJh c2gvdW5pbnN0YWxsOjY4IGJhc2gvdW5pbnN0YWxsOjc1CisgIzogbGliL3dpbmUubGliOjg2Nwor QEAgLTkzMywxMiArOTQwLDEyIEBAIG1zZ3N0ciAiIgorICMsIHNoLWZvcm1hdAorIG1zZ2lkICIi CisgIiRBUFBMSUNBVElPTl9USVRMRSBoYXMgZW5jb3VudGVyZWQgYW4gZXJyb3IuIElmIHRoZSBw cm9ncmFtIHlvdSBhcmUgIgorLSJpbnN0YWxsaW5nIGRvZXMgbm90IHdvcmsgY29ycmVjdGx5LCBp dCBtaWdodCBiZSB0aGUgY2F1c2Ugb2YgdGhlIHByb2JsZW0uXFwiCistIm5WaXNpdCB3d3cuJFBP TF9ETlMgdG8gZ2V0IGZ1cnRoZXIgaW5mb3JtYXRpb24iCisrImluc3RhbGxpbmcgZG9lcyBub3Qg d29yayBjb3JyZWN0bHksIGl0IG1pZ2h0IGJlIHRoZSBjYXVzZSBvZiB0aGUgcHJvYmxlbS4iCisr IlxcblZpc2l0IHd3dy4kUE9MX0ROUyB0byBnZXQgZnVydGhlciBpbmZvcm1hdGlvbiIKKyBtc2dz dHIgIiIKKyAiJEFQUExJQ0FUSU9OX1RJVExFIG5hcG90a2HFgiBuYSBixYLEhWQuIEplxZtsaSBw cm9ncmFtLCBrdMOzcnkgamVzdCBpbnN0YWxvd2FueSAiCistIm5pZSBkemlhxYJhIHByYXdpZMWC b3dvLCB0byBtb8W8ZSBiecSHIHByenljenluxIUgcHJvYmxlbXUuXFxuIE9kd2llZMW6ICIKKy0i d3d3LiRQT0xfRE5TIHcgY2VsdSB1enlza2FuaWEgZGFsc3p5Y2ggaW5mb3JtYWNqaSIKKysibmll IGR6aWHFgmEgcHJhd2lkxYJvd28sIHRvIG1vxbxlIGJ5xIcgcHJ6eWN6eW7EhSBwcm9ibGVtdS5c XG4gT2R3aWVkxbogd3d3LiIKKysiJFBPTF9ETlMgdyBjZWx1IHV6eXNrYW5pYSBkYWxzenljaCBp bmZvcm1hY2ppIgorIAorICM6IGxpYi9kZWJ1Zy5saWI6MTU1CisgIywgc2gtZm9ybWF0CitAQCAt OTgwLDkgKzk4Nyw5IEBAIG1zZ2lkICIiCisgInZhbGlkXFxuXFxuUGxheU9uTGludXggaGFzIG5v dCBhcHByb3ZlZCB0aGlzIHNjcmlwdCBhbmQgd2lsbCBub3QgYmUgIgorICJyZXNwb25zaWJsZSBm cm9tIGl0LlxcblBsZWFzZSBlbnN1cmUgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nICEiCisg bXNnc3RyICIiCistIk9zdHJ6ZcW8ZW5pZSFcXG5cXG5TeWduYXR1cmEgdGVnbyBza3J5cHR1IE5J RSBqZXN0IHByYXdpZMWCb3dhXFxuXFwiCistIm5QbGF5T25MaW51eCBuaWUgemFha2NlcHRvd2HF giB0ZWdvIHNrcnlwdHUgbmllIGLEmWR6aWUgb2Rwb3dpZWR6aWFsbnkgemEgamVnbyAiCistImLF gsSZZG5lIGR6aWHFgmFuaWUuXFxuS29udHludXVqIHR5bGtvIGplxZtsaSB3aWVzeiBjbyByb2Jp c3ouIgorKyJPc3RyemXFvGVuaWUhXFxuXFxuU3lnbmF0dXJhIHRlZ28gc2tyeXB0dSBOSUUgamVz dCBwcmF3aWTFgm93YVxcbiIKKysiXFxuUGxheU9uTGludXggbmllIHphYWtjZXB0b3dhxYIgdGVn byBza3J5cHR1IG5pZSBixJlkemllIG9kcG93aWVkemlhbG55IHphICIKKysiamVnbyBixYLEmWRu ZSBkemlhxYJhbmllLlxcbktvbnR5bnV1aiB0eWxrbyBqZcWbbGkgd2llc3ogY28gcm9iaXN6LiIK KyAKKyAjOiBsaWIvcGxheW9ubGludXgubGliOjM0OSBsaWIvcGxheW9ubGludXgubGliOjM3Mgor ICMsIHNoLWZvcm1hdAorQEAgLTk5Niw4ICsxMDAzLDggQEAgbXNnaWQgIiIKKyAidmFsaWRcXG5c XG4kQVBQTElDQVRJT05fVElUTEUgaGFzIG5vdCBhcHByb3ZlZCB0aGlzIHNjcmlwdCBhbmQgd2ls bCBub3QgYmUgIgorICJyZXNwb25zaWJsZSBmcm9tIGl0LlxcblBsZWFzZSBlbnN1cmUgeW91IGtu b3cgd2hhdCB5b3UgYXJlIGRvaW5nISIKKyBtc2dzdHIgIiIKKy0iT3N0cnplxbxlbmllIVxcblxc blN5Z25hdHVyYSB0ZWdvIHNrcnlwdHUgTklFIGplc3QgcHJhd2lkxYJvd2FcXG5cXCIKKy0ibiRB UFBMSUNBVElPTl9USVRMRSBuaWUgemFha2NlcHRvd2HFgiB0ZWdvIHNrcnlwdHUgbmllIGLEmWR6 aWUgb2Rwb3dpZWR6aWFsbnkgIgorKyJPc3RyemXFvGVuaWUhXFxuXFxuU3lnbmF0dXJhIHRlZ28g c2tyeXB0dSBOSUUgamVzdCBwcmF3aWTFgm93YVxcblxcbiIKKysiJEFQUExJQ0FUSU9OX1RJVExF IG5pZSB6YWFrY2VwdG93YcWCIHRlZ28gc2tyeXB0dSBuaWUgYsSZZHppZSBvZHBvd2llZHppYWxu eSAiCisgInphIGplZ28gYsWCxJlkbmUgZHppYcWCYW5pZS5cXG5Lb250eW51dWogdHlsa28gamXF m2xpIHdpZXN6IGNvIHJvYmlzei4iCisgCisgIzogbGliL3BsYXlvbmxpbnV4LmxpYjozNzIKK0BA IC0xMDU0LDkgKzEwNjEsMTEgQEAgbXNnc3RyICIiCisgIzogbGliL3BsYXlvbmxpbnV4LmxpYjo5 MTMKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiIgorLSJZb3VyIExpbnV4IGtlcm5lbCBtYXkgbm90 IGJlIGNvbmZpZ3VyZWQgdG8gcnVuIFdpbjE2IHByb2dyYW1zIHVuZGVyIFdpbmVcXCIKKy0iblNl ZSAkRVhQTEFOQVRJT05fVVJMIgorKyJZb3VyIExpbnV4IGtlcm5lbCBtYXkgbm90IGJlIGNvbmZp Z3VyZWQgdG8gcnVuIFdpbjE2IHByb2dyYW1zIHVuZGVyIFdpbmUiCisrIlxcblNlZSAkRVhQTEFO QVRJT05fVVJMIgorIG1zZ3N0ciAiIgorKyJKxIVkcm8gdHdvamVnbyBsaW51a3NhIG1vxbxlIG5p ZSBiecSHIHNrb25maWd1cm93YW5lIGRvIHVydWNoYW1pYW5pYSBwcm9ncmFtw7N3ICIKKysiV2lu MTYgdyBXaW5lXFxuU2VlICRFWFBMQU5BVElPTl9VUkwiCisgCisgIzogbGliL3BsYXlvbmxpbnV4 LmxpYjo5MTYKKyAjLCBzaC1mb3JtYXQKK0BAIC0xMDY0LDYgKzEwNzMsOCBAQCBtc2dpZCAiIgor ICJZb3VyIGtlcm5lbCBtYXkgYmUgaW5jb21wYXRpYmxlIHdpdGggcnVubmluZyBXaW4xNiBwcm9n cmFtcyB1bmRlciBXaW5lXFxuU2VlICIKKyAiJEVYUExBTkFUSU9OX1VSTCIKKyBtc2dzdHIgIiIK KysiSsSFZHJvIHR3b2plZ28gbGludWtzYSBtb8W8ZSBiecSHIG5pZWtvbXBhdHliaWxuZSB6IGFw bGlrYWNqYW1pIFdpbjE2ICIKKysidXJ1Y2hhbWlhbnltaSB3IFdpbmVcXG5TZWUgJEVYUExBTkFU SU9OX1VSTCIKKyAKKyAjOiBsaWIvcGx1Z2lucy5saWI6NjMKKyAjLCBzaC1mb3JtYXQKK0BAIC0x MTMxLDcgKzExNDIsNyBAQCBtc2dzdHIgIiIKKyAjOiBsaWIvc2NyaXB0cy5saWI6Njk2IGxpYi9z Y3JpcHRzLmxpYjo3MDQKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiUGxlYXNlIHdhaXQgd2hpbGUg JEFQUExJQ0FUSU9OX1RJVExFIGlzIGhhbmRsaW5nIGFyY2hpdmUuLi4iCistbXNnc3RyICIiCisr bXNnc3RyICJQcm9zesSZIGN6ZWthxIcsICRBUFBMSUNBVElPTl9USVRMRSB3eXBha293dWplIGFy Y2hpd3VtLi4uIgorIAorICM6IGxpYi9zY3JpcHRzLmxpYjo3MjcKKyAjLCBzaC1mb3JtYXQKK0BA IC0xMTY5LDExICsxMTgwLDExIEBAIG1zZ3N0ciAiUm96bWlhciBwbGlrdSBuaWUgemdhZHphIHNp xJkhIgorICM6IGxpYi9zY3JpcHRzLmxpYjo5NTUKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiIgor LSJTb3JyeSwgJEFQUExJQ0FUSU9OX1RJVExFICRWRVJTSU9OIGlzIHRvbyBvbGQgdG8gY29udGlu dWUuXFwiCistIm4kQVBQTElDQVRJT05fVElUTEUgJE5FRURFRCBpcyByZXF1aXJlZC4iCisrIlNv cnJ5LCAkQVBQTElDQVRJT05fVElUTEUgJFZFUlNJT04gaXMgdG9vIG9sZCB0byBjb250aW51ZS5c XG4iCisrIiRBUFBMSUNBVElPTl9USVRMRSAkTkVFREVEIGlzIHJlcXVpcmVkLiIKKyBtc2dzdHIg IiIKKy0iJEFQUExJQ0FUSU9OX1RJVExFICRWRVJTSU9OIGplc3QgemJ5dCBzdGFyeSBhYnkga29u dHludW93YcSHLlxcIgorLSJuJEFQUExJQ0FUSU9OX1RJVExFICRORUVERUQgamVzdCB3eW1hZ2Fu eS4iCisrIiRBUFBMSUNBVElPTl9USVRMRSAkVkVSU0lPTiBqZXN0IHpieXQgc3RhcnkgYWJ5IGtv bnR5bnVvd2HEhy5cXG4iCisrIiRBUFBMSUNBVElPTl9USVRMRSAkTkVFREVEIGplc3Qgd3ltYWdh bnkuIgorIAorICM6IGxpYi9zY3JpcHRzLmxpYjo5NzAKKyAjLCBzaC1mb3JtYXQKK0BAIC0xMjg1 LDcgKzEyOTYsNyBAQCBtc2dzdHIgIld5c3p1a2l3YW5pZSB3aXJ0dWFsbmVnbyBkeXNrdSB0d2Fy ZGVnby4uLiIKKyAjOiBsaWIvc2V0dXB3aW5kb3cubGliOjU4MgorICMsIHNoLWZvcm1hdAorIG1z Z2lkICJIb3cgbXVjaCBtZW1vcnkgKGluIE1CKSBkb2VzIHlvdXIgZ3JhcGhpY3MgYm9hcmQgaGF2 ZT8iCistbXNnc3RyICIiCisrbXNnc3RyICJJbGUgcGFtacSZY2kgKHcgTUIpIHBvc2lhZGEgdHdv amEga2FydGEgZ3JhZmljem5hPyIKKyAKKyAjOiBsaWIvc2V0dXB3aW5kb3cubGliOjU5MQorICMs IHNoLWZvcm1hdAorQEAgLTEzNjksNyArMTM4MCw3IEBAIG1zZ3N0ciAiUHJ6ZWdsxIVkYWoiCisg IzogbGliL3NldHVwd2luZG93LmxpYjo3NjMKKyAjLCBzaC1mb3JtYXQKKyBtc2dpZCAiQSBzaG9y dGN1dCBieSB0aGF0IG5hbWUgYWxyZWFkeSBleGlzdHMsIG92ZXJ3cml0ZT8iCistbXNnc3RyICIi CisrbXNnc3RyICJTa3LDs3QgbyB0ZWogbmF6d2llIGp1xbwgaXN0bmllamUsIHphc3TEhXBpxIcg Z28/IgorIAorICM6IGxpYi93ZWJzaXRlLmxpYjoyOQorICMsIHNoLWZvcm1hdAorQEAgLTE0MDMs NiArMTQxNCw4IEBAIG1zZ3N0ciAiV3liaWVyeiBnxYLDs3duxIUga2FydMSZIGdyYWZpY3puxIUg a3TDs3LEhSB3aW5lIG1hIHpnxYJhc3phxIcgZ3JvbSIKKyBtc2dpZCAiIgorICJTdGFydGluZyA2 NC1iaXQgcHJvY2VzcyAkRVhFRklMRSBpcyBub3Qgc3VwcG9ydGVkIGluIDMyLWJpdCB2aXJ0dWFs IGRyaXZlcyIKKyBtc2dzdHIgIiIKKysiVXJ1Y2hhbWlhbmllIHByb2Nlc8OzdyA2NC1iaXRvd3lj aCAkRVhFRklMRSBuaWUgamVzdCBvYnPFgnVnaXdhbmUgdyAzMi0iCisrImJpdG93eWNoIGR5c2th Y2ggd2lydHVhbG55Y2giCisgCisgIzogbGliL3dpbmUubGliOjU3OQorICMsIHNoLWZvcm1hdAor QEAgLTE2MzgsNiArMTY1MSwxMSBAQCBtc2dpZCAiIgorICJXaW5lIHZlcnNpb24gaXMgY2hhbmdl ZC5cbiIKKyAiQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNvbnRpbnVlPyIKKyBtc2dzdHIgIiIK KysiVXdhZ2E6XG4iCisrIlxuIgorKyJLYcW8ZGEgdXJ1Y2hvbWlvbmEgYXBsaWthY2phIHpuYWpk dWrEhWNhIHNpxJkgbmEgdHltIGR5c2t1IHdpcnR1YWxueW0gem9zdGFuaWUgIgorKyJ6YXRyenlt YW5hIHByemVkIHptaWFuxIUgd2Vyc2ppIFdpbmUuXG4iCisrIkN6eSBjaGNlc3oga29udHludW93 YcSHPyIKKyAKKyAjOiBweXRob24vY29uZmlndXJlLnB5OjYwNgorIG1zZ2lkICIiCitAQCAtMTc1 Miw3ICsxNzcwLDcgQEAgbXNnc3RyICJaZ2FkemFtIHNpxJkiCisgCisgIzogcHl0aG9uL2d1aXYz LnB5OjE3OQorIG1zZ2lkICJEb24ndCByZW1pbmQgbWUgYW55bW9yZSIKKy1tc2dzdHIgIiIKKytt c2dzdHIgIk5pZSBwcnp5cG9taW5haiBtaSB3acSZY2VqIgorIAorICM6IHB5dGhvbi9ndWl2My5w eToxODAKKyBtc2dpZCAiU2hvdyB2aXJ0dWFsIGRyaXZlcyIKK0BAIC0xODc1LDcgKzE4OTMsNyBA QCBtc2dzdHIgIiIKKyAKKyAjOiBweXRob24vaW5zdGFsbC5weTo1NzcKKyBtc2dpZCAiQXR0ZW50 aW9uISIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIlV3YWdhISIKKyAKKyAjOiBweXRob24vaW5zdGFs bC5weTo1NzcKKyBtc2dpZCAiIgorQEAgLTE4ODcsNiArMTkwNSwxMyBAQCBtc2dpZCAiIgorICJw aXJhY3kgYW5kIGFzIHN1Y2gsIHdlIHdpbGwgbm90IG9mZmVyIGFueSBzdXBwb3J0IGZvciBpc3N1 ZXMgcmVzdWx0aW5nIGZyb20gIgorICJ1c2luZyB0aGlzIG9wdGlvbi4iCisgbXNnc3RyICIiCisr IlfFgsSFY3phasSFYyB0xJkgb3BjasSZLCBtb8W8ZXN6IGluc3RhbG93YcSHIHByb2dyYW15IHXF vHl3YWrEhWNlIHN5c3RlbXUgemFyesSFZHphbmlhICIKKysicHJhd2FtaSBjeWZyb3d5bWkgKERS TSksIGFsZSBuaWUgc8SFIG9uZSB3c3BpZXJhbmUgcHJ6ZXogezB9IGkgbW9nxIUgd3ltYWdhxIcg IgorKyJvYmVqxZtjaWEuXG4iCisrIlxuIgorKyJGdW5rY2phIHRhIG5pZSBwb3dpbm5hIGJ5xIcg aW50ZXJwcmV0b3dhbmEgamFrbyB1a3J5dGUgbHViIGRvbW5pZW1hbmUgIgorKyJwcnp5endvbGVu aWUgbmEgcGlyYWN0d28gaSBuaWUgYsSZZHppZW15IG9mZXJvd2HEhyDFvGFkbmVnbyB3c3BhcmNp YSB3ICIKKysia3dlc3RpYWNoIHd5bmlrYWrEhWN5Y2ggeiBrb3J6eXN0YW5pYSB6IHRlaiBvcGNq aS4iCisgCisgIzogcHl0aG9uL2luc3RhbGwucHk6NTgwCisgbXNnaWQgIiIKK0BAIC0xOTc2LDIz ICsyMDAxLDIzIEBAIG1zZ3N0ciAiTWVuZWTFvGVyIHd0eWN6ZWsiCisgCisgIzogcHl0aG9uL21h aW53aW5kb3cucHk6Mjk0CisgbXNnaWQgIlN1cHBvcnRlZCBzb2Z0d2FyZSIKKy1tc2dzdHIgIiIK Kyttc2dzdHIgIk9ic8WCdWdpd2FuZSBvcHJvZ3JhbW93YW5pZSIKKyAKKyAjOiBweXRob24vbWFp bndpbmRvdy5weToyOTUKKyBtc2dpZCAiTmV3cyIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIkFrdHVh bG5vxZtjaSIKKyAKKyAjOiBweXRob24vbWFpbndpbmRvdy5weToyOTYKKyBtc2dpZCAiRG9jdW1l bnRhdGlvbiIKKy1tc2dzdHIgIiIKKyttc2dzdHIgIkRva3VtZW50YWNqYSIKKyAKKyAjOiBweXRo b24vbWFpbndpbmRvdy5weToyOTcKKyBtc2dpZCAiRm9ydW1zIgorLW1zZ3N0ciAiIgorK21zZ3N0 ciAiRm9yYSBkeXNrdXN5am5lIgorIAorICM6IHB5dGhvbi9tYWlud2luZG93LnB5OjI5OAorIG1z Z2lkICJCdWdzIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiQsWCxJlkeSIKKyAKKyAjOiBweXRob24v bWFpbndpbmRvdy5weTozMDAKKyBtc2dpZCAiVHdpdHRlciIKK0BAIC0yMDI4LDcgKzIwNTMsNyBA QCBtc2dzdHIgIld0eWN6a2kiCisgCisgIzogcHl0aG9uL21haW53aW5kb3cucHk6MzY5CisgbXNn aWQgIlN1cHBvcnQiCistbXNnc3RyICIiCisrbXNnc3RyICJXc3BhcmNpZSIKKyAKKyAjOiBweXRo b24vbWFpbndpbmRvdy5weTozODEgcHl0aG9uL21haW53aW5kb3cucHk6Nzc3CisgbXNnaWQgIkNs b3NlIgorQEAgLTIwODAsNyArMjEwNSw3IEBAIG1zZ3N0ciAiRGVidWd1aiIKKyAKKyAjOiBweXRo b24vbWFpbndpbmRvdy5weTo3ODUKKyBtc2dpZCAiU2VuZCBhIGZlZWRiYWNrIgorLW1zZ3N0ciAi IgorK21zZ3N0ciAiV3nFm2xpaiB6Z8WCb3N6ZW5pZSIKKyAKKyAjOiBweXRob24vbWFpbndpbmRv dy5weTo3OTAKKyBtc2dpZCAiQ3JlYXRlIGEgc2hvcnRjdXQiCitAQCAtMjExNyw3ICsyMTQyLDcg QEAgbXNnc3RyICJXaXJ0dWFsbnkgZHlzayB0d2FyZHkgendpxIV6YW55IHogezB9ICh7MX0pIG5p ZSBpc3RuaWVqZS4iCisgCisgIzogcHl0aG9uL21haW53aW5kb3cucHk6MTEwMgorIG1zZ2lkICJB cmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgYWxsIHswfSB3aW5kb3dzPyIKKy1tc2dzdHIg IiIKKyttc2dzdHIgIkN6eSBuYSBwZXdubyBjaGNlc3ogemFta27EhcSHIHdzenlzdGtpZSB7MH0g b2tuYT8iCisgCisgIzogcHl0aG9uL21haW53aW5kb3cucHk6MTEyNAorIG1zZ2lkICJSdW4geW91 ciBXaW5kb3dzIHByb2dyYW1zIG9uICIKK0BAIC0yMzQyLDcgKzIzNjcsNyBAQCBtc2dzdHIgIkpl c3RlxZsgcGV3aWVuIHplIGNoY2VzeiB1c3VuxIXEhyBXaW5lIHswfT8iCisgCisgIzogcHl0aG9u L3dpbmVfdmVyc2lvbnMucHk6MzM0CisgbXNnaWQgIlRoaXMgdmVyc2lvbiBpcyBDVVJSRU5UTFkg SU4gVVNFIgorLW1zZ3N0ciAiIgorK21zZ3N0ciAiVGEgd2Vyc2phIGplc3Qgb2JlY25pZSB3IHXF vHljaXUiCisgCisgIzogcHl0aG9uL3dyYXBwZXIucHk6MTM1CisgbXNnaWQgInswfSBpcyBub3Qg YWJsZSB0byBzdGFydCBQT0xfU2V0dXBXaW5kb3dfc2VydmVyLiIKKworRnJvbSA4ZjA4MjYzMmMz MGM4NTQ2MWM3NmYwZjk1YWM3NDc2NzViYzBhZjk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogUXVlbnRpbiBQQVJJUyA8Z2l0QHF1ZW50aW4ucGFyaXM+CitEYXRlOiBTdW4sIDI0IEph biAyMDIxIDE1OjIxOjU0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMTUvMzddIFJlYWZjdG9yaW5n IHdpbmUgdmVyc2lvbiBtYW5hZ2VyIGNvZGUKKworLS0tCisgYmFzaC9zdGFydHVwICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4ICsKKyBsaWIvdmFyaWFibGVzICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDEgKworIGxpYi93aW5lLmxpYiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgMjE1OSArKysrKysrKystLS0tLS0tLS0KKyBweXRob24v bGliL1ZhcmlhYmxlcy5weSAgICAgICAgICAgICAgICAgICAgICB8ICAgIDkgKy0KKyBweXRob24v bWFpbndpbmRvdy5weSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KKyBweXRob24v d2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5ICB8ICAxMzkgKy0KKyBweXRob24v d2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9vay5weSB8ICAxMzkgKy0KKyBweXRob24v d2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNUb29scy5weSAgICB8ICAgMjQgKy0KKyBweXRob24v d2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkgICB8ICAyNjAgKy0tCisgOSBmaWxl cyBjaGFuZ2VkLCAxMzE1IGluc2VydGlvbnMoKyksIDE0MjYgZGVsZXRpb25zKC0pCisKK2RpZmYg LS1naXQgYS9iYXNoL3N0YXJ0dXAgYi9iYXNoL3N0YXJ0dXAKK2luZGV4IGFiMGI1ZGNiNS4uZmI2 MmU3YThiIDEwMDc1NQorLS0tIGEvYmFzaC9zdGFydHVwCisrKysgYi9iYXNoL3N0YXJ0dXAKK0BA IC0zMSw2ICszMSwxNCBAQCBidWlsZF91c2VyX3N0YXRlX2RpcmVjdG9yeQorICMgQ2xlYW5pbmcg dG1wIGRpcmVjdG9yeQorIGNsZWFuX3RtcAorIAorKyMgTWFjIE9TIENhdGFsaW5hOiBSZW1vdmUg bGVnYWN5IHdpbmUgdmVyc2lvbnMKKytpZiBbWyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV07IHRo ZW4KKysgICAgaWYgW1sgISAtZSAiJFBPTF9VU0VSX1JPT1Qvd2luZS9kYXJ3aW4teDg2LWxlZ2Fj eSIgXV07IHRoZW4KKysgICAgICAgIFtbIC1lICIkUE9MX1VTRVJfUk9PVC93aW5lL2Rhcndpbi14 ODYiIF1dICYmIG12ICIkUE9MX1VTRVJfUk9PVC93aW5lL2Rhcndpbi14ODYiICIkUE9MX1VTRVJf Uk9PVC93aW5lL2Rhcndpbi14ODYtbGVnYWN5IgorKyAgICAgICAgbWtkaXIgLXAgIiRQT0xfVVNF Ul9ST09UL3dpbmUvZGFyd2luLXg4Ni1sZWdhY3kiCisrICAgIGZpCisrZmkKKysKKyAjIyMgT3Bl cmF0aW9ucyBiZWxvdyBhcmUgYmFja2dyb3VuZCBhc3luY2hyb25vdXMgdGFza3MKKyAKKyAoCitk aWZmIC0tZ2l0IGEvbGliL3ZhcmlhYmxlcyBiL2xpYi92YXJpYWJsZXMKK2luZGV4IDNkZjRiNjcw OC4uOWMxNmZlMWE3IDEwMDc1NQorLS0tIGEvbGliL3ZhcmlhYmxlcworKysrIGIvbGliL3Zhcmlh YmxlcworQEAgLTIxLDYgKzIxLDcgQEAKKyAjIyBIYWNrIGZvciBFbCBDYXBpdGFpbgorIFsgISAi JFdSSVRFX0xEIiA9ICIiIF0gJiYgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJFdSSVRFX0xEIgor IFsgISAiJFdSSVRFX0RZTEQiID0gIiIgXSAmJiBleHBvcnQgRFlMRF9MSUJSQVJZX1BBVEg9IiRX UklURV9EWUxEIgorK1sgISAiJFdSSVRFX0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIiA9ICIi IF0gJiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIPSIkV1JJVEVfRFlMRF9GQUxM QkFDS19MSUJSQVJZX1BBVEgiCisgCisgIyBUaGlzIGlzIGp1c3QgYSBjb3B5IG9mIGZ1bmN0aW9u IGluIHBsYXlvbmxpbnV4LCBidXQgd2UgbmVlZCBpdCBlYXJsaWVyCisgWyAiJFBPTF9PUyIgPSAi TWFjIiBdICYmIGV4cG9ydCBMQU5HPSIkUkxBTkciCitkaWZmIC0tZ2l0IGEvbGliL3dpbmUubGli IGIvbGliL3dpbmUubGliCitpbmRleCA3NzE3OWQxMzcuLmQyN2RlMTUwOSAxMDA3NTUKKy0tLSBh L2xpYi93aW5lLmxpYgorKysrIGIvbGliL3dpbmUubGliCitAQCAtMjIsODIgKzIyLDgzIEBACisg IworICMgVGhpcyBsaWIgY29udGFpbnMgd2luZSdzIGFwaQorIAorLVBPTF9XaW5lX0dldFJlZ1Zh bHVlKCkKKy17CistCSMgR2V0IGEgdmFsdWUgaW4gcmVnaXN0cnkKKy0JIyBFeGFtcGxlIDogUE9M X1dpbmVfR2V0UmVnX1ZhbHVlIE11bHRpc2FtcGxpbmcKKy0JIworLQkjIFJlYWQgaHR0cDovL3dp a2kud2luZWhxLm9yZy9Vc2VmdWxSZWdpc3RyeUtleXMKKy0KKy0JWyAteiAiJFdJTkVQUkVGSVgi IF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistCWxvY2FsIHZhbHVl CistCSMgdHIgLWQgJ1wwJyBpcyBhIHdvcmthcm91bmQgZm9yIFdpbmUgYnVnICMzNzU3NQorLQlb IC1lICIkV0lORVBSRUZJWC91c2VyLnJlZyIgXSAmJiB2YWx1ZT0iJChncmVwICJeXCIkMVwiPSIg IiRXSU5FUFJFRklYL3VzZXIucmVnIiB8IGhlYWQgLW4gMSB8IHRyIC1kICciJyB8IGN1dCAtZD0g LWYyLSB8IHRyIC1kICdcMCcpIgorLQlQT0xfRGVidWdfTWVzc2FnZSAiR2V0dGluZyByZWdpc3Ry eSB2YWx1ZSAkMS4gUmV0dXJuOiAkdmFsdWUiCistCWVjaG8gLW4gIiR7dmFsdWU6LWRlZmF1bHR9 IgorK1BPTF9XaW5lX0dldFJlZ1ZhbHVlKCkgeworKyAgIyBHZXQgYSB2YWx1ZSBpbiByZWdpc3Ry eQorKyAgIyBFeGFtcGxlIDogUE9MX1dpbmVfR2V0UmVnX1ZhbHVlIE11bHRpc2FtcGxpbmcKKysg ICMKKysgICMgUmVhZCBodHRwOi8vd2lraS53aW5laHEub3JnL1VzZWZ1bFJlZ2lzdHJ5S2V5cwor KworKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklY IG5vdCBzZXQiCisrICBsb2NhbCB2YWx1ZQorKyAgIyB0ciAtZCAnXDAnIGlzIGEgd29ya2Fyb3Vu ZCBmb3IgV2luZSBidWcgIzM3NTc1CisrICBbIC1lICIkV0lORVBSRUZJWC91c2VyLnJlZyIgXSAm JiB2YWx1ZT0iJChncmVwICJeXCIkMVwiPSIgIiRXSU5FUFJFRklYL3VzZXIucmVnIiB8IGhlYWQg LW4gMSB8IHRyIC1kICciJyB8IGN1dCAtZD0gLWYyLSB8IHRyIC1kICdcMCcpIgorKyAgUE9MX0Rl YnVnX01lc3NhZ2UgIkdldHRpbmcgcmVnaXN0cnkgdmFsdWUgJDEuIFJldHVybjogJHZhbHVlIgor KyAgZWNobyAtbiAiJHt2YWx1ZTotZGVmYXVsdH0iCisgfQorIAorLVBPTF9XaW5lX1VwZGF0ZVJl Z2lzdHJ5ICgpCisteworLQkjIFVzYWdlOiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSByZWdiYXNl bmFtZQorLQkjIHJlZ2lzdHJ5IGZpbGUgbXVzdCBiZSBwcm92aWRlZCB0aHJ1IHN0ZGluCistCSMg RmlsZSBzaWduYXR1cmUgKCJSRUdFRElUNCIpIGluIGFwcGVuZGVkIGF1dG9tYXRpY2FsbHkKKy0K Ky0JKGVjaG8gIlJFR0VESVQ0IjsgZWNobyAiIjsgY2F0KSA+ICIkUE9MX1VTRVJfUk9PVC90bXAv JDEucmVnIgorLQlQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvJDEucmVnIiAm JgorLQlybSAiJFBPTF9VU0VSX1JPT1QvdG1wLyQxLnJlZyIKKytQT0xfV2luZV9VcGRhdGVSZWdp c3RyeSgpIHsKKysgICMgVXNhZ2U6IFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHJlZ2Jhc2VuYW1l CisrICAjIHJlZ2lzdHJ5IGZpbGUgbXVzdCBiZSBwcm92aWRlZCB0aHJ1IHN0ZGluCisrICAjIEZp bGUgc2lnbmF0dXJlICgiUkVHRURJVDQiKSBpbiBhcHBlbmRlZCBhdXRvbWF0aWNhbGx5CisrCisr ICAoCisrICAgIGVjaG8gIlJFR0VESVQ0IgorKyAgICBlY2hvICIiCisrICAgIGNhdAorKyAgKSA+ IiRQT0xfVVNFUl9ST09UL3RtcC8kMS5yZWciCisrICBQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VT RVJfUk9PVC90bXAvJDEucmVnIiAmJgorKyAgICBybSAiJFBPTF9VU0VSX1JPT1QvdG1wLyQxLnJl ZyIKKyB9CisgCistUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyICgpCisteworLQkjIFVzYWdl OiBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIga2V5IG5hbWUgWy0tc3p8LS1iaW5hcnl8LS1k d29yZHwtLW11bHRpc3pdIGRhdGEKKy0JIyBkYXRhPSJkZWZhdWx0IjogcmVtb3ZlIHRoZSBuYW1l CistICAgICAgICBsb2NhbCBrZXk9IiQxIgorLSAgICAgICAgbG9jYWwgc3Via2V5PSIkMiIKKy0g ICAgICAgIHNoaWZ0IDIKKy0gICAgICAgIGxvY2FsIHZhbHVlCistICAgICAgICBjYXNlICIkMSIg aW4KKy0gICAgICAgICAgLS1zenwtLVNaKQorLSAgICAgICAgICAgIHNoaWZ0CistICAgICAgICAg ICAgIyBiYWNrc2xhc2ggXHMgYW5kICJzPworLSAgICAgICAgICAgIHZhbHVlPSJcIiQxXCIiCist ICAgICAgICAgICAgOzsKKy0gICAgICAgICAgLS1iaW5hcnl8LS1CSU5BUlkpCistICAgICAgICAg ICAgc2hpZnQKKy0gICAgICAgICAgICB2YWx1ZT0iaGV4OiQxIgorLSAgICAgICAgICAgIDs7Cist ICAgICAgICAgIC0tZHdvcmR8LS1EV09SRCkKKy0gICAgICAgICAgICBzaGlmdAorLSAgICAgICAg ICAgIHZhbHVlPSJkd29yZDokMSIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAtLW11bHRp c3p8LS1NVUxUSVNaKQorLSAgICAgICAgICAgIHNoaWZ0CistICAgICAgICAgICAgdmFsdWU9Imhl eCg3KTokMSIKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAtLSopCistICAgICAgICAgICAg UE9MX0RlYnVnX0ZhdGFsICJVbnJlY29nbml6ZWQgdmFsdWUgdHlwZTogJDEsIHN1cHBvcnRlZCBh cmUgLS1zeiAtLWJpbmFyeSAtLWR3b3JkIC0tbXVsdGlzeiIKKy0gICAgICAgICAgICA7OworLSAg ICAgICAgICBkZWZhdWx0KQorLSAgICAgICAgICAgIHZhbHVlPSItIgorLSAgICAgICAgICAgIDs7 CistICAgICAgICAgICopCistICAgICAgICAgICAgIyBiYWNrc2xhc2ggXHMgYW5kICJzPworLSAg ICAgICAgICAgIHZhbHVlPSJcIiQxXCIiCistICAgICAgICBlc2FjCistCistCQlQT0xfV2luZV9V cGRhdGVSZWdpc3RyeSByZWdrZXkgPDwtIF9FT0ZJTklfCisrUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnlQYWlyKCkgeworKyAgIyBVc2FnZTogUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlQYWlyIGtleSBu YW1lIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1tdWx0aXN6XSBkYXRhCisrICAjIGRhdGE9ImRl ZmF1bHQiOiByZW1vdmUgdGhlIG5hbWUKKysgIGxvY2FsIGtleT0iJDEiCisrICBsb2NhbCBzdWJr ZXk9IiQyIgorKyAgc2hpZnQgMgorKyAgbG9jYWwgdmFsdWUKKysgIGNhc2UgIiQxIiBpbgorKyAg LS1zeiB8IC0tU1opCisrICAgIHNoaWZ0CisrICAgICMgYmFja3NsYXNoIFxzIGFuZCAicz8KKysg ICAgdmFsdWU9IlwiJDFcIiIKKysgICAgOzsKKysgIC0tYmluYXJ5IHwgLS1CSU5BUlkpCisrICAg IHNoaWZ0CisrICAgIHZhbHVlPSJoZXg6JDEiCisrICAgIDs7CisrICAtLWR3b3JkIHwgLS1EV09S RCkKKysgICAgc2hpZnQKKysgICAgdmFsdWU9ImR3b3JkOiQxIgorKyAgICA7OworKyAgLS1tdWx0 aXN6IHwgLS1NVUxUSVNaKQorKyAgICBzaGlmdAorKyAgICB2YWx1ZT0iaGV4KDcpOiQxIgorKyAg ICA7OworKyAgLS0qKQorKyAgICBQT0xfRGVidWdfRmF0YWwgIlVucmVjb2duaXplZCB2YWx1ZSB0 eXBlOiAkMSwgc3VwcG9ydGVkIGFyZSAtLXN6IC0tYmluYXJ5IC0tZHdvcmQgLS1tdWx0aXN6Igor KyAgICA7OworKyAgZGVmYXVsdCkKKysgICAgdmFsdWU9Ii0iCisrICAgIDs7CisrICAqKQorKyAg ICAjIGJhY2tzbGFzaCBccyBhbmQgInM/CisrICAgIHZhbHVlPSJcIiQxXCIiCisrICAgIDs7Cisr ICBlc2FjCisrCisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSByZWdrZXkgPDwtX0VPRklOSV8K KyAJCVska2V5XQorIAkJIiRzdWJrZXkiPSR2YWx1ZQorIAkJX0VPRklOSV8KKyB9CisgCistUE9M X1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAoKQorLXsKKy0JIyBVc2FnZTogUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlQYWlyIHN1YmtleSBuYW1lIFstLXN6fC0tYmluYXJ5fC0tZHdvcmR8LS1t dWx0aXN6XSBkYXRhCistCSMgZGF0YT0iZGVmYXVsdCI6IHJlbW92ZSB0aGUgbmFtZQorK1BPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIoKSB7CisrICAjIFVzYWdlOiBQT0xfV2luZV9VcGRh dGVSZWdpc3RyeVBhaXIgc3Via2V5IG5hbWUgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRp c3pdIGRhdGEKKysgICMgZGF0YT0iZGVmYXVsdCI6IHJlbW92ZSB0aGUgbmFtZQorIAorLQkjIFB1 dCBhICJcIiBiZWZvcmUgJDEgaWYgaXQncyBub3QgZW1wdHkKKy0JUE9MX1dpbmVfVXBkYXRlUmVn aXN0cnlQYWlyICJIS0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmVcXFdpbmUkezE6K1xcJDF9IiAi JDIiICIkMyIgIiQ0IgorKyAgIyBQdXQgYSAiXCIgYmVmb3JlICQxIGlmIGl0J3Mgbm90IGVtcHR5 CisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVBhaXIgIkhLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0 d2FyZVxcV2luZSR7MTorXFwkMX0iICIkMiIgIiQzIiAiJDQiCisgfQorIAorICMgRm9yIGFsbCBm dW5jdGlvbnMgYmVsb3csIHRoYXQgY2FuIGJlIGNhbGxlZCBmcm9tIHRoZSBjb250cm9sIHBhbmVs OgorQEAgLTEwNSwzNjEgKzEwNiwzNDQgQEAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFp ciAoKQorICMgICBjaGFuZ2VkIFdpbmUgdmVyc2lvbiBvdXQgb2Ygb3VyIGNvbnRyb2w7CisgIyAt IEtpbGwgd2luZXNlcnZlciBhZnRlciByZWdlZGl0IHNvIGNoYW5nZSB0YWtlcyBlZmZlY3QgaW1t ZWRpYXRlbHkKKyAKKy1QT0xfV2luZV9EaXJlY3QzRCAoKQorLXsKKy0JIyBDaGFuZ2UgYSBEaXJl Y3QzRCB2YWx1ZSBpbiByZWdpc3RyeQorLQkjIFVzYWdlIFBPTF9XaW5lX0RpcmVjdDNEIEtleSAg Wy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRpc3pdIFZhbHVlCisrUE9MX1dpbmVfRGlyZWN0 M0QoKSB7CisrICAjIENoYW5nZSBhIERpcmVjdDNEIHZhbHVlIGluIHJlZ2lzdHJ5CisrICAjIFVz YWdlIFBPTF9XaW5lX0RpcmVjdDNEIEtleSAgWy0tc3p8LS1iaW5hcnl8LS1kd29yZHwtLW11bHRp c3pdIFZhbHVlCisgCistCSMgRXhhbXBsZSA6OiBQT0xfV2luZV9EaXJlY3QzRCBVc2VHTFNMIFtk ZWZhdWx0IC8gZW5hYmxlZCAvIGRpc2FibGVkXQorLQkjIGRlZmF1bHQ6IHJlbW92ZSB0aGUga2V5 CistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0M0QgJFdJTkVQUkVGSVgg JDEgJDIgJDMiCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lO RVBSRUZJWCBub3Qgc2V0IgorKyAgIyBFeGFtcGxlIDo6IFBPTF9XaW5lX0RpcmVjdDNEIFVzZUdM U0wgW2RlZmF1bHQgLyBlbmFibGVkIC8gZGlzYWJsZWRdCisrICAjIGRlZmF1bHQ6IHJlbW92ZSB0 aGUga2V5CisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdDNEICRXSU5F UFJFRklYICQxICQyICQzIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisgCistCVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52 CistCXdpbmVzZXJ2ZXIgLWsKKy0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGly ZWN0M0QnICIkMSIgIiQyIiAiJDMiCistCXdpbmVzZXJ2ZXIgLWsKKysgIFBPTF9XaW5lX0F1dG9T ZXRWZXJzaW9uRW52CisrICB3aW5lc2VydmVyIC1rCisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3Ry eVdpbmVQYWlyICdEaXJlY3QzRCcgIiQxIiAiJDIiICIkMyIKKysgIHdpbmVzZXJ2ZXIgLWsKKyB9 CisgCistUE9MX1dpbmVfWDExRHJ2ICgpCisteworLQkjIENoYW5nZSBhIFgxMURydiB2YWx1ZSBp biByZWdpc3RyeQorLQkjIFVzYWdlIFBPTF9XaW5lX1gxMURydiBLZXkgWy0tc3p8LS1iaW5hcnl8 LS1kd29yZHwtLW11bHRpc3pdIFZhbHVlCisrUE9MX1dpbmVfWDExRHJ2KCkgeworKyAgIyBDaGFu Z2UgYSBYMTFEcnYgdmFsdWUgaW4gcmVnaXN0cnkKKysgICMgVXNhZ2UgUE9MX1dpbmVfWDExRHJ2 IEtleSBbLS1zenwtLWJpbmFyeXwtLWR3b3JkfC0tbXVsdGlzel0gVmFsdWUKKyAKKy0JIyBFeGFt cGxlIDo6IFBPTF9XaW5lX1gxMURydiBVc2VHTFNMIFtkZWZhdWx0IC8gZW5hYmxlZCAvIGRpc2Fi bGVkXQorLQkjIGRlZmF1bHQ6IHJlbW92ZSB0aGUga2V5CistCVBPTF9EZWJ1Z19NZXNzYWdlICJT ZXR0aW5nIHdpbmUgWDExRHJ2ICRXSU5FUFJFRklYICQxICQyICQzIgorLQlbIC16ICIkV0lORVBS RUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysgICMgRXhh bXBsZSA6OiBQT0xfV2luZV9YMTFEcnYgVXNlR0xTTCBbZGVmYXVsdCAvIGVuYWJsZWQgLyBkaXNh YmxlZF0KKysgICMgZGVmYXVsdDogcmVtb3ZlIHRoZSBrZXkKKysgIFBPTF9EZWJ1Z19NZXNzYWdl ICJTZXR0aW5nIHdpbmUgWDExRHJ2ICRXSU5FUFJFRklYICQxICQyICQzIgorKyAgWyAteiAiJFdJ TkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisgCist CVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52CistCXdpbmVzZXJ2ZXIgLWsKKy0JUE9MX1dpbmVf VXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgIiQxIiAiJDIiICIkMyIKKy0Jd2lu ZXNlcnZlciAtaworKyAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKysgIHdpbmVzZXJ2ZXIg LWsKKysgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICIkMSIg IiQyIiAiJDMiCisrICB3aW5lc2VydmVyIC1rCisgfQorIAorLVBPTF9XaW5lX0RpcmVjdFNvdW5k ICgpCisteworLQkjIFNhbWUgdGhhdCBQT0xfV2luZV9EaXJlY3QzRCwgYnV0IGZvciBEaXJlY3RT b3VuZAorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdFNvdW5kICRXSU5F UFJFRklYICQxICQyICQzIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0 YWwgIldJTkVQUkVGSVggbm90IHNldCIKKytQT0xfV2luZV9EaXJlY3RTb3VuZCgpIHsKKysgICMg U2FtZSB0aGF0IFBPTF9XaW5lX0RpcmVjdDNELCBidXQgZm9yIERpcmVjdFNvdW5kCisrICBQT0xf RGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIERpcmVjdFNvdW5kICRXSU5FUFJFRklYICQxICQy ICQzIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJF RklYIG5vdCBzZXQiCisgCistCVBPTF9XaW5lX0F1dG9TZXRWZXJzaW9uRW52CistCXdpbmVzZXJ2 ZXIgLWsKKy0JUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICIk MSIgIiQyIiAiJDMiCistCXdpbmVzZXJ2ZXIgLWsKKysgIFBPTF9XaW5lX0F1dG9TZXRWZXJzaW9u RW52CisrICB3aW5lc2VydmVyIC1rCisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWly ICdEaXJlY3RTb3VuZCcgIiQxIiAiJDIiICIkMyIKKysgIHdpbmVzZXJ2ZXIgLWsKKyB9CisgCist UE9MX1dpbmVfRGlyZWN0SW5wdXQgKCkKKy17CistCSMgU2FtZSB0aGF0IFBPTF9XaW5lX0RpcmVj dDNELCBidXQgZm9yIERpcmVjdElucHV0CistCVBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdp bmUgRGlyZWN0SW5wdXQgJFdJTkVQUkVGSVggJDEgJDIgJDMiCistCVsgLXogIiRXSU5FUFJFRklY IiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorK1BPTF9XaW5lX0Rp cmVjdElucHV0KCkgeworKyAgIyBTYW1lIHRoYXQgUE9MX1dpbmVfRGlyZWN0M0QsIGJ1dCBmb3Ig RGlyZWN0SW5wdXQKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgRGlyZWN0SW5w dXQgJFdJTkVQUkVGSVggJDEgJDIgJDMiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xf RGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKyAKKy0JUE9MX1dpbmVfQXV0b1NldFZl cnNpb25FbnYKKy0Jd2luZXNlcnZlciAtaworLQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQ YWlyICdEaXJlY3RJbnB1dCcgIiQxIiAiJDIiICIkMyIKKy0Jd2luZXNlcnZlciAtaworKyAgUE9M X1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKysgIHdpbmVzZXJ2ZXIgLWsKKysgIFBPTF9XaW5lX1Vw ZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdElucHV0JyAiJDEiICIkMiIgIiQzIgorKyAgd2lu ZXNlcnZlciAtaworIH0KKyAKKy1TZXRfT1MgKCkKKy17CistCSMgU2V0IGZha2Ugd2luZG93cyBP UworLQkjIFVzYWdlOiBTZXRfT1MgWzFdIFsyXQorLQkjCistCSMgMTogUG9zc2libGUgdmFsdWVz OiB3aW43LCB3aW4yMDA4LCB2aXN0YSwgd2luMjAwMywgd2lueHAsIHdpbjIwMDAsIG50NDAsIHdp bm50MzUxLCB3aW5tZSwgd2luOTgsIHdpbjk1LCB3aW4zMSwgd2luMzAsIHdpbjIwCistCSMgMjog U2VydmljZSBQYWNrOiBzcDEsIHNwMiwgc3AzLCBzcDQsIHNwNQorLQlQT0xfRGVidWdfTWVzc2Fn ZSAiU2V0dGluZyBXaW5kb3dzIE9TIHRvICQxICQyIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0KKy0JaWYgWyAtbiAiJDEi IF07IHRoZW4KKy0JCVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJycgJ1ZlcnNpb24n ICIkMSIKKy0JZmkKKy0KKy0JaWYgWyAtbiAiJDIiIF07IHRoZW4gIyBOZWVkIG1vcmUgdGVzdGlu ZworLQkJbG9jYWwgbgorLQkJWyAiJDIiID0gInNwMSIgXSAmJiBuPTEKKy0JCVsgIiQyIiA9ICJz cDIiIF0gJiYgbj0yCistCQlbICIkMiIgPSAic3AzIiBdICYmIG49MworLQkJWyAiJDIiID0gInNw NCIgXSAmJiBuPTQKKy0JCVsgIiQyIiA9ICJzcDUiIF0gJiYgbj01CistCistCQlQT0xfV2luZV9V cGRhdGVSZWdpc3RyeSBzZXRvcyA8PC0gX0VPRklOSV8KKytTZXRfT1MoKSB7CisrICAjIFNldCBm YWtlIHdpbmRvd3MgT1MKKysgICMgVXNhZ2U6IFNldF9PUyBbMV0gWzJdCisrICAjCisrICAjIDE6 IFBvc3NpYmxlIHZhbHVlczogd2luNywgd2luMjAwOCwgdmlzdGEsIHdpbjIwMDMsIHdpbnhwLCB3 aW4yMDAwLCBudDQwLCB3aW5udDM1MSwgd2lubWUsIHdpbjk4LCB3aW45NSwgd2luMzEsIHdpbjMw LCB3aW4yMAorKyAgIyAyOiBTZXJ2aWNlIFBhY2s6IHNwMSwgc3AyLCBzcDMsIHNwNCwgc3A1Cisr ICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBXaW5kb3dzIE9TIHRvICQxICQyIgorKyAgWyAt eiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQi CisrCisrICBpZiBbIC1uICIkMSIgXTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3Ry eVdpbmVQYWlyICcnICdWZXJzaW9uJyAiJDEiCisrICBmaQorKworKyAgaWYgWyAtbiAiJDIiIF07 IHRoZW4gIyBOZWVkIG1vcmUgdGVzdGluZworKyAgICBsb2NhbCBuCisrICAgIFsgIiQyIiA9ICJz cDEiIF0gJiYgbj0xCisrICAgIFsgIiQyIiA9ICJzcDIiIF0gJiYgbj0yCisrICAgIFsgIiQyIiA9 ICJzcDMiIF0gJiYgbj0zCisrICAgIFsgIiQyIiA9ICJzcDQiIF0gJiYgbj00CisrICAgIFsgIiQy IiA9ICJzcDUiIF0gJiYgbj01CisrCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5IHNldG9z IDw8LV9FT0ZJTklfCisgCQlbSEtFWV9MT0NBTF9NQUNISU5FXFxTb2Z0d2FyZVxcTWljcm9zb2Z0 XFxXaW5kb3dzIE5UXFxDdXJyZW50VmVyc2lvbl0KKyAJCSJDU0RWZXJzaW9uIj0iU2VydmljZSBQ YWNrICRuIgorIAkJW0hLRVlfTE9DQUxfTUFDSElORVxcU3lzdGVtXFxDdXJyZW50Q29udHJvbFNl dFxcQ29udHJvbFxcV2luZG93c10KKyAJCSJDU0RWZXJzaW9uIj1kd29yZDowMDAwMCR7bn0wMAor IAkJX0VPRklOSV8KKy0JZmkKKysgIGZpCisgfQorIAorLVNldF9NYW5hZ2VkICgpCisteworLQkj IExldCB0aGUgd2luZG93cyBtYW5hZ2VyIHRvIGNvbnRyb2wgd2luZQorLQkjIFVzYWdlOiBTZXRf TWFuYWdlZCAoT258T2ZmKQorLQorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIG1h bmFnZWQ6ICQxIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJ TkVQUkVGSVggbm90IHNldCIKKy0KKy0JbG9jYWwgbgorLQlbICIkMSIgPSAiT24iIF0gJiYgbj0i WSIKKy0JWyAiJDEiID0gIk9mZiIgXSAmJiBuPSJOIgorLQlpZiBbIC1uICIkbiIgXTsgdGhlbgor LQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgIk1hbmFnZWQi ICIkbiIKKy0JZWxzZQorLQkJUE9MX0RlYnVnX1dhcm5pbmcgIlVucmVjb2duaXplZCBmbGFnICck MSciCistCWZpCisrU2V0X01hbmFnZWQoKSB7CisrICAjIExldCB0aGUgd2luZG93cyBtYW5hZ2Vy IHRvIGNvbnRyb2wgd2luZQorKyAgIyBVc2FnZTogU2V0X01hbmFnZWQgKE9ufE9mZikKKysKKysg IFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdpbmUgbWFuYWdlZDogJDEiCisrICBbIC16ICIk V0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysK KysgIGxvY2FsIG4KKysgIFsgIiQxIiA9ICJPbiIgXSAmJiBuPSJZIgorKyAgWyAiJDEiID0gIk9m ZiIgXSAmJiBuPSJOIgorKyAgaWYgWyAtbiAiJG4iIF07IHRoZW4KKysgICAgUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgIk1hbmFnZWQiICIkbiIKKysgIGVsc2UK KysgICAgUE9MX0RlYnVnX1dhcm5pbmcgIlVucmVjb2duaXplZCBmbGFnICckMSciCisrICBmaQor IH0KKyAKKy1TZXRfU291bmREcml2ZXIgKCkKKy17CistCSMgU2V0IHRoZSBzb3VuZCBkcml2ZXIK Ky0JIyBVc2FnZTogU2V0X1NvdW5kRHJpdmVyIFtEcml2ZXJdCistCSMgVXNlIGFuIGVtcHR5IHN0 cmluZyBwYXJhbWV0ZXIgdG8gZGlzYWJsZSBzb3VuZAorLQkjIERpc2FibGVkIGluIE1hYyBPUwor LQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIFNvdW5kRHJpdmVyICRAIgorLQlbIC16 ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIK Ky0KKy0JaWYgWyAiJFBPTF9PUyIgPSAiTGludXgiIF07IHRoZW4KKy0JCVBPTF9XaW5lX1VwZGF0 ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RyaXZlcnMnICdBdWRpbycgIiQxIgorLQllbHNlCistCQlQT0xf RGVidWdfTWVzc2FnZSAiU2V0X1NvdW5kRHJpdmVyIGRpc2FibGVkIG9uICRQT0xfT1MiCistCWZp CisrU2V0X1NvdW5kRHJpdmVyKCkgeworKyAgIyBTZXQgdGhlIHNvdW5kIGRyaXZlcgorKyAgIyBV c2FnZTogU2V0X1NvdW5kRHJpdmVyIFtEcml2ZXJdCisrICAjIFVzZSBhbiBlbXB0eSBzdHJpbmcg cGFyYW1ldGVyIHRvIGRpc2FibGUgc291bmQKKysgICMgRGlzYWJsZWQgaW4gTWFjIE9TCisrICBQ T0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB3aW5lIFNvdW5kRHJpdmVyICRAIgorKyAgWyAteiAi JFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisr CisrICBpZiBbICIkUE9MX09TIiA9ICJMaW51eCIgXTsgdGhlbgorKyAgICBQT0xfV2luZV9VcGRh dGVSZWdpc3RyeVdpbmVQYWlyICdEcml2ZXJzJyAnQXVkaW8nICIkMSIKKysgIGVsc2UKKysgICAg UE9MX0RlYnVnX01lc3NhZ2UgIlNldF9Tb3VuZERyaXZlciBkaXNhYmxlZCBvbiAkUE9MX09TIgor KyAgZmkKKyB9CisgCistU2V0X0RYR3JhYiAoKQorLXsKKy0JIyBFbmFibGUgb3IgZGlzYWJsZSBE WEdyYWIKKy0JIyBVc2FnZTogU2V0X0RYR3JhYiAoT258T2ZmKQorLQkjIE9uIG91IE9mZgorLQlb IC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNl dCIKKy0KKy0JbG9jYWwgbgorLQlbICIkMSIgPSAiT24iIF0gJiYgbj0iWSIgJiYgUE9MX0RlYnVn X01lc3NhZ2UgIlNldHRpbmcgRFhHcmFiIgorLQlbICIkMSIgPSAiT2ZmIiBdICYmIG49Ik4iICYm IFBPTF9EZWJ1Z19NZXNzYWdlICJVbnNldHRpbmcgRFhHcmFiIgorLQlpZiBbIC1uICIkbiIgXTsg dGhlbgorLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0RY R3JhYicgIiRuIgorLQllbHNlCistCQlQT0xfRGVidWdfV2FybmluZyAiU2V0X0RYR3JhYjogdW5y ZWNvZ25pemVkIGZsYWcgJyQxJyIKKy0JZmkKKytTZXRfRFhHcmFiKCkgeworKyAgIyBFbmFibGUg b3IgZGlzYWJsZSBEWEdyYWIKKysgICMgVXNhZ2U6IFNldF9EWEdyYWIgKE9ufE9mZikKKysgICMg T24gb3UgT2ZmCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJ TkVQUkVGSVggbm90IHNldCIKKysKKysgIGxvY2FsIG4KKysgIFsgIiQxIiA9ICJPbiIgXSAmJiBu PSJZIiAmJiBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBEWEdyYWIiCisrICBbICIkMSIgPSAi T2ZmIiBdICYmIG49Ik4iICYmIFBPTF9EZWJ1Z19NZXNzYWdlICJVbnNldHRpbmcgRFhHcmFiIgor KyAgaWYgWyAtbiAiJG4iIF07IHRoZW4KKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5l UGFpciAnWDExIERyaXZlcicgJ0RYR3JhYicgIiRuIgorKyAgZWxzZQorKyAgICBQT0xfRGVidWdf V2FybmluZyAiU2V0X0RYR3JhYjogdW5yZWNvZ25pemVkIGZsYWcgJyQxJyIKKysgIGZpCisgfQor IAorLVNldF9JZXhwbG9yZSAoKQorLXsKKy0JIyBNYWtlIGEgZmFrZSBJRTYgaW5zdGFsbGF0aW9u CistCSMgVXNhZ2U6IFNldF9JZXhwbG9yZQorLQlQT0xfRGVidWdfTWVzc2FnZSAiRmFraW5nIGll NiBpbnN0YWxsYXRpb24iCistCVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgorK1NldF9JZXhwbG9yZSgpIHsKKysgICMgTWFrZSBhIGZh a2UgSUU2IGluc3RhbGxhdGlvbgorKyAgIyBVc2FnZTogU2V0X0lleHBsb3JlCisrICBQT0xfRGVi dWdfTWVzc2FnZSAiRmFraW5nIGllNiBpbnN0YWxsYXRpb24iCisrICBbIC16ICIkV0lORVBSRUZJ WCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKyAKKy0JUE9MX1dp bmVfVXBkYXRlUmVnaXN0cnkgaWUgPDwtIF9FT0ZJTklfCisrICBQT0xfV2luZV9VcGRhdGVSZWdp c3RyeSBpZSA8PC1fRU9GSU5JXworIAlbSEtFWV9MT0NBTF9NQUNISU5FXFxTb2Z0d2FyZVxcTWlj cm9zb2Z0XFxJbnRlcm5ldCBFeHBsb3Jlcl0KKyAJIlZlcnNpb24iPSI2LjAuMjkwMC4yMTgwIgor IAlfRU9GSU5JXworIH0KKyAKKy1TZXRfRGVza3RvcCAoKQorLXsKKy0JIyBTZXQgYSBkZXNrdG9w IGVudmlyb25tZW50CistCSMgVXNhZ2U6IFNldF9EZXNrdG9wIChvbnxvZmYpIFt3aWR0aF0gW2hl aWdodF0KKy0KKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgRGVza3RvcCA6ICQxICQyICQz IgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVgg bm90IHNldCIKKy0KKy0JaWYgWyAiJDEiID0gIk9mZiIgXTsgdGhlbgorLQkJUE9MX1dpbmVfVXBk YXRlUmVnaXN0cnlXaW5lUGFpciAnWDExIERyaXZlcicgJ0Rlc2t0b3AnICItMSIKKy0JCSMgUmVt b3ZlIGtleQorLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRXhwbG9yZXInICdE ZXNrdG9wJyAnZGVmYXVsdCcKKy0JZWxpZiBbICIkMSIgPSAiT24iIF07IHRoZW4KKy0JCVBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEZXNrdG9wJyAiJDJ4JDMi CistCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICJFeHBsb3JlclxcRGVza3RvcHMi ICdEZWZhdWx0JyAiJDJ4JDMiCistCQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdF eHBsb3JlcicgJ0Rlc2t0b3AnICdEZWZhdWx0JworLQllbHNlCistCQlQT0xfRGVidWdfV2Fybmlu ZyAiVW5yZWNvZ25pemVkIGZsYWcgJyQxJyIKKy0JZmkKKytTZXRfRGVza3RvcCgpIHsKKysgICMg U2V0IGEgZGVza3RvcCBlbnZpcm9ubWVudAorKyAgIyBVc2FnZTogU2V0X0Rlc2t0b3AgKG9ufG9m ZikgW3dpZHRoXSBbaGVpZ2h0XQorKworKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgRGVz a3RvcCA6ICQxICQyICQzIgorKyAgWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0RlYnVnX0Zh dGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCisrCisrICBpZiBbICIkMSIgPSAiT2ZmIiBdOyB0aGVu CisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ1gxMSBEcml2ZXInICdEZXNr dG9wJyAiLTEiCisrICAgICMgUmVtb3ZlIGtleQorKyAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3Ry eVdpbmVQYWlyICdFeHBsb3JlcicgJ0Rlc2t0b3AnICdkZWZhdWx0JworKyAgZWxpZiBbICIkMSIg PSAiT24iIF07IHRoZW4KKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnWDEx IERyaXZlcicgJ0Rlc2t0b3AnICIkMngkMyIKKysgICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlX aW5lUGFpciAiRXhwbG9yZXJcXERlc2t0b3BzIiAnRGVmYXVsdCcgIiQyeCQzIgorKyAgICBQT0xf V2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdFeHBsb3JlcicgJ0Rlc2t0b3AnICdEZWZhdWx0 JworKyAgZWxzZQorKyAgICBQT0xfRGVidWdfV2FybmluZyAiVW5yZWNvZ25pemVkIGZsYWcgJyQx JyIKKysgIGZpCisgfQorIAorLVNldF9Tb3VuZFNhbXBsZVJhdGUgKCkKKy17CistCSMgU2V0IFNv dW5kIHNhbXBsZSByYXRlCistCSMgVXNhZ2U6IFNldF9Tb3VuZFNhbXBsZVJhdGUgW3ZhbHVlXQor LQkjIHZhbHVlcyBjYW4gYmU6IDQ4MDAwLCA0NDEwMCwgMjIwNTAsIDE2MDAwLCAxMTAyNSwgODAw MAorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBTb3VuZFNhbXBsZVJhdGUgdG8gJDEiCist CVsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qg c2V0IgorLQorLQlpZiBbIC1uICIkMSIgXTsgdGhlbgorLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdEZWZhdWx0U2FtcGxlUmF0ZScgIiQxIgorLQllbHNl CistCQkjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPworLQkJUE9MX0Rl YnVnX1dhcm5pbmcgIlNhbXBsZSByYXRlIG1pc3NpbmcsIHNraXBwZWQiCistCWZpCisrU2V0X1Nv dW5kU2FtcGxlUmF0ZSgpIHsKKysgICMgU2V0IFNvdW5kIHNhbXBsZSByYXRlCisrICAjIFVzYWdl OiBTZXRfU291bmRTYW1wbGVSYXRlIFt2YWx1ZV0KKysgICMgdmFsdWVzIGNhbiBiZTogNDgwMDAs IDQ0MTAwLCAyMjA1MCwgMTYwMDAsIDExMDI1LCA4MDAwCisrICBQT0xfRGVidWdfTWVzc2FnZSAi U2V0dGluZyBTb3VuZFNhbXBsZVJhdGUgdG8gJDEiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysKKysgIGlmIFsgLW4gIiQx IiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNv dW5kJyAnRGVmYXVsdFNhbXBsZVJhdGUnICIkMSIKKysgIGVsc2UKKysgICAgIyBGSVhNRTogc2hv dWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KKysgICAgUE9MX0RlYnVnX1dhcm5pbmcgIlNh bXBsZSByYXRlIG1pc3NpbmcsIHNraXBwZWQiCisrICBmaQorIH0KKyAKKy1TZXRfU291bmRCaXRz UGVyU2FtcGxlICgpCisteworLQkjIFNldCBTb3VuZCBiaXRzIHBlciBzYW1wbGUgcmF0ZQorLQkj IFVzYWdlOiBTZXRfU291bmRCaXRzUGVyU2FwbGUgW3ZhbHVlXQorLQkjIHZhbHVlczogOCwgMTYK Ky0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgc291bmQgRGVmYXVsdHNCaXRzUGVyU2FtcGxl IHRvICQxIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQ UkVGSVggbm90IHNldCIKKy0KKy0JaWYgWyAtbiAiJDEiIF07IHRoZW4KKy0JCVBPTF9XaW5lX1Vw ZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnRGVmYXVsdEJpdHNQZXJTYW1wbGUn ICIkMSIKKy0JZWxzZQorLQkJIyBGSVhNRTogc2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVh ZD8KKy0JCVBPTF9EZWJ1Z19XYXJuaW5nICJCaXRzUGVyU2FtcGxlIG1pc3NpbmcsIHNraXBwZWQi CistCWZpCisrU2V0X1NvdW5kQml0c1BlclNhbXBsZSgpIHsKKysgICMgU2V0IFNvdW5kIGJpdHMg cGVyIHNhbXBsZSByYXRlCisrICAjIFVzYWdlOiBTZXRfU291bmRCaXRzUGVyU2FwbGUgW3ZhbHVl XQorKyAgIyB2YWx1ZXM6IDgsIDE2CisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBzb3Vu ZCBEZWZhdWx0c0JpdHNQZXJTYW1wbGUgdG8gJDEiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysKKysgIGlmIFsgLW4gIiQx IiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNv dW5kJyAnRGVmYXVsdEJpdHNQZXJTYW1wbGUnICIkMSIKKysgIGVsc2UKKysgICAgIyBGSVhNRTog c2hvdWxkIHdlIGRyb3AgdGhlIG5hbWUgaW5zdGVhZD8KKysgICAgUE9MX0RlYnVnX1dhcm5pbmcg IkJpdHNQZXJTYW1wbGUgbWlzc2luZywgc2tpcHBlZCIKKysgIGZpCisgfQorIAorLVBPTF9XaW5l X0luc3RhbGxGb250cygpCisteworLQkjIEluc3RhbGwgbWljcm9zb2Z0IGZvbnRzCistCSMgVXNh Z2U6IFBPTF9XaW5lX0luc3RhbGxGb250cworLQlwdXNoZCAuCistCVBPTF9DYWxsIFBPTF9JbnN0 YWxsX2NvcmVmb250cworLSAgICAgICAgcG9wZAorK1BPTF9XaW5lX0luc3RhbGxGb250cygpIHsK KysgICMgSW5zdGFsbCBtaWNyb3NvZnQgZm9udHMKKysgICMgVXNhZ2U6IFBPTF9XaW5lX0luc3Rh bGxGb250cworKyAgcHVzaGQgLgorKyAgUE9MX0NhbGwgUE9MX0luc3RhbGxfY29yZWZvbnRzCisr ICBwb3BkCisgfQorIAorLVNldF9Tb3VuZEhhcmR3YXJlQWNjZWxlcmF0aW9uICgpCisteworLQkj IFNldCBzb3VuZCBkcml2ZXIgaGFyZHdhcmUgYWNjZWxlcmF0aW9uCistCSMgVmFsdWVzIDogRnVs bCwgU3RhbmRhcmQsIEJhc2ljLCBFbXVsYXRpb24KKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRp bmcgU291bmQgSGFyZHdhcmVBY2NlbGVyYXRpb24gdG8gJDEiCistCVsgLXogIiRXSU5FUFJFRklY IiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQorLQlpZiBbIC1u ICIkMSIgXTsgdGhlbgorLQkJUE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0 U291bmQnICdIYXJkd2FyZUFjY2VsZXJhdGlvbicgIiQxIgorLQllbHNlCistCQkjIEZJWE1FOiBz aG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPworLQkJUE9MX0RlYnVnX1dhcm5pbmcgIkhh cmR3YXJlIGFjY2VsZXJhdGlvbiBtb2RlIG1pc3NpbmcsIHNraXBwZWQiCistCWZpCisrU2V0X1Nv dW5kSGFyZHdhcmVBY2NlbGVyYXRpb24oKSB7CisrICAjIFNldCBzb3VuZCBkcml2ZXIgaGFyZHdh cmUgYWNjZWxlcmF0aW9uCisrICAjIFZhbHVlcyA6IEZ1bGwsIFN0YW5kYXJkLCBCYXNpYywgRW11 bGF0aW9uCisrICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBTb3VuZCBIYXJkd2FyZUFjY2Vs ZXJhdGlvbiB0byAkMSIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRh bCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKworKyAgaWYgWyAtbiAiJDEiIF07IHRoZW4KKysgICAg UE9MX1dpbmVfVXBkYXRlUmVnaXN0cnlXaW5lUGFpciAnRGlyZWN0U291bmQnICdIYXJkd2FyZUFj Y2VsZXJhdGlvbicgIiQxIgorKyAgZWxzZQorKyAgICAjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0 aGUgbmFtZSBpbnN0ZWFkPworKyAgICBQT0xfRGVidWdfV2FybmluZyAiSGFyZHdhcmUgYWNjZWxl cmF0aW9uIG1vZGUgbWlzc2luZywgc2tpcHBlZCIKKysgIGZpCisgfQorIAorLVNldF9Tb3VuZEVt dWxEcml2ZXIgKCkKKy17CistCSMgU2V0IHNvdW5kIGVtdWwgZHJpdmVyCistCSMgVXNhZ2U6IFNl dF9Tb3VuZEVtdWxEcml2ZXIoWXxOKQorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBTb3Vu ZCBFbXVsRHJpdmVyIHRvICQxIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdf RmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0KKy0JaWYgWyAtbiAiJDEiIF07IHRoZW4KKy0J CVBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnRW11bERyaXZl cicgIiQxIgorLQllbHNlCistCQkjIEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0 ZWFkPworLQkJUE9MX0RlYnVnX1dhcm5pbmcgIlNvdW5kIGVtdWxhdGlvbiBtb2RlIG1pc3Npbmcs IHNraXBwZWQiCistCWZpCisrU2V0X1NvdW5kRW11bERyaXZlcigpIHsKKysgICMgU2V0IHNvdW5k IGVtdWwgZHJpdmVyCisrICAjIFVzYWdlOiBTZXRfU291bmRFbXVsRHJpdmVyKFl8TikKKysgIFBP TF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIFNvdW5kIEVtdWxEcml2ZXIgdG8gJDEiCisrICBbIC16 ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIK KysKKysgIGlmIFsgLW4gIiQxIiBdOyB0aGVuCisrICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5 V2luZVBhaXIgJ0RpcmVjdFNvdW5kJyAnRW11bERyaXZlcicgIiQxIgorKyAgZWxzZQorKyAgICAj IEZJWE1FOiBzaG91bGQgd2UgZHJvcCB0aGUgbmFtZSBpbnN0ZWFkPworKyAgICBQT0xfRGVidWdf V2FybmluZyAiU291bmQgZW11bGF0aW9uIG1vZGUgbWlzc2luZywgc2tpcHBlZCIKKysgIGZpCisg fQorIAorLVBPTF9Mb2FkVmFyX1BST0dSQU1GSUxFUygpCisteworLQkjIEdldCBQcm9ncmFtIEZp bGVzIGZvbGRlciBuYW1lIGFuZCBzdG9yZSBpdCB0byBQUk9HUkFNRklMRVMgdmFyaWFibGUKKy0J IyBVc2FnZTogUE9MX0xvYWRWYXJfUFJPR1JBTUZJTEVTCistCVBPTF9EZWJ1Z19NZXNzYWdlICJH ZXR0aW5nIFByb2dyYW0gRmlsZXMgbmFtZSIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9M X0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistCistCVBST0dSQU1GSUxFUz1gUE9M X1dpbmUgY21kIC9jIGVjaG8gIiVQcm9ncmFtRmlsZXMlIiB8dHIgLWQgJ1wwMTVcMDEyJ2AKKy0J aWYgWyAiJHtQUk9HUkFNRklMRVN9IiA9ICIlUHJvZ3JhbUZpbGVzJSIgXQorLQl0aGVuICMgVmFy IGlzIG5vdCBkZWZpbmVkIGJ5IHdpbmUKKy0JCWV4cG9ydCBQUk9HUkFNRklMRVM9IlByb2dyYW0g RmlsZXMiCistCWVsc2UKKy0JCWV4cG9ydCBQUk9HUkFNRklMRVM9IiR7UFJPR1JBTUZJTEVTOjN9 IgorLQlmaQorK1BPTF9Mb2FkVmFyX1BST0dSQU1GSUxFUygpIHsKKysgICMgR2V0IFByb2dyYW0g RmlsZXMgZm9sZGVyIG5hbWUgYW5kIHN0b3JlIGl0IHRvIFBST0dSQU1GSUxFUyB2YXJpYWJsZQor KyAgIyBVc2FnZTogUE9MX0xvYWRWYXJfUFJPR1JBTUZJTEVTCisrICBQT0xfRGVidWdfTWVzc2Fn ZSAiR2V0dGluZyBQcm9ncmFtIEZpbGVzIG5hbWUiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAm JiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysKKysgIFBST0dSQU1GSUxF Uz0kKFBPTF9XaW5lIGNtZCAvYyBlY2hvICIlUHJvZ3JhbUZpbGVzJSIgfCB0ciAtZCAnXDAxNVww MTInKQorKyAgaWYgWyAiJHtQUk9HUkFNRklMRVN9IiA9ICIlUHJvZ3JhbUZpbGVzJSIgXTsgdGhl biAjIFZhciBpcyBub3QgZGVmaW5lZCBieSB3aW5lCisrICAgIGV4cG9ydCBQUk9HUkFNRklMRVM9 IlByb2dyYW0gRmlsZXMiCisrICBlbHNlCisrICAgIGV4cG9ydCBQUk9HUkFNRklMRVM9IiR7UFJP R1JBTUZJTEVTOjN9IgorKyAgZmkKKyB9CisgCistU2V0X1dpbmVXaW5kb3dUaXRsZSAoKQorLXsK Ky0JI25hbWUgb2Ygd2luZG93ZWQgdGl0bGU6JDEKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRp bmcgd2luZG93IHRpdGxlIgorLQlbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0 YWwgIldJTkVQUkVGSVggbm90IHNldCIKKytTZXRfV2luZVdpbmRvd1RpdGxlKCkgeworKyAgI25h bWUgb2Ygd2luZG93ZWQgdGl0bGU6JDEKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXR0aW5nIHdp bmRvdyB0aXRsZSIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAi V0lORVBSRUZJWCBub3Qgc2V0IgorIAorLQlQT0xfRGVidWdfV2FybmluZyAiU2V0X1dpbmVXaW5k b3dUaXRsZSBoYXMgYmVlbiBkZXByZWNhdGVkICgjNTExOCkiCisrICBQT0xfRGVidWdfV2Fybmlu ZyAiU2V0X1dpbmVXaW5kb3dUaXRsZSBoYXMgYmVlbiBkZXByZWNhdGVkICgjNTExOCkiCisgfQor IAorLVBPTF9Mb2FkVmFyX0RldmljZSAoKQorLXsKKy0JIyBHZXQgR1BVIGRldmljZSBpZCBhbmQg dmVuZG9yIGlkCistCSMgVXNhZ2U6IFBPTF9Mb2FkVmFyX0RldmljZSBbLS1ub24taW50ZXJhY3Rp dmVdCistCSMgUmVzdWx0cyBhcmUgc3RvcmVkIGluIFZlbmRvcklEIGFuZCBEZXZpY2VJRCB2YXJp YWJsZXMKKy0KKy0JbG9jYWwgSU5URVJBQ1RJVkU9MQorLQlpZiBbICIkMSIgPSAiLS1ub24taW50 ZXJhY3RpdmUiIF07IHRoZW4KKy0JCUlOVEVSQUNUSVZFPScnCistCQlzaGlmdAorLQlmaQorLQor LQlbICIkSU5URVJBQ1RJVkUiIF0gJiYgUE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0 ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkQVBQTElDQVRJT05fVElUTEUgaXMgc2Nhbm5pbmcgeW91 ciBoYXJkd2FyZScpIiAiJFRJVExFIgorLQlWR0FfREVWSUNFUz0iJChQT0xfRGV0ZWN0VmlkZW9D YXJkcykiCistCSMgTW9yZSB0aGFuIG9uZSBjYXJkIGF2YWlsYWJsZT8KKy0JaWYgZ3JlcCAtcSAn ficgPDw8IiRWR0FfREVWSUNFUyI7IHRoZW4KKy0JCWlmIFsgIiRJTlRFUkFDVElWRSIgXTsgdGhl bgorLQkJCWxvY2FsIE9MRF9BUFBfQU5TV0VSPSIkQVBQX0FOU1dFUiIKKy0JCQlQT0xfU2V0dXBX aW5kb3dfbWVudSAiJChldmFsX2dldHRleHQgJ1NlbGVjdCB0aGUgbWFpbiB2aWRlb2NhcmQgdG8g cmVwb3J0OicpIiAiJFRJVExFIiAiJFZHQV9ERVZJQ0VTIiAifiIKKy0JCQlWR0FfREVWSUNFUz0i JEFQUF9BTlNXRVIiCistCQkJQVBQX0FOU1dFUj0iJE9MRF9BUFBfQU5TV0VSIgorLQkJZWxzZQor LQkJCSMgQ2FuJ3QgYXNrIHVzZXIsIHBpY2sgZmlyc3QKKy0JCQlWR0FfREVWSUNFUz0iJHtWR0Ff REVWSUNFUyUlfip9IgorLQkJZmkKKy0JZmkKKy0JZXhwb3J0IFZlbmRvcklEPWBjdXQgLWQnfCcg LWYyIDw8PCIkVkdBX0RFVklDRVMiYAorLQlleHBvcnQgRGV2aWNlSUQ9YGN1dCAtZCd8JyAtZjMg PDw8IiRWR0FfREVWSUNFUyJgCistCVBPTF9EZWJ1Z19NZXNzYWdlICJWZW5kb3JJRCA6ICRWZW5k b3JJRCIKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIkRldmljZUlEIDogJERldmljZUlEIgorK1BPTF9M b2FkVmFyX0RldmljZSgpIHsKKysgICMgR2V0IEdQVSBkZXZpY2UgaWQgYW5kIHZlbmRvciBpZAor KyAgIyBVc2FnZTogUE9MX0xvYWRWYXJfRGV2aWNlIFstLW5vbi1pbnRlcmFjdGl2ZV0KKysgICMg UmVzdWx0cyBhcmUgc3RvcmVkIGluIFZlbmRvcklEIGFuZCBEZXZpY2VJRCB2YXJpYWJsZXMKKysK KysgIGxvY2FsIElOVEVSQUNUSVZFPTEKKysgIGlmIFsgIiQxIiA9ICItLW5vbi1pbnRlcmFjdGl2 ZSIgXTsgdGhlbgorKyAgICBJTlRFUkFDVElWRT0nJworKyAgICBzaGlmdAorKyAgZmkKKysKKysg IFsgIiRJTlRFUkFDVElWRSIgXSAmJiBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJChldmFsX2dldHRl eHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRBUFBMSUNBVElPTl9USVRMRSBpcyBzY2FubmluZyB5b3Vy IGhhcmR3YXJlJykiICIkVElUTEUiCisrICBWR0FfREVWSUNFUz0iJChQT0xfRGV0ZWN0VmlkZW9D YXJkcykiCisrICAjIE1vcmUgdGhhbiBvbmUgY2FyZCBhdmFpbGFibGU/CisrICBpZiBncmVwIC1x ICd+JyA8PDwiJFZHQV9ERVZJQ0VTIjsgdGhlbgorKyAgICBpZiBbICIkSU5URVJBQ1RJVkUiIF07 IHRoZW4KKysgICAgICBsb2NhbCBPTERfQVBQX0FOU1dFUj0iJEFQUF9BTlNXRVIiCisrICAgICAg UE9MX1NldHVwV2luZG93X21lbnUgIiQoZXZhbF9nZXR0ZXh0ICdTZWxlY3QgdGhlIG1haW4gdmlk ZW9jYXJkIHRvIHJlcG9ydDonKSIgIiRUSVRMRSIgIiRWR0FfREVWSUNFUyIgIn4iCisrICAgICAg VkdBX0RFVklDRVM9IiRBUFBfQU5TV0VSIgorKyAgICAgIEFQUF9BTlNXRVI9IiRPTERfQVBQX0FO U1dFUiIKKysgICAgZWxzZQorKyAgICAgICMgQ2FuJ3QgYXNrIHVzZXIsIHBpY2sgZmlyc3QKKysg ICAgICBWR0FfREVWSUNFUz0iJHtWR0FfREVWSUNFUyUlfip9IgorKyAgICBmaQorKyAgZmkKKysg IGV4cG9ydCBWZW5kb3JJRD0kKGN1dCAtZCd8JyAtZjIgPDw8IiRWR0FfREVWSUNFUyIpCisrICBl eHBvcnQgRGV2aWNlSUQ9JChjdXQgLWQnfCcgLWYzIDw8PCIkVkdBX0RFVklDRVMiKQorKyAgUE9M X0RlYnVnX01lc3NhZ2UgIlZlbmRvcklEIDogJFZlbmRvcklEIgorKyAgUE9MX0RlYnVnX01lc3Nh Z2UgIkRldmljZUlEIDogJERldmljZUlEIgorIH0KKyAKKy1QT0xfRGV0ZWN0VmlkZW9DYXJkcyAo KSB7CistCSMgRGV0ZWN0IGtub3duIHZpZGVvY2FyZHMKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIkdl dHRpbmdzIEdQVSBpbmZvcm1hdGlvbnMiCistICAgICAgICBjYXNlICIkUE9MX09TIiBpbgorLSAg ICAgICAgICAgIExpbnV4fEZyZWVCU0QpCistCQlbIC14IC91c3Ivc2Jpbi9sc3BjaSBdICYmIExT UENJPS91c3Ivc2Jpbi9sc3BjaSB8fCBMU1BDST1sc3BjaQorLQkJIyBEZXZpY2UgTmFtZXxWZW5k b3IgSUR8RGV2aWNlIElEXG4uLi4KKy0gICAgICAgICAgICAgICAgIyBbMDMwMF0gPSBWR0EgY29t cGF0aWJsZSBjb250cm9sbGVyLCBbMDMwMl0gPSAzRCBjb250cm9sbGVyCistCQlWR0FfREVWSUNF Uz1gJExTUENJIC1ubiB8IHBlcmwgLW5lICdpZiAoL1xbMDMwWzAyXVxdLykgeyBzLy4qXF06ICgu KikgXFsoWzAtOWEtZl17NH0pOihbMC05YS1mXXs0fSlcXS4qL1wxfFwyfFwzLzsgcHJpbnQgfSdg CistICAgICAgICAgICAgICAgIDs7CistICAgICAgICAgICAgTWFjKQorLQkJIyBEZXZpY2UgTmFt ZXxWZW5kb3IgSUR8RGV2aWNlIElEXG4uLi4KKy0JCVZHQV9ERVZJQ0VTPWBzeXN0ZW1fcHJvZmls ZXIgU1BEaXNwbGF5c0RhdGFUeXBlIHwgcGVybCAtbmUgJ3MvXlxzKy8vOyBpZigvQ2hpcHNldCBN b2RlbDovKSB7IGNob21wOyBzL15bXjpdKjogLy87IHByaW50ICIkX3wiIH0gZWxzaWYoL1ZlbmRv cjovKSB7IGNob21wOyBzLy4qXCgweCguKilcKS9cMS87IHByaW50ICIkMXwiIH0gZWxzaWYgKC9E ZXZpY2UgSUQ6LykgeyBzL15bXjpdKjogMHgvLzsgcHJpbnQgfSdgCistICAgICAgICAgICAgICAg IDs7CistICAgICAgICAgICAgKikKKy0gICAgICAgICAgICAgICAgUE9MX0RlYnVnX0ZhdGFsICJV bnN1cHBvc2VkIG9wZXJhdGluZyBzeXN0ZW06ICRQT0xfT1MiCistICAgICAgICBlc2FjCistCSMg TW9yZSB0aGFuIG9uZSBjYXJkIGF2YWlsYWJsZT8KKy0JaWYgWyAkKHdjIC1sIDw8PCIkVkdBX0RF VklDRVMiKSAtZ3QgMSBdOyB0aGVuCistCQkjIFRyeSB0byBwdXQgd2hhdCdzIHByb2JhYmx5IHRo ZSBtYWluIGNhcmQgZmlyc3QKKy0JCVZHQV9ERVZJQ0VTPWBncmVwIC1pRSAnbnZpZGlhfGF0aXxh bWQnIDw8PCIkVkdBX0RFVklDRVMiOyBncmVwIC1pRXYgJ252aWRpYXxhdGl8YW1kJyA8PDwiJFZH QV9ERVZJQ0VTImAKKy0JZmkKKy0JIyBEZXZpY2UgTmFtZXxWZW5kb3IgSUR8RGV2aWNlIElEfi4u LgorLQllY2hvIC1uICIkVkdBX0RFVklDRVMifHRyICJcbiIgIn4iCisrUE9MX0RldGVjdFZpZGVv Q2FyZHMoKSB7CisrICAjIERldGVjdCBrbm93biB2aWRlb2NhcmRzCisrICBQT0xfRGVidWdfTWVz c2FnZSAiR2V0dGluZ3MgR1BVIGluZm9ybWF0aW9ucyIKKysgIGNhc2UgIiRQT0xfT1MiIGluCisr ICBMaW51eCB8IEZyZWVCU0QpCisrICAgIFsgLXggL3Vzci9zYmluL2xzcGNpIF0gJiYgTFNQQ0k9 L3Vzci9zYmluL2xzcGNpIHx8IExTUENJPWxzcGNpCisrICAgICMgRGV2aWNlIE5hbWV8VmVuZG9y IElEfERldmljZSBJRFxuLi4uCisrICAgICMgWzAzMDBdID0gVkdBIGNvbXBhdGlibGUgY29udHJv bGxlciwgWzAzMDJdID0gM0QgY29udHJvbGxlcgorKyAgICBWR0FfREVWSUNFUz0kKCRMU1BDSSAt bm4gfCBwZXJsIC1uZSAnaWYgKC9cWzAzMFswMl1cXS8pIHsgcy8uKlxdOiAoLiopIFxbKFswLTlh LWZdezR9KTooWzAtOWEtZl17NH0pXF0uKi9cMXxcMnxcMy87IHByaW50IH0nKQorKyAgICA7Owor KyAgTWFjKQorKyAgICAjIERldmljZSBOYW1lfFZlbmRvciBJRHxEZXZpY2UgSURcbi4uLgorKyAg ICBWR0FfREVWSUNFUz0kKHN5c3RlbV9wcm9maWxlciBTUERpc3BsYXlzRGF0YVR5cGUgfCBwZXJs IC1uZSAncy9eXHMrLy87IGlmKC9DaGlwc2V0IE1vZGVsOi8pIHsgY2hvbXA7IHMvXlteOl0qOiAv LzsgcHJpbnQgIiRffCIgfSBlbHNpZigvVmVuZG9yOi8pIHsgY2hvbXA7IHMvLipcKDB4KC4qKVwp L1wxLzsgcHJpbnQgIiQxfCIgfSBlbHNpZiAoL0RldmljZSBJRDovKSB7IHMvXlteOl0qOiAweC8v OyBwcmludCB9JykKKysgICAgOzsKKysgICopCisrICAgIFBPTF9EZWJ1Z19GYXRhbCAiVW5zdXBw b3NlZCBvcGVyYXRpbmcgc3lzdGVtOiAkUE9MX09TIgorKyAgICA7OworKyAgZXNhYworKyAgIyBN b3JlIHRoYW4gb25lIGNhcmQgYXZhaWxhYmxlPworKyAgaWYgWyAkKHdjIC1sIDw8PCIkVkdBX0RF VklDRVMiKSAtZ3QgMSBdOyB0aGVuCisrICAgICMgVHJ5IHRvIHB1dCB3aGF0J3MgcHJvYmFibHkg dGhlIG1haW4gY2FyZCBmaXJzdAorKyAgICBWR0FfREVWSUNFUz0kKAorKyAgICAgIGdyZXAgLWlF ICdudmlkaWF8YXRpfGFtZCcgPDw8IiRWR0FfREVWSUNFUyIKKysgICAgICBncmVwIC1pRXYgJ252 aWRpYXxhdGl8YW1kJyA8PDwiJFZHQV9ERVZJQ0VTIgorKyAgICApCisrICBmaQorKyAgIyBEZXZp Y2UgTmFtZXxWZW5kb3IgSUR8RGV2aWNlIElEfi4uLgorKyAgZWNobyAtbiAiJFZHQV9ERVZJQ0VT IiB8IHRyICJcbiIgIn4iCisgfQorIAorLVBPTF9Mb2FkVmFyX1NjcmVlblJlc29sdXRpb24gKCkK Ky17CistCWlmIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdIHx8IFsgIiRQT0xfT1MiID0gIkZyZWVC U0QiIF07IHRoZW4KKy0JCWxvY2FsIFJFU09MVVRJT049IiQoeGRweWluZm8gfCBncmVwIGRpbWVu c2lvbnMgfCBhd2sgJ3twcmludCAkMn0nKSIKKy0JCWV4cG9ydCBTY3JlZW5XaWR0aD0iJChlY2hv ICRSRVNPTFVUSU9OIHwgY3V0IC1keCAtZjEpIgorLQkJZXhwb3J0IFNjcmVlbkhlaWdodD0iJChl Y2hvICRSRVNPTFVUSU9OIHwgY3V0IC1keCAtZjIpIgorLQlmaQorLQlpZiBbICIkUE9MX09TIiA9 ICJNYWMiIF07IHRoZW4KKy0JCWV4cG9ydCBTY3JlZW5XaWR0aD0iJCgvdXNyL3NiaW4vc3lzdGVt X3Byb2ZpbGVyIFNQRGlzcGxheXNEYXRhVHlwZSB8IGdyZXAgUmVzb2x1dGlvbnwgYXdrICd7cHJp bnQgJDJ9JykiCistCQlleHBvcnQgU2NyZWVuSGVpZ2h0PSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJv ZmlsZXIgU1BEaXNwbGF5c0RhdGFUeXBlIHwgZ3JlcCBSZXNvbHV0aW9ufCBhd2sgJ3twcmludCAk NH0nKSIKKy0JZmkKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNjcmVlbiB3aWR0aDogJFNjcmVlbldp ZHRoIgorLQlQT0xfRGVidWdfTWVzc2FnZSAiU2NyZWVuIGhlaWdodDogJFNjcmVlbkhlaWdodCIK KytQT0xfTG9hZFZhcl9TY3JlZW5SZXNvbHV0aW9uKCkgeworKyAgaWYgWyAiJFBPTF9PUyIgPSAi TGludXgiIF0gfHwgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXTsgdGhlbgorKyAgICBsb2NhbCBS RVNPTFVUSU9OPSIkKHhkcHlpbmZvIHwgZ3JlcCBkaW1lbnNpb25zIHwgYXdrICd7cHJpbnQgJDJ9 JykiCisrICAgIGV4cG9ydCBTY3JlZW5XaWR0aD0iJChlY2hvICRSRVNPTFVUSU9OIHwgY3V0IC1k eCAtZjEpIgorKyAgICBleHBvcnQgU2NyZWVuSGVpZ2h0PSIkKGVjaG8gJFJFU09MVVRJT04gfCBj dXQgLWR4IC1mMikiCisrICBmaQorKyAgaWYgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOyB0aGVuCisr ICAgIGV4cG9ydCBTY3JlZW5XaWR0aD0iJCgvdXNyL3NiaW4vc3lzdGVtX3Byb2ZpbGVyIFNQRGlz cGxheXNEYXRhVHlwZSB8IGdyZXAgUmVzb2x1dGlvbiB8IGF3ayAne3ByaW50ICQyfScpIgorKyAg ICBleHBvcnQgU2NyZWVuSGVpZ2h0PSIkKC91c3Ivc2Jpbi9zeXN0ZW1fcHJvZmlsZXIgU1BEaXNw bGF5c0RhdGFUeXBlIHwgZ3JlcCBSZXNvbHV0aW9uIHwgYXdrICd7cHJpbnQgJDR9JykiCisrICBm aQorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNjcmVlbiB3aWR0aDogJFNjcmVlbldpZHRoIgorKyAg UE9MX0RlYnVnX01lc3NhZ2UgIlNjcmVlbiBoZWlnaHQ6ICRTY3JlZW5IZWlnaHQiCisgfQorIAor LVBPTF9XaW5lX1NldFZpZGVvRHJpdmVyKCkKKy17CistCSMgU2V0IHdpbmUgdmlkZW8gZHJpdmVy CistCSMgVXNhZ2UgUE9MX1dpbmVfU2V0VmlkZW9Ecml2ZXIKKy0JUE9MX0RlYnVnX01lc3NhZ2Ug IlNldCB3aW5lIHZpZGVvIGRyaXZlciIKKy0JWyAteiAiJFdJTkVQUkVGSVgiIF0gJiYgUE9MX0Rl YnVnX0ZhdGFsICJXSU5FUFJFRklYIG5vdCBzZXQiCistCVBPTF9Mb2FkVmFyX0RldmljZQorLQlE UlZJRD0idmdhLmRsbCIKKy0JWyAiJFZlbmRvcklEIiA9ICIxMGRlIiBdICYmIERSVklEPSJudjRf ZGlzcC5kbGwiCistCVsgIiRWZW5kb3JJRCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0iYXRpMmR2YWcu ZGxsIgorLQlbICIkVmVuZG9ySUQiID0gIjgwODYiIF0gJiYgRFJWSUQ9ImlnNGljZDMyLmRsbCIK Ky0JUE9MX0RlYnVnX01lc3NhZ2UgIkRldGVjdGVkIHZpZGVvIGRyaXZlcjogJERSVklEIgorLQor LQlQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSBWR0FfSURfZml4IDw8LSBfRU9GSU5JXworK1BPTF9X aW5lX1NldFZpZGVvRHJpdmVyKCkgeworKyAgIyBTZXQgd2luZSB2aWRlbyBkcml2ZXIKKysgICMg VXNhZ2UgUE9MX1dpbmVfU2V0VmlkZW9Ecml2ZXIKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJTZXQg d2luZSB2aWRlbyBkcml2ZXIiCisrICBbIC16ICIkV0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdf RmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKysgIFBPTF9Mb2FkVmFyX0RldmljZQorKyAgRFJW SUQ9InZnYS5kbGwiCisrICBbICIkVmVuZG9ySUQiID0gIjEwZGUiIF0gJiYgRFJWSUQ9Im52NF9k aXNwLmRsbCIKKysgIFsgIiRWZW5kb3JJRCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0iYXRpMmR2YWcu ZGxsIgorKyAgWyAiJFZlbmRvcklEIiA9ICI4MDg2IiBdICYmIERSVklEPSJpZzRpY2QzMi5kbGwi CisrICBQT0xfRGVidWdfTWVzc2FnZSAiRGV0ZWN0ZWQgdmlkZW8gZHJpdmVyOiAkRFJWSUQiCisr CisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeSBWR0FfSURfZml4IDw8LV9FT0ZJTklfCisgCVtI S0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmVcXFdpbmVcXERpcmVjdDNEXQorIAkiVmlkZW9QQ0lW ZW5kb3JJRCI9ZHdvcmQ6MDAwMCRWZW5kb3JJRAorIAkiVmlkZW9QQ0lEZXZpY2VJRCI9ZHdvcmQ6 MDAwMCREZXZpY2VJRAorQEAgLTQ2Nyw4MDAgKzQ1MSw3NzcgQEAgUE9MX1dpbmVfU2V0VmlkZW9E cml2ZXIoKQorIAlfRU9GSU5JXworIH0KKyAKKy1QT0xfV2luZV9EZXRlY3RDYXJkKCkKKy17Cist CSMgU2V0IHdpbmUgdmlkZW8gZHJpdmVyCistCSMgVXNhZ2UgUE9MX1dpbmVfRGV0ZWN0Q2FyZAor LQlQT0xfRGVidWdfTWVzc2FnZSAiRGV0ZWN0aW5nIHZpZGVvIGNhcmQiCistCVsgLXogIiRXSU5F UFJFRklYIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorLQlQT0xf TG9hZFZhcl9EZXZpY2UKKy0JRFJWSUQ9Ik9USEVSIgorLQlbICIkVmVuZG9ySUQiID0gIjEwZGUi IF0gJiYgRFJWSUQ9Ik5WSURJQSIKKy0JWyAiJFZlbmRvcklEIiA9ICIxMDAyIiBdICYmIERSVklE PSJBVEkiCistCVsgIiRWZW5kb3JJRCIgPSAiODA4NiIgXSAmJiBEUlZJRD0iSU5URUwiCistCVBP TF9EZWJ1Z19NZXNzYWdlICJEZXRlY3RlZCB2aWRlbyBjYXJkOiAkRFJWSUQiCistCistCWVjaG8g JERSVklECisrUE9MX1dpbmVfRGV0ZWN0Q2FyZCgpIHsKKysgICMgU2V0IHdpbmUgdmlkZW8gZHJp dmVyCisrICAjIFVzYWdlIFBPTF9XaW5lX0RldGVjdENhcmQKKysgIFBPTF9EZWJ1Z19NZXNzYWdl ICJEZXRlY3RpbmcgdmlkZW8gY2FyZCIKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBPTF9E ZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKyAgUE9MX0xvYWRWYXJfRGV2aWNlCisr ICBEUlZJRD0iT1RIRVIiCisrICBbICIkVmVuZG9ySUQiID0gIjEwZGUiIF0gJiYgRFJWSUQ9Ik5W SURJQSIKKysgIFsgIiRWZW5kb3JJRCIgPSAiMTAwMiIgXSAmJiBEUlZJRD0iQVRJIgorKyAgWyAi JFZlbmRvcklEIiA9ICI4MDg2IiBdICYmIERSVklEPSJJTlRFTCIKKysgIFBPTF9EZWJ1Z19NZXNz YWdlICJEZXRlY3RlZCB2aWRlbyBjYXJkOiAkRFJWSUQiCisrCisrICBlY2hvICREUlZJRAorIH0K KyAKKy0KKy0KKy1QT0xfQXV0b1dpbmUgKCkKKy17CistCSMgRGV0ZWN0IGlmIHRoZSBmaWxlIGlz IGEgLmV4ZSBvciBhIC5tc2kgZmlsZSBhbmQgcnVuIGl0IHdpdGggUE9MX1dpbmUKKy0JIyBTYW1l IHVzYWdlIHRoYW4gIndpbmUiCistCVNFVFVQX1BBVEg9IiRAIgorLQkjIHJlbW92ZSBldmVyeXRo aW5nIHVwIHRvIHRoZSBsYXN0IGRvdAorLQlleHRlbnNpb249IiR7U0VUVVBfUEFUSCMjKi59Igor LQlpZiBbICIkZXh0ZW5zaW9uIiA9ICJtc2kiIF0KKy0JdGhlbgorLQkJUE9MX1dpbmUgbXNpZXhl YyAvaSAiJFNFVFVQX1BBVEgiCistCWVsc2UKKy0JCSMgRklYTUUgL3VuaXg/CistCQlQT0xfV2lu ZSAiJFNFVFVQX1BBVEgiCistCWZpCisrUE9MX0F1dG9XaW5lKCkgeworKyAgIyBEZXRlY3QgaWYg dGhlIGZpbGUgaXMgYSAuZXhlIG9yIGEgLm1zaSBmaWxlIGFuZCBydW4gaXQgd2l0aCBQT0xfV2lu ZQorKyAgIyBTYW1lIHVzYWdlIHRoYW4gIndpbmUiCisrICBTRVRVUF9QQVRIPSIkQCIKKysgICMg cmVtb3ZlIGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGxhc3QgZG90CisrICBleHRlbnNpb249IiR7U0VU VVBfUEFUSCMjKi59IgorKyAgaWYgWyAiJGV4dGVuc2lvbiIgPSAibXNpIiBdOyB0aGVuCisrICAg IFBPTF9XaW5lIG1zaWV4ZWMgL2kgIiRTRVRVUF9QQVRIIgorKyAgZWxzZQorKyAgICAjIEZJWE1F IC91bml4PworKyAgICBQT0xfV2luZSAiJFNFVFVQX1BBVEgiCisrICBmaQorIH0KKyAKKy1QT0xf V2luZSAoKQorLXsKKy0JIyBSdW4gdGhlIGdvb2Qgd2luZXZlcnNpb24gYW5kIHN0b3JlIHRoZSBy ZXN1bHQgdG8gYSBsb2dmaWxlCistCSMgU2FtZSB1c2FnZSB0aGFuICJ3aW5lIgorLQlta2RpciAt cCAiJFdJTkVQUkVGSVgiCistCXRvdWNoICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCist CWxvY2FsIE5vRXJyb3JzCistCWlmIFsgIiQxIiA9ICItLWlnbm9yZS1lcnJvcnMiIF07IHRoZW4K Ky0JCU5vRXJyb3JzPSJUcnVlIgorLQkJc2hpZnQKKy0JZmkKKy0KKy0JaWYgWyAhICIkKFBPTF9D b25maWdfUmVhZCBOT19GU0NIRUNLKSIgPSAiVFJVRSIgXTsgdGhlbgorLQkJaWYgWyAiJDEiID0g InN0YXJ0IiBdOyB0aGVuCistCQkJaWYgWyAiJDIiID0gIi91bml4IiBdOyB0aGVuCistCQkJCVBP TF9TeXN0ZW1fQ2hlY2tGUyAiJDMiCistCQkJZWxzZQorLQkJCQlQT0xfU3lzdGVtX0NoZWNrRlMg IiQyIgorLQkJCWZpCistCQllbHNlCistCQkJUE9MX1N5c3RlbV9DaGVja0ZTICIkMSIKKy0JCWZp CistCWVsc2UKKy0JCVBPTF9EZWJ1Z19NZXNzYWdlICIqKiBGaWxlc3lzdGVtIGNoZWNrcyBkaXNh YmxlZCAqKiIKKy0JZmkKKy0KKy0JUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKy0JUE9MX0Rl YnVnX01lc3NhZ2UgIlJ1bm5pbmcgd2luZS0kUE9MX1dJTkVWRVJTSU9OICIkQCIgKFdvcmtpbmcg ZGlyZWN0b3J5IDogJFBXRCkiCistCVBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiUnVubmluZyB3aW5l LSRQT0xfV0lORVZFUlNJT04gIiRAIiAoV29ya2luZyBkaXJlY3RvcnkgOiAkUFdEKSIKKy0KKy0g ICAgICAgICMgRWl0aGVyIHRoYXQgb3IgbW9uaXRvciAiZXJyOnByb2Nlc3M6Y3JlYXRlX3Byb2Nl c3Mgc3RhcnRpbmcgNjQtYml0IHByb2Nlc3MgTCJ4eHgiIG5vdCBzdXBwb3J0ZWQgaW4gMzItYml0 IHdpbmVwcmVmaXhcbndpbmU6IEJhZCBFWEUgZm9ybWF0IGZvciB4eHguIiBpbiBsb2dzCistICAg ICAgICBpZiBbICIkUE9MX0FSQ0giID0gIng4NiIgLWEgLWUgIiQxIiBdOyB0aGVuCistICAgICAg ICAgICAgbG9jYWwgRVhFRklMRT0iJDEiCistICAgICAgICAgICAgaWYgUE9MX1N5c3RlbV9pczY0 Yml0ICIkRVhFRklMRSI7IHRoZW4KKy0gICAgICAgICAgICAgICAgTk9CVUdSRVBPUlQ9IlRSVUUi ICMgdXNlciBtaXN0YWtlCistICAgICAgICAgICAgICAgIFBPTF9EZWJ1Z19GYXRhbCAiJChldmFs X2dldHRleHQgJ1N0YXJ0aW5nIDY0LWJpdCBwcm9jZXNzICRFWEVGSUxFIGlzIG5vdCBzdXBwb3J0 ZWQgaW4gMzItYml0IHZpcnR1YWwgZHJpdmVzJykiCistICAgICAgICAgICAgZmkKKy0gICAgICAg IGZpCistCistICAgICAgICBpZiBbICEgIiRXSU5FTUVOVUJVSUxERVJfQUxFUlQiIF07IHRoZW4K Ky0JCVBPTF9EZWJ1Z19NZXNzYWdlICJOb3RpY2U6IFBsYXlPbkxpbnV4IGRlbGliZXJhdGVseSBk aXNhYmxlcyB3aW5lbWVudWJ1aWxkZXIuIFNlZSBodHRwOi8vd3d3LnBsYXlvbmxpbnV4LmNvbS9m ci9wYWdlLTI2LVdpbmVtZW51YnVpbGRlci5odG1sIgorLQkJV0lORU1FTlVCVUlMREVSX0FMRVJU PSJEb25lIgorLQlmaQorLQlpZiBbICIkMSIgPSAicmVnZWRpdCIgLWEgISAiJDIiID0gIiIgXTsg dGhlbgorLQkJaWYgWyAtZSAiJDIiIF07IHRoZW4KKy0JCQlQT0xfRGVidWdfTG9nVG9QcmVmaXgg IkNvbnRlbnQgb2YgJDIiCistCQkJKGVjaG8gJy0tLS0tLS0tLS0tJworLQkJCSBjYXQgIiQyIgor LQkJCSBlY2hvICctLS0tLS0tLS0tLScpID4+ICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ci CistCQllbHNlCistCQkJUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJyZWdlZGl0IHBhcmFtZXRlciAn JDInIGlzIG5vdCBhIGZpbGUsIG5vdCBkdW1wZWQgdG8gbG9nIgorLQkJZmkKKy0JZWxpZiBbICIk MSIgPSAicmVnZWRpdCIgXTsgdGhlbgorLQkJUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJVc2VyIG1v ZGlmaWVkIHNvbWV0aGluZyBpbiB0aGUgcmVnaXN0cnkgbWFudWFsbHkiCistCWZpCistCistCist CWlmIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdIHx8IFsgIiRQT0xfT1MiID0gIk1hYyIgXTsKKy0J dGhlbgorLQkJaWYgWyAiJExPR0ZJTEUiID0gIi9kZXYvbnVsbCIgXTsgdGhlbgorLQkJCSRCRUZP UkVfV0lORSAkKFBPTF9Db25maWdfUmVhZCBCRUZPUkVfV0lORSkgd2luZSAiJEAiICAyPiA+KGdy ZXAgLXYgbWVudWJ1aWxkZXIgLS1saW5lLWJ1ZmZlcmVkIHwgdGVlIC1hICIkV0lORVBSRUZJWC9w bGF5b25saW51eC5sb2ciID4mMikgPiA+KHRlZSAtYSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgu bG9nIikKKy0JCQllcnJvcnM9JD8KKy0JCWVsc2UKKy0JCQkkQkVGT1JFX1dJTkUgJChQT0xfQ29u ZmlnX1JlYWQgQkVGT1JFX1dJTkUpIHdpbmUgIiRAIiAyPiA+KGdyZXAgLXYgbWVudWJ1aWxkZXIg LS1saW5lLWJ1ZmZlcmVkIHwgdGVlIC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmxvZyIgPiYyKSA+ID4odGVlIC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmxvZyIpCistCQkJZXJyb3JzPSQ/CistCQlmaQorLQllbHNlCistCQkjIEZJWE1FCistCQkk QkVGT1JFX1dJTkUgJChQT0xfQ29uZmlnX1JlYWQgQkVGT1JFX1dJTkUpIHdpbmUgIiRAIiAgMj4g IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIgPiAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgu bG9nIgorLQkJZXJyb3JzPSQ/CistCWZpCistCistCWlmIFsgIiRlcnJvcnMiICE9IDAgLWEgIiRO b0Vycm9ycyIgIT0gIlRydWUiIC1hICIkUE9MX0lnbm9yZVdpbmVFcnJvcnMiICE9ICJUcnVlIiBd OyB0aGVuCistCQlQT0xfRGVidWdfRXJyb3IgIiQoZXZhbF9nZXR0ZXh0ICdXaW5lIHNlZW1zIHRv IGhhdmUgY3Jhc2hlZFxuXG5JZiB5b3VyIHByb2dyYW0gaXMgcnVubmluZywganVzdCBpZ25vcmUg dGhpcyBtZXNzYWdlJykiCistCWZpCistCVBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIHJldHVybjog JGVycm9ycyIKKy0JcmV0dXJuICRlcnJvcnMKKytQT0xfV2luZSgpIHsKKysgICMgUnVuIHRoZSBn b29kIHdpbmV2ZXJzaW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IHRvIGEgbG9nZmlsZQorKyAgIyBT YW1lIHVzYWdlIHRoYW4gIndpbmUiCisrICBta2RpciAtcCAiJFdJTkVQUkVGSVgiCisrICB0b3Vj aCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIgorKyAgbG9jYWwgTm9FcnJvcnMKKysgIGlm IFsgIiQxIiA9ICItLWlnbm9yZS1lcnJvcnMiIF07IHRoZW4KKysgICAgTm9FcnJvcnM9IlRydWUi CisrICAgIHNoaWZ0CisrICBmaQorKworKyAgaWYgWyAhICIkKFBPTF9Db25maWdfUmVhZCBOT19G U0NIRUNLKSIgPSAiVFJVRSIgXTsgdGhlbgorKyAgICBpZiBbICIkMSIgPSAic3RhcnQiIF07IHRo ZW4KKysgICAgICBpZiBbICIkMiIgPSAiL3VuaXgiIF07IHRoZW4KKysgICAgICAgIFBPTF9TeXN0 ZW1fQ2hlY2tGUyAiJDMiCisrICAgICAgZWxzZQorKyAgICAgICAgUE9MX1N5c3RlbV9DaGVja0ZT ICIkMiIKKysgICAgICBmaQorKyAgICBlbHNlCisrICAgICAgUE9MX1N5c3RlbV9DaGVja0ZTICIk MSIKKysgICAgZmkKKysgIGVsc2UKKysgICAgUE9MX0RlYnVnX01lc3NhZ2UgIioqIEZpbGVzeXN0 ZW0gY2hlY2tzIGRpc2FibGVkICoqIgorKyAgZmkKKysKKysgIFBPTF9XaW5lX0F1dG9TZXRWZXJz aW9uRW52CisrICBQT0xfRGVidWdfTWVzc2FnZSAiUnVubmluZyB3aW5lLSRQT0xfV0lORVZFUlNJ T04gIiRAIiAoV29ya2luZyBkaXJlY3RvcnkgOiAkUFdEKSIKKysgIFBPTF9EZWJ1Z19Mb2dUb1By ZWZpeCAiUnVubmluZyB3aW5lLSRQT0xfV0lORVZFUlNJT04gIiRAIiAoV29ya2luZyBkaXJlY3Rv cnkgOiAkUFdEKSIKKysKKysgICMgRWl0aGVyIHRoYXQgb3IgbW9uaXRvciAiZXJyOnByb2Nlc3M6 Y3JlYXRlX3Byb2Nlc3Mgc3RhcnRpbmcgNjQtYml0IHByb2Nlc3MgTCJ4eHgiIG5vdCBzdXBwb3J0 ZWQgaW4gMzItYml0IHdpbmVwcmVmaXhcbndpbmU6IEJhZCBFWEUgZm9ybWF0IGZvciB4eHguIiBp biBsb2dzCisrICBpZiBbICIkUE9MX0FSQ0giID0gIng4NiIgLWEgLWUgIiQxIiBdOyB0aGVuCisr ICAgIGxvY2FsIEVYRUZJTEU9IiQxIgorKyAgICBpZiBQT0xfU3lzdGVtX2lzNjRiaXQgIiRFWEVG SUxFIjsgdGhlbgorKyAgICAgIE5PQlVHUkVQT1JUPSJUUlVFIiAjIHVzZXIgbWlzdGFrZQorKyAg ICAgIFBPTF9EZWJ1Z19GYXRhbCAiJChldmFsX2dldHRleHQgJ1N0YXJ0aW5nIDY0LWJpdCBwcm9j ZXNzICRFWEVGSUxFIGlzIG5vdCBzdXBwb3J0ZWQgaW4gMzItYml0IHZpcnR1YWwgZHJpdmVzJyki CisrICAgIGZpCisrICBmaQorKworKyAgaWYgWyAhICIkV0lORU1FTlVCVUlMREVSX0FMRVJUIiBd OyB0aGVuCisrICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJOb3RpY2U6IFBsYXlPbkxpbnV4IGRlbGli ZXJhdGVseSBkaXNhYmxlcyB3aW5lbWVudWJ1aWxkZXIuIFNlZSBodHRwOi8vd3d3LnBsYXlvbmxp bnV4LmNvbS9mci9wYWdlLTI2LVdpbmVtZW51YnVpbGRlci5odG1sIgorKyAgICBXSU5FTUVOVUJV SUxERVJfQUxFUlQ9IkRvbmUiCisrICBmaQorKyAgaWYgWyAiJDEiID0gInJlZ2VkaXQiIC1hICEg IiQyIiA9ICIiIF07IHRoZW4KKysgICAgaWYgWyAtZSAiJDIiIF07IHRoZW4KKysgICAgICBQT0xf RGVidWdfTG9nVG9QcmVmaXggIkNvbnRlbnQgb2YgJDIiCisrICAgICAgKAorKyAgICAgICAgZWNo byAnLS0tLS0tLS0tLS0nCisrICAgICAgICBjYXQgIiQyIgorKyAgICAgICAgZWNobyAnLS0tLS0t LS0tLS0nCisrICAgICAgKSA+PiIkV0lORVBSRUZJWC9wbGF5b25saW51eC5sb2ciCisrICAgIGVs c2UKKysgICAgICBQT0xfRGVidWdfTG9nVG9QcmVmaXggInJlZ2VkaXQgcGFyYW1ldGVyICckMicg aXMgbm90IGEgZmlsZSwgbm90IGR1bXBlZCB0byBsb2ciCisrICAgIGZpCisrICBlbGlmIFsgIiQx IiA9ICJyZWdlZGl0IiBdOyB0aGVuCisrICAgIFBPTF9EZWJ1Z19Mb2dUb1ByZWZpeCAiVXNlciBt b2RpZmllZCBzb21ldGhpbmcgaW4gdGhlIHJlZ2lzdHJ5IG1hbnVhbGx5IgorKyAgZmkKKysKKysg IFtbICRPU1hfVkVSU0lPTiAtZ2UgMTkgXV0gJiYgV0lORUNNRD0id2luZTMyb242NCIgfHwgV0lO RUNNRD0id2luZSIKKysgIFtbICRPU1hfVkVSU0lPTiAtZ2UgMTkgXV0gJiYgW1sgLWUgIiQxIiBd XSAmJiB4YXR0ciAtZCBjb20uYXBwbGUucXVhcmFudGluZSAiJDEiCisrICBpZiBbICIkUE9MX09T IiA9ICJMaW51eCIgXSB8fCBbICIkUE9MX09TIiA9ICJNYWMiIF07IHRoZW4KKysgICAgaWYgWyAi JExPR0ZJTEUiID0gIi9kZXYvbnVsbCIgXTsgdGhlbgorKyAgICAgICRCRUZPUkVfV0lORSAkKFBP TF9Db25maWdfUmVhZCBCRUZPUkVfV0lORSkgJFdJTkVDTUQgIiRAIiAyPiA+KGdyZXAgLXYgbWVu dWJ1aWxkZXIgLS1saW5lLWJ1ZmZlcmVkIHwgdGVlIC1hICIkV0lORVBSRUZJWC9wbGF5b25saW51 eC5sb2ciID4mMikgPiA+KHRlZSAtYSAiJFdJTkVQUkVGSVgvcGxheW9ubGludXgubG9nIikKKysg ICAgICBlcnJvcnM9JD8KKysgICAgZWxzZQorKyAgICAgICRCRUZPUkVfV0lORSAkKFBPTF9Db25m aWdfUmVhZCBCRUZPUkVfV0lORSkgJFdJTkVDTUQgIiRAIiAyPiA+KGdyZXAgLXYgbWVudWJ1aWxk ZXIgLS1saW5lLWJ1ZmZlcmVkIHwgdGVlIC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlv bmxpbnV4LmxvZyIgPiYyKSA+ID4odGVlIC1hICIkTE9HRklMRSIgIiRXSU5FUFJFRklYL3BsYXlv bmxpbnV4LmxvZyIpCisrICAgICAgZXJyb3JzPSQ/CisrICAgIGZpCisrICBlbHNlCisrICAgICMg RklYTUUKKysgICAgJEJFRk9SRV9XSU5FICQoUE9MX0NvbmZpZ19SZWFkIEJFRk9SRV9XSU5FKSAk V0lORUNNRCAiJEAiIDI+IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmxvZyIgPiIkV0lORVBSRUZJ WC9wbGF5b25saW51eC5sb2ciCisrICAgIGVycm9ycz0kPworKyAgZmkKKysKKysgIGlmIFsgIiRl cnJvcnMiICE9IDAgLWEgIiROb0Vycm9ycyIgIT0gIlRydWUiIC1hICIkUE9MX0lnbm9yZVdpbmVF cnJvcnMiICE9ICJUcnVlIiBdOyB0aGVuCisrICAgIFBPTF9EZWJ1Z19FcnJvciAiJChldmFsX2dl dHRleHQgJ1dpbmUgc2VlbXMgdG8gaGF2ZSBjcmFzaGVkXG5cbklmIHlvdXIgcHJvZ3JhbSBpcyBy dW5uaW5nLCBqdXN0IGlnbm9yZSB0aGlzIG1lc3NhZ2UnKSIKKysgIGZpCisrICBQT0xfRGVidWdf TWVzc2FnZSAiV2luZSByZXR1cm46ICRlcnJvcnMiCisrICByZXR1cm4gJGVycm9ycworIH0KKyAK Ky1QT0xfV2luZV9TZWxlY3RQcmVmaXgoKQorLXsKKy0JIyBTZWxlY3QgYSB3aW5lcHJlZml4IGFu ZCByZW1vdmUgdW5leHBlY3RlZCBjaGFycworLQkjIFVzYWdlOiBQT0xfV2luZV9TZWxlY3RQcmVm aXggW3ByZWZpeG5hbWVdCistCVBSRUZOQU1FPWBwcmludGYgIiQxInwgdHIgLWMgW1thLXpBLVow LTldXC5dICdfJ2AKKy0JUE9MX0RlYnVnX01lc3NhZ2UgIlNlbGVjdGluZyBwcmVmaXg6ICRQUkVG TkFNRSIKKy0gICAgICAgICMgRW1wdHkgbmFtZSBpcyBkYW5nZXJvdXMKKy0gICAgICAgIFsgLXog IiRQUkVGTkFNRSIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIkJhZCBvciBlbXB0eSB2aXJ0dWFsIGRy aXZlIG5hbWUgc2VsZWN0ZWQiCistCWV4cG9ydCBXSU5FUFJFRklYPSIkUE9MX1VTRVJfUk9PVC93 aW5lcHJlZml4LyRQUkVGTkFNRSIKKy0JZXhwb3J0IERPU1BSRUZJWD0iJFdJTkVQUkVGSVgiCist CWlmIFsgLWUgIiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgXTsgdGhlbgorLQkJZXhwb3J0 IFBPTF9XSU5FVkVSU0lPTj0iJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgVkVSU0lPTikiCistCQlQ T0xfU3lzdGVtX1NldEFyY2ggIiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkIEFSQ0gpIiAiZGV0ZWN0 ZWQiCistCWVsc2UKKy0JCXRvdWNoICIkV0lORVBSRUZJWC9wbGF5b25saW51eC5jZmciIDI+IC9k ZXYvbnVsbAorLQlmaQorLQorLQkjIyBJbiBmYWN0IGl0J3MgYSBiYWQgaWRlYQorLQkjaWYgWyAi JChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgQVJDSCkiID0gIng4NiIgXTsgdGhlbiAjIyBDb21tZSBj YSwgcGFzIGRlIGNvbmZsaXRzCistCSMJZXhwb3J0IFdJTkVBUkNIPXdpbjMyCistCSNmaQorK1BP TF9XaW5lX1NlbGVjdFByZWZpeCgpIHsKKysgICMgU2VsZWN0IGEgd2luZXByZWZpeCBhbmQgcmVt b3ZlIHVuZXhwZWN0ZWQgY2hhcnMKKysgICMgVXNhZ2U6IFBPTF9XaW5lX1NlbGVjdFByZWZpeCBb cHJlZml4bmFtZV0KKysgIFBSRUZOQU1FPSQocHJpbnRmICIkMSIgfCB0ciAtYyBbW2EtekEtWjAt OV1cLl0gJ18nKQorKyAgUE9MX0RlYnVnX01lc3NhZ2UgIlNlbGVjdGluZyBwcmVmaXg6ICRQUkVG TkFNRSIKKysgICMgRW1wdHkgbmFtZSBpcyBkYW5nZXJvdXMKKysgIFsgLXogIiRQUkVGTkFNRSIg XSAmJiBQT0xfRGVidWdfRmF0YWwgIkJhZCBvciBlbXB0eSB2aXJ0dWFsIGRyaXZlIG5hbWUgc2Vs ZWN0ZWQiCisrICBleHBvcnQgV0lORVBSRUZJWD0iJFBPTF9VU0VSX1JPT1Qvd2luZXByZWZpeC8k UFJFRk5BTUUiCisrICBleHBvcnQgRE9TUFJFRklYPSIkV0lORVBSRUZJWCIKKysgIGlmIFsgLWUg IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgXTsgdGhlbgorKyAgICBleHBvcnQgUE9MX1dJ TkVWRVJTSU9OPSIkKFBPTF9Db25maWdfUHJlZml4UmVhZCBWRVJTSU9OKSIKKysgICAgUE9MX1N5 c3RlbV9TZXRBcmNoICIkKFBPTF9Db25maWdfUHJlZml4UmVhZCBBUkNIKSIgImRldGVjdGVkIgor KyAgZWxzZQorKyAgICB0b3VjaCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIiAyPi9kZXYv bnVsbAorKyAgZmkKKysKKysgICMjIEluIGZhY3QgaXQncyBhIGJhZCBpZGVhCisrICAjaWYgWyAi JChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgQVJDSCkiID0gIng4NiIgXTsgdGhlbiAjIyBDb21tZSBj YSwgcGFzIGRlIGNvbmZsaXRzCisrICAjCWV4cG9ydCBXSU5FQVJDSD13aW4zMgorKyAgI2ZpCisg fQorLVBPTF9XaW5lX1ByZWZpeEV4aXN0cygpCisteworLQkjIENoZWNrcyBpZiBhIHByZWZpeCBl eGlzdHMKKy0JIyBVc2FnZTogUE9MX1dpbmVfUHJlZml4RXhpc3RzCistCSMgUmV0dXJuIFRydWUg b3IgRmFsc2UKKy0JUFJFRk5BTUU9YHByaW50ZiAiJDEifCB0ciAtYyBbW2EtekEtWjAtOV1cLl0g J18nYAorLQlbIC1kICIkUE9MX1VTRVJfUk9PVC93aW5lcHJlZml4LyRQUkVGTkFNRS9kcml2ZV9j IiBdICYmIGVjaG8gIlRydWUiIHx8IGVjaG8gIkZhbHNlIgorK1BPTF9XaW5lX1ByZWZpeEV4aXN0 cygpIHsKKysgICMgQ2hlY2tzIGlmIGEgcHJlZml4IGV4aXN0cworKyAgIyBVc2FnZTogUE9MX1dp bmVfUHJlZml4RXhpc3RzCisrICAjIFJldHVybiBUcnVlIG9yIEZhbHNlCisrICBQUkVGTkFNRT0k KHByaW50ZiAiJDEiIHwgdHIgLWMgW1thLXpBLVowLTldXC5dICdfJykKKysgIFsgLWQgIiRQT0xf VVNFUl9ST09UL3dpbmVwcmVmaXgvJFBSRUZOQU1FL2RyaXZlX2MiIF0gJiYgZWNobyAiVHJ1ZSIg fHwgZWNobyAiRmFsc2UiCisgfQorLVBPTF9XaW5lX0NoZWNrUHJlZml4RXhpc3RzKCkKKy17Cist CSMgQ2hlY2tzIGlmIGEgcHJlZml4IGV4aXN0cworLQkjIFVzYWdlOiBQT0xfV2luZV9DaGVja1By ZWZpeEV4aXN0cyBbUFJFRklYXSBbVElUTEVfUkVRVUlSRURdCistCSMgUmV0dXJuIGEgbWVzc2Fn ZSBpZiBub3QgYW5kIHF1aXQKKy0JUFJFRklYPSQxCistCVRJVExFX1JFUVVJUkVEPSIkMiIKKy0J aWYgWyAiJChQT0xfV2luZV9QcmVmaXhFeGlzdHMgIiRQUkVGSVgiKSIgPSAiRmFsc2UiIF07IHRo ZW4KKy0JCVBPTF9EZWJ1Z19XYXJuaW5nICJUaGUgcHJlZml4ICckUFJFRklYJyBkb2VzIG5vdCBl eGlzdCIKKy0JCVBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAnVGhpcyBp cyBhbiBpbnN0YWxsZXIgZm9yIGFuIHVwZGF0ZSBvciBhbiBhZGRvbjtcblBsZWFzZSBpbnN0YWxs ICRUSVRMRV9SRVFVSVJFRCBmaXJzdCcpIiAiJFRJVExFIgorLQkJUE9MX1NldHVwV2luZG93X0Ns b3NlCistCQlleGl0IDEKKy0JZmkKKytQT0xfV2luZV9DaGVja1ByZWZpeEV4aXN0cygpIHsKKysg ICMgQ2hlY2tzIGlmIGEgcHJlZml4IGV4aXN0cworKyAgIyBVc2FnZTogUE9MX1dpbmVfQ2hlY2tQ cmVmaXhFeGlzdHMgW1BSRUZJWF0gW1RJVExFX1JFUVVJUkVEXQorKyAgIyBSZXR1cm4gYSBtZXNz YWdlIGlmIG5vdCBhbmQgcXVpdAorKyAgUFJFRklYPSQxCisrICBUSVRMRV9SRVFVSVJFRD0iJDIi CisrICBpZiBbICIkKFBPTF9XaW5lX1ByZWZpeEV4aXN0cyAiJFBSRUZJWCIpIiA9ICJGYWxzZSIg XTsgdGhlbgorKyAgICBQT0xfRGVidWdfV2FybmluZyAiVGhlIHByZWZpeCAnJFBSRUZJWCcgZG9l cyBub3QgZXhpc3QiCisrICAgIFBPTF9TZXR1cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4 dCAnVGhpcyBpcyBhbiBpbnN0YWxsZXIgZm9yIGFuIHVwZGF0ZSBvciBhbiBhZGRvbjtcblBsZWFz ZSBpbnN0YWxsICRUSVRMRV9SRVFVSVJFRCBmaXJzdCcpIiAiJFRJVExFIgorKyAgICBQT0xfU2V0 dXBXaW5kb3dfQ2xvc2UKKysgICAgZXhpdCAxCisrICBmaQorIH0KKy1QT0xfV2luZV9WZXJzaW9u U2lnbmF0dXJlKCkKKy17CistCSMgUmV0dXJuIHRoZSBzaWduYXR1cmUgb2YgYSBXaW5lIHBhY2th Z2UKKy0JIyBVc2FnZTogUE9MX1dpbmVfVmVyc2lvblNpZ25hdHVyZSBbRElSXQorLQorLQkjIE9u IExpbnV4LCByZXN1bHQgc2hvdWxkIG1hdGNoIHRoZSBvbmUgb2YKKy0JIyBjZCAkRElSOyBmaW5k ICogLXR5cGUgZnxzb3J0fHhhcmdzIG1kNXN1bXxtZDVzdW0gLXxjdXQgLWMxLTMyCistCistCWxv Y2FsIFdJTkVQS0dQQVRIPSIkMSIKKy0JWyAtZCAiJFdJTkVQS0dQQVRIIiBdIHx8IHJldHVybgor LQkjIFsgLWUgIiRXSU5FUEtHUEFUSC9iaW4vd2luZSIgXSB8fCByZXR1cm4KKy0KKy0JbG9jYWwg Q1VSUlNJR1ZFUj0iJFdJTkVQS0dQQVRILy5zaWduYXR1cmUudjEiICMgY2FjaGUgdmVyc2lvbgor LQlsb2NhbCBXSU5FU0lHCistCVsgLWUgIiRDVVJSU0lHVkVSIiBdICYmIHJlYWQgV0lORVNJRyA8 ICIkQ1VSUlNJR1ZFUiIKKy0JaWYgWyAteiAiJFdJTkVTSUciIF07IHRoZW4KKy0JCWxvY2FsIE1B TklGRVNURklMRT0iJFBPTF9VU0VSX1JPT1QvdG1wL1BPTF9XaW5lX1ZlcnNpb25TaWduYXR1cmVf bWFuaWZlc3QkJCIKKy0JCShjZCAiJFdJTkVQS0dQQVRIIiAmJiBmaW5kICogLXR5cGUgZiB8XAor LQkJICBzb3J0IHxcCistCQkgIHdoaWxlIHJlYWQgc2lnZmlsZW5hbWU7IGRvCistCQkgICAgZWNo byAiJChQT0xfTUQ1X2ZpbGUgIiRzaWdmaWxlbmFtZSIpICAkc2lnZmlsZW5hbWUiCistCQkgIGRv bmUpID4gIiRNQU5JRkVTVEZJTEUiCistCQlXSU5FU0lHPSIkKFBPTF9NRDVfZmlsZSAiJE1BTklG RVNURklMRSIpIgorLQkJcm0gLWYgIiRNQU5JRkVTVEZJTEUiCistCQllY2hvICIkV0lORVNJRyIg PiAiJENVUlJTSUdWRVIiCistCWZpCistCWVjaG8gIiRXSU5FU0lHIgorK1BPTF9XaW5lX1ZlcnNp b25TaWduYXR1cmUoKSB7CisrICAjIFJldHVybiB0aGUgc2lnbmF0dXJlIG9mIGEgV2luZSBwYWNr YWdlCisrICAjIFVzYWdlOiBQT0xfV2luZV9WZXJzaW9uU2lnbmF0dXJlIFtESVJdCisrCisrICAj IE9uIExpbnV4LCByZXN1bHQgc2hvdWxkIG1hdGNoIHRoZSBvbmUgb2YKKysgICMgY2QgJERJUjsg ZmluZCAqIC10eXBlIGZ8c29ydHx4YXJncyBtZDVzdW18bWQ1c3VtIC18Y3V0IC1jMS0zMgorKwor KyAgbG9jYWwgV0lORVBLR1BBVEg9IiQxIgorKyAgWyAtZCAiJFdJTkVQS0dQQVRIIiBdIHx8IHJl dHVybgorKyAgIyBbIC1lICIkV0lORVBLR1BBVEgvYmluL3dpbmUiIF0gfHwgcmV0dXJuCisrCisr ICBsb2NhbCBDVVJSU0lHVkVSPSIkV0lORVBLR1BBVEgvLnNpZ25hdHVyZS52MSIgIyBjYWNoZSB2 ZXJzaW9uCisrICBsb2NhbCBXSU5FU0lHCisrICBbIC1lICIkQ1VSUlNJR1ZFUiIgXSAmJiByZWFk IFdJTkVTSUcgPCIkQ1VSUlNJR1ZFUiIKKysgIGlmIFsgLXogIiRXSU5FU0lHIiBdOyB0aGVuCisr ICAgIGxvY2FsIE1BTklGRVNURklMRT0iJFBPTF9VU0VSX1JPT1QvdG1wL1BPTF9XaW5lX1ZlcnNp b25TaWduYXR1cmVfbWFuaWZlc3QkJCIKKysgICAgKGNkICIkV0lORVBLR1BBVEgiICYmIGZpbmQg KiAtdHlwZSBmIHwKKysgICAgICBzb3J0IHwKKysgICAgICB3aGlsZSByZWFkIHNpZ2ZpbGVuYW1l OyBkbworKyAgICAgICAgZWNobyAiJChQT0xfTUQ1X2ZpbGUgIiRzaWdmaWxlbmFtZSIpICAkc2ln ZmlsZW5hbWUiCisrICAgICAgZG9uZSkgPiIkTUFOSUZFU1RGSUxFIgorKyAgICBXSU5FU0lHPSIk KFBPTF9NRDVfZmlsZSAiJE1BTklGRVNURklMRSIpIgorKyAgICBybSAtZiAiJE1BTklGRVNURklM RSIKKysgICAgZWNobyAiJFdJTkVTSUciID4iJENVUlJTSUdWRVIiCisrICBmaQorKyAgZWNobyAi JFdJTkVTSUciCisgfQorLVBPTF9XaW5lX0luc3RhbGxWZXJzaW9uKCkKKy17CistCSMgSW5zdGFs bCBhIHdpbmV2ZXJzaW9uCistCSMgVXNhZ2U6IFBPTF9XaW5lX0luc3RhbGxWZXJzaW9uIFtWRVJT SU9OXQorLQlbICEgIiQxIiA9ICIiIF0gJiYgZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCist CVsgISAiJDIiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVESVNUUklCVVRJT049IiQyIiB8fCBl eHBvcnQgUE9MX1dJTkVESVNUUklCVVRJT049InVwc3RyZWFtIgorLQorLQlpZiBbWyAiJFBPTF9X SU5FVkVSU0lPTiIgPT0gKiItc3RhZ2luZyIqIF1dOyB0aGVuCistCSAgICBsb2NhbCBwb2xfd2lu ZXZlcnNpb249IiR7UE9MX1dJTkVWRVJTSU9OLy1zdGFnaW5nL30iCistCQkJUE9MX1dJTkVESVNU UklCVVRJT049InN0YWdpbmciCistCWVsc2UKKy0JCQlsb2NhbCBwb2xfd2luZXZlcnNpb25faW5z dGFsbD0iJFBPTF9XSU5FVkVSU0lPTiIKKy0JCQlsb2NhbCBwb2xfd2luZXZlcnNpb249IiRQT0xf V0lORVZFUlNJT04iCistCWZpCistCistCWlmIFsgIiRQT0xfV0lORURJU1RSSUJVVElPTiIgPT0g InN0YWdpbmciIF07IHRoZW4KKy0JCWxvY2FsIHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsPSIkcG9s X3dpbmV2ZXJzaW9uLXN0YWdpbmciCistCWZpCistCistCVsgIiRwb2xfd2luZXZlcnNpb24iID0g IiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIk5vIFBPTF9XSU5FVkVSU0lPTiBzZXQiCistCVsgIiRQ T0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKKy0JUE9MX0RlYnVn X01lc3NhZ2UgIkluc3RhbGxpbmcgd2luZSB2ZXJzaW9uIHBhdGg6ICRwb2xfd2luZXZlcnNpb25f aW5zdGFsbCwgJFBPTF9BUkNIIgorLQlbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgQVJDSF9QUkVG SVg9ImRhcndpbiIKKy0JWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBBUkNIX1BSRUZJWD0i ZnJlZWJzZCIKKy0JWyAiJFBPTF9PUyIgPSAiTGludXgiIF0gJiYgQVJDSF9QUkVGSVg9ImxpbnV4 IgorLQlPTERQQVRIPSIkUFdEIgorLQlXSU5FX1NFQ1RJT049IiRBUkNIX1BSRUZJWC0kUE9MX0FS Q0giCistCVdJTkVESVI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJFdJTkVfU0VDVElPTiIKKy0JdG91 Y2ggIiRXSU5FRElSL2luc3RhbGxpbmciCistCWlmIFsgISAtZSAiJFBPTF9VU0VSX1JPT1Qvd2lu ZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIgXQorLQl0 aGVuCistCQlQT0xfRGVidWdfTWVzc2FnZSAiV2luZSBzaXRlOiAkV0lORV9TSVRFIgorLQkJZWNo byAkUE9MX1dHRVQgIiRXSU5FX1NJVEUiIC1PLQorLQkJV0lORURBVEE9IiQoJFBPTF9XR0VUICIk V0lORV9TSVRFIiAtTy0gfGpxIC1yICIuW10gfCBzZWxlY3QoLm5hbWU9PVwiJFBPTF9XSU5FRElT VFJJQlVUSU9OLSRBUkNIX1BSRUZJWC0kUE9MX0FSQ0hcIikgfCAucGFja2FnZXMgfCAuW10gfCBz ZWxlY3QoLnZlcnNpb249PVwiJHBvbF93aW5ldmVyc2lvblwiKSIpIgorLQkJUE9MX0RlYnVnX01l c3NhZ2UgIldpbmVidWlsZCBkYXRhOiAkV0lORURBVEEiCistCistCQlXSU5FX0FERFJFU1M9IiQo ZWNobyAiJFdJTkVEQVRBIiB8IGpxICcudXJsJyAtcikiCistCQlQT0xfRGVidWdfTWVzc2FnZSAi V2luZSBhZGRyZXNzIGZvdW5kOiAkV0lORV9BRERSRVNTIgorLQkJI1dJTkVfQUREUkVTUz0kKCRQ T0xfV0dFVCAiJFdJTkVfU0lURS8kV0lORV9TRUNUSU9OLmxzdCIgLU8tIHwgZ3JlcCAiOyRwb2xf d2luZXZlcnNpb247IiB8IHRhaWwgLW4gMSB8IGN1dCAtZCAiOyIgLWYxKQorLQorLQkJaWYgWyAi JFdJTkVfQUREUkVTUyIgPSAiIiBdICYmIFsgIiRQT0xfQVJDSCIgPSAiYW1kNjQiIF0KKy0JCXRo ZW4KKy0JCQlQT0xfRGVidWdfV2FybmluZyAiV2luZSAkMSBhbWQ2NCBkb2VzIG5vdCBleGlzdC4g U3dpdGNoaW5nIHRvIHg4NiIKKy0JCQlQT0xfU3lzdGVtX1NldEFyY2ggIng4NiIKKy0JCQlQT0xf V2luZV9JbnN0YWxsVmVyc2lvbiAiJDEiCistCQllbHNlCistCQkJaWYgWyAiJFdJTkVfQUREUkVT UyIgPSAiIiBdCistCQkJdGhlbgorLQkJCQlQT0xfRGVidWdfRXJyb3IgIiQoZXZhbF9nZXR0ZXh0 ICJVbmFibGUgdG8gZmluZCB2ZXJzaW9uOiAiKSRwb2xfd2luZXZlcnNpb24iCistCQkJCVBPTF9T ZXR1cFdpbmRvd19DbG9zZQorLQkJCQlleGl0CistCQkJZmkKKy0KKy0JCQljZCAiJFBPTF9VU0VS X1JPT1QvdG1wIgorLQkJCWZpbGVuYW1lPSIkUFdEL1BsYXlPbkxpbnV4LXdpbmUtJHBvbF93aW5l dmVyc2lvbi0kUE9MX1dJTkVESVNUUklCVVRJT04tJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC50YXIu Z3oiCistCQkJUE9MX1NldHVwV2luZG93X2Rvd25sb2FkICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxv YWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJzaW9uIiAiJFRJVExFIiAiJFdJTkVfQUREUkVTUyIK Ky0JCQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgIkRv d25sb2FkaW5nIFdpbmU6ICIpJHBvbF93aW5ldmVyc2lvbiIgIiRUSVRMRSIKKy0JCQlzbGVlcCAx CistCQkJc2hhMT0iJChlY2hvICIkV0lORURBVEEiIHwganEgJy5zaGExc3VtJyAtcikiCistCQkJ c2hhMV9maWxlPSQoc2hhc3VtICIkZmlsZW5hbWUiIHwgYXdrICd7cHJpbnQgJDF9JykKKy0JCQll Y2hvICJTZXJ2ZXIgc2hhMSA6ICRzaGExIgorLQkJCWVjaG8gIkNsaWVudCBzaGExIDogJHNoYTFf ZmlsZSIKKy0KKy0JCQlpZiBbICEgIiRzaGExIiA9ICIkc2hhMV9maWxlIiBdCistCQkJdGhlbgor LQkJCQlQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChldmFsX2dldHRleHQgJ1RoZSBkb3dubG9h ZCBzZWVtcyB0byBoYXZlIGZhaWxlZC4nKSIgIiRUSVRMRSIKKy0JCQllbHNlCistCQkJCVBPTF9T ZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnRXh0cmFjdGluZyBXaW5lLi4uJykiICIk VElUTEUiCistCQkJCW1rZGlyIC1wICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0k UE9MX0FSQ0gvJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIgorLQkJCQljZCAiJFBPTF9VU0VSX1JP T1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNILyRwb2xfd2luZXZlcnNpb25faW5zdGFsbCIK Ky0JCQkJdGFyIC14dmYgIiRmaWxlbmFtZSIKKy0JCQlmaQorLQkJCXJtICIkZmlsZW5hbWUiCist CQkJIyBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNlcyBnZWNrbyAiJHBvbF93aW5ldmVyc2lvbiIg IiRQT0xfQVJDSCIKKy0JCQkjIFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIG1vbm8gIiRwb2xf d2luZXZlcnNpb24iICIkUE9MX0FSQ0giCistCQlmaQorLQlmaQorLQlybSAiJFdJTkVESVIvaW5z dGFsbGluZyIKKytQT0xfV2luZV9JbnN0YWxsVmVyc2lvbigpIHsKKysgICMgSW5zdGFsbCBhIHdp bmV2ZXJzaW9uCisrICAjIFVzYWdlOiBQT0xfV2luZV9JbnN0YWxsVmVyc2lvbiBbVkVSU0lPTl0K KysgIFsgISAiJDEiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKKysgIFsg ISAiJDIiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVESVNUUklCVVRJT049IiQyIiB8fCBleHBv cnQgUE9MX1dJTkVESVNUUklCVVRJT049InVwc3RyZWFtIgorKworKyAgaWYgW1sgIiRQT0xfV0lO RVZFUlNJT04iID09ICoiLXN0YWdpbmciKiBdXTsgdGhlbgorKyAgICBsb2NhbCBwb2xfd2luZXZl cnNpb249IiR7UE9MX1dJTkVWRVJTSU9OLy1zdGFnaW5nL30iCisrICAgIFBPTF9XSU5FRElTVFJJ QlVUSU9OPSJzdGFnaW5nIgorKyAgZWxpZiBbWyAiJFBPTF9XSU5FVkVSU0lPTiIgPT0gKiItY3gi KiBdXTsgdGhlbgorKyAgICBsb2NhbCBwb2xfd2luZXZlcnNpb249IiR7UE9MX1dJTkVWRVJTSU9O Ly1jeC99IgorKyAgICBQT0xfV0lORURJU1RSSUJVVElPTj0iY3giCisrICBlbHNlCisrICAgIGxv Y2FsIHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsPSIkUE9MX1dJTkVWRVJTSU9OIgorKyAgICBsb2Nh bCBwb2xfd2luZXZlcnNpb249IiRQT0xfV0lORVZFUlNJT04iCisrICBmaQorKworKyAgaWYgWyAi JFBPTF9XSU5FRElTVFJJQlVUSU9OIiA9PSAic3RhZ2luZyIgXTsgdGhlbgorKyAgICBsb2NhbCBw b2xfd2luZXZlcnNpb25faW5zdGFsbD0iJHBvbF93aW5ldmVyc2lvbi1zdGFnaW5nIgorKyAgZmkK KysKKysgIGlmIFsgIiRQT0xfV0lORURJU1RSSUJVVElPTiIgPT0gImN4IiBdOyB0aGVuCisrICAg IGxvY2FsIHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsPSIkcG9sX3dpbmV2ZXJzaW9uLWN4IgorKyAg ZmkKKysKKysgIFsgIiRwb2xfd2luZXZlcnNpb24iID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwg Ik5vIFBPTF9XSU5FVkVSU0lPTiBzZXQiCisrICBbICIkUE9MX0FSQ0giID0gIiIgXSAmJiBQT0xf U3lzdGVtX1NldEFyY2ggImF1dG8iCisrICBQT0xfRGVidWdfTWVzc2FnZSAiSW5zdGFsbGluZyB3 aW5lIHZlcnNpb24gcGF0aDogJHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsLCAkUE9MX0FSQ0giCisr ICBbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgQVJDSF9QUkVGSVg9ImRhcndpbiIKKysgIFsgIiRQ T0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgQVJDSF9QUkVGSVg9ImZyZWVic2QiCisrICBbICIkUE9M X09TIiA9ICJMaW51eCIgXSAmJiBBUkNIX1BSRUZJWD0ibGludXgiCisrICBPTERQQVRIPSIkUFdE IgorKyAgV0lORV9TRUNUSU9OPSIkQVJDSF9QUkVGSVgtJFBPTF9BUkNIIgorKyAgV0lORURJUj0i JFBPTF9VU0VSX1JPT1Qvd2luZS8kV0lORV9TRUNUSU9OIgorKyAgdG91Y2ggIiRXSU5FRElSL2lu c3RhbGxpbmciCisrICBpZiBbICEgLWUgIiRQT0xfVVNFUl9ST09UL3dpbmUvJEFSQ0hfUFJFRklY LSRQT0xfQVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiIF07IHRoZW4KKysgICAgUE9MX0Rl YnVnX01lc3NhZ2UgIldpbmUgc2l0ZTogJFdJTkVfU0lURSIKKysgICAgUE9MX0RlYnVnX01lc3Nh Z2UgIndnZXQgbGlzdCBjb21tYW5kOiAkUE9MX1dHRVQgJFdJTkVfU0lURSAtTy0iCisrICAgIFBP TF9EZWJ1Z19NZXNzYWdlICJQT0xfQVJDSDogJFBPTF9BUkNIIgorKworKyAgICBpZiBbICIkUE9M X0FSQ0giID0gIng4NiIgXTsgdGhlbgorKyAgICAgIFtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBd XSAmJiBzaXRlX2FyY2g9Ing4Nm9uNjQiIHx8IHNpdGVfYXJjaD0ieDg2IgorKyAgICBlbHNlCisr ICAgICAgc2l0ZV9hcmNoPSIkUE9MX0FSQ0giCisrICAgIGZpCisrICAgIFdJTkVEQVRBPSIkKCRQ T0xfV0dFVCAiJFdJTkVfU0lURSIgLU8tIHwganEgLXIgIi5bXSB8IHNlbGVjdCgubmFtZT09XCIk UE9MX1dJTkVESVNUUklCVVRJT04tJEFSQ0hfUFJFRklYLSRzaXRlX2FyY2hcIikgfCAucGFja2Fn ZXMgfCAuW10gfCBzZWxlY3QoLnZlcnNpb249PVwiJHBvbF93aW5ldmVyc2lvblwiKSIpIgorKyAg ICBQT0xfRGVidWdfTWVzc2FnZSAiV2luZWJ1aWxkIGRhdGE6ICRXSU5FREFUQSIKKysKKysgICAg V0lORV9BRERSRVNTPSIkKGVjaG8gIiRXSU5FREFUQSIgfCBqcSAnLnVybCcgLXIpIgorKyAgICBQ T0xfRGVidWdfTWVzc2FnZSAiV2luZSBhZGRyZXNzIGZvdW5kOiAkV0lORV9BRERSRVNTIgorKyAg ICAjV0lORV9BRERSRVNTPSQoJFBPTF9XR0VUICIkV0lORV9TSVRFLyRXSU5FX1NFQ1RJT04ubHN0 IiAtTy0gfCBncmVwICI7JHBvbF93aW5ldmVyc2lvbjsiIHwgdGFpbCAtbiAxIHwgY3V0IC1kICI7 IiAtZjEpCisrCisrICAgIGlmIFsgIiRXSU5FX0FERFJFU1MiID0gIiIgXSAmJiBbICIkUE9MX0FS Q0giID0gImFtZDY0IiBdOyB0aGVuCisrICAgICAgUE9MX0RlYnVnX1dhcm5pbmcgIldpbmUgJDEg YW1kNjQgZG9lcyBub3QgZXhpc3QuIFN3aXRjaGluZyB0byB4ODYiCisrICAgICAgUE9MX1N5c3Rl bV9TZXRBcmNoICJ4ODYiCisrICAgICAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiQxIgorKyAg ICBlbHNlCisrICAgICAgaWYgWyAiJFdJTkVfQUREUkVTUyIgPSAiIiBdOyB0aGVuCisrICAgICAg ICBpZiBbWyAkT1NYX1ZFUlNJT04gLWdlIDE5IF1dOyB0aGVuCisrICAgICAgICAgIFBPTF9TZXR1 cFdpbmRvd19tZXNzYWdlICIkKGV2YWxfZ2V0dGV4dCAibWFjT1MgQ2F0YWxpbmEgdXNlcjogMzJi aXRzIHdpbmUgdmVyc2lvbiBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZS5cbldlIGFyZSBnb2luZyB0 byB1c2UgdGhlIHN5c3RlbSB3aW5lIHZlcnNpb24gaW5zdGVhZCIpIgorKyAgICAgICAgICByZXR1 cm4gMgorKyAgICAgICAgZWxzZQorKyAgICAgICAgICBQT0xfRGVidWdfRXJyb3IgIiQoZXZhbF9n ZXR0ZXh0ICJVbmFibGUgdG8gZmluZCB2ZXJzaW9uOiAiKSRwb2xfd2luZXZlcnNpb24iCisrICAg ICAgICAgIFBPTF9TZXR1cFdpbmRvd19DbG9zZQorKyAgICAgICAgICBleGl0CisrICAgICAgICBm aQorKyAgICAgIGZpCisrCisrICAgICAgY2QgIiRQT0xfVVNFUl9ST09UL3RtcCIKKysgICAgICBm aWxlbmFtZT0iJFBXRC9QbGF5T25MaW51eC13aW5lLSRwb2xfd2luZXZlcnNpb24tJFBPTF9XSU5F RElTVFJJQlVUSU9OLSRBUkNIX1BSRUZJWC0kc2l0ZV9hcmNoLnRhci5neiIKKysgICAgICBQT0xf U2V0dXBXaW5kb3dfZG93bmxvYWQgIiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAi KSRwb2xfd2luZXZlcnNpb24iICIkVElUTEUiICIkV0lORV9BRERSRVNTIgorKyAgICAgIFBPTF9T ZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcg V2luZTogIikkcG9sX3dpbmV2ZXJzaW9uIiAiJFRJVExFIgorKyAgICAgIHNsZWVwIDEKKysgICAg ICBzaGExPSIkKGVjaG8gIiRXSU5FREFUQSIgfCBqcSAnLnNoYTFzdW0nIC1yKSIKKysgICAgICBz aGExX2ZpbGU9JChzaGFzdW0gIiRmaWxlbmFtZSIgfCBhd2sgJ3twcmludCAkMX0nKQorKyAgICAg IGVjaG8gIlNlcnZlciBzaGExIDogJHNoYTEiCisrICAgICAgZWNobyAiQ2xpZW50IHNoYTEgOiAk c2hhMV9maWxlIgorKworKyAgICAgIGlmIFsgISAiJHNoYTEiID0gIiRzaGExX2ZpbGUiIF0gJiYg W1sgJE9TWF9WRVJTSU9OIC1sdCAxOSBdXTsgdGhlbgorKyAgICAgICAgUE9MX1NldHVwV2luZG93 X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgZG93bmxvYWQgc2VlbXMgdG8gaGF2ZSBmYWls ZWQuJykiICIkVElUTEUiCisrICAgICAgZWxzZQorKyAgICAgICAgUE9MX1NldHVwV2luZG93X3dh aXQgIiQoZXZhbF9nZXR0ZXh0ICdFeHRyYWN0aW5nIFdpbmUuLi4nKSIgIiRUSVRMRSIKKysgICAg ICAgIG1rZGlyIC1wICIkUE9MX1VTRVJfUk9PVC93aW5lLyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0gv JHBvbF93aW5ldmVyc2lvbl9pbnN0YWxsIgorKyAgICAgICAgY2QgIiRQT0xfVVNFUl9ST09UL3dp bmUvJEFSQ0hfUFJFRklYLSRQT0xfQVJDSC8kcG9sX3dpbmV2ZXJzaW9uX2luc3RhbGwiCisrICAg ICAgICB0YXIgLXh2ZiAiJGZpbGVuYW1lIgorKyAgICAgIGZpCisrICAgICAgcm0gIiRmaWxlbmFt ZSIKKysgICAgICAjIFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIGdlY2tvICIkcG9sX3dpbmV2 ZXJzaW9uIiAiJFBPTF9BUkNIIgorKyAgICAgICMgUE9MX1dpbmVfSW5zdGFsbF9yZXNvdXJjZXMg bW9ubyAiJHBvbF93aW5ldmVyc2lvbiIgIiRQT0xfQVJDSCIKKysgICAgZmkKKysgIGZpCisrICBy bSAiJFdJTkVESVIvaW5zdGFsbGluZyIKKyAKKyB9CisgCistUE9MX1dpbmVfSW5zdGFsbENEUk9N KCkKKy17CistCVBPTF9XaW5lX0luc3RhbGxDRFJPTUN1c3RvbSAiJDEiICIkQ0RST00iCisrUE9M X1dpbmVfSW5zdGFsbENEUk9NKCkgeworKyAgUE9MX1dpbmVfSW5zdGFsbENEUk9NQ3VzdG9tICIk MSIgIiRDRFJPTSIKKyB9CistUE9MX1dpbmVfSW5zdGFsbENEUk9NQ3VzdG9tKCkKKy17CistCWlm IFsgIiQxIiBdOyB0aGVuCistCQlsZXR0ZXI9IiQxOiIKKy0JZWxzZQorLQkJbGV0dGVyPSJwOiIK Ky0JZmkKKy0JaWYgWyAiJENEUk9NIiBdOyB0aGVuCistCQljZCAiJFdJTkVQUkVGSVgvZG9zZGV2 aWNlcyIKKy0JCXJtICIkbGV0dGVyIiAyPiAvZGV2L251bGwKKy0JCWxuIC1zICIkMiIgIiRsZXR0 ZXIiCistCWZpCisrUE9MX1dpbmVfSW5zdGFsbENEUk9NQ3VzdG9tKCkgeworKyAgaWYgWyAiJDEi IF07IHRoZW4KKysgICAgbGV0dGVyPSIkMToiCisrICBlbHNlCisrICAgIGxldHRlcj0icDoiCisr ICBmaQorKyAgaWYgWyAiJENEUk9NIiBdOyB0aGVuCisrICAgIGNkICIkV0lORVBSRUZJWC9kb3Nk ZXZpY2VzIgorKyAgICBybSAiJGxldHRlciIgMj4vZGV2L251bGwKKysgICAgbG4gLXMgIiQyIiAi JGxldHRlciIKKysgIGZpCisgfQorLVBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzKCkKKy17Cist CSMgSW5zdGFsbCBnZWNrbyBvciBtb25vIGZvciBzZWxlY3RlZCB3aW5lIHZlcnNpb24KKy0JIyBV c2FnZSA6IFBPTF9XaW5lX0luc3RhbGxfcmVzb3VyY2VzIChnZWNrb3xtb25vKSBbIFZlcnNpb24g XSAoIEFyY2ggKQorLQlbIC16ICIkMSIgXSAmJiByZXR1cm4gMQorLQlbICIkMSIgPSAibW9ubyIg XSAmJiByZXNvdXJjZT0iJDEiIHx8IHJlc291cmNlPSJnZWNrbyIKKy0Jd2luZV92ZXJzaW9uPSIk MiIKKy0JdW5wYXRjaGVkX3ZlcnNpb249YFBPTF9XaW5lX0dldEJhc2VOYW1lICIkMiJgCistCVsg IiQzIiA9ICJhbWQ2NCIgXSAmJiBhcmNoPSIkMyIgfHwgYXJjaD0ieDg2IgorLQorLQlQT0xfRGVi dWdfTWVzc2FnZSAiSW5zdGFsbGluZyAkcmVzb3VyY2UgZm9yIHdpbmUgJHVucGF0Y2hlZF92ZXJz aW9uICRhcmNoIgorLQlyZXNvdXJjZV9kaXI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJHJlc291cmNl IgorLQlyZXNvdXJjZV9maWxlPSIkUE9MX1VTRVJfUk9PVC9jb25maWd1cmF0aW9ucy9saXN0ZXMv JHJlc291cmNlLmxzdCIKKy0JZm91bmQ9IiQoZ3JlcCAiXiR7dW5wYXRjaGVkX3ZlcnNpb24vLy4v XC59OyIgIiRyZXNvdXJjZV9maWxlIikiCistCVsgIiRQT0xfT1MiID0gIkxpbnV4IiBdICYmIHdv cz0ibGludXgiCistCVsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgd29zPSJmcmVlYnNkIgor LQlbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgd29zPSJkYXJ3aW4iCistCistCWlmIFsgISAtTCAi JFBPTF9VU0VSX1JPT1Qvd2luZS8kd29zLSRhcmNoLyR3aW5lX3ZlcnNpb24vc2hhcmUvd2luZS8k cmVzb3VyY2UiIF0KKy0JdGhlbgorLQkJUE9MX0RlYnVnX01lc3NhZ2UgIkxpbmtpbmcgJHJlc291 cmNlIgorLQkJbG4gLXMgIiRQT0xfVVNFUl9ST09UL3dpbmUvJHJlc291cmNlLyIgIiRQT0xfVVNF Ul9ST09UL3dpbmUvJHdvcy0kYXJjaC8kd2luZV92ZXJzaW9uL3NoYXJlL3dpbmUvJHJlc291cmNl IgorLQlmaQorLQlpZiBbICIkZm91bmQiIF07IHRoZW4KKy0JCXJlc291cmNleDg2PSIkKGN1dCAt ZCAnOycgLWYyIDw8PCAkZm91bmQpIgorLQkJcmVzb3VyY2VhbWQ2ND0iJChjdXQgLWQgJzsnIC1m MyA8PDwgJGZvdW5kKSIKKy0JCW1kNXg4Nj0iJChjdXQgLWQgJzsnIC1mNCA8PDwgJGZvdW5kKSIK Ky0JCW1kNWFtZDY0PSIkKGN1dCAtZCAnOycgLWY1IDw8PCAkZm91bmQpIgorLQorLQkJY2QgIiRy ZXNvdXJjZV9kaXIiCistCQlpZiBbICIkcmVzb3VyY2V4ODYiIF07IHRoZW4KKy0JCQlpZiBbIC1l ICIkcmVzb3VyY2V4ODYiIF07IHRoZW4KKy0JCQkJUE9MX0RlYnVnX01lc3NhZ2UgIiRyZXNvdXJj ZXg4NiBhbHJlYWR5IGluc3RhbGxlZC4gU2tpcHBpbmciCistCQkJZWxzZQorLQkJCQlQT0xfRGVi dWdfTWVzc2FnZSAiSW5zdGFsbGluZyAkcmVzb3VyY2V4ODYiCistCQkJCVBPTF9Eb3dubG9hZCAi JChyZXNvdXJjZV9kb3dubG9hZF91cmwgJHJlc291cmNlIHg4NiAkcmVzb3VyY2V4ODYpIiAiJG1k NXg4NiIKKy0JCQlmaQorLQkJZmkKKy0KKy0JCWlmIFsgIiRhcmNoIiA9ICJhbWQ2NCIgXTsgdGhl bgorLQkJCWlmIFsgIiRyZXNvdXJjZWFtZDY0IiBdOyB0aGVuCistCQkJCWlmIFsgLWUgIiRyZXNv dXJjZWFtZDY0IiBdOyB0aGVuCistCQkJCQlQT0xfRGVidWdfTWVzc2FnZSAiJHJlc291cmNlYW1k NjQgYWxyZWFkeSBpbnN0YWxsZWQuIFNraXBwaW5nIgorLQkJCQllbHNlCistCQkJCQlQT0xfRGVi dWdfTWVzc2FnZSAiSW5zdGFsbGluZyAkcmVzb3VyY2VhbWQ2NCIKKy0JCQkJCVBPTF9Eb3dubG9h ZCAiJChyZXNvdXJjZV9kb3dubG9hZF91cmwgJHJlc291cmNlIGFtZDY0ICRyZXNvdXJjZWFtZDY0 KSIgIiRtZDVhbWQ2NCIKKy0JCQkJZmkKKy0JCQlmaQorLQkJZmkKKy0JZmkKKytQT0xfV2luZV9J bnN0YWxsX3Jlc291cmNlcygpIHsKKysgICMgSW5zdGFsbCBnZWNrbyBvciBtb25vIGZvciBzZWxl Y3RlZCB3aW5lIHZlcnNpb24KKysgICMgVXNhZ2UgOiBQT0xfV2luZV9JbnN0YWxsX3Jlc291cmNl cyAoZ2Vja298bW9ubykgWyBWZXJzaW9uIF0gKCBBcmNoICkKKysgIFsgLXogIiQxIiBdICYmIHJl dHVybiAxCisrICBbICIkMSIgPSAibW9ubyIgXSAmJiByZXNvdXJjZT0iJDEiIHx8IHJlc291cmNl PSJnZWNrbyIKKysgIHdpbmVfdmVyc2lvbj0iJDIiCisrICB1bnBhdGNoZWRfdmVyc2lvbj0kKFBP TF9XaW5lX0dldEJhc2VOYW1lICIkMiIpCisrICBbICIkMyIgPSAiYW1kNjQiIF0gJiYgYXJjaD0i JDMiIHx8IGFyY2g9Ing4NiIKKysKKysgIFBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxsaW5nICRy ZXNvdXJjZSBmb3Igd2luZSAkdW5wYXRjaGVkX3ZlcnNpb24gJGFyY2giCisrICByZXNvdXJjZV9k aXI9IiRQT0xfVVNFUl9ST09UL3dpbmUvJHJlc291cmNlIgorKyAgcmVzb3VyY2VfZmlsZT0iJFBP TF9VU0VSX1JPT1QvY29uZmlndXJhdGlvbnMvbGlzdGVzLyRyZXNvdXJjZS5sc3QiCisrICBmb3Vu ZD0iJChncmVwICJeJHt1bnBhdGNoZWRfdmVyc2lvbi8vLi9cLn07IiAiJHJlc291cmNlX2ZpbGUi KSIKKysgIFsgIiRQT0xfT1MiID0gIkxpbnV4IiBdICYmIHdvcz0ibGludXgiCisrICBbICIkUE9M X09TIiA9ICJGcmVlQlNEIiBdICYmIHdvcz0iZnJlZWJzZCIKKysgIFsgIiRQT0xfT1MiID0gIk1h YyIgXSAmJiB3b3M9ImRhcndpbiIKKysKKysgIGlmIFsgISAtTCAiJFBPTF9VU0VSX1JPT1Qvd2lu ZS8kd29zLSRhcmNoLyR3aW5lX3ZlcnNpb24vc2hhcmUvd2luZS8kcmVzb3VyY2UiIF07IHRoZW4K KysgICAgUE9MX0RlYnVnX01lc3NhZ2UgIkxpbmtpbmcgJHJlc291cmNlIgorKyAgICBsbiAtcyAi JFBPTF9VU0VSX1JPT1Qvd2luZS8kcmVzb3VyY2UvIiAiJFBPTF9VU0VSX1JPT1Qvd2luZS8kd29z LSRhcmNoLyR3aW5lX3ZlcnNpb24vc2hhcmUvd2luZS8kcmVzb3VyY2UiCisrICBmaQorKyAgaWYg WyAiJGZvdW5kIiBdOyB0aGVuCisrICAgIHJlc291cmNleDg2PSIkKGN1dCAtZCAnOycgLWYyIDw8 PCRmb3VuZCkiCisrICAgIHJlc291cmNlYW1kNjQ9IiQoY3V0IC1kICc7JyAtZjMgPDw8JGZvdW5k KSIKKysgICAgbWQ1eDg2PSIkKGN1dCAtZCAnOycgLWY0IDw8PCRmb3VuZCkiCisrICAgIG1kNWFt ZDY0PSIkKGN1dCAtZCAnOycgLWY1IDw8PCRmb3VuZCkiCisrCisrICAgIGNkICIkcmVzb3VyY2Vf ZGlyIgorKyAgICBpZiBbICIkcmVzb3VyY2V4ODYiIF07IHRoZW4KKysgICAgICBpZiBbIC1lICIk cmVzb3VyY2V4ODYiIF07IHRoZW4KKysgICAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICIkcmVzb3Vy Y2V4ODYgYWxyZWFkeSBpbnN0YWxsZWQuIFNraXBwaW5nIgorKyAgICAgIGVsc2UKKysgICAgICAg IFBPTF9EZWJ1Z19NZXNzYWdlICJJbnN0YWxsaW5nICRyZXNvdXJjZXg4NiIKKysgICAgICAgIFBP TF9Eb3dubG9hZCAiJChyZXNvdXJjZV9kb3dubG9hZF91cmwgJHJlc291cmNlIHg4NiAkcmVzb3Vy Y2V4ODYpIiAiJG1kNXg4NiIKKysgICAgICBmaQorKyAgICBmaQorKworKyAgICBpZiBbICIkYXJj aCIgPSAiYW1kNjQiIF07IHRoZW4KKysgICAgICBpZiBbICIkcmVzb3VyY2VhbWQ2NCIgXTsgdGhl bgorKyAgICAgICAgaWYgWyAtZSAiJHJlc291cmNlYW1kNjQiIF07IHRoZW4KKysgICAgICAgICAg UE9MX0RlYnVnX01lc3NhZ2UgIiRyZXNvdXJjZWFtZDY0IGFscmVhZHkgaW5zdGFsbGVkLiBTa2lw cGluZyIKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIkluc3Rh bGxpbmcgJHJlc291cmNlYW1kNjQiCisrICAgICAgICAgIFBPTF9Eb3dubG9hZCAiJChyZXNvdXJj ZV9kb3dubG9hZF91cmwgJHJlc291cmNlIGFtZDY0ICRyZXNvdXJjZWFtZDY0KSIgIiRtZDVhbWQ2 NCIKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgZmkKKysgIGZpCisgfQorLXJlc291cmNl X2Rvd25sb2FkX3VybCgpCisteworLQkjIHJlc291cmNlX2Rvd25sb2FkX3VybCAoZ2Vja298bW9u bykgWyBBcmNoIF0gWyBGaWxlbmFtZSBdCistCWlmIFsgIiQxIiA9ICJnZWNrbyIgXTsgdGhlbgor LQkJZWNobyAiJEdFQ0tPX1NJVEUvJDIvJDMiCistCWZpCistCWlmIFsgIiQxIiA9ICJtb25vIiBd OyB0aGVuCistIwkJbG9jYWwgdmVyc2lvbj0iJHszJS5tc2l9IgorLSMJCXZlcnNpb249IiR7dmVy c2lvbiN3aW5lLW1vbm8tfSIKKy0jCQllY2hvICJodHRwOi8vc291cmNlLndpbmVocS5vcmcvd2lu ZW1vbm8ucGhwP3Y9JHt2ZXJzaW9ufSIKKy0jCQllY2hvICJodHRwOi8vZG93bmxvYWRzLnNvdXJj ZWZvcmdlLm5ldC93aW5lLyQzIgorLSMJCWVjaG8gIiRNT05PX1NJVEUvJDIvJDMiCistCQllY2hv ICIkTU9OT19TSVRFLyQzIgorLQlmaQorK3Jlc291cmNlX2Rvd25sb2FkX3VybCgpIHsKKysgICMg cmVzb3VyY2VfZG93bmxvYWRfdXJsIChnZWNrb3xtb25vKSBbIEFyY2ggXSBbIEZpbGVuYW1lIF0K KysgIGlmIFsgIiQxIiA9ICJnZWNrbyIgXTsgdGhlbgorKyAgICBlY2hvICIkR0VDS09fU0lURS8k Mi8kMyIKKysgIGZpCisrICBpZiBbICIkMSIgPSAibW9ubyIgXTsgdGhlbgorKyAgICAjCQlsb2Nh bCB2ZXJzaW9uPSIkezMlLm1zaX0iCisrICAgICMJCXZlcnNpb249IiR7dmVyc2lvbiN3aW5lLW1v bm8tfSIKKysgICAgIwkJZWNobyAiaHR0cDovL3NvdXJjZS53aW5laHEub3JnL3dpbmVtb25vLnBo cD92PSR7dmVyc2lvbn0iCisrICAgICMJCWVjaG8gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9y Z2UubmV0L3dpbmUvJDMiCisrICAgICMJCWVjaG8gIiRNT05PX1NJVEUvJDIvJDMiCisrICAgIGVj aG8gIiRNT05PX1NJVEUvJDMiCisrICBmaQorIH0KKy1QT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVu digpCisteworLQkjIEdldCB0aGUgY3VycmVudCBwcmVmaXgncyB2ZXJzaW9uIGFuZCBzZXQgUEFU SCBlbnZpcm9ubWVudCB2YXJpYWJsZQorLQkjIFVzYWdlOiBQT0xfV2luZV9BdXRvU2V0VmVyc2lv bkVudgorLQlbICIkV0lORVBSRUZJWCIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBS RUZJWCBpcyBub3Qgc2V0ISIKKy0JUE9MX1dJTkVWRVJTSU9OPSIkKFBPTF9Db25maWdfUHJlZml4 UmVhZCAiVkVSU0lPTiIpIgorLQlQT0xfQVJDSD0iJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIkFS Q0giKSIKKy0JWyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdIHx8IFBPTF9XaW5lX1NldFZlcnNp b25FbnYKKytQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudigpIHsKKysgICMgR2V0IHRoZSBjdXJy ZW50IHByZWZpeCdzIHZlcnNpb24gYW5kIHNldCBQQVRIIGVudmlyb25tZW50IHZhcmlhYmxlCisr ICAjIFVzYWdlOiBQT0xfV2luZV9BdXRvU2V0VmVyc2lvbkVudgorKyAgWyAiJFdJTkVQUkVGSVgi ID0gIiIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggaXMgbm90IHNldCEiCisrICBQ T0xfV0lORVZFUlNJT049IiQoUE9MX0NvbmZpZ19QcmVmaXhSZWFkICJWRVJTSU9OIikiCisrICBQ T0xfQVJDSD0iJChQT0xfQ29uZmlnX1ByZWZpeFJlYWQgIkFSQ0giKSIKKysgIFsgIiRQT0xfV0lO RVZFUlNJT04iID0gIiIgXSB8fCBQT0xfV2luZV9TZXRWZXJzaW9uRW52CisgfQorLVBPTF9XaW5l X1NldFZlcnNpb25FbnYoKQorLXsKKy0JIyBVc2FnZTogUE9MX1dpbmVfU2V0V2luZVZlcnNpb24g W1ZFUlNJT05dCistCSMgR2V0IGZpcnN0IGFyZ3VtZW50J3Mgd2luZSB2ZXJzaW9uIGFuZCBzZXQg UEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQorLQlbICEgIiQxIiA9ICIiIF0gJiYgZXhwb3J0IFBP TF9XSU5FVkVSU0lPTj0iJDEiCistCVsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSAmJiBQT0xf RGVidWdfV2FybmluZyAiTm8gUE9MX1dJTkVWRVJTSU9OIHNldCwgYXNzdW1pbmcgaXQgaXMgcmVz ZXQiCistCVsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJT SU9OPSItLXJlc2V0IgorLQlpZiBbICEgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXQorLQl0aGVu CistCQlbICIkUE9MX0FSQ0giID0gIiIgXSAmJiBQT0xfU3lzdGVtX1NldEFyY2ggImF1dG8iCist CQkjUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSB2ZXJzaW9uIHBhdGg6ICRQT0xfV0lO RVZFUlNJT04sICRQT0xfQVJDSCIKKy0JCVsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBBUkNIX1BS RUZJWD0iZGFyd2luIgorLQkJWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBBUkNIX1BSRUZJ WD0iZnJlZWJzZCIKKy0JCVsgIiRQT0xfT1MiID0gIkxpbnV4IiBdICYmIEFSQ0hfUFJFRklYPSJs aW51eCIKKy0JCU9MRFBBVEg9IiRQV0QiCistCQlXSU5FRElSPSIkUE9MX1VTRVJfUk9PVC93aW5l LyRBUkNIX1BSRUZJWC0kUE9MX0FSQ0giCistCQlta2RpciAtcCAiJFdJTkVESVIiCistCQljZCAi JFdJTkVESVIiCistCistCQlpZiBbICIkUE9MX1dJTkVWRVJTSU9OIiA9ICItLXJlc2V0IiBdCist CQl0aGVuCistCQkJZXhwb3J0IFBBVEg9IiRQQVRIX09SSUdJTiIKKy0JCQlleHBvcnQgTERfTElC UkFSWV9QQVRIPSIkTERfUEFUSF9PUklHSU4iCistCQkJWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIg XSAmJiBleHBvcnQgTERfMzJfTElCUkFSWV9QQVRIPSIkTERfMzJfUEFUSF9PUklHSU4iCistCQkJ ZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iIgorLQkJZWxzZQorLQkJCWlmIFsgISAtZSAiJFdJTkVE SVIvJFBPTF9XSU5FVkVSU0lPTiIgXQorLQkJCXRoZW4KKy0JCQkJUE9MX0RlYnVnX01lc3NhZ2Ug IldpbmUgJFBPTF9XSU5FVkVSU0lPTiBub3QgaW5zdGFsbGVkLiBJbnN0YWxsaW5nIGl0IgorLQkJ IAkJUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiRQT0xfV0lORVZFUlNJT04iCistCQkJZmkKKy0J CQlleHBvcnQgUEFUSD0iJFdJTkVESVIvJFBPTF9XSU5FVkVSU0lPTi9iaW4vOiRQQVRIIgorLQkJ CVsgIiRQT0xfT1MiID0gIk1hYyIgXSAmJiBleHBvcnQgRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BB VEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliLyIKKy0JCQlleHBvcnQgRlJFRVRZUEVf UFJPUEVSVElFUz0idHJ1ZXR5cGU6aW50ZXJwcmV0ZXItdmVyc2lvbj0zNSIKKy0JCQlleHBvcnQg TERfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi86JFdJTkVESVIv JFBPTF9XSU5FVkVSU0lPTi9saWI2NC86JExEX0xJQlJBUllfUEFUSCIKKy0JCQlbICIkUE9MX09T IiA9ICJGcmVlQlNEIiBdICYmIGV4cG9ydCBMRF8zMl9MSUJSQVJZX1BBVEg9IiRXSU5FRElSLyRQ T0xfV0lORVZFUlNJT04vbGliLzokTERfMzJfTElCUkFSWV9QQVRIIgorLQkJZmkKKy0JZWxzZQor LQkJaWYgWyAiJFBPTF9PUyIgPSAiTWFjIiBdOyB0aGVuCistCQkJWyAiJERZTERfRkFMTEJBQ0tf TElCUkFSWV9QQVRIIiA9ICIiIF0gJiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRI PSIkUkVTT1VSQ0VQQVRIL3VuaXgvd2luZS9saWIvIgorLQkJZmkKKy0JZmkKKy0JY2QgIiRPTERQ QVRIIgorK1BPTF9XaW5lX1NldFZlcnNpb25FbnYoKSB7CisrICAjIFVzYWdlOiBQT0xfV2luZV9T ZXRXaW5lVmVyc2lvbiBbVkVSU0lPTl0KKysgICMgR2V0IGZpcnN0IGFyZ3VtZW50J3Mgd2luZSB2 ZXJzaW9uIGFuZCBzZXQgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQorKyAgWyAhICIkMSIgPSAi IiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgorKyAgWyAiJFBPTF9XSU5FVkVSU0lP TiIgPSAiIiBdICYmIFBPTF9EZWJ1Z19XYXJuaW5nICJObyBQT0xfV0lORVZFUlNJT04gc2V0LCBh c3N1bWluZyBpdCBpcyByZXNldCIKKysgIFsgIiRQT0xfV0lORVZFUlNJT04iID0gIiIgXSAmJiBl eHBvcnQgUE9MX1dJTkVWRVJTSU9OPSItLXJlc2V0IgorKyAgaWYgWyAhICIkUE9MX1dJTkVWRVJT SU9OIiA9ICIiIF07IHRoZW4KKysgICAgWyAiJFBPTF9BUkNIIiA9ICIiIF0gJiYgUE9MX1N5c3Rl bV9TZXRBcmNoICJhdXRvIgorKyAgICAjUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgd2luZSB2 ZXJzaW9uIHBhdGg6ICRQT0xfV0lORVZFUlNJT04sICRQT0xfQVJDSCIKKysgICAgWyAiJFBPTF9P UyIgPSAiTWFjIiBdICYmIEFSQ0hfUFJFRklYPSJkYXJ3aW4iCisrICAgIFsgIiRQT0xfT1MiID0g IkZyZWVCU0QiIF0gJiYgQVJDSF9QUkVGSVg9ImZyZWVic2QiCisrICAgIFsgIiRQT0xfT1MiID0g IkxpbnV4IiBdICYmIEFSQ0hfUFJFRklYPSJsaW51eCIKKysgICAgT0xEUEFUSD0iJFBXRCIKKysg ICAgV0lORURJUj0iJFBPTF9VU0VSX1JPT1Qvd2luZS8kQVJDSF9QUkVGSVgtJFBPTF9BUkNIIgor KyAgICBta2RpciAtcCAiJFdJTkVESVIiCisrICAgIGNkICIkV0lORURJUiIKKysKKysgICAgaWYg WyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiLS1yZXNldCIgXTsgdGhlbgorKyAgICAgIGV4cG9ydCBQ QVRIPSIkUEFUSF9PUklHSU4iCisrICAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJExEX1BB VEhfT1JJR0lOIgorKyAgICAgIFsgIiRQT0xfT1MiID0gIkZyZWVCU0QiIF0gJiYgZXhwb3J0IExE XzMyX0xJQlJBUllfUEFUSD0iJExEXzMyX1BBVEhfT1JJR0lOIgorKyAgICAgIGV4cG9ydCBQT0xf V0lORVZFUlNJT049IiIKKysgICAgZWxzZQorKyAgICAgIGlmIFsgISAtZSAiJFdJTkVESVIvJFBP TF9XSU5FVkVSU0lPTiIgXTsgdGhlbgorKyAgICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldpbmUg JFBPTF9XSU5FVkVSU0lPTiBub3QgaW5zdGFsbGVkLiBJbnN0YWxsaW5nIGl0IgorKyAgICAgICAg UE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiRQT0xfV0lORVZFUlNJT04iCisrICAgICAgICBbWyAi JD8iID09IDIgXV0gJiYgcmV0dXJuIDAKKysgICAgICBmaQorKyAgICAgIGVjaG8gIlNldHRpbmcg cGF0aHMuLi4iCisrICAgICAgZXhwb3J0IFBBVEg9IiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04v YmluLzokUEFUSCIKKysgICAgICBbICIkUE9MX09TIiA9ICJNYWMiIF0gJiYgZXhwb3J0IERZTERf RkFMTEJBQ0tfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi8iCisr ICAgICAgZXhwb3J0IEZSRUVUWVBFX1BST1BFUlRJRVM9InRydWV0eXBlOmludGVycHJldGVyLXZl cnNpb249MzUiCisrICAgICAgZXhwb3J0IExEX0xJQlJBUllfUEFUSD0iJFdJTkVESVIvJFBPTF9X SU5FVkVSU0lPTi9saWIvOiRXSU5FRElSLyRQT0xfV0lORVZFUlNJT04vbGliNjQvOiRMRF9MSUJS QVJZX1BBVEgiCisrICAgICAgWyAiJFBPTF9PUyIgPSAiRnJlZUJTRCIgXSAmJiBleHBvcnQgTERf MzJfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9MX1dJTkVWRVJTSU9OL2xpYi86JExEXzMyX0xJ QlJBUllfUEFUSCIKKysgICAgZmkKKysgIGVsc2UKKysgICAgaWYgWyAiJFBPTF9PUyIgPSAiTWFj IiBdOyB0aGVuCisrICAgICAgWyAiJERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIiA9ICIiIF0g JiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIPSIkUkVTT1VSQ0VQQVRIL3VuaXgv d2luZS9saWIvIgorKyAgICBmaQorKyAgZmkKKysgIGNkICIkT0xEUEFUSCIKKyB9CistUE9MX1dp bmVfU2V0VmVyc2lvblByZWZpeCgpCisteworLQkjIFVzYWdlOiBQT0xfV2luZV9TZXRWZXJzaW9u UHJlZml4IFtWRVJTSU9OXQorLQkjIENoYW5nZSBhIHByZWZpeCB3aW5lIHZlcnNpb24KKy0JWyAh ICIkMSIgPSAiIiBdICYmIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgorLQlbICIkV0lORVBS RUZJWCIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0ISIK Ky0KKy0JUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiVkVSU0lPTiIgIiRQT0xfV0lORVZFUlNJT04i CisrUE9MX1dpbmVfU2V0VmVyc2lvblByZWZpeCgpIHsKKysgICMgVXNhZ2U6IFBPTF9XaW5lX1Nl dFZlcnNpb25QcmVmaXggW1ZFUlNJT05dCisrICAjIENoYW5nZSBhIHByZWZpeCB3aW5lIHZlcnNp b24KKysgIFsgISAiJDEiID0gIiIgXSAmJiBleHBvcnQgUE9MX1dJTkVWRVJTSU9OPSIkMSIKKysg IFsgIiRXSU5FUFJFRklYIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlz IG5vdCBzZXQhIgorKworKyAgUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiVkVSU0lPTiIgIiRQT0xf V0lORVZFUlNJT04iCisgfQorLVBPTF9XaW5lX1ByZWZpeERlbGV0ZSgpCisteworLQlbIC16ICIk V0lORVBSRUZJWCIgXSAmJiBQT0xfRGVidWdfRmF0YWwgIldJTkVQUkVGSVggbm90IHNldCIKKy0g CWxvY2FsIHdpbmVwcmVmaXg9IiRXSU5FUFJFRklYIgorLQl3aW5lcHJlZml4PSR7d2luZXByZWZp eC8vIi8vIi8iLyJ9CistCWxvY2FsIHNob3J0Y3V0cz0oKQorLQlsb2NhbCBPTERJRlM9IiRJRlMi CistCUlGUz0kJ1xuJworLQljZCAiJFBPTF9VU0VSX1JPT1Qvc2hvcnRjdXRzLyIgJiYKKy0JZm9y IHNob3J0Y3V0IGluICoKKy0JZG8KKy0JCVsgIiQoZGV0ZWN0X3dpbmVwcmVmaXggIiRzaG9ydGN1 dCIpIiA9ICIkd2luZXByZWZpeCIgXSAmJiBzaG9ydGN1dHMrPSgiJHNob3J0Y3V0IikKKy0JZG9u ZQorLQlJRlM9IiRPTERJRlMiCistCistCSMgY2YgTWFpbldpbmRvdy5EZWxldGVQcmVmaXgoKQor LQlQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1VuaW5z dGFsbGluZy4uLicpIiAiJChldmFsX2dldHRleHQgJyRBUFBMSUNBVElPTl9USVRMRSBVbmluc3Rh bGxlcicpIgorLQlpZiBbICIkeyNzaG9ydGN1dHNbQF19IiAtZ3QgMCBdOyB0aGVuCistIAkJUE9M X0RlYnVnX1dhcm5pbmcgIiR3aW5lcHJlZml4IGlzIHN0aWxsIGluIHVzZSBieSAkeyNzaG9ydGN1 dHNbQF19IHNob3J0Y3V0cywgcmVtb3ZpbmcgdGhlbSBmaXJzdCIKKy0JCWZvciBzaG9ydGN1dCBp biAiJHtzaG9ydGN1dHNbQF19IjsgZG8KKy0JCQlQT0xfRGVidWdfTWVzc2FnZSAiUmVtb3Zpbmcg c2hvcnRjdXQgJHNob3J0Y3V0Li4uIgorLQkJCWJhc2ggIiRQTEFZT05MSU5VWC9iYXNoL3VuaW5z dGFsbCIgLS1ub24taW50ZXJhY3RpdmUgIiRzaG9ydGN1dCIKKy0JCWRvbmUKKy0JZmkKKy0KKy0g ICAgICAgIGNsZWFuX3dpbmVwcmVmaXggLS1ub24taW50ZXJhY3RpdmUgIiRXSU5FUFJFRklYIgor K1BPTF9XaW5lX1ByZWZpeERlbGV0ZSgpIHsKKysgIFsgLXogIiRXSU5FUFJFRklYIiBdICYmIFBP TF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBub3Qgc2V0IgorKyAgbG9jYWwgd2luZXByZWZpeD0i JFdJTkVQUkVGSVgiCisrICB3aW5lcHJlZml4PSR7d2luZXByZWZpeC8vIi8vIi8iLyJ9CisrICBs b2NhbCBzaG9ydGN1dHM9KCkKKysgIGxvY2FsIE9MRElGUz0iJElGUyIKKysgIElGUz0kJ1xuJwor KyAgY2QgIiRQT0xfVVNFUl9ST09UL3Nob3J0Y3V0cy8iICYmCisrICAgIGZvciBzaG9ydGN1dCBp biAqOyBkbworKyAgICAgIFsgIiQoZGV0ZWN0X3dpbmVwcmVmaXggIiRzaG9ydGN1dCIpIiA9ICIk d2luZXByZWZpeCIgXSAmJiBzaG9ydGN1dHMrPSgiJHNob3J0Y3V0IikKKysgICAgZG9uZQorKyAg SUZTPSIkT0xESUZTIgorKworKyAgIyBjZiBNYWluV2luZG93LkRlbGV0ZVByZWZpeCgpCisrICBQ T0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1VuaW5zdGFs bGluZy4uLicpIiAiJChldmFsX2dldHRleHQgJyRBUFBMSUNBVElPTl9USVRMRSBVbmluc3RhbGxl cicpIgorKyAgaWYgWyAiJHsjc2hvcnRjdXRzW0BdfSIgLWd0IDAgXTsgdGhlbgorKyAgICBQT0xf RGVidWdfV2FybmluZyAiJHdpbmVwcmVmaXggaXMgc3RpbGwgaW4gdXNlIGJ5ICR7I3Nob3J0Y3V0 c1tAXX0gc2hvcnRjdXRzLCByZW1vdmluZyB0aGVtIGZpcnN0IgorKyAgICBmb3Igc2hvcnRjdXQg aW4gIiR7c2hvcnRjdXRzW0BdfSI7IGRvCisrICAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIlJlbW92 aW5nIHNob3J0Y3V0ICRzaG9ydGN1dC4uLiIKKysgICAgICBiYXNoICIkUExBWU9OTElOVVgvYmFz aC91bmluc3RhbGwiIC0tbm9uLWludGVyYWN0aXZlICIkc2hvcnRjdXQiCisrICAgIGRvbmUKKysg IGZpCisrCisrICBjbGVhbl93aW5lcHJlZml4IC0tbm9uLWludGVyYWN0aXZlICIkV0lORVBSRUZJ WCIKKyB9CistUE9MX1dpbmVfUHJlZml4Q3JlYXRlKCkKKy17CistCSMgQ3JlYXRlIGEgd2luZXBy ZWZpeAorLQkjIFVzYWdlOiBQT0xfV2luZV9QcmVmaXhDcmVhdGUgW1ZFUlNJT05dCistCWlmIFsg ISAiJDEiID0gIiIgXTsgdGhlbgorLQkJUE9MX0RlYnVnX01lc3NhZ2UgIlNldHRpbmcgUE9MX1dJ TkVWRVJTSU9OIHRvICQxIgorLQkJZXhwb3J0IFBPTF9XSU5FVkVSU0lPTj0iJDEiCistCWVsaWYg WyAiJFBPTF9XSU5FVkVSU0lPTiIgXTsgdGhlbgorLQkJUE9MX0RlYnVnX01lc3NhZ2UgIlBPTF9X SU5FVkVSU0lPTiBpcyBhbHJlYWR5IHNldCB0byAkUE9MX1dJTkVWRVJTSU9OLiBVc2luZyBpdCIK Ky0JZWxzZQorLQkJUE9MX0RlYnVnX01lc3NhZ2UgIk5vIHZlcnNpb24gc3BlY2lmaWVkLiBVc2lu ZyBzeXN0ZW0gdmVyc2lvbiAoJCh3aW5lIC0tdmVyc2lvbikpIgorLQlmaQorLQorLQlQT0xfRGVi dWdfTWVzc2FnZSAiQ3JlYXRpbmcgcHJlZml4ICgkUE9MX1dJTkVWRVJTSU9OKS4uLiIKKy0JWyAi JFBPTF9BUkNIIiA9ICIiIF0gJiYgUE9MX1N5c3RlbV9TZXRBcmNoICJhdXRvIgorLQlbICIkV0lO RVBSRUZJWCIgPSAiIiBdICYmIFBPTF9EZWJ1Z19GYXRhbCAiV0lORVBSRUZJWCBpcyBub3Qgc2V0 ISIKKy0KKy0JaWYgWyAtZSAiJFdJTkVQUkVGSVgiIF07IHRoZW4KKy0JCVBPTF9EZWJ1Z19NZXNz YWdlICJQcmVmaXggYWxyZWFkeSBleGlzdHMiCistCQlMTkdfT1ZFUldSSVRFPSIkKGV2YWxfZ2V0 dGV4dCAnT3ZlcndyaXRlICh1c3VhbGx5IHdvcmtzLCBubyBndWFyYW50ZWUpJykiCistCQlMTkdf RVJBU0U9IiQoZXZhbF9nZXR0ZXh0ICdFcmFzZSAodmlydHVhbCBkcml2ZSBjb250ZW50IHdpbGwg YmUgbG9zdCknKSIKKy0JCUxOR19BQk9SVD0iJChldmFsX2dldHRleHQgJ0Fib3J0IGluc3RhbGxh dGlvbicpIgorLQorLQkJT0xEX0FSQ0g9IiIKKy0JCVsgLWUgIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmNmZyIgXSAmJiBPTERfQVJDSD0kKFBPTF9Db25maWdfUHJlZml4UmVhZCAiQVJDSCIpCist CQlpZiBbICIkT0xEX0FSQ0giID0gIiRQT0xfVVNFUl9BUkNIIiBdOyB0aGVuCistCQkJUFJFRklY X0NIT0lDRVM9IiRMTkdfT1ZFUldSSVRFfiRMTkdfRVJBU0V+JExOR19BQk9SVCIKKy0JCWVsc2UK Ky0JCQkjIFNldHRpbmdzIGFyZSBub3QgY29tcGF0aWJsZSwgb3ZlcndyaXRpbmcgaXMgbm90IGFu IG9wdGlvbgorLQkJCVBSRUZJWF9DSE9JQ0VTPSIkTE5HX0VSQVNFfiRMTkdfQUJPUlQiCistCQlm aQorLQorLQkJT0xEX0FQUF9BTldTRVI9IiRBUFBfQU5TV0VSIgorLQkJUFJFRk5BTUU9IiQoYmFz ZW5hbWUgJFdJTkVQUkVGSVgpIgorLQkJUE9MX1NldHVwV2luZG93X21lbnUgIiQoZXZhbF9nZXR0 ZXh0ICdUaGUgdGFyZ2V0IHZpcnR1YWwgZHJpdmUgJFBSRUZOQU1FIGFscmVhZHkgZXhpc3RzOicp IiAiJFRJVExFIiAiJFBSRUZJWF9DSE9JQ0VTIiAifiIKKy0JCWNhc2UgIiRBUFBfQU5TV0VSIiBp bgorLQkJCSIkTE5HX09WRVJXUklURSIpCistCQkJCSMgUHJlZml4IGNvbnRlbnQgaXMgbm90IHJl cHJvZHVjaWJsZSwgaXQncyB0ZW1wdGluZyB0byBkaXNhbGxvdyByZXBvcnRzCistCQkJCSMgTk9C VUdSRVBPUlQ9IlRSVUUiCistCQkJCVBPTF9EZWJ1Z19NZXNzYWdlICJPdmVyd3JpdGUgUHJlZml4 IgorLQkJCQkjIFNob3VsZCB3ZSByZXZlcnQgd2hhdCBoYXMgYmVlbiBhdXRvZGV0ZWN0ZWQgYnkg U2VsZWN0UHJlZml4IGhlcmUgdG9vPworLQkJCQk7OworLQkJCSIkTE5HX0VSQVNFIikKKy0JCQkJ UE9MX0RlYnVnX01lc3NhZ2UgIkVyYXNlIFByZWZpeCIKKy0JCQkJUE9MX1dpbmVfUHJlZml4RGVs ZXRlCistCQkJCSMgUmV2ZXJ0IHdoYXQgY291bGQgaGF2ZSBiZWVuIGF1dG9kZXRlY3RlZCB3aXRo IFNlbGVjdFByZWZpeAorLQkJCQlQT0xfQVJDSD0iJFBPTF9VU0VSX0FSQ0giCistCQkJCTs7Cist CQkJKikKKy0JCQkJTk9CVUdSRVBPUlQ9IlRSVUUiCistCQkJCVBPTF9EZWJ1Z19GYXRhbCAiJChl dmFsX2dldHRleHQgJ1VzZXIgYWJvcnQnKSIKKy0JCQkJOzsKKy0JCWVzYWMKKy0JCUFQUF9BTlNX RVI9IiRPTERfQVBQX0FOV1NFUiIKKy0JZmkKKy0KKy0JUE9MX1NldHVwV2luZG93X3dhaXQgIiQo ZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgdmlydHVhbCBkcml2ZSBpcyBiZWlu ZyBjcmVhdGVkLi4uJykiICIkVElUTEUiCistCWlmIFsgLWUgIiRXSU5FUFJFRklYIiBdOyB0aGVu CistCQl0b3VjaCAiJFdJTkVQUkVGSVgvcGxheW9ubGludXguY2ZnIgorLQkJaWYgWyAhICIkUE9M X1dJTkVWRVJTSU9OIiA9ICIiIF07IHRoZW4KKy0JCQlQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGlu ZyB2ZXJzaW9uIHRvICRQT0xfV0lORVZFUlNJT04iCistCQkJUE9MX1dpbmVfU2V0VmVyc2lvblBy ZWZpeCAiJFBPTF9XSU5FVkVSU0lPTiIKKy0JCQlQT0xfV2luZV9TZXRWZXJzaW9uRW52CistCQlm aQorLQllbHNlCSMgUHJlZml4IGRvZXMgbm90IGV4aXQsIGxldCdzIGNyZWF0ZSBpdAorLQkJaWYg WyAiJFBPTF9XSU5FVkVSU0lPTiIgPSAiIiBdOyB0aGVuCistCQkJIyBTeXN0ZW0gd2luZXZlcnNp b24KKy0JCQkjIyBSZWFsbHkgYmFkIGlkZWEKKy0JCQkjIyBleHBvcnQgV0lORUFSQ0g9d2luMzIK Ky0JCQlpZiBbICEgIiRQT0xfQVJDSCIgPSAiIiBdOyB0aGVuCistCQkJCWlmIFsgIiRQT0xfQVJD SCIgPSAieDg2IiBdOyB0aGVuCistCQkJCQlleHBvcnQgV0lORUFSQ0g9d2luMzIKKy0JCQkJZWxz ZQorLQkJCQkJZXhwb3J0IFdJTkVBUkNIPXdpbjY0CistCQkJCWZpCistCQkJCVBPTF9EZWJ1Z19N ZXNzYWdlICJTZXR0aW5nIFdJTkVBUkNIIHRvICRXSU5FQVJDSCIKKy0JCQlmaQorLQorLQkJCXdp bmUgd2luZWJvb3QKKy0JCQlQT0xfRGVidWdfSW5pdFByZWZpeAorLQorLQkJCWlmIFsgLWUgIiRX SU5FUFJFRklYL2RyaXZlX2Mvd2luZG93cy9zeXN3b3c2NCIgXSAjIEl0IGlzIGEgNjQgYml0cyBw cmVmaXgKKy0JCQl0aGVuCistCQkJCVBPTF9Db25maWdfUHJlZml4V3JpdGUgIkFSQ0giICJhbWQ2 NCIKKy0JCQkJUE9MX0RlYnVnX0xvZ1RvUHJlZml4ICJUaGlzIGlzIGEgNjRiaXRzIHByZWZpeCEi CistCQkJCVBPTF9Db25maWdfV3JpdGUgV0lORV9TWVNURU1fQVJDSCBhbWQ2NAorLQkJCWVsc2UK Ky0JCQkJUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgIng4NiIKKy0JCQkJUE9MX0RlYnVn X0xvZ1RvUHJlZml4ICJUaGlzIGlzIGEgMzJiaXRzIHByZWZpeCEiCistCQkJCVBPTF9Db25maWdf V3JpdGUgV0lORV9TWVNURU1fQVJDSCB4ODYKKy0JCQlmaQorLQkJZWxzZQorLQkJCW1rZGlyIC1w ICIkV0lORVBSRUZJWCIKKy0JCQlQT0xfRGVidWdfTWVzc2FnZSAiVXNpbmcgd2luZSAkUE9MX1dJ TkVWRVJTSU9OIgorLQkJCVBPTF9XaW5lX0luc3RhbGxWZXJzaW9uICIkUE9MX1dJTkVWRVJTSU9O IgorLQkJCVBPTF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQg d2hpbGUgdGhlIHZpcnR1YWwgZHJpdmUgaXMgYmVpbmcgY3JlYXRlZC4uLicpIiAiJFRJVExFIgor LQkJCVBPTF9Db25maWdfUHJlZml4V3JpdGUgIkFSQ0giICIkUE9MX0FSQ0giCistCQkJUE9MX0Nv bmZpZ19QcmVmaXhXcml0ZSAiVkVSU0lPTiIgIiRQT0xfV0lORVZFUlNJT04iCistCQkJUE9MX1dp bmVfQXV0b1NldFZlcnNpb25FbnYKKy0KKy0JCQlQT0xfRGVidWdfSW5pdFByZWZpeAorLQorLQkJ CXdoaWNoIHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQod2hpY2ggd2lu ZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODExNjk4YTUzNDE1YjQ3NjVkIiBd ICYmIFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlIHwgZ3JlcCAkQVBQTElDQVRJT05fVElU TEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRlCistCQkJd2luZSB3aW5lYm9vdAor LQkJZmkKKy0JZmkKKy0KKy0JIyBNYWtlIHN1cmUgdGhhdCAucmVnIGZpbGVzIGFyZSBjcmVhdGVk CistCWlmIHdoaWNoIHdpbmVzZXJ2ZXI7IHRoZW4KKy0JCXdpbmVzZXJ2ZXIgLXcKKy0JZWxzZQor LQkJUE9MX0RlYnVnX01lc3NhZ2UgIldhcm5pbmcsIHdpbmVzZXJ2ZXIgbm90IGZvdW5kIgorLQkJ c2xlZXAgNAorLQlmaQorLQlQT0xfTG9hZFZhcl9QUk9HUkFNRklMRVMKKy0JWyAtZSAiJFBPTF9V U0VSX1JPT1QvY29uZmlndXJhdGlvbnMvcG9zdF9wcmVmaXhjcmVhdGUiIF0gJiYgXAorLQkgICAg c291cmNlICIkUE9MX1VTRVJfUk9PVC9jb25maWd1cmF0aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIK KytQT0xfV2luZV9QcmVmaXhDcmVhdGUoKSB7CisrICAjIENyZWF0ZSBhIHdpbmVwcmVmaXgKKysg ICMgVXNhZ2U6IFBPTF9XaW5lX1ByZWZpeENyZWF0ZSBbVkVSU0lPTl0KKysgIGlmIFsgISAiJDEi ID0gIiIgXTsgdGhlbgorKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBQT0xfV0lORVZF UlNJT04gdG8gJDEiCisrICAgIGV4cG9ydCBQT0xfV0lORVZFUlNJT049IiQxIgorKyAgZWxpZiBb ICIkUE9MX1dJTkVWRVJTSU9OIiBdOyB0aGVuCisrICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJQT0xf V0lORVZFUlNJT04gaXMgYWxyZWFkeSBzZXQgdG8gJFBPTF9XSU5FVkVSU0lPTi4gVXNpbmcgaXQi CisrICBlbHNlCisrICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJObyB2ZXJzaW9uIHNwZWNpZmllZC4g VXNpbmcgc3lzdGVtIHZlcnNpb24gKCQod2luZSAtLXZlcnNpb24pKSIKKysgIGZpCisrCisrICBQ T0xfRGVidWdfTWVzc2FnZSAiQ3JlYXRpbmcgcHJlZml4ICgkUE9MX1dJTkVWRVJTSU9OKS4uLiIK KysgIFsgIiRQT0xfQVJDSCIgPSAiIiBdICYmIFBPTF9TeXN0ZW1fU2V0QXJjaCAiYXV0byIKKysg IFsgIiRXSU5FUFJFRklYIiA9ICIiIF0gJiYgUE9MX0RlYnVnX0ZhdGFsICJXSU5FUFJFRklYIGlz IG5vdCBzZXQhIgorKworKyAgaWYgWyAtZSAiJFdJTkVQUkVGSVgiIF07IHRoZW4KKysgICAgUE9M X0RlYnVnX01lc3NhZ2UgIlByZWZpeCBhbHJlYWR5IGV4aXN0cyIKKysgICAgTE5HX09WRVJXUklU RT0iJChldmFsX2dldHRleHQgJ092ZXJ3cml0ZSAodXN1YWxseSB3b3Jrcywgbm8gZ3VhcmFudGVl KScpIgorKyAgICBMTkdfRVJBU0U9IiQoZXZhbF9nZXR0ZXh0ICdFcmFzZSAodmlydHVhbCBkcml2 ZSBjb250ZW50IHdpbGwgYmUgbG9zdCknKSIKKysgICAgTE5HX0FCT1JUPSIkKGV2YWxfZ2V0dGV4 dCAnQWJvcnQgaW5zdGFsbGF0aW9uJykiCisrCisrICAgIE9MRF9BUkNIPSIiCisrICAgIFsgLWUg IiRXSU5FUFJFRklYL3BsYXlvbmxpbnV4LmNmZyIgXSAmJiBPTERfQVJDSD0kKFBPTF9Db25maWdf UHJlZml4UmVhZCAiQVJDSCIpCisrICAgIGlmIFsgIiRPTERfQVJDSCIgPSAiJFBPTF9VU0VSX0FS Q0giIF07IHRoZW4KKysgICAgICBQUkVGSVhfQ0hPSUNFUz0iJExOR19PVkVSV1JJVEV+JExOR19F UkFTRX4kTE5HX0FCT1JUIgorKyAgICBlbHNlCisrICAgICAgIyBTZXR0aW5ncyBhcmUgbm90IGNv bXBhdGlibGUsIG92ZXJ3cml0aW5nIGlzIG5vdCBhbiBvcHRpb24KKysgICAgICBQUkVGSVhfQ0hP SUNFUz0iJExOR19FUkFTRX4kTE5HX0FCT1JUIgorKyAgICBmaQorKworKyAgICBPTERfQVBQX0FO V1NFUj0iJEFQUF9BTlNXRVIiCisrICAgIFBSRUZOQU1FPSIkKGJhc2VuYW1lICRXSU5FUFJFRklY KSIKKysgICAgUE9MX1NldHVwV2luZG93X21lbnUgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgdGFyZ2V0 IHZpcnR1YWwgZHJpdmUgJFBSRUZOQU1FIGFscmVhZHkgZXhpc3RzOicpIiAiJFRJVExFIiAiJFBS RUZJWF9DSE9JQ0VTIiAifiIKKysgICAgY2FzZSAiJEFQUF9BTlNXRVIiIGluCisrICAgICIkTE5H X09WRVJXUklURSIpCisrICAgICAgIyBQcmVmaXggY29udGVudCBpcyBub3QgcmVwcm9kdWNpYmxl LCBpdCdzIHRlbXB0aW5nIHRvIGRpc2FsbG93IHJlcG9ydHMKKysgICAgICAjIE5PQlVHUkVQT1JU PSJUUlVFIgorKyAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJPdmVyd3JpdGUgUHJlZml4IgorKyAg ICAgICMgU2hvdWxkIHdlIHJldmVydCB3aGF0IGhhcyBiZWVuIGF1dG9kZXRlY3RlZCBieSBTZWxl Y3RQcmVmaXggaGVyZSB0b28/CisrICAgICAgOzsKKysgICAgIiRMTkdfRVJBU0UiKQorKyAgICAg IFBPTF9EZWJ1Z19NZXNzYWdlICJFcmFzZSBQcmVmaXgiCisrICAgICAgUE9MX1dpbmVfUHJlZml4 RGVsZXRlCisrICAgICAgIyBSZXZlcnQgd2hhdCBjb3VsZCBoYXZlIGJlZW4gYXV0b2RldGVjdGVk IHdpdGggU2VsZWN0UHJlZml4CisrICAgICAgUE9MX0FSQ0g9IiRQT0xfVVNFUl9BUkNIIgorKyAg ICAgIDs7CisrICAgICopCisrICAgICAgTk9CVUdSRVBPUlQ9IlRSVUUiCisrICAgICAgUE9MX0Rl YnVnX0ZhdGFsICIkKGV2YWxfZ2V0dGV4dCAnVXNlciBhYm9ydCcpIgorKyAgICAgIDs7CisrICAg IGVzYWMKKysgICAgQVBQX0FOU1dFUj0iJE9MRF9BUFBfQU5XU0VSIgorKyAgZmkKKysKKysgIFBP TF9TZXR1cFdpbmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgdGhl IHZpcnR1YWwgZHJpdmUgaXMgYmVpbmcgY3JlYXRlZC4uLicpIiAiJFRJVExFIgorKyAgaWYgWyAt ZSAiJFdJTkVQUkVGSVgiIF07IHRoZW4KKysgICAgdG91Y2ggIiRXSU5FUFJFRklYL3BsYXlvbmxp bnV4LmNmZyIKKysgICAgaWYgWyAhICIkUE9MX1dJTkVWRVJTSU9OIiA9ICIiIF07IHRoZW4KKysg ICAgICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyB2ZXJzaW9uIHRvICRQT0xfV0lORVZFUlNJ T04iCisrICAgICAgUE9MX1dpbmVfU2V0VmVyc2lvblByZWZpeCAiJFBPTF9XSU5FVkVSU0lPTiIK KysgICAgICBQT0xfV2luZV9TZXRWZXJzaW9uRW52CisrICAgIGZpCisrICBlbHNlICMgUHJlZml4 IGRvZXMgbm90IGV4aXQsIGxldCdzIGNyZWF0ZSBpdAorKyAgICBpZiBbICIkUE9MX1dJTkVWRVJT SU9OIiA9ICIiIF07IHRoZW4KKysgICAgICAjIFN5c3RlbSB3aW5ldmVyc2lvbgorKyAgICAgICMj IFJlYWxseSBiYWQgaWRlYQorKyAgICAgICMjIGV4cG9ydCBXSU5FQVJDSD13aW4zMgorKyAgICAg IGlmIFsgISAiJFBPTF9BUkNIIiA9ICIiIF07IHRoZW4KKysgICAgICAgIGlmIFsgIiRQT0xfQVJD SCIgPSAieDg2IiBdOyB0aGVuCisrICAgICAgICAgIGV4cG9ydCBXSU5FQVJDSD13aW4zMgorKyAg ICAgICAgZWxzZQorKyAgICAgICAgICBleHBvcnQgV0lORUFSQ0g9d2luNjQKKysgICAgICAgIGZp CisrICAgICAgICBQT0xfRGVidWdfTWVzc2FnZSAiU2V0dGluZyBXSU5FQVJDSCB0byAkV0lORUFS Q0giCisrICAgICAgZmkKKysKKysgICAgICB3aW5lIHdpbmVib290CisrICAgICAgUE9MX0RlYnVn X0luaXRQcmVmaXgKKysKKysgICAgICBpZiBbIC1lICIkV0lORVBSRUZJWC9kcml2ZV9jL3dpbmRv d3Mvc3lzd293NjQiIF07IHRoZW4gIyBJdCBpcyBhIDY0IGJpdHMgcHJlZml4CisrICAgICAgICBQ T0xfQ29uZmlnX1ByZWZpeFdyaXRlICJBUkNIIiAiYW1kNjQiCisrICAgICAgICBQT0xfRGVidWdf TG9nVG9QcmVmaXggIlRoaXMgaXMgYSA2NGJpdHMgcHJlZml4ISIKKysgICAgICAgIFBPTF9Db25m aWdfV3JpdGUgV0lORV9TWVNURU1fQVJDSCBhbWQ2NAorKyAgICAgIGVsc2UKKysgICAgICAgIFBP TF9Db25maWdfUHJlZml4V3JpdGUgIkFSQ0giICJ4ODYiCisrICAgICAgICBQT0xfRGVidWdfTG9n VG9QcmVmaXggIlRoaXMgaXMgYSAzMmJpdHMgcHJlZml4ISIKKysgICAgICAgIFBPTF9Db25maWdf V3JpdGUgV0lORV9TWVNURU1fQVJDSCB4ODYKKysgICAgICBmaQorKyAgICBlbHNlCisrICAgICAg bWtkaXIgLXAgIiRXSU5FUFJFRklYIgorKyAgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJVc2luZyB3 aW5lICRQT0xfV0lORVZFUlNJT04iCisrICAgICAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24gIiRQ T0xfV0lORVZFUlNJT04iCisrICAgICAgZXhpdENvZGU9IiQ/IgorKyAgICAgIFBPTF9TZXR1cFdp bmRvd193YWl0ICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgdGhlIHZpcnR1YWwg ZHJpdmUgaXMgYmVpbmcgY3JlYXRlZC4uLicpIiAiJFRJVExFIgorKworKyAgICAgIGlmIFtbICEg IiRleGl0Q29kZSIgPT0gIjIiIF1dOyB0aGVuICMjIFdpbmUgdmVyc2lvbiBpcyBhY3R1YWxseSBm b3VuZAorKyAgICAgICAgUE9MX0NvbmZpZ19QcmVmaXhXcml0ZSAiQVJDSCIgIiRQT0xfQVJDSCIK KysgICAgICAgIFBPTF9Db25maWdfUHJlZml4V3JpdGUgIlZFUlNJT04iICIkUE9MX1dJTkVWRVJT SU9OIgorKyAgICAgIGZpCisrCisrICAgICAgUE9MX1dpbmVfQXV0b1NldFZlcnNpb25FbnYKKysK KysgICAgICBQT0xfRGVidWdfSW5pdFByZWZpeAorKworKyAgICAgIHdoaWNoIHdpbmVwcmVmaXhj cmVhdGUgJiYgWyAiJChQT0xfTUQ1X2ZpbGUgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSkiKSIg IT0gIjVjMGVlOTA2ODI3NDZlODExNjk4YTUzNDE1YjQ3NjVkIiBdICYmIFsgISAiJCh3aGljaCB3 aW5lcHJlZml4Y3JlYXRlIHwgZ3JlcCAkQVBQTElDQVRJT05fVElUTEUpIiA9ICIiIF0gJiYgd2lu ZSB3aW5lcHJlZml4Y3JlYXRlCisrICAgICAgd2luZSB3aW5lYm9vdAorKyAgICBmaQorKyAgZmkK KysKKysgICMgTWFrZSBzdXJlIHRoYXQgLnJlZyBmaWxlcyBhcmUgY3JlYXRlZAorKyAgaWYgd2hp Y2ggd2luZXNlcnZlcjsgdGhlbgorKyAgICB3aW5lc2VydmVyIC13CisrICBlbHNlCisrICAgIFBP TF9EZWJ1Z19NZXNzYWdlICJXYXJuaW5nLCB3aW5lc2VydmVyIG5vdCBmb3VuZCIKKysgICAgc2xl ZXAgNAorKyAgZmkKKysgIFBPTF9Mb2FkVmFyX1BST0dSQU1GSUxFUworKyAgWyAtZSAiJFBPTF9V U0VSX1JPT1QvY29uZmlndXJhdGlvbnMvcG9zdF9wcmVmaXhjcmVhdGUiIF0gJiYKKysgICAgc291 cmNlICIkUE9MX1VTRVJfUk9PVC9jb25maWd1cmF0aW9ucy9wb3N0X3ByZWZpeGNyZWF0ZSIKKyB9 CistUE9MX1dpbmVfT3ZlcnJpZGVETEwoKQorLXsKKy0JIyBPdmVycmlkZSBETExzCistCU1PREU9 JDEKKy0JWyAiJE1PREUiID0gImRpc2FibGVkIiBdICYmIHVuc2V0IE1PREUKKy0Jc2hpZnQKKy0K Ky0JKGNhdCA8PCAnRU9GJworK1BPTF9XaW5lX092ZXJyaWRlRExMKCkgeworKyAgIyBPdmVycmlk ZSBETExzCisrICBNT0RFPSQxCisrICBbICIkTU9ERSIgPSAiZGlzYWJsZWQiIF0gJiYgdW5zZXQg TU9ERQorKyAgc2hpZnQKKysKKysgICgKKysgICAgY2F0IDw8J0VPRicKKyBSRUdFRElUNAorIAor IFtIS0VZX0NVUlJFTlRfVVNFUlxTb2Z0d2FyZVxXaW5lXERsbE92ZXJyaWRlc10KKyBFT0YKKyAK Ky0JZm9yIERMTCBpbiAiJEAiCistCWRvCistCQllY2hvICJcIiokRExMXCI9XCIkTU9ERVwiIgor LQlkb25lKSA+ICIkUE9MX1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKKysgICAgZm9y IERMTCBpbiAiJEAiOyBkbworKyAgICAgIGVjaG8gIlwiKiRETExcIj1cIiRNT0RFXCIiCisrICAg IGRvbmUKKysgICkgPiIkUE9MX1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJlZyIKKyAKKy0J UE9MX0RlYnVnX01lc3NhZ2UgIk92ZXJyaWRpbmcgRExMcyIKKy0JUE9MX1NldHVwV2luZG93X3dh aXRfbmV4dF9zaWduYWwgIiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdC4uLicpIiAiJFRJVExF IgorLQlQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvb3ZlcnJpZGUtZGxsLnJl ZyIKKy0Jcm0gIiRQT0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgorKyAgUE9MX0Rl YnVnX01lc3NhZ2UgIk92ZXJyaWRpbmcgRExMcyIKKysgIFBPTF9TZXR1cFdpbmRvd193YWl0X25l eHRfc2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQuLi4nKSIgIiRUSVRMRSIKKysg IFBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgor KyAgcm0gIiRQT0xfVVNFUl9ST09UL3RtcC9vdmVycmlkZS1kbGwucmVnIgorIH0KKy1QT0xfV2lu ZV9EZWxPdmVycmlkZURMTCgpCisteworLQkjIERlbGV0ZSBvdmVycmlkZSBETExzCistCShjYXQg PDwgJ0VPRicKKytQT0xfV2luZV9EZWxPdmVycmlkZURMTCgpIHsKKysgICMgRGVsZXRlIG92ZXJy aWRlIERMTHMKKysgICgKKysgICAgY2F0IDw8J0VPRicKKyBSRUdFRElUNAorIAorIFtIS0VZX0NV UlJFTlRfVVNFUlxTb2Z0d2FyZVxXaW5lXERsbE92ZXJyaWRlc10KKyBFT0YKKyAKKy0JZm9yIERM TCBpbiAiJEAiCistCWRvCistCQllY2hvICJcIiRETExcIj0tIgorLQkJZWNobyAiXCIqJERMTFwi PS0iCistCWRvbmUpID4gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUtZGxsLnJlZyIK Ky0JUE9MX0RlYnVnX01lc3NhZ2UgIkRlbGV0aW5nIG92ZXJyaWRlcyBETExzIgorLQlQT0xfU2V0 dXBXaW5kb3dfd2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0Li4u JykiICIkVElUTEUiCistCVBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwt b3ZlcnJpZGUtZGxsLnJlZyIKKy0Jcm0gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtb3ZlcnJpZGUt ZGxsLnJlZyIKKysgICAgZm9yIERMTCBpbiAiJEAiOyBkbworKyAgICAgIGVjaG8gIlwiJERMTFwi PS0iCisrICAgICAgZWNobyAiXCIqJERMTFwiPS0iCisrICAgIGRvbmUKKysgICkgPiIkUE9MX1VT RVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCisrICBQT0xfRGVidWdfTWVzc2FnZSAi RGVsZXRpbmcgb3ZlcnJpZGVzIERMTHMiCisrICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9uZXh0X3Np Z25hbCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0Li4uJykiICIkVElUTEUiCisrICBQT0xf V2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLW92ZXJyaWRlLWRsbC5yZWciCisr ICBybSAiJFBPTF9VU0VSX1JPT1QvdG1wL2RlbC1vdmVycmlkZS1kbGwucmVnIgorIH0KKy1QT0xf V2luZV9PdmVycmlkZURMTF9BcHAoKQorLXsKKy0JIyBBcHAtc3BlY2lmaWMgRExMIG92ZXJyaWRl cworLQlBUFA9IiQxIgorLQlNT0RFPSIkMiIKKy0JWyAiJE1PREUiID0gImRpc2FibGVkIiBdICYm IHVuc2V0IE1PREUKKy0Jc2hpZnQgMgorLQorLQkoY2F0IDw8IEVPRgorK1BPTF9XaW5lX092ZXJy aWRlRExMX0FwcCgpIHsKKysgICMgQXBwLXNwZWNpZmljIERMTCBvdmVycmlkZXMKKysgIEFQUD0i JDEiCisrICBNT0RFPSIkMiIKKysgIFsgIiRNT0RFIiA9ICJkaXNhYmxlZCIgXSAmJiB1bnNldCBN T0RFCisrICBzaGlmdCAyCisrCisrICAoCisrICAgIGNhdCA8PEVPRgorIFJFR0VESVQ0CisgCisg W0hLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZVxcV2luZVxcQXBwRGVmYXVsdHNcXCRBUFBcXERs bE92ZXJyaWRlc10KKyBFT0YKKy0JZm9yIERMTCBpbiAiJEAiCistCWRvCistCQkjIFdobyBrbm93 cyB3aGF0IHRoaXMgaGFjayBpcyBmb3I/CistCQlpZiBbICIkRExMIiA9ICJjb21jdGwzMiIgXTsg dGhlbgorLQkJCXJtIC1yZiAiJFdJTkVQUkVGSVgvd2luc3hzL21hbmlmZXN0cy94ODZfbWljcm9z b2Z0LndpbmRvd3MuY29tbW9uLWNvbnRyb2xzXzY1OTViNjQxNDRjY2YxZGZfNi4wLjI2MDAuMjk4 Ml9ub25lX2RlYWRiZWVmLm1hbmlmZXN0IgorLQkJZmkKKy0JCWVjaG8gIlwiKiRETExcIj1cIiRN T0RFXCIiCistCWRvbmUpID4gIiRQT0xfVVNFUl9ST09UL3RtcC9hcHAtZGxsLW92ZXJyaWRlLnJl ZyIKKy0JUE9MX1dpbmUgcmVnZWRpdCAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJp ZGUucmVnIgorLQlybSAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3ZlcnJpZGUucmVnIgor KyAgICBmb3IgRExMIGluICIkQCI7IGRvCisrICAgICAgIyBXaG8ga25vd3Mgd2hhdCB0aGlzIGhh Y2sgaXMgZm9yPworKyAgICAgIGlmIFsgIiRETEwiID0gImNvbWN0bDMyIiBdOyB0aGVuCisrICAg ICAgICBybSAtcmYgIiRXSU5FUFJFRklYL3dpbnN4cy9tYW5pZmVzdHMveDg2X21pY3Jvc29mdC53 aW5kb3dzLmNvbW1vbi1jb250cm9sc182NTk1YjY0MTQ0Y2NmMWRmXzYuMC4yNjAwLjI5ODJfbm9u ZV9kZWFkYmVlZi5tYW5pZmVzdCIKKysgICAgICBmaQorKyAgICAgIGVjaG8gIlwiKiRETExcIj1c IiRNT0RFXCIiCisrICAgIGRvbmUKKysgICkgPiIkUE9MX1VTRVJfUk9PVC90bXAvYXBwLWRsbC1v dmVycmlkZS5yZWciCisrICBQT0xfV2luZSByZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvYXBw LWRsbC1vdmVycmlkZS5yZWciCisrICBybSAiJFBPTF9VU0VSX1JPT1QvdG1wL2FwcC1kbGwtb3Zl cnJpZGUucmVnIgorIH0KKy1QT0xfV2luZV9EZWxPdmVycmlkZURMTF9BcHAoKQorLXsKKy0JIyBE ZWxldGUgYXBwLXNwZWNpZmljIERMTCBvdmVycmlkZXMKKy0JQVBQPSIkMSIKKy0Jc2hpZnQKKytQ T0xfV2luZV9EZWxPdmVycmlkZURMTF9BcHAoKSB7CisrICAjIERlbGV0ZSBhcHAtc3BlY2lmaWMg RExMIG92ZXJyaWRlcworKyAgQVBQPSIkMSIKKysgIHNoaWZ0CisgCistCShjYXQgPDwgRU9GCisr ICAoCisrICAgIGNhdCA8PEVPRgorIFJFR0VESVQ0CisgCisgW0hLRVlfQ1VSUkVOVF9VU0VSXFxT b2Z0d2FyZVxcV2luZVxcQXBwRGVmYXVsdHNcXCRBUFBcXERsbE92ZXJyaWRlc10KKyBFT0YKKy0J Zm9yIERMTCBpbiAiJEAiCistCWRvCistCQllY2hvICJcIiRETExcIj0tIgorLQkJZWNobyAiXCIq JERMTFwiPS0iCistCWRvbmUpID4gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVy cmlkZS5yZWciCistCVBPTF9XaW5lIHJlZ2VkaXQgIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBw LWRsbC1vdmVycmlkZS5yZWciCistCXJtICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwt b3ZlcnJpZGUucmVnIgorKyAgICBmb3IgRExMIGluICIkQCI7IGRvCisrICAgICAgZWNobyAiXCIk RExMXCI9LSIKKysgICAgICBlY2hvICJcIiokRExMXCI9LSIKKysgICAgZG9uZQorKyAgKSA+IiRQ T0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCisrICBQT0xfV2luZSBy ZWdlZGl0ICIkUE9MX1VTRVJfUk9PVC90bXAvZGVsLWFwcC1kbGwtb3ZlcnJpZGUucmVnIgorKyAg cm0gIiRQT0xfVVNFUl9ST09UL3RtcC9kZWwtYXBwLWRsbC1vdmVycmlkZS5yZWciCisgfQorLVBP TF9XaW5lX1JlZGlyZWN0RExMKCkKKy17CistICAgICMgUmVkaXJlY3QgRExMcyB3aW5lLXN0YWdp bmcgZmVhdHVyZQorLSAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93aW5lLWNvbXBob2xpby93aW5l LXN0YWdpbmcvd2lraS9ETEwtUmVkaXJlY3RzCistICAgIGxvY2FsIFNPVVJDRT0iJDEiCistICAg IGxvY2FsIFRBUkdFVD0iJDIiCistICAgIFBPTF9XaW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIg J0RsbFJlZGlyZWN0cycgIiRTT1VSQ0UiICIkVEFSR0VUIgorK1BPTF9XaW5lX1JlZGlyZWN0RExM KCkgeworKyAgIyBSZWRpcmVjdCBETExzIHdpbmUtc3RhZ2luZyBmZWF0dXJlCisrICAjIGh0dHBz Oi8vZ2l0aHViLmNvbS93aW5lLWNvbXBob2xpby93aW5lLXN0YWdpbmcvd2lraS9ETEwtUmVkaXJl Y3RzCisrICBsb2NhbCBTT1VSQ0U9IiQxIgorKyAgbG9jYWwgVEFSR0VUPSIkMiIKKysgIFBPTF9X aW5lX1VwZGF0ZVJlZ2lzdHJ5V2luZVBhaXIgJ0RsbFJlZGlyZWN0cycgIiRTT1VSQ0UiICIkVEFS R0VUIgorIH0KKy1QT0xfV2luZV9EZWxSZWRpcmVjdERMTCgpCisteworLSAgICBsb2NhbCBTT1VS Q0U9IiQxIgorLSAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdEbGxSZWRpcmVj dHMnICIkU09VUkNFIiAnZGVmYXVsdCcKKytQT0xfV2luZV9EZWxSZWRpcmVjdERMTCgpIHsKKysg IGxvY2FsIFNPVVJDRT0iJDEiCisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICdE bGxSZWRpcmVjdHMnICIkU09VUkNFIiAnZGVmYXVsdCcKKyB9CistUE9MX1dpbmVfUmVkaXJlY3RE TExfQXBwKCkKKy17CistICAgICMgQXBwLXNwZWNpZmljIERMTCByZWRpcmVjdAorLSAgICBsb2Nh bCBBUFA9IiQxIgorLSAgICBsb2NhbCBTT1VSQ0U9IiQyIgorLSAgICBsb2NhbCBUQVJHRVQ9IiQz IgorLSAgICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICJBcHBEZWZhdWx0c1xcJEFQ UFxcRGxsUmVkaXJlY3RzIiAiJFNPVVJDRSIgIiRUQVJHRVQiCisrUE9MX1dpbmVfUmVkaXJlY3RE TExfQXBwKCkgeworKyAgIyBBcHAtc3BlY2lmaWMgRExMIHJlZGlyZWN0CisrICBsb2NhbCBBUFA9 IiQxIgorKyAgbG9jYWwgU09VUkNFPSIkMiIKKysgIGxvY2FsIFRBUkdFVD0iJDMiCisrICBQT0xf V2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICJBcHBEZWZhdWx0c1xcJEFQUFxcRGxsUmVkaXJl Y3RzIiAiJFNPVVJDRSIgIiRUQVJHRVQiCisgfQorLVBPTF9XaW5lX0RlbFJlZGlyZWN0RExMX0Fw cCgpCisteworLSAgICAjIEFwcC1zcGVjaWZpYyBETEwgcmVkaXJlY3QKKy0gICAgbG9jYWwgQVBQ PSIkMSIKKy0gICAgbG9jYWwgU09VUkNFPSIkMiIKKy0gICAgUE9MX1dpbmVfVXBkYXRlUmVnaXN0 cnlXaW5lUGFpciAiQXBwRGVmYXVsdHNcXCRBUFBcXERsbFJlZGlyZWN0cyIgIiRTT1VSQ0UiICdk ZWZhdWx0JworK1BPTF9XaW5lX0RlbFJlZGlyZWN0RExMX0FwcCgpIHsKKysgICMgQXBwLXNwZWNp ZmljIERMTCByZWRpcmVjdAorKyAgbG9jYWwgQVBQPSIkMSIKKysgIGxvY2FsIFNPVVJDRT0iJDIi CisrICBQT0xfV2luZV9VcGRhdGVSZWdpc3RyeVdpbmVQYWlyICJBcHBEZWZhdWx0c1xcJEFQUFxc RGxsUmVkaXJlY3RzIiAiJFNPVVJDRSIgJ2RlZmF1bHQnCisgfQorLVBPTF9XaW5lX1dhaXRCZWZv cmUgKCkKKy17CistCSMgTG9jayBiYXNoIGNvbW1hbmRzIHVudGlsIHdpbmUgaXMgZXhpdGVkCist CSMgVXNhZ2UgOiBQT0xfV2luZV9XYWl0QmVmb3JlIFtQcm9ncmFtIHRpdGxlXSAoLS1hbGxvdy1r aWxsKQorLQlTT0ZUTkFNRT0iJDEiCistCWlmIFsgIiQyIiA9ICItLWFsbG93LWtpbGwiIF0KKy0J dGhlbgorLQkJYWxsb3dLaWxsPSJ0cnVlIgorLQllbHNlCistCQlhbGxvd0tpbGw9ImZhbHNlIgor LQlmaQorLQorLQlbICIkMSIgPSAiIiBdICYmIG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVh c2Ugd2FpdC4uLiIpIiB8fCBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hp bGUgJFNPRlROQU1FIGlzIGluc3RhbGxlZC4uLicpIgorLQorLQlpZiBbICIkYWxsb3dLaWxsIiA9 ICJ0cnVlIiBdCistCXRoZW4KKy0JCVBPTF9TZXR1cFdpbmRvd193YWl0X2J1dHRvbiAiJG1lc3Nh Z2UiICIkVElUTEUiICIkKGV2YWxfZ2V0dGV4dCAnSW5zdGFsbCBpcyBkb25lJykiICJ3aW5lc2Vy dmVyIC1rIiAiJChldmFsX2dldHRleHQgJ0JlIGNhcmVmdWwhIFRoaXMgd2lsbCBraWxsIGluc3Rh bGwgcHJvY2Vzcy4gSWYgaXQgaXMgbm90IGZpbmlzaGVkLCB5b3Ugd2lsbCBoYXZlIHRvIHJlaW5z dGFsbCAkU09GVE5BTUUnKSIKKy0JZWxzZQorLQkJUE9MX1NldHVwV2luZG93X3dhaXQgIiRtZXNz YWdlIiAiJFRJVExFIgorLQlmaQorK1BPTF9XaW5lX1dhaXRCZWZvcmUoKSB7CisrICAjIExvY2sg YmFzaCBjb21tYW5kcyB1bnRpbCB3aW5lIGlzIGV4aXRlZAorKyAgIyBVc2FnZSA6IFBPTF9XaW5l X1dhaXRCZWZvcmUgW1Byb2dyYW0gdGl0bGVdICgtLWFsbG93LWtpbGwpCisrICBTT0ZUTkFNRT0i JDEiCisrICBpZiBbICIkMiIgPSAiLS1hbGxvdy1raWxsIiBdOyB0aGVuCisrICAgIGFsbG93S2ls bD0idHJ1ZSIKKysgIGVsc2UKKysgICAgYWxsb3dLaWxsPSJmYWxzZSIKKysgIGZpCisrCisrICBb ICIkMSIgPSAiIiBdICYmIG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICJQbGVhc2Ugd2FpdC4uLiIp IiB8fCBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJFNPRlROQU1F IGlzIGluc3RhbGxlZC4uLicpIgorKworKyAgaWYgWyAiJGFsbG93S2lsbCIgPSAidHJ1ZSIgXTsg dGhlbgorKyAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdF9idXR0b24gIiRtZXNzYWdlIiAiJFRJVExF IiAiJChldmFsX2dldHRleHQgJ0luc3RhbGwgaXMgZG9uZScpIiAid2luZXNlcnZlciAtayIgIiQo ZXZhbF9nZXR0ZXh0ICdCZSBjYXJlZnVsISBUaGlzIHdpbGwga2lsbCBpbnN0YWxsIHByb2Nlc3Mu IElmIGl0IGlzIG5vdCBmaW5pc2hlZCwgeW91IHdpbGwgaGF2ZSB0byByZWluc3RhbGwgJFNPRlRO QU1FJykiCisrICBlbHNlCisrICAgIFBPTF9TZXR1cFdpbmRvd193YWl0ICIkbWVzc2FnZSIgIiRU SVRMRSIKKysgIGZpCisgCisgfQorLVBPTF9XaW5lX1dhaXRFeGl0ICgpCisteworLQkjIExvY2sg YmFzaCBjb21tYW5kcyB1bnRpbCB3aW5lIGlzIGV4aXRlZAorLQkjIFVzYWdlIDogUE9MX1dpbmVf V2FpdEV4aXQgKC0tZm9yY2UtaW5wdXQpIFtQcm9ncmFtIHRpdGxlXSAoLS1hbGxvdy1raWxsKQor LQlpZiBbICIkMSIgPSAiLS1mb3JjZS1pbnB1dCIgXQorLQl0aGVuCistCQlmb3JjZUlucHV0PSJ0 cnVlIgorLQkJc2hpZnQKKy0JZWxzZQorLQkJZm9yY2VJbnB1dD0iZmFsc2UiCistCWZpCistCist CVNPRlROQU1FPSIkMSIKKy0JaWYgWyAiJDIiID0gIi0tYWxsb3cta2lsbCIgXQorLQl0aGVuCist CQlhbGxvd0tpbGw9InRydWUiCistCWVsc2UKKy0JCWFsbG93S2lsbD0iZmFsc2UiCistCWZpCist CistCVsgIiQxIiA9ICIiIF0gJiYgbWVzc2FnZT0iJChldmFsX2dldHRleHQgIlBsZWFzZSB3YWl0 Li4uIikiIHx8IG1lc3NhZ2U9IiQoZXZhbF9nZXR0ZXh0ICdQbGVhc2Ugd2FpdCB3aGlsZSAkU09G VE5BTUUgaXMgaW5zdGFsbGVkLi4uJykiCistCWlmIFsgIiRhbGxvd0tpbGwiID0gInRydWUiIF0K Ky0JdGhlbgorLQkJUE9MX1NldHVwV2luZG93X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIgIiRUSVRM RSIgIiQoZXZhbF9nZXR0ZXh0ICdJbnN0YWxsIGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIgLWsiICIk KGV2YWxfZ2V0dGV4dCAnQmUgY2FyZWZ1bCEgVGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBwcm9jZXNz LiBJZiBpdCBpcyBub3QgZmluaXNoZWQsIHlvdSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxsICRTT0ZU TkFNRScpIgorLQllbHNlCistCQlQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2UiICIkVElU TEUiCistCWZpCistCXdpbmVzZXJ2ZXIgLXcgfHwgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQo ZXZhbF9nZXR0ZXh0ICdQcmVzcyBuZXh0IG9ubHkgd2hlbiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nl c3MgaXMgZmluaXNoZWQnKSIgIiRUSVRMRSIKKy0JWyAiJGZvcmNlSW5wdXQiID0gInRydWUiIF0g JiYgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdQcmVzcyBuZXh0IG9u bHkgd2hlbiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXMgZmluaXNoZWQnKSIgIiRUSVRMRSIK KytQT0xfV2luZV9XYWl0RXhpdCgpIHsKKysgICMgTG9jayBiYXNoIGNvbW1hbmRzIHVudGlsIHdp bmUgaXMgZXhpdGVkCisrICAjIFVzYWdlIDogUE9MX1dpbmVfV2FpdEV4aXQgKC0tZm9yY2UtaW5w dXQpIFtQcm9ncmFtIHRpdGxlXSAoLS1hbGxvdy1raWxsKQorKyAgaWYgWyAiJDEiID0gIi0tZm9y Y2UtaW5wdXQiIF07IHRoZW4KKysgICAgZm9yY2VJbnB1dD0idHJ1ZSIKKysgICAgc2hpZnQKKysg IGVsc2UKKysgICAgZm9yY2VJbnB1dD0iZmFsc2UiCisrICBmaQorKworKyAgU09GVE5BTUU9IiQx IgorKyAgaWYgWyAiJDIiID0gIi0tYWxsb3cta2lsbCIgXTsgdGhlbgorKyAgICBhbGxvd0tpbGw9 InRydWUiCisrICBlbHNlCisrICAgIGFsbG93S2lsbD0iZmFsc2UiCisrICBmaQorKworKyAgWyAi JDEiID0gIiIgXSAmJiBtZXNzYWdlPSIkKGV2YWxfZ2V0dGV4dCAiUGxlYXNlIHdhaXQuLi4iKSIg fHwgbWVzc2FnZT0iJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRTT0ZUTkFNRSBp cyBpbnN0YWxsZWQuLi4nKSIKKysgIGlmIFsgIiRhbGxvd0tpbGwiID0gInRydWUiIF07IHRoZW4K KysgICAgUE9MX1NldHVwV2luZG93X3dhaXRfYnV0dG9uICIkbWVzc2FnZSIgIiRUSVRMRSIgIiQo ZXZhbF9nZXR0ZXh0ICdJbnN0YWxsIGlzIGRvbmUnKSIgIndpbmVzZXJ2ZXIgLWsiICIkKGV2YWxf Z2V0dGV4dCAnQmUgY2FyZWZ1bCEgVGhpcyB3aWxsIGtpbGwgaW5zdGFsbCBwcm9jZXNzLiBJZiBp dCBpcyBub3QgZmluaXNoZWQsIHlvdSB3aWxsIGhhdmUgdG8gcmVpbnN0YWxsICRTT0ZUTkFNRScp IgorKyAgZWxzZQorKyAgICBQT0xfU2V0dXBXaW5kb3dfd2FpdCAiJG1lc3NhZ2UiICIkVElUTEUi CisrICBmaQorKyAgd2luZXNlcnZlciAtdyB8fCBQT0xfU2V0dXBXaW5kb3dfbWVzc2FnZSAiJChl dmFsX2dldHRleHQgJ1ByZXNzIG5leHQgb25seSB3aGVuIHRoZSBpbnN0YWxsYXRpb24gcHJvY2Vz cyBpcyBmaW5pc2hlZCcpIiAiJFRJVExFIgorKyAgWyAiJGZvcmNlSW5wdXQiID0gInRydWUiIF0g JiYgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdQcmVzcyBuZXh0IG9u bHkgd2hlbiB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXMgZmluaXNoZWQnKSIgIiRUSVRMRSIK KyB9CisgCistCistCistUE9MX1dpbmVfcmVib290ICgpCisteworLQkjIFNpbXVsYXRlIHdpbmRv d3MgcmVib290CistCVBPTF9TZXR1cFdpbmRvd193YWl0X25leHRfc2lnbmFsICIkKGV2YWxfZ2V0 dGV4dCAnUGxlYXNlIHdhaXQgd2hpbGUgJEFQUExJQ0FUSU9OX1RJVExFIGlzIHNpbXVsYXRpbmcg YSByZWJvb3QnKSIgIiRUSVRMRSIKKy0JUE9MX1dpbmUgd2luZWJvb3QKKytQT0xfV2luZV9yZWJv b3QoKSB7CisrICAjIFNpbXVsYXRlIHdpbmRvd3MgcmVib290CisrICBQT0xfU2V0dXBXaW5kb3df d2FpdF9uZXh0X3NpZ25hbCAiJChldmFsX2dldHRleHQgJ1BsZWFzZSB3YWl0IHdoaWxlICRBUFBM SUNBVElPTl9USVRMRSBpcyBzaW11bGF0aW5nIGEgcmVib290JykiICIkVElUTEUiCisrICBQT0xf V2luZSB3aW5lYm9vdAorIH0KKy1QT0xfV2luZV9HZXRQcmVmaXhGcm9tUGF0aCAoKQorLXsKKy0J IyBSZXR1cm4gd2luZXByZWZpeCBmcm9tIHBhdGgKKy0JIyBVc2FnZSBQT0xfV2luZV9HZXRQcmVm aXhGcm9tUGF0aCBbRXhlIGZpbGVdCistCWxvY2FsIHA9IiQxIgorLQlwPSIke3AjKi93aW5lcHJl Zml4L30iCistCXA9IiR7cCUlLyp9IgorLQllY2hvICIkcCIKKytQT0xfV2luZV9HZXRQcmVmaXhG cm9tUGF0aCgpIHsKKysgICMgUmV0dXJuIHdpbmVwcmVmaXggZnJvbSBwYXRoCisrICAjIFVzYWdl IFBPTF9XaW5lX0dldFByZWZpeEZyb21QYXRoIFtFeGUgZmlsZV0KKysgIGxvY2FsIHA9IiQxIgor KyAgcD0iJHtwIyovd2luZXByZWZpeC99IgorKyAgcD0iJHtwJSUvKn0iCisrICBlY2hvICIkcCIK KyB9CistUE9MX1dpbmVfR2V0QmFzZU5hbWUoKQorLXsKKy0JcGVybCAtZSAnJHJlbGVhc2U9JEFS R1ZbMF07ICRyZWxlYXNlID1+IHMvXihbMC05XStcLlswLTldKyhcLlswLTldKyk/KC1yY1swLTld Kyk/KS0/LiokLyQxLzsgcHJpbnQgIiRyZWxlYXNlXG4iJyAiJDEiCisrUE9MX1dpbmVfR2V0QmFz ZU5hbWUoKSB7CisrICBwZXJsIC1lICckcmVsZWFzZT0kQVJHVlswXTsgJHJlbGVhc2UgPX4gcy9e KFswLTldK1wuWzAtOV0rKFwuWzAtOV0rKT8oLXJjWzAtOV0rKT8pLT8uKiQvJDEvOyBwcmludCAi JHJlbGVhc2VcbiInICIkMSIKKyB9CistUE9MX1dpbmVfR2V0UGF0Y2hOYW1lKCkKKy17CistCXBl cmwgLWUgJyRyZWxlYXNlPSRBUkdWWzBdOyAkcmVsZWFzZSA9fiBzL15bMC05XStcLlswLTldKyhc LlswLTldKyk/KC1yY1swLTldKyk/LT8vLzsgcHJpbnQgIiRyZWxlYXNlXG4iJyAiJDEiCisrUE9M X1dpbmVfR2V0UGF0Y2hOYW1lKCkgeworKyAgcGVybCAtZSAnJHJlbGVhc2U9JEFSR1ZbMF07ICRy ZWxlYXNlID1+IHMvXlswLTldK1wuWzAtOV0rKFwuWzAtOV0rKT8oLXJjWzAtOV0rKT8tPy8vOyBw cmludCAiJHJlbGVhc2VcbiInICIkMSIKKyB9CistUE9MX0xua19SZWFkKCkKKy17CistCWRyaXZl X2NfZm91bmQ9ImZhbHNlIgorLQlleHBvcnQgQU5TV0VSX1BBVEg9IiIKKy0JZXhwb3J0IEFOU1dF Ul9QUkVGSVg9IiIKKy0JZXhwb3J0IEFOU1dFUl9OQU1FPSIkMSIKKy0JQU5TV0VSX05BTUU9IiR7 QU5TV0VSX05BTUUvLmxuay99IgorLQl3aGlsZSByZWFkIGxpbmU7IGRvCistCQlpZiBbICIkZHJp dmVfY19mb3VuZCIgPSAidHJ1ZSIgXTsgdGhlbgorLQkJCWlmIFsgIiR7bGluZToxOjF9IiA9ICI6 IiBdOyB0aGVuCistCQkJCWJyZWFrCistCQkJZmkKKy0JCQlpZiBbICIkQU5TV0VSX1BBVEgiID0g IiIgXTsgdGhlbgorLQkJCQlBTlNXRVJfUEFUSD0iJGxpbmUiCistCQkJZWxzZQorLQkJCQlBTlNX RVJfUEFUSD0iJEFOU1dFUl9QQVRILyRsaW5lIgorLQkJCWZpCistCQlmaQorLQkJaWYgWyAiJGxp bmUiID0gImRyaXZlX2MiIF07IHRoZW4KKy0JCQlkcml2ZV9jX2ZvdW5kPSJ0cnVlIgorLQkJCUFO U1dFUl9QUkVGSVg9IiRsYXN0bGluZSIKKy0JCWZpCistCQlsYXN0bGluZT0iJGxpbmUiCistCWRv bmUgPCA8KHN0cmluZ3MgIiQxIikKKytQT0xfTG5rX1JlYWQoKSB7CisrICBkcml2ZV9jX2ZvdW5k PSJmYWxzZSIKKysgIGV4cG9ydCBBTlNXRVJfUEFUSD0iIgorKyAgZXhwb3J0IEFOU1dFUl9QUkVG SVg9IiIKKysgIGV4cG9ydCBBTlNXRVJfTkFNRT0iJDEiCisrICBBTlNXRVJfTkFNRT0iJHtBTlNX RVJfTkFNRS8ubG5rL30iCisrICB3aGlsZSByZWFkIGxpbmU7IGRvCisrICAgIGlmIFsgIiRkcml2 ZV9jX2ZvdW5kIiA9ICJ0cnVlIiBdOyB0aGVuCisrICAgICAgaWYgWyAiJHtsaW5lOjE6MX0iID0g IjoiIF07IHRoZW4KKysgICAgICAgIGJyZWFrCisrICAgICAgZmkKKysgICAgICBpZiBbICIkQU5T V0VSX1BBVEgiID0gIiIgXTsgdGhlbgorKyAgICAgICAgQU5TV0VSX1BBVEg9IiRsaW5lIgorKyAg ICAgIGVsc2UKKysgICAgICAgIEFOU1dFUl9QQVRIPSIkQU5TV0VSX1BBVEgvJGxpbmUiCisrICAg ICAgZmkKKysgICAgZmkKKysgICAgaWYgWyAiJGxpbmUiID0gImRyaXZlX2MiIF07IHRoZW4KKysg ICAgICBkcml2ZV9jX2ZvdW5kPSJ0cnVlIgorKyAgICAgIEFOU1dFUl9QUkVGSVg9IiRsYXN0bGlu ZSIKKysgICAgZmkKKysgICAgbGFzdGxpbmU9IiRsaW5lIgorKyAgZG9uZSA8IDwoc3RyaW5ncyAi JDEiKQorIH0KKyAKKy1QT0xfV2luZV9leGVuYW1lKCkKKy17CistCUVYRU5BTUU9IiQxIgorLQl3 aGlsZSBbICIkMSIgXTsgZG8KKy0JCVsgIiQoZ3JlcCAnLmV4ZScgPDw8ICIkMSIpIiBdICYmIGVj aG8gIiQxIiAmJiByZXR1cm4gMAorLQkJc2hpZnQKKy0JZG9uZQorLQllY2hvICIkRVhFTkFNRSIK Ky0JcmV0dXJuIDAKKytQT0xfV2luZV9leGVuYW1lKCkgeworKyAgRVhFTkFNRT0iJDEiCisrICB3 aGlsZSBbICIkMSIgXTsgZG8KKysgICAgWyAiJChncmVwICcuZXhlJyA8PDwiJDEiKSIgXSAmJiBl Y2hvICIkMSIgJiYgcmV0dXJuIDAKKysgICAgc2hpZnQKKysgIGRvbmUKKysgIGVjaG8gIiRFWEVO QU1FIgorKyAgcmV0dXJuIDAKKyB9CistUE9MX1dpbmVfQ29tbW9uTmFtZSgpCisteworLQljbmFt ZT0iJChQT0xfV2luZV9leGVuYW1lICIkQCIpIgorLQlbICIkY25hbWUiID0gIndpbmVjZmciIF0g JiYgY25hbWU9IkNvbmZpZ3VyZSB3aW5lIgorLQlbICIkY25hbWUiID0gInJlZ2VkaXQiIF0gJiYg Y25hbWU9IlJlZ2lzdHJ5IEVkaXRvciIKKy0JWyAiJGNuYW1lIiA9ICJ3aW5lYm9vdCIgXSAmJiBj bmFtZT0iVmlydHVhbCBkcml2ZSBjcmVhdGlvbiIKKy0JZWNobyAiJGNuYW1lIgorK1BPTF9XaW5l X0NvbW1vbk5hbWUoKSB7CisrICBjbmFtZT0iJChQT0xfV2luZV9leGVuYW1lICIkQCIpIgorKyAg WyAiJGNuYW1lIiA9ICJ3aW5lY2ZnIiBdICYmIGNuYW1lPSJDb25maWd1cmUgd2luZSIKKysgIFsg IiRjbmFtZSIgPSAicmVnZWRpdCIgXSAmJiBjbmFtZT0iUmVnaXN0cnkgRWRpdG9yIgorKyAgWyAi JGNuYW1lIiA9ICJ3aW5lYm9vdCIgXSAmJiBjbmFtZT0iVmlydHVhbCBkcml2ZSBjcmVhdGlvbiIK KysgIGVjaG8gIiRjbmFtZSIKKyB9CistUE9MX1dpbmVfRW5hYmxlT1NYTmF0aXZlRG9jaygpCist eworLQlpZiBbICIkUE9MX09TIiA9ICJNYWMiIC1hICIkKFBPTF9Db25maWdfUmVhZCAiT1NYX05B VElWRV9NT0RFIikiID0gIlRSVUUiIF07IHRoZW4KKy0JCWV4cG9ydCBGT1JDRV9PU1hfRE9DSz0i VFJVRSIKKy0JZmkKKytQT0xfV2luZV9FbmFibGVPU1hOYXRpdmVEb2NrKCkgeworKyAgaWYgWyAi JFBPTF9PUyIgPSAiTWFjIiAtYSAiJChQT0xfQ29uZmlnX1JlYWQgIk9TWF9OQVRJVkVfTU9ERSIp IiA9ICJUUlVFIiBdOyB0aGVuCisrICAgIGV4cG9ydCBGT1JDRV9PU1hfRE9DSz0iVFJVRSIKKysg IGZpCisgfQorZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5IGIvcHl0aG9uL2xp Yi9WYXJpYWJsZXMucHkKK2luZGV4IDhiZWQ3NjAxYi4uZGJlMmFiNzE5IDEwMDc1NQorLS0tIGEv cHl0aG9uL2xpYi9WYXJpYWJsZXMucHkKKysrKyBiL3B5dGhvbi9saWIvVmFyaWFibGVzLnB5CitA QCAtMTcsNyArMTcsNyBAQAorIG9zLmVudmlyb25bIlBPTF9QT1JUIl0gPSAiMCIKKyBvcy5lbnZp cm9uWyJQTEFZT05MSU5VWCJdID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLnJlYWxwYXRoKF9f ZmlsZV9fKSsiLy4uLy4uLy4uLyIpCisgb3MuZW52aXJvblsiU0lURSJdID0gImh0dHA6Ly9yZXBv c2l0b3J5LnBsYXlvbmxpbnV4LmNvbSIKKy1vcy5lbnZpcm9uWyJWRVJTSU9OIl0gPSAiNC40Igor K29zLmVudmlyb25bIlZFUlNJT04iXSA9ICI0LjQuMSIKKyBvcy5lbnZpcm9uWyJQT0xfSUQiXSA9 IHN0cihyYW5kb20ucmFuZGludCgxLCAxMDAwMDAwMDApKQorIG9zLmVudmlyb25bIkdFQ0tPX1NJ VEUiXSA9ICJodHRwOi8vd2luZS5wbGF5b25saW51eC5jb20vZ2Vja28iCisgb3MuZW52aXJvblsi TU9OT19TSVRFIl0gPSAiaHR0cDovL3dpbmUucGxheW9ubGludXguY29tL21vbm8iCitAQCAtMTE5 LDExICsxMTksMTIgQEAKKyAKKyAgICAgb3MuZW52aXJvblsiUEFUSCJdID0gb3MuZW52aXJvblsi UExBWU9OTElOVVgiXSsiLy4uL3VuaXgvd2luZS9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJ TlVYIl0rIi8uLi91bml4L2ltYWdlX21hZ2ljay9iaW46IiArIG9zLmVudmlyb25bIlBMQVlPTkxJ TlVYIl0rIi8uLi91bml4L3Rvb2xzL2Jpbi86IiArIG9zLmVudmlyb25bIlBBVEgiXQorIAorLSAg ICBvcy5lbnZpcm9uWyJXUklURV9MRCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8u Li91bml4L2ltYWdlX21hZ2ljay9saWI6Iisgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4u L3VuaXgvdG9vbHMvbGliL2xkOi9vcHQvWDExL2xpYi86IiArIG9zLmVudmlyb25bIkxEX0xJQlJB UllfUEFUSCJdCistICAgIG9zLmVudmlyb25bIkRZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIIl0g PSAgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3dpbmUvbGliIgorKyAgICBvcy5lbnZp cm9uWyJXUklURV9MRCJdID0gb3MuZW52aXJvblsiTERfTElCUkFSWV9QQVRIIl0KKysgICAgb3Mu ZW52aXJvblsiRFlMRF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZ T05MSU5VWCJdKyIvLi4vdW5peC93aW5lL2xpYiIKKysgICAgb3MuZW52aXJvblsiV1JJVEVfRFlM RF9GQUxMQkFDS19MSUJSQVJZX1BBVEgiXSA9ICBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIv Li4vdW5peC93aW5lL2xpYiIKKyAgICAgb3MuZW52aXJvblsiRlJFRVRZUEVfUFJPUEVSVElFUyJd PSJ0cnVldHlwZTppbnRlcnByZXRlci12ZXJzaW9uPTM1IgorIAorLSAgICBvcy5lbnZpcm9uWyJX UklURV9EWUxEIl0gPSBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJdKyIvLi4vdW5peC90b29scy9s aWIvZHlsZDoiICsgb3MuZW52aXJvblsiUExBWU9OTElOVVgiXSsiLy4uL3VuaXgvaW1hZ2VfbWFn aWNrL2xpYjoiKyBvcy5lbnZpcm9uWyJEWUxEX0xJQlJBUllfUEFUSCJdCisrICAgIG9zLmVudmly b25bIldSSVRFX0RZTEQiXSA9IG9zLmVudmlyb25bIkRZTERfTElCUkFSWV9QQVRIIl0KKyBlbHNl OgorICAgICAjIERlYmlhbiBtYWludGFpbmVyIGRlY2lkZWQgZm9yIHNvbWUgcmVhc29uIG5vdCB0 byBsZXQgd2luZXNlcnZlciBiaW5hcnkgaW50byBQQVRILi4uCisgICAgIGZvciB3aW5lcGF0aCBp biAoJy91c3IvbGliL2kzODYtbGludXgtZ251L3dpbmUvYmluJywgJy91c3IvbGliL2kzODYtbGlu dXgtZ251L3dpbmUtdW5zdGFibGUvYmluJywKK2RpZmYgLS1naXQgYS9weXRob24vbWFpbndpbmRv dy5weSBiL3B5dGhvbi9tYWlud2luZG93LnB5CitpbmRleCA4ZGYxZmYxNGIuLmM4ZmUxMTE2MCAx MDA3NTUKKy0tLSBhL3B5dGhvbi9tYWlud2luZG93LnB5CisrKysgYi9weXRob24vbWFpbndpbmRv dy5weQorQEAgLTI1NCw3ICsyNTQsNyBAQCBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBpZCwg dGl0bGUpOgorICAgICAgICAgc2VsZi5maWxlbWVudSA9IHd4Lk1lbnUoKQorICAgICAgICAgIyMj IE9uIE1hY09TIFgsIHByZWZlcmVuY2UgaXMgYWx3YXlzIG9uIHRoZSBtYWluIG1lbnUKKyAgICAg ICAgIGlmIChvcy5lbnZpcm9uWyJQT0xfT1MiXSA9PSAiTWFjIik6CistICAgICAgICAgICAgcHJl Zkl0ZW0gPSBzZWxmLmZpbGVtZW51LkFwcGVuZCh3eC5JRF9QUkVGRVJFTkNFUywgdGV4dD0iJlBy ZWZlcmVuY2VzIikKKysgICAgICAgICAgICBwcmVmSXRlbSA9IHNlbGYuZmlsZW1lbnUuQXBwZW5k KHd4LklEX1BSRUZFUkVOQ0VTLCBfKCImUHJlZmVyZW5jZXMiKSkKKyAgICAgICAgICAgICBzZWxm LkJpbmQod3guRVZUX01FTlUsIHNlbGYuT3B0aW9ucywgcHJlZkl0ZW0pCisgCisgICAgICAgICAj IyMgRmlsZSBtZW51CitkaWZmIC0tZ2l0IGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNp b25zRmV0Y2hlci5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIu cHkKK2luZGV4IDBmZGM3NmUzOC4uZmQ3NTg3OThlIDEwMDY0NAorLS0tIGEvcHl0aG9uL3dpbmVf dmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQorKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lv bnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQorQEAgLTEsNjcgKzEsODggQEAKKyBpbXBvcnQganNv bgorIGltcG9ydCBvcworIGltcG9ydCB0aHJlYWRpbmcKKy1pbXBvcnQgdGltZQorK2ltcG9ydCB0 cmFjZWJhY2sKKyBpbXBvcnQgdXJsbGliLnJlcXVlc3QKKy1pbXBvcnQgbmF0c29ydAorIAorIGZy b20gbGliIGltcG9ydCBWYXJpYWJsZXMKKy1mcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25z VG9vbHMgaW1wb3J0IGZldGNoVXNlck9TCistCistY2xhc3MgV2luZVZlcnNpb25GZXRjaGVyKHRo cmVhZGluZy5UaHJlYWQpOgorLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJjaD0ieDg2Iik6Cist ICAgICAgICB0aHJlYWRpbmcuVGhyZWFkLl9faW5pdF9fKHNlbGYpCistICAgICAgICBzZWxmLnRo cmVhZF9tZXNzYWdlID0gIiNXQUlUIyIKKy0gICAgICAgIHNlbGYudmVyc2lvbnMgPSBbXQorLSAg ICAgICAgc2VsZi5hcmNoaXRlY3R1cmUgPSBhcmNoCistICAgICAgICBzZWxmLnN0YXJ0KCkKKy0K Ky0gICAgZGVmIGRvd25sb2FkKHNlbGYsIGdhbWUpOgorLSAgICAgICAgc2VsZi5nZXREZXNjcmlw dGlvbiA9IGdhbWUKKy0KKy0gICAgZGVmIHJ1bihzZWxmKToKKy0gICAgICAgIHNlbGYudGhyZWFk X3J1bm5pbmcgPSBUcnVlCistICAgICAgICB3aGlsZShzZWxmLnRocmVhZF9ydW5uaW5nKToKKy0g ICAgICAgICAgICBpZihzZWxmLnRocmVhZF9tZXNzYWdlID09ICJnZXQiKToKKy0gICAgICAgICAg ICAgICAgdHJ5IDoKKy0gICAgICAgICAgICAgICAgICAgIHVybCA9IG9zLmVudmlyb25bIldJTkVf U0lURSJdCistICAgICAgICAgICAgICAgICAgICB3Zm9sZGVyID0gIi0iLmpvaW4oW2ZldGNoVXNl ck9TKCksIHNlbGYuYXJjaGl0ZWN0dXJlXSkKKy0KKy0KKy0gICAgICAgICAgICAgICAgICAgIHJl cSA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QodXJsLCBOb25lLCB7J1VzZXItQWdlbnQnOiBWYXJp YWJsZXMudXNlckFnZW50fSkKKy0gICAgICAgICAgICAgICAgICAgIGhhbmRsZSA9IHVybGxpYi5y ZXF1ZXN0LnVybG9wZW4ocmVxLCB0aW1lb3V0ID0gNSkKKy0gICAgICAgICAgICAgICAgICAgIHRp bWUuc2xlZXAoMSkKKy0gICAgICAgICAgICAgICAgICAgIGF2YWlsYWJsZV9kaXN0cmlidXRpb25z ID0ganNvbi5sb2FkcyhoYW5kbGUucmVhZCgpKQorLSAgICAgICAgICAgICAgICAgICAgc2VsZi52 ZXJzaW9uc18gPSBbXQorLSAgICAgICAgICAgICAgICAgICAgZm9yIGRpc3RyaWJ1dGlvbiBpbiBh dmFpbGFibGVfZGlzdHJpYnV0aW9uczoKKy0gICAgICAgICAgICAgICAgICAgICAgICBpZihkaXN0 cmlidXRpb25bIm5hbWUiXSA9PSAiLSIuam9pbihbInVwc3RyZWFtIiwgZmV0Y2hVc2VyT1MoKSwg c2VsZi5hcmNoaXRlY3R1cmVdKSk6CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBw YWNrYWdlIGluIGRpc3RyaWJ1dGlvblsicGFja2FnZXMiXToKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZlcnNpb24gPSBwYWNrYWdlWyJ2ZXJzaW9uIl0KKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBhY2thZ2VVcmwgPSBwYWNrYWdlWyJ1cmwiXQorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2hhMXN1bSA9IHBhY2thZ2VbInNoYTFzdW0iXQorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobm90IG9zLnBhdGguZXhpc3RzKFZhcmlh Ymxlcy5wbGF5b25saW51eF9yZXArIi93aW5lLyIrd2ZvbGRlcisiLyIrdmVyc2lvbikpOgorLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbnNfLmFwcGVuZCh2 ZXJzaW9uKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiRGlyZWN0b3J5OiAlcyBleGlzdHMi ICUgKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXArIi93aW5lLyIrd2ZvbGRlcisiLyIrdmVyc2lv bikpCistICAgICAgICAgICAgICAgICAgICAgICAgZWxpZihkaXN0cmlidXRpb25bIm5hbWUiXSA9 PSAiLSIuam9pbihbInN0YWdpbmciLCBmZXRjaFVzZXJPUygpLCBzZWxmLmFyY2hpdGVjdHVyZV0p KToKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhY2thZ2UgaW4gZGlzdHJpYnV0 aW9uWyJwYWNrYWdlcyJdOgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lv biA9IHBhY2thZ2VbInZlcnNpb24iXQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYobm90IG9zLnBhdGguZXhpc3RzKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXArIi93aW5lLyIr d2ZvbGRlcisiLyIrdmVyc2lvbisiLXN0YWdpbmciKSk6CistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uc18uYXBwZW5kKHZlcnNpb24rIi1zdGFnaW5nIikK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkRpcmVjdG9yeTogJXMgZXhpc3RzIiAlIChWYXJp YWJsZXMucGxheW9ubGludXhfcmVwKyIvd2luZS8iK3dmb2xkZXIrIi8iK3ZlcnNpb24rIi1zdGFn aW5nIikpCistICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHJpbnQoZGlzdHJpYnV0aW9uWyJuYW1lIl0gKyAiIGRvZXMgbm90IG1hdGNo IikKKy0KKy0gICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbnNfLnNvcnQoa2V5PW5hdHNv cnQubmF0c29ydF9rZXlnZW4oKSkKKy0gICAgICAgICAgICAgICAgICAgIHNlbGYudmVyc2lvbnNf LnJldmVyc2UoKQorLSAgICAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9ucyA9IHNlbGYudmVy c2lvbnNfWzpdCistICAgICAgICAgICAgICAgICAgICBzZWxmLnRocmVhZF9tZXNzYWdlID0gIk9r IgorLSAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CistICAgICAgICAgICAg ICAgICAgICBwcmludChlKQorLSAgICAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgxKQorLSAg ICAgICAgICAgICAgICAgICAgc2VsZi50aHJlYWRfbWVzc2FnZSA9ICJFcnIiCistICAgICAgICAg ICAgICAgICAgICBzZWxmLnZlcnNpb25zID0gWyJXaW5lIHBhY2thZ2VzIHdlYnNpdGUgaXMgdW5h dmFpbGFibGUiXQorK2Zyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNUb29scyBpbXBvcnQg ZmV0Y2hVc2VyT1MsIGZldGNoX3N1cHBvcnRlZF9hcmNocworIAorKworK2NsYXNzIFdpbmVWZXJz aW9uRmV0Y2hlcigpOgorKyAgICBkZWYgX19pbml0X18oc2VsZiwgb3BlcmF0aW5nX3N5c3RlbSk6 CisrICAgICAgICBzZWxmLm9wZXJhdGluZ19zeXN0ZW0gPSBvcGVyYXRpbmdfc3lzdGVtCisrCisr ICAgIGRlZiBmZXRjaF9hbGxfYXZhaWxhYmxlX3dpbmVfdmVyc2lvbihzZWxmLCBjYWxsYmFjaywg ZXJyb3IpOgorKyAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5f c3luY19mZXRjaF9hbGxfYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnMsIGFyZ3M9KGNhbGxiYWNrLCBl cnJvcikpCisrICAgICAgICB0aHJlYWQuc3RhcnQoKQorKworKyAgICBkZWYgX3N5bmNfZmV0Y2hf YWxsX2F2YWlsYWJsZV93aW5lX3ZlcnNpb25zKHNlbGYsIGNhbGxiYWNrLCBlcnJvcik6CisrICAg ICAgICB3aW5lX3ZlcnNpb25fdXJsID0gImh0dHBzOi8vcGhvZW5pY2lzLnBsYXlvbmxpbnV4LmNv bS9pbmRleC5waHAvd2luZT9vcz0lcyIgJSBzZWxmLm9wZXJhdGluZ19zeXN0ZW0KKysgICAgICAg IHByaW50KCJEb253bG9hZGluZyAlcyAiICUgd2luZV92ZXJzaW9uX3VybCkKKysgICAgICAgIHRy eToKKysgICAgICAgICAgICByZXF1ZXN0ID0gdXJsbGliLnJlcXVlc3QuUmVxdWVzdCh3aW5lX3Zl cnNpb25fdXJsLCBOb25lLCB7J1VzZXItQWdlbnQnOiBWYXJpYWJsZXMudXNlckFnZW50fSkKKysg ICAgICAgICAgICBoYW5kbGUgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcXVlc3QsIHRpbWVv dXQ9NSkKKysgICAgICAgICAgICBjYWxsYmFjayhzZWxmLl9jb252ZXJ0X3Bob2VuaWNpc193aW5l X3ZlcnNpb25zX3RvX3Y0KGpzb24ubG9hZChoYW5kbGUpKSkKKysgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKysgICAgICAgICAgICBlcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQor KworKyAgICBkZWYgX3N5bmNfZmV0Y2hfYWxsX2luc3RhbGxlZF93aW5lX3ZlcnNpb24oc2VsZik6 CisrICAgICAgICBhcmNoaXRlY3R1cmVzID0ge30KKysgICAgICAgIGZvciBhcmNoaXRlY3R1cmUg aW4gZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCk6CisrICAgICAgICAgICAgd2luZV9mb2xkZXIgPSBm ZXRjaFVzZXJPUygpICsgIi0iICsgYXJjaGl0ZWN0dXJlCisrCisrICAgICAgICAgICAgaWYgb3Mu cGF0aC5leGlzdHMoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgd2luZV9m b2xkZXIpOgorKyAgICAgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBbeworKyAgICAg ICAgICAgICAgICAgICAgIm5hbWUiOiB2ZXJzaW9uLAorKyAgICAgICAgICAgICAgICB9IGZvciB2 ZXJzaW9uIGluIG9zLmxpc3RkaXIoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8i ICsgd2luZV9mb2xkZXIpIGlmCisrICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uICE9ICJpbnN0 YWxsaW5nIl0KKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICB0aW1lLnNsZWVw KDAuMikKKysgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10KKysKKysgICAg ICAgICAgICBpZiBhcmNoaXRlY3R1cmUgbm90IGluIGFyY2hpdGVjdHVyZXM6CisrICAgICAgICAg ICAgICAgIGFyY2hpdGVjdHVyZXNbYXJjaGl0ZWN0dXJlXSA9IFtdCisrCisrICAgICAgICAgICAg YXJjaGl0ZWN0dXJlc1thcmNoaXRlY3R1cmVdICs9IGF2YWlsYWJsZV92ZXJzaW9ucworKyAgICAg ICAgcmV0dXJuIGFyY2hpdGVjdHVyZXMKKysKKysgICAgZGVmIGZldGNoX2FsbF9pbnN0YWxsZWRf d2luZV92ZXJzaW9uKHNlbGYsIGNhbGxiYWNrLCBlcnJvcik6CisrICAgICAgICB0cnk6CisrICAg ICAgICAgICAgYXJjaGl0ZWN0dXJlcyA9IHNlbGYuX3N5bmNfZmV0Y2hfYWxsX2luc3RhbGxlZF93 aW5lX3ZlcnNpb24oKQorKworKyAgICAgICAgICAgIGNhbGxiYWNrKGFyY2hpdGVjdHVyZXMpCisr ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisrICAgICAgICAgICAgZXJyb3IodHJhY2Vi YWNrLmZvcm1hdF9leGMoKSkKKysKKysgICAgZGVmIF9jb252ZXJ0X3Bob2VuaWNpc193aW5lX3Zl cnNpb25zX3RvX3Y0KHNlbGYsIHdpbmVfZGlzdHJpYnV0aW9ucyk6CisrICAgICAgICAiIiIKKysg ICAgICAgIENvbnZlcnRzIHZlcnNpb25zIGZyb20gcGhvZW5pY2lzIGZvcm1hdCBpbnRvIGEgZm9y bWF0IHRoYXQgUE9ML1BPTSA0IGNhbiBoYW5kbGUKKysgICAgICAgICIiIgorKyAgICAgICAgYXJj aGl0ZWN0dXJlcyA9IHt9CisrICAgICAgICBmb3Igd2luZV9kaXN0cmlidXRpb24gaW4gd2luZV9k aXN0cmlidXRpb25zOgorKyAgICAgICAgICAgIG5hbWUgPSB3aW5lX2Rpc3RyaWJ1dGlvblsibmFt ZSJdCisrICAgICAgICAgICAgYXJjaGl0ZWN0dXJlID0gbmFtZS5zcGxpdCgiLSIpWzJdCisrICAg ICAgICAgICAgZGlzdHJpYnV0aW9uID0gbmFtZS5zcGxpdCgiLSIpWzBdCisrCisrICAgICAgICAg ICAgaWYgYXJjaGl0ZWN0dXJlIG5vdCBpbiBhcmNoaXRlY3R1cmVzOgorKyAgICAgICAgICAgICAg ICBhcmNoaXRlY3R1cmVzW2FyY2hpdGVjdHVyZV0gPSBbXQorKworKyAgICAgICAgICAgIGZvciBw YWNrYWdlIGluIHdpbmVfZGlzdHJpYnV0aW9uWyJwYWNrYWdlcyJdOgorKyAgICAgICAgICAgICAg ICBpZiBkaXN0cmlidXRpb24gPT0gInVwc3RyZWFtIjoKKysgICAgICAgICAgICAgICAgICAgIHBh Y2thZ2VfbmFtZSA9IHBhY2thZ2VbInZlcnNpb24iXQorKyAgICAgICAgICAgICAgICBlbHNlOgor KyAgICAgICAgICAgICAgICAgICAgcGFja2FnZV9uYW1lID0gcGFja2FnZVsidmVyc2lvbiJdICsg Ii0iICsgZGlzdHJpYnV0aW9uCisrCisrICAgICAgICAgICAgICAgIGFyY2hpdGVjdHVyZXNbYXJj aGl0ZWN0dXJlXSArPSBbeworKyAgICAgICAgICAgICAgICAgICAgIm5hbWUiOiBwYWNrYWdlX25h bWUsCisrICAgICAgICAgICAgICAgICAgICAiYXJjaGl0ZWN0dXJlIjogYXJjaGl0ZWN0dXJlLAor KyAgICAgICAgICAgICAgICAgICAgInNoYTFzdW0iOiBwYWNrYWdlWyJzaGExc3VtIl0sCisrICAg ICAgICAgICAgICAgICAgICAidXJsIjogcGFja2FnZVsidXJsIl0KKysgICAgICAgICAgICAgICAg fV0KKysKKysKKysgICAgICAgIHJldHVybiBhcmNoaXRlY3R1cmVzCisrCisrICAgIGRlZiBjYWxj dWxhdGVfaW5zdGFsbGVkX2hhc2goc2VsZik6CisrICAgICAgICByZXR1cm4gaGFzaChqc29uLmR1 bXBzKChzZWxmLl9zeW5jX2ZldGNoX2FsbF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKCkpKSkKKysK KysKK2RpZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNOb3RlYm9v ay5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc05vdGVib29rLnB5CitpbmRl eCBlYzVmMTI1MzUuLmI0M2MyNWRjOSAxMDA2NDQKKy0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25z L1dpbmVWZXJzaW9uc05vdGVib29rLnB5CisrKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5l VmVyc2lvbnNOb3RlYm9vay5weQorQEAgLTIsODkgKzIsMTA2IEBACisgCisgZnJvbSBsaWIgaW1w b3J0IFZhcmlhYmxlcworIAorLQorICMjIEZJWE1FOiBSZWZhY3RvciB0aGlzIGNvZGUgbGF0ZXIK Kytmcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zVG9vbHMgaW1wb3J0IGZldGNoX3N1cHBv cnRlZF9hcmNocworKworKworIGNsYXNzIFdpbmVWZXJzaW9uc05vdGVib29rKHd4Lk5vdGVib29r KToKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCk6CisgICAgICAgICBzZWxmLm5vdGVi b29rID0gd3guTm90ZWJvb2suX19pbml0X18oc2VsZiwgcGFyZW50LCAtMSkKKyAgICAgICAgIHNl bGYuaW1hZ2VzX29uZ2xldHMgPSB3eC5JbWFnZUxpc3QoMTYsIDE2KQorICAgICAgICAgc2VsZi5p bWFnZXNfb25nbGV0cy5BZGQod3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAi L2V0Yy9vbmdsZXQvd2luZS5wbmciKSkKKysKKyAgICAgICAgIHNlbGYuU2V0SW1hZ2VMaXN0KHNl bGYuaW1hZ2VzX29uZ2xldHMpCisgCisgICAgICAgICBzZWxmLnNpemVycyA9IHt9CistICAgICAg ICBzZWxmLmltYWdlc2FwcHMgPSB7fQorLSAgICAgICAgc2VsZi5pbWFnZXNhcHBzX2kgPSB7fQor LSAgICAgICAgc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3IgPSB7fQorKyAg ICAgICAgc2VsZi5pbWFnZV9saXN0ID0gc2VsZi5fY3JlYXRlX2ltYWdlX2xpc3QoKQorKyAgICAg ICAgc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yID0ge30KKyAgICAg ICAgIHNlbGYud2FpdFBhbmVsID0ge30KKy0gICAgICAgIHNlbGYuaW5zdGFsbGVkV2luZVZlcnNp b25zVHJlZVNlbGVjdG9yID0ge30KKy0gICAgICAgIHNlbGYuYnV0dG9uX3JtID0ge30KKy0gICAg ICAgIHNlbGYuYnV0dG9uX2luID0ge30KKysgICAgICAgIHNlbGYuaW5zdGFsbGVkX3dpbmVfdmVy c2lvbnNfdHJlZV9zZWxlY3RvciA9IHt9CisrICAgICAgICBzZWxmLmJ1dHRvbl91bmluc3RhbGwg PSB7fQorKyAgICAgICAgc2VsZi5idXR0b25faW5zdGFsbCA9IHt9CisgICAgICAgICBzZWxmLmJv eFNpemVycyA9IHt9CisgICAgICAgICBzZWxmLnBhbmVscyA9IHt9CistCistICAgIGRlZiBjYWxj dWxhdGVFdmVudERlbHRhKHNlbGYsIGFyY2gpOgorLSAgICAgICAgaWYgKGFyY2ggPT0gImFtZDY0 Iik6CistICAgICAgICAgICAgcmV0dXJuIDEwMAorLSAgICAgICAgZWxzZToKKy0gICAgICAgICAg ICByZXR1cm4gMAorLQorLSAgICBkZWYgX2NyZWF0ZUluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVs KHNlbGYsIGFyY2gpOgorLSAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zUGFuZWwgPSB3eC5Q YW5lbChzZWxmLnBhbmVsc1thcmNoXSwgLTEpCisrICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5l X3ZlcnNpb25fcm9vdHMgPSB7fQorKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9u X3Jvb3RzID0ge30KKysgICAgICAgIHNlbGYubnVtYmVyX29mX2F2YWlsYWJsZV92ZXJzaW9ucyA9 IHt9CisrICAgICAgICBzZWxmLm51bWJlcl9vZl9pbnN0YWxsZWRfdmVyc2lvbnMgPSB7fQorKyAg ICAgICAgc2VsZi5vbl9pbnN0YWxsX2hhbmRsZXIgPSBOb25lCisrICAgICAgICBzZWxmLm9uX3Jl bW92ZV9oYW5kbGVyID0gTm9uZQorKworKyAgICBkZWYgX2NyZWF0ZV9pbWFnZV9saXN0KHNlbGYp OgorKyAgICAgICAgaW1hZ2VfbGlzdCA9IHd4LkltYWdlTGlzdCgyMiwgMjIpCisrICAgICAgICBp bWFnZV9saXN0LkFkZCh3eC5CaXRtYXAoVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRj L2luc3RhbGwvd2luZS1wYWNrYWdlcy5wbmciKSkKKysgICAgICAgIGltYWdlX2xpc3QuQWRkKHd4 LkJpdG1hcChWYXJpYWJsZXMucGxheW9ubGludXhfZW52ICsgIi9ldGMvaW5zdGFsbC93aW5lLWlu LXVzZS5wbmciKSkKKysgICAgICAgIHJldHVybiBpbWFnZV9saXN0CisrCisrICAgIGRlZiBfY2Fs Y3VsYXRlX2V2ZW50X251bWJlcihzZWxmLCBldmVudF9pZCwgYXJjaCk6CisrICAgICAgICByZXR1 cm4gZXZlbnRfaWQgKyBsaXN0KGZldGNoX3N1cHBvcnRlZF9hcmNocygpKS5pbmRleChhcmNoKSAq IDEwMAorKworKyAgICBkZWYgX2NyZWF0ZUluc3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsKHNlbGYs IGFyY2hpdGVjdHVyZSk6CisrICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCA9IHd4 LlBhbmVsKHNlbGYucGFuZWxzW2FyY2hpdGVjdHVyZV0sIC0xKQorICAgICAgICAgaW5zdGFsbGVk V2luZVZlcnNpb25zU2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKKyAgICAgICAgIGlu c3RhbGxlZFdpbmVWZXJzaW9uc1BhbmVsLlNldFNpemVyKGluc3RhbGxlZFdpbmVWZXJzaW9uc1Np emVyKQorLSAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJjaF0uQWRkKGluc3RhbGxlZFdpbmVWZXJz aW9uc1BhbmVsLCAzLCB3eC5FWFBBTkQpCisrICAgICAgICBzZWxmLmJveFNpemVyc1thcmNoaXRl Y3R1cmVdLkFkZChpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCwgMywgd3guRVhQQU5EKQorICAg ICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQorICAgICAgICAg aW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIuQWRkKHd4LlN0YXRpY1RleHQoaW5zdGFsbGVkV2lu ZVZlcnNpb25zUGFuZWwsIC0xLCBfKCJJbnN0YWxsZWQgV2luZSB2ZXJzaW9uczogIikpLCAwKQor ICAgICAgICAgaW5zdGFsbGVkV2luZVZlcnNpb25zU2l6ZXIuQWRkU3BhY2VyKDEwKQorLSAgICAg ICAgc2VsZi5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0gPSB3eC5UcmVl Q3RybChpbnN0YWxsZWRXaW5lVmVyc2lvbnNQYW5lbCwgMTA3ICsgc2VsZi5jYWxjdWxhdGVFdmVu dERlbHRhKGFyY2gpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5UUl9ISURFX1JPT1QgfCB3eC5UUl9G VUxMX1JPV19ISUdITElHSFQgfCBWYXJpYWJsZXMud2lkZ2V0X2JvcmRlcnMpCistICAgICAgICBz ZWxmLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5TZXRJbWFnZUxpc3Qo c2VsZi5pbWFnZXNhcHBzX2lbYXJjaF0pCistICAgICAgICAjc2VsZi5pbnN0YWxsZWRXaW5lVmVy c2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQorLSAgICAgICAgaW5zdGFsbGVk V2luZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVj dG9yW2FyY2hdLCAxLCB3eC5FWFBBTkQpCisrICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3Zl cnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXSA9IHd4LlRyZWVDdHJsKGluc3RhbGxl ZFdpbmVWZXJzaW9uc1BhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxjdWxh dGVfZXZlbnRfbnVtYmVyKDEwNywgYXJjaGl0ZWN0dXJlKSwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFy aWFibGVzLndpZGdldF9ib3JkZXJzKQorKyAgICAgICAgc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJz aW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uU2V0SW1hZ2VMaXN0KHNlbGYuaW1hZ2Vf bGlzdCkKKysgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgbGFtYmRh IGV2dDogc2VsZi5fb25fc2VsZWN0X2luc3RhbGxlZF93aW5lX3ZlcnNpb24oYXJjaGl0ZWN0dXJl KSwgaWQ9c2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDcsIGFyY2hpdGVjdHVyZSkpCisr CisrICAgICAgICBpbnN0YWxsZWRXaW5lVmVyc2lvbnNTaXplci5BZGQoc2VsZi5pbnN0YWxsZWRf d2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0sIDEsIHd4LkVYUEFORCkK KyAgICAgICAgIGluc3RhbGxlZFdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKKyAKKy0g ICAgZGVmIF9jcmVhdGVBdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbChzZWxmLCBhcmNoKToKKy0g ICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1BhbmVsID0gd3guUGFuZWwoc2VsZi5wYW5lbHNb YXJjaF0gLCAtMSkKKysgICAgZGVmIF9jcmVhdGVBdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbChz ZWxmLCBhcmNoaXRlY3R1cmUpOgorKyAgICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwg PSB3eC5QYW5lbChzZWxmLnBhbmVsc1thcmNoaXRlY3R1cmVdLCAtMSkKKyAgICAgICAgIGF2YWls YWJsZVdpbmVWZXJzaW9uc1NpemVyID0gd3guQm94U2l6ZXIod3guVkVSVElDQUwpCisgICAgICAg ICBhdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbC5TZXRTaXplcihhdmFpbGFibGVXaW5lVmVyc2lv bnNTaXplcikKKy0gICAgICAgIHNlbGYuYm94U2l6ZXJzW2FyY2hdLkFkZChhdmFpbGFibGVXaW5l VmVyc2lvbnNQYW5lbCwgMywgd3guRVhQQU5EKQorKyAgICAgICAgc2VsZi5ib3hTaXplcnNbYXJj aGl0ZWN0dXJlXS5BZGQoYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwsIDMsIHd4LkVYUEFORCkK KyAgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNlcigxMCkKKyAgICAg ICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZCh3eC5TdGF0aWNUZXh0KGF2YWlsYWJs ZVdpbmVWZXJzaW9uc1BhbmVsLCAtMSwgXygiQXZhaWxhYmxlIFdpbmUgdmVyc2lvbnM6ICIpLCAo NSwgMTApKSwgMCkKKyAgICAgICAgIGF2YWlsYWJsZVdpbmVWZXJzaW9uc1NpemVyLkFkZFNwYWNl cigxMCkKKy0gICAgICAgIHNlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2Fy Y2hdID0gd3guVHJlZUN0cmwoYXZhaWxhYmxlV2luZVZlcnNpb25zUGFuZWwsIDEwNiArIHNlbGYu Y2FsY3VsYXRlRXZlbnREZWx0YShhcmNoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guVFJfSElERV9S T09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFibGVzLndpZGdldF9ib3JkZXJz LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaXplPSgzMjAsIDMwMCksIHBvcz0oMTAsIDM1KSkKKy0gICAgICAgIHNl bGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLlNldEltYWdlTGlzdChz ZWxmLmltYWdlc2FwcHNbYXJjaF0pCistICAgICAgICAjc2VsZi5hdmFpbGFibGVXaW5lVmVyc2lv bnNUcmVlU2VsZWN0b3JbYXJjaF0uU2V0U3BhY2luZygwKQorLSAgICAgICAgYXZhaWxhYmxlV2lu ZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9y W2FyY2hdLCAxLCB3eC5FWFBBTkQpCisrICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNp b25zX3RyZWVfc2VsZWN0b3JbYXJjaGl0ZWN0dXJlXSA9IHd4LlRyZWVDdHJsKGF2YWlsYWJsZVdp bmVWZXJzaW9uc1BhbmVsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jYWxjdWxhdGVf ZXZlbnRfbnVtYmVyKDEwNiwgYXJjaGl0ZWN0dXJlKSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3R5bGU9d3guVFJfSElERV9ST09UIHwgd3guVFJfRlVMTF9ST1dfSElHSExJR0hUIHwgVmFyaWFi bGVzLndpZGdldF9ib3JkZXJzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplPSgzMjAsIDMw MCksIHBvcz0oMTAsIDM1KSkKKysgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNf dHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLlNldEltYWdlTGlzdChzZWxmLmltYWdlX2xpc3Qp CisrICAgICAgICBzZWxmLkJpbmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIGxhbWJkYSBldnQ6 IHNlbGYuX29uX3NlbGVjdF9hdmFpbGFibGVfd2luZV92ZXJzaW9uKGFyY2hpdGVjdHVyZSksIGlk PXNlbGYuX2NhbGN1bGF0ZV9ldmVudF9udW1iZXIoMTA2LCBhcmNoaXRlY3R1cmUpKQorKworKyAg ICAgICAgYXZhaWxhYmxlV2luZVZlcnNpb25zU2l6ZXIuQWRkKHNlbGYuYXZhaWxhYmxlX3dpbmVf dmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLCAxLCB3eC5FWFBBTkQpCisgICAg ICAgICBhdmFpbGFibGVXaW5lVmVyc2lvbnNTaXplci5BZGRTcGFjZXIoMTApCisgCistICAgIGRl ZiBfY3JlYXRlQnV0dG9uUGFuZWwoc2VsZiwgYXJjaCk6CistICAgICAgICBidXR0b25zUGFuZWwg PSB3eC5QYW5lbChzZWxmLnBhbmVsc1thcmNoXSAsIC0xKQorKyAgICBkZWYgX2NyZWF0ZUJ1dHRv blBhbmVsKHNlbGYsIGFyY2hpdGVjdHVyZSk6CisrICAgICAgICBidXR0b25zUGFuZWwgPSB3eC5Q YW5lbChzZWxmLnBhbmVsc1thcmNoaXRlY3R1cmVdLCAtMSkKKyAgICAgICAgIGJ1dHRvbnNTaXpl ciA9IHd4LkJveFNpemVyKHd4LlZFUlRJQ0FMKQorICAgICAgICAgYnV0dG9uc1BhbmVsLlNldFNp emVyKGJ1dHRvbnNTaXplcikKKyAKKy0gICAgICAgIHNlbGYuYnV0dG9uX3JtW2FyY2hdID0gd3gu QnV0dG9uKGJ1dHRvbnNQYW5lbCwgMTA4ICsgc2VsZi5jYWxjdWxhdGVFdmVudERlbHRhKGFyY2gp LCAiPCIpCistICAgICAgICBzZWxmLmJ1dHRvbl9pblthcmNoXSA9IHd4LkJ1dHRvbihidXR0b25z UGFuZWwsIDEwOSArIHNlbGYuY2FsY3VsYXRlRXZlbnREZWx0YShhcmNoKSwgIj4iKQorKyAgICAg ICAgc2VsZi5idXR0b25fdW5pbnN0YWxsW2FyY2hpdGVjdHVyZV0gPSB3eC5CdXR0b24oYnV0dG9u c1BhbmVsLCBzZWxmLl9jYWxjdWxhdGVfZXZlbnRfbnVtYmVyKDEwOCwgYXJjaGl0ZWN0dXJlKSwg IjwiKQorKyAgICAgICAgc2VsZi5idXR0b25faW5zdGFsbFthcmNoaXRlY3R1cmVdID0gd3guQnV0 dG9uKGJ1dHRvbnNQYW5lbCwgc2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJlcigxMDksIGFyY2hp dGVjdHVyZSksICI+IikKKyAKKyAgICAgICAgIGJ1dHRvbnNTaXplci5BZGRTdHJldGNoU3BhY2Vy KCkKKy0gICAgICAgIGJ1dHRvbnNTaXplci5BZGQoc2VsZi5idXR0b25fcm1bYXJjaF0sIDAsIHd4 LkNFTlRFUikKKysgICAgICAgIGJ1dHRvbnNTaXplci5BZGQoc2VsZi5idXR0b25fdW5pbnN0YWxs W2FyY2hpdGVjdHVyZV0sIDAsIHd4LkNFTlRFUikKKyAgICAgICAgIGJ1dHRvbnNTaXplci5BZGRT cGFjZXIoMTApCistICAgICAgICBidXR0b25zU2l6ZXIuQWRkKHNlbGYuYnV0dG9uX2luW2FyY2hd LCAwLCB3eC5DRU5URVIpCisrICAgICAgICBidXR0b25zU2l6ZXIuQWRkKHNlbGYuYnV0dG9uX2lu c3RhbGxbYXJjaGl0ZWN0dXJlXSwgMCwgd3guQ0VOVEVSKQorICAgICAgICAgYnV0dG9uc1NpemVy LkFkZFN0cmV0Y2hTcGFjZXIoKQorIAorLSAgICAgICAgc2VsZi5idXR0b25fcm1bYXJjaF0uRW5h YmxlKEZhbHNlKQorLSAgICAgICAgc2VsZi5idXR0b25faW5bYXJjaF0uRW5hYmxlKEZhbHNlKQor KyAgICAgICAgc2VsZi5idXR0b25fdW5pbnN0YWxsW2FyY2hpdGVjdHVyZV0uRW5hYmxlKEZhbHNl KQorKyAgICAgICAgc2VsZi5idXR0b25faW5zdGFsbFthcmNoaXRlY3R1cmVdLkVuYWJsZShGYWxz ZSkKKysKKysgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBsYW1iZGEgZXZ0OiBzZWxm Ll9vbl9kZWxldGUoYXJjaGl0ZWN0dXJlKSwgaWQ9c2VsZi5fY2FsY3VsYXRlX2V2ZW50X251bWJl cigxMDgsIGFyY2hpdGVjdHVyZSkpCisrICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwg bGFtYmRhIGV2dDogc2VsZi5fb25faW5zdGFsbChhcmNoaXRlY3R1cmUpLCBpZD1zZWxmLl9jYWxj dWxhdGVfZXZlbnRfbnVtYmVyKDEwOSwgYXJjaGl0ZWN0dXJlKSkKKyAKKy0gICAgICAgIHNlbGYu Ym94U2l6ZXJzW2FyY2hdLkFkZChidXR0b25zUGFuZWwsIDEsIHd4LkVYUEFORCkKKyAKKy0gICAg ZGVmIGxpc3RlX3ZlcnNpb25zKHNlbGYsIGFyY2g9Ing4NiIpOgorKyAgICAgICAgc2VsZi5ib3hT aXplcnNbYXJjaGl0ZWN0dXJlXS5BZGQoYnV0dG9uc1BhbmVsLCAxLCB3eC5FWFBBTkQpCisrCisr ICAgIGRlZiBhZGRfYXJjaGl0ZWN0dXJlX3RhYihzZWxmLCBhcmNoPSJ4ODYiKToKKyAgICAgICAg IHNlbGYucGFuZWxzW2FyY2hdID0gd3guUGFuZWwoc2VsZiwgLTEpCisgCisgICAgICAgICBzZWxm LmJveFNpemVyc1thcmNoXSA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCisgICAgICAgICBz ZWxmLnBhbmVsc1thcmNoXS5TZXRTaXplcihzZWxmLmJveFNpemVyc1thcmNoXSkKKy0gICAgICAg IHNlbGYuaW1hZ2VzYXBwc1thcmNoXSA9IHd4LkltYWdlTGlzdCgyMiwgMjIpCistICAgICAgICBz ZWxmLmltYWdlc2FwcHNfaVthcmNoXSA9IHd4LkltYWdlTGlzdCgyMiwgMjIpCisgCisgICAgICAg ICBzZWxmLmJveFNpemVyc1thcmNoXS5BZGRTcGFjZXIoMTApCisgICAgICAgICBzZWxmLl9jcmVh dGVBdmFpbGFibGVXaW5lVmVyc2lvbnNQYW5lbChhcmNoKQorQEAgLTkzLDMgKzExMCwzOSBAQCBk ZWYgbGlzdGVfdmVyc2lvbnMoc2VsZiwgYXJjaD0ieDg2Iik6CisgICAgICAgICBzZWxmLmJveFNp emVyc1thcmNoXS5BZGRTcGFjZXIoMTApCisgCisgICAgICAgICBzZWxmLkFkZFBhZ2Uoc2VsZi5w YW5lbHNbYXJjaF0sIF8oIldpbmUgdmVyc2lvbnMiKSArICIgKCIgKyBhcmNoICsgIikiLCBpbWFn ZUlkPTApCisrCisrICAgIGRlZiBjbGVhbl92ZXJzaW9uX29mX2FyY2hpdGVjdHVyZShzZWxmLCBh cmNoKToKKysgICAgICAgIHNlbGYuYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3Rv clthcmNoXS5EZWxldGVBbGxJdGVtcygpCisrICAgICAgICBzZWxmLmluc3RhbGxlZF93aW5lX3Zl cnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaF0uRGVsZXRlQWxsSXRlbXMoKQorKyAgICAgICAgc2Vs Zi5hdmFpbGFibGVfd2luZV92ZXJzaW9uX3Jvb3RzW2FyY2hdID0gc2VsZi5hdmFpbGFibGVfd2lu ZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hdLkFkZFJvb3QoIiIpCisrICAgICAgICBzZWxm Lmluc3RhbGxlZF93aW5lX3ZlcnNpb25fcm9vdHNbYXJjaF0gPSBzZWxmLmluc3RhbGxlZF93aW5l X3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaF0uQWRkUm9vdCgiIikKKysgICAgICAgIHNlbGYu bnVtYmVyX29mX2F2YWlsYWJsZV92ZXJzaW9uc1thcmNoXSA9IDAKKysgICAgICAgIHNlbGYubnVt YmVyX29mX2luc3RhbGxlZF92ZXJzaW9uc1thcmNoXSA9IDAKKysKKysgICAgZGVmIGFkZF9hdmFp bGFibGVfdmVyc2lvbihzZWxmLCBhcmNoLCB2ZXJzaW9uKToKKysgICAgICAgIHNlbGYubnVtYmVy X29mX2F2YWlsYWJsZV92ZXJzaW9uc1thcmNoXSArPSAxCisrICAgICAgICBzZWxmLmF2YWlsYWJs ZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3JbYXJjaF0uQXBwZW5kSXRlbShzZWxmLmF2YWls YWJsZV93aW5lX3ZlcnNpb25fcm9vdHNbYXJjaF0sIHZlcnNpb24sIDApCisrCisrICAgIGRlZiBh ZGRfaW5zdGFsbGVkX3ZlcnNpb24oc2VsZiwgYXJjaCwgdmVyc2lvbik6CisrICAgICAgICBzZWxm Lm51bWJlcl9vZl9pbnN0YWxsZWRfdmVyc2lvbnNbYXJjaF0gKz0gMQorKyAgICAgICAgc2VsZi5p bnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hdLkFwcGVuZEl0ZW0oc2Vs Zi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uX3Jvb3RzW2FyY2hdLCB2ZXJzaW9uLCAwKQorKworKyAg ICBkZWYgX29uX3NlbGVjdF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKHNlbGYsIGFyY2hpdGVjdHVy ZSk6CisrICAgICAgICBzZWxmLmF2YWlsYWJsZV93aW5lX3ZlcnNpb25zX3RyZWVfc2VsZWN0b3Jb YXJjaGl0ZWN0dXJlXS5VbnNlbGVjdEFsbCgpCisrICAgICAgICBzZWxmLmJ1dHRvbl91bmluc3Rh bGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoVHJ1ZSkKKysgICAgICAgIHNlbGYuYnV0dG9uX2luc3Rh bGxbYXJjaGl0ZWN0dXJlXS5FbmFibGUoRmFsc2UpCisrCisrICAgIGRlZiBfb25fc2VsZWN0X2F2 YWlsYWJsZV93aW5lX3ZlcnNpb24oc2VsZiwgYXJjaGl0ZWN0dXJlKToKKysgICAgICAgIHNlbGYu aW5zdGFsbGVkX3dpbmVfdmVyc2lvbnNfdHJlZV9zZWxlY3RvclthcmNoaXRlY3R1cmVdLlVuc2Vs ZWN0QWxsKCkKKysgICAgICAgIHNlbGYuYnV0dG9uX3VuaW5zdGFsbFthcmNoaXRlY3R1cmVdLkVu YWJsZShGYWxzZSkKKysgICAgICAgIHNlbGYuYnV0dG9uX2luc3RhbGxbYXJjaGl0ZWN0dXJlXS5F bmFibGUoVHJ1ZSkKKysKKysgICAgZGVmIF9vbl9pbnN0YWxsKHNlbGYsIGFyY2hpdGVjdHVyZSk6 CisrICAgICAgICBzZWxlY3RlZF92ZXJzaW9uID0gc2VsZi5hdmFpbGFibGVfd2luZV92ZXJzaW9u c190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uR2V0SXRlbVRleHQoc2VsZi5hdmFpbGFibGVf d2luZV92ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uR2V0U2VsZWN0aW9uKCkp CisrICAgICAgICBpZiBzZWxmLm9uX2luc3RhbGxfaGFuZGxlciBpcyBub3QgTm9uZToKKysgICAg ICAgICAgICBzZWxmLm9uX2luc3RhbGxfaGFuZGxlcihhcmNoaXRlY3R1cmUsIHNlbGVjdGVkX3Zl cnNpb24pCisrCisrICAgIGRlZiBfb25fZGVsZXRlKHNlbGYsIGFyY2hpdGVjdHVyZSk6CisrICAg ICAgICBzZWxlY3RlZF92ZXJzaW9uID0gc2VsZi5pbnN0YWxsZWRfd2luZV92ZXJzaW9uc190cmVl X3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uR2V0SXRlbVRleHQoc2VsZi5pbnN0YWxsZWRfd2luZV92 ZXJzaW9uc190cmVlX3NlbGVjdG9yW2FyY2hpdGVjdHVyZV0uR2V0U2VsZWN0aW9uKCkpCisrICAg ICAgICBpZiBzZWxmLm9uX3JlbW92ZV9oYW5kbGVyIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAg IHNlbGYub25fcmVtb3ZlX2hhbmRsZXIoYXJjaGl0ZWN0dXJlLCBzZWxlY3RlZF92ZXJzaW9uKQor ZGlmZiAtLWdpdCBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5IGIv cHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zVG9vbHMucHkKK2luZGV4IDA2ZmI0MDFl Ni4uNjlkNGNmMmIyIDEwMDY0NAorLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNp b25zVG9vbHMucHkKKysrKyBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xz LnB5CitAQCAtMTAsMjIgKzEwLDEwIEBAIGRlZiBmZXRjaFVzZXJPUygpOgorICAgICBlbHNlOgor ICAgICAgICAgcmV0dXJuICJmcmVlYnNkIgorIAorLWRlZiBHZXRXaW5lVmVyc2lvbihnYW1lKToK Ky0gICAgY2ZpbGUgPSBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsgInNob3J0Y3V0cy8iICsg Z2FtZQorLSAgICBmaWNoaWVyID0gb3BlbihjZmlsZSwgInIiKS5yZWFkbGluZXMoKQorLSAgICBp ID0gMAorLSAgICBsaW5lID0gIiIKKy0gICAgd2hpbGUgKGkgPCBsZW4oZmljaGllcikpOgorLSAg ICAgICAgZmljaGllcltpXSA9IGZpY2hpZXJbaV0ucmVwbGFjZSgiXG4iLCAiIikKKy0gICAgICAg IGlmICgiUEFUSD0iIGluIGZpY2hpZXJbaV0gYW5kICJXaW5lVmVyc2lvbnMiIGluIGZpY2hpZXJb aV0pOgorLSAgICAgICAgICAgIGxpbmUgPSBmaWNoaWVyW2ldLnJlcGxhY2UoIi8vIiwgIi8iKQor LSAgICAgICAgaSArPSAxCisrZGVmIGFyY2hpdGVjdHVyZV9pc19zdXBwb3J0ZWQoYXJjaGl0ZWN0 dXJlX25hbWUpOgorKyAgICByZXR1cm4gVHJ1ZSAjIyBGSVhNRQorIAorLSAgICBpZiBsaW5lID09 ICIiOgorLSAgICAgICAgdmVyc2lvbiA9ICJTeXN0ZW0iCistICAgIGVsc2U6CistICAgICAgICB2 ZXJzaW9uID0gbGluZS5yZXBsYWNlKCJQQVRIPSIsICIiKS5yZXBsYWNlKCJcIiIsICIiKS5yZXBs YWNlKFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAsICIiKS5yZXBsYWNlKCIvLyIsICIvIikKKy0g ICAgICAgIHZlcnNpb24gPSB2ZXJzaW9uLnNwbGl0KCIvIikKKy0gICAgICAgIHZlcnNpb24gPSB2 ZXJzaW9uWzFdCistCistICAgIHJldHVybiB2ZXJzaW9uCisrZGVmIGZldGNoX3N1cHBvcnRlZF9h cmNocygpOgorKyAgICBmb3IgYXZhaWxhYmxlX2FyY2ggaW4gWyJ4ODYiLCAieDg2b242NCIsICJh bWQ2NCJdOgorKyAgICAgICAgaWYgYXJjaGl0ZWN0dXJlX2lzX3N1cHBvcnRlZChhdmFpbGFibGVf YXJjaCk6CisrICAgICAgICAgICAgeWllbGQgYXZhaWxhYmxlX2FyY2gKK2RpZmYgLS1naXQgYS9w eXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkgYi9weXRob24vd2luZV92 ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKK2luZGV4IGUzYjhiNDE2MC4uYjc2ZGIwYjI1 IDEwMDc1NQorLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5 CisrKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkKK0BAIC0z MCwxODMgKzMwLDk1IEBACisgaW1wb3J0IGxpYi5wbGF5b25saW51eCBhcyBwbGF5b25saW51eAor IGZyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNGZXRjaGVyIGltcG9ydCBXaW5lVmVyc2lv bkZldGNoZXIKKyBmcm9tIHdpbmVfdmVyc2lvbnMuV2luZVZlcnNpb25zTm90ZWJvb2sgaW1wb3J0 IFdpbmVWZXJzaW9uc05vdGVib29rCistZnJvbSB3aW5lX3ZlcnNpb25zLldpbmVWZXJzaW9uc1Rv b2xzIGltcG9ydCBmZXRjaFVzZXJPUworK2Zyb20gd2luZV92ZXJzaW9ucy5XaW5lVmVyc2lvbnNU b29scyBpbXBvcnQgZmV0Y2hVc2VyT1MsIGZldGNoX3N1cHBvcnRlZF9hcmNocworIAorIGxpYi5s bmcuTGFuZygpCisgCisgCistZGVmIFNldFdpbmVWZXJzaW9uKGdhbWUsIHZlcnNpb24pOgorLSAg ICBjZmlsZSA9IFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAic2hvcnRjdXRzLyIgKyBnYW1l CistICAgIGZpY2hpZXIgPSBvcGVuKGNmaWxlLCAiciIpLnJlYWRsaW5lcygpCistICAgIGkgPSAw CistICAgIGxpbmUgPSBbXQorLSAgICB3aGlsZSAoaSA8IGxlbihmaWNoaWVyKSk6ICAjIE9uIHJl dGlyZSBsJ2V2ZW50dWVsCistICAgICAgICBmaWNoaWVyW2ldID0gZmljaGllcltpXS5yZXBsYWNl KCJcbiIsICIiKQorLSAgICAgICAgaWYgKCJQQVRIPSIgbm90IGluIGZpY2hpZXJbaV0gb3IgIldp bmVWZXJzaW9ucyIgbm90IGluIGZpY2hpZXJbaV0pOgorLSAgICAgICAgICAgIGxpbmUuYXBwZW5k KGZpY2hpZXJbaV0pCistICAgICAgICBpICs9IDEKKy0KKy0gICAgZmljaGllcl93cml0ZSA9IG9w ZW4oY2ZpbGUsICJ3IikKKytjbGFzcyBXaW5lVmVyc2lvbnNXaW5kb3cod3guRnJhbWUpOgorKyAg ICBkZWYgb25fYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfZG93bmxvYWRlZChzZWxmLCB2ZXJzaW9u c19wZXJfYXJjaGl0ZWN0dXJlKToKKysgICAgICAgIGZvciBhcmNoaXRlY3R1cmUgaW4gdmVyc2lv bnNfcGVyX2FyY2hpdGVjdHVyZToKKysgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBb XQorKyAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVb YXJjaGl0ZWN0dXJlXToKKysgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zLmFwcGVu ZCh2ZXJzaW9uWyJuYW1lIl0pCisgCistICAgIGlmICh2ZXJzaW9uICE9ICJTeXN0ZW0iKTogICMg T24gaW5zZXJlCistICAgICAgICBpZiBvcy5lbnZpcm9uWyJQT0xfT1MiXSA9PSAiTWFjIjoKKy0g ICAgICAgICAgICBsaW5lLmluc2VydCgxLCAiUEFUSD1cIiIgKyBWYXJpYWJsZXMucGxheW9ubGlu dXhfcmVwICsgIldpbmVWZXJzaW9ucy8iICsgdmVyc2lvbiArICIvYmluLzokUEFUSFwiIikKKy0g ICAgICAgICAgICBsaW5lLmluc2VydCgxLAorLSAgICAgICAgICAgICAgICAgICAgICAgICJMRF9M SUJSQVJZX1BBVEg9XCIiICsgVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICJXaW5lVmVyc2lv bnMvIiArIHZlcnNpb24gKyAiL2xpYi86JExEX0xJQlJBUllfUEFUSFwiIikKKy0gICAgICAgIGVs c2U6CistICAgICAgICAgICAgbGluZS5pbnNlcnQoMSwgIlBBVEg9XCIiICsgVmFyaWFibGVzLnBs YXlvbmxpbnV4X3JlcCArICJXaW5lVmVyc2lvbnMvIiArIHZlcnNpb24gKyAiL3Vzci9iaW4vOiRQ QVRIXCIiKQorLSAgICAgICAgICAgIGxpbmUuaW5zZXJ0KDEsCistICAgICAgICAgICAgICAgICAg ICAgICAgIkxEX0xJQlJBUllfUEFUSD1cIiIgKyBWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsg IldpbmVWZXJzaW9ucy8iICsgdmVyc2lvbiArICIvdXNyL2xpYi86JExEX0xJQlJBUllfUEFUSFwi IikKKysgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5uYXRz b3J0X2tleWdlbigpKQorKyAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5yZXZlcnNlKCkK KysgICAgICAgICAgICBhdmFpbGFibGVfdmVyc2lvbnMgPSBhdmFpbGFibGVfdmVyc2lvbnNbOl0K KyAKKy0gICAgaSA9IDAKKy0gICAgd2hpbGUgKGkgPCBsZW4obGluZSkpOiAgIyBPbiBlY3JpdAor LSAgICAgICAgZmljaGllcl93cml0ZS53cml0ZShsaW5lW2ldICsgIlxuIikKKy0gICAgICAgIGkg Kz0gMQorKyAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIGF2YWlsYWJsZV92ZXJzaW9uczoKKysg ICAgICAgICAgICAgICAgd3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2F2YWlsYWJsZV92 ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pCisgCisrICAgIGRlZiBvbl9pbnN0YWxsZWRf d2luZV92ZXJzaW9uc19kb3dubG9hZGVkKHNlbGYsIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmUp OgorKyAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJl OgorKyAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IFtdCisrICAgICAgICAgICAgZm9y IHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1cmVdOgorKyAg ICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25bIm5hbWUiXSkK KyAKKysgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuc29ydChrZXk9bmF0c29ydC5uYXRz b3J0X2tleWdlbigpKQorKyAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5yZXZlcnNlKCkK KysgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMgPSBpbnN0YWxsZWRfdmVyc2lvbnNbOl0K KyAKKysgICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiBpbnN0YWxsZWRfdmVyc2lvbnM6CisrICAg ICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFkZF9pbnN0YWxsZWRfdmVy c2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKQorIAorKyAgICBkZWYgaGFuZGxlX2Vycm9yKHNl bGYsIGVycm9yKToKKysgICAgICAgIHByaW50KGVycm9yKQorIAorLWNsYXNzIFdpbmVWZXJzaW9u c1dpbmRvdyh3eC5GcmFtZSk6CisgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGlkLCB0 aXRsZSk6CistICAgICAgICBzZWxmLmRvd25sb2FkMzIgPSBXaW5lVmVyc2lvbkZldGNoZXIoIng4 NiIpCistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVl Iik6CistICAgICAgICAgICAgc2VsZi5kb3dubG9hZDY0ID0gV2luZVZlcnNpb25GZXRjaGVyKCJh bWQ2NCIpCistCistICAgICAgICB3eC5GcmFtZS5fX2luaXRfXyhzZWxmLCBwYXJlbnQsIC0xLCB0 aXRsZSwgc2l6ZT0oNzUwLCA0MDAgKyBWYXJpYWJsZXMud2luZG93c19hZGRfc2l6ZSksCisrICAg ICAgICB3eC5GcmFtZS5fX2luaXRfXyhzZWxmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg cGFyZW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICB0aXRsZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9KDc1MCwg NDAwICsgVmFyaWFibGVzLndpbmRvd3NfYWRkX3NpemUpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3R5bGU9d3guQ0xPU0VfQk9YIHwgd3guQ0FQVElPTiB8IHd4Lk1JTklNSVpFX0JPWCkK KyAgICAgICAgIHNlbGYudGltZXIgPSB3eC5UaW1lcihzZWxmLCAxKQorICAgICAgICAgc2VsZi5T ZXRJY29uKHd4Lkljb24oVmFyaWFibGVzLnBsYXlvbmxpbnV4X2VudiArICIvZXRjL3BsYXlvbmxp bnV4LnBuZyIsIHd4LkJJVE1BUF9UWVBFX0FOWSkpCistICAgICAgICAjIHNlbGYucGFuZWwgPSB3 eC5QYW5lbChzZWxmLCAtMSkKKy0KKy0gICAgICAgIHNlbGYub25nbGV0cyA9IFdpbmVWZXJzaW9u c05vdGVib29rKHNlbGYpCistICAgICAgICAjIHNlbGYuc2l6ZXIgPSB3eC5Cb3hTaXplcih3eC5W RVJUSUNBTCkKKy0gICAgICAgICMgc2VsZi5zaXplci5BZGQoc2VsZi5vbmdsZXRzLCAxNSwgd3gu RVhQQU5EfHd4LkFMTCwgMikKKysgICAgICAgIHNlbGYud2luZV92ZXJzaW9uX2ZldGNoZXIgPSBX aW5lVmVyc2lvbkZldGNoZXIoZmV0Y2hVc2VyT1MoKSkKKyAKKy0gICAgICAgIHNlbGYuZ2V0VmVy c2lvbnMoIng4NiIpCistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJd ID09ICJUcnVlIik6CistICAgICAgICAgICAgc2VsZi5nZXRWZXJzaW9ucygiYW1kNjQiKQorLSAg ICAgICAgIyBzZWxmLnBhbmVsLlNldFNpemVyKHNlbGYuc2l6ZXIpCistICAgICAgICAjIHNlbGYu cGFuZWwuU2V0QXV0b0xheW91dChUcnVlKQorLQorLSAgICAgICAgc2VsZi5vbmdsZXRzLmxpc3Rl X3ZlcnNpb25zKCkKKy0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0g PT0gIlRydWUiKToKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMubGlzdGVfdmVyc2lvbnMoImFt ZDY0IikKKy0gICAgICAgIHNlbGYub2xkcmVsb2FkMzIgPSAiIgorKyAgICAgICAgc2VsZi5ub3Rl Ym9vayA9IFdpbmVWZXJzaW9uc05vdGVib29rKHNlbGYpCisrICAgICAgICBzZWxmLnNpemVyID0g d3guQm94U2l6ZXIod3guVkVSVElDQUwpCisrICAgICAgICBzZWxmLnNpemVyLkFkZChzZWxmLm5v dGVib29rLCAxNSwgd3guRVhQQU5EIHwgd3guQUxMLCAyKQorIAorLSAgICAgICAgaWYgKG9zLmVu dmlyb25bIkFNRDY0X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgorLSAgICAgICAgICAgIHNlbGYu b2xkcmVsb2FkNjQgPSAiIgorKyAgICAgICAgZm9yIGF2YWlsYWJsZV9hcmNoIGluIGZldGNoX3N1 cHBvcnRlZF9hcmNocygpOgorKyAgICAgICAgICAgIHNlbGYubm90ZWJvb2suYWRkX2FyY2hpdGVj dHVyZV90YWIoYXZhaWxhYmxlX2FyY2gpCisgCistICAgICAgICBzZWxmLm9sZHZlcnNpb25zMzIg PSBbXQorKyAgICAgICAgc2VsZi5sYXN0X2NoZWNrc3VtID0gTm9uZQorKyAgICAgICAgc2VsZi5u b3RlYm9vay5vbl9pbnN0YWxsX2hhbmRsZXIgPSBzZWxmLmluc3RhbGxfd2luZV92ZXJzaW9uCisr ICAgICAgICBzZWxmLm5vdGVib29rLm9uX3JlbW92ZV9oYW5kbGVyID0gc2VsZi5yZW1vdmVfd2lu ZV92ZXJzaW9uCisgCistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJd ID09ICJUcnVlIik6CistICAgICAgICAgICAgc2VsZi5vbGR2ZXJzaW9uczY0ID0gW10KKysgICAg ICAgIHNlbGYuQmluZCh3eC5FVlRfVElNRVIsIHNlbGYuZGV0ZWN0X2NoYW5nZXMsIHNlbGYudGlt ZXIpCisrICAgICAgICBzZWxmLnRpbWVyLlN0YXJ0KDEwMDApCisgCistICAgICAgICAjIHNlbGYu YnV0dG9uID0gd3guQnV0dG9uKHNlbGYucGFuZWxzX2J1dHRvbnMsIHd4LklEX0NMT1NFLCBfKCJD bG9zZSIpLCBwb3M9KDUxMCwgNSksIHNpemU9d3guRGVmYXVsdFNpemUpCisrICAgIGRlZiByZWZy ZXNoKHNlbGYpOgorKyAgICAgICAgZm9yIGF2YWlsYWJsZV9hcmNoIGluIGZldGNoX3N1cHBvcnRl ZF9hcmNocygpOgorKyAgICAgICAgICAgIHNlbGYubm90ZWJvb2suY2xlYW5fdmVyc2lvbl9vZl9h cmNoaXRlY3R1cmUoYXZhaWxhYmxlX2FyY2gpCisgCistICAgICAgICBzZWxmLkJpbmQod3guRVZU X0JVVFRPTiwgc2VsZi5jbG9zZWFwcCwgaWQ9d3guSURfQ0xPU0UpCistICAgICAgICBzZWxmLkJp bmQod3guRVZUX0NMT1NFLCBzZWxmLmNsb3NlYXBwKQorLSAgICAgICAgc2VsZi5CaW5kKHd4LkVW VF9UUkVFX1NFTF9DSEFOR0VELCBzZWxmLnVuc2VsZWN0MzIsIGlkPTEwNikKKy0gICAgICAgIHNl bGYuQmluZCh3eC5FVlRfVFJFRV9TRUxfQ0hBTkdFRCwgc2VsZi51bnNlbGVjdDMyLCBpZD0xMDcp CistICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5kZWxldGUzMiwgaWQ9MTA4 KQorLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9CVVRUT04sIHNlbGYuaW5zdGFsbDMyLCBpZD0x MDkpCisrICAgICAgICBzZWxmLndpbmVfdmVyc2lvbl9mZXRjaGVyLmZldGNoX2FsbF9hdmFpbGFi bGVfd2luZV92ZXJzaW9uKHNlbGYub25fYXZhaWxhYmxlX3dpbmVfdmVyc2lvbnNfZG93bmxvYWRl ZCwgc2VsZi5oYW5kbGVfZXJyb3IpCisrICAgICAgICBzZWxmLndpbmVfdmVyc2lvbl9mZXRjaGVy LmZldGNoX2FsbF9pbnN0YWxsZWRfd2luZV92ZXJzaW9uKHNlbGYub25faW5zdGFsbGVkX3dpbmVf dmVyc2lvbnNfZG93bmxvYWRlZCwgc2VsZi5oYW5kbGVfZXJyb3IpCisgCistICAgICAgICBzZWxm LkJpbmQod3guRVZUX1RSRUVfU0VMX0NIQU5HRUQsIHNlbGYudW5zZWxlY3Q2NCwgaWQ9MjA2KQor LSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9UUkVFX1NFTF9DSEFOR0VELCBzZWxmLnVuc2VsZWN0 NjQsIGlkPTIwNykKKy0gICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQlVUVE9OLCBzZWxmLmRlbGV0 ZTY0LCBpZD0yMDgpCistICAgICAgICBzZWxmLkJpbmQod3guRVZUX0JVVFRPTiwgc2VsZi5pbnN0 YWxsNjQsIGlkPTIwOSkKKysgICAgZGVmIGRldGVjdF9jaGFuZ2VzKHNlbGYsIGV2ZW50KToKKysg ICAgICAgIGNoZWNrc3VtID0gc2VsZi53aW5lX3ZlcnNpb25fZmV0Y2hlci5jYWxjdWxhdGVfaW5z dGFsbGVkX2hhc2goKQorIAorLSAgICAgICAgc2VsZi5CaW5kKHd4LkVWVF9USU1FUiwgc2VsZi5B dXRvUmVsb2FkLCBzZWxmLnRpbWVyKQorLSAgICAgICAgc2VsZi50aW1lci5TdGFydCgyMDApCisr ICAgICAgICBpZiBzZWxmLmxhc3RfY2hlY2tzdW0gIT0gY2hlY2tzdW06CisrICAgICAgICAgICAg c2VsZi5sYXN0X2NoZWNrc3VtID0gY2hlY2tzdW0KKysgICAgICAgICAgICBzZWxmLnJlZnJlc2go KQorIAorLSAgICBkZWYgQXV0b1JlbG9hZChzZWxmLCBldmVudCk6CistICAgICAgICByZWxvYWQz MiA9IG9zLmxpc3RkaXIoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgZmV0 Y2hVc2VyT1MoKSArICIteDg2IikKKy0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01Q QVRJQkxFIl0gPT0gIlRydWUiKToKKy0gICAgICAgICAgICByZWxvYWQ2NCA9IG9zLmxpc3RkaXIo VmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgZmV0Y2hVc2VyT1MoKSArICIt YW1kNjQiKQorLSAgICAgICAgaWYgKHNlbGYuZG93bmxvYWQzMi50aHJlYWRfbWVzc2FnZSA9PSAi T2siIG9yIHNlbGYuZG93bmxvYWQzMi50aHJlYWRfbWVzc2FnZSA9PSAiRXJyIik6CistICAgICAg ICAgICAgc2VsZi5Xcml0ZVZlcnNpb24oKQorLSAgICAgICAgICAgIHNlbGYuZG93bmxvYWQzMi50 aHJlYWRfbWVzc2FnZSA9ICJXYWl0IgorIAorLSAgICAgICAgaWYgKG9zLmVudmlyb25bIkFNRDY0 X0NPTVBBVElCTEUiXSA9PSAiVHJ1ZSIpOgorLSAgICAgICAgICAgIGlmIChzZWxmLmRvd25sb2Fk NjQudGhyZWFkX21lc3NhZ2UgPT0gIk9rIiBvciBzZWxmLmRvd25sb2FkNjQudGhyZWFkX21lc3Nh Z2UgPT0gIkVyciIpOgorLSAgICAgICAgICAgICAgICBzZWxmLldyaXRlVmVyc2lvbigiYW1kNjQi KQorLSAgICAgICAgICAgICAgICBzZWxmLmRvd25sb2FkNjQudGhyZWFkX21lc3NhZ2UgPSAiV2Fp dCIKKy0KKy0gICAgICAgIGlmIChvcy5lbnZpcm9uWyJBTUQ2NF9DT01QQVRJQkxFIl0gPT0gIlRy dWUiKToKKy0gICAgICAgICAgICBpZiAocmVsb2FkNjQgIT0gc2VsZi5vbGRyZWxvYWQ2NCk6Cist ICAgICAgICAgICAgICAgIHNlbGYuZ2V0VmVyc2lvbnMoImFtZDY0IikKKy0gICAgICAgICAgICAg ICAgc2VsZi5vbGRyZWxvYWQ2NCA9IHJlbG9hZDY0CistCistICAgICAgICBpZiAocmVsb2FkMzIg IT0gc2VsZi5vbGRyZWxvYWQzMik6CistICAgICAgICAgICAgc2VsZi5nZXRWZXJzaW9ucygpCist ICAgICAgICAgICAgc2VsZi5vbGRyZWxvYWQzMiA9IHJlbG9hZDMyCistCistICAgICAgICBpZiAo c2VsZi5kb3dubG9hZDMyLnZlcnNpb25zICE9IHNlbGYub2xkdmVyc2lvbnMzMik6CistICAgICAg ICAgICAgc2VsZi5vbGR2ZXJzaW9uczMyID0gc2VsZi5kb3dubG9hZDMyLnZlcnNpb25zWzpdCist CistICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09ICJUcnVlIik6 CistICAgICAgICAgICAgaWYgKHNlbGYuZG93bmxvYWQ2NC52ZXJzaW9ucyAhPSBzZWxmLm9sZHZl cnNpb25zNjQpOgorLSAgICAgICAgICAgICAgICBzZWxmLm9sZHZlcnNpb25zNjQgPSBzZWxmLmRv d25sb2FkNjQudmVyc2lvbnNbOl0KKy0KKy0gICAgZGVmIHNpemVkaXJlY3Rvcnkoc2VsZiwgcGF0 aCk6CistICAgICAgICBzaXplID0gMAorLSAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGlu IG9zLndhbGsocGF0aCk6CistICAgICAgICAgICAgZm9yIGZpYyBpbiBmaWxlczoKKy0gICAgICAg ICAgICAgICAgc2l6ZSArPSBvcy5wYXRoLmdldHNpemUob3MucGF0aC5qb2luKHJvb3QsIGZpYykp CistICAgICAgICByZXR1cm4gc2l6ZQorLQorLSAgICBkZWYgdW5zZWxlY3QzMihzZWxmLCBldmVu dCk6CistICAgICAgICBpZiAoZXZlbnQuR2V0SWQoKSA9PSAxMDYpOgorLSAgICAgICAgICAgIHNl bGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbIng4NiJdLlVuc2Vs ZWN0QWxsKCkKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtWyJ4ODYiXS5FbmFi bGUoRmFsc2UpCistICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9pblsieDg2Il0uRW5h YmxlKFRydWUpCistICAgICAgICBpZiAoZXZlbnQuR2V0SWQoKSA9PSAxMDcpOgorLSAgICAgICAg ICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbIng4NiJd LlVuc2VsZWN0QWxsKCkKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtWyJ4ODYi XS5FbmFibGUoVHJ1ZSkKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX2luWyJ4ODYi XS5FbmFibGUoRmFsc2UpCistCistICAgIGRlZiBkZWxldGUzMihzZWxmLCBldmVudCk6CistICAg ICAgICBzZWxmLmRlbGV0ZV9jb21tb24oZXZlbnQsICJ4ODYiKQorLQorLSAgICBkZWYgZGVsZXRl X2NvbW1vbihzZWxmLCBldmVudCwgYXJjaCk6CistICAgICAgICB2ZXJzaW9uID0gc2VsZi5vbmds ZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5HZXRJdGVtVGV4dCgK Ky0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVj dG9yW2FyY2hdLkdldFNlbGVjdGlvbigpKQorLSAgICAgICAgdXNlZF92ZXJzaW9uID0gc2VsZi5j aGVja1ZlcnNpb25Vc2UoYXJjaCkgICMgR2V0IHRoZSBzZXQgb2Ygd2luZSB2ZXJzaW9uIHVzZWQg Ynkgd2luZXByZWZpeAorKyAgICBkZWYgcmVtb3ZlX3dpbmVfdmVyc2lvbihzZWxmLCBhcmNoaXRl Y3R1cmUsIHZlcnNpb24pOgorKyAgICAgICAgdXNlZF92ZXJzaW9uID0gc2VsZi5jaGVja1ZlcnNp b25Vc2UoYXJjaGl0ZWN0dXJlKSAgIyBHZXQgdGhlIHNldCBvZiB3aW5lIHZlcnNpb24gdXNlZCBi eSB3aW5lcHJlZml4CisgICAgICAgICBtZXNzYWdlID0gXygnQXJlIHlvdSBzdXJlIHlvdSB3YW50 IHRvIGRlbGV0ZSB3aW5lIHswfT8nKS5mb3JtYXQodmVyc2lvbikKKyAgICAgICAgIGlmIHZlcnNp b24gaW4gdXNlZF92ZXJzaW9uOgorICAgICAgICAgICAgIG1lc3NhZ2UgKz0gIlxuIiArIF8oJ1Ro aXMgdmVyc2lvbiBpcyBDVVJSRU5UTFkgSU4gVVNFJykKKyAgICAgICAgIGlmICh3eC5ZRVMgPT0g d3guTWVzc2FnZUJveChtZXNzYWdlLCBvcy5lbnZpcm9uWyJBUFBMSUNBVElPTl9USVRMRSJdLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXd4LllFU19OTyB8IHd4 LklDT05fUVVFU1RJT04pKToKKy0gICAgICAgICAgICBzaHV0aWwucm10cmVlKFZhcmlhYmxlcy5w bGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIGZldGNoVXNlck9TKCkgKyAiLSIgKyBhcmNoICsg Ii8iICsgdmVyc2lvbikKKy0KKy0gICAgZGVmIGluc3RhbGwzMihzZWxmLCBldmVudCk6CistICAg ICAgICBzZWxmLmluc3RhbGxfY29tbW9uKGV2ZW50LCAieDg2IikKKy0KKy0gICAgZGVmIGluc3Rh bGxfY29tbW9uKHNlbGYsIGV2ZW50LCBhcmNoKToKKy0gICAgICAgIGluc3RhbGwgPSBzZWxmLm9u Z2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkdldEl0ZW1UZXh0 KHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uR2V0 U2VsZWN0aW9uKCkpCistICAgICAgICBzdWJwcm9jZXNzLlBvcGVuKFsiYmFzaCIsIFZhcmlhYmxl cy5wbGF5b25saW51eF9lbnYgKyAiL2Jhc2gvaW5zdGFsbF93dmVyIiwgaW5zdGFsbCwgYXJjaF0p CisrICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShWYXJpYWJsZXMucGxheW9ubGludXhfcmVwICsg Ii93aW5lLyIgKyBmZXRjaFVzZXJPUygpICsgIi0iICsgYXJjaGl0ZWN0dXJlICsgIi8iICsgdmVy c2lvbikKKyAKKy0gICAgZGVmIHVuc2VsZWN0NjQoc2VsZiwgZXZlbnQpOgorLSAgICAgICAgaWYg KGV2ZW50LkdldElkKCkgPT0gMjA2KToKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuaW5zdGFs bGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yWyJhbWQ2NCJdLlVuc2VsZWN0QWxsKCkKKy0gICAg ICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtWyJhbWQ2NCJdLkVuYWJsZShGYWxzZSkKKy0g ICAgICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX2luWyJhbWQ2NCJdLkVuYWJsZShUcnVlKQor LSAgICAgICAgaWYgKGV2ZW50LkdldElkKCkgPT0gMjA3KToKKy0gICAgICAgICAgICBzZWxmLm9u Z2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yWyJhbWQ2NCJdLlVuc2VsZWN0 QWxsKCkKKy0gICAgICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX3JtWyJhbWQ2NCJdLkVuYWJs ZShUcnVlKQorLSAgICAgICAgICAgIHNlbGYub25nbGV0cy5idXR0b25faW5bImFtZDY0Il0uRW5h YmxlKEZhbHNlKQorIAorLSAgICBkZWYgZGVsZXRlNjQoc2VsZiwgZXZlbnQpOgorLSAgICAgICAg c2VsZi5kZWxldGVfY29tbW9uKGV2ZW50LCAiYW1kNjQiKQorKyAgICBkZWYgaW5zdGFsbF93aW5l X3ZlcnNpb24oc2VsZiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKToKKysgICAgICAgIHByaW50KCIl cyBvZiBhcmNoaXRlY3R1cmUgJXMgd2lsbCBiZSBpbnN0YWxsZWQgIiAlICh2ZXJzaW9uLCBhcmNo aXRlY3R1cmUpKQorKyAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbImJhc2giLCBWYXJpYWJsZXMu cGxheW9ubGludXhfZW52ICsgIi9iYXNoL2luc3RhbGxfd3ZlciIsIHZlcnNpb24sIGFyY2hpdGVj dHVyZV0pCisgCistICAgIGRlZiBpbnN0YWxsNjQoc2VsZiwgZXZlbnQpOgorLSAgICAgICAgc2Vs Zi5pbnN0YWxsX2NvbW1vbihldmVudCwgImFtZDY0IikKKy0KKy0gICAgZGVmIGdldFZlcnNpb25z KHNlbGYsIGFyY2g9Ing4NiIpOgorLSAgICAgICAgaWYgKGFyY2ggPT0gIng4NiIpOgorLSAgICAg ICAgICAgIHNlbGYuZG93bmxvYWQzMi50aHJlYWRfbWVzc2FnZSA9ICJnZXQiCistICAgICAgICBp ZiAoYXJjaCA9PSAiYW1kNjQiKToKKy0gICAgICAgICAgICBzZWxmLmRvd25sb2FkNjQudGhyZWFk X21lc3NhZ2UgPSAiZ2V0IgorIAorICAgICBkZWYgY2hlY2tWZXJzaW9uVXNlKHNlbGYsIGFyY2gp OiAgIyBDaGVjayB0aGUgd2luZSB2ZXJzaW9uIHVzZSBieSB3aW5lcHJlZml4CisgICAgICAgICB1 c2VkX3ZlcnNpb25zID0gc2V0KFtdKQorQEAgLTIxOCw2NCArMTMwLDggQEAgZGVmIGNoZWNrVmVy c2lvblVzZShzZWxmLCBhcmNoKTogICMgQ2hlY2sgdGhlIHdpbmUgdmVyc2lvbiB1c2UgYnkgd2lu ZXByZWZpeAorICAgICAgICAgICAgICAgICB1c2VkX3ZlcnNpb25zLmFkZCh3aW5lX3ZlcnNpb24p CisgICAgICAgICByZXR1cm4gKHVzZWRfdmVyc2lvbnMpCisgCistICAgIGRlZiBXcml0ZVZlcnNp b24oc2VsZiwgYXJjaD0ieDg2Iik6CistICAgICAgICBzZWxmLm9uZ2xldHMuaW1hZ2VzYXBwc1th cmNoXS5SZW1vdmVBbGwoKQorLSAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNfaVthcmNo XS5SZW1vdmVBbGwoKQorLSAgICAgICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9u c1RyZWVTZWxlY3RvclthcmNoXS5EZWxldGVBbGxJdGVtcygpCistICAgICAgICBzZWxmLm9uZ2xl dHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJlZVNlbGVjdG9yW2FyY2hdLkRlbGV0ZUFsbEl0ZW1z KCkKKy0KKy0gICAgICAgIHJvb3QgPSBzZWxmLm9uZ2xldHMuYXZhaWxhYmxlV2luZVZlcnNpb25z VHJlZVNlbGVjdG9yW2FyY2hdLkFkZFJvb3QoIiIpCistICAgICAgICBzZWxmLmkgPSAwCistICAg ICAgICBpZiAoYXJjaCA9PSAieDg2Iik6CistICAgICAgICAgICAgd2hpbGUgKHNlbGYuaSA8IGxl bihzZWxmLmRvd25sb2FkMzIudmVyc2lvbnMpKToKKy0gICAgICAgICAgICAgICAgc2VsZi5vbmds ZXRzLmltYWdlc2FwcHNbYXJjaF0uQWRkKAorLSAgICAgICAgICAgICAgICAgICAgd3guQml0bWFw KFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtcGFja2FnZXMu cG5nIikpCistICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVyc2lv bnNUcmVlU2VsZWN0b3JbYXJjaF0uQXBwZW5kSXRlbShyb290LCBzZWxmLmRvd25sb2FkMzIudmVy c2lvbnNbc2VsZi5pXSwgc2VsZi5pKQorLSAgICAgICAgICAgICAgICBzZWxmLmkgKz0gMQorLSAg ICAgICAgaWYgKGFyY2ggPT0gImFtZDY0Iik6CistICAgICAgICAgICAgd2hpbGUgKHNlbGYuaSA8 IGxlbihzZWxmLmRvd25sb2FkNjQudmVyc2lvbnMpKToKKy0gICAgICAgICAgICAgICAgc2VsZi5v bmdsZXRzLmltYWdlc2FwcHNbYXJjaF0uQWRkKAorLSAgICAgICAgICAgICAgICAgICAgd3guQml0 bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtcGFja2Fn ZXMucG5nIikpCistICAgICAgICAgICAgICAgIHNlbGYub25nbGV0cy5hdmFpbGFibGVXaW5lVmVy c2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0uQXBwZW5kSXRlbShyb290LCBzZWxmLmRvd25sb2FkNjQu dmVyc2lvbnNbc2VsZi5pXSwgc2VsZi5pKQorLSAgICAgICAgICAgICAgICBzZWxmLmkgKz0gMQor LQorLSAgICAgICAgcm9vdDIgPSBzZWxmLm9uZ2xldHMuaW5zdGFsbGVkV2luZVZlcnNpb25zVHJl ZVNlbGVjdG9yW2FyY2hdLkFkZFJvb3QoIiIpCistICAgICAgICB3Zm9sZGVyID0gZmV0Y2hVc2Vy T1MoKSArICItIiArIGFyY2gKKy0KKy0gICAgICAgIHVzZWRfdmVyc2lvbiA9IHNlbGYuY2hlY2tW ZXJzaW9uVXNlKGFyY2gpICAjIEdldCB0aGUgc2V0IG9mIHdpbmUgdmVyc2lvbiB1c2VkIGJ5IHdp bmVwcmVmaXgKKy0KKy0gICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IG9zLmxpc3RkaXIoVmFy aWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgd2ZvbGRlcikKKy0gICAgICAgIGlu c3RhbGxlZF92ZXJzaW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCistICAg ICAgICBpbnN0YWxsZWRfdmVyc2lvbnMucmV2ZXJzZSgpCistICAgICAgICBzZWxmLmkgPSAwCist ICAgICAgICBzZWxmLmogPSAwCistICAgICAgICBib2xkRm9udCA9IHNlbGYuR2V0Rm9udCgpCist ICAgICAgICBib2xkRm9udC5TZXRXZWlnaHQod3guQk9MRCkKKy0gICAgICAgIHdoaWxlIChzZWxm LmkgPCBsZW4oaW5zdGFsbGVkX3ZlcnNpb25zKSk6CistICAgICAgICAgICAgaWYgKG9zLnBhdGgu aXNkaXIoVmFyaWFibGVzLnBsYXlvbmxpbnV4X3JlcCArICIvd2luZS8iICsgd2ZvbGRlciArICIv IiArIGluc3RhbGxlZF92ZXJzaW9uc1tzZWxmLmldKSk6CistICAgICAgICAgICAgICAgIGl0ZW1J ZCA9IHNlbGYub25nbGV0cy5pbnN0YWxsZWRXaW5lVmVyc2lvbnNUcmVlU2VsZWN0b3JbYXJjaF0u QXBwZW5kSXRlbShyb290MiwgaW5zdGFsbGVkX3ZlcnNpb25zW3NlbGYuaV0sIHNlbGYuaikKKy0g ICAgICAgICAgICAgICAgaWYgKGxlbihvcy5saXN0ZGlyKAorLSAgICAgICAgICAgICAgICAgICAg ICAgIFZhcmlhYmxlcy5wbGF5b25saW51eF9yZXAgKyAiL3dpbmUvIiArIHdmb2xkZXIgKyAiLyIg KyBpbnN0YWxsZWRfdmVyc2lvbnNbc2VsZi5pXSkpID09IDApOgorLSAgICAgICAgICAgICAgICAg ICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNfaVthcmNoXS5BZGQoCistICAgICAgICAgICAgICAg ICAgICAgICAgd3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0 YWxsL3dpbmUtd2FybmluZy5wbmciKSkKKy0gICAgICAgICAgICAgICAgZWxpZiBpbnN0YWxsZWRf dmVyc2lvbnNbc2VsZi5pXSBub3QgaW4gdXNlZF92ZXJzaW9uOgorLSAgICAgICAgICAgICAgICAg ICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNfaVthcmNoXS5BZGQod3guQml0bWFwKFZhcmlhYmxl cy5wbGF5b25saW51eF9lbnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUucG5nIikpCistICAgICAgICAg ICAgICAgIGVsc2U6ICAjIENsZWFybHkgc2hvdyB0aGUgd2luZSB2ZXJzaW9uIGluIHVzZQorLSAg ICAgICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmltYWdlc2FwcHNfaVthcmNoXS5BZGQoCist ICAgICAgICAgICAgICAgICAgICAgICAgd3guQml0bWFwKFZhcmlhYmxlcy5wbGF5b25saW51eF9l bnYgKyAiL2V0Yy9pbnN0YWxsL3dpbmUtaW4tdXNlLnBuZyIpKQorLSAgICAgICAgICAgICAgICAg ICAgc2VsZi5vbmdsZXRzLmluc3RhbGxlZFdpbmVWZXJzaW9uc1RyZWVTZWxlY3RvclthcmNoXS5T ZXRJdGVtRm9udChpdGVtSWQsIGJvbGRGb250KQorLSAgICAgICAgICAgICAgICBzZWxmLmogKz0g MQorLSAgICAgICAgICAgIHNlbGYuaSArPSAxCistICAgICAgICB0cnk6CistICAgICAgICAgICAg aWYgKHZlcnNpb25zWzBdID09ICJXaW5lIHBhY2thZ2VzIHdlYnNpdGUgaXMgdW5hdmFpbGFibGUi KToKKy0gICAgICAgICAgICAgICAgc2VsZi5vbmdsZXRzLmF2YWlsYWJsZVdpbmVWZXJzaW9uc1Ry ZWVTZWxlY3RvclthcmNoXS5FbmFibGUoRmFsc2UpCistICAgICAgICAgICAgICAgIHNlbGYub25n bGV0cy5pbWFnZXNhcHBzW2FyY2hdLlJlbW92ZUFsbCgpCistICAgICAgICBleGNlcHQ6CistICAg ICAgICAgICAgcGFzcworLSAgICAgICAgc2VsZi5vbmdsZXRzLmJ1dHRvbl9ybVthcmNoXS5FbmFi bGUoRmFsc2UpCistICAgICAgICBzZWxmLm9uZ2xldHMuYnV0dG9uX2luW2FyY2hdLkVuYWJsZShG YWxzZSkKKy0KKy0gICAgZGVmIGNsb3NlYXBwKHNlbGYsIGV2ZW50KToKKysKKysgICAgZGVmIGNs b3NlKHNlbGYsIGV2ZW50KToKKyAgICAgICAgIHNlbGYuZG93bmxvYWQzMi50aHJlYWRfcnVubmlu ZyA9IEZhbHNlCisgICAgICAgICBpZiAob3MuZW52aXJvblsiQU1ENjRfQ09NUEFUSUJMRSJdID09 ICJUcnVlIik6CisgICAgICAgICAgICAgc2VsZi5kb3dubG9hZDY0LnRocmVhZF9ydW5uaW5nID0g RmFsc2UKKworRnJvbSA5NzA0MjU5MjFhNDkzNGFkNTg0MjNlNjFjNzk5ZjQ3ODVmY2RlOGMyIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUXVlbnRpbiBQQVJJUyA8Z2l0QHF1ZW50aW4u cGFyaXM+CitEYXRlOiBTdW4sIDI0IEphbiAyMDIxIDE1OjQxOjMyICswMTAwCitTdWJqZWN0OiBb UEFUQ0ggMTYvMzddIFJlYWZjdG9yaW5nIHdpbmUgdmVyc2lvbiBtYW5hZ2VyIGNvZGUKKworLS0t CisgbGliL3NjcmlwdHMubGliICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTkgKysrKysr KysrLS0tCisgbGliL3dpbmUubGliICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYg KystLQorIHB5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5ICB8IDEwICsr KysrKy0KKyBweXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNXaW5kb3cucHkgfCAzNCAr KysrKysrKysrKystLS0tLS0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCA0NSBpbnNlcnRpb25zKCsp LCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9zY3JpcHRzLmxpYiBiL2xpYi9z Y3JpcHRzLmxpYgoraW5kZXggZmJkMzYzNGM0Li40ZmQzZmI1YzUgMTAwNzU1CistLS0gYS9saWIv c2NyaXB0cy5saWIKKysrKyBiL2xpYi9zY3JpcHRzLmxpYgorQEAgLTc3LDE3ICs3NywyOCBAQCBQ T0xfU3lzdGVtX1NldEFyY2goKQorIAkjIFVzYWdlOiBQT0xfU3lzdGVtX1NldEFyY2ggKGF1dG98 eDg2fGFtZDY0KQorIAkjIElmIGFtZDY0IGlzIHNwZWNpZmllZCBhbmQgbm90IHN1cHBvcnRlZCwg dGhlIHNjcmlwdCB3aWxsIGVuZAorIAorLQkjICQxID0gQXV0bywgeDg2LCBhbWQ2NAorKwkjICQx ID0gQXV0bywgeDg2LCBhbWQ2NCwgeDg2b242NAorIAkjICQyID0gZGV0ZWN0ZWQsIGlmIHRoZSBy ZXN1bHQgb2YgYW4gYXV0b21hdGljIHNlbGVjdGlvbgorIAorLQlpZiBbICEgIiQxIiA9PSAieDg2 IiBdICYmIFsgISAiJDEiID09ICJhbWQ2NCIgXQorKwlpZiBbICEgIiQxIiA9PSAieDg2IiBdICYm IFsgISAiJDEiID09ICJhbWQ2NCIgXSAmJiBbICEgIiQxIiA9PSAieDg2b242NCIgXQorIAl0aGVu CistCQlbICIkQU1ENjRfQ09NUEFUSUJMRSIgPT0gIlRydWUiIF0gJiYgZXhwb3J0IFBPTF9BUkNI PSJhbWQ2NCIgfHwgZXhwb3J0IFBPTF9BUkNIPSJ4ODYiCisrCSAgaWYgW1sgIiRPU1hfVkVSU0lP TiIgLWdlIDE5IF1dOyB0aGVuCisrCSAgICBleHBvcnQgUE9MX0FSQ0g9Ing4Nm9uNjQiCisrCSAg ZWxzZQorKyAgCQlbICIkQU1ENjRfQ09NUEFUSUJMRSIgPT0gIlRydWUiIF0gJiYgZXhwb3J0IFBP TF9BUkNIPSJhbWQ2NCIgfHwgZXhwb3J0IFBPTF9BUkNIPSJ4ODYiCisrICAJZmkKKyAJZmkKKysK KyAJaWYgWyAiJDEiID09ICJ4ODYiIF0KKyAJdGhlbgorLQkJZXhwb3J0IFBPTF9BUkNIPSJ4ODYi CisrCQlbWyAiJE9TWF9WRVJTSU9OIiAtZ2UgMTkgXV0gJiYgZXhwb3J0IFBPTF9BUkNIPSJ4ODZv bjY0IiB8fCBleHBvcnQgUE9MX0FSQ0g9Ing4NiIKKyAJZmkKKysKKysJaWYgWyAiJDEiID09ICJ4 ODZvbjY0IiBdCisrCXRoZW4KKysJCVtbICIkT1NYX1ZFUlNJT04iIC1nZSAxOSBdXSAmJiBleHBv cnQgUE9MX0FSQ0g9Ing4Nm9uNjQiIHx8IFBPTF9EZWJ1Z19GYXRhbCAieDg2b242NCBpcyBub3Qg c3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtIgorKwlmaQorKworIAlpZiBbICIkMSIgPT0gImFtZDY0 IiBdCisgCXRoZW4KKyAJCVsgIiRBTUQ2NF9DT01QQVRJQkxFIiA9PSAiVHJ1ZSIgXSAmJiBleHBv cnQgUE9MX0FSQ0g9ImFtZDY0IiB8fCBQT0xfRGVidWdfRmF0YWwgImFtZDY0IGlzIG5vdCBzdXBw b3J0ZWQgYnkgeW91ciBzeXN0ZW0iCitkaWZmIC0tZ2l0IGEvbGliL3dpbmUubGliIGIvbGliL3dp bmUubGliCitpbmRleCBkMjdkZTE1MDkuLjQzNDc1ZjMxMCAxMDA3NTUKKy0tLSBhL2xpYi93aW5l LmxpYgorKysrIGIvbGliL3dpbmUubGliCitAQCAtNjc4LDcgKzY3OCw2IEBAIFBPTF9XaW5lX0lu c3RhbGxWZXJzaW9uKCkgeworIAorICAgICBXSU5FX0FERFJFU1M9IiQoZWNobyAiJFdJTkVEQVRB IiB8IGpxICcudXJsJyAtcikiCisgICAgIFBPTF9EZWJ1Z19NZXNzYWdlICJXaW5lIGFkZHJlc3Mg Zm91bmQ6ICRXSU5FX0FERFJFU1MiCistICAgICNXSU5FX0FERFJFU1M9JCgkUE9MX1dHRVQgIiRX SU5FX1NJVEUvJFdJTkVfU0VDVElPTi5sc3QiIC1PLSB8IGdyZXAgIjskcG9sX3dpbmV2ZXJzaW9u OyIgfCB0YWlsIC1uIDEgfCBjdXQgLWQgIjsiIC1mMSkKKyAKKyAgICAgaWYgWyAiJFdJTkVfQURE UkVTUyIgPSAiIiBdICYmIFsgIiRQT0xfQVJDSCIgPSAiYW1kNjQiIF07IHRoZW4KKyAgICAgICBQ T0xfRGVidWdfV2FybmluZyAiV2luZSAkMSBhbWQ2NCBkb2VzIG5vdCBleGlzdC4gU3dpdGNoaW5n IHRvIHg4NiIKK0BAIC02OTcsNyArNjk2LDggQEAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24oKSB7 CisgICAgICAgZmkKKyAKKyAgICAgICBjZCAiJFBPTF9VU0VSX1JPT1QvdG1wIgorLSAgICAgIGZp bGVuYW1lPSIkUFdEL1BsYXlPbkxpbnV4LXdpbmUtJHBvbF93aW5ldmVyc2lvbi0kUE9MX1dJTkVE SVNUUklCVVRJT04tJEFSQ0hfUFJFRklYLSRzaXRlX2FyY2gudGFyLmd6IgorKyAgICAgIGZpbGVu YW1lPSIkUFdELyQoYmFzZW5hbWUgIiRXSU5FX0FERFJFU1MiKSIKKysgICAgICBlY2hvICJMb2Nh bCBmaWxlIG5hbWU6ICRmaWxlbmFtZSIKKyAgICAgICBQT0xfU2V0dXBXaW5kb3dfZG93bmxvYWQg IiQoZXZhbF9nZXR0ZXh0ICJEb3dubG9hZGluZyBXaW5lOiAiKSRwb2xfd2luZXZlcnNpb24iICIk VElUTEUiICIkV0lORV9BRERSRVNTIgorICAgICAgIFBPTF9TZXR1cFdpbmRvd193YWl0X25leHRf c2lnbmFsICIkKGV2YWxfZ2V0dGV4dCAiRG93bmxvYWRpbmcgV2luZTogIikkcG9sX3dpbmV2ZXJz aW9uIiAiJFRJVExFIgorICAgICAgIHNsZWVwIDEKK0BAIC03MDYsNyArNzA2LDcgQEAgUE9MX1dp bmVfSW5zdGFsbFZlcnNpb24oKSB7CisgICAgICAgZWNobyAiU2VydmVyIHNoYTEgOiAkc2hhMSIK KyAgICAgICBlY2hvICJDbGllbnQgc2hhMSA6ICRzaGExX2ZpbGUiCisgCistICAgICAgaWYgWyAh ICIkc2hhMSIgPSAiJHNoYTFfZmlsZSIgXSAmJiBbWyAkT1NYX1ZFUlNJT04gLWx0IDE5IF1dOyB0 aGVuCisrICAgICAgaWYgWyAhICIkc2hhMSIgPSAiJHNoYTFfZmlsZSIgXTsgdGhlbgorICAgICAg ICAgUE9MX1NldHVwV2luZG93X21lc3NhZ2UgIiQoZXZhbF9nZXR0ZXh0ICdUaGUgZG93bmxvYWQg c2VlbXMgdG8gaGF2ZSBmYWlsZWQuJykiICIkVElUTEUiCisgICAgICAgZWxzZQorICAgICAgICAg UE9MX1NldHVwV2luZG93X3dhaXQgIiQoZXZhbF9nZXR0ZXh0ICdFeHRyYWN0aW5nIFdpbmUuLi4n KSIgIiRUSVRMRSIKK2RpZmYgLS1naXQgYS9weXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lv bnNUb29scy5weSBiL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5Citp bmRleCA2OWQ0Y2YyYjIuLjM1OTM1NTk5YiAxMDA2NDQKKy0tLSBhL3B5dGhvbi93aW5lX3ZlcnNp b25zL1dpbmVWZXJzaW9uc1Rvb2xzLnB5CisrKysgYi9weXRob24vd2luZV92ZXJzaW9ucy9XaW5l VmVyc2lvbnNUb29scy5weQorQEAgLTEsNiArMSw1IEBACisgaW1wb3J0IG9zCisgCistZnJvbSBs aWIgaW1wb3J0IFZhcmlhYmxlcworIAorIGRlZiBmZXRjaFVzZXJPUygpOgorICAgICBpZiAob3Mu ZW52aXJvblsiUE9MX09TIl0gPT0gIk1hYyIpOgorQEAgLTEwLDcgKzksMTYgQEAgZGVmIGZldGNo VXNlck9TKCk6CisgICAgIGVsc2U6CisgICAgICAgICByZXR1cm4gImZyZWVic2QiCisgCisrCisg ZGVmIGFyY2hpdGVjdHVyZV9pc19zdXBwb3J0ZWQoYXJjaGl0ZWN0dXJlX25hbWUpOgorKyAgICBp ZiBmZXRjaFVzZXJPUygpID09ICJsaW51eCI6CisrICAgICAgICByZXR1cm4gYXJjaGl0ZWN0dXJl X25hbWUgaW4gWyJ4ODYiLCAiYW1kNjQiXQorKworKyAgICBpZiBmZXRjaFVzZXJPUygpID09ICJk YXJ3aW4iOgorKyAgICAgICAgaWYgaW50KG9zLmVudmlyb24uZ2V0KCJPU1hfVkVSU0lPTiIsIDAp KSA+PSAxOToKKysgICAgICAgICAgICByZXR1cm4gYXJjaGl0ZWN0dXJlX25hbWUgaW4gWyJ4ODZv bjY0IiwgImFtZDY0Il0KKysgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgcmV0dXJuIGFyY2hp dGVjdHVyZV9uYW1lIGluIFsieDg2IiwgImFtZDY0Il0KKyAgICAgcmV0dXJuIFRydWUgIyMgRklY TUUKKyAKKyBkZWYgZmV0Y2hfc3VwcG9ydGVkX2FyY2hzKCk6CitkaWZmIC0tZ2l0IGEvcHl0aG9u L3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5IGIvcHl0aG9uL3dpbmVfdmVyc2lv bnMvV2luZVZlcnNpb25zV2luZG93LnB5CitpbmRleCBiNzZkYjBiMjUuLjJlY2FjM2Y1NSAxMDA3 NTUKKy0tLSBhL3B5dGhvbi93aW5lX3ZlcnNpb25zL1dpbmVWZXJzaW9uc1dpbmRvdy5weQorKysr IGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zV2luZG93LnB5CitAQCAtMzgsMjkg KzM4LDMxIEBACisgY2xhc3MgV2luZVZlcnNpb25zV2luZG93KHd4LkZyYW1lKToKKyAgICAgZGVm IG9uX2F2YWlsYWJsZV93aW5lX3ZlcnNpb25zX2Rvd25sb2FkZWQoc2VsZiwgdmVyc2lvbnNfcGVy X2FyY2hpdGVjdHVyZSk6CisgICAgICAgICBmb3IgYXJjaGl0ZWN0dXJlIGluIHZlcnNpb25zX3Bl cl9hcmNoaXRlY3R1cmU6CistICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10KKy0g ICAgICAgICAgICBmb3IgdmVyc2lvbiBpbiB2ZXJzaW9uc19wZXJfYXJjaGl0ZWN0dXJlW2FyY2hp dGVjdHVyZV06CistICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJzaW9ucy5hcHBlbmQodmVy c2lvblsibmFtZSJdKQorKyAgICAgICAgICAgIGlmIGFyY2hpdGVjdHVyZSBpbiBmZXRjaF9zdXBw b3J0ZWRfYXJjaHMoKToKKysgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25zID0gW10K KysgICAgICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVy ZVthcmNoaXRlY3R1cmVdOgorKyAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25z LmFwcGVuZCh2ZXJzaW9uWyJuYW1lIl0pCisgCistICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNp b25zLnNvcnQoa2V5PW5hdHNvcnQubmF0c29ydF9rZXlnZW4oKSkKKy0gICAgICAgICAgICBhdmFp bGFibGVfdmVyc2lvbnMucmV2ZXJzZSgpCistICAgICAgICAgICAgYXZhaWxhYmxlX3ZlcnNpb25z ID0gYXZhaWxhYmxlX3ZlcnNpb25zWzpdCisrICAgICAgICAgICAgICAgIGF2YWlsYWJsZV92ZXJz aW9ucy5zb3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCisrICAgICAgICAgICAgICAg IGF2YWlsYWJsZV92ZXJzaW9ucy5yZXZlcnNlKCkKKysgICAgICAgICAgICAgICAgYXZhaWxhYmxl X3ZlcnNpb25zID0gYXZhaWxhYmxlX3ZlcnNpb25zWzpdCisgCistICAgICAgICAgICAgZm9yIHZl cnNpb24gaW4gYXZhaWxhYmxlX3ZlcnNpb25zOgorLSAgICAgICAgICAgICAgICB3eC5DYWxsQWZ0 ZXIoc2VsZi5ub3RlYm9vay5hZGRfYXZhaWxhYmxlX3ZlcnNpb24sIGFyY2hpdGVjdHVyZSwgdmVy c2lvbikKKysgICAgICAgICAgICAgICAgZm9yIHZlcnNpb24gaW4gYXZhaWxhYmxlX3ZlcnNpb25z OgorKyAgICAgICAgICAgICAgICAgICAgd3guQ2FsbEFmdGVyKHNlbGYubm90ZWJvb2suYWRkX2F2 YWlsYWJsZV92ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24pCisgCisgICAgIGRlZiBvbl9p bnN0YWxsZWRfd2luZV92ZXJzaW9uc19kb3dubG9hZGVkKHNlbGYsIHZlcnNpb25zX3Blcl9hcmNo aXRlY3R1cmUpOgorICAgICAgICAgZm9yIGFyY2hpdGVjdHVyZSBpbiB2ZXJzaW9uc19wZXJfYXJj aGl0ZWN0dXJlOgorLSAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IFtdCistICAgICAg ICAgICAgZm9yIHZlcnNpb24gaW4gdmVyc2lvbnNfcGVyX2FyY2hpdGVjdHVyZVthcmNoaXRlY3R1 cmVdOgorLSAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMuYXBwZW5kKHZlcnNpb25b Im5hbWUiXSkKKysgICAgICAgICAgICBpZiBhcmNoaXRlY3R1cmUgaW4gZmV0Y2hfc3VwcG9ydGVk X2FyY2hzKCk6CisrICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IFtdCisrICAg ICAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIHZlcnNpb25zX3Blcl9hcmNoaXRlY3R1cmVbYXJj aGl0ZWN0dXJlXToKKysgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5hcHBl bmQodmVyc2lvblsibmFtZSJdKQorIAorLSAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucy5z b3J0KGtleT1uYXRzb3J0Lm5hdHNvcnRfa2V5Z2VuKCkpCistICAgICAgICAgICAgaW5zdGFsbGVk X3ZlcnNpb25zLnJldmVyc2UoKQorLSAgICAgICAgICAgIGluc3RhbGxlZF92ZXJzaW9ucyA9IGlu c3RhbGxlZF92ZXJzaW9uc1s6XQorKyAgICAgICAgICAgICAgICBpbnN0YWxsZWRfdmVyc2lvbnMu c29ydChrZXk9bmF0c29ydC5uYXRzb3J0X2tleWdlbigpKQorKyAgICAgICAgICAgICAgICBpbnN0 YWxsZWRfdmVyc2lvbnMucmV2ZXJzZSgpCisrICAgICAgICAgICAgICAgIGluc3RhbGxlZF92ZXJz aW9ucyA9IGluc3RhbGxlZF92ZXJzaW9uc1s6XQorIAorLSAgICAgICAgICAgIGZvciB2ZXJzaW9u IGluIGluc3RhbGxlZF92ZXJzaW9uczoKKy0gICAgICAgICAgICAgICAgd3guQ2FsbEFmdGVyKHNl bGYubm90ZWJvb2suYWRkX2luc3RhbGxlZF92ZXJzaW9uLCBhcmNoaXRlY3R1cmUsIHZlcnNpb24p CisrICAgICAgICAgICAgICAgIGZvciB2ZXJzaW9uIGluIGluc3RhbGxlZF92ZXJzaW9uczoKKysg ICAgICAgICAgICAgICAgICAgIHd4LkNhbGxBZnRlcihzZWxmLm5vdGVib29rLmFkZF9pbnN0YWxs ZWRfdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCB2ZXJzaW9uKQorIAorICAgICBkZWYgaGFuZGxlX2Vy cm9yKHNlbGYsIGVycm9yKToKKyAgICAgICAgIHByaW50KGVycm9yKQorCitGcm9tIDc0OTkxN2Iw ZDBjNmQ0MzlmNzEwMDRmZGQ5YmM1Njk5MmJiOTFmMTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBRdWVudGluIFBBUklTIDxnaXRAcXVlbnRpbi5wYXJpcz4KK0RhdGU6IFN1biwgMjQg SmFuIDIwMjEgMTU6NDY6NDQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxNy8zN10gUmVhZmN0b3Jp bmcgd2luZSB2ZXJzaW9uIG1hbmFnZXIgY29kZQorCistLS0KKyBDSEFOR0VMT0cubWQgfCAzICsr KworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0NIQU5H RUxPRy5tZCBiL0NIQU5HRUxPRy5tZAoraW5kZXggY2RlMmQ4MmM0Li43MzVmNjExNGEgMTAwNjQ0 CistLS0gYS9DSEFOR0VMT0cubWQKKysrKyBiL0NIQU5HRUxPRy5tZAorQEAgLTEsMyArMSw2IEBA CisrIyA0LjQuMiAKKysqIFJlZmFjdG9yZWQgd2luZSB2ZXJzaW9uIHdpbmRvdyAKKysKKyAjIDQu NAorICogUHl0aG9uIDMgc3VwcG9ydCAKKyAKKworRnJvbSBjNTlkMDNiNTcxNzE0M2I0MTAyYjcw MTU5YTBkMjE4NTA0MjJjZTY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU20wazNy IDwxMTU1ODQ5OSs1bTBrM3JAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogVGh1LCAz IEZlYiAyMDIyIDIyOjQxOjA5IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0ggMTgvMzddIFVwZGF0ZSBw bGF5b25saW51eC5weQorCitBdm9pZCBzdHJpbmdzIGluIHZlcnNpb24xIGFuZCB2ZXJzaW9uMiB2 YXJpYWJsZXMgd2l0aCBpc251bWVyaWMoKSBmdW5jdGlvbiwgYW5kIGhhbmRsaW5nIGVycm9yIHdp dGggdHJ5LWV4Y2VwdCBibG9jay4KKy0tLQorIHB5dGhvbi9saWIvcGxheW9ubGludXgucHkgfCAx MCArKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkgYi9weXRob24v bGliL3BsYXlvbmxpbnV4LnB5CitpbmRleCAzZTg3ZDkwYWEuLjk2MDcwN2Q5MSAxMDA3NTUKKy0t LSBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKKysrKyBiL3B5dGhvbi9saWIvcGxheW9ubGlu dXgucHkKK0BAIC0yNzgsMTEgKzI3OCwxNyBAQCBkZWYgVmVyc2lvbkxvd2VyKHZlcnNpb24xLCB2 ZXJzaW9uMik6CisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHJldHVybiBGYWxzZQorIAor LSAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3Bs aXQoIi4iKVs6M10gXQorKyAgICB0cnk6CisrICAgICAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0 KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4iKSBdCisrICAgIGV4Y2VwdCBWYWx1 ZUVycm9yOgorKyAgICAgICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZl cnNpb24xWzBdLnNwbGl0KCIuIikgaWYgZGlnaXQuaXNudW1lcmljKCkgXQorICAgICB3aGlsZSBs ZW4odmVyc2lvbjEpIDwgMzoKKyAgICAgICAgIHZlcnNpb24xLmFwcGVuZCgwKQorIAorLSAgICB2 ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4i KVs6M10gXQorKyAgICB0cnk6CisrICAgICAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3Ig ZGlnaXQgaW4gdmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBdCisrICAgIGV4Y2VwdCBWYWx1ZUVycm9y OgorKyAgICAgICAgdmVyc2lvbjIgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24y WzBdLnNwbGl0KCIuIikgaWYgZGlnaXQuaXNudW1lcmljKCkgXQorICAgICB3aGlsZSBsZW4odmVy c2lvbjIpIDwgMzoKKyAgICAgICAgIHZlcnNpb24yLmFwcGVuZCgwKQorIAorCitGcm9tIDIxNmM0 NDg5YWQ0MTU0NmM2MTVmY2Q1NzMyZDZjOWM1YzhmMzE1MzAgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBTbTBrM3IgPDExNTU4NDk5KzVtMGszckB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5j b20+CitEYXRlOiBUaHUsIDMgRmViIDIwMjIgMjI6NDc6NTQgLTAzMDAKK1N1YmplY3Q6IFtQQVRD SCAxOS8zN10gVXBkYXRlIHBsYXlvbmxpbnV4LnB5CisKK1dvcmthcm91bmQgZm9yIG5vbi1udW1l cmljIGNoYXJhY3RlcnMgaW4gbGlzdCB2ZXJzaW9uMSBhbmQgdmVyc2lvbjIgd2l0aG91dCBlcnJv ciBoYW5kbGluZyB0byBrZWVwIHNpbXBsZS4KKy0tLQorIHB5dGhvbi9saWIvcGxheW9ubGludXgu cHkgfCAxMCArKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgOCBk ZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkgYi9w eXRob24vbGliL3BsYXlvbmxpbnV4LnB5CitpbmRleCA5NjA3MDdkOTEuLmZhOWI5MGZiOSAxMDA3 NTUKKy0tLSBhL3B5dGhvbi9saWIvcGxheW9ubGludXgucHkKKysrKyBiL3B5dGhvbi9saWIvcGxh eW9ubGludXgucHkKK0BAIC0yNzgsMTcgKzI3OCwxMSBAQCBkZWYgVmVyc2lvbkxvd2VyKHZlcnNp b24xLCB2ZXJzaW9uMik6CisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHJldHVybiBGYWxz ZQorIAorLSAgICB0cnk6CistICAgICAgICB2ZXJzaW9uMSA9IFsgaW50KGRpZ2l0KSBmb3IgZGln aXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4iKSBdCistICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgor LSAgICAgICAgdmVyc2lvbjEgPSBbIGludChkaWdpdCkgZm9yIGRpZ2l0IGluIHZlcnNpb24xWzBd LnNwbGl0KCIuIikgaWYgZGlnaXQuaXNudW1lcmljKCkgXQorKyAgICB2ZXJzaW9uMSA9IFsgaW50 KGRpZ2l0KSBmb3IgZGlnaXQgaW4gdmVyc2lvbjFbMF0uc3BsaXQoIi4iKSBpZiBkaWdpdC5pc251 bWVyaWMoKSBdCisgICAgIHdoaWxlIGxlbih2ZXJzaW9uMSkgPCAzOgorICAgICAgICAgdmVyc2lv bjEuYXBwZW5kKDApCisgCistICAgIHRyeToKKy0gICAgICAgIHZlcnNpb24yID0gWyBpbnQoZGln aXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpIF0KKy0gICAgZXhjZXB0IFZh bHVlRXJyb3I6CistICAgICAgICB2ZXJzaW9uMiA9IFsgaW50KGRpZ2l0KSBmb3IgZGlnaXQgaW4g dmVyc2lvbjJbMF0uc3BsaXQoIi4iKSBpZiBkaWdpdC5pc251bWVyaWMoKSBdCisrICAgIHZlcnNp b24yID0gWyBpbnQoZGlnaXQpIGZvciBkaWdpdCBpbiB2ZXJzaW9uMlswXS5zcGxpdCgiLiIpIGlm IGRpZ2l0LmlzbnVtZXJpYygpIF0KKyAgICAgd2hpbGUgbGVuKHZlcnNpb24yKSA8IDM6CisgICAg ICAgICB2ZXJzaW9uMi5hcHBlbmQoMCkKKyAKKworRnJvbSA0ZTMyMzVhNWJiOWIyZGY2MWYyODdm OTMyNjg1NjU0NWY5ZTUzNWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRWR1YXJk byBNb3phcnQgZGUgT2xpdmVpcmEKKyA8Mjk3NDg5NStlZHVhcmRvbW96YXJ0QHVzZXJzLm5vcmVw bHkuZ2l0aHViLmNvbT4KK0RhdGU6IFRodSwgMTIgTWF5IDIwMjIgMDk6MTU6NTkgLTAzMDAKK1N1 YmplY3Q6IFtQQVRDSCAyMC8zN10gRml4IFhRdWFydHogVVJMCisKK1hRdWFydHogZmFpbHMgdG8g aW5zdGFsbCBpbnRvIG1hY09TCistLS0KKyBiYXNoL3N0YXJ0dXBfYWZ0ZXJfc2VydmVyIHwgMiAr LQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZm IC0tZ2l0IGEvYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlciBiL2Jhc2gvc3RhcnR1cF9hZnRlcl9z ZXJ2ZXIKK2luZGV4IGFhMDdhNGVlOS4uZTc0ODYzMzljIDEwMDc1NQorLS0tIGEvYmFzaC9zdGFy dHVwX2FmdGVyX3NlcnZlcgorKysrIGIvYmFzaC9zdGFydHVwX2FmdGVyX3NlcnZlcgorQEAgLTMw LDcgKzMwLDcgQEAgZXhwb3J0IFhRVUFSVFpfVkVSU0lPTj0iMi43LjExIgorIGluc3RhbGxfeDEx KCkKKyB7CisgCistCVhRdWFydHpVcmw9Imh0dHA6Ly9kbC5iaW50cmF5LmNvbS94cXVhcnR6L2Rv d25sb2Fkcy9YUXVhcnR6LSRYUVVBUlRaX1ZFUlNJT04uZG1nIgorKwlYUXVhcnR6VXJsPSJodHRw czovL2dpdGh1Yi5jb20vWFF1YXJ0ei9YUXVhcnR6L3JlbGVhc2VzL2Rvd25sb2FkL1hRdWFydHot JFhRVUFSVFpfVkVSU0lPTi9YUXVhcnR6LSRYUVVBUlRaX1ZFUlNJT04uZG1nIgorIAlGaWxlUHJl Zml4PSJYUXVhcnR6IgorIAorIAlTVEVQX1RJVExFPSJYUXVhcnR6IgorCitGcm9tIDhmZjAxZjM0 MTkyNWEzNjczZDRhMWRlODUxMmQ5ZTIzNzJhNGQ5ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBFZHVhcmRvIE1vemFydCBkZSBPbGl2ZWlyYQorIDwyOTc0ODk1K2VkdWFyZG9tb3ph cnRAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogVGh1LCAxMiBNYXkgMjAyMiAwOTo1 MzowOSAtMDMwMAorU3ViamVjdDogW1BBVENIIDIxLzM3XSBVcGRhdGUgbG5nLnB5CisKK0ZpeCBw bGF5b25saW51eC1iYXNoIGV4ZWMgb24gbWFjT1MgTW9udGVyZXkKKy0tLQorIHB5dGhvbi9saWIv bG5nLnB5IHwgMTUgKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9u cygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9saWIvbG5nLnB5IGIv cHl0aG9uL2xpYi9sbmcucHkKK2luZGV4IGEzOTBkOTIwYi4uNWZiMTYxYzNjIDEwMDc1NQorLS0t IGEvcHl0aG9uL2xpYi9sbmcucHkKKysrKyBiL3B5dGhvbi9saWIvbG5nLnB5CitAQCAtMTgsMTIg KzE4LDE1IEBAIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICBsYW5ndWFnZXMgPSBv cy5saXN0ZGlyKFZhcmlhYmxlcy5wbGF5b25saW51eF9lbnYrJy9sYW5nL2xvY2FsZScpCisgCisg ICAgICAgICBpZihvcy5lbnZpcm9uWyJQT0xfT1MiXSA9PSAiTWFjIik6CistICAgICAgICAgICAg d3hMb2NhbGUgPSB3eC5Mb2NhbGUoKS5GaW5kTGFuZ3VhZ2VJbmZvKG9zLmVudmlyb25bIlJMQU5H Il0pCistCistICAgICAgICAgICAgaWYgd3hMb2NhbGUgaXMgbm90IE5vbmU6CistICAgICAgICAg ICAgICAgIGxhbmdpZCA9IHd4LkxvY2FsZSgpLkZpbmRMYW5ndWFnZUluZm8ob3MuZW52aXJvblsi UkxBTkciXSkuTGFuZ3VhZ2UKKy0gICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBs YW5naWQgPSB3eC5MQU5HVUFHRV9ERUZBVUxUCisrICAgICAgICAgICAgdHJ5OgorKyAgICAgICAg ICAgICAgICB3eExvY2FsZSA9IHd4LkxvY2FsZSgpLkZpbmRMYW5ndWFnZUluZm8ob3MuZW52aXJv blsiUkxBTkciXSkKKysKKysgICAgICAgICAgICAgICAgaWYgd3hMb2NhbGUgaXMgbm90IE5vbmU6 CisrICAgICAgICAgICAgICAgICAgICBsYW5naWQgPSB3eC5Mb2NhbGUoKS5GaW5kTGFuZ3VhZ2VJ bmZvKG9zLmVudmlyb25bIlJMQU5HIl0pLkxhbmd1YWdlCisrICAgICAgICAgICAgICAgIGVsc2U6 CisrICAgICAgICAgICAgICAgICAgICBsYW5naWQgPSB3eC5MQU5HVUFHRV9ERUZBVUxUCisrICAg ICAgICAgICAgZXhjZXB0OgorKyAgICAgICAgICAgICAgICBsYW5naWQgPSB3eC5MQU5HVUFHRV9E RUZBVUxUIAorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBsYW5naWQgPSB3eC5MQU5HVUFH RV9ERUZBVUxUCisgCisKK0Zyb20gOWEyN2M4ZjRmMWMxNDU4Mzg4YWUwNDY4Y2NkYmQ3NTgxNjlh OGVlNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEVkdWFyZG8gTW96YXJ0IGRlIE9s aXZlaXJhCisgPDI5NzQ4OTUrZWR1YXJkb21vemFydEB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+ CitEYXRlOiBUaHUsIDEyIE1heSAyMDIyIDE1OjUzOjU0IC0wMzAwCitTdWJqZWN0OiBbUEFUQ0gg MjIvMzddIFVwZGF0ZSBNYWtlZmlsZSB0byBtYWNPUworCitOb3cgbWFjT1MgY2FuIGFsc28gcnVu IHRoZSBtYWtlIGNvbW1hbmQKKy0tLQorIE1ha2VmaWxlIHwgMTggKysrKysrKysrKysrKystLS0t CisgMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2Rp ZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBhOGQ4MWI4OTIuLjExNWQyNjk4 YyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTIwLDkgKzIwLDE4 IEBACisgIyBERVNURElSIC0tIFdoZXJlIHlvdSB3YW50IHRvIGluc3RhbGwKKyAjCisgCistQ0ZM QUdTID89IC1PMgorK2lmZXEgKCQoc2hlbGwgdW5hbWUgLXMpLERhcndpbikKKysgICAgQ0ZMQUdT ID89IC1PMiAtSS9vcHQvWDExL2luY2x1ZGUKKysgICAgTEZMQUdTID89IC1ML29wdC9YMTEvbGli IC1sR0wgLWxYMTEKKysgICAgUFlUSE9OID0gcHl0aG9uMi43IC1tIHB5X2NvbXBpbGUKKysgICAg U0VEID0gc2VkIC1pICcnIC1lCisrZWxzZQorKyAgICBDRkxBR1MgPz0gLU8yIAorKyAgICBDRkxB R1MgPz0gLWxHTCAtbFgxMQorKyAgICBQWVRIT04gPSBweXRob24yIC1tIHB5X2NvbXBpbGUKKysg ICAgU0VEID0gc2VkIC1pCisrZW5kaWYKKyBDQyA9IGdjYyAkKENGTEFHUykKKy1QWVRIT04gPSBw eXRob24yIC1tIHB5X2NvbXBpbGUKKyBHWklQID0gZ3ppcAorIFNIRUxMIDo9IC9iaW4vYmFzaAor IAorQEAgLTQ1LDE0ICs1NCwxNCBAQCBjbGVhbjoKKyAJJChSTSkgLi9DaGFuZ2VMb2cKKyAKKyBi dWlsZDoKKy0JJChDQykgLi9zcmMvY2hlY2tfZGlyZWN0X3JlbmRlcmluZy5jIC1vIC4vYmluL3Bs YXlvbmxpbnV4LWNoZWNrX2RkIC1sR0wgLWxYMTEKKysJJChDQykgLi9zcmMvY2hlY2tfZGlyZWN0 X3JlbmRlcmluZy5jIC1vIC4vYmluL3BsYXlvbmxpbnV4LWNoZWNrX2RkICQoTEZMQUdTKQorIAkk KFBZVEhPTikgLi9weXRob24vKi5weQorIAkkKFBZVEhPTikgLi9weXRob24vbGliLyoucHkKKyAJ ZWNobyAtZSAnIyEvYmluL2Jhc2hcbkdES19CQUNLRU5EPXgxMSAke3NoYXJlZGlyfS9wbGF5b25s aW51eC9wbGF5b25saW51eCAiJCRAIlxuZXhpdCAwJyA+IC4vYmluL3BsYXlvbmxpbnV4CisgCWVj aG8gLWUgJyMhL2Jpbi9iYXNoXG4ke3NoYXJlZGlyfS9wbGF5b25saW51eC9wbGF5b25saW51eC1w a2cgIiQkQCJcbmV4aXQgMCcgPiAuL2Jpbi9wbGF5b25saW51eC1wa2cKKyAJY2htb2QgK3ggLi9i aW4vcGxheW9ubGludXgKKyAJY2htb2QgK3ggLi9iaW4vcGxheW9ubGludXgtcGtnCistCXNlZCAt aSAncy9cKFxbIkRFQklBTl9QQUNLQUdFIlxdXHMqPVxzKlwpIkZBTFNFIi9cMSJUUlVFIi8nIFwK KysJJChTRUQpICdzL1woXFsiREVCSUFOX1BBQ0tBR0UiXF1ccyo9XHMqXCkiRkFMU0UiL1wxIlRS VUUiLycgXAorIAkJLi9weXRob24vbGliL1ZhcmlhYmxlcy5weQorIAorIGluc3RhbGw6CitAQCAt ODEsMyArOTAsNCBAQCBjaGFuZ2Vsb2c6CisgCShHSVRfRElSPS5naXQgZ2l0IGxvZyA+IC5jaGFu Z2Vsb2cudG1wICYmIG12IC5jaGFuZ2Vsb2cudG1wIENoYW5nZUxvZzsgcm0gLWYgLmNoYW5nZWxv Zy50bXApIHx8ICh0b3VjaCBDaGFuZ2VMb2c7IGVjaG8gJ2dpdCBkaXJlY3Rvcnkgbm90IGZvdW5k OiBpbnN0YWxsaW5nIHBvc3NpYmx5IGVtcHR5IGNoYW5nZWxvZy4nID4mMikKKyAKKyAuUEhPTlk6 IGFsbCBjbGVhbiBidWlsZCBpbnN0YWxsIGNoYW5nZWxvZworKworCitGcm9tIDVjNzNlZDFlZTIz YmEyZTUxNzAxMDk0ZTM2NmY1Y2JjZWQxZmViYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBNYXRoaWV1IFBhcmVudCA8bWF0aC5wYXJlbnRAZ21haWwuY29tPgorRGF0ZTogVHVlLCAy MCBEZWMgMjAyMiAxMDoyMDoyNSArMDEwMAorU3ViamVjdDogW1BBVENIIDIzLzM3XSBVc2UgbW9y ZSBwb3dlcmZ1bCBkaXNjcmV0ZSBHUFUgaWYgYXZhaWxhYmxlCisKK1NlZSBodHRwczovL3NwZWNp ZmljYXRpb25zLmZyZWVkZXNrdG9wLm9yZy9kZXNrdG9wLWVudHJ5LXNwZWMvbGF0ZXN0L2FyMDFz MDYuaHRtbAorLS0tCisgZXRjL1BsYXlPbkxpbnV4LmRlc2t0b3AgfCAxICsKKyAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2V0Yy9QbGF5T25MaW51eC5kZXNr dG9wIGIvZXRjL1BsYXlPbkxpbnV4LmRlc2t0b3AKK2luZGV4IDQ5MDEwOGMxMS4uNTNjZDQyZjk0 IDEwMDY0NAorLS0tIGEvZXRjL1BsYXlPbkxpbnV4LmRlc2t0b3AKKysrKyBiL2V0Yy9QbGF5T25M aW51eC5kZXNrdG9wCitAQCAtNiwzICs2LDQgQEAgVHlwZT1BcHBsaWNhdGlvbgorIEV4ZWM9cGxh eW9ubGludXggJUYKKyBJY29uPXBsYXlvbmxpbnV4CisgQ2F0ZWdvcmllcz1VdGlsaXR5O0VtdWxh dG9yOworK1ByZWZlcnNOb25EZWZhdWx0R1BVPXRydWUKKworRnJvbSA3M2ZmMWRmOTI0YzFiN2Jk YzRlOTNhNWEzMjhiMjg3MDk3ZDhjY2M0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTog YW5kcmV5IDwzMjk4ODMwNSt2b3N0b2swMUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRl OiBTYXQsIDMxIERlYyAyMDIyIDIzOjE2OjE4ICswMzAwCitTdWJqZWN0OiBbUEFUQ0ggMjQvMzdd IEJVRyBGSVg6IENGTEFHUyByZW5hbWVkIHRvIExGTEFHUyBpbiBNYWtlZmlsZS4KKworLS0tCisg TWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0 aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAxMTVkMjY5 OGMuLjRjMDhhOTZmZSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAg LTI3LDcgKzI3LDcgQEAgaWZlcSAoJChzaGVsbCB1bmFtZSAtcyksRGFyd2luKQorICAgICBTRUQg PSBzZWQgLWkgJycgLWUKKyBlbHNlCisgICAgIENGTEFHUyA/PSAtTzIgCistICAgIENGTEFHUyA/ PSAtbEdMIC1sWDExCisrICAgIExGTEFHUyA/PSAtbEdMIC1sWDExCisgICAgIFBZVEhPTiA9IHB5 dGhvbjIgLW0gcHlfY29tcGlsZQorICAgICBTRUQgPSBzZWQgLWkKKyBlbmRpZgorCitGcm9tIGQ2 Y2Q3ZmY2OTIyOGRhODhhZDkwNzQzYzdkNjUyMjgxOTQ5MzgwMzYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBOcmV6aW5vcm4gPG5yZXppbm9ybkBnbWFpbC5jb20+CitEYXRlOiBNb24s IDE5IEp1biAyMDIzIDA3OjQ5OjIzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjUvMzddIEZpeCBN YWMgV0lORSBWZXJzaW9uRmV0Y2hlciBhbmQgYnVtcCB2ZXJzaW9uaW5nIHRvCisgNC40LjMKKwor LS0tCisgcHl0aG9uL2xpYi9WYXJpYWJsZXMucHkgICAgICAgICAgICAgICAgICAgICB8IDUgKysr LS0KKyBweXRob24vd2luZV92ZXJzaW9ucy9XaW5lVmVyc2lvbnNGZXRjaGVyLnB5IHwgNyArKysr Ky0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisK K2RpZmYgLS1naXQgYS9weXRob24vbGliL1ZhcmlhYmxlcy5weSBiL3B5dGhvbi9saWIvVmFyaWFi bGVzLnB5CitpbmRleCBkYmUyYWI3MTkuLjI2ZTIzNGE1MyAxMDA3NTUKKy0tLSBhL3B5dGhvbi9s aWIvVmFyaWFibGVzLnB5CisrKysgYi9weXRob24vbGliL1ZhcmlhYmxlcy5weQorQEAgLTE3LDcg KzE3LDcgQEAKKyBvcy5lbnZpcm9uWyJQT0xfUE9SVCJdID0gIjAiCisgb3MuZW52aXJvblsiUExB WU9OTElOVVgiXSA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykr Ii8uLi8uLi8uLi8iKQorIG9zLmVudmlyb25bIlNJVEUiXSA9ICJodHRwOi8vcmVwb3NpdG9yeS5w bGF5b25saW51eC5jb20iCistb3MuZW52aXJvblsiVkVSU0lPTiJdID0gIjQuNC4xIgorK29zLmVu dmlyb25bIlZFUlNJT04iXSA9ICI0LjQuMyIKKyBvcy5lbnZpcm9uWyJQT0xfSUQiXSA9IHN0cihy YW5kb20ucmFuZGludCgxLCAxMDAwMDAwMDApKQorIG9zLmVudmlyb25bIkdFQ0tPX1NJVEUiXSA9 ICJodHRwOi8vd2luZS5wbGF5b25saW51eC5jb20vZ2Vja28iCisgb3MuZW52aXJvblsiTU9OT19T SVRFIl0gPSAiaHR0cDovL3dpbmUucGxheW9ubGludXguY29tL21vbm8iCitAQCAtMzksNiArMzks NyBAQAorICAgICB3aW5kb3dzX2FkZF9wbGF5b25tYWMgPSAxCisgICAgIHdpZGdldF9ib3JkZXJz ID0gd3guU0lNUExFX0JPUkRFUgorICAgICBvc19uYW1lID0gImRhcndpbiIKKysgICAgY2FfZmls ZSA9ICcuLi8uLi9saWIvcHl0aG9uMy44L2NlcnRpZmkvY2FjZXJ0LnBlbScgCisgICAgIG9zLmVu dmlyb25bIlBPTF9XR0VUIl0gPSAid2dldCAtLXByZWZlci1mYW1pbHk9SVB2NCAtcSAtLW5vLWNo ZWNrLWNlcnRpZmljYXRlIgorIAorICMgVmFyaWFibGVzIFBsYXlPbkxpbnV4CitAQCAtMTE5LDcg KzEyMCw3IEBACisgCisgICAgIG9zLmVudmlyb25bIlBBVEgiXSA9IG9zLmVudmlyb25bIlBMQVlP TkxJTlVYIl0rIi8uLi91bml4L3dpbmUvYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJd KyIvLi4vdW5peC9pbWFnZV9tYWdpY2svYmluOiIgKyBvcy5lbnZpcm9uWyJQTEFZT05MSU5VWCJd KyIvLi4vdW5peC90b29scy9iaW4vOiIgKyBvcy5lbnZpcm9uWyJQQVRIIl0KKyAKKy0gICAgb3Mu ZW52aXJvblsiV1JJVEVfTEQiXSA9IG9zLmVudmlyb25bIkxEX0xJQlJBUllfUEFUSCJdCisrICAg IG9zLmVudmlyb25bIldSSVRFX0xEIl0gPSBvcy5lbnZpcm9uWyJMRF9MSUJSQVJZX1BBVEgiXSAr ICI6IiArIG9zLmVudmlyb25bIlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3dpbmUvbGliIgorICAg ICBvcy5lbnZpcm9uWyJEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCJdID0gIG9zLmVudmlyb25b IlBMQVlPTkxJTlVYIl0rIi8uLi91bml4L3dpbmUvbGliIgorICAgICBvcy5lbnZpcm9uWyJXUklU RV9EWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCJdID0gIG9zLmVudmlyb25bIlBMQVlPTkxJTlVY Il0rIi8uLi91bml4L3dpbmUvbGliIgorICAgICBvcy5lbnZpcm9uWyJGUkVFVFlQRV9QUk9QRVJU SUVTIl09InRydWV0eXBlOmludGVycHJldGVyLXZlcnNpb249MzUiCitkaWZmIC0tZ2l0IGEvcHl0 aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weSBiL3B5dGhvbi93aW5lX3Zl cnNpb25zL1dpbmVWZXJzaW9uc0ZldGNoZXIucHkKK2luZGV4IGZkNzU4Nzk4ZS4uNjE2MDUyMjdj IDEwMDY0NAorLS0tIGEvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5w eQorKysrIGIvcHl0aG9uL3dpbmVfdmVyc2lvbnMvV2luZVZlcnNpb25zRmV0Y2hlci5weQorQEAg LTE4LDEwICsxOCwxMyBAQCBkZWYgZmV0Y2hfYWxsX2F2YWlsYWJsZV93aW5lX3ZlcnNpb24oc2Vs ZiwgY2FsbGJhY2ssIGVycm9yKToKKyAKKyAgICAgZGVmIF9zeW5jX2ZldGNoX2FsbF9hdmFpbGFi bGVfd2luZV92ZXJzaW9ucyhzZWxmLCBjYWxsYmFjaywgZXJyb3IpOgorICAgICAgICAgd2luZV92 ZXJzaW9uX3VybCA9ICJodHRwczovL3Bob2VuaWNpcy5wbGF5b25saW51eC5jb20vaW5kZXgucGhw L3dpbmU/b3M9JXMiICUgc2VsZi5vcGVyYXRpbmdfc3lzdGVtCistICAgICAgICBwcmludCgiRG9u d2xvYWRpbmcgJXMgIiAlIHdpbmVfdmVyc2lvbl91cmwpCisrICAgICAgICBwcmludCgiRG93bmxv YWRpbmcgJXMgIiAlIHdpbmVfdmVyc2lvbl91cmwpCisgICAgICAgICB0cnk6CisgICAgICAgICAg ICAgcmVxdWVzdCA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3Qod2luZV92ZXJzaW9uX3VybCwgTm9u ZSwgeydVc2VyLUFnZW50JzogVmFyaWFibGVzLnVzZXJBZ2VudH0pCistICAgICAgICAgICAgaGFu ZGxlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXF1ZXN0LCB0aW1lb3V0PTUpCisrICAgICAg ICAgICAgaWYgc2VsZi5vcGVyYXRpbmdfc3lzdGVtID09ICdkYXJ3aW4nOgorKyAgICAgICAgICAg ICAgICBoYW5kbGUgPSB1cmxsaWIucmVxdWVzdC51cmxvcGVuKHJlcXVlc3QsIGNhZmlsZT0nLi4v Li4vbGliL3B5dGhvbjMuOC9jZXJ0aWZpL2NhY2VydC5wZW0nLCB0aW1lb3V0PTUpCisrICAgICAg ICAgICAgZWxzZToKKysgICAgICAgICAgICAgICAgaGFuZGxlID0gdXJsbGliLnJlcXVlc3QudXJs b3BlbihyZXF1ZXN0LCB0aW1lb3V0PTUpCisgICAgICAgICAgICAgY2FsbGJhY2soc2VsZi5fY29u dmVydF9waG9lbmljaXNfd2luZV92ZXJzaW9uc190b192NChqc29uLmxvYWQoaGFuZGxlKSkpCisg ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgZXJyb3IodHJhY2Vi YWNrLmZvcm1hdF9leGMoKSkKKworRnJvbSBkMzJjMDEyYWM3NGI2YjA1ZGY4MTVkYWM1ZGE5NDhi NjQ4ZDA5OTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkRyLiBOaWNrIiA8ZGFz LWludGVuc2l0eUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+CitEYXRlOiBTdW4sIDIgSnVsIDIw MjMgMTc6MzE6MjYgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyNi8zN10gRml4ZWQgZGVidWcgbWVz c2FnZSBpbiBQT0xfV2luZV9TZXRWZXJzaW9uRW52IHRvIGxvZworIHVzaW5nIFBPTF9EZWJ1Z19N ZXNzYWdlCisKKy0tLQorIGxpYi93aW5lLmxpYiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBp bnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi93aW5lLmxpYiBi L2xpYi93aW5lLmxpYgoraW5kZXggNDM0NzVmMzEwLi4zYmYxMTg3NjUgMTAwNzU1CistLS0gYS9s aWIvd2luZS5saWIKKysrKyBiL2xpYi93aW5lLmxpYgorQEAgLTgzNyw3ICs4MzcsNyBAQCBQT0xf V2luZV9TZXRWZXJzaW9uRW52KCkgeworICAgICAgICAgUE9MX1dpbmVfSW5zdGFsbFZlcnNpb24g IiRQT0xfV0lORVZFUlNJT04iCisgICAgICAgICBbWyAiJD8iID09IDIgXV0gJiYgcmV0dXJuIDAK KyAgICAgICBmaQorLSAgICAgIGVjaG8gIlNldHRpbmcgcGF0aHMuLi4iCisrICAgICAgUE9MX0Rl YnVnX01lc3NhZ2UgIlNldHRpbmcgcGF0aHMuLi4iCisgICAgICAgZXhwb3J0IFBBVEg9IiRXSU5F RElSLyRQT0xfV0lORVZFUlNJT04vYmluLzokUEFUSCIKKyAgICAgICBbICIkUE9MX09TIiA9ICJN YWMiIF0gJiYgZXhwb3J0IERZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIPSIkV0lORURJUi8kUE9M X1dJTkVWRVJTSU9OL2xpYi8iCisgICAgICAgZXhwb3J0IEZSRUVUWVBFX1BST1BFUlRJRVM9InRy dWV0eXBlOmludGVycHJldGVyLXZlcnNpb249MzUiCisKK0Zyb20gZmI4ODEzNzI4Njc5OGQ0OTI2 OTFhOTVlYTBjMzZiMzE0OGZkMDI5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpp LUhvIExlZSA8c2VhcmNoNUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEwIEF1ZyAyMDIzIDE3OjI5 OjE5ICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMjcvMzddIFBhdGNoIGZ1bmN0aW9uIGV4ZWN1dGlv biBlcnJvciBjYXVzZWQgYnkgdGhlIGRlbGV0aW9uCisgb2YgdGhlIHdoaWNoIGNvbW1hbmQgaW4g RGViaWFuIDEyCisKKy0tLQorIGJhc2gvZmluZF9weXRob24gICAgIHwgMiArLQorIGxpYi9wbGF5 b25saW51eC5saWIgIHwgOCArKysrLS0tLQorIGxpYi9zY3JpcHRzLmxpYiAgICAgIHwgMiArLQor IGxpYi92YXJpYWJsZXMgICAgICAgIHwgNiArKystLS0KKyBsaWIvd2luZS5saWIgICAgICAgICB8 IDQgKystLQorIHB5dGhvbi9tYWlud2luZG93LnB5IHwgMyArKy0KKyA2IGZpbGVzIGNoYW5nZWQs IDEzIGluc2VydGlvbnMoKyksIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmFzaC9m aW5kX3B5dGhvbiBiL2Jhc2gvZmluZF9weXRob24KK2luZGV4IDgxMWI2YzA0NC4uNWNjZjE5MTI1 IDEwMDc1NQorLS0tIGEvYmFzaC9maW5kX3B5dGhvbgorKysrIGIvYmFzaC9maW5kX3B5dGhvbgor QEAgLTI2LDcgKzI2LDcgQEAgc2VhcmNoX3B5dGhvbiAoKSB7CisgCQlmaSAgICAgICAgICAgICAg ICAgICAKKyAJCisgCQllY2hvIC1uICJMb29raW5nIGZvciAkUE9MX1BZVEhPTi4uLiAiIDE+JjIK Ky0JCWlmIFsgIiQod2hpY2ggJFBPTF9QWVRIT04pIiBdOyB0aGVuCisrCQlpZiBbICIkKGNvbW1h bmQgLXYgJFBPTF9QWVRIT04pIiBdOyB0aGVuCisgCQkJbG9jYWwgVmVyc2lvbj0kKCRQT0xfUFlU SE9OIC0tdmVyc2lvbiAyPiYxIHx0YWlsIC1uIDF8c2VkIC1lICdzL15QeXRob24gLy8nKQorIAkJ CWVjaG8gLW4gIiRWZXJzaW9uIC0gIiAxPiYyCisgCQkJY2FzZSAiJFZlcnNpb24iIGluCitkaWZm IC0tZ2l0IGEvbGliL3BsYXlvbmxpbnV4LmxpYiBiL2xpYi9wbGF5b25saW51eC5saWIKK2luZGV4 IDEwYmU2YjQ4OC4uZDI4NDY2ZjhlIDEwMDc1NQorLS0tIGEvbGliL3BsYXlvbmxpbnV4LmxpYgor KysrIGIvbGliL3BsYXlvbmxpbnV4LmxpYgorQEAgLTkxNiwxNiArOTE2LDE2IEBAIFBPTF9TdWRv KCkKKyAJCWZpCisgCQlpZiBbICIkUE9MX09TIiA9ICJMaW51eCIgXTsgdGhlbgorIAkJCSMgTm93 LCB3ZSBkZXRlY3Qgd2hhdCBzdWRvIHRvIHVzZQorLQkJCWlmIHdoaWNoIGdrc3VkbzsgdGhlbgor KwkJCWlmIGNvbW1hbmQgLXYgZ2tzdWRvOyB0aGVuCisgCQkJCVNVRE9fQ09NTUFORD0iZ2tzdWRv IC0tIgorIAkJCQl1bnNldCBna3N1ZG8KKy0JCQllbGlmIHdoaWNoIGdrc3U7IHRoZW4KKysJCQll bGlmIGNvbW1hbmQgLXYgZ2tzdTsgdGhlbgorIAkJCQlTVURPX0NPTU1BTkQ9Imdrc3UgLS0iCisg CQkJCXVuc2V0IGdrc3UKKy0JCQllbGlmIHdoaWNoIGtkZXN1OyB0aGVuCisrCQkJZWxpZiBjb21t YW5kIC12IGtkZXN1OyB0aGVuCisgCQkJCVNVRE9fQ09NTUFORD0ia2Rlc3UgLS0iCisgCQkJCXVu c2V0IGtkZXN1CistCQkJZWxpZiB3aGljaCBzdWRvOyB0aGVuCisrCQkJZWxpZiBjb21tYW5kIC12 IHN1ZG87IHRoZW4KKyAJCQkJU1VET19DT01NQU5EPSIkUE9MX1RFUk0gLWUgc3VkbyIKKyAJCQkJ dW5zZXQgc3VkbworIAkJCWVsc2UKK2RpZmYgLS1naXQgYS9saWIvc2NyaXB0cy5saWIgYi9saWIv c2NyaXB0cy5saWIKK2luZGV4IDRmZDNmYjVjNS4uMjNjNTc2NjEzIDEwMDc1NQorLS0tIGEvbGli L3NjcmlwdHMubGliCisrKysgYi9saWIvc2NyaXB0cy5saWIKK0BAIC03MzcsNyArNzM3LDcgQEAg UE9MX1N5c3RlbV9FeHRyYWN0U2luZ2xlRmlsZSAoKQorICAgICBsb2NhbCBhcmNoaXZlbmFtZT1g YmFzZW5hbWUgIiRhcmNoaXZlImAKKyAgICAgbG9jYWwgZmlsZW5hbWU9YGJhc2VuYW1lICIkZmls ZSJgCisgICAgIGxvY2FsIHN6cGlkCistICAgIGxvY2FsIHN6aXA9YHdoaWNoIDd6YAorKyAgICBs b2NhbCBzemlwPWBjb21tYW5kIC12IDd6YAorIAorICAgICBQT0xfRGVidWdfTWVzc2FnZSAiRXh0 cmFjdGluZyBzaW5nbGUgZmlsZSA6IFwiJGFyY2hpdmVcIiwgXCIkZmlsZVwiLCBcIiRkZXN0XCIi CisgCitkaWZmIC0tZ2l0IGEvbGliL3ZhcmlhYmxlcyBiL2xpYi92YXJpYWJsZXMKK2luZGV4IDlj MTZmZTFhNy4uMTMwYWNjODU2IDEwMDc1NQorLS0tIGEvbGliL3ZhcmlhYmxlcworKysrIGIvbGli L3ZhcmlhYmxlcworQEAgLTMxLDcgKzMxLDcgQEAgUE9MX0NvbmZpZ19wUmVhZCAoKXsgY2F0ICIk UE9MX1VTRVJfUk9PVC9wbGF5b25saW51eC5jZmciIDI+IC9kZXYvbnVsbCB8IGdyZXAgIl4KKyBh bGlhcyBmaW5kPSJmaW5kIC1IIgorIAorICMjIyBTZWN1cml0eSBmZWF0dXJlCistWyAiJCh3aGlj aCBzdWRvKSIgXSAmJiBzdWRvIC1rIDI+IC9kZXYvbnVsbAorK1sgIiQoY29tbWFuZCAtdiBzdWRv KSIgXSAmJiBzdWRvIC1rIDI+IC9kZXYvbnVsbAorIAorICMjIyBUZXJtaW5hbAorICMgVXNlciBv dmVycmlkZSwgbXVzdCBzdXBwb3J0IC1UIHRvIHNldCB0aXRsZSBhbmQgLWUgdG8gcnVuIGEgY29t bWFuZAorQEAgLTUzLDcgKzUzLDcgQEAgZmkKKyBleHBvcnQgUE9MX1RFUk0KKyAKKyAjIyMgRGVz a3RvcAorLVsgIiQod2hpY2ggeGRnLXVzZXItZGlyKSIgXSAmJiBleHBvcnQgREVTS1RPUD0iJCh4 ZGctdXNlci1kaXIgREVTS1RPUCkiIHx8IGV4cG9ydCBERVNLVE9QPSIkSE9NRS9EZXNrdG9wIgor K1sgIiQoY29tbWFuZCAtdiB4ZGctdXNlci1kaXIpIiBdICYmIGV4cG9ydCBERVNLVE9QPSIkKHhk Zy11c2VyLWRpciBERVNLVE9QKSIgfHwgZXhwb3J0IERFU0tUT1A9IiRIT01FL0Rlc2t0b3AiCisg CisgIyMjIE92ZXJyaWRlIH4vLndnZXRyYworIGV4cG9ydCBXR0VUUkM9IiRQT0xfVVNFUl9ST09U L2NvbmZpZ3VyYXRpb25zL3dnZXRyYyIKK0BAIC03MCw3ICs3MCw3IEBAIGVsc2UKKyAJZXZhbF9n ZXR0ZXh0KCkgeyBwcmludGYgIiRAIjsgfQorIGZpCisgCistd2hpY2ggc2hhc3VtID4gL2Rldi9u dWxsIDI+IC9kZXYvbnVsbCB8fCBzaGFzdW0gKCkgeyBzaGExc3VtICIkQCI7IH0KKytjb21tYW5k IC12IHNoYXN1bSA+IC9kZXYvbnVsbCAyPiAvZGV2L251bGwgfHwgc2hhc3VtICgpIHsgc2hhMXN1 bSAiJEAiOyB9CisgCisgCisgaWYgWyAiJFBPTF9PUyIgPT0gIkxpbnV4IiBdCitkaWZmIC0tZ2l0 IGEvbGliL3dpbmUubGliIGIvbGliL3dpbmUubGliCitpbmRleCAzYmYxMTg3NjUuLjg3NTZjZGNk MyAxMDA3NTUKKy0tLSBhL2xpYi93aW5lLmxpYgorKysrIGIvbGliL3dpbmUubGliCitAQCAtOTg5 LDEzICs5ODksMTMgQEAgUE9MX1dpbmVfUHJlZml4Q3JlYXRlKCkgeworIAorICAgICAgIFBPTF9E ZWJ1Z19Jbml0UHJlZml4CisgCistICAgICAgd2hpY2ggd2luZXByZWZpeGNyZWF0ZSAmJiBbICIk KFBPTF9NRDVfZmlsZSAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlKSIpIiAhPSAiNWMwZWU5MDY4 Mjc0NmU4MTE2OThhNTM0MTViNDc2NWQiIF0gJiYgWyAhICIkKHdoaWNoIHdpbmVwcmVmaXhjcmVh dGUgfCBncmVwICRBUFBMSUNBVElPTl9USVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhj cmVhdGUKKysgICAgICBjb21tYW5kIC12IHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xfTUQ1 X2ZpbGUgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODEx Njk4YTUzNDE1YjQ3NjVkIiBdICYmIFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlIHwgZ3Jl cCAkQVBQTElDQVRJT05fVElUTEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRlCisg ICAgICAgd2luZSB3aW5lYm9vdAorICAgICBmaQorICAgZmkKKyAKKyAgICMgTWFrZSBzdXJlIHRo YXQgLnJlZyBmaWxlcyBhcmUgY3JlYXRlZAorLSAgaWYgd2hpY2ggd2luZXNlcnZlcjsgdGhlbgor KyAgaWYgY29tbWFuZCAtdiB3aW5lc2VydmVyOyB0aGVuCisgICAgIHdpbmVzZXJ2ZXIgLXcKKyAg IGVsc2UKKyAgICAgUE9MX0RlYnVnX01lc3NhZ2UgIldhcm5pbmcsIHdpbmVzZXJ2ZXIgbm90IGZv dW5kIgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tYWlud2luZG93LnB5IGIvcHl0aG9uL21haW53aW5k b3cucHkKK2luZGV4IGM4ZmUxMTE2MC4uYzM3OWQyYWU1IDEwMDc1NQorLS0tIGEvcHl0aG9uL21h aW53aW5kb3cucHkKKysrKyBiL3B5dGhvbi9tYWlud2luZG93LnB5CitAQCAtMTIxNiw3ICsxMjE2 LDggQEAgZGVmIE9uSW5pdChzZWxmKToKKyAgICAgZGVmIF9leGVjdXRhYmxlRm91bmQoc2VsZiwg ZXhlY3V0YWJsZSk6CisgICAgICAgICBkZXZudWxsID0gb3BlbignL2Rldi9udWxsJywgJ3diJykK KyAgICAgICAgIHRyeToKKy0gICAgICAgICAgICByZXR1cm5jb2RlID0gc3VicHJvY2Vzcy5jYWxs KFsid2hpY2giLCBleGVjdXRhYmxlXSwgc3Rkb3V0PWRldm51bGwpCisrICAgICAgICAgICAgZXhl Y3V0YWJsZV9wYXRoID0gc2h1dGlsLndoaWNoKGV4ZWN1dGFibGUpCisrICAgICAgICAgICAgcmV0 dXJuY29kZSA9IHN1YnByb2Nlc3MuY2FsbChleGVjdXRhYmxlX3BhdGgsIHN0ZG91dD1kZXZudWxs KQorICAgICAgICAgICAgIHJldHVybiAocmV0dXJuY29kZSA9PSAwKQorICAgICAgICAgZXhjZXB0 OgorICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCitGcm9tIDVhMjkyMWVlMTlkMzUyZGZlMjVh OGMwYzIxMGNkYzI0MDRmYmYwMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWhv IFBlcnN5IExlZSA8c2VhcmNoNUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEwIEF1ZyAyMDIzIDE3 OjU1OjUzICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMjgvMzddIFVwZGF0ZSBtYWlud2luZG93LnB5 CisKK21pc3NpbmcgaW1wb3J0IGFkZAorLS0tCisgcHl0aG9uL21haW53aW5kb3cucHkgfCAxICsK KyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9t YWlud2luZG93LnB5IGIvcHl0aG9uL21haW53aW5kb3cucHkKK2luZGV4IGMzNzlkMmFlNS4uY2Ji NzZkZGExIDEwMDc1NQorLS0tIGEvcHl0aG9uL21haW53aW5kb3cucHkKKysrKyBiL3B5dGhvbi9t YWlud2luZG93LnB5CitAQCAtMjcsNiArMjcsNyBAQAorIGltcG9ydCB0aW1lCisgaW1wb3J0IHVy bGxpYi5wYXJzZQorIGltcG9ydCB3ZWJicm93c2VyCisraW1wb3J0IHNodGlsCisgCisgdHJ5Ogor ICAgICBvcy5lbnZpcm9uWyJQT0xfT1MiXQorCitGcm9tIDVjMjYzYmYwYzMyYjk5OWNkYjYzNjU1 NWQwZGU4NGFmNjY1NzM5NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKaWhvIFBl cnN5IExlZSA8c2VhcmNoNUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEwIEF1ZyAyMDIzIDE3OjU2 OjU0ICswOTAwCitTdWJqZWN0OiBbUEFUQ0ggMjkvMzddIFVwZGF0ZSBtYWlud2luZG93LnB5CisK K21pc3NpbmcgbW9kdWxlIGltcG9ydCBhbmQgaW1wb3J0IG5hbWUgZml4LgorLS0tCisgcHl0aG9u L21haW53aW5kb3cucHkgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAx IGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9weXRob24vbWFpbndpbmRvdy5weSBiL3B5dGhv bi9tYWlud2luZG93LnB5CitpbmRleCBjYmI3NmRkYTEuLjdiYzY5NWE5OCAxMDA3NTUKKy0tLSBh L3B5dGhvbi9tYWlud2luZG93LnB5CisrKysgYi9weXRob24vbWFpbndpbmRvdy5weQorQEAgLTI3 LDcgKzI3LDcgQEAKKyBpbXBvcnQgdGltZQorIGltcG9ydCB1cmxsaWIucGFyc2UKKyBpbXBvcnQg d2ViYnJvd3NlcgorLWltcG9ydCBzaHRpbAorK2ltcG9ydCBzaHV0aWwKKyAKKyB0cnk6CisgICAg IG9zLmVudmlyb25bIlBPTF9PUyJdCisKK0Zyb20gMzk5ZmYyOGRhMTU5MzZjNDRkZGMxMjkwNTc3 Yjg0N2QwNWNiNzFiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEppaG8gUGVyc3kg TGVlIDxzZWFyY2g1QGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTUgQXVnIDIwMjMgMTU6MDQ6NDYg KzA5MDAKK1N1YmplY3Q6IFtQQVRDSCAzMC8zN10gVXBkYXRlIHdpbmUubGliCisKK2ZpeCBtaXNz aW5nIHdoaWNoIGNvbW1hbmQKKy0tLQorIGxpYi93aW5lLmxpYiB8IDIgKy0KKyAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYi93 aW5lLmxpYiBiL2xpYi93aW5lLmxpYgoraW5kZXggODc1NmNkY2QzLi4zYWU5MTZiMTcgMTAwNzU1 CistLS0gYS9saWIvd2luZS5saWIKKysrKyBiL2xpYi93aW5lLmxpYgorQEAgLTk4OSw3ICs5ODks NyBAQCBQT0xfV2luZV9QcmVmaXhDcmVhdGUoKSB7CisgCisgICAgICAgUE9MX0RlYnVnX0luaXRQ cmVmaXgKKyAKKy0gICAgICBjb21tYW5kIC12IHdpbmVwcmVmaXhjcmVhdGUgJiYgWyAiJChQT0xf TUQ1X2ZpbGUgIiQod2hpY2ggd2luZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZl ODExNjk4YTUzNDE1YjQ3NjVkIiBdICYmIFsgISAiJCh3aGljaCB3aW5lcHJlZml4Y3JlYXRlIHwg Z3JlcCAkQVBQTElDQVRJT05fVElUTEUpIiA9ICIiIF0gJiYgd2luZSB3aW5lcHJlZml4Y3JlYXRl CisrICAgICAgY29tbWFuZCAtdiB3aW5lcHJlZml4Y3JlYXRlICYmIFsgIiQoUE9MX01ENV9maWxl ICIkKGNvbW1hbmQgLXYgd2luZXByZWZpeGNyZWF0ZSkiKSIgIT0gIjVjMGVlOTA2ODI3NDZlODEx Njk4YTUzNDE1YjQ3NjVkIiBdICYmIFsgISAiJChjb21tYW5kIC12IHdpbmVwcmVmaXhjcmVhdGUg fCBncmVwICRBUFBMSUNBVElPTl9USVRMRSkiID0gIiIgXSAmJiB3aW5lIHdpbmVwcmVmaXhjcmVh dGUKKyAgICAgICB3aW5lIHdpbmVib290CisgICAgIGZpCisgICBmaQorCitGcm9tIDc5YzUxM2Zh OGExOTM4ZTU1YmUwYTIzOTEyMTE3NmYxNDE1MDQ5ZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBSb2JlcnQgU2NoZWNrIDxyb2JlcnQtc2NoZWNrQHVzZXJzLm5vcmVwbHkuZ2l0aHVi LmNvbT4KK0RhdGU6IFN1biwgMjYgTWF5IDIwMjQgMjA6MzI6NTMgKzAyMDAKK1N1YmplY3Q6IFtQ QVRDSCAzMS8zN10gUmVtb3ZlIHVudXNlZCBpbXBvcnQgb2YgZGVwcmVjYXRlZCBQeXRob24KKyBh c3luY29yZS5kaXNwYXRjaGVyCisKKy0tLQorIHB5dGhvbi9vcHRpb25zLnB5IHwgMSAtCisgMSBm aWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9vcHRpb25z LnB5IGIvcHl0aG9uL29wdGlvbnMucHkKK2luZGV4IGY0MGYyNmE3MC4uZTE4ZGRiMzJiIDEwMDc1 NQorLS0tIGEvcHl0aG9uL29wdGlvbnMucHkKKysrKyBiL3B5dGhvbi9vcHRpb25zLnB5CitAQCAt MTgsNyArMTgsNiBAQAorICMgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAjIDUxIEZyYW5rbGluIFN0cmVldCwg RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisgCistZnJvbSBhc3luY29y ZSBpbXBvcnQgZGlzcGF0Y2hlcgorIGltcG9ydCBvcywgc3VicHJvY2VzcywgZ2V0b3B0LCBzeXMs IHVybGxpYi5yZXF1ZXN0LCBzaWduYWwsIHNvY2tldAorIGltcG9ydCB3eCwgdGltZSwgcmUKKyBp bXBvcnQgd2ViYnJvd3Nlciwgc2h1dGlsCisKK0Zyb20gMjI5NTk0OGIzNTZmODQ2MWM1NjQyY2Y5 NmRiYjQzZDAzYzYyOTIxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBT Y2hlY2sgPHJvYmVydC1zY2hlY2tAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgorRGF0ZTogU3Vu LCAyNiBNYXkgMjAyNCAyMTo1MzozNCArMDIwMAorU3ViamVjdDogW1BBVENIIDMyLzM3XSBSZXR1 cm4gYmFzZWQgb24gc2h1dGlsLndoaWNoKCkgaW5zdGVhZCBvZgorIHN1YnByb2Nlc3MuY2FsbCgp CisKKy0tLQorIHB5dGhvbi9tYWlud2luZG93LnB5IHwgNSArLS0tLQorIDEgZmlsZSBjaGFuZ2Vk LCAxIGluc2VydGlvbigrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3B5dGhvbi9t YWlud2luZG93LnB5IGIvcHl0aG9uL21haW53aW5kb3cucHkKK2luZGV4IDdiYzY5NWE5OC4uMzMx Mjk3Zjc4IDEwMDc1NQorLS0tIGEvcHl0aG9uL21haW53aW5kb3cucHkKKysrKyBiL3B5dGhvbi9t YWlud2luZG93LnB5CitAQCAtMTIxNSwxMSArMTIxNSw4IEBAIGRlZiBPbkluaXQoc2VsZik6Cisg ICAgICAgICByZXR1cm4gVHJ1ZQorIAorICAgICBkZWYgX2V4ZWN1dGFibGVGb3VuZChzZWxmLCBl eGVjdXRhYmxlKToKKy0gICAgICAgIGRldm51bGwgPSBvcGVuKCcvZGV2L251bGwnLCAnd2InKQor ICAgICAgICAgdHJ5OgorLSAgICAgICAgICAgIGV4ZWN1dGFibGVfcGF0aCA9IHNodXRpbC53aGlj aChleGVjdXRhYmxlKQorLSAgICAgICAgICAgIHJldHVybmNvZGUgPSBzdWJwcm9jZXNzLmNhbGwo ZXhlY3V0YWJsZV9wYXRoLCBzdGRvdXQ9ZGV2bnVsbCkKKy0gICAgICAgICAgICByZXR1cm4gKHJl dHVybmNvZGUgPT0gMCkKKysgICAgICAgICAgICByZXR1cm4gKHNodXRpbC53aGljaChleGVjdXRh YmxlKSBpcyBub3QgTm9uZSkKKyAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICByZXR1cm4g RmFsc2UKKyAKKworRnJvbSAxMGY3ODUzYzg0ZjQ1NmYxOTI4OWMyMmZlMTlhOWE5OWY5NGQ5ZGRh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFNjaGVjayA8cm9iZXJ0QGZl ZG9yYXByb2plY3Qub3JnPgorRGF0ZTogTW9uLCAxNCBPY3QgMjAyNCAwMDowMDo1MiArMDIwMAor U3ViamVjdDogW1BBVENIIDMzLzM3XSBSZXBsYWNlIHBpcGVzLnF1b3RlKCkgZnJvbSBkZXByZWNh dGVkIFB5dGhvbiBwaXBlcworCistLS0KKyBweXRob24vbGliL3BsYXlvbmxpbnV4LnB5IHwgNiAr KystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQor CitkaWZmIC0tZ2l0IGEvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weSBiL3B5dGhvbi9saWIvcGxh eW9ubGludXgucHkKK2luZGV4IGZhOWI5MGZiOS4uYjM5ZjhhOWE5IDEwMDc1NQorLS0tIGEvcHl0 aG9uL2xpYi9wbGF5b25saW51eC5weQorKysrIGIvcHl0aG9uL2xpYi9wbGF5b25saW51eC5weQor QEAgLTUsNyArNSw3IEBACisgCisgZnJvbSAuIGltcG9ydCBWYXJpYWJsZXMKKyBpbXBvcnQgb3MK Ky1pbXBvcnQgc3VicHJvY2Vzcywgc2hsZXgsIHBpcGVzLCB3eAorK2ltcG9ydCBzdWJwcm9jZXNz LCBzaGxleCwgd3gKKyBpbXBvcnQgbmF0c29ydAorIAorIGRlZiB3aW5wYXRoKHNjcmlwdCwgcGF0 aCk6CitAQCAtMzczLDcgKzM3Myw3IEBAIGRlZiBnZXRBcmdzKHNob3J0Y3V0KTogIyBHZXQgcHJl Zml4IG5hbWUgZnJvbSBzaG9ydGN1dAorICAgICB0cnk6CisgICAgICAgICBhcmdzID0gc2hsZXgu c3BsaXQoZmljaGllcltpXSlbMjotMV0KKyAgICAgICAgICNwcmludCBhcmdzCistICAgICAgICBh cmdzID0gIiAiLmpvaW4oWyBwaXBlcy5xdW90ZSh4KSBmb3IgeCBpbiBhcmdzXSkKKysgICAgICAg IGFyZ3MgPSAiICIuam9pbihbIHNobGV4LnF1b3RlKHgpIGZvciB4IGluIGFyZ3NdKQorICAgICAg ICAgI3ByaW50IGFyZ3MKKyAgICAgZXhjZXB0OgorICAgICAgICAgYXJncyA9ICIiCitAQCAtNDMy LDcgKzQzMiw3IEBAIGRlZiB3cml0ZUFyZ3MoZ2FtZSwgYXJncyk6CisgICAgICAgICAgICAgICAg IG9sZF9zdHJpbmcgPSBzaGxleC5zcGxpdChmaWNoaWVyW2ldKQorICAgICAgICAgICAgICAgICBu ZXdfc3RyaW5nID0gc2hsZXguc3BsaXQoc3RyKGFyZ3MpKQorICAgICAgICAgICAgICAgICBuZXdf c3RyaW5nID0gb2xkX3N0cmluZ1swOjJdICsgbmV3X3N0cmluZworLSAgICAgICAgICAgICAgICBu ZXdfc3RyaW5nID0gIiAiLmpvaW4oWyBwaXBlcy5xdW90ZSh4KSBmb3IgeCBpbiBuZXdfc3RyaW5n XSkKKysgICAgICAgICAgICAgICAgbmV3X3N0cmluZyA9ICIgIi5qb2luKFsgc2hsZXgucXVvdGUo eCkgZm9yIHggaW4gbmV3X3N0cmluZ10pCisgCisgICAgICAgICAgICAgICAgIG5ld19zdHJpbmcg PSBuZXdfc3RyaW5nKycgIiRAIicKKyAgICAgICAgICAgICAgICAgbGluZS5hcHBlbmQobmV3X3N0 cmluZykKKworRnJvbSBlYjllZTE0NDNmZTZlM2M2M2EyYzk2MDRjZDhjOGFjZDJlZTY3OGIzIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVml0YWxpaSA8Y3ViZWNvZGUubmV0QGdtYWls LmNvbT4KK0RhdGU6IEZyaSwgMTMgRGVjIDIwMjQgMTE6MDU6MTEgKzAxMDAKK1N1YmplY3Q6IFtQ QVRDSCAzNC8zN10gRml4IGZvciBTeW50YXhXYXJuaW5nOiBpbnZhbGlkIGVzY2FwZSBzZXF1ZW5j ZQorCistLS0KKyBweXRob24vbWFpbndpbmRvdy5weSB8IDE2ICsrKysrKysrKy0tLS0tLS0KKyAx IGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCitkaWZmIC0t Z2l0IGEvcHl0aG9uL21haW53aW5kb3cucHkgYi9weXRob24vbWFpbndpbmRvdy5weQoraW5kZXgg MzMxMjk3Zjc4Li40MDg1Njg1M2QgMTAwNzU1CistLS0gYS9weXRob24vbWFpbndpbmRvdy5weQor KysrIGIvcHl0aG9uL21haW53aW5kb3cucHkKK0BAIC03MDYsMTMgKzcwNiwxNSBAQCBkZWYgR29U b0FwcERpcihzZWxmLCBldmVudCk6CisgCisgICAgIGRlZiBDaGFuZ2VJY29uKHNlbGYsIGV2ZW50 KToKKyAgICAgICAgIHNlbGYuSWNvbkRpciA9IFZhcmlhYmxlcy5ob21lZGlyICsgIi8ubG9jYWwv c2hhcmUvaWNvbnMvIgorLSAgICAgICAgc2VsZi5TdXBwcm90ZWRJY29uRXh0ID0gIkFsbHwqLnhw bTsqLlhQTTsqLnBuZzsqLlBORzsqLmljbzsqLklDTzsqLmpwZzsqLkpQRzsqLmpwZWc7Ki5KUEVH OyouYm1wOyouQk1QXAorLSAgICAgICAgXHxYUE0gKCoueHBtKXwqLnhwbTsqLlhQTVwKKy0gICAg ICAgIFx8UE5HICgqLnBuZyl8Ki5wbmc7Ki5QTkdcCistICAgICAgICBcfElDTyAoKi5pY28pfCou aWNvOyouSUNPXAorLSAgICAgICAgXHxKUEcgKCouanBnKXwqLmpwZzsqLkpQR1wKKy0gICAgICAg IFx8Qk1QICgqLmJtcCl8Ki5ibXA7Ki5CTVBcCistICAgICAgICBcfEpQRUcgKCouanBlZyl8Ki5q cGVnOypKUEVHIgorKyAgICAgICAgc2VsZi5TdXBwcm90ZWRJY29uRXh0ID0gKAorKyAgICAgICAg ICAgICJBbGx8Ki54cG07Ki5YUE07Ki5wbmc7Ki5QTkc7Ki5pY287Ki5JQ087Ki5qcGc7Ki5KUEc7 Ki5qcGVnOyouSlBFRzsqLmJtcDsqLkJNUHwiCisrICAgICAgICAgICAgIlhQTSAoKi54cG0pfCou eHBtOyouWFBNfCIKKysgICAgICAgICAgICAiUE5HICgqLnBuZyl8Ki5wbmc7Ki5QTkd8IgorKyAg ICAgICAgICAgICJJQ08gKCouaWNvKXwqLmljbzsqLklDT3wiCisrICAgICAgICAgICAgIkpQRyAo Ki5qcGcpfCouanBnOyouSlBHfCIKKysgICAgICAgICAgICAiQk1QICgqLmJtcCl8Ki5ibXA7Ki5C TVB8IgorKyAgICAgICAgICAgICJKUEVHICgqLmpwZWcpfCouanBlZzsqLkpQRUciCisrICAgICAg ICApCisgICAgICAgICBzZWxmLkljb25EaWFsb2cgPSB3eC5GaWxlRGlhbG9nKHNlbGYsICJDaG9v c2UgYSBpY29uIGZpbGUiLCBzZWxmLkljb25EaXIsICIiLCBzZWxmLlN1cHByb3RlZEljb25FeHQs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Lk9QRU4gfCB3eC5G RF9QUkVWSUVXKQorICAgICAgICAgaWYgc2VsZi5JY29uRGlhbG9nLlNob3dNb2RhbCgpID09IHd4 LklEX09LOgorCitGcm9tIGYwMWJkNWZlZmZjYTE5YjBkMmZiNmYwNTlkMzY3Y2M5MGVhM2EzNGQg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBicmlhbmJhZGwgPG1vaGFtbWFkYnJpYW5h YmRpbGxhaEBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI4IERlYyAyMDI0IDA3OjQ5OjMwICswNzAw CitTdWJqZWN0OiBbUEFUQ0ggMzUvMzddIEZpeCBTeW50YXg6IGludmFsaWQgZXNjYXBlIHNlcXVl bmNlCisKKy0tLQorIHB5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93Tm90ZWJv b2sucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHl0aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVX aW5kb3dOb3RlYm9vay5weSBiL3B5dGhvbi9jb25maWd1cmV3aW5kb3cvQ29uZmlndXJlV2luZG93 Tm90ZWJvb2sucHkKK2luZGV4IDI5NjQ0M2U2Ni4uNTA1YjQ3NjkzIDEwMDY0NAorLS0tIGEvcHl0 aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weQorKysrIGIvcHl0 aG9uL2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3dOb3RlYm9vay5weQorQEAgLTQ2MSw4 ICs0NjEsOCBAQCBkZWYgbWlzY19idXR0b24oc2VsZiwgZXZlbnQpOgorICAgICAgICAgICAgIHNl bGYuRmlsZURpYWxvZyA9IHd4LkZpbGVEaWFsb2coc2VsZikKKyAgICAgICAgICAgICBzZWxmLkZp bGVEaWFsb2cuU2V0RGlyZWN0b3J5KCJ+IikKKyAgICAgICAgICAgICBzZWxmLnN1cHBvcnRlZF9m aWxlcyA9ICJBbGx8Ki5leGU7Ki5FWEU7Ki5tc2k7Ki5NU0lcCistICAgICAgICAgICAgXHxXaW5k b3dzIGV4ZWN1dGFibGUgKCouZXhlKXwqLmV4ZTsqLkVYRVwKKy0gICAgICAgICAgICBcfFdpbmRv d3MgaW5zdGFsbCBmaWxlICgqLm1zaSl8Ki5tc2k7Kk1TSSIKKysgICAgICAgICAgICB8V2luZG93 cyBleGVjdXRhYmxlICgqLmV4ZSl8Ki5leGU7Ki5FWEVcCisrICAgICAgICAgICAgfFdpbmRvd3Mg aW5zdGFsbCBmaWxlICgqLm1zaSl8Ki5tc2k7Kk1TSSIKKyAgICAgICAgICAgICBzZWxmLkZpbGVE aWFsb2cuU2V0V2lsZGNhcmQoc2VsZi5zdXBwb3J0ZWRfZmlsZXMpCisgICAgICAgICAgICAgc2Vs Zi5GaWxlRGlhbG9nLlNob3dNb2RhbCgpCisgICAgICAgICAgICAgaWYgKHNlbGYuRmlsZURpYWxv Zy5HZXRQYXRoKCkgIT0gIiIpOgorCitGcm9tIDI1NzhhNjA1ZDhjYjAyMDFmYjEyNWQ2ZWRiZGRh YjE3YjU3Yjg0NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXRldXN6IEtvbmll Y3pueSA8bWF0a29uaWVjekBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDQgTm92IDIwMjUgMTI6MDM6 MzAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzNi8zN10gcmVtb3ZlIGRlYWQgbGluaworCitSZXBs YWNpbmcgYCBTZWUgaHR0cDovL3d3dy5wbGF5b25saW51eC5jb20vZnIvcGFnZS0yNi1XaW5lbWVu dWJ1aWxkZXIuaHRtbGAgd2l0aCB3b3JraW5nIGxpbmsgd291bGQgYmUgbmljZXIsIGJ1dCBJIGFt IG5vdCBzdXJlIHdoYXQgaXMgc3VwcG9zZWQgdG8gYmUgbGlua2VkCistLS0KKyBsaWIvd2luZS5s aWIgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0p CisKK2RpZmYgLS1naXQgYS9saWIvd2luZS5saWIgYi9saWIvd2luZS5saWIKK2luZGV4IDNhZTkx NmIxNy4uZWQ0ZWQzYTI2IDEwMDc1NQorLS0tIGEvbGliL3dpbmUubGliCisrKysgYi9saWIvd2lu ZS5saWIKK0BAIC01MTksNyArNTE5LDcgQEAgUE9MX1dpbmUoKSB7CisgICBmaQorIAorICAgaWYg WyAhICIkV0lORU1FTlVCVUlMREVSX0FMRVJUIiBdOyB0aGVuCistICAgIFBPTF9EZWJ1Z19NZXNz YWdlICJOb3RpY2U6IFBsYXlPbkxpbnV4IGRlbGliZXJhdGVseSBkaXNhYmxlcyB3aW5lbWVudWJ1 aWxkZXIuIFNlZSBodHRwOi8vd3d3LnBsYXlvbmxpbnV4LmNvbS9mci9wYWdlLTI2LVdpbmVtZW51 YnVpbGRlci5odG1sIgorKyAgICBQT0xfRGVidWdfTWVzc2FnZSAiTm90aWNlOiBQbGF5T25MaW51 eCBkZWxpYmVyYXRlbHkgZGlzYWJsZXMgd2luZW1lbnVidWlsZGVyLiIKKyAgICAgV0lORU1FTlVC VUlMREVSX0FMRVJUPSJEb25lIgorICAgZmkKKyAgIGlmIFsgIiQxIiA9ICJyZWdlZGl0IiAtYSAh ICIkMiIgPSAiIiBdOyB0aGVuCisKK0Zyb20gY2FjODcwMWM4MDZhZTNmOGY5NGY4YzM4M2UwNTk5 NmVmYWE1M2Q1OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEJvcmlzbGF2IFNhYmV2 IDxCb3Jpc2xhdlNhYmV2QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KK0RhdGU6IE1vbiwgNSBK YW4gMjAyNiAxNTowMzo0OSArMDIwMAorU3ViamVjdDogW1BBVENIIDM3LzM3XSBVcGRhdGUgUE9M X1NldHVwRnJhbWUucHkgLSBGaXggc3ludGF4IHdhcm5pbmcgd2l0aAorIFB5dGhvbiA+PSAzLjEw CisKKy0tLQorIHB5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weSB8IDQgKysrLQor IDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAt LWdpdCBhL3B5dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weSBiL3B5dGhvbi9zZXR1 cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weQoraW5kZXggMzNkNzNkMzhhLi41YTJmZWFmMTEgMTAw NzU1CistLS0gYS9weXRob24vc2V0dXB3aW5kb3cvUE9MX1NldHVwRnJhbWUucHkKKysrKyBiL3B5 dGhvbi9zZXR1cHdpbmRvdy9QT0xfU2V0dXBGcmFtZS5weQorQEAgLTMzLDcgKzMzLDkgQEAKKyBp bXBvcnQgbGliLnBsYXlvbmxpbnV4IGFzIHBsYXlvbmxpbnV4CisgCisgbGliLmxuZy5MYW5nKCkK Ky11cmxsaWIucmVxdWVzdC5VUkxvcGVuZXIudmVyc2lvbiA9IFZhcmlhYmxlcy51c2VyQWdlbnQg ICMgQXJnIC4uLgorK29wZW5lciA9IHVybGxpYi5yZXF1ZXN0LmJ1aWxkX29wZW5lcigpCisrb3Bl bmVyLmFkZGhlYWRlcnMgPSBbKCdVc2VyLUFnZW50JywgVmFyaWFibGVzLnVzZXJBZ2VudCldCisr dXJsbGliLnJlcXVlc3QuX3VybG9wZW5lciA9IG9wZW5lcgorIAorIGZyb20gdWkuUGxheU9uTGlu dXhXaW5kb3cgaW1wb3J0IFBsYXlPbkxpbnV4V2luZG93CisgZnJvbSBzZXR1cHdpbmRvdy5Eb3du bG9hZGVyIGltcG9ydCBEb3dubG9hZGVyCgpkaWZmIC0tZ2l0IGEvcGxheW9ubGludXguc3BlYyBi L3BsYXlvbmxpbnV4LnNwZWMKaW5kZXggZjQ3NjZkYS4uYTgzZGUwMCAxMDA2NDQKLS0tIGEvcGxh eW9ubGludXguc3BlYworKysgYi9wbGF5b25saW51eC5zcGVjCkBAIC0xLDcgKzEsNyBAQAogU3Vt bWFyeTogICAgICAgR3JhcGhpY2FsIGZyb250LWVuZCBmb3IgV2luZQogTmFtZTogICAgICAgICAg cGxheW9ubGludXgKIFZlcnNpb246ICAgICAgIDQuNAotUmVsZWFzZTogICAgICAgMTglez9kaXN0 fQorUmVsZWFzZTogICAgICAgMTklez9kaXN0fQogIyBwbGF5b25saW51eCBpdHNlbGYgaXMgR1BM LTMuMC1vbmx5IGJ1dCB1c2VzIG90aGVyIHNvdXJjZSBjb2RlcywgYnJlYWtkb3duOgogIyBHUEwt Mi4wLW9yLWxhdGVyOiBweXRob24ve2NvbmZpZ3VyZXdpbmRvdy9Db25maWd1cmVXaW5kb3csZGVi dWcsbWFpbndpbmRvdyxvcHRpb25zLHdyYXBwZXJ9LnB5CiAjIEdQTC0yLjAtb3ItbGF0ZXI6IHB5 dGhvbi97aW5zdGFsbC9JbnN0YWxsV2luZG93LHNldHVwd2luZG93L3tQT0xfU2V0dXBGcmFtZSxn dWlfc2VydmVyfX0ucHkKQEAgLTExLDcgKzExLDcgQEAgTGljZW5zZTogICAgICAgR1BMLTMuMC1v bmx5IEFORCBHUEwtMi4wLW9yLWxhdGVyIEFORCBNSVQKIFVSTDogICAgICAgICAgIGh0dHBzOi8v d3d3LnBsYXlvbmxpbnV4LmNvbS8KIFNvdXJjZTA6ICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9Q bGF5T25MaW51eC9QT0wtUE9NLTQvYXJjaGl2ZS8le3ZlcnNpb259L1BPTC1QT00tNC0le3ZlcnNp b259LnRhci5negogIyBVcHN0cmVhbSBjaGFuZ2VzIHNpbmNlIGxhc3QgcmVsZWFzZQotUGF0Y2gw OiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1BsYXlPbkxpbnV4L1BPTC1QT00tNC9jb21wYXJl LzQuNC4uLjc2YTY1ODAucGF0Y2gjL3BsYXlvbmxpbnV4LTQuNC1naXQ3NmE2NTgwLnBhdGNoCitQ YXRjaDA6ICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vUGxheU9uTGludXgvUE9MLVBPTS00L2Nv bXBhcmUvNC40Li4uZmRlMDBmZS5wYXRjaCMvcGxheW9ubGludXgtNC40LWdpdGZkZTAwZmUucGF0 Y2gKIEJ1aWxkUmVxdWlyZXM6IGdjYwogQnVpbGRSZXF1aXJlczogbWFrZQogQnVpbGRSZXF1aXJl czogZ3ppcApAQCAtMTAwLDYgKzEwMCw5IEBAIGFwcHN0cmVhbS11dGlsIHZhbGlkYXRlLXJlbGF4 IC0tbm9uZXQgJXtidWlsZHJvb3R9JXtfZGF0YWRpcn0vYXBwZGF0YS9QbGF5T25MaW51CiAle19t YW5kaXJ9L21hbjEvJXtuYW1lfS1wa2cuMSoKIAogJWNoYW5nZWxvZworKiBTYXQgSnVuIDEzIDIw MjYgUm9iZXJ0IFNjaGVjayA8cm9iZXJ0QGZlZG9yYXByb2plY3Qub3JnPiA0LjQtMTkKKy0gQWRk IHBhdGNoIHRvIHJlcGxhY2UgdXJsbGliLnJlcXVlc3QuVVJMb3BlbmVyICgjMjQwMzI5MCkKKwog KiBTYXQgSmFuIDE3IDIwMjYgRmVkb3JhIFJlbGVhc2UgRW5naW5lZXJpbmcgPHJlbGVuZ0BmZWRv cmFwcm9qZWN0Lm9yZz4gLSA0LjQtMTgKIC0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9q ZWN0Lm9yZy93aWtpL0ZlZG9yYV80NF9NYXNzX1JlYnVpbGQKIAo=