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: Germano Massullo (Thetra) To: git-commits@fedoraproject.org Subject: [rpms/darktable] rawhide: 5.6.1 release Date: Tue, 01 Sep 2026 08:46:43 GMT Message-ID: <178825240377.1.10386290194248040718.rpms-darktable-6fa39d4362d9@fedoraproject.org> List-ID: X-Git-Repo: rpms/darktable X-Git-Branch: rawhide X-Git-Rev: 6fa39d4362d90089967b92a6285a555ac4630026 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZGFya3RhYmxlCkJy YW5jaCA6IHJhd2hpZGUKQ29tbWl0IDogNmZhMzlkNDM2MmQ5MDA4OTk2N2I5MmE2Mjg1YTU1NWFj NDYzMDAyNgpBdXRob3IgOiBHZXJtYW5vIE1hc3N1bGxvIChUaGV0cmEpIDxnZXJtYW5vLm1hc3N1 bGxvQHRoZXRyYS5ldT4KRGF0ZSAgIDogMjAyNi0wOS0wMVQxMDo0NToxMCswMjowMApTdGF0cyAg OiArMzA5MS8tMzk4IGluIDkgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9q ZWN0Lm9yZy9ycG1zL2Rhcmt0YWJsZS9jLzZmYTM5ZDQzNjJkOTAwODk5NjdiOTJhNjI4NWE1NTVh YzQ2MzAwMjY/YnJhbmNoPXJhd2hpZGUKCkxvZzoKNS42LjEgcmVsZWFzZQoKLS0tCmRpZmYgLS1n aXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBkMDQ0OWRjLi43ZWRmN2YzIDEwMDY0 NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUKQEAgLTc5LDMgKzc5LDUgQEAKIC9k YXJrdGFibGUtNS4yLjEudGFyLnh6CiAvZGFya3RhYmxlLTUuNC4wLnRhci54egogL2Rhcmt0YWJs ZS01LjQuMS50YXIueHoKKy9kYXJrdGFibGUtNS42LjAudGFyLnh6CisvZGFya3RhYmxlLTUuNi4x LnRhci54egoKZGlmZiAtLWdpdCBhLzAwMDEtQWRkLTUuNC4xLWluLWFwcGRhdGEucGF0Y2ggYi8w MDAxLUFkZC01LjQuMS1pbi1hcHBkYXRhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCBiM2M1MDMzLi4wMDAwMDAwCi0tLSBhLzAwMDEtQWRkLTUuNC4xLWluLWFwcGRhdGEucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1Gcm9tIDE0MzVmZWFlYzMwZWExYWNi Zjk0YWFlYzI3Y2U3NTA3MzMzZWQyZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQ YXNjYWwgT2JyeSA8cGFzY2FsQG9icnkubmV0PgotRGF0ZTogVGh1LCA1IEZlYiAyMDI2IDE3OjU2 OjIxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCA1LjQuMSBpbiBhcHBkYXRhLgotCi0tLS0K LSBkYXRhL29yZy5kYXJrdGFibGUuZGFya3RhYmxlLmFwcGRhdGEueG1sLmluIHwgMSArCi0gMSBm aWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9kYXRhL29yZy5kYXJr dGFibGUuZGFya3RhYmxlLmFwcGRhdGEueG1sLmluIGIvZGF0YS9vcmcuZGFya3RhYmxlLmRhcmt0 YWJsZS5hcHBkYXRhLnhtbC5pbgotaW5kZXggNjAwYzg3YjZjMWU0Li4xYTQ1ZGUxZWI3NGQgMTAw NjQ0Ci0tLS0gYS9kYXRhL29yZy5kYXJrdGFibGUuZGFya3RhYmxlLmFwcGRhdGEueG1sLmluCi0r KysgYi9kYXRhL29yZy5kYXJrdGFibGUuZGFya3RhYmxlLmFwcGRhdGEueG1sLmluCi1AQCAtNDcs NiArNDcsNyBAQAotICAgPC9zY3JlZW5zaG90cz4KLSAgIDxjb250ZW50X3JhdGluZyB0eXBlPSJv YXJzLTEuMSIgLz4KLSAgIDxyZWxlYXNlcz4KLSsgICAgPHJlbGVhc2UgZGF0ZT0iMjAyNi0wMi0w NSIgdmVyc2lvbj0iNS40LjEiLz4KLSAgICAgPHJlbGVhc2UgZGF0ZT0iMjAyNS0xMi0yMSIgdmVy c2lvbj0iNS40LjAiLz4KLSAgICAgPHJlbGVhc2UgZGF0ZT0iMjAyNS0wOC0wNiIgdmVyc2lvbj0i NS4yLjEiLz4KLSAgICAgPHJlbGVhc2UgZGF0ZT0iMjAyNS0wNi0yMSIgdmVyc2lvbj0iNS4yLjAi Lz4KCmRpZmYgLS1naXQgYS84ZGM2OGUyYTQ1NTFmMDM4MzhiN2YyZGE5Mjc2ZTVkMWViMjBiY2Ew LnBhdGNoIGIvOGRjNjhlMmE0NTUxZjAzODM4YjdmMmRhOTI3NmU1ZDFlYjIwYmNhMC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBlMWNlNy4uMDAwMDAwMAotLS0gYS84ZGM2 OGUyYTQ1NTFmMDM4MzhiN2YyZGE5Mjc2ZTVkMWViMjBiY2EwLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsNTMgKzAsMCBAQAotRnJvbSA4ZGM2OGUyYTQ1NTFmMDM4MzhiN2YyZGE5Mjc2ZTVkMWVi MjBiY2EwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBUdXR1YmFsaW4gPGxl eGFAbGV4YS5ydT4KLURhdGU6IFN1biwgMjUgSmFuIDIwMjYgMTk6NTY6MjQgKzAzMDAKLVN1Ympl Y3Q6IFtQQVRDSF0gVXNlIExJQlJBV19FWENFUFRJT04gaW5zdGVhZCBvZiBvd24gaW50ZXJuYWwg aW4KLSBsb3NzbGVzc2pwZWcuaAotCi0tLS0KLSBpbnRlcm5hbC9sb3NzbGVzc2pwZWcuaCB8IDEx ICsrKy0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlv bnMoLSkKLQotZGlmZiAtLWdpdCBhL2ludGVybmFsL2xvc3NsZXNzanBlZy5oIGIvaW50ZXJuYWwv bG9zc2xlc3NqcGVnLmgKLWluZGV4IDc5NjQ4MjJkLi5lY2VkODJiMyAxMDA2NDQKLS0tLSBhL3Ny Yy9leHRlcm5hbC9MaWJSYXcvaW50ZXJuYWwvbG9zc2xlc3NqcGVnLmgKLSsrKyBiL3NyYy9leHRl cm5hbC9MaWJSYXcvaW50ZXJuYWwvbG9zc2xlc3NqcGVnLmgKLUBAIC0yMCw2ICsyMCw3IEBAIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgb25lIG9mIHR3byBsaWNlbnNlcyBhcyB5b3UgY2hvb3Nl OgotICNwcmFnbWEgIG9uY2UKLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHZlY3Rv cj4KLSsjaW5jbHVkZSAibGlicmF3X2N4eF9kZWZzLmgiCi0gCi0gc3RydWN0IEJpdFB1bXAgLy8g Z2VuZXJpYyBiaXQgc291cmNlCi0gewotQEAgLTM3LDEyICszOCw2IEBAIHN0cnVjdCBCaXRQdW1w IC8vIGdlbmVyaWMgYml0IHNvdXJjZQotIAotIHN0cnVjdCBCeXRlU3RyZWFtQkUgLy8gSnBlZyBp cyBhbHdheXMgYmlnIGVuZGlhbgotIHsKLS0gIGVudW0gRXhjZXB0aW9ucwotLSAgewotLSAgICBP SyA9IDAsCi0tICAgIEVuZE9mQnVmZmVyID0gMQotLSAgfTsKLS0KLSAgIHVpbnQ4X3QgKmJ1ZmZl cjsKLSAgIHVuc2lnbmVkIHNpemUsIHBvczsKLSAgIEJ5dGVTdHJlYW1CRSh1aW50OF90ICpiLCB1 bnNpZ25lZCBzKSA6IGJ1ZmZlcihiKSwgc2l6ZShzKSwgcG9zKDApIHt9Ci1AQCAtNTIsNyArNDcs NyBAQCBzdHJ1Y3QgQnl0ZVN0cmVhbUJFIC8vIEpwZWcgaXMgYWx3YXlzIGJpZyBlbmRpYW4KLSAg IHVpbnQ4X3QgZ2V0X3U4KCkKLSAgIHsKLSAgICAgaWYgKHBvcyA+PSBzaXplKQotLSAgICAgIHRo cm93IEVuZE9mQnVmZmVyOwotKyAgICAgIHRocm93IExJQlJBV19FWENFUFRJT05fSU9fQ09SUlVQ VDsKLSAgICAgdWludDhfdCByZXQgPSBidWZmZXJbcG9zXTsKLSAgICAgcG9zKys7Ci0gICAgIHJl dHVybiByZXQ7Ci1AQCAtNjAsNyArNTUsNyBAQCBzdHJ1Y3QgQnl0ZVN0cmVhbUJFIC8vIEpwZWcg aXMgYWx3YXlzIGJpZyBlbmRpYW4KLSAgIHVpbnQxNl90IGdldF91MTYoKQotICAgewotICAgICBp ZiAocG9zICsgMiA+IHNpemUpCi0tICAgICAgdGhyb3cgRW5kT2ZCdWZmZXI7Ci0rICAgICAgdGhy b3cgTElCUkFXX0VYQ0VQVElPTl9JT19DT1JSVVBUOwotICAgICB1aW50OF90IHIxID0gYnVmZmVy W3Bvc107Ci0gICAgIHVpbnQ4X3QgcjIgPSBidWZmZXJbcG9zICsgMV07Ci0gICAgIHBvcyArPSAy OwoKZGlmZiAtLWdpdCBhL2N2ZS0yMDI2LTUzMTgucGF0Y2ggYi9jdmUtMjAyNi01MzE4LnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmU4NTQzLi4wMDAwMDAwCi0tLSBhL2N2 ZS0yMDI2LTUzMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1kaWZmIC11 ck5yIGRhcmt0YWJsZS01LjQuMS1vcmlnL3NyYy9leHRlcm5hbC9MaWJSYXcvc3JjL2RlY29tcHJl c3NvcnMvbG9zc2xlc3NqcGVnLmNwcCBkYXJrdGFibGUtNS40LjEvc3JjL2V4dGVybmFsL0xpYlJh dy9zcmMvZGVjb21wcmVzc29ycy9sb3NzbGVzc2pwZWcuY3BwCi0tLS0gZGFya3RhYmxlLTUuNC4x LW9yaWcvc3JjL2V4dGVybmFsL0xpYlJhdy9zcmMvZGVjb21wcmVzc29ycy9sb3NzbGVzc2pwZWcu Y3BwCTIwMjYtMDEtMDkgMTA6NTk6NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZGFya3RhYmxlLTUu NC4xL3NyYy9leHRlcm5hbC9MaWJSYXcvc3JjL2RlY29tcHJlc3NvcnMvbG9zc2xlc3NqcGVnLmNw cAkyMDI2LTA0LTAyIDIzOjIzOjI3LjYzMDgyNTI4MSArMDIwMAotQEAgLTM2MSw2ICszNjEsNyBA QAotIAkJbmJpdHMtLTsKLSAgICAgICB9Ci0gCWh1ZmZ0YWJsZS5yZXNpemUoIHNpemVfdCgxVUxM IDw8IG5iaXRzKSk7Ci0rCXVpbnQzMl90IHRzaXplID0gMSA8PCBuYml0czsKLSAJZm9yICh1bnNp Z25lZCBpID0gMDsgaSA8IGh1ZmZ0YWJsZS5zaXplKCk7IGkrKykgaHVmZnRhYmxlW2ldID0gMDsK LSAKLSAJaW50IGggPSAwOwotQEAgLTM3MSwxMCArMzcyLDE0IEBACi0gICAgICAgewotICAgICAg ICAgZm9yIChpbnQgaiA9IDA7IGogPCAoMSA8PCAobmJpdHMgLSBsZW4gLSAxKSk7IGorKykKLSAg ICAgICAgIHsKLS0gICAgICAgICAgaHVmZnRhYmxlW2hdID0gKChsZW4rMSkgPDwgMTYpIHwgKHVp bnQ4X3QoaHVmZnZhbFtwb3NdICYgMHhmZikgPDwgOCkgfCB1aW50OF90KHNoaWZ0dmFsW3Bvc10g JiAweGZmKTsKLSsgICAgICAgICAgaWYgKGggPj0gdHNpemUpCi0rCQkJdGhyb3cgTElCUkFXX0VY Q0VQVElPTl9JT19DT1JSVVBUOwotKyAgICAgICAgICBodWZmdGFibGVbaF0gPSAoKGxlbiArIDEp IDw8IDE2KSB8ICh1aW50OF90KGh1ZmZ2YWxbcG9zXSAmIDB4ZmYpIDw8IDgpIHwgdWludDhfdChz aGlmdHZhbFtwb3NdICYgMHhmZik7Ci0gICAgICAgICAgIGgrKzsKLSAgICAgICAgIH0KLSAgICAg ICAgIHBvcysrOwotKwkJaWYocG9zID49IDI1NikKLSsJCQl0aHJvdyBMSUJSQVdfRVhDRVBUSU9O X0lPX0NPUlJVUFQ7Ci0gICAgICAgfQotICAgICB9Ci0gCWlmICghZGlzYWJsZV9jYWNoZSkKCmRp ZmYgLS1naXQgYS9kYXJrdGFibGUtNS40LjEtbHVhLTUuNS1zY3JpcHRzLnBhdGNoIGIvZGFya3Rh YmxlLTUuNC4xLWx1YS01LjUtc2NyaXB0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggNzUyYjZhMi4uMDAwMDAwMAotLS0gYS9kYXJrdGFibGUtNS40LjEtbHVhLTUuNS1zY3Jp cHRzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS0tLSBkYXJrdGFibGUt NS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvSERSTWVyZ2UubHVhCTIwMjUt MTEtMTQgMjA6MDQ6MjkuMDAwMDAwMDAwIC0wNTAwCi0rKysgZGFya3RhYmxlLTUuNC4xL3NyYy9l eHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL0hEUk1lcmdlLmx1YQkyMDI2LTA1LTE4IDExOjQx OjMxLjgwNDU2MDM1MyAtMDQwMAotQEAgLTI3Nyw5ICsyNzcsOSBAQCBsb2NhbCBmdW5jdGlvbiBt YWluKCkKLSAgICAgbG9jYWwgc2V0X3RhZyA9IEdVSS5UYXJnZXQuYWRkX3RhZ3MudGV4dAotICAg ICBpZiBzZXRfdGFnIH49IG5pbCB0aGVuIC0tIGFkZCBhZGRpdGlvbmFsIHVzZXItc3BlY2lmaWVk IHRhZ3MKLSAgICAgICBmb3IgdGFnIGluIHN0cmluZy5nbWF0Y2goc2V0X3RhZywgJ1teLF0rJykg ZG8KLS0gICAgICAgIHRhZyA9IENsZWFuU3BhY2VzKHRhZykKLS0gICAgICAgIHRhZyA9IGR0LnRh Z3MuY3JlYXRlKHRhZykKLS0gICAgICAgIGR0LnRhZ3MuYXR0YWNoKHRhZywgaW1wb3J0ZWQpIAot KyAgICAgICAgbG9jYWwgY2xlYW5lZF90YWcgPSBDbGVhblNwYWNlcyh0YWcpCi0rICAgICAgICBj bGVhbmVkX3RhZyA9IGR0LnRhZ3MuY3JlYXRlKGNsZWFuZWRfdGFnKQotKyAgICAgICAgZHQudGFn cy5hdHRhY2goY2xlYW5lZF90YWcsIGltcG9ydGVkKSAKLSAgICAgICBlbmQKLSAgICAgZW5kCi0g ICAgIGR0LnByaW50KF8oJ0hEUk1lcmdlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHknKSkKLS0tLSBk YXJrdGFibGUtNS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvZW5mdXNlQWR2 YW5jZWQubHVhCTIwMjUtMTEtMTQgMjA6MDQ6MjkuMDAwMDAwMDAwIC0wNTAwCi0rKysgZGFya3Rh YmxlLTUuNC4xL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2Vk Lmx1YQkyMDI2LTA1LTE4IDExOjQxOjMxLjgwNTU2MDM2MiAtMDQwMAotQEAgLTUyMCw5ICs1MjAs OSBAQCBsb2NhbCBmdW5jdGlvbiBtYWluKHN0b3JhZ2UsIGltYWdlX3RhYmxlCi0gICAgICAgICAg ICAgbG9jYWwgc2V0X3RhZyA9IEdVSS5UYXJnZXQuYWRkX3RhZ3MudGV4dAotICAgICAgICAgICAg IGlmIHNldF90YWcgfj0gbmlsIHRoZW4gLS1hZGQgYWRkaXRpb25hbCB1c2VyLXNwZWNpZmllZCB0 YWdzCi0gICAgICAgICAgICAgICAgIGZvciB0YWcgaW4gc3RyaW5nLmdtYXRjaChzZXRfdGFnLCAn W14sXSsnKSBkbwotLSAgICAgICAgICAgICAgICAgICAgdGFnID0gQ2xlYW5TcGFjZXModGFnKQot LSAgICAgICAgICAgICAgICAgICAgdGFnID0gZHQudGFncy5jcmVhdGUodGFnKQotLSAgICAgICAg ICAgICAgICAgICAgZHQudGFncy5hdHRhY2godGFnLCBpbXBvcnRlZCkgCi0rICAgICAgICAgICAg ICAgICAgICBsb2NhbCBjbGVhbmVkX3RhZyA9IENsZWFuU3BhY2VzKHRhZykKLSsgICAgICAgICAg ICAgICAgICAgIGNsZWFuZWRfdGFnID0gZHQudGFncy5jcmVhdGUoY2xlYW5lZF90YWcpCi0rICAg ICAgICAgICAgICAgICAgICBkdC50YWdzLmF0dGFjaChjbGVhbmVkX3RhZywgaW1wb3J0ZWQpIAot ICAgICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICBlbmQKLSAgICAgICAgIGVuZAotLS0t IGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9mYWNlX3Jl Y29nbml0aW9uLmx1YQkyMDI1LTExLTE0IDIwOjA0OjI5LjAwMDAwMDAwMCAtMDUwMAotKysrIGRh cmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9mYWNlX3JlY29n bml0aW9uLmx1YQkyMDI2LTA1LTE4IDExOjQxOjMxLjgwMDU2MDMxNSAtMDQwMAotQEAgLTMxMSwy NSArMzExLDI2IEBAIGxvY2FsIGZ1bmN0aW9uIGZhY2VfcmVjb2duaXRpb24gKCkKLSAgICAgICAg ICAgICBpZiBpZ25vcmVCeVRhZyAoaW1nLCBpZ25vcmVUYWdzKSB0aGVuCi0gICAgICAgICAgICAg ICBkdC5wcmludF9sb2coIkZhY2UgcmVjb2duaXRpb246IElnbm9yaW5nIGltYWdlIHdpdGggSUQg IiAuLiBpbWcuaWQpCi0gICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgbG9jYWwgdGFn X25hbWUgPSB0Ci0gICAgICAgICAgICAgICAtLSBDaGVjayBvZiB1bnJlY29nbml6ZWQgdW5rbm93 bl9wZXJzb24KLS0gICAgICAgICAgICAgIGlmIHQgPT0gInVua25vd25fcGVyc29uIiB0aGVuCi0t ICAgICAgICAgICAgICAgIHQgPSB1bmtub3duVGFnCi0rICAgICAgICAgICAgICBpZiB0YWdfbmFt ZSA9PSAidW5rbm93bl9wZXJzb24iIHRoZW4KLSsgICAgICAgICAgICAgICAgdGFnX25hbWUgPSB1 bmtub3duVGFnCi0gICAgICAgICAgICAgICBlbmQKLSAgICAgICAgICAgICAgIC0tIENoZWNrIG9m IHVucmVjb2duaXplZCBub19wZXJzb25zX2ZvdW5kCi0tICAgICAgICAgICAgICBpZiB0ID09ICJu b19wZXJzb25zX2ZvdW5kIiB0aGVuCi0tICAgICAgICAgICAgICAgIHQgPSBub25wZXJzb25zZm91 bmRUYWcKLSsgICAgICAgICAgICAgIGlmIHRhZ19uYW1lID09ICJub19wZXJzb25zX2ZvdW5kIiB0 aGVuCi0rICAgICAgICAgICAgICAgIHRhZ19uYW1lID0gbm9ucGVyc29uc2ZvdW5kVGFnCi0gICAg ICAgICAgICAgICBlbmQKLS0gICAgICAgICAgICAgIGlmIHQgfj0gIiIgYW5kIHQgfj0gbmlsIHRo ZW4KLS0gICAgICAgICAgICAgICAgaWYgY2F0ZWdvcnlUYWdTdHJpbmcgfj0gIiIgYW5kIHQgfj0g bm9ucGVyc29uc2ZvdW5kVGFnIHRoZW4KLS0gICAgICAgICAgICAgICAgICB0ID0gY2F0ZWdvcnlU YWdTdHJpbmcgLi4gInwiIC4uIHQKLSsgICAgICAgICAgICAgIGlmIHRhZ19uYW1lIH49ICIiIGFu ZCB0YWdfbmFtZSB+PSBuaWwgdGhlbgotKyAgICAgICAgICAgICAgICBpZiBjYXRlZ29yeVRhZ1N0 cmluZyB+PSAiIiBhbmQgdGFnX25hbWUgfj0gbm9ucGVyc29uc2ZvdW5kVGFnIHRoZW4KLSsgICAg ICAgICAgICAgICAgICB0YWdfbmFtZSA9IGNhdGVnb3J5VGFnU3RyaW5nIC4uICJ8IiAuLiB0YWdf bmFtZQotICAgICAgICAgICAgICAgICBlbmQgICAgICAgICAgICAgICAgICAKLS0gICAgICAgICAg ICAgICAgZHQucHJpbnRfbG9nICgiSW1nSWQ6IiAuLiBpbWcuaWQgLi4gIiBUYWc6Ii4uIHQpCi0r ICAgICAgICAgICAgICAgIGR0LnByaW50X2xvZyAoIkltZ0lkOiIgLi4gaW1nLmlkIC4uICIgVGFn OiIuLiB0YWdfbmFtZSkKLSAgICAgICAgICAgICAgICAgLS0gQ3JlYXRlIHRhZyBpZiBpdCBkb2Vz IG5vdCBleGlzdAotLSAgICAgICAgICAgICAgICBpZiB0YWdzX2xpc3RbdF0gPT0gbmlsIHRoZW4K LS0gICAgICAgICAgICAgICAgICB0YWcgPSBkdC50YWdzLmNyZWF0ZSAodCkKLS0gICAgICAgICAg ICAgICAgICB0YWdzX2xpc3RbdF0gPSB0YWcKLSsgICAgICAgICAgICAgICAgaWYgdGFnc19saXN0 W3RhZ19uYW1lXSA9PSBuaWwgdGhlbgotKyAgICAgICAgICAgICAgICAgIHRhZyA9IGR0LnRhZ3Mu Y3JlYXRlICh0YWdfbmFtZSkKLSsgICAgICAgICAgICAgICAgICB0YWdzX2xpc3RbdGFnX25hbWVd ID0gdGFnCi0gICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICB0YWcgPSB0 YWdzX2xpc3RbdF0KLSsgICAgICAgICAgICAgICAgICB0YWcgPSB0YWdzX2xpc3RbdGFnX25hbWVd Ci0gICAgICAgICAgICAgICAgIGVuZAotICAgICAgICAgICAgICAgICBpbWc6YXR0YWNoX3RhZyAo dGFnKQotICAgICAgICAgICAgICAgZW5kCi0tLS0gZGFya3RhYmxlLTUuNC4xL3NyYy9leHRlcm5h bC9sdWEtc2NyaXB0cy9jb250cmliL2dpbXAubHVhCTIwMjUtMTEtMTQgMjA6MDQ6MjkuMDAwMDAw MDAwIC0wNTAwCi0rKysgZGFya3RhYmxlLTUuNC4xL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9j b250cmliL2dpbXAubHVhCTIwMjYtMDUtMTggMTE6NDE6MzEuODAxNTYwMzI0IC0wNDAwCi1AQCAt MTQyLDggKzE0Miw4IEBAIGxvY2FsIGZ1bmN0aW9uIGdpbXBfZWRpdChzdG9yYWdlLCBpbWFnZV8K LSAgIGltZ19saXN0ID0gIiIKLSAKLSAgIGZvciBfLGV4cF9pbWcgaW4gcGFpcnMoaW1hZ2VfdGFi bGUpIGRvCi0tICAgIGV4cF9pbWcgPSBkZi5zYW5pdGl6ZV9maWxlbmFtZShleHBfaW1nKQotLSAg ICBpbWdfbGlzdCA9IGltZ19saXN0IC4uZXhwX2ltZy4uICIgIgotKyAgICBsb2NhbCBzYW5pdGl6 ZWQgPSBkZi5zYW5pdGl6ZV9maWxlbmFtZShleHBfaW1nKQotKyAgICBpbWdfbGlzdCA9IGltZ19s aXN0IC4uc2FuaXRpemVkLi4gIiAiCi0gICBlbmQKLSAKLSAgIGR0LnByaW50KF8oImxhdW5jaGlu ZyBHSU1QLi4uIikpCi0tLS0gZGFya3RhYmxlLTUuNC4xL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0 cy9jb250cmliL2ltYWdlX3N0YWNrLmx1YQkyMDI1LTExLTE0IDIwOjA0OjI5LjAwMDAwMDAwMCAt MDUwMAotKysrIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJp Yi9pbWFnZV9zdGFjay5sdWEJMjAyNi0wNS0xOCAxMTo0MTozMS44MDM1NjAzNDMgLTA0MDAKLUBA IC0zMjMsOCArMzIzLDggQEAgbG9jYWwgZnVuY3Rpb24gY2xlYW51cChpbWdfbGlzdCkKLSAgIGR0 LnByaW50X2xvZygiaW1hZ2UgbGlzdCBpcyAiIC4uIGltZ19saXN0KQotICAgZmlsZXMgPSBkdS5z cGxpdChpbWdfbGlzdCwgIiAiKQotICAgZm9yIF8sZiBpbiBpcGFpcnMoZmlsZXMpIGRvCi0tICAg IGYgPSBzdHJpbmcuZ3N1YihmLCAnW1wnXCJdJywgIiIpCi0tICAgIG9zLnJlbW92ZShmKQotKyAg ICBsb2NhbCBjbGVhbmVkID0gc3RyaW5nLmdzdWIoZiwgJ1tcJ1wiXScsICIiKQotKyAgICBvcy5y ZW1vdmUoY2xlYW5lZCkKLSAgIGVuZAotIGVuZAotIAotLS0tIGRhcmt0YWJsZS01LjQuMS9zcmMv ZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvZ2V0X2xpYl9tYW5wYWdlcy5sdWEJMjAyNS0xMS0x NCAyMDowNDoyOS4wMDAwMDAwMDAgLTA1MDAKLSsrKyBkYXJrdGFibGUtNS40LjEvc3JjL2V4dGVy bmFsL2x1YS1zY3JpcHRzL3Rvb2xzL2dldF9saWJfbWFucGFnZXMubHVhCTIwMjYtMDUtMTggMTE6 NDE6MzEuODAxNTYwMzI0IC0wNDAwCi1AQCAtNjMsOCArNjMsOCBAQCBsb2NhbCBvdXRwdXQgPSBp by5wb3BlbigiY2QgIi4uZHQuY29uZmlnCi0gLS0gbG9vcCB0aHJvdWdoIHRoZSBsaWJyYXJpZXMK LSAKLSBmb3IgbGluZSBpbiBvdXRwdXQ6bGluZXMoKSBkbwotLSAgbGluZSA9IHN0cmluZy5nc3Vi KGxpbmUsICIvIiwgIi4iKQotLSAgbG9jYWwgbGliX25hbWUgPSBsaW5lOnN1YigzLC01KQotKyAg bG9jYWwgY2xlYW5lZF9saW5lID0gc3RyaW5nLmdzdWIobGluZSwgIi8iLCAiLiIpCi0rICBsb2Nh bCBsaWJfbmFtZSA9IGNsZWFuZWRfbGluZTpzdWIoMywtNSkKLSAgIGlmIGxpYl9uYW1lOmxlbigp ID4gMiB0aGVuCi0gICAgIGxpYl9uYW1lID0gImxpYi8iIC4uIGxpYl9uYW1lCi0gICAgIGxvY2Fs IGxpYiA9IHJlcXVpcmUobGliX25hbWUpCi0tLS0gZGFya3RhYmxlLTUuNC4xL3NyYy9leHRlcm5h bC9sdWEtc2NyaXB0cy90b29scy9nZXRfbGliZG9jLmx1YQkyMDI1LTExLTE0IDIwOjA0OjI5LjAw MDAwMDAwMCAtMDUwMAotKysrIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlw dHMvdG9vbHMvZ2V0X2xpYmRvYy5sdWEJMjAyNi0wNS0xOCAxMTo0MTozMS44MDM1NjAzNDMgLTA0 MDAKLUBAIC00MCw4ICs0MCw4IEBAIGxvY2FsIG91dHB1dCA9IGlvLnBvcGVuKCJjZCAiLi5kdC5j b25maWcKLSAtLSBsb29wIHRocm91Z2ggdGhlIGxpYnJhcmllcwotIAotIGZvciBsaW5lIGluIG91 dHB1dDpsaW5lcygpIGRvCi0tICBsaW5lID0gc3RyaW5nLmdzdWIobGluZSwgIi8iLCAiLiIpCi0t ICBsb2NhbCBsaWJfbmFtZSA9IGxpbmU6c3ViKDMsLTUpCi0rICBsb2NhbCBjbGVhbmVkX2xpbmUg PSBzdHJpbmcuZ3N1YihsaW5lLCAiLyIsICIuIikKLSsgIGxvY2FsIGxpYl9uYW1lID0gY2xlYW5l ZF9saW5lOnN1YigzLC01KQotICAgaWYgbGliX25hbWU6bGVuKCkgPiAyIHRoZW4KLSAgICAgbGli X25hbWUgPSAibGliLyIgLi4gbGliX25hbWUKLSAgICAgbG9jYWwgbGliID0gcmVxdWlyZShsaWJf bmFtZSkKLS0tLSBkYXJrdGFibGUtNS40LjEvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xz L3NjcmlwdF9tYW5hZ2VyLmx1YQkyMDI1LTExLTE0IDIwOjA0OjI5LjAwMDAwMDAwMCAtMDUwMAot KysrIGRhcmt0YWJsZS01LjQuMS9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvc2NyaXB0 X21hbmFnZXIubHVhCTIwMjYtMDUtMTggMTE6NDE6MzEuNzk5NTYwMzA2IC0wNDAwCi1AQCAtODk0 LDcgKzg5NCw5IEBAIGxvY2FsIGZ1bmN0aW9uIGluc3RhbGxfc2NyaXB0cygpCi0gICAgICAgICAg IHNtLndpZGdldHMuZm9sZGVyX3NlbGVjdG9yLnNlbGVjdGVkID0gaQotICAgICAgICAgICBicmVh awotICAgICAgICAgZW5kCi0tICAgICAgICBpID0gaSArIDEKLSsgICAgICAgIC0tIEx1YSA1LjU6 IGZvciBsb29wIGNvbnRyb2wgdmFyaWFibGVzIGFyZSByZWFkLW9ubHkuIFRoaXMgaW5jcmVtZW50 Ci0rICAgICAgICAtLSB3YXMgYWx3YXlzIGEgbm8tb3Agc2luY2UgbnVtZXJpYyBmb3IgbG9vcHMg dXNlIGFuIGludGVybmFsIGNvdW50ZXIuCi0rICAgICAgICAtLSBpID0gaSArIDEKLSAgICAgICBl bmQKLSAKLSAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImNsZWFyaW5nIHRleHQgZmllbGRzIikK CmRpZmYgLS1naXQgYS9kYXJrdGFibGUtNS40LjEtbHVhLTUuNS5wYXRjaCBiL2Rhcmt0YWJsZS01 LjQuMS1sdWEtNS41LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDVlZjBl Li4wMDAwMDAwCi0tLSBhL2Rhcmt0YWJsZS01LjQuMS1sdWEtNS41LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsODggKzAsMCBAQAotZGlmZiAtdXAgZGFya3RhYmxlLTUuNC4xL3NyYy9DTWFrZUxp c3RzLnR4dC5sdWE1NSBkYXJrdGFibGUtNS40LjEvc3JjL0NNYWtlTGlzdHMudHh0Ci0tLS0gZGFy a3RhYmxlLTUuNC4xL3NyYy9DTWFrZUxpc3RzLnR4dC5sdWE1NQkyMDI2LTAyLTI3IDE1OjA4OjQy Ljc1NTY5NTQ2OCAtMDUwMAotKysrIGRhcmt0YWJsZS01LjQuMS9zcmMvQ01ha2VMaXN0cy50eHQJ MjAyNi0wMi0yNyAxNTowODo0OS45MDUxOTMzNjYgLTA1MDAKLUBAIC03MDYsMTQgKzcwNiwxNCBA QCBjb25maWd1cmVfZmlsZSgiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ECi0gIyBCdWlsZCBleHRl cm5hbCBkZXBzCi0gIwotIGlmKFVTRV9MVUEpCi0tICBmaW5kX3BhY2thZ2UoTHVhNTQgNS40KQot LSAgaWYoTHVhNTRfRk9VTkQpCi0rICBmaW5kX3BhY2thZ2UoTHVhNTUgNS41KQotKyAgaWYoTHVh NTVfRk9VTkQpCi0gICAgIG1lc3NhZ2UoU1RBVFVTICJMdWEgc3VwcG9ydDogRW5hYmxlZCIpCi0t ICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoU1lTVEVNICR7THVhNTRfSU5DTFVERV9ESVJTfSkKLS0g ICAgbGlzdChBUFBFTkQgTElCUyAke0x1YTU0X0xERkxBR1N9KQotKyAgICBpbmNsdWRlX2RpcmVj dG9yaWVzKFNZU1RFTSAke0x1YTU1X0lOQ0xVREVfRElSU30pCi0rICAgIGxpc3QoQVBQRU5EIExJ QlMgJHtMdWE1NV9MREZMQUdTfSkKLSAgIGVsc2UoKQotICAgICBpZihET05UX1VTRV9JTlRFUk5B TF9MVUEpCi0tICAgICAgbWVzc2FnZShTVEFUVVMgIkx1YSBzdXBwb3J0OiBTeXN0ZW0gbGlicmFy eSBmb3IgbHVhIDUuNCBub3QgZm91bmQgKHRvIHVzZSBkYXJrdGFibGUncyB2ZXJzaW9uIHVzZSAt RERPTlRfVVNFX0lOVEVSTkFMX0xVQT1PZmYpIikKLSsgICAgICBtZXNzYWdlKFNUQVRVUyAiTHVh IHN1cHBvcnQ6IFN5c3RlbSBsaWJyYXJ5IGZvciBsdWEgNS41IG5vdCBmb3VuZCAodG8gdXNlIGRh cmt0YWJsZSdzIHZlcnNpb24gdXNlIC1ERE9OVF9VU0VfSU5URVJOQUxfTFVBPU9mZikiKQotICAg ICAgIHNldChVU0VfTFVBIE9GRikKLSAgICAgZWxzZShET05UX1VTRV9JTlRFUk5BTF9MVUEpCi0g ICAgICAgbWVzc2FnZShTVEFUVVMgIkx1YSBzdXBwb3J0OiBTeXN0ZW0gbGlicmFyeSBub3QgZm91 bmQgKHVzaW5nIGRhcmt0YWJsZSdzIHZlcnNpb24pIikKLUBAIC03NzUsOSArNzc1LDkgQEAgZWxz ZShVU0VfTFVBKQotIGVuZGlmKFVTRV9MVUEpCi0gCi0gaWYoVVNFX0xVQSkKLS0gIGlmKE5PVCBM dWE1NF9GT1VORCkKLSsgIGlmKE5PVCBMdWE1NV9GT1VORCkKLSAgICAgbGlzdChBUFBFTkQgTElC X0RFUFMgbHVhKSAjIDJuZCBoYWxmIG9mIHRoZSB1Z2xpbmVzcyA6LwotLSAgZW5kaWYoTk9UIEx1 YTU0X0ZPVU5EKQotKyAgZW5kaWYoTk9UIEx1YTU1X0ZPVU5EKQotICAgIyBsaWJsYXV0b2MgZm9y IGx1YSBhdXRvbWF0ZWQgaW50ZXJmYWNlIGdlbmVyYXRpb24KLSAgIGFkZF9saWJyYXJ5KGxhdXRv Y19zdGF0aWMgU1RBVElDIElNUE9SVEVEKQotICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKGxhdXRv Y19zdGF0aWMgUFJPUEVSVElFUyBJTVBPUlRFRF9MT0NBVElPTiAke0NNQUtFX0NVUlJFTlRfQklO QVJZX0RJUn0vZXh0ZXJuYWwvTHVhQXV0b0MvbGlibGF1dG9jLmEgUE9TSVRJT05fSU5ERVBFTkRF TlRfQ09ERSBUcnVlKQotZGlmZiAtdXAgZGFya3RhYmxlLTUuNC4xL2NtYWtlL21vZHVsZXMvRmlu ZEx1YTU1LmNtYWtlLmx1YTU1IGRhcmt0YWJsZS01LjQuMS9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1 NS5jbWFrZQotLS0tIGRhcmt0YWJsZS01LjQuMS9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1NS5jbWFr ZS5sdWE1NQkyMDI2LTAyLTI3IDE1OjEzOjQ5LjAzNzU3NTAyOSAtMDUwMAotKysrIGRhcmt0YWJs ZS01LjQuMS9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1NS5jbWFrZQkyMDI2LTAyLTI3IDE1OjEyOjU5 Ljk0MjUzMzczOSAtMDUwMAotQEAgLTAsMCArMSw0OSBAQAotK1NFVChMdWFfVkVSU0lPTl9UT09f SElHSCA1LjYpCi0rCi0raW5jbHVkZShQcmVidWlsdCkKLStpbmNsdWRlKExpYkZpbmRNYWNyb3Mp Ci0rCi0rbGliZmluZF9wa2dfc2VhcmNoX21vZHVsZShMdWE1NSBsdWE1NSBsdWE1LjUgbHVhLTUu NSBsdWEpCi0rCi0raWYoTHVhNTVfRklORF9WRVJTSU9OKQotKyAgY21ha2VfbWluaW11bV9yZXF1 aXJlZChWRVJTSU9OIDMuMTAuMCkKLSsgIHNldChMdWE1NV9GQUlMRURfVkVSU0lPTl9DSEVDSyB0 cnVlKQotKwotKyAgaWYoTHVhNTVfRklORF9WRVJTSU9OX0VYQUNUKQotKyAgICBpZihMdWE1NV9W RVJTSU9OIFZFUlNJT05fRVFVQUwgTHVhNTVfRklORF9WRVJTSU9OKQotKyAgICAgIHNldChMdWE1 NV9GQUlMRURfVkVSU0lPTl9DSEVDSyBmYWxzZSkKLSsgICAgZW5kaWYoKQotKyAgZWxzZSgpCi0r ICAgIGlmKEx1YTU1X1ZFUlNJT04gVkVSU0lPTl9FUVVBTCAgIEx1YTU1X0ZJTkRfVkVSU0lPTiBP UgotKyAgICAgICBMdWE1NV9WRVJTSU9OIFZFUlNJT05fR1JFQVRFUiBMdWE1NV9GSU5EX1ZFUlNJ T04gQU5ECi0rICAgICAgIEx1YTU1X1ZFUlNJT04gVkVSU0lPTl9MRVNTIEx1YV9WRVJTSU9OX1RP T19ISUdIKQotKyAgICAgIHNldChMdWE1NV9GQUlMRURfVkVSU0lPTl9DSEVDSyBmYWxzZSkKLSsg ICAgZW5kaWYoKQotKyAgZW5kaWYoKQotKwotKyAgaWYoTHVhNTVfRkFJTEVEX1ZFUlNJT05fQ0hF Q0spCi0rICAgIGlmKEx1YTU1X0ZJTkRfUkVRVUlSRUQgQU5EIE5PVCBMdWE1NV9GSU5EX1FVSUVU TFkpCi0rICAgICAgICBpZihMdWE1NV9GSU5EX1ZFUlNJT05fRVhBQ1QpCi0rICAgICAgICAgICAg bWVzc2FnZShGQVRBTF9FUlJPUiAiTHVhNS41IHZlcnNpb24gY2hlY2sgZmFpbGVkLiAgVmVyc2lv biAke0x1YTU1X1ZFUlNJT059IHdhcyBmb3VuZCwgdmVyc2lvbiAke0x1YTU1X0ZJTkRfVkVSU0lP Tn0gaXMgbmVlZGVkIGV4YWN0bHkuIikKLSsgICAgICAgIGVsc2UoTHVhNTVfRklORF9WRVJTSU9O X0VYQUNUKQotKyAgICAgICAgICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkx1YTUuNSB2ZXJzaW9u IGNoZWNrIGZhaWxlZC4gIFZlcnNpb24gJHtMdWE1NV9WRVJTSU9OfSB3YXMgZm91bmQsIGF0IGxl YXN0IHZlcnNpb24gJHtMdWE1NV9GSU5EX1ZFUlNJT059IGlzIHJlcXVpcmVkIikKLSsgICAgICAg IGVuZGlmKEx1YTU1X0ZJTkRfVkVSU0lPTl9FWEFDVCkKLSsgICAgZW5kaWYoTHVhNTVfRklORF9S RVFVSVJFRCBBTkQgTk9UIEx1YTU1X0ZJTkRfUVVJRVRMWSkKLSsKLSsgICAgc2V0KEx1YTU1X0ZP VU5EIGZhbHNlKQotKyAgZW5kaWYoTHVhNTVfRkFJTEVEX1ZFUlNJT05fQ0hFQ0spCi0rCi0rZW5k aWYoTHVhNTVfRklORF9WRVJTSU9OKQotKwotK2lmKEx1YTU1X0ZPVU5EKQotKyAgc2V0KEx1YTU1 IE9OIENBQ0hFIEJPT0wgIkJ1aWxkIHdpdGggbHVhNS41IHN1cHBvcnQuIikKLSsgIGlmKEFQUExF KQotKyAgICBmb3JlYWNoKGkgJHtMdWE1NV9MSUJSQVJJRVN9KQotKyAgICAgIGZpbmRfbGlicmFy eShfbHVhNTVfTElCUkFSWSBOQU1FUyAke2l9IEhJTlRTICR7THVhNTVfTElCUkFSWV9ESVJTfSkK LSsgICAgICBsaXN0KEFQUEVORCBMdWE1NV9MSUJSQVJJRVNfRlVMTCAke19sdWE1NV9MSUJSQVJZ fSkKLSsgICAgICB1bnNldChfbHVhNTVfTElCUkFSWSBDQUNIRSkKLSsgICAgZW5kZm9yZWFjaChp KQotKyAgICBzZXQoTHVhNTVfTElCUkFSSUVTICR7THVhNTVfTElCUkFSSUVTX0ZVTEx9KQotKyAg ICB1bnNldChMdWE1NV9MSUJSQVJJRVNfRlVMTCBDQUNIRSkKLSsgIGVuZGlmKCkKLStlbmRpZihM dWE1NV9GT1VORCkKCmRpZmYgLS1naXQgYS9kYXJrdGFibGUuc3BlYyBiL2Rhcmt0YWJsZS5zcGVj CmluZGV4IDNiZGY0M2QuLjc4YjQ2YWUgMTAwNjQ0Ci0tLSBhL2Rhcmt0YWJsZS5zcGVjCisrKyBi L2Rhcmt0YWJsZS5zcGVjCkBAIC02LDcgKzYsNyBAQAogIyMjCiAKIE5hbWU6IGRhcmt0YWJsZQot VmVyc2lvbjogNS40LjEKK1ZlcnNpb246IDUuNi4xCiBSZWxlYXNlOiAlYXV0b3JlbGVhc2UKIAog U3VtbWFyeTogVXRpbGl0eSB0byBvcmdhbml6ZSBhbmQgZGV2ZWxvcCByYXcgaW1hZ2VzCkBAIC0x OCwxNiArMTgsOCBAQCBTb3VyY2UwOiBodHRwczovL2dpdGh1Yi5jb20vZGFya3RhYmxlLW9yZy9k YXJrdGFibGUvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0lewogI1NvdXJjZTE6IGh0dHBzOi8v Z2l0aHViLmNvbS9kYXJrdGFibGUtb3JnL2Rhcmt0YWJsZS9yZWxlYXNlcy9kb3dubG9hZC9yZWxl YXNlLSUle3ZlcnNpb259LyUle25hbWV9LSUle3ZlcnNpb259LnRhci54ei5hc2MKICNTb3VyY2Uy OiBodHRwczovL2tleXNlcnZlci51YnVudHUuY29tL3Brcy9sb29rdXA/b3A9Z2V0JnNlYXJjaD0w eGYxMGY5Njg2NjUyYjBlOTQ5ZmNkOTRjMzE4ZGNhMTIzZjk0OWJkM2IKIAotUGF0Y2gwOiAwMDAx LUFkZC01LjQuMS1pbi1hcHBkYXRhLnBhdGNoCi0KLVBhdGNoMTogZGFya3RhYmxlLTUuNC4xLWx1 YS01LjUucGF0Y2gKLSMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9p ZD0yNDU0MjIyCi1QYXRjaDI6IGN2ZS0yMDI2LTUzMTgucGF0Y2gKLSMgVGhpcyB1cHN0cmVhbSBj aGFuZ2UgaXMgbmVjZXNzYXJ5IGZvciB0aGUgQ1ZFLTIwMjYtNTMxOCBwYXRjaCBhYm92ZSB0byBh Y3R1YWxseSBmaW5kIHRoZSBlbnVtIHZhbHVlcwotIyBodHRwczovL2dpdGh1Yi5jb20vTGliUmF3 L0xpYlJhdy9jb21taXQvOGRjNjhlMmE0NTUxZjAzODM4YjdmMmRhOTI3NmU1ZDFlYjIwYmNhMAot UGF0Y2gzOiA4ZGM2OGUyYTQ1NTFmMDM4MzhiN2YyZGE5Mjc2ZTVkMWViMjBiY2EwLnBhdGNoCiAj IGh0dHBzOi8vZ2l0aHViLmNvbS9kYXJrdGFibGUtb3JnL2x1YS1zY3JpcHRzL3B1bGwvNjc4Ci1Q YXRjaDQ6IGRhcmt0YWJsZS01LjQuMS1sdWEtNS41LXNjcmlwdHMucGF0Y2gKK1BhdGNoMDogbHVh LnBhdGNoCiAKIEJ1aWxkUmVxdWlyZXM6IGNhaXJvLWRldmVsCiAjIGNsYW5nIGlzIG9wdGlvbmFs IChPcGVuQ0wga2VybmVsIGJ1aWxkIHRlc3QpCkBAIC0zOCwxNyArMzAsOSBAQCBCdWlsZFJlcXVp cmVzOiBjb2xvcmQtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6IGN1cHMtZGV2ZWwKIEJ1aWxkUmVxdWly ZXM6IGRlc2t0b3AtZmlsZS11dGlscwogQnVpbGRSZXF1aXJlczogZXhpdjItZGV2ZWwgPj0gMC4y Ny4yCi0laWYgJXtkZWZpbmVkIGZlZG9yYX0KIEJ1aWxkUmVxdWlyZXM6IGdjYwotJWVuZGlmCi0l aWYgMCV7P3JoZWx9Ci1CdWlsZFJlcXVpcmVzOiBnY2MtdG9vbHNldC0xMgotI0J1aWxkUmVxdWly ZXM6IGdjYy10b29sc2V0LTEyLWdjYwotI0J1aWxkUmVxdWlyZXM6IGdjYy10b29sc2V0LTEyLWFu bm9iaW4tcGx1Z2luLWdjYwotJWVuZGlmCi0laWYgJXtkZWZpbmVkIGZlZG9yYX0KLUJ1aWxkUmVx dWlyZXM6IGdtaWMtZGV2ZWwKLSVlbmRpZgorQnVpbGRSZXF1aXJlczogZ2xpYjItZGV2ZWwgPj0g Mi41NgorQnVpbGRSZXF1aXJlczogZ21pYy1kZXZlbCA+PSAyLjcuMAogQnVpbGRSZXF1aXJlczog R3JhcGhpY3NNYWdpY2stZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6IGd0azMtZGV2ZWwgPj0gMy4yNC4x NQogQnVpbGRSZXF1aXJlczogaW50bHRvb2wKQEAgLTYwLDEwICs0NCw4IEBAIEJ1aWxkUmVxdWly ZXM6IGxlbnNmdW4tZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6IGxpYmFwcHN0cmVhbS1nbGliCiBCdWls ZFJlcXVpcmVzOiBjbWFrZShsaWJhdmlmKSA+PSAwLjkuMwogQnVpbGRSZXF1aXJlczogbGliY3Vy bC1kZXZlbCA+PSA3LjU2Ci1CdWlsZFJlcXVpcmVzOiBsaWJncGhvdG8yLWRldmVsID49IDIuNC41 Ci0laWYgKCgle2RlZmluZWQgcmhlbH0gJiYgMCV7P3JoZWx9ID49IDkpIHx8ICV7ZGVmaW5lZCBm ZWRvcmF9KQorQnVpbGRSZXF1aXJlczogbGliZ3Bob3RvMi1kZXZlbCA+PSAyLjUKIEJ1aWxkUmVx dWlyZXM6IGxpYmhlaWYtZGV2ZWwgPj0gMS4xMy4wCi0lZW5kaWYKIEJ1aWxkUmVxdWlyZXM6IGxp YmljdS1kZXZlbAogQnVpbGRSZXF1aXJlczogbGlianBlZy1kZXZlbAogQnVpbGRSZXF1aXJlczog bGlianhsLWRldmVsID49IDAuNy4wCkBAIC03MSwyNCArNTMsMjAgQEAgQnVpbGRSZXF1aXJlczog bGlicG5nLWRldmVsID49IDEuNS4wCiBCdWlsZFJlcXVpcmVzOiBsaWJyc3ZnMi1kZXZlbCA+PSAy LjI2CiBCdWlsZFJlcXVpcmVzOiBsaWJzZWNyZXQtZGV2ZWwKIEJ1aWxkUmVxdWlyZXM6IGxpYnRp ZmYtZGV2ZWwKLUJ1aWxkUmVxdWlyZXM6IGxpYndlYnAtZGV2ZWwKK0J1aWxkUmVxdWlyZXM6IGxp YndlYnAtZGV2ZWwgPj0gMC4zLjAKICMgbGx2bS1kZXZlbCBpcyBvcHRpb25hbCAoT3BlbkNMIGtl cm5lbCBidWlsZCB0ZXN0KQogQnVpbGRSZXF1aXJlczogbGx2bS1kZXZlbCA+PSA3Ci0laWYgKCV7 ZGVmaW5lZCByaGVsfSAmJiAwJXs/cmhlbH0gPj0gOSkgfHwgJXtkZWZpbmVkIGZlZG9yYX0KIEJ1 aWxkUmVxdWlyZXM6IHBrZ2NvbmZpZyhsdWEpCi0lZW5kaWYKICMgb3BlbmNsLWhlYWRlcnMgaXMg b3B0aW9uYWwgKE9wZW5DTCBrZXJuZWwgYnVpbGQgdGVzdCkKIEJ1aWxkUmVxdWlyZXM6IG9wZW5j bC1oZWFkZXJzCi0laWYgKCV7ZGVmaW5lZCByaGVsfSAmJiAwJXs/cmhlbH0gPj0gOSkgfHwgJXtk ZWZpbmVkIGZlZG9yYX0KIEJ1aWxkUmVxdWlyZXM6IGNtYWtlKE9wZW5FWFIpID4gMy4wCi1CdWls ZFJlcXVpcmVzOiBjbWFrZShJbWF0aCkKLSVlbHNlCi1CdWlsZFJlcXVpcmVzOiBPcGVuRVhSLWRl dmVsCitCdWlsZFJlcXVpcmVzOiBjbWFrZShJbWF0aCkgPj0gMy4xLjAKKyVpZiAoJXtkZWZpbmVk IGZlZG9yYX0gJiYgMCV7P2ZlZG9yYX0gPiA0MykKK0J1aWxkUmVxdWlyZXM6IGxpYmFyY2hpdmUt ZGV2ZWwgPj0gMy44LjUKK0J1aWxkUmVxdWlyZXM6IG9ubnhydW50aW1lLWRldmVsID49IDEuMTgK ICVlbmRpZgogQnVpbGRSZXF1aXJlczogb3BlbmpwZWcyLWRldmVsCi0laWYgJXtkZWZpbmVkIGZl ZG9yYX0KIEJ1aWxkUmVxdWlyZXM6IG9zbS1ncHMtbWFwLWRldmVsID49IDEuMAotJWVuZGlmCiBC dWlsZFJlcXVpcmVzOiBwZXJsLWludGVycHJldGVyCiBCdWlsZFJlcXVpcmVzOiBwZXJsKEZpbmRC aW4pCiBCdWlsZFJlcXVpcmVzOiBwZXJsKGxpYikKQEAgLTk2LDkgKzc0LDEwIEBAIEJ1aWxkUmVx dWlyZXM6IHBrZ2NvbmZpZyA+PSAwLjIyCiBCdWlsZFJlcXVpcmVzOiBwbzRhCiBCdWlsZFJlcXVp cmVzOiBwZXJsLXBvZGxhdG9ycwogQnVpbGRSZXF1aXJlczogcG9ydG1pZGktZGV2ZWwKLUJ1aWxk UmVxdWlyZXM6IHB1Z2l4bWwtZGV2ZWwgPj0gMS41CitCdWlsZFJlcXVpcmVzOiBwb3RyYWNlLWRl dmVsID49IDEuMTYKK0J1aWxkUmVxdWlyZXM6IHB1Z2l4bWwtZGV2ZWwgPj0gMS44CiBCdWlsZFJl cXVpcmVzOiBjbWFrZShTREwyKQotQnVpbGRSZXF1aXJlczogc3FsaXRlLWRldmVsCitCdWlsZFJl cXVpcmVzOiBzcWxpdGUtZGV2ZWwgPj0gMy4yNgogQnVpbGRSZXF1aXJlczogemxpYi1kZXZlbCA+ PSAxLjIuMTEKIAogUmVxdWlyZXM6IGlzby1jb2RlcyA+PSAzLjY2CkBAIC0xMDgsOSArODcsNiBA QCBSZXF1aXJlczogaXNvLWNvZGVzID49IDMuNjYKIFByb3ZpZGVzOiBidW5kbGVkKHJhd3NwZWVk KQogIyBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTIyNTI0MzIK IFByb3ZpZGVzOiBidW5kbGVkKGxpYnJhdykKLSVpZiAle2RlZmluZWQgcmhlbH0gJiYgMCV7P3Jo ZWx9ID09IDgKLVByb3ZpZGVzOiBidW5kbGVkKGx1YSkKLSVlbmRpZgogCiAjIFVuc3VwcG9ydGVk IENQVSBhcmNoaXRlY3R1cmVzCiAjIGZpbGxlZCBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20v c2hvd19idWcuY2dpP2lkPTIwMzg2ODQKQEAgLTE1OSwzNSArMTM1LDE4IEBAIHNlZCAtaSAtZSAn cywgXCJleHRlcm5hbC9DTC9cKlwuaFwiICwgLCcgc3JjL0NNYWtlTGlzdHMudHh0CiAKIAogJWJ1 aWxkCi0KLSMKLSMgR2VybWFubyBNYXNzdWxsbzogSSB3YW50ZWQgdG8gdXNlICUlZWxzZWlmIGJ1 dCBpdCBpcyBub3QgeWV0IGFjdGl2ZSBpbgotIyBGZWRvcmEsIGV0Yy4sIGRlc3BpdGUgaXMgc3Vw cG9ydGVkIHVwc3RyZWFtLiBJIGRpZCBub3QgY29tcGFyZSB0aGUgRmVkb3JhIFJQTSB2ZXJzaW9u Ci0jIGJ1dCBJIGVtcGlyaWNhbGx5IHZlcmlmaWVkIHRoYXQgJSVlbHNlaWYgYW5kICUlZWxpZiBk byBub3Qgd29yayBoZXJlLCBldmVuIGlmIHlvdSBkb24ndCBnZXQKLSMgZXJyb3JzIGR1cmluZyBi dWlsZHMKLSMgaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9p c3N1ZXMvMzExCi0jIGh0dHBzOi8vZ2l0aHViLmNvbS9kZWJidWlsZC9kZWJidWlsZC9pc3N1ZXMv MTgyCi0jIAotIwotIyUlaWYgJSV7ZGVmaW5lZCByaGVsfQotJWlmICV7ZGVmaW5lZCByaGVsfQot LiAvb3B0L3JoL2djYy10b29sc2V0LTEyL2VuYWJsZQotJWVuZGlmCi0laWYgKCV7ZGVmaW5lZCBy aGVsfSAmJiAwJXs/cmhlbH0gPT0gOCkKLW1rZGlyICV7X3RhcmdldF9wbGF0Zm9ybX0KLXB1c2hk ICV7X3RhcmdldF9wbGF0Zm9ybX0KKyVpZiAoJXtkZWZpbmVkIGZlZG9yYX0gJiYgMCV7P2ZlZG9y YX0gPiA0MykKICVjbWFrZSBcCiAgICAgICAgIC1EQ01BS0VfTElCUkFSWV9QQVRIOlBBVEg9JXtf bGliZGlyfSBcCiAgICAgICAgIC1EVVNFX0dFTzpCT09MRUFOPU9OIFwKICAgICAgICAgLURDTUFL RV9CVUlMRF9UWVBFOlNUUklORz1SZWxlYXNlIFwKICAgICAgICAgLURCSU5BUllfUEFDS0FHRV9C VUlMRD0xIFwKLSAgICAgICAgLURET05UX1VTRV9JTlRFUk5BTF9MVUE9T0ZGIFwKICAgICAgICAg LURCVUlMRF9OT0lTRV9UT09MUz1PTiBcCiAgICAgICAgIC1EQlVJTERfQ1VSVkVfVE9PTFM9T04g XAotICAgICAgICAtREhBVkVfR01JQz1PRkYgXAogICAgICAgICAtRFJBV1NQRUVEX0VOQUJMRV9M VE89T04gXAotICAgICAgICAuLgotJWVsc2UKKyAgICAgICAgLURVU0VfQUk9T04gXAorICAgICAg ICAtRE9OTlhSVU5USU1FX09GRkxJTkU9T04KKyVlbGlmICgle2RlZmluZWQgZmVkb3JhfSAmJiAw JXs/ZmVkb3JhfSA9PSA0MykKICVjbWFrZSBcCiAgICAgICAgIC1EQ01BS0VfTElCUkFSWV9QQVRI OlBBVEg9JXtfbGliZGlyfSBcCiAgICAgICAgIC1EVVNFX0dFTzpCT09MRUFOPU9OIFwKQEAgLTE5 OCwyNSArMTU3LDEzIEBAIHB1c2hkICV7X3RhcmdldF9wbGF0Zm9ybX0KICAgICAgICAgLURSQVdT UEVFRF9FTkFCTEVfTFRPPU9OCiAlZW5kaWYKIAotJWlmICgoJXtkZWZpbmVkIHJoZWx9ICYmIDAl ez9yaGVsfSA+IDgpIHx8ICV7ZGVmaW5lZCBmZWRvcmF9KQorCiAlY21ha2VfYnVpbGQKLSVlbHNl Ci0lbWFrZV9idWlsZAotcG9wZAotJWVuZGlmCiAKIAogJWluc3RhbGwKLSVpZiAle2RlZmluZWQg cmhlbH0KLS4gL29wdC9yaC9nY2MtdG9vbHNldC0xMi9lbmFibGUKLSVlbmRpZgotJWlmICgoJXtk ZWZpbmVkIHJoZWx9ICYmIDAlez9yaGVsfSA+IDgpIHx8ICV7ZGVmaW5lZCBmZWRvcmF9KQogJWNt YWtlX2luc3RhbGwKLSVlbHNlCi1wdXNoZCAle190YXJnZXRfcGxhdGZvcm19Ci0lbWFrZV9pbnN0 YWxsCi1wb3BkCi0lZW5kaWYKKwogCiAlZmluZF9sYW5nICV7bmFtZX0KIHJtIC1yZiAle2J1aWxk cm9vdH0le19kYXRhZGlyfS9kb2MvZGFya3RhYmxlCgpkaWZmIC0tZ2l0IGEvbHVhLnBhdGNoIGIv bHVhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0Y2QzMjMKLS0t IC9kZXYvbnVsbAorKysgYi9sdWEucGF0Y2gKQEAgLTAsMCArMSwzMDY5IEBACitkaWZmIC11ck5y IGRhcmt0YWJsZS01LjYuMC1vcmlnL2NtYWtlL21vZHVsZXMvRmluZEx1YTU1LmNtYWtlIGRhcmt0 YWJsZS01LjYuMC9jbWFrZS9tb2R1bGVzL0ZpbmRMdWE1NS5jbWFrZQorLS0tIGRhcmt0YWJsZS01 LjYuMC1vcmlnL2NtYWtlL21vZHVsZXMvRmluZEx1YTU1LmNtYWtlCTE5NzAtMDEtMDEgMDE6MDA6 MDAuMDAwMDAwMDAwICswMTAwCisrKysgZGFya3RhYmxlLTUuNi4wL2NtYWtlL21vZHVsZXMvRmlu ZEx1YTU1LmNtYWtlCTIwMjYtMDktMDEgMDk6Mzk6NTQuOTkxMTM0NDc4ICswMjAwCitAQCAtMCww ICsxLDQ5IEBACisrU0VUKEx1YV9WRVJTSU9OX1RPT19ISUdIIDUuNikKKysKKytpbmNsdWRlKFBy ZWJ1aWx0KQorK2luY2x1ZGUoTGliRmluZE1hY3JvcykKKysKKytsaWJmaW5kX3BrZ19zZWFyY2hf bW9kdWxlKEx1YTU1IGx1YTU1IGx1YTUuNSBsdWEtNS41IGx1YSkKKysKKytpZihMdWE1NV9GSU5E X1ZFUlNJT04pCisrICBjbWFrZV9taW5pbXVtX3JlcXVpcmVkKFZFUlNJT04gMy4xMC4wKQorKyAg c2V0KEx1YTU1X0ZBSUxFRF9WRVJTSU9OX0NIRUNLIHRydWUpCisrCisrICBpZihMdWE1NV9GSU5E X1ZFUlNJT05fRVhBQ1QpCisrICAgIGlmKEx1YTU1X1ZFUlNJT04gVkVSU0lPTl9FUVVBTCBMdWE1 NV9GSU5EX1ZFUlNJT04pCisrICAgICAgc2V0KEx1YTU1X0ZBSUxFRF9WRVJTSU9OX0NIRUNLIGZh bHNlKQorKyAgICBlbmRpZigpCisrICBlbHNlKCkKKysgICAgaWYoTHVhNTVfVkVSU0lPTiBWRVJT SU9OX0VRVUFMICAgTHVhNTVfRklORF9WRVJTSU9OIE9SCisrICAgICAgIEx1YTU1X1ZFUlNJT04g VkVSU0lPTl9HUkVBVEVSIEx1YTU1X0ZJTkRfVkVSU0lPTiBBTkQKKysgICAgICAgTHVhNTVfVkVS U0lPTiBWRVJTSU9OX0xFU1MgTHVhX1ZFUlNJT05fVE9PX0hJR0gpCisrICAgICAgc2V0KEx1YTU1 X0ZBSUxFRF9WRVJTSU9OX0NIRUNLIGZhbHNlKQorKyAgICBlbmRpZigpCisrICBlbmRpZigpCisr CisrICBpZihMdWE1NV9GQUlMRURfVkVSU0lPTl9DSEVDSykKKysgICAgaWYoTHVhNTVfRklORF9S RVFVSVJFRCBBTkQgTk9UIEx1YTU1X0ZJTkRfUVVJRVRMWSkKKysgICAgICAgIGlmKEx1YTU1X0ZJ TkRfVkVSU0lPTl9FWEFDVCkKKysgICAgICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJMdWE1 LjUgdmVyc2lvbiBjaGVjayBmYWlsZWQuICBWZXJzaW9uICR7THVhNTVfVkVSU0lPTn0gd2FzIGZv dW5kLCB2ZXJzaW9uICR7THVhNTVfRklORF9WRVJTSU9OfSBpcyBuZWVkZWQgZXhhY3RseS4iKQor KyAgICAgICAgZWxzZShMdWE1NV9GSU5EX1ZFUlNJT05fRVhBQ1QpCisrICAgICAgICAgICAgbWVz c2FnZShGQVRBTF9FUlJPUiAiTHVhNS41IHZlcnNpb24gY2hlY2sgZmFpbGVkLiAgVmVyc2lvbiAk e0x1YTU1X1ZFUlNJT059IHdhcyBmb3VuZCwgYXQgbGVhc3QgdmVyc2lvbiAke0x1YTU1X0ZJTkRf VkVSU0lPTn0gaXMgcmVxdWlyZWQiKQorKyAgICAgICAgZW5kaWYoTHVhNTVfRklORF9WRVJTSU9O X0VYQUNUKQorKyAgICBlbmRpZihMdWE1NV9GSU5EX1JFUVVJUkVEIEFORCBOT1QgTHVhNTVfRklO RF9RVUlFVExZKQorKworKyAgICBzZXQoTHVhNTVfRk9VTkQgZmFsc2UpCisrICBlbmRpZihMdWE1 NV9GQUlMRURfVkVSU0lPTl9DSEVDSykKKysKKytlbmRpZihMdWE1NV9GSU5EX1ZFUlNJT04pCisr CisraWYoTHVhNTVfRk9VTkQpCisrICBzZXQoTHVhNTUgT04gQ0FDSEUgQk9PTCAiQnVpbGQgd2l0 aCBsdWE1LjUgc3VwcG9ydC4iKQorKyAgaWYoQVBQTEUpCisrICAgIGZvcmVhY2goaSAke0x1YTU1 X0xJQlJBUklFU30pCisrICAgICAgZmluZF9saWJyYXJ5KF9sdWE1NV9MSUJSQVJZIE5BTUVTICR7 aX0gSElOVFMgJHtMdWE1NV9MSUJSQVJZX0RJUlN9KQorKyAgICAgIGxpc3QoQVBQRU5EIEx1YTU1 X0xJQlJBUklFU19GVUxMICR7X2x1YTU1X0xJQlJBUll9KQorKyAgICAgIHVuc2V0KF9sdWE1NV9M SUJSQVJZIENBQ0hFKQorKyAgICBlbmRmb3JlYWNoKGkpCisrICAgIHNldChMdWE1NV9MSUJSQVJJ RVMgJHtMdWE1NV9MSUJSQVJJRVNfRlVMTH0pCisrICAgIHVuc2V0KEx1YTU1X0xJQlJBUklFU19G VUxMIENBQ0hFKQorKyAgZW5kaWYoKQorK2VuZGlmKEx1YTU1X0ZPVU5EKQorZGlmZiAtdXJOciBk YXJrdGFibGUtNS42LjAtb3JpZy9zcmMvQ01ha2VMaXN0cy50eHQgZGFya3RhYmxlLTUuNi4wL3Ny Yy9DTWFrZUxpc3RzLnR4dAorLS0tIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9DTWFrZUxpc3Rz LnR4dAkyMDI2LTA2LTIxIDEwOjIwOjIzLjAwMDAwMDAwMCArMDIwMAorKysrIGRhcmt0YWJsZS01 LjYuMC9zcmMvQ01ha2VMaXN0cy50eHQJMjAyNi0wOS0wMSAwOTo1MDozOS4zMzUzODg3NTIgKzAy MDAKK0BAIC03NjAsMTQgKzc2MCwxNCBAQAorICMgQnVpbGQgZXh0ZXJuYWwgZGVwcworICMKKyBp ZihVU0VfTFVBKQorLSAgZmluZF9wYWNrYWdlKEx1YTU0IDUuNCkKKy0gIGlmKEx1YTU0X0ZPVU5E KQorKyAgZmluZF9wYWNrYWdlKEx1YTU1IDUuNSkKKysgIGlmKEx1YTU1X0ZPVU5EKQorICAgICBt ZXNzYWdlKFNUQVRVUyAiTHVhIHN1cHBvcnQ6IEVuYWJsZWQiKQorLSAgICBpbmNsdWRlX2RpcmVj dG9yaWVzKFNZU1RFTSAke0x1YTU0X0lOQ0xVREVfRElSU30pCistICAgIGxpc3QoQVBQRU5EIExJ QlMgJHtMdWE1NF9MREZMQUdTfSkKKysgICAgaW5jbHVkZV9kaXJlY3RvcmllcyhTWVNURU0gJHtM dWE1NV9JTkNMVURFX0RJUlN9KQorKyAgICBsaXN0KEFQUEVORCBMSUJTICR7THVhNTVfTERGTEFH U30pCisgICBlbHNlKCkKKyAgICAgaWYoRE9OVF9VU0VfSU5URVJOQUxfTFVBKQorLSAgICAgIG1l c3NhZ2UoRkFUQUxfRVJST1IgIkx1YSBzdXBwb3J0OiBTeXN0ZW0gbGlicmFyeSBmb3IgTHVhIDUu NCBub3QgZm91bmQgKHRvIHVzZSBkYXJrdGFibGUncyB2ZXJzaW9uIGFkZCAtRERPTlRfVVNFX0lO VEVSTkFMX0xVQT1PZmYpIikKKysgICAgICBtZXNzYWdlKFNUQVRVUyAiTHVhIHN1cHBvcnQ6IFN5 c3RlbSBsaWJyYXJ5IGZvciBsdWEgNS41IG5vdCBmb3VuZCAodG8gdXNlIGRhcmt0YWJsZSdzIHZl cnNpb24gdXNlIC1ERE9OVF9VU0VfSU5URVJOQUxfTFVBPU9mZikiKQorICAgICBlbHNlKERPTlRf VVNFX0lOVEVSTkFMX0xVQSkKKyAgICAgICBtZXNzYWdlKFNUQVRVUyAiTHVhIHN1cHBvcnQ6IFN5 c3RlbSBsaWJyYXJ5IG5vdCBmb3VuZCAodXNpbmcgZGFya3RhYmxlJ3MgdmVyc2lvbikiKQorICAg ICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2V4dGVy bmFsL2x1YS9zcmMpCitAQCAtODMwLDkgKzgzMCw5IEBACisgZW5kaWYoVVNFX0xVQSkKKyAKKyBp ZihVU0VfTFVBKQorLSAgaWYoTk9UIEx1YTU0X0ZPVU5EKQorKyAgaWYoTk9UIEx1YTU1X0ZPVU5E KQorICAgICBsaXN0KEFQUEVORCBMSUJfREVQUyBsdWEpICMgMm5kIGhhbGYgb2YgdGhlIHVnbGlu ZXNzIDovCistICBlbmRpZihOT1QgTHVhNTRfRk9VTkQpCisrICBlbmRpZihOT1QgTHVhNTVfRk9V TkQpCisgICAjIGxpYmxhdXRvYyBmb3IgbHVhIGF1dG9tYXRlZCBpbnRlcmZhY2UgZ2VuZXJhdGlv bgorICAgYWRkX2xpYnJhcnkobGF1dG9jX3N0YXRpYyBTVEFUSUMgSU1QT1JURUQpCisgICBzZXRf dGFyZ2V0X3Byb3BlcnRpZXMobGF1dG9jX3N0YXRpYyBQUk9QRVJUSUVTIElNUE9SVEVEX0xPQ0FU SU9OICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9leHRlcm5hbC9MdWFBdXRvQy9saWJsYXV0 b2MuYSBQT1NJVElPTl9JTkRFUEVOREVOVF9DT0RFIFRydWUpCitkaWZmIC11ck5yIGRhcmt0YWJs ZS01LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFu Y2VkLmx1YSBkYXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIv ZW5mdXNlQWR2YW5jZWQubHVhCistLS0gZGFya3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFs L2x1YS1zY3JpcHRzL2NvbnRyaWIvZW5mdXNlQWR2YW5jZWQubHVhCTIwMjYtMDYtMTIgMDU6MDY6 MzguMDAwMDAwMDAwICswMjAwCisrKysgZGFya3RhYmxlLTUuNi4wL3NyYy9leHRlcm5hbC9sdWEt c2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2VkLmx1YQkyMDI2LTA5LTAxIDA5OjQyOjA0LjM3 MDkyODkxOCArMDIwMAorQEAgLTUyNyw5ICs1MjcsOSBAQAorICAgICAgICAgICAgIGxvY2FsIHNl dF90YWcgPSBHVUkuVGFyZ2V0LmFkZF90YWdzLnRleHQKKyAgICAgICAgICAgICBpZiBzZXRfdGFn IH49IG5pbCB0aGVuIC0tYWRkIGFkZGl0aW9uYWwgdXNlci1zcGVjaWZpZWQgdGFncworICAgICAg ICAgICAgICAgICBmb3IgdGFnIGluIHN0cmluZy5nbWF0Y2goc2V0X3RhZywgJ1teLF0rJykgZG8K Ky0gICAgICAgICAgICAgICAgICAgIHRhZyA9IENsZWFuU3BhY2VzKHRhZykKKy0gICAgICAgICAg ICAgICAgICAgIHRhZyA9IGR0LnRhZ3MuY3JlYXRlKHRhZykKKy0gICAgICAgICAgICAgICAgICAg IGR0LnRhZ3MuYXR0YWNoKHRhZywgaW1wb3J0ZWQpIAorKyAgICAgICAgICAgICAgICAgICAgbG9j YWwgY2xlYW5lZF90YWcgPSBDbGVhblNwYWNlcyh0YWcpCisrICAgICAgICAgICAgICAgICAgICBj bGVhbmVkX3RhZyA9IGR0LnRhZ3MuY3JlYXRlKGNsZWFuZWRfdGFnKQorKyAgICAgICAgICAgICAg ICAgICAgZHQudGFncy5hdHRhY2goY2xlYW5lZF90YWcsIGltcG9ydGVkKSAKKyAgICAgICAgICAg ICAgICAgZW5kCisgICAgICAgICAgICAgZW5kCisgICAgICAgICBlbmQKK2RpZmYgLXVyTnIgZGFy a3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvZW5mdXNl QWR2YW5jZWQubHVhLm9yaWcgZGFya3RhYmxlLTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0 cy9jb250cmliL2VuZnVzZUFkdmFuY2VkLmx1YS5vcmlnCistLS0gZGFya3RhYmxlLTUuNi4wLW9y aWcvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvZW5mdXNlQWR2YW5jZWQubHVhLm9y aWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBkYXJrdGFibGUtNS42 LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvZW5mdXNlQWR2YW5jZWQubHVhLm9y aWcJMjAyNi0wNi0xMiAwNTowNjozOC4wMDAwMDAwMDAgKzAyMDAKK0BAIC0wLDAgKzEsMTE3NSBA QAorKy0tW1tFbmZ1c2UgQWR2YW5jZWQgcGx1Z2luIGZvciBkYXJrdGFibGUgMi4yLlggYW5kIDIu NC5YCisrCisrICBjb3B5cmlnaHQgKGMpIDIwMTcsIDIwMTggIEhvbGdlciBLbGVtbSAoT3JpZ2lu YWwgTGludXgtb25seSB2ZXJzaW9uKQorKyAgTW9kaWZpZWQgYnk6IEtldmluIEVydGVsCisrICAK KysgIGRhcmt0YWJsZSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5CisrICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICAKKysgIGRhcmt0YWJsZSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUK KysgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICAKKysg IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCisrICBhbG9uZyB3aXRoIGRhcmt0YWJsZS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKytdXQorKworKy0tW1tBYm91dCB0aGlzIHBsdWdpbgor K1RoaXMgcGx1Z2luIHdpbGwgYWRkIHRoZSBuZXcgZXhwb3J0IG1vZHVsZSAnZnVzaW9uIHRvIERS SSBvciBERkYgaW1hZ2UnLgorKyAgIAorKy0tLS1SRVFVSVJFRCBTT0ZUV0FSRS0tLS0KKythbGln bl9pbWFnZV9zdGFjaworK2VuZnVzZSB2ZXIuIDQuMiBvciBncmVhdGVyCisrZXhpZnRvb2wKKysK KystLS0tVVNBR0UtLS0tCisrSW5zdGFsbDoKKysgMSkgR2V0IHRoZSBMdWEgc2NyaXB0czogaHR0 cHM6Ly9naXRodWIuY29tL2Rhcmt0YWJsZS1vcmcvbHVhLXNjcmlwdHMjZG93bmxvYWQtYW5kLWlu c3RhbGwKKysgMikgUmVxdWlyZSB0aGlzIGZpbGUgaW4geW91ciBsdWFyYyBmaWxlLCBhcyB3aXRo IGFueSBvdGhlciBkdCBwbHVnLWluOiByZXF1aXJlICJjb250cmliL2VuZnVzZUFkdmFuY2VkIgor KyAzKSBUaGVuIHNlbGVjdCAiRFJJIG9yIERGRiBpbWFnZSIgYXMgc3RvcmFnZSBvcHRpb24KKysg NCkgT24gdGhlIGluaXRpYWwgc3RhcnR1cCBzZXQgeW91ciBleGVjdXRhYmxlIHBhdGhzIAorKwor K0RSSSA9IER5bmFtaWMgUmFuZ2UgSW5jcmVhc2UgKEJsZW5kIG11bHRpcGxlIGJyYWNrZXQgaW1h Z2VzIGludG8gYSBzaW5nbGUgTERSIGZpbGUpCisrREZGID0gRGVwdGggRnJvbSBGb2N1cyAoJ0Zv Y3VzIFN0YWNraW5nJyAtIEJsZW5kIG11bHRpcGxlIGltYWdlcyB3aXRoIGRpZmZlcmVudCBmb2N1 cyBpbnRvIGEgc2luZ2xlIGltYWdlKQorK1NlbGVjdCBtdWx0aXBsZSBpbWFnZXMgdGhhdCBhcmUg ZWl0aGVyIGJyYWNrZXRlZCwgb3IgZm9jdXMtc2hpZnRlZCwgc2V0IHlvdXIgZGVzaXJlZCBvcGVy YXRpbmcgcGFyYW1ldGVycywgYW5kIHByZXNzIHRoZSBleHBvcnQgYnV0dG9uLiBBIG5ldyBpbWFn ZSB3aWxsIGJlIGNyZWF0ZWQuIFRoZSBpbWFnZSB3aWxsCisrYmUgYXV0byBpbXBvcnRlZCBpbnRv IGRhcmt0YWJsZSBpZiB5b3UgaGF2ZSB0aGF0IG9wdGlvbiBlbmFibGVkLiBBZGRpdGlvbmFsIHRh Z3Mgb3Igc3R5bGUgY2FuIGJlIGFwcGxpZWQgb24gYXV0byBpbXBvcnQgYXMgd2VsbCwgaWYgeW91 IGRlc2lyZS4KKysKKytpbWFnZSBhbGlnbiBvcHRpb25zOgorK1NlZSBhbGlnbl9pbWFnZV9zdGFj ayBkb2N1bWVudGF0aW9uIGZvciBmdXJ0aGVyIGV4cGxhbmF0aW9uIG9mIGhvdyBpdCBzcGVjaWZp Y2FsbHkgd29ya3MgYW5kIHRoZSBvcHRpb25zIHByb3ZpZGVkIChodHRwOi8vaHVnaW4uc291cmNl Zm9yZ2UubmV0L2RvY3MvbWFudWFsL0FsaWduX2ltYWdlX3N0YWNrLmh0bWwpCisrCisraW1hZ2Ug ZnVzdGlvbiBvcHRpb25zOgorK1NlZSBlbmZ1c2UgZG9jdW1lbnRhdGlvbiBmb3IgZnVydGhlciBl eHBsYW5hdGlvbiBvZiBob3cgaXQgc3BlY2lmaWNhbGx5IHdvcmtzIGFuZCB0aGUgb3B0aW9ucyBw cm92aWRlZCAoaHR0cHM6Ly93aWtpLnBhbm90b29scy5vcmcvRW5mdXNlKQorK0lmIHlvdSBoYXZl IGEgc3BlY2lmaWMgc2V0IG9mIHBhcmFtZXRlcnMgeW91IGZyZXF1ZW50bHkgbGlrZSB0byB1c2Us IHlvdSBjYW4gc2F2ZSB0aGVtIHRvIGEgcHJlc2V0LiBUaGVyZSBhcmUgMyBwcmVzZXRzIGF2YWls YWJsZSBmb3IgRFJJLCBhbmQgMyBmb3IgREZGLgorKworK3RhcmdldCBmaWxlOgorK1NlbGVjdCB5 b3VyIGZpbGUgZGVzdGluYXRpb24gcGF0aCwgb3IgY2hlY2sgdGhlICdzYXZlIHRvIHNvdXJjZSBp bWFnZSBsb2NhdGlvbicgb3B0aW9uLgorKydDcmVhdGUgVW5pcXVlIEZpbGVuYW1lJyBpcyBlbmFi bGVkIGJ5IGRlZmF1bHQgYXQgc3RhcnR1cCwgdGhlIHVzZXIgY2FuIGNob29zZSB0byBvdmVyd3Jp dGUgZXhpc3RpbmcKKytTZXQgYW55IHRhZ3Mgb3Igc3R5bGUgeW91IGRlc2lyZSB0byBiZSBhZGRl ZCB0byB0aGUgbmV3IGltYWdlIChvbmx5IGF2YWlsYWJsZSBpZiB0aGUgYXV0by1pbXBvcnQgb3B0 aW9uIGlzIGVuYWJsZWQpLiBZb3UgY2FuIGFsc28gY2hhbmdlIHRoZSBkZWZhdWx0cyBmb3IgdGhp cyB1bmRlciBzZXR0aW5ncyA+IGx1YSBvcHRpb25zCisrCisrZm9ybWF0IG9wdGlvbnM6CisrU2Ft ZSBhcyBvdGhlciBleHBvcnQgbW9kdWxlcworKworK2dsb2JhbCBvcHRpb25zOgorK1NhbWUgYXMg b3RoZXIgZXhwb3J0IG1vZHVsZXMKKysKKytdXQorKworK2xvY2FsIGR0ID0gcmVxdWlyZSAnZGFy a3RhYmxlJworK2xvY2FsIGRmID0gcmVxdWlyZSAnbGliL2R0dXRpbHMuZmlsZScKKytsb2NhbCBk c3lzID0gcmVxdWlyZSAnbGliL2R0dXRpbHMuc3lzdGVtJworK2xvY2FsIGR1ID0gcmVxdWlyZSAn bGliL2R0dXRpbHMnCisrbG9jYWwgbW9kID0gJ21vZHVsZV9lbmZ1c2VBZHZhbmNlZCcKKytsb2Nh bCBvc19wYXRoX3NlcGVyYXRvciA9ICcvJworK2lmIGR0LmNvbmZpZ3VyYXRpb24ucnVubmluZ19v cyA9PSAnd2luZG93cycgdGhlbiBvc19wYXRoX3NlcGVyYXRvciA9ICdcXCcgZW5kCisrCisrZHUu Y2hlY2tfbWluX2FwaV92ZXJzaW9uKCI3LjAuMCIsICJlbmZ1c2VBZHZhbmNlZCIpIAorKworKy0t IFRlbGwgZ2V0dGV4dCB3aGVyZSB0byBmaW5kIHRoZSAubW8gZmlsZSB0cmFuc2xhdGluZyBtZXNz YWdlcyBmb3IgYSBwYXJ0aWN1bGFyIGRvbWFpbgorK2xvY2FsIGdldHRleHQgPSBkdC5nZXR0ZXh0 LmdldHRleHQKKysKKytsb2NhbCBmdW5jdGlvbiBfKG1zZ2lkKQorKyAgICByZXR1cm4gZ2V0dGV4 dChtc2dpZCkKKytlbmQKKysKKystLSByZXR1cm4gZGF0YSBzdHJ1Y3R1cmUgZm9yIHNjcmlwdF9t YW5hZ2VyCisrCisrbG9jYWwgc2NyaXB0X2RhdGEgPSB7fQorKworK3NjcmlwdF9kYXRhLm1ldGFk YXRhID0geworKyAgbmFtZSA9IF8oImVuZnVzZSBhZHZhbmNlZCIpLAorKyAgcHVycG9zZSA9IF8o ImZvY3VzIHN0YWNrIG9yIGV4cG9zdXJlIGJsZW5kIGltYWdlcyIpLAorKyAgYXV0aG9yID0gIktl dmluIEVydGVsIiwKKysgIGhlbHAgPSAiaHR0cHM6Ly9kb2NzLmRhcmt0YWJsZS5vcmcvbHVhL3N0 YWJsZS9sdWEuc2NyaXB0cy5tYW51YWwvc2NyaXB0cy9jb250cmliL2VuZnVzZUFkdmFuY2VkIgor K30KKysKKytzY3JpcHRfZGF0YS5kZXN0cm95ID0gbmlsIC0tIGZ1bmN0aW9uIHRvIGRlc3Rvcnkg dGhlIHNjcmlwdAorK3NjcmlwdF9kYXRhLmRlc3Ryb3lfbWV0aG9kID0gbmlsIC0tIHNldCB0byBo aWRlIGZvciBsaWJzIHNpbmNlIHdlIGNhbid0IGRlc3Ryb3kgdGhlbSBjb21tcGxldGVseSB5ZXQs IG90aGVyd2lzZSBsZWF2ZSBhcyBuaWwKKytzY3JpcHRfZGF0YS5yZXN0YXJ0ID0gbmlsIC0tIGhv dyB0byByZXN0YXJ0IHRoZSAobGliKSBzY3JpcHQgYWZ0ZXIgaXQncyBiZWVuIGhpZGRlbiAtIGku ZS4gbWFrZSBpdCB2aXNpYmxlIGFnYWluCisrc2NyaXB0X2RhdGEuc2hvdyA9IG5pbCAtLSBvbmx5 IHJlcXVpcmVkIGZvciBsaWJzIHNpbmNlIHRoZSBkZXN0cm95X21ldGhvZCBvbmx5IGhpZGVzIHRo ZW0KKysKKystLSBJTklUUyAtLQorK2xvY2FsIEFJUyA9IHsKKysgICAgbmFtZSA9ICdhbGlnbl9p bWFnZV9zdGFjaycsCisrICAgIGJpbiA9ICcnLAorKyAgICBmaXJzdF9ydW4gPSB0cnVlLAorKyAg ICBpbnN0YWxsX2Vycm9yID0gZmFsc2UsCisrICAgIGFyZ19zdHJpbmcgPSAnJywKKysgICAgaW1h Z2VzX3N0cmluZyA9ICcnLAorKyAgICBhcmdzID0geworKyAgICAgICAgcmFkaWFsX2Rpc3RvcnRp b24gICAgICAgPSB7dGV4dCA9ICctZCcsICAgICAgICAgICAgIHN0eWxlID0gJ2Jvb2wnfSwKKysg ICAgICAgIG9wdGltaXplX2ZpZWxkICAgICAgICAgID0ge3RleHQgPSAnLW0nLCAgICAgICAgICAg ICBzdHlsZSA9ICdib29sJ30sCisrICAgICAgICBvcHRpbWl6ZV9pbWFnZV9jZW50ZXIgICA9IHt0 ZXh0ID0gJy1pJywgICAgICAgICAgICAgc3R5bGUgPSAnYm9vbCd9LAorKyAgICAgICAgYXV0b19j cm9wICAgICAgICAgICAgICAgPSB7dGV4dCA9ICctQycsICAgICAgICAgICAgIHN0eWxlID0gJ2Jv b2wnfSwKKysgICAgICAgIGRpc3RvcnRpb24gICAgICAgICAgICAgID0ge3RleHQgPSAnLS1kaXN0 b3J0aW9uJywgICBzdHlsZSA9ICdib29sJ30sCisrICAgICAgICBncHUgICAgICAgICAgICAgICAg ICAgICA9IHt0ZXh0ID0gJy0tZ3B1JywgICAgICAgICAgc3R5bGUgPSAnYm9vbCd9LAorKyAgICAg ICAgZ3JpZF9zaXplICAgICAgICAgICAgICAgPSB7dGV4dCA9ICctZyAnLCAgICAgICAgICAgIHN0 eWxlID0gJ2ludGVnZXInfSwKKysgICAgICAgIGNvbnRyb2xfcG9pbnRzICAgICAgICAgID0ge3Rl eHQgPSAnLWMgJywgICAgICAgICAgICBzdHlsZSA9ICdpbnRlZ2VyJ30sCisrICAgICAgICBjb250 cm9sX3BvaW50c19yZW1vdmUgICA9IHt0ZXh0ID0gJy10ICcsICAgICAgICAgICAgc3R5bGUgPSAn aW50ZWdlcid9LAorKyAgICAgICAgY29ycmVsYXRpb24gICAgICAgICAgICAgPSB7dGV4dCA9ICct LWNvcnI9JywgICAgICAgIHN0eWxlID0gJ2Zsb2F0J30KKysgICAgfQorK30KKytsb2NhbCBFTkYg PSB7CisrICAgIG5hbWUgPSAnZW5mdXNlJywKKysgICAgYmluID0gJycsCisrICAgIGZpcnN0X3J1 biA9IHRydWUsCisrICAgIGluc3RhbGxfZXJyb3IgPSBmYWxzZSwKKysgICAgYXJnX3N0cmluZyA9 ICcnLAorKyAgICBpbWFnZV9zdHJpbmcgPSAnJywKKysgICAgYXJncyA9IHsKKysgICAgICAgIGV4 cG9zdXJlX3dlaWdodCAgICAgICAgID0ge3RleHQgPSAnLS1leHBvc3VyZS13ZWlnaHQ9JywgICAg ICAgICBzdHlsZSA9ICdmbG9hdCd9LAorKyAgICAgICAgc2F0dXJhdGlvbl93ZWlnaHQgICAgICAg PSB7dGV4dCA9ICctLXNhdHVyYXRpb24td2VpZ2h0PScsICAgICAgIHN0eWxlID0gJ2Zsb2F0J30s CisrICAgICAgICBjb250cmFzdF93ZWlnaHQgICAgICAgICA9IHt0ZXh0ID0gJy0tY29udHJhc3Qt d2VpZ2h0PScsICAgICAgICAgc3R5bGUgPSAnZmxvYXQnfSwKKysgICAgICAgIGV4cG9zdXJlX29w dGltdW0gICAgICAgID0ge3RleHQgPSAnLS1leHBvc3VyZS1vcHRpbXVtPScsICAgICAgICBzdHls ZSA9ICdmbG9hdCd9LAorKyAgICAgICAgZXhwb3N1cmVfd2lkdGggICAgICAgICAgPSB7dGV4dCA9 ICctLWV4cG9zdXJlLXdpZHRoPScsICAgICAgICAgIHN0eWxlID0gJ2Zsb2F0J30sCisrICAgICAg ICBoYXJkX21hc2tzICAgICAgICAgICAgICA9IHt0ZXh0ID0gJy0taGFyZC1tYXNrJywgICAgICAg ICAgICAgICAgc3R5bGUgPSAnYm9vbCd9LAorKyAgICAgICAgc2F2ZV9tYXNrcyAgICAgICAgICAg ICAgPSB7dGV4dCA9ICctLXNhdmUtbWFza3MnLCAgICAgICAgICAgICAgIHN0eWxlID0gJ2Jvb2wn fSwKKysgICAgICAgIGNvbnRyYXN0X3dpbmRvd19zaXplICAgID0ge3RleHQgPSAnLS1jb250cmFz dC13aW5kb3ctc2l6ZT0nLCAgICBzdHlsZSA9ICdpbnRlZ2VyJ30sCisrICAgICAgICBjb250cmFz dF9lZGdlX3NjYWxlICAgICA9IHt0ZXh0ID0gJy0tY29udHJhc3QtZWRnZS1zY2FsZT0nLCAgICAg c3R5bGUgPSAnZmxvYXQnfSwKKysgICAgICAgIGNvbnRyYXN0X21pbl9jdXJ2YXR1cmUgID0ge3Rl eHQgPSAnLS1jb250cmFzdC1taW4tY3VydmF0dXJlPScsIHN0eWxlID0gJ3N0cmluZyd9CisrICAg IH0KKyt9CisrbG9jYWwgRVhGID0geworKyAgICBuYW1lID0gJ2V4aWZ0b29sJywKKysgICAgYmlu ID0gJycsCisrICAgIGZpcnN0X3J1biA9IHRydWUsCisrICAgIGluc3RhbGxfZXJyb3IgPSBmYWxz ZQorK30KKytsb2NhbCBHVUkgPSB7CisrICAgIEFJUyA9IHsKKysgICAgICAgIHJhZGlhbF9kaXN0 b3J0aW9uICAgICAgID0ge30sCisrICAgICAgICBvcHRpbWl6ZV9maWVsZCAgICAgICAgICA9IHt9 LAorKyAgICAgICAgb3B0aW1pemVfaW1hZ2VfY2VudGVyICAgPSB7fSwKKysgICAgICAgIGF1dG9f Y3JvcCAgICAgICAgICAgICAgID0ge30sCisrICAgICAgICBkaXN0b3J0aW9uICAgICAgICAgICAg ICA9IHt9LAorKyAgICAgICAgZ3JpZF9zaXplICAgICAgICAgICAgICAgPSB7fSwKKysgICAgICAg IGNvbnRyb2xfcG9pbnRzICAgICAgICAgID0ge30sCisrICAgICAgICBjb250cm9sX3BvaW50c19y ZW1vdmUgICA9IHt9LAorKyAgICAgICAgY29ycmVsYXRpb24gICAgICAgICAgICAgPSB7fX0sCisr ICAgIEVORiA9IHsKKysgICAgICAgIGV4cG9zdXJlX3dlaWdodCAgICAgICAgID0ge30sCisrICAg ICAgICBzYXR1cmF0aW9uX3dlaWdodCAgICAgICA9IHt9LAorKyAgICAgICAgY29udHJhc3Rfd2Vp Z2h0ICAgICAgICAgPSB7fSwKKysgICAgICAgIGV4cG9zdXJlX29wdGltdW0gICAgICAgID0ge30s CisrICAgICAgICBleHBvc3VyZV93aWR0aCAgICAgICAgICA9IHt9LAorKyAgICAgICAgaGFyZF9t YXNrcyAgICAgICAgICAgICAgPSB7fSwKKysgICAgICAgIHNhdmVfbWFza3MgICAgICAgICAgICAg ID0ge30sCisrICAgICAgICBjb250cmFzdF93aW5kb3dfc2l6ZSAgICA9IHt9LAorKyAgICAgICAg Y29udHJhc3RfZWRnZV9zY2FsZSAgICAgPSB7fSwKKysgICAgICAgIGNvbnRyYXN0X21pbl9jdXJ2 YXR1cmUgID0ge319LAorKyAgICBUYXJnZXQgPSB7CisrICAgICAgICBmb3JtYXQgICAgICAgICAg ICAgICAgICA9IHt9LAorKyAgICAgICAgZGVwdGggICAgICAgICAgICAgICAgICAgPSB7fSwgICAK KysgICAgICAgIGNvbXByZXNzaW9uX2xldmVsX3RpZiAgID0ge30sCisrICAgICAgICBjb21wcmVz c2lvbl9sZXZlbF9qcGcgICA9IHt9LAorKyAgICAgICAgb3V0cHV0X2NvbXByZXNzICAgICAgICAg PSB7fSwKKysgICAgICAgIG91dHB1dF9kaXJlY3RvcnkgICAgICAgID0ge30sCisrICAgICAgICBz b3VyY2VfbG9jYXRpb24gICAgICAgICA9IHt9LAorKyAgICAgICAgb25fY29uZmxpY3QgICAgICAg ICAgICAgPSB7fSwKKysgICAgICAgIGF1dG9faW1wb3J0ICAgICAgICAgICAgID0ge30sCisrICAg ICAgICBhcHBseV9zdHlsZSAgICAgICAgICAgICA9IHt9LAorKyAgICAgICAgY29weV90YWdzICAg ICAgICAgICAgICAgPSB7fSwKKysgICAgICAgIGFkZF90YWdzICAgICAgICAgICAgICAgID0ge319 LAorKyAgICBQcmVzZXRzID0geworKyAgICAgICAgY3VycmVudF9wcmVzZXQgICAgICA9e307Cisr ICAgICAgICBsb2FkICAgICAgICAgICAgICAgID17fTsKKysgICAgICAgIHNhdmUgICAgICAgICAg ICAgICAgPXt9OworKyAgICAgICAgdmFyaWFudHMgICAgICAgICAgICA9e307CisrICAgICAgICB2 YXJpYW50c190eXBlICAgICAgID17fX0sCisrICAgIGV4ZXMgPSB7CisrICAgICAgICBhbGlnbl9p bWFnZV9zdGFjayA9IHt9LAorKyAgICAgICAgZW5mdXNlID0ge30sCisrICAgICAgICBleGlmdG9v bCA9IHt9LAorKyAgICAgICAgdXBkYXRlID0ge30KKysgICAgfSwKKysgICAgYWxpZ24gICAgICAg ICAgICAgICAgICAgPSB7fSwKKysgICAgb3B0aW9uc19jb250YWluICAgICAgICAgPSB7fSwKKysg ICAgc2hvd19vcHRpb25zICAgICAgICAgICAgPSB7fQorK30KKysKKytsb2NhbCBzdHlsZXMgPSBk dC5zdHlsZXMKKytsb2NhbCBzdHlsZXNfY291bnQgPSAxIC0tICdub25lJyA9IDEKKytmb3IgXyxp IGluIHBhaXJzKGR0LnN0eWxlcykgZG8KKysgICAgaWYgdHlwZShpKSA9PSAndXNlcmRhdGEnIHRo ZW4gc3R5bGVzX2NvdW50ID0gc3R5bGVzX2NvdW50ICsgMSBlbmQKKytlbmQKKysKKystLSBGVU5D VElPTiAtLQorKworK2xvY2FsIGZ1bmN0aW9uIHNhbml0aXplX2RlY2ltYWxzKGNtZCkgLS0gbWFr ZSBzdXJlIGRlY2ltYWwgc2VwYXJhdG9yIGlzIGEgJy4nCisrICAgIHJldHVybiBzdHJpbmcuZ3N1 YihjbWQsICcoJWQpLCglZCknLCAiJTEuJTIiKQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIElu UmFuZ2UodGVzdCwgbG93LCBoaWdoKSAtLSB0ZXN0cyBpZiB0ZXN0IHZhbHVlIGlzIHdpdGhpbiBy YW5nZSBvZiBsb3cgYW5kIGhpZ2ggKGluY2x1c2l2ZSkKKysgICAgaWYgdGVzdCA+PSBsb3cgYW5k IHRlc3QgPD0gaGlnaCB0aGVuCisrICAgICAgICByZXR1cm4gdHJ1ZQorKyAgICBlbHNlCisrICAg ICAgICByZXR1cm4gZmFsc2UKKysgICAgZW5kCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gR2V0 RmlsZU5hbWUoZnVsbF9wYXRoKSAtLSBQYXJzZXMgYSBmdWxsIHBhdGggKHBhdGgvZmlsZW5hbWVf aWRlbnRpZmllci5leHRlbnNpb24pIGludG8gaW5kaXZpZHVhbCBwYXJ0cworKy0tW1tJbnB1dDog Rm9sZGVyMS9Gb2xkZXIyL0ZvbGRlcjMvSW1nXzAwMDEuQ1IyCisrICAgIAorKyAgICBSZXR1cm5z OgorKyAgICBwYXRoOiBGb2xkZXIxL0ZvbGRlcjIvRm9sZGVyMy8KKysgICAgZmlsZW5hbWU6IElt Z18wMDAxCisrICAgIGlkZW50aWZpZXI6IDAwMDEKKysgICAgZXh0ZW5zaW9uOiAuQ1IyCisrICAg IAorKyAgICBFWDoKKysgICAgcGF0aF8xLCBmaWxlXzEsIGlkXzEsIGV4dF8xID0gR2V0RmlsZU5h bWUoZnVsbF9wYXRoXzEpCisrICAgIF1dCisrICAgIGxvY2FsIHBhdGggPSBzdHJpbmcubWF0Y2go ZnVsbF9wYXRoLCAnLipbXFwvXScpCisrICAgIGxvY2FsIGZpbGVuYW1lID0gc3RyaW5nLmdzdWIo c3RyaW5nLm1hdGNoKGZ1bGxfcGF0aCwgJ1sldy1fXSolLicpICwgJyUuJyAsICcnICkgCisrICAg IGxvY2FsIGlkZW50aWZpZXIgPSBzdHJpbmcubWF0Y2goZmlsZW5hbWUsICclZCokJykKKysgICAg bG9jYWwgZXh0ZW5zaW9uID0gc3RyaW5nLm1hdGNoKGZ1bGxfcGF0aCwgJyUuJXcqJykKKysgICAg cmV0dXJuIHBhdGgsIGZpbGVuYW1lLCBpZGVudGlmaWVyLCBleHRlbnNpb24KKytlbmQKKysKKyts b2NhbCBmdW5jdGlvbiBDbGVhblNwYWNlcyh0ZXh0KSAtLXJlbW92ZXMgc3BhY2VzIGZyb20gdGhl IGZyb250IGFuZCBiYWNrIG9mIHBhc3NlZCBpbiB0ZXh0CisrICAgIHRleHQgPSBzdHJpbmcuZ3N1 Yih0ZXh0LCdeJXMqJywnJykKKysgICAgdGV4dCA9IHN0cmluZy5nc3ViKHRleHQsJyVzKiQnLCcn KQorKyAgICByZXR1cm4gdGV4dAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIEJ1aWxkRXhlY3V0 ZUNtZChwcm9nX3RhYmxlKSAtLWNyZWF0ZXMgYSBwcm9ncmFtIGNvbW1hbmQgdXNpbmcgZWxlbWVu dHMgb2YgdGhlIHBhc3NlZCBpbiBwcm9ncmFtIHRhYmxlCisrICAgIGxvY2FsIHJlc3VsdCA9IENs ZWFuU3BhY2VzKHByb2dfdGFibGUuYmluKS4uJyAnLi5DbGVhblNwYWNlcyhwcm9nX3RhYmxlLmFy Z19zdHJpbmcpLi4nICcuLkNsZWFuU3BhY2VzKHByb2dfdGFibGUuaW1hZ2VzX3N0cmluZykKKysg ICAgcmV0dXJuIHJlc3VsdAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIFByZUNhbGwocHJvZ190 YmxzKSAtLWxvb2tzIHRvIHNlZSBpZiB0aGlzIGlzIHRoZSBmaXJzdCBjYWxsLCBpZiBzbyBjaGVj a3MgdG8gc2VlIGlmIHByb2dyYW0gaXMgaW5zdGFsbGVkIHByb3Blcmx5CisrICAgIGZvciBfLHBy b2cgaW4gcGFpcnMocHJvZ190YmxzKSBkbworKyAgICAgICAgaWYgcHJvZy5maXJzdF9ydW4gdGhl bgorKyAgICAgICAgICAgIHByb2cuYmluID0gZGYuY2hlY2tfaWZfYmluX2V4aXN0cyhwcm9nLm5h bWUpCisrICAgICAgICAgICAgaWYgbm90IHByb2cuYmluIHRoZW4gCisrICAgICAgICAgICAgICAg IHByb2cuaW5zdGFsbF9lcnJvciA9IHRydWUKKysgICAgICAgICAgICAgICAgZHQucHJlZmVyZW5j ZXMud3JpdGUobW9kLCAnYmluX2V4aXN0cycsICdib29sJywgZmFsc2UpCisrICAgICAgICAgICAg ZWxzZQorKyAgICAgICAgICAgICAgICBwcm9nLmJpbiA9IENsZWFuU3BhY2VzKHByb2cuYmluKQor KyAgICAgICAgICAgIGVuZAorKyAgICAgICAgICAgIHByb2cuZmlyc3RfcnVuID0gZmFsc2UKKysg ICAgICAgIGVuZAorKyAgICBlbmQKKysgICAgaWYgbm90IGR0LnByZWZlcmVuY2VzLnJlYWQobW9k LCAnYmluX2V4aXN0cycsICdib29sJykgdGhlbgorKyAgICAgICAgR1VJLm9wdGlvbnNfY29udGFp bi5hY3RpdmUgPSA0CisrICAgICAgICBHVUkuc2hvd19vcHRpb25zLnNlbnNpdGl2ZSA9IGZhbHNl CisrICAgICAgICBkdC5wcmludChfKCdwbGVhc2UgdXBkYXRlIHlvdXIgYmluYXJ5IGxvY2F0aW9u cycpKQorKyAgICBlbmQKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBFeGVVcGRhdGUocHJvZ190 YmwpIC0tdXBkYXRlcyBleGVjdXRhYmxlIHBhdGhzIGFuZCB2ZXJpZmllcyB0aGVtCisrICAgIGR0 LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2Jpbl9leGlzdHMnLCAnYm9vbCcsIHRydWUpCisrICAg IGZvciB4LHByb2cgaW4gcGFpcnMocHJvZ190YmwpIGRvCisrICAgICAgICBkdC5wcmVmZXJlbmNl cy53cml0ZSgnZXhlY3V0YWJsZV9wYXRocycsIHByb2cubmFtZSwgJ3N0cmluZycsIEdVSS5leGVz W3Byb2cubmFtZV0udmFsdWUpCisrICAgICAgICBwcm9nLmJpbiA9IGRmLmNoZWNrX2lmX2Jpbl9l eGlzdHMocHJvZy5uYW1lKQorKyAgICAgICAgaWYgbm90IHByb2cuYmluIHRoZW4gCisrICAgICAg ICAgICAgcHJvZy5pbnN0YWxsX2Vycm9yID0gdHJ1ZQorKyAgICAgICAgICAgIGR0LnByZWZlcmVu Y2VzLndyaXRlKG1vZCwgJ2Jpbl9leGlzdHMnLCAnYm9vbCcsIGZhbHNlKQorKyAgICAgICAgICAg IGR0LnByaW50KHN0cmluZy5mb3JtYXQoXygiaXNzdWUgd2l0aCAlcyBleGVjdXRhYmxlIiksIHBy b2cubmFtZSkpCisrICAgICAgICBlbHNlCisrICAgICAgICAgICAgcHJvZy5iaW4gPSBDbGVhblNw YWNlcyhwcm9nLmJpbikKKysgICAgICAgIGVuZAorKyAgICAgICAgcHJvZy5maXJzdF9ydW4gPSBm YWxzZQorKyAgICBlbmQKKysgICAgaWYgZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdiaW5fZXhp c3RzJywgJ2Jvb2wnKSB0aGVuCisrICAgICAgICBHVUkub3B0aW9uc19jb250YWluLmFjdGl2ZSA9 IDIKKysgICAgICAgIEdVSS5zaG93X29wdGlvbnMuc2Vuc2l0aXZlID0gdHJ1ZQorKyAgICAgICAg ZHQucHJpbnQoXygndXBkYXRlIHN1Y2Nlc3NmdWwnKSkKKysgICAgZWxzZQorKyAgICAgICAgZHQu cHJpbnQoXygndXBkYXRlIHVuc3VjY2Vzc2Z1bCwgcGxlYXNlIHRyeSBhZ2FpbicpKQorKyAgICBl bmQKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBHZXRBcmdzRnJvbVByZWZlcmVuY2UocHJvZ190 YWJsZSwgcHJlZml4KSAtLWZvciBlYWNoIGFyZyBpbiBhIHByb2dyYW0gdGFibGUgcmVhZHMgaW4g dGhlIGFzc29jaWF0ZWQgdmFsdWUgaW4gdGhlIGFjdGl2ZSBwcmVmZXJlbmNlICh3aGljaCBpcyBj b250aW51YWxseSB1cGRhdGVkIHZpYSBjbGlja2VkL2NoYW5nZWQgY2FsbGJhY2sgaW4gR1VJIGVs ZW1lbnRzCisrICAgIHByb2dfdGFibGUuYXJnX3N0cmluZyA9ICcnCisrICAgIGZvciBhcmd1bWVu dCwgYXJnX2RhdGEgaW4gcGFpcnMocHJvZ190YWJsZS5hcmdzKSBkbworKyAgICAgICAgbG9jYWwg dGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCBwcmVmaXguLmFyZ3VtZW50LCBhcmdfZGF0 YS5zdHlsZSkKKysgICAgICAgIGlmIGFyZ19kYXRhLnN0eWxlID09ICdib29sJyBhbmQgdGVtcCB0 aGVuCisrICAgICAgICAgICAgcHJvZ190YWJsZS5hcmdfc3RyaW5nID0gcHJvZ190YWJsZS5hcmdf c3RyaW5nLi5hcmdfZGF0YS50ZXh0Li4nICcKKysgICAgICAgIGVsc2VpZiBhcmdfZGF0YS5zdHls ZSA9PSAnaW50ZWdlcicgdGhlbgorKyAgICAgICAgICAgIHByb2dfdGFibGUuYXJnX3N0cmluZyA9 IHByb2dfdGFibGUuYXJnX3N0cmluZy4uYXJnX2RhdGEudGV4dC4udGVtcC4uJyAnCisrICAgICAg ICBlbHNlaWYgYXJnX2RhdGEuc3R5bGUgPT0gJ3N0cmluZycgdGhlbgorKyAgICAgICAgICAgIGlm IGR0LmNvbmZpZ3VyYXRpb24ucnVubmluZ19vcyA9PSAid2luZG93cyIgdGhlbgorKyAgICAgICAg ICAgICAgICAtLWVzY2FwZSAlIHdpdGggJSUgYXMgJSBtZWFucyBlbnYgdmFyIG9uIHdpbmRvd3Mg YW5kIGNhbGwgd2lsbCBmYWlsIG90aGVyd2lzZQorKyAgICAgICAgICAgICAgICB0ZW1wID0gc3Ry aW5nLmdzdWIodGVtcCwgIiUlIiwgIiUlJSUiKQorKyAgICAgICAgICAgIGVuZAorKyAgICAgICAg ICAgIHByb2dfdGFibGUuYXJnX3N0cmluZyA9IHByb2dfdGFibGUuYXJnX3N0cmluZy4uYXJnX2Rh dGEudGV4dC4udGVtcC4uJyAnCisrICAgICAgICBlbHNlaWYgYXJnX2RhdGEuc3R5bGUgPT0gJ2Zs b2F0JyB0aGVuCisrICAgICAgICAgICAgdGVtcCA9IHN0cmluZy5zdWIodG9zdHJpbmcodGVtcCks MSwzKQorKyAgICAgICAgICAgIHByb2dfdGFibGUuYXJnX3N0cmluZyA9IHByb2dfdGFibGUuYXJn X3N0cmluZy4uYXJnX2RhdGEudGV4dC4udGVtcC4uJyAnCisrICAgICAgICBlbmQKKysgICAgZW5k CisrICAgIHByb2dfdGFibGUuYXJnX3N0cmluZyA9IENsZWFuU3BhY2VzKHByb2dfdGFibGUuYXJn X3N0cmluZykKKysgICAgcmV0dXJuIHByb2dfdGFibGUuYXJnX3N0cmluZworK2VuZAorKworK2xv Y2FsIGZ1bmN0aW9uIFVwZGF0ZUFJU2FyZ3MoaW1hZ2VfdGFibGUsIGltYWdlc190b19yZW1vdmUp IC0tdXBkYXRlcyB0aGUgQUlTIGFyZ3VtZW50cywgYnVpbGRzIHRoZSBpbnB1dCBpbWFnZSBzdHJp bmcsIHJldHVybnMgYSBtb2RpZmllZCBpbWFnZSB0YWJsZSB3aGljaCBjb250YWlucyB0aGUgYWxp Z25lZCBpbWFnZSBuYW1lcyBpbiBwbGFjZSBvZiB0aGUgZXhwb3J0ZWQgaW1hZ2UgbmFtZXMgYWxz byB1cGRhdGVzIHRoZSBpbWFnZXMgdG8gcmVtb3ZlIHN0cmluZyB3aXRoIG5ldyBhbGlnbmVkIGlt YWdlcyBhbmQgYSBzdHJpbmcgb2YgdGhlIGltYWdlcyB0byBhbGlnbgorKyAgICBHZXRBcmdzRnJv bVByZWZlcmVuY2UoQUlTLCAnYWN0aXZlXycpCisrICAgIGxvY2FsIHNvdXJjZV9wYXRoID0gJycK KysgICAgbG9jYWwgaW1hZ2VzX3RvX2FsaWduID0gJycKKysgICAgbG9jYWwgaW5kZXggPSAwCisr ICAgIGZvciByYXcsIHRlbXBfaW1hZ2UgaW4gcGFpcnMoaW1hZ2VfdGFibGUpIGRvCisrICAgICAg ICBsb2NhbCBpbmRleF9zdHIgPSAnJworKyAgICAgICAgc291cmNlX3BhdGggPSBHZXRGaWxlTmFt ZSh0ZW1wX2ltYWdlKQorKyAgICAgICAgaW1hZ2VzX3RvX2FsaWduID0gaW1hZ2VzX3RvX2FsaWdu Li5kZi5zYW5pdGl6ZV9maWxlbmFtZSh0ZW1wX2ltYWdlKS4uJyAnCisrICAgICAgICBpZiBJblJh bmdlKGluZGV4LDAsOSkgdGhlbiBpbmRleF9zdHIgPSAnMDAwJy4udG9zdHJpbmcoaW5kZXgpCisr ICAgICAgICBlbHNlaWYgSW5SYW5nZShpbmRleCwxMCw5OSkgdGhlbiBpbmRleF9zdHIgPSAnMDAn Li50b3N0cmluZyhpbmRleCkKKysgICAgICAgIGVuZAorKyAgICAgICAgaW1hZ2VfdGFibGVbcmF3 XSA9IHNvdXJjZV9wYXRoLi4nYWxpZ25lZF8nLi5pbmRleF9zdHIuLicudGlmJworKyAgICAgICAg aW1hZ2VzX3RvX3JlbW92ZSA9IGltYWdlc190b19yZW1vdmUuLmRmLnNhbml0aXplX2ZpbGVuYW1l KGltYWdlX3RhYmxlW3Jhd10pLi4nICcKKysgICAgICAgIGluZGV4ID0gaW5kZXggKyAxCisrICAg IGVuZAorKyAgICBzb3VyY2VfcGF0aCA9IGRmLnNhbml0aXplX2ZpbGVuYW1lKHNvdXJjZV9wYXRo Li4nYWxpZ25lZF8nKQorKyAgICBBSVMuYXJnX3N0cmluZyA9IEFJUy5hcmdfc3RyaW5nLi4nIC1h ICcuLnNvdXJjZV9wYXRoCisrICAgIGltYWdlc190b19hbGlnbiA9IENsZWFuU3BhY2VzKGltYWdl c190b19hbGlnbikKKysgICAgCisrICAgIHJldHVybiBpbWFnZV90YWJsZSwgaW1hZ2VzX3RvX3Jl bW92ZSwgaW1hZ2VzX3RvX2FsaWduCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gVXBkYXRlRU5G YXJncyhpbWFnZV90YWJsZSwgcHJlZml4KSAtLXVwZGF0ZXMgdGhlIEVuZnVzZSBhcmd1bWVudHMs IGJ1aWxkcyB0aGUgaW5wdXQgaW1hZ2Ugc3RyaW5nLCBnZW5lcmF0ZXMgb3V0cHV0IGZpbGVuYW1l LCByZXR1cm5zIHN0cmluZyBvZiBpbWFnZXMgdG8gYmxlbmQsIHRoZSBuYW1lIG9mIHRoZSBvdXRv dXQgaW1hZ2UsIGFuZCB0aGUgZmlyc3QgcmF3IGltYWdlIG9iamVjdAorKyAgICBHZXRBcmdzRnJv bVByZWZlcmVuY2UoRU5GLCBwcmVmaXgpCisrICAgIGxvY2FsIGltYWdlc190b19ibGVuZCA9ICcn CisrICAgIGxvY2FsIG91dF9wYXRoID0gJycKKysgICAgbG9jYWwgb3V0X25hbWUgPSAnJworKyAg ICBsb2NhbCBzbWFsbGVzdF9uYW1lID0gJycKKysgICAgbG9jYWwgc21hbGxlc3RfaWQgPSBtYXRo Lmh1Z2UKKysgICAgbG9jYWwgbGFyZ2VzdF9pZCA9IDAKKysgICAgbG9jYWwgZmlyc3RfcmF3ID0g e30KKysgICAgZm9yIHJhdywgdGVtcF9pbWFnZSBpbiBwYWlycyhpbWFnZV90YWJsZSkgZG8KKysg ICAgICAgIGxvY2FsIF8sIHNvdXJjZV9uYW1lLCBzb3VyY2VfaWQgPSBHZXRGaWxlTmFtZShyYXcu ZmlsZW5hbWUpCisrICAgICAgICBzb3VyY2VfaWQgPSB0b251bWJlcihzb3VyY2VfaWQpCisrICAg ICAgICBpZiBzb3VyY2VfaWQgPCBzbWFsbGVzdF9pZCB0aGVuIAorKyAgICAgICAgICAgIHNtYWxs ZXN0X2lkID0gc291cmNlX2lkCisrICAgICAgICAgICAgc21hbGxlc3RfbmFtZSA9IHNvdXJjZV9u YW1lCisrICAgICAgICAgICAgZmlyc3RfcmF3ID0gcmF3CisrICAgICAgICBlbmQKKysgICAgICAg IGlmIHNvdXJjZV9pZCA+IGxhcmdlc3RfaWQgdGhlbiBsYXJnZXN0X2lkID0gc291cmNlX2lkIGVu ZAorKyAgICAgICAgb3V0X3BhdGggPSByYXcucGF0aAorKyAgICAgICAgaW1hZ2VzX3RvX2JsZW5k ID0gaW1hZ2VzX3RvX2JsZW5kLi5kZi5zYW5pdGl6ZV9maWxlbmFtZSh0ZW1wX2ltYWdlKS4uJyAn CisrICAgIGVuZAorKyAgICBFTkYuYXJnX3N0cmluZyA9IEVORi5hcmdfc3RyaW5nLi4nIC0tZGVw dGg9Jy4uR1VJLlRhcmdldC5kZXB0aC52YWx1ZS4uJyAnCisrICAgIGlmIEdVSS5UYXJnZXQuZm9y bWF0LnZhbHVlID09ICd0aWYnIHRoZW4gRU5GLmFyZ19zdHJpbmcgPSBFTkYuYXJnX3N0cmluZy4u Jy0tY29tcHJlc3Npb249Jy4uR1VJLlRhcmdldC5jb21wcmVzc2lvbl9sZXZlbF90aWYudmFsdWUu LicgJworKyAgICBlbHNlaWYgR1VJLlRhcmdldC5mb3JtYXQudmFsdWUgPT0gJ2pwZycgdGhlbiBF TkYuYXJnX3N0cmluZyA9IEVORi5hcmdfc3RyaW5nLi4nLS1jb21wcmVzc2lvbj0nLi50b3N0cmlu ZyhtYXRoLmZsb29yKEdVSS5UYXJnZXQuY29tcHJlc3Npb25fbGV2ZWxfanBnLnZhbHVlKSkuLicg JworKyAgICBlbmQKKysgICAgaWYgbm90IEdVSS5UYXJnZXQuc291cmNlX2xvY2F0aW9uLnZhbHVl IHRoZW4gb3V0X3BhdGggPSBHVUkuVGFyZ2V0Lm91dHB1dF9kaXJlY3RvcnkudmFsdWUgZW5kCisr ICAgIG91dF9uYW1lID0gc21hbGxlc3RfbmFtZS4uJy0nLi5sYXJnZXN0X2lkCisrICAgIG91dF9w YXRoID0gb3V0X3BhdGguLm9zX3BhdGhfc2VwZXJhdG9yLi5vdXRfbmFtZS4uJy4nLi5HVUkuVGFy Z2V0LmZvcm1hdC52YWx1ZQorKyAgICBpZiBHVUkuVGFyZ2V0Lm9uX2NvbmZsaWN0LnZhbHVlID09 ICdjcmVhdGUgdW5pcXVlIGZpbGVuYW1lJyB0aGVuIG91dF9wYXRoID0gZGYuY3JlYXRlX3VuaXF1 ZV9maWxlbmFtZShvdXRfcGF0aCkgZW5kCisrICAgIEVORi5hcmdfc3RyaW5nID0gRU5GLmFyZ19z dHJpbmcuLictLW91dHB1dD0nLi5kZi5zYW5pdGl6ZV9maWxlbmFtZShvdXRfcGF0aCkKKysgICAg aW1hZ2VzX3RvX2JsZW5kID0gQ2xlYW5TcGFjZXMoaW1hZ2VzX3RvX2JsZW5kKQorKyAgICAKKysg ICAgcmV0dXJuIGltYWdlc190b19ibGVuZCwgb3V0X3BhdGgsIGZpcnN0X3JhdworK2VuZAorKwor K2xvY2FsIGZ1bmN0aW9uIFVwZGF0ZUFjdGl2ZVByZWZlcmVuY2UoKSAtLXNsaWRlcnMgJiBlbnRy eSBib3hlcyBkbyBub3QgaGF2ZSBhIGNsaWNrL2NoYW5nZWQgY2FsbGJhY2ssIHNvIHRoZWlyIHZh bHVlcyBtdXN0IGJlIHNhdmVkIHRvIHRoZSBhY3RpdmUgcHJlZmVyZW5jZSAnbWFudWFsbHknCisr ICAgIGxvY2FsIGVuZiA9IHsnZXhwb3N1cmVfd2VpZ2h0Jywnc2F0dXJhdGlvbl93ZWlnaHQnLCdj b250cmFzdF93ZWlnaHQnLCdleHBvc3VyZV9vcHRpbXVtJywnZXhwb3N1cmVfd2lkdGgnfQorKyAg ICBmb3IgXyxkZXNjcmlwdG9yIGluIHBhaXJzKGVuZikgZG8KKysgICAgICAgIHRlbXAgPSBHVUku RU5GW2Rlc2NyaXB0b3JdLnZhbHVlCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2Qs ICdhY3RpdmVfJy4uZGVzY3JpcHRvciwgJ2Zsb2F0JywgdGVtcCkKKysgICAgZW5kCisrICAgIHRl bXAgPSBHVUkuVGFyZ2V0LmNvbXByZXNzaW9uX2xldmVsX2pwZy52YWx1ZQorKyAgICB0ZW1wID0g bWF0aC5mbG9vcih0ZW1wKQorKyAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVf Y29tcHJlc3Npb25fbGV2ZWxfanBnJywgJ2ludGVnZXInLCB0ZW1wKQorKyAgICB0ZW1wID0gR1VJ LlRhcmdldC5hZGRfdGFncy50ZXh0CisrICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2Fj dGl2ZV9hZGRfdGFncycsICdzdHJpbmcnLCB0ZW1wKQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9u IFNhdmVUb1ByZWZlcmVuY2UocHJlc2V0KSAtLXNhdmUgdGhlIHByZXNlbnQgdmFsdWVzIG9mIGVu ZnVzZSBHVUkgZWxlbWVudHMgdG8gdGhlIHNwZWNpZmllZCAncHJlc2V0JworKyAgICBVcGRhdGVB Y3RpdmVQcmVmZXJlbmNlKCkKKysgICAgZm9yIGFyZ3VtZW50LCBhcmdfZGF0YSBpbiBwYWlycyhF TkYuYXJncykgZG8KKysgICAgICAgIGxvY2FsIHRlbXAKKysgICAgICAgIGlmIGFyZ3VtZW50ID09 ICdjb250cmFzdF93aW5kb3dfc2l6ZScgb3IgYXJndW1lbnQgPT0gJ2NvbnRyYXN0X2VkZ2Vfc2Nh bGUnIG9yIGFyZ3VtZW50ID09ICdjb250cmFzdF9taW5fY3VydmF0dXJlJyB0aGVuIC0tY29tYm9i b3hlcyBtdXN0IGJlIGhhbmRsZWQgc3BlY2lhbGx5IHZpYSBhbiBpbmRleCB2YWx1ZQorKyAgICAg ICAgICAgIHRlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV8nLi5hcmd1bWVu dC4uJ19pbmQnLCAnaW50ZWdlcicpCisrICAgICAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUo bW9kLCBwcmVzZXQuLmFyZ3VtZW50Li4nX2luZCcsICdpbnRlZ2VyJywgdGVtcCkKKysgICAgICAg ICAgICB0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfJy4uYXJndW1lbnQs IGFyZ19kYXRhLnN0eWxlKQorKyAgICAgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwg cHJlc2V0Li5hcmd1bWVudCwgYXJnX2RhdGEuc3R5bGUsIHRlbXApCisrICAgICAgICBlbHNlCisr ICAgICAgICAgICAgdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlXycuLmFy Z3VtZW50LCBhcmdfZGF0YS5zdHlsZSkKKysgICAgICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0 ZShtb2QsIHByZXNldC4uYXJndW1lbnQsIGFyZ19kYXRhLnN0eWxlLCB0ZW1wKQorKyAgICAgICAg ZW5kCisrICAgIGVuZAorKyAgICBkdC5wcmludChzdHJpbmcuZm9ybWF0KF8oInNhdmVkIHRvICVz IiksIHByZXNldCkpCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gTG9hZEZyb21QcmVmZXJlbmNl KHByZXNldCkgLS1sb2FkIHZhbHVlcyBmcm9tIHRoZSBzcGVjaWZpZWQgJ3ByZXNldCcgaW50byB0 aGUgR1VJIGVsZW1lbnRzCisrICAgIGZvciBhcmd1bWVudCwgYXJnX2RhdGEgaW4gcGFpcnMoRU5G LmFyZ3MpIGRvCisrICAgIGxvY2FsIHRlbXAKKysgICAgICAgIGlmIGFyZ3VtZW50ID09ICdjb250 cmFzdF93aW5kb3dfc2l6ZScgb3IgYXJndW1lbnQgPT0gJ2NvbnRyYXN0X2VkZ2Vfc2NhbGUnIG9y IGFyZ3VtZW50ID09ICdjb250cmFzdF9taW5fY3VydmF0dXJlJyB0aGVuICAtLWNvbWJvYm94ZXMg bXVzdCBiZSBoYW5kbGVkIHNwZWNpYWxseSB2aWEgYW4gaW5kZXggdmFsdWUKKysgICAgICAgICAg ICB0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsIHByZXNldC4uYXJndW1lbnQuLidfaW5k JywgJ2ludGVnZXInKQorKyAgICAgICAgICAgIEdVSS5FTkZbYXJndW1lbnRdLnNlbGVjdGVkID0g dGVtcAorKyAgICAgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV8nLi5h cmd1bWVudC4uJ19pbmQnLCAnaW50ZWdlcicsIHRlbXApCisrICAgICAgICBlbHNlCisrICAgICAg ICAgICAgdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCBwcmVzZXQuLmFyZ3VtZW50LCBh cmdfZGF0YS5zdHlsZSkKKysgICAgICAgICAgICBHVUkuRU5GW2FyZ3VtZW50XS52YWx1ZSA9IHRl bXAKKysgICAgICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfJy4uYXJn dW1lbnQsIGFyZ19kYXRhLnN0eWxlLCB0ZW1wKQorKyAgICAgICAgZW5kICAgICAKKysgICAgZW5k CisrICAgIGR0LnByaW50KHN0cmluZy5mb3JtYXQoXygibG9hZGVkIGZyb20gJXMiKSwgcHJlc2V0 KSkKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiByZW1vdmVfdGVtcF9maWxlcyhpbWFnZXNfdG9f cmVtb3ZlKSAtLWRlbGV0ZXMgYWxsIGZpbGVzIHNwZWNpZmllZCBieSB0aGUgaW5wdXQgc3RyaW5n CisrICAgIGlmIGR0LmNvbmZpZ3VyYXRpb24ucnVubmluZ19vcyA9PSAnd2luZG93cycgdGhlbgor KyAgICAgICAgZHQuY29udHJvbC5leGVjdXRlKCdkZWwgJy4uaW1hZ2VzX3RvX3JlbW92ZSkKKysg ICAgZWxzZQorKyAgICAgICAgZHQuY29udHJvbC5leGVjdXRlKCdybSAnLi5pbWFnZXNfdG9fcmVt b3ZlKQorKyAgICBlbmQKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBpbml0aWFsKHN0b3JhZ2Us IGZvcm1hdCwgaW1hZ2VzLCBoaWdoX3F1YWxpdHksIGV4dHJhX2RhdGEpIC0tY2FsbGVkIGJlZm9y ZSBleHBvcnQgaGFwcGVucywgZW5zdXJlIGVub3VnaCBpbWFnZXMgc2VsZWN0ZWQgYW5kIGFsbCBu ZWNlc2FyeSBwcm9ncmFtcyBpbnN0YWxsZWQgY29ycmVjdGx5LCBpZiBlcnJvciB0aGVuIGl0IHNl dHMgYSBiaXQgaW4gZXh0cmFfZGF0YSBmb3IgdXNlIGJ5IG1haW4gYW5kIGNhbmNlbHMgZXhwb3J0 CisrICAgIGlmICNpbWFnZXMgPDIgdGhlbgorKyAgICAgICAgdGFibGUuaW5zZXJ0KGV4dHJhX2Rh dGEsIDEsIDEpCisrICAgICAgICByZXR1cm4ge30KKysgICAgZWxzZQorKyAgICAgICAgUHJlQ2Fs bCh7RU5GLEFJUyxFWEZ9KQorKyAgICAgICAgaWYgQUlTLmluc3RhbGxfZXJyb3Igb3IgRU5GLmlu c3RhbGxfZXJyb3Igb3IgRVhGLmluc3RhbGxfZXJyb3IgdGhlbgorKyAgICAgICAgICAgIHRhYmxl Lmluc2VydChleHRyYV9kYXRhLCAxLCAyKQorKyAgICAgICAgICAgIHJldHVybiB7fQorKyAgICAg ICAgZWxzZQorKyAgICAgICAgICAgIHRhYmxlLmluc2VydChleHRyYV9kYXRhLCAxLCAwKQorKyAg ICAgICAgICAgIHJldHVybiBpbWFnZXMKKysgICAgICAgIGVuZAorKyAgICBlbmQKKytlbmQKKysK Kytsb2NhbCBmdW5jdGlvbiBzdXBwb3J0X2Zvcm1hdChzdG9yYWdlLCBmb3JtYXQpIC0tdGVsbHMg ZHQgd2Ugb25seSBzdXBwb3J0IFRJRkYgZXhwb3J0IHR5cGUKKysgICAgbG9jYWwgcmV0ID0gZmFs c2UKKysgICAgbG9jYWwgdGVtcCA9IHN0cmluZy5maW5kKGZvcm1hdC5uYW1lLCAnVElGRicpCisr ICAgIGlmIHRlbXAgfj0gbmlsIHRoZW4gcmV0ID0gdHJ1ZSBlbmQKKysgICAgcmV0dXJuIHJldAor K2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIHNob3dfc3RhdHVzKHN0b3JhZ2UsIGltYWdlLCBmb3Jt YXQsIGZpbGVuYW1lLCBudW1iZXIsIHRvdGFsLCBoaWdoX3F1YWxpdHksIGV4dHJhX2RhdGEpIC0t b3V0cHV0cyBtZXNzYWdlIHRvIHVzZXIgc2hvd2luZyBzY3JpcHQgZXhwb3J0IHN0YXR1cworKyAg ICBkdC5wcmludChzdHJpbmcuZm9ybWF0KF8oImV4cG9ydCBmb3IgaW1hZ2UgZnVzaW9uICVkIC8g JWQiKSwgbWF0aC5mbG9vcihudW1iZXIpLCBtYXRoLmZsb29yKHRvdGFsKSkpCisrZW5kCisrCisr bG9jYWwgZnVuY3Rpb24gbWFpbihzdG9yYWdlLCBpbWFnZV90YWJsZSwgZXh0cmFfZGF0YSkKKysg ICAgaWYgZXh0cmFfZGF0YVsxXSA9PSAxIHRoZW4KKysgICAgICAgIGR0LnByaW50KF8oJ3RvbyBm ZXcgaW1hZ2VzIHNlbGVjdGVkLCBwbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IDIgaW1hZ2VzJykpCisr ICAgICAgICByZXR1cm4KKysgICAgZWxzZWlmIGV4dHJhX2RhdGFbMV0gPT0gMiB0aGVuCisrICAg ICAgICBkdC5wcmludChfKCdpbnN0YWxsYXRpb24gZXJyb3IsIHBsZWFzZSB2ZXJpZnkgYmluYXJ5 IHBhdGhzIGFyZSBjb3JyZWN0JykpCisrICAgICAgICByZXR1cm4KKysgICAgZW5kCisrICAgIGxv Y2FsIGltYWdlc190b19yZW1vdmUgPSAnJworKyAgICBsb2NhbCBmaW5hbF9pbWFnZSA9IG5pbAor KyAgICBsb2NhbCBzb3VyY2VfcmF3ID0gbmlsCisrICAgIGZvciByYXcsZXhwb3J0ZWQgaW4gcGFp cnMoaW1hZ2VfdGFibGUpIGRvIC0tYWRkIHRoZSBleHBvcnRlZCBmaWxlcyB0byBsaXN0IG9mIGlt YWdlcyB0byByZW1vdmUgd2hlbiBjb21wbGV0ZVxmYWlsCisrICAgICAgICBpbWFnZXNfdG9fcmVt b3ZlID0gaW1hZ2VzX3RvX3JlbW92ZS4uZGYuc2FuaXRpemVfZmlsZW5hbWUoZXhwb3J0ZWQpLi4n ICcKKysgICAgZW5kCisrICAgIGlmIEdVSS5hbGlnbi52YWx1ZSB0aGVuIC0taWYgdXNlciBzZWxl Y3RlZCB0byBhbGlnbiBpbWFnZXMgdGhlbiB1cGRhdGUgQUlTIGFyZ3VtZW50cyBhbmQgZXhlY3V0 ZSBBSVMgY29tbWFuZAorKyAgICAgICAgbG9jYWwgam9iID0gZHQuZ3VpLmNyZWF0ZV9qb2IoJ2Fs aWduaW5nIGltYWdlcycpCisrICAgICAgICBpbWFnZV90YWJsZSwgaW1hZ2VzX3RvX3JlbW92ZSwg QUlTLmltYWdlc19zdHJpbmcgPSBVcGRhdGVBSVNhcmdzKGltYWdlX3RhYmxlLCBpbWFnZXNfdG9f cmVtb3ZlKQorKyAgICAgICAgbG9jYWwgcnVuX2NtZCA9IEJ1aWxkRXhlY3V0ZUNtZChBSVMpCisr ICAgICAgICBkdC5wcmludF9sb2coIkFJUyBydW4gY29tbWFuZCBpcyAiIC4uIHJ1bl9jbWQpCisr ICAgICAgICBydW5fY21kID0gc2FuaXRpemVfZGVjaW1hbHMocnVuX2NtZCkKKysgICAgICAgIGR0 LnByaW50X2xvZygiQUlTIGRlY2ltYWFsIHNhbml0aXplZCBjb21tYW5kIGlzICIgLi4gcnVuX2Nt ZCkKKysgICAgICAgIGxvY2FsIHJlc3AgPSBkc3lzLmV4dGVybmFsX2NvbW1hbmQocnVuX2NtZCkK KysgICAgICAgIGpvYi52YWxpZCA9IGZhbHNlCisrICAgICAgICBpZiByZXNwIH49IDAgdGhlbgor KyAgICAgICAgICAgIHJlbW92ZV90ZW1wX2ZpbGVzKGltYWdlc190b19yZW1vdmUpCisrICAgICAg ICAgICAgZHQucHJpbnQoc3RyaW5nLmZvcm1hdChfKCIlcyBmYWlsZWQiKSwgQUlTLm5hbWUpKQor KyAgICAgICAgICAgIGR0LnByaW50X2Vycm9yKEFJUy5uYW1lIC4uICcgZmFpbGVkJykKKysgICAg ICAgICAgICByZXR1cm4KKysgICAgICAgIGVuZAorKyAgICBlbmQKKysgICAgdmFyaWFudHMgPSB7 J2FjdGl2ZV8nfSAtLWRlZmF1bHQgdG8gJ2FjdGl2ZScgc2V0dGluZ3MgdW5sZXNzIHVzZXIgc2Vs ZWN0ZWQgdG8gY3JlYXRlIG11bHRpcGxlIGltYWdlIHZhcmlhbnRzIGZyb20gdGhlIHNwZWNpZmll ZCBwcmVzZXQgdHlwZXMKKysgICAgaWYgR1VJLlByZXNldHMudmFyaWFudHMudmFsdWUgdGhlbgor KyAgICAgICAgaWYgR1VJLlByZXNldHMudmFyaWFudHNfdHlwZS52YWx1ZSA9PSAnZHJpJyB0aGVu CisrICAgICAgICAgICAgdmFyaWFudHMgPSB7J2RyaV8xJywgJ2RyaV8yJywgJ2RyaV8zJ30KKysg ICAgICAgIGVsc2UKKysgICAgICAgICAgICB2YXJpYW50cyA9IHsnZGZmXzInLCAnZGZmXzInLCAn ZGZmXzMnfQorKyAgICAgICAgZW5kCisrICAgIGVuZAorKyAgICBsb2NhbCBpbWFnZV9udW0gPSAw CisrICAgIGxvY2FsIGpvYiA9IGR0Lmd1aS5jcmVhdGVfam9iKCdibGVuZGluZyAnLi4jdmFyaWFu dHMuLicgaW1hZ2UocyknLCB0cnVlKSAtLWNyZWF0ZSBhIEdVSSBqb2IgYmFyIHRvIGRpc3BsYXkg ZW5mdXNlIHByb2dyZXNzCisrICAgIFVwZGF0ZUFjdGl2ZVByZWZlcmVuY2UoKSAtLWxvYWQgY3Vy cmVudCBHVUkgdmFsdWVzIGludG8gYWN0aXZlIHByZWZlcmVuY2UgKG9ubHkgYXBwbGllcyB0byBl bGVtZW50cyB3aXRob3V0IGEgY2xpY2tlZC9jaGFuZ2VkIGNhbGxiYWNrKQorKyAgICBmb3IgeCxw cmVmaXggaW4gcGFpcnModmFyaWFudHMpIGRvIC0tZm9yIGVhY2ggaW1hZ2UgdG8gYmUgY3JlYXRl ZCBsb2FkIGluIHRoZSBwcmVmZXJlbmNlIHZhbHVlcywgYnVpbGQgYXJndW1lbnRzIHN0cmluZywg b3V0cHV0IGltYWdlLCBhbmQgcnVuIGNvbW1hbmQgdGhlbiBleGVjdXRlLgorKyAgICAgICAgam9i LnBlcmNlbnQgPSBpbWFnZV9udW0gLygjdmFyaWFudHMpCisrICAgICAgICBpbWFnZV9udW0gPSBp bWFnZV9udW0rMQorKyAgICAgICAgRU5GLmltYWdlc19zdHJpbmcsIGZpbmFsX2ltYWdlLCBzb3Vy Y2VfcmF3ID0gVXBkYXRlRU5GYXJncyhpbWFnZV90YWJsZSwgcHJlZml4KQorKyAgICAgICAgbG9j YWwgcnVuX2NtZCA9IEJ1aWxkRXhlY3V0ZUNtZChFTkYpCisrICAgICAgICBkdC5wcmludF9sb2co IkVORiBydW4gY29tbWFuZCBpcyAiIC4uIHJ1bl9jbWQpCisrICAgICAgICBydW5fY21kID0gc2Fu aXRpemVfZGVjaW1hbHMocnVuX2NtZCkKKysgICAgICAgIGR0LnByaW50X2xvZygiRU5GIGRlY2lt YWFsIHNhbml0aXplZCBjb21tYW5kIGlzICIgLi4gcnVuX2NtZCkKKysgICAgICAgIGxvY2FsIHJl c3AgPSBkc3lzLmV4dGVybmFsX2NvbW1hbmQocnVuX2NtZCkKKysgICAgICAgIGlmIHJlc3Agfj0g MCB0aGVuCisrICAgICAgICAgICAgcmVtb3ZlX3RlbXBfZmlsZXMoaW1hZ2VzX3RvX3JlbW92ZSkK KysgICAgICAgICAgICBkdC5wcmludF9lcnJvcihFTkYubmFtZS4uJyBmYWlsZWQnKQorKyAgICAg ICAgICAgIGR0LnByaW50KHN0cmluZy5mb3JtYXQoXygiJXMgZmFpbGVkIiksIEVORi5uYW1lKSkK KysgICAgICAgICAgICBqb2IudmFsaWQgPSBmYWxzZQorKyAgICAgICAgICAgIHJldHVybgorKyAg ICAgICAgZW5kCisrICAgICAgICAKKysgICAgICAgIC0tY29weSBleGlmIGRhdGEgZnJvbSBvcmln aW5hbCBmaWxlCisrICAgICAgICBydW5fY21kID0gRVhGLmJpbi4uJyAtVGFnc0Zyb21GaWxlICcu LmRmLnNhbml0aXplX2ZpbGVuYW1lKHNvdXJjZV9yYXcucGF0aC4ub3NfcGF0aF9zZXBlcmF0b3Iu LnNvdXJjZV9yYXcuZmlsZW5hbWUpLi4nIC1leGlmOmFsbCAtLXN1YmlmZDphbGwgLW92ZXJ3cml0 ZV9vcmlnaW5hbCAnLi5kZi5zYW5pdGl6ZV9maWxlbmFtZShmaW5hbF9pbWFnZSkKKysgICAgICAg IC0tIHJlcGxhY2UgY29tbWEgZGVjaW1hbCBzZXBhcmF0b3Igd2l0aCBwZXJpb2QKKysgICAgICAg IGR0LnByaW50X2xvZygiRVhGIHJ1biBjb21tYW5kIGlzICIgLi4gcnVuX2NtZCkKKysgICAgICAg IHJ1bl9jbWQgPSBzYW5pdGl6ZV9kZWNpbWFscyhydW5fY21kKQorKyAgICAgICAgZHQucHJpbnRf bG9nKCJFWEYgZGVjaW1hYWwgc2FuaXRpemVkIGNvbW1hbmQgaXMgIiAuLiBydW5fY21kKQorKyAg ICAgICAgcmVzcCA9IGRzeXMuZXh0ZXJuYWxfY29tbWFuZChydW5fY21kKQorKyAgICAgICAgCisr ICAgICAgICAKKysgICAgICAgIGlmIEdVSS5UYXJnZXQuYXV0b19pbXBvcnQudmFsdWUgdGhlbiAt LWltcG9ydCBpbWFnZSBpbnRvIGR0IGlmIHNwZWNpZmllZAorKyAgICAgICAgICAgIGxvY2FsIGlt cG9ydGVkID0gZHQuZGF0YWJhc2UuaW1wb3J0KGZpbmFsX2ltYWdlKQorKyAgICAgICAgICAgIGR0 LnByaW50X2xvZygiaW1hZ2UgaW1wb3J0ZWQiKQorKyAgICAgICAgICAgIGlmIEdVSS5UYXJnZXQu YXBwbHlfc3R5bGUuc2VsZWN0ZWQgPiAxIHRoZW4gLS1hcHBseSBzcGVjaWZpZWQgc3R5bGUgdG8g aW1wb3J0ZWQgaW1hZ2UKKysgICAgICAgICAgICAgICAgbG9jYWwgc2V0X3N0eWxlID0gc3R5bGVz W0dVSS5UYXJnZXQuYXBwbHlfc3R5bGUuc2VsZWN0ZWQgLSAxXQorKyAgICAgICAgICAgICAgICBk dC5zdHlsZXMuYXBwbHkoc2V0X3N0eWxlICwgaW1wb3J0ZWQpCisrICAgICAgICAgICAgZW5kCisr ICAgICAgICAgICAgaWYgR1VJLlRhcmdldC5jb3B5X3RhZ3MudmFsdWUgdGhlbiAtLWNvcHkgdGFn cyBmcm9tIHNvdXJjZSBpbWFnZQorKyAgICAgICAgICAgICAgICBsb2NhbCBhbGxfdGFncyA9IGR0 LnRhZ3MuZ2V0X3RhZ3Moc291cmNlX3JhdykgCisrICAgICAgICAgICAgICAgIGZvciBfLHRhZyBp biBwYWlycyhhbGxfdGFncykgZG8KKysgICAgICAgICAgICAgICAgICAgIGlmIHN0cmluZy5tYXRj aCh0YWcubmFtZSwgJ2Rhcmt0YWJsZXwnKSA9PSBuaWwgdGhlbiBkdC50YWdzLmF0dGFjaCh0YWcs IGltcG9ydGVkKSBlbmQKKysgICAgICAgICAgICAgICAgZW5kCisrICAgICAgICAgICAgZW5kCisr ICAgICAgICAgICAgbG9jYWwgc2V0X3RhZyA9IEdVSS5UYXJnZXQuYWRkX3RhZ3MudGV4dAorKyAg ICAgICAgICAgIGlmIHNldF90YWcgfj0gbmlsIHRoZW4gLS1hZGQgYWRkaXRpb25hbCB1c2VyLXNw ZWNpZmllZCB0YWdzCisrICAgICAgICAgICAgICAgIGZvciB0YWcgaW4gc3RyaW5nLmdtYXRjaChz ZXRfdGFnLCAnW14sXSsnKSBkbworKyAgICAgICAgICAgICAgICAgICAgdGFnID0gQ2xlYW5TcGFj ZXModGFnKQorKyAgICAgICAgICAgICAgICAgICAgdGFnID0gZHQudGFncy5jcmVhdGUodGFnKQor KyAgICAgICAgICAgICAgICAgICAgZHQudGFncy5hdHRhY2godGFnLCBpbXBvcnRlZCkgCisrICAg ICAgICAgICAgICAgIGVuZAorKyAgICAgICAgICAgIGVuZAorKyAgICAgICAgZW5kCisrICAgIGVu ZAorKyAgICByZW1vdmVfdGVtcF9maWxlcyhpbWFnZXNfdG9fcmVtb3ZlKQorKyAgICBqb2IudmFs aWQgPSBmYWxzZQorKyAgICBkdC5wcmludCgnaW1hZ2UgZnVzaW9uIHByb2Nlc3MgY29tcGxldGUn KQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGRlc3Ryb3koKQorKyAgICBkdC5kZXN0cm95X3N0 b3JhZ2UoJ21vZHVsZV9lbmZ1c2VBZHZhbmNlZCcpCisrZW5kCisrCisrLS1HVUktLQorK3N0YWNr X2NvbXByZXNzaW9uID0gZHQubmV3X3dpZGdldCgnc3RhY2snKXt9CisrbG9jYWwgbGFiZWxfQUlT X29wdGlvbnM9IGR0Lm5ld193aWRnZXQoJ3NlY3Rpb25fbGFiZWwnKXsKKysgICAgbGFiZWwgPSBf KCdpbWFnZSBhbGlnbiBvcHRpb25zJykKKyt9CisrR1VJLmFsaWduID0gZHQubmV3X3dpZGdldCgn Y2hlY2tfYnV0dG9uJyl7CisrICAgIGxhYmVsID0gXygnYWxpZ24gaW1hZ2VzJyksCisrICAgIHZh bHVlID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfYWxpZ24nLCAnYm9vbCcpLAor KyAgICB0b29sdGlwID0gXygnYXV0b21hdGljYWxseSBhbGlnbiBpbWFnZXMgcHJpb3IgdG8gZW5m dXNlJyksCisrICAgIGNsaWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAg IGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9hbGlnbicsICdib29sJywgc2VsZi52 YWx1ZSkgCisrICAgICAgICBmb3IgXyx3aWRnZXQgaW4gcGFpcnMoR1VJLkFJUykgZG8KKysgICAg ICAgICAgICB3aWRnZXQuc2Vuc2l0aXZlID0gc2VsZi52YWx1ZQorKyAgICAgICAgZW5kCisrICAg IGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBzZWxmLnZhbHVlID0g dHJ1ZSBlbmQKKyt9CisrR1VJLkFJUy5yYWRpYWxfZGlzdG9ydGlvbiA9IGR0Lm5ld193aWRnZXQo J2NoZWNrX2J1dHRvbicpeworKyAgICBsYWJlbCA9IF8oJ29wdGltaXplIHJhZGlhbCBkaXN0b3J0 aW9uJyksCisrICAgIHZhbHVlID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfcmFk aWFsX2Rpc3RvcnRpb24nLCAnYm9vbCcpLAorKyAgICB0b29sdGlwID0gXygnb3B0aW1pemUgcmFk aWFsIGRpc3RvcnRpb24gZm9yIGFsbCBpbWFnZXMsIFxuZXhjZXB0IGZvciBmaXJzdCcpLAorKyAg ICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgZHQucHJlZmVyZW5jZXMud3JpdGUo bW9kLCAnYWN0aXZlX3JhZGlhbF9kaXN0b3J0aW9uJywgJ2Jvb2wnLCBzZWxmLnZhbHVlKSBlbmQs CisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9IHRydWUg ZW5kCisrfQorK0dVSS5BSVMub3B0aW1pemVfZmllbGQgPSBkdC5uZXdfd2lkZ2V0KCdjaGVja19i dXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCdvcHRpbWl6ZSBmaWVsZCBvZiB2aWV3JyksIAorKyAg ICB2YWx1ZSA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX29wdGltaXplX2ZpZWxk JywgJ2Jvb2wnKSwKKysgICAgdG9vbHRpcCA9IF8oJ29wdGltaXplIGZpZWxkIG9mIHZpZXcgZm9y IGFsbCBpbWFnZXMsIGV4Y2VwdCBmb3IgZmlyc3QuIFxuVXNlZnVsIGZvciBhbGlnbmluZyBmb2N1 cyBzdGFja3MgKERGRikgd2l0aCBzbGlnaHRseSBcbmRpZmZlcmVudCBtYWduaWZpY2F0aW9uLicp LAorKyAgICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgZHQucHJlZmVyZW5jZXMu d3JpdGUobW9kLCAnYWN0aXZlX29wdGltaXplX2ZpZWxkJywgJ2Jvb2wnLCBzZWxmLnZhbHVlKSBl bmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9IHRy dWUgZW5kCisrfQorK0dVSS5BSVMub3B0aW1pemVfaW1hZ2VfY2VudGVyID0gZHQubmV3X3dpZGdl dCgnY2hlY2tfYnV0dG9uJyl7CisrICAgIGxhYmVsID0gXygnb3B0aW1pemUgaW1hZ2UgY2VudGVy IHNoaWZ0JyksIAorKyAgICB2YWx1ZSA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZl X29wdGltaXplX2ltYWdlX2NlbnRlcicsICdib29sJyksCisrICAgIHRvb2x0aXAgPSBfKCdvcHRp bWl6ZSBpbWFnZSBjZW50ZXIgc2hpZnQgZm9yIGFsbCBpbWFnZXMsIFxuZXhjZXB0IGZvciBmaXJz dC4nKSwKKysgICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIGR0LnByZWZlcmVu Y2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9vcHRpbWl6ZV9pbWFnZV9jZW50ZXInLCAnYm9vbCcsIHNl bGYudmFsdWUpIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBzZWxm LnZhbHVlID0gdHJ1ZSBlbmQKKyt9CisrR1VJLkFJUy5hdXRvX2Nyb3AgPSBkdC5uZXdfd2lkZ2V0 KCdjaGVja19idXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCdhdXRvIGNyb3AnKSwgCisrICAgIHZh bHVlID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfYXV0b19jcm9wJywgJ2Jvb2wn KSwKKysgICAgdG9vbHRpcCA9IF8oJ2F1dG8gY3JvcCB0aGUgaW1hZ2UgdG8gdGhlIGFyZWEgY292 ZXJlZCBieSBhbGwgaW1hZ2VzLicpLAorKyAgICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rpb24o c2VsZikgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2F1dG9fY3JvcCcsICdib29s Jywgc2VsZi52YWx1ZSkgZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYp IHNlbGYudmFsdWUgPSB0cnVlIGVuZAorK30KKytHVUkuQUlTLmRpc3RvcnRpb24gPSBkdC5uZXdf d2lkZ2V0KCdjaGVja19idXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCdsb2FkIGRpc3RvcnRpb24g ZnJvbSBsZW5zIGRhdGFiYXNlJyksIAorKyAgICB2YWx1ZSA9IGR0LnByZWZlcmVuY2VzLnJlYWQo bW9kLCAnYWN0aXZlX2Rpc3RvcnRpb24nLCAnYm9vbCcpLAorKyAgICB0b29sdGlwID0gXygndHJ5 IHRvIGxvYWQgZGlzdG9ydGlvbiBpbmZvcm1hdGlvbiBmcm9tIGxlbnMgZGF0YWJhc2UnKSwKKysg ICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIGR0LnByZWZlcmVuY2VzLndyaXRl KG1vZCwgJ2FjdGl2ZV9kaXN0b3J0aW9uJywgJ2Jvb2wnLCBzZWxmLnZhbHVlKSBlbmQsCisrICAg IHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9IHRydWUgZW5kCisr fQorK0dVSS5BSVMuZ3B1ID0gZHQubmV3X3dpZGdldCgnY2hlY2tfYnV0dG9uJyl7CisrICAgIGxh YmVsID0gXygndXNlIGdwdScpLCAKKysgICAgdmFsdWUgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1v ZCwgJ2FjdGl2ZV9ncHUnLCAnYm9vbCcpLAorKyAgICB0b29sdGlwID0gXygndXNlIGdwdSBkdXJp bmcgYWxpZ25tZW50JyksCisrICAgIGNsaWNrZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBk dC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfZ3B1JywgJ2Jvb2wnLCBzZWxmLnZhbHVl KSBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9 IHRydWUgZW5kCisrfQorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9n cmlkX3NpemVfaW5kJywgJ2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIDkpIHRo ZW4gdGVtcCA9IDUgZW5kIAorK0dVSS5BSVMuZ3JpZF9zaXplID0gZHQubmV3X3dpZGdldCgnY29t Ym9ib3gnKXsKKysgICAgbGFiZWwgPSBfKCdpbWFnZSBncmlkIHNpemUnKSwgCisrICAgIHRvb2x0 aXAgPSBfKCdicmVhayBpbWFnZSBpbnRvIGEgcmVjdGFuZ3VsYXIgZ3JpZCBcbmFuZCBhdHRlbXB0 IHRvIGZpbmQgbnVtIGNvbnRyb2wgcG9pbnRzIGluIGVhY2ggc2VjdGlvbi5cbmRlZmF1bHQ6ICg1 eDUpJyksCisrICAgIHNlbGVjdGVkID0gdGVtcCwKKysgICAgJzEnLCcyJywnMycsJzQnLCc1Jywn NicsJzcnLCc4JywnOScsCisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQor KyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2dyaWRfc2l6ZScsICdp bnRlZ2VyJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2Qs ICdhY3RpdmVfZ3JpZF9zaXplX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAg ZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2Vs Zi5zZWxlY3RlZCA9IDUKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2 ZV9ncmlkX3NpemUnLCAnaW50ZWdlcicsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVy ZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2dyaWRfc2l6ZV9pbmQnLCAnaW50ZWdlcicsIHNlbGYu c2VsZWN0ZWQpCisrICAgIGVuZAorK30gCisrdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9k LCAnYWN0aXZlX2NvbnRyb2xfcG9pbnRzX2luZCcsICdpbnRlZ2VyJykKKytpZiBub3QgSW5SYW5n ZSh0ZW1wLCAxLCA5KSB0aGVuIHRlbXAgPSA4IGVuZCAKKytHVUkuQUlTLmNvbnRyb2xfcG9pbnRz ID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gnKXsKKysgICAgbGFiZWwgPSBfKCdjb250cm9sIHBv aW50cy9ncmlkJyksIAorKyAgICB0b29sdGlwID0gXygnbnVtYmVyIG9mIGNvbnRyb2wgcG9pbnRz IChwZXIgZ3JpZCwgc2VlIG9wdGlvbiAtZykgXG50byBjcmVhdGUgYmV0d2VlbiBhZGphY2VudCBp bWFnZXMgXG5kZWZhdWx0OiAoOCkuJyksCisrICAgIHNlbGVjdGVkID0gdGVtcCwKKysgICAgJzEn LCcyJywnMycsJzQnLCc1JywnNicsJzcnLCc4JywnOScsICAgICAgICAgICAgIAorKyAgICBjaGFu Z2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndy aXRlKG1vZCwgJ2FjdGl2ZV9jb250cm9sX3BvaW50cycsICdpbnRlZ2VyJywgc2VsZi52YWx1ZSkg CisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJvbF9wb2lu dHNfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQsCisrICAgIHJlc2V0 X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBzZWxmLnNlbGVjdGVkID0gOAor KyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvbnRyb2xfcG9pbnRz JywgJ2ludGVnZXInLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRl KG1vZCwgJ2FjdGl2ZV9jb250cm9sX3BvaW50c19pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0 ZWQpCisrICAgIGVuZAorK30gCisrdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0 aXZlX2NvbnRyb2xfcG9pbnRzX3JlbW92ZV9pbmQnLCAnaW50ZWdlcicpCisraWYgbm90IEluUmFu Z2UodGVtcCwgMSwgOSkgdGhlbiB0ZW1wID0gMyBlbmQgCisrR1VJLkFJUy5jb250cm9sX3BvaW50 c19yZW1vdmUgPSBkdC5uZXdfd2lkZ2V0KCdjb21ib2JveCcpeworKyAgICBsYWJlbCA9IF8oJ3Jl bW92ZSBjb250cm9sIHBvaW50cyB3aXRoIGVycm9yJyksIAorKyAgICB0b29sdGlwID0gXygncmVt b3ZlIGFsbCBjb250cm9sIHBvaW50cyB3aXRoIGFuIGVycm9yIGhpZ2hlciBcbnRoYW4gbnVtIHBp eGVscyBcbmRlZmF1bHQ6ICgzKScpLAorKyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICcxJywn MicsJzMnLCc0JywnNScsJzYnLCc3JywnOCcsJzknLCAgICAgICAgICAgICAKKysgICAgY2hhbmdl ZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0 ZShtb2QsICdhY3RpdmVfY29udHJvbF9wb2ludHNfcmVtb3ZlJywgJ2ludGVnZXInLCBzZWxmLnZh bHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cm9s X3BvaW50c19yZW1vdmVfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQs CisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBzZWxmLnNl bGVjdGVkID0gMworKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2Nv bnRyb2xfcG9pbnRzX3JlbW92ZScsICdpbnRlZ2VyJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBk dC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJvbF9wb2ludHNfcmVtb3ZlX2lu ZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kCisrfQorK3RlbXAgPSBkdC5w cmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9jb3JyZWxhdGlvbl9pbmQnLCAnaW50ZWdlcicp CisraWYgbm90IEluUmFuZ2UodGVtcCwgMSwgMTApIHRoZW4gdGVtcCA9IDkgZW5kIAorK0dVSS5B SVMuY29ycmVsYXRpb24gID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gnKXsKKysgICAgbGFiZWwg PSBfKCdjb3JyZWxhdGlvbiB0aHJlc2hvbGQgZm9yIGNvbnRyb2wgcG9pbnRzJyksIAorKyAgICB0 b29sdGlwID0gXygnY29ycmVsYXRpb24gdGhyZXNob2xkIGZvciBpZGVudGlmeWluZyBcbmNvbnRy b2wgcG9pbnRzIFxuZGVmYXVsdDogKDAuOSkuJyksCisrICAgIHNlbGVjdGVkID0gdGVtcCwKKysg ICAgJzAuMScsJzAuMicsJzAuMycsJzAuNCcsJzAuNScsJzAuNicsJzAuNycsJzAuOCcsJzAuOScs JzEuMCcsICAgICAKKysgICAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAg ICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29ycmVsYXRpb24nLCAnZmxv YXQnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2Fj dGl2ZV9jb3JyZWxhdGlvbl9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVu ZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYu c2VsZWN0ZWQgPSA5CisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVf Y29ycmVsYXRpb24nLCAnZmxvYXQnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVu Y2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb3JyZWxhdGlvbl9pbmQnLCAnaW50ZWdlcicsIHNlbGYu c2VsZWN0ZWQpCisrICAgIGVuZAorK30gCisrbG9jYWwgbGFiZWxfRU5GX29wdGlvbnM9IGR0Lm5l d193aWRnZXQoJ3NlY3Rpb25fbGFiZWwnKXsKKysgICAgbGFiZWwgPSBfKCdpbWFnZSBmdXNpb24g b3B0aW9ucycpCisrfQorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9l eHBvc3VyZV93ZWlnaHQnLCAnZmxvYXQnKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDAsIDEpIHRo ZW4gdGVtcCA9IDEgZW5kCisrR1VJLkVORi5leHBvc3VyZV93ZWlnaHQgPSBkdC5uZXdfd2lkZ2V0 KCdzbGlkZXInKXsKKysgICAgbGFiZWwgPSBfKCdleHBvc3VyZSB3ZWlnaHQnKSwKKysgICAgdG9v bHRpcCA9IF8oJ3NldCB0aGUgcmVsYXRpdmUgd2VpZ2h0IG9mIHRoZSB3ZWxsLWV4cG9zZWRuZXNz IGNyaXRlcmlvbiBcbmFzIGRlZmluZWQgYnkgdGhlIGNob3NlbiBleHBvc3VyZSB3ZWlnaHQgZnVu Y3Rpb24uIFxuaW5jcmVhc2luZyB0aGlzIHdlaWdodCByZWxhdGl2ZSB0byB0aGUgb3RoZXJzIHdp bGxcbiBtYWtlIHdlbGwtZXhwb3NlZCBwaXhlbHMgY29udHJpYnV0ZSBtb3JlIHRvXG4gdGhlIGZp bmFsIG91dHB1dC4gXG5kZWZhdWx0OiAoMS4wKScpLAorKyAgICBoYXJkX21pbiA9IDAsCisrICAg IGhhcmRfbWF4ID0gMSwKKysgICAgdmFsdWUgPSB0ZW1wLAorKyAgICByZXNldF9jYWxsYmFjayA9 IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi52YWx1ZSA9IDEKKysgICAgZW5kCisrfQor K3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9zYXR1cmF0aW9uX3dlaWdo dCcsICdmbG9hdCcpCisraWYgbm90IEluUmFuZ2UodGVtcCwgMCwgMSkgdGhlbiB0ZW1wID0gLjIg ZW5kCisrR1VJLkVORi5zYXR1cmF0aW9uX3dlaWdodCA9IGR0Lm5ld193aWRnZXQoJ3NsaWRlcicp eworKyAgICBsYWJlbCA9IF8oJ3NhdHVyYXRpb24gd2VpZ2h0JyksCisrICAgIHRvb2x0aXAgPSBf KCdzZXQgdGhlIHJlbGF0aXZlIHdlaWdodCBvZiBoaWdoLXNhdHVyYXRpb24gcGl4ZWxzLiBcbmlu Y3JlYXNpbmcgdGhpcyB3ZWlnaHQgbWFrZXMgcGl4ZWxzIHdpdGggaGlnaCBcbnNhdHVyYXRpb24g Y29udHJpYnV0ZSBtb3JlIHRvIHRoZSBmaW5hbCBvdXRwdXQuIFxuZGVmYXVsdDogKDAuMiknKSwK KysgICAgaGFyZF9taW4gPSAwLAorKyAgICBoYXJkX21heCA9IDEsCisrICAgIHZhbHVlID0gdGVt cCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYu dmFsdWUgPSAwLjIKKysgICAgZW5kCisrfQorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1v ZCwgJ2FjdGl2ZV9jb250cmFzdF93ZWlnaHQnLCAnZmxvYXQnKQorK2lmIG5vdCBJblJhbmdlKHRl bXAsIDAsIDEpIHRoZW4gdGVtcCA9IDAgZW5kCisrR1VJLkVORi5jb250cmFzdF93ZWlnaHQgPSBk dC5uZXdfd2lkZ2V0KCdzbGlkZXInKXsKKysgICAgbGFiZWwgPSBfKCdjb250cmFzdCB3ZWlnaHQn KSwKKysgICAgdG9vbHRpcCA9IF8oJ3NldHMgdGhlIHJlbGF0aXZlIHdlaWdodCBvZiBoaWdoIGxv Y2FsLWNvbnRyYXN0IHBpeGVscy4gXG5kZWZhdWx0OiAoMC4wKS4nKSwKKysgICAgaGFyZF9taW4g PSAwLAorKyAgICBoYXJkX21heCA9IDEsCisrICAgIHZhbHVlID0gdGVtcCwKKysgICAgcmVzZXRf Y2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysgICAgICAgIHNlbGYudmFsdWUgPSAwCisrICAg IGVuZAorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfZXhwb3N1 cmVfb3B0aW11bScsICdmbG9hdCcpCisraWYgbm90IEluUmFuZ2UodGVtcCwgMCwgMSkgdGhlbiB0 ZW1wID0gMC41IGVuZAorK0dVSS5FTkYuZXhwb3N1cmVfb3B0aW11bSA9IGR0Lm5ld193aWRnZXQo J3NsaWRlcicpeworKyAgICBsYWJlbCA9IF8oJ2V4cG9zdXJlIG9wdGltdW0nKSwKKysgICAgdG9v bHRpcCA9IF8oJ2RldGVybWluZSBhdCB3aGF0IG5vcm1hbGl6ZWQgZXhwb3N1cmUgdmFsdWVcbiB0 aGUgb3B0aW11bSBleHBvc3VyZSBvZiB0aGUgaW5wdXQgaW1hZ2VzXG4gaXMuIHRoaXMgaXMsIHNl dCB0aGUgcG9zaXRpb24gb2YgdGhlIG1heGltdW1cbiBvZiB0aGUgZXhwb3N1cmUgd2VpZ2h0IGN1 cnZlLiB1c2UgdGhpcyBcbm9wdGlvbiB0byBmaW5lLXR1bmUgZXhwb3N1cmUgd2VpZ2h0aW5nLiBc bmRlZmF1bHQ6ICgwLjUpJyksCisrICAgIGhhcmRfbWluID0gMCwKKysgICAgaGFyZF9tYXggPSAx LAorKyAgICB2YWx1ZSA9IHRlbXAsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2Vs ZikgCisrICAgICAgICBzZWxmLnZhbHVlID0gMC41CisrICAgIGVuZAorK30KKyt0ZW1wID0gZHQu cHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfZXhwb3N1cmVfd2lkdGgnLCAnZmxvYXQnKQor K2lmIG5vdCBJblJhbmdlKHRlbXAsIDAsIDEpIHRoZW4gdGVtcCA9IDAuMiBlbmQKKytHVUkuRU5G LmV4cG9zdXJlX3dpZHRoID0gZHQubmV3X3dpZGdldCgnc2xpZGVyJyl7CisrICAgIGxhYmVsID0g XygnZXhwb3N1cmUgd2lkdGgnKSwKKysgICAgdG9vbHRpcCA9IF8oJ3NldCB0aGUgY2hhcmFjdGVy aXN0aWMgd2lkdGggKEZXSE0pIG9mIHRoZSBleHBvc3VyZSBcbndlaWdodCBmdW5jdGlvbi4gbG93 IG51bWJlcnMgZ2l2ZSBsZXNzIHdlaWdodCB0byBcbnBpeGVscyB0aGF0IGFyZSBmYXIgZnJvbSB0 aGUgdXNlci1kZWZpbmVkIFxub3B0aW11bSBhbmQgdmljZSB2ZXJzYS4gdXNlIHRoaXMgb3B0aW9u IHRvIFxuZmluZS10dW5lIGV4cG9zdXJlIHdlaWdodGluZy4gXG5kZWZhdWx0OiAoMC4yKScpLAor KyAgICBoYXJkX21pbiA9IDAsCisrICAgIGhhcmRfbWF4ID0gMSwKKysgICAgdmFsdWUgPSB0ZW1w LAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi52 YWx1ZSA9IDAuMgorKyAgICBlbmQKKyt9CisrR1VJLkVORi5oYXJkX21hc2tzID0gZHQubmV3X3dp ZGdldCgnY2hlY2tfYnV0dG9uJyl7CisrICAgIGxhYmVsID0gXygnaGFyZCBtYXNrJyksIAorKyAg ICB2YWx1ZSA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2hhcmRfbWFza3MnLCAn Ym9vbCcpLAorKyAgICB0b29sdGlwID0gXygnZm9yY2UgaGFyZCBibGVuZCBtYXNrcyBvbiB0aGUg ZmluZXN0IHNjYWxlLiB0aGlzIGF2b2lkcyBcbmF2ZXJhZ2luZyBvZiBmaW5lIGRldGFpbHMgKG9u bHkpLCBhdCB0aGUgZXhwZW5zZSBcbm9mIGluY3JlYXNpbmcgdGhlIG5vaXNlLiB0aGlzIGltcHJv dmVzIHRoZSBcbnNoYXJwbmVzcyBvZiBmb2N1cyBzdGFja3MgY29uc2lkZXJhYmx5LlxuZGVmYXVs dCAoc29mdCBtYXNrKScpLCAgIAorKyAgICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2Vs ZikgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2hhcmRfbWFza3MnLCAnYm9vbCcs IHNlbGYudmFsdWUpIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBz ZWxmLnZhbHVlID0gZmFsc2UgZW5kCisrfQorK0dVSS5FTkYuc2F2ZV9tYXNrcyA9IGR0Lm5ld193 aWRnZXQoJ2NoZWNrX2J1dHRvbicpeworKyAgICBsYWJlbCA9IF8oJ3NhdmUgbWFza3MnKSwgCisr ICAgIHZhbHVlID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfc2F2ZV9tYXNrcycs ICdib29sJyksCisrICAgIHRvb2x0aXAgPSBfKCdzYXZlIHRoZSBnZW5lcmF0ZWQgd2VpZ2h0IG1h c2tzIHRvIHlvdXIgaG9tZSBkaXJlY3RvcnksXG5lbmJsZW5kIHNhdmVzIG1hc2tzIGFzIDggYml0 IGdyYXlzY2FsZSwgXG5pLmUuIHNpbmdsZSBjaGFubmVsIGltYWdlcy4gXG5mb3IgYWNjdXJhY3kg d2UgcmVjb21tZW5kIHRvIGNob29zZSBhIGxvc3NsZXNzIGZvcm1hdC4nKSwgIAorKyAgICBjbGlj a2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAn YWN0aXZlX3NhdmVfbWFza3MnLCAnYm9vbCcsIHNlbGYudmFsdWUpIGVuZCwKKysgICAgcmVzZXRf Y2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSBzZWxmLnZhbHVlID0gZmFsc2UgZW5kCisrfQorK3Rl bXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9jb250cmFzdF93aW5kb3dfc2l6 ZV9pbmQnLCAnaW50ZWdlcicpCisraWYgbm90IEluUmFuZ2UodGVtcCwgMSwgOCkgdGhlbiB0ZW1w ID0gMyBlbmQgCisrR1VJLkVORi5jb250cmFzdF93aW5kb3dfc2l6ZSA9IGR0Lm5ld193aWRnZXQo J2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygnY29udHJhc3Qgd2luZG93IHNpemUnKSwgCisr ICAgIHRvb2x0aXAgPSBfKCdzZXQgdGhlIHdpbmRvdyBzaXplIGZvciBsb2NhbCBjb250cmFzdCBh bmFseXNpcy4gXG50aGUgd2luZG93IHdpbGwgYmUgYSBzcXVhcmUgb2Ygc2l6ZSDDlyBzaXplIHBp eGVscy4gXG5pZiBnaXZlbiBhbiBldmVuIHNpemUsIEVuZnVzZSB3aWxsIFxuYXV0b21hdGljYWxs eSB1c2UgdGhlIG5leHQgb2RkIG51bWJlci5cbmZvciBjb250cmFzdCBhbmFseXNpcyBzaXplIHZh bHVlcyBsYXJnZXIgXG50aGFuIDUgcGl4ZWxzIG1pZ2h0IHJlc3VsdCBpbiBhIFxuYmx1cnJ5IGNv bXBvc2l0ZSBpbWFnZS4gdmFsdWVzIG9mIDMgYW5kIFxuNSBwaXhlbHMgaGF2ZSBnaXZlbiBnb29k IHJlc3VsdHMgb24gXG5mb2N1cyBzdGFja3MuIFxuZGVmYXVsdDogKDUpIHBpeGVscycpLAorKyAg ICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICczJywnNCcsJzUnLCc2JywnNycsJzgnLCc5JywnMTAn LAorKyAgICBjaGFuZ2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgICAgIGR0LnBy ZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cmFzdF93aW5kb3dfc2l6ZScsICdpbnRl Z2VyJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdh Y3RpdmVfY29udHJhc3Rfd2luZG93X3NpemVfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVk KQorKyAgICBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAg ICAgICBzZWxmLnNlbGVjdGVkID0gMworKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9k LCAnYWN0aXZlX2NvbnRyYXN0X3dpbmRvd19zaXplJywgJ2ludGVnZXInLCBzZWxmLnZhbHVlKSAK KysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cmFzdF93aW5k b3dfc2l6ZV9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZAorK30gCisr dGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2NvbnRyYXN0X2VkZ2Vfc2Nh bGVfaW5kJywgJ2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIDYpIHRoZW4gdGVt cCA9IDEgZW5kIAorK0dVSS5FTkYuY29udHJhc3RfZWRnZV9zY2FsZSA9IGR0Lm5ld193aWRnZXQo J2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygnY29udHJhc3QgZWRnZSBzY2FsZScpLCAKKysg ICAgdG9vbHRpcCA9IF8oJ2Egbm9uLXplcm8gdmFsdWUgZm9yIEVER0UtU0NBTEUgc3dpdGNoZXMg b24gdGhlIFxuTGFwbGFjaWFuLW9mLUdhdXNzaWFuIChMb0cpIGVkZ2UgZGV0ZWN0aW9uIGFsZ29y aXRobS5cbiBlZGFnZS1zY2FsZSBpcyB0aGUgcmFkaXVzIG9mIHRoZSBHYXVzc2lhbiB1c2VkIFxu aW4gdGhlIHNlYXJjaCBmb3IgZWRnZXMuIGEgcG9zaXRpdmUgTENFLVNDQUxFIFxudHVybnMgb24g bG9jYWwgY29udHJhc3QgZW5oYW5jZW1lbnQgKExDRSkgXG5iZWZvcmUgdGhlIExvRyBlZGdlIGRl dGVjdGlvbi4gXG5EZWZhdWx0OiAoMC4wKSBwaXhlbHMuJyksCisrICAgIHNlbGVjdGVkID0gdGVt cCwKKysgICAgJzAuMCcsJzAuMScsJzAuMicsJzAuMycsJzAuNCcsJzAuNScsCisrICAgIGNoYW5n ZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3Jp dGUobW9kLCAnYWN0aXZlX2NvbnRyYXN0X2VkZ2Vfc2NhbGUnLCAnZmxvYXQnLCBzZWxmLnZhbHVl KSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cmFzdF9l ZGdlX3NjYWxlX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kLAorKyAg ICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3Rl ZCA9IDEKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cmFz dF9lZGdlX3NjYWxlJywgJ2Zsb2F0Jywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJl bmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJhc3RfZWRnZV9zY2FsZV9pbmQnLCAnaW50ZWdl cicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZAorK30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMu cmVhZChtb2QsICdhY3RpdmVfY29udHJhc3RfbWluX2N1cnZhdHVyZV9pbmQnLCAnaW50ZWdlcicp CisraWYgbm90IEluUmFuZ2UodGVtcCwgMSwgMTEpIHRoZW4gdGVtcCA9IDEgZW5kIAorK0dVSS5F TkYuY29udHJhc3RfbWluX2N1cnZhdHVyZSA9IGR0Lm5ld193aWRnZXQoJ2NvbWJvYm94Jyl7Cisr ICAgIGxhYmVsID0gXygnY29udHJhc3QgbWluIGN1cnZhdHVyZSBbJV0nKSwKKysgICAgdG9vbHRp cCA9IF8oJ2RlZmluZSB0aGUgbWluaW11bSBjdXJ2YXR1cmUgZm9yIHRoZSBMb0cgZWRnZSBkZXRl Y3Rpb24uIEFwcGVuZCBhIOKAmCXigJkgdG8gc3BlY2lmeSB0aGUgbWluaW11bSBjdXJ2YXR1cmUg cmVsYXRpdmUgdG8gbWF4aW11bSBwaXhlbCB2YWx1ZSBpbiB0aGUgc291cmNlIGltYWdlLiBEZWZh dWx0OiAoMC4wJSknKSwKKysgICAgc2VsZWN0ZWQgPSB0ZW1wLCAKKysgICAgJzAuMCUnLCcwLjEl JywnMC4yJScsJzAuMyUnLCcwLjQlJywnMC41JScsJzAuNiUnLCcwLjclJywnMC44JScsJzAuOSUn LCcxLjAlJywKKysgICAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAg ICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29udHJhc3RfbWluX2N1cnZhdHVy ZScsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRl KG1vZCwgJ2FjdGl2ZV9jb250cmFzdF9taW5fY3VydmF0dXJlX2luZCcsICdpbnRlZ2VyJywgc2Vs Zi5zZWxlY3RlZCkKKysgICAgZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNl bGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IDEKKysgICAgICAgIGR0LnByZWZlcmVuY2Vz LndyaXRlKG1vZCwgJ2FjdGl2ZV9jb250cmFzdF9taW5fY3VydmF0dXJlJywgJ3N0cmluZycsIHNl bGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2Nv bnRyYXN0X21pbl9jdXJ2YXR1cmVfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAg ICBlbmQKKyt9IAorK2xvY2FsIGxhYmVsX3RhcmdldF9vcHRpb25zPSBkdC5uZXdfd2lkZ2V0KCdz ZWN0aW9uX2xhYmVsJyl7CisrICAgIGxhYmVsID0gXygndGFyZ2V0IGZpbGUnKQorK30KKyt0ZW1w ID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfY29tcHJlc3Npb25fbGV2ZWxfdGlm X2luZCcsICdpbnRlZ2VyJykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAxLCA0KSB0aGVuIHRlbXAg PSAxIGVuZCAKKytHVUkuVGFyZ2V0LmNvbXByZXNzaW9uX2xldmVsX3RpZiA9IGR0Lm5ld193aWRn ZXQoJ2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygndGlmZiBjb21wcmVzc2lvbicpLCAKKysg ICAgdG9vbHRpcCA9IF8oJ2NvbXByZXNzaW9uIG1ldGhvZCBmb3IgdGlmZiBmaWxlcycpLAorKyAg ICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICdub25lJywnZGVmbGF0ZScsJ2x6dycsJ3BhY2tiaXRz JywKKysgICAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAgICBkdC5w cmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29tcHJlc3Npb25fbGV2ZWxfdGlmJywgJ3N0 cmluZycsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAn YWN0aXZlX2NvbXByZXNzaW9uX2xldmVsX3RpZl9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0 ZWQpCisrICAgIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKSAKKysg ICAgICAgIHNlbGYuc2VsZWN0ZWQgPSAxCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZSht b2QsICdhY3RpdmVfY29tcHJlc3Npb25fbGV2ZWxfdGlmJywgJ3N0cmluZycsIHNlbGYudmFsdWUp IAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2NvbXByZXNzaW9u X2xldmVsX3RpZl9pbmQnLCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCAKKyt9 CisrdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX2NvbXByZXNzaW9uX2xl dmVsX2pwZycsICdpbnRlZ2VyJykKKytpZiBub3QgSW5SYW5nZSh0ZW1wLCAwLCAxMDApIHRoZW4g dGVtcCA9IDAgZW5kCisrR1VJLlRhcmdldC5jb21wcmVzc2lvbl9sZXZlbF9qcGcgPSBkdC5uZXdf d2lkZ2V0KCdzbGlkZXInKXsKKysgICAgbGFiZWwgPSBfKCdqcGVnIGNvbXByZXNzaW9uJyksCisr ICAgIHRvb2x0aXAgPSBfKCdqcGVnIGNvbXByZXNzaW9uIGxldmVsJyksCisrICAgIHNvZnRfbWlu ID0gMCwKKysgICAgc29mdF9tYXggPSAxMDAsCisrICAgIGhhcmRfbWluID0gMCwKKysgICAgaGFy ZF9tYXggPSAxMDAsCisrICAgIHN0ZXAgPSA1LAorKyAgICBkaWdpdHMgPSAwLAorKyAgICB2YWx1 ZSA9IHRlbXAsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAg ICBzZWxmLnZhbHVlID0gMAorKyAgICBlbmQKKyt9CisrbG9jYWwgYmxhbmsgPSBkdC5uZXdfd2lk Z2V0KCdib3gnKXt9Cisrc3RhY2tfY29tcHJlc3Npb24gPSBkdC5uZXdfd2lkZ2V0KCdzdGFjaycp eworKyAgICBHVUkuVGFyZ2V0LmNvbXByZXNzaW9uX2xldmVsX3RpZiwKKysgICAgR1VJLlRhcmdl dC5jb21wcmVzc2lvbl9sZXZlbF9qcGcsCisrICAgIGJsYW5rLAorKyAgICBhY3RpdmUgPSAxCisr fQorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9mb3JtYXRfaW5kJywg J2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIDYpIHRoZW4gdGVtcCA9IDEgZW5k IAorK0dVSS5UYXJnZXQuZm9ybWF0ID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gnKXsKKysgICAg bGFiZWwgPSBfKCdmaWxlIGZvcm1hdCcpLCAKKysgICAgdG9vbHRpcCA9IF8oJ2ZpbGUgZm9ybWF0 IG9mIHRoZSBlbmZ1c2VkIGZpbmFsIGltYWdlJyksCisrICAgIHNlbGVjdGVkID0gdGVtcCwKKysg ICAgJ3RpZicsJ2pwZycsJ3BuZycsJ3BubScsJ3BibScsJ3BwbScsCisrICAgIGNoYW5nZWRfY2Fs bGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9k LCAnYWN0aXZlX2Zvcm1hdCcsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnBy ZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9mb3JtYXRfaW5kJywgJ2ludGVnZXInLCBzZWxm LnNlbGVjdGVkKQorKyAgICAgICAgaWYgc2VsZi52YWx1ZSA9PSAndGlmJyB0aGVuIHN0YWNrX2Nv bXByZXNzaW9uLmFjdGl2ZSA9IDEKKysgICAgICAgIGVsc2VpZiBzZWxmLnZhbHVlID09ICdqcGcn IHRoZW4gc3RhY2tfY29tcHJlc3Npb24uYWN0aXZlID0gMgorKyAgICAgICAgZWxzZSBzdGFja19j b21wcmVzc2lvbi5hY3RpdmUgPSAzCisrICAgICAgICBlbmQKKysgICAgZW5kLAorKyAgICByZXNl dF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IDEK KysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9mb3JtYXQnLCAnc3Ry aW5nJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdh Y3RpdmVfZm9ybWF0X2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kIAor K30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfZGVwdGhfaW5kJywg J2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIDUpIHRoZW4gdGVtcCA9IDMgZW5k IAorK0dVSS5UYXJnZXQuZGVwdGggPSBkdC5uZXdfd2lkZ2V0KCdjb21ib2JveCcpeworKyAgICBs YWJlbCA9IF8oJ2JpdCBkZXB0aCcpLCAKKysgICAgdG9vbHRpcCA9IF8oJ2JpdCBkZXB0aCBvZiB0 aGUgZW5mdXNlZCBmaWxlJyksCisrICAgIHNlbGVjdGVkID0gdGVtcCwKKysgICAgJzgnLCcxNics JzMyJywncjMyJywncjY0JywKKysgICAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYp CisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfZGVwdGgnLCAnc3Ry aW5nJywgc2VsZi52YWx1ZSkgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdh Y3RpdmVfZGVwdGhfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQsCisr ICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBzZWxmLnNlbGVj dGVkID0gMgorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2RlcHRo JywgJ3N0cmluZycsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUo bW9kLCAnYWN0aXZlX2RlcHRoX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAg ZW5kIAorK30KKytsb2NhbCBsYWJlbF9kaXJlY3RvcnkgPSBkdC5uZXdfd2lkZ2V0KCdsYWJlbCcp eworKyAgICBsYWJlbCA9IF8oJ2RpcmVjdG9yeScpLAorKyAgICBlbGxpcHNpemUgPSAnc3RhcnQn LAorKyAgICBoYWxpZ24gPSAnc3RhcnQnCisrfQorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFk KG1vZCwgJ2FjdGl2ZV9vdXRwdXRfZGlyZWN0b3J5JywgJ3N0cmluZycpCisraWYgdGVtcCA9PSAn JyBvciB0ZW1wID09IG5pbCB0aGVuIHRlbXAgPSBkdC5jb2xsZWN0aW9uWzFdLnBhdGggZW5kCisr R1VJLlRhcmdldC5vdXRwdXRfZGlyZWN0b3J5ID0gZHQubmV3X3dpZGdldCgnZmlsZV9jaG9vc2Vy X2J1dHRvbicpeworKyAgICB0aXRsZSA9ICdTZWxlY3QgZXhwb3J0IHBhdGgnLCAKKysgICAgaXNf ZGlyZWN0b3J5ID0gdHJ1ZSwKKysgICAgdG9vbHRpcCA9IF8oJ3NlbGVjdCB0aGUgdGFyZ2V0IGRp cmVjdG9yeSBmb3IgdGhlIGZ1c2VkIGltYWdlLiBcbnRoZSBmaWxlbmFtZSBpcyBjcmVhdGVkIGF1 dG9tYXRpY2FsbHkuJyksCisrICAgIHZhbHVlID0gdGVtcCwKKysgICAgY2hhbmdlZF9jYWxsYmFj ayA9IGZ1bmN0aW9uKHNlbGYpIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9vdXRw dXRfZGlyZWN0b3J5JywgJ3N0cmluZycsIHNlbGYudmFsdWUpIGVuZAorK30KKytHVUkuVGFyZ2V0 LnNvdXJjZV9sb2NhdGlvbiA9IGR0Lm5ld193aWRnZXQoJ2NoZWNrX2J1dHRvbicpeworKyAgICBs YWJlbCA9IF8oJ3NhdmUgdG8gc291cmNlIGltYWdlIGxvY2F0aW9uJyksIAorKyAgICB2YWx1ZSA9 IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX3NvdXJjZV9sb2NhdGlvbicsICdib29s JyksCisrICAgIHRvb2x0aXAgPSBfKCdpZiBjaGVja2VkIGlnbm9yZXMgdGhlIGxvY2F0aW9uIGFi b3ZlIGFuZCBzYXZlcyBvdXRwdXQgaW1hZ2UocykgdG8gdGhlIHNhbWUgbG9jYXRpb24gYXMgdGhl IHNvdXJjZSBpbWFnZXMuJyksICAKKysgICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNl bGYpIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9zb3VyY2VfbG9jYXRpb24nLCAn Ym9vbCcsIHNlbGYudmFsdWUpIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihz ZWxmKSBzZWxmLnZhbHVlID0gdHJ1ZSBlbmQKKyt9CisrdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJl YWQobW9kLCAnYWN0aXZlX29uX2NvbmZsaWN0X2luZCcsICdpbnRlZ2VyJykKKytpZiBub3QgSW5S YW5nZSh0ZW1wLCAxLCAyKSB0aGVuIHRlbXAgPSAxIGVuZCAKKytHVUkuVGFyZ2V0Lm9uX2NvbmZs aWN0ID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gnKXsKKysgICAgbGFiZWwgPSBfKCdvbiBjb25m bGljdCcpLCAKKysgICAgc2VsZWN0ZWQgPSAxLCAgCisrICAgICdjcmVhdGUgdW5pcXVlIGZpbGVu YW1lJywnb3ZlcndyaXRlJywgICAgICAgICAgIAorKyAgICBjaGFuZ2VkX2NhbGxiYWNrID0gZnVu Y3Rpb24oc2VsZikKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9v bl9jb25mbGljdCcsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSAKKysgICAgICAgIGR0LnByZWZlcmVu Y2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9vbl9jb25mbGljdF9pbmQnLCAnaW50ZWdlcicsIHNlbGYu c2VsZWN0ZWQpCisrICAgIGVuZCwKKysgICAgcmVzZXRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxm KSAKKysgICAgICAgIHNlbGYuc2VsZWN0ZWQgPSAxCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53 cml0ZShtb2QsICdhY3RpdmVfb25fY29uZmxpY3QnLCAnc3RyaW5nJywgc2VsZi52YWx1ZSkgCisr ICAgICAgICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfb25fY29uZmxpY3RfaW5k JywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVkKQorKyAgICBlbmQgCisrfSAgCisrR1VJLlRhcmdl dC5hdXRvX2ltcG9ydCA9IGR0Lm5ld193aWRnZXQoJ2NoZWNrX2J1dHRvbicpeworKyAgICBsYWJl bCA9IF8oJ2F1dG8gaW1wb3J0JyksIAorKyAgICB2YWx1ZSA9IGR0LnByZWZlcmVuY2VzLnJlYWQo bW9kLCAnYWN0aXZlX2F1dG9faW1wb3J0JywgJ2Jvb2wnKSwKKysgICAgdG9vbHRpcCA9IF8oJ2lt cG9ydCB0aGUgaW1hZ2UgaW50byBkYXJrdGFibGUgZGF0YWJhc2Ugd2hlbiBlbmZ1c2UgY29tcGxl dGVzJyksICAKKysgICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAg ICBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfYXV0b19pbXBvcnQnLCAnYm9vbCcs IHNlbGYudmFsdWUpCisrICAgICAgICBHVUkuVGFyZ2V0LmFwcGx5X3N0eWxlLnNlbnNpdGl2ZSA9 IHNlbGYudmFsdWUKKysgICAgICAgIEdVSS5UYXJnZXQuY29weV90YWdzLnNlbnNpdGl2ZSA9IHNl bGYudmFsdWUKKysgICAgICAgIEdVSS5UYXJnZXQuYWRkX3RhZ3Muc2Vuc2l0aXZlID0gc2VsZi52 YWx1ZQorKyAgICBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2Vs Zi52YWx1ZSA9IHRydWUgZW5kCisrfQorK3RlbXAgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKG1vZCwg J2FjdGl2ZV9hcHBseV9zdHlsZV9pbmQnLCAnaW50ZWdlcicpCisrR1VJLlRhcmdldC5hcHBseV9z dHlsZSA9IGR0Lm5ld193aWRnZXQoJ2NvbWJvYm94Jyl7CisrICAgIGxhYmVsID0gXygnYXBwbHkg c3R5bGUgb24gSW1wb3J0JyksCisrICAgIHRvb2x0aXAgPSBfKCdhcHBseSBzZWxlY3RlZCBzdHls ZSBvbiBhdXRvLWltcG9ydCB0byBuZXdseSBjcmVhdGVkIGJsZW5kZWQgaW1hZ2UnKSwKKysgICAg c2VsZWN0ZWQgPSAxLAorKyAgICAnbm9uZScsCisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5j dGlvbihzZWxmKQorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2Fw cGx5X3N0eWxlJywgJ3N0cmluZycsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5j ZXMud3JpdGUobW9kLCAnYWN0aXZlX2FwcGx5X3N0eWxlX2luZCcsICdpbnRlZ2VyJywgc2VsZi5z ZWxlY3RlZCkKKysgICAgZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYp IAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IDEKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndy aXRlKG1vZCwgJ2FjdGl2ZV9hcHBseV9zdHlsZScsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSAKKysg ICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9hcHBseV9zdHlsZV9pbmQn LCAnaW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCAKKyt9CisrZm9yIGs9MSwgKHN0 eWxlc19jb3VudC0xKSBkbworKyAgICBHVUkuVGFyZ2V0LmFwcGx5X3N0eWxlW2srMV0gPSBzdHls ZXNba10ubmFtZQorK2VuZAorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIHN0eWxlc19jb3VudCkg dGhlbiB0ZW1wID0gMSBlbmQKKytHVUkuVGFyZ2V0LmFwcGx5X3N0eWxlLnNlbGVjdGVkID0gdGVt cAorK0dVSS5UYXJnZXQuY29weV90YWdzID0gZHQubmV3X3dpZGdldCgnY2hlY2tfYnV0dG9uJyl7 CisrICAgIGxhYmVsID0gXygnY29weSB0YWdzJyksIAorKyAgICB2YWx1ZSA9IGR0LnByZWZlcmVu Y2VzLnJlYWQobW9kLCAnYWN0aXZlX2NvcHlfdGFncycsICdib29sJyksCisrICAgIHRvb2x0aXAg PSBfKCdjb3B5IHRhZ3MgZnJvbSBmaXJzdCBpbWFnZS4nKSwgCisrICAgIGNsaWNrZWRfY2FsbGJh Y2sgPSBmdW5jdGlvbihzZWxmKSBkdC5wcmVmZXJlbmNlcy53cml0ZShtb2QsICdhY3RpdmVfY29w eV90YWdzJywgJ2Jvb2wnLCBzZWxmLnZhbHVlKSBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNrID0g ZnVuY3Rpb24oc2VsZikgc2VsZi52YWx1ZSA9IHRydWUgZW5kCisrfQorK3RlbXAgPSBkdC5wcmVm ZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV9hZGRfdGFncycsICdzdHJpbmcnKQorK2lmIHRlbXAg PT0gJycgdGhlbiB0ZW1wID0gbmlsIGVuZCAKKytHVUkuVGFyZ2V0LmFkZF90YWdzID0gZHQubmV3 X3dpZGdldCgnZW50cnknKXsKKysgICAgdG9vbHRpcCA9IF8oJ2FkZGl0aW9uYWwgdGFncyB0byBi ZSBhZGRlZCBvbiBpbXBvcnQsIHNlcGVyYXRlIHdpdGggY29tbWFzLCBhbGwgc3BhY2VzIHdpbGwg YmUgcmVtb3ZlZCcpLAorKyAgICB0ZXh0ID0gdGVtcCwKKysgICAgcGxhY2Vob2xkZXIgPSBfKCdl bnRlciB0YWdzLCBzZXBhcmF0ZWQgYnkgY29tbWFzJyksCisrICAgIGVkaXRhYmxlID0gdHJ1ZQor K30KKyt0ZW1wID0gZHQucHJlZmVyZW5jZXMucmVhZChtb2QsICdhY3RpdmVfY3VycmVudF9wcmVz ZXRfaW5kJywgJ2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIDYpIHRoZW4gdGVt cCA9IDEgZW5kCisrR1VJLlByZXNldHMuY3VycmVudF9wcmVzZXQgPSBkdC5uZXdfd2lkZ2V0KCdj b21ib2JveCcpeworKyAgICBsYWJlbCA9IF8oJ2FjdGl2ZSBwcmVzZXQnKSwKKysgICAgdG9vbHRp cCA9IF8oJ3ByZXNldCB0byBiZSBsb2FkZWQgZnJvbSBvciBzYXZlZCB0bycpLAorKyAgICB2YWx1 ZSA9IHRlbXAsCisrICAgICdkcmlfMScsICdkcmlfMicsICdkcmlfMycsICdkZmZfMScsICdkZmZf MicsICdkZmZfMycsCisrICAgIGNoYW5nZWRfY2FsbGJhY2sgPSBmdW5jdGlvbihzZWxmKQorKyAg ICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2N1cnJlbnRfcHJlc2V0Jywg J3N0cmluZycsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9k LCAnYWN0aXZlX2N1cnJlbnRfcHJlc2V0X2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkK KysgICAgZW5kLAorKyAgICByZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAg ICAgc2VsZi5zZWxlY3RlZCA9IDEKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwg J2FjdGl2ZV9jdXJyZW50X3ByZXNldCcsICdzdHJpbmcnLCBzZWxmLnZhbHVlKSAKKysgICAgICAg IGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV9jdXJyZW50X3ByZXNldF9pbmQnLCAn aW50ZWdlcicsIHNlbGYuc2VsZWN0ZWQpCisrICAgIGVuZCAKKyt9CisrR1VJLlByZXNldHMubG9h ZCA9IGR0Lm5ld193aWRnZXQoJ2J1dHRvbicpeworKyAgICBsYWJlbCA9IF8oJ2xvYWQgZnVzaW9u IHByZXNldCcpLAorKyAgICB0b29sdGlwID0gXygnbG9hZCBjdXJyZW50IGZ1c2lvbiBwYXJhbWV0 ZXJzIGZyb20gc2VsZWN0ZWQgcHJlc2V0JyksCisrICAgIGNsaWNrZWRfY2FsbGJhY2sgPSBmdW5j dGlvbigpIExvYWRGcm9tUHJlZmVyZW5jZShHVUkuUHJlc2V0cy5jdXJyZW50X3ByZXNldC52YWx1 ZSkgZW5kCisrfQorK0dVSS5QcmVzZXRzLnNhdmUgPSBkdC5uZXdfd2lkZ2V0KCdidXR0b24nKXsK KysgICAgbGFiZWwgPSBfKCdzYXZlIHRvIGZ1c2lvbiBwcmVzZXQnKSwKKysgICAgdG9vbHRpcCA9 IF8oJ3NhdmUgY3VycmVudCBmdXNpb24gcGFyYW1ldGVycyB0byBzZWxlY3RlZCBwcmVzZXQnKSwK KysgICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKCkgU2F2ZVRvUHJlZmVyZW5jZShHVUku UHJlc2V0cy5jdXJyZW50X3ByZXNldC52YWx1ZSkgZW5kCisrfQorK0dVSS5QcmVzZXRzLnZhcmlh bnRzID0gZHQubmV3X3dpZGdldCgnY2hlY2tfYnV0dG9uJyl7CisrICAgIGxhYmVsID0gXygnY3Jl YXRlIGltYWdlIHZhcmlhbnRzIGZyb20gcHJlc2V0cycpLCAKKysgICAgdmFsdWUgPSBkdC5wcmVm ZXJlbmNlcy5yZWFkKG1vZCwgJ2FjdGl2ZV92YXJpYW50cycsICdib29sJyksCisrICAgIHRvb2x0 aXAgPSBfKCdjcmVhdGUgbXVsdGlwbGUgaW1hZ2UgdmFyaWFudHMgYmFzZWQgb24gdGhlIHRocmVl IGRpZmZlcmVudCBwcmVzZXRzIG9mIHRoZSBzcGVjaWZpZWQgdHlwZScpLCAgIAorKyAgICBjbGlj a2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBkdC5wcmVmZXJlbmNlcy53 cml0ZShtb2QsICdhY3RpdmVfdmFyaWFudHMnLCAnYm9vbCcsIHNlbGYudmFsdWUpCisrICAgICAg ICBpZiBzZWxmLnZhbHVlIHRoZW4KKysgICAgICAgICAgICBHVUkuVGFyZ2V0Lm9uX2NvbmZsaWN0 LnNlbGVjdGVkID0gMQorKyAgICAgICAgICAgIEdVSS5UYXJnZXQub25fY29uZmxpY3Quc2Vuc2l0 aXZlID0gZmFsc2UKKysgICAgICAgICAgICBHVUkuUHJlc2V0cy52YXJpYW50c190eXBlLnNlbnNp dGl2ZSA9IHRydWUKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgICBHVUkuVGFyZ2V0Lm9uX2Nv bmZsaWN0LnNlbnNpdGl2ZSA9IHRydWUKKysgICAgICAgICAgICBHVUkuUHJlc2V0cy52YXJpYW50 c190eXBlLnNlbnNpdGl2ZSA9IGZhbHNlCisrICAgICAgICBlbmQKKysgICAgZW5kLAorKyAgICBy ZXNldF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIHNlbGYudmFsdWUgPSBmYWxzZSBlbmQKKyt9 CisrdGVtcCA9IGR0LnByZWZlcmVuY2VzLnJlYWQobW9kLCAnYWN0aXZlX3ZhcmlhbnRzX3R5cGVf aW5kJywgJ2ludGVnZXInKQorK2lmIG5vdCBJblJhbmdlKHRlbXAsIDEsIDIpIHRoZW4gdGVtcCA9 IDEgZW5kCisrR1VJLlByZXNldHMudmFyaWFudHNfdHlwZSA9IGR0Lm5ld193aWRnZXQoJ2NvbWJv Ym94Jyl7CisrICAgIGxhYmVsID0gXygnY3JlYXRlIHZhcmlhbnRzIHR5cGUnKSwKKysgICAgdG9v bHRpcCA9IF8oJ3ByZXNldCB0eXBlIHRvIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBpbWFnZSB2YXJp YW50cycpLAorKyAgICBzZWxlY3RlZCA9IHRlbXAsCisrICAgICdkcmknLCAnZGZmJywKKysgICAg Y2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpCisrICAgICAgICBkdC5wcmVmZXJlbmNl cy53cml0ZShtb2QsICdhY3RpdmVfdmFyaWFudHNfdHlwZScsICdzdHJpbmcnLCBzZWxmLnZhbHVl KSAKKysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV92YXJpYW50c190 eXBlX2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAgZW5kLAorKyAgICByZXNl dF9jYWxsYmFjayA9IGZ1bmN0aW9uKHNlbGYpIAorKyAgICAgICAgc2VsZi5zZWxlY3RlZCA9IDEK KysgICAgICAgIGR0LnByZWZlcmVuY2VzLndyaXRlKG1vZCwgJ2FjdGl2ZV92YXJpYW50c190eXBl JywgJ3N0cmluZycsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUo bW9kLCAnYWN0aXZlX3ZhcmlhbnRzX3R5cGVfaW5kJywgJ2ludGVnZXInLCBzZWxmLnNlbGVjdGVk KQorKyAgICBlbmQgCisrfQorK0dVSS5QcmVzZXRzLnZhcmlhbnRzX3R5cGUuc2Vuc2l0aXZlID0g R1VJLlByZXNldHMudmFyaWFudHMudmFsdWUKKyt0ZW1wID0gZGYuZ2V0X2V4ZWN1dGFibGVfcGF0 aF9wcmVmZXJlbmNlKEFJUy5uYW1lKQorK0dVSS5leGVzLmFsaWduX2ltYWdlX3N0YWNrID0gZHQu bmV3X3dpZGdldCgnZmlsZV9jaG9vc2VyX2J1dHRvbicpeworKyAgICB0aXRsZSA9ICdhbGlnbl9p bWFnZV9zdGFjayAnIC4uIF8oJ2JpbmFyeSBwYXRoJyksCisrICAgIHZhbHVlID0gdGVtcCwKKysg ICAgdG9vbHRpcCA9IHRlbXAsCisrICAgIGlzX2RpcmVjdG9yeSA9IGZhbHNlLAorKyAgICBjaGFu Z2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi50b29sdGlwID0gc2VsZi52YWx1ZSBl bmQKKyt9CisrdGVtcCA9IGRmLmdldF9leGVjdXRhYmxlX3BhdGhfcHJlZmVyZW5jZShFTkYubmFt ZSkKKytHVUkuZXhlcy5lbmZ1c2UgPSBkdC5uZXdfd2lkZ2V0KCdmaWxlX2Nob29zZXJfYnV0dG9u Jyl7CisrICAgIHRpdGxlID0gJ2VuZnVzZSAnIC4uIF8oJ2JpbmFyeSBwYXRoJyksCisrICAgIHZh bHVlID0gdGVtcCwKKysgICAgdG9vbHRpcCA9IHRlbXAsCisrICAgIGlzX2RpcmVjdG9yeSA9IGZh bHNlLAorKyAgICBjaGFuZ2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikgc2VsZi50b29sdGlw ID0gc2VsZi52YWx1ZSBlbmQKKyt9CisrdGVtcCA9IGRmLmdldF9leGVjdXRhYmxlX3BhdGhfcHJl ZmVyZW5jZShFWEYubmFtZSkKKytHVUkuZXhlcy5leGlmdG9vbCA9IGR0Lm5ld193aWRnZXQoJ2Zp bGVfY2hvb3Nlcl9idXR0b24nKXsKKysgICAgdGl0bGUgPSAnZXhpZnRvb2wgJyAuLiBfKCdiaW5h cnkgcGF0aCcpLAorKyAgICB2YWx1ZSA9IHRlbXAsCisrICAgIHRvb2x0aXAgPSB0ZW1wLAorKyAg ICBpc19kaXJlY3RvcnkgPSBmYWxzZSwKKysgICAgY2hhbmdlZF9jYWxsYmFjayA9IGZ1bmN0aW9u KHNlbGYpIHNlbGYudG9vbHRpcCA9IHNlbGYudmFsdWUgZW5kCisrfSAKKytHVUkuZXhlcy51cGRh dGUgPSBkdC5uZXdfd2lkZ2V0KCdidXR0b24nKXsKKysgICAgbGFiZWwgPSBfKCd1cGRhdGUnKSwK KysgICAgdG9vbHRpcCA9IF8oJ3VwZGF0ZSB0aGUgYmluYXJ5IHBhdGhzIHdpdGggY3VycmVudCB2 YWx1ZXMnKSwKKysgICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKCkgRXhlVXBkYXRlKHtB SVMsRU5GLEVYRn0pIGVuZAorK30KKyt0ZW1wID0gR1VJLlRhcmdldC5mb3JtYXQudmFsdWUKKytp ZiB0ZW1wID09ICd0aWYnIHRoZW4gdGVtcCA9IDEKKytlbHNlaWYgdGVtcCA9PSAnanBnJyB0aGVu IHRlbXAgPSAyCisrZWxzZSB0ZW1wID0gMworK2VuZAorK3N0YWNrX2NvbXByZXNzaW9uLmFjdGl2 ZSA9IHRlbXAKKytmb3IgXyx3aWRnZXQgaW4gcGFpcnMoR1VJLkFJUykgZG8KKysgICAgd2lkZ2V0 LnNlbnNpdGl2ZSA9IEdVSS5hbGlnbi52YWx1ZQorK2VuZAorK0dVSS5UYXJnZXQuYXBwbHlfc3R5 bGUuc2Vuc2l0aXZlID0gR1VJLlRhcmdldC5hdXRvX2ltcG9ydC52YWx1ZQorK0dVSS5UYXJnZXQu Y29weV90YWdzLnNlbnNpdGl2ZSA9IEdVSS5UYXJnZXQuYXV0b19pbXBvcnQudmFsdWUKKytHVUku VGFyZ2V0LmFkZF90YWdzLnNlbnNpdGl2ZSA9IEdVSS5UYXJnZXQuYXV0b19pbXBvcnQudmFsdWUK KysKKytsb2NhbCBib3hfQUlTID0gZHQubmV3X3dpZGdldCgnYm94Jyl7CisrICAgIG9yaWVudGF0 aW9uID0gJ3ZlcnRpY2FsJywKKysgICAgbGFiZWxfQUlTX29wdGlvbnMsCisrICAgIEdVSS5hbGln biwKKysgICAgR1VJLkFJUy5yYWRpYWxfZGlzdG9ydGlvbiwKKysgICAgR1VJLkFJUy5vcHRpbWl6 ZV9maWVsZCwKKysgICAgR1VJLkFJUy5vcHRpbWl6ZV9pbWFnZV9jZW50ZXIsCisrICAgIEdVSS5B SVMuYXV0b19jcm9wLAorKyAgICBHVUkuQUlTLmRpc3RvcnRpb24sCisrICAgIEdVSS5BSVMuZ3B1 LAorKyAgICBHVUkuQUlTLmdyaWRfc2l6ZSwKKysgICAgR1VJLkFJUy5jb250cm9sX3BvaW50cywK KysgICAgR1VJLkFJUy5jb250cm9sX3BvaW50c19yZW1vdmUsCisrICAgIEdVSS5BSVMuY29ycmVs YXRpb24KKyt9CisrbG9jYWwgYm94X0VORiA9IGR0Lm5ld193aWRnZXQoJ2JveCcpeworKyAgICBv cmllbnRhdGlvbiA9ICd2ZXJ0aWNhbCcsCisrICAgIGxhYmVsX0VORl9vcHRpb25zLAorKyAgICBH VUkuRU5GLmV4cG9zdXJlX3dlaWdodCwKKysgICAgR1VJLkVORi5zYXR1cmF0aW9uX3dlaWdodCwK KysgICAgR1VJLkVORi5jb250cmFzdF93ZWlnaHQsCisrICAgIEdVSS5FTkYuZXhwb3N1cmVfb3B0 aW11bSwKKysgICAgR1VJLkVORi5leHBvc3VyZV93aWR0aCwKKysgICAgR1VJLkVORi5oYXJkX21h c2tzLAorKyAgICBHVUkuRU5GLnNhdmVfbWFza3MsCisrICAgIEdVSS5FTkYuY29udHJhc3Rfd2lu ZG93X3NpemUsCisrICAgIEdVSS5FTkYuY29udHJhc3RfZWRnZV9zY2FsZSwKKysgICAgR1VJLkVO Ri5jb250cmFzdF9taW5fY3VydmF0dXJlLAorKyAgICBHVUkuUHJlc2V0cy5jdXJyZW50X3ByZXNl dCwKKysgICAgR1VJLlByZXNldHMubG9hZCwKKysgICAgR1VJLlByZXNldHMuc2F2ZQorK30KKyts b2NhbCBib3hfVGFyZ2V0ID0gZHQubmV3X3dpZGdldCgnYm94Jyl7CisrICAgIG9yaWVudGF0aW9u ID0gJ3ZlcnRpY2FsJywKKysgICAgbGFiZWxfdGFyZ2V0X29wdGlvbnMsCisrICAgIEdVSS5UYXJn ZXQuZm9ybWF0LAorKyAgICBHVUkuVGFyZ2V0LmRlcHRoLAorKyAgICBzdGFja19jb21wcmVzc2lv biwKKysgICAgbGFiZWxfZGlyZWN0b3J5LAorKyAgICBHVUkuVGFyZ2V0Lm91dHB1dF9kaXJlY3Rv cnksCisrICAgIEdVSS5UYXJnZXQuc291cmNlX2xvY2F0aW9uLAorKyAgICBHVUkuVGFyZ2V0Lm9u X2NvbmZsaWN0LAorKyAgICBHVUkuUHJlc2V0cy52YXJpYW50cywKKysgICAgR1VJLlByZXNldHMu dmFyaWFudHNfdHlwZSwKKysgICAgR1VJLlRhcmdldC5hdXRvX2ltcG9ydCwKKysgICAgR1VJLlRh cmdldC5hcHBseV9zdHlsZSwKKysgICAgR1VJLlRhcmdldC5jb3B5X3RhZ3MsCisrICAgIEdVSS5U YXJnZXQuYWRkX3RhZ3MKKyt9CisrbG9jYWwgYm94X2V4ZXMgPSBkdC5uZXdfd2lkZ2V0KCdib3gn KXsKKysgICAgb3JpZW50YXRpb24gPSAndmVydGljYWwnLAorKyAgICBHVUkuZXhlcy5hbGlnbl9p bWFnZV9zdGFjaywKKysgICAgR1VJLmV4ZXMuZW5mdXNlLAorKyAgICBHVUkuZXhlcy5leGlmdG9v bCwKKysgICAgR1VJLmV4ZXMudXBkYXRlCisrfQorK0dVSS5vcHRpb25zX2NvbnRhaW4gPSBkdC5u ZXdfd2lkZ2V0KCdzdGFjaycpeworKyAgICBib3hfQUlTLAorKyAgICBib3hfRU5GLAorKyAgICBi b3hfVGFyZ2V0LAorKyAgICBib3hfZXhlcywKKysgICAgYWN0aXZlID0gMgorK30KKytHVUkuc2hv d19vcHRpb25zID0gZHQubmV3X3dpZGdldCgnY29tYm9ib3gnKXsKKysgICAgbGFiZWwgPSBfKCdz aG93IG9wdGlvbnMnKSwKKysgICAgdG9vbHRpcCA9IF8oJ3Nob3cgb3B0aW9ucyBmb3Igc3BlY2lm aWVkIGFzcGVjdCBvZiBvdXRwdXQnKSwKKysgICAgc2VsZWN0ZWQgPSAyLAorKyAgICAnYWxpZ24g aW1hZ2Ugc3RhY2snLCAnZW5mdXNlL2VuYmxlbmQnLCAndGFyZ2V0IGZpbGUnLAorKyAgICBjaGFu Z2VkX2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgICAgIEdVSS5vcHRpb25zX2NvbnRh aW4uYWN0aXZlID0gc2VsZi5zZWxlY3RlZAorKyAgICBlbmQsCisrICAgIHJlc2V0X2NhbGxiYWNr ID0gZnVuY3Rpb24oc2VsZikgCisrICAgICAgICBzZWxmLnNlbGVjdGVkID0gMQorKyAgICAgICAg ZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0aXZlX2N1cnJlbnRfcHJlc2V0JywgJ3N0cmlu ZycsIHNlbGYudmFsdWUpIAorKyAgICAgICAgZHQucHJlZmVyZW5jZXMud3JpdGUobW9kLCAnYWN0 aXZlX2N1cnJlbnRfcHJlc2V0X2luZCcsICdpbnRlZ2VyJywgc2VsZi5zZWxlY3RlZCkKKysgICAg ZW5kIAorK30KKytsb2NhbCBzdG9yYWdlX3dpZGdldCA9IGR0Lm5ld193aWRnZXQoJ2JveCcpIHsK KysgICAgb3JpZW50YXRpb24gPSAndmVydGljYWwnLAorKyAgICBHVUkuc2hvd19vcHRpb25zLAor KyAgICBHVUkub3B0aW9uc19jb250YWluCisrfSAKKysKKystLSBSZWdpc3RlciBuZXcgc3RvcmFn ZSAtLQorK2R0LnJlZ2lzdGVyX3N0b3JhZ2UoCisrICAgICdtb2R1bGVfZW5mdXNlQWR2YW5jZWQn LCAtLU1vZHVsZSBuYW1lCisrICAgIF8oJ0RSSSBvciBERkYgaW1hZ2UnKSwgLS1OYW1lCisrICAg IHNob3dfc3RhdHVzLCAtLXN0b3JlOiBjYWxsZWQgb25jZSBwZXIgZXhwb3J0ZWQgaW1hZ2UKKysg ICAgbWFpbiwgLS1maW5hbGl6ZTogY2FsbGVkIG9uY2Ugd2hlbiBhbGwgaW1hZ2VzIGhhdmUgZmlu aXNoZWQgZXhwb3J0aW5nCisrICAgIHN1cHBvcnRfZm9ybWF0LCAtLXN1cHBvcnRlZAorKyAgICBp bml0aWFsLCAtLWluaXRpYWxpemUKKysgICAgc3RvcmFnZV93aWRnZXQKKyspCisrCisraWYgZHQu cHJlZmVyZW5jZXMucmVhZChtb2QsICdiaW5fZXhpc3RzJywgJ2Jvb2wnKSB0aGVuIAorKyAgICBH VUkub3B0aW9uc19jb250YWluLmFjdGl2ZSA9IDIKKysgICAgR1VJLnNob3dfb3B0aW9ucy5zZW5z aXRpdmUgPSB0cnVlCisrZWxzZQorKyAgICBHVUkub3B0aW9uc19jb250YWluLmFjdGl2ZSA9IDQK KysgICAgR1VJLnNob3dfb3B0aW9ucy5zZW5zaXRpdmUgPSBmYWxzZQorK2VuZAorKworK3Njcmlw dF9kYXRhLmRlc3Ryb3kgPSBkZXN0cm95CisrCisrcmV0dXJuIHNjcmlwdF9kYXRhCitkaWZmIC11 ck5yIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmli L2ZhY2VfcmVjb2duaXRpb24ubHVhIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNj cmlwdHMvY29udHJpYi9mYWNlX3JlY29nbml0aW9uLmx1YQorLS0tIGRhcmt0YWJsZS01LjYuMC1v cmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2ZhY2VfcmVjb2duaXRpb24ubHVh CTIwMjYtMDYtMTIgMDU6MDY6MzguMDAwMDAwMDAwICswMjAwCisrKysgZGFya3RhYmxlLTUuNi4w L3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2ZhY2VfcmVjb2duaXRpb24ubHVhCTIw MjYtMDktMDEgMDk6NDI6MDQuMzcxNTUyNjgxICswMjAwCitAQCAtMzExLDI1ICszMTEsMjYgQEAK KyAgICAgICAgICAgICBpZiBpZ25vcmVCeVRhZyAoaW1nLCBpZ25vcmVUYWdzKSB0aGVuCisgICAg ICAgICAgICAgICBkdC5wcmludF9sb2coIkZhY2UgcmVjb2duaXRpb246IElnbm9yaW5nIGltYWdl IHdpdGggSUQgIiAuLiBpbWcuaWQpCisgICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgICAg bG9jYWwgdGFnX25hbWUgPSB0CisgICAgICAgICAgICAgICAtLSBDaGVjayBvZiB1bnJlY29nbml6 ZWQgdW5rbm93bl9wZXJzb24KKy0gICAgICAgICAgICAgIGlmIHQgPT0gInVua25vd25fcGVyc29u IiB0aGVuCistICAgICAgICAgICAgICAgIHQgPSB1bmtub3duVGFnCisrICAgICAgICAgICAgICBp ZiB0YWdfbmFtZSA9PSAidW5rbm93bl9wZXJzb24iIHRoZW4KKysgICAgICAgICAgICAgICAgdGFn X25hbWUgPSB1bmtub3duVGFnCisgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgIC0t IENoZWNrIG9mIHVucmVjb2duaXplZCBub19wZXJzb25zX2ZvdW5kCistICAgICAgICAgICAgICBp ZiB0ID09ICJub19wZXJzb25zX2ZvdW5kIiB0aGVuCistICAgICAgICAgICAgICAgIHQgPSBub25w ZXJzb25zZm91bmRUYWcKKysgICAgICAgICAgICAgIGlmIHRhZ19uYW1lID09ICJub19wZXJzb25z X2ZvdW5kIiB0aGVuCisrICAgICAgICAgICAgICAgIHRhZ19uYW1lID0gbm9ucGVyc29uc2ZvdW5k VGFnCisgICAgICAgICAgICAgICBlbmQKKy0gICAgICAgICAgICAgIGlmIHQgfj0gIiIgYW5kIHQg fj0gbmlsIHRoZW4KKy0gICAgICAgICAgICAgICAgaWYgY2F0ZWdvcnlUYWdTdHJpbmcgfj0gIiIg YW5kIHQgfj0gbm9ucGVyc29uc2ZvdW5kVGFnIHRoZW4KKy0gICAgICAgICAgICAgICAgICB0ID0g Y2F0ZWdvcnlUYWdTdHJpbmcgLi4gInwiIC4uIHQKKysgICAgICAgICAgICAgIGlmIHRhZ19uYW1l IH49ICIiIGFuZCB0YWdfbmFtZSB+PSBuaWwgdGhlbgorKyAgICAgICAgICAgICAgICBpZiBjYXRl Z29yeVRhZ1N0cmluZyB+PSAiIiBhbmQgdGFnX25hbWUgfj0gbm9ucGVyc29uc2ZvdW5kVGFnIHRo ZW4KKysgICAgICAgICAgICAgICAgICB0YWdfbmFtZSA9IGNhdGVnb3J5VGFnU3RyaW5nIC4uICJ8 IiAuLiB0YWdfbmFtZQorICAgICAgICAgICAgICAgICBlbmQgICAgICAgICAgICAgICAgICAKKy0g ICAgICAgICAgICAgICAgZHQucHJpbnRfbG9nICgiSW1nSWQ6IiAuLiBpbWcuaWQgLi4gIiBUYWc6 Ii4uIHQpCisrICAgICAgICAgICAgICAgIGR0LnByaW50X2xvZyAoIkltZ0lkOiIgLi4gaW1nLmlk IC4uICIgVGFnOiIuLiB0YWdfbmFtZSkKKyAgICAgICAgICAgICAgICAgLS0gQ3JlYXRlIHRhZyBp ZiBpdCBkb2VzIG5vdCBleGlzdAorLSAgICAgICAgICAgICAgICBpZiB0YWdzX2xpc3RbdF0gPT0g bmlsIHRoZW4KKy0gICAgICAgICAgICAgICAgICB0YWcgPSBkdC50YWdzLmNyZWF0ZSAodCkKKy0g ICAgICAgICAgICAgICAgICB0YWdzX2xpc3RbdF0gPSB0YWcKKysgICAgICAgICAgICAgICAgaWYg dGFnc19saXN0W3RhZ19uYW1lXSA9PSBuaWwgdGhlbgorKyAgICAgICAgICAgICAgICAgIHRhZyA9 IGR0LnRhZ3MuY3JlYXRlICh0YWdfbmFtZSkKKysgICAgICAgICAgICAgICAgICB0YWdzX2xpc3Rb dGFnX25hbWVdID0gdGFnCisgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAg ICB0YWcgPSB0YWdzX2xpc3RbdF0KKysgICAgICAgICAgICAgICAgICB0YWcgPSB0YWdzX2xpc3Rb dGFnX25hbWVdCisgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICBpbWc6YXR0 YWNoX3RhZyAodGFnKQorICAgICAgICAgICAgICAgZW5kCitkaWZmIC11ck5yIGRhcmt0YWJsZS01 LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2dpbXAubHVhIGRhcmt0 YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9naW1wLmx1YQorLS0t IGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2dp bXAubHVhCTIwMjYtMDYtMTIgMDU6MDY6MzguMDAwMDAwMDAwICswMjAwCisrKysgZGFya3RhYmxl LTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL2dpbXAubHVhCTIwMjYtMDkt MDEgMDk6NDI6MDQuMzcxOTI0MzU5ICswMjAwCitAQCAtMTQyLDggKzE0Miw4IEBACisgICBpbWdf bGlzdCA9ICIiCisgCisgICBmb3IgXyxleHBfaW1nIGluIHBhaXJzKGltYWdlX3RhYmxlKSBkbwor LSAgICBleHBfaW1nID0gZGYuc2FuaXRpemVfZmlsZW5hbWUoZXhwX2ltZykKKy0gICAgaW1nX2xp c3QgPSBpbWdfbGlzdCAuLmV4cF9pbWcuLiAiICIKKysgICAgbG9jYWwgc2FuaXRpemVkID0gZGYu c2FuaXRpemVfZmlsZW5hbWUoZXhwX2ltZykKKysgICAgaW1nX2xpc3QgPSBpbWdfbGlzdCAuLnNh bml0aXplZC4uICIgIgorICAgZW5kCisgCisgICBkdC5wcmludChfKCJsYXVuY2hpbmcgR0lNUC4u LiIpKQorZGlmZiAtdXJOciBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNj cmlwdHMvY29udHJpYi9IRFJNZXJnZS5sdWEgZGFya3RhYmxlLTUuNi4wL3NyYy9leHRlcm5hbC9s dWEtc2NyaXB0cy9jb250cmliL0hEUk1lcmdlLmx1YQorLS0tIGRhcmt0YWJsZS01LjYuMC1vcmln L3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy9jb250cmliL0hEUk1lcmdlLmx1YQkyMDI2LTA2LTEy IDA1OjA2OjM4LjAwMDAwMDAwMCArMDIwMAorKysrIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJu YWwvbHVhLXNjcmlwdHMvY29udHJpYi9IRFJNZXJnZS5sdWEJMjAyNi0wOS0wMSAwOTo0MjowNC4z NjkyODkwMjggKzAyMDAKK0BAIC0yNzcsOSArMjc3LDkgQEAKKyAgICAgbG9jYWwgc2V0X3RhZyA9 IEdVSS5UYXJnZXQuYWRkX3RhZ3MudGV4dAorICAgICBpZiBzZXRfdGFnIH49IG5pbCB0aGVuIC0t IGFkZCBhZGRpdGlvbmFsIHVzZXItc3BlY2lmaWVkIHRhZ3MKKyAgICAgICBmb3IgdGFnIGluIHN0 cmluZy5nbWF0Y2goc2V0X3RhZywgJ1teLF0rJykgZG8KKy0gICAgICAgIHRhZyA9IENsZWFuU3Bh Y2VzKHRhZykKKy0gICAgICAgIHRhZyA9IGR0LnRhZ3MuY3JlYXRlKHRhZykKKy0gICAgICAgIGR0 LnRhZ3MuYXR0YWNoKHRhZywgaW1wb3J0ZWQpIAorKyAgICAgICAgbG9jYWwgY2xlYW5lZF90YWcg PSBDbGVhblNwYWNlcyh0YWcpCisrICAgICAgICBjbGVhbmVkX3RhZyA9IGR0LnRhZ3MuY3JlYXRl KGNsZWFuZWRfdGFnKQorKyAgICAgICAgZHQudGFncy5hdHRhY2goY2xlYW5lZF90YWcsIGltcG9y dGVkKSAKKyAgICAgICBlbmQKKyAgICAgZW5kCisgICAgIGR0LnByaW50KF8oJ0hEUk1lcmdlIGNv bXBsZXRlZCBzdWNjZXNzZnVsbHknKSkKK2RpZmYgLXVyTnIgZGFya3RhYmxlLTUuNi4wLW9yaWcv c3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvaW1hZ2Vfc3RhY2subHVhIGRhcmt0YWJs ZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJpYi9pbWFnZV9zdGFjay5sdWEK Ky0tLSBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvY29udHJp Yi9pbWFnZV9zdGFjay5sdWEJMjAyNi0wNi0xMiAwNTowNjozOC4wMDAwMDAwMDAgKzAyMDAKKysr KyBkYXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL2NvbnRyaWIvaW1hZ2Vf c3RhY2subHVhCTIwMjYtMDktMDEgMDk6NDI6MDQuMzcyMjQ2NTg1ICswMjAwCitAQCAtMzIzLDgg KzMyMyw4IEBACisgICBkdC5wcmludF9sb2coImltYWdlIGxpc3QgaXMgIiAuLiBpbWdfbGlzdCkK KyAgIGZpbGVzID0gZHUuc3BsaXQoaW1nX2xpc3QsICIgIikKKyAgIGZvciBfLGYgaW4gaXBhaXJz KGZpbGVzKSBkbworLSAgICBmID0gc3RyaW5nLmdzdWIoZiwgJ1tcJ1wiXScsICIiKQorLSAgICBv cy5yZW1vdmUoZikKKysgICAgbG9jYWwgY2xlYW5lZCA9IHN0cmluZy5nc3ViKGYsICdbXCdcIl0n LCAiIikKKysgICAgb3MucmVtb3ZlKGNsZWFuZWQpCisgICBlbmQKKyBlbmQKKyAKK2RpZmYgLXVy TnIgZGFya3RhYmxlLTUuNi4wLW9yaWcvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRzL3Rvb2xzL2dl dF9saWJkb2MubHVhIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9v bHMvZ2V0X2xpYmRvYy5sdWEKKy0tLSBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwv bHVhLXNjcmlwdHMvdG9vbHMvZ2V0X2xpYmRvYy5sdWEJMjAyNi0wNi0xMiAwNTowNjozOC4wMDAw MDAwMDAgKzAyMDAKKysrKyBkYXJrdGFibGUtNS42LjAvc3JjL2V4dGVybmFsL2x1YS1zY3JpcHRz L3Rvb2xzL2dldF9saWJkb2MubHVhCTIwMjYtMDktMDEgMDk6NDI6MDQuMzcyNjk2MjMwICswMjAw CitAQCAtNDAsOCArNDAsOCBAQAorIC0tIGxvb3AgdGhyb3VnaCB0aGUgbGlicmFyaWVzCisgCisg Zm9yIGxpbmUgaW4gb3V0cHV0OmxpbmVzKCkgZG8KKy0gIGxpbmUgPSBzdHJpbmcuZ3N1YihsaW5l LCAiLyIsICIuIikKKy0gIGxvY2FsIGxpYl9uYW1lID0gbGluZTpzdWIoMywtNSkKKysgIGxvY2Fs IGNsZWFuZWRfbGluZSA9IHN0cmluZy5nc3ViKGxpbmUsICIvIiwgIi4iKQorKyAgbG9jYWwgbGli X25hbWUgPSBjbGVhbmVkX2xpbmU6c3ViKDMsLTUpCisgICBpZiBsaWJfbmFtZTpsZW4oKSA+IDIg dGhlbgorICAgICBsaWJfbmFtZSA9ICJsaWIvIiAuLiBsaWJfbmFtZQorICAgICBsb2NhbCBsaWIg PSByZXF1aXJlKGxpYl9uYW1lKQorZGlmZiAtdXJOciBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMv ZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvZ2V0X2xpYl9tYW5wYWdlcy5sdWEgZGFya3RhYmxl LTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29scy9nZXRfbGliX21hbnBhZ2VzLmx1 YQorLS0tIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29s cy9nZXRfbGliX21hbnBhZ2VzLmx1YQkyMDI2LTA2LTEyIDA1OjA2OjM4LjAwMDAwMDAwMCArMDIw MAorKysrIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvZ2V0 X2xpYl9tYW5wYWdlcy5sdWEJMjAyNi0wOS0wMSAwOTo0MjowNC4zNzI1MzA0MzkgKzAyMDAKK0BA IC02Myw4ICs2Myw4IEBACisgLS0gbG9vcCB0aHJvdWdoIHRoZSBsaWJyYXJpZXMKKyAKKyBmb3Ig bGluZSBpbiBvdXRwdXQ6bGluZXMoKSBkbworLSAgbGluZSA9IHN0cmluZy5nc3ViKGxpbmUsICIv IiwgIi4iKQorLSAgbG9jYWwgbGliX25hbWUgPSBsaW5lOnN1YigzLC01KQorKyAgbG9jYWwgY2xl YW5lZF9saW5lID0gc3RyaW5nLmdzdWIobGluZSwgIi8iLCAiLiIpCisrICBsb2NhbCBsaWJfbmFt ZSA9IGNsZWFuZWRfbGluZTpzdWIoMywtNSkKKyAgIGlmIGxpYl9uYW1lOmxlbigpID4gMiB0aGVu CisgICAgIGxpYl9uYW1lID0gImxpYi8iIC4uIGxpYl9uYW1lCisgICAgIGxvY2FsIGxpYiA9IHJl cXVpcmUobGliX25hbWUpCitkaWZmIC11ck5yIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9leHRl cm5hbC9sdWEtc2NyaXB0cy90b29scy9zY3JpcHRfbWFuYWdlci5sdWEgZGFya3RhYmxlLTUuNi4w L3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29scy9zY3JpcHRfbWFuYWdlci5sdWEKKy0tLSBk YXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvc2NyaXB0 X21hbmFnZXIubHVhCTIwMjYtMDYtMTIgMDU6MDY6MzguMDAwMDAwMDAwICswMjAwCisrKysgZGFy a3RhYmxlLTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29scy9zY3JpcHRfbWFuYWdl ci5sdWEJMjAyNi0wOS0wMSAwOTo0MjowNC4zNzI4OTc2NzkgKzAyMDAKK0BAIC05NDYsNyArOTQ2 LDkgQEAKKyAgICAgICAgICAgc20ud2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3Iuc2VsZWN0ZWQgPSBp CisgICAgICAgICAgIGJyZWFrCisgICAgICAgICBlbmQKKy0gICAgICAgIGkgPSBpICsgMQorKyAg ICAgICAgLS0gTHVhIDUuNTogZm9yIGxvb3AgY29udHJvbCB2YXJpYWJsZXMgYXJlIHJlYWQtb25s eS4gVGhpcyBpbmNyZW1lbnQKKysgICAgICAgIC0tIHdhcyBhbHdheXMgYSBuby1vcCBzaW5jZSBu dW1lcmljIGZvciBsb29wcyB1c2UgYW4gaW50ZXJuYWwgY291bnRlci4KKysgICAgICAgIC0tIGkg PSBpICsgMQorICAgICAgIGVuZAorIAorICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAiY2xlYXJp bmcgdGV4dCBmaWVsZHMiKQorZGlmZiAtdXJOciBkYXJrdGFibGUtNS42LjAtb3JpZy9zcmMvZXh0 ZXJuYWwvbHVhLXNjcmlwdHMvdG9vbHMvc2NyaXB0X21hbmFnZXIubHVhLm9yaWcgZGFya3RhYmxl LTUuNi4wL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90b29scy9zY3JpcHRfbWFuYWdlci5sdWEu b3JpZworLS0tIGRhcmt0YWJsZS01LjYuMC1vcmlnL3NyYy9leHRlcm5hbC9sdWEtc2NyaXB0cy90 b29scy9zY3JpcHRfbWFuYWdlci5sdWEub3JpZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw MCArMDEwMAorKysrIGRhcmt0YWJsZS01LjYuMC9zcmMvZXh0ZXJuYWwvbHVhLXNjcmlwdHMvdG9v bHMvc2NyaXB0X21hbmFnZXIubHVhLm9yaWcJMjAyNi0wNi0xMiAwNTowNjozOC4wMDAwMDAwMDAg KzAyMDAKK0BAIC0wLDAgKzEsMTY1NCBAQAorKy0tW1sKKysgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m IGRhcmt0YWJsZSwKKysgIGNvcHlyaWdodCAoYykgMjAxOCwgMjAyMCwgMjAyMywgMjAyNCBCaWxs IEZlcmd1c29uIDx3cGZlcmd1c29uQGdtYWlsLmNvbT4KKysgIAorKyAgZGFya3RhYmxlIGlzIGZy ZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5CisrICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lv biAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KKysgIAorKyAgZGFya3RhYmxlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgIAorKyAgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgIGFsb25n IHdpdGggZGFya3RhYmxlLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorK11dCisrLS1bWworKyAgICBzY3JpcHRfbWFuYWdlci5sdWEgLSBhIHRvb2wgZm9yIG1h bmFnaW5nIHRoZSBkYXJrdGFibGUgbHVhIHNjcmlwdHMKKysKKysgICAgc2NyaXB0X21hbmFnZXIg aXMgZGVzaWduZWQgdG8gYmUgY2FsbGVkIGZyb20gdGhlIHVzZXJzIGx1YXJjIGZpbGUgYW5kIHVz ZWQgdG8KKysgICAgbWFuYWdlIHRoZSBsdWEgc2NyaXB0cy4KKysKKysgICAgT24gc3RhcnR1cCBz Y3JpcHRfbWFuYWdlciBzY2FucyB0aGUgbHVhIHNjcmlwdHMgZGlyZWN0b3J5IHRvIHNlZSB3aGF0 IHNjcmlwdHMgYXJlIHByZXNlbnQuCisrICAgIFNjcmlwdHMgYXJlIHNvcnRlZCBieSAnZm9sZGVy JyBiYXNlZCBvbiB3aGF0IHN1Yi1kaXJlY3RvcnkgdGhleSBhcmUgaW4uICBXaXRoIG5vIAorKyAg ICBhZGRpdGlvbmFsIHNjcmlwdCByZXBvc2l0b3JpZXMgaWluc3RhbGxlZCwgdGhlIGZvbGRlcnMg YXJlIGNvbnRyaWIsIGV4YW1wbGVzLCBvZmZpY2lhbAorKyAgICBhbmQgdG9vbHMuICBXaGVuIGEg Zm9sZGVyIGlzIHNlbGVjdGVkIHRoZSBidXR0b25zIHNob3cgdGhlIHNjcmlwdCBuYW1lIGFuZCB3 aGV0aGVyIHRoZQorKyAgICBzY3JpcHQgaXMgc3RhcnRlZCBvciBzdG9wcGVkLiAgVGhlIGJ1dHRv biBpcyBhIHRvZ2dsZSwgc28gaWYgdGhlIHNjcmlwdCBpcyBzdG9wcGVkIGNsaWNrIAorKyAgICB0 aGUgYnV0dG9uIHRvIHN0YXJ0IGl0IGFuZCB2aWNlIHZlcnNhLgorKworKyAgICBGZWF0dXJlcwor KworKyAgICAqIHRoZSBudW1iZXIgb2Ygc2NyaXB0IGJ1dHRvbnMgc2hvd24gY2FuIGJlIGNoYW5n ZWQgdG8gYW55IG51bWJlciBiZXR3ZWVuIDUgYW5kIDIwLiAgVGhlIAorKyAgICAgIGRlZmF1bHQg aXMgMTAgYnV0dG9ucy4gIFRoaXMgY2FuIGJlIGNoYW5nZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24g YWN0aW9uLgorKworKyAgICAqIGFkZGl0aW9uYWwgcmVwb3NpdG9yaWVzIG9mIHNjcmlwdHMgbWF5 IGJlIGluc3RhbGxlZCB1c2luZyBmcm9tIHRoZSBpbnN0YWxsL3VwZGF0ZSBhY3Rpb24uCisrCisr ICAgICogaW5zdGFsbGVkIHNjcmlwdHMgY2FuIGJlIHVwZGF0ZWQgZnJvbSB0aGUgaW5zdGFsbC91 cGRhdGUgYWN0aW9uLiAgVGhpcyBpbmNsdWRlcyBleHRyYQorKyAgICAgIHJlcG9zaXRvcmllcyB0 aGF0IGhhdmUgYmVlbiBpbnN0YWxsZWQuCisrCisrICAgICogdGhlIHNjcmlwdHMgY2FuIGJlIGRp c2FibGVkIGlmIGRlc2lyZWQgZnJvbSB0aGUgaW5zdGFsbC91cGRhdGUgYWN0aW9uLiAgVGhpcyBj YW4gb25seQorKyAgICAgIGJlIHJldmVyc2VkIG1hbnVhbGx5LiAgVG8gZW5hYmxlIHRoZSAiRGlz YWJsZSBTY3JpcHRzIiBidXR0b24sIGNoZWNrIHRoZSBjaGVja2JveCB0bworKyAgICAgIGVuZGFi bGUgaXQuICBUaGlzIGlzIHRvIHByZXZlbnQgYWNjaWRlbnRhbGx5IGRpc2FibGluZyB0aGUgc2Ny aXB0cy4gIENsaWNrIHRoZSAKKysgICAgICAiRGlzYWJsZSBTY3JpcHRzIiBidXR0b24gYW5kIHRo ZSBsdWFyYyBmaWxlIGlzIHJlbmFtZWQgdG8gbHVhcmMuZGlzYWJsZS4gIElmIGF0CisrICAgICAg YSBsYXRlciB0aW1lIHlvdSB3YW50IHRvIGVuYWJsZSB0aGUgc2NyaXB0cyBhZ2Fpbiwgc2ltcGx5 IHJlbmFtZSB0aGUgbHVhcmMuZGlzYWJsZWQgCisrICAgICAgZmlsZSB0byBsdWFyYyBhbmQgdGhl IHNjcmlwdHMgd2lsbCBydW4uCisrCisrXV0KKysKKysKKytsb2NhbCBkdCA9IHJlcXVpcmUgImRh cmt0YWJsZSIKKytsb2NhbCBkdSA9IHJlcXVpcmUgImxpYi9kdHV0aWxzIgorK2xvY2FsIGRmID0g cmVxdWlyZSAibGliL2R0dXRpbHMuZmlsZSIKKytsb2NhbCBkcyA9IHJlcXVpcmUgImxpYi9kdHV0 aWxzLnN0cmluZyIKKytsb2NhbCBkdHN5cyA9IHJlcXVpcmUgImxpYi9kdHV0aWxzLnN5c3RlbSIK Kytsb2NhbCBsb2cgPSByZXF1aXJlICJsaWIvZHR1dGlscy5sb2ciCisrbG9jYWwgZHRkZWJ1ZyA9 IHJlcXVpcmUgImRhcmt0YWJsZS5kZWJ1ZyIKKysKKytsb2NhbCBnZXR0ZXh0ID0gZHQuZ2V0dGV4 dC5nZXR0ZXh0CisrCisrbG9jYWwgZnVuY3Rpb24gXyhtc2dpZCkKKysgICAgcmV0dXJuIGdldHRl eHQobXNnaWQpCisrZW5kCisrCisrLS0gZmlndXJlIG91dCB3aGVyZSB3ZSBhcmUgcnVubmluZyBm cm9tCisrCisrbG9jYWwgaW5mbyA9IGRlYnVnLmdldGluZm8oMSwgIlMiKQorK2xvY2FsIHNjcmlw dHNfcGF0aCA9IGluZm8uc291cmNlOnN1YigyKQorKworKy0tIGFzc3VtZSB1c2VyIGJhc2VkCisr bG9jYWwgc3lzdGVtX2Jhc2VkID0gZmFsc2UKKysKKytpZiBzdHJpbmcubWF0Y2goc2NyaXB0c19w YXRoLCBkcy5zYW5pdGl6ZV9sdWEoZHQuY29uZmlndXJhdGlvbi5kYXRhX2RpcikpIHRoZW4KKysg IGxvZy5tc2cobG9nLmluZm8sICJzY3JpcHRfbWFuYWdlciB1c2luZyBzeXN0ZW0gYmFzZWQgc2Ny aXB0cyIpCisrICBzeXN0ZW1fYmFzZWQgPSB0cnVlCisrZW5kCisrCisrLS0gYXBpIGNoZWNrCisr CisrLS0gZHUuY2hlY2tfbWluX2FwaV92ZXJzaW9uKCI5LjMuMCIsICJzY3JpcHRfbWFuYWdlciIp CisrCisrLS0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIAor Ky0tIEMgTyBOIFMgVCBBIE4gVCBTCisrLS0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIAorKworKy0tIHNjcmlwdF9tYW5hZ2VyIHJlcXVpcmVkIEFQSSB2ZXJz aW9uCisrbG9jYWwgU01fQVBJX1ZFUl9SRVFEIDxjb25zdD4gPSAiOS43LjAiCisrCisrLS0gcGF0 aCBzZXBhcmF0b3IKKytsb2NhbCBQUyA8Y29uc3Q+ID0gZHQuY29uZmlndXJhdGlvbi5ydW5uaW5n X29zID09ICJ3aW5kb3dzIiBhbmQgIlxcIiBvciAiLyIKKysKKystLSBjb21tYW5kIHNlcGFyYXRv cgorK2xvY2FsIENTIDxjb25zdD4gPSBkdC5jb25maWd1cmF0aW9uLnJ1bm5pbmdfb3MgPT0gIndp bmRvd3MiIGFuZCAiJiIgb3IgIjsiCisrCisrbG9jYWwgTU9EVUxFIDxjb25zdD4gPSAic2NyaXB0 X21hbmFnZXIiCisrCisrbG9jYWwgTUlOX0JVVFRPTlNfUEVSX1BBR0UgPGNvbnN0PiA9IDUKKyts b2NhbCBNQVhfQlVUVE9OU19QRVJfUEFHRSA8Y29uc3Q+ID0gMjAKKytsb2NhbCBERUZBVUxUX0JV VFRPTlNfUEVSX1BBR0UgPGNvbnN0PiA9IDEwCisrCisrbG9jYWwgREVGQVVMVF9MT0dfTEVWRUwg PGNvbnN0PiA9IGxvZy5pbmZvCisrCisrbG9jYWwgVVNFUl9MVUFfRElSIDxjb25zdD4gPSBkdC5j b25maWd1cmF0aW9uLmNvbmZpZ19kaXIgLi4gUFMgLi4gImx1YSIKKytsb2NhbCBTWVNURU1fTFVB X0RJUiA8Y29uc3Q+ID0gZHQuY29uZmlndXJhdGlvbi5kYXRhX2RpciAuLiBQUyAuLiAibHVhLXNj cmlwdHMiCisrCisrbG9jYWwgTFVBX1NDUklQVF9SRVBPIDxjb25zdD4gPSAiaHR0cHM6Ly9naXRo dWIuY29tL2Rhcmt0YWJsZS1vcmcvbHVhLXNjcmlwdHMuZ2l0IgorKworK2xvY2FsIExVQV9BUElf VkVSIDxjb25zdD4gPSAiQVBJLSIgLi4gZHQuY29uZmlndXJhdGlvbi5hcGlfdmVyc2lvbl9zdHJp bmcKKysKKystLSBsb2NhbCBQT1dFUl9JQ09OID0gZHQuY29uZmlndXJhdGlvbi5jb25maWdfZGly IC4uICIvbHVhL2RhdGEvZGF0YS9pY29ucy9wb3dlci5wbmciCisrbG9jYWwgVVNFUl9QT1dFUl9J Q09OIDxjb25zdD4gPSBkdC5jb25maWd1cmF0aW9uLmNvbmZpZ19kaXIgLi4gIi9sdWEvZGF0YS9p Y29ucy9wYXRoMjAucG5nIgorK2xvY2FsIFVTRVJfQkxBTktfSUNPTiA8Y29uc3Q+ID0gZHQuY29u ZmlndXJhdGlvbi5jb25maWdfZGlyIC4uICIvbHVhL2RhdGEvaWNvbnMvYmxhbmsyMC5wbmciCisr CisrbG9jYWwgU1lTVEVNX1BPV0VSX0lDT04gPGNvbnN0PiA9IGR0LmNvbmZpZ3VyYXRpb24uZGF0 YV9kaXIgLi4gIi9sdWEtc2NyaXB0cy9kYXRhL2ljb25zL3BhdGgyMC5wbmciCisrbG9jYWwgU1lT VEVNX0JMQU5LX0lDT04gPGNvbnN0PiA9IGR0LmNvbmZpZ3VyYXRpb24uZGF0YV9kaXIgLi4gIi9s dWEtc2NyaXB0cy9kYXRhL2ljb25zL2JsYW5rMjAucG5nIgorKworK2xvY2FsIExVQV9ESVIgPSBV U0VSX0xVQV9ESVIKKytsb2NhbCBQT1dFUl9JQ09OID0gVVNFUl9QT1dFUl9JQ09OCisrbG9jYWwg QkxBTktfSUNPTiA9IFVTRVJfQkxBTktfSUNPTgorKworK2lmIHN5c3RlbV9iYXNlZCB0aGVuCisr ICBMVUFfRElSID0gU1lTVEVNX0xVQV9ESVIKKysgIFBPV0VSX0lDT04gPSBTWVNURU1fUE9XRVJf SUNPTgorKyAgQkxBTktfSUNPTiA9IFNZU1RFTV9CTEFOS19JQ09OCisrZW5kCisrLS0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIAorKy0tIFAgUiBFIEYgRSBS IEUgTiBDIEUgUworKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAt IC0gLSAKKysKKytkdC5wcmVmZXJlbmNlcy5yZWdpc3RlcihNT0RVTEUsICJkaXNhYmxlX3Njcmlw dHMiLCAiYm9vbCIsCisrICBfKCJkaXNhYmxlIEx1YSBzY3JpcHRzIiksCisrICBfKCJkbyBub3Qg cnVuIHRoZSBMdWEgc2NyaXB0cyIpLAorKyAgICBmYWxzZSkKKysKKysgIGlmIGR0LnByZWZlcmVu Y2VzLnJlYWQoTU9EVUxFLCAiZGlzYWJsZV9zY3JpcHRzIiwgImJvb2wiKSB0aGVuCisrICAgIHJl dHVybgorKyAgZW5kCisrCisrZHQucHJlZmVyZW5jZXMucmVnaXN0ZXIoTU9EVUxFLCAiY2hlY2tf dXBkYXRlIiwgImJvb2wiLAorKyAgXygiY2hlY2sgZm9yIHVwZGF0ZWQgc2NyaXB0cyBvbiBzdGFy dCB1cCIpLCAKKysgIF8oImF1dG9tYXRpY2FsbHkgdXBkYXRlIHNjcmlwdHMgdG8gY29ycmVjdCB2 ZXJzaW9uIiksIAorKyAgdHJ1ZSkKKysKKytsb2NhbCBjaGVja19mb3JfdXBkYXRlcyA9IGR0LnBy ZWZlcmVuY2VzLnJlYWQoTU9EVUxFLCAiY2hlY2tfdXBkYXRlIiwgImJvb2wiKQorKworKy0tIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKystLSBMIE8gRyAg TCBFIFYgRSBMCisrLS0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIAorKworK2xvY2FsIG9sZF9sb2dfbGV2ZWwgPSBsb2cubG9nX2xldmVsKCkKKysKKytsb2cu bG9nX2xldmVsKERFRkFVTFRfTE9HX0xFVkVMKQorKworKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKystLSBOIEEgTSBFICBTIFAgQSBDIEUKKystLSAt IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gCisrCisrbG9jYWwg c2NyaXB0X21hbmFnZXIgPSB7fQorK2xvY2FsIHNtID0gc2NyaXB0X21hbmFnZXIKKysKKytzbS5l eGVjdXRhYmxlcyA9IHt9Cisrc20uZXhlY3V0YWJsZXMuZ2l0ID0gZGYuY2hlY2tfaWZfYmluX2V4 aXN0cygiZ2l0IikKKysKKytzbS5tb2R1bGVfaW5zdGFsbGVkID0gZmFsc2UKKytzbS5ldmVudF9y ZWdpc3RlcmVkID0gZmFsc2UKKysKKystLSBzZXQgdXAgdGFibGVzIHRvIGNvbnRhaW4gYWxsIHRo ZSB3aWRnZXRzIGFuZCBjaG9pY2VzCisrCisrc20ud2lkZ2V0cyA9IHt9Cisrc20uZm9sZGVycyA9 IHt9Cisrc20udHJhbnNsYXRlZF9mb2xkZXJzID0ge30KKysKKystLSBzZXQgbG9nIGxldmVsIGZv ciBmdW5jdGlvbnMKKysKKytzbS5sb2dfbGV2ZWwgPSBERUZBVUxUX0xPR19MRVZFTAorKworKy0t W1sKKysKKysgIHNtLnNjcmlwdHMgaXMgYSB0YWJsZSBvZiB0YWJsZXMgZm9yIGNvbnRhaW5pbmcg dGhlIHNjcmlwdHMKKysgIEl0IGlzIG9yZ2FuaXplZCBhcyBpbnRvIGZvbGRlciAoZm9sZGVyKSBz dWJ0YWJsZXMgY29udGFpbmluZworKyAgZWFjaCBzY3JpcHQgZGVmaW5pdGlvbiwgd2hpY2ggaXMg YSB0YWJsZQorKworKyAgc20uc2NyaXB0cy0KKysgICAgICAgICAgICB8CisrICAgICAgICAgICAg LSBmb2xkZXItLS0tLS0tLS0tLS18CisrICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg IC0gc2NyaXB0CisrICAgICAgICAgICAgLSBmb2xkZXItLS0tfCAgICAgICB8CisrICAgICAgICAg ICAgICAgICAgICAgICAgICAtIHNjcmlwdHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgICAgLSBzY3JpcHQKKysgICAgICAgICAgICAgICAgICAgICAgICAgIC0gc2NyaXB0fAorKwor KyAgYW5kIGEgc2NyaXB0IHRhYmxlIGxvb2tzIGxpa2UKKysKKysgIG5hbWUgICAgICAgICAgdGhl IG5hbWUgb2YgdGhlIHNjcmlwdCBmaWxlIHdpdGhvdXQgdGhlIGx1YSBleHRlbnNpb24KKysgIHBh dGggICAgICAgICAgZm9sZGVyIChmb2xkZXIpLCBwYXRoIHNlcGFyYXRvciwgcGF0aCwgbmFtZSB3 aXRob3V0IHRoZSBsdWEgZXh0ZW5zaW9uCisrICBkb2MgICAgICAgICAgIHRoZSBoZWFkZXIgY29t bWVudHMgZnJvbSB0aGUgc2NyaXB0IHRvIGJlIHVzZWQgYXMgYSB0b29sdGlwCisrICBzY3JpcHRf bmFtZSAgIHRoZSBmb2xkZXIsIHBhdGggc2VwYXJhdG9yLCBhbmQgbmFtZSB3aXRob3V0IHRoZSBs dWEgZXh0ZW5zaW9uCisrICBydW5uaW5nICAgICAgIHRydWUgaWYgcnVubmluZywgZmFsc2UgaWYg bm90LCBoaWRkZW4gaWYgcnVubmluZyBidXQgdGhlIAorKyAgICAgICAgICAgICAgICBsaWIvc3Rv cmFnZS9hY3Rpb24gZm9yIHRoZSBzY3JpcHQgaXMgaGlkZGVuCisrICBoYXNfbGliICAgICAgIHRy dWUgaWYgaXQgY3JlYXRlcyBhIG1vZHVsZQorKyAgbGliX25hbWUgICAgICBuYW1lIG9mIHRoZSBj cmVhdGVkIGxpYgorKyAgaGFzX3N0b3JhZ2UgICB0cnVlIGlmIGl0IGNyZWF0ZXMgYSBzdG9yYWdl IChleHBvcnRlcikKKysgIHN0b3JhZ2VfbmFtZSAgbmFtZSBvZiB0aGUgZXhwb3J0ZXIgKGluIHRo ZSBleHBvcnRlciBzdG9yYWdlIG1lbnUpCisrICBoYXNfYWN0aW9uICAgIHRydWUgaWYgaXQgY3Jl YXRlcyBhbiBhY3Rpb24KKysgIGFjdGlvbl9uYW1lICAgbmFtZSBvbiB0aGUgYnV0dG9uCisrICBo YXNfc2VsZWN0ICAgIHRydWUgaWYgaXQgY3JlYXRlcyBhIHNlbGVjdAorKyAgc2VsZWN0X25hbWUg ICBuYW1lIG9uIHRoZSBidXR0b24KKysgIGhhc19ldmVudCAgICAgdHJ1ZSBpZiBpdCBjcmVhdGVz IGFuIGV2ZW50IGhhbmRsZXIKKysgIGV2ZW50X3R5cGUgICAgdHlwZSBvZiBldmVudCwgc2hvcnRj dXQsIHBvc3QteHh4LCBwcmUteHh4CisrICBjYWxsYmFjayAgICAgIG5hbWUgb2YgdGhlIGNhbGxi YWNrIHJvdXRpbmUKKysgIGluaXRpYWxpemVkICAgYWxsIG9mIHRoZSBhYm92ZSBkYXRhIGhhcyBi ZWVuIHJldHJlaXZlZCBhbmQgc2V0LiAgSWYgdGhlIAorKyAgICAgICAgICAgICAgICBzY3JpcHQg aXMgdW5sb2FkZWQgYW5kIHJlbG9hZGVkIHdlIGRvbid0IGhhdmUgdG8gcmVwYXJzZSB0aGUgZmls ZQorKworK11dCisrCisrc20uc2NyaXB0cyA9IHt9Cisrc20uc3RhcnRfcXVldWUgPSB7fQorK3Nt LnBhZ2Vfc3RhdHVzID0ge30KKytzbS5wYWdlX3N0YXR1cy5udW1fYnV0dG9ucyA9IERFRkFVTFRf QlVUVE9OU19QRVJfUEFHRQorK3NtLnBhZ2Vfc3RhdHVzLmJ1dHRvbnNfY3JlYXRlZCA9IDAKKytz bS5wYWdlX3N0YXR1cy5jdXJyZW50X3BhZ2UgPSAwCisrc20ucGFnZV9zdGF0dXMuZm9sZGVyID0g IiIKKysKKystLSBpbnN0YWxsZWQgc2NyaXB0IHJlcG9zaXRvcmllcworK3NtLmluc3RhbGxlZF9y ZXBvc2l0b3JpZXMgPSB7CisrICB7bmFtZSA9ICJsdWEtc2NyaXB0cyIsIGRpcmVjdG9yeSA9IExV QV9ESVJ9LAorK30KKysKKysKKystLSBkb24ndCBsZXQgaXQgcnVuIHVudGlsIGV2ZXJ5dGhpbmcg aXMgaW4gcGxhY2UKKytzbS5ydW4gPSBmYWxzZQorKworKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKystLSBGIFUgTiBDIFQgSSBPIE4gUworKy0tIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKysKKystLS0tLS0t LS0tLS0tLS0tLS0tCisrLS0gaGVscGVyIGZ1bmN0aW9ucworKy0tLS0tLS0tLS0tLS0tLS0tLS0K KysKKytsb2NhbCBmdW5jdGlvbiBzZXRfbG9nX2xldmVsKGxldmVsKQorKyAgbG9jYWwgb2xkX2xv Z19sZXZlbCA9IGxvZy5sb2dfbGV2ZWwoKQorKyAgbG9nLmxvZ19sZXZlbChsZXZlbCkKKysgIHJl dHVybiBvbGRfbG9nX2xldmVsCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gcmVzdG9yZV9sb2df bGV2ZWwobGV2ZWwpCisrICBsb2cubG9nX2xldmVsKGxldmVsKQorK2VuZAorKworK2xvY2FsIGZ1 bmN0aW9uIHByZWZfcmVhZChuYW1lLCBwcmVmX3R5cGUpCisrICBsb2NhbCBvbGRfbG9nX2xldmVs ID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBsb2cubXNnKGxvZy5kZWJ1Zywg Im5hbWUgaXMgIiAuLiBuYW1lIC4uICIgYW5kIHR5cGUgaXMgIiAuLiBwcmVmX3R5cGUpCisrCisr ICBsb2NhbCB2YWwgPSBkdC5wcmVmZXJlbmNlcy5yZWFkKE1PRFVMRSwgbmFtZSwgcHJlZl90eXBl KQorKworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJyZWFkIHZhbHVlICIgLi4gdG9zdHJpbmcodmFs KSkKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrICByZXR1cm4gdmFs CisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gcHJlZl93cml0ZShuYW1lLCBwcmVmX3R5cGUsIHZh bHVlKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVs KQorKworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJ3cml0aW5nIHZhbHVlICIgLi4gdG9zdHJpbmco dmFsdWUpIC4uICIgZm9yIG5hbWUgIiAuLiBuYW1lKQorKworKyAgZHQucHJlZmVyZW5jZXMud3Jp dGUoTU9EVUxFLCBuYW1lLCBwcmVmX3R5cGUsIHZhbHVlKQorKworKyAgcmVzdG9yZV9sb2dfbGV2 ZWwob2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKystLS0tLS0tLS0tLS0tLS0tCisrLS0gZ2l0IGlu dGVyZmFjZQorKy0tLS0tLS0tLS0tLS0tLS0KKysKKytsb2NhbCBmdW5jdGlvbiBnZXRfcmVwb19z dGF0dXMocmVwbykKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxv Z19sZXZlbCkKKysKKysgIGxvY2FsIHAgPSBpby5wb3BlbigiY2QgIiAuLiByZXBvIC4uIENTIC4u ICJnaXQgc3RhdHVzIikKKysKKysgIGlmIHAgdGhlbgorKyAgICBsb2NhbCBkYXRhID0gcDpyZWFk KCIqYSIpCisrICAgIHA6Y2xvc2UoKQorKyAgICByZXR1cm4gZGF0YQorKyAgZW5kCisrCisrICBs b2cubXNnKGxvZy5lcnJvciwgInVuYWJsZSB0byBnZXQgc3RhdHVzIG9mICIgLi4gcmVwbykKKysg IHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrICByZXR1cm4gbmlsCisrZW5kCisr CisrbG9jYWwgZnVuY3Rpb24gZ2V0X2N1cnJlbnRfcmVwb19icmFuY2gocmVwbykKKysgIGxvY2Fs IG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxvY2Fs IGJyYW5jaCA9IG5pbAorKworKyAgbG9jYWwgcCA9IGlvLnBvcGVuKCJjZCAiIC4uIHJlcG8gLi4g Q1MgLi4gImdpdCBicmFuY2ggLS1hbGwiKQorKworKyAgaWYgcCB0aGVuCisrICAgIGxvY2FsIGRh dGEgPSBwOnJlYWQoIiphIikKKysgICAgcDpjbG9zZSgpCisrICAgIGxvY2FsIGJyYW5jaGVzID0g ZHUuc3BsaXQoZGF0YSwgIlxuIikKKysgICAgZm9yIF8sIGIgaW4gaXBhaXJzKGJyYW5jaGVzKSBk bworKyAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAiYnJhbmNoIGZvciB0ZXN0aW5nIGlzICIgLi4g YikKKysgICAgICBicmFuY2ggPSBzdHJpbmcubWF0Y2goYiwgIl4lKiAoLi0pJCIpCisrCisrICAg ICAgaWYgYnJhbmNoIHRoZW4KKysgICAgICAgIGxvZy5tc2cobG9nLmluZm8sICJjdXJyZW50IHJl cG8gYnJhbmNoIGlzICIgLi4gYnJhbmNoKQorKyAgICAgICAgcmV0dXJuIGJyYW5jaAorKyAgICAg IGVuZAorKworKyAgICBlbmQKKysgIGVuZAorKworKyAgaWYgbm90IGJyYW5jaCB0aGVuCisrICAg IGxvZy5tc2cobG9nLmVycm9yLCAibm8gY3VycmVudCBicmFuY2ggZGV0ZWN0ZWQgaW4gcmVwb19k YXRhIikKKysgIGVuZAorKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKysg IHJldHVybiBuaWwKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBnZXRfcmVwb19icmFuY2hlcyhy ZXBvKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVs KQorKworKyAgbG9jYWwgYnJhbmNoZXMgPSB7fQorKyAgbG9jYWwgcCA9IGlvLnBvcGVuKCJjZCAi IC4uIHJlcG8gLi4gQ1MgLi4gImdpdCBwdWxsIC0tYWxsIiAuLiBDUyAuLiAiZ2l0IGJyYW5jaCAt LWFsbCIpCisrCisrICBpZiBwIHRoZW4KKysgICAgbG9jYWwgZGF0YSA9IHA6cmVhZCgiKmEiKQor KyAgICBwOmNsb3NlKCkKKysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJkYXRhIGlzIFxuIiAuLiBk YXRhKQorKyAgICBsb2NhbCBicmFuY2hfZGF0YSA9IGR1LnNwbGl0KGRhdGEsICJcbiIpCisrICAg IGZvciBfLCBsaW5lIGluIGlwYWlycyhicmFuY2hfZGF0YSkgZG8KKysgICAgICBsb2cubXNnKGxv Zy5kZWJ1ZywgImxpbmUgaXMgICIgLi4gbGluZSkKKysgICAgICBsb2NhbCBicmFuY2ggPSBzdHJp bmcuZ3N1YihsaW5lLCAiJXMrcmVtb3Rlcy8lYSsvIiwgIiIpCisrICAgICAgaWYgc3RyaW5nLm1h dGNoKGJyYW5jaCwgIkFQSSIpIHRoZW4KKysgICAgICAgIGxvZy5tc2cobG9nLmluZm8sICJmb3Vu ZCBicmFuY2ggLSAiIC4uIGJyYW5jaCkKKysgICAgICAgIHRhYmxlLmluc2VydChicmFuY2hlcywg YnJhbmNoKQorKyAgICAgIGVuZAorKyAgICBlbmQKKysgIGVuZAorKworKyAgcmVzdG9yZV9sb2df bGV2ZWwob2xkX2xvZ19sZXZlbCkKKysgIHJldHVybiBicmFuY2hlcyAKKytlbmQKKysKKytsb2Nh bCBmdW5jdGlvbiBpc19yZXBvX2NsZWFuKHJlcG9fZGF0YSkKKysgIGxvY2FsIG9sZF9sb2dfbGV2 ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGlmIHN0cmluZy5tYXRjaChy ZXBvX2RhdGEsICJcbiVzLSVhLi0lYTolcy0lYSVnLVxuIikgdGhlbgorKyAgICBsb2cubXNnKGxv Zy5pbmZvLCAicmVwbyBpcyBkaXJ0eSIpCisrICAgIHJldHVybiBmYWxzZQorKyAgZWxzZQorKyAg ICBsb2cubXNnKGxvZy5pbmZvLCAicmVwbyBpcyBjbGVhbiIpCisrICAgIHJldHVybiB0cnVlCisr ICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5kCisrCisr bG9jYWwgZnVuY3Rpb24gY2hlY2tvdXRfcmVwb19icmFuY2gocmVwbywgYnJhbmNoKQorKyAgbG9j YWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKworKyAgbG9n Lm1zZyhsb2cuaW5mbywgImNoZWNrb3V0IG91dCBicmFuY2ggIiAuLiBicmFuY2ggLi4gIiBmcm9t IHJlcG9zaXRvcnkgIiAuLiByZXBvKQorKworKyAgb3MuZXhlY3V0ZSgiY2QgIiAuLiByZXBvIC4u IENTIC4uICJnaXQgY2hlY2tvdXQgIiAuLiBicmFuY2gpCisrCisrICByZXN0b3JlX2xvZ19sZXZl bChvbGRfbG9nX2xldmVsKQorK2VuZAorKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisrLS0gdXRp bGl0eSBmdW5jdGlvbnMKKystLS0tLS0tLS0tLS0tLS0tLS0tLQorKworK2xvY2FsIGZ1bmN0aW9u IHVwZGF0ZV9jb21ib2JveF9jaG9pY2VzKGNvbWJvYm94LCBjaG9pY2VfdGFibGUsIHNlbGVjdGVk KQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQor KworKyAgbG9jYWwgaXRlbXMgPSAjY29tYm9ib3gKKysgIGxvY2FsIGNob2ljZXMgPSAjY2hvaWNl X3RhYmxlCisrCisrICBmb3IgaSwgbmFtZSBpbiBpcGFpcnMoY2hvaWNlX3RhYmxlKSBkbyAKKysg ICAgY29tYm9ib3hbaV0gPSBuYW1lCisrICBlbmQKKysKKysgIGlmIGNob2ljZXMgPCBpdGVtcyB0 aGVuCisrICAgIGZvciBqID0gaXRlbXMsIGNob2ljZXMgKyAxLCAtMSBkbworKyAgICAgIGNvbWJv Ym94W2pdID0gbmlsCisrICAgIGVuZAorKyAgZW5kCisrCisrICBpZiBub3Qgc2VsZWN0ZWQgdGhl bgorKyAgICBzZWxlY3RlZCA9IDEKKysgIGVuZAorKworKyAgY29tYm9ib3gudmFsdWUgPSBzZWxl Y3RlZAorKyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKytsb2Nh bCBmdW5jdGlvbiBzdHJpbmdfdHJpbShzdHIpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0 X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBsb2NhbCByZXN1bHQgPSBzdHJpbmcuZ3N1 YihzdHIsICJeJXMrIiwgIiIpIC0tIHRyaW0gbGVhZGluZyBzcGFjZXMKKysgIHJlc3VsdCA9IHN0 cmluZy5nc3ViKHJlc3VsdCwgIiVzKyQiLCAiIikgICAgLS0gdHJpbSB0cmFpbGluZyBzcGFjZXMK KysgIHJlc3VsdCA9IHN0cmluZy5nc3ViKHJlc3VsdCwgIiw/JXMrJS0lLS4rJCIsICIiKSAtLSB0 cmltIHRyYWlsaW5nIGNvbW1hIGFuZCBjb21tZW50cworKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwo b2xkX2xvZ19sZXZlbCkKKysgIHJldHVybiByZXN1bHQKKytlbmQKKysKKytsb2NhbCBmdW5jdGlv biBzdHJpbmdfZGVxdW90ZShzdHIpCisrICByZXR1cm4gc3RyaW5nLmdzdWIoc3RyLCAiWydcIl0i LCAiIikKKytlbmQKKysKKytsb2NhbCBmdW5jdGlvbiBzdHJpbmdfZGVpMThuKHN0cikKKysgIHJl dHVybiBzdHJpbmcubWF0Y2goc3RyLCAiJV8lKCguKyklKSIpCisrZW5kCisrCisrbG9jYWwgZnVu Y3Rpb24gc3RyaW5nX2Nob3Aoc3RyKQorKyAgcmV0dXJuIHN0cjpzdWIoMSwgLTIpCisrZW5kCisr CisrLS0tLS0tLS0tLS0tLS0tLS0tCisrLS0gc2NyaXB0IGhhbmRsaW5nCisrLS0tLS0tLS0tLS0t LS0tLS0tCisrCisrbG9jYWwgZnVuY3Rpb24gaXNfZm9sZGVyX2tub3duKGZvbGRlcl90YWJsZSwg bmFtZSkKKysgIGxvY2FsIG1hdGNoID0gZmFsc2UKKysKKysgIGZvciBfLCBmb2xkZXJfbmFtZSBp biBpcGFpcnMoZm9sZGVyX3RhYmxlKSBkbworKyAgICBpZiBuYW1lID09IGZvbGRlcl9uYW1lIHRo ZW4KKysgICAgICBtYXRjaCA9IHRydWUKKysgICAgZW5kCisrICBlbmQKKysKKysgIHJldHVybiBt YXRjaAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGZpbmRfdHJhbnNsYXRlZF9uYW1lKGZvbGRl cikKKysgIGxvY2FsIHRyYW5zbGF0ZWRfbmFtZSA9IG5pbAorKworKyAgaWYgZm9sZGVyID09ICJj b250cmliIiB0aGVuCisrICAgIHRyYW5zbGF0ZWRfbmFtZSA9IF8oImNvbnRyaWJ1dGVkIikKKysg IGVsc2VpZiBmb2xkZXIgPT0gImV4YW1wbGVzIiB0aGVuCisrICAgIHRyYW5zbGF0ZWRfbmFtZSA9 IF8oImV4YW1wbGVzIikKKysgIGVsc2VpZiBmb2xkZXIgPT0gIm9mZmljaWFsIiB0aGVuCisrICAg IHRyYW5zbGF0ZWRfbmFtZSA9IF8oIm9mZmljaWFsIikKKysgIGVsc2VpZiBmb2xkZXIgPT0gInRv b2xzIiB0aGVuCisrICAgIHRyYW5zbGF0ZWRfbmFtZSA9IF8oInRvb2xzIikKKysgIGVsc2UKKysg ICAgdHJhbnNsYXRlZF9uYW1lID0gXyhmb2xkZXIpIC0tIGluIGNhc2Ugd2UgZ2V0IGx1Y2t5IGFu ZCB0aGUgc3RyaW5nIGdvdCB0cmFuc2xhdGVkIGVsc2V3aGVyZQorKyAgZW5kCisrCisrICByZXR1 cm4gdHJhbnNsYXRlZF9uYW1lCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gYWRkX3NjcmlwdF9m b2xkZXIoZm9sZGVyKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20u bG9nX2xldmVsKQorKworKyAgaWYgI3NtLmZvbGRlcnMgPT0gMCBvciBub3QgaXNfZm9sZGVyX2tu b3duKHNtLmZvbGRlcnMsIGZvbGRlcikgdGhlbgorKyAgICB0YWJsZS5pbnNlcnQoc20uZm9sZGVy cywgZm9sZGVyKQorKyAgICB0YWJsZS5pbnNlcnQoc20udHJhbnNsYXRlZF9mb2xkZXJzLCBmaW5k X3RyYW5zbGF0ZWRfbmFtZShmb2xkZXIpKQorKyAgICBzbS5zY3JpcHRzW2ZvbGRlcl0gPSB7fQor KyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImNyZWF0ZWQgZm9sZGVyICIgLi4gZm9sZGVyKQorKyAg ZW5kCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xv Y2FsIGZ1bmN0aW9uIGdldF9zY3JpcHRfbWV0YWRhdGEoc2NyaXB0KQorKyAgbG9jYWwgb2xkX2xv Z19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKyAgLS0gc2V0X2xvZ19sZXZl bChsb2cuZGVidWcpCisrCisrICBsb2cubXNnKGxvZy5kZWJ1ZywgInByb2Nlc3NpbmcgbWV0YXRk YXRhIGZvciAiIC4uIHNjcmlwdCkKKysKKysgIGxvY2FsIG1ldGFkYXRhX2Jsb2NrID0gbmlsCisr ICBsb2NhbCBtZXRhZGF0YSA9IHt9CisrCisrICBmID0gaW8ub3BlbihMVUFfRElSIC4uIFBTIC4u IHNjcmlwdCAuLiAiLmx1YSIpCisrICBpZiBmIHRoZW4KKysgICAgLS0gc2x1cnAgdGhlIGZpbGUK KysgICAgbG9jYWwgY29udGVudCA9IGY6cmVhZCgiKmFsbCIpCisrICAgIGY6Y2xvc2UoKQorKyAg ICAtLSBncmFiIHRoZSBzY3JpcHRfZGF0YS5tZXRhZGF0YSB0YWJsZQorKyAgICBtZXRhZGF0YV9i bG9jayA9IHN0cmluZy5tYXRjaChjb250ZW50LCAic2NyaXB0X2RhdGElLm1ldGFkYXRhID0gJXtc cj9cbiguLSlccj9cbiV9IikKKysgIGVsc2UKKysgICAgbG9nLm1zZyhsb2cuZXJyb3IsICJjYW50 IHJlYWQgZnJvbSAiIC4uIHNjcmlwdCkKKysgIGVuZAorKworKyAgaWYgbWV0YWRhdGFfYmxvY2sg dGhlbgorKyAgICAtLSBicmVhayB1cCB0aGUgbGluZXMgaW50byBrZXkgdmFsdWUgcGFpcnMKKysg ICAgbG9jYWwgbGluZXMgPSBkdS5zcGxpdChtZXRhZGF0YV9ibG9jaywgIlxuIikKKysgICAgbG9n Lm1zZyhsb2cuZGVidWcsICJnb3QgIiAuLiAjbGluZXMgLi4gIiBsaW5lcyIpCisrICAgIGZvciBp ID0gMSwgI2xpbmVzIGRvCisrICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJzcGxpdHRpbmcgbGlu ZSAiIC4uIGxpbmVzW2ldKQorKyAgICAgIGxvY2FsIHBhcnRzID0gZHUuc3BsaXQobGluZXNbaV0s ICIgPSAiKQorKyAgICAgIHBhcnRzWzFdID0gc3RyaW5nX3RyaW0ocGFydHNbMV0pCisrICAgICAg cGFydHNbMl0gPSBzdHJpbmdfdHJpbShwYXJ0c1syXSkKKysgICAgICBsb2cubXNnKGxvZy5kZWJ1 ZywgImdvdCB2YWx1ZSAiIC4uIHBhcnRzWzFdIC4uICIgYW5kIGRhdGEgIiAuLiBwYXJ0c1syXSkK KysgICAgICBpZiBzdHJpbmcubWF0Y2gocGFydHNbMl0sICIlXyUoIikgdGhlbgorKyAgICAgICAg cGFydHNbMl0gPSBfKHN0cmluZ19kZXF1b3RlKHN0cmluZ19kZWkxOG4ocGFydHNbMl0pKSkKKysg ICAgICBlbHNlCisrICAgICAgICBwYXJ0c1syXSA9IHN0cmluZ19kZXF1b3RlKHBhcnRzWzJdKQor KyAgICAgIGVuZAorKyAgICAgIGlmIHN0cmluZy5tYXRjaChwYXJ0c1syXSwgIiwkIikgdGhlbgor KyAgICAgICAgcGFydHNbMl0gPSBzdHJpbmdfY2hvcChwYXJ0c1syXSkKKysgICAgICBlbmQKKysg ICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgInBhcnRzIDEgaXMgIiAuLiBwYXJ0c1sxXSAuLiAiIGFu ZCBwYXJ0cyAyIGlzICIgLi4gcGFydHNbMl0pCisrICAgICAgbWV0YWRhdGFbcGFydHNbMV1dID0g cGFydHNbMl0KKysgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgIm1ldGFkYXRhICIgLi4gcGFydHNb MV0gLi4gIiBpcyAiIC4uIG1ldGFkYXRhW3BhcnRzWzFdXSkKKysgICAgZW5kCisrICAgIGxvZy5t c2cobG9nLmRlYnVnLCAic2NyaXB0IGRhdGEgZm91bmQgZm9yICIgLi4gbWV0YWRhdGFbIm5hbWUi XSkKKysgIGVuZAorKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKysgIHJl dHVybiBtZXRhZGF0YV9ibG9jayBhbmQgbWV0YWRhdGEgb3IgbmlsCisrZW5kCisrCisrbG9jYWwg ZnVuY3Rpb24gZ2V0X3NjcmlwdF9kb2Moc2NyaXB0KQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9 IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKyAgbG9jYWwgZGVzY3JpcHRpb24gPSBuaWwK KysgIGYgPSBpby5vcGVuKExVQV9ESVIgLi4gUFMgLi4gc2NyaXB0IC4uICIubHVhIikKKysgIGlm IGYgdGhlbgorKyAgICAtLSBzbHVycCB0aGUgZmlsZQorKyAgICBsb2NhbCBjb250ZW50ID0gZjpy ZWFkKCIqYWxsIikKKysgICAgZjpjbG9zZSgpCisrICAgIC0tIGFzc3VtZSB0aGF0IHRoZSBzZWNv bmQgYmxvY2sgY29tbWVudCBpcyB0aGUgZG9jdW1lbnRhdGlvbgorKyAgICBkZXNjcmlwdGlvbiA9 IHN0cmluZy5tYXRjaChjb250ZW50LCAiJS0lLSVbJVsuLSVdJV0uLSUtJS0lWyVbKC4tKSVdJV0i KQorKyAgZWxzZQorKyAgICBsb2cubXNnKGxvZy5lcnJvciwgImNhbid0IHJlYWQgZnJvbSAiIC4u IHNjcmlwdCkKKysgIGVuZAorKyAgaWYgZGVzY3JpcHRpb24gdGhlbgorKyAgICByZXN0b3JlX2xv Z19sZXZlbChvbGRfbG9nX2xldmVsKQorKyAgICByZXR1cm4gZGVzY3JpcHRpb24KKysgIGVsc2UK KysgICAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKysgICAgcmV0dXJuIF8oIm5v IGRvY3VtZW50YXRpb24gYXZhaWxhYmxlIikKKysgIGVuZAorK2VuZAorKworK2xvY2FsIGZ1bmN0 aW9uIGFjdGl2YXRlKHNjcmlwdCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xl dmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxvY2FsIHN0YXR1cyA9IG5pbCAtLSBzdGF0dXMgb2Yg c3RhcnQgZnVuY3Rpb24KKysgIGxvY2FsIGVyciA9IG5pbCAgICAtLSBlcnJvciBtZXNzYWdlIHJl dHVybmVkIGlmIG1vZHVsZSBkb2Vzbid0IHN0YXJ0CisrCisrICBsb2cubXNnKGxvZy5pbmZvLCAi YWN0aXZhdGluZyAiIC4uIHNjcmlwdC5uYW1lKQorKworKyAgaWYgc2NyaXB0LnJ1bm5pbmcgPT0g ZmFsc2UgdGhlbgorKworKyAgICBzY3JpcHRfbWFuYWdlcl9ydW5uaW5nX3NjcmlwdCA9IHNjcmlw dC5uYW1lCisrCisrICAgIHN0YXR1cywgZXJyID0gZHUucHJlcXVpcmUoc2NyaXB0LnBhdGgpCisr ICAgIGxvZy5tc2cobG9nLmRlYnVnLCAicHJlcXVpcmUgcmV0dXJuZWQgIiAuLiB0b3N0cmluZyhz dGF0dXMpIC4uICIgYW5kIGZvciBlcnIgIiAuLiB0b3N0cmluZyhlcnIpKQorKworKyAgICBzY3Jp cHRfbWFuYWdlcl9ydW5uaW5nX3NjcmlwdCA9IG5pbAorKworKyAgICBpZiBzdGF0dXMgdGhlbgor KyAgICAgIHByZWZfd3JpdGUoc2NyaXB0LnNjcmlwdF9uYW1lLCAiYm9vbCIsIHRydWUpCisrICAg ICAgbG9nLm1zZyhsb2cuc2NyZWVuLCBfKHN0cmluZy5mb3JtYXQoImxvYWRlZCAlcyIsIHNjcmlw dC5zY3JpcHRfbmFtZSkpKQorKyAgICAgIHNjcmlwdC5ydW5uaW5nID0gdHJ1ZQorKworKyAgICAg IGlmIGVyciB+PSB0cnVlIHRoZW4KKysgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAiZ290IGxp YiBkYXRhIikKKysgICAgICAgIHNjcmlwdC5kYXRhID0gZXJyCisrICAgICAgICBpZiBzY3JpcHQu ZGF0YS5kZXN0cm95X21ldGhvZCBhbmQgc2NyaXB0LmRhdGEuZGVzdHJveV9tZXRob2QgPT0gImhp ZGUiIGFuZCBzY3JpcHQuZGF0YS5zaG93IGFuZCBkdC5ndWkuY3VycmVudF92aWV3KCkuaWQgPT0g ImxpZ2h0dGFibGUiIHRoZW4KKysgICAgICAgICAgc2NyaXB0LmRhdGEuc2hvdygpCisrICAgICAg ICBlbmQKKysgICAgICBlbHNlCisrICAgICAgICBzY3JpcHQuZGF0YSA9IG5pbAorKyAgICAgIGVu ZAorKworKyAgICAgZWxzZQorKyAgICAgIGxvZy5tc2cobG9nLnNjcmVlbiwgXyhzdHJpbmcuZm9y bWF0KCIlcyBmYWlsZWQgdG8gbG9hZCIsIHNjcmlwdC5zY3JpcHRfbmFtZSkpKQorKyAgICAgIGxv Zy5tc2cobG9nLmVycm9yLCAiZXJyb3IgbG9hZGluZyAiIC4uIHNjcmlwdC5zY3JpcHRfbmFtZSkK KysgICAgICBsb2cubXNnKGxvZy5lcnJvciwgImVycm9yIG1lc3NhZ2U6ICIgLi4gZXJyKQorKyAg ICBlbmQKKysKKysgIGVsc2UgLS0gc2NyaXB0IGlzIGEgbGliIGFuZCBsb2FkZWQgYnV0IGhpZGRl biBhbmQgdGhlIHVzZXIgd2FudHMgdG8gcmVsb2FkCisrICAgIHNjcmlwdC5kYXRhLnJlc3RhcnQo KQorKyAgICBzY3JpcHQucnVubmluZyA9IHRydWUKKysgICAgc3RhdHVzID0gdHJ1ZQorKyAgICBw cmVmX3dyaXRlKHNjcmlwdC5zY3JpcHRfbmFtZSwgImJvb2wiLCB0cnVlKQorKyAgZW5kCisrICBz Y3JpcHRfbWFuYWdlcl9ydW5uaW5nX3NjcmlwdCA9ICJzY3JpcHRfbWFuYWdlciIKKysKKysgIHJl c3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrICByZXR1cm4gc3RhdHVzCisrZW5kCisr CisrbG9jYWwgZnVuY3Rpb24gZGVhY3RpdmF0ZShzY3JpcHQpCisrICAtLSBwcmVzZW50bHkgdGhl IGx1YSBhcGkgZG9lc24ndCBzdXBwb3J0IHVubG9hZGluZyBsaWIgZWxlbWVudHMgaG93ZXZlciwg d2UKKysgIC0tICAgY2FuIGhpZGUgbGlicywgc28gd2UganVzdCBtYXJrIHRob3NlIGFzIGhpZGRl biBhbmQgaGlkZSB0aGUgZ3VpCisrICAtLSAgIGNhbiBkZWxldGUgc3RvcmFnZXMKKysgIC0tICAg Y2FuIGRlbGV0ZSBhY3Rpb25zCisrICAtLSAgIGNhbiBkZWxldGUgc2VsZWN0cworKyAgLS0gICBh bmQgbWFyayB0aGVtIGluYWN0aXZlIGZvciB0aGUgbmV4dCB0aW1lIGRhcmt0YWJsZSBzdGFydHMK KysKKysgIC0tIGRlYWN0aXZhdGUgaXQuLi4uCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0 X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBwcmVmX3dyaXRlKHNjcmlwdC5zY3JpcHRf bmFtZSwgImJvb2wiLCBmYWxzZSkKKysKKysgIGlmIHNjcmlwdC5kYXRhIHRoZW4KKysKKysgICAg c2NyaXB0LmRhdGEuZGVzdHJveSgpCisrCisrICAgIGlmIHNjcmlwdC5kYXRhLmRlc3Ryb3lfbWV0 aG9kIHRoZW4KKysgICAgICBpZiBzdHJpbmcubWF0Y2goc2NyaXB0LmRhdGEuZGVzdHJveV9tZXRo b2QsICJoaWRlIikgdGhlbgorKyAgICAgICAgc2NyaXB0LnJ1bm5pbmcgPSAiaGlkZGVuIgorKyAg ICAgIGVsc2UKKysgICAgICAgIHBhY2thZ2UubG9hZGVkW3NjcmlwdC5zY3JpcHRfbmFtZV0gPSBu aWwKKysgICAgICAgIHNjcmlwdC5ydW5uaW5nID0gZmFsc2UKKysgICAgICBlbmQKKysgICAgZWxz ZQorKyAgICAgIHBhY2thZ2UubG9hZGVkW3NjcmlwdC5zY3JpcHRfbmFtZV0gPSBuaWwKKysgICAg ICBzY3JpcHQucnVubmluZyA9IGZhbHNlCisrICAgIGVuZAorKworKyAgICBsb2cubXNnKGxvZy5p bmZvLCAidHVybmVkIG9mZiAiIC4uIHNjcmlwdC5zY3JpcHRfbmFtZSkKKysgICAgbG9nLm1zZyhs b2cuc2NyZWVuLCBfKHN0cmluZy5mb3JtYXQoIiVzIHN0b3BwZWQiLCBzY3JpcHQubmFtZSkpKQor KworKyAgZWxzZQorKyAgICBzY3JpcHQucnVubmluZyA9IGZhbHNlCisrCisrICAgIGxvZy5tc2co bG9nLmluZm8sICJzZXR0aW5nICIgLi4gc2NyaXB0LnNjcmlwdF9uYW1lIC4uICIgdG8gbm90IHN0 YXJ0IikKKysgICAgbG9nLm1zZyhsb2cuc2NyZWVuLCBfKHN0cmluZy5mb3JtYXQoIiVzIHdpbGwg bm90IHN0YXJ0IHdoZW4gZGFya3RhYmxlIGlzIHJlc3RhcnRlZCIsIHNjcmlwdC5uYW1lKSkpCisr ICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5kCisrCisr bG9jYWwgZnVuY3Rpb24gc3RhcnRfc2NyaXB0cygpCisrICBmb3IgXywgc2NyaXB0IGluIGlwYWly cyhzbS5zdGFydF9xdWV1ZSkgZG8KKysgICAgYWN0aXZhdGUoc2NyaXB0KQorKyAgICBmb3IgaSA9 IDEsIHNtLnBhZ2Vfc3RhdHVzLm51bV9idXR0b25zIGRvCisrICAgICAgbG9jYWwgbmFtZSA9IHNj cmlwdC5tZXRhZGF0YSBhbmQgc2NyaXB0Lm1ldGFkYXRhLm5hbWUgb3Igc2NyaXB0Lm5hbWUKKysg ICAgICBpZiBzbS53aWRnZXRzLmxhYmVsc1tpXS5sYWJlbCA9PSBuYW1lIHRoZW4KKysgICAgICAg IHNtLndpZGdldHMuYnV0dG9uc1tpXS5uYW1lID0gInBiX29uIgorKyAgICAgICAgYnJlYWsKKysg ICAgICBlbmQKKysgICAgZW5kCisrICBlbmQKKysgIHNtLnN0YXJ0X3F1ZXVlID0ge30KKytlbmQK KysKKytsb2NhbCBmdW5jdGlvbiBxdWV1ZV9zY3JpcHRfdG9fc3RhcnQoc2NyaXB0KQorKyAgdGFi bGUuaW5zZXJ0KHNtLnN0YXJ0X3F1ZXVlLCBzY3JpcHQpCisrZW5kCisrCisrbG9jYWwgZnVuY3Rp b24gYWRkX3NjcmlwdF9uYW1lKG5hbWUsIHBhdGgsIGZvbGRlcikKKysgIGxvY2FsIG9sZF9sb2df bGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxvZy5tc2cobG9nLmRl YnVnLCAiZm9sZGVyIGlzICIgLi4gZm9sZGVyKQorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJuYW1l IGlzICIgLi4gbmFtZSkKKysKKysgIGxvY2FsIHNjcmlwdCA9IHsgCisrICAgIG5hbWUgPSBuYW1l LCAKKysgICAgcGF0aCA9IGZvbGRlciAuLiAiLyIgLi4gcGF0aCAuLiBuYW1lLAorKyAgICBydW5u aW5nID0gZmFsc2UsCisrICAgIGRvYyA9IGdldF9zY3JpcHRfZG9jKGZvbGRlciAuLiAiLyIgLi4g cGF0aCAuLiBuYW1lKSwKKysgICAgbWV0YWRhdGEgPSBnZXRfc2NyaXB0X21ldGFkYXRhKGZvbGRl ciAuLiAiLyIgLi4gcGF0aCAuLiBuYW1lKSwKKysgICAgc2NyaXB0X25hbWUgPSBmb2xkZXIgLi4g Ii8iIC4uIG5hbWUsCisrICAgIGRhdGEgPSBuaWwKKysgIH0KKysKKysgIHRhYmxlLmluc2VydChz bS5zY3JpcHRzW2ZvbGRlcl0sIHNjcmlwdCkKKysKKysgIGlmIHByZWZfcmVhZChzY3JpcHQuc2Ny aXB0X25hbWUsICJib29sIikgdGhlbgorKyAgICBxdWV1ZV9zY3JpcHRfdG9fc3RhcnQoc2NyaXB0 KQorKyAgZWxzZQorKyAgICBwcmVmX3dyaXRlKHNjcmlwdC5zY3JpcHRfbmFtZSwgImJvb2wiLCBm YWxzZSkKKysgIGVuZAorKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKytl bmQKKysKKytsb2NhbCBmdW5jdGlvbiBwcm9jZXNzX3NjcmlwdF9kYXRhKHNjcmlwdF9maWxlKQor KyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKwor KyAgLS0gdGhlIHNjcmlwdCBmaWxlIHN1cHBsaWVkIGlzIGZvbGRlci9maWxlbmFtZS5maWxldHlw ZQorKyAgLS0gdGhlIGZvbGxvd2luZyBwYXR0ZXJuIHNwbGl0cyB0aGUgc3RyaW5nIGludG8gZm9s ZGVyLCBwYXRoLCBuYW1lLCBmaWxlZW5hbWUsIGFuZCBmaWxldHlwZQorKyAgLS0gZm9yIGV4YW1w bGUgY29udHJpYi9naW1wLmx1YSBiZWNvbWVzCisrICAtLSBmb2xkZXIgLSBjb250cmliCisrICAt LSBwYXRoIC0gCisrICAtLSBuYW1lIC0gZ2ltcC5sdWEKKysgIC0tIGZpbGVuYW1lIC0gZ2ltcAor KyAgLS0gZmlsZXR5cGUgLSBsdWEKKysKKysgIC0tIFRoYW5rcyBUb2JpYXMgSmFrb2JzIGZvciB0 aGUgYXdlc29tZSByZWd1bGFyeSBleHByZXNzaW9uCisrCisrICBsb2NhbCBwYXR0ZXJuID0gIigu LSkvKC4tKSgoW15cXC9dLSklLj8oW14lLlxcL10qKSkkIgorKyAgaWYgZHQuY29uZmlndXJhdGlv bi5ydW5uaW5nX29zID09ICJ3aW5kb3dzIiB0aGVuCisrICAgIC0tIGNoYW5nZSB0aGUgcGF0aCBz ZXBhcmF0b3IgZnJvbSAvIHRvIFwgZm9yIHdpbmRvd3MKKysgICAgcGF0dGVybiA9ICIoLi0pXFwo Li0pKChbXlxcXS0pJS4/KFteJS5cXF0qKSkkIgorKyAgZW5kCisrCisrICBsb2cubXNnKGxvZy5p bmZvLCAicHJvY2Vzc2luZyAiIC4uIHNjcmlwdF9maWxlKQorKworKyAgLS0gYWRkIHRoZSBzY3Jp cHQgZGF0YQorKyAgbG9jYWwgZm9sZGVyLHBhdGgsbmFtZSxmaWxlbmFtZSxmaWxldHlwZSA9IHN0 cmluZy5tYXRjaChzY3JpcHRfZmlsZSwgcGF0dGVybikKKysKKysgIGlmIGZvbGRlciBhbmQgbmFt ZSBhbmQgcGF0aCB0aGVuCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAiZm9sZGVyIGlzICIgLi4g Zm9sZGVyKQorKyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgIm5hbWUgaXMgIiAuLiBuYW1lKQorKwor KyAgICBhZGRfc2NyaXB0X2ZvbGRlcihmb2xkZXIpCisrICAgIGFkZF9zY3JpcHRfbmFtZShuYW1l LCBwYXRoLCBmb2xkZXIpCisrICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2df bGV2ZWwpCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gZW5zdXJlX2xpYl9pbl9zZWFyY2hfcGF0 aChsaW5lKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xl dmVsKQorKworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJsaW5lIGlzICIgLi4gbGluZSkKKysKKysg IGlmIHN0cmluZy5tYXRjaChsaW5lLCBkcy5zYW5pdGl6ZV9sdWEoZHQuY29uZmlndXJhdGlvbi5j b25maWdfZGlyIC4uIFBTIC4uICJsdWEvbGliIikpIHRoZW4KKysgICAgbG9nLm1zZyhsb2cuZGVi dWcsIGxpbmUgLi4gIiBpcyBhbHJlYWR5IGluIHNlYXJjaCBwYXRoLCByZXR1cm5pbmcuLi4iKQor KyAgICByZXR1cm4KKysgIGVuZAorKworKyAgbG9jYWwgcGF0dGVybiA9ICBkdC5jb25maWd1cmF0 aW9uLnJ1bm5pbmdfb3MgPT0gIndpbmRvd3MiIGFuZCAgIiguKylcXGxpYlxcLitsdWEiIG9yICAi KC4rKS9saWIvLitsdWEiCisrICBsb2NhbCBwYXRoID0gc3RyaW5nLm1hdGNoKGxpbmUsIHBhdHRl cm4pCisrCisrICBsb2cubXNnKGxvZy5kZWJ1ZywgImV4dHJhY3RlZCBwYXRoIGlzICIgLi4gcGF0 aCkKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAicGFja2FnZS5wYXRoIGlzICIgLi4gcGFja2FnZS5w YXRoKQorKworKyAgaWYgbm90IHN0cmluZy5tYXRjaChwYWNrYWdlLnBhdGgsIGRzLnNhbml0aXpl X2x1YShwYXRoKSkgdGhlbgorKworKyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgInBhdGggaXNuJ3Qg aW4gcGFja2FnZS5wYXRoLCBhZGRpbmcuLi4iKQorKworKyAgICBwYWNrYWdlLnBhdGggPSBwYWNr YWdlLnBhdGggLi4gIjsiIC4uIHBhdGggLi4gIi8/Lmx1YSIKKysKKysgICAgbG9nLm1zZyhsb2cu ZGVidWcsICJuZXcgcGFja2FnZS5wYXRoIGlzICIgLi4gcGFja2FnZS5wYXRoKQorKyAgZW5kCisr CisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xvY2FsIGZ1 bmN0aW9uIHNjYW5fc2NyaXB0cyhzY3JpcHRfZGlyKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9 IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKworKyAgbG9jYWwgc2NyaXB0X2NvdW50ID0g MAorKyAgbG9jYWwgZmluZF9jbWQgPSAiZmluZCAtTCAiIC4uIHNjcmlwdF9kaXIgLi4gIiAtbmFt ZSBcXCoubHVhIC1wcmludCB8IHNvcnQiCisrCisrICBpZiBkdC5jb25maWd1cmF0aW9uLnJ1bm5p bmdfb3MgPT0gIndpbmRvd3MiIHRoZW4KKysgICAgZmluZF9jbWQgPSAiZGlyIC9iL3MgXCIiIC4u IHNjcmlwdF9kaXIgLi4gIlxcKi5sdWFcIiAyPm51bCB8IHNvcnQiCisrICBlbmQKKysKKysgIGxv Zy5tc2cobG9nLmRlYnVnLCAiZmluZCBjb21tYW5kIGlzICIgLi4gZmluZF9jbWQpCisrCisrICAt LSBzY2FuIHRoZSBzY3JpcHRzCisrICBsb2NhbCBvdXRwdXQgPSBpby5wb3BlbihmaW5kX2NtZCkK KysgIGZvciBsaW5lIGluIG91dHB1dDpsaW5lcygpIGRvCisrICAgIGxvZy5tc2cobG9nLmRlYnVn LCAibGluZSBpcyAiIC4uIGxpbmUpCisrICAgIGxvY2FsIHNjcmlwdF9kaXIgPSBTWVNURU1fTFVB X0RJUgorKyAgICBpZiBzdHJpbmcubWF0Y2gobGluZSwgZHMuc2FuaXRpemVfbHVhKFVTRVJfTFVB X0RJUikpIHRoZW4KKysgICAgICBzY3JpcHRfZGlyID0gVVNFUl9MVUFfRElSCisrICAgIGVuZAor KyAgICAtLSBhZGQgYSBzdHJpbmcubWF0Y2ggdG8gZmlndXJlIG91dCB3aGljaCBsdWEgZGlyIHRv IHVzZQorKyAgICBsb2NhbCBsID0gc3RyaW5nLmdzdWIobGluZSwgZHMuc2FuaXRpemVfbHVhKHNj cmlwdF9kaXIpIC4uIFBTLCAiIikgICAtLSBzdHJpcCB0aGUgbHVhIGRpciBvZmYKKysgICAgbG9j YWwgc2NyaXB0X2ZpbGUgPSBsOnN1YigxLC01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0gc3RyaXAgb2ZmIC5sdWFcbgorKyAgICBpZiBub3Qgc3RyaW5nLm1hdGNoKHNjcmlw dF9maWxlLCAic2NyaXB0X21hbmFnZXIiKSB0aGVuICAgICAgICAgICAtLSBsZXQncyBub3QgaW5j bHVkZSBvdXJzZWxmCisrICAgICAgaWYgbm90IHN0cmluZy5tYXRjaChzY3JpcHRfZmlsZSwgInBs dWdpbnMiKSB0aGVuICAgICAgICAgICAgICAgIC0tIHNraXAgcGx1Z2lucworKyAgICAgICAgaWYg bm90IHN0cmluZy5tYXRjaChzY3JpcHRfZmlsZSwgImxpYiIgLi4gUFMpIHRoZW4gICAgICAgICAg ICAtLSBsZXQncyBub3QgdHJ5IGFuZCBydW4gbGlicmFyaWVzCisrICAgICAgICAgIGlmIG5vdCBz dHJpbmcubWF0Y2goc2NyaXB0X2ZpbGUsICIlLmdpdCIpIHRoZW4gICAgICAgICAgICAgIC0tIGRv bid0IG1hdGNoIGZpbGVzIGluIHRoZSAuZ2l0IGRpcmVjdG9yeQorKyAgICAgICAgICAgIHByb2Nl c3Nfc2NyaXB0X2RhdGEoc2NyaXB0X2ZpbGUpCisrICAgICAgICAgICAgc2NyaXB0X2NvdW50ID0g c2NyaXB0X2NvdW50ICsgMQorKyAgICAgICAgICBlbmQKKysgICAgICAgIGVsc2UKKysgICAgICAg ICAgZW5zdXJlX2xpYl9pbl9zZWFyY2hfcGF0aChsaW5lKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgLS0gYnV0IGxldCdzIG1ha2Ugc3VyZSBsaWJyYXJpZXMgY2FuIGJlIGZvdW5kCisrICAg ICAgICBlbmQKKysgICAgICBlbmQKKysgICAgZW5kCisrICBlbmQKKysKKysgIHJlc3RvcmVfbG9n X2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrICByZXR1cm4gc2NyaXB0X2NvdW50CisrZW5kCisrCisr bG9jYWwgZnVuY3Rpb24gdXBkYXRlX3NjcmlwdHMoKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9 IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKyAgbG9jYWwgcmVzdWx0ID0gZmFsc2UKKysK KysgIGxvY2FsIGdpdCA9IHNtLmV4ZWN1dGFibGVzLmdpdAorKworKyAgaWYgbm90IGdpdCB0aGVu CisrICAgIGxvZy5tc2cobG9nLnNjcmVlbiwgXygiRVJST1I6IGdpdCBub3QgZm91bmQuICBJbnN0 YWxsIG9yIHNwZWNpZnkgdGhlIGxvY2F0aW9uIG9mIHRoZSBnaXQgZXhlY3V0YWJsZS4iKSkKKysg ICAgcmV0dXJuCisrICBlbmQKKysKKysgIGxvY2FsIGdpdF9jb21tYW5kID0gImNkICIgLi4gTFVB X0RJUiAuLiAiICIgLi4gQ1MgLi4gIiAiIC4uIGdpdCAuLiAiIHB1bGwiCisrICBsb2cubXNnKGxv Zy5kZWJ1ZywgInVwZGF0ZSBnaXQgY29tbWFuZCBpcyAiIC4uIGdpdF9jb21tYW5kKQorKworKyAg aWYgZHQuY29uZmlndXJhdGlvbi5ydW5uaW5nX29zID09ICJ3aW5kb3dzIiB0aGVuCisrICAgIHJl c3VsdCA9IGR0c3lzLndpbmRvd3NfY29tbWFuZChnaXRfY29tbWFuZCkKKysgIGVsc2UKKysgICAg cmVzdWx0ID0gb3MuZXhlY3V0ZShnaXRfY29tbWFuZCkKKysgIGVuZAorKworKyAgaWYgcmVzdWx0 ID09IDAgdGhlbgorKyAgICBsb2cubXNnKGxvZy5zY3JlZW4sIF8oImx1YSBzY3JpcHRzIHN1Y2Nl c3NmdWxseSB1cGRhdGVkIikpCisrICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9s b2dfbGV2ZWwpCisrICByZXR1cm4gcmVzdWx0CisrZW5kCisrCisrLS0tLS0tLS0tLS0tLS0KKyst LSBVSSBoYW5kbGluZworKy0tLS0tLS0tLS0tLS0tCisrCisrbG9jYWwgZnVuY3Rpb24gdXBkYXRl X3NjcmlwdF91cGRhdGVfY2hvaWNlcygpCisrICBsb2NhbCBvbGRfbG9nX2xldmVsID0gc2V0X2xv Z19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBsb2NhbCBpbnN0YWxscyA9IHt9CisrICBsb2Nh bCBwcmVmX3N0cmluZyA9ICIiCisrCisrICBmb3IgaSwgcmVwbyBpbiBpcGFpcnMoc20uaW5zdGFs bGVkX3JlcG9zaXRvcmllcykgZG8KKysgICAgdGFibGUuaW5zZXJ0KGluc3RhbGxzLCByZXBvLm5h bWUpCisrICAgIGlmIG5vdCBzdHJpbmcubWF0Y2gocHJlZl9zdHJpbmcsIGRzLnNhbml0aXplX2x1 YShyZXBvLm5hbWUpKSB0aGVuCisrICAgICAgcHJlZl9zdHJpbmcgPSBwcmVmX3N0cmluZyAuLiBp IC4uICIsIiAuLiByZXBvLm5hbWUgLi4gIiwiIC4uIHJlcG8uZGlyZWN0b3J5IC4uICIsIgorKyAg ICBlbmQKKysgIGVuZAorKworKyAgdXBkYXRlX2NvbWJvYm94X2Nob2ljZXMoc20ud2lkZ2V0cy51 cGRhdGVfc2NyaXB0X2Nob2ljZXMsIGluc3RhbGxzLCAxKQorKworKyAgbG9nLm1zZyhsb2cuZGVi dWcsICJyZXBvIHByZWYgc3RyaW5nIGlzICIgLi4gcHJlZl9zdHJpbmcpCisrICBwcmVmX3dyaXRl KCJpbnN0YWxsZWRfcmVwb3MiLCAic3RyaW5nIiwgcHJlZl9zdHJpbmcpCisrCisrICByZXN0b3Jl X2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIHNjYW5f cmVwb3NpdG9yaWVzKCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNt LmxvZ19sZXZlbCkKKysKKysgIGxvY2FsIHNjcmlwdF9jb3VudCA9IDAKKysgIGxvY2FsIGZpbmRf Y21kID0gImZpbmQgLUwgIiAuLiBMVUFfRElSIC4uICIgLW5hbWUgXFwqLmdpdCAtcHJpbnQgfCBz b3J0IgorKworKyAgaWYgZHQuY29uZmlndXJhdGlvbi5ydW5uaW5nX29zID09ICJ3aW5kb3dzIiB0 aGVuCisrICAgIGZpbmRfY21kID0gImRpciAvYi9zIC9hOmQgIiAuLiBMVUFfRElSIC4uIFBTIC4u ICIqLmdpdCAyPm51bCB8IHNvcnQiCisrICBlbmQKKysKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAi ZmluZCBjb21tYW5kIGlzICIgLi4gZmluZF9jbWQpCisrCisrICBsb2NhbCBvdXRwdXQgPSBpby5w b3BlbihmaW5kX2NtZCkKKysKKysgIGZvciBsaW5lIGluIG91dHB1dDpsaW5lcygpIGRvCisrICAg IGxvY2FsIGwgPSBzdHJpbmcuZ3N1YihsaW5lLCBkcy5zYW5pdGl6ZV9sdWEoTFVBX0RJUikgLi4g UFMsICIiKSAgIC0tIHN0cmlwIHRoZSBsdWEgZGlyIG9mZgorKyAgICBsb2NhbCBmb2xkZXIgPSBz dHJpbmcubWF0Y2gobCwgIiguLSkiIC4uIFBTKSAgICAgICAgICAgICAgICAgICAgICAgIC0tIGdl dCBldmVyeXRoaW5nIHRvIHRoZSBmaXJzdCAvCisrCisrICAgIGlmIGZvbGRlciB0aGVuICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGlmIHdlIGhhdmUg YSBmb2xkZXIgKC5naXQgZG9lc24ndCkKKysKKysgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImZv dW5kIGZvbGRlciAiIC4uIGZvbGRlcikKKysKKysgICAgICBpZiBub3Qgc3RyaW5nLm1hdGNoKGZv bGRlciwgInBsdWdpbnMiKSBhbmQgbm90IHN0cmluZy5tYXRjaChmb2xkZXIsICIlLmdpdCIpIHRo ZW4gLS0gc2tpcCBwbHVnaW5zCisrCisrICAgICAgICBpZiAjc20uaW5zdGFsbGVkX3JlcG9zaXRv cmllcyA9PSAxIHRoZW4KKysgICAgICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJvbmx5IDEgcmVw bywgYWRkaW5nICIgLi4gZm9sZGVyKQorKyAgICAgICAgICB0YWJsZS5pbnNlcnQoc20uaW5zdGFs bGVkX3JlcG9zaXRvcmllcywge25hbWUgPSBmb2xkZXIsIGRpcmVjdG9yeSA9IExVQV9ESVIgLi4g UFMgLi4gZm9sZGVyfSkKKysgICAgICAgIGVsc2UKKysgICAgICAgICAgbG9nLm1zZyhsb2cuZGVi dWcsICJtb3JlIHRoYW4gMSByZXBvLCB3ZSBoYXZlIHRvIHNlYXJjaCB0aGUgcmVwb3MgdG8gbWFr ZSBzdXJlIGl0J3Mgbm90IHRoZXJlIikKKysgICAgICAgICAgbG9jYWwgZm91bmQgPSBuaWwKKysK KysgICAgICAgICAgZm9yIF8sIHJlcG8gaW4gaXBhaXJzKHNtLmluc3RhbGxlZF9yZXBvc2l0b3Jp ZXMpIGRvCisrICAgICAgICAgICAgaWYgc3RyaW5nLm1hdGNoKHJlcG8ubmFtZSwgZHMuc2FuaXRp emVfbHVhKGZvbGRlcikpIHRoZW4KKysgICAgICAgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAi bWF0Y2hlZCAiIC4uIHJlcG8ubmFtZSkKKysgICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZQorKyAg ICAgICAgICAgICAgYnJlYWsKKysgICAgICAgICAgICBlbmQKKysgICAgICAgICAgZW5kCisrCisr ICAgICAgICAgIGlmIG5vdCBmb3VuZCB0aGVuCisrICAgICAgICAgICAgdGFibGUuaW5zZXJ0KHNt Lmluc3RhbGxlZF9yZXBvc2l0b3JpZXMsIHtuYW1lID0gZm9sZGVyLCBkaXJlY3RvcnkgPSBMVUFf RElSIC4uIFBTIC4uIGZvbGRlcn0pCisrICAgICAgICAgIGVuZAorKworKyAgICAgICAgZW5kCisr ICAgICAgZW5kCisrICAgIGVuZAorKyAgZW5kCisrCisrICB1cGRhdGVfc2NyaXB0X3VwZGF0ZV9j aG9pY2VzKCkKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5kCisr CisrbG9jYWwgZnVuY3Rpb24gaW5zdGFsbF9zY3JpcHRzKCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2 ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysgIGxvY2FsIHVybCA9IHNtLndp ZGdldHMuc2NyaXB0X3VybC50ZXh0CisrICBsb2NhbCBmb2xkZXIgPSBzbS53aWRnZXRzLm5ld19m b2xkZXIudGV4dAorKworKyAgaWYgbm90IGRmLnRlc3RfZmlsZShVU0VSX0xVQV9ESVIsICJkIikg dGhlbgorKyAgICBkZi5ta2RpcihVU0VSX0xVQV9ESVIpCisrICAgIGlmIG5vdCBkZi50ZXN0X2Zp bGUoVVNFUl9MVUFfRElSLCAiZCIpIHRoZW4KKysgICAgICBsb2cubXNnKGxvZy5lcnJvciwgInVu YWJsZSB0byBjcmVhdGUgdXNlciBsdWEgZGlyZWN0b3J5IikKKysgICAgICBsb2cubXNnKGxvZy5z Y3JlZW4sIF8oInVuYWJsZSB0byBjcmVhdGUgdXNlciBsdWEgZGlyZWN0b3J5LCBpbnN0YWxsaW5n IGFkZGl0aW9uYWwgc2NyaXB0cyBmYWlsZWQiKSkKKysgICAgICByZXR1cm4KKysgICAgZW5kCisr ICBlbmQKKysKKysgIGlmIHN0cmluZy5tYXRjaChkdS5qb2luKHNtLmZvbGRlcnMsICIgIiksIGRz LnNhbml0aXplX2x1YShmb2xkZXIpKSB0aGVuCisrICAgIGxvZy5tc2cobG9nLnNjcmVlbiwgc3Ry aW5nLmZvcm1hdChfKCJmb2xkZXIgJXMgaXMgYWxyZWFkeSBpbiB1c2UuIFBsZWFzZSBzcGVjaWZ5 IGEgZGlmZmVyZW50IGZvbGRlciBuYW1lLiIpLCBmb2xkZXIpKQorKyAgICBsb2cubXNnKGxvZy5l cnJvciwgImZvbGRlciAiIC4uIGZvbGRlciAuLiAiIGFscmVhZHkgZXhpc3RzLCByZXR1cm5pbmcu Li4iKQorKyAgICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorKyAgICByZXR1cm4K KysgIGVuZAorKworKyAgbG9jYWwgcmVzdWx0ID0gZmFsc2UKKysKKysgIGxvY2FsIGdpdCA9IHNt LmV4ZWN1dGFibGVzLmdpdAorKworKyAgaWYgbm90IGdpdCB0aGVuCisrICAgIGxvZy5tc2cobG9n LnNjcmVlbiwgXygiRVJST1I6IGdpdCBub3QgZm91bmQuICBJbnN0YWxsIG9yIHNwZWNpZnkgdGhl IGxvY2F0aW9uIG9mIHRoZSBnaXQgZXhlY3V0YWJsZS4iKSkKKysgICAgcmVzdG9yZV9sb2dfbGV2 ZWwob2xkX2xvZ19sZXZlbCkKKysgICAgcmV0dXJuCisrICBlbmQKKysKKysgIGxvY2FsIGdpdF9j b21tYW5kID0gImNkICIgLi4gVVNFUl9MVUFfRElSIC4uICIgIiAuLiBDUyAuLiAiICIgLi4gZ2l0 IC4uICIgY2xvbmUgIiAuLiB1cmwgLi4gIiAiIC4uIGZvbGRlcgorKyAgbG9nLm1zZyhsb2cuZGVi dWcsICJ1cGRhdGUgZ2l0IGNvbW1hbmQgaXMgIiAuLiBnaXRfY29tbWFuZCkKKysKKysgIGlmIGR0 LmNvbmZpZ3VyYXRpb24ucnVubmluZ19vcyA9PSAid2luZG93cyIgdGhlbgorKyAgICByZXN1bHQg PSBkdHN5cy53aW5kb3dzX2NvbW1hbmQoZ2l0X2NvbW1hbmQpCisrICBlbHNlCisrICAgIHJlc3Vs dCA9IGR0c3lzLmV4dGVybmFsX2NvbW1hbmQoZ2l0X2NvbW1hbmQpCisrICBlbmQKKysKKysgIGxv Zy5tc2cobG9nLmluZm8sICJyZXN1bHQgZnJvbSBpbXBvcnQgaXMgIiAuLiByZXN1bHQpCisrCisr ICBpZiByZXN1bHQgPT0gMCB0aGVuCisrICAgIGxvY2FsIGNvdW50ID0gc2Nhbl9zY3JpcHRzKFVT RVJfTFVBX0RJUikKKysKKysgICAgaWYgY291bnQgPiAwIHRoZW4KKysgICAgICB1cGRhdGVfY29t Ym9ib3hfY2hvaWNlcyhzbS53aWRnZXRzLmZvbGRlcl9zZWxlY3Rvciwgc20uZm9sZGVycywgc20u d2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3Iuc2VsZWN0ZWQpCisrICAgICAgZHQucHJpbnQoc3RyaW5n LmZvcm1hdChfKCJzY3JpcHRzIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgaW50byBmb2xkZXIgJXMi KSwgZm9sZGVyKSkKKysgICAgICB0YWJsZS5pbnNlcnQoc20uaW5zdGFsbGVkX3JlcG9zaXRvcmll cywge25hbWUgPSBmb2xkZXIsIGRpcmVjdG9yeSA9IFVTRVJfTFVBX0RJUiAuLiBQUyAuLiBmb2xk ZXJ9KQorKyAgICAgIHVwZGF0ZV9zY3JpcHRfdXBkYXRlX2Nob2ljZXMoKQorKworKyAgICAgIGZv ciBpID0gMSwgI3NtLndpZGdldHMuZm9sZGVyX3NlbGVjdG9yIGRvCisrICAgICAgICBpZiBzdHJp bmcubWF0Y2goc20ud2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3JbaV0sIGRzLnNhbml0aXplX2x1YShm b2xkZXIpKSB0aGVuCisrICAgICAgICAgIGxvZy5tc2cobG9nLmRlYnVnLCAic2V0dGluZyBmb2xk ZXIgc2VsZWN0b3IgdG8gIiAuLiBpKQorKyAgICAgICAgICBzbS53aWRnZXRzLmZvbGRlcl9zZWxl Y3Rvci5zZWxlY3RlZCA9IGkKKysgICAgICAgICAgYnJlYWsKKysgICAgICAgIGVuZAorKyAgICAg ICAgaSA9IGkgKyAxCisrICAgICAgZW5kCisrCisrICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJj bGVhcmluZyB0ZXh0IGZpZWxkcyIpCisrICAgICAgc20ud2lkZ2V0cy5zY3JpcHRfdXJsLnRleHQg PSAiIgorKyAgICAgIHNtLndpZGdldHMubmV3X2ZvbGRlci50ZXh0ID0gIiIKKysgICAgICBzbS53 aWRnZXRzLm1haW5fbWVudS5zZWxlY3RlZCA9IDMKKysgICAgZWxzZQorKyAgICAgIGxvZy5tc2co bG9nLnNjcmVlbiwgXygibm8gc2NyaXB0cyBmb3VuZCB0byBpbnN0YWxsIikpCisrICAgICAgbG9n Lm1zZyhsb2cuZXJyb3IsICJzY2FuX3NjcmlwdHMgcmV0dXJuZWQgIiAuLiBjb3VudCAuLiAiIHNj cmlwdHMgZm91bmQuICBOb3QgYWRkaW5nIHRvIGZvbGRlcl9zZWxlY3RvciIpCisrICAgIGVuZAor KworKyAgZWxzZQorKyAgICBsb2cubXNnKGxvZy5zY3JlZW4sIF8oImZhaWxlZCB0byBkb3dubG9h ZCBzY3JpcHRzIikpCisrICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2 ZWwpCisrICByZXR1cm4gcmVzdWx0CisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gY2xlYXJfYnV0 dG9uKG51bWJlcikKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxv Z19sZXZlbCkKKysKKysgIGxvY2FsIGJ1dHRvbiA9IHNtLndpZGdldHMuYnV0dG9uc1tudW1iZXJd CisrICBsb2NhbCBsYWJlbCA9IHNtLndpZGdldHMubGFiZWxzW251bWJlcl0KKysKKysgIGJ1dHRv bi5pbWFnZSA9IEJMQU5LX0lDT04KKysgIGJ1dHRvbi50b29sdGlwID0gIiIKKysgIGJ1dHRvbi5z ZW5zaXRpdmUgPSBmYWxzZQorKyAgbGFiZWwubGFiZWwgPSAiIgorKyAgYnV0dG9uLm5hbWUgPSAi IgorKworKyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKytsb2Nh bCBmdW5jdGlvbiBmaW5kX3NjcmlwdChmb2xkZXIsIG5hbWUpCisrICBsb2NhbCBvbGRfbG9nX2xl dmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICBsb2cubXNnKGxvZy5kZWJ1 ZywgImxvb2tpbmcgZm9yIHNjcmlwdCAiIC4uIG5hbWUgLi4gIiBpbiBmb2xkZXIgIiAuLiBmb2xk ZXIpCisrCisrICBmb3IgXywgc2NyaXB0IGluIGlwYWlycyhzbS5zY3JpcHRzW2ZvbGRlcl0pIGRv CisrICAgIGlmIHN0cmluZy5tYXRjaChzY3JpcHQubmFtZSwgIl4iIC4uIGRzLnNhbml0aXplX2x1 YShuYW1lKSAuLiAiJCIpIHRoZW4KKysgICAgICByZXR1cm4gc2NyaXB0CisrICAgIGVuZAorKyAg ZW5kCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRfbG9nX2xldmVsKQorKyAgcmV0dXJuIG5p bAorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIHBvcHVsYXRlX2J1dHRvbnMoZm9sZGVyLCBmaXJz dCwgbGFzdCkKKysgIGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19s ZXZlbCkKKysKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAiZm9sZGVyIGlzICIgLi4gZm9sZGVyIC4u ICIgYW5kIGZpcnN0IGlzICIgLi4gZmlyc3QgLi4gIiBhbmQgbGFzdCBpcyAiIC4uIGxhc3QpCisr CisrICBsb2NhbCBidXR0b25fbnVtID0gMQorKworKyAgZm9yIGkgPSBmaXJzdCwgbGFzdCBkbwor KyAgICBsb2NhbCBzY3JpcHQgPSBzbS5zY3JpcHRzW2ZvbGRlcl1baV0KKysgICAgbG9jYWwgYnV0 dG9uID0gc20ud2lkZ2V0cy5idXR0b25zW2J1dHRvbl9udW1dCisrICAgIGxvY2FsIGxhYmVsID0g c20ud2lkZ2V0cy5sYWJlbHNbYnV0dG9uX251bV0KKysKKysgICAgaWYgc2NyaXB0LnJ1bm5pbmcg PT0gdHJ1ZSB0aGVuCisrICAgICAgYnV0dG9uLm5hbWUgPSAicGJfb24iCisrICAgIGVsc2UKKysg ICAgICBidXR0b24ubmFtZSA9ICJwYl9vZmYiCisrICAgIGVuZAorKworKyAgICBidXR0b24uaW1h Z2UgPSBQT1dFUl9JQ09OCisrICAgIGxhYmVsLmxhYmVsID0gc2NyaXB0Lm1ldGFkYXRhIGFuZCBz Y3JpcHQubWV0YWRhdGEubmFtZSBvciBzY3JpcHQubmFtZQorKyAgICBsYWJlbC5uYW1lID0gInBi X2xhYmVsIgorKyAgICBidXR0b24uZWxsaXBzaXplID0gImVuZCIKKysgICAgYnV0dG9uLnNlbnNp dGl2ZSA9IHRydWUKKysgICAgbGFiZWwudG9vbHRpcCA9IHNjcmlwdC5tZXRhZGF0YSBhbmQgc2Ny aXB0Lm1ldGFkYXRhLnB1cnBvc2Ugb3Igc2NyaXB0LmRvYworKworKyAgICBidXR0b24uY2xpY2tl ZF9jYWxsYmFjayA9IGZ1bmN0aW9uICh0aGlzKQorKyAgICAgIGxvY2FsIGNiX3NjcmlwdCA9IHNj cmlwdAorKyAgICAgIGxvY2FsIHN0YXRlID0gbmlsCisrICAgICAgaWYgY2Jfc2NyaXB0IHRoZW4g CisrICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImZvdW5kIHNjcmlwdCAiIC4uIGNiX3Njcmlw dC5uYW1lIC4uICIgd2l0aCBwYXRoICIgLi4gY2Jfc2NyaXB0LnBhdGgpCisrICAgICAgICBpZiBj Yl9zY3JpcHQucnVubmluZyA9PSB0cnVlIHRoZW4KKysgICAgICAgICAgbG9nLm1zZyhsb2cuZGVi dWcsICJkZWFjdGl2YXRpbmcgIiAuLiBjYl9zY3JpcHQubmFtZSAuLiAiIG9uICIgLi4gY2Jfc2Ny aXB0LnBhdGgpCisrICAgICAgICAgIGRlYWN0aXZhdGUoY2Jfc2NyaXB0KQorKyAgICAgICAgICB0 aGlzLm5hbWUgPSAicGJfb2ZmIgorKyAgICAgICAgZWxzZQorKyAgICAgICAgICBsb2cubXNnKGxv Zy5kZWJ1ZywgImFjdGl2YXRpbmcgIiAuLiBjYl9zY3JpcHQubmFtZSAuLiAiIG9uICIgLi4gc2Ny aXB0LnBhdGgpCisrICAgICAgICAgIGxvY2FsIHJlc3VsdCA9IGFjdGl2YXRlKGNiX3NjcmlwdCkK KysgICAgICAgICAgaWYgcmVzdWx0IHRoZW4KKysgICAgICAgICAgICB0aGlzLm5hbWUgPSAicGJf b24iCisrICAgICAgICAgIGVuZAorKyAgICAgICAgZW5kCisrICAgICAgZW5kCisrICAgIGVuZAor KworKyAgICBidXR0b25fbnVtID0gYnV0dG9uX251bSArIDEKKysgIGVuZAorKworKyAgbG9nLm1z Zyhsb2cuZGVidWcsICJidXR0b24gbnVtIGlzICIgLi4gYnV0dG9uX251bSAuLiAiIGFuZCBudW1f YnV0dG9ucyBpcyAiIC4uIHNtLnBhZ2Vfc3RhdHVzLm51bV9idXR0b25zKQorKyAgaWYgYnV0dG9u X251bSA8PSBzbS5wYWdlX3N0YXR1cy5udW1fYnV0dG9ucyB0aGVuCisrICAgIGZvciBpID0gYnV0 dG9uX251bSwgc20ucGFnZV9zdGF0dXMubnVtX2J1dHRvbnMgZG8KKysgICAgICBjbGVhcl9idXR0 b24oaSkKKysgICAgZW5kCisrICBlbmQKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2df bGV2ZWwpCisrZW5kCisrCisrbG9jYWwgZnVuY3Rpb24gcGFnaW5hdGUoZGlyZWN0aW9uKQorKyAg bG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKworKyAg bG9jYWwgZm9sZGVyID0gc20ucGFnZV9zdGF0dXMuZm9sZGVyCisrICBsb2cubXNnKGxvZy5kZWJ1 ZywgImZvbGRlciBpcyAiIC4uIGZvbGRlcikKKysKKysgIGxvY2FsIG51bV9zY3JpcHRzID0gI3Nt LnNjcmlwdHNbZm9sZGVyXQorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJudW1fc2NyaXB0cyBpcyAi IC4uIG51bV9zY3JpcHRzKQorKworKyAgbG9jYWwgbWF4X3BhZ2VzID0gbWF0aC5jZWlsKG51bV9z Y3JpcHRzIC8gc20ucGFnZV9zdGF0dXMubnVtX2J1dHRvbnMpCisrCisrICBsb2NhbCBjdXJfcGFn ZSA9IHNtLnBhZ2Vfc3RhdHVzLmN1cnJlbnRfcGFnZQorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJt YXggcGFnZXMgaXMgIiAuLiBtYXhfcGFnZXMpCisrCisrICBsb2NhbCBidXR0b25zX25lZWRlZCA9 IG5pbAorKyAgbG9jYWwgZmlyc3QgPSBuaWwKKysgIGxvY2FsIGxhc3QgPSBuaWwKKysKKysgIGlm IGRpcmVjdGlvbiA9PSAwIHRoZW4KKysgICAgY3VyX3BhZ2UgPSBjdXJfcGFnZSAtIDEKKysgICAg aWYgY3VyX3BhZ2UgPCAxIHRoZW4KKysgICAgICBjdXJfcGFnZSA9IDEKKysgICAgZW5kCisrICBl bHNlaWYgZGlyZWN0aW9uID09IDEgdGhlbgorKyAgICBjdXJfcGFnZSA9IGN1cl9wYWdlICsgMQor KyAgICBpZiBjdXJfcGFnZSA+IG1heF9wYWdlcyB0aGVuCisrICAgICAgY3VyX3BhZ2UgPSBtYXhf cGFnZXMKKysgICAgZW5kCisrICBlbHNlCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAidG9vayBw YXRoIDIiKQorKyAgICBjdXJfcGFnZSA9IDEKKysgIGVuZAorKworKyAgbG9nLm1zZyhsb2cuZGVi dWcsICJjdXJfcGFnZSBpcyAiIC4uIGN1cl9wYWdlIC4uICIgYW5kIG1heF9wYWdlcyBpcyAiIC4u IG1heF9wYWdlcykKKysKKysgIGlmIGN1cl9wYWdlID09IG1heF9wYWdlcyBhbmQgY3VyX3BhZ2Ug PT0gMSB0aGVuCisrICAgIHNtLndpZGdldHMucGFnZV9mb3J3YXJkLnNlbnNpdGl2ZSA9IGZhbHNl CisrICAgIHNtLndpZGdldHMucGFnZV9iYWNrLnNlbnNpdGl2ZSA9IGZhbHNlCisrICBlbHNlaWYg Y3VyX3BhZ2UgPT0gbWF4X3BhZ2VzIHRoZW4KKysgICAgc20ud2lkZ2V0cy5wYWdlX2ZvcndhcmQu c2Vuc2l0aXZlID0gZmFsc2UKKysgICAgc20ud2lkZ2V0cy5wYWdlX2JhY2suc2Vuc2l0aXZlID0g dHJ1ZQorKyAgZWxzZWlmIGN1cl9wYWdlID09IDEgdGhlbgorKyAgICBzbS53aWRnZXRzLnBhZ2Vf Zm9yd2FyZC5zZW5zaXRpdmUgPSB0cnVlCisrICAgIHNtLndpZGdldHMucGFnZV9iYWNrLnNlbnNp dGl2ZSA9IGZhbHNlCisrICBlbHNlCisrICAgIHNtLndpZGdldHMucGFnZV9mb3J3YXJkLnNlbnNp dGl2ZSA9IHRydWUKKysgICAgc20ud2lkZ2V0cy5wYWdlX2JhY2suc2Vuc2l0aXZlID0gdHJ1ZQor KyAgZW5kCisrCisrICBzbS5wYWdlX3N0YXR1cy5jdXJyZW50X3BhZ2UgPSBjdXJfcGFnZQorKwor KyAgZmlyc3QgPSAoY3VyX3BhZ2UgKiBzbS5wYWdlX3N0YXR1cy5udW1fYnV0dG9ucykgLSAoc20u cGFnZV9zdGF0dXMubnVtX2J1dHRvbnMgLSAxKQorKworKyAgaWYgZmlyc3QgKyBzbS5wYWdlX3N0 YXR1cy5udW1fYnV0dG9ucyA+IG51bV9zY3JpcHRzIHRoZW4KKysgICAgbGFzdCA9IG51bV9zY3Jp cHRzCisrICBlbHNlCisrICAgIGxhc3QgPSBmaXJzdCArIHNtLnBhZ2Vfc3RhdHVzLm51bV9idXR0 b25zIC0gMQorKyAgZW5kCisrCisrICBzbS53aWRnZXRzLnBhZ2Vfc3RhdHVzLmxhYmVsID0gc3Ry aW5nLmZvcm1hdChfKCJwYWdlICVkIG9mICVkIiksIGN1cl9wYWdlLCBtYXhfcGFnZXMpCisrCisr ICBwb3B1bGF0ZV9idXR0b25zKGZvbGRlciwgZmlyc3QsIGxhc3QpCisrCisrICByZXN0b3JlX2xv Z19sZXZlbChvbGRfbG9nX2xldmVsKQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGNoYW5nZV9m b2xkZXIoZm9sZGVyKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9sb2dfbGV2ZWwoc20u bG9nX2xldmVsKQorKworKyAgaWYgbm90IGZvbGRlciB0aGVuCisrICAgIGxvZy5tc2cobG9nLmRl YnVnICJzZXR0aW5nIGZvbGRlciB0byBzZWxlY3RvciB2YWx1ZSAiIC4uICBzbS53aWRnZXRzLmZv bGRlcl9zZWxlY3Rvci52YWx1ZSkKKysgICAgc20ucGFnZV9zdGF0dXMuZm9sZGVyID0gc20ud2lk Z2V0cy5mb2xkZXJfc2VsZWN0b3IudmFsdWUKKysgIGVsc2UKKysgICAgbG9nLm1zZyhsb2cuZGVi dWcsICJzZXR0aW5nIGNhdGdvcnkgdG8gYXJndW1lbnQgIiAuLiBmb2xkZXIpCisrICAgIHNtLnBh Z2Vfc3RhdHVzLmZvbGRlciA9IGZvbGRlcgorKyAgZW5kCisrCisrICBwYWdpbmF0ZSgyKQorKwor KyAgcmVzdG9yZV9sb2dfbGV2ZWwob2xkX2xvZ19sZXZlbCkKKytlbmQKKysKKytsb2NhbCBmdW5j dGlvbiBjaGFuZ2VfbnVtX2J1dHRvbnMoKQorKyAgbG9jYWwgb2xkX2xvZ19sZXZlbCA9IHNldF9s b2dfbGV2ZWwoc20ubG9nX2xldmVsKQorKworKyAgY3VyX2J1dHRvbnMgPSBzbS5wYWdlX3N0YXR1 cy5udW1fYnV0dG9ucworKyAgbmV3X2J1dHRvbnMgPSBzbS53aWRnZXRzLm51bV9idXR0b25zLnZh bHVlCisrCisrICBwcmVmX3dyaXRlKCJudW1fYnV0dG9ucyIsICJpbnRlZ2VyIiwgbmV3X2J1dHRv bnMpCisrCisrICBpZiBuZXdfYnV0dG9ucyA8IGN1cl9idXR0b25zIHRoZW4KKysgICAgbG9nLm1z Zyhsb2cuZGVidWcsICJ0b29rIG5ldyBpcyBsZXNzIHRoYW4gY3VycmVudCBicmFuY2giKQorKwor KyAgICBmb3IgaSA9IDEsIGN1cl9idXR0b25zIC0gbmV3X2J1dHRvbnMgZG8KKysgICAgICB0YWJs ZS5yZW1vdmUoc20ud2lkZ2V0cy5zY3JpcHRzKQorKyAgICBlbmQKKysKKysgICAgbG9nLm1zZyhs b2cuZGVidWcsICJmaW5pc2hlZCByZW1vdmluZyB3aWRnZXRzLCBub3cgdGhlcmUgYXJlICIgLi4g I3NtLndpZGdldHMuYnV0dG9ucykKKysgIGVsc2VpZiBuZXdfYnV0dG9ucyA+IGN1cl9idXR0b25z IHRoZW4KKysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJ0b29rIG5ldyBpcyBncmVhdGVyIHRoYW4g Y3VycmVudCBicmFuY2giKQorKyAgICBsb2cubXNnKGxvZy5kZWJ1ZywgIm51bWJlciBvZiBzY3Jp cHRzIGlzICIgLi4gI3NtLndpZGdldHMuc2NyaXB0cykKKysgICAgbG9nLm1zZyhsb2cuZGVidWcs ICJudW1iZXIgb2YgYnV0dG9ucyBpcyAiIC4uICNzbS53aWRnZXRzLmJ1dHRvbnMpCisrICAgIGxv Zy5tc2cobG9nLmRlYnVnLCAibnVtYmVyIG9mIGxhYmVscyBpcyAiIC4uICNzbS53aWRnZXRzLmxh YmVscykKKysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJudW1iZXIgb2YgYm94ZXMgaXMgIiAuLiAj c20ud2lkZ2V0cy5ib3hlcykKKysKKysgICAgaWYgbmV3X2J1dHRvbnMgPiBzbS5wYWdlX3N0YXR1 cy5idXR0b25zX2NyZWF0ZWQgdGhlbgorKworKyAgICAgIGZvciBpID0gc20ucGFnZV9zdGF0dXMu YnV0dG9uc19jcmVhdGVkICsgMSwgbmV3X2J1dHRvbnMgZG8KKysgICAgICAgIGxvZy5tc2cobG9n LmRlYnVnLCAiaSBpcyAiIC4uIGkpCisrICAgICAgICB0YWJsZS5pbnNlcnQoc20ud2lkZ2V0cy5i dXR0b25zLCBkdC5uZXdfd2lkZ2V0KCJidXR0b24iKXt9KQorKyAgICAgICAgbG9nLm1zZyhsb2cu ZGVidWcsICJpbnNlcnRlZCBuZXcgYnV0dG9uIikKKysgICAgICAgIGxvZy5tc2cobG9nLmRlYnVn LCAibnVtYmVyIG9mIGJ1dHRvbnMgaXMgIiAuLiAjc20ud2lkZ2V0cy5idXR0b25zKQorKyAgICAg ICAgdGFibGUuaW5zZXJ0KHNtLndpZGdldHMubGFiZWxzLCBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIp e30pCisrICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImluc2VydGVkIG5ldyBsYWJlbCIpCisr ICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgIm51bWJlciBvZiBsYWJlbHMgaXMgIiAuLiAjc20u d2lkZ2V0cy5sYWJlbHMpCisrICAgICAgICB0YWJsZS5pbnNlcnQoc20ud2lkZ2V0cy5ib3hlcywg ZHQubmV3X3dpZGdldCgiYm94Iil7IG9yaWVudGF0aW9uID0gImhvcml6b250YWwiLCBleHBhbmQg PSBmYWxzZSwgZmlsbCA9IGZhbHNlLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc20ud2lkZ2V0cy5idXR0b25zW2ldLCBzbS53aWRnZXRz LmxhYmVsc1tpXX0pCisrICAgICAgICBsb2cubXNnKGxvZy5kZWJ1ZywgImluc2VydGVkIG5ldyBi b3giKQorKyAgICAgICAgc20ucGFnZV9zdGF0dXMuYnV0dG9uc19jcmVhdGVkID0gc20ucGFnZV9z dGF0dXMuYnV0dG9uc19jcmVhdGVkICsgMQorKyAgICAgIGVuZAorKworKyAgICBlbmQKKysKKysg ICAgbG9nLm1zZyhsb2cuZGVidWcsICJjdXJfYnV0dG9ucyBpcyAiIC4uIGN1cl9idXR0b25zIC4u ICIgYW5kIG5ld19idXR0b25zIGlzICIgLi4gbmV3X2J1dHRvbnMpCisrICAgIGxvZy5tc2cobG9n LmRlYnVnLCAjc20ud2lkZ2V0cy5idXR0b25zIC4uICIgYnV0dG9ucyBhcmUgYXZhaWxhYmxlIikK KysKKysgICAgZm9yIGkgPSBjdXJfYnV0dG9ucyArIDEsIG5ld19idXR0b25zIGRvCisrICAgICAg bG9nLm1zZyhsb2cuZGVidWcsICJpbnNlcnRpbmcgYnV0dG9uICIgLi4gaSAuLiAiIGludG8gc2Ny aXB0cyB3aWRnZXQiKQorKyAgICAgIHRhYmxlLmluc2VydChzbS53aWRnZXRzLnNjcmlwdHMsIHNt LndpZGdldHMuYm94ZXNbaV0pCisrICAgIGVuZAorKworKyAgICBsb2cubXNnKGxvZy5kZWJ1Zywg ImZpbmlzaGVkIGFkZGluZyB3aWRnZXRzLCBub3cgdGhlcmUgYXJlICIgLi4gI3NtLndpZGdldHMu YnV0dG9ucykKKysgIGVsc2UgLS0gbm8gY2hhbmdlCisrICAgIGxvZy5tc2cobG9nLmRlYnVnLCAi bm8gY2hhbmdlLCBqdXN0IHJldHVybmluZyIpCisrICAgIHJldHVybgorKyAgZW5kCisrCisrICBz bS5wYWdlX3N0YXR1cy5udW1fYnV0dG9ucyA9IG5ld19idXR0b25zCisrICBsb2cubXNnKGxvZy5k ZWJ1ZywgIm51bV9idXR0b25zIHNldCB0byAiIC4uIHNtLnBhZ2Vfc3RhdHVzLm51bV9idXR0b25z KQorKyAgcGFnaW5hdGUoMikgLS0gZm9yY2UgdGhlIGJ1dHRvbnMgdG8gcmVwb3B1bGF0ZQorKyAg c20ud2lkZ2V0cy5tYWluX21lbnUuc2VsZWN0ZWQgPSAzIC0tIGp1bXAgYmFjayB0byBzdGFydC9z dG9wIHNjcmlwdHMKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9sZF9sb2dfbGV2ZWwpCisrZW5k CisrCisrbG9jYWwgZnVuY3Rpb24gbG9hZF9wcmVmZXJlbmNlcygpCisrICBsb2NhbCBvbGRfbG9n X2xldmVsID0gc2V0X2xvZ19sZXZlbChzbS5sb2dfbGV2ZWwpCisrCisrICAtLSBsb2FkIHRoZSBw cmVmcyBhbmQgdXBkYXRlIHNldHRpbmdzCisrICAtLSB1cGRhdGVfc2NyaXB0X2Nob2ljZXMKKysK KysgIGxvY2FsIHByZWZfc3RyaW5nID0gcHJlZl9yZWFkKCJpbnN0YWxsZWRfcmVwb3MiLCAic3Ry aW5nIikKKysgIGxvY2FsIGVudHJpZXMgPSBkdS5zcGxpdChwcmVmX3N0cmluZywgIiwiKQorKwor KyAgd2hpbGUgICNlbnRyaWVzID4gMiBkbworKyAgICBsb2NhbCBudW0gPSB0YWJsZS5yZW1vdmUo ZW50cmllcywgMSkKKysgICAgbG9jYWwgbmFtZSA9IHRhYmxlLnJlbW92ZShlbnRyaWVzLCAxKQor KyAgICBsb2NhbCBkaXJlY3RvcnkgPSB0YWJsZS5yZW1vdmUoZW50cmllcywgMSkKKysKKysgICAg aWYgbm90IHN0cmluZy5tYXRjaChzbS5pbnN0YWxsZWRfcmVwb3NpdG9yaWVzWzFdLm5hbWUsICJe IiAuLiBkcy5zYW5pdGl6ZV9sdWEobmFtZSkgLi4gIiQiKSB0aGVuCisrICAgICAgdGFibGUuaW5z ZXJ0KHNtLmluc3RhbGxlZF9yZXBvc2l0b3JpZXMsIHtuYW1lID0gbmFtZSwgZGlyZWN0b3J5ID0g ZGlyZWN0b3J5fSkKKysgICAgZW5kCisrCisrICBlbmQKKysKKysgIHVwZGF0ZV9zY3JpcHRfdXBk YXRlX2Nob2ljZXMoKQorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJ1cGRhdGVkIGluc3RhbGxlZCBz Y3JpcHRzIikKKysKKysgIC0tIGZvbGRlciBzZWxlY3RvcgorKyAgbG9jYWwgdmFsID0gcHJlZl9y ZWFkKCJmb2xkZXJfc2VsZWN0b3IiLCAiaW50ZWdlciIpCisrCisrICBpZiB2YWwgPT0gMCB0aGVu CisrICAgIHZhbCA9IDEKKysgIGVuZAorKworKyAgc20ud2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3Iu c2VsZWN0ZWQgPSB2YWwKKysgIHNtLnBhZ2Vfc3RhdHVzLmZvbGRlciA9IHNtLndpZGdldHMuZm9s ZGVyX3NlbGVjdG9yLnZhbHVlCisrICBsb2cubXNnKGxvZy5kZWJ1ZywgInVwZGF0ZWQgZm9sZGVy IHNlbGVjdG9yIGFuZCBzZXQgaXQgdG8gIiAuLiBzbS53aWRnZXRzLmZvbGRlcl9zZWxlY3Rvci52 YWx1ZSkKKysKKysgIC0tIG51bV9idXR0b25zCisrICBsb2NhbCB2YWwgPSBwcmVmX3JlYWQoIm51 bV9idXR0b25zIiwgImludGVnZXIiKQorKworKyAgaWYgdmFsID09IDAgdGhlbgorKyAgICB2YWwg PSBERUZBVUxUX0JVVFRPTlNfUEVSX1BBR0UKKysgIGVuZAorKworKyAgc20ud2lkZ2V0cy5udW1f YnV0dG9ucy52YWx1ZSA9IHZhbAorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJzZXQgcGFnZSBidXR0 b25zIHRvICIgLi4gdmFsKQorKworKyAgY2hhbmdlX251bV9idXR0b25zKCkKKysgIGxvZy5tc2co bG9nLmRlYnVnLCAicGFnaW5hdGVkIikKKysKKysgIC0tIG1haW4gbWVudQorKyAgbG9jYWwgdmFs ID0gcHJlZl9yZWFkKCJtYWluX21lbnVfYWN0aW9uIiwgImludGVnZXIiKQorKyAgbG9nLm1zZyhs b2cuZGVidWcsICJyZWFkICIgLi4gdmFsIC4uICIgZm9yIG1haW4gbWVudSIpCisrCisrICBpZiB2 YWwgPT0gMCB0aGVuCisrICAgIHZhbCA9IDMKKysgIGVuZAorKworKyAgc20ud2lkZ2V0cy5tYWlu X21lbnUuc2VsZWN0ZWQgPSB2YWwKKysgIGxvZy5tc2cobG9nLmRlYnVnLCAic2V0IG1haW4gbWVu dSB0byB2YWwgIiAuLiB2YWwgLi4gIiB3aGljaCBpcyAiIC4uIHNtLndpZGdldHMubWFpbl9tZW51 LnZhbHVlKQorKworKyAgbG9nLm1zZyhsb2cuZGVidWcsICJzZXQgbWFpbiBtZW51IHRvICIgLi4g c20ud2lkZ2V0cy5tYWluX21lbnUudmFsdWUpCisrCisrICByZXN0b3JlX2xvZ19sZXZlbChvbGRf bG9nX2xldmVsKQorK2VuZAorKworK2xvY2FsIGZ1bmN0aW9uIGluc3RhbGxfbW9kdWxlKCkKKysg IGxvY2FsIG9sZF9sb2dfbGV2ZWwgPSBzZXRfbG9nX2xldmVsKHNtLmxvZ19sZXZlbCkKKysKKysg IGlmIG5vdCBzbS5tb2R1bGVfaW5zdGFsbGVkIHRoZW4KKysgICAgZHQucmVnaXN0ZXJfbGliKAor KyAgICAgICJzY3JpcHRfbWFuYWdlciIsICAgICAtLSBNb2R1bGUgbmFtZQorKyAgICAgIF8oInNj cmlwdHMiKSwgICAgIC0tIFZpc2libGUgbmFtZQorKyAgICAgIHRydWUsICAgICAgICAgICAgICAg IC0tIGV4cGFuZGFibGUKKysgICAgICBmYWxzZSwgICAgICAgICAgICAgICAtLSByZXNldGFibGUK KysgICAgICB7W2R0Lmd1aS52aWV3cy5saWdodHRhYmxlXSA9IHsiRFRfVUlfQ09OVEFJTkVSX1BB TkVMX0xFRlRfQk9UVE9NIiwgMTAwfX0sICAgLS0gY29udGFpbmVycworKyAgICAgIHNtLndpZGdl dHMubWFpbl9ib3gsCisrICAgICAgbmlsLC0tIHZpZXdfZW50ZXIKKysgICAgICBuaWwgLS0gdmll d19sZWF2ZQorKyAgICApCisrICAgIHNtLm1vZHVsZV9pbnN0YWxsZWQgPSB0cnVlCisrICBlbmQK KysKKysgIHNtLnJ1biA9IHRydWUKKysgIHNtLnVzZV9jb2xvciA9IHByZWZfcmVhZCgidXNlX2Nv bG9yIiwgImJvb2wiKQorKyAgbG9nLm1zZyhsb2cuZGVidWcsICJzZXQgcnVuIHRvIHRydWUsIGxv YWRpbmcgcHJlZmVyZW5jZXMiKQorKyAgbG9hZF9wcmVmZXJlbmNlcygpCisrICBzY2FuX3JlcG9z aXRvcmllcygpCisrICBzdGFydF9zY3JpcHRzKCkKKysKKysgIHJlc3RvcmVfbG9nX2xldmVsKG9s ZF9sb2dfbGV2ZWwpCisrZW5kCisrCisrLS0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIAorKy0tIE0gQSBJIE4gIFAgUiBPIEcgUiBBIE0KKystLSAtIC0gLSAt IC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gCisrCisrLS0gZW5zdXJlIHNo b3J0Y3V0cyBtb2R1bGUga25vd3Mgd2lkZ2V0cyBiZWxvbmcgdG8gc2NyaXB0X21hbmFnZXIKKysK KytzY3JpcHRfbWFuYWdlcl9ydW5uaW5nX3NjcmlwdCA9ICJzY3JpcHRfbWFuYWdlciIKKysKKytp ZiAoY2hlY2tfZm9yX3VwZGF0ZXMgb3IgU01fQVBJX1ZFUl9SRVFEID4gZHQuY29uZmlndXJhdGlv bi5hcGlfdmVyc2lvbl9zdHJpbmcpIGFuZCBub3Qgc3lzdGVtX2Jhc2VkIHRoZW4KKysgIGxvY2Fs IHJlcG9fZGF0YSA9IGdldF9yZXBvX3N0YXR1cyhMVUFfRElSKQorKyAgbG9jYWwgY3VycmVudF9i cmFuY2ggPSBnZXRfY3VycmVudF9yZXBvX2JyYW5jaChMVUFfRElSKQorKyAgbG9jYWwgY2xlYW4g PSBpc19yZXBvX2NsZWFuKHJlcG9fZGF0YSkKKysgIGxvY2FsIHJlcG8gPSBMVUFfRElSCisrCisr ICBpZiBjdXJyZW50X2JyYW5jaCB0aGVuCisrCisrICAgIGlmIHNtLmV4ZWN1dGFibGVzLmdpdCBh bmQgY2xlYW4gYW5kIAorKworKyAgICAgIChjdXJyZW50X2JyYW5jaCA9PSAibWFzdGVyIiBvciBz dHJpbmcubWF0Y2goY3VycmVudF9icmFuY2gsICJeQVBJJS0iKSkgdGhlbiAtLSBvbmx5IG1ha2Ug Y2hhbmdlcyB0byBjbGVhbiBicmFuY2hlcworKyAgICAgIGxvY2FsIGJyYW5jaGVzID0gZ2V0X3Jl cG9fYnJhbmNoZXMoTFVBX0RJUikKKysKKysgICAgICBpZiBjdXJyZW50X2JyYW5jaCB+PSBMVUFf QVBJX1ZFUiBhbmQgY3VycmVudF9icmFuY2ggfj0gIm1hc3RlciIgdGhlbgorKyAgICAgICAgLS0g cHJvYmFibHkgdXBncmFkZWQgZnJvbSBhbiBlYXJsaWVyIGFwaSB2ZXJzaW9uIHNvIGdldCBiYWNr IHRvIG1hc3RlcgorKyAgICAgICAgLS0gdG8gdXNlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBzY3Jp cHRfbWFuYWdlciB0byBnZXQgdGhlIHByb3BlciBBUEkKKysgICAgICAgIGNoZWNrb3V0X3JlcG9f YnJhbmNoKHJlcG8sICJtYXN0ZXIiKQorKyAgICAgICAgbG9nLm1zZyhsb2cuc2NyZWVuLCBfKCJs dWEgQVBJIHZlcnNpb24gcmVzZXQsIHBsZWFzZSByZXN0YXJ0IGRhcmt0YWJsZSIpKQorKworKyAg ICAgIGVsc2VpZiBMVUFfQVBJX1ZFUiA9PSBjdXJyZW50X2JyYW5jaCB0aGVuCisrICAgICAgICAt LSBkbyBub3RoaW5nLCB3ZSBhcmUgZmluZQorKyAgICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJ0 b29rIGVxdWFsIGJyYW5jaCwgZG9pbmcgbm90aGluZyIpCisrCisrICAgICAgZWxzZWlmIHN0cmlu Zy5tYXRjaChMVUFfQVBJX1ZFUiwgImRldiIpIHRoZW4KKysgICAgICAgIC0tIHdlIGFyZSBvbiBh IGRldiBBUEkgdmVyc2lvbiwgc28gY2hlY2tvdXQgdGhlIGRldgorKyAgICAgICAgLS0gYXBpIHZl cnNpb24gb3IgY2hlY2tvdXQvc3RheSBvbiBtYXN0ZXIKKysgICAgICAgIGxvZy5tc2cobG9nLmRl YnVnLCAidG9vayB0aGUgZGV2IGJyYW5jaCIpCisrICAgICAgICBsb2NhbCBtYXRjaCA9IGZhbHNl CisrCisrICAgICAgICBmb3IgXywgYnJhbmNoIGluIGlwYWlycyhicmFuY2hlcykgZG8KKysgICAg ICAgICAgbG9nLm1zZyhsb2cuZGVidWcsICJjaGVja2luZyBicmFuY2ggIiAuLiBicmFuY2ggLi4g IiBhZ2FpbnN0IEFQSSAiIC4uIExVQV9BUElfVkVSKQorKyAgICAgICAgICBpZiBMVUFfQVBJX1ZF UiA9PSBicmFuY2ggdGhlbgorKyAgICAgICAgICAgIG1hdGNoID0gdHJ1ZQorKyAgICAgICAgICAg IGxvZy5tc2cobG9nLmluZm8sICJjaGVja2luZyBvdXQgcmVwbyBkZXZlbG9wbWVudCBicmFuY2gg IiAuLiBicmFuY2gpCisrICAgICAgICAgICAgY2hlY2tvdXRfcmVwb19icmFuY2gocmVwbywgYnJh bmNoKQorKyAgICAgICAgICBlbmQKKysgICAgICAgIGVuZAorKworKyAgICAgICAgaWYgbm90IG1h dGNoIHRoZW4KKysgICAgICAgICAgaWYgY3VycmVudF9icmFuY2ggPT0gIm1hc3RlciIgdGhlbgor KyAgICAgICAgICAgIGxvZy5tc2cobG9nLmluZm8sICJzdGF5aW5nIG9uIG1hc3Rlciwgbm8gZGV2 IGJyYW5jaCB5ZXQiKQorKyAgICAgICAgICBlbHNlCisrICAgICAgICAgICAgbG9nLm1zZyhsb2cu aW5mbywgIm5vIGRldiBicmFuY2ggYXZhaWxhYmxlLCBjaGVja2luZyBvdXQgbWFzdGVyIikKKysg ICAgICAgICAgICBjaGVja291dF9yZXBvX2JyYW5jaChyZXBvLCAibWFzdGVyIikKKysgICAgICAg ICAgZW5kCisrICAgICAgICBlbmQKKysKKysgICAgICBlbHNlaWYgI2JyYW5jaGVzID4gMCBhbmQg TFVBX0FQSV9WRVIgPiBicmFuY2hlc1sjYnJhbmNoZXNdIHRoZW4KKysgICAgICAgIGxvZy5tc2co bG9nLmluZm8sICJubyBuZXdlciBicmFuY2hlcywgc3RheWluZyBvbiBtYXN0ZXIiKQorKyAgICAg ICAgLS0gc3RheSBvbiBtYXN0ZXIKKysKKysgICAgICBlbHNlCisrICAgICAgICAtLSBjaGVja291 dCB0aGUgYXBwcm9wcmlhdGUgYnJhbmNoIGZvciBBUEkgdmVyc2lvbiBpZiBpdCBleGlzdHMKKysg ICAgICAgIGxvZy5tc2cobG9nLmluZm8sICJjaGVja2luZyBvdXQgdGhlIGFwcHJvcHJpYXRlIEFQ SSBicmFuY2giKQorKworKyAgICAgICAgbG9jYWwgbWF0Y2ggPSBmYWxzZQorKworKyAgICAgICAg Zm9yIF94LCBicmFuY2ggaW4gaXBhaXJzKGJyYW5jaGVzKSBkbworKyAgICAgICAgICBsb2cubXNn KGxvZy5kZWJ1ZywgImNoZWNraW5nIGJyYW5jaCAiIC4uIGJyYW5jaCAuLiAiIGFnYWluc3QgQVBJ ICIgLi4gTFVBX0FQSV9WRVIpCisrCisrICAgICAgICAgIGlmIExVQV9BUElfVkVSID09IGJyYW5j aCB0aGVuCisrICAgICAgICAgICAgbWF0Y2ggPSB0cnVlCisrICAgICAgICAgICAgbG9nLm1zZyhs b2cuaW5mbywgImNoZWNraW5nIG91dCByZXBvIGJyYW5jaCAiIC4uIGJyYW5jaCkKKysgICAgICAg ICAgICBjaGVja291dF9yZXBvX2JyYW5jaChyZXBvLCBicmFuY2gpCisrICAgICAgICAgICAgbG9n Lm1zZyhsb2cuc2NyZWVuLCBfKCJ5b3UgbXVzdCByZXN0YXJ0IGRhcmt0YWJsZSB0byB1c2UgdGhl IGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUgbHVhIHNjcmlwdHMiKSkKKysgICAgICAgICAgICByZXR1 cm4KKysgICAgICAgICAgZW5kCisrCisrICAgICAgICBlbmQKKysKKysgICAgICAgIGlmIG5vdCBt YXRjaCB0aGVuCisrICAgICAgICAgIGxvZy5tc2cobG9nLndhcm4sICJubyBtYXRjaGluZyBicmFu Y2ggZm91bmQgZm9yICIgLi4gTFVBX0FQSV9WRVIpCisrICAgICAgICBlbmQKKysKKysgICAgICBl bmQKKysgICAgZW5kCisrICBlbmQKKytlbmQKKysKKytzY2FuX3NjcmlwdHMoTFVBX0RJUikKKyts b2cubXNnKGxvZy5pbmZvLCAiZmluaXNoZWQgcHJvY2Vzc2luZyBzY3JpcHRzIikKKysKKytpZiBz eXN0ZW1fYmFzZWQgdGhlbgorKyAgLS0gZXhlYyB1c2VyIGx1YXJjIGZpbGUgaWYgaXQgZXhpc3Rz CisrICBsb2NhbCBsdWFyYyA9IGxvYWRmaWxlKFVTRVJfTFVBX0RJUiAuLiAicmMiKQorKyAgaWYg bHVhcmMgdGhlbgorKyAgICBsdWFyYygpCisrICBlbmQKKysKKysgIGlmIGRmLnRlc3RfZmlsZShV U0VSX0xVQV9ESVIsICJkIikgdGhlbgorKyAgICBMVUFfRElSID0gVVNFUl9MVUFfRElSCisrICAg IHNjYW5fc2NyaXB0cyhMVUFfRElSKQorKyAgICBMVUFfRElSID0gU1lTVEVNX0xVQV9ESVIKKysg IGVuZAorKworKyAgZHQuY29uZmlndXJhdGlvblsibHVhX2RpciJdID0gTFVBX0RJUgorKworKyAg ZHQucHJpbnRfbG9nKCJsdWEgZGlyIGlzICIgLi4gZHQuY29uZmlndXJhdGlvbi5sdWFfZGlyKQor KyAgLS0gc2Nhbl9zY3JpcHQoVVNFUl9MVUFfRElSKQorK2VuZAorKworKworKy0tIC0gLSAtIC0g LSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKystLSBVIFMgRSBSICBJIE4g VCBFIFIgRiBBIEMgRQorKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAKKysKKystLSB1cGRhdGUgdGhlIHNjcmlwdHMKKysKKytzbS53aWRnZXRzLnVwZGF0 ZV9zY3JpcHRfY2hvaWNlcyA9IGR0Lm5ld193aWRnZXQoImNvbWJvYm94Iil7CisrICBsYWJlbCA9 IF8oInNjcmlwdHMgdG8gdXBkYXRlIiksCisrICB0b29sdGlwID0gXygic2VsZWN0IHRoZSBzY3Jp cHRzIGluc3RhbGxhdGlvbiB0byB1cGRhdGUiKSwKKysgIHNlbGVjdGVkID0gMSwKKysgIGNoYW5n ZWRfY2FsbGJhY2sgPSBmdW5jdGlvbih0aGlzKQorKyAgICBwcmVmX3dyaXRlKCJ1cGRhdGVfc2Ny aXB0X2Nob2ljZXMiLCAiaW50ZWdlciIsIHRoaXMuc2VsZWN0ZWQpCisrICBlbmQsCisrICAicGxh Y2Vob2xkZXIiLAorK30KKysKKytzbS53aWRnZXRzLnVwZGF0ZSA9IGR0Lm5ld193aWRnZXQoImJ1 dHRvbiIpeworKyAgbGFiZWwgPSBfKCJ1cGRhdGUgc2NyaXB0cyIpLAorKyAgdG9vbHRpcCA9IF8o InVwZGF0ZSB0aGUgbHVhIHNjcmlwdHMgZnJvbSB0aGUgcmVwb3NpdG9yeSIpLAorKyAgY2xpY2tl ZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHRoaXMpCisrICAgIHVwZGF0ZV9zY3JpcHRzKCkKKysgIGVu ZAorK30KKysKKystLSBhZGQgYWRkaXRpb25hbCBzY3JpcHRzCisrCisrc20ud2lkZ2V0cy5zY3Jp cHRfdXJsID0gZHQubmV3X3dpZGdldCgiZW50cnkiKXsKKysgIHRleHQgPSAiIiwKKysgIHBsYWNl aG9sZGVyID0gImh0dHBzOi8vPHJlcG9zaXRvcnkgdXJsPiIsCisrICB0b29sdGlwID0gXygiZW50 ZXIgdGhlIFVSTCBvZiB0aGUgZ2l0IHJlcG9zaXRvcnkgY29udGFpbmluZyB0aGUgc2NyaXB0cyB5 b3Ugd2lzaCB0byBhZGQiKQorK30KKysKKytzbS53aWRnZXRzLm5ld19mb2xkZXIgPSBkdC5uZXdf d2lkZ2V0KCJlbnRyeSIpeworKyAgdGV4dCA9ICIiLAorKyAgcGxhY2Vob2xkZXIgPSBfKCJuYW1l IG9mIG5ldyBmb2xkZXIiKSwKKysgIHRvb2x0aXAgPSBfKCJlbnRlciBhIGZvbGRlciBuYW1lIGZv ciB0aGUgYWRkaXRpb25hbCBzY3JpcHRzIikKKyt9CisrCisrc20ud2lkZ2V0cy5hZGRfc2NyaXB0 cyA9IGR0Lm5ld193aWRnZXQoImJveCIpeworKyAgb3JpZW50YXRpb24gPSB2ZXJ0aWNhbCwKKysg IGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSBfKCJVUkwgdG8gZG93bmxvYWQgYWRkaXRp b25hbCBzY3JpcHRzIGZyb20iKX0sCisrICBzbS53aWRnZXRzLnNjcmlwdF91cmwsCisrICBkdC5u ZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gXygibmV3IGZvbGRlciB0byBwbGFjZSBzY3JpcHRz IGluIil9LAorKyAgc20ud2lkZ2V0cy5uZXdfZm9sZGVyLAorKyAgZHQubmV3X3dpZGdldCgiYnV0 dG9uIil7CisrICAgIGxhYmVsID0gXygiaW5zdGFsbCBhZGRpdGlvbmFsIHNjcmlwdHMiKSwKKysg ICAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHRoaXMpCisrICAgICAgaW5zdGFsbF9zY3Jp cHRzKCkKKysgICAgZW5kCisrICB9CisrfQorKworK3NtLndpZGdldHMuYWxsb3dfZGlzYWJsZSA9 IGR0Lm5ld193aWRnZXQoImNoZWNrX2J1dHRvbiIpeworKyAgbGFiZWwgPSBfKCdlbmFibGUgImRp c2FibGUgc2NyaXB0cyIgYnV0dG9uJyksCisrICB2YWx1ZSA9IGZhbHNlLAorKyAgY2xpY2tlZF9j YWxsYmFjayA9IGZ1bmN0aW9uKHRoaXMpCisrICAgIGlmIHRoaXMudmFsdWUgPT0gdHJ1ZSB0aGVu CisrICAgICAgc20ud2lkZ2V0cy5kaXNhYmxlX3NjcmlwdHMuc2Vuc2l0aXZlID0gdHJ1ZQorKyAg ICBlbHNlCisrICAgICAgc20ud2lkZ2V0cy5kaXNhYmxlX3NjcmlwdHMuc2Vuc2l0aXZlID0gZmFs c2UKKysgICAgZW5kCisrICBlbmQsCisrfQorKworK3NtLndpZGdldHMuZGlzYWJsZV9zY3JpcHRz ID0gZHQubmV3X3dpZGdldCgiYnV0dG9uIil7CisrICBsYWJlbCA9IF8oImRpc2FibGUgc2NyaXB0 cyIpLAorKyAgc2Vuc2l0aXZlID0gZmFsc2UsCisrICBjbGlja2VkX2NhbGxiYWNrID0gZnVuY3Rp b24odGhpcykKKysgICAgbG9jYWwgTFVBUkMgPSBkdC5jb25maWd1cmF0aW9uLmNvbmZpZ19kaXIg Li4gUFMgLi4gImx1YXJjIgorKyAgICBkZi5maWxlX21vdmUoTFVBUkMsIExVQVJDIC4uICIuZGlz YWJsZWQiKQorKyAgICBsb2cubXNnKGxvZy5pbmZvLCAibHVhIHNjcmlwdHMgZGlzYWJsZWQiKQor KyAgICBsb2cubXNnKGxvZy5zY3JlZW4sIF8oImx1YSBzY3JpcHRzIHdpbGwgbm90IHJ1biB0aGUg bmV4dCB0aW1lIGRhcmt0YWJsZSBpcyBzdGFydGVkIikpCisrICBlbmQKKyt9CisrCisrc20ud2lk Z2V0cy5pbnN0YWxsX3VwZGF0ZSA9IGR0Lm5ld193aWRnZXQoImJveCIpeworKyAgb3JpZW50YXRp b24gPSAidmVydGljYWwiLAorKyAgZHQubmV3X3dpZGdldCgic2VjdGlvbl9sYWJlbCIpe2xhYmVs ID0gIiAifSwKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSAiICJ9LAorKyAgZHQu bmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9IF8oInVwZGF0ZSBzY3JpcHRzIil9LAorKyAgZHQu bmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9ICIgIn0sCisrICBzbS53aWRnZXRzLnVwZGF0ZV9z Y3JpcHRfY2hvaWNlcywKKysgIHNtLndpZGdldHMudXBkYXRlLAorKyAgZHQubmV3X3dpZGdldCgi c2VjdGlvbl9sYWJlbCIpe2xhYmVsID0gIiAgIn0sCisrICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIp e2xhYmVsID0gIiAifSwKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSBfKCJhZGQg bW9yZSBzY3JpcHRzIil9LAorKyAgZHQubmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9ICIgIn0s CisrICBzbS53aWRnZXRzLmFkZF9zY3JpcHRzLAorKyAgZHQubmV3X3dpZGdldCgic2VjdGlvbl9s YWJlbCIpe2xhYmVsID0gIiAifSwKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSAi ICJ9LAorKyAgZHQubmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9IF8oImRpc2FibGUgc2NyaXB0 cyIpfSwKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSAiICJ9LAorKyAgc20ud2lk Z2V0cy5hbGxvd19kaXNhYmxlLAorKyAgc20ud2lkZ2V0cy5kaXNhYmxlX3NjcmlwdHMsCisrICBk dC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gIiAifSwKKyt9CisrCisrLS0gbWFuYWdlIHRo ZSBzY3JpcHRzCisrCisrc20ud2lkZ2V0cy5mb2xkZXJfc2VsZWN0b3IgPSBkdC5uZXdfd2lkZ2V0 KCJjb21ib2JveCIpeworKyAgbGFiZWwgPSBfKCJmb2xkZXIiKSwKKysgIHRvb2x0aXAgPSBfKCAi c2VsZWN0IHRoZSBzY3JpcHQgZm9sZGVyIiksCisrICBzZWxlY3RlZCA9IDEsCisrICBjaGFuZ2Vk X2NhbGxiYWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgaWYgc20ucnVuIHRoZW4KKysgICAgICBw cmVmX3dyaXRlKCJmb2xkZXJfc2VsZWN0b3IiLCAiaW50ZWdlciIsIHNlbGYuc2VsZWN0ZWQpCisr ICAgICAgY2hhbmdlX2ZvbGRlcihzbS5mb2xkZXJzW3NlbGYuc2VsZWN0ZWRdKQorKyAgICBlbmQK KysgIGVuZCwKKysgIHRhYmxlLnVucGFjayhzbS50cmFuc2xhdGVkX2ZvbGRlcnMpLAorK30KKysK KystLSBhIHNjcmlwdCAiYnV0dG9uIiBjb25zaXN0cyBvZjoKKystLSAgICAgIGEgYnV0dG9uIHRv IHN0YXJ0IGFuZCBzdG9wIHRoZSBzY3JpcHQKKystLSAgICAgIGEgbGFiZWwgdGhhdCBjb250YWlu cyB0aGUgbmFtZSBvZiB0aGUgc2NyaXB0CisrLS0gICAgICBhIGhvcml6b250YWwgYm94IHRoYXQg Y29udGFpbnMgdGhlIGJ1dHRvbiBhbmQgdGhlIGxhYmVsCisrCisrc20ud2lkZ2V0cy5idXR0b25z ID17fQorK3NtLndpZGdldHMubGFiZWxzID0ge30KKytzbS53aWRnZXRzLmJveGVzID0ge30KKysK Kytmb3IgaSA9MSwgREVGQVVMVF9CVVRUT05TX1BFUl9QQUdFIGRvIAorKyAgdGFibGUuaW5zZXJ0 KHNtLndpZGdldHMuYnV0dG9ucywgZHQubmV3X3dpZGdldCgiYnV0dG9uIil7fSkKKysgIHRhYmxl Lmluc2VydChzbS53aWRnZXRzLmxhYmVscywgZHQubmV3X3dpZGdldCgibGFiZWwiKXt9KQorKyAg dGFibGUuaW5zZXJ0KHNtLndpZGdldHMuYm94ZXMsIGR0Lm5ld193aWRnZXQoImJveCIpeyBvcmll bnRhdGlvbiA9ICJob3Jpem9udGFsIiwgZXhwYW5kID0gZmFsc2UsIGZpbGwgPSBmYWxzZSwgCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNt LndpZGdldHMuYnV0dG9uc1tpXSwgc20ud2lkZ2V0cy5sYWJlbHNbaV19KQorKyAgc20ucGFnZV9z dGF0dXMuYnV0dG9uc19jcmVhdGVkID0gc20ucGFnZV9zdGF0dXMuYnV0dG9uc19jcmVhdGVkICsg MQorK2VuZAorKworK2xvY2FsIHBhZ2VfYmFjayA9ICI8IgorK2xvY2FsIHBhZ2VfZm9yd2FyZCA9 ICI+IgorKworK3NtLndpZGdldHMucGFnZV9zdGF0dXMgPSBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIp e2xhYmVsID0gXygicGFnZSIpIC4uICI6In0KKysKKytzbS53aWRnZXRzLnBhZ2VfYmFjayA9IGR0 Lm5ld193aWRnZXQoImJ1dHRvbiIpeworKyAgbGFiZWwgPSBwYWdlX2JhY2ssCisrICBjbGlja2Vk X2NhbGxiYWNrID0gZnVuY3Rpb24odGhpcykKKysgICAgaWYgc20ucnVuIHRoZW4gCisrICAgICAg cGFnaW5hdGUoMCkKKysgICAgZW5kCisrICBlbmQKKyt9CisrCisrc20ud2lkZ2V0cy5wYWdlX2Zv cndhcmQgPSBkdC5uZXdfd2lkZ2V0KCJidXR0b24iKXsKKysgIGxhYmVsID0gcGFnZV9mb3J3YXJk LAorKyAgY2xpY2tlZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHRoaXMpCisrICAgIGlmIHNtLnJ1biB0 aGVuCisrICAgICAgcGFnaW5hdGUoMSkKKysgICAgZW5kCisrICBlbmQKKyt9CisrCisrc20ud2lk Z2V0cy5wYWdlX2NvbnRyb2wgPSBkdC5uZXdfd2lkZ2V0KCJib3giKXsKKysgIG9yaWVudGF0aW9u ID0gImhvcml6b250YWwiLAorKyAgc20ud2lkZ2V0cy5wYWdlX2JhY2ssCisrICBzbS53aWRnZXRz LnBhZ2Vfc3RhdHVzLAorKyAgc20ud2lkZ2V0cy5wYWdlX2ZvcndhcmQsCisrfQorKworK3NtLndp ZGdldHMuc2NyaXB0cyA9IGR0Lm5ld193aWRnZXQoImJveCIpeworKyAgb3JpZW50YXRpb24gPSB2 ZXJ0aWNhbCwKKysgIGR0Lm5ld193aWRnZXQoInNlY3Rpb25fbGFiZWwiKXtsYWJlbCA9ICIgIn0s CisrICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVsID0gIiAifSwKKysgIGR0Lm5ld193aWRn ZXQoImxhYmVsIil7bGFiZWwgPSBfKCJzY3JpcHRzIil9LAorKyAgc20ud2lkZ2V0cy5mb2xkZXJf c2VsZWN0b3IsCisrICBzbS53aWRnZXRzLnBhZ2VfY29udHJvbCwKKysgIHRhYmxlLnVucGFjayhz bS53aWRnZXRzLmJveGVzKSwKKyt9CisrCisrLS0gY29uZmlndXJlIG9wdGlvbnMKKysKKytzbS53 aWRnZXRzLm51bV9idXR0b25zID0gZHQubmV3X3dpZGdldCgic2xpZGVyIil7CisrICBsYWJlbCA9 IF8oInNjcmlwdHMgcGVyIHBhZ2UiKSwKKysgIHRvb2x0aXAgPSBfKCJzZWxlY3QgbnVtYmVyIG9m IHN0YXJ0L3N0b3AgYnV0dG9ucyB0byBkaXNwbGF5IiksCisrICBzb2Z0X21pbiA9IE1JTl9CVVRU T05TX1BFUl9QQUdFLAorKyAgaGFyZF9taW4gPSBNSU5fQlVUVE9OU19QRVJfUEFHRSwKKysgIHNv ZnRfbWF4ID0gTUFYX0JVVFRPTlNfUEVSX1BBR0UsCisrICBoYXJkX21heCA9IE1BWF9CVVRUT05T X1BFUl9QQUdFLAorKyAgc3RlcCA9IDEsCisrICBkaWdpdHMgPSAwLAorKyAgdmFsdWUgPSAxMAor K30KKysKKytzbS53aWRnZXRzLmNoYW5nZV9idXR0b25zID0gZHQubmV3X3dpZGdldCgiYnV0dG9u Iil7CisrICBsYWJlbCA9IF8oImNoYW5nZSBudW1iZXIgb2YgYnV0dG9ucyIpLAorKyAgY2xpY2tl ZF9jYWxsYmFjayA9IGZ1bmN0aW9uKHRoaXMpCisrICAgIGNoYW5nZV9udW1fYnV0dG9ucygpCisr ICBlbmQKKyt9CisrCisrc20ud2lkZ2V0cy5jb25maWd1cmUgPSBkdC5uZXdfd2lkZ2V0KCJib3gi KXsKKysgIG9yaWVudGF0aW9uID0gInZlcnRpY2FsIiwKKysgIGR0Lm5ld193aWRnZXQoInNlY3Rp b25fbGFiZWwiKXtsYWJlbCA9ICIgIn0sCisrICBkdC5uZXdfd2lkZ2V0KCJsYWJlbCIpe2xhYmVs ID0gIiAifSwKKysgIGR0Lm5ld193aWRnZXQoImxhYmVsIil7bGFiZWwgPSBfKCJjb25maWd1cmF0 aW9uIil9LAorKyAgZHQubmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9ICIgIn0sCisrICBzbS53 aWRnZXRzLm51bV9idXR0b25zLAorKyAgZHQubmV3X3dpZGdldCgibGFiZWwiKXtsYWJlbCA9ICIg In0sCisrICBzbS53aWRnZXRzLmNoYW5nZV9idXR0b25zLAorKyAgZHQubmV3X3dpZGdldCgibGFi ZWwiKXtsYWJlbCA9ICIgIn0sCisrfQorKworKy0tIHN0YWNrIGZvciB0aGUgb3B0aW9ucworKwor K3NtLndpZGdldHMubWFpbl9zdGFjayA9IGR0Lm5ld193aWRnZXQoInN0YWNrIil7CisrICBzbS53 aWRnZXRzLmluc3RhbGxfdXBkYXRlLAorKyAgc20ud2lkZ2V0cy5jb25maWd1cmUsCisrICBzbS53 aWRnZXRzLnNjcmlwdHMsCisrfQorKworK3NtLndpZGdldHMubWFpbl9zdGFjay5oX3NpemVfZml4 ZWQgPSBmYWxzZQorK3NtLndpZGdldHMubWFpbl9zdGFjay52X3NpemVfZml4ZWQgPSBmYWxzZQor KworKy0tIG1haW4gbWVudQorKworK3NtLndpZGdldHMubWFpbl9tZW51ID0gZHQubmV3X3dpZGdl dCgiY29tYm9ib3giKXsKKysgIGxhYmVsID0gXygiYWN0aW9uIiksCisrICBjaGFuZ2VkX2NhbGxi YWNrID0gZnVuY3Rpb24oc2VsZikKKysgICAgc20ud2lkZ2V0cy5tYWluX3N0YWNrLmFjdGl2ZSA9 IHNlbGYuc2VsZWN0ZWQKKysgICAgcHJlZl93cml0ZSgibWFpbl9tZW51X2FjdGlvbiIsICJpbnRl Z2VyIiwgc2VsZi5zZWxlY3RlZCkKKysgICAgbG9nLm1zZyhsb2cuZGVidWcsICJzYXZlZCAiIC4u IHNlbGYuc2VsZWN0ZWQgLi4gIiBmb3IgbWFpbiBtZW51IikKKysgIGVuZCwKKysgICBfKCJpbnN0 YWxsL3VwZGF0ZSBzY3JpcHRzIiksIF8oImNvbmZpZ3VyZSIpLCBfKCJzdGFydC9zdG9wIHNjcmlw dHMiKQorK30KKysKKystLSB3aWRnZXQgZm9yIG1vZHVsZSAKKysKKytzbS53aWRnZXRzLm1haW5f Ym94ID0gZHQubmV3X3dpZGdldCgiYm94Iil7CisrICBzbS53aWRnZXRzLm1haW5fbWVudSwKKysg IHNtLndpZGdldHMubWFpbl9zdGFjaworK30KKysKKytzY3JpcHRfbWFuYWdlcl9ydW5uaW5nX3Nj cmlwdCA9IG5pbAorKworKy0tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0g LSAtIC0gLSAKKystLSBEIEEgUiBLIFQgQSBCIEwgRSAgSSBOIFQgRSBHIFIgQSBUIEkgTyBOIAor Ky0tIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAKKysKKytp ZiAoZHQuZ3VpLmN1cnJlbnRfdmlldygpLmlkID09ICJsaWdodHRhYmxlIikgYW5kIGRhcmt0YWJs ZV9ndWlfc2FmZSB0aGVuCisrICBpbnN0YWxsX21vZHVsZSgpCisrZWxzZQorKyAgaWYgbm90IHNt LmV2ZW50X3JlZ2lzdGVyZWQgdGhlbgorKyAgICBkdC5yZWdpc3Rlcl9ldmVudCgKKysgICAgICAi c2NyaXB0X21hbmFnZXIiLCAidmlldy1jaGFuZ2VkIiwKKysgICAgICBmdW5jdGlvbihldmVudCwg b2xkX3ZpZXcsIG5ld192aWV3KQorKyAgICAgICAgaWYgbmV3X3ZpZXcubmFtZSA9PSAibGlnaHR0 YWJsZSIgYW5kIG9sZF92aWV3Lm5hbWUgPT0gImRhcmtyb29tIiB0aGVuCisrICAgICAgICAgIGlu c3RhbGxfbW9kdWxlKCkKKysgICAgICAgIGVuZAorKyAgICAgIGVuZAorKyAgICApCisrICAgIHNt LmV2ZW50X3JlZ2lzdGVyZWQgPSB0cnVlCisrICBlbmQKKytlbmQKKysKCmRpZmYgLS1naXQgYS9z b3VyY2VzIGIvc291cmNlcwppbmRleCA3NjBjOWNkLi42YzQ0YTkxIDEwMDY0NAotLS0gYS9zb3Vy Y2VzCisrKyBiL3NvdXJjZXMKQEAgLTEgKzEgQEAKLVNIQTUxMiAoZGFya3RhYmxlLTUuNC4xLnRh ci54eikgPSBkOTU2ZmRhYzJkN2ExNzgyYTI0MmM4ZTA4MzlhNmQyNmZiM2EyYTdkOTA3MTY5Nzgy MjdiMWM4ODRmNGFjZjBmNTFlNTk5YTcyYjA5MTlmN2I3ZjJlYTJiNWRmNDBmZWNkNTZkZmE4ZTdj ODEzNTg3ZWY0NjlmZjZlNDJmZmU3YgorU0hBNTEyIChkYXJrdGFibGUtNS42LjEudGFyLnh6KSA9 IGJiNGUxZDI3Y2I4NzgxY2VmNGRmZDVjYjJhNTgwZjRjODg3MzlhMjNlMjg1Njc1YjVjYTE1ZjAx MGFlZmZmYzk2NTQ5OWNmODk1Nzg4MDM2MWUzMzYxNmVjNDk0NjFkMTQ5MTI2YWY3ZWYxYzk4MTgz MjJhZThmNDdkZjc4ZDllCg==