From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=ALL_TRUSTED,PDS_OTHER_BAD_TLD, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 15717 invoked from network); 15 Feb 2022 00:26:12 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 15 Feb 2022 00:26:12 -0000 Content-Type: multipart/mixed; boundary="===============3343234327152910018==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Update_libgdal_and_proj_and_rebuild_against_them?= To: ml@inbox.vuxu.org From: ar-jan Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 15 Feb 2022 01:26:12 +0100 List-Id: Message-ID: <20220215002612.AJDlGDMbfZ4WUN1G-zHcMNSlRPUQn5_ucnlbCGrz8Fo@z> GitHub notification mails are now in MIME to allow UTF8. --===============3343234327152910018== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgYXItamFuIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9hci1q YW4vdm9pZC1wYWNrYWdlcyBnZGFsLXByb2oKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgv dm9pZC1wYWNrYWdlcy9wdWxsLzMxNjg3CgpVcGRhdGUgbGliZ2RhbCBhbmQgcHJvaiBhbmQgcmVi dWlsZCBhZ2FpbnN0IHRoZW0KPCEtLSBNYXJrIGl0ZW1zIHdpdGggW3hdIHdoZXJlIGFwcGxpY2Fi bGUgLS0+DQoNCiMjIyMgR2VuZXJhbA0KLSBbIF0gVGhpcyBpcyBhIG5ldyBwYWNrYWdlIGFuZCBp dCBjb25mb3JtcyB0byB0aGUgW3F1YWxpdHkgcmVxdWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5j b20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL01hbnVhbC5tZCNxdWFsaXR5 LXJlcXVpcmVtZW50cykNCg0KIyMjIyBIYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9wb3NlZCBj aGFuZ2VzIGJlZW4gdGVzdGVkPw0KLSBbIF0gSSB1c2UgdGhlIHBhY2thZ2VzIGFmZmVjdGVkIGJ5 IHRoZSBwcm9wb3NlZCBjaGFuZ2VzIG9uIGEgcmVndWxhciBiYXNpcyBhbmQgY29uZmlybSB0aGlz IFBSIHdvcmtzIGZvciBtZQ0KLSBbIF0gSSBnZW5lcmFsbHkgZG9uJ3QgdXNlIHRoZSBhZmZlY3Rl ZCBwYWNrYWdlcyBidXQgYnJpZWZseSB0ZXN0ZWQgdGhpcyBQUg0KDQo8IS0tDQpJZiBHaXRIdWIg Q0kgY2Fubm90IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGJ1aWxkIHJlc3VsdCAoZm9yIGV4YW1w bGUsIGlmIHRoZQ0KYnVpbGQgaXMgbGlrZWx5IHRvIHRha2Ugc2V2ZXJhbCBob3VycyksIG1ha2Ug c3VyZSB0bw0KW3NraXAgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFj a2FnZXMvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI2NvbnRpbnVvdXMtaW50ZWdyYXRpb24p Lg0KV2hlbiBza2lwcGluZyBDSSwgdW5jb21tZW50IGFuZCBmaWxsIG91dCB0aGUgZm9sbG93aW5n IHNlY3Rpb24uDQpOb3RlOiBmb3IgYnVpbGRzIHRoYXQgYXJlIGxpa2VseSB0byBjb21wbGV0ZSBp biBsZXNzIHRoYW4gMiBob3VycywgaXQgaXMgbm90DQphY2NlcHRhYmxlIHRvIHNraXAgQ0kuDQot LT4NCjwhLS0gDQojIyMjIERvZXMgaXQgYnVpbGQgYW5kIHJ1biBzdWNjZXNzZnVsbHk/IA0KKFBs ZWFzZSBjaG9vc2UgYXQgbGVhc3Qgb25lIG5hdGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwg YXQgbGVhc3Qgb25lIGNyb3NzIGJ1aWxkLiBNb3JlIGFyZSBiZXR0ZXIuKQ0KLSBbIF0gSSBidWls dCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsIChBUkNILUxJQkMp DQotIFsgXSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxseSBmb3IgdGhlc2UgYXJjaGl0ZWN0dXJlcyAo aWYgc3VwcG9ydGVkLiBtYXJrIGNyb3NzYnVpbGRzKToNCiAgLSBbIF0gYWFyY2g2NC1tdXNsDQog IC0gWyBdIGFybXY3bA0KICAtIFsgXSBhcm12NmwtbXVzbA0KLS0+DQoKCkEgcGF0Y2ggZmlsZSBm cm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zMTY4 Ny5wYXRjaCBpcyBhdHRhY2hlZA== --===============3343234327152910018== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-gdal-proj-31687.patch" RnJvbSBjYmJjYzVkZGIwNDY2YzNkODIzNDk0MjEwMzU4ZTZiMDM4M2E1MTU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2VsQGdtYWlsLmNvbT4K RGF0ZTogU3VuLCAxMyBGZWIgMjAyMiAyMzoxODo0MyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDEv MTZdIHByb2o6IHVwZGF0ZSB0byA3LjIuMS4KCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgIHwg IDIgKy0KIHNyY3BrZ3MvcHJvai90ZW1wbGF0ZSB8IDEzICsrKysrKystLS0tLS0KIDIgZmlsZXMg Y2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Nv bW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDBjNjAyNjBiNDY0Mi4uYjBmY2ZkMDQ5 MjZlIDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTMw NjksNyArMzA2OSw3IEBAIGxpYndpdGhzY3RwLnNvLjEgbGtzY3RwLXRvb2xzLTEuMC4xN18xCiBs aWJuc3NfbGRhcC5zby4yIG5zcy1wYW0tbGRhcGQtMC45LjdfNAogbGlidW5zaGllbGQuc28uMCBs aWJ1bnNoaWVsZC0wLjZfMQogbGliTXlHVUlFbmdpbmUuc28uMy40LjEgbGlibXlndWktMy40LjFf MQotbGlicHJvai5zby4xOCBwcm9qLTYuMy4wXzEKK2xpYnByb2ouc28uMTkgcHJvai03LjIuMV8x CiBsaWJubG9wdC5zby4wIG5sb3B0LTIuNC4yXzEKIGxpYmViLnNvLjE2IGxpYmViLTQuMy4zXzEK IGxpYmNoaXBjYXJkLnNvLjYgbGliY2hpcGNhcmQtNS4wLjRfMQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9wcm9qL3RlbXBsYXRlIGIvc3JjcGtncy9wcm9qL3RlbXBsYXRlCmluZGV4IDUxYzQ2MzgyMzRi ZC4uZTNmYmQ0MzkwM2M3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3Byb2ovdGVtcGxhdGUKKysrIGIv c3JjcGtncy9wcm9qL3RlbXBsYXRlCkBAIC0xLDE3ICsxLDE5IEBACiAjIFRlbXBsYXRlIGZpbGUg Zm9yICdwcm9qJwogcGtnbmFtZT1wcm9qCi12ZXJzaW9uPTYuMy4yCit2ZXJzaW9uPTcuMi4xCiBy ZXZpc2lvbj0xCiBidWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9Ii1EUFJPSl9URVNU Uz1PRkYiCitjb25maWd1cmVfYXJncz0iLURCVUlMRF9URVNUSU5HPU9GRiIKIGhvc3RtYWtlZGVw ZW5kcz0icHl0aG9uMyIKLW1ha2VkZXBlbmRzPSJzcWxpdGUtZGV2ZWwiCittYWtlZGVwZW5kcz0i bGliY3VybC1kZXZlbAorIHNxbGl0ZS1kZXZlbAorIHRpZmYtZGV2ZWwiCiBzaG9ydF9kZXNjPSJD YXJ0b2dyYXBoaWMgUHJvamVjdGlvbnMgTGlicmFyeSIKIG1haW50YWluZXI9IkpvaG4gPG1lQGpv aG5ueW5hdG9yLmRldj4iCiBsaWNlbnNlPSJNSVQiCi1ob21lcGFnZT0iaHR0cHM6Ly9wcm9qNC5v cmciCitob21lcGFnZT0iaHR0cHM6Ly9wcm9qLm9yZyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9kb3du bG9hZC5vc2dlby5vcmcvcHJvai9wcm9qLSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09Y2I3 NzZhNzBmNDBjMzU1NzlhZTRiYTA0ZmI0YTM4OGMxZDFjZTAyNWExZGY2MTcxMzUwZGMxOWYyNWI4 MDMxMQorY2hlY2tzdW09YjM4NGY0MmU1ZmI5YzZkMDFmZTVmYTRkMzFkYTJlOTEzMjk2Njg4NjNh Njg0Zjk3YmU1ZDQ3NjBkYmJmMGExNAogCiBwb3N0X2luc3RhbGwoKSB7CiAJdmxpY2Vuc2UgQ09Q WUlORwpAQCAtMjIsNyArMjQsNiBAQCBwcm9qLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVz Yys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgogCXBrZ19pbnN0YWxsKCkgewogCQl2bW92ZSB1c3Iv aW5jbHVkZQotCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjMKIAkJdm1vdmUgdXNyL2xpYi9jbWFr ZQogCQl2bW92ZSAidXNyL2xpYi8qLnNvIgogCX0KCkZyb20gMDI1ZjcyZTk0YjIxOWMzMDcyMzkw MTkwMmI1Mjk5NGEwMWE0ZGIxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogTnl4NzAg PG4ueS54QGJsdWV3aW4uY2g+CkRhdGU6IFN1biwgMjAgRGVjIDIwMjAgMTQ6NDk6MzAgKzAxMDAK U3ViamVjdDogW1BBVENIIDAyLzE2XSBOZXcgcGFja2FnZTogbGlic3BhdGlhbGl0ZS01LjAuMQoK LS0tCiBjb21tb24vc2hsaWJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNyAr KysrKysrKwogc3JjcGtncy9saWJzcGF0aWFsaXRlLWRldmVsICAgICAgICAgICAgICAgICAgIHwg IDEgKwogLi4uL3BhdGNoZXMvZGlzYWJsZV9jaGVja19zcWwucGF0Y2ggICAgICAgICAgIHwgMjkg KysrKysrKysrKysrKwogc3JjcGtncy9saWJzcGF0aWFsaXRlL3RlbXBsYXRlICAgICAgICAgICAg ICAgIHwgNDIgKysrKysrKysrKysrKysrKysrKwogNCBmaWxlcyBjaGFuZ2VkLCA4OSBpbnNlcnRp b25zKCspCiBjcmVhdGUgbW9kZSAxMjAwMDAgc3JjcGtncy9saWJzcGF0aWFsaXRlLWRldmVsCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9saWJzcGF0aWFsaXRlL3BhdGNoZXMvZGlzYWJsZV9j aGVja19zcWwucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xpYnNwYXRpYWxpdGUv dGVtcGxhdGUKCmRpZmYgLS1naXQgYS9jb21tb24vc2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRl eCBiMGZjZmQwNDkyNmUuLjEyMWMzMTY0ZjkyYiAxMDA2NDQKLS0tIGEvY29tbW9uL3NobGlicwor KysgYi9jb21tb24vc2hsaWJzCkBAIC00MTEwLDMgKzQxMTAsMjAgQEAgbGliYXd0X3hhd3Quc28g b3BlbmpkazE3LWpyZS0xNy4wLjErMTJfMQogbGliamF2YS5zbyBvcGVuamRrMTctanJlLTE3LjAu MSsxMl8xCiBsaWJqbGkuc28gb3BlbmpkazE3LWpyZS0xNy4wLjErMTJfMQogbGlianZtLnNvIG9w ZW5qZGsxNy1qcmUtMTcuMC4xKzEyXzEKK2xpYmF2aWYuc28uMTIgbGliYXZpZi0wLjkuMl8xCits aWJrbWxiYXNlLnNvLjEgbGlia21sLTEuMy4wXzEKK2xpYmttbGRvbS5zby4xIGxpYmttbC0xLjMu MF8xCitsaWJrbWxlbmdpbmUuc28uMSBsaWJrbWwtMS4zLjBfMQorbGlia21scmVnaW9uYXRvci5z by4xIGxpYmttbC0xLjMuMF8xCitsaWJrbWx4c2Quc28uMSBsaWJrbWwtMS4zLjBfMQorbGlic3Bh dGlhbGl0ZS5zby43IGxpYnNwYXRpYWxpdGUtNS4wLjBfMQorbGlic3BhdGlhbGluZGV4LnNvLjYg bGlic3BhdGlhbGluZGV4LTEuOS4zXzEKK2xpYmdyYXNzX2dpcy43Ljguc28gZ3Jhc3MtNy44LjVf MQorbGliZ3Jhc3NfcmFzdGVyLjcuOC5zbyBncmFzcy03LjguNV8xCitsaWJncmFzc19ncHJvai43 Ljguc28gZ3Jhc3MtNy44LjVfMQorbGliZ3Jhc3NfZGJtaWNsaWVudC43Ljguc28gZ3Jhc3MtNy44 LjVfMQorbGliZ3Jhc3NfdmVjdG9yLjcuOC5zbyBncmFzcy03LjguNV8xICAgIAorbGliZ3Jhc3Nf ZGJtaWJhc2UuNy44LnNvIGdyYXNzLTcuOC41XzEKK2xpYmdyYXNzX2ltYWdlcnkuNy44LnNvIGdy YXNzLTcuOC41XzEKK2xpYmttbGNvbnZlbmllbmNlLnNvLjEgbGlia21sLTEuMy4wXzEKK21vZF9z cGF0aWFsaXRlLnNvLjcgbGlic3BhdGlhbGl0ZS01LjAuMF8xCmRpZmYgLS1naXQgYS9zcmNwa2dz L2xpYnNwYXRpYWxpdGUtZGV2ZWwgYi9zcmNwa2dzL2xpYnNwYXRpYWxpdGUtZGV2ZWwKbmV3IGZp bGUgbW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi41ODhiYTJhZDdjMDAKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2xpYnNwYXRpYWxpdGUtZGV2ZWwKQEAgLTAsMCArMSBAQAorbGli c3BhdGlhbGl0ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGlic3BhdGlhbGl0ZS9wYXRjaGVzL2Rpc2FibGVfY2hlY2tfc3FsLnBhdGNoIGIvc3JjcGtn cy9saWJzcGF0aWFsaXRlL3BhdGNoZXMvZGlzYWJsZV9jaGVja19zcWwucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NTFjMWFjMTcyNGQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYnNwYXRpYWxpdGUvcGF0Y2hlcy9kaXNhYmxlX2NoZWNrX3NxbC5w YXRjaApAQCAtMCwwICsxLDI5IEBACitkaXNhYmxlIGNoZWNrX3NxbF9zdG10IHRlc3QKKworaHR0 cHM6Ly93d3cuZ2FpYS1naXMuaXQvZm9zc2lsL2xpYnNwYXRpYWxpdGUvdGt0dmlldy8zZTQ2MzQ5 YmYyYmZjNThiM2UzMDUxZDFmZjdjYWI3M2VlZDE5YTg4P3BsYWludGV4dAorCistLS0gYS90ZXN0 L01ha2VmaWxlLmFtCTIwMjAtMDgtMjMgMTg6NDY6MjMuMDAwMDAwMDAwICswMjAwCisrKysgYi90 ZXN0L01ha2VmaWxlLmFtCTIwMjAtMTItMjIgMTQ6NDU6MTAuMjA2MDg1NTE1ICswMTAwCitAQCAt MzEsMTAgKzMxLDYgQEAKKyAJCWNoZWNrX2dhaWFfdXRmOCBcCisgCQljaGVja19leHRlbnNpb24g XAorIAkJY2hlY2tfcmVjb3Zlcl9nZW9tIFwKKy0JCWNoZWNrX3NxbF9zdG10IFwKKy0JCWNoZWNr X3NxbF9zdG10X3RpbnkgXAorLQkJY2hlY2tfc3FsX3N0bXRfbGVnYWN5IFwKKy0JCWNoZWNrX3Nx bF9zdG10X2V4dGVuc2lvbiBcCisgCQljaGVja19tdWx0aXRocmVhZCBcCisgCQljaGVja192aXJ0 dWFsdGFibGUxIFwKKyAJCWNoZWNrX3ZpcnR1YWx0YWJsZTIgXAorLS0tIGEvdGVzdC9NYWtlZmls ZS5pbgkyMDIwLTA4LTIzIDE4OjQ2OjIzLjAwMDAwMDAwMCArMDIwMAorKysrIGIvdGVzdC9NYWtl ZmlsZS5pbgkyMDIwLTEyLTIyIDE0OjQxOjA2LjQxNjMzNTczNyArMDEwMAorQEAgLTEwMiw5ICsx MDIsNiBAQAorIAljaGVja194bHNfbG9hZCQoRVhFRVhUKSBjaGVja19tYXRoX2Z1bmNzJChFWEVF WFQpIFwKKyAJY2hlY2tfZ2FpYV91dGlsJChFWEVFWFQpIGNoZWNrX2dhaWFfdXRmOCQoRVhFRVhU KSBcCisgCWNoZWNrX2V4dGVuc2lvbiQoRVhFRVhUKSBjaGVja19yZWNvdmVyX2dlb20kKEVYRUVY VCkgXAorLQljaGVja19zcWxfc3RtdCQoRVhFRVhUKSBjaGVja19zcWxfc3RtdF90aW55JChFWEVF WFQpIFwKKy0JY2hlY2tfc3FsX3N0bXRfbGVnYWN5JChFWEVFWFQpIFwKKy0JY2hlY2tfc3FsX3N0 bXRfZXh0ZW5zaW9uJChFWEVFWFQpIGNoZWNrX211bHRpdGhyZWFkJChFWEVFWFQpIFwKKyAJY2hl Y2tfdmlydHVhbHRhYmxlMSQoRVhFRVhUKSBjaGVja192aXJ0dWFsdGFibGUyJChFWEVFWFQpIFwK KyAJY2hlY2tfdmlydHVhbHRhYmxlMyQoRVhFRVhUKSBjaGVja192aXJ0dWFsdGFibGU0JChFWEVF WFQpIFwKKyAJY2hlY2tfdmlydHVhbHRhYmxlNSQoRVhFRVhUKSBjaGVja192aXJ0dWFsdGFibGU2 JChFWEVFWFQpIFwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3BhdGlhbGl0ZS90ZW1wbGF0ZSBi L3NyY3BrZ3MvbGlic3BhdGlhbGl0ZS90ZW1wbGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjJlYTE3MDFkOGFlNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv bGlic3BhdGlhbGl0ZS90ZW1wbGF0ZQpAQCAtMCwwICsxLDQyIEBACisjIFRlbXBsYXRlIGZpbGUg Zm9yICdsaWJzcGF0aWFsaXRlJworcGtnbmFtZT1saWJzcGF0aWFsaXRlCit2ZXJzaW9uPTUuMC4x CityZXZpc2lvbj0xCitidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCitjb25maWd1cmVfYXJncz0i LS1kaXNhYmxlLXJ0dG9wbyIKK2hvc3RtYWtlZGVwZW5kcz0icGtnLWNvbmZpZyBsaWJ4bWwyIgor bWFrZWRlcGVuZHM9ImZyZWV4bC1kZXZlbAorIGdlb3MtZGV2ZWwKKyBsaWJ4bWwyLWRldmVsCisg bWluaXppcC1kZXZlbAorIHByb2otZGV2ZWwKKyBzcWxpdGUtZGV2ZWwKKyB6bGliLWRldmVsIgor ZGVwZW5kcz0ic3FsaXRlIgorc2hvcnRfZGVzYz0iR2Vvc3BhdGlhbCBleHRlbnNpb24gZm9yIFNR TGl0ZSIKK21haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5Adm9pZGxpbnV4Lm9yZz4iCitsaWNl bnNlPSJNUEwtMS4wIgoraG9tZXBhZ2U9Imh0dHBzOi8vd3d3LmdhaWEtZ2lzLml0L2Zvc3NpbC9s aWJzcGF0aWFsaXRlL2luZGV4IgorZGlzdGZpbGVzPSJodHRwOi8vd3d3LmdhaWEtZ2lzLml0L2dh aWEtc2lucy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmd6IgorY2hlY2tzdW09ZWVjYmM5NDMx MWM3ODAxMmQwNTllYmMwZmFlODZlYTVlZjZlZWNiMTMzMDNlNmU4MmIzNzUzYzFiMzQwOWU5OAor CitDRkxBR1M9Ii1EQUNDRVBUX1VTRV9PRl9ERVBSRUNBVEVEX1BST0pfQVBJX0giCisKK2lmIFsg IiRDUk9TU19CVUlMRCIgXTsgdGhlbgorCWhvc3RtYWtlZGVwZW5kcys9IiBsaWJ0b29sIGdlb3Mt ZGV2ZWwiCitmaQorCitwb3N0X2luc3RhbGwoKSB7CisJdmxpY2Vuc2UgQ09QWUlORworfQorCits aWJzcGF0aWFsaXRlLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHBrZ25hbWU+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCisJc2hvcnRfZGVzYys9IiAtIGRldmVsb3BtZW50IGZpbGVzIgor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZQorCQl2bW92ZSB1c3IvbGliL3Br Z2NvbmZpZworCQl2bW92ZSAidXNyL2xpYi8qLnNvIgorCQl2bW92ZSAidXNyL2xpYi8qLmEiCisJ fQorfQoKRnJvbSA2YjZiYzkxZDYwNDRhZTg1MTM5NjFlMjUyYmYzZGI5NTI1MzBmYzQzIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBOeXg3MCA8bi55LnhAYmx1ZXdpbi5jaD4KRGF0ZTog VGh1LCAyNiBOb3YgMjAyMCAxODo0NzoyNSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDMvMTZdIE5l dyBwYWNrYWdlOiBsaWJrbWwtMS4zLjAKCi0tLQogc3JjcGtncy9saWJrbWwtZGV2ZWwgICAgICAg ICAgICAgICAgICAgfCAgMSArCiBzcmNwa2dzL2xpYmttbC9wYXRjaGVzL05PVU5DUllQVC5wYXRj aCB8IDE3ICsrKysrKysrKysrKysrKysKIHNyY3BrZ3MvbGlia21sL3RlbXBsYXRlICAgICAgICAg ICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg NDUgaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvbGlia21sLWRldmVs CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9saWJrbWwvcGF0Y2hlcy9OT1VOQ1JZUFQucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xpYmttbC90ZW1wbGF0ZQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGlia21sLWRldmVsIGIvc3JjcGtncy9saWJrbWwtZGV2ZWwKbmV3IGZpbGUg bW9kZSAxMjAwMDAKaW5kZXggMDAwMDAwMDAwMDAwLi5jZjEyYmUxMDJmNDIKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2xpYmttbC1kZXZlbApAQCAtMCwwICsxIEBACitsaWJrbWwKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmttbC9wYXRjaGVz L05PVU5DUllQVC5wYXRjaCBiL3NyY3BrZ3MvbGlia21sL3BhdGNoZXMvTk9VTkNSWVBULnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWI3ZTAxNmMwZTAyCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJrbWwvcGF0Y2hlcy9OT1VOQ1JZUFQucGF0Y2gK QEAgLTAsMCArMSwxNyBAQAorbWluaXppcC9jcnlwdC5oIHdhcyByZW1vdmVkIGZyb20gdGhlIHBh Y2tldCBtaW5pemlwLTEuMi4xMV8yLiAKKword2l0aCAiI2RlZmluZSBOT1VOQ1JZUFQiIGxpYmtt bCBjYW4gYmUgYnVpbHQgd2l0aG91dCAiY3J5cHQuaCIKK2h0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvY29tbWl0Lzk1MmFjOTEzY2YKK2h0dHBzOi8vZ2l0aHViLmNv bS9tYWRsZXIvemxpYi9wdWxsLzIyOQorCistLS0gYS9zcmMva21sL2Jhc2UvY29udHJpYi9taW5p emlwL3VuemlwLmMJMjAxNS0xMi0yMSAxODoyMzowNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBiL3Ny Yy9rbWwvYmFzZS9jb250cmliL21pbml6aXAvdW56aXAuYwkyMDIwLTExLTI2IDE1OjQ1OjU1LjAz MzgzNTgxNiArMDEwMAorQEAgLTQyLDcgKzQyLDcgQEAKKyAjaW5jbHVkZSA8emxpYi5oPiAvL1JS CisgI2luY2x1ZGUgInVuemlwLmgiCisgI2luY2x1ZGUgImlvbWVtX3NpbXBsZS5oIgorLSN1bmRl ZiBOT1VOQ1JZUFQKKysjZGVmaW5lIE5PVU5DUllQVAorIAorICNpZmRlZiBTVERDCisgIyAgaW5j bHVkZSA8c3RkZGVmLmg+CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmttbC90ZW1wbGF0ZSBiL3Ny Y3BrZ3MvbGlia21sL3RlbXBsYXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uYjY3ZWVjZTRkOGJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9saWJrbWwvdGVt cGxhdGUKQEAgLTAsMCArMSwyNyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlia21sJworcGtn bmFtZT1saWJrbWwKK3ZlcnNpb249MS4zLjAKK3JldmlzaW9uPTEKK2J1aWxkX3N0eWxlPWNtYWtl CittYWtlZGVwZW5kcz0iYm9vc3QtZGV2ZWwKKyBleHBhdC1kZXZlbAorIG1pbml6aXAtZGV2ZWwK KyB1cmlwYXJzZXItZGV2ZWwKKyB6bGliLWRldmVsIgorc2hvcnRfZGVzYz0iTGlicmFyeSB0byBt YW5pcHVsYXRlIEtNTCBPR0MgZmlsZXMiCittYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZv aWRsaW51eC5vcmc+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKK2hvbWVwYWdlPSJodHRw czovL2dpdGh1Yi5jb20vbGlia21sL2xpYmttbCIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIu Y29tL2xpYmttbC9saWJrbWwvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5neiIKK2NoZWNrc3VtPTg4 OTI0MzllNTU3MDA5MTk2NWFhZmZlMzBiMDg2MzFmZGY3Y2E3ZjgxZjY0OTViNDY0OGYwOTUwZDdl YTc5NjMKKworbGlia21sLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtzb3VyY2Vwa2d9 Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBkZXZlbG9wbWVudCBm aWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUKKwkJdm1vdmUgdXNy L2xpYi9wa2djb25maWcKKwkJdm1vdmUgdXNyL2xpYi9jbWFrZQorCQl2bW92ZSAidXNyL2xpYi8q LnNvIgorCX0KK30KCkZyb20gOWNkNDJlMTQzYjhmMDlkZmEyNTRiMGQzZGI0MDA2OGNhMWE0Mjlj NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJqYW4gTW9zc2VsIDxhcmphbm1vc3Nl bEBnbWFpbC5jb20+CkRhdGU6IE1vbiwgMTQgRmViIDIwMjIgMTM6MDc6NTEgKzAxMDAKU3ViamVj dDogW1BBVENIIDA0LzE2XSBsaWJnZGFsOiB1cGRhdGUgdG8gMy40LjEgYW5kIHJlYnVpbGQgYWdh aW5zdCBwcm9qLTcuMi4xCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogLi4uZTE2ZTI3YzVmYzRjNDkxZGViZTUwYmYyYjdmM2U5NGVk MzM0LnBhdGNoIHwgIDUzIC0tLS0tLS0tLQogLi4uYzQ4OTNlNmQxNGQ0ODhkZmVkMjU3NDVkNzlm MTFiZWU0NWI5LnBhdGNoIHwgIDMxIC0tLS0tLQogc3JjcGtncy9saWJnZGFsL3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgIHwgMTA1ICsrKysrKysrKysrKysrKystLQogc3JjcGtncy9weXRo b24zLWdkYWwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIDUgZmlsZXMgY2hhbmdl ZCwgOTUgaW5zZXJ0aW9ucygrKSwgOTcgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9saWJnZGFsL3BhdGNoZXMvOWVmOGUxNmUyN2M1ZmM0YzQ5MWRlYmU1MGJmMmI3ZjNl OTRlZDMzNC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGliZ2RhbC9wYXRjaGVz L2FiNzJjNDg5M2U2ZDE0ZDQ4OGRmZWQyNTc0NWQ3OWYxMWJlZTQ1YjkucGF0Y2gKIGNyZWF0ZSBt b2RlIDEyMDAwMCBzcmNwa2dzL3B5dGhvbjMtZ2RhbAoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxp YnMgYi9jb21tb24vc2hsaWJzCmluZGV4IDEyMWMzMTY0ZjkyYi4uNjJiNTczOTg2MDUxIDEwMDY0 NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxpYnMKQEAgLTI1MTAsNyArMjUx MCw3IEBAIGxpYnUyZi1ob3N0LnNvLjAgbGlidTJmLWhvc3QtMS4xLjEwXzUKIGxpYnUyZi1zZXJ2 ZXIuc28uMCBsaWJ1MmYtc2VydmVyLTEuMS4wXzkKIGxpYnNxbGNpcGhlci5zby4wIHNxbGNpcGhl ci00LjMuMF8zCiBsaWJndGEuc28uMSBsaWJndGEtMS4yLjBfMQotbGliZ2RhbC5zby4yNiBsaWJn ZGFsLTMuMC40XzkKK2xpYmdkYWwuc28uMzAgbGliZ2RhbC0zLjQuMV8xCiBsaWJvc2dWaWV3ZXIu c28uMTMxIG9zZy0zLjQuMV8xCiBsaWJvc2dTaGFkb3cuc28uMTMxIG9zZy0zLjQuMV8xCiBsaWJv c2dQYXJ0aWNsZS5zby4xMzEgb3NnLTMuNC4xXzEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliZ2Rh bC9wYXRjaGVzLzllZjhlMTZlMjdjNWZjNGM0OTFkZWJlNTBiZjJiN2YzZTk0ZWQzMzQucGF0Y2gg Yi9zcmNwa2dzL2xpYmdkYWwvcGF0Y2hlcy85ZWY4ZTE2ZTI3YzVmYzRjNDkxZGViZTUwYmYyYjdm M2U5NGVkMzM0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjhlZGViMzJj NzcuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xpYmdkYWwvcGF0Y2hlcy85ZWY4ZTE2ZTI3 YzVmYzRjNDkxZGViZTUwYmYyYjdmM2U5NGVkMzM0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NTMgKzAsMCBAQAotRnJvbSA5ZWY4ZTE2ZTI3YzVmYzRjNDkxZGViZTUwYmYyYjdmM2U5NGVkMzM0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1 bHRAc3BhdGlhbHlzLmNvbT4KLURhdGU6IE1vbiwgNSBPY3QgMjAyMCAxMjoxMTo1MiArMDIwMAot U3ViamVjdDogW1BBVENIXSBKUEVHMjAwMDogbWFrZSBpdCBidWlsZCB3aXRoIEphc3BlciAyLjAu MjEgKGZpeGVzICMzMDEyKQotCi0tLS0KLSBnZGFsL2ZybXRzL2pwZWcyMDAwL2pwZWcyMDAwX3Zz aWxfaW8uY3BwIHwgMTYgKysrKysrKysrLS0tLS0tLQotIGdkYWwvZnJtdHMvanBlZzIwMDAvanBl ZzIwMDBkYXRhc2V0LmNwcCAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9u cygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dkYWwvZnJtdHMvanBlZzIwMDAv anBlZzIwMDBfdnNpbF9pby5jcHAgYi9nZGFsL2ZybXRzL2pwZWcyMDAwL2pwZWcyMDAwX3ZzaWxf aW8uY3BwCi1pbmRleCAxMGE0Zjk2ZjBlZS4uZWJjYWM0MDEwY2UgMTAwNjQ0Ci0tLS0gYS9mcm10 cy9qcGVnMjAwMC9qcGVnMjAwMF92c2lsX2lvLmNwcAotKysrIGIvZnJtdHMvanBlZzIwMDAvanBl ZzIwMDBfdnNpbF9pby5jcHAKLUBAIC05NCwxMyArOTQsMjQgQEAKLSAqIEZpbGUgc3RyZWFtIG9i amVjdC4KLSBcKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotCi0rI2lmIGRlZmluZWQoUFJJamFzX3Nl cWVudCkKLStzdGF0aWMgaW50IEpQRUcyMDAwX1ZTSUxfcmVhZChqYXNfc3RyZWFtX29ial90ICpv YmosIGNoYXIgKmJ1ZiwgdW5zaWduZWQgY250KQotKyNlbHNlCi0gc3RhdGljIGludCBKUEVHMjAw MF9WU0lMX3JlYWQoamFzX3N0cmVhbV9vYmpfdCAqb2JqLCBjaGFyICpidWYsIGludCBjbnQpCi0r I2VuZGlmCi0gewotICAgICBqYXNfc3RyZWFtX1ZTSUZMX3QgKmZpbGVvYmogPSBKQVNfQ0FTVChq YXNfc3RyZWFtX1ZTSUZMX3QgKiwgb2JqKTsKLSAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4o VlNJRlJlYWRMKGJ1ZiwgMSwgY250LCBmaWxlb2JqLT5mcCkpOwotIH0KLQotKyNpZiBkZWZpbmVk KEpBU19JTkNMVURFX0pQMl9DT0RFQykKLSsvLyBKYXNwZXIgMi4wLjIxCi0rc3RhdGljIGludCBK UEVHMjAwMF9WU0lMX3dyaXRlKGphc19zdHJlYW1fb2JqX3QgKm9iaiwgY29uc3QgY2hhciAqYnVm LCB1bnNpZ25lZCBpbnQgY250KQotKyNlbGlmIGRlZmluZWQoUFJJamFzX3NlcWVudCkKLStzdGF0 aWMgaW50IEpQRUcyMDAwX1ZTSUxfd3JpdGUoamFzX3N0cmVhbV9vYmpfdCAqb2JqLCBjaGFyICpi dWYsIHVuc2lnbmVkIGludCBjbnQpCi0rI2Vsc2UKLSBzdGF0aWMgaW50IEpQRUcyMDAwX1ZTSUxf d3JpdGUoamFzX3N0cmVhbV9vYmpfdCAqb2JqLCBjaGFyICpidWYsIGludCBjbnQpCi0rI2VuZGlm Ci0gewotICAgICBqYXNfc3RyZWFtX1ZTSUZMX3QgKmZpbGVvYmogPSBKQVNfQ0FTVChqYXNfc3Ry ZWFtX1ZTSUZMX3QgKiwgb2JqKTsKLSAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludD4oVlNJRldy aXRlTChidWYsIDEsIGNudCwgZmlsZW9iai0+ZnApKTsKLQotZGlmZiAtLWdpdCBhL2dkYWwvZnJt dHMvanBlZzIwMDAvanBlZzIwMDBkYXRhc2V0LmNwcCBiL2dkYWwvZnJtdHMvanBlZzIwMDAvanBl ZzIwMDBkYXRhc2V0LmNwcAotaW5kZXggYTVhNmIyNThlZDkuLmJkMWU3NzYzMTg2IDEwMDY0NAot LS0tIGEvZnJtdHMvanBlZzIwMDAvanBlZzIwMDBkYXRhc2V0LmNwcAotKysrIGIvZnJtdHMvanBl ZzIwMDAvanBlZzIwMDBkYXRhc2V0LmNwcAotQEAgLTUxMyw3ICs1MTMsNyBAQCBpbnQgSlBFRzIw MDBEYXRhc2V0OjpEZWNvZGVJbWFnZSgpCi0gICAgICAgICBmb3IgKCBpQmFuZCA9IDA7IGlCYW5k IDwgbkJhbmRzOyBpQmFuZCsrICkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBKUEVHMjAwMFJh c3RlckJhbmQqIHBvQmFuZCA9IChKUEVHMjAwMFJhc3RlckJhbmQqKSBHZXRSYXN0ZXJCYW5kKGlC YW5kKzEpOwotLSAgICAgICAgICAgIGlmIChwb0JhbmQtPmlEZXB0aCAhPSBqYXNfaW1hZ2VfY21w dHByZWMoIHBzSW1hZ2UsIGlCYW5kICkgfHwKLSsgICAgICAgICAgICBpZiAocG9CYW5kLT5pRGVw dGggIT0gc3RhdGljX2Nhc3Q8aW50PihqYXNfaW1hZ2VfY21wdHByZWMoIHBzSW1hZ2UsIGlCYW5k ICkpIHx8Ci0gICAgICAgICAgICAgICAgIHBvQmFuZC0+YlNpZ25lZG5lc3MgIT0gamFzX2ltYWdl X2NtcHRzZ25kKCBwc0ltYWdlLCBpQmFuZCApKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgICAgQ1BMRXJyb3IoQ0VfRmFpbHVyZSwgQ1BMRV9BcHBEZWZpbmVkLApkaWZmIC0tZ2l0IGEv c3JjcGtncy9saWJnZGFsL3BhdGNoZXMvYWI3MmM0ODkzZTZkMTRkNDg4ZGZlZDI1NzQ1ZDc5ZjEx YmVlNDViOS5wYXRjaCBiL3NyY3BrZ3MvbGliZ2RhbC9wYXRjaGVzL2FiNzJjNDg5M2U2ZDE0ZDQ4 OGRmZWQyNTc0NWQ3OWYxMWJlZTQ1YjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDY0M2VhYzg4MmY2Zi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGliZ2RhbC9wYXRj aGVzL2FiNzJjNDg5M2U2ZDE0ZDQ4OGRmZWQyNTc0NWQ3OWYxMWJlZTQ1YjkucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGFiNzJjNDg5M2U2ZDE0ZDQ4OGRmZWQyNTc0 NWQ3OWYxMWJlZTQ1YjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmVuIFJvdWF1 bHQgPGV2ZW4ucm91YXVsdEBzcGF0aWFseXMuY29tPgotRGF0ZTogTW9uLCAxMCBBdWcgMjAyMCAx NzoyNjo1MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBKUEVHMjAwMDogZml4IGJ1aWxkIHdpdGgg SmFzcGVyIDIuMC4xNyAoZml4ZXMgIzI4NDQpCi0KLS0tLQotIGdkYWwvZnJtdHMvanBlZzIwMDAv anBlZzIwMDBkYXRhc2V0LmNwcCB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlv bnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZGFsL2ZybXRzL2pwZWcyMDAw L2pwZWcyMDAwZGF0YXNldC5jcHAgYi9nZGFsL2ZybXRzL2pwZWcyMDAwL2pwZWcyMDAwZGF0YXNl dC5jcHAKLWluZGV4IDNlNjY4ZmZlNTAzLi4yZDNmNGU0Njg3NiAxMDA2NDQKLS0tLSBhL2ZybXRz L2pwZWcyMDAwL2pwZWcyMDAwZGF0YXNldC5jcHAKLSsrKyBiL2ZybXRzL2pwZWcyMDAwL2pwZWcy MDAwZGF0YXNldC5jcHAKLUBAIC00ODQsNyArNDg0LDcgQEAgaW50IEpQRUcyMDAwRGF0YXNldDo6 RGVjb2RlSW1hZ2UoKQotICAgICAvKiB0aGUgSlAyIGJveGVzIG1hdGNoIHRoZSBvbmVzIG9mIHRo ZSBjb2RlIHN0cmVhbSAqLwotICAgICBpZiAobkJhbmRzICE9IDApCi0gICAgIHsKLS0gICAgICAg IGlmIChuQmFuZHMgIT0gamFzX2ltYWdlX251bWNtcHRzKCBwc0ltYWdlICkpCi0rICAgICAgICBp ZiAobkJhbmRzICE9IHN0YXRpY19jYXN0PGludD4oamFzX2ltYWdlX251bWNtcHRzKCBwc0ltYWdl ICkpKQotICAgICAgICAgewotICAgICAgICAgICAgIENQTEVycm9yKENFX0ZhaWx1cmUsIENQTEVf QXBwRGVmaW5lZCwKLSAgICAgICAgICAgICAgICAgICAgICAiVGhlIG51bWJlciBvZiBjb21wb25l bnRzIGluZGljYXRlZCBpbiB0aGUgSUhEUiBib3ggKCVkKSBtaXNtYXRjaCAiCi1AQCAtNTk1LDcg KzU5NSw3IEBAIEdEQUxEYXRhc2V0ICpKUEVHMjAwMERhdGFzZXQ6Ok9wZW4oIEdEQUxPcGVuSW5m byAqIHBvT3BlbkluZm8gKQotIAotIHsKLSAgICAgaW50ICAgICAgICAgaUZvcm1hdDsKLS0gICAg Y2hhciAgICAgICAgKnBzekZvcm1hdE5hbWUgPSBudWxscHRyOwotKyAgICBjb25zdCBjaGFyICpw c3pGb3JtYXROYW1lID0gbnVsbHB0cjsKLSAKLSAgICAgaWYgKCFJZGVudGlmeShwb09wZW5JbmZv KSkKLSAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJnZGFs L3RlbXBsYXRlIGIvc3JjcGtncy9saWJnZGFsL3RlbXBsYXRlCmluZGV4IDg3MGFiMjJiNGNiYS4u NWZjYTU3OTk1NGZhIDEwMDY0NAotLS0gYS9zcmNwa2dzL2xpYmdkYWwvdGVtcGxhdGUKKysrIGIv c3JjcGtncy9saWJnZGFsL3RlbXBsYXRlCkBAIC0xLDMwICsxLDEwMCBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAnbGliZ2RhbCcKIHBrZ25hbWU9bGliZ2RhbAotdmVyc2lvbj0zLjAuNAotcmV2aXNp b249MTEKK3ZlcnNpb249My40LjEKK3JldmlzaW9uPTEKIHdya3NyYz0iZ2RhbC0ke3ZlcnNpb259 IgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQotY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1saWJs em1hIC0td2l0aC13ZWJwIC0td2l0aC16c3RkIC0td2l0aC1wb2RvZm8gLS13aXRoLW9wZW5jbD15 ZXMiCi1ob3N0bWFrZWRlcGVuZHM9ImdldHRleHQtZGV2ZWwgcGtnLWNvbmZpZyBweXRob24tbnVt cHkganNvbi1jLWRldmVsIgotbWFrZWRlcGVuZHM9ImZyZWV4bC1kZXZlbCBnZW9zLWRldmVsIGph c3Blci1kZXZlbCBqc29uLWMtZGV2ZWwKLSBsaWJjdXJsLWRldmVsIGxpYm9wZW5leHItZGV2ZWwg bGlib3BlbmpwZWcyLWRldmVsIGxpYnBvZG9mby1kZXZlbCBsaWJxaHVsbC1kZXZlbAotIGxpYndl YnAtZGV2ZWwgbGlieG1sMi1kZXZlbCBsaWJ6c3RkLWRldmVsIG5ldGNkZi1kZXZlbCBvcGVuY2wy LWhlYWRlcnMgcGNyZTItZGV2ZWwKLSBwcm9qLWRldmVsIHNxbGl0ZS1kZXZlbCBvY2wtaWNkLWRl dmVsIgorY29uZmlndXJlX2FyZ3M9IgorIC0td2l0aC1leHBhdD15ZXMKKyAtLXdpdGgtaGRmNT15 ZXMKKyAtLXdpdGgta21sPXllcworIC0td2l0aC1saWJsem1hPXllcworIC0td2l0aC1vcGVuY2w9 eWVzCisgLS13aXRoLXBnPXllcworIC0td2l0aC1wb2RvZm89eWVzCisgLS13aXRoLXB5dGhvbj15 ZXMKKyAtLXdpdGgtc3BhdGlhbGl0ZT15ZXMKKyAtLXdpdGgtc3FsaXRlMz15ZXMKKyAtLXdpdGgt d2VicD15ZXMKKyAtLXdpdGgtenN0ZD15ZXMiCitob3N0bWFrZWRlcGVuZHM9ImdldHRleHQtZGV2 ZWwKKyBqc29uLWMtZGV2ZWwKKyBwa2ctY29uZmlnCisgcHl0aG9uMy1udW1weQorIHN3aWciCitt YWtlZGVwZW5kcz0iYm9vc3QtZGV2ZWwKKyBleHBhdC1kZXZlbAorIGZyZWV4bC1kZXZlbAorIGdl b3MtZGV2ZWwKKyBqYXNwZXItZGV2ZWwKKyBqc29uLWMtZGV2ZWwKKyBsaWJjdXJsLWRldmVsCisg bGlib3BlbmV4ci1kZXZlbAorIGxpYm9wZW5qcGVnMi1kZXZlbAorIGxpYnBvZG9mby1kZXZlbAor IGxpYnFodWxsLWRldmVsCisgbGlic3BhdGlhbGl0ZS1kZXZlbAorIGxpYndlYnAtZGV2ZWwKKyBs aWJ4bWwyLWRldmVsCisgbGlienN0ZC1kZXZlbAorIG5ldGNkZi1kZXZlbAorIG9jbC1pY2QtZGV2 ZWwKKyBvcGVuY2wyLWhlYWRlcnMKKyBwY3JlMi1kZXZlbAorIHByb2otZGV2ZWwKKyBweXRob24z LWRldmVsCisgc3FsaXRlLWRldmVsCisgbGlia21sLWRldmVsCisgcG9zdGdyZXNxbC1saWJzLWRl dmVsIgogc2hvcnRfZGVzYz0iR2Vvc3BhdGlhbCBEYXRhIEFic3RyYWN0aW9uIExpYnJhcnkiCiBt YWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgogbGljZW5zZT0iTUlU IgotaG9tZXBhZ2U9Imh0dHA6Ly93d3cuZ2RhbC5vcmcvIgotZGlzdGZpbGVzPSJodHRwOi8vZG93 bmxvYWQub3NnZW8ub3JnL2dkYWwvJHt2ZXJzaW9ufS9nZGFsLSR7dmVyc2lvbn0udGFyLnh6Igot Y2hlY2tzdW09NTU2OWE0ZGFhMWFiY2JiYTQ3YTlkNTM1MTcyZmMzMzUxOTRkOTIxNGZkYjk2Y2Qw ZjEzOWJiNTczMjlhZTI3Nwotc3VicGFja2FnZXM9ImxpYmdkYWwtZGV2ZWwgbGliZ2RhbC10b29s cyIKK2hvbWVwYWdlPSJodHRwczovL2dkYWwub3JnLyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRo dWIuY29tL09TR2VvL2dkYWwvcmVsZWFzZXMvZG93bmxvYWQvdiR7dmVyc2lvbn0vZ2RhbC0ke3Zl cnNpb259LnRhci5neiIKK2NoZWNrc3VtPWUzNjAzODdiYzI1ZWMyNDk0MGY0NmFmYmVhZGE0ODAw MmQ3MmM3NGFhZjllY2NmMmE0MGU4ZDc0ZTcxMWEyZTQKK3N1YnBhY2thZ2VzPSJweXRob24zLWdk YWwgbGliZ2RhbC1kZXZlbCBsaWJnZGFsLXRvb2xzIgorCitidWlsZF9vcHRpb25zPSJrbWwgcG9z dGdyZXNxbCIKK2J1aWxkX29wdGlvbnNfZGVmYXVsdD0ia21sIgogCiBpZiBbIC16ICIkQ1JPU1Nf QlVJTEQiIF07IHRoZW4KIAltYWtlZGVwZW5kcys9IiBoZGY1LWRldmVsIgogZmkKK0NGTEFHUz0i LXB0aHJlYWQgLUkke1hCUFNfQ1JPU1NfQkFTRX0vJHtweTNfaW5jfSIKK0xERkxBR1M9Ii1MJHtY QlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0iCisKK3Bvc3RfYnVpbGQoKSB7CisJaWYgWyAiJENS T1NTX0JVSUxEIiBdOyB0aGVuCisJCWV4cG9ydCBQWVBSRUZJWD0iJFhCUFNfQ1JPU1NfQkFTRSIK KwkJZXhwb3J0IFBZVEhPTlBBVEg9JHtYQlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0KKwkJZm9y IGYgaW4gJHtYQlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0vX3N5c2NvbmZpZ2RhdGFfKjsgZG8K KwkJCWY9JHtmIyMqL30KKwkJCWV4cG9ydCBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT0ke2Yl LnB5fQorCQlkb25lCisJZmkKKwlleHBvcnQgTERTSEFSRUQ9IiR7Q0N9ICRDRkxBR1MgLXNoYXJl ZCAkTERGTEFHUyIKKworCXJtIC1mIHN3aWcvcHl0aG9uLypfd3JhcC5jcHAKKwltYWtlIC1DIHN3 aWcvcHl0aG9uIGdlbmVyYXRlCisJY2Qgc3dpZy9weXRob24KKwlweXRob24zIHNldHVwLnB5IGJ1 aWxkCit9CiAKIHBvc3RfaW5zdGFsbCgpIHsKIAl2aW5zdGFsbCBnZGFsLnBjIDY0NCB1c3IvbGli L3BrZ2NvbmZpZwogCXZsaWNlbnNlIExJQ0VOU0UuVFhUCisJaWYgWyAiJENST1NTX0JVSUxEIiBd OyB0aGVuCisJCWV4cG9ydCBQWVBSRUZJWD0iJFhCUFNfQ1JPU1NfQkFTRSIKKwkJZXhwb3J0IFBZ VEhPTlBBVEg9JHtYQlBTX0NST1NTX0JBU0V9LyR7cHkzX2xpYn0KKwkJZm9yIGYgaW4gJHtYQlBT X0NST1NTX0JBU0V9LyR7cHkzX2xpYn0vX3N5c2NvbmZpZ2RhdGFfKjsgZG8KKwkJCWY9JHtmIyMq L30KKwkJCWV4cG9ydCBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT0ke2YlLnB5fQorCQlkb25l CisJZmkKKwlleHBvcnQgTERTSEFSRUQ9IiR7Q0N9ICRDRkxBR1MgLXNoYXJlZCAkTERGTEFHUyIK KworCWNkIHN3aWcvcHl0aG9uCisJcHl0aG9uMyBzZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PS91 c3IgLS1yb290PSRERVNURElSCiB9CiAKIGxpYmdkYWwtdG9vbHNfcGFja2FnZSgpIHsKQEAgLTQ2 LDMgKzExNiwxNCBAQCBsaWJnZGFsLWRldmVsX3BhY2thZ2UoKSB7CiAJCXZtb3ZlIHVzci9saWIv Ki5zbwogCX0KIH0KKworcHl0aG9uMy1nZGFsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0iJHtzb3Vy Y2Vwa2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBQeXRob24z IGJpbmRpbmdzIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2Jpbi8qLnB5IgorCQl2 bW92ZSAidXNyL2xpYi9weXRob24qIgorCQl2ZG9jIHN3aWcvcHl0aG9uL1JFQURNRS5yc3QKKwkJ dm1rZGlyIHVzci9zaGFyZS9weXRob24zLWdkYWwKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dz L3B5dGhvbjMtZ2RhbCBiL3NyY3BrZ3MvcHl0aG9uMy1nZGFsCm5ldyBmaWxlIG1vZGUgMTIwMDAw CmluZGV4IDAwMDAwMDAwMDAwMC4uMzc3ZDUwZGZjMmI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9weXRob24zLWdkYWwKQEAgLTAsMCArMSBAQAorbGliZ2RhbApcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKCkZyb20gMzIyZmNiNzE3N2NhM2E4NmIxNWJmYjllNmY2ZTRkNWMwNDlkMzFl MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJqYW4gTW9zc2VsIDxhcmphbm1vc3Nl bEBnbWFpbC5jb20+CkRhdGU6IFN1biwgMjcgSnVuIDIwMjEgMTk6MTY6MzQgKzAyMDAKU3ViamVj dDogW1BBVENIIDA1LzE2XSBwb3N0Z2lzOiB1cGRhdGUgdG8gMy4xLjU7IHJlYnVpbGQgYWdhaW5z dCBsaWJnZGFsLTMuNC4xCiBhbmQgcHJvai03LjIuMQoKLS0tCiBzcmNwa2dzL3Bvc3RnaXMvdGVt cGxhdGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wb3N0Z2lzL3RlbXBsYXRlIGIvc3JjcGtncy9w b3N0Z2lzL3RlbXBsYXRlCmluZGV4IGM4NzhkZTg5Y2ZjYi4uZjUyY2Q2NjU3OTg4IDEwMDY0NAot LS0gYS9zcmNwa2dzL3Bvc3RnaXMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9wb3N0Z2lzL3RlbXBs YXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncG9zdGdpcycKIHBrZ25h bWU9cG9zdGdpcwotdmVyc2lvbj0zLjEuNAordmVyc2lvbj0zLjEuNQogcmV2aXNpb249MQogYnVp bGRfc3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0td2l0aC1wcm9qZGlyPSR7 WEJQU19DUk9TU19CQVNFfS91c3IKQEAgLTE5LDcgKzE5LDcgQEAgbGljZW5zZT0iR1BMLTIuMC1v ci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL3Bvc3RnaXMubmV0LyIKIGNoYW5nZWxvZz0iaHR0 cHM6Ly9naXQub3NnZW8ub3JnL2dpdGVhL3Bvc3RnaXMvcG9zdGdpcy9yYXcvdGFnLyR7dmVyc2lv bn0vTkVXUyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9kb3dubG9hZC5vc2dlby5vcmcvcG9zdGdpcy9z b3VyY2UvcG9zdGdpcy0ke3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPWRjOGUzZmU4YmM1MzJl NDIyZjVkNzI0YzVhN2M0MzdmNjU1NTUxMTcxNmY2NDEwZDRkMmRiOTc2MmUxYTM3OTYKK2NoZWNr c3VtPWZjYjEwZDliNDk5ZmQ3OTM5OWJkOGRiOTBmMGIzMTM4MzdkMDAyMjNkMzAwODBkYWM0MDM0 MTllMDY3ZTRjMDYKIG5vY3Jvc3M9IkZJWE1FOiBDYW5ub3QgcnVuIHRlc3QgcHJvZ3JhbSB0byBk ZXRlcm1pbmUgUFJPSiB2ZXJzaW9uIgogCiBwcmVfY29uZmlndXJlKCkgewoKRnJvbSBhNjY3NzZk NGRmMDUzMjUwNDY3YjFiYzk3ZDFiNWU2ZjEwNGY0NWRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2VsQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAx NCBGZWIgMjAyMiAxMzoyMjo1OSArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDYvMTZdIHBvc3RnaXMt cG9zdGdyZXNxbDEzOiB1cGRhdGUgdG8gMy4xLjU7IHJlYnVpbGQgYWdhaW5zdAogbGliZ2RhbC0z LjQuMSBhbmQgcHJvai03LjIuMQoKLS0tCiBzcmNwa2dzL3Bvc3RnaXMtcG9zdGdyZXNxbDEzL3Rl bXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcG9zdGdpcy1wb3N0Z3Jlc3FsMTMvdGVtcGxh dGUgYi9zcmNwa2dzL3Bvc3RnaXMtcG9zdGdyZXNxbDEzL3RlbXBsYXRlCmluZGV4IDcwNmM4ZmI5 NjgxMC4uYTA1MTAyYTE0YmNhIDEwMDY0NAotLS0gYS9zcmNwa2dzL3Bvc3RnaXMtcG9zdGdyZXNx bDEzL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcG9zdGdpcy1wb3N0Z3Jlc3FsMTMvdGVtcGxhdGUK QEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdwb3N0Z2lzLXBvc3RncmVzcWwx MycKIHBrZ25hbWU9cG9zdGdpcy1wb3N0Z3Jlc3FsMTMKLXZlcnNpb249My4xLjQKK3ZlcnNpb249 My4xLjUKIHJldmlzaW9uPTIKIHdya3NyYz0icG9zdGdpcy0ke3ZlcnNpb259IgogYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQpAQCAtMjAsNyArMjAsNyBAQCBsaWNlbnNlPSJHUEwtMi4wLW9yLWxh dGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcG9zdGdpcy5uZXQvIgogY2hhbmdlbG9nPSJodHRwczov L2dpdC5vc2dlby5vcmcvZ2l0ZWEvcG9zdGdpcy9wb3N0Z2lzL3Jhdy90YWcvJHt2ZXJzaW9ufS9O RVdTIgogZGlzdGZpbGVzPSJodHRwczovL2Rvd25sb2FkLm9zZ2VvLm9yZy9wb3N0Z2lzL3NvdXJj ZS9wb3N0Z2lzLSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09ZGM4ZTNmZThiYzUzMmU0MjJm NWQ3MjRjNWE3YzQzN2Y2NTU1NTExNzE2ZjY0MTBkNGQyZGI5NzYyZTFhMzc5NgorY2hlY2tzdW09 ZmNiMTBkOWI0OTlmZDc5Mzk5YmQ4ZGI5MGYwYjMxMzgzN2QwMDIyM2QzMDA4MGRhYzQwMzQxOWUw NjdlNGMwNgogbm9jcm9zcz0iRklYTUU6IENhbm5vdCBydW4gdGVzdCBwcm9ncmFtIHRvIGRldGVy bWluZSBQUk9KIHZlcnNpb24iCiAKIHByZV9jb25maWd1cmUoKSB7CgpGcm9tIGNjYTc1NGU2NjRj MGI1ZTQ4OGE3ZTMzYmViOTVkMTA0NzRhM2M1ZjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZy b206IEFyamFuIE1vc3NlbCA8YXJqYW5tb3NzZWxAZ21haWwuY29tPgpEYXRlOiBNb24sIDE0IEZl YiAyMDIyIDEzOjI2OjU5ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwNy8xNl0gcG9zdGdpcy1wb3N0 Z3Jlc3FsMTQ6IHVwZGF0ZSB0byAzLjEuNTsgcmVidWlsZCBhZ2FpbnN0CiBsaWJnZGFsLTMuNC4x IGFuZCBwcm9qLTcuMi4xCgotLS0KIHNyY3BrZ3MvcG9zdGdpcy1wb3N0Z3Jlc3FsMTQvdGVtcGxh dGUgfCA0ICsrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9wb3N0Z2lzLXBvc3RncmVzcWwxNC90ZW1wbGF0ZSBi L3NyY3BrZ3MvcG9zdGdpcy1wb3N0Z3Jlc3FsMTQvdGVtcGxhdGUKaW5kZXggNmNlNDIzMWIxNzI2 Li5hZDhkMGM1YzQyNTMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcG9zdGdpcy1wb3N0Z3Jlc3FsMTQv dGVtcGxhdGUKKysrIGIvc3JjcGtncy9wb3N0Z2lzLXBvc3RncmVzcWwxNC90ZW1wbGF0ZQpAQCAt MSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3Bvc3RnaXMtcG9zdGdyZXNxbDE0Jwog cGtnbmFtZT1wb3N0Z2lzLXBvc3RncmVzcWwxNAotdmVyc2lvbj0zLjEuNAordmVyc2lvbj0zLjEu NQogcmV2aXNpb249MQogd3Jrc3JjPSJwb3N0Z2lzLSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1n bnUtY29uZmlndXJlCkBAIC0yMCw3ICsyMCw3IEBAIGxpY2Vuc2U9IkdQTC0yLjAtb3ItbGF0ZXIi CiBob21lcGFnZT0iaHR0cHM6Ly9wb3N0Z2lzLm5ldC8iCiBjaGFuZ2Vsb2c9Imh0dHBzOi8vZ2l0 Lm9zZ2VvLm9yZy9naXRlYS9wb3N0Z2lzL3Bvc3RnaXMvcmF3L3RhZy8ke3ZlcnNpb259L05FV1Mi CiBkaXN0ZmlsZXM9Imh0dHBzOi8vZG93bmxvYWQub3NnZW8ub3JnL3Bvc3RnaXMvc291cmNlL3Bv c3RnaXMtJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT1kYzhlM2ZlOGJjNTMyZTQyMmY1ZDcy NGM1YTdjNDM3ZjY1NTU1MTE3MTZmNjQxMGQ0ZDJkYjk3NjJlMWEzNzk2CitjaGVja3N1bT1mY2Ix MGQ5YjQ5OWZkNzkzOTliZDhkYjkwZjBiMzEzODM3ZDAwMjIzZDMwMDgwZGFjNDAzNDE5ZTA2N2U0 YzA2CiBub2Nyb3NzPSJGSVhNRTogQ2Fubm90IHJ1biB0ZXN0IHByb2dyYW0gdG8gZGV0ZXJtaW5l IFBST0ogdmVyc2lvbiIKIAogcHJlX2NvbmZpZ3VyZSgpIHsKCkZyb20gNjcwZGRmMmFhNDI3MDdl ZGEwMjE2NGUxZGJjOGRmNGY4MTQ2MTc1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTog QXJqYW4gTW9zc2VsIDxhcmphbm1vc3NlbEBnbWFpbC5jb20+CkRhdGU6IE1vbiwgOSBBdWcgMjAy MSAxOTo1MzoxNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDgvMTZdIHd4UHl0aG9uNDogYmFja3Bv cnQgcGF0Y2hlcywgYW5kIGZpeCB0ZXN0cwoKQmFja3BvcnRlZCBwYXRjaGVzOgotIHd4UHNldWRv REMgR0lMCi0gUHl0aG9uIDMuMTAgQUdXIEZsYXROb3RlYm9vayBwYXRjaAotIFB5dGhvbiAzLjEw IFNjcm9sbGVkV2luZG93IGFyZ3VtZW50IHR5cGVzCi0gUHl0aG9uIDMuMTAgSW50ZWdlciBkaXZp c2lvbgotIHd4LldpbmRvd0lEIGFuZCB3eC5SZWdpb24gYXJndW1lbnRzCi0tLQogLi4uL3BhdGNo ZXMvMDAwMi1QeXRob24tMy4xMC1pc3N1ZXMucGF0Y2ggICAgIHwgMzMxNyArKysrKysrKysrKysr KysrKwogLi4uLzAwMDMtUHl0aG9uLTMuMTAtQUdXLUZsYXROb3RlYm9vay5wYXRjaCAgIHwgICA1 NyArCiAuLi4vcGF0Y2hlcy9yZXN0b3JlLWdpbC1wc2V1ZG9kYy5wYXRjaCAgICAgICAgfCAgIDUy ICsKIHNyY3BrZ3Mvd3hQeXRob240L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICB8ICAgIDMg Ky0KIDQgZmlsZXMgY2hhbmdlZCwgMzQyOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy93eFB5dGhvbjQvcGF0Y2hlcy8wMDAyLVB5dGhvbi0z LjEwLWlzc3Vlcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvd3hQeXRob240L3Bh dGNoZXMvMDAwMy1QeXRob24tMy4xMC1BR1ctRmxhdE5vdGVib29rLnBhdGNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy93eFB5dGhvbjQvcGF0Y2hlcy9yZXN0b3JlLWdpbC1wc2V1ZG9kYy5w YXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvd3hQeXRob240L3BhdGNoZXMvMDAwMi1QeXRob24t My4xMC1pc3N1ZXMucGF0Y2ggYi9zcmNwa2dzL3d4UHl0aG9uNC9wYXRjaGVzLzAwMDItUHl0aG9u LTMuMTAtaXNzdWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uNmM4N2ZmOTY3ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy93eFB5dGhvbjQvcGF0 Y2hlcy8wMDAyLVB5dGhvbi0zLjEwLWlzc3Vlcy5wYXRjaApAQCAtMCwwICsxLDMzMTcgQEAKK0Zy b20gZjU1YTE3YzJkM2IzMzZjODJmYjQ0Zjc4MTZlYzYzMjE5ODQ3ZjRjYyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKK0Zyb206IFNjb3R0IFRhbGJlcnQgPHN3dEB0ZWNoaWUubmV0PgorRGF0ZTog RGVjIDIyIDIwMjEgMjA6MjM6NTQgKzAwMDAKK1N1YmplY3Q6IEZpeCBhIGJ1bmNoIG9mIFB5dGhv biAzLjEwIGlzc3VlcworCisKKy0tLQorCitkaWZmIC0tZ2l0IGEvMGQ0NDk2MjZkNmQyOThhZDk2 ZWJkMWQ1MTRkMGU0MjgzM2JjZTQ3MC5wYXRjaCBiLzBkNDQ5NjI2ZDZkMjk4YWQ5NmViZDFkNTE0 ZDBlNDI4MzNiY2U0NzAucGF0Y2gKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li5kMmNjZGRjCistLS0gL2Rldi9udWxsCisrKysgYi8wZDQ0OTYyNmQ2ZDI5OGFkOTZlYmQxZDUx NGQwZTQyODMzYmNlNDcwLnBhdGNoCitAQCAtMCwwICsxLDIyIEBACisrRnJvbSAwZDQ0OTYyNmQ2 ZDI5OGFkOTZlYmQxZDUxNGQwZTQyODMzYmNlNDcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor K0Zyb206IENhcm9saW5hIEZlaGVyIGRhIFNpbHZhIDxjYXJvbGZzdUBnbWFpbC5jb20+CisrRGF0 ZTogVHVlLCAxNiBOb3YgMjAyMSAwMToyNDozMSArMDAwMAorK1N1YmplY3Q6IFtQQVRDSF0gRml4 ZWQgaW50ZWdlciBkaXZpc2lvbiBpbiBQeXRob24gMworKworKy0tLQorKyB3eC9saWIvc3RhdHRl eHQucHkgfCAyICstCisrIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlv bigtKQorKworK2RpZmYgLS1naXQgYS93eC9saWIvc3RhdHRleHQucHkgYi93eC9saWIvc3RhdHRl eHQucHkKKytpbmRleCAyY2ZiNmU2NWEuLmU2MDZlNWE4OSAxMDA2NDQKKystLS0gYS93eC9saWIv c3RhdHRleHQucHkKKysrKysgYi93eC9saWIvc3RhdHRleHQucHkKKytAQCAtMzAyLDcgKzMwMiw3 IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgICAgICAgICAgICAgaWYgc3R5bGUgJiB3 eC5BTElHTl9SSUdIVDoKKysgICAgICAgICAgICAgICAgIHggPSB3aWR0aCAtIHcKKysgICAgICAg ICAgICAgaWYgc3R5bGUgJiB3eC5BTElHTl9DRU5URVI6CisrLSAgICAgICAgICAgICAgICB4ID0g KHdpZHRoIC0gdykvMgorKysgICAgICAgICAgICAgICAgeCA9ICh3aWR0aCAtIHcpLy8yCisrICAg ICAgICAgICAgIGRjLkRyYXdUZXh0KGxpbmUsIHgsIHkpCisrICAgICAgICAgICAgIHkgKz0gaAor KyAKK2RpZmYgLS1naXQgYS8zZWI5ZWIzMmRjMzI4NTQzNTAzOWY2YzQyMGMzOTg2NjUzNzJhMWFk LnBhdGNoIGIvM2ViOWViMzJkYzMyODU0MzUwMzlmNmM0MjBjMzk4NjY1MzcyYTFhZC5wYXRjaAor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjA4ZTU4YTAKKy0tLSAvZGV2L251 bGwKKysrKyBiLzNlYjllYjMyZGMzMjg1NDM1MDM5ZjZjNDIwYzM5ODY2NTM3MmExYWQucGF0Y2gK K0BAIC0wLDAgKzEsODQgQEAKKytGcm9tIDNlYjllYjMyZGMzMjg1NDM1MDM5ZjZjNDIwYzM5ODY2 NTM3MmExYWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogR2xlbiBXaGl0bmV5IDxn bGVuQHN0dWRpb2luZmluaXR5Lm9yZz4KKytEYXRlOiBUdWUsIDMxIEF1ZyAyMDIxIDExOjA2OjI3 IC0wNzAwCisrU3ViamVjdDogW1BBVENIXSBmaXg6IENvcnJlY3QgdHlwZXMgb2YgYXJndW1lbnRz IHRvCisrIFNjcm9sbGVkV2luZG93LlNldFNjcm9sbGJhcnMKKysKKystLS0KKysgZGVtby9NYXNr LnB5ICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KKysgZGVtby9PR0wucHkgICAgICAgICAgICAg ICAgICAgIHwgIDIgKy0KKysgd3gvbGliL2Fndy91bHRpbWF0ZWxpc3RjdHJsLnB5IHwgMTQgKysr KysrKy0tLS0tLS0KKysgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRp b25zKC0pCisrCisrZGlmZiAtLWdpdCBhL2RlbW8vTWFzay5weSBiL2RlbW8vTWFzay5weQorK2lu ZGV4IDVmMGMyY2RkZS4uMTA5YjhmMzBiIDEwMDY0NAorKy0tLSBhL2RlbW8vTWFzay5weQorKysr KyBiL2RlbW8vTWFzay5weQorK0BAIC01Niw3ICs1Niw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBw YXJlbnQpOgorKyAgICAgICAgIG1hc2sgPSB3eC5NYXNrKHNlbGYuYm1wX3dpdGhjb2xvdXJtYXNr LCB3eC5XSElURSkKKysgICAgICAgICBzZWxmLmJtcF93aXRoY29sb3VybWFzay5TZXRNYXNrKG1h c2spCisrIAorKy0gICAgICAgIHNlbGYuU2V0U2Nyb2xsYmFycygyMCwgMjAsIDcwMC8yMCwgNDYw LzIwKQorKysgICAgICAgIHNlbGYuU2V0U2Nyb2xsYmFycygyMCwgMjAsIDcwMC8vMjAsIDQ2MC8v MjApCisrIAorKyAgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfUEFJTlQsIHNlbGYuT25QYWludCkK KysgCisrZGlmZiAtLWdpdCBhL2RlbW8vT0dMLnB5IGIvZGVtby9PR0wucHkKKytpbmRleCA3MmNh NTQzZGQuLmQ0NzVlNTAxMSAxMDA2NDQKKystLS0gYS9kZW1vL09HTC5weQorKysrKyBiL2RlbW8v T0dMLnB5CisrQEAgLTI3Miw3ICsyNzIsNyBAQCBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBs b2csIGZyYW1lKToKKysgCisrICAgICAgICAgbWF4V2lkdGggID0gMTAwMAorKyAgICAgICAgIG1h eEhlaWdodCA9IDEwMDAKKystICAgICAgICBzZWxmLlNldFNjcm9sbGJhcnMoMjAsIDIwLCBtYXhX aWR0aC8yMCwgbWF4SGVpZ2h0LzIwKQorKysgICAgICAgIHNlbGYuU2V0U2Nyb2xsYmFycygyMCwg MjAsIG1heFdpZHRoLy8yMCwgbWF4SGVpZ2h0Ly8yMCkKKysgCisrICAgICAgICAgc2VsZi5sb2cg PSBsb2cKKysgICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWUKKytkaWZmIC0tZ2l0IGEvd3gvbGli L2Fndy91bHRpbWF0ZWxpc3RjdHJsLnB5IGIvd3gvbGliL2Fndy91bHRpbWF0ZWxpc3RjdHJsLnB5 CisraW5kZXggYzYwODY3Njg0Li4xNGZjNDFmODYgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy91 bHRpbWF0ZWxpc3RjdHJsLnB5CisrKysrIGIvd3gvbGliL2Fndy91bHRpbWF0ZWxpc3RjdHJsLnB5 CisrQEAgLTk2NTQsOCArOTY1NCw4IEBAIGRlZiBSZWNhbGN1bGF0ZVBvc2l0aW9ucyhzZWxmLCBu b1JlZnJlc2g9RmFsc2UpOgorKyAgICAgICAgICAgICAgICAgc2VsZi5fbGluZXNQZXJQYWdlID0g Y2xpZW50SGVpZ2h0Ly9saW5lSGVpZ2h0CisrIAorKyAgICAgICAgICAgICAgICAgc2VsZi5TZXRT Y3JvbGxiYXJzKFNDUk9MTF9VTklUX1gsIGxpbmVIZWlnaHQsCisrLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKHNlbGYuR2V0SGVhZGVyV2lkdGgoKS1kZWNyZW1lbnQpL1NDUk9M TF9VTklUX1gsCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVudGlyZUhl aWdodCArIGxpbmVIZWlnaHQgLSAxKS9saW5lSGVpZ2h0LAorKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChzZWxmLkdldEhlYWRlcldpZHRoKCktZGVjcmVtZW50KS8vU0NST0xM X1VOSVRfWCwKKysrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW50aXJlSGVp Z2h0ICsgbGluZUhlaWdodCAtIDEpLy9saW5lSGVpZ2h0LAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNlbGYuR2V0U2Nyb2xsUG9zKHd4LkhPUklaT05UQUwpLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuR2V0U2Nyb2xsUG9zKHd4LlZFUlRJ Q0FMKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKQorK0BAIC05 Njc2LDggKzk2NzYsOCBAQCBkZWYgUmVjYWxjdWxhdGVQb3NpdGlvbnMoc2VsZiwgbm9SZWZyZXNo PUZhbHNlKToKKysgICAgICAgICAgICAgICAgICAgICBkZWNyZW1lbnQgPSBTQ1JPTExfVU5JVF9Y CisrIAorKyAgICAgICAgICAgICAgICAgc2VsZi5TZXRTY3JvbGxiYXJzKFNDUk9MTF9VTklUX1gs IFNDUk9MTF9VTklUX1ksCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNl bGYuR2V0SGVhZGVyV2lkdGgoKS1kZWNyZW1lbnQpL1NDUk9MTF9VTklUX1gsCisrLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVudGlyZUhlaWdodCArIFNDUk9MTF9VTklUX1kg LSAxKS9TQ1JPTExfVU5JVF9ZLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZWxmLkdldEhlYWRlcldpZHRoKCktZGVjcmVtZW50KS8vU0NST0xMX1VOSVRfWCwKKysrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZW50aXJlSGVpZ2h0ICsgU0NST0xMX1VO SVRfWSAtIDEpLy9TQ1JPTExfVU5JVF9ZLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNlbGYuR2V0U2Nyb2xsUG9zKHd4LkhPUklaT05UQUwpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNlbGYuR2V0U2Nyb2xsUG9zKHd4LlZFUlRJQ0FMKSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKQorK0BAIC05NzI4LDggKzk3 MjgsOCBAQCBkZWYgUmVjYWxjdWxhdGVQb3NpdGlvbnMoc2VsZiwgbm9SZWZyZXNoPUZhbHNlKToK KysgICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5fZ2kuRXh0ZW5kV2lkdGgod2lkdGhNYXgp CisrIAorKyAgICAgICAgICAgICAgICAgc2VsZi5TZXRTY3JvbGxiYXJzKFNDUk9MTF9VTklUX1gs IGxpbmVIZWlnaHQsCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggKyBT Q1JPTExfVU5JVF9YKS9TQ1JPTExfVU5JVF9YLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICh5ICsgbGluZUhlaWdodCkvbGluZUhlaWdodCwKKysrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoeCArIFNDUk9MTF9VTklUX1gpLy9TQ1JPTExfVU5JVF9YLAor KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh5ICsgbGluZUhlaWdodCkvL2xp bmVIZWlnaHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5HZXRT Y3JvbGxQb3Mod3guSE9SSVpPTlRBTCksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5HZXRTY3JvbGxQb3Mod3guVkVSVElDQUwpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFRydWUpCisrQEAgLTk3OTcsNyArOTc5Nyw3IEBAIGRlZiBSZWNh bGN1bGF0ZVBvc2l0aW9ucyhzZWxmLCBub1JlZnJlc2g9RmFsc2UpOgorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYnJlYWsgICMgRXZlcnl0aGluZyBmaXRzLCBubyBzZWNvbmQgdHJ5IHJl cXVpcmVkLgorKyAKKysgICAgICAgICAgICAgICAgIHNlbGYuU2V0U2Nyb2xsYmFycyhTQ1JPTExf VU5JVF9YLCBsaW5lSGVpZ2h0LAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChlbnRpcmVXaWR0aCArIFNDUk9MTF9VTklUX1gpL1NDUk9MTF9VTklUX1gsCisrKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVudGlyZVdpZHRoICsgU0NST0xMX1VOSVRfWCkv L1NDUk9MTF9VTklUX1gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkdldFNjcm9sbFBvcyh3 eC5IT1JJWk9OVEFMKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAor ZGlmZiAtLWdpdCBhLzkwOTY0MjY2MDMyNzI2NzJkOWE2NzZlOGJjZGNhZGYwYTFjZmExYTIucGF0 Y2ggYi85MDk2NDI2NjAzMjcyNjcyZDlhNjc2ZThiY2RjYWRmMGExY2ZhMWEyLnBhdGNoCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjBiOWY1ZAorLS0tIC9kZXYvbnVsbAor KysrIGIvOTA5NjQyNjYwMzI3MjY3MmQ5YTY3NmU4YmNkY2FkZjBhMWNmYTFhMi5wYXRjaAorQEAg LTAsMCArMSwxNDMgQEAKKytGcm9tIDkwOTY0MjY2MDMyNzI2NzJkOWE2NzZlOGJjZGNhZGYwYTFj ZmExYTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogUm9iaW4gRHVubiA8cm9iaW5A YWxsZHVubi5jb20+CisrRGF0ZTogV2VkLCAyNiBGZWIgMjAyMCAxMToxMDoyNyAtMDgwMAorK1N1 YmplY3Q6IFtQQVRDSF0gQWRkIF9faW5kZXhfXyB0byB3eC5XaW5kb3dJRCwgYW5kIF9fYm9vbF9f IHRvIHd4LlJlZ2lvbgorKworKy0tLQorKyBldGcvcmVnaW9uLnB5ICAgICAgICAgICAgICB8ICA1 ICsrKy0tCisrIGV0Zy93aW5kb3dpZC5weSAgICAgICAgICAgIHwgMzIgKysrKysrKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0KKysgdW5pdHRlc3RzL3Rlc3Rfd2luZG93aWQucHkgfCAyMyArKysr KysrKysrKysrKysrKysrKystLQorKyAzIGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyks IDE5IGRlbGV0aW9ucygtKQorKworK2RpZmYgLS1naXQgYS9ldGcvcmVnaW9uLnB5IGIvZXRnL3Jl Z2lvbi5weQorK2luZGV4IDA5ODJjMWZlNS4uZDViYzQ1NzU5IDEwMDY0NAorKy0tLSBhL2V0Zy9y ZWdpb24ucHkKKysrKysgYi9ldGcvcmVnaW9uLnB5CisrQEAgLTg4LDExICs4OCwxMiBAQCBkZWYg bmV4dChzZWxmKToKKysgICAgIGMubXVzdEhhdmVBcHAoKQorKyAgICAgYy5maW5kKCdvcGVyYXRv cisrJykuaWdub3JlKCkKKysgCisrLSAgICAjIFNJUCBtYXBzIG9wZXJhdG9yIGJvb2woKSB0byBf X2ludF9fLCBidXQgQ2xhc3NpYyB1c2VkIF9fbm9uemVyb19fLiBEb2VzCisrLSAgICAjIGl0IG1h a2UgYW55IGRpZmZlcmVuY2UgZWl0aGVyIHdheT8KKysgICAgIGMuZmluZCgnb3BlcmF0b3IgYm9v bCcpLmlnbm9yZSgpCisrICAgICBjLmFkZENwcE1ldGhvZCgnaW50JywgJ19fbm9uemVyb19fJywg JygpJywgJ3JldHVybiAoaW50KXNlbGYtPm9wZXJhdG9yIGJvb2woKTsnLAorKyAgICAgICAgICAg ICAgICAgICAgJ1JldHVybnMgdHJ1ZSB3aGlsZSB0aGVyZSBhcmUgc3RpbGwgcmVjdGFuZ2xlcyBh dmFpbGFibGUgaW4gdGhlIGl0ZXJhdGlvbi4nKQorKysgICAgYy5hZGRDcHBNZXRob2QoJ2ludCcs ICdfX2Jvb2xfXycsICcoKScsICdyZXR1cm4gKGludClzZWxmLT5vcGVyYXRvciBib29sKCk7JywK KysrICAgICAgICAgICAgICAgICAgICdSZXR1cm5zIHRydWUgd2hpbGUgdGhlcmUgYXJlIHN0aWxs IHJlY3RhbmdsZXMgYXZhaWxhYmxlIGluIHRoZSBpdGVyYXRpb24uJykKKysrCisrIAorKyAgICAg Yy5hZGRDcHBNZXRob2QoJ3ZvaWQnLCAnTmV4dCcsICcoKScsICdzZWxmLT5vcGVyYXRvcisrKCk7 JywKKysgICAgICAgICAgICAgICAgICAgICdNb3ZlIHRoZSBpdGVyYXRvciB0byB0aGUgbmV4dCBy ZWN0YW5nbGUgaW4gdGhlIHJlZ2lvbi4nKQorK2RpZmYgLS1naXQgYS9ldGcvd2luZG93aWQucHkg Yi9ldGcvd2luZG93aWQucHkKKytpbmRleCAyN2IwNDFiM2QuLmRhMmVkMzk1ZSAxMDA2NDQKKyst LS0gYS9ldGcvd2luZG93aWQucHkKKysrKysgYi9ldGcvd2luZG93aWQucHkKKytAQCAtNTMsMTIg KzUzLDEyIEBAIGRlZiBydW4oKToKKysgICAgICAgICAgICAgICAgIE1ldGhvZERlZihuYW1lPSd3 eFdpbmRvd0lEUmVmJywgY2xhc3NOYW1lPSd3eFdpbmRvd0lEUmVmJywgaXNDdG9yPVRydWUsCisr ICAgICAgICAgICAgICAgICAgICAgYnJpZWZEb2M9J0NyZWF0ZSByZWZlcmVuY2UgZnJvbSBhbiBJ RCcsCisrICAgICAgICAgICAgICAgICAgICAgaXRlbXM9WyBQYXJhbURlZih0eXBlPSdpbnQnLCBu YW1lPSdpZCcpIF0pLAorKy0gICAgICAgICAgICAgICAgCisrKworKyAgICAgICAgICAgICAgICAg TWV0aG9kRGVmKG5hbWU9J3d4V2luZG93SURSZWYnLCBjbGFzc05hbWU9J3d4V2luZG93SURSZWYn LCBpc0N0b3I9VHJ1ZSwKKysgICAgICAgICAgICAgICAgICAgICBicmllZkRvYz0nQ29weSBhbiBJ RCByZWZlcmVuY2UnLAorKyAgICAgICAgICAgICAgICAgICAgIGl0ZW1zPVsgUGFyYW1EZWYodHlw ZT0nY29uc3Qgd3hXaW5kb3dJRFJlZiYnLCBuYW1lPSdpZHJlZicpIF0pLAorKyAgICAgICAgICAg ICAgICAgXSksCisrLSAgICAgICAgICAgIAorKysKKysgICAgICAgICAgICAgTWV0aG9kRGVmKG5h bWU9J353eFdpbmRvd0lEUmVmJywgY2xhc3NOYW1lPSd3eFdpbmRvd0lEUmVmJywgaXNEdG9yPVRy dWUpLAorKyAKKysgICAgICAgICAgICAgTWV0aG9kRGVmKHR5cGU9J2ludCcsIG5hbWU9J0dldFZh bHVlJywKKytAQCAtNzMsMTEgKzczLDEzIEBAIGRlZiBydW4oKToKKysgICAgICAgICAgICAgIiIi KQorKyAKKysgICAgIGtsYXNzLmFkZENwcE1ldGhvZCgnaW50JywgJ19faW50X18nLCAnKCknLAor Ky0gICAgICAgIGRvYz0iQWxpYXMgZm9yIEdldFZhbHVlIGFsbG93aW5nIHRoZSBJRFJlZiB0byBi ZSBwYXNzZWQgYXMgdGhlIFdpbmRvd0lEIHBhcmFtZXRlciB3aGVuIGNyZWF0aW5nIHdpZGdldHMg b3IgZXRjLiIsCisrLSAgICAgICAgYm9keT0iIiJcCisrLSAgICAgICAgICAgIHJldHVybiBzZWxm LT5HZXRWYWx1ZSgpOworKy0gICAgICAgICAgICAiIiIpCisrLSAgICAKKysrICAgICAgICBkb2M9 IkFsaWFzIGZvciBHZXRWYWx1ZSBhbGxvd2luZyB0aGUgSURSZWYgdG8gYmUgcGFzc2VkIGFzIHRo ZSBXaW5kb3dJRCBwYXJhbWV0ZXIgd2hlbiBjcmVhdGluZyB3aWRnZXRzIG9yIG90aGVyIHBsYWNl cyBhbiBpbnRlZ2VyIHR5cGUgaXMgbmVlZGVkLiIsCisrKyAgICAgICAgYm9keT0icmV0dXJuIHNl bGYtPkdldFZhbHVlKCk7IikKKysrICAgIGtsYXNzLmFkZENwcE1ldGhvZCgnaW50JywgJ19faW5k ZXhfXycsICcoKScsCisrKyAgICAgICAgZG9jPSJTZWUgOm1ldGg6YF9faW50X19gIiwKKysrICAg ICAgICBib2R5PSJyZXR1cm4gc2VsZi0+R2V0VmFsdWUoKTsiKQorKysKKysrCisrICAgICBrbGFz cy5hZGRDcHBNZXRob2QoJ2Jvb2wnLCAnX19lcV9fJywgJyh3eFdpbmRvd0lEIGlkKScsICJyZXR1 cm4gc2VsZi0+R2V0VmFsdWUoKSA9PSBpZDsiKQorKyAgICAga2xhc3MuYWRkQ3BwTWV0aG9kKCdi b29sJywgJ19fbmVfXycsICcod3hXaW5kb3dJRCBpZCknLCAicmV0dXJuIHNlbGYtPkdldFZhbHVl KCkgIT0gaWQ7IikKKysgICAgIGtsYXNzLmFkZENwcE1ldGhvZCgnYm9vbCcsICdfX2x0X18nLCAn KHd4V2luZG93SUQgaWQpJywgInJldHVybiBzZWxmLT5HZXRWYWx1ZSgpIDwgaWQ7IikKKytAQCAt OTIsMTcgKzk0LDE3IEBAIGRlZiBydW4oKToKKysgICAgICMgYW5kIGZpbmlzaCBpdCB1cCBieSBh ZGRpbmcgaXQgdG8gdGhlIG1vZHVsZQorKyAgICAgbW9kdWxlLmFkZEl0ZW0oa2xhc3MpCisrIAor Ky0gICAgIyBOb3csIGxldCdzIGFkZCBhIG5ldyBQeXRob24gZnVuY3Rpb24gdG8gdGhlIGdsb2Jh bCBzY29wZSB0aGF0IHJlc2VydmVzIGFuIAorKy0gICAgIyBJRCAob3IgcmFuZ2UpIGFuZCByZXR1 cm5zIGEgcmVmIG9iamVjdCBmb3IgaXQuIAorKy0gICAgbW9kdWxlLmFkZFB5RnVuY3Rpb24oJ05l d0lkUmVmJywgJyhjb3VudD0xKScsIAorKysgICAgIyBOb3csIGxldCdzIGFkZCBhIG5ldyBQeXRo b24gZnVuY3Rpb24gdG8gdGhlIGdsb2JhbCBzY29wZSB0aGF0IHJlc2VydmVzIGFuCisrKyAgICAj IElEIChvciByYW5nZSkgYW5kIHJldHVybnMgYSByZWYgb2JqZWN0IGZvciBpdC4KKysrICAgIG1v ZHVsZS5hZGRQeUZ1bmN0aW9uKCdOZXdJZFJlZicsICcoY291bnQ9MSknLAorKyAgICAgICAgIGRv Yz0iIiJcCisrLSAgICAgICAgICAgIFJlc2VydmVzIGEgbmV3IFdpbmRvdyBJRCAob3IgcmFuZ2Ug b2YgV2luZG93SURzKSBhbmQgcmV0dXJucyBhIAorKy0gICAgICAgICAgICA6Y2xhc3M6YHd4Lldp bmRvd0lEUmVmYCBvYmplY3QgKG9yIGxpc3Qgb2YgdGhlbSkgdGhhdCB3aWxsIGhlbHAgCisrKyAg ICAgICAgICAgIFJlc2VydmVzIGEgbmV3IFdpbmRvdyBJRCAob3IgcmFuZ2Ugb2YgV2luZG93SURz KSBhbmQgcmV0dXJucyBhCisrKyAgICAgICAgICAgIDpjbGFzczpgd3guV2luZG93SURSZWZgIG9i amVjdCAob3IgbGlzdCBvZiB0aGVtKSB0aGF0IHdpbGwgaGVscAorKyAgICAgICAgICAgICBtYW5h Z2UgdGhlIHJlc2VydmF0aW9uIG9mIHRoYXQgSUQuCisrIAorKy0gICAgICAgICAgICBUaGlzIGZ1 bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIGEgZHJvcC1pbiByZXBsYWNlbWVudCBvZiB0aGUgb2xk IAorKy0gICAgICAgICAgICBhbmQgZGVwcmVjYXRlZCA6ZnVuYzpgd3guTmV3SWRgIGZ1bmN0aW9u LCB3aXRoIHRoZSBhZGRlZCBiZW5lZml0IAorKy0gICAgICAgICAgICB0aGF0IHRoZSBJRCBzaG91 bGQgbmV2ZXIgY29uZmxpY3Qgd2l0aCBhbiBpbi11c2UgSUQgb3Igb3RoZXIgSURzIAorKysgICAg ICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJlIGEgZHJvcC1pbiByZXBsYWNl bWVudCBvZiB0aGUgb2xkCisrKyAgICAgICAgICAgIGFuZCBkZXByZWNhdGVkIDpmdW5jOmB3eC5O ZXdJZGAgZnVuY3Rpb24sIHdpdGggdGhlIGFkZGVkIGJlbmVmaXQKKysrICAgICAgICAgICAgdGhh dCB0aGUgSUQgc2hvdWxkIG5ldmVyIGNvbmZsaWN0IHdpdGggYW4gaW4tdXNlIElEIG9yIG90aGVy IElEcworKyAgICAgICAgICAgICBnZW5lcmF0ZWQgYnkgdGhpcyBmdW5jdGlvbi4KKysgICAgICAg ICAgICAgIiIiLAorKyAgICAgICAgIGJvZHk9IiIiXAorK2RpZmYgLS1naXQgYS91bml0dGVzdHMv dGVzdF93aW5kb3dpZC5weSBiL3VuaXR0ZXN0cy90ZXN0X3dpbmRvd2lkLnB5CisraW5kZXggNDU5 M2U1YTY5Li5mYzM2YzllYjggMTAwNjQ0CisrLS0tIGEvdW5pdHRlc3RzL3Rlc3Rfd2luZG93aWQu cHkKKysrKysgYi91bml0dGVzdHMvdGVzdF93aW5kb3dpZC5weQorK0BAIC0zMSw5ICszMSw5IEBA IGRlZiB0ZXN0X25ld0lkUmVmMDIoc2VsZik6CisrICAgICBkZWYgdGVzdF9uZXdJZFJlZjAzKHNl bGYpOgorKyAgICAgICAgICIiIkNoZWNrIHRoYXQgQXV0byBJRCBNYW5hZ2VtZW50IGlzIGVuYWJs ZWQgKC0tZW5hYmxlLWF1dG9pZG1hbikiIiIKKysgICAgICAgICAjIFRoaXMgdGVzdCBpcyBleHBl Y3RlZCB0byBmYWlsIGlmIGF1dG9JRCBtYW5nYWdlbWVudCBpcyB0dXJuZWQgb24KKystICAgICAg ICAjIGJlY2F1c2UgYSByZWZlcmVuY2UgdG8gdGhlIElEIGlzIG5vdCBiZWluZyBzYXZlZCwgc28g aXQgd2lsbCBiZSAKKysrICAgICAgICAjIGJlY2F1c2UgYSByZWZlcmVuY2UgdG8gdGhlIElEIGlz IG5vdCBiZWluZyBzYXZlZCwgc28gaXQgd2lsbCBiZQorKyAgICAgICAgICMgdW5yZXNlcnZlZCB3 aGVuIHRoZSBmaXJzdCB3aWRnZXQgaXMgZGVzdHJveWVkLgorKy0gICAgICAgIAorKysKKysgICAg ICAgICBpZCA9IHd4LldpbmRvdy5OZXdDb250cm9sSWQoKQorKyAgICAgICAgIGIgPSB3eC5CdXR0 b24oc2VsZi5mcmFtZSwgaWQsICdidXR0b24nKQorKyAgICAgICAgIGIuRGVzdHJveSgpCisrQEAg LTc1LDYgKzc1LDcgQEAgZGVmIHRlc3RfV2luZG93SURSZWYwMShzZWxmKToKKysgICAgICAgICB2 YWwgPSByZWYxIDw9IHJlZjIKKysgICAgICAgICBhc3NlcnQgdHlwZSh2YWwpID09IGJvb2wKKysg CisrKworKyAgICAgZGVmIHRlc3RfV2luZG93SURSZWYwMihzZWxmKToKKysgICAgICAgICBkID0g e3d4Lk5ld0lkUmVmKCk6ICdvbmUnLAorKyAgICAgICAgICAgICAgd3guTmV3SWRSZWYoKTogJ3R3 byd9CisrQEAgLTgyLDYgKzgzLDI0IEBAIGRlZiB0ZXN0X1dpbmRvd0lEUmVmMDIoc2VsZik6Cisr ICAgICAgICAgZm9yIGsgaW4ga2V5czoKKysgICAgICAgICAgICAgdmFsID0gZFtrXQorKyAKKysr CisrKyAgICBkZWYgdGVzdF9XaW5kb3dJRFJlZjAzKHNlbGYpOgorKysgICAgICAgICMgRW5zdXJl IHd4LldpbmRvd0lEUmVmIGNhbiBiZSBjb252ZXJ0ZWQgdG8gaW50IHdpdGhvdXQgd2FybmluZyB3 aGVuCisrKyAgICAgICAgIyBtYWtpbmcgYSBjYWxsIHRvIHdhcnJwZWQgbWV0aG9kLiBJbiBQeTMu OCsgdGhpcyBtZWFucyB0aGVyZSBuZWVkcyB0bworKysgICAgICAgICMgYmUgYW4gX19pbmRleF9f IG1ldGhvZC4KKysrCisrKyAgICAgICAgIyBUdXJuIHdhcm5pbmdzIGludG8gZXhjZXB0aW9ucyBz byB0aGlzIHRlc3Qgd2lsbCBmYWlsIGlmIHRoZXJlIGlzCisrKyAgICAgICAgIyBhIHdhcm5pbmcK KysrICAgICAgICBpbXBvcnQgd2FybmluZ3MKKysrICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0 ZXIoJ2Vycm9yJykKKysrCisrKyAgICAgICAgd2lkID0gd3guTmV3SWRSZWYoKQorKysgICAgICAg IGFzc2VydCBpc2luc3RhbmNlKHdpZCwgd3guV2luZG93SURSZWYpCisrKworKysgICAgICAgIGIg PSB3eC5CdXR0b24oc2VsZi5mcmFtZSwgd2lkLCAnYnV0dG9uJykKKysrICAgICAgICBhc3NlcnQg Yi5HZXRJZCgpID09IHdpZC5HZXRJZCgpCisrKworKysKKysgIy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor KyAKKysgCisgCitkaWZmIC0tZ2l0IGEvcHl0aG9uMy4xMC1maXhlcy5wYXRjaCBiL3B5dGhvbjMu MTAtZml4ZXMucGF0Y2gKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yOWU4 YzYxCistLS0gL2Rldi9udWxsCisrKysgYi9weXRob24zLjEwLWZpeGVzLnBhdGNoCitAQCAtMCww ICsxLDMwMzQgQEAKKytGcm9tIDE3M2QwNzk2ODEwYmI2NWRlOWJkZmRjNjk0MWQyNGEwNDYyOGY2 YzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogU2NvdHQgVGFsYmVydCA8c3d0QHRl Y2hpZS5uZXQ+CisrRGF0ZTogV2VkLCAxIERlYyAyMDIxIDE0OjE5OjAwIC0wNTAwCisrU3ViamVj dDogW1BBVENIXSBGaXggYSBidW5jaCBvZiBQeXRob24gMy4xMCBpc3N1ZXMgd2l0aCBwdXJlLVB5 dGhvbiBjbGFzc2VzCisrIGFuZCBkZW1vcworKworK0luIFB5dGhvbiAzLjEwLCBhIGNoYW5nZVsx XSB3YXMgaW1wbGVtZW50ZWQgd2hlcmUgZXh0ZW5zaW9uIGZ1bmN0aW9ucworK3RoYXQgdGFrZSBp bnRlZ2VyIGFyZ3VtZW50cyB3aWxsIG5vIGxvbmdlciBzaWxlbnRseSBhY2NlcHQgbm9uLWludGVn ZXIKKythcmd1bWVudHMgKGUuZy4sIGZsb2F0cykgdGhhdCBjYW4gb25seSBiZSBjb252ZXJ0ZWQg dG8gaW50ZWdlcnMgd2l0aCBhCisrbG9zcyBvZiBwcmVjaXNpb24uICBUaGlzIFBSIGZpeGVzIG1v c3Qgb2YgdGhlc2UgaXNzdWVzIGluIHRoZSBwdXJlLVB5dGhvbgorK2NsYXNzZXMgYW5kIGRlbW9z IGJ5IGV4cGxpY2l0bHkgY29udmVydGluZyB0aGUgcGFyYW1ldGVycyB0byBpbnQgYmVmb3JlCisr cGFzc2luZyB0aGVtIHRvIHd4V2lkZ2V0cy4gIFRoZXJlIGlzIGxvc3Mgb2YgcHJlY2lzaW9uLCBi dXQgdGhpcyB3YXMKKytoYXBwZW5pbmcgYmVmb3JlIChhdXRvbWF0aWNhbGx5KSBhbnl3YXkgYXMg bW9zdCB3eFdpZGdldHMgRGV2aWNlQ29udGV4dAorK2Z1bmN0aW9ucyBvcGVyYXRlIHVzaW5nIGlu dGVnZXJzLgorKworK0FkZGl0aW9uYWxseSwgdGhlIFBSIGZpeGVzIGEgZmV3IHNpemluZyBpc3N1 ZXMsIG1vc3RseSB3aXRoIFNwaW5DdHJscyBiZWluZworK3RvbyBzbWFsbCBvbiBHVEszLgorKwor K1RoaXMgaXMgYW4gZXhhbXBsZSBvZiB0aGUgcmVsZXZhbnQgZXhjZXB0aW9uOgorK1RyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKysgIEZpbGUgIi91c3IvbGliNjQvcHl0aG9uMy4x MC9zaXRlLXBhY2thZ2VzL3d4L2xpYi9hZ3cvcHlnYXVnZS5weSIsIGxpbmUgMzU1LCBpbiBPblBh aW50CisrICAgIHIud2lkdGggPSB3CisrVHlwZUVycm9yOiAnZmxvYXQnIG9iamVjdCBjYW5ub3Qg YmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW50ZWdlcgorKworK0ZpeGVzICMyMDM4LgorKworK1sxXSBo dHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTM3OTk5CisrLS0tCisrIGRlbW8vR3JpZExhYmVs UmVuZGVyZXIucHkgICAgICAgICAgICAgICB8ICAgNCArLQorKyBkZW1vL01hc2sucHkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKysgZGVtby9PdmVybGF5LnB5ICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAxIC0KKysgZGVtby9QZW5BbmRCcnVzaFN0eWxlcy5weSAgICAg ICAgICAgICAgIHwgICAyICstCisrIGRlbW8vUG9wdXBXaW5kb3cucHkgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQorKyBkZW1vL1ByaW50RnJhbWV3b3JrLnB5ICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KKysgZGVtby9Qcm9wZXJ0eUdyaWQucHkgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCisrIGRlbW8vU2l6ZXJzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQor KyBkZW1vL1VJQWN0aW9uU2ltdWxhdG9yLnB5ICAgICAgICAgICAgICAgfCAgIDIgKy0KKysgZGVt by9hZ3cvQVVJLnB5ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMyICsrKy0tLS0KKysgZGVt by9hZ3cvTWFjTGFyZ2VEZW1vLnB5ICAgICAgICAgICAgICAgIHwgICA0ICstCisrIGRlbW8vYWd3 L1BlYWtNZXRlci5weSAgICAgICAgICAgICAgICAgICB8ICAgNiArLQorKyBkZW1vL2Fndy9QZXJz aXN0ZW50Q29udHJvbHMucHkgICAgICAgICAgfCAgIDIgKy0KKysgZGVtby9hZ3cvUmliYm9uQmFy LnB5ICAgICAgICAgICAgICAgICAgIHwgICAyICstCisrIGRlbW8vYWd3L1NwZWVkTWV0ZXIucHkg ICAgICAgICAgICAgICAgICB8ICAgMiArLQorKyBkZW1vL2Fndy9TdXBlclRvb2xUaXAucHkgICAg ICAgICAgICAgICAgfCAgIDMgKy0KKysgZGVtby9hZ3cvVGh1bWJEZW1vQ29uZmlnLnB5ICAgICAg ICAgICAgIHwgICAxICsKKysgZGVtby9hZ3cvVWx0aW1hdGVSZXBvcnREZW1vLnB5ICAgICAgICAg IHwgICA4ICstCisrIGRlbW8vYWd3L1dpbmRvd3M3RXhwbG9yZXJfQ29udGVudHMucHkgICB8ICAx NiArKy0tCisrIGRlbW8vYWd3L1pvb21CYXIucHkgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQorKyB3eC9saWIvYWd3L2FkdmFuY2Vkc3BsYXNoLnB5ICAgICAgICAgICAgfCAgIDIgKy0KKysg d3gvbGliL2Fndy9hdWkvYXVpX3V0aWxpdGllcy5weSAgICAgICAgIHwgICA0ICstCisrIHd4L2xp Yi9hZ3cvYXVpL2F1aWJvb2sucHkgICAgICAgICAgICAgICB8ICAgNCArLQorKyB3eC9saWIvYWd3 L2JhbGxvb250aXAucHkgICAgICAgICAgICAgICAgfCAgIDQgKy0KKysgd3gvbGliL2Fndy9mbGF0 bWVudS5weSAgICAgICAgICAgICAgICAgIHwgIDYyICsrKysrKy0tLS0tLS0KKysgd3gvbGliL2Fn dy9mbGF0bm90ZWJvb2sucHkgICAgICAgICAgICAgIHwgIDEwICstLQorKyB3eC9saWIvYWd3L2Zs b2F0c3Bpbi5weSAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKysgd3gvbGliL2Fndy9ncmFkaWVu dGJ1dHRvbi5weSAgICAgICAgICAgIHwgICA4ICstCisrIHd4L2xpYi9hZ3cvaHlwZXJ0cmVlbGlz dC5weSAgICAgICAgICAgICB8ICAgMiArLQorKyB3eC9saWIvYWd3L2tub2JjdHJsLnB5ICAgICAg ICAgICAgICAgICAgfCAgMTIgKy0tCisrIHd4L2xpYi9hZ3cvbGFiZWxib29rLnB5ICAgICAgICAg ICAgICAgICB8ICAzMiArKystLS0tCisrIHd4L2xpYi9hZ3cvcGVha21ldGVyLnB5ICAgICAgICAg ICAgICAgICB8ICAgMiArLQorKyB3eC9saWIvYWd3L3B5Z2F1Z2UucHkgICAgICAgICAgICAgICAg ICAgfCAgIDQgKy0KKysgd3gvbGliL2Fndy9yaWJib24vYXJ0X2F1aS5weSAgICAgICAgICAgIHwg IDIyICsrLS0tCisrIHd4L2xpYi9hZ3cvcmliYm9uL2FydF9pbnRlcm5hbC5weSAgICAgICB8ICAx MiArLS0KKysgd3gvbGliL2Fndy9yaWJib24vYXJ0X21zdy5weSAgICAgICAgICAgIHwgIDg4ICsr KysrKysrKy0tLS0tLS0tLS0KKysgd3gvbGliL2Fndy9yaWJib24vYmFyLnB5ICAgICAgICAgICAg ICAgIHwgICA0ICstCisrIHd4L2xpYi9hZ3cvcmliYm9uL2J1dHRvbmJhci5weSAgICAgICAgICB8 ICAgNiArLQorKyB3eC9saWIvYWd3L3JpYmJvbi9nYWxsZXJ5LnB5ICAgICAgICAgICAgfCAgIDgg Ky0KKysgd3gvbGliL2Fndy9yaWJib24vcGFuZWwucHkgICAgICAgICAgICAgIHwgIDE2ICsrLS0K Kysgd3gvbGliL2Fndy9yaWJib24vdG9vbGJhci5weSAgICAgICAgICAgIHwgICAyICstCisrIHd4 L2xpYi9hZ3cvc2Nyb2xsZWR0aHVtYm5haWwucHkgICAgICAgICB8ICAyNCArKystLS0KKysgd3gv bGliL2Fndy9zaGFwZWRidXR0b24ucHkgICAgICAgICAgICAgIHwgIDEwICstLQorKyB3eC9saWIv YWd3L3NwZWVkbWV0ZXIucHkgICAgICAgICAgICAgICAgfCAgNzIgKysrKysrKysrLS0tLS0tLQor KyB3eC9saWIvYWd3L3N1cGVydG9vbHRpcC5weSAgICAgICAgICAgICAgfCAgMjAgKystLS0KKysg d3gvbGliL2Fndy90b2FzdGVyYm94LnB5ICAgICAgICAgICAgICAgIHwgICA0ICstCisrIHd4L2xp Yi9hZ3cvdWx0aW1hdGVsaXN0Y3RybC5weSAgICAgICAgICB8ICAyMCArKy0tLQorKyB3eC9saWIv YWd3L3hsc2dyaWQucHkgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKysgd3gvbGliL2Fndy96 b29tYmFyLnB5ICAgICAgICAgICAgICAgICAgIHwgIDEwICstLQorKyB3eC9saWIvYW5hbG9nY2xv Y2svYW5hbG9nY2xvY2sucHkgICAgICAgfCAgIDIgKy0KKysgd3gvbGliL2FuYWxvZ2Nsb2NrL2hl bHBlcnMucHkgICAgICAgICAgIHwgIDIyICsrLS0tCisrIHd4L2xpYi9hbmFsb2djbG9jay9zZXR1 cC5weSAgICAgICAgICAgICB8ICAgNiArLQorKyB3eC9saWIvYnV0dG9ucy5weSAgICAgICAgICAg ICAgICAgICAgICAgfCAgMTAgKy0tCisrIHd4L2xpYi9jb2xvdXJjaG9vc2VyL3B5Y29sb3VyY2hv b3Nlci5weSB8ICAgNCArLQorKyB3eC9saWIvY29sb3VyY2hvb3Nlci9weXBhbGV0dGUucHkgICAg ICAgfCAgIDIgKy0KKysgd3gvbGliL2Zsb2F0Y2FudmFzL0ZDT2JqZWN0cy5weSAgICAgICAgIHwg ICA4ICstCisrIHd4L2xpYi9naXptb3MvbGVkY3RybC5weSAgICAgICAgICAgICAgICB8ICAgOCAr LQorKyB3eC9saWIvaW1hZ2Vicm93c2VyLnB5ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKysg d3gvbGliL29nbC9iYXNpYy5weSAgICAgICAgICAgICAgICAgICAgIHwgIDEwICstLQorKyB3eC9s aWIvb2dsL2JtcHNoYXBlLnB5ICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKysgd3gvbGliL29n bC9jb21wb3NpdC5weSAgICAgICAgICAgICAgICAgIHwgICA0ICstCisrIHd4L2xpYi9vZ2wvZGl2 aWRlZC5weSAgICAgICAgICAgICAgICAgICB8ICAgMiArLQorKyB3eC9saWIvb2dsL2xpbmVzLnB5 ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKysgd3gvbGliL29nbC9vZ2xtaXNjLnB5ICAg ICAgICAgICAgICAgICAgIHwgICA0ICstCisrIHd4L2xpYi9wbG90L2V4YW1wbGVzL2RlbW8ucHkg ICAgICAgICAgICB8ICAgNCArLQorKyB3eC9saWIvcGxvdC9wbG90Y2FudmFzLnB5ICAgICAgICAg ICAgICAgfCAxMTAgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisrIHd4L2xpYi9wbG90L3BvbHlv YmplY3RzLnB5ICAgICAgICAgICAgICB8ICAyMiArKystLQorKyB3eC9saWIvcG9wdXBjdGwucHkg ICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKysgd3gvbGliL3Njcm9sbGVkcGFuZWwucHkg ICAgICAgICAgICAgICAgIHwgICAyICstCisrIHd4L2xpYi90aHJvYmJlci5weSAgICAgICAgICAg ICAgICAgICAgICB8ICAgNiArLQorKyB3eC9saWIvdGlja2VyLnB5ICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDQgKy0KKysgNzEgZmlsZXMgY2hhbmdlZCwgNDExIGluc2VydGlvbnMoKyksIDM5 OCBkZWxldGlvbnMoLSkKKysKKytkaWZmIC0tZ2l0IGEvZGVtby9HcmlkTGFiZWxSZW5kZXJlci5w eSBiL2RlbW8vR3JpZExhYmVsUmVuZGVyZXIucHkKKytpbmRleCA3OTRkZDY0ZTguLjE0NDBlZjQx YiAxMDA2NDQKKystLS0gYS9kZW1vL0dyaWRMYWJlbFJlbmRlcmVyLnB5CisrKysrIGIvZGVtby9H cmlkTGFiZWxSZW5kZXJlci5weQorK0BAIC00Niw4ICs0Niw4IEBAIGRlZiBfX2luaXRfXyhzZWxm KToKKysgICAgICAgICBzZWxmLl9ibXAgPSBpbWFnZXMuU21pbGVzLkdldEJpdG1hcCgpCisrIAor KyAgICAgZGVmIERyYXcoc2VsZiwgZ3JpZCwgZGMsIHJlY3QsIHJjKToKKystICAgICAgICB4ID0g cmVjdC5sZWZ0ICsgKHJlY3Qud2lkdGggLSBzZWxmLl9ibXAuR2V0V2lkdGgoKSkgLyAyCisrLSAg ICAgICAgeSA9IHJlY3QudG9wICsgKHJlY3QuaGVpZ2h0IC0gc2VsZi5fYm1wLkdldEhlaWdodCgp KSAvIDIKKysrICAgICAgICB4ID0gcmVjdC5sZWZ0ICsgKHJlY3Qud2lkdGggLSBzZWxmLl9ibXAu R2V0V2lkdGgoKSkgLy8gMgorKysgICAgICAgIHkgPSByZWN0LnRvcCArIChyZWN0LmhlaWdodCAt IHNlbGYuX2JtcC5HZXRIZWlnaHQoKSkgLy8gMgorKyAgICAgICAgIGRjLkRyYXdCaXRtYXAoc2Vs Zi5fYm1wLCB4LCB5LCBUcnVlKQorKyAKKysgCisrZGlmZiAtLWdpdCBhL2RlbW8vTWFzay5weSBi L2RlbW8vTWFzay5weQorK2luZGV4IDEwOWI4ZjMwYi4uZTkyNGY5NWI5IDEwMDY0NAorKy0tLSBh L2RlbW8vTWFzay5weQorKysrKyBiL2RlbW8vTWFzay5weQorK0BAIC05MCw5ICs5MCw5IEBAIGRl ZiBPblBhaW50IChzZWxmLCBlKToKKysgCisrICAgICAgICAgZm9yIHRleHQsIGNvZGUgaW4gbG9n aWNMaXN0OgorKyAgICAgICAgICAgICB4LHkgPSAxMjArMTUwKihpJTQpLCAyMCsxMDAqKGkvNCkK KystICAgICAgICAgICAgZGMuRHJhd1RleHQodGV4dCwgeCwgeS0yMCkKKysrICAgICAgICAgICAg ZGMuRHJhd1RleHQodGV4dCwgeCwgaW50KHktMjApKQorKyAgICAgICAgICAgICBtZGMuU2VsZWN0 T2JqZWN0KHNlbGYuYm1wX3dpdGhjb2xvdXJtYXNrKQorKy0gICAgICAgICAgICBkYy5CbGl0KHgs eSwgY3gsY3ksIG1kYywgMCwwLCBjb2RlLCBUcnVlKQorKysgICAgICAgICAgICBkYy5CbGl0KHgs aW50KHkpLCBjeCxjeSwgbWRjLCAwLDAsIGNvZGUsIFRydWUpCisrICAgICAgICAgICAgIGkgPSBp ICsgMQorKyAKKysgCisrZGlmZiAtLWdpdCBhL2RlbW8vT3ZlcmxheS5weSBiL2RlbW8vT3Zlcmxh eS5weQorK2luZGV4IDY1MTY0Y2Q4NC4uZmE2NWJlMDAzIDEwMDY0NAorKy0tLSBhL2RlbW8vT3Zl cmxheS5weQorKysrKyBiL2RlbW8vT3ZlcmxheS5weQorK0BAIC01Niw3ICs1Niw2IEBAIGRlZiBf X2luaXRfXyhzZWxmLCBwYXJlbnQsIGxvZyk6CisrICAgICAgICAgc2VsZi5wZW5zdHlsZXNDb21i by5TZXRUb29sVGlwKCdQZW4gU3R5bGUnKQorKyAKKysgICAgICAgICBzZWxmLm92ZXJsYXlQZW5X aWR0aCA9IHd4LlNwaW5DdHJsKHNlbGYsIC0xLCB2YWx1ZT0nJywKKystICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9KDc1LCAtMSksCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT13eC5TUF9BUlJPV19LRVlTLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPTEsIG1heD0y NCwgaW5pdGlhbD0xKQorKyAgICAgICAgIHNlbGYub3ZlcmxheVBlbldpZHRoLlNldFRvb2xUaXAo J1BlbiBXaWR0aCcpCisrZGlmZiAtLWdpdCBhL2RlbW8vUGVuQW5kQnJ1c2hTdHlsZXMucHkgYi9k ZW1vL1BlbkFuZEJydXNoU3R5bGVzLnB5CisraW5kZXggMjQwNDBiMWZjLi4xMTgzZjY4NGEgMTAw NjQ0CisrLS0tIGEvZGVtby9QZW5BbmRCcnVzaFN0eWxlcy5weQorKysrKyBiL2RlbW8vUGVuQW5k QnJ1c2hTdHlsZXMucHkKKytAQCAtMTAwLDcgKzEwMCw3IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2 ZW50KToKKysgCisrICAgICAgICAgZGMuU2V0UGVuKHBlbikKKysgICAgICAgICB5ID0gbGFiZWxI ZWlnaHQgKyAoaGVpZ2h0IC0gbGFiZWxIZWlnaHQpLzIKKystICAgICAgICBkYy5EcmF3TGluZSg1 LCB5LCB3aWR0aC01LCB5KQorKysgICAgICAgIGRjLkRyYXdMaW5lKDUsIGludCh5KSwgd2lkdGgt NSwgaW50KHkpKQorKyAKKysgCisrIGNsYXNzIEJydXNoUGFuZWwoQmFzZVBhbmVsKToKKytkaWZm IC0tZ2l0IGEvZGVtby9Qb3B1cFdpbmRvdy5weSBiL2RlbW8vUG9wdXBXaW5kb3cucHkKKytpbmRl eCBkOGUxNzU1NzYuLmI1NGI5ODcwZCAxMDA2NDQKKystLS0gYS9kZW1vL1BvcHVwV2luZG93LnB5 CisrKysrIGIvZGVtby9Qb3B1cFdpbmRvdy5weQorK0BAIC04OSw3ICs4OSw3IEBAIGRlZiBfX2lu aXRfXyhzZWxmLCBwYXJlbnQsIHN0eWxlLCBsb2cpOgorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICIob3IgaXRzIGZpcnN0IGNoaWxkKSBsb3NlcyBmb2N1cyBpbiBcbiIKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAiYW55IG90aGVyIHdheS4iKQorKyAgICAgICAgIGJ0biA9IHd4LkJ1 dHRvbihwYW5lbCwgLTEsICJQcmVzcyBNZSIpCisrLSAgICAgICAgc3BpbiA9IHd4LlNwaW5DdHJs KHBhbmVsLCAtMSwgIkhlbGxvIiwgc2l6ZT0oMTAwLC0xKSkKKysrICAgICAgICBzcGluID0gd3gu U3BpbkN0cmwocGFuZWwsIC0xLCAiSGVsbG8iKQorKyAgICAgICAgIGJ0bi5CaW5kKHd4LkVWVF9C VVRUT04sIHNlbGYuT25CdXR0b24pCisrIAorKyAgICAgICAgIHNpemVyID0gd3guQm94U2l6ZXIo d3guVkVSVElDQUwpCisrZGlmZiAtLWdpdCBhL2RlbW8vUHJpbnRGcmFtZXdvcmsucHkgYi9kZW1v L1ByaW50RnJhbWV3b3JrLnB5CisraW5kZXggZTdhMjlhMDc3Li5mMDg3M2FlOTQgMTAwNjQ0Cisr LS0tIGEvZGVtby9QcmludEZyYW1ld29yay5weQorKysrKyBiL2RlbW8vUHJpbnRGcmFtZXdvcmsu cHkKKytAQCAtODEsNyArODEsNyBAQCBkZWYgT25QcmludFBhZ2Uoc2VsZiwgcGFnZSk6CisrIAor KyAgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisr ICAgICAgICAgc2VsZi5jYW52YXMuRG9EcmF3aW5nKGRjLCBUcnVlKQorKy0gICAgICAgIGRjLkRy YXdUZXh0KCJQYWdlOiAlZCIgJSBwYWdlLCBtYXJnaW5YLzIsIG1heFktbWFyZ2luWSkKKysrICAg ICAgICBkYy5EcmF3VGV4dCgiUGFnZTogJWQiICUgcGFnZSwgbWFyZ2luWC8vMiwgbWF4WS1tYXJn aW5ZKQorKyAKKysgICAgICAgICByZXR1cm4gVHJ1ZQorKyAKKytkaWZmIC0tZ2l0IGEvZGVtby9Q cm9wZXJ0eUdyaWQucHkgYi9kZW1vL1Byb3BlcnR5R3JpZC5weQorK2luZGV4IGM1NmUwOGI2MC4u ZmJlZjI5ZTMxIDEwMDY0NAorKy0tLSBhL2RlbW8vUHJvcGVydHlHcmlkLnB5CisrKysrIGIvZGVt by9Qcm9wZXJ0eUdyaWQucHkKKytAQCAtMTUwLDcgKzE1MCw3IEBAIGRlZiBfQ29udmVydFZhbHVl KHNlbGYsIHZhbHVlKToKKysgICAgICAgICAiIiIgVXRpbGl0eSBjb252ZXJ0IGFyYml0cmFyeSB2 YWx1ZSB0byBhIHJlYWwgd3guU2l6ZS4KKysgICAgICAgICAiIiIKKysgICAgICAgICBpbXBvcnQg Y29sbGVjdGlvbnMKKystICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBjb2xsZWN0aW9ucy5T ZXF1ZW5jZSkgb3IgaGFzYXR0cih2YWx1ZSwgJ19fZ2V0aXRlbV9fJyk6CisrKyAgICAgICAgaWYg aXNpbnN0YW5jZSh2YWx1ZSwgY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlKSBvciBoYXNhdHRyKHZh bHVlLCAnX19nZXRpdGVtX18nKToKKysgICAgICAgICAgICAgdmFsdWUgPSB3eC5TaXplKCp2YWx1 ZSkKKysgICAgICAgICByZXR1cm4gdmFsdWUKKysgCisrZGlmZiAtLWdpdCBhL2RlbW8vU2l6ZXJz LnB5IGIvZGVtby9TaXplcnMucHkKKytpbmRleCA2YWJhYmVkZTkuLmEwMjUwNTBmMSAxMDA2NDQK KystLS0gYS9kZW1vL1NpemVycy5weQorKysrKyBiL2RlbW8vU2l6ZXJzLnB5CisrQEAgLTQ1LDcg KzQ1LDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZ0KToKKysgICAgICAgICBkYyA9IHd4LlBhaW50 REMoc2VsZikKKysgICAgICAgICB3LGggPSBkYy5HZXRUZXh0RXh0ZW50KHNlbGYudGV4dCkKKysg ICAgICAgICBkYy5DbGVhcigpCisrLSAgICAgICAgZGMuRHJhd1RleHQoc2VsZi50ZXh0LCAoc3ou d2lkdGgtdykvMiwgKHN6LmhlaWdodC1oKS8yKQorKysgICAgICAgIGRjLkRyYXdUZXh0KHNlbGYu dGV4dCwgKHN6LndpZHRoLXcpLy8yLCAoc3ouaGVpZ2h0LWgpLy8yKQorKyAKKysgICAgIGRlZiBP blNpemUoc2VsZiwgZXZ0KToKKysgICAgICAgICBzZWxmLlJlZnJlc2goKQorK2RpZmYgLS1naXQg YS9kZW1vL1VJQWN0aW9uU2ltdWxhdG9yLnB5IGIvZGVtby9VSUFjdGlvblNpbXVsYXRvci5weQor K2luZGV4IGNiYmExNGY1Yy4uMGE2ZmQwMjM0IDEwMDY0NAorKy0tLSBhL2RlbW8vVUlBY3Rpb25T aW11bGF0b3IucHkKKysrKysgYi9kZW1vL1VJQWN0aW9uU2ltdWxhdG9yLnB5CisrQEAgLTg4LDcg Kzg4LDcgQEAgZGVmIF9wbGF5YmFja0tleShzZWxmLCBldnRUeXBlLCBrZXksIG1vZGlmaWVycyk6 CisrIAorKyAgICAgZGVmIF9zZXROZXh0S2V5RXZlbnQoc2VsZik6CisrICAgICAgICAgZXZ0VHlw ZSwga2V5LCBtb2RpZmllcnMsIG1pbGxpID0gc2VsZi5fcGxheWJhY2tFdmVudHMucG9wKDApCisr LSAgICAgICAgbWlsbGkgPSBtYXgobWlsbGkvMiwgMSkgIyBwbGF5IGJhY2sgZmFzdGVyIHRoYW4g aXQgd2FzIHJlY29yZGVkCisrKyAgICAgICAgbWlsbGkgPSBtYXgobWlsbGkvLzIsIDEpICMgcGxh eSBiYWNrIGZhc3RlciB0aGFuIGl0IHdhcyByZWNvcmRlZAorKyAgICAgICAgIHByaW50KGV2dFR5 cGUsIGtleSwgbW9kaWZpZXJzLCBtaWxsaSkKKysgICAgICAgICB3eC5DYWxsTGF0ZXIobWlsbGks IHNlbGYuX3BsYXliYWNrS2V5LCBldnRUeXBlLCBrZXksIG1vZGlmaWVycykKKysgCisrZGlmZiAt LWdpdCBhL2RlbW8vYWd3L0FVSS5weSBiL2RlbW8vYWd3L0FVSS5weQorK2luZGV4IDdjMjE5Njg2 NS4uYjM4MzEzYzg2IDEwMDY0NAorKy0tLSBhL2RlbW8vYWd3L0FVSS5weQorKysrKyBiL2RlbW8v YWd3L0FVSS5weQorK0BAIC0zOTMsNyArMzkzLDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQp OgorKyAgICAgICAgIGRjLlNldFBlbih3eC5MSUdIVF9HUkVZX1BFTikKKysgICAgICAgICBkYy5E cmF3TGluZSgwLCAwLCBzaXplLngsIHNpemUueSkKKysgICAgICAgICBkYy5EcmF3TGluZSgwLCBz aXplLnksIHNpemUueCwgMCkKKystICAgICAgICBkYy5EcmF3VGV4dChzLCAoc2l6ZS54LXcpLzIs IChzaXplLnktaGVpZ2h0KjUpLzIpCisrKyAgICAgICAgZGMuRHJhd1RleHQocywgKHNpemUueC13 KS8vMiwgKHNpemUueS1oZWlnaHQqNSkvLzIpCisrIAorKyAgICAgICAgIGlmIHNlbGYuX21ncjoK KysgCisrQEAgLTQwMSwxOSArNDAxLDE5IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysg CisrICAgICAgICAgICAgIHMgPSAiTGF5ZXI6ICVkIiVwaS5kb2NrX2xheWVyCisrICAgICAgICAg ICAgIHcsIGggPSBkYy5HZXRUZXh0RXh0ZW50KHMpCisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0 KHMsIChzaXplLngtdykvMiwgKChzaXplLnktKGhlaWdodCo1KSkvMikrKGhlaWdodCoxKSkKKysr ICAgICAgICAgICAgZGMuRHJhd1RleHQocywgKHNpemUueC13KS8vMiwgKChzaXplLnktKGhlaWdo dCo1KSkvLzIpKyhoZWlnaHQqMSkpCisrIAorKyAgICAgICAgICAgICBzID0gIkRvY2s6ICVkIFJv dzogJWQiJShwaS5kb2NrX2RpcmVjdGlvbiwgcGkuZG9ja19yb3cpCisrICAgICAgICAgICAgIHcs IGggPSBkYy5HZXRUZXh0RXh0ZW50KHMpCisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0KHMsIChz aXplLngtdykvMiwgKChzaXplLnktKGhlaWdodCo1KSkvMikrKGhlaWdodCoyKSkKKysrICAgICAg ICAgICAgZGMuRHJhd1RleHQocywgKHNpemUueC13KS8vMiwgKChzaXplLnktKGhlaWdodCo1KSkv LzIpKyhoZWlnaHQqMikpCisrIAorKyAgICAgICAgICAgICBzID0gIlBvc2l0aW9uOiAlZCIlcGku ZG9ja19wb3MKKysgICAgICAgICAgICAgdywgaCA9IGRjLkdldFRleHRFeHRlbnQocykKKystICAg ICAgICAgICAgZGMuRHJhd1RleHQocywgKHNpemUueC13KS8yLCAoKHNpemUueS0oaGVpZ2h0KjUp KS8yKSsoaGVpZ2h0KjMpKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4dChzLCAoc2l6ZS54LXcp Ly8yLCAoKHNpemUueS0oaGVpZ2h0KjUpKS8vMikrKGhlaWdodCozKSkKKysgCisrICAgICAgICAg ICAgIHMgPSAiUHJvcG9ydGlvbjogJWQiJXBpLmRvY2tfcHJvcG9ydGlvbgorKyAgICAgICAgICAg ICB3LCBoID0gZGMuR2V0VGV4dEV4dGVudChzKQorKy0gICAgICAgICAgICBkYy5EcmF3VGV4dChz LCAoc2l6ZS54LXcpLzIsICgoc2l6ZS55LShoZWlnaHQqNSkpLzIpKyhoZWlnaHQqNCkpCisrKyAg ICAgICAgICAgIGRjLkRyYXdUZXh0KHMsIChzaXplLngtdykvLzIsICgoc2l6ZS55LShoZWlnaHQq NSkpLy8yKSsoaGVpZ2h0KjQpKQorKyAKKysgCisrICAgICBkZWYgT25FcmFzZUJhY2tncm91bmQo c2VsZiwgZXZlbnQpOgorK0BAIC00MzUsNyArNDM1LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBh cmVudCwgZnJhbWUpOgorKyAKKysgICAgICAgICBzMSA9IHd4LkJveFNpemVyKHd4LkhPUklaT05U QUwpCisrICAgICAgICAgc2VsZi5fYm9yZGVyX3NpemUgPSB3eC5TcGluQ3RybChzZWxmLCBJRF9Q YW5lQm9yZGVyU2l6ZSwgIiVkIiVmcmFtZS5HZXREb2NrQXJ0KCkuR2V0TWV0cmljKGF1aS5BVUlf RE9DS0FSVF9QQU5FX0JPUkRFUl9TSVpFKSwKKystICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHd4LkRlZmF1bHRQb3NpdGlvbiwgd3guU2l6ZSg1MCwgMjApLCB3eC5TUF9B UlJPV19LRVlTLCAwLCAxMDAsCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB3eC5EZWZhdWx0UG9zaXRpb24sIHd4LkRlZmF1bHRTaXplLCB3eC5TUF9BUlJPV19LRVlT LCAwLCAxMDAsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFt ZS5HZXREb2NrQXJ0KCkuR2V0TWV0cmljKGF1aS5BVUlfRE9DS0FSVF9QQU5FX0JPUkRFUl9TSVpF KSkKKysgICAgICAgICBzMS5BZGQoKDEsIDEpLCAxLCB3eC5FWFBBTkQpCisrICAgICAgICAgczEu QWRkKHd4LlN0YXRpY1RleHQoc2VsZiwgLTEsICJQYW5lIEJvcmRlciBTaXplOiIpKQorK0BAIC00 NDUsNyArNDQ1LDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgZnJhbWUpOgorKyAKKysg ICAgICAgICBzMiA9IHd4LkJveFNpemVyKHd4LkhPUklaT05UQUwpCisrICAgICAgICAgc2VsZi5f c2FzaF9zaXplID0gd3guU3BpbkN0cmwoc2VsZiwgSURfU2FzaFNpemUsICIlZCIlZnJhbWUuR2V0 RG9ja0FydCgpLkdldE1ldHJpYyhhdWkuQVVJX0RPQ0tBUlRfU0FTSF9TSVpFKSwgd3guRGVmYXVs dFBvc2l0aW9uLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LlNp emUoNTAsIDIwKSwgd3guU1BfQVJST1dfS0VZUywgMCwgMTAwLCBmcmFtZS5HZXREb2NrQXJ0KCku R2V0TWV0cmljKGF1aS5BVUlfRE9DS0FSVF9TQVNIX1NJWkUpKQorKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHd4LkRlZmF1bHRTaXplLCB3eC5TUF9BUlJPV19LRVlTLCAw LCAxMDAsIGZyYW1lLkdldERvY2tBcnQoKS5HZXRNZXRyaWMoYXVpLkFVSV9ET0NLQVJUX1NBU0hf U0laRSkpCisrICAgICAgICAgczIuQWRkKCgxLCAxKSwgMSwgd3guRVhQQU5EKQorKyAgICAgICAg IHMyLkFkZCh3eC5TdGF0aWNUZXh0KHNlbGYsIC0xLCAiU2FzaCBTaXplOiIpKQorKyAgICAgICAg IHMyLkFkZChzZWxmLl9zYXNoX3NpemUpCisrQEAgLTQ1NCw3ICs0NTQsNyBAQCBkZWYgX19pbml0 X18oc2VsZiwgcGFyZW50LCBmcmFtZSk6CisrIAorKyAgICAgICAgIHMzID0gd3guQm94U2l6ZXIo d3guSE9SSVpPTlRBTCkKKysgICAgICAgICBzZWxmLl9jYXB0aW9uX3NpemUgPSB3eC5TcGluQ3Ry bChzZWxmLCBJRF9DYXB0aW9uU2l6ZSwgIiVkIiVmcmFtZS5HZXREb2NrQXJ0KCkuR2V0TWV0cmlj KGF1aS5BVUlfRE9DS0FSVF9DQVBUSU9OX1NJWkUpLAorKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHd4LkRlZmF1bHRQb3NpdGlvbiwgd3guU2l6ZSg1MCwgMjApLCB3 eC5TUF9BUlJPV19LRVlTLCAwLCAxMDAsIGZyYW1lLkdldERvY2tBcnQoKS5HZXRNZXRyaWMoYXVp LkFVSV9ET0NLQVJUX0NBUFRJT05fU0laRSkpCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgd3guRGVmYXVsdFBvc2l0aW9uLCB3eC5EZWZhdWx0U2l6ZSwgd3guU1Bf QVJST1dfS0VZUywgMCwgMTAwLCBmcmFtZS5HZXREb2NrQXJ0KCkuR2V0TWV0cmljKGF1aS5BVUlf RE9DS0FSVF9DQVBUSU9OX1NJWkUpKQorKyAgICAgICAgIHMzLkFkZCgoMSwgMSksIDEsIHd4LkVY UEFORCkKKysgICAgICAgICBzMy5BZGQod3guU3RhdGljVGV4dChzZWxmLCAtMSwgIkNhcHRpb24g U2l6ZToiKSkKKysgICAgICAgICBzMy5BZGQoc2VsZi5fY2FwdGlvbl9zaXplKQorK0BAIC04MDcs OSArODA3LDkgQEAgZGVmIExpZ2h0Q29sb3VyKHNlbGYsIGNvbG91ciwgcGVyY2VudCk6CisrIAor KyAgICAgICAgICMgV2UgdGFrZSB0aGUgcGVyY2VudCB3YXkgb2YgdGhlIGNvbG91ciBmcm9tIGNv bG91ciAtPiB3aGl0ZQorKyAgICAgICAgIGkgPSBwZXJjZW50CisrLSAgICAgICAgciA9IGNvbG91 ci5SZWQoKSArICgoaSpyZCoxMDApL2hpZ2gpLzEwMAorKy0gICAgICAgIGcgPSBjb2xvdXIuR3Jl ZW4oKSArICgoaSpnZCoxMDApL2hpZ2gpLzEwMAorKy0gICAgICAgIGIgPSBjb2xvdXIuQmx1ZSgp ICsgKChpKmJkKjEwMCkvaGlnaCkvMTAwCisrKyAgICAgICAgciA9IGNvbG91ci5SZWQoKSArICgo aSpyZCoxMDApLy9oaWdoKS8vMTAwCisrKyAgICAgICAgZyA9IGNvbG91ci5HcmVlbigpICsgKChp KmdkKjEwMCkvL2hpZ2gpLy8xMDAKKysrICAgICAgICBiID0gY29sb3VyLkJsdWUoKSArICgoaSpi ZCoxMDApLy9oaWdoKS8vMTAwCisrIAorKyAgICAgICAgIHJldHVybiB3eC5Db2xvdXIociwgZywg YikKKysgCisrQEAgLTgyNiwxMCArODI2LDEwIEBAIGRlZiBEcmF3UHJvZ3Jlc3Moc2VsZiwgZGMs IHhzaXplLCB5c2l6ZSwgaW5jcmVtZW50KToKKysgICAgICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0 ID0gY2xpZW50UmVjdAorKyAgICAgICAgIHgsIHdpZHRoID0gc2VsZi5fcG9zLCBpbnRlcnZhbAor KyAKKystICAgICAgICBncmFkaWVudFJlY3QuU2V0SGVpZ2h0KGdyYWRpZW50UmVjdC5HZXRIZWln aHQoKS8yKQorKysgICAgICAgIGdyYWRpZW50UmVjdC5TZXRIZWlnaHQoZ3JhZGllbnRSZWN0Lkdl dEhlaWdodCgpLy8yKQorKyAgICAgICAgIHRvcFN0YXJ0LCB0b3BFbmQgPSBzZWxmLl90b3BTdGFy dENvbG91ciwgc2VsZi5fdG9wRW5kQ29sb3VyCisrIAorKy0gICAgICAgIHJjMSA9IHd4LlJlY3Qo eCwgeSwgd2lkdGgsIGhlaWdodC8yKQorKysgICAgICAgIHJjMSA9IHd4LlJlY3QoaW50KHgpLCB5 LCBpbnQod2lkdGgpLCBoZWlnaHQvLzIpCisrICAgICAgICAgcGF0aDEgPSBzZWxmLkdldFBhdGgo Z2MsIHJjMSwgOCkKKysgICAgICAgICBicjEgPSBnYy5DcmVhdGVMaW5lYXJHcmFkaWVudEJydXNo KHgsIHksIHgsIHkraGVpZ2h0LzIsIHRvcFN0YXJ0LCB0b3BFbmQpCisrICAgICAgICAgZ2MuU2V0 QnJ1c2goYnIxKQorK0BAIC04NDUsMTQgKzg0NSwxNCBAQCBkZWYgRHJhd1Byb2dyZXNzKHNlbGYs IGRjLCB4c2l6ZSwgeXNpemUsIGluY3JlbWVudCk6CisrIAorKyAgICAgICAgIGJvdHRvbVN0YXJ0 LCBib3R0b21FbmQgPSBzZWxmLl9ib3R0b21TdGFydENvbG91ciwgc2VsZi5fYm90dG9tRW5kQ29s b3VyCisrIAorKy0gICAgICAgIHJjMyA9IHd4LlJlY3QoeCwgeStoZWlnaHQvMiwgd2lkdGgsIGhl aWdodC8yKQorKysgICAgICAgIHJjMyA9IHd4LlJlY3QoaW50KHgpLCB5K2hlaWdodC8vMiwgaW50 KHdpZHRoKSwgaGVpZ2h0Ly8yKQorKyAgICAgICAgIHBhdGgzID0gc2VsZi5HZXRQYXRoKGdjLCBy YzMsIDgpCisrICAgICAgICAgYnIzID0gZ2MuQ3JlYXRlTGluZWFyR3JhZGllbnRCcnVzaCh4LCB5 K2hlaWdodC8yLCB4LCB5K2hlaWdodCwgYm90dG9tU3RhcnQsIGJvdHRvbUVuZCkKKysgICAgICAg ICBnYy5TZXRCcnVzaChicjMpCisrICAgICAgICAgZ2MuRmlsbFBhdGgocGF0aDMpICNkcmF3IG1h aW4KKysgCisrICAgICAgICAgcGF0aDQgPSBnYy5DcmVhdGVQYXRoKCkKKystICAgICAgICBwYXRo NC5BZGRSZWN0YW5nbGUoeCwgeStoZWlnaHQvMiwgd2lkdGgsIDgpCisrKyAgICAgICAgcGF0aDQu QWRkUmVjdGFuZ2xlKHgsIHkraGVpZ2h0Ly8yLCB3aWR0aCwgOCkKKysgICAgICAgICBwYXRoNC5D bG9zZVN1YnBhdGgoKQorKyAgICAgICAgIGdjLlNldEJydXNoKGJyMykKKysgICAgICAgICBnYy5G aWxsUGF0aChwYXRoNCkKKytAQCAtMjYxMyw3ICsyNjEzLDcgQEAgZGVmIENyZWF0ZU5vdGVib29r KHNlbGYpOgorKyAgICAgICAgIGZsZXguQWRkKHd4LlRleHRDdHJsKHBhbmVsLCAtMSwgIiIsIHd4 LkRlZmF1bHRQb3NpdGlvbiwgd3guU2l6ZSgxMDAsIC0xKSksCisrICAgICAgICAgICAgICAgICAg MSwgd3guQUxMfHd4LkFMSUdOX0NFTlRSRSwgNSkKKysgICAgICAgICBmbGV4LkFkZCh3eC5TdGF0 aWNUZXh0KHBhbmVsLCAtMSwgInd4U3BpbkN0cmw6IiksIDAsIHd4LkFMTHx3eC5BTElHTl9DRU5U UkUsIDUpCisrLSAgICAgICAgZmxleC5BZGQod3guU3BpbkN0cmwocGFuZWwsIC0xLCAiNSIsIHd4 LkRlZmF1bHRQb3NpdGlvbiwgd3guU2l6ZSgxMDAsIC0xKSwKKysrICAgICAgICBmbGV4LkFkZCh3 eC5TcGluQ3RybChwYW5lbCwgLTEsICI1Iiwgd3guRGVmYXVsdFBvc2l0aW9uLCB3eC5EZWZhdWx0 U2l6ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5TUF9BUlJPV19LRVlTLCA1 LCA1MCwgNSksIDAsIHd4LkFMTHx3eC5BTElHTl9DRU5UUkUsIDUpCisrICAgICAgICAgZmxleC5B ZGQoKDUsIDUpKQorKyAgICAgICAgIGZsZXguQWRkKCg1LCA1KSkKKytkaWZmIC0tZ2l0IGEvZGVt by9hZ3cvTWFjTGFyZ2VEZW1vLnB5IGIvZGVtby9hZ3cvTWFjTGFyZ2VEZW1vLnB5CisraW5kZXgg NGQ5NjdhNTQ2Li5hNWI4YTBlMjUgMTAwNjQ0CisrLS0tIGEvZGVtby9hZ3cvTWFjTGFyZ2VEZW1v LnB5CisrKysrIGIvZGVtby9hZ3cvTWFjTGFyZ2VEZW1vLnB5CisrQEAgLTIyMywxMiArMjIzLDEy IEBAIGRlZiBEcmF3UHJvZ3Jlc3NCYXIoc2VsZiwgZGMsIHgsIHksIHcsIGgsIHBlcmNlbnQpOgor KyAgICAgICAgICAgICBtZGMuU2VsZWN0T2JqZWN0KHd4Lk51bGxCaXRtYXApCisrIAorKyAgICAg ICAgICMgQ2VudGVyIHRoZSBwcm9ncmVzcyBiYXIgdmVydGljYWxseSBpbiB0aGUgYm94IHN1cHBs aWVkCisrLSAgICAgICAgeSA9IHkgKyAoaCAtIFBJUEVfSEVJR0hUKS8yCisrKyAgICAgICAgeSA9 IHkgKyAoaCAtIFBJUEVfSEVJR0hUKS8vMgorKyAKKysgICAgICAgICBpZiBwZXJjZW50ID09IDA6 CisrICAgICAgICAgICAgIG1pZGRsZSA9IDAKKysgICAgICAgICBlbHNlOgorKy0gICAgICAgICAg ICBtaWRkbGUgPSAodyAqIHBlcmNlbnQpLzEwMAorKysgICAgICAgICAgICBtaWRkbGUgPSBpbnQo KHcgKiBwZXJjZW50KS8xMDApCisrIAorKyAgICAgICAgIGlmIHcgPCAxOgorKyAgICAgICAgICAg ICByZXR1cm4KKytkaWZmIC0tZ2l0IGEvZGVtby9hZ3cvUGVha01ldGVyLnB5IGIvZGVtby9hZ3cv UGVha01ldGVyLnB5CisraW5kZXggYTdjOWE2ZjUxLi5lOWRhYjcxMTYgMTAwNjQ0CisrLS0tIGEv ZGVtby9hZ3cvUGVha01ldGVyLnB5CisrKysrIGIvZGVtby9hZ3cvUGVha01ldGVyLnB5CisrQEAg LTE0OSwxMCArMTQ5LDEwIEBAIGRlZiBPbkZhbGxvZmYoc2VsZiwgZXZlbnQpOgorKyAKKysgICAg IGRlZiBPblN0YXJ0KHNlbGYsIGV2ZW50KToKKysgCisrLSAgICAgICAgc2VsZi50aW1lci5TdGFy dCgxMDAwLzIpICAgICAgICAjIDIgZnBzCisrKyAgICAgICAgc2VsZi50aW1lci5TdGFydCgxMDAw Ly8yKSAgICAgICAgIyAyIGZwcworKyAKKystICAgICAgICBzZWxmLnZlcnRQZWFrLlN0YXJ0KDEw MDAvMTgpICAgICAgICAjIDE4IGZwcworKy0gICAgICAgIHNlbGYuaG9yelBlYWsuU3RhcnQoMTAw MC8yMCkgICAgICAgICMgMjAgZnBzCisrKyAgICAgICAgc2VsZi52ZXJ0UGVhay5TdGFydCgxMDAw Ly8xOCkgICAgICAgICMgMTggZnBzCisrKyAgICAgICAgc2VsZi5ob3J6UGVhay5TdGFydCgxMDAw Ly8yMCkgICAgICAgICMgMjAgZnBzCisrIAorKyAKKysgICAgIGRlZiBPblN0b3Aoc2VsZiwgZXZl bnQpOgorK2RpZmYgLS1naXQgYS9kZW1vL2Fndy9QZXJzaXN0ZW50Q29udHJvbHMucHkgYi9kZW1v L2Fndy9QZXJzaXN0ZW50Q29udHJvbHMucHkKKytpbmRleCBmMTljYzRhOTEuLmNmOTdkZDlmMCAx MDA2NDQKKystLS0gYS9kZW1vL2Fndy9QZXJzaXN0ZW50Q29udHJvbHMucHkKKysrKysgYi9kZW1v L2Fndy9QZXJzaXN0ZW50Q29udHJvbHMucHkKKytAQCAtMjM0LDcgKzIzNCw3IEBAIGRlZiBCdWls ZFBhbmVzKHNlbGYpOgorKyAgICAgICAgIHNpemVyXzEuQWRkKGxhYmVsXzEsIDAsIHd4LkFMTCwg NSkKKysgICAgICAgICBzaXplcl8xLkFkZChjb21ibywgMCwgd3guTEVGVHx3eC5SSUdIVCwgNSkK KysgICAgICAgICBzaXplcl8xLkFkZCgoMjAsIDIwKSwgMSkKKystICAgICAgICBib3gyLkFkZChz aXplcl8xLCAxLCB3eC5FWFBBTkR8d3guQUxJR05fQ0VOVEVSLCAwKQorKysgICAgICAgIGJveDIu QWRkKHNpemVyXzEsIDEsIHd4LkVYUEFORCwgMCkKKysgICAgICAgICBib3gyLkFkZCgoMCwgMCks IDEsIDEpCisrIAorKyAgICAgICAgIG90aGVyUGFuZWwuU2V0U2l6ZXIoYm94MikKKytkaWZmIC0t Z2l0IGEvZGVtby9hZ3cvUmliYm9uQmFyLnB5IGIvZGVtby9hZ3cvUmliYm9uQmFyLnB5CisraW5k ZXggNzEwM2U5ZDgxLi5kMjhhMmM2NmEgMTAwNjQ0CisrLS0tIGEvZGVtby9hZ3cvUmliYm9uQmFy LnB5CisrKysrIGIvZGVtby9hZ3cvUmliYm9uQmFyLnB5CisrQEAgLTc5OSw3ICs3OTksNyBAQCBk ZWYgQWRkQ29sb3VyVG9HYWxsZXJ5KHNlbGYsIGdhbGxlcnksIGNvbG91ciwgZGMsIHZhbHVlPU5v bmUpOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYy5CbHVlKCkg KyAxOTIpICUgMjU2KQorKyAKKysgICAgICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQoZm9y ZWdyb3VuZCkKKystICAgICAgICAgICAgZGMuRHJhd1RleHQoY29sb3VyLCAoaVdpZHRoIC0gc2l6 ZS5HZXRXaWR0aCgpICsgMSkgLyAyLCAoaUhlaWdodCAtIHNpemUuR2V0SGVpZ2h0KCkpIC8gMikK KysrICAgICAgICAgICAgZGMuRHJhd1RleHQoY29sb3VyLCAoaVdpZHRoIC0gc2l6ZS5HZXRXaWR0 aCgpICsgMSkgLy8gMiwgKGlIZWlnaHQgLSBzaXplLkdldEhlaWdodCgpKSAvLyAyKQorKyAgICAg ICAgICAgICBkYy5TZWxlY3RPYmplY3RBc1NvdXJjZSh3eC5OdWxsQml0bWFwKQorKyAKKysgICAg ICAgICAgICAgaXRlbSA9IGdhbGxlcnkuQXBwZW5kKGJpdG1hcCwgd3guSURfQU5ZKQorK2RpZmYg LS1naXQgYS9kZW1vL2Fndy9TcGVlZE1ldGVyLnB5IGIvZGVtby9hZ3cvU3BlZWRNZXRlci5weQor K2luZGV4IDlmMGZkZWJiMi4uNTc1ZTg0YTgwIDEwMDY0NAorKy0tLSBhL2RlbW8vYWd3L1NwZWVk TWV0ZXIucHkKKysrKysgYi9kZW1vL2Fndy9TcGVlZE1ldGVyLnB5CisrQEAgLTQxOCw3ICs0MTgs NyBAQCBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCBsb2cpOgorKyAgICAgICAgIGJzaXplcjMg PSB3eC5Cb3hTaXplcih3eC5WRVJUSUNBTCkKKysgCisrICAgICAgICAgaHNpemVyMyA9IHd4LkJv eFNpemVyKHd4LkhPUklaT05UQUwpCisrLSAgICAgICAgc2MgPSB3eC5TcGluQ3RybChwYW5lbDMs IC0xLCBzaXplPSg2MCwyMCkpCisrKyAgICAgICAgc2MgPSB3eC5TcGluQ3RybChwYW5lbDMsIC0x KQorKyAgICAgICAgIHNjLlNldFJhbmdlKDEsIDI1MCkKKysgICAgICAgICBzYy5TZXRWYWx1ZSg1 MCkKKysgCisrZGlmZiAtLWdpdCBhL2RlbW8vYWd3L1N1cGVyVG9vbFRpcC5weSBiL2RlbW8vYWd3 L1N1cGVyVG9vbFRpcC5weQorK2luZGV4IDVlNjVmMDZiMS4uODg3MjhlNTRlIDEwMDY0NAorKy0t LSBhL2RlbW8vYWd3L1N1cGVyVG9vbFRpcC5weQorKysrKyBiL2RlbW8vYWd3L1N1cGVyVG9vbFRp cC5weQorK0BAIC00Myw3ICs0Myw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgorKyAg ICAgICAgIHNlbGYudG9wQ29sb3VyUGlja2VyID0gd3guQ29sb3VyUGlja2VyQ3RybChzZWxmLm1h aW5QYW5lbCwgY29sb3VyPXd4LldISVRFKQorKyAgICAgICAgIHN5c3RlbSA9IHd4LlN5c3RlbVNl dHRpbmdzLkdldENvbG91cih3eC5TWVNfQ09MT1VSX0FDVElWRUNBUFRJT04pCisrICAgICAgICAg ciwgZywgYiwgYSA9IHN5c3RlbQorKy0gICAgICAgIHNlbGYubWlkZGxlQ29sb3VyUGlja2VyID0g d3guQ29sb3VyUGlja2VyQ3RybChzZWxmLm1haW5QYW5lbCwgY29sb3VyPXd4LkNvbG91cigoMjU1 LXIpLzIsICgyNTUtZykvMiwgKDI1NS1iKS8yKSkKKysrICAgICAgICBzZWxmLm1pZGRsZUNvbG91 clBpY2tlciA9IHd4LkNvbG91clBpY2tlckN0cmwoc2VsZi5tYWluUGFuZWwsIGNvbG91cj13eC5D b2xvdXIoKDI1NS1yKS8vMiwgKDI1NS1nKS8vMiwgKDI1NS1iKS8vMikpCisrICAgICAgICAgc2Vs Zi5ib3R0b21Db2xvdXJQaWNrZXIgPSB3eC5Db2xvdXJQaWNrZXJDdHJsKHNlbGYubWFpblBhbmVs LCBjb2xvdXI9c3lzdGVtKQorKyAgICAgICAgIHNlbGYuaGVhZGVyQ2hlY2sgPSB3eC5DaGVja0Jv eChzZWxmLm1haW5QYW5lbCwgLTEsICJTaG93IEhlYWRlciIpCisrICAgICAgICAgc2VsZi5oZWFk ZXJUZXh0ID0gd3guVGV4dEN0cmwoc2VsZi5tYWluUGFuZWwsIC0xLCAiTWVyZ2UgQW5kIENlbnRl ciIpCisrQEAgLTIzMyw3ICsyMzMsNiBAQCBkZWYgRG9MYXlvdXQoc2VsZik6CisrICAgICAgICAg ZnJhbWVTaXplci5BZGQoc2VsZi5tYWluUGFuZWwsIDEsIHd4LkVYUEFORCwgMCkKKysgICAgICAg ICBzZWxmLlNldFNpemVyKGZyYW1lU2l6ZXIpCisrICAgICAgICAgZnJhbWVTaXplci5MYXlvdXQo KQorKy0gICAgICAgIGZyYW1lU2l6ZXIuRml0KHNlbGYpCisrICAgICAgICAgc2VsZi5MYXlvdXQo KQorKyAKKysgICAgICAgICB3eC5DYWxsQWZ0ZXIobWFpblNpemVyLkxheW91dCkKKytkaWZmIC0t Z2l0IGEvZGVtby9hZ3cvVWx0aW1hdGVSZXBvcnREZW1vLnB5IGIvZGVtby9hZ3cvVWx0aW1hdGVS ZXBvcnREZW1vLnB5CisraW5kZXggNDBmNDljYjhmLi5hZDQ1NTg0N2IgMTAwNjQ0CisrLS0tIGEv ZGVtby9hZ3cvVWx0aW1hdGVSZXBvcnREZW1vLnB5CisrKysrIGIvZGVtby9hZ3cvVWx0aW1hdGVS ZXBvcnREZW1vLnB5CisrQEAgLTIxNiw3ICsyMTYsNyBAQCBkZWYgRHJhd1N1Ykl0ZW0oc2VsZiwg ZGMsIHJlY3QsIGxpbmUsIGhpZ2hsaWdodGVkLCBlbmFibGVkKToKKysgICAgICAgICBtZGMuU2V0 Rm9udCh3eC5Gb250KDgsIHd4LkZPTlRGQU1JTFlfU1dJU1MsIHd4LkZPTlRTVFlMRV9OT1JNQUws IHd4LkZPTlRXRUlHSFRfQk9MRCkpCisrICAgICAgICAgdGV4dCA9ICIlZCBNYiIlc2VsZi5wcm9n cmVzc1ZhbHVlCisrICAgICAgICAgdGV4dFdpZHRoLCBkdW1teSA9IG1kYy5HZXRUZXh0RXh0ZW50 KHRleHQpCisrLSAgICAgICAgbWRjLkRyYXdUZXh0KHRleHQsIHJlY3Qud2lkdGgvMiAtIHRleHRX aWR0aC8yLCByZWN0LmhlaWdodC8yIC0gZHVtbXkvMikKKysrICAgICAgICBtZGMuRHJhd1RleHQo dGV4dCwgcmVjdC53aWR0aC8vMiAtIHRleHRXaWR0aC8vMiwgcmVjdC5oZWlnaHQvLzIgLSBkdW1t eS8vMikKKysgICAgICAgICBkYy5TZXRDbGlwcGluZ1JlZ2lvbihyZWN0LngsIHJlY3QueSwgcmVj dC53aWR0aCwgcmVjdC5oZWlnaHQpCisrICAgICAgICAgZGMuQmxpdChyZWN0LngrMywgcmVjdC55 LCByZWN0LndpZHRoLTYsIHJlY3QuaGVpZ2h0LCBtZGMsIDAsIDApCisrICAgICAgICAgZGMuRGVz dHJveUNsaXBwaW5nUmVnaW9uKCkKKytAQCAtMjc5LDEyICsyNzksMTIgQEAgZGVmIERyYXdQcm9n cmVzc0JhcihzZWxmLCBkYywgeCwgeSwgdywgaCwgcGVyY2VudCk6CisrICAgICAgICAgICAgIG1k Yy5TZWxlY3RPYmplY3Qod3guTnVsbEJpdG1hcCkKKysgCisrICAgICAgICAgIyBDZW50ZXIgdGhl IHByb2dyZXNzIGJhciB2ZXJ0aWNhbGx5IGluIHRoZSBib3ggc3VwcGxpZWQKKystICAgICAgICB5 ID0geSArIChoIC0gUElQRV9IRUlHSFQpLzIKKysrICAgICAgICB5ID0geSArIChoIC0gUElQRV9I RUlHSFQpLy8yCisrIAorKyAgICAgICAgIGlmIHBlcmNlbnQgPT0gMDoKKysgICAgICAgICAgICAg bWlkZGxlID0gMAorKyAgICAgICAgIGVsc2U6CisrLSAgICAgICAgICAgIG1pZGRsZSA9ICh3ICog cGVyY2VudCkvMTAwCisrKyAgICAgICAgICAgIG1pZGRsZSA9ICh3ICogcGVyY2VudCkvLzEwMAor KyAKKysgICAgICAgICBpZiBtaWRkbGUgPT0gMDogIyBub3Qgc3RhcnRlZAorKyAgICAgICAgICAg ICBiaXRtYXAgPSBzZWxmLlJFTUFJTklOR19CSVRNQVAuR2V0U3ViQml0bWFwKCgxLCAwLCB3LCBQ SVBFX0hFSUdIVCkpCisrQEAgLTMzNSw3ICszMzUsNyBAQCBkZWYgRHJhd1N1Ykl0ZW0oc2VsZiwg ZGMsIHJlY3QsIGxpbmUsIGhpZ2hsaWdodGVkLCBlbmFibGVkKToKKysgICAgICAgICBjb2xvdXJz ID0gW3d4LlJFRCwgd3guV0hJVEUsIHd4LkdSRUVOLCB3eC5Db2xvdXIoIlNLWSBCTFVFIildCisr ICAgICAgICAgdywgaCA9IGRjLkdldFRleHRFeHRlbnQoIkhnIikKKysgICAgICAgICB4ID0gcmVj dC54ICsgMQorKy0gICAgICAgIHkgPSByZWN0LnkgKyByZWN0LmhlaWdodC8yIC0gaC8yCisrKyAg ICAgICAgeSA9IHJlY3QueSArIHJlY3QuaGVpZ2h0Ly8yIC0gaC8vMgorKyAKKysgICAgICAgICBm b3IgY2ggaW4gc2VsZi50ZXh0OgorKyAgICAgICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3VuZChy YW5kb20uY2hvaWNlKGNvbG91cnMpKQorK2RpZmYgLS1naXQgYS9kZW1vL2Fndy9XaW5kb3dzN0V4 cGxvcmVyX0NvbnRlbnRzLnB5IGIvZGVtby9hZ3cvV2luZG93czdFeHBsb3Jlcl9Db250ZW50cy5w eQorK2luZGV4IGY3NTRkNzg3OS4uYjIzZGYwZTFhIDEwMDY0NAorKy0tLSBhL2RlbW8vYWd3L1dp bmRvd3M3RXhwbG9yZXJfQ29udGVudHMucHkKKysrKysgYi9kZW1vL2Fndy9XaW5kb3dzN0V4cGxv cmVyX0NvbnRlbnRzLnB5CisrQEAgLTEyNywxMyArMTI3LDEzIEBAIGRlZiBEcmF3U3ViSXRlbShz ZWxmLCBkYywgcmVjdCwgbGluZSwgaGlnaGxpZ2h0ZWQsIGVuYWJsZWQpOgorKyAgICAgICAgICIi IkRyYXcgYSBjdXN0b20gcHJvZ3Jlc3MgYmFyIHVzaW5nIGRvdWJsZSBidWZmZXJpbmcgdG8gcHJl dmVudCBmbGlja2VyIiIiCisrIAorKyAgICAgICAgIGJtcFdpZHRoLCBibXBIZWlnaHQgPSBzZWxm Lmljb24uR2V0V2lkdGgoKSwgc2VsZi5pY29uLkdldEhlaWdodCgpCisrLSAgICAgICAgZGMuRHJh d0ljb24oc2VsZi5pY29uLCByZWN0LngrNSwgcmVjdC55KyhyZWN0LmhlaWdodC1ibXBIZWlnaHQp LzIpCisrKyAgICAgICAgZGMuRHJhd0ljb24oc2VsZi5pY29uLCByZWN0LngrNSwgcmVjdC55Kyhy ZWN0LmhlaWdodC1ibXBIZWlnaHQpLy8yKQorKyAKKysgICAgICAgICBkYy5TZXRGb250KHNlbGYu bm9ybWFsRm9udCkKKysgCisrICAgICAgICAgdGV4dFdpZHRoLCB0ZXh0SGVpZ2h0ID0gZGMuR2V0 VGV4dEV4dGVudChzZWxmLnRleHQpCisrICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQod3gu U3lzdGVtU2V0dGluZ3MuR2V0Q29sb3VyKHd4LlNZU19DT0xPVVJfQlROVEVYVCkpCisrLSAgICAg ICAgZGMuRHJhd1RleHQoc2VsZi50ZXh0LCByZWN0LngrYm1wV2lkdGgrMTAsIHJlY3QueSsocmVj dC5oZWlnaHQgLSB0ZXh0SGVpZ2h0KS80KQorKysgICAgICAgIGRjLkRyYXdUZXh0KHNlbGYudGV4 dCwgcmVjdC54K2JtcFdpZHRoKzEwLCByZWN0LnkrKHJlY3QuaGVpZ2h0IC0gdGV4dEhlaWdodCkv LzQpCisrIAorKyAgICAgICAgIGlmIG5vdCBzZWxmLmRlc2NyaXB0aW9uOgorKyAgICAgICAgICAg ICByZXR1cm4KKytAQCAtMTQ0LDEwICsxNDQsMTAgQEAgZGVmIERyYXdTdWJJdGVtKHNlbGYsIGRj LCByZWN0LCBsaW5lLCBoaWdobGlnaHRlZCwgZW5hYmxlZCk6CisrICAgICAgICAgdGV4dFdpZHRo LCB0ZXh0SGVpZ2h0ID0gZGMuR2V0VGV4dEV4dGVudCgiVHlwZTogIiArIHNlbGYuZGVzY3JpcHRp b24pCisrIAorKyAgICAgICAgIGRjLlNldFRleHRGb3JlZ3JvdW5kKHNlbGYuZ3JleUNvbG91cikK KystICAgICAgICBkYy5EcmF3VGV4dCgiVHlwZTogIiwgcmVjdC54K2JtcFdpZHRoKzEwLCByZWN0 LnkrMyoocmVjdC5oZWlnaHQgLSB0ZXh0SGVpZ2h0KS80KQorKysgICAgICAgIGRjLkRyYXdUZXh0 KCJUeXBlOiAiLCByZWN0LngrYm1wV2lkdGgrMTAsIHJlY3QueSszKihyZWN0LmhlaWdodCAtIHRl eHRIZWlnaHQpLy80KQorKyAKKysgICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3VuZCh3eC5CTEFD SykKKystICAgICAgICBkYy5EcmF3VGV4dChzZWxmLmRlc2NyaXB0aW9uLCByZWN0LngrYm1wV2lk dGgrZHVtbXkxKzEwLCByZWN0LnkrMyoocmVjdC5oZWlnaHQgLSB0ZXh0SGVpZ2h0KS80KQorKysg ICAgICAgIGRjLkRyYXdUZXh0KHNlbGYuZGVzY3JpcHRpb24sIHJlY3QueCtibXBXaWR0aCtkdW1t eTErMTAsIHJlY3QueSszKihyZWN0LmhlaWdodCAtIHRleHRIZWlnaHQpLy80KQorKyAKKysgCisr ICAgICBkZWYgR2V0TGluZUhlaWdodChzZWxmKToKKytAQCAtMjA3LDEwICsyMDcsMTAgQEAgZGVm IERyYXdTdWJJdGVtKHNlbGYsIGRjLCByZWN0LCBsaW5lLCBoaWdobGlnaHRlZCwgZW5hYmxlZCk6 CisrICAgICAgICAgdGV4dFdpZHRoLCB0ZXh0SGVpZ2h0ID0gZGMuR2V0VGV4dEV4dGVudCgiRGF0 ZSBtb2RpZmllZDogIiArIGRhdGUpCisrIAorKyAgICAgICAgIGRjLlNldFRleHRGb3JlZ3JvdW5k KHNlbGYuZ3JleUNvbG91cikKKystICAgICAgICBkYy5EcmF3VGV4dCgiRGF0ZSBtb2RpZmllZDog IiwgcmVjdC54KzUsIHJlY3QueSsocmVjdC5oZWlnaHQgLSB0ZXh0SGVpZ2h0KS80KQorKysgICAg ICAgIGRjLkRyYXdUZXh0KCJEYXRlIG1vZGlmaWVkOiAiLCByZWN0LngrNSwgcmVjdC55KyhyZWN0 LmhlaWdodCAtIHRleHRIZWlnaHQpLy80KQorKyAKKysgICAgICAgICBkYy5TZXRUZXh0Rm9yZWdy b3VuZCh3eC5CTEFDSykKKystICAgICAgICBkYy5EcmF3VGV4dChkYXRlLCByZWN0LngrZHVtbXkx KzUsIHJlY3QueSsocmVjdC5oZWlnaHQgLSB0ZXh0SGVpZ2h0KS80KQorKysgICAgICAgIGRjLkRy YXdUZXh0KGRhdGUsIHJlY3QueCtkdW1teTErNSwgcmVjdC55KyhyZWN0LmhlaWdodCAtIHRleHRI ZWlnaHQpLy80KQorKyAKKysgICAgICAgICBpZiBub3Qgc2VsZi5zaXplOgorKyAgICAgICAgICAg ICByZXR1cm4KKytAQCAtMjE4LDEwICsyMTgsMTAgQEAgZGVmIERyYXdTdWJJdGVtKHNlbGYsIGRj LCByZWN0LCBsaW5lLCBoaWdobGlnaHRlZCwgZW5hYmxlZCk6CisrICAgICAgICAgZHVtbXkxLCBk dW1teTI9IGRjLkdldFRleHRFeHRlbnQoIlNpemU6ICIpCisrIAorKyAgICAgICAgIGRjLlNldFRl eHRGb3JlZ3JvdW5kKHNlbGYuZ3JleUNvbG91cikKKystICAgICAgICBkYy5EcmF3VGV4dCgiU2l6 ZTogIiwgcmVjdC54KzUsIHJlY3QueSszKihyZWN0LmhlaWdodCAtIHRleHRIZWlnaHQpLzQpCisr KyAgICAgICAgZGMuRHJhd1RleHQoIlNpemU6ICIsIHJlY3QueCs1LCByZWN0LnkrMyoocmVjdC5o ZWlnaHQgLSB0ZXh0SGVpZ2h0KS8vNCkKKysgCisrICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91 bmQod3guQkxBQ0spCisrLSAgICAgICAgZGMuRHJhd1RleHQoc2VsZi5zaXplLCByZWN0LngrZHVt bXkxKzUsIHJlY3QueSszKihyZWN0LmhlaWdodCAtIHRleHRIZWlnaHQpLzQpCisrKyAgICAgICAg ZGMuRHJhd1RleHQoc2VsZi5zaXplLCByZWN0LngrZHVtbXkxKzUsIHJlY3QueSszKihyZWN0Lmhl aWdodCAtIHRleHRIZWlnaHQpLy80KQorKyAKKysgCisrICAgICBkZWYgR2V0TGluZUhlaWdodChz ZWxmKToKKytkaWZmIC0tZ2l0IGEvZGVtby9hZ3cvWm9vbUJhci5weSBiL2RlbW8vYWd3L1pvb21C YXIucHkKKytpbmRleCAzNzZjZTM0OWIuLjE0YjAyNzhlNyAxMDA2NDQKKystLS0gYS9kZW1vL2Fn dy9ab29tQmFyLnB5CisrKysrIGIvZGVtby9hZ3cvWm9vbUJhci5weQorK0BAIC01NSw3ICs1NSw3 IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGxvZyk6CisrICAgICAgICAgcmVmbGVjdGlv bnMgPSBnbG9iLmdsb2IoYml0bWFwRGlyICsgIi8qOTZGbGlwNDAucG5nIikKKysgCisrICAgICAg ICAgc2VwYXJhdG9ySW1hZ2UgPSBiaXRtYXBEaXIgKyAiL3NlcGFyYXRvci5naWYiCisrLSAgICAg ICAgc2VwYXJhdG9yUmVmbGVjdGlvbiA9IGJpdG1hcERpciArICIvc2VwYXJhdG9yRmxpcC5wbmci CisrKyAgICAgICAgc2VwYXJhdG9yUmVmbGVjdGlvbiA9IGJpdG1hcERpciArICIvc2VwYXJhdG9y ZmxpcC5wbmciCisrICAgICAgICAgY291bnQgPSAwCisrIAorKyAgICAgICAgIGZvciBzdGQsIHJl ZiBpbiB6aXAoc3RhbmRhcmQsIHJlZmxlY3Rpb25zKToKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fn dy9hZHZhbmNlZHNwbGFzaC5weSBiL3d4L2xpYi9hZ3cvYWR2YW5jZWRzcGxhc2gucHkKKytpbmRl eCAxZjhjMzJkZjUuLmQzNTFlYTA2ZSAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L2FkdmFuY2Vk c3BsYXNoLnB5CisrKysrIGIvd3gvbGliL2Fndy9hZHZhbmNlZHNwbGFzaC5weQorK0BAIC00Mzgs NyArNDM4LDcgQEAgZGVmIFNldFRleHRGb250KHNlbGYsIGZvbnQ9Tm9uZSk6CisrIAorKyAgICAg ICAgIGlmIGZvbnQgaXMgTm9uZToKKysgICAgICAgICAgICAgc2VsZi5fdGV4dGZvbnQgPSB3eC5G b250KDEsIHd4LkZPTlRGQU1JTFlfU1dJU1MsIHd4LkZPTlRTVFlMRV9OT1JNQUwsIHd4LkZPTlRX RUlHSFRfQk9MRCwgRmFsc2UpCisrLSAgICAgICAgICAgIHNlbGYuX3RleHRzaXplID0gMTAuMAor KysgICAgICAgICAgICBzZWxmLl90ZXh0c2l6ZSA9IDEwCisrICAgICAgICAgICAgIHNlbGYuX3Rl eHRmb250LlNldFBvaW50U2l6ZShzZWxmLl90ZXh0c2l6ZSkKKysgICAgICAgICBlbHNlOgorKyAg ICAgICAgICAgICBzZWxmLl90ZXh0Zm9udCA9IGZvbnQKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fn dy9hdWkvYXVpYm9vay5weSBiL3d4L2xpYi9hZ3cvYXVpL2F1aWJvb2sucHkKKytpbmRleCBiYTdj ZjQ3MjEuLmY1YWQyYTU2OCAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L2F1aS9hdWlib29rLnB5 CisrKysrIGIvd3gvbGliL2Fndy9hdWkvYXVpYm9vay5weQorK0BAIC0zNDUyLDggKzM0NTIsOCBA QCBkZWYgQ2FsY3VsYXRlTmV3U3BsaXRTaXplKHNlbGYpOgorKyAgICAgICAgICMgc2hvdWxkIGhh cHBlbiBhcm91bmQgdGhlIG1pZGRsZQorKyAgICAgICAgIGlmIHRhYl9jdHJsX2NvdW50IDwgMjoK KysgICAgICAgICAgICAgbmV3X3NwbGl0X3NpemUgPSBzZWxmLkdldENsaWVudFNpemUoKQorKy0g ICAgICAgICAgICBuZXdfc3BsaXRfc2l6ZS54IC89IDIKKystICAgICAgICAgICAgbmV3X3NwbGl0 X3NpemUueSAvPSAyCisrKyAgICAgICAgICAgIG5ld19zcGxpdF9zaXplLnggLy89IDIKKysrICAg ICAgICAgICAgbmV3X3NwbGl0X3NpemUueSAvLz0gMgorKyAKKysgICAgICAgICBlbHNlOgorKyAK KytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fndy9iYWxsb29udGlwLnB5IGIvd3gvbGliL2Fndy9iYWxs b29udGlwLnB5CisraW5kZXggYjQxNTVkNzRhLi41N2JhY2E3MjkgMTAwNjQ0CisrLS0tIGEvd3gv bGliL2Fndy9iYWxsb29udGlwLnB5CisrKysrIGIvd3gvbGliL2Fndy9iYWxsb29udGlwLnB5Cisr QEAgLTYxNSw3ICs2MTUsNyBAQCBkZWYgU2V0U3RhcnREZWxheShzZWxmLCBkZWxheT0xKToKKysg ICAgICAgICBpZiBkZWxheSA8IDE6CisrICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiXG5F UlJPUjogRGVsYXkgVGltZSBGb3IgQmFsbG9vblRpcCBDcmVhdGlvbiBTaG91bGQgQmUgR3JlYXRl ciBUaGFuIDEgbXMiKQorKyAKKystICAgICAgICBzZWxmLl9zdGFydGRlbGF5dGltZSA9IGZsb2F0 KGRlbGF5KQorKysgICAgICAgIHNlbGYuX3N0YXJ0ZGVsYXl0aW1lID0gaW50KGRlbGF5KQorKyAK KysgCisrICAgICBkZWYgR2V0U3RhcnREZWxheShzZWxmKToKKytAQCAtNjQwLDcgKzY0MCw3IEBA IGRlZiBTZXRFbmREZWxheShzZWxmLCBkZWxheT0xZTYpOgorKyAgICAgICAgIGlmIGRlbGF5IDwg MToKKysgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJcbkVSUk9SOiBEZWxheSBUaW1lIEZv ciBCYWxsb29uVGlwIERlc3RydWN0aW9uIFNob3VsZCBCZSBHcmVhdGVyIFRoYW4gMSBtcyIpCisr IAorKy0gICAgICAgIHNlbGYuX2VuZGRlbGF5dGltZSA9IGZsb2F0KGRlbGF5KQorKysgICAgICAg IHNlbGYuX2VuZGRlbGF5dGltZSA9IGludChkZWxheSkKKysgCisrIAorKyAgICAgZGVmIEdldEVu ZERlbGF5KHNlbGYpOgorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L2ZsYXRtZW51LnB5IGIvd3gv bGliL2Fndy9mbGF0bWVudS5weQorK2luZGV4IDViYTI4ZTU4NC4uODVmMjk1Yjg2IDEwMDY0NAor Ky0tLSBhL3d4L2xpYi9hZ3cvZmxhdG1lbnUucHkKKysrKysgYi93eC9saWIvYWd3L2ZsYXRtZW51 LnB5CisrQEAgLTczNiw4ICs3MzYsOCBAQCBkZWYgRHJhd1NlcGFyYXRvcihzZWxmLCBkYywgeENv b3JkLCB5Q29vcmQsIHRleHRYLCBzZXBXaWR0aCk6CisrICAgICAgICAgIiIiCisrIAorKyAgICAg ICAgIGRjc2F2ZXIgPSBEQ1NhdmVyKGRjKQorKy0gICAgICAgIHNlcFJlY3QxID0gd3guUmVjdCh4 Q29vcmQgKyB0ZXh0WCwgeUNvb3JkICsgMSwgc2VwV2lkdGgvMiwgMSkKKystICAgICAgICBzZXBS ZWN0MiA9IHd4LlJlY3QoeENvb3JkICsgdGV4dFggKyBzZXBXaWR0aC8yLCB5Q29vcmQgKyAxLCBz ZXBXaWR0aC8yLTEsIDEpCisrKyAgICAgICAgc2VwUmVjdDEgPSB3eC5SZWN0KHhDb29yZCArIHRl eHRYLCB5Q29vcmQgKyAxLCBzZXBXaWR0aC8vMiwgMSkKKysrICAgICAgICBzZXBSZWN0MiA9IHd4 LlJlY3QoeENvb3JkICsgdGV4dFggKyBzZXBXaWR0aC8vMiwgeUNvb3JkICsgMSwgc2VwV2lkdGgv LzItMSwgMSkKKysgCisrICAgICAgICAgYXJ0TWdyID0gQXJ0TWFuYWdlci5HZXQoKQorKyAgICAg ICAgIGJhY2tDb2xvdXIgPSBhcnRNZ3IuR2V0TWVudUZhY2VDb2xvdXIoKQorK0BAIC04MTcsMTEg KzgxNywxMSBAQCBkZWYgRHJhd01lbnVJdGVtKHNlbGYsIGl0ZW0sIGRjLCB4Q29vcmQsIHlDb29y ZCwgaW1hZ2VNYXJnaW5YLCBtYXJrZXJNYXJnaW5YLCB0ZQorKyAgICAgICAgICAgICBpbWdXaWR0 aCAgPSBibXAuR2V0V2lkdGgoKQorKyAKKysgICAgICAgICAgICAgaWYgaW1hZ2VNYXJnaW5YID09 IDA6CisrLSAgICAgICAgICAgICAgICB4eCA9IHJlY3QueCArIChsZWZ0TWFyZ2luV2lkdGggLSBp bWdXaWR0aCkvMgorKysgICAgICAgICAgICAgICAgeHggPSByZWN0LnggKyAobGVmdE1hcmdpbldp ZHRoIC0gaW1nV2lkdGgpLy8yCisrICAgICAgICAgICAgIGVsc2U6CisrLSAgICAgICAgICAgICAg ICB4eCA9IHJlY3QueCArICgobGVmdE1hcmdpbldpZHRoIC0gcmVjdC5oZWlnaHQpIC0gaW1nV2lk dGgpLzIgKyByZWN0LmhlaWdodAorKysgICAgICAgICAgICAgICAgeHggPSByZWN0LnggKyAoKGxl ZnRNYXJnaW5XaWR0aCAtIHJlY3QuaGVpZ2h0KSAtIGltZ1dpZHRoKS8vMiArIHJlY3QuaGVpZ2h0 CisrIAorKy0gICAgICAgICAgICB5eSA9IHJlY3QueSArIChyZWN0LmhlaWdodCAtIGltZ0hlaWdo dCkvMgorKysgICAgICAgICAgICB5eSA9IHJlY3QueSArIChyZWN0LmhlaWdodCAtIGltZ0hlaWdo dCkvLzIKKysgICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChibXAsIHh4LCB5eSwgVHJ1ZSkKKysg CisrICAgICAgICAgaWYgaXRlbS5HZXRLaW5kKCkgPT0gd3guSVRFTV9DSEVDSzoKKytAQCAtODM3 LDcgKzgzNyw3IEBAIGRlZiBEcmF3TWVudUl0ZW0oc2VsZiwgaXRlbSwgZGMsIHhDb29yZCwgeUNv b3JkLCBpbWFnZU1hcmdpblgsIG1hcmtlck1hcmdpblgsIHRlCisrICAgICAgICAgICAgICAgICBp ZiBub3Qgc2VsZWN0ZWQgYW5kIHNlbGYuaGlnaGxpZ2h0Q2hlY2tBbmRSYWRpbzoKKysgICAgICAg ICAgICAgICAgICAgICBzZWxmLkRyYXdCdXR0b24oZGMsIHJyLCBDb250cm9sRm9jdXMpCisrIAor Ky0gICAgICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChpdGVtLl9jaGVja01hcmtCbXAsIHJyLngg KyAocnIud2lkdGggLSAxNikvMiwgcnIueSArIChyci5oZWlnaHQgLSAxNikvMiwgVHJ1ZSkKKysr ICAgICAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoaXRlbS5fY2hlY2tNYXJrQm1wLCByci54ICsg KHJyLndpZHRoIC0gMTYpLy8yLCByci55ICsgKHJyLmhlaWdodCAtIDE2KS8vMiwgVHJ1ZSkKKysg CisrICAgICAgICAgaWYgaXRlbS5HZXRLaW5kKCkgPT0gd3guSVRFTV9SQURJTzoKKysgCisrQEAg LTg1Miw3ICs4NTIsNyBAQCBkZWYgRHJhd01lbnVJdGVtKHNlbGYsIGl0ZW0sIGRjLCB4Q29vcmQs IHlDb29yZCwgaW1hZ2VNYXJnaW5YLCBtYXJrZXJNYXJnaW5YLCB0ZQorKyAgICAgICAgICAgICAg ICAgaWYgbm90IHNlbGVjdGVkIGFuZCBzZWxmLmhpZ2hsaWdodENoZWNrQW5kUmFkaW86CisrICAg ICAgICAgICAgICAgICAgICAgc2VsZi5EcmF3QnV0dG9uKGRjLCByciwgQ29udHJvbEZvY3VzKQor KyAKKystICAgICAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoaXRlbS5fcmFkaW9NYXJrQm1wLCBy ci54ICsgKHJyLndpZHRoIC0gMTYpLzIsIHJyLnkgKyAocnIuaGVpZ2h0IC0gMTYpLzIsIFRydWUp CisrKyAgICAgICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGl0ZW0uX3JhZGlvTWFya0JtcCwgcnIu eCArIChyci53aWR0aCAtIDE2KS8vMiwgcnIueSArIChyci5oZWlnaHQgLSAxNikvLzIsIFRydWUp CisrIAorKyAgICAgICAgICMgRHJhdyB0ZXh0IC0gd2l0aG91dCBhY2NlbGVyYXRvcnMKKysgICAg ICAgICB0ZXh0ID0gaXRlbS5HZXRMYWJlbCgpCisrQEAgLTg5MCw3ICs4OTAsNyBAQCBkZWYgRHJh d01lbnVJdGVtKHNlbGYsIGl0ZW0sIGRjLCB4Q29vcmQsIHlDb29yZCwgaW1hZ2VNYXJnaW5YLCBt YXJrZXJNYXJnaW5YLCB0ZQorKyAgICAgICAgICAgICAgICAgdzMsIGR1bW15ID0gZGMuR2V0VGV4 dEV4dGVudCh0ZXh0MykKKysgCisrICAgICAgICAgICAgICAgICBwb3N4ID0geENvb3JkICsgdGV4 dFggKyBib3JkZXJYU2l6ZQorKy0gICAgICAgICAgICAgICAgcG9zeSA9IChpdGVtSGVpZ2h0IC0g aCkvMiArIHlDb29yZAorKysgICAgICAgICAgICAgICAgcG9zeSA9IChpdGVtSGVpZ2h0IC0gaCkv LzIgKyB5Q29vcmQKKysgCisrICAgICAgICAgICAgICAgICAjIERyYXcgZmlyc3QgcGFydAorKyAg ICAgICAgICAgICAgICAgZGMuRHJhd1RleHQodGV4dDEsIHBvc3gsIHBvc3kpCisrQEAgLTkxMiw3 ICs5MTIsNyBAQCBkZWYgRHJhd01lbnVJdGVtKHNlbGYsIGl0ZW0sIGRjLCB4Q29vcmQsIHlDb29y ZCwgaW1hZ2VNYXJnaW5YLCBtYXJrZXJNYXJnaW5YLCB0ZQorKyAgICAgICAgICAgICBlbHNlOgor KyAKKysgICAgICAgICAgICAgICAgIHcsIGggPSBkYy5HZXRUZXh0RXh0ZW50KHRleHQpCisrLSAg ICAgICAgICAgICAgICBkYy5EcmF3VGV4dCh0ZXh0LCB4Q29vcmQgKyB0ZXh0WCArIGJvcmRlclhT aXplLCAoaXRlbUhlaWdodCAtIGgpLzIgKyB5Q29vcmQpCisrKyAgICAgICAgICAgICAgICBkYy5E cmF3VGV4dCh0ZXh0LCB4Q29vcmQgKyB0ZXh0WCArIGJvcmRlclhTaXplLCAoaXRlbUhlaWdodCAt IGgpLy8yICsgeUNvb3JkKQorKyAKKysgCisrICAgICAgICAgIyBOb3cgZHJhdyBhY2NlbGVyYXRv cgorK0BAIC05MjAsNyArOTIwLDcgQEAgZGVmIERyYXdNZW51SXRlbShzZWxmLCBpdGVtLCBkYywg eENvb3JkLCB5Q29vcmQsIGltYWdlTWFyZ2luWCwgbWFya2VyTWFyZ2luWCwgdGUKKysgICAgICAg ICBpZiBpdGVtLkdldEFjY2VsU3RyaW5nKCk6CisrIAorKyAgICAgICAgICAgICBhY2NlbFdpZHRo LCBhY2NlbEhlaWdodCA9IGRjLkdldFRleHRFeHRlbnQoaXRlbS5HZXRBY2NlbFN0cmluZygpKQor Ky0gICAgICAgICAgICBkYy5EcmF3VGV4dChpdGVtLkdldEFjY2VsU3RyaW5nKCksIHhDb29yZCAr IHJpZ2h0TWFyZ2luWCAtIGFjY2VsV2lkdGgsIChpdGVtSGVpZ2h0IC0gYWNjZWxIZWlnaHQpLzIg KyB5Q29vcmQpCisrKyAgICAgICAgICAgIGRjLkRyYXdUZXh0KGl0ZW0uR2V0QWNjZWxTdHJpbmco KSwgeENvb3JkICsgcmlnaHRNYXJnaW5YIC0gYWNjZWxXaWR0aCwgKGl0ZW1IZWlnaHQgLSBhY2Nl bEhlaWdodCkvLzIgKyB5Q29vcmQpCisrIAorKyAgICAgICAgICMgQ2hlY2sgaWYgdGhpcyBpdGVt IGhhcyBzdWItbWVudSAtIGlmIGl0IGRvZXMsIGRyYXcKKysgICAgICAgICAjIHJpZ2h0IGFycm93 IG9uIHRoZSByaWdodCBtYXJnaW4KKytAQCAtOTMyLDcgKzkzMiw3IEBAIGRlZiBEcmF3TWVudUl0 ZW0oc2VsZiwgaXRlbSwgZGMsIHhDb29yZCwgeUNvb3JkLCBpbWFnZU1hcmdpblgsIG1hcmtlck1h cmdpblgsIHRlCisrIAorKyAgICAgICAgICAgICB4eCA9IHhDb29yZCArIHJpZ2h0TWFyZ2luWCAr IGJvcmRlclhTaXplCisrICAgICAgICAgICAgIHJyID0gd3guUmVjdCh4eCwgcmVjdC55ICsgMSwg cmVjdC5oZWlnaHQtMiwgcmVjdC5oZWlnaHQtMikKKystICAgICAgICAgICAgZGMuRHJhd0JpdG1h cChyaWdodEFycm93Qm1wLCByci54ICsgNCwgcnIueSArKHJyLmhlaWdodC0xNikvMiwgVHJ1ZSkK KysrICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChyaWdodEFycm93Qm1wLCByci54ICsgNCwgcnIu eSArKHJyLmhlaWdodC0xNikvLzIsIFRydWUpCisrIAorKyAKKysgICAgIGRlZiBEcmF3TWVudUJh ckJ1dHRvbihzZWxmLCBkYywgcmVjdCwgc3RhdGUpOgorK0BAIC0xMTQyLDcgKzExNDIsNyBAQCBk ZWYgRHJhd01lbnVCYXIoc2VsZiwgbWVudWJhciwgZGMpOgorKyAgICAgICAgICAgICAjIEdldCB0 aGUgbWVudSBpdGVtIHJlY3QKKysgICAgICAgICAgICAgdGV4dFdpZHRoLCB0ZXh0SGVpZ2h0ID0g ZGMuR2V0VGV4dEV4dGVudChmaXhlZFRleHQpCisrICAgICAgICAgICAgICNyZWN0ID0gd3guUmVj dChwb3N4K21lbnViYXIuX3NwYWNlci8yLCBwb3N5LCB0ZXh0V2lkdGgsIHRleHRIZWlnaHQpCisr LSAgICAgICAgICAgIHJlY3QgPSB3eC5SZWN0KHBvc3grcGFkZGluZy8yLCBwb3N5LCB0ZXh0V2lk dGgsIHRleHRIZWlnaHQpCisrKyAgICAgICAgICAgIHJlY3QgPSB3eC5SZWN0KHBvc3grcGFkZGlu Zy8vMiwgcG9zeSwgdGV4dFdpZHRoLCB0ZXh0SGVpZ2h0KQorKyAKKysgICAgICAgICAgICAgIyBD YW4gd2UgZHJhdyBtb3JlPz8KKysgICAgICAgICAgICAgIyB0aGUgK0RST1BfRE9XTl9BUlJPV19X SURUSCAgaXMgdGhlIHdpZHRoIG9mIHRoZSBkcm9wIGRvd24gYXJyb3cKKytAQCAtMTE3Miw3ICsx MTcyLDcgQEAgZGVmIERyYXdNZW51QmFyKHNlbGYsIG1lbnViYXIsIGRjKToKKysgICAgICAgICAg ICAgICAgIGRjLlNldFRleHRGb3JlZ3JvdW5kKHRleHRDb2xvdXIpCisrIAorKyAgICAgICAgICAg ICB3dywgaGggPSBkYy5HZXRUZXh0RXh0ZW50KGxhYmVsT25seSkKKystICAgICAgICAgICAgdGV4 dE9mZnNldCA9IChyZWN0LndpZHRoIC0gd3cpIC8gMgorKysgICAgICAgICAgICB0ZXh0T2Zmc2V0 ID0gKHJlY3Qud2lkdGggLSB3dykgLy8gMgorKyAKKysgICAgICAgICAgICAgaWYgbm90IG1lbnVi YXIuX2lzTENEIGFuZCBpdGVtLkdldFRleHRCaXRtYXAoKS5Jc09rKCkgYW5kIG5vdCBzZWxlY3Rl ZDoKKysgICAgICAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoaXRlbS5HZXRUZXh0Qml0bWFwKCks IHJlY3QueCwgcmVjdC55LCBUcnVlKQorK0BAIC0xNTA1LDggKzE1MDUsOCBAQCBkZWYgRHJhd0J1 dHRvbkNvbG91cihzZWxmLCBkYywgcmVjdCwgc3RhdGUsIGNvbG91cik6CisrICAgICAgICAgYmFz ZUNvbG91ciA9IGNvbG91cgorKyAKKysgICAgICAgICAjIERlZmluZSB0aGUgbWlkZGxlIHBvaW50 cworKy0gICAgICAgIGxlZnRQdCA9IHd4LlBvaW50KHJlY3QueCwgcmVjdC55ICsgKHJlY3QuaGVp Z2h0IC8gMikpCisrLSAgICAgICAgcmlnaHRQdCA9IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lk dGgtMSwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gMikpCisrKyAgICAgICAgbGVmdFB0ID0gd3gu UG9pbnQocmVjdC54LCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLy8gMikpCisrKyAgICAgICAgcmln aHRQdCA9IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lkdGgtMSwgcmVjdC55ICsgKHJlY3QuaGVp Z2h0IC8vIDIpKQorKyAKKysgICAgICAgICAjIERlZmluZSB0aGUgdG9wIHJlZ2lvbgorKyAgICAg ICAgIHRvcCA9IHd4LlJlY3QoKHJlY3QuR2V0TGVmdCgpLCByZWN0LkdldFRvcCgpKSwgcmlnaHRQ dCkKKytAQCAtMTU3MiwxMSArMTU3MiwxMSBAQCBkZWYgRHJhd01lbnVCYXJCYWNrZ3JvdW5kKHNl bGYsIGRjLCByZWN0KToKKysgCisrICAgICAgICAgZmFjdG9yID0gYXJ0TWdyLkdldE1lbnVCZ0Zh Y3RvcigpCisrIAorKy0gICAgICAgIGxlZnRQdDEgPSB3eC5Qb2ludChyZWN0LngsIHJlY3QueSAr IChyZWN0LmhlaWdodCAvIGZhY3RvcikpCisrLSAgICAgICAgbGVmdFB0MiA9IHd4LlBvaW50KHJl Y3QueCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gZmFjdG9yKSooZmFjdG9yLTEpKQorKysgICAg ICAgIGxlZnRQdDEgPSB3eC5Qb2ludChyZWN0LngsIHJlY3QueSArIChyZWN0LmhlaWdodCAvLyBm YWN0b3IpKQorKysgICAgICAgIGxlZnRQdDIgPSB3eC5Qb2ludChyZWN0LngsIHJlY3QueSArIChy ZWN0LmhlaWdodCAvLyBmYWN0b3IpKihmYWN0b3ItMSkpCisrIAorKy0gICAgICAgIHJpZ2h0UHQx ID0gd3guUG9pbnQocmVjdC54ICsgcmVjdC53aWR0aCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8g ZmFjdG9yKSkKKystICAgICAgICByaWdodFB0MiA9IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lk dGgsIHJlY3QueSArIChyZWN0LmhlaWdodCAvIGZhY3RvcikqKGZhY3Rvci0xKSkKKysrICAgICAg ICByaWdodFB0MSA9IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lkdGgsIHJlY3QueSArIChyZWN0 LmhlaWdodCAvLyBmYWN0b3IpKQorKysgICAgICAgIHJpZ2h0UHQyID0gd3guUG9pbnQocmVjdC54 ICsgcmVjdC53aWR0aCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8vIGZhY3RvcikqKGZhY3Rvci0x KSkKKysgCisrICAgICAgICAgIyBEZWZpbmUgdGhlIHRvcCByZWdpb24KKysgICAgICAgICB0b3BS ZWcgPSBbd3guUG9pbnQoKSBmb3IgaWkgaW4gcmFuZ2UoNyldCisrQEAgLTI3MDcsNyArMjcwNyw3 IEBAIGRlZiBEcmF3VG9vbGJhcihzZWxmLCBkYywgcmVjdCk6CisrICAgICAgICAgICAgIGVsaWYg dGJJdGVtLklzQ3VzdG9tQ29udHJvbCgpOgorKyAgICAgICAgICAgICAgICAgY29udHJvbCA9IHRi SXRlbS5HZXRDdXN0b21Db250cm9sKCkKKysgICAgICAgICAgICAgICAgIGN0cmxTaXplID0gY29u dHJvbC5HZXRTaXplKCkKKystICAgICAgICAgICAgICAgIGN0cmxQb3MgPSB3eC5Qb2ludCh4eCwg cmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gY3RybFNpemUueSkvMikKKysrICAgICAgICAgICAgICAg IGN0cmxQb3MgPSB3eC5Qb2ludCh4eCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gY3RybFNpemUu eSkvLzIpCisrICAgICAgICAgICAgICAgICBpZiBjb250cm9sLkdldFBvc2l0aW9uKCkgIT0gY3Ry bFBvczoKKysgICAgICAgICAgICAgICAgICAgICBjb250cm9sLlNldFBvc2l0aW9uKGN0cmxQb3Mp CisrIAorK0BAIC0yNzI3LDkgKzI3MjcsOSBAQCBkZWYgRHJhd1Rvb2xiYXIoc2VsZiwgZGMsIHJl Y3QpOgorKyAgICAgICAgICAgICAjIERyYXcgdGhlIHRvb2xiYXIgaW1hZ2UKKysgICAgICAgICAg ICAgaWYgYm1wLklzT2soKToKKysgCisrLSAgICAgICAgICAgICAgICB4ID0geHggLSBzZWxmLl90 b29sYmFyU3BhY2VyLzIKKysrICAgICAgICAgICAgICAgIHggPSB4eCAtIHNlbGYuX3Rvb2xiYXJT cGFjZXIvLzIKKysgICAgICAgICAgICAgICAgICN5ID0gcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0g Ym1wLkdldEhlaWdodCgpKS8yIC0gMQorKy0gICAgICAgICAgICAgICAgeSA9IHJlY3QueSArIHNl bGYuX3Rvb2xiYXJNYXJnaW4vMgorKysgICAgICAgICAgICAgICAgeSA9IHJlY3QueSArIHNlbGYu X3Rvb2xiYXJNYXJnaW4vLzIKKysgCisrICAgICAgICAgICAgICAgICBidXR0b25SZWN0ID0gd3gu UmVjdCh4LCB5LCBoaWdobGlnaHRfd2lkdGgsIGhpZ2hsaWdodF9oZWlnaHQpCisrIAorK0BAIC0y NzQ1LDggKzI3NDUsOCBAQCBkZWYgRHJhd1Rvb2xiYXIoc2VsZiwgZGMsIHJlY3QpOgorKyAgICAg ICAgICAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Ri QnV0dG9uc1tpXS5fc3RhdGUgPSBDb250cm9sTm9ybWFsCisrIAorKy0gICAgICAgICAgICAgICAg aW1neCA9IGJ1dHRvblJlY3QueCArIChidXR0b25SZWN0LndpZHRoIC0gYm1wLkdldFdpZHRoKCkp LzIKKystICAgICAgICAgICAgICAgIGltZ3kgPSBidXR0b25SZWN0LnkgKyAoYnV0dG9uUmVjdC5o ZWlnaHQgLSBibXAuR2V0SGVpZ2h0KCkpLzIKKysrICAgICAgICAgICAgICAgIGltZ3ggPSBidXR0 b25SZWN0LnggKyAoYnV0dG9uUmVjdC53aWR0aCAtIGJtcC5HZXRXaWR0aCgpKS8vMgorKysgICAg ICAgICAgICAgICAgaW1neSA9IGJ1dHRvblJlY3QueSArIChidXR0b25SZWN0LmhlaWdodCAtIGJt cC5HZXRIZWlnaHQoKSkvLzIKKysgCisrICAgICAgICAgICAgICAgICBpZiBzZWxmLl90YkJ1dHRv bnNbaV0uX3N0YXRlID09IENvbnRyb2xGb2N1cyBhbmQgbm90IHNlbGYuX3RiQnV0dG9uc1tpXS5f dGJJdGVtLklzU2VsZWN0ZWQoKToKKysgCisrQEAgLTI4MjcsOCArMjgyNyw4IEBAIGRlZiBEcmF3 TW9yZUJ1dHRvbihzZWxmLCBkYywgc3RhdGUpOgorKyAgICAgICAgIGRyb3BBcnJvd0JtcCA9IHNl bGYuR2V0UmVuZGVyZXIoKS5fYml0bWFwc1siYXJyb3dfZG93biJdCisrIAorKyAgICAgICAgICMg Q2FsYyB0aGUgaW1hZ2UgY29vcmRpbmF0ZXMKKystICAgICAgICB4eCA9IHJlY3QueCArIChEUk9Q X0RPV05fQVJST1dfV0lEVEggLSBkcm9wQXJyb3dCbXAuR2V0V2lkdGgoKSkvMgorKy0gICAgICAg IHl5ID0gcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gZHJvcEFycm93Qm1wLkdldEhlaWdodCgpKS8y CisrKyAgICAgICAgeHggPSByZWN0LnggKyAoRFJPUF9ET1dOX0FSUk9XX1dJRFRIIC0gZHJvcEFy cm93Qm1wLkdldFdpZHRoKCkpLy8yCisrKyAgICAgICAgeXkgPSByZWN0LnkgKyAocmVjdC5oZWln aHQgLSBkcm9wQXJyb3dCbXAuR2V0SGVpZ2h0KCkpLy8yCisrIAorKyAgICAgICAgIGRjLkRyYXdC aXRtYXAoZHJvcEFycm93Qm1wLCB4eCwgeXkgKyBzZWxmLl9zcGFjZXIsIFRydWUpCisrICAgICAg ICAgc2VsZi5fZHJvcERvd25CdXR0b25TdGF0ZSA9IHN0YXRlCisrQEAgLTMyNjksOCArMzI2OSw4 IEBAIGRlZiBEcmF3VG9vbGJhckl0ZW0oc2VsZiwgZGMsIGlkeCwgc3RhdGUpOgorKyAKKysgICAg ICAgICAjIGRyYXcgdGhlIGJpdG1hcCBvdmVyIHRoZSBoaWdobGlnaHQKKysgICAgICAgICBidXR0 b25SZWN0ID0gd3guUmVjdCgqcmVjdCkKKystICAgICAgICB4ID0gcmVjdC54ICsgKGJ1dHRvblJl Y3Qud2lkdGggLSBzZWxmLl90YkJ1dHRvbnNbaWR4XS5fdGJJdGVtLkdldEJpdG1hcCgpLkdldFdp ZHRoKCkpLzIKKystICAgICAgICB5ID0gcmVjdC55ICsgKGJ1dHRvblJlY3QuaGVpZ2h0IC0gc2Vs Zi5fdGJCdXR0b25zW2lkeF0uX3RiSXRlbS5HZXRCaXRtYXAoKS5HZXRIZWlnaHQoKSkvMgorKysg ICAgICAgIHggPSByZWN0LnggKyAoYnV0dG9uUmVjdC53aWR0aCAtIHNlbGYuX3RiQnV0dG9uc1tp ZHhdLl90Ykl0ZW0uR2V0Qml0bWFwKCkuR2V0V2lkdGgoKSkvLzIKKysrICAgICAgICB5ID0gcmVj dC55ICsgKGJ1dHRvblJlY3QuaGVpZ2h0IC0gc2VsZi5fdGJCdXR0b25zW2lkeF0uX3RiSXRlbS5H ZXRCaXRtYXAoKS5HZXRIZWlnaHQoKSkvLzIKKysgCisrICAgICAgICAgaWYgc3RhdGUgPT0gQ29u dHJvbEZvY3VzOgorKyAKKytAQCAtMzc4NCw3ICszNzg0LDcgQEAgZGVmIFBvc2l0aW9uQVVJKHNl bGYsIG1nciwgZml4VG9vbGJhcj1UcnVlKToKKysgICAgICAgICBwbi5OYW1lKCJmbGF0X21lbnVf YmFyIikKKysgICAgICAgICBwbi5DYXB0aW9uKCJNZW51IEJhciIpCisrICAgICAgICAgcG4uVG9w KCkKKystICAgICAgICBwbi5NaW5TaXplKHd4LlNpemUoeHgvMiwgc2VsZi5fYmFySGVpZ2h0KSkK KysrICAgICAgICBwbi5NaW5TaXplKHd4LlNpemUoeHgvLzIsIHNlbGYuX2JhckhlaWdodCkpCisr ICAgICAgICAgcG4uTGVmdERvY2thYmxlKEZhbHNlKQorKyAgICAgICAgIHBuLlJpZ2h0RG9ja2Fi bGUoRmFsc2UpCisrICAgICAgICAgcG4uVG9vbGJhclBhbmUoKQorK0BAIC0zOTk3LDggKzM5OTcs OCBAQCBkZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgIiIiCisrIAorKyAgICAgICAgIHJl Y3QgPSB3eC5SZWN0KHNlbGYuX3Bvcywgc2VsZi5fc2l6ZSkKKystICAgICAgICB4eCA9IHJlY3Qu eCArIChyZWN0LndpZHRoIC0gc2VsZi5fbm9ybWFsQm1wLkdldFdpZHRoKCkpLzIKKystICAgICAg ICB5eSA9IHJlY3QueSArIChyZWN0LmhlaWdodCAtIHNlbGYuX25vcm1hbEJtcC5HZXRIZWlnaHQo KSkvMgorKysgICAgICAgIHh4ID0gcmVjdC54ICsgKHJlY3Qud2lkdGggLSBzZWxmLl9ub3JtYWxC bXAuR2V0V2lkdGgoKSkvLzIKKysrICAgICAgICB5eSA9IHJlY3QueSArIChyZWN0LmhlaWdodCAt IHNlbGYuX25vcm1hbEJtcC5HZXRIZWlnaHQoKSkvLzIKKysgCisrICAgICAgICAgc2VsZi5fcGFy ZW50LkdldFJlbmRlcmVyKCkuRHJhd1Njcm9sbEJ1dHRvbihkYywgcmVjdCwgc2VsZi5fc3RhdGUp CisrICAgICAgICAgZGMuRHJhd0JpdG1hcChzZWxmLl9ub3JtYWxCbXAsIHh4LCB5eSwgVHJ1ZSkK KytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fndy9mbGF0bm90ZWJvb2sucHkgYi93eC9saWIvYWd3L2Zs YXRub3RlYm9vay5weQorK2luZGV4IGY1ZTUyMDBiMi4uNTYxNzQ5Yjg5IDEwMDY0NAorKy0tLSBh L3d4L2xpYi9hZ3cvZmxhdG5vdGVib29rLnB5CisrKysrIGIvd3gvbGliL2Fndy9mbGF0bm90ZWJv b2sucHkKKytAQCAtODU4LDkgKzg1OCw5IEBAIGRlZiBQYWludFN0cmFpZ2h0R3JhZGllbnRCb3go ZGMsIHJlY3QsIHN0YXJ0Q29sb3VyLCBlbmRDb2xvdXIsIHZlcnRpY2FsPVRydWUpOgorKyAKKysg ICAgIGZvciBpIGluIHJhbmdlKGhpZ2grMSk6CisrIAorKy0gICAgICAgIHIgPSBzdGFydENvbG91 ci5SZWQoKSArICgoaSpyZCoxMDApL2hpZ2gpLzEwMAorKy0gICAgICAgIGcgPSBzdGFydENvbG91 ci5HcmVlbigpICsgKChpKmdkKjEwMCkvaGlnaCkvMTAwCisrLSAgICAgICAgYiA9IHN0YXJ0Q29s b3VyLkJsdWUoKSArICgoaSpiZCoxMDApL2hpZ2gpLzEwMAorKysgICAgICAgIHIgPSBzdGFydENv bG91ci5SZWQoKSArICgoaSpyZCoxMDApLy9oaWdoKS8vMTAwCisrKyAgICAgICAgZyA9IHN0YXJ0 Q29sb3VyLkdyZWVuKCkgKyAoKGkqZ2QqMTAwKS8vaGlnaCkvLzEwMAorKysgICAgICAgIGIgPSBz dGFydENvbG91ci5CbHVlKCkgKyAoKGkqYmQqMTAwKS8vaGlnaCkvLzEwMAorKyAKKysgICAgICAg ICBwID0gd3guUGVuKHd4LkNvbG91cihyLCBnLCBiKSkKKysgICAgICAgICBkYy5TZXRQZW4ocCkK KytAQCAtMjYzMSw5ICsyNjMxLDkgQEAgZGVmIERyYXdUYWIoc2VsZiwgcGFnZUNvbnRhaW5lciwg ZGMsIHBvc3gsIHRhYklkeCwgdGFiV2lkdGgsIHRhYkhlaWdodCwgYnRuU3RhdHUKKysgICAgICAg ICBpbWFnZVlDb29yZCA9IChwYy5IYXNBR1dGbGFnKEZOQl9CT1RUT00pIGFuZCBbNl0gb3IgWzhd KVswXQorKyAKKysgICAgICAgICBpZiBoYXNJbWFnZToKKystICAgICAgICAgICAgdGV4dE9mZnNl dCA9IDIqcGMuX3BQYXJlbnQuX25QYWRkaW5nICsgMTYgKyBzaGFwZVBvaW50cy8yCisrKyAgICAg ICAgICAgIHRleHRPZmZzZXQgPSAyKnBjLl9wUGFyZW50Ll9uUGFkZGluZyArIDE2ICsgc2hhcGVQ b2ludHMvLzIKKysgICAgICAgICBlbHNlOgorKy0gICAgICAgICAgICB0ZXh0T2Zmc2V0ID0gcGMu X3BQYXJlbnQuX25QYWRkaW5nICsgc2hhcGVQb2ludHMvMgorKysgICAgICAgICAgICB0ZXh0T2Zm c2V0ID0gcGMuX3BQYXJlbnQuX25QYWRkaW5nICsgc2hhcGVQb2ludHMvLzIKKysgCisrICAgICAg ICAgdGV4dE9mZnNldCArPSAyCisrIAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L2Zsb2F0c3Bp bi5weSBiL3d4L2xpYi9hZ3cvZmxvYXRzcGluLnB5CisraW5kZXggYmRiYWY4NWVjLi40NTU5ZWI1 ZGUgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9mbG9hdHNwaW4ucHkKKysrKysgYi93eC9saWIv YWd3L2Zsb2F0c3Bpbi5weQorK0BAIC0zMzYsNyArMzM2LDcgQEAgY2xhc3MgRmxvYXRTcGluKHd4 LkNvbnRyb2wpOgorKyAgICAgIiIiCisrIAorKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVu dCwgaWQ9d3guSURfQU5ZLCBwb3M9d3guRGVmYXVsdFBvc2l0aW9uLAorKy0gICAgICAgICAgICAg ICAgIHNpemU9KDk1LC0xKSwgc3R5bGU9MCwgdmFsdWU9MC4wLCBtaW5fdmFsPU5vbmUsIG1heF92 YWw9Tm9uZSwKKysrICAgICAgICAgICAgICAgICBzaXplPXd4LkRlZmF1bHRTaXplLCBzdHlsZT0w LCB2YWx1ZT0wLjAsIG1pbl92YWw9Tm9uZSwgbWF4X3ZhbD1Ob25lLAorKyAgICAgICAgICAgICAg ICAgIGluY3JlbWVudD0xLjAsIGRpZ2l0cz0tMSwgYWd3U3R5bGU9RlNfTEVGVCwKKysgICAgICAg ICAgICAgICAgICBuYW1lPSJGbG9hdFNwaW4iKToKKysgICAgICAgICAiIiIKKytkaWZmIC0tZ2l0 IGEvd3gvbGliL2Fndy9ncmFkaWVudGJ1dHRvbi5weSBiL3d4L2xpYi9hZ3cvZ3JhZGllbnRidXR0 b24ucHkKKytpbmRleCBjNDYzM2IyOTYuLjU4NjI1YzUwOCAxMDA2NDQKKystLS0gYS93eC9saWIv YWd3L2dyYWRpZW50YnV0dG9uLnB5CisrKysrIGIvd3gvbGliL2Fndy9ncmFkaWVudGJ1dHRvbi5w eQorK0BAIC00MTIsMTQgKzQxMiwxNCBAQCBkZWYgT25QYWludChzZWxmLCBldmVudCk6CisrIAor KyAgICAgICAgIHgsIHksIHdpZHRoLCBoZWlnaHQgPSBjbGllbnRSZWN0CisrIAorKy0gICAgICAg IGdyYWRpZW50UmVjdC5TZXRIZWlnaHQoZ3JhZGllbnRSZWN0LkdldEhlaWdodCgpLzIgKyAoKGNh cHR1cmU9PXNlbGYgYW5kIFsxXSBvciBbMF0pWzBdKSkKKysrICAgICAgICBncmFkaWVudFJlY3Qu U2V0SGVpZ2h0KGdyYWRpZW50UmVjdC5HZXRIZWlnaHQoKS8vMiArICgoY2FwdHVyZT09c2VsZiBh bmQgWzFdIG9yIFswXSlbMF0pKQorKyAgICAgICAgIGlmIGNhcHR1cmUgIT0gc2VsZjoKKysgICAg ICAgICAgICAgaWYgc2VsZi5fbW91c2VBY3Rpb24gPT0gSE9WRVI6CisrICAgICAgICAgICAgICAg ICB0b3BTdGFydCwgdG9wRW5kID0gc2VsZi5MaWdodENvbG91cihzZWxmLl90b3BTdGFydENvbG91 ciwgMTApLCBzZWxmLkxpZ2h0Q29sb3VyKHNlbGYuX3RvcEVuZENvbG91ciwgMTApCisrICAgICAg ICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgICB0b3BTdGFydCwgdG9wRW5kID0gc2VsZi5f dG9wU3RhcnRDb2xvdXIsIHNlbGYuX3RvcEVuZENvbG91cgorKyAKKystICAgICAgICAgICAgcmMx ID0gd3guUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0LzIpCisrKyAgICAgICAgICAgIHJjMSA9IHd4 LlJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodC8vMikKKysgICAgICAgICAgICAgcGF0aDEgPSBzZWxm LkdldFBhdGgoZ2MsIHJjMSwgOCkKKysgICAgICAgICAgICAgYnIxID0gZ2MuQ3JlYXRlTGluZWFy R3JhZGllbnRCcnVzaCh4LCB5LCB4LCB5K2hlaWdodC8yLCB0b3BTdGFydCwgdG9wRW5kKQorKyAg ICAgICAgICAgICBnYy5TZXRCcnVzaChicjEpCisrQEAgLTQ0OCw3ICs0NDgsNyBAQCBkZWYgT25Q YWludChzZWxmLCBldmVudCk6CisrICAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAg ICBib3R0b21TdGFydCwgYm90dG9tRW5kID0gc2VsZi5fYm90dG9tU3RhcnRDb2xvdXIsIHNlbGYu X2JvdHRvbUVuZENvbG91cgorKyAKKystICAgICAgICAgICAgcmMzID0gd3guUmVjdCh4LCB5K2hl aWdodC8yLCB3aWR0aCwgaGVpZ2h0LzIpCisrKyAgICAgICAgICAgIHJjMyA9IHd4LlJlY3QoeCwg eStoZWlnaHQvLzIsIHdpZHRoLCBoZWlnaHQvLzIpCisrICAgICAgICAgICAgIHBhdGgzID0gc2Vs Zi5HZXRQYXRoKGdjLCByYzMsIDgpCisrICAgICAgICAgICAgIGJyMyA9IGdjLkNyZWF0ZUxpbmVh ckdyYWRpZW50QnJ1c2goeCwgeStoZWlnaHQvMiwgeCwgeStoZWlnaHQsIGJvdHRvbVN0YXJ0LCBi b3R0b21FbmQpCisrICAgICAgICAgICAgIGdjLlNldEJydXNoKGJyMykKKytAQCAtNDYzLDcgKzQ2 Myw3IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgICAgICAgICAgICAgc2hhZG93T2Zm c2V0ID0gMAorKyAgICAgICAgIGVsc2U6CisrIAorKy0gICAgICAgICAgICByYzIgPSB3eC5SZWN0 KHgrMSwgZ3JhZGllbnRSZWN0LmhlaWdodC8yLCBncmFkaWVudFJlY3Qud2lkdGgsIGdyYWRpZW50 UmVjdC5oZWlnaHQpCisrKyAgICAgICAgICAgIHJjMiA9IHd4LlJlY3QoeCsxLCBncmFkaWVudFJl Y3QuaGVpZ2h0Ly8yLCBncmFkaWVudFJlY3Qud2lkdGgsIGdyYWRpZW50UmVjdC5oZWlnaHQpCisr ICAgICAgICAgICAgIHBhdGgyID0gc2VsZi5HZXRQYXRoKGdjLCByYzIsIDgpCisrICAgICAgICAg ICAgIGdjLlNldFBlbih3eC5QZW4oc2VsZi5fcHJlc3NlZEJvdHRvbUNvbG91cikpCisrICAgICAg ICAgICAgIGdjLlNldEJydXNoKHd4LkJydXNoKHNlbGYuX3ByZXNzZWRCb3R0b21Db2xvdXIpKQor K2RpZmYgLS1naXQgYS93eC9saWIvYWd3L2h5cGVydHJlZWxpc3QucHkgYi93eC9saWIvYWd3L2h5 cGVydHJlZWxpc3QucHkKKytpbmRleCAxMjMwMmYzYjAuLjM3N2FjMDEyMSAxMDA2NDQKKystLS0g YS93eC9saWIvYWd3L2h5cGVydHJlZWxpc3QucHkKKysrKysgYi93eC9saWIvYWd3L2h5cGVydHJl ZWxpc3QucHkKKytAQCAtMzQzNyw3ICszNDM3LDcgQEAgZGVmIFBhaW50TGV2ZWwoc2VsZiwgaXRl bSwgZGMsIGxldmVsLCB5LCB4X21haW5jb2wpOgorKyAKKysgICAgICAgICAgICAgaWYgbm90IHNl bGYuSGFzQUdXRmxhZyh3eC5UUl9OT19MSU5FUykgYW5kIGNoaWxkcmVuOgorKyAgICAgICAgICAg ICAgICAgbGFzdF9jaGlsZCA9IGNoaWxkcmVuWy0xXQorKy0gICAgICAgICAgICAgICAgWTEgPSBs YXN0X2NoaWxkLkdldFkoKSArIGxhc3RfY2hpbGQuR2V0SGVpZ2h0KCkgLyAyCisrKyAgICAgICAg ICAgICAgICBZMSA9IGxhc3RfY2hpbGQuR2V0WSgpICsgbGFzdF9jaGlsZC5HZXRIZWlnaHQoKSAv LyAyCisrICAgICAgICAgICAgICAgICBkYy5EcmF3TGluZSh4LCBvbGRZLCB4LCBZMSkKKysgCisr ICAgICAgICAgcmV0dXJuIHksIHhfbWFpbmNvbAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L2tu b2JjdHJsLnB5IGIvd3gvbGliL2Fndy9rbm9iY3RybC5weQorK2luZGV4IDc0MjA5N2IwOS4uMWU1 MDQ1ZmY2IDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cva25vYmN0cmwucHkKKysrKysgYi93eC9s aWIvYWd3L2tub2JjdHJsLnB5CisrQEAgLTMyNSw3ICszMjUsNyBAQCBkZWYgT25TaXplKHNlbGYs ZXZlbnQpOgorKyAgICAgICAgIG1lbW9yeS5DbGVhcigpCisrIAorKyAgICAgICAgIG1pbnJhZGl1 cyA9IG1pbigwLjkqc2VsZi5XaWR0aC8yLjAsIDAuOSpzZWxmLkhlaWdodC8yLjApCisrLSAgICAg ICAgbWVtb3J5LkRyYXdDaXJjbGUoc2VsZi5XaWR0aC8vMiwgc2VsZi5IZWlnaHQvLzIsIG1pbnJh ZGl1cykKKysrICAgICAgICBtZW1vcnkuRHJhd0NpcmNsZShzZWxmLldpZHRoLy8yLCBzZWxmLkhl aWdodC8vMiwgaW50KG1pbnJhZGl1cykpCisrICAgICAgICAgbWVtb3J5LlNlbGVjdE9iamVjdCh3 eC5OdWxsQml0bWFwKQorKyAgICAgICAgIHNlbGYuX3JlZ2lvbiA9IHd4LlJlZ2lvbihzZWxmLl9C dWZmZXIsIHNlbGYuR2V0QmFja2dyb3VuZENvbG91cigpKQorKyAgICAgICAgIHNlbGYuX21pbnJh ZGl1cyA9IG1pbnJhZGl1cworK0BAIC02NDUsOCArNjQ1LDggQEAgZGVmIERyYXdUYWdzKHNlbGYs IGRjLCBzaXplKToKKysgICAgICAgICAgICAgZHhpID0gbWF0aC5jb3MoYW5nbGUpKigod2lkdGgg LSB4c2hpZnQgKyB0YWdMZW4gLSA2KS8yLjAgLSB0YWdMZW4pCisrICAgICAgICAgICAgIGR5aSA9 IG1hdGguc2luKGFuZ2xlKSooKGhlaWdodCAtIHlzaGlmdCArIHRhZ0xlbiAtIDYpLzIuMCAtIHRh Z0xlbikKKysgCisrLSAgICAgICAgICAgIGRjLkRyYXdMaW5lKHdpZHRoLy8yIC0gc3hpLCBoZWln aHQvLzIgLSBzeWksCisrLSAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLy8yIC0gZHhpLCBo ZWlnaHQvLzIgLSBkeWkpCisrKyAgICAgICAgICAgIGRjLkRyYXdMaW5lKGludCh3aWR0aC8vMiAt IHN4aSksIGludChoZWlnaHQvLzIgLSBzeWkpLAorKysgICAgICAgICAgICAgICAgICAgICAgICBp bnQod2lkdGgvLzIgLSBkeGkpLCBpbnQoaGVpZ2h0Ly8yIC0gZHlpKSkKKysgCisrIAorKyAgICAg ZGVmIERyYXdEaWFnb25hbEdyYWRpZW50KHNlbGYsIGRjLCBzaXplKToKKytAQCAtNzU5LDggKzc1 OSw4IEBAIGRlZiBEcmF3SW5zZXRDaXJjbGUoc2VsZiwgZGMsIHBlbmNvbG91cik6CisrICAgICAg ICAgcDEgPSB3eC5QZW4oc2VsZi5PZmZzZXRDb2xvdXIocGVuY29sb3VyLCAtNzApLCAyKQorKyAg ICAgICAgIHAyID0gd3guUGVuKHNlbGYuT2Zmc2V0Q29sb3VyKHBlbmNvbG91ciwgMTApLCAxKQor KyAKKystICAgICAgICBwdDEgPSB3eC5Qb2ludChjeC1yKm1hdGguc3FydCgyKS8yLjAsIGN5K3Iq bWF0aC5zcXJ0KDIpLzIuMCkKKystICAgICAgICBwdDIgPSB3eC5Qb2ludChjeCtyKm1hdGguc3Fy dCgyKS8yLjAsIGN5LXIqbWF0aC5zcXJ0KDIpLzIuMCkKKysrICAgICAgICBwdDEgPSB3eC5Qb2lu dChpbnQoY3gtciptYXRoLnNxcnQoMikvMi4wKSwgaW50KGN5K3IqbWF0aC5zcXJ0KDIpLzIuMCkp CisrKyAgICAgICAgcHQyID0gd3guUG9pbnQoaW50KGN4K3IqbWF0aC5zcXJ0KDIpLzIuMCksIGlu dChjeS1yKm1hdGguc3FydCgyKS8yLjApKQorKyAKKysgICAgICAgICBkYy5TZXRQZW4ocDIpCisr ICAgICAgICAgZGMuRHJhd0FyYyhwdDEsIHB0MiwgKGN4LCBjeSkpCisrQEAgLTc3OSw3ICs3Nzks NyBAQCBkZWYgRHJhd0JvdW5kaW5nQ2lyY2xlKHNlbGYsIGRjLCBzaXplKToKKysgICAgICAgICBy YWRpdXMgPSAwLjkqbWluKHNpemUueCwgc2l6ZS55KS8yLjAKKysgICAgICAgICBkYy5TZXRCcnVz aCh3eC5UUkFOU1BBUkVOVF9CUlVTSCkKKysgICAgICAgICBkYy5TZXRQZW4od3guUGVuKHNlbGYu X2JvdW5kaW5nY29sb3VyKSkKKystICAgICAgICBkYy5EcmF3Q2lyY2xlKHNlbGYuV2lkdGgvLzIs IHNlbGYuSGVpZ2h0Ly8yLCByYWRpdXMpCisrKyAgICAgICAgZGMuRHJhd0NpcmNsZShzZWxmLldp ZHRoLy8yLCBzZWxmLkhlaWdodC8vMiwgaW50KHJhZGl1cykpCisrIAorKyAKKysgICAgIGRlZiBD aXJjbGVDb29yZHMoc2VsZiwgcmFkaXVzLCBhbmdsZSwgY2VudGVyWCwgY2VudGVyWSk6CisrZGlm ZiAtLWdpdCBhL3d4L2xpYi9hZ3cvbGFiZWxib29rLnB5IGIvd3gvbGliL2Fndy9sYWJlbGJvb2su cHkKKytpbmRleCBiNzE2ZGYzYTIuLmY4YzljZDU0ZCAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3 L2xhYmVsYm9vay5weQorKysrKyBiL3d4L2xpYi9hZ3cvbGFiZWxib29rLnB5CisrQEAgLTEzNzYs MTMgKzEzNzYsMTMgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAKKysgICAgICAgICAg ICAgICAgIGlmIGJVc2VZY29vcmQ6CisrIAorKy0gICAgICAgICAgICAgICAgICAgIGltZ1hjb29y ZCA9IHNlbGYuX25JbWdTaXplIC8gMgorKy0gICAgICAgICAgICAgICAgICAgIGltZ1ljb29yZCA9 IChzdHlsZSAmIElOQl9TSE9XX09OTFlfSU1BR0VTIGFuZCBbcG9zICsgc2VsZi5fbkltZ1NpemUg LyAyXSBvciBbcG9zICsgaW1nVG9wUGFkZGluZ10pWzBdCisrKyAgICAgICAgICAgICAgICAgICAg aW1nWGNvb3JkID0gc2VsZi5fbkltZ1NpemUgLy8gMgorKysgICAgICAgICAgICAgICAgICAgIGlt Z1ljb29yZCA9IChzdHlsZSAmIElOQl9TSE9XX09OTFlfSU1BR0VTIGFuZCBbcG9zICsgc2VsZi5f bkltZ1NpemUgLy8gMl0gb3IgW3BvcyArIGltZ1RvcFBhZGRpbmddKVswXQorKyAKKysgICAgICAg ICAgICAgICAgIGVsc2U6CisrIAorKy0gICAgICAgICAgICAgICAgICAgIGltZ1hjb29yZCA9IHBv cyArIChyZWN0V2lkdGggLyAyKSAtIChzZWxmLl9uSW1nU2l6ZSAvIDIpCisrLSAgICAgICAgICAg ICAgICAgICAgaW1nWWNvb3JkID0gKHN0eWxlICYgSU5CX1NIT1dfT05MWV9JTUFHRVMgYW5kIFtz ZWxmLl9uSW1nU2l6ZSAvIDJdIG9yIFtpbWdUb3BQYWRkaW5nXSlbMF0KKysrICAgICAgICAgICAg ICAgICAgICBpbWdYY29vcmQgPSBwb3MgKyAocmVjdFdpZHRoIC8vIDIpIC0gKHNlbGYuX25JbWdT aXplIC8vIDIpCisrKyAgICAgICAgICAgICAgICAgICAgaW1nWWNvb3JkID0gKHN0eWxlICYgSU5C X1NIT1dfT05MWV9JTUFHRVMgYW5kIFtzZWxmLl9uSW1nU2l6ZSAvLyAyXSBvciBbaW1nVG9wUGFk ZGluZ10pWzBdCisrIAorKyAgICAgICAgICAgICAgICAgc2VsZi5fSW1hZ2VMaXN0LkRyYXcoc2Vs Zi5fcGFnZXNJbmZvVmVjW2ldLkdldEltYWdlSW5kZXgoKSwgZGMsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbWdYY29vcmQsIGltZ1ljb29yZCwKKytAQCAtMTQwOCwx NSArMTQwOCwxNSBAQCBkZWYgT25QYWludChzZWxmLCBldmVudCk6CisrIAorKyAgICAgICAgICAg ICAgICAgaWYgYlVzZVljb29yZDoKKysgCisrLSAgICAgICAgICAgICAgICAgICAgdGV4dE9mZnNl dFggPSAoKHJlY3RXaWR0aCAtIHRleHRXaWR0aCkgLyAyICkKKysrICAgICAgICAgICAgICAgICAg ICB0ZXh0T2Zmc2V0WCA9ICgocmVjdFdpZHRoIC0gdGV4dFdpZHRoKSAvLyAyICkKKysgICAgICAg ICAgICAgICAgICAgICB0ZXh0T2Zmc2V0WSA9IChub3Qgc3R5bGUgJiBJTkJfU0hPV19PTkxZX1RF WFQgIGFuZCBbcG9zICsgc2VsZi5fbkltZ1NpemUgICsgaW1nVG9wUGFkZGluZyArIDNdIG9yIFwK KystICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BvcyArICgoc2VsZi5f bkltZ1NpemUgKiAyIC0gdGV4dEhlaWdodCkgLyAyICldKVswXQorKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBbcG9zICsgKChzZWxmLl9uSW1nU2l6ZSAqIDIgLSB0ZXh0 SGVpZ2h0KSAvLyAyICldKVswXQorKyAKKysgICAgICAgICAgICAgICAgIGVsc2U6CisrIAorKy0g ICAgICAgICAgICAgICAgICAgIHRleHRPZmZzZXRYID0gKHJlY3RXaWR0aCAtIHRleHRXaWR0aCkg LyAyICArIHBvcyArIG5UZXh0UGFkZGluZ0xlZnQKKysrICAgICAgICAgICAgICAgICAgICB0ZXh0 T2Zmc2V0WCA9IChyZWN0V2lkdGggLSB0ZXh0V2lkdGgpIC8vIDIgICsgcG9zICsgblRleHRQYWRk aW5nTGVmdAorKyAgICAgICAgICAgICAgICAgICAgIHRleHRPZmZzZXRZID0gKG5vdCBzdHlsZSAm IElOQl9TSE9XX09OTFlfVEVYVCBhbmQgW3NlbGYuX25JbWdTaXplICsgaW1nVG9wUGFkZGluZyAr IDNdIG9yIFwKKystICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygoc2Vs Zi5fbkltZ1NpemUgKiAyIC0gdGV4dEhlaWdodCkgLyAyICldKVswXQorKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBbKChzZWxmLl9uSW1nU2l6ZSAqIDIgLSB0ZXh0SGVp Z2h0KSAvLyAyICldKVswXQorKyAKKysgICAgICAgICAgICAgICAgIGRjLlNldFRleHRGb3JlZ3Jv dW5kKHd4LlN5c3RlbVNldHRpbmdzLkdldENvbG91cih3eC5TWVNfQ09MT1VSX1dJTkRPV1RFWFQp KQorKyAgICAgICAgICAgICAgICAgZGMuRHJhd1RleHQoZml4ZWRUZXh0LCB0ZXh0T2Zmc2V0WCwg dGV4dE9mZnNldFkpCisrQEAgLTE1OTEsOCArMTU5MSw4IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2 ZW50KToKKysgICAgICAgICAgICAgIyBEcmF3IGdyYWRpZW50IGluIHRoZSBiYWNrZ3JvdW5kIGFy ZWEKKysgICAgICAgICAgICAgc3RhcnRDb2xvdXIgPSBzZWxmLl9jb2xvdXJzTWFwW0lOQl9UQUJf QVJFQV9CQUNLR1JPVU5EX0NPTE9VUl0KKysgICAgICAgICAgICAgZW5kQ29sb3VyICAgPSBBcnRN YW5hZ2VyLkdldCgpLkxpZ2h0Q29sb3VyKHNlbGYuX2NvbG91cnNNYXBbSU5CX1RBQl9BUkVBX0JB Q0tHUk9VTkRfQ09MT1VSXSwgNTApCisrLSAgICAgICAgICAgIEFydE1hbmFnZXIuR2V0KCkuUGFp bnRTdHJhaWdodEdyYWRpZW50Qm94KGRjLCB3eC5SZWN0KDAsIDAsIHNpemUueCAvIDIsIHNpemUu eSksIHN0YXJ0Q29sb3VyLCBlbmRDb2xvdXIsIEZhbHNlKQorKy0gICAgICAgICAgICBBcnRNYW5h Z2VyLkdldCgpLlBhaW50U3RyYWlnaHRHcmFkaWVudEJveChkYywgd3guUmVjdChzaXplLnggLyAy LCAwLCBzaXplLnggLyAyLCBzaXplLnkpLCBlbmRDb2xvdXIsIHN0YXJ0Q29sb3VyLCBGYWxzZSkK KysrICAgICAgICAgICAgQXJ0TWFuYWdlci5HZXQoKS5QYWludFN0cmFpZ2h0R3JhZGllbnRCb3go ZGMsIHd4LlJlY3QoMCwgMCwgc2l6ZS54IC8vIDIsIHNpemUueSksIHN0YXJ0Q29sb3VyLCBlbmRD b2xvdXIsIEZhbHNlKQorKysgICAgICAgICAgICBBcnRNYW5hZ2VyLkdldCgpLlBhaW50U3RyYWln aHRHcmFkaWVudEJveChkYywgd3guUmVjdChzaXplLnggLy8gMiwgMCwgc2l6ZS54IC8vIDIsIHNp emUueSksIGVuZENvbG91ciwgc3RhcnRDb2xvdXIsIEZhbHNlKQorKyAKKysgICAgICAgICBlbHNl OgorKyAKKytAQCAtMTYzOCw3ICsxNjM4LDcgQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgor KyAKKysgICAgICAgICAgICAgaWYgc2VsZi5IYXNBR1dGbGFnKElOQl9TSE9XX09OTFlfVEVYVCk6 CisrICAgICAgICAgICAgICAgICBmb250ID0gd3guU3lzdGVtU2V0dGluZ3MuR2V0Rm9udCh3eC5T WVNfREVGQVVMVF9HVUlfRk9OVCkKKystICAgICAgICAgICAgICAgIGZvbnQuU2V0UG9pbnRTaXpl KGZvbnQuR2V0UG9pbnRTaXplKCkgKiBzZWxmLkdldFBhcmVudCgpLkdldEZvbnRTaXplTXVsdGlw bGUoKSkKKysrICAgICAgICAgICAgICAgIGZvbnQuU2V0UG9pbnRTaXplKGludChmb250LkdldFBv aW50U2l6ZSgpICogc2VsZi5HZXRQYXJlbnQoKS5HZXRGb250U2l6ZU11bHRpcGxlKCkpKQorKyAK KysgICAgICAgICAgICAgICAgIGlmIHNlbGYuR2V0UGFyZW50KCkuR2V0Rm9udEJvbGQoKToKKysg ICAgICAgICAgICAgICAgICAgICBmb250LlNldFdlaWdodCh3eC5GT05UV0VJR0hUX0JPTEQpCisr QEAgLTE5NTQsNyArMTk1NCw3IEBAIGRlZiBEcmF3V2ViSG92ZXIoc2VsZiwgZGMsIGNhcHRpb24s IHhDb29yZCwgeUNvb3JkLCBzZWxlY3RlZCk6CisrIAorKyAgICAgICAgICMgUmVkcmF3IHRoZSB0 ZXh0IHdpdGggdW5kZXJsaW5lZCBmb250CisrICAgICAgICAgdW5kZXJMaW5lZEZvbnQgPSB3eC5T eXN0ZW1TZXR0aW5ncy5HZXRGb250KHd4LlNZU19ERUZBVUxUX0dVSV9GT05UKQorKy0gICAgICAg IHVuZGVyTGluZWRGb250LlNldFBvaW50U2l6ZSh1bmRlckxpbmVkRm9udC5HZXRQb2ludFNpemUo KSAqIHNlbGYuR2V0UGFyZW50KCkuR2V0Rm9udFNpemVNdWx0aXBsZSgpKQorKysgICAgICAgIHVu ZGVyTGluZWRGb250LlNldFBvaW50U2l6ZShpbnQodW5kZXJMaW5lZEZvbnQuR2V0UG9pbnRTaXpl KCkgKiBzZWxmLkdldFBhcmVudCgpLkdldEZvbnRTaXplTXVsdGlwbGUoKSkpCisrICAgICAgICAg aWYgc2VsZi5HZXRQYXJlbnQoKS5HZXRGb250Qm9sZCgpOgorKyAgICAgICAgICAgICB1bmRlckxp bmVkRm9udC5TZXRXZWlnaHQod3guRk9OVFdFSUdIVF9CT0xEKQorKyAgICAgICAgIGVsaWYgc2Vs Zi5IYXNBR1dGbGFnKElOQl9CT0xEX1RBQl9TRUxFQ1RJT04pIGFuZCBzZWxlY3RlZDoKKytAQCAt MjA1MCw3ICsyMDUwLDcgQEAgZGVmIERyYXdMYWJlbChzZWxmLCBkYywgcmVjdCwgdGV4dCwgYm1w LCBpbWdJbmZvLCBvcmllbnRhdGlvbkxlZnQsIGltZ0lkeCwgc2VsZWMKKysgICAgICAgICBpbWdS ZWN0ID0gd3guUmVjdCgqcmVjdCkKKysgCisrICAgICAgICAgZm9udCA9IHd4LlN5c3RlbVNldHRp bmdzLkdldEZvbnQod3guU1lTX0RFRkFVTFRfR1VJX0ZPTlQpCisrLSAgICAgICAgZm9udC5TZXRQ b2ludFNpemUoZm9udC5HZXRQb2ludFNpemUoKSAqIHNlbGYuR2V0UGFyZW50KCkuR2V0Rm9udFNp emVNdWx0aXBsZSgpKQorKysgICAgICAgIGZvbnQuU2V0UG9pbnRTaXplKGludChmb250LkdldFBv aW50U2l6ZSgpICogc2VsZi5HZXRQYXJlbnQoKS5HZXRGb250U2l6ZU11bHRpcGxlKCkpKQorKyAK KysgICAgICAgICBpZiBzZWxmLkdldFBhcmVudCgpLkdldEZvbnRCb2xkKCk6CisrICAgICAgICAg ICAgIGZvbnQuU2V0V2VpZ2h0KHd4LkZPTlRXRUlHSFRfQk9MRCkKKytAQCAtMjA2OSw3ICsyMDY5 LDcgQEAgZGVmIERyYXdMYWJlbChzZWxmLCBkYywgcmVjdCwgdGV4dCwgYm1wLCBpbWdJbmZvLCBv cmllbnRhdGlvbkxlZnQsIGltZ0lkeCwgc2VsZWMKKysgCisrICAgICAgICAgIyBUZXh0IGJvdW5k aW5nIHJlY3RhbmdsZQorKyAgICAgICAgIHRleHRSZWN0LnggKz0gblBhZGRpbmcKKystICAgICAg ICB0ZXh0UmVjdC55ID0gcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gaCkvMgorKysgICAgICAgIHRl eHRSZWN0LnkgPSByZWN0LnkgKyAocmVjdC5oZWlnaHQgLSBoKS8vMgorKyAgICAgICAgIHRleHRS ZWN0LndpZHRoID0gcmVjdC53aWR0aCAtIDIgKiBuUGFkZGluZworKyAKKysgICAgICAgICBpZiBi bXAuSXNPaygpIGFuZCBub3Qgc2VsZi5IYXNBR1dGbGFnKElOQl9TSE9XX09OTFlfVEVYVCk6Cisr QEAgLTIwODYsNyArMjA4Niw3IEBAIGRlZiBEcmF3TGFiZWwoc2VsZiwgZGMsIHJlY3QsIHRleHQs IGJtcCwgaW1nSW5mbywgb3JpZW50YXRpb25MZWZ0LCBpbWdJZHgsIHNlbGVjCisrIAorKyAgICAg ICAgICAgICBpbWdSZWN0LnggKz0gblBhZGRpbmcKKysgICAgICAgICAgICAgaW1nUmVjdC53aWR0 aCA9IGJtcC5HZXRXaWR0aCgpCisrLSAgICAgICAgICAgIGltZ1JlY3QueSA9IHJlY3QueSArIChy ZWN0LmhlaWdodCAtIGJtcC5HZXRIZWlnaHQoKSkvMgorKysgICAgICAgICAgICBpbWdSZWN0Lnkg PSByZWN0LnkgKyAocmVjdC5oZWlnaHQgLSBibXAuR2V0SGVpZ2h0KCkpLy8yCisrICAgICAgICAg ICAgIGltZ1JlY3QuaGVpZ2h0ID0gYm1wLkdldEhlaWdodCgpCisrIAorKyAgICAgICAgICMgRHJh dyBib3VuZGluZyByZWN0YW5nbGUKKytAQCAtMjQ5Niw3ICsyNDk2LDcgQEAgZGVmIFJlc2l6ZVRh YkFyZWEoc2VsZik6CisrICAgICAgICAgICAgIGRjID0gd3guTWVtb3J5REMoKQorKyAgICAgICAg ICAgICBkYy5TZWxlY3RPYmplY3Qod3guQml0bWFwKDEsIDEpKQorKyAgICAgICAgICAgICBmb250 ID0gd3guU3lzdGVtU2V0dGluZ3MuR2V0Rm9udCh3eC5TWVNfREVGQVVMVF9HVUlfRk9OVCkKKyst ICAgICAgICAgICAgZm9udC5TZXRQb2ludFNpemUoZm9udC5HZXRQb2ludFNpemUoKSpzZWxmLl9m b250U2l6ZU11bHRpcGxlKQorKysgICAgICAgICAgICBmb250LlNldFBvaW50U2l6ZShpbnQoZm9u dC5HZXRQb2ludFNpemUoKSpzZWxmLl9mb250U2l6ZU11bHRpcGxlKSkKKysgICAgICAgICAgICAg aWYgc2VsZi5HZXRGb250Qm9sZCgpIG9yIGFnd1N0eWxlICYgSU5CX0JPTERfVEFCX1NFTEVDVElP TjoKKysgICAgICAgICAgICAgICAgIGZvbnQuU2V0V2VpZ2h0KHd4LkZPTlRXRUlHSFRfQk9MRCkK KysgICAgICAgICAgICAgZGMuU2V0Rm9udChmb250KQorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3 L3BlYWttZXRlci5weSBiL3d4L2xpYi9hZ3cvcGVha21ldGVyLnB5CisraW5kZXggMDU1ZGJlZjgx Li5hNWY4OGE5ZDUgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9wZWFrbWV0ZXIucHkKKysrKysg Yi93eC9saWIvYWd3L3BlYWttZXRlci5weQorK0BAIC03ODQsNyArNzg0LDcgQEAgZGVmIERyYXdI b3J6QmFuZChzZWxmLCBkYywgcmVjdCk6CisrICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IHNp emUueCpob3J6QmFuZHMKKysgICAgICAgICAgICAgICAgIHBvaW50cyA9IFt3eC5Qb2ludCgpIGZv ciBpIGluIHJhbmdlKDIpXQorKyAgICAgICAgICAgICAgICAgcG9pbnRzWzBdLnkgPSByZWN0UHJl di5HZXRUb3BSaWdodCgpLnkgLSB5RGVjYWwKKystICAgICAgICAgICAgICAgIHBvaW50c1swXS54 ID0gcmVjdFByZXYuR2V0Qm90dG9tTGVmdCgpLnggKyBzZWxmLl9tZXRlckRhdGFbdmVydF0uX2Zh bGxvZmYqbWF4V2lkdGgvc2VsZi5fbWF4VmFsdWUKKysrICAgICAgICAgICAgICAgIHBvaW50c1sw XS54ID0gcmVjdFByZXYuR2V0Qm90dG9tTGVmdCgpLnggKyBzZWxmLl9tZXRlckRhdGFbdmVydF0u X2ZhbGxvZmYqbWF4V2lkdGgvL3NlbGYuX21heFZhbHVlCisrICAgICAgICAgICAgICAgICBwb2lu dHNbMV0ueSA9IHJlY3RQcmV2LkdldEJvdHRvbUxlZnQoKS55ICsgeURlY2FsCisrICAgICAgICAg ICAgICAgICBwb2ludHNbMV0ueCA9IHBvaW50c1swXS54CisrICAgICAgICAgICAgICAgICBkYy5T ZXRQZW4ocGVuKQorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3B5Z2F1Z2UucHkgYi93eC9saWIv YWd3L3B5Z2F1Z2UucHkKKytpbmRleCBiYWI0NTlhM2EuLmI4NjU0NDM2YSAxMDA2NDQKKystLS0g YS93eC9saWIvYWd3L3B5Z2F1Z2UucHkKKysrKysgYi93eC9saWIvYWd3L3B5Z2F1Z2UucHkKKytA QCAtMzQ0LDcgKzM0NCw3IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgICAgICAgICAg ICAgICAgIGMxLGMyID0gZ3JhZGllbnQKKysgICAgICAgICAgICAgICAgIHcgPSByZWN0LndpZHRo ICogKGZsb2F0KHNlbGYuX3ZhbHVlU29ydGVkW2ldKSAvIHNlbGYuX3JhbmdlKQorKyAgICAgICAg ICAgICAgICAgciA9IGNvcHkuY29weShyZWN0KQorKy0gICAgICAgICAgICAgICAgci53aWR0aCA9 IHcKKysrICAgICAgICAgICAgICAgIHIud2lkdGggPSBpbnQodykKKysgICAgICAgICAgICAgICAg IGRjLkdyYWRpZW50RmlsbExpbmVhcihyLCBjMSwgYzIsIHd4LkVBU1QpCisrICAgICAgICAgZWxz ZToKKysgICAgICAgICAgICAgZm9yIGksIGNvbG91ciBpbiBlbnVtZXJhdGUoc2VsZi5fYmFyQ29s b3VyU29ydGVkKToKKytAQCAtMzUyLDcgKzM1Miw3IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50 KToKKysgICAgICAgICAgICAgICAgIGRjLlNldFBlbih3eC5QZW4oY29sb3VyKSkKKysgICAgICAg ICAgICAgICAgIHcgPSByZWN0LndpZHRoICogKGZsb2F0KHNlbGYuX3ZhbHVlU29ydGVkW2ldKSAv IHNlbGYuX3JhbmdlKQorKyAgICAgICAgICAgICAgICAgciA9IGNvcHkuY29weShyZWN0KQorKy0g ICAgICAgICAgICAgICAgci53aWR0aCA9IHcKKysrICAgICAgICAgICAgICAgIHIud2lkdGggPSBp bnQodykKKysgICAgICAgICAgICAgICAgIGRjLkRyYXdSZWN0YW5nbGUocikKKysgCisrIAorK2Rp ZmYgLS1naXQgYS93eC9saWIvYWd3L3JpYmJvbi9hcnRfYXVpLnB5IGIvd3gvbGliL2Fndy9yaWJi b24vYXJ0X2F1aS5weQorK2luZGV4IGExZDI1NTg0My4uMzFmZWRmNDg3IDEwMDY0NAorKy0tLSBh L3d4L2xpYi9hZ3cvcmliYm9uL2FydF9hdWkucHkKKysrKysgYi93eC9saWIvYWd3L3JpYmJvbi9h cnRfYXVpLnB5CisrQEAgLTM5MCw3ICszOTAsNyBAQCBkZWYgRHJhd1RhYihzZWxmLCBkYywgd25k LCB0YWIpOgorKyAgICAgICAgICAgICBncmFkX3JlY3QgPSB3eC5SZWN0KCp0YWIucmVjdCkKKysg ICAgICAgICAgICAgZ3JhZF9yZWN0LmhlaWdodCAtPSA0CisrICAgICAgICAgICAgIGdyYWRfcmVj dC53aWR0aCAtPSAxCisrLSAgICAgICAgICAgIGdyYWRfcmVjdC5oZWlnaHQgLz0gMgorKysgICAg ICAgICAgICBncmFkX3JlY3QuaGVpZ2h0IC8vPSAyCisrICAgICAgICAgICAgIGdyYWRfcmVjdC55 ID0gZ3JhZF9yZWN0LnkgKyB0YWIucmVjdC5oZWlnaHQgLSBncmFkX3JlY3QuaGVpZ2h0IC0gMQor KyAgICAgICAgICAgICBkYy5TZXRCcnVzaChzZWxmLl90YWJfYWN0aXZlX3RvcF9iYWNrZ3JvdW5k X2JydXNoKQorKyAgICAgICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHRhYi5yZWN0LngsIHRhYi5y ZWN0LnkgKyAzLCB0YWIucmVjdC53aWR0aCAtIDEsIGdyYWRfcmVjdC55IC0gdGFiLnJlY3QueSAt IDMpCisrQEAgLTQwMSw3ICs0MDEsNyBAQCBkZWYgRHJhd1RhYihzZWxmLCBkYywgd25kLCB0YWIp OgorKyAgICAgICAgICAgICBidG1fcmVjdCA9IHd4LlJlY3QoKnRhYi5yZWN0KQorKyAgICAgICAg ICAgICBidG1fcmVjdC5oZWlnaHQgLT0gNAorKyAgICAgICAgICAgICBidG1fcmVjdC53aWR0aCAt PSAxCisrLSAgICAgICAgICAgIGJ0bV9yZWN0LmhlaWdodCAvPSAyCisrKyAgICAgICAgICAgIGJ0 bV9yZWN0LmhlaWdodCAvLz0gMgorKyAgICAgICAgICAgICBidG1fcmVjdC55ID0gYnRtX3JlY3Qu eSArIHRhYi5yZWN0LmhlaWdodCAtIGJ0bV9yZWN0LmhlaWdodCAtIDEKKysgICAgICAgICAgICAg ZGMuU2V0QnJ1c2goc2VsZi5fdGFiX2hvdmVyX2JhY2tncm91bmRfYnJ1c2gpCisrICAgICAgICAg ICAgIGRjLkRyYXdSZWN0YW5nbGUoYnRtX3JlY3QueCwgYnRtX3JlY3QueSwgYnRtX3JlY3Qud2lk dGgsIGJ0bV9yZWN0LmhlaWdodCkKKytAQCAtNDM0LDggKzQzNCw4IEBAIGRlZiBEcmF3VGFiKHNl bGYsIGRjLCB3bmQsIHRhYik6CisrICAgICAgICAgICAgIGljb24gPSB0YWIucGFnZS5HZXRJY29u KCkKKysgICAgICAgICAgICAgaWYgc2VsZi5fZmxhZ3MgJiBSSUJCT05fQkFSX1NIT1dfUEFHRV9M QUJFTFMgPT0gMDoKKysgICAgICAgICAgICAgICAgIGlmIGljb24uSXNPaygpOgorKy0gICAgICAg ICAgICAgICAgICAgIHggPSB0YWIucmVjdC54ICsgKHRhYi5yZWN0LndpZHRoIC0gaWNvbi5HZXRX aWR0aCgpKSAvIDIKKystICAgICAgICAgICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGljb24sIHgs IHRhYi5yZWN0LnkgKyAxICsgKHRhYi5yZWN0LmhlaWdodCAtIDEgLSBpY29uLkdldEhlaWdodCgp KSAvIDIsIFRydWUpCisrKyAgICAgICAgICAgICAgICAgICAgeCA9IHRhYi5yZWN0LnggKyAodGFi LnJlY3Qud2lkdGggLSBpY29uLkdldFdpZHRoKCkpIC8vIDIKKysrICAgICAgICAgICAgICAgICAg ICBkYy5EcmF3Qml0bWFwKGljb24sIHgsIHRhYi5yZWN0LnkgKyAxICsgKHRhYi5yZWN0LmhlaWdo dCAtIDEgLSBpY29uLkdldEhlaWdodCgpKSAvLyAyLCBUcnVlKQorKyAKKysgICAgICAgICBpZiBz ZWxmLl9mbGFncyAmIFJJQkJPTl9CQVJfU0hPV19QQUdFX0xBQkVMUzoKKysgICAgICAgICAgICAg bGFiZWwgPSB0YWIucGFnZS5HZXRMYWJlbCgpCisrQEAgLTQ1MCw3ICs0NTAsNyBAQCBkZWYgRHJh d1RhYihzZWxmLCBkYywgd25kLCB0YWIpOgorKyAgICAgICAgICAgICAgICAgICAgIG9mZnNldCAr PSBpY29uLkdldFdpZHRoKCkgKyAyCisrIAorKyAgICAgICAgICAgICAgICAgdGV4dF93aWR0aCwg dGV4dF9oZWlnaHQgPSBkYy5HZXRUZXh0RXh0ZW50KGxhYmVsKQorKy0gICAgICAgICAgICAgICAg eCA9ICh0YWIucmVjdC53aWR0aCAtIDIgLSB0ZXh0X3dpZHRoIC0gb2Zmc2V0KSAvIDIKKysrICAg ICAgICAgICAgICAgIHggPSAodGFiLnJlY3Qud2lkdGggLSAyIC0gdGV4dF93aWR0aCAtIG9mZnNl dCkgLy8gMgorKyAgICAgICAgICAgICAgICAgaWYgeCA+IDg6CisrICAgICAgICAgICAgICAgICAg ICAgeCA9IDgKKysgICAgICAgICAgICAgICAgIGVsaWYgeCA8IDE6CisrQEAgLTQ1OCw3ICs0NTgs NyBAQCBkZWYgRHJhd1RhYihzZWxmLCBkYywgd25kLCB0YWIpOgorKyAKKysgICAgICAgICAgICAg ICAgIHdpZHRoID0gdGFiLnJlY3Qud2lkdGggLSB4IC0gMgorKyAgICAgICAgICAgICAgICAgeCAr PSB0YWIucmVjdC54ICsgb2Zmc2V0CisrLSAgICAgICAgICAgICAgICB5ID0gdGFiLnJlY3QueSAr ICh0YWIucmVjdC5oZWlnaHQgLSB0ZXh0X2hlaWdodCkgLyAyCisrKyAgICAgICAgICAgICAgICB5 ID0gdGFiLnJlY3QueSArICh0YWIucmVjdC5oZWlnaHQgLSB0ZXh0X2hlaWdodCkgLy8gMgorKyAK KysgICAgICAgICAgICAgICAgIGlmIGljb24uSXNPaygpOgorKyAgICAgICAgICAgICAgICAgICAg IGRjLkRyYXdCaXRtYXAoaWNvbiwgeCAtIG9mZnNldCwgdGFiLnJlY3QueSArICh0YWIucmVjdC5o ZWlnaHQgLSBpY29uLkdldEhlaWdodCgpKSAvIDIsIFRydWUpCisrQEAgLTg5Miw4ICs4OTIsOCBA QCBkZWYgRHJhd01pbmltaXNlZFBhbmVsKHNlbGYsIGRjLCB3bmQsIHJlY3QsIGJpdG1hcCk6Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYWdlX2hvdmVyX2JhY2tn cm91bmRfZ3JhZGllbnRfY29sb3VyLCB3eC5TT1VUSCkKKysgCisrICAgICAgICAgaWYgYml0bWFw LklzT2soKToKKystICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChiaXRtYXAsIHByZXZpZXcueCAr IChwcmV2aWV3LndpZHRoIC0gYml0bWFwLkdldFdpZHRoKCkpIC8gMiwKKystICAgICAgICAgICAg ICAgICAgICAgICAgICBwcmV2aWV3LnkgKyAocHJldmlldy5oZWlnaHQgLSBiaXRtYXAuR2V0SGVp Z2h0KCkpIC8gMiwgVHJ1ZSkKKysrICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChiaXRtYXAsIHBy ZXZpZXcueCArIChwcmV2aWV3LndpZHRoIC0gYml0bWFwLkdldFdpZHRoKCkpIC8vIDIsCisrKyAg ICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlldy55ICsgKHByZXZpZXcuaGVpZ2h0IC0gYml0 bWFwLkdldEhlaWdodCgpKSAvLyAyLCBUcnVlKQorKyAKKysgCisrICAgICBkZWYgRHJhd1BhcnRp YWxQYW5lbEJhY2tncm91bmQoc2VsZiwgZGMsIHduZCwgcmVjdCk6CisrQEAgLTEwMjQsNyArMTAy NCw3IEBAIGRlZiBEcmF3R2FsbGVyeUJ1dHRvbihzZWxmLCBkYywgcmVjdCwgc3RhdGUsIGJpdG1h cHMpOgorKyAgICAgICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHJlZHVjZWRfcmVjdC54LCByZWR1 Y2VkX3JlY3QueSwgcmVkdWNlZF9yZWN0LndpZHRoLCByZWR1Y2VkX3JlY3QuaGVpZ2h0KQorKyAg ICAgICAgICAgICBidG5fYml0bWFwID0gYml0bWFwc1szXQorKyAKKystICAgICAgICBkYy5EcmF3 Qml0bWFwKGJ0bl9iaXRtYXAsIHJlZHVjZWRfcmVjdC54ICsgcmVkdWNlZF9yZWN0LndpZHRoIC8g MiAtIDIsIChyZWN0LnkgKyByZWN0LmhlaWdodCAvIDIpIC0gMiwgVHJ1ZSkKKysrICAgICAgICBk Yy5EcmF3Qml0bWFwKGJ0bl9iaXRtYXAsIHJlZHVjZWRfcmVjdC54ICsgcmVkdWNlZF9yZWN0Lndp ZHRoIC8vIDIgLSAyLCAocmVjdC55ICsgcmVjdC5oZWlnaHQgLy8gMikgLSAyLCBUcnVlKQorKyAK KysgCisrICAgICBkZWYgRHJhd0dhbGxlcnlJdGVtQmFja2dyb3VuZChzZWxmLCBkYywgd25kLCBy ZWN0LCBpdGVtKToKKytAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgZGVmIERyYXdUb29sKHNlbGYsIGRj LCB3bmQsIHJlY3QsIGJpdG1hcCwga2luZCwgc3RhdGUpOgorKyAgICAgICAgICAgICBpZiBpc19z cGxpdF9oeWJyaWQ6CisrICAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShyZWN0LnggKyBhdmFp bF93aWR0aCArIDEsIHJlY3QueSwgcmVjdC54ICsgYXZhaWxfd2lkdGggKyAxLCByZWN0LnkgKyBy ZWN0LmhlaWdodCkKKysgCisrLSAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoc2VsZi5fdG9vbGJh cl9kcm9wX2JpdG1hcCwgYmdfcmVjdC54ICsgYXZhaWxfd2lkdGggKyAyLCBiZ19yZWN0LnkgKyAo YmdfcmVjdC5oZWlnaHQgLyAyKSAtIDIsIFRydWUpCisrKyAgICAgICAgICAgIGRjLkRyYXdCaXRt YXAoc2VsZi5fdG9vbGJhcl9kcm9wX2JpdG1hcCwgYmdfcmVjdC54ICsgYXZhaWxfd2lkdGggKyAy LCBiZ19yZWN0LnkgKyAoYmdfcmVjdC5oZWlnaHQgLy8gMikgLSAyLCBUcnVlKQorKyAKKystICAg ICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcCwgYmdfcmVjdC54ICsgKGF2YWlsX3dpZHRoIC0gYml0 bWFwLkdldFdpZHRoKCkpIC8gMiwgYmdfcmVjdC55ICsgKGJnX3JlY3QuaGVpZ2h0IC0gYml0bWFw LkdldEhlaWdodCgpKSAvIDIsIFRydWUpCisrKyAgICAgICAgZGMuRHJhd0JpdG1hcChiaXRtYXAs IGJnX3JlY3QueCArIChhdmFpbF93aWR0aCAtIGJpdG1hcC5HZXRXaWR0aCgpKSAvLyAyLCBiZ19y ZWN0LnkgKyAoYmdfcmVjdC5oZWlnaHQgLSBiaXRtYXAuR2V0SGVpZ2h0KCkpIC8vIDIsIFRydWUp CisrIAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3JpYmJvbi9hcnRfaW50ZXJuYWwucHkgYi93 eC9saWIvYWd3L3JpYmJvbi9hcnRfaW50ZXJuYWwucHkKKytpbmRleCA0YThkYzdjZTAuLjc4ZThm M2ZlNCAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L3JpYmJvbi9hcnRfaW50ZXJuYWwucHkKKysr KysgYi93eC9saWIvYWd3L3JpYmJvbi9hcnRfaW50ZXJuYWwucHkKKytAQCAtMzIsOSArMzIsOSBA QCBkZWYgUmliYm9uSW50ZXJwb2xhdGVDb2xvdXIoc3RhcnRfY29sb3VyLCBlbmRfY29sb3VyLCBw b3NpdGlvbiwgc3RhcnRfcG9zaXRpb24sCisrICAgICByID0gZW5kX2NvbG91ci5SZWQoKSAtIHN0 YXJ0X2NvbG91ci5SZWQoKQorKyAgICAgZyA9IGVuZF9jb2xvdXIuR3JlZW4oKSAtIHN0YXJ0X2Nv bG91ci5HcmVlbigpCisrICAgICBiID0gZW5kX2NvbG91ci5CbHVlKCkgLSBzdGFydF9jb2xvdXIu Qmx1ZSgpCisrLSAgICByID0gc3RhcnRfY29sb3VyLlJlZCgpICAgKyAoKChyICogcG9zaXRpb24g KiAxMDApIC8gZW5kX3Bvc2l0aW9uKSAvIDEwMCkKKystICAgIGcgPSBzdGFydF9jb2xvdXIuR3Jl ZW4oKSArICgoKGcgKiBwb3NpdGlvbiAqIDEwMCkgLyBlbmRfcG9zaXRpb24pIC8gMTAwKQorKy0g ICAgYiA9IHN0YXJ0X2NvbG91ci5CbHVlKCkgICsgKCgoYiAqIHBvc2l0aW9uICogMTAwKSAvIGVu ZF9wb3NpdGlvbikgLyAxMDApCisrKyAgICByID0gc3RhcnRfY29sb3VyLlJlZCgpICAgKyAoKChy ICogcG9zaXRpb24gKiAxMDApIC8vIGVuZF9wb3NpdGlvbikgLy8gMTAwKQorKysgICAgZyA9IHN0 YXJ0X2NvbG91ci5HcmVlbigpICsgKCgoZyAqIHBvc2l0aW9uICogMTAwKSAvLyBlbmRfcG9zaXRp b24pIC8vIDEwMCkKKysrICAgIGIgPSBzdGFydF9jb2xvdXIuQmx1ZSgpICArICgoKGIgKiBwb3Np dGlvbiAqIDEwMCkgLy8gZW5kX3Bvc2l0aW9uKSAvLyAxMDApCisrIAorKyAgICAgcmV0dXJuIHd4 LkNvbG91cihyLCBnLCBiKQorKyAKKytAQCAtNjEsOSArNjEsOSBAQCBkZWYgUmliYm9uRHJhd1Bh cmFsbGVsR3JhZGllbnRMaW5lcyhkYywgbmxpbmVzLCBsaW5lX29yaWdpbnMsIHN0ZXB4LCBzdGVw eSwgbnVtcworKyAgICAgYmQgPSBlbmRfY29sb3VyLkJsdWUoKSAtIHN0YXJ0X2NvbG91ci5CbHVl KCkKKysgCisrICAgICBmb3Igc3RlcCBpbiByYW5nZShudW1zdGVwcyk6CisrLSAgICAgICAgciA9 IHN0YXJ0X2NvbG91ci5SZWQoKSArICgoKHN0ZXAqcmQqMTAwKS9udW1zdGVwcykvMTAwKQorKy0g ICAgICAgIGcgPSBzdGFydF9jb2xvdXIuR3JlZW4oKSArICgoKHN0ZXAqZ2QqMTAwKS9udW1zdGVw cykvMTAwKQorKy0gICAgICAgIGIgPSBzdGFydF9jb2xvdXIuQmx1ZSgpICsgKCgoc3RlcCpiZCox MDApL251bXN0ZXBzKS8xMDApCisrKyAgICAgICAgciA9IHN0YXJ0X2NvbG91ci5SZWQoKSArICgo KHN0ZXAqcmQqMTAwKS8vbnVtc3RlcHMpLy8xMDApCisrKyAgICAgICAgZyA9IHN0YXJ0X2NvbG91 ci5HcmVlbigpICsgKCgoc3RlcCpnZCoxMDApLy9udW1zdGVwcykvLzEwMCkKKysrICAgICAgICBi ID0gc3RhcnRfY29sb3VyLkJsdWUoKSArICgoKHN0ZXAqYmQqMTAwKS8vbnVtc3RlcHMpLy8xMDAp CisrIAorKyAgICAgICAgIHAgPSB3eC5QZW4od3guQ29sb3VyKHIsIGcsIGIpKQorKyAgICAgICAg IGRjLlNldFBlbihwKQorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3JpYmJvbi9hcnRfbXN3LnB5 IGIvd3gvbGliL2Fndy9yaWJib24vYXJ0X21zdy5weQorK2luZGV4IGU3MzE3ZDU5Yi4uMDBjM2Rm ZTJiIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvcmliYm9uL2FydF9tc3cucHkKKysrKysgYi93 eC9saWIvYWd3L3JpYmJvbi9hcnRfbXN3LnB5CisrQEAgLTk4Miw3ICs5ODIsNyBAQCBkZWYgRHJh d1RhYihzZWxmLCBkYywgd25kLCB0YWIpOgorKyAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC53 aWR0aCAtPSA0CisrICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLmhlaWdodCAtPSAzCisrICAg ICAgICAgICAgICAgICBoID0gYmFja2dyb3VuZC5oZWlnaHQKKystICAgICAgICAgICAgICAgIGJh Y2tncm91bmQuaGVpZ2h0IC89IDIKKysrICAgICAgICAgICAgICAgIGJhY2tncm91bmQuaGVpZ2h0 IC8vPSAyCisrICAgICAgICAgICAgICAgICBkYy5HcmFkaWVudEZpbGxMaW5lYXIoYmFja2dyb3Vu ZCwgc2VsZi5fdGFiX2hvdmVyX2JhY2tncm91bmRfdG9wX2NvbG91ciwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl90YWJfaG92ZXJfYmFja2dyb3VuZF90b3Bf Z3JhZGllbnRfY29sb3VyLCB3eC5TT1VUSCkKKysgCisrQEAgLTEwMjQsOSArMTAyNCw5IEBAIGRl ZiBEcmF3VGFiKHNlbGYsIGRjLCB3bmQsIHRhYik6CisrICAgICAgICAgICAgIGlmIGljb24uSXNP aygpOgorKyAgICAgICAgICAgICAgICAgeCA9IHRhYi5yZWN0LnggKyA0CisrICAgICAgICAgICAg ICAgICBpZiBzZWxmLl9mbGFncyAmIFJJQkJPTl9CQVJfU0hPV19QQUdFX0xBQkVMUyA9PSAwOgor Ky0gICAgICAgICAgICAgICAgICAgIHggPSB0YWIucmVjdC54ICsgKHRhYi5yZWN0LndpZHRoIC0g aWNvbi5HZXRXaWR0aCgpKSAvIDIKKysrICAgICAgICAgICAgICAgICAgICB4ID0gdGFiLnJlY3Qu eCArICh0YWIucmVjdC53aWR0aCAtIGljb24uR2V0V2lkdGgoKSkgLy8gMgorKyAKKystICAgICAg ICAgICAgICAgIGRjLkRyYXdCaXRtYXAoaWNvbiwgeCwgdGFiLnJlY3QueSArIDEgKyAodGFiLnJl Y3QuaGVpZ2h0IC0gMSAtIGljb24uR2V0SGVpZ2h0KCkpIC8gMiwgVHJ1ZSkKKysrICAgICAgICAg ICAgICAgIGRjLkRyYXdCaXRtYXAoaWNvbiwgeCwgdGFiLnJlY3QueSArIDEgKyAodGFiLnJlY3Qu aGVpZ2h0IC0gMSAtIGljb24uR2V0SGVpZ2h0KCkpIC8vIDIsIFRydWUpCisrIAorKyAgICAgICAg IGlmIHNlbGYuX2ZsYWdzICYgUklCQk9OX0JBUl9TSE9XX1BBR0VfTEFCRUxTOgorKyAgICAgICAg ICAgICBsYWJlbCA9IHRhYi5wYWdlLkdldExhYmVsKCkKKytAQCAtMTA0MywxMyArMTA0MywxMyBA QCBkZWYgRHJhd1RhYihzZWxmLCBkYywgd25kLCB0YWIpOgorKyAgICAgICAgICAgICAgICAgICAg IHggKz0gMyArIHRhYi5wYWdlLkdldEljb24oKS5HZXRXaWR0aCgpCisrICAgICAgICAgICAgICAg ICAgICAgd2lkdGggLT0gMyArIHRhYi5wYWdlLkdldEljb24oKS5HZXRXaWR0aCgpCisrIAorKy0g ICAgICAgICAgICAgICAgeSA9IHRhYi5yZWN0LnkgKyAodGFiLnJlY3QuaGVpZ2h0IC0gdGV4dF9o ZWlnaHQpIC8gMgorKysgICAgICAgICAgICAgICAgeSA9IHRhYi5yZWN0LnkgKyAodGFiLnJlY3Qu aGVpZ2h0IC0gdGV4dF9oZWlnaHQpIC8vIDIKKysgCisrICAgICAgICAgICAgICAgICBpZiB3aWR0 aCA8PSB0ZXh0X3dpZHRoOgorKyAgICAgICAgICAgICAgICAgICAgIGRjLlNldENsaXBwaW5nUmVn aW9uKHgsIHRhYi5yZWN0LnksIHdpZHRoLCB0YWIucmVjdC5oZWlnaHQpCisrICAgICAgICAgICAg ICAgICAgICAgZGMuRHJhd1RleHQobGFiZWwsIHgsIHkpCisrICAgICAgICAgICAgICAgICBlbHNl OgorKy0gICAgICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsLCB4ICsgKHdpZHRoIC0g dGV4dF93aWR0aCkgLyAyICsgMSwgeSkKKysrICAgICAgICAgICAgICAgICAgICBkYy5EcmF3VGV4 dChsYWJlbCwgeCArICh3aWR0aCAtIHRleHRfd2lkdGgpIC8vIDIgKyAxLCB5KQorKyAKKysgCisr ICAgICBkZWYgRHJhd1RhYlNlcGFyYXRvcihzZWxmLCBkYywgd25kLCByZWN0LCB2aXNpYmlsaXR5 KToKKytAQCAtMTA5Myw3ICsxMDkzLDcgQEAgZGVmIFJlYWxseURyYXdUYWJTZXBhcmF0b3Ioc2Vs Ziwgd25kLCByZWN0LCB2aXNpYmlsaXR5KToKKysgICAgICAgICBkYyA9IHd4Lk1lbW9yeURDKHNl bGYuX2NhY2hlZF90YWJfc2VwYXJhdG9yKQorKyAgICAgICAgIHNlbGYuRHJhd1RhYkN0cmxCYWNr Z3JvdW5kKGRjLCB3bmQsIHJlY3QpCisrIAorKy0gICAgICAgIHggPSByZWN0LnggKyByZWN0Lndp ZHRoIC8gMgorKysgICAgICAgIHggPSByZWN0LnggKyByZWN0LndpZHRoIC8vIDIKKysgICAgICAg ICBoID0gZmxvYXQocmVjdC5oZWlnaHQgLSAxKQorKyAKKysgICAgICAgICByMSA9IHNlbGYuX3Rh Yl9jdHJsX2JhY2tncm91bmRfYnJ1c2guR2V0Q29sb3VyKCkuUmVkKCkgKiAoMS4wIC0gdmlzaWJp bGl0eSkgKyAwLjUKKytAQCAtMTE0Niw3ICsxMTQ2LDcgQEAgZGVmIERyYXdQYXJ0aWFsUGFnZUJh Y2tncm91bmQxKHNlbGYsIGRjLCB3bmQsIHJlY3QsIHBhZ2UsIG9mZnNldCwgaG92ZXJlZD1GYWxz ZSkKKysgCisrICAgICAgICAgIyB1cHBlcl9yZWN0LCBsb3dlcl9yZWN0LCBwYWludF9yZWN0IGFy ZSBhbGwgaW4gcGFnZSBjby1vcmRpbmF0ZXMKKysgICAgICAgICB1cHBlcl9yZWN0ID0gd3guUmVj dCgqYmFja2dyb3VuZCkKKystICAgICAgICB1cHBlcl9yZWN0LmhlaWdodCAvPSA1CisrKyAgICAg ICAgdXBwZXJfcmVjdC5oZWlnaHQgLy89IDUKKysgCisrICAgICAgICAgbG93ZXJfcmVjdCA9IHd4 LlJlY3QoKmJhY2tncm91bmQpCisrICAgICAgICAgbG93ZXJfcmVjdC55ICs9IHVwcGVyX3JlY3Qu aGVpZ2h0CisrQEAgLTEyMjksNyArMTIyOSw3IEBAIGRlZiBEcmF3UGFnZUJhY2tncm91bmQoc2Vs ZiwgZGMsIHduZCwgcmVjdCk6CisrICAgICAgICAgYmFja2dyb3VuZC53aWR0aCAtPSA0CisrICAg ICAgICAgYmFja2dyb3VuZC5oZWlnaHQgLT0gMgorKyAKKystICAgICAgICBiYWNrZ3JvdW5kLmhl aWdodCAvPSA1CisrKyAgICAgICAgYmFja2dyb3VuZC5oZWlnaHQgLy89IDUKKysgICAgICAgICBk Yy5HcmFkaWVudEZpbGxMaW5lYXIoYmFja2dyb3VuZCwgc2VsZi5fcGFnZV9iYWNrZ3JvdW5kX3Rv cF9jb2xvdXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhZ2VfYmFj a2dyb3VuZF90b3BfZ3JhZGllbnRfY29sb3VyLCB3eC5TT1VUSCkKKysgCisrQEAgLTE0OTMsMTAg KzE0OTMsMTAgQEAgZGVmIERyYXdQYW5lbEJhY2tncm91bmQoc2VsZiwgZGMsIHduZCwgcmVjdCk6 CisrIAorKyAgICAgICAgIGlmIGNsaXBfbGFiZWw6CisrICAgICAgICAgICAgIGNsaXAgPSB3eC5E Q0NsaXBwZXIoZGMsIGxhYmVsX3JlY3QpCisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVs LCBsYWJlbF9yZWN0LngsIGxhYmVsX3JlY3QueSArIChsYWJlbF9yZWN0LkdldEhlaWdodCgpIC0g bGFiZWxfc2l6ZS5HZXRIZWlnaHQoKSkgLyAyKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4dChs YWJlbCwgbGFiZWxfcmVjdC54LCBsYWJlbF9yZWN0LnkgKyAobGFiZWxfcmVjdC5HZXRIZWlnaHQo KSAtIGxhYmVsX3NpemUuR2V0SGVpZ2h0KCkpIC8vIDIpCisrICAgICAgICAgZWxzZToKKystICAg ICAgICAgICAgZGMuRHJhd1RleHQobGFiZWwsIGxhYmVsX3JlY3QueCArIChsYWJlbF9yZWN0Lkdl dFdpZHRoKCkgLSBsYWJlbF9zaXplLkdldFdpZHRoKCkpIC8gMiwKKystICAgICAgICAgICAgICAg ICAgICAgICAgbGFiZWxfcmVjdC55ICsgKGxhYmVsX3JlY3QuR2V0SGVpZ2h0KCkgLSBsYWJlbF9z aXplLkdldEhlaWdodCgpKSAvIDIpCisrKyAgICAgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsLCBs YWJlbF9yZWN0LnggKyAobGFiZWxfcmVjdC5HZXRXaWR0aCgpIC0gbGFiZWxfc2l6ZS5HZXRXaWR0 aCgpKSAvLyAyLAorKysgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9yZWN0LnkgKyAobGFi ZWxfcmVjdC5HZXRIZWlnaHQoKSAtIGxhYmVsX3NpemUuR2V0SGVpZ2h0KCkpIC8vIDIpCisrIAor KyAgICAgICAgIGlmIGhhc19leHRfYnV0dG9uOgorKyAgICAgICAgICAgICBpZiB3bmQuSXNFeHRC dXR0b25Ib3ZlcmVkKCk6CisrQEAgLTE1NzcsNyArMTU3Nyw3IEBAIGRlZiBEcmF3R2FsbGVyeUJh Y2tncm91bmRDb21tb24oc2VsZiwgZGMsIHduZCwgcmVjdCk6CisrICAgICAgICAgICAgICMgRGl2 aWRlciBiZXR3ZWVuIGl0ZW1zIGFuZCBidXR0b25zCisrICAgICAgICAgICAgIGRjLkRyYXdMaW5l KHJlY3QueCwgcmVjdC55ICsgcmVjdC5oZWlnaHQgLSAxNSwgcmVjdC54ICsgcmVjdC53aWR0aCwg cmVjdC55ICsgcmVjdC5oZWlnaHQgLSAxNSkKKysgCisrLSAgICAgICAgICAgIHVwX2J0biA9IHd4 LlJlY3QocmVjdC54LCByZWN0LnkgKyByZWN0LmhlaWdodCAtIDE1LCByZWN0LndpZHRoIC8gMywg MTUpCisrKyAgICAgICAgICAgIHVwX2J0biA9IHd4LlJlY3QocmVjdC54LCByZWN0LnkgKyByZWN0 LmhlaWdodCAtIDE1LCByZWN0LndpZHRoIC8vIDMsIDE1KQorKyAgICAgICAgICAgICBkb3duX2J0 biA9IHd4LlJlY3QodXBfYnRuLkdldFJpZ2h0KCkgKyAxLCB1cF9idG4uR2V0VG9wKCksIHVwX2J0 bi5HZXRXaWR0aCgpLCB1cF9idG4uR2V0SGVpZ2h0KCkpCisrICAgICAgICAgICAgIGRjLkRyYXdM aW5lKGRvd25fYnRuLkdldExlZnQoKSwgZG93bl9idG4uR2V0VG9wKCksIGRvd25fYnRuLkdldExl ZnQoKSwgZG93bl9idG4uR2V0Qm90dG9tKCkpCisrICAgICAgICAgICAgIGV4dF9idG4gPSB3eC5S ZWN0KGRvd25fYnRuLkdldFJpZ2h0KCkgKyAxLCB1cF9idG4uR2V0VG9wKCksIHJlY3Qud2lkdGgg LSB1cF9idG4uR2V0V2lkdGgoKSAtIGRvd25fYnRuLkdldFdpZHRoKCkgLSAxLCB1cF9idG4uR2V0 SGVpZ2h0KCkpCisrQEAgLTE1ODcsNyArMTU4Nyw3IEBAIGRlZiBEcmF3R2FsbGVyeUJhY2tncm91 bmRDb21tb24oc2VsZiwgZGMsIHduZCwgcmVjdCk6CisrICAgICAgICAgICAgICMgRGl2aWRlciBi ZXR3ZWVuIGl0ZW1zIGFuZCBidXR0b25zCisrICAgICAgICAgICAgIGRjLkRyYXdMaW5lKHJlY3Qu eCArIHJlY3Qud2lkdGggLSAxNSwgcmVjdC55LCByZWN0LnggKyByZWN0LndpZHRoIC0gMTUsIHJl Y3QueSArIHJlY3QuaGVpZ2h0KQorKyAKKystICAgICAgICAgICAgdXBfYnRuID0gd3guUmVjdChy ZWN0LnggKyByZWN0LndpZHRoIC0gMTUsIHJlY3QueSwgMTUsIHJlY3QuaGVpZ2h0IC8gMykKKysr ICAgICAgICAgICAgdXBfYnRuID0gd3guUmVjdChyZWN0LnggKyByZWN0LndpZHRoIC0gMTUsIHJl Y3QueSwgMTUsIHJlY3QuaGVpZ2h0IC8vIDMpCisrICAgICAgICAgICAgIGRvd25fYnRuID0gd3gu UmVjdCh1cF9idG4uR2V0TGVmdCgpLCB1cF9idG4uR2V0Qm90dG9tKCkgKyAxLCB1cF9idG4uR2V0 V2lkdGgoKSwgdXBfYnRuLkdldEhlaWdodCgpKQorKyAgICAgICAgICAgICBkYy5EcmF3TGluZShk b3duX2J0bi5HZXRMZWZ0KCksIGRvd25fYnRuLkdldFRvcCgpLCBkb3duX2J0bi5HZXRSaWdodCgp LCBkb3duX2J0bi5HZXRUb3AoKSkKKysgICAgICAgICAgICAgZXh0X2J0biA9IHd4LlJlY3QodXBf YnRuLkdldExlZnQoKSwgZG93bl9idG4uR2V0Qm90dG9tKCkgKyAxLCB1cF9idG4uR2V0V2lkdGgo KSwgcmVjdC5oZWlnaHQgLSB1cF9idG4uR2V0SGVpZ2h0KCkgLSBkb3duX2J0bi5HZXRIZWlnaHQo KSAtIDEpCisrQEAgLTE2MzMsMTQgKzE2MzMsMTQgQEAgZGVmIERyYXdHYWxsZXJ5QnV0dG9uKHNl bGYsIGRjLCByZWN0LCBzdGF0ZSwgYml0bWFwcyk6CisrIAorKyAgICAgICAgIGRjLlNldFBlbih3 eC5UUkFOU1BBUkVOVF9QRU4pCisrICAgICAgICAgZGMuU2V0QnJ1c2goYnRuX3RvcF9icnVzaCkK KystICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHJlY3QueCwgcmVjdC55LCByZWN0LndpZHRoLCBy ZWN0LmhlaWdodCAvIDIpCisrKyAgICAgICAgZGMuRHJhd1JlY3RhbmdsZShyZWN0LngsIHJlY3Qu eSwgcmVjdC53aWR0aCwgcmVjdC5oZWlnaHQgLy8gMikKKysgCisrICAgICAgICAgbG93ZXIgPSB3 eC5SZWN0KCpyZWN0KQorKy0gICAgICAgIGxvd2VyLmhlaWdodCA9IChsb3dlci5oZWlnaHQgKyAx KSAvIDIKKysrICAgICAgICBsb3dlci5oZWlnaHQgPSAobG93ZXIuaGVpZ2h0ICsgMSkgLy8gMgor KyAgICAgICAgIGxvd2VyLnkgKz0gcmVjdC5oZWlnaHQgLSBsb3dlci5oZWlnaHQKKysgICAgICAg ICBkYy5HcmFkaWVudEZpbGxMaW5lYXIobG93ZXIsIGJ0bl9jb2xvdXIsIGJ0bl9ncmFkX2NvbG91 ciwgd3guU09VVEgpCisrIAorKy0gICAgICAgIGRjLkRyYXdCaXRtYXAoYnRuX2JpdG1hcCwgcmVj dC54ICsgcmVjdC53aWR0aCAvIDIgLSAyLCBsb3dlci55IC0gMiwgVHJ1ZSkKKysrICAgICAgICBk Yy5EcmF3Qml0bWFwKGJ0bl9iaXRtYXAsIHJlY3QueCArIHJlY3Qud2lkdGggLy8gMiAtIDIsIGxv d2VyLnkgLSAyLCBUcnVlKQorKyAKKysgCisrICAgICBkZWYgRHJhd0dhbGxlcnlJdGVtQmFja2dy b3VuZChzZWxmLCBkYywgd25kLCByZWN0LCBpdGVtKToKKytAQCAtMTY5MSw3ICsxNjkxLDcgQEAg ZGVmIERyYXdHYWxsZXJ5SXRlbUJhY2tncm91bmQoc2VsZiwgZGMsIHduZCwgcmVjdCwgaXRlbSk6 CisrICAgICAgICAgdXBwZXIueCArPSAxCisrICAgICAgICAgdXBwZXIud2lkdGggLT0gMgorKyAg ICAgICAgIHVwcGVyLnkgKz0gMQorKy0gICAgICAgIHVwcGVyLmhlaWdodCAvPSAzCisrKyAgICAg ICAgdXBwZXIuaGVpZ2h0IC8vPSAzCisrICAgICAgICAgZGMuU2V0UGVuKHd4LlRSQU5TUEFSRU5U X1BFTikKKysgICAgICAgICBkYy5TZXRCcnVzaCh0b3BfYnJ1c2gpCisrICAgICAgICAgZGMuRHJh d1JlY3RhbmdsZSh1cHBlci54LCB1cHBlci55LCB1cHBlci53aWR0aCwgdXBwZXIuaGVpZ2h0KQor K0BAIC0xNzYwLDcgKzE3NjAsNyBAQCBkZWYgRHJhd01pbmltaXNlZFBhbmVsKHNlbGYsIGRjLCB3 bmQsIHJlY3QsIGJpdG1hcCk6CisrICAgICAgICAgICAgIGNsaWVudF9yZWN0LnggKz0gMQorKyAg ICAgICAgICAgICBjbGllbnRfcmVjdC53aWR0aCAtPSAyCisrICAgICAgICAgICAgIGNsaWVudF9y ZWN0LnkgKz0gMQorKy0gICAgICAgICAgICBjbGllbnRfcmVjdC5oZWlnaHQgPSAocmVjdC55ICsg cmVjdC5oZWlnaHQgLyA1KSAtIGNsaWVudF9yZWN0LngKKysrICAgICAgICAgICAgY2xpZW50X3Jl Y3QuaGVpZ2h0ID0gKHJlY3QueSArIHJlY3QuaGVpZ2h0IC8vIDUpIC0gY2xpZW50X3JlY3QueAor KyAgICAgICAgICAgICBkYy5HcmFkaWVudEZpbGxMaW5lYXIoY2xpZW50X3JlY3QsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYW5lbF9hY3RpdmVfYmFja2dyb3Vu ZF90b3BfY29sb3VyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5f cGFuZWxfYWN0aXZlX2JhY2tncm91bmRfdG9wX2dyYWRpZW50X2NvbG91ciwgd3guU09VVEgpCisr QEAgLTE3ODUsNyArMTc4NSw3IEBAIGRlZiBEcmF3TWluaW1pc2VkUGFuZWwoc2VsZiwgZGMsIHdu ZCwgcmVjdCwgYml0bWFwKToKKysgICAgICAgICBkYy5TZXRQZW4od3guVFJBTlNQQVJFTlRfUEVO KQorKyAgICAgICAgIGRjLkRyYXdSZWN0YW5nbGUocHJldmlldy54ICsgMSwgcHJldmlldy55ICsg cHJldmlldy5oZWlnaHQgLSA4LCBwcmV2aWV3LndpZHRoIC0gMiwgNykKKysgCisrLSAgICAgICAg bWlkX3BvcyA9IHJlY3QueSArIHJlY3QuaGVpZ2h0IC8gNSAtIHByZXZpZXcueQorKysgICAgICAg IG1pZF9wb3MgPSByZWN0LnkgKyByZWN0LmhlaWdodCAvLyA1IC0gcHJldmlldy55CisrIAorKyAg ICAgICAgIGlmIG1pZF9wb3MgPCAwIG9yIG1pZF9wb3MgPj0gcHJldmlldy5oZWlnaHQ6CisrICAg ICAgICAgICAgIGZ1bGxfcmVjdCA9IHd4LlJlY3QoKnByZXZpZXcpCisrQEAgLTE4MTYsOCArMTgx Niw4IEBAIGRlZiBEcmF3TWluaW1pc2VkUGFuZWwoc2VsZiwgZGMsIHduZCwgcmVjdCwgYml0bWFw KToKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhZ2VfaG92ZXJf YmFja2dyb3VuZF9ncmFkaWVudF9jb2xvdXIsIHd4LlNPVVRIKQorKyAKKysgICAgICAgICBpZiBi aXRtYXAuSXNPaygpOgorKy0gICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcCwgcHJldmll dy54ICsgKHByZXZpZXcud2lkdGggLSBiaXRtYXAuR2V0V2lkdGgoKSkgLyAyLAorKy0gICAgICAg ICAgICAgICAgICAgICAgICAgIHByZXZpZXcueSArIChwcmV2aWV3LmhlaWdodCAtIDcgLSBiaXRt YXAuR2V0SGVpZ2h0KCkpIC8gMiwgVHJ1ZSkKKysrICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChi aXRtYXAsIHByZXZpZXcueCArIChwcmV2aWV3LndpZHRoIC0gYml0bWFwLkdldFdpZHRoKCkpIC8v IDIsCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlldy55ICsgKHByZXZpZXcuaGVp Z2h0IC0gNyAtIGJpdG1hcC5HZXRIZWlnaHQoKSkgLy8gMiwgVHJ1ZSkKKysgCisrICAgICAgICAg c2VsZi5EcmF3UGFuZWxCb3JkZXIoZGMsIHByZXZpZXcsIHNlbGYuX3BhbmVsX2JvcmRlcl9wZW4s IHNlbGYuX3BhbmVsX2JvcmRlcl9ncmFkaWVudF9wZW4pCisrICAgICAgICAgc2VsZi5EcmF3UGFu ZWxCb3JkZXIoZGMsIHRydWVfcmVjdCwgc2VsZi5fcGFuZWxfbWluaW1pc2VkX2JvcmRlcl9wZW4s IHNlbGYuX3BhbmVsX21pbmltaXNlZF9ib3JkZXJfZ3JhZGllbnRfcGVuKQorK0BAIC0xODI5LDIw ICsxODI5LDIwIEBAIGRlZiBEcmF3TWluaW1pc2VkUGFuZWxDb21tb24oc2VsZiwgZGMsIHduZCwg dHJ1ZV9yZWN0KToKKysgCisrICAgICAgICAgaWYgc2VsZi5fZmxhZ3MgJiBSSUJCT05fQkFSX0ZM T1dfVkVSVElDQUw6CisrICAgICAgICAgICAgIHByZXZpZXcueCA9IHRydWVfcmVjdC54ICsgNAor Ky0gICAgICAgICAgICBwcmV2aWV3LnkgPSB0cnVlX3JlY3QueSArICh0cnVlX3JlY3QuaGVpZ2h0 IC0gcHJldmlldy5oZWlnaHQpIC8gMgorKysgICAgICAgICAgICBwcmV2aWV3LnkgPSB0cnVlX3Jl Y3QueSArICh0cnVlX3JlY3QuaGVpZ2h0IC0gcHJldmlldy5oZWlnaHQpIC8vIDIKKysgICAgICAg ICBlbHNlOgorKy0gICAgICAgICAgICBwcmV2aWV3LnggPSB0cnVlX3JlY3QueCArICh0cnVlX3Jl Y3Qud2lkdGggLSBwcmV2aWV3LndpZHRoKSAvIDIKKysrICAgICAgICAgICAgcHJldmlldy54ID0g dHJ1ZV9yZWN0LnggKyAodHJ1ZV9yZWN0LndpZHRoIC0gcHJldmlldy53aWR0aCkgLy8gMgorKyAg ICAgICAgICAgICBwcmV2aWV3LnkgPSB0cnVlX3JlY3QueSArIDQKKysgCisrICAgICAgICAgZGMu U2V0Rm9udChzZWxmLl9wYW5lbF9sYWJlbF9mb250KQorKyAgICAgICAgIGxhYmVsX3dpZHRoLCBs YWJlbF9oZWlnaHQgPSBkYy5HZXRUZXh0RXh0ZW50KHduZC5HZXRMYWJlbCgpKQorKyAKKystICAg ICAgICB4cG9zID0gdHJ1ZV9yZWN0LnggKyAodHJ1ZV9yZWN0LndpZHRoIC0gbGFiZWxfd2lkdGgg KyAxKSAvIDIKKysrICAgICAgICB4cG9zID0gdHJ1ZV9yZWN0LnggKyAodHJ1ZV9yZWN0LndpZHRo IC0gbGFiZWxfd2lkdGggKyAxKSAvLyAyCisrICAgICAgICAgeXBvcyA9IHByZXZpZXcueSArIHBy ZXZpZXcuaGVpZ2h0ICsgNQorKyAKKysgICAgICAgICBpZiBzZWxmLl9mbGFncyAmIFJJQkJPTl9C QVJfRkxPV19WRVJUSUNBTDoKKysgICAgICAgICAgICAgeHBvcyA9IHByZXZpZXcueCArIHByZXZp ZXcud2lkdGggKyA1CisrLSAgICAgICAgICAgIHlwb3MgPSB0cnVlX3JlY3QueSArICh0cnVlX3Jl Y3QuaGVpZ2h0IC0gbGFiZWxfaGVpZ2h0KSAvIDIKKysrICAgICAgICAgICAgeXBvcyA9IHRydWVf cmVjdC55ICsgKHRydWVfcmVjdC5oZWlnaHQgLSBsYWJlbF9oZWlnaHQpIC8vIDIKKysgCisrICAg ICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQoc2VsZi5fcGFuZWxfbWluaW1pc2VkX2xhYmVsX2Nv bG91cikKKysgICAgICAgICBkYy5EcmF3VGV4dCh3bmQuR2V0TGFiZWwoKSwgeHBvcywgeXBvcykK KytAQCAtMTg1MSwxMiArMTg1MSwxMiBAQCBkZWYgRHJhd01pbmltaXNlZFBhbmVsQ29tbW9uKHNl bGYsIGRjLCB3bmQsIHRydWVfcmVjdCk6CisrIAorKyAgICAgICAgIGlmIHNlbGYuX2ZsYWdzICYg UklCQk9OX0JBUl9GTE9XX1ZFUlRJQ0FMOgorKyAgICAgICAgICAgICB4cG9zICs9IGxhYmVsX3dp ZHRoCisrLSAgICAgICAgICAgIGFycm93X3BvaW50c1swXSA9IHd4LlBvaW50KHhwb3MgKyA1LCB5 cG9zICsgbGFiZWxfaGVpZ2h0IC8gMikKKysrICAgICAgICAgICAgYXJyb3dfcG9pbnRzWzBdID0g d3guUG9pbnQoeHBvcyArIDUsIHlwb3MgKyBsYWJlbF9oZWlnaHQgLy8gMikKKysgICAgICAgICAg ICAgYXJyb3dfcG9pbnRzWzFdID0gYXJyb3dfcG9pbnRzWzBdICsgd3guUG9pbnQoLTMsICAzKQor KyAgICAgICAgICAgICBhcnJvd19wb2ludHNbMl0gPSBhcnJvd19wb2ludHNbMF0gKyB3eC5Qb2lu dCgtMywgLTMpCisrICAgICAgICAgZWxzZToKKysgICAgICAgICAgICAgeXBvcyArPSBsYWJlbF9o ZWlnaHQKKystICAgICAgICAgICAgYXJyb3dfcG9pbnRzWzBdID0gd3guUG9pbnQodHJ1ZV9yZWN0 LndpZHRoIC8gMiwgeXBvcyArIDUpCisrKyAgICAgICAgICAgIGFycm93X3BvaW50c1swXSA9IHd4 LlBvaW50KHRydWVfcmVjdC53aWR0aCAvLyAyLCB5cG9zICsgNSkKKysgICAgICAgICAgICAgYXJy b3dfcG9pbnRzWzFdID0gYXJyb3dfcG9pbnRzWzBdICsgd3guUG9pbnQoLTMsIC0zKQorKyAgICAg ICAgICAgICBhcnJvd19wb2ludHNbMl0gPSBhcnJvd19wb2ludHNbMF0gKyB3eC5Qb2ludCggMywg LTMpCisrIAorK0BAIC0xOTY3LDcgKzE5NjcsNyBAQCBkZWYgRHJhd0J1dHRvbkJhckJ1dHRvbihz ZWxmLCBkYywgd25kLCByZWN0LCBraW5kLCBzdGF0ZSwgbGFiZWwsIGJpdG1hcF9sYXJnZSwgYgor KyAgICAgICAgICAgICBiZ19yZWN0LmhlaWdodCAtPSAyCisrIAorKyAgICAgICAgICAgICBiZ19y ZWN0X3RvcCA9IHd4LlJlY3QoKmJnX3JlY3QpCisrLSAgICAgICAgICAgIGJnX3JlY3RfdG9wLmhl aWdodCAvPSAzCisrKyAgICAgICAgICAgIGJnX3JlY3RfdG9wLmhlaWdodCAvLz0gMworKyAgICAg ICAgICAgICBiZ19yZWN0LnkgKz0gYmdfcmVjdF90b3AuaGVpZ2h0CisrICAgICAgICAgICAgIGJn X3JlY3QuaGVpZ2h0IC09IGJnX3JlY3RfdG9wLmhlaWdodAorKyAKKytAQCAtMjA0Myw3ICsyMDQz LDcgQEAgZGVmIERyYXdCdXR0b25CYXJCdXR0b25Gb3JlZ3JvdW5kKHNlbGYsIGRjLCByZWN0LCBr aW5kLCBzdGF0ZSwgbGFiZWwsIGJpdG1hcF9sYXIKKysgICAgICAgICBpZiByZXN1bHQgPT0gUklC Qk9OX0JVVFRPTkJBUl9CVVRUT05fTEFSR0U6CisrIAorKyAgICAgICAgICAgICBwYWRkaW5nID0g MgorKy0gICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcF9sYXJnZSwgcmVjdC54ICsgKHJl Y3Qud2lkdGggLSBiaXRtYXBfbGFyZ2UuR2V0V2lkdGgoKSkgLyAyLAorKysgICAgICAgICAgICBk Yy5EcmF3Qml0bWFwKGJpdG1hcF9sYXJnZSwgcmVjdC54ICsgKHJlY3Qud2lkdGggLSBiaXRtYXBf bGFyZ2UuR2V0V2lkdGgoKSkgLy8gMiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICByZWN0 LnkgKyBwYWRkaW5nLCBUcnVlKQorKyAgICAgICAgICAgICB5cG9zID0gcmVjdC55ICsgcGFkZGlu ZyArIGJpdG1hcF9sYXJnZS5HZXRIZWlnaHQoKSArIHBhZGRpbmcKKysgICAgICAgICAgICAgYXJy b3dfd2lkdGggPSAoa2luZCA9PSBSSUJCT05fQlVUVE9OX05PUk1BTCBhbmQgWzBdIG9yIFs4XSlb MF0KKytAQCAtMjA1MiwxMCArMjA1MiwxMCBAQCBkZWYgRHJhd0J1dHRvbkJhckJ1dHRvbkZvcmVn cm91bmQoc2VsZiwgZGMsIHJlY3QsIGtpbmQsIHN0YXRlLCBsYWJlbCwgYml0bWFwX2xhcgorKyAK KysgICAgICAgICAgICAgaWYgbGFiZWxfdyArIDIgKiBwYWRkaW5nIDw9IHJlY3Qud2lkdGg6Cisr IAorKy0gICAgICAgICAgICAgICAgZGMuRHJhd1RleHQobGFiZWwsIHJlY3QueCArIChyZWN0Lndp ZHRoIC0gbGFiZWxfdykgLyAyLCB5cG9zKQorKysgICAgICAgICAgICAgICAgZGMuRHJhd1RleHQo bGFiZWwsIHJlY3QueCArIChyZWN0LndpZHRoIC0gbGFiZWxfdykgLy8gMiwgeXBvcykKKysgICAg ICAgICAgICAgICAgIGlmIGFycm93X3dpZHRoICE9IDA6CisrLSAgICAgICAgICAgICAgICAgICAg c2VsZi5EcmF3RHJvcGRvd25BcnJvdyhkYywgcmVjdC54ICsgcmVjdC53aWR0aCAvIDIsCisrLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5cG9zICsgKGxhYmVsX2gg KiAzKSAvIDIsCisrKyAgICAgICAgICAgICAgICAgICAgc2VsZi5EcmF3RHJvcGRvd25BcnJvdyhk YywgcmVjdC54ICsgcmVjdC53aWR0aCAvLyAyLAorKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeXBvcyArIChsYWJlbF9oICogMykgLy8gMiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1dHRvbl9iYXJfbGFiZWxf Y29sb3VyKQorKyAgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICAgYnJlYWtpID0g bGVuKGxhYmVsKQorK0BAIC0yMDY3LDE3ICsyMDY3LDE3IEBAIGRlZiBEcmF3QnV0dG9uQmFyQnV0 dG9uRm9yZWdyb3VuZChzZWxmLCBkYywgcmVjdCwga2luZCwgc3RhdGUsIGxhYmVsLCBiaXRtYXBf bGFyCisrICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsX3csIGxhYmVsX2ggPSBkYy5HZXRU ZXh0RXh0ZW50KGxhYmVsX3RvcCkKKysgCisrICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGxh YmVsX3cgKyAyICogcGFkZGluZyA8PSByZWN0LndpZHRoOgorKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGMuRHJhd1RleHQobGFiZWxfdG9wLCByZWN0LnggKyAocmVjdC53aWR0aCAtIGxh YmVsX3cpIC8gMiwgeXBvcykKKysrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRjLkRyYXdU ZXh0KGxhYmVsX3RvcCwgcmVjdC54ICsgKHJlY3Qud2lkdGggLSBsYWJlbF93KSAvLyAyLCB5cG9z KQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXBvcyArPSBsYWJlbF9oCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9ib3R0b20gPSBsYWJlbFticmVha2k6XQorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxfdywgbGFiZWxfaCA9IGRjLkdldFRleHRF eHRlbnQobGFiZWxfYm90dG9tKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxf dyArPSBhcnJvd193aWR0aAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaVggPSByZWN0 LnggKyAocmVjdC53aWR0aCAtIGxhYmVsX3cpIC8gMgorKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaVggPSByZWN0LnggKyAocmVjdC53aWR0aCAtIGxhYmVsX3cpIC8vIDIKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsX2JvdHRvbSwgaVgsIHlwb3Mp CisrIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJyb3dfd2lkdGggIT0gMDoK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkRyYXdEcm9wZG93bkFycm93 KGRjLCBpWCArIDIgK2xhYmVsX3cgLSBhcnJvd193aWR0aCwKKystICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlwb3MgKyBsYWJlbF9oIC8gMiAr IDEsCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB5cG9zICsgbGFiZWxfaCAvLyAyICsgMSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2J1dHRvbl9iYXJfbGFiZWxfY29s b3VyKQorKyAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisrQEAgLTIwODUs MTQgKzIwODUsMTQgQEAgZGVmIERyYXdCdXR0b25CYXJCdXR0b25Gb3JlZ3JvdW5kKHNlbGYsIGRj LCByZWN0LCBraW5kLCBzdGF0ZSwgbGFiZWwsIGJpdG1hcF9sYXIKKysgICAgICAgICBlbGlmIHJl c3VsdCA9PSBSSUJCT05fQlVUVE9OQkFSX0JVVFRPTl9NRURJVU06CisrIAorKyAgICAgICAgICAg ICB4X2N1cnNvciA9IHJlY3QueCArIDIKKystICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChiaXRt YXBfc21hbGwsIHhfY3Vyc29yLCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLSBiaXRtYXBfc21hbGwu R2V0SGVpZ2h0KCkpLzIsIFRydWUpCisrKyAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoYml0bWFw X3NtYWxsLCB4X2N1cnNvciwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC0gYml0bWFwX3NtYWxsLkdl dEhlaWdodCgpKS8vMiwgVHJ1ZSkKKysgICAgICAgICAgICAgeF9jdXJzb3IgKz0gYml0bWFwX3Nt YWxsLkdldFdpZHRoKCkgKyAyCisrICAgICAgICAgICAgIGxhYmVsX3csIGxhYmVsX2ggPSBkYy5H ZXRUZXh0RXh0ZW50KGxhYmVsKQorKy0gICAgICAgICAgICBkYy5EcmF3VGV4dChsYWJlbCwgeF9j dXJzb3IsIHJlY3QueSArIChyZWN0LmhlaWdodCAtIGxhYmVsX2gpIC8gMikKKysrICAgICAgICAg ICAgZGMuRHJhd1RleHQobGFiZWwsIHhfY3Vyc29yLCByZWN0LnkgKyAocmVjdC5oZWlnaHQgLSBs YWJlbF9oKSAvLyAyKQorKyAgICAgICAgICAgICB4X2N1cnNvciArPSBsYWJlbF93ICsgMworKyAK KysgICAgICAgICAgICAgaWYga2luZCAhPSBSSUJCT05fQlVUVE9OX05PUk1BTDoKKystICAgICAg ICAgICAgICAgIHNlbGYuRHJhd0Ryb3Bkb3duQXJyb3coZGMsIHhfY3Vyc29yLCByZWN0LnkgKyBy ZWN0LmhlaWdodCAvIDIsCisrKyAgICAgICAgICAgICAgICBzZWxmLkRyYXdEcm9wZG93bkFycm93 KGRjLCB4X2N1cnNvciwgcmVjdC55ICsgcmVjdC5oZWlnaHQgLy8gMiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fYnV0dG9uX2Jhcl9sYWJlbF9jb2xvdXIp CisrIAorKyAgICAgICAgIGVsc2U6CisrQEAgLTIxODQsNyArMjE4NCw3IEBAIGRlZiBEcmF3VG9v bChzZWxmLCBkYywgd25kLCByZWN0LCBiaXRtYXAsIGtpbmQsIHN0YXRlKToKKysgCisrICAgICAg ICAgIyBCYWNrZ3JvdW5kCisrICAgICAgICAgYmdfcmVjdF90b3AgPSB3eC5SZWN0KCpiZ19yZWN0 KQorKy0gICAgICAgIGJnX3JlY3RfdG9wLmhlaWdodCA9IChiZ19yZWN0X3RvcC5oZWlnaHQgKiAy KSAvIDUKKysrICAgICAgICBiZ19yZWN0X3RvcC5oZWlnaHQgPSAoYmdfcmVjdF90b3AuaGVpZ2h0 ICogMikgLy8gNQorKyAgICAgICAgIGJnX3JlY3RfYnRtID0gd3guUmVjdCgqYmdfcmVjdCkKKysg ICAgICAgICBiZ19yZWN0X2J0bS55ICs9IGJnX3JlY3RfdG9wLmhlaWdodAorKyAgICAgICAgIGJn X3JlY3RfYnRtLmhlaWdodCAtPSBiZ19yZWN0X3RvcC5oZWlnaHQKKytAQCAtMjI0NCwxMCArMjI0 NCwxMCBAQCBkZWYgRHJhd1Rvb2woc2VsZiwgZGMsIHduZCwgcmVjdCwgYml0bWFwLCBraW5kLCBz dGF0ZSk6CisrICAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShyZWN0LnggKyBhdmFpbF93aWR0 aCArIDEsIHJlY3QueSwgcmVjdC54ICsgYXZhaWxfd2lkdGggKyAxLCByZWN0LnkgKyByZWN0Lmhl aWdodCkKKysgCisrICAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoc2VsZi5fdG9vbGJhcl9kcm9w X2JpdG1hcCwgYmdfcmVjdC54ICsgYXZhaWxfd2lkdGggKyAyLAorKy0gICAgICAgICAgICAgICAg ICAgICAgICAgIGJnX3JlY3QueSArIChiZ19yZWN0LmhlaWdodCAvIDIpIC0gMiwgVHJ1ZSkKKysr ICAgICAgICAgICAgICAgICAgICAgICAgICBiZ19yZWN0LnkgKyAoYmdfcmVjdC5oZWlnaHQgLy8g MikgLSAyLCBUcnVlKQorKyAKKystICAgICAgICBkYy5EcmF3Qml0bWFwKGJpdG1hcCwgYmdfcmVj dC54ICsgKGF2YWlsX3dpZHRoIC0gYml0bWFwLkdldFdpZHRoKCkpIC8gMiwKKystICAgICAgICAg ICAgICAgICAgICAgIGJnX3JlY3QueSArIChiZ19yZWN0LmhlaWdodCAtIGJpdG1hcC5HZXRIZWln aHQoKSkgLyAyLCBUcnVlKQorKysgICAgICAgIGRjLkRyYXdCaXRtYXAoYml0bWFwLCBiZ19yZWN0 LnggKyAoYXZhaWxfd2lkdGggLSBiaXRtYXAuR2V0V2lkdGgoKSkgLy8gMiwKKysrICAgICAgICAg ICAgICAgICAgICAgIGJnX3JlY3QueSArIChiZ19yZWN0LmhlaWdodCAtIGJpdG1hcC5HZXRIZWln aHQoKSkgLy8gMiwgVHJ1ZSkKKysgCisrIAorKyAgICAgZGVmIEdldEJhclRhYldpZHRoKHNlbGYs IGRjLCB3bmQsIGxhYmVsLCBiaXRtYXAsIGlkZWFsPU5vbmUsIHNtYWxsX2JlZ2luX25lZWRfc2Vw YXJhdG9yPU5vbmUsCisrQEAgLTI0NzQsNyArMjQ3NCw3IEBAIGRlZiBHZXRHYWxsZXJ5Q2xpZW50 U2l6ZShzZWxmLCBkYywgd25kLCBzaXplLCBjbGllbnRfb2Zmc2V0PU5vbmUsIHNjcm9sbF91cF9i dXR0CisrICAgICAgICAgICAgIHNjcm9sbF91cC55ID0gc2l6ZS5HZXRIZWlnaHQoKSAtIDE1Cisr ICAgICAgICAgICAgIHNjcm9sbF91cC5oZWlnaHQgPSAxNQorKyAgICAgICAgICAgICBzY3JvbGxf dXAueCA9IDAKKystICAgICAgICAgICAgc2Nyb2xsX3VwLndpZHRoID0gKHNpemUuR2V0V2lkdGgo KSArIDIpIC8gMworKysgICAgICAgICAgICBzY3JvbGxfdXAud2lkdGggPSAoc2l6ZS5HZXRXaWR0 aCgpICsgMikgLy8gMworKyAgICAgICAgICAgICBzY3JvbGxfZG93bi55ID0gc2Nyb2xsX3VwLnkK KysgICAgICAgICAgICAgc2Nyb2xsX2Rvd24uaGVpZ2h0ID0gc2Nyb2xsX3VwLmhlaWdodAorKyAg ICAgICAgICAgICBzY3JvbGxfZG93bi54ID0gc2Nyb2xsX3VwLnggKyBzY3JvbGxfdXAud2lkdGgK KytAQCAtMjQ5MSw3ICsyNDkxLDcgQEAgZGVmIEdldEdhbGxlcnlDbGllbnRTaXplKHNlbGYsIGRj LCB3bmQsIHNpemUsIGNsaWVudF9vZmZzZXQ9Tm9uZSwgc2Nyb2xsX3VwX2J1dHQKKysgICAgICAg ICAgICAgc2Nyb2xsX3VwLnggPSBzaXplLkdldFdpZHRoKCkgLSAxNQorKyAgICAgICAgICAgICBz Y3JvbGxfdXAud2lkdGggPSAxNQorKyAgICAgICAgICAgICBzY3JvbGxfdXAueSA9IDAKKystICAg ICAgICAgICAgc2Nyb2xsX3VwLmhlaWdodCA9IChzaXplLkdldEhlaWdodCgpICsgMikgLyAzCisr KyAgICAgICAgICAgIHNjcm9sbF91cC5oZWlnaHQgPSAoc2l6ZS5HZXRIZWlnaHQoKSArIDIpIC8v IDMKKysgICAgICAgICAgICAgc2Nyb2xsX2Rvd24ueCA9IHNjcm9sbF91cC54CisrICAgICAgICAg ICAgIHNjcm9sbF9kb3duLndpZHRoID0gc2Nyb2xsX3VwLndpZHRoCisrICAgICAgICAgICAgIHNj cm9sbF9kb3duLnkgPSBzY3JvbGxfdXAueSArIHNjcm9sbF91cC5oZWlnaHQKKytkaWZmIC0tZ2l0 IGEvd3gvbGliL2Fndy9yaWJib24vYmFyLnB5IGIvd3gvbGliL2Fndy9yaWJib24vYmFyLnB5Cisr aW5kZXggYWU4YjZhMTljLi5iMGQyODc3NmQgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9yaWJi b24vYmFyLnB5CisrKysrIGIvd3gvbGliL2Fndy9yaWJib24vYmFyLnB5CisrQEAgLTc0Myw3ICs3 NDMsNyBAQCBkZWYgUmVjYWxjdWxhdGVUYWJTaXplcyhzZWxmKToKKysgICAgICAgICAgICAgICAg ICAgICBkZWx0YSA9IGluZm8uaWRlYWxfd2lkdGggLSBpbmZvLnNtYWxsX211c3RfaGF2ZV9zZXBh cmF0b3Jfd2lkdGgKKysgICAgICAgICAgICAgICAgICAgICBpbmZvLnJlY3QueCA9IHgKKysgICAg ICAgICAgICAgICAgICAgICBpbmZvLnJlY3QueSA9IHkKKystICAgICAgICAgICAgICAgICAgICBp bmZvLnJlY3Qud2lkdGggPSBpbmZvLnNtYWxsX211c3RfaGF2ZV9zZXBhcmF0b3Jfd2lkdGggKyBk ZWx0YSood2lkdGggLSB0b3RhbF9zbWFsbF93aWR0aCkvdG90YWxfZGVsdGEKKysrICAgICAgICAg ICAgICAgICAgICBpbmZvLnJlY3Qud2lkdGggPSBpbmZvLnNtYWxsX211c3RfaGF2ZV9zZXBhcmF0 b3Jfd2lkdGggKyBkZWx0YSood2lkdGggLSB0b3RhbF9zbWFsbF93aWR0aCkvL3RvdGFsX2RlbHRh CisrICAgICAgICAgICAgICAgICAgICAgaW5mby5yZWN0LmhlaWdodCA9IHNlbGYuX3RhYl9oZWln aHQKKysgCisrICAgICAgICAgICAgICAgICAgICAgeCArPSBpbmZvLnJlY3Qud2lkdGggKyB0YWJz ZXAKKytAQCAtNzk3LDcgKzc5Nyw3IEBAIGRlZiBSZWNhbGN1bGF0ZVRhYlNpemVzKHNlbGYpOgor KyAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YSA9IHNtYWxsZXN0X3RhYl93aWR0aCAtIGlu Zm8ubWluaW11bV93aWR0aAorKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLnJlY3QueCA9 IHgKKysgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5yZWN0LnkgPSB5CisrLSAgICAgICAg ICAgICAgICAgICAgICAgIGluZm8ucmVjdC53aWR0aCA9IGluZm8ubWluaW11bV93aWR0aCArIGRl bHRhKih3aWR0aCAtIHRvdGFsX3NtYWxsX3dpZHRoKS90b3RhbF9kZWx0YQorKysgICAgICAgICAg ICAgICAgICAgICAgICBpbmZvLnJlY3Qud2lkdGggPSBpbmZvLm1pbmltdW1fd2lkdGggKyBkZWx0 YSood2lkdGggLSB0b3RhbF9zbWFsbF93aWR0aCkvL3RvdGFsX2RlbHRhCisrICAgICAgICAgICAg ICAgICAgICAgICAgIGluZm8ucmVjdC5oZWlnaHQgPSBzZWxmLl90YWJfaGVpZ2h0CisrIAorKyAg ICAgICAgICAgICAgICAgICAgICAgICB4ICs9IGluZm8ucmVjdC53aWR0aCArIHRhYnNlcAorK2Rp ZmYgLS1naXQgYS93eC9saWIvYWd3L3JpYmJvbi9idXR0b25iYXIucHkgYi93eC9saWIvYWd3L3Jp YmJvbi9idXR0b25iYXIucHkKKytpbmRleCAyNWVlNDlhODIuLjQ2OTBmNDgzZCAxMDA2NDQKKyst LS0gYS93eC9saWIvYWd3L3JpYmJvbi9idXR0b25iYXIucHkKKysrKysgYi93eC9saWIvYWd3L3Jp YmJvbi9idXR0b25iYXIucHkKKytAQCAtMzU0LDcgKzM1NCw3IEBAIGRlZiBJbnNlcnRCdXR0b24o c2VsZiwgcG9zLCBidXR0b25faWQsIGxhYmVsLCBiaXRtYXAsIGJpdG1hcF9zbWFsbD13eC5OdWxs Qml0bWFwCisrICAgICAgICAgICAgICAgICBzZWxmLl9iaXRtYXBfc2l6ZV9sYXJnZSA9IGJpdG1h cC5HZXRTaXplKCkKKysgICAgICAgICAgICAgICAgIGlmIG5vdCBiaXRtYXBfc21hbGwuSXNPaygp OgorKyAgICAgICAgICAgICAgICAgICAgIHcsIGggPSBzZWxmLl9iaXRtYXBfc2l6ZV9sYXJnZQor Ky0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2JpdG1hcF9zaXplX3NtYWxsID0gd3guU2l6ZSgw LjUqdywgMC41KmgpCisrKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fYml0bWFwX3NpemVfc21h bGwgPSB3eC5TaXplKHcvLzIsIGgvLzIpCisrIAorKyAgICAgICAgICAgICBpZiBiaXRtYXBfc21h bGwuSXNPaygpOgorKyAKKytAQCAtODY3LDggKzg2Nyw4IEBAIGRlZiBPblNpemUoc2VsZiwgZXZl bnQpOgorKyAKKysgICAgICAgICAgICAgbGF5b3V0X3NpemUgPSBzZWxmLl9sYXlvdXRzW2xheW91 dF9pXS5vdmVyYWxsX3NpemUKKysgICAgICAgICAgICAgaWYgbGF5b3V0X3NpemUueCA8PSBuZXdf c2l6ZS54IGFuZCBsYXlvdXRfc2l6ZS55IDw9IG5ld19zaXplLnk6CisrLSAgICAgICAgICAgICAg ICBzZWxmLl9sYXlvdXRfb2Zmc2V0LnggPSAobmV3X3NpemUueCAtIGxheW91dF9zaXplLngpLzIK KystICAgICAgICAgICAgICAgIHNlbGYuX2xheW91dF9vZmZzZXQueSA9IChuZXdfc2l6ZS55IC0g bGF5b3V0X3NpemUueSkvMgorKysgICAgICAgICAgICAgICAgc2VsZi5fbGF5b3V0X29mZnNldC54 ID0gKG5ld19zaXplLnggLSBsYXlvdXRfc2l6ZS54KS8vMgorKysgICAgICAgICAgICAgICAgc2Vs Zi5fbGF5b3V0X29mZnNldC55ID0gKG5ld19zaXplLnkgLSBsYXlvdXRfc2l6ZS55KS8vMgorKyAg ICAgICAgICAgICAgICAgc2VsZi5fY3VycmVudF9sYXlvdXQgPSBsYXlvdXRfaQorKyAgICAgICAg ICAgICAgICAgYnJlYWsKKysgCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvcmliYm9uL2dhbGxl cnkucHkgYi93eC9saWIvYWd3L3JpYmJvbi9nYWxsZXJ5LnB5CisraW5kZXggYjgzMGZhYjdkLi5i ODY1Mjg4NjUgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9yaWJib24vZ2FsbGVyeS5weQorKysr KyBiL3d4L2xpYi9hZ3cvcmliYm9uL2dhbGxlcnkucHkKKytAQCAtODA1LDggKzgwNSw4IEBAIGRl ZiBEb0dldE5leHRTbWFsbGVyU2l6ZShzZWxmLCBkaXJlY3Rpb24sIHJlbGF0aXZlX3RvKToKKysg ICAgICAgICBpZiBjbGllbnQuR2V0V2lkdGgoKSA8IDAgb3IgY2xpZW50LkdldEhlaWdodCgpIDwg MDoKKysgICAgICAgICAgICAgcmV0dXJuIHJlbGF0aXZlX3RvCisrIAorKy0gICAgICAgIGNsaWVu dC54ID0gKGNsaWVudC54IC8gc2VsZi5fYml0bWFwX3BhZGRlZF9zaXplLngpICogc2VsZi5fYml0 bWFwX3BhZGRlZF9zaXplLngKKystICAgICAgICBjbGllbnQueSA9IChjbGllbnQueSAvIHNlbGYu X2JpdG1hcF9wYWRkZWRfc2l6ZS55KSAqIHNlbGYuX2JpdG1hcF9wYWRkZWRfc2l6ZS55CisrKyAg ICAgICAgY2xpZW50LnggPSAoY2xpZW50LnggLy8gc2VsZi5fYml0bWFwX3BhZGRlZF9zaXplLngp ICogc2VsZi5fYml0bWFwX3BhZGRlZF9zaXplLngKKysrICAgICAgICBjbGllbnQueSA9IChjbGll bnQueSAvLyBzZWxmLl9iaXRtYXBfcGFkZGVkX3NpemUueSkgKiBzZWxmLl9iaXRtYXBfcGFkZGVk X3NpemUueQorKyAKKysgICAgICAgICBzaXplID0gc2VsZi5fYXJ0LkdldEdhbGxlcnlTaXplKGRj LCBzZWxmLCB3eC5TaXplKCpjbGllbnQpKQorKyAgICAgICAgIG1pbmltdW0gPSBzZWxmLkdldE1p blNpemUoKQorK0BAIC04NDksOCArODQ5LDggQEAgZGVmIERvR2V0TmV4dExhcmdlclNpemUoc2Vs ZiwgZGlyZWN0aW9uLCByZWxhdGl2ZV90byk6CisrICAgICAgICAgZWxpZiBkaXJlY3Rpb24gPT0g d3guQk9USDoKKysgICAgICAgICAgICAgY2xpZW50LkluY0J5KHNlbGYuX2JpdG1hcF9wYWRkZWRf c2l6ZSkKKysgCisrLSAgICAgICAgY2xpZW50LnggPSAoY2xpZW50LnggLyBzZWxmLl9iaXRtYXBf cGFkZGVkX3NpemUueCkgKiBzZWxmLl9iaXRtYXBfcGFkZGVkX3NpemUueAorKy0gICAgICAgIGNs aWVudC55ID0gKGNsaWVudC55IC8gc2VsZi5fYml0bWFwX3BhZGRlZF9zaXplLnkpICogc2VsZi5f Yml0bWFwX3BhZGRlZF9zaXplLnkKKysrICAgICAgICBjbGllbnQueCA9IChjbGllbnQueCAvLyBz ZWxmLl9iaXRtYXBfcGFkZGVkX3NpemUueCkgKiBzZWxmLl9iaXRtYXBfcGFkZGVkX3NpemUueAor KysgICAgICAgIGNsaWVudC55ID0gKGNsaWVudC55IC8vIHNlbGYuX2JpdG1hcF9wYWRkZWRfc2l6 ZS55KSAqIHNlbGYuX2JpdG1hcF9wYWRkZWRfc2l6ZS55CisrIAorKyAgICAgICAgIHNpemUgPSBz ZWxmLl9hcnQuR2V0R2FsbGVyeVNpemUoZGMsIHNlbGYsIHd4LlNpemUoKmNsaWVudCkpCisrICAg ICAgICAgbWluaW11bSA9IHNlbGYuR2V0TWluU2l6ZSgpCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9h Z3cvcmliYm9uL3BhbmVsLnB5IGIvd3gvbGliL2Fndy9yaWJib24vcGFuZWwucHkKKytpbmRleCA3 OWZkOWJjNTguLjkwMWM3NjViNiAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L3JpYmJvbi9wYW5l bC5weQorKysrKyBiL3d4L2xpYi9hZ3cvcmliYm9uL3BhbmVsLnB5CisrQEAgLTU4NCwxMiArNTg0 LDEyIEBAIGRlZiBEb0dldE5leHRTbWFsbGVyU2l6ZShzZWxmLCBkaXJlY3Rpb24sIHJlbGF0aXZl X3RvKToKKysgICAgICAgICBtaW5pbXVtID0gd3guU2l6ZSgqc2VsZi5HZXRNaW5TaXplKCkpCisr IAorKyAgICAgICAgIGlmIGRpcmVjdGlvbiAmIHd4LkhPUklaT05UQUw6CisrLSAgICAgICAgICAg IGN1cnJlbnQueCA9IChjdXJyZW50LnggKiA0KSAvIDUKKysrICAgICAgICAgICAgY3VycmVudC54 ID0gKGN1cnJlbnQueCAqIDQpIC8vIDUKKysgICAgICAgICAgICAgaWYgY3VycmVudC54IDwgbWlu aW11bS54OgorKyAgICAgICAgICAgICAgICAgY3VycmVudC54ID0gbWluaW11bS54CisrIAorKyAg ICAgICAgIGlmIGRpcmVjdGlvbiAmIHd4LlZFUlRJQ0FMOgorKy0gICAgICAgICAgICBjdXJyZW50 LnkgPSAoY3VycmVudC55ICogNCkgLyA1CisrKyAgICAgICAgICAgIGN1cnJlbnQueSA9IChjdXJy ZW50LnkgKiA0KSAvLyA1CisrICAgICAgICAgICAgIGlmIGN1cnJlbnQueSA8IG1pbmltdW0ueToK KysgICAgICAgICAgICAgICAgIGN1cnJlbnQueSA9IG1pbmltdW0ueQorKyAKKytAQCAtNjY4LDEw ICs2NjgsMTAgQEAgZGVmIERvR2V0TmV4dExhcmdlclNpemUoc2VsZiwgZGlyZWN0aW9uLCByZWxh dGl2ZV90byk6CisrICAgICAgICAgY3VycmVudCA9IHd4LlNpemUoKnJlbGF0aXZlX3RvKQorKyAK KysgICAgICAgICBpZiBkaXJlY3Rpb24gJiB3eC5IT1JJWk9OVEFMOgorKy0gICAgICAgICAgICBj dXJyZW50LnggPSAoY3VycmVudC54ICogNSArIDMpIC8gNAorKysgICAgICAgICAgICBjdXJyZW50 LnggPSAoY3VycmVudC54ICogNSArIDMpIC8vIDQKKysgCisrICAgICAgICAgaWYgZGlyZWN0aW9u ICYgd3guVkVSVElDQUw6CisrLSAgICAgICAgICAgIGN1cnJlbnQueSA9IChjdXJyZW50LnkgKiA1 ICsgMykgLyA0CisrKyAgICAgICAgICAgIGN1cnJlbnQueSA9IChjdXJyZW50LnkgKiA1ICsgMykg Ly8gNAorKyAKKysgICAgICAgICByZXR1cm4gY3VycmVudAorKyAKKytAQCAtMTA3NiwyNSArMTA3 NiwyNSBAQCBkZWYgR2V0RXhwYW5kZWRQb3NpdGlvbihzZWxmLCBwYW5lbCwgZXhwYW5kZWRfc2l6 ZSwgZGlyZWN0aW9uKToKKysgICAgICAgICBwb3MgPSB3eC5Qb2ludCgpCisrIAorKyAgICAgICAg IGlmIGRpcmVjdGlvbiA9PSB3eC5OT1JUSDoKKystICAgICAgICAgICAgcG9zLnggPSBwYW5lbC5H ZXRYKCkgKyAocGFuZWwuR2V0V2lkdGgoKSAtIGV4cGFuZGVkX3NpemUuR2V0V2lkdGgoKSkgLyAy CisrKyAgICAgICAgICAgIHBvcy54ID0gcGFuZWwuR2V0WCgpICsgKHBhbmVsLkdldFdpZHRoKCkg LSBleHBhbmRlZF9zaXplLkdldFdpZHRoKCkpIC8vIDIKKysgICAgICAgICAgICAgcG9zLnkgPSBw YW5lbC5HZXRZKCkgLSBleHBhbmRlZF9zaXplLkdldEhlaWdodCgpCisrICAgICAgICAgICAgIHBy aW1hcnlfeCA9IFRydWUKKysgICAgICAgICAgICAgc2Vjb25kYXJ5X3kgPSAxCisrIAorKyAgICAg ICAgIGVsaWYgZGlyZWN0aW9uID09IHd4LkVBU1Q6CisrICAgICAgICAgICAgIHBvcy54ID0gcGFu ZWwuR2V0UmlnaHQoKQorKy0gICAgICAgICAgICBwb3MueSA9IHBhbmVsLkdldFkoKSArIChwYW5l bC5HZXRIZWlnaHQoKSAtIGV4cGFuZGVkX3NpemUuR2V0SGVpZ2h0KCkpIC8gMgorKysgICAgICAg ICAgICBwb3MueSA9IHBhbmVsLkdldFkoKSArIChwYW5lbC5HZXRIZWlnaHQoKSAtIGV4cGFuZGVk X3NpemUuR2V0SGVpZ2h0KCkpIC8vIDIKKysgICAgICAgICAgICAgc2Vjb25kYXJ5X3ggPSAtMQor KyAKKysgICAgICAgICBlbGlmIGRpcmVjdGlvbiA9PSB3eC5TT1VUSDoKKystICAgICAgICAgICAg cG9zLnggPSBwYW5lbC5HZXRYKCkgKyAocGFuZWwuR2V0V2lkdGgoKSAtIGV4cGFuZGVkX3NpemUu R2V0V2lkdGgoKSkgLyAyCisrKyAgICAgICAgICAgIHBvcy54ID0gcGFuZWwuR2V0WCgpICsgKHBh bmVsLkdldFdpZHRoKCkgLSBleHBhbmRlZF9zaXplLkdldFdpZHRoKCkpIC8vIDIKKysgICAgICAg ICAgICAgcG9zLnkgPSBwYW5lbC5HZXRCb3R0b20oKQorKyAgICAgICAgICAgICBwcmltYXJ5X3gg PSBUcnVlCisrICAgICAgICAgICAgIHNlY29uZGFyeV95ID0gLTEKKysgCisrICAgICAgICAgZWxz ZToKKysgICAgICAgICAgICAgcG9zLnggPSBwYW5lbC5HZXRYKCkgLSBleHBhbmRlZF9zaXplLkdl dFdpZHRoKCkKKystICAgICAgICAgICAgcG9zLnkgPSBwYW5lbC5HZXRZKCkgKyAocGFuZWwuR2V0 SGVpZ2h0KCkgLSBleHBhbmRlZF9zaXplLkdldEhlaWdodCgpKSAvIDIKKysrICAgICAgICAgICAg cG9zLnkgPSBwYW5lbC5HZXRZKCkgKyAocGFuZWwuR2V0SGVpZ2h0KCkgLSBleHBhbmRlZF9zaXpl LkdldEhlaWdodCgpKSAvLyAyCisrICAgICAgICAgICAgIHNlY29uZGFyeV94ID0gMQorKyAKKysg ICAgICAgICBleHBhbmRlZCA9IHd4LlJlY3QocG9zLCBleHBhbmRlZF9zaXplKQorK2RpZmYgLS1n aXQgYS93eC9saWIvYWd3L3JpYmJvbi90b29sYmFyLnB5IGIvd3gvbGliL2Fndy9yaWJib24vdG9v bGJhci5weQorK2luZGV4IDE3NzFjNjUwNi4uOGM2ZjhiNTIyIDEwMDY0NAorKy0tLSBhL3d4L2xp Yi9hZ3cvcmliYm9uL3Rvb2xiYXIucHkKKysrKysgYi93eC9saWIvYWd3L3JpYmJvbi90b29sYmFy LnB5CisrQEAgLTExNTksNyArMTE1OSw3IEBAIGRlZiBPblNpemUoc2VsZiwgZXZlbnQpOgorKyAK KysgICAgICAgICAjIFNldCBncm91cCB5IHBvc2l0aW9ucworKyAgICAgICAgIGZvciBncm91cCBp biBzZWxmLl9ncm91cHM6CisrLSAgICAgICAgICAgIGdyb3VwLnBvc2l0aW9uLnkgPSByb3d5cG9z W2dyb3VwLnBvc2l0aW9uLnldCisrKyAgICAgICAgICAgIGdyb3VwLnBvc2l0aW9uLnkgPSBpbnQo cm93eXBvc1tncm91cC5wb3NpdGlvbi55XSkKKysgCisrIAorKyAgICAgZGVmIEdldEJlc3RTaXpl Rm9yUGFyZW50U2l6ZShzZWxmLCBwYXJlbnRTaXplKToKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fn dy9zaGFwZWRidXR0b24ucHkgYi93eC9saWIvYWd3L3NoYXBlZGJ1dHRvbi5weQorK2luZGV4IGYw MTVkNGUzOS4uNDk1MjMzNjZhIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvc2hhcGVkYnV0dG9u LnB5CisrKysrIGIvd3gvbGliL2Fndy9zaGFwZWRidXR0b24ucHkKKytAQCAtNTY5LDkgKzU2OSw5 IEBAIGRlZiBEcmF3TWFpbkJ1dHRvbihzZWxmLCBkYywgd2lkdGgsIGhlaWdodCk6CisrICAgICAg ICAgICAgICAgICByZWN0MiA9IHcqbWFpbi8vc2Vjb25kYXJ5CisrIAorKyAgICAgICAgICAgICBp ZiBzZWxmLl9pc3VwOgorKy0gICAgICAgICAgICAgICAgaW1nID0gc2VsZi5fbWFpbmJ1dHRvbnVw LlNjYWxlKHJlY3QyLCByZWN0MykKKysrICAgICAgICAgICAgICAgIGltZyA9IHNlbGYuX21haW5i dXR0b251cC5TY2FsZShpbnQocmVjdDIpLCBpbnQocmVjdDMpKQorKyAgICAgICAgICAgICBlbHNl OgorKy0gICAgICAgICAgICAgICAgaW1nID0gc2VsZi5fbWFpbmJ1dHRvbmRvd24uU2NhbGUocmVj dDIsIHJlY3QzKQorKysgICAgICAgICAgICAgICAgaW1nID0gc2VsZi5fbWFpbmJ1dHRvbmRvd24u U2NhbGUoaW50KHJlY3QyKSwgaW50KHJlY3QzKSkKKysgCisrICAgICAgICAgYm1wID0gaW1nLkNv bnZlcnRUb0JpdG1hcCgpCisrIAorK0BAIC01OTksNyArNTk5LDcgQEAgZGVmIERyYXdNYWluQnV0 dG9uKHNlbGYsIGRjLCB3aWR0aCwgaGVpZ2h0KToKKysgICAgICAgICAgICAgICAgICAgICB5cG9z ID0gMAorKyAKKysgICAgICAgICAjIERyYXcgRmluYWxseSBUaGUgQml0bWFwCisrLSAgICAgICAg ZGMuRHJhd0JpdG1hcChibXAsIHhwb3MsIHlwb3MsIFRydWUpCisrKyAgICAgICAgZGMuRHJhd0Jp dG1hcChibXAsIGludCh4cG9zKSwgaW50KHlwb3MpLCBUcnVlKQorKyAKKysgICAgICAgICAjIFN0 b3JlIEJpdG1hcCBQb3NpdGlvbiBBbmQgU2l6ZSBUbyBEcmF3IEFuIEVsbGlwdGljYWwgRm9jdXMg SW5kaWNhdG9yCisrICAgICAgICAgc2VsZi5feHBvcyA9IHhwb3MKKytAQCAtNjQ2LDcgKzY0Niw3 IEBAIGRlZiBEcmF3TGFiZWwoc2VsZiwgZGMsIHdpZHRoLCBoZWlnaHQsIGR3PTAsIGRoPTApOgor KyAgICAgICAgICAgICB4cCA9IHhjIC0gKHR3Ly8yKSogY29zKGFuZ2xlKSAtICh0aC8vMikqc2lu KGFuZ2xlKQorKyAgICAgICAgICAgICB5cCA9IHljICsgKHR3Ly8yKSpzaW4oYW5nbGUpIC0gKHRo Ly8yKSpjb3MoYW5nbGUpCisrIAorKy0gICAgICAgICAgICBkYy5EcmF3Um90YXRlZFRleHQobGFi ZWwsIHhwICsgZHcsIHlwICsgZGggLCBhbmdsZSoxODAvcGkpCisrKyAgICAgICAgICAgIGRjLkRy YXdSb3RhdGVkVGV4dChsYWJlbCwgaW50KHhwICsgZHcpLCBpbnQoeXAgKyBkaCksIGFuZ2xlKjE4 MC9waSkKKysgCisrIAorKyAgICAgZGVmIERyYXdGb2N1c0luZGljYXRvcihzZWxmLCBkYywgd2lk dGgsIGhlaWdodCk6CisrQEAgLTY3Niw3ICs2NzYsNyBAQCBkZWYgRHJhd0ZvY3VzSW5kaWNhdG9y KHNlbGYsIGRjLCB3aWR0aCwgaGVpZ2h0KToKKysgICAgICAgICBlbHNlOgorKyAgICAgICAgICAg ICAjIFRoaXMgSXMgQW4gRWxsaXBzZQorKyAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJf eHBvcyIpOgorKy0gICAgICAgICAgICAgICAgZGMuRHJhd0VsbGlwc2Uoc2VsZi5feHBvcyArIDIs IHNlbGYuX3lwb3MgKyAyLCBzZWxmLl9pbWd4IC0gNCwgc2VsZi5faW1neSAtIDQpCisrKyAgICAg ICAgICAgICAgICBkYy5EcmF3RWxsaXBzZShpbnQoc2VsZi5feHBvcyArIDIpLCBpbnQoc2VsZi5f eXBvcyArIDIpLCBzZWxmLl9pbWd4IC0gNCwgc2VsZi5faW1neSAtIDQpCisrIAorKyAgICAgICAg IGRjLlNldExvZ2ljYWxGdW5jdGlvbih3eC5DT1BZKQorKyAKKytkaWZmIC0tZ2l0IGEvd3gvbGli L2Fndy9zcGVlZG1ldGVyLnB5IGIvd3gvbGliL2Fndy9zcGVlZG1ldGVyLnB5CisraW5kZXggZjE5 NmI1MWYyLi42MDY5MDFkMjcgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2Fndy9zcGVlZG1ldGVyLnB5 CisrKysrIGIvd3gvbGliL2Fndy9zcGVlZG1ldGVyLnB5CisrQEAgLTU4MCw4ICs1ODAsOCBAQCBk ZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgZGMuU2V0QmFja2dyb3VuZCh3eC5CcnVzaChz cGVlZGJhY2tncm91bmQpKQorKyAgICAgICAgIGRjLkNsZWFyKCkKKysgCisrLSAgICAgICAgY2Vu dGVyWCA9IHNlbGYuZmFjZUJpdG1hcC5HZXRXaWR0aCgpLzIKKystICAgICAgICBjZW50ZXJZID0g c2VsZi5mYWNlQml0bWFwLkdldEhlaWdodCgpLzIKKysrICAgICAgICBjZW50ZXJYID0gc2VsZi5m YWNlQml0bWFwLkdldFdpZHRoKCkvLzIKKysrICAgICAgICBjZW50ZXJZID0gc2VsZi5mYWNlQml0 bWFwLkdldEhlaWdodCgpLy8yCisrIAorKyAgICAgICAgIHNlbGYuQ2VudGVyWCA9IGNlbnRlclgK KysgICAgICAgICBzZWxmLkNlbnRlclkgPSBjZW50ZXJZCisrQEAgLTY4MSw3ICs2ODEsNyBAQCBk ZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgICAgICMgRHJhdyBUaGUgRmlsbGVyIChCb3Ro IEluICJBZHZhbmNlIiBBbmQgIlJldmVyc2UiIERpcmVjdGlvbnMpCisrIAorKyAgICAgICAgICAg ICBkYy5TZXRCcnVzaCh3eC5CcnVzaChmaWxsZXJjb2xvdXIpKQorKy0gICAgICAgICAgICBkYy5E cmF3QXJjKHhzMiwgeXMyLCB4ZTIsIHllMiwgY2VudGVyWCwgY2VudGVyWSkKKysrICAgICAgICAg ICAgZGMuRHJhd0FyYyh4czIsIHlzMiwgeGUyLCB5ZTIsIGludChjZW50ZXJYKSwgaW50KGNlbnRl clkpKQorKyAKKysgICAgICAgICAgICAgaWYgc2VsZi5fYWd3U3R5bGUgJiBTTV9EUkFXX1NFQ1RP UlMgPT0gMDoKKysgICAgICAgICAgICAgICAgIGRjLlNldEJydXNoKHd4LkJydXNoKHNwZWVkYmFj a2dyb3VuZCkpCisrQEAgLTk1Miw3ICs5NTIsNyBAQCBkZWYgRHJhdyhzZWxmLCBkYyk6CisrICAg ICAgICAgICAgICAgICAgICAgeSA9IHkgLSBoZWlnaHQvMi4wIC0gaGVpZ2h0KnNpbihhbmdpcykv Mi4wCisrICAgICAgICAgICAgICAgICAgICAgZmFuY3l0ZXh0LlJlbmRlclRvREMoZmFuY3lzdHIs IGRjLCB4LCB5KQorKyAgICAgICAgICAgICAgICAgZWxzZToKKystICAgICAgICAgICAgICAgICAg ICBkYy5EcmF3VGV4dChzdHJpbmdzLCB4LCB5KQorKysgICAgICAgICAgICAgICAgICAgIGRjLkRy YXdUZXh0KHN0cmluZ3MsIGludCh4KSwgaW50KHkpKQorKyAKKysgICAgICAgICAgICAgIyBUaGlz IElzIFRoZSBTbWFsbCBSZWN0YW5nbGUgLS0+IFRpY2sgTWFyaworKyAgICAgICAgICAgICByZWN0 YW5nbGUgPSBjb2xvdXJhbmdsZXNbaWldICsgcGkvMi4wCisrQEAgLTk2OSw2ICs5NjksNyBAQCBk ZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgICAgIHk0ID0geTMgKyAzKnNlbGYuc2NhbGUq c2lucmVjdAorKyAKKysgICAgICAgICAgICAgcG9pbnRzID0gWyh4MSwgeTEpLCAoeDIsIHkyKSwg KHg0LCB5NCksICh4MywgeTMpXQorKysgICAgICAgICAgICBwb2ludHMgPSBbKGludChwWzBdKSwg aW50KHBbMV0pKSBmb3IgcCBpbiBwb2ludHNdCisrIAorKyAgICAgICAgICAgICBkYy5EcmF3UG9s eWdvbihwb2ludHMpCisrIAorK0BAIC0xMDAzLDYgKzEwMDQsNyBAQCBkZWYgRHJhdyhzZWxmLCBk Yyk6CisrICAgICAgICAgICAgICAgICAgICAgICAgIHk0ID0geTMgKyBzZWxmLnNjYWxlKnNpbnJl Y3QKKysgCisrICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFsoeDEsIHkxKSwgKHgy LCB5MiksICh4NCwgeTQpLCAoeDMsIHkzKV0KKysrICAgICAgICAgICAgICAgICAgICAgICAgcG9p bnRzID0gWyhpbnQocFswXSksIGludChwWzFdKSkgZm9yIHAgaW4gcG9pbnRzXQorKyAKKysgICAg ICAgICAgICAgICAgICAgICAgICAgZGMuRHJhd1BvbHlnb24ocG9pbnRzKQorKyAKKytAQCAtMTAx Nyw3ICsxMDE5LDcgQEAgZGVmIERyYXcoc2VsZiwgZGMpOgorKyAgICAgICAgIGRjLlNldEJydXNo KHd4LlRSQU5TUEFSRU5UX0JSVVNIKQorKyAKKysgICAgICAgICBpZiBzZWxmLl9kcmF3YXJjOgor Ky0gICAgICAgICAgICBkYy5TZXRQZW4od3guUGVuKHNlbGYuR2V0QXJjQ29sb3VyKCksIDIuMCkp CisrKyAgICAgICAgICAgIGRjLlNldFBlbih3eC5QZW4oc2VsZi5HZXRBcmNDb2xvdXIoKSwgMikp CisrICAgICAgICAgICAgICMgSWYgSXQncyBOb3QgQSBDb21wbGV0ZSBDaXJjbGUsIERyYXcgVGhl IENvbm5lY3RpbmcgTGluZXMgQW5kIFRoZSBBcmMKKysgICAgICAgICAgICAgaWYgYWJzKGFicyhz dGFydGFuZ2xlIC0gZW5kYW5nbGUpIC0gMipwaSkgPiAxLjAvMTgwLjA6CisrICAgICAgICAgICAg ICAgICBkYy5EcmF3QXJjKHhzdGFydCwgeXN0YXJ0LCB4ZW5kLCB5ZW5kLCBjZW50ZXJYLCBjZW50 ZXJZKQorK0BAIC0xMDQ2LDcgKzEwNDgsNyBAQCBkZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAg ICAgICAgIG5ld3ggPSBjZW50ZXJYICsgMS41Km13KmNvcyhtaWRkbGVhbmdsZSkgLSBtdy8yLjAK KysgICAgICAgICAgICAgbmV3eSA9IGNlbnRlclkgLSAxLjUqbWgqc2luKG1pZGRsZWFuZ2xlKSAt IG1oLzIuMAorKyAgICAgICAgICAgICBkYy5TZXRUZXh0Rm9yZWdyb3VuZChtaWRkbGVjb2xvdXIp CisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0KG1pZGRsZXRleHQsIG5ld3gsIG5ld3kpCisrKyAg ICAgICAgICAgIGRjLkRyYXdUZXh0KG1pZGRsZXRleHQsIGludChuZXd4KSwgaW50KG5ld3kpKQor KyAKKysgICAgICAgICAjIEhlcmUgV2UgRHJhdyBUaGUgSWNvbiBJbiBUaGUgTWlkZGxlLCBOZWFy IFRoZSBTdGFydCBPZiBUaGUgQXJyb3cgKElmIFByZXNlbnQpCisrICAgICAgICAgIyBUaGlzIElz IExpa2UgVGhlICJGdWVsIiBJY29uIEluIFRoZSBDYXJzCisrQEAgLTEwNTQsOCArMTA1Niw4IEBA IGRlZiBEcmF3KHNlbGYsIGRjKToKKysgCisrICAgICAgICAgICAgIG1pZGRsZWljb24gPSBzZWxm LkdldE1pZGRsZUljb24oKQorKyAgICAgICAgICAgICBtaWRkbGV3aWR0aCwgbWlkZGxlaGVpZ2h0 ID0gc2VsZi5HZXRNaWRkbGVJY29uRGltZW5zKCkKKystICAgICAgICAgICAgbWlkZGxlaWNvbi5T ZXRXaWR0aChtaWRkbGV3aWR0aCpzZWxmLnNjYWxlKQorKy0gICAgICAgICAgICBtaWRkbGVpY29u LlNldEhlaWdodChtaWRkbGVoZWlnaHQqc2VsZi5zY2FsZSkKKysrICAgICAgICAgICAgbWlkZGxl aWNvbi5TZXRXaWR0aChpbnQobWlkZGxld2lkdGgqc2VsZi5zY2FsZSkpCisrKyAgICAgICAgICAg IG1pZGRsZWljb24uU2V0SGVpZ2h0KGludChtaWRkbGVoZWlnaHQqc2VsZi5zY2FsZSkpCisrICAg ICAgICAgICAgIG1pZGRsZWFuZ2xlID0gKHN0YXJ0YW5nbGUgKyBlbmRhbmdsZSkvMi4wCisrIAor KyAgICAgICAgICAgICBtdyA9IG1pZGRsZWljb24uR2V0V2lkdGgoKQorK0BAIC0xMDY0LDcgKzEw NjYsNyBAQCBkZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgICAgIG5ld3ggPSBjZW50ZXJY ICsgMS41Km13KmNvcyhtaWRkbGVhbmdsZSkgLSBtdy8yLjAKKysgICAgICAgICAgICAgbmV3eSA9 IGNlbnRlclkgLSAxLjUqbWgqc2luKG1pZGRsZWFuZ2xlKSAtIG1oLzIuMAorKyAKKystICAgICAg ICAgICAgZGMuRHJhd0ljb24obWlkZGxlaWNvbiwgbmV3eCwgbmV3eSkKKysrICAgICAgICAgICAg ZGMuRHJhd0ljb24obWlkZGxlaWNvbiwgaW50KG5ld3gpLCBpbnQobmV3eSkpCisrIAorKyAgICAg ICAgICAgICAjIFJlc3RvcmUgSWNvbiBEaW1lbnNpb24sIElmIE5vdCBTb21ldGhpbmcgU3RyYW5n ZSBIYXBwZW5zCisrICAgICAgICAgICAgIG1pZGRsZWljb24uU2V0V2lkdGgobWlkZGxld2lkdGgp CisrQEAgLTExMDksNTMgKzExMTEsNjEgQEAgZGVmIERyYXcoc2VsZiwgZGMpOgorKyAgICAgICAg ICAgICAgICAgaWYgaGFuZHN0eWxlID09ICJBcnJvdyI6CisrICAgICAgICAgICAgICAgICAgICAg IyBEcmF3IFRoZSBTaGFkb3cKKysgICAgICAgICAgICAgICAgICAgICBzaGFkb3djb2xvdXIgPSBz ZWxmLkdldFNoYWRvd0NvbG91cigpCisrLSAgICAgICAgICAgICAgICAgICAgZGMuU2V0UGVuKHd4 LlBlbihzaGFkb3djb2xvdXIsIDUqbG9nKHNlbGYuc2NhbGUrMSkpKQorKysgICAgICAgICAgICAg ICAgICAgIGRjLlNldFBlbih3eC5QZW4oc2hhZG93Y29sb3VyLCBpbnQoNSpsb2coc2VsZi5zY2Fs ZSsxKSkpKQorKyAgICAgICAgICAgICAgICAgICAgIGRjLlNldEJydXNoKHd4LkJydXNoKHNoYWRv d2NvbG91cikpCisrICAgICAgICAgICAgICAgICAgICAgc2hhZG93ZGlzdGFuY2UgPSAyLjAqc2Vs Zi5zY2FsZQorKy0gICAgICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKG5ld3ggKyBzaGFkb3dk aXN0YW5jZSwgbmV3eSArIHNoYWRvd2Rpc3RhbmNlLAorKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHhhcnIgKyBzaGFkb3dkaXN0YW5jZSwgeWFyciArIHNoYWRvd2Rpc3RhbmNlKQor Ky0KKystICAgICAgICAgICAgICAgICAgICBkYy5EcmF3UG9seWdvbihbKHgxK3NoYWRvd2Rpc3Rh bmNlLCB5MStzaGFkb3dkaXN0YW5jZSksCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICh4MitzaGFkb3dkaXN0YW5jZSwgeTIrc2hhZG93ZGlzdGFuY2UpLAorKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeDMrc2hhZG93ZGlzdGFuY2UsIHkzK3NoYWRv d2Rpc3RhbmNlKV0pCisrKyAgICAgICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoaW50KG5ld3gg KyBzaGFkb3dkaXN0YW5jZSksIGludChuZXd5ICsgc2hhZG93ZGlzdGFuY2UpLAorKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGludCh4YXJyICsgc2hhZG93ZGlzdGFuY2UpLCBpbnQo eWFyciArIHNoYWRvd2Rpc3RhbmNlKSkKKysrCisrKyAgICAgICAgICAgICAgICAgICAgcG9pbnRz ID0gWyh4MStzaGFkb3dkaXN0YW5jZSwgeTErc2hhZG93ZGlzdGFuY2UpLAorKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAoeDIrc2hhZG93ZGlzdGFuY2UsIHkyK3NoYWRvd2Rpc3RhbmNl KSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHgzK3NoYWRvd2Rpc3RhbmNlLCB5 MytzaGFkb3dkaXN0YW5jZSldCisrKyAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gWyhpbnQo cFswXSksIGludChwWzFdKSkgZm9yIHAgaW4gcG9pbnRzXQorKysgICAgICAgICAgICAgICAgICAg IGRjLkRyYXdQb2x5Z29uKHBvaW50cykKKysgICAgICAgICAgICAgICAgIGVsc2U6CisrICAgICAg ICAgICAgICAgICAgICAgIyBEcmF3IFRoZSBTaGFkb3cKKysgICAgICAgICAgICAgICAgICAgICBz aGFkb3djb2xvdXIgPSBzZWxmLkdldFNoYWRvd0NvbG91cigpCisrICAgICAgICAgICAgICAgICAg ICAgZGMuU2V0QnJ1c2god3guQnJ1c2goc2hhZG93Y29sb3VyKSkKKystICAgICAgICAgICAgICAg ICAgICBkYy5TZXRQZW4od3guUGVuKHNoYWRvd2NvbG91ciwgMS4wKSkKKysrICAgICAgICAgICAg ICAgICAgICBkYy5TZXRQZW4od3guUGVuKHNoYWRvd2NvbG91ciwgMSkpCisrICAgICAgICAgICAg ICAgICAgICAgc2hhZG93ZGlzdGFuY2UgPSAxLjUqc2VsZi5zY2FsZQorKyAKKystICAgICAgICAg ICAgICAgICAgICBkYy5EcmF3UG9seWdvbihbKHgxK3NoYWRvd2Rpc3RhbmNlLCB5MStzaGFkb3dk aXN0YW5jZSksCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4MitzaGFk b3dkaXN0YW5jZSwgeTIrc2hhZG93ZGlzdGFuY2UpLAorKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAoeDMrc2hhZG93ZGlzdGFuY2UsIHkzK3NoYWRvd2Rpc3RhbmNlKSwKKyst ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHg0K3NoYWRvd2Rpc3RhbmNlLCB5 NCtzaGFkb3dkaXN0YW5jZSldKQorKysgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFsoeDEr c2hhZG93ZGlzdGFuY2UsIHkxK3NoYWRvd2Rpc3RhbmNlKSwKKysrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHgyK3NoYWRvd2Rpc3RhbmNlLCB5MitzaGFkb3dkaXN0YW5jZSksCisrKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4MytzaGFkb3dkaXN0YW5jZSwgeTMrc2hhZG93 ZGlzdGFuY2UpLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoeDQrc2hhZG93ZGlz dGFuY2UsIHk0K3NoYWRvd2Rpc3RhbmNlKV0KKysrICAgICAgICAgICAgICAgICAgICBwb2ludHMg PSBbKGludChwWzBdKSwgaW50KHBbMV0pKSBmb3IgcCBpbiBwb2ludHNdCisrKyAgICAgICAgICAg ICAgICAgICAgZGMuRHJhd1BvbHlnb24ocG9pbnRzKQorKyAKKysgICAgICAgICAgICAgaWYgaGFu ZHN0eWxlID09ICJBcnJvdyI6CisrIAorKy0gICAgICAgICAgICAgICAgZGMuU2V0UGVuKHd4LlBl bihoYW5kY29sb3VyLCAxLjUpKQorKysgICAgICAgICAgICAgICAgZGMuU2V0UGVuKHd4LlBlbiho YW5kY29sb3VyLCAxKSkKKysgCisrICAgICAgICAgICAgICAgICAjIERyYXcgVGhlIFNtYWxsIENp cmNsZSBJbiBUaGUgQ2VudGVyIC0tPiBUaGUgSGFuZCAiSG9sZGVyIgorKyAgICAgICAgICAgICAg ICAgZGMuU2V0QnJ1c2god3guQnJ1c2goc3BlZWRiYWNrZ3JvdW5kKSkKKystICAgICAgICAgICAg ICAgIGRjLkRyYXdDaXJjbGUoY2VudGVyWCwgY2VudGVyWSwgNCpzZWxmLnNjYWxlKQorKysgICAg ICAgICAgICAgICAgZGMuRHJhd0NpcmNsZShjZW50ZXJYLCBjZW50ZXJZLCBpbnQoNCpzZWxmLnNj YWxlKSkKKysgCisrLSAgICAgICAgICAgICAgICBkYy5TZXRQZW4od3guUGVuKGhhbmRjb2xvdXIs IDUqbG9nKHNlbGYuc2NhbGUrMSkpKQorKysgICAgICAgICAgICAgICAgZGMuU2V0UGVuKHd4LlBl bihoYW5kY29sb3VyLCBpbnQoNSpsb2coc2VsZi5zY2FsZSsxKSkpKQorKyAgICAgICAgICAgICAg ICAgIyBEcmF3IFRoZSAiSGFuZCIsIEFuIEFycm93CisrLSAgICAgICAgICAgICAgICBkYy5EcmF3 TGluZShuZXd4LCBuZXd5LCB4YXJyLCB5YXJyKQorKysgICAgICAgICAgICAgICAgZGMuRHJhd0xp bmUoaW50KG5ld3gpLCBpbnQobmV3eSksIGludCh4YXJyKSwgaW50KHlhcnIpKQorKyAKKysgICAg ICAgICAgICAgICAgICMgRHJhdyBUaGUgQXJyb3cgUG9pbnRlcgorKyAgICAgICAgICAgICAgICAg ZGMuU2V0QnJ1c2god3guQnJ1c2goaGFuZGNvbG91cikpCisrLSAgICAgICAgICAgICAgICBkYy5E cmF3UG9seWdvbihbKHgxLCB5MSksICh4MiwgeTIpLCAoeDMsIHkzKV0pCisrKyAgICAgICAgICAg ICAgICBwb2ludHMgPSBbKHgxLCB5MSksICh4MiwgeTIpLCAoeDMsIHkzKV0KKysrICAgICAgICAg ICAgICAgIHBvaW50cyA9IFsoaW50KHBbMF0pLCBpbnQocFsxXSkpIGZvciBwIGluIHBvaW50c10K KysrICAgICAgICAgICAgICAgIGRjLkRyYXdQb2x5Z29uKHBvaW50cykKKysgCisrICAgICAgICAg ICAgIGVsc2U6CisrIAorKyAgICAgICAgICAgICAgICAgIyBEcmF3IFRoZSBIYW5kIFBvaW50ZXIK KystICAgICAgICAgICAgICAgIGRjLlNldFBlbih3eC5QZW4oaGFuZGNvbG91ciwgMS41KSkKKysr ICAgICAgICAgICAgICAgIGRjLlNldFBlbih3eC5QZW4oaGFuZGNvbG91ciwgMSkpCisrICAgICAg ICAgICAgICAgICBkYy5TZXRCcnVzaCh3eC5CcnVzaChoYW5kY29sb3VyKSkKKystICAgICAgICAg ICAgICAgIGRjLkRyYXdQb2x5Z29uKFsoeDEsIHkxKSwgKHgyLCB5MiksICh4MywgeTMpLCAoeDQs IHk0KV0pCisrKyAgICAgICAgICAgICAgICBwb2ludHMgPSBbKHgxLCB5MSksICh4MiwgeTIpLCAo eDMsIHkzKSwgKHg0LCB5NCldCisrKyAgICAgICAgICAgICAgICBwb2ludHMgPSBbKGludChwWzBd KSwgaW50KHBbMV0pKSBmb3IgcCBpbiBwb2ludHNdCisrKyAgICAgICAgICAgICAgICBkYy5EcmF3 UG9seWdvbihwb2ludHMpCisrIAorKyAgICAgICAgICAgICAgICAgIyBEcmF3IFRoZSBTbWFsbCBD aXJjbGUgSW4gVGhlIENlbnRlciAtLT4gVGhlIEhhbmQgIkhvbGRlciIKKysgICAgICAgICAgICAg ICAgIGRjLlNldEJydXNoKHd4LkJydXNoKHNwZWVkYmFja2dyb3VuZCkpCisrLSAgICAgICAgICAg ICAgICBkYy5EcmF3Q2lyY2xlKGNlbnRlclgsIGNlbnRlclksIDQqc2VsZi5zY2FsZSkKKysrICAg ICAgICAgICAgICAgIGRjLkRyYXdDaXJjbGUoY2VudGVyWCwgY2VudGVyWSwgaW50KDQqc2VsZi5z Y2FsZSkpCisrIAorKyAKKysgICAgIGRlZiBTZXRJbnRlcnZhbHMoc2VsZiwgaW50ZXJ2YWxzPU5v bmUpOgorK0BAIC0xNTI3LDcgKzE1MzcsNyBAQCBkZWYgU2V0TWlkZGxlVGV4dEZvbnQoc2VsZiwg Zm9udD1Ob25lKToKKysgCisrICAgICAgICAgaWYgZm9udCBpcyBOb25lOgorKyAgICAgICAgICAg ICBzZWxmLl9taWRkbGV0ZXh0Zm9udCA9IHd4LkZvbnQoMSwgd3guRk9OVEZBTUlMWV9TV0lTUywg d3guRk9OVFNUWUxFX05PUk1BTCwgd3guRk9OVFdFSUdIVF9CT0xELCBGYWxzZSkKKystICAgICAg ICAgICAgc2VsZi5fbWlkZGxldGV4dHNpemUgPSAxMC4wCisrKyAgICAgICAgICAgIHNlbGYuX21p ZGRsZXRleHRzaXplID0gMTAKKysgICAgICAgICAgICAgc2VsZi5fbWlkZGxldGV4dGZvbnQuU2V0 UG9pbnRTaXplKHNlbGYuX21pZGRsZXRleHRzaXplKQorKyAgICAgICAgIGVsc2U6CisrICAgICAg ICAgICAgIHNlbGYuX21pZGRsZXRleHRmb250ID0gZm9udAorK0BAIC0xNTk5LDcgKzE2MDksNyBA QCBkZWYgQ2lyY2xlQ29vcmRzKHNlbGYsIHJhZGl1cywgYW5nbGUsIGNlbnRlclgsIGNlbnRlclkp OgorKyAgICAgICAgIHggPSByYWRpdXMqY29zKGFuZ2xlKSArIGNlbnRlclgKKysgICAgICAgICB5 ID0gcmFkaXVzKnNpbihhbmdsZSkgKyBjZW50ZXJZCisrIAorKy0gICAgICAgIHJldHVybiB4LCB5 CisrKyAgICAgICAgcmV0dXJuIGludCh4KSwgaW50KHkpCisrIAorKyAKKysgICAgIGRlZiBHZXRJ bnRlcnNlY3Rpb24oc2VsZiwgY3VycmVudCwgaW50ZXJ2YWxzKToKKytkaWZmIC0tZ2l0IGEvd3gv bGliL2Fndy9zdXBlcnRvb2x0aXAucHkgYi93eC9saWIvYWd3L3N1cGVydG9vbHRpcC5weQorK2lu ZGV4IGE5MmNlMTBkMS4uY2QwZjBjOWY3IDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvc3VwZXJ0 b29sdGlwLnB5CisrKysrIGIvd3gvbGliL2Fndy9zdXBlcnRvb2x0aXAucHkKKytAQCAtMjk1LDgg KzI5NSw4IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgCisrICAgICAgICAgIyBHZXQg dGhlIHVzZXIgb3B0aW9ucyBmb3IgaGVhZGVyLCBiaXRtYXBzIGV0Yy4uLgorKyAgICAgICAgIGRy YXdIZWFkZXIsIGRyYXdGb290ZXIgPSBjbGFzc1BhcmVudC5HZXREcmF3SGVhZGVyTGluZSgpLCBj bGFzc1BhcmVudC5HZXREcmF3Rm9vdGVyTGluZSgpCisrLSAgICAgICAgdG9wUmVjdCA9IHd4LlJl Y3QoZnJhbWVSZWN0LngsIGZyYW1lUmVjdC55LCBmcmFtZVJlY3Qud2lkdGgsIGZyYW1lUmVjdC5o ZWlnaHQvMikKKystICAgICAgICBib3R0b21SZWN0ID0gd3guUmVjdChmcmFtZVJlY3QueCwgZnJh bWVSZWN0LnkrZnJhbWVSZWN0LmhlaWdodC8yLCBmcmFtZVJlY3Qud2lkdGgsIGZyYW1lUmVjdC5o ZWlnaHQvMisxKQorKysgICAgICAgIHRvcFJlY3QgPSB3eC5SZWN0KGZyYW1lUmVjdC54LCBmcmFt ZVJlY3QueSwgZnJhbWVSZWN0LndpZHRoLCBmcmFtZVJlY3QuaGVpZ2h0Ly8yKQorKysgICAgICAg IGJvdHRvbVJlY3QgPSB3eC5SZWN0KGZyYW1lUmVjdC54LCBmcmFtZVJlY3QueStmcmFtZVJlY3Qu aGVpZ2h0Ly8yLCBmcmFtZVJlY3Qud2lkdGgsIGZyYW1lUmVjdC5oZWlnaHQvLzIrMSkKKysgICAg ICAgICAjIEZpbGwgdGhlIHRyaXBsZS1ncmFkaWVudAorKyAgICAgICAgIGRjLkdyYWRpZW50Rmls bExpbmVhcih0b3BSZWN0LCB0b3BDb2xvdXIsIG1pZGRsZUNvbG91ciwgd3guU09VVEgpCisrICAg ICAgICAgZGMuR3JhZGllbnRGaWxsTGluZWFyKGJvdHRvbVJlY3QsIG1pZGRsZUNvbG91ciwgYm90 dG9tQ29sb3VyLCB3eC5TT1VUSCkKKytAQCAtMzI0LDkgKzMyNCw5IEBAIGRlZiBPblBhaW50KHNl bGYsIGV2ZW50KToKKysgICAgICAgICBub3JtYWxUZXh0ID0gY2xhc3NQYXJlbnQuR2V0VGV4dENv bG91cigpCisrICAgICAgICAgaWYgaGVhZGVyOgorKyAgICAgICAgICAgICBkYy5TZXRUZXh0Rm9y ZWdyb3VuZChub3JtYWxUZXh0KQorKy0gICAgICAgICAgICBkYy5EcmF3VGV4dChoZWFkZXIsIGJt cFhQb3MrYm1wV2lkdGgrc2VsZi5fc3BhY2luZywgKGhlaWdodC10ZXh0SGVpZ2h0K3NlbGYuX3Nw YWNpbmcpLzIpCisrKyAgICAgICAgICAgIGRjLkRyYXdUZXh0KGhlYWRlciwgYm1wWFBvcytibXBX aWR0aCtzZWxmLl9zcGFjaW5nLCAoaGVpZ2h0LXRleHRIZWlnaHQrc2VsZi5fc3BhY2luZykvLzIp CisrICAgICAgICAgaWYgaGVhZGVyQm1wIGFuZCBoZWFkZXJCbXAuSXNPaygpOgorKy0gICAgICAg ICAgICBkYy5EcmF3Qml0bWFwKGhlYWRlckJtcCwgYm1wWFBvcywgKGhlaWdodC1ibXBIZWlnaHQr c2VsZi5fc3BhY2luZykvMiwgVHJ1ZSkKKysrICAgICAgICAgICAgZGMuRHJhd0JpdG1hcChoZWFk ZXJCbXAsIGJtcFhQb3MsIChoZWlnaHQtYm1wSGVpZ2h0K3NlbGYuX3NwYWNpbmcpLy8yLCBUcnVl KQorKyAKKysgICAgICAgICBpZiBoZWFkZXIgb3IgKGhlYWRlckJtcCBhbmQgaGVhZGVyQm1wLklz T2soKSk6CisrICAgICAgICAgICAgIHlQb3MgKz0gaGVpZ2h0CisrQEAgLTM3Niw3ICszNzYsNyBA QCBkZWYgT25QYWludChzZWxmLCBldmVudCk6CisrICAgICAgICAgICAgICAgICBtZXNzYWdlSGVp Z2h0ICs9IHRleHRIZWlnaHQKKysgCisrICAgICAgICAgICAgICAgICB4VGV4dCA9IChibXBXaWR0 aCArIDIgKiBzZWxmLl9zcGFjaW5nKSBpZiBibXBXaWR0aCA+IDAgZWxzZSBzZWxmLl9zcGFjaW5n CisrLSAgICAgICAgICAgICAgICB5VGV4dCArPSB0ZXh0SGVpZ2h0LzIrc2VsZi5fc3BhY2luZwor KysgICAgICAgICAgICAgICAgeVRleHQgKz0gdGV4dEhlaWdodC8vMitzZWxmLl9zcGFjaW5nCisr ICAgICAgICAgICAgICAgICBtYXhXaWR0aCA9IG1heCh4VGV4dCArIHRleHRXaWR0aCArIHNlbGYu X3NwYWNpbmcsIG1heFdpZHRoKQorKyAgICAgICAgICAgICAgICAgZGMuRHJhd1RleHQobGluZSwg eFRleHQsIHlUZXh0KQorKyAgICAgICAgICAgICAgICAgaWYgaXNMaW5rOgorK0BAIC00MTIsOCAr NDEyLDggQEAgZGVmIE9uUGFpbnQoc2VsZiwgZXZlbnQpOgorKyAgICAgICAgICAgICBpZiBkcmF3 Rm9vdGVyOgorKyAgICAgICAgICAgICAgICAgIyBEcmF3IHRoZSBzZXBhcmF0b3IgbGluZSBiZWZv cmUgdGhlIGZvb3RlcgorKyAgICAgICAgICAgICAgICAgZGMuU2V0UGVuKHd4LkdSRVlfUEVOKQor Ky0gICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoc2VsZi5fc3BhY2luZywgeVBvcy1zZWxmLl9z cGFjaW5nLzIrdG9BZGQsCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aC1zZWxm Ll9zcGFjaW5nLCB5UG9zLXNlbGYuX3NwYWNpbmcvMit0b0FkZCkKKysrICAgICAgICAgICAgICAg IGRjLkRyYXdMaW5lKHNlbGYuX3NwYWNpbmcsIHlQb3Mtc2VsZi5fc3BhY2luZy8vMit0b0FkZCwK KysrICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoLXNlbGYuX3NwYWNpbmcsIHlQb3Mt c2VsZi5fc3BhY2luZy8vMit0b0FkZCkKKysgICAgICAgICAjIERyYXcgdGhlIGZvb3RlciBhbmQg Zm9vdGVyIGJpdG1hcCAoaWYgYW55KQorKyAgICAgICAgIGRjLlNldFRleHRGb3JlZ3JvdW5kKG5v cm1hbFRleHQpCisrICAgICAgICAgaGVpZ2h0ID0gbWF4KHRleHRIZWlnaHQsIGJtcEhlaWdodCkK KytAQCAtNDI0LDcgKzQyNCw3IEBAIGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgICAgICAg ICAgICAgbWF4V2lkdGggPSBtYXgoYm1wWFBvcyArIGJtcFdpZHRoICsgKHNlbGYuX3NwYWNpbmcq MikgKyB0ZXh0V2lkdGgsIG1heFdpZHRoKQorKyAgICAgICAgIGlmIGZvb3RlckJtcCBhbmQgZm9v dGVyQm1wLklzT2soKToKKysgICAgICAgICAgICAgdG9BZGQgPSAoaGVpZ2h0IC0gYm1wSGVpZ2h0 ICsgc2VsZi5fc3BhY2luZykgLyAyCisrLSAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoZm9vdGVy Qm1wLCBibXBYUG9zLCB5UG9zICsgdG9BZGQsIFRydWUpCisrKyAgICAgICAgICAgIGRjLkRyYXdC aXRtYXAoZm9vdGVyQm1wLCBibXBYUG9zLCBpbnQoeVBvcyArIHRvQWRkKSwgVHJ1ZSkKKysgICAg ICAgICAgICAgbWF4V2lkdGggPSBtYXgoZm9vdGVyQm1wLkdldFNpemUoKS5HZXRXaWR0aCgpICsg Ym1wWFBvcywgbWF4V2lkdGgpCisrIAorKyAgICAgICAgIG1heEhlaWdodCA9IHlQb3MgKyBoZWln aHQgKyB0b0FkZAorK0BAIC04MTUsNyArODE1LDcgQEAgZGVmIFNldFN0YXJ0RGVsYXkoc2VsZiwg ZGVsYXk9MSk6CisrICAgICAgICAgOnBhcmFtIGBkZWxheWA6IHRoZSBkZWxheSBpbiBzZWNvbmRz LgorKyAgICAgICAgICIiIgorKyAKKystICAgICAgICBzZWxmLl9zdGFydERlbGF5VGltZSA9IGZs b2F0KGRlbGF5KQorKysgICAgICAgIHNlbGYuX3N0YXJ0RGVsYXlUaW1lID0gaW50KGRlbGF5KQor KyAKKysgCisrICAgICBkZWYgR2V0U3RhcnREZWxheShzZWxmKToKKytAQCAtODMxLDcgKzgzMSw3 IEBAIGRlZiBTZXRFbmREZWxheShzZWxmLCBkZWxheT0xZTYpOgorKyAgICAgICAgIDpwYXJhbSBg ZGVsYXlgOiB0aGUgZGVsYXkgaW4gc2Vjb25kcy4KKysgICAgICAgICAiIiIKKysgCisrLSAgICAg ICAgc2VsZi5fZW5kRGVsYXlUaW1lID0gZmxvYXQoZGVsYXkpCisrKyAgICAgICAgc2VsZi5fZW5k RGVsYXlUaW1lID0gaW50KGRlbGF5KQorKyAKKysgCisrICAgICBkZWYgR2V0RW5kRGVsYXkoc2Vs Zik6CisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvdG9hc3RlcmJveC5weSBiL3d4L2xpYi9hZ3cv dG9hc3RlcmJveC5weQorK2luZGV4IGI3MzQyOWRkMi4uOGVmYjU4NjliIDEwMDY0NAorKy0tLSBh L3d4L2xpYi9hZ3cvdG9hc3RlcmJveC5weQorKysrKyBiL3d4L2xpYi9hZ3cvdG9hc3RlcmJveC5w eQorK0BAIC0xMzE2LDExICsxMzE2LDExIEBAIGRlZiBfZ2V0VGV4dENvb3JkcyhzZWxmLCBkYyk6 CisrICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6CisrICAgICAgICAgICAgIHcsIGggPSBkYy5H ZXRUZXh0RXh0ZW50KGxpbmUpCisrICAgICAgICAgICAgIGZoICs9IGggKyB0ZXh0UGFkZGluZwor Ky0gICAgICAgIHkgPSAodGggLSBmaCkgLyAyOyBjb29yZHMgPSBbXQorKysgICAgICAgIHkgPSAo dGggLSBmaCkgLy8gMjsgY29vcmRzID0gW10KKysgCisrICAgICAgICAgZm9yIGxpbmUgaW4gbGlu ZXM6CisrICAgICAgICAgICAgIHcsIGggPSBkYy5HZXRUZXh0RXh0ZW50KGxpbmUpCisrLSAgICAg ICAgICAgIHggPSAodHcgLSB3KSAvIDIKKysrICAgICAgICAgICAgeCA9ICh0dyAtIHcpIC8vIDIK KysgICAgICAgICAgICAgY29vcmRzLmFwcGVuZCgoeCwgeSkpCisrICAgICAgICAgICAgIHkgKz0g aCArIHRleHRQYWRkaW5nCisrIAorK2RpZmYgLS1naXQgYS93eC9saWIvYWd3L3VsdGltYXRlbGlz dGN0cmwucHkgYi93eC9saWIvYWd3L3VsdGltYXRlbGlzdGN0cmwucHkKKytpbmRleCAxNGZjNDFm ODYuLmNhYTVlNWNmNCAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L3VsdGltYXRlbGlzdGN0cmwu cHkKKysrKysgYi93eC9saWIvYWd3L3VsdGltYXRlbGlzdGN0cmwucHkKKytAQCAtOTE0LDcgKzkx NCw3IEBAIGRlZiBEcmF3KHNlbGYsIGluZGV4LCBkYywgeCwgeSwgZmxhZ3MsIHNvbGlkQmFja2dy b3VuZD1UcnVlKToKKysgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJXcm9uZyBpbmRleCBp biBpbWFnZSBsaXN0IikKKysgCisrICAgICAgICAgYm1wID0gc2VsZi5faW1hZ2VzW2luZGV4XQor Ky0gICAgICAgIGRjLkRyYXdCaXRtYXAoYm1wLCB4LCB5LCAoZmxhZ3MgJiB3eC5JTUFHRUxJU1Rf RFJBV19UUkFOU1BBUkVOVCkgPiAwKQorKysgICAgICAgIGRjLkRyYXdCaXRtYXAoYm1wLCB4LCBp bnQoeSksIChmbGFncyAmIHd4LklNQUdFTElTVF9EUkFXX1RSQU5TUEFSRU5UKSA+IDApCisrIAor KyAgICAgICAgIHJldHVybiBUcnVlCisrIAorK0BAIC00MDIyLDcgKzQwMjIsNyBAQCBkZWYgU2V0 UG9zaXRpb24oc2VsZiwgeCwgeSwgc3BhY2luZyk6CisrIAorKyAgICAgICAgICAgICBpZiBpdGVt Lkhhc0ltYWdlKCk6CisrIAorKy0gICAgICAgICAgICAgICAgc2VsZi5fZ2kuX3JlY3RJY29uLngg PSBzZWxmLl9naS5fcmVjdEFsbC54ICsgNCArIChzZWxmLl9naS5fcmVjdEFsbC53aWR0aCAtIHNl bGYuX2dpLl9yZWN0SWNvbi53aWR0aCkvMgorKysgICAgICAgICAgICAgICAgc2VsZi5fZ2kuX3Jl Y3RJY29uLnggPSBzZWxmLl9naS5fcmVjdEFsbC54ICsgNCArIChzZWxmLl9naS5fcmVjdEFsbC53 aWR0aCAtIHNlbGYuX2dpLl9yZWN0SWNvbi53aWR0aCkvLzIKKysgICAgICAgICAgICAgICAgIHNl bGYuX2dpLl9yZWN0SWNvbi55ID0gc2VsZi5fZ2kuX3JlY3RBbGwueSArIDQKKysgCisrICAgICAg ICAgICAgIGlmIGl0ZW0uSGFzVGV4dCgpOgorK0BAIC00MDMwLDcgKzQwMzAsNyBAQCBkZWYgU2V0 UG9zaXRpb24oc2VsZiwgeCwgeSwgc3BhY2luZyk6CisrICAgICAgICAgICAgICAgICBpZiBzZWxm Ll9naS5fcmVjdExhYmVsLndpZHRoID4gc3BhY2luZzoKKysgICAgICAgICAgICAgICAgICAgICBz ZWxmLl9naS5fcmVjdExhYmVsLnggPSBzZWxmLl9naS5fcmVjdEFsbC54ICsgMgorKyAgICAgICAg ICAgICAgICAgZWxzZToKKystICAgICAgICAgICAgICAgICAgICBzZWxmLl9naS5fcmVjdExhYmVs LnggPSBzZWxmLl9naS5fcmVjdEFsbC54ICsgMiArIChzcGFjaW5nLzIpIC0gKHNlbGYuX2dpLl9y ZWN0TGFiZWwud2lkdGgvMikKKysrICAgICAgICAgICAgICAgICAgICBzZWxmLl9naS5fcmVjdExh YmVsLnggPSBzZWxmLl9naS5fcmVjdEFsbC54ICsgMiArIChzcGFjaW5nLy8yKSAtIChzZWxmLl9n aS5fcmVjdExhYmVsLndpZHRoLy8yKQorKyAKKysgICAgICAgICAgICAgICAgIHNlbGYuX2dpLl9y ZWN0TGFiZWwueSA9IHNlbGYuX2dpLl9yZWN0QWxsLnkgKyBzZWxmLl9naS5fcmVjdEFsbC5oZWln aHQgKyAyIC0gc2VsZi5fZ2kuX3JlY3RMYWJlbC5oZWlnaHQKKysgICAgICAgICAgICAgICAgIHNl bGYuX2dpLl9yZWN0SGlnaGxpZ2h0LnggPSBzZWxmLl9naS5fcmVjdExhYmVsLnggLSAyCisrQEAg LTQ1NDYsNyArNDU0Niw3IEBAIGRlZiBEcmF3SW5SZXBvcnRNb2RlKHNlbGYsIGRjLCBsaW5lLCBy ZWN0LCByZWN0SEwsIGhpZ2hsaWdodGVkLCBjdXJyZW50LCBlbmFibGVkCisrICAgICAgICAgICAg ICAgICAjIFdlIGdvdCBhIGNoZWNrYm94LXR5cGUgaXRlbQorKyAgICAgICAgICAgICAgICAgaXgs IGl5ID0gc2VsZi5fb3duZXIuR2V0Q2hlY2tib3hJbWFnZVNpemUoKQorKyAgICAgICAgICAgICAg ICAgY2hlY2tlZCA9IGl0ZW0uSXNDaGVja2VkKCkKKystICAgICAgICAgICAgICAgIHNlbGYuX293 bmVyLkRyYXdDaGVja2JveChkYywgeE9sZCwgeSArIChoZWlnaHQtaXkrMSkvMiwgaXRlbS5HZXRL aW5kKCksIGNoZWNrZWQsIGVuYWJsZWQpCisrKyAgICAgICAgICAgICAgICBzZWxmLl9vd25lci5E cmF3Q2hlY2tib3goZGMsIHhPbGQsIHkgKyAoaGVpZ2h0LWl5KzEpLy8yLCBpdGVtLkdldEtpbmQo KSwgY2hlY2tlZCwgZW5hYmxlZCkKKysgICAgICAgICAgICAgICAgIHhPbGQgKz0gaXgKKysgICAg ICAgICAgICAgICAgIHdpZHRoIC09IGl4CisrIAorK0BAIC00NTU3LDcgKzQ1NTcsNyBAQCBkZWYg RHJhd0luUmVwb3J0TW9kZShzZWxmLCBkYywgbGluZSwgcmVjdCwgcmVjdEhMLCBoaWdobGlnaHRl ZCwgY3VycmVudCwgZW5hYmxlZAorKyAgICAgICAgICAgICAgICAgZm9yIGltZyBpbiBpbWFnZXM6 CisrIAorKyAgICAgICAgICAgICAgICAgICAgIGl4LCBpeSA9IHNlbGYuX293bmVyLkdldEltYWdl U2l6ZShbaW1nXSkKKystICAgICAgICAgICAgICAgICAgICBzZWxmLl9vd25lci5EcmF3SW1hZ2Uo aW1nLCBkYywgeE9sZCwgeSArIChoZWlnaHQtaXkpLzIsIGVuYWJsZWQpCisrKyAgICAgICAgICAg ICAgICAgICAgc2VsZi5fb3duZXIuRHJhd0ltYWdlKGltZywgZGMsIHhPbGQsIHkgKyAoaGVpZ2h0 LWl5KS8vMiwgZW5hYmxlZCkKKysgCisrICAgICAgICAgICAgICAgICAgICAgeE9sZCArPSBpeAor KyAgICAgICAgICAgICAgICAgICAgIHdpZHRoIC09IGl4CisrQEAgLTUyMzAsNyArNTIzMCw3IEBA IGRlZiBPblBhaW50KHNlbGYsIGV2ZW50KToKKysgICAgICAgICAgICAgICAgICMgV2UgZ290IGEg Y2hlY2tib3gtdHlwZSBpdGVtCisrICAgICAgICAgICAgICAgICBpeCwgaXkgPSBzZWxmLl9vd25l ci5HZXRDaGVja2JveEltYWdlU2l6ZSgpCisrICAgICAgICAgICAgICAgICAjIFdlIGRyYXcgaXQg b24gdGhlIGxlZnQsIGFsd2F5cworKy0gICAgICAgICAgICAgICAgc2VsZi5fb3duZXIuRHJhd0No ZWNrYm94KGRjLCB4ICsgSEVBREVSX09GRlNFVF9YLCBIRUFERVJfT0ZGU0VUX1kgKyAoaCAtIDQg LSBpeSkvMiwga2luZCwgY2hlY2tlZCwgZW5hYmxlZCkKKysrICAgICAgICAgICAgICAgIHNlbGYu X293bmVyLkRyYXdDaGVja2JveChkYywgeCArIEhFQURFUl9PRkZTRVRfWCwgSEVBREVSX09GRlNF VF9ZICsgKGggLSA0IC0gaXkpLy8yLCBraW5kLCBjaGVja2VkLCBlbmFibGVkKQorKyAgICAgICAg ICAgICAgICAgd2NoZWNrICs9IGl4ICsgSEVBREVSX0lNQUdFX01BUkdJTl9JTl9SRVBPUlRfTU9E RQorKyAgICAgICAgICAgICAgICAgY3cgLT0gaXggKyBIRUFERVJfSU1BR0VfTUFSR0lOX0lOX1JF UE9SVF9NT0RFCisrIAorK0BAIC02ODE5LDcgKzY4MTksNyBAQCBkZWYgSGl0VGVzdExpbmUoc2Vs ZiwgbGluZSwgeCwgeSk6CisrICAgICAgICAgICAgICAgICAgICAgIyBXZSBnb3QgYSBjaGVja2Jv eC10eXBlIGl0ZW0KKysgICAgICAgICAgICAgICAgICAgICBpeCwgaXkgPSBzZWxmLkdldENoZWNr Ym94SW1hZ2VTaXplKCkKKysgICAgICAgICAgICAgICAgICAgICBMSCA9IHNlbGYuR2V0TGluZUhl aWdodChsaW5lKQorKy0gICAgICAgICAgICAgICAgICAgIHJlY3QgPSB3eC5SZWN0KHhPbGQsIGxp bmVZICsgTEgvMiAtIGl5LzIsIGl4LCBpeSkKKysrICAgICAgICAgICAgICAgICAgICByZWN0ID0g d3guUmVjdCh4T2xkLCBsaW5lWSArIExILy8yIC0gaXkvLzIsIGl4LCBpeSkKKysgICAgICAgICAg ICAgICAgICAgICBpZiByZWN0LkNvbnRhaW5zKCh4LCB5KSk6CisrICAgICAgICAgICAgICAgICAg ICAgICAgIG5ld0l0ZW0gPSBzZWxmLkdldFBhcmVudCgpLkdldEl0ZW0obGluZSwgY29sKQorKyAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3SXRlbSwgVUxDX0hJVFRFU1RfT05JVEVN Q0hFQ0sKKytAQCAtNzkzNywxMyArNzkzNywxMyBAQCBkZWYgTW92ZVRvSXRlbShzZWxmLCBpdGVt KToKKysgICAgICAgICAgICAgICAgICAgICB3aGlsZSBzdGFydF95ID4gdmlld195OgorKyAgICAg ICAgICAgICAgICAgICAgICAgICBzdGFydF95IC09IFNDUk9MTF9VTklUX1kKKysgCisrLSAgICAg ICAgICAgICAgICAgICAgc2VsZi5TY3JvbGwoLTEsIHN0YXJ0X3kvU0NST0xMX1VOSVRfWSkKKysr ICAgICAgICAgICAgICAgICAgICBzZWxmLlNjcm9sbCgtMSwgc3RhcnRfeS8vU0NST0xMX1VOSVRf WSkKKysgCisrICAgICAgICAgICAgICAgICBpZiBzdGFydF95ICsgaGVpZ2h0ID4gdmlld195ICsg Y2xpZW50X2g6CisrICAgICAgICAgICAgICAgICAgICAgd2hpbGUgc3RhcnRfeSArIGhlaWdodCA8 IHZpZXdfeSArIGNsaWVudF9oOgorKyAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydF95ICs9 IFNDUk9MTF9VTklUX1kKKysgCisrLSAgICAgICAgICAgICAgICAgICAgc2VsZi5TY3JvbGwoLTEs IChzdGFydF95K2hlaWdodC1jbGllbnRfaCtTQ1JPTExfVU5JVF9ZKS9TQ1JPTExfVU5JVF9ZKQor KysgICAgICAgICAgICAgICAgICAgIHNlbGYuU2Nyb2xsKC0xLCAoc3RhcnRfeStoZWlnaHQtY2xp ZW50X2grU0NST0xMX1VOSVRfWSkvL1NDUk9MTF9VTklUX1kpCisrIAorKyAgICAgICAgIGVsc2U6 ICMgIXJlcG9ydAorKyAKKytAQCAtNzk2MCw3ICs3OTYwLDcgQEAgZGVmIE1vdmVUb0l0ZW0oc2Vs ZiwgaXRlbSk6CisrICAgICAgICAgICAgIGlmIHJlY3QueSArIHJlY3QuaGVpZ2h0IC0gNSA+IHZp ZXdfeSArIGNsaWVudF9oOgorKyAgICAgICAgICAgICAgICAgc3kgPSAocmVjdC55ICsgcmVjdC5o ZWlnaHQgLSBjbGllbnRfaCArIGhMaW5lKS9oTGluZQorKyAKKystICAgICAgICAgICAgc2VsZi5T Y3JvbGwoc3gsIHN5KQorKysgICAgICAgICAgICBzZWxmLlNjcm9sbChpbnQoc3gpLCBpbnQoc3kp KQorKyAKKysgCisrICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorK2RpZmYgLS1naXQgYS93eC9saWIv YWd3L3hsc2dyaWQucHkgYi93eC9saWIvYWd3L3hsc2dyaWQucHkKKytpbmRleCBiNTA1YWViYjQu LjE3MjY3ZmFiYyAxMDA2NDQKKystLS0gYS93eC9saWIvYWd3L3hsc2dyaWQucHkKKysrKysgYi93 eC9saWIvYWd3L3hsc2dyaWQucHkKKytAQCAtOTY1LDcgKzk2NSw3IEBAIGRlZiBEcmF3KHNlbGYs IGRjLCByZWN0KToKKysgICAgICAgICAgICAgeHAgPSB4YyAtICh0ZXh0X3dpZHRoLzIpKnhzaGlm dCAtICh0ZXh0X2hlaWdodC8yKSp5c2hpZnQKKysgICAgICAgICAgICAgeXAgPSB5YyArICh0ZXh0 X3dpZHRoLzIpKnlzaGlmdCAtICh0ZXh0X2hlaWdodC8yKSp4c2hpZnQKKysgCisrLSAgICAgICAg ICAgIGRjLkRyYXdSb3RhdGVkVGV4dCh2YWx1ZSwgeHAsIHlwLCBzZWxmLnJvdGF0aW9uKQorKysg ICAgICAgICAgICBkYy5EcmF3Um90YXRlZFRleHQodmFsdWUsIGludCh4cCksIGludCh5cCksIHNl bGYucm90YXRpb24pCisrIAorKyAgICAgICAgIGVsc2U6CisrIAorK0BAIC0xMTI1LDcgKzExMjUs NyBAQCBkZWYgRHJhdyhzZWxmLCBkYywgcmVjdCk6CisrICAgICAgICAgICAgIGlmIGZvbnQuZXNj YXBlbWVudCA9PSAxOgorKyAgICAgICAgICAgICAgICAgeXBvcyA9IHlwb3MgLSBtYXhIICsgaGVp Z2h0CisrIAorKy0gICAgICAgICAgICBkYy5EcmF3VGV4dChjaHVuaywgc3RhcnQsIHlwb3MpCisr KyAgICAgICAgICAgIGRjLkRyYXdUZXh0KGNodW5rLCBzdGFydCwgaW50KHlwb3MpKQorKyAgICAg ICAgICAgICBzdGFydCArPSB3aWR0aAorKyAKKysgCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cv em9vbWJhci5weSBiL3d4L2xpYi9hZ3cvem9vbWJhci5weQorK2luZGV4IDFlNmVjNWRhMy4uOGMy YWZkMDU4IDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hZ3cvem9vbWJhci5weQorKysrKyBiL3d4L2xp Yi9hZ3cvem9vbWJhci5weQorK0BAIC00NjMsNyArNDYzLDcgQEAgZGVmIFNldFNpemUoc2VsZiwg d2lkdGgsIGhlaWdodCk6CisrICAgICBkZWYgR2V0UG9zaXRpb24oc2VsZik6CisrICAgICAgICAg IiIiIFJldHVybnMgdGhlIGJ1dHRvbiBwb3NpdGlvbi4gIiIiCisrIAorKy0gICAgICAgIHJldHVy biB3eC5Qb2ludChzZWxmLl9sZWZ0LCBzZWxmLl90b3ApCisrKyAgICAgICAgcmV0dXJuIHd4LlBv aW50KGludChzZWxmLl9sZWZ0KSwgaW50KHNlbGYuX3RvcCkpCisrIAorKyAKKysgICAgIGRlZiBH ZXRTaXplKHNlbGYpOgorK0BAIC02MDEsNyArNjAxLDcgQEAgZGVmIF9faW5pdF9fKHNlbGYsIGJp dG1hcD1Ob25lKToKKysgICAgIGRlZiBHZXRQb3NpdGlvbihzZWxmKToKKysgICAgICAgICAiIiIg UmV0dXJucyB0aGUgcG9zaXRpb24gb2YgOmNsYXNzOmB3eC5JbWFnZUJhcmAsIGFzIGEgOmNsYXNz OmB3eC5Qb2ludGAuICIiIgorKyAKKystICAgICAgICByZXR1cm4gd3guUG9pbnQoc2VsZi5fbGVm dCwgc2VsZi5fdG9wKQorKysgICAgICAgIHJldHVybiB3eC5Qb2ludChpbnQoc2VsZi5fbGVmdCks IGludChzZWxmLl90b3ApKQorKyAKKysgCisrICAgICBkZWYgR2V0U2l6ZShzZWxmKToKKytAQCAt NjYwLDcgKzY2MCw3IEBAIGRlZiBTZXRCYXJDb2xvdXIoc2VsZiwgY29sb3VyLCB4U2l6ZT1Ob25l LCB5U2l6ZT1Ob25lKToKKysgICAgICAgICBpZiB4U2l6ZSBpcyBub3QgTm9uZToKKysgICAgICAg ICAgICAgc2VsZi5fc2l6ZSA9IHd4LlNpemUoeFNpemUsIHlTaXplKQorKyAKKystICAgICAgICBi aXRtYXAuUmVzY2FsZShzZWxmLl9zaXplLndpZHRoLCBzZWxmLl9zaXplLmhlaWdodC8yKQorKysg ICAgICAgIGJpdG1hcC5SZXNjYWxlKHNlbGYuX3NpemUud2lkdGgsIHNlbGYuX3NpemUuaGVpZ2h0 Ly8yKQorKyAKKysgICAgICAgICByMSwgZzEsIGIxID0gc2VsZi5fc3RhcnRDb2xvdXIuUmVkKCks IHNlbGYuX3N0YXJ0Q29sb3VyLkdyZWVuKCksIHNlbGYuX3N0YXJ0Q29sb3VyLkJsdWUoKQorKyAg ICAgICAgIHIyLCBnMiwgYjIgPSBjb2xvdXIuUmVkKCksIGNvbG91ci5HcmVlbigpLCBjb2xvdXIu Qmx1ZSgpCisrQEAgLTEwNjUsNyArMTA2NSw3IEBAIGRlZiBSZXNldFNpemUoc2VsZik6CisrICAg ICAgICAgICAgIHlTaXplICs9IHlleHRlbnQKKysgCisrICAgICAgICAgaWYgc2VsZi5fc2hvd1Jl ZmxlY3Rpb25zOgorKy0gICAgICAgICAgICB5U2l6ZSArPSBzZWxmLl9idXR0b25TaXplLzIKKysr ICAgICAgICAgICAgeVNpemUgKz0gc2VsZi5fYnV0dG9uU2l6ZS8vMgorKyAgICAgICAgIGlmIHNl bGYuX2NlbnRlclpvb206CisrICAgICAgICAgICAgIHlTaXplICs9IHNlbGYuX2J1dHRvblNpemUK KysgCisrQEAgLTEyNDAsNyArMTI0MCw3IEBAIGRlZiBEcmF3TGFiZWxzKHNlbGYsIGRjKToKKysg ICAgICAgICAgICAgdGV4dFdpZHRoLCB0ZXh0SGVpZ2h0ID0gZGMuR2V0VGV4dEV4dGVudChsYWJl bCkKKysgICAgICAgICAgICAgYnV0dG9uUG9zID0gYnV0dG9uLkdldFBvc2l0aW9uKCkKKysgICAg ICAgICAgICAgYnV0dG9uU2l6ZSA9IGJ1dHRvbi5HZXRTaXplKCkKKystICAgICAgICAgICAgeHBv cyA9IGJ1dHRvblBvcy54ICsgKGJ1dHRvblNpemUud2lkdGggLSB0ZXh0V2lkdGgpLzIKKysrICAg ICAgICAgICAgeHBvcyA9IGJ1dHRvblBvcy54ICsgKGJ1dHRvblNpemUud2lkdGggLSB0ZXh0V2lk dGgpLy8yCisrICAgICAgICAgICAgIHlwb3MgPSBidXR0b25Qb3MueSAtIHRleHRIZWlnaHQgLSAy CisrIAorKyAgICAgICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHhwb3MtMiwgeXBvcy0xLCB0ZXh0 V2lkdGgrNCwgdGV4dEhlaWdodCsyKQorK2RpZmYgLS1naXQgYS93eC9saWIvYW5hbG9nY2xvY2sv YW5hbG9nY2xvY2sucHkgYi93eC9saWIvYW5hbG9nY2xvY2svYW5hbG9nY2xvY2sucHkKKytpbmRl eCA3YzRiMTg5NzkuLjFlZTFkNjc0MiAxMDA2NDQKKystLS0gYS93eC9saWIvYW5hbG9nY2xvY2sv YW5hbG9nY2xvY2sucHkKKysrKysgYi93eC9saWIvYW5hbG9nY2xvY2svYW5hbG9nY2xvY2sucHkK KytAQCAtMTczLDcgKzE3Myw3IEBAIGRlZiBfcmVjYWxjQ29vcmRzKHNlbGYsIHNpemUpOgorKyAg ICAgICAgIHNjYWxlID0gbWluKFtmbG9hdChzaXplLndpZHRoKSAvIHNlbGYuYmFzZXNpemUud2lk dGgsCisrICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KHNpemUuaGVpZ2h0KSAvIHNlbGYuYmFz ZXNpemUuaGVpZ2h0XSkKKysgCisrLSAgICAgICAgY2VudHJlID0gd3guUG9pbnQoc2l6ZS53aWR0 aCAvIDIuLCBzaXplLmhlaWdodCAvIDIuKQorKysgICAgICAgIGNlbnRyZSA9IHd4LlBvaW50KHNp emUud2lkdGggLy8gMiwgc2l6ZS5oZWlnaHQgLy8gMikKKysgCisrICAgICAgICAgc2VsZi5Cb3gu UmVjYWxjQ29vcmRzKHNpemUsIGNlbnRyZSwgc2NhbGUpCisrICAgICAgICAgc2VsZi5IYW5kcy5S ZWNhbGNDb29yZHMoc2l6ZSwgY2VudHJlLCBzY2FsZSkKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2Fu YWxvZ2Nsb2NrL2hlbHBlcnMucHkgYi93eC9saWIvYW5hbG9nY2xvY2svaGVscGVycy5weQorK2lu ZGV4IDg4ZDE5OGJlZS4uOTY3NGRlOTEyIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9hbmFsb2djbG9j ay9oZWxwZXJzLnB5CisrKysrIGIvd3gvbGliL2FuYWxvZ2Nsb2NrL2hlbHBlcnMucHkKKytAQCAt MzcsNyArMzcsNyBAQCBkZWYgX19pbml0X18oc2VsZiwgaWR4PTAsIHBvcz1Ob25lLCBzaXplPU5v bmUsIG9mZnNldD0wLCBjbG9ja3NpemU9Tm9uZSwKKysgCisrIAorKyAgICAgZGVmIF9wb2wycmVj dChzZWxmLCBtLCB0KToKKystICAgICAgICByZXR1cm4gbSAqIG1hdGguY29zKG1hdGgucmFkaWFu cyh0KSksIG0gKiBtYXRoLnNpbihtYXRoLnJhZGlhbnModCkpCisrKyAgICAgICAgcmV0dXJuIGlu dChtICogbWF0aC5jb3MobWF0aC5yYWRpYW5zKHQpKSksIGludChtICogbWF0aC5zaW4obWF0aC5y YWRpYW5zKHQpKSkKKysgCisrIAorKyAgICAgZGVmIF9yZWN0MnBvbChzZWxmLCB4LCB5KToKKytA QCAtMTc0LDcgKzE3NCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6CisrIAorKyAg ICAgZGVmIERyYXcoc2VsZiwgZGMpOgorKyAgICAgICAgIHNlbGYuZHllci5TZWxlY3QoZGMpCisr LSAgICAgICAgZGMuRHJhd0NpcmNsZShzZWxmLnBvcy54LCBzZWxmLnBvcy55LCBzZWxmLnJhZGl1 cykKKysrICAgICAgICBkYy5EcmF3Q2lyY2xlKHNlbGYucG9zLngsIHNlbGYucG9zLnksIGludChz ZWxmLnJhZGl1cykpCisrIAorKyAKKysgICAgIGRlZiBSZWNhbGNDb29yZHMoc2VsZiwgY2xvY2tz aXplLCBjZW50cmUsIHNjYWxlKToKKytAQCAtMjA1LDcgKzIwNSw3IEBAIGRlZiBEcmF3KHNlbGYs IGRjLCBlbmQsIG9mZnNldD0wKToKKysgICAgICAgICAgICAgbSwgdCA9IHNlbGYuX3JlY3QycG9s KHgsIHkpCisrICAgICAgICAgICAgIHBvbHlnb25baV0gPSBzZWxmLl9wb2wycmVjdChtLCB0IC0g YW5nbGUpCisrIAorKy0gICAgICAgIGRjLkRyYXdQb2x5Z29uKHBvbHlnb24sIGNlbnRyZS54ICsg b2Zmc2V0LCBjZW50cmUueSArIG9mZnNldCkKKysrICAgICAgICBkYy5EcmF3UG9seWdvbihwb2x5 Z29uLCBpbnQoY2VudHJlLnggKyBvZmZzZXQpLCBpbnQoY2VudHJlLnkgKyBvZmZzZXQpKQorKyAK KysgCisrICAgICBkZWYgUmVjYWxjQ29vcmRzKHNlbGYsIGNsb2Nrc2l6ZSwgY2VudHJlLCBzY2Fs ZSk6CisrQEAgLTIyNiw3ICsyMjYsNyBAQCBkZWYgRHJhdyhzZWxmLCBkYywgb2Zmc2V0PTApOgor KyAgICAgICAgIHggPSBzZWxmLnBvcy54IC0gd2lkdGggLyAyLgorKyAgICAgICAgIHkgPSBzZWxm LnBvcy55IC0gaGVpZ2h0IC8gMi4KKysgCisrLSAgICAgICAgZGMuRHJhd1JlY3RhbmdsZSh4ICsg b2Zmc2V0LCB5ICsgb2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KQorKysgICAgICAgIGRjLkRyYXdSZWN0 YW5nbGUoaW50KHggKyBvZmZzZXQpLCBpbnQoeSArIG9mZnNldCksIGludCh3aWR0aCksIGludCho ZWlnaHQpKQorKyAKKysgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKysgCisrQEAgLTI0Miw3ICsyNDIsNyBAQCBk ZWYgRHJhdyhzZWxmLCBkYywgb2Zmc2V0PTApOgorKyAgICAgICAgIHggPSBzZWxmLnBvcy54Cisr ICAgICAgICAgeSA9IHNlbGYucG9zLnkKKysgCisrLSAgICAgICAgZGMuRHJhd0NpcmNsZSh4ICsg b2Zmc2V0LCB5ICsgb2Zmc2V0LCByYWRpdXMpCisrKyAgICAgICAgZGMuRHJhd0NpcmNsZShpbnQo eCArIG9mZnNldCksIGludCh5ICsgb2Zmc2V0KSwgaW50KHJhZGl1cykpCisrIAorKyAjLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorKyAKKytAQCAtMjczLDcgKzI3Myw3IEBAIGRlZiBEcmF3U3RyYWlnaHQoc2VsZiwg ZGMsIG9mZnNldD0wKToKKysgICAgICAgICB4ID0gc2VsZi5wb3MueCAtIHdpZHRoIC8gMi4KKysg ICAgICAgICB5ID0gc2VsZi5wb3MueSAtIGhlaWdodCAvIDIuCisrIAorKy0gICAgICAgIGRjLkRy YXdQb2x5Z29uKHBvbHlnb24sIHggKyBvZmZzZXQsIHkgKyBvZmZzZXQpCisrKyAgICAgICAgZGMu RHJhd1BvbHlnb24ocG9seWdvbiwgaW50KHggKyBvZmZzZXQpLCBpbnQoeSArIG9mZnNldCkpCisr IAorKyAKKysgICAgIGRlZiBEcmF3Um90YXRlZChzZWxmLCBkYywgb2Zmc2V0PTApOgorK0BAIC0y OTAsNyArMjkwLDcgQEAgZGVmIERyYXdSb3RhdGVkKHNlbGYsIGRjLCBvZmZzZXQ9MCk6CisrICAg ICAgICAgeCA9IHNlbGYucG9zLnggLSBtYXRoLmNvcyhyKSAqIHdpZHRoIC8gMi4gLSBtYXRoLnNp bihyKSAqIGhlaWdodCAvIDIuCisrICAgICAgICAgeSA9IHNlbGYucG9zLnkgLSBtYXRoLmNvcyhy KSAqIGhlaWdodCAvIDIuICsgbWF0aC5zaW4ocikgKiB3aWR0aCAvIDIuCisrIAorKy0gICAgICAg IGRjLkRyYXdQb2x5Z29uKHBvbHlnb24sIHggKyBvZmZzZXQsIHkgKyBvZmZzZXQpCisrKyAgICAg ICAgZGMuRHJhd1BvbHlnb24ocG9seWdvbiwgaW50KHggKyBvZmZzZXQpLCBpbnQoeSArIG9mZnNl dCkpCisrIAorKyAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyAKKytAQCAtMzA5LDcgKzMwOSw3IEBAIGRlZiBE cmF3U3RyYWlnaHQoc2VsZiwgZGMsIG9mZnNldD0wKToKKysgICAgICAgICB4ID0gc2VsZi5wb3Mu eCAtIHdpZHRoIC8gMi4KKysgICAgICAgICB5ID0gc2VsZi5wb3MueSAtIGhlaWdodCAvIDIuCisr IAorKy0gICAgICAgIGRjLkRyYXdUZXh0KHNlbGYudGV4dCwgeCArIG9mZnNldCwgeSArIG9mZnNl dCkKKysrICAgICAgICBkYy5EcmF3VGV4dChzZWxmLnRleHQsIGludCh4ICsgb2Zmc2V0KSwgaW50 KHkgKyBvZmZzZXQpKQorKyAKKysgCisrICAgICBkZWYgRHJhd1JvdGF0ZWQoc2VsZiwgZGMsIG9m ZnNldD0wKToKKytAQCAtMzIxLDcgKzMyMSw3IEBAIGRlZiBEcmF3Um90YXRlZChzZWxmLCBkYywg b2Zmc2V0PTApOgorKyAgICAgICAgIHggPSBzZWxmLnBvcy54IC0gbWF0aC5jb3MocikgKiB3aWR0 aCAvIDIuIC0gbWF0aC5zaW4ocikgKiBoZWlnaHQgLyAyLgorKyAgICAgICAgIHkgPSBzZWxmLnBv cy55IC0gbWF0aC5jb3MocikgKiBoZWlnaHQgLyAyLiArIG1hdGguc2luKHIpICogd2lkdGggLyAy LgorKyAKKystICAgICAgICBkYy5EcmF3Um90YXRlZFRleHQoc2VsZi50ZXh0LCB4ICsgb2Zmc2V0 LCB5ICsgb2Zmc2V0LCBhbmdsZSkKKysrICAgICAgICBkYy5EcmF3Um90YXRlZFRleHQoc2VsZi50 ZXh0LCBpbnQoeCArIG9mZnNldCksIGludCh5ICsgb2Zmc2V0KSwgaW50KGFuZ2xlKSkKKysgCisr IAorKyAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorK0BAIC02NTYsNyArNjU2LDcgQEAgZGVmIFJlY2FsY0Nvb3Jk cyhzZWxmLCBjbG9ja3NpemUsIGNlbnRyZSwgc2NhbGUpOgorKyAKKysgICAgICAgICAjIFRyeSB0 byBmaW5kIGEgJ2dvb2QnIG1heCBzaXplIGZvciB0ZXh0LWJhc2VkIHRpY2tzLgorKyAgICAgICAg IGlmIGFfdGljay50ZXh0IGlzIG5vdCBOb25lOgorKy0gICAgICAgICAgICBzZWxmLmZvbnQuU2V0 UG9pbnRTaXplKHNpemUpCisrKyAgICAgICAgICAgIHNlbGYuZm9udC5TZXRQb2ludFNpemUoaW50 KHNpemUpKQorKyAgICAgICAgICAgICBkYyA9IHd4Lk1lbW9yeURDKCkKKysgICAgICAgICAgICAg ZGMuU2VsZWN0T2JqZWN0KHd4LkJpdG1hcCgqY2xvY2tzaXplLkdldCgpKSkKKysgICAgICAgICAg ICAgZGMuU2V0Rm9udChzZWxmLmZvbnQpCisrQEAgLTY4Niw3ICs2ODYsNyBAQCBkZWYgUmVjYWxj Q29vcmRzKHNlbGYsIGNsb2Nrc2l6ZSwgY2VudHJlLCBzY2FsZSk6CisrICAgICAgICAgICAgIHgg PSBjZW50cmUueCArIHJhZGl1cyAqIG1hdGguc2luKGFuZ2xlKQorKyAgICAgICAgICAgICB5ID0g Y2VudHJlLnkgKyByYWRpdXMgKiBtYXRoLmNvcyhhbmdsZSkKKysgCisrLSAgICAgICAgICAgIHRp Y2suU2V0UG9zaXRpb24od3guUG9pbnQoeCwgeSkpCisrKyAgICAgICAgICAgIHRpY2suU2V0UG9z aXRpb24od3guUG9pbnQoaW50KHgpLCBpbnQoeSkpKQorKyAKKysgCisrICAgICBkZWYgR2V0U2l6 ZShzZWxmKToKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2FuYWxvZ2Nsb2NrL3NldHVwLnB5IGIvd3gv bGliL2FuYWxvZ2Nsb2NrL3NldHVwLnB5CisraW5kZXggYTgzYzg2MzlkLi5hN2RmZmI5MDEgMTAw NjQ0CisrLS0tIGEvd3gvbGliL2FuYWxvZ2Nsb2NrL3NldHVwLnB5CisrKysrIGIvd3gvbGliL2Fu YWxvZ2Nsb2NrL3NldHVwLnB5CisrQEAgLTE3OSw3ICsxNzksNyBAQCBkZWYgX19pbml0X18oc2Vs ZiwgcGFyZW50LCB0aXRsZSwgZ3JvdXA9IkhhbmRzIik6CisrICAgICAgICAgcC5TZXRDdXN0b21D b2xvdXJzKHNlbGYuY3VzdG9tY29sb3VycykKKysgICAgICAgICBzaXplci5BZGQocCwgcG9zPSgw LCAxKSwgZmxhZz13eC5BTElHTl9DRU5UUkVfVkVSVElDQUwpCisrIAorKy0gICAgICAgIHAgPSBz ZWxmLmJ3ID0gd3guU3BpbkN0cmwoc2VsZiwgc2l6ZT0oNzUsIDIxKSwKKysrICAgICAgICBwID0g c2VsZi5idyA9IHd4LlNwaW5DdHJsKHNlbGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBtaW49MCwgbWF4PTEwMCwgdmFsdWU9Ijc1IikKKysgICAgICAgICBzaXplci5BZGQo cCwgcG9zPSgwLCAyKSwgc3Bhbj0oMSwgMiksIGZsYWc9d3guQUxJR05fQ0VOVFJFX1ZFUlRJQ0FM KQorKyAKKytAQCAtMTkzLDcgKzE5Myw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRp dGxlLCBncm91cD0iSGFuZHMiKToKKysgICAgICAgICBwID0gc2VsZi5scyA9IHd4LlN0YXRpY1Rl eHQoc2VsZiwgbGFiZWw9IlNpemU6IikKKysgICAgICAgICBzaXplci5BZGQocCwgcG9zPSgyLCAw KSwgZmxhZz13eC5BTElHTl9DRU5UUkVfVkVSVElDQUwpCisrIAorKy0gICAgICAgIHAgPSBzZWxm LnN6ID0gd3guU3BpbkN0cmwoc2VsZiwgc2l6ZT0oNzUsIDIxKSwKKysrICAgICAgICBwID0gc2Vs Zi5zeiA9IHd4LlNwaW5DdHJsKHNlbGYsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBtaW49MCwgbWF4PTEwMCwgdmFsdWU9Ijc1IikKKysgICAgICAgICBzaXplci5BZGQocCwg cG9zPSgyLCAxKSwgc3Bhbj0oMSwgMyksIGZsYWc9d3guQUxJR05fQ0VOVFJFX1ZFUlRJQ0FMKQor KyAKKytAQCAtMjEyLDcgKzIxMiw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxl LCBncm91cD0iVGlja3MiKToKKysgICAgICAgICBwID0gd3guU3RhdGljVGV4dChzZWxmLCBsYWJl bD0iT2Zmc2V0OiIpCisrICAgICAgICAgc2l6ZXIuQWRkKHAsIHBvcz0oMywgMCksIGZsYWc9d3gu QUxJR05fQ0VOVFJFX1ZFUlRJQ0FMKQorKyAKKystICAgICAgICBwID0gc2VsZi5vZiA9IHd4LlNw aW5DdHJsKHNlbGYsIHNpemU9KDc1LCAyMSksCisrKyAgICAgICAgcCA9IHNlbGYub2YgPSB3eC5T cGluQ3RybChzZWxmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluPTAs IG1heD0xMDAsIHZhbHVlPSI3NSIpCisrICAgICAgICAgc2l6ZXIuQWRkKHAsIHBvcz0oMywgMSks IHNwYW49KDEsIDMpLCBmbGFnPXd4LkFMSUdOX0NFTlRSRV9WRVJUSUNBTCkKKysgCisrZGlmZiAt LWdpdCBhL3d4L2xpYi9idXR0b25zLnB5IGIvd3gvbGliL2J1dHRvbnMucHkKKytpbmRleCA0NmQx Yjg3NDcuLmYwMWE1NGQ0MSAxMDA2NDQKKystLS0gYS93eC9saWIvYnV0dG9ucy5weQorKysrKyBi L3d4L2xpYi9idXR0b25zLnB5CisrQEAgLTQ1Myw3ICs0NTMsNyBAQCBkZWYgRHJhd0xhYmVsKHNl bGYsIGRjLCB3aWR0aCwgaGVpZ2h0LCBkeD0wLCBkeT0wKToKKysgICAgICAgICB0dywgdGggPSBk Yy5HZXRUZXh0RXh0ZW50KGxhYmVsKQorKyAgICAgICAgIGlmIG5vdCBzZWxmLnVwOgorKyAgICAg ICAgICAgICBkeCA9IGR5ID0gc2VsZi5sYWJlbERlbHRhCisrLSAgICAgICAgZGMuRHJhd1RleHQo bGFiZWwsICh3aWR0aC10dykvMitkeCwgKGhlaWdodC10aCkvMitkeSkKKysrICAgICAgICBkYy5E cmF3VGV4dChsYWJlbCwgKHdpZHRoLXR3KS8vMitkeCwgKGhlaWdodC10aCkvLzIrZHkpCisrIAor KyAKKysgICAgIGRlZiBEcmF3Rm9jdXNJbmRpY2F0b3Ioc2VsZiwgZGMsIHcsIGgpOgorK0BAIC04 NDQsNyArODQ0LDcgQEAgZGVmIERyYXdMYWJlbChzZWxmLCBkYywgd2lkdGgsIGhlaWdodCwgZHg9 MCwgZHk9MCk6CisrICAgICAgICAgaWYgbm90IHNlbGYudXA6CisrICAgICAgICAgICAgIGR4ID0g ZHkgPSBzZWxmLmxhYmVsRGVsdGEKKysgICAgICAgICBoYXNNYXNrID0gYm1wLkdldE1hc2soKSAh PSBOb25lCisrLSAgICAgICAgZGMuRHJhd0JpdG1hcChibXAsICh3aWR0aC1idykvMitkeCwgKGhl aWdodC1iaCkvMitkeSwgaGFzTWFzaykKKysrICAgICAgICBkYy5EcmF3Qml0bWFwKGJtcCwgKHdp ZHRoLWJ3KS8vMitkeCwgKGhlaWdodC1iaCkvLzIrZHksIGhhc01hc2spCisrIAorKyAKKysgIy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKytAQCAtOTI2LDEyICs5MjYsMTIgQEAgZGVmIERyYXdMYWJlbChzZWxmLCBk Yywgd2lkdGgsIGhlaWdodCwgZHg9MCwgZHk9MCk6CisrICAgICAgICAgaWYgbm90IHNlbGYudXA6 CisrICAgICAgICAgICAgIGR4ID0gZHkgPSBzZWxmLmxhYmVsRGVsdGEKKysgCisrLSAgICAgICAg cG9zX3ggPSAod2lkdGgtYnctdHcpLzIrZHggICAgICAjIGFkanVzdCBmb3IgYml0bWFwIGFuZCB0 ZXh0IHRvIGNlbnRyZQorKysgICAgICAgIHBvc194ID0gKHdpZHRoLWJ3LXR3KS8vMitkeCAgICAg ICMgYWRqdXN0IGZvciBiaXRtYXAgYW5kIHRleHQgdG8gY2VudHJlCisrICAgICAgICAgaWYgYm1w IGlzIG5vdCBOb25lOgorKy0gICAgICAgICAgICBkYy5EcmF3Qml0bWFwKGJtcCwgcG9zX3gsICho ZWlnaHQtYmgpLzIrZHksIGhhc01hc2spICMgZHJhdyBiaXRtYXAgaWYgYXZhaWxhYmxlCisrKyAg ICAgICAgICAgIGRjLkRyYXdCaXRtYXAoYm1wLCBwb3NfeCwgKGhlaWdodC1iaCkvLzIrZHksIGhh c01hc2spICMgZHJhdyBiaXRtYXAgaWYgYXZhaWxhYmxlCisrICAgICAgICAgICAgIHBvc194ID0g cG9zX3ggKyAyICAgIyBleHRyYSBzcGFjaW5nIGZyb20gYml0bWFwCisrIAorKy0gICAgICAgIGRj LkRyYXdUZXh0KGxhYmVsLCBwb3NfeCArIGR4K2J3LCAoaGVpZ2h0LXRoKS8yK2R5KSAgICAgICMg ZHJhdyB0aGUgdGV4dAorKysgICAgICAgIGRjLkRyYXdUZXh0KGxhYmVsLCBwb3NfeCArIGR4K2J3 LCAoaGVpZ2h0LXRoKS8vMitkeSkgICAgICAjIGRyYXcgdGhlIHRleHQKKysgCisrIAorKyAjLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorK2RpZmYgLS1naXQgYS93eC9saWIvY29sb3VyY2hvb3Nlci9weWNvbG91cmNo b29zZXIucHkgYi93eC9saWIvY29sb3VyY2hvb3Nlci9weWNvbG91cmNob29zZXIucHkKKytpbmRl eCA2MWRiYzAyZDIuLjEyNDM3NjQ4MyAxMDA2NDQKKystLS0gYS93eC9saWIvY29sb3VyY2hvb3Nl ci9weWNvbG91cmNob29zZXIucHkKKysrKysgYi93eC9saWIvY29sb3VyY2hvb3Nlci9weWNvbG91 cmNob29zZXIucHkKKytAQCAtMTg4LDcgKzE4OCw3IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJl bnQsIGlkKToKKysgICAgICAgICBzZWxmLmNvbG91cl9zbGlkZXIuQmluZCh3eC5FVlRfTU9USU9O LCBzZWxmLm9uU2xpZGVyTW90aW9uKQorKyAgICAgICAgIHNlbGYuc2xpZGVyID0gd3guU2xpZGVy KAorKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLCBzZWxmLmlkU0NST0xMLCA4NiwgMCwg c2VsZi5jb2xvdXJfc2xpZGVyLkhFSUdIVCAtIDEsCisrLSAgICAgICAgICAgICAgICAgICAgICAg IHN0eWxlPXd4LlNMX1ZFUlRJQ0FMLCBzaXplPSgxNSwgc2VsZi5jb2xvdXJfc2xpZGVyLkhFSUdI VCkKKysrICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9d3guU0xfVkVSVElDQUwsIHNpemU9 KC0xLCBzZWxmLmNvbG91cl9zbGlkZXIuSEVJR0hUKQorKyAgICAgICAgICAgICAgICAgICAgICAg ICApCisrIAorKyAgICAgICAgIHNlbGYuQmluZCh3eC5FVlRfQ09NTUFORF9TQ1JPTEwsIHNlbGYu b25TY3JvbGwsIHNlbGYuc2xpZGVyKQorK0BAIC0zMzgsNyArMzM4LDcgQEAgZGVmIHNldFNsaWRl clRvVihzZWxmLCB2KToKKysgICAgICAgICBtaW4gPSBzZWxmLnNsaWRlci5HZXRNaW4oKQorKyAg ICAgICAgIG1heCA9IHNlbGYuc2xpZGVyLkdldE1heCgpCisrICAgICAgICAgdmFsID0gKDEgLSB2 KSAqIG1heAorKy0gICAgICAgIHNlbGYuc2xpZGVyLlNldFZhbHVlKHZhbCkKKysrICAgICAgICBz ZWxmLnNsaWRlci5TZXRWYWx1ZShpbnQodmFsKSkKKysgCisrICAgICBkZWYgZ2V0VkZyb21TbGlk ZXIoc2VsZik6CisrICAgICAgICAgIiIiR2V0IHRoZSBjdXJyZW50IHZhbHVlIG9mICJWIiBmcm9t IHRoZSB2IHNsaWRlci4iIiIKKytkaWZmIC0tZ2l0IGEvd3gvbGliL2NvbG91cmNob29zZXIvcHlw YWxldHRlLnB5IGIvd3gvbGliL2NvbG91cmNob29zZXIvcHlwYWxldHRlLnB5CisraW5kZXggZmYx ZmI4NDBjLi43MWI5ZmMyZGYgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2NvbG91cmNob29zZXIvcHlw YWxldHRlLnB5CisrKysrIGIvd3gvbGliL2NvbG91cmNob29zZXIvcHlwYWxldHRlLnB5CisrQEAg LTE2NSw3ICsxNjUsNyBAQCBkZWYgRHJhd0J1ZmZlcihzZWxmKToKKysgICAgICAgICAgICAgY29s b3VyID0gd3guQ29sb3VyKDAsIDAsIDApCisrICAgICAgICAgICAgIHNlbGYuYnVmZmVyLlNldFBl bih3eC5QZW4oY29sb3VyLCAxLCB3eC5QRU5TVFlMRV9TT0xJRCkpCisrICAgICAgICAgICAgIHNl bGYuYnVmZmVyLlNldEJydXNoKHd4LkJydXNoKGNvbG91ciwgd3guQlJVU0hTVFlMRV9UUkFOU1BB UkVOVCkpCisrLSAgICAgICAgICAgIHNlbGYuYnVmZmVyLkRyYXdDaXJjbGUoc2VsZi5wb2ludFsw XSwgc2VsZi5wb2ludFsxXSwgMykKKysrICAgICAgICAgICAgc2VsZi5idWZmZXIuRHJhd0NpcmNs ZShpbnQoc2VsZi5wb2ludFswXSksIGludChzZWxmLnBvaW50WzFdKSwgMykKKysgCisrICAgICBk ZWYgSGlnaGxpZ2h0UG9pbnQoc2VsZiwgeCwgeSk6CisrICAgICAgICAgIiIiSGlnaGxpZ2h0cyBh biBhcmVhIG9mIHRoZSBwYWxldHRlIHdpdGggYSBsaXR0bGUgY2lyY2xlIGFyb3VuZAorK2RpZmYg LS1naXQgYS93eC9saWIvZmxvYXRjYW52YXMvRkNPYmplY3RzLnB5IGIvd3gvbGliL2Zsb2F0Y2Fu dmFzL0ZDT2JqZWN0cy5weQorK2luZGV4IDU4YmVjZDM4Yy4uY2RmOGNjNTNlIDEwMDY0NAorKy0t LSBhL3d4L2xpYi9mbG9hdGNhbnZhcy9GQ09iamVjdHMucHkKKysrKysgYi93eC9saWIvZmxvYXRj YW52YXMvRkNPYmplY3RzLnB5CisrQEAgLTI5Niw3ICsyOTYsNyBAQCBkZWYgU2V0UGVuKHNlbGYs IExpbmVDb2xvciwgTGluZVN0eWxlLCBMaW5lV2lkdGgpOgorKyAgICAgICAgIGVsc2U6CisrICAg ICAgICAgICAgIHNlbGYuUGVuID0gc2VsZi5QZW5MaXN0LnNldGRlZmF1bHQoCisrICAgICAgICAg ICAgICAgICAoTGluZUNvbG9yLCBMaW5lU3R5bGUsIExpbmVXaWR0aCksCisrLSAgICAgICAgICAg ICAgICB3eC5QZW4oTGluZUNvbG9yLCBMaW5lV2lkdGgsIHNlbGYuTGluZVN0eWxlTGlzdFtMaW5l U3R5bGVdKSkKKysrICAgICAgICAgICAgICAgIHd4LlBlbihMaW5lQ29sb3IsIGludChMaW5lV2lk dGgpLCBzZWxmLkxpbmVTdHlsZUxpc3RbTGluZVN0eWxlXSkpCisrIAorKyAgICAgZGVmIFNldEhp dEJydXNoKHNlbGYsIEhpdENvbG9yKToKKysgICAgICAgICAiIiIKKytAQCAtMTIwMiwxNCArMTIw MiwxNCBAQCBkZWYgX0RyYXcoc2VsZiwgZGMgLCBXb3JsZFRvUGl4ZWwsIFNjYWxlV29ybGRUb1Bp eGVsLCBIVGRjPU5vbmUpOgorKyAgICAgICAgICAgICB4ID0geGMgLSBTaXplLzIuMAorKyAgICAg ICAgICAgICB5ID0geWMgLSBTaXplLzIuMAorKyAgICAgICAgICAgICBkYy5TZXRCcnVzaChzZWxm LkJydXNoKQorKy0gICAgICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHgsIHksIFNpemUsIFNpemUp CisrKyAgICAgICAgICAgIGRjLkRyYXdSZWN0YW5nbGUoaW50KHgpLCBpbnQoeSksIFNpemUsIFNp emUpCisrICAgICAgICAgaWYgSFRkYyBhbmQgc2VsZi5IaXRBYmxlOgorKyAgICAgICAgICAgICBI VGRjLlNldFBlbihzZWxmLkhpdFBlbikKKysgICAgICAgICAgICAgaWYgc2VsZi5TaXplIDw9IDE6 CisrICAgICAgICAgICAgICAgICBIVGRjLkRyYXdQb2ludCh4YywgeGMpCisrICAgICAgICAgICAg IGVsc2U6CisrICAgICAgICAgICAgICAgICBIVGRjLlNldEJydXNoKHNlbGYuSGl0QnJ1c2gpCisr LSAgICAgICAgICAgICAgICBIVGRjLkRyYXdSZWN0YW5nbGUoeCwgeSwgU2l6ZSwgU2l6ZSkKKysr ICAgICAgICAgICAgICAgIEhUZGMuRHJhd1JlY3RhbmdsZShpbnQoeCksIGludCh5KSwgU2l6ZSwg U2l6ZSkKKysgCisrIGNsYXNzIFJlY3RFbGxpcHNlKFhZT2JqZWN0TWl4aW4sIExpbmVBbmRGaWxs TWl4aW4sIERyYXdPYmplY3QpOgorKyAgICAgIiIiQSBSZWN0RWxsaXBzZSBkcmF3IG9iamVjdC4i IiIKKytAQCAtMjE2MSw3ICsyMTYxLDcgQEAgZGVmIF9EcmF3KHNlbGYsIGRjICwgV29ybGRUb1Bp eGVsLCBTY2FsZVdvcmxkVG9QaXhlbCwgSFRkYz1Ob25lKToKKysgICAgICAgICBXID0gSCAqIChz ZWxmLmJtcFdpZHRoIC8gc2VsZi5ibXBIZWlnaHQpCisrICAgICAgICAgaWYgKHNlbGYuU2NhbGVk Qml0bWFwIGlzIE5vbmUpIG9yIChIICE9IHNlbGYuU2NhbGVkSGVpZ2h0KSA6CisrICAgICAgICAg ICAgIHNlbGYuU2NhbGVkSGVpZ2h0ID0gSAorKy0gICAgICAgICAgICBJbWcgPSBzZWxmLkltYWdl LlNjYWxlKFcsIEgpCisrKyAgICAgICAgICAgIEltZyA9IHNlbGYuSW1hZ2UuU2NhbGUoaW50KFcp LCBpbnQoSCkpCisrICAgICAgICAgICAgIHNlbGYuU2NhbGVkQml0bWFwID0gd3guQml0bWFwKElt ZykKKysgCisrICAgICAgICAgWFkgPSBzZWxmLlNoaWZ0RnVuKFhZWzBdLCBYWVsxXSwgVywgSCkK KytkaWZmIC0tZ2l0IGEvd3gvbGliL2dpem1vcy9sZWRjdHJsLnB5IGIvd3gvbGliL2dpem1vcy9s ZWRjdHJsLnB5CisraW5kZXggZjE4NWQ1MTA1Li43ZjRkM2ZjZjkgMTAwNjQ0CisrLS0tIGEvd3gv bGliL2dpem1vcy9sZWRjdHJsLnB5CisrKysrIGIvd3gvbGliL2dpem1vcy9sZWRjdHJsLnB5Cisr QEAgLTI5Myw3ICsyOTMsNyBAQCBkZWYgX2RyYXdEaWdpdChzZWxmLCBkYywgZGlnaXQsIGNvbHVt bik6CisrIAorKyAgICAgICAgIGlmIGRpZ2l0ICYgYy5DT0xPTjoKKysgICAgICAgICAgICAgZGMu U2V0QnJ1c2god3guQnJ1c2gobGluZUNvbG9yKSkKKystICAgICAgICAgICAgY2VudGVyWCA9IFhQ b3MgKyAoc2VsZi5tX2xpbmVMZW5ndGggKyBzZWxmLm1fZGlnaXRNYXJnaW4pIC8gMgorKy0gICAg ICAgICAgICByYWRpdXMgPSBzZWxmLm1fbGluZVdpZHRoIC8gMgorKy0gICAgICAgICAgICBkYy5E cmF3Q2lyY2xlKGNlbnRlclgsIChzZWxmLm1fbGluZUxlbmd0aCArIChzZWxmLm1fbGluZU1hcmdp biAqIDMpKSAvIDIsIHJhZGl1cykKKystICAgICAgICAgICAgZGMuRHJhd0NpcmNsZShjZW50ZXJY LCAoc2VsZi5tX2xpbmVMZW5ndGggKiAyICsgKHNlbGYubV9saW5lTWFyZ2luICogNSkpICogMyAv IDQsIHJhZGl1cykKKysrICAgICAgICAgICAgY2VudGVyWCA9IFhQb3MgKyAoc2VsZi5tX2xpbmVM ZW5ndGggKyBzZWxmLm1fZGlnaXRNYXJnaW4pIC8vIDIKKysrICAgICAgICAgICAgcmFkaXVzID0g c2VsZi5tX2xpbmVXaWR0aCAvLyAyCisrKyAgICAgICAgICAgIGRjLkRyYXdDaXJjbGUoY2VudGVy WCwgKHNlbGYubV9saW5lTGVuZ3RoICsgKHNlbGYubV9saW5lTWFyZ2luICogMykpIC8vIDIsIHJh ZGl1cykKKysrICAgICAgICAgICAgZGMuRHJhd0NpcmNsZShjZW50ZXJYLCAoc2VsZi5tX2xpbmVM ZW5ndGggKiAyICsgKHNlbGYubV9saW5lTWFyZ2luICogNSkpICogMyAvLyA0LCByYWRpdXMpCisr ZGlmZiAtLWdpdCBhL3d4L2xpYi9pbWFnZWJyb3dzZXIucHkgYi93eC9saWIvaW1hZ2Vicm93c2Vy LnB5CisraW5kZXggNzk1ZTkwZGNhLi44ZTE0NzI3ZTcgMTAwNjQ0CisrLS0tIGEvd3gvbGliL2lt YWdlYnJvd3Nlci5weQorKysrKyBiL3d4L2xpYi9pbWFnZWJyb3dzZXIucHkKKytAQCAtMzQ3LDgg KzM0Nyw4IEBAIGRlZiBEcmF3SW1hZ2Uoc2VsZiwgZGMpOgorKyAgICAgICAgIG93aWR0aCA9IGlu dChzY2FsZSppd2lkdGgpCisrICAgICAgICAgb2hlaWdodCA9IGludChzY2FsZSppaGVpZ2h0KQor KyAKKystICAgICAgICBkaWZmeCA9ICh3d2lkdGggLSBvd2lkdGgpLzIgICAjIGNlbnRlciBjYWxj CisrLSAgICAgICAgZGlmZnkgPSAod2hlaWdodCAtIG9oZWlnaHQpLzIgICAjIGNlbnRlciBjYWxj CisrKyAgICAgICAgZGlmZnggPSAod3dpZHRoIC0gb3dpZHRoKS8vMiAgICMgY2VudGVyIGNhbGMK KysrICAgICAgICBkaWZmeSA9ICh3aGVpZ2h0IC0gb2hlaWdodCkvLzIgICAjIGNlbnRlciBjYWxj CisrIAorKyAgICAgICAgIGlmIG5vdCBibXA6CisrICAgICAgICAgICAgIGlmIG93aWR0aCE9aXdp ZHRoIG9yIG9oZWlnaHQhPWloZWlnaHQ6CisrZGlmZiAtLWdpdCBhL3d4L2xpYi9vZ2wvYmFzaWMu cHkgYi93eC9saWIvb2dsL2Jhc2ljLnB5CisraW5kZXggYjA4ODU5YWI5Li4wMTA3ZjIxZmMgMTAw NjQ0CisrLS0tIGEvd3gvbGliL29nbC9iYXNpYy5weQorKysrKyBiL3d4L2xpYi9vZ2wvYmFzaWMu cHkKKytAQCAtMTA1MSw3ICsxMDUxLDcgQEAgZGVmIE9uRXJhc2VDb250ZW50cyhzZWxmLCBkYyk6 CisrICAgICAgICAgZGMuU2V0UGVuKHNlbGYuR2V0QmFja2dyb3VuZFBlbigpKQorKyAgICAgICAg IGRjLlNldEJydXNoKHNlbGYuR2V0QmFja2dyb3VuZEJydXNoKCkpCisrIAorKy0gICAgICAgIGRj LkRyYXdSZWN0YW5nbGUodG9wTGVmdFggLSBwZW5XaWR0aCwgdG9wTGVmdFkgLSBwZW5XaWR0aCwg bWF4WCArIHBlbldpZHRoICogMiArIDQsIG1heFkgKyBwZW5XaWR0aCAqIDIgKyA0KQorKysgICAg ICAgIGRjLkRyYXdSZWN0YW5nbGUoaW50KHRvcExlZnRYIC0gcGVuV2lkdGgpLCBpbnQodG9wTGVm dFkgLSBwZW5XaWR0aCksIGludChtYXhYICsgcGVuV2lkdGggKiAyICsgNCksIGludChtYXhZICsg cGVuV2lkdGggKiAyICsgNCkpCisrIAorKyAgICAgZGVmIEVyYXNlTGlua3Moc2VsZiwgZGMsIGF0 dGFjaG1lbnQgPSAtMSwgcmVjdXJzZSA9IEZhbHNlKToKKysgICAgICAgICAiIiIKKytAQCAtMjc2 OSw5ICsyNzY5LDkgQEAgZGVmIE9uRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgICAgIGRjLlNl dEJydXNoKHNlbGYuX2JydXNoKQorKyAKKysgICAgICAgICBpZiBzZWxmLl9jb3JuZXJSYWRpdXM6 CisrLSAgICAgICAgICAgIGRjLkRyYXdSb3VuZGVkUmVjdGFuZ2xlKHgxLCB5MSwgc2VsZi5fd2lk dGgsIHNlbGYuX2hlaWdodCwgc2VsZi5fY29ybmVyUmFkaXVzKQorKysgICAgICAgICAgICBkYy5E cmF3Um91bmRlZFJlY3RhbmdsZShpbnQoeDEpLCBpbnQoeTEpLCBzZWxmLl93aWR0aCwgc2VsZi5f aGVpZ2h0LCBzZWxmLl9jb3JuZXJSYWRpdXMpCisrICAgICAgICAgZWxzZToKKystICAgICAgICAg ICAgZGMuRHJhd1JlY3RhbmdsZSh4MSwgeTEsIHNlbGYuX3dpZHRoLCBzZWxmLl9oZWlnaHQpCisr KyAgICAgICAgICAgIGRjLkRyYXdSZWN0YW5nbGUoaW50KHgxKSwgaW50KHkxKSwgc2VsZi5fd2lk dGgsIHNlbGYuX2hlaWdodCkKKysgCisrICAgICBkZWYgR2V0Qm91bmRpbmdCb3hNaW4oc2VsZik6 CisrICAgICAgICAgIiIiR2V0IHRoZSBib3VuZGluZyBib3ggbWluaW11bS4iIiIKKytAQCAtMjg4 Miw3ICsyODgyLDcgQEAgZGVmIENyZWF0ZShzZWxmLCB0aGVfcG9pbnRzID0gTm9uZSk6CisrICAg ICAgICAgICAgICMgRHVwbGljYXRlIHRoZSBsaXN0IG9mIHBvaW50cworKyAgICAgICAgICAgICBz ZWxmLl9wb2ludHMgPSBbXQorKyAgICAgICAgICAgICBmb3IgcG9pbnQgaW4gdGhlX3BvaW50czoK KystICAgICAgICAgICAgICAgIG5ld19wb2ludCA9IHd4LlBvaW50KHBvaW50WzBdLCBwb2ludFsx XSkKKysrICAgICAgICAgICAgICAgIG5ld19wb2ludCA9IHd4LlBvaW50KGludChwb2ludFswXSks IGludChwb2ludFsxXSkpCisrICAgICAgICAgICAgICAgICBzZWxmLl9wb2ludHMuYXBwZW5kKG5l d19wb2ludCkKKysgICAgICAgICAgICAgc2VsZi5DYWxjdWxhdGVCb3VuZGluZ0JveCgpCisrICAg ICAgICAgICAgIHNlbGYuX29yaWdpbmFsV2lkdGggPSBzZWxmLl9ib3VuZFdpZHRoCisrQEAgLTM0 NDQsNyArMzQ0NCw3IEBAIGRlZiBPbkRyYXcoc2VsZiwgZGMpOgorKyAgICAgICAgICAgICAgICAg ZGMuU2V0UGVuKHNlbGYuX3BlbikKKysgICAgICAgICBpZiBzZWxmLl9icnVzaDoKKysgICAgICAg ICAgICAgZGMuU2V0QnJ1c2goc2VsZi5fYnJ1c2gpCisrLSAgICAgICAgZGMuRHJhd0VsbGlwc2Uo c2VsZi5feHBvcyAtIHNlbGYuR2V0V2lkdGgoKSAvIDIuMCwgc2VsZi5feXBvcyAtIHNlbGYuR2V0 SGVpZ2h0KCkgLyAyLjAsIHNlbGYuR2V0V2lkdGgoKSwgc2VsZi5HZXRIZWlnaHQoKSkKKysrICAg ICAgICBkYy5EcmF3RWxsaXBzZShpbnQoc2VsZi5feHBvcyAtIHNlbGYuR2V0V2lkdGgoKSAvIDIu MCksIGludChzZWxmLl95cG9zIC0gc2VsZi5HZXRIZWlnaHQoKSAvIDIuMCksIHNlbGYuR2V0V2lk dGgoKSwgc2VsZi5HZXRIZWlnaHQoKSkKKysgCisrICAgICBkZWYgU2V0U2l6ZShzZWxmLCB4LCB5 LCByZWN1cnNpdmUgPSBUcnVlKToKKysgICAgICAgICAiIiIKKytkaWZmIC0tZ2l0IGEvd3gvbGli L29nbC9ibXBzaGFwZS5weSBiL3d4L2xpYi9vZ2wvYm1wc2hhcGUucHkKKytpbmRleCBlZTI4NTk1 MjcuLmU1M2RkYjEzNiAxMDA2NDQKKystLS0gYS93eC9saWIvb2dsL2JtcHNoYXBlLnB5CisrKysr IGIvd3gvbGliL29nbC9ibXBzaGFwZS5weQorK0BAIC0zMiw3ICszMiw3IEBAIGRlZiBPbkRyYXco c2VsZiwgZGMpOgorKyAKKysgICAgICAgICB4ID0gc2VsZi5feHBvcyAtIHNlbGYuX2JpdG1hcC5H ZXRXaWR0aCgpIC8gMi4wCisrICAgICAgICAgeSA9IHNlbGYuX3lwb3MgLSBzZWxmLl9iaXRtYXAu R2V0SGVpZ2h0KCkgLyAyLjAKKystICAgICAgICBkYy5EcmF3Qml0bWFwKHNlbGYuX2JpdG1hcCwg eCwgeSwgVHJ1ZSkKKysrICAgICAgICBkYy5EcmF3Qml0bWFwKHNlbGYuX2JpdG1hcCwgaW50KHgp LCBpbnQoeSksIFRydWUpCisrIAorKyAgICAgZGVmIFNldFNpemUoc2VsZiwgdywgaCwgcmVjdXJz aXZlID0gVHJ1ZSk6CisrICAgICAgICAgIiIiCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9vZ2wvY29t cG9zaXQucHkgYi93eC9saWIvb2dsL2NvbXBvc2l0LnB5CisraW5kZXggYzNiNjIzOTUyLi5lZWNh YWZiM2YgMTAwNjQ0CisrLS0tIGEvd3gvbGliL29nbC9jb21wb3NpdC5weQorKysrKyBiL3d4L2xp Yi9vZ2wvY29tcG9zaXQucHkKKytAQCAtMTEzMSwxMSArMTEzMSwxMSBAQCBkZWYgT25EcmF3KHNl bGYsIGRjKToKKysgCisrICAgICAgICAgaWYgc2VsZi5fbGVmdFNpZGU6CisrICAgICAgICAgICAg IGRjLlNldFBlbihzZWxmLl9sZWZ0U2lkZVBlbikKKystICAgICAgICAgICAgZGMuRHJhd0xpbmUo eDEsIHkyLCB4MSwgeTEpCisrKyAgICAgICAgICAgIGRjLkRyYXdMaW5lKGludCh4MSksIGludCh5 MiksIGludCh4MSksIGludCh5MSkpCisrIAorKyAgICAgICAgIGlmIHNlbGYuX3RvcFNpZGU6Cisr ICAgICAgICAgICAgIGRjLlNldFBlbihzZWxmLl90b3BTaWRlUGVuKQorKy0gICAgICAgICAgICBk Yy5EcmF3TGluZSh4MSwgeTEsIHgyLCB5MSkKKysrICAgICAgICAgICAgZGMuRHJhd0xpbmUoaW50 KHgxKSwgaW50KHkxKSwgaW50KHgyKSwgaW50KHkxKSkKKysgCisrICAgICAgICAgIyBGb3IgdGVz dGluZyBwdXJwb3NlcywgZHJhdyBhIHJlY3RhbmdsZSBzbyB3ZSBrbm93CisrICAgICAgICAgIyBo b3cgYmlnIHRoZSBkaXZpc2lvbiBpcy4KKytkaWZmIC0tZ2l0IGEvd3gvbGliL29nbC9kaXZpZGVk LnB5IGIvd3gvbGliL29nbC9kaXZpZGVkLnB5CisraW5kZXggMGJmYjE5MTlmLi4wODA5YmU1OGMg MTAwNjQ0CisrLS0tIGEvd3gvbGliL29nbC9kaXZpZGVkLnB5CisrKysrIGIvd3gvbGliL29nbC9k aXZpZGVkLnB5CisrQEAgLTIzMSw3ICsyMzEsNyBAQCBkZWYgT25EcmF3Q29udGVudHMoc2VsZiwg ZGMpOgorKyAgICAgICAgICAgICAgICAgcmVnaW9uUGVuID0gcmVnaW9uLkdldEFjdHVhbFBlbigp CisrICAgICAgICAgICAgICAgICBpZiByZWdpb25QZW46CisrICAgICAgICAgICAgICAgICAgICAg ZGMuU2V0UGVuKHJlZ2lvblBlbikKKystICAgICAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShs ZWZ0WCwgeSwgcmlnaHRYLCB5KQorKysgICAgICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKGlu dChsZWZ0WCksIGludCh5KSwgaW50KHJpZ2h0WCksIGludCh5KSkKKysgCisrICAgICAgICAgICAg IGN1cnJlbnRZID0gYWN0dWFsWQorKyAKKytkaWZmIC0tZ2l0IGEvd3gvbGliL29nbC9saW5lcy5w eSBiL3d4L2xpYi9vZ2wvbGluZXMucHkKKytpbmRleCA5NDhiODVkODIuLjUwYzA3ZTA0NiAxMDA2 NDQKKystLS0gYS93eC9saWIvb2dsL2xpbmVzLnB5CisrKysrIGIvd3gvbGliL29nbC9saW5lcy5w eQorK0BAIC0xMjAwLDcgKzEyMDAsNyBAQCBkZWYgT25EcmF3KHNlbGYsIGRjKToKKysgCisrICAg ICAgICAgcG9pbnRzID0gW10KKysgICAgICAgICBmb3IgcG9pbnQgaW4gc2VsZi5fbGluZUNvbnRy b2xQb2ludHM6CisrLSAgICAgICAgICAgIHBvaW50cy5hcHBlbmQod3guUG9pbnQocG9pbnRbMF0s IHBvaW50WzFdKSkKKysrICAgICAgICAgICAgcG9pbnRzLmFwcGVuZCh3eC5Qb2ludChpbnQocG9p bnRbMF0pLCBpbnQocG9pbnRbMV0pKSkKKysgCisrICAgICAgICAgaWYgc2VsZi5faXNTcGxpbmU6 CisrICAgICAgICAgICAgIGRjLkRyYXdTcGxpbmUocG9pbnRzKQorK2RpZmYgLS1naXQgYS93eC9s aWIvb2dsL29nbG1pc2MucHkgYi93eC9saWIvb2dsL29nbG1pc2MucHkKKytpbmRleCA4NTg4YTcy YjcuLmE4YmUzZmM1MyAxMDA2NDQKKystLS0gYS93eC9saWIvb2dsL29nbG1pc2MucHkKKysrKysg Yi93eC9saWIvb2dsL29nbG1pc2MucHkKKytAQCAtMzAwLDEwICszMDAsMTAgQEAgZGVmIERyYXdG b3JtYXR0ZWRUZXh0KGRjLCB0ZXh0X2xpc3QsIHhwb3MsIHlwb3MsIHdpZHRoLCBoZWlnaHQsIGZv cm1hdE1vZGUpOgorKyAgICAgICAgIHlvZmZzZXQgPSB5cG9zIC0gaGVpZ2h0IC8gMi4wCisrIAor KyAgICAgIyArMSB0byBhbGxvdyBmb3Igcm91bmRpbmcgZXJyb3JzCisrLSAgICBkYy5TZXRDbGlw cGluZ1JlZ2lvbih4cG9zIC0gd2lkdGggLyAyLjAsIHlwb3MgLSBoZWlnaHQgLyAyLjAsIHdpZHRo ICsgMSwgaGVpZ2h0ICsgMSkKKysrICAgIGRjLlNldENsaXBwaW5nUmVnaW9uKGludCh4cG9zIC0g d2lkdGggLyAyLjApLCBpbnQoeXBvcyAtIGhlaWdodCAvIDIuMCksIGludCh3aWR0aCArIDEpLCBp bnQoaGVpZ2h0ICsgMSkpCisrIAorKyAgICAgZm9yIGxpbmUgaW4gdGV4dF9saXN0OgorKy0gICAg ICAgIGRjLkRyYXdUZXh0KGxpbmUuR2V0VGV4dCgpLCB4b2Zmc2V0ICsgbGluZS5HZXRYKCksIHlv ZmZzZXQgKyBsaW5lLkdldFkoKSkKKysrICAgICAgICBkYy5EcmF3VGV4dChsaW5lLkdldFRleHQo KSwgaW50KHhvZmZzZXQgKyBsaW5lLkdldFgoKSksIGludCh5b2Zmc2V0ICsgbGluZS5HZXRZKCkp KQorKyAKKysgICAgIGRjLkRlc3Ryb3lDbGlwcGluZ1JlZ2lvbigpCisrIAorK2RpZmYgLS1naXQg YS93eC9saWIvcGxvdC9leGFtcGxlcy9kZW1vLnB5IGIvd3gvbGliL3Bsb3QvZXhhbXBsZXMvZGVt by5weQorK2luZGV4IDk4ZmJhYWQzYS4uMDJiZWMxZDlmIDEwMDY0NAorKy0tLSBhL3d4L2xpYi9w bG90L2V4YW1wbGVzL2RlbW8ucHkKKysrKysgYi93eC9saWIvcGxvdC9leGFtcGxlcy9kZW1vLnB5 CisrQEAgLTk4NCw3ICs5ODQsNyBAQCBkZWYgRHJhd1BvaW50TGFiZWwoc2VsZiwgZGMsIG1EYXRh RGljdCk6CisrIAorKyAgICAgICAgIHN4LCBzeSA9IG1EYXRhRGljdFsic2NhbGVkWFkiXSAgIyBz Y2FsZWQgeCx5IG9mIGNsb3Nlc3QgcG9pbnQKKysgICAgICAgICAjIDEwYnkxMCBzcXVhcmUgY2Vu dGVyZWQgb24gcG9pbnQKKystICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlKHN4IC0gNSwgc3kgLSA1 LCAxMCwgMTApCisrKyAgICAgICAgZGMuRHJhd1JlY3RhbmdsZShpbnQoc3ggLSA1KSwgaW50KHN5 IC0gNSksIDEwLCAxMCkKKysgICAgICAgICBweCwgcHkgPSBtRGF0YURpY3RbInBvaW50WFkiXQor KyAgICAgICAgIGNOdW0gPSBtRGF0YURpY3RbImN1cnZlTnVtIl0KKysgICAgICAgICBwbnRJbiA9 IG1EYXRhRGljdFsicEluZGV4Il0KKytAQCAtOTkyLDcgKzk5Miw3IEBAIGRlZiBEcmF3UG9pbnRM YWJlbChzZWxmLCBkYywgbURhdGFEaWN0KToKKysgICAgICAgICAjIG1ha2UgYSBzdHJpbmcgdG8g ZGlzcGxheQorKyAgICAgICAgIHMgPSAiQ3J2IyAlaSwgJyVzJywgUHQuICglLjJmLCUuMmYpLCBQ dEluZCAlaSIgJSAoCisrICAgICAgICAgICAgIGNOdW0sIGxlZ2VuZCwgcHgsIHB5LCBwbnRJbikK KystICAgICAgICBkYy5EcmF3VGV4dChzLCBzeCwgc3kgKyAxKQorKysgICAgICAgIGRjLkRyYXdU ZXh0KHMsIGludChzeCksIGludChzeSArIDEpKQorKyAKKysgCisrIGRlZiBydW5fZGVtbygpOgor K2RpZmYgLS1naXQgYS93eC9saWIvcGxvdC9wbG90Y2FudmFzLnB5IGIvd3gvbGliL3Bsb3QvcGxv dGNhbnZhcy5weQorK2luZGV4IGRkM2Y3N2Q1Mi4uYWJlZTQ3ZWZiIDEwMDY0NAorKy0tLSBhL3d4 L2xpYi9wbG90L3Bsb3RjYW52YXMucHkKKysrKysgYi93eC9saWIvcGxvdC9wbG90Y2FudmFzLnB5 CisrQEAgLTE3NCwyNCArMTc0LDI0IEBAIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIGlkPXd4 LklEX0FOWSwgcG9zPXd4LkRlZmF1bHRQb3NpdGlvbiwKKysgCisrICAgICAgICAgIyBEZWZhdWx0 IFBlbnMKKysgICAgICAgICBzZWxmLl9ncmlkUGVuID0gd3guUGVuKHd4LkNvbG91cigxODAsIDE4 MCwgMTgwLCAyNTUpLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9p bnRTaXplWzBdLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuX3Bv aW50U2l6ZVswXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5QRU5TVFlM RV9ET1QpCisrIAorKyAgICAgICAgIHNlbGYuX2NlbnRlckxpbmVQZW4gPSB3eC5QZW4od3guUkVE LAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9pbnRTaXpl WzBdLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuX3Bv aW50U2l6ZVswXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5Q RU5TVFlMRV9TSE9SVF9EQVNIKQorKyAKKysgICAgICAgICBzZWxmLl9heGVzUGVuID0gd3guUGVu KHd4LkJMQUNLLAorKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9pbnRT aXplWzBdLAorKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNlbGYuX3BvaW50 U2l6ZVswXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3eC5QRU5TVFlMRV9T T0xJRCkKKysgCisrICAgICAgICAgc2VsZi5fdGlja1BlbiA9IHd4LlBlbih3eC5CTEFDSywKKyst ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvaW50U2l6ZVswXSwKKysrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLl9wb2ludFNpemVbMF0pLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3guUEVOU1RZTEVfU09MSUQpCisrICAgICAg ICAgc2VsZi5fdGlja0xlbmd0aCA9IHR1cGxlKC14ICogMiBmb3IgeCBpbiBzZWxmLl9wb2ludFNp emUpCisrIAorKyAgICAgICAgIHNlbGYuX2RpYWdvbmFsUGVuID0gd3guUGVuKHd4LkJMVUUsCisr LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcG9pbnRTaXplWzBdLAor KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludChzZWxmLl9wb2ludFNpemVb MF0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4LlBFTlNUWUxFX0RP VF9EQVNIKQorKyAKKysgICAgIGRlZiBTZXRDdXJzb3Ioc2VsZiwgY3Vyc29yKToKKytAQCAtMTky NSwxMCArMTkyNSwxMCBAQCBkZWYgX0RyYXcoc2VsZiwgZ3JhcGhpY3MsIHhBeGlzPU5vbmUsIHlB eGlzPU5vbmUsIGRjPU5vbmUpOgorKyAgICAgICAgICMgc2V0IGNsaXBwaW5nIGFyZWEgc28gZHJh d2luZyBkb2VzIG5vdCBvY2N1ciBvdXRzaWRlIGF4aXMgYm94CisrICAgICAgICAgcHR4LCBwdHks IHJlY3RXaWR0aCwgcmVjdEhlaWdodCA9IHNlbGYuX3BvaW50MkNsaWVudENvb3JkKHAxLCBwMikK KysgICAgICAgICAjIGFsbG93IGdyYXBoIHRvIG92ZXJsYXAgYXhpcyBsaW5lcyBieSBhZGRpbmcg dW5pdHMgdG8gdyBhbmQgaAorKy0gICAgICAgIGRjLlNldENsaXBwaW5nUmVnaW9uKHB0eCAqIHNl bGYuX3BvaW50U2l6ZVswXSwKKystICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdHkgKiBz ZWxmLl9wb2ludFNpemVbMV0sCisrLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjdFdp ZHRoICogc2VsZi5fcG9pbnRTaXplWzBdICsgMiwKKystICAgICAgICAgICAgICAgICAgICAgICAg ICAgICByZWN0SGVpZ2h0ICogc2VsZi5fcG9pbnRTaXplWzFdICsgMSkKKysrICAgICAgICBkYy5T ZXRDbGlwcGluZ1JlZ2lvbihpbnQocHR4ICogc2VsZi5fcG9pbnRTaXplWzBdKSwKKysrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQocHR5ICogc2VsZi5fcG9pbnRTaXplWzFdKSwKKysr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQocmVjdFdpZHRoICogc2VsZi5fcG9pbnRT aXplWzBdICsgMiksCisrKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50KHJlY3RIZWln aHQgKiBzZWxmLl9wb2ludFNpemVbMV0gKyAxKSkKKysgICAgICAgICAjIERyYXcgdGhlIGxpbmVz IGFuZCBtYXJrZXJzCisrICMgICAgICAgIHN0YXJ0ID0gX3RpbWUucGVyZl9jb3VudGVyKCkKKysg ICAgICAgICBncmFwaGljcy5kcmF3KGRjKQorK0BAIC0yMjgwLDcgKzIyODAsNyBAQCBkZWYgX2Ry YXdMZWdlbmQoc2VsZiwgZGMsIGdyYXBoaWNzLCByaHNXLCB0b3BILCBsZWdlbmRCb3hXSCwKKysg ICAgICAgICAgICAgcG50ID0gKCh0cmhjWzBdICsgbGVnZW5kTEhTICsgbGVnZW5kU3ltRXh0WzBd CisrICAgICAgICAgICAgICAgICAgICAgKyA1ICogc2VsZi5fcG9pbnRTaXplWzBdKSwKKysgICAg ICAgICAgICAgICAgICAgIHRyaGNbMV0gKyBzICsgbGluZUhlaWdodCAvIDIuIC0gbGVnZW5kVGV4 dEV4dFsxXSAvIDIpCisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0KG8uZ2V0TGVnZW5kKCksIHBu dFswXSwgcG50WzFdKQorKysgICAgICAgICAgICBkYy5EcmF3VGV4dChvLmdldExlZ2VuZCgpLCBp bnQocG50WzBdKSwgaW50KHBudFsxXSkpCisrICAgICAgICAgZGMuU2V0Rm9udChzZWxmLl9nZXRG b250KHNlbGYuX2ZvbnRTaXplQXhpcykpICAjIHJlc2V0CisrIAorKyAgICAgZGVmIF90aXRsZUxh Ymxlc1dIKHNlbGYsIGRjLCBncmFwaGljcyk6CisrQEAgLTIzMjksNyArMjMyOSw3IEBAIGRlZiBf ZHJhd1J1YmJlckJhbmQoc2VsZiwgY29ybmVyMSwgY29ybmVyMik6CisrICAgICAgICAgZGMuU2V0 UGVuKHd4LlBlbih3eC5CTEFDSykpCisrICAgICAgICAgZGMuU2V0QnJ1c2god3guQnJ1c2god3gu V0hJVEUsIHd4LkJSVVNIU1RZTEVfVFJBTlNQQVJFTlQpKQorKyAgICAgICAgIGRjLlNldExvZ2lj YWxGdW5jdGlvbih3eC5JTlZFUlQpCisrLSAgICAgICAgZGMuRHJhd1JlY3RhbmdsZShwdHgsIHB0 eSwgcmVjdFdpZHRoLCByZWN0SGVpZ2h0KQorKysgICAgICAgIGRjLkRyYXdSZWN0YW5nbGUoaW50 KHB0eCksIGludChwdHkpLCBpbnQocmVjdFdpZHRoKSwgaW50KHJlY3RIZWlnaHQpKQorKyAgICAg ICAgIGRjLlNldExvZ2ljYWxGdW5jdGlvbih3eC5DT1BZKQorKyAKKysgICAgIGRlZiBfZ2V0Rm9u dChzZWxmLCBzaXplKToKKytAQCAtMjQyMyw3ICsyNDIzLDcgQEAgZGVmIF9kcmF3R3JpZChzZWxm LCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQsIHh0aWNrcywgeXRpY2tzKToKKysgICAgICAgICAj IGluY3JlYXNlcyB0aGlja25lc3MgZm9yIHByaW50aW5nIG9ubHkKKysgICAgICAgICBwZW4gPSBz ZWxmLmdyaWRQZW4KKysgICAgICAgICBwZW5XaWR0aCA9IHNlbGYucHJpbnRlclNjYWxlICogcGVu LkdldFdpZHRoKCkKKystICAgICAgICBwZW4uU2V0V2lkdGgocGVuV2lkdGgpCisrKyAgICAgICAg cGVuLlNldFdpZHRoKGludChwZW5XaWR0aCkpCisrICAgICAgICAgZGMuU2V0UGVuKHBlbikKKysg CisrICAgICAgICAgeCwgeSwgd2lkdGgsIGhlaWdodCA9IHNlbGYuX3BvaW50MkNsaWVudENvb3Jk KHAxLCBwMikKKytAQCAtMjQzMiwxMyArMjQzMiwxMyBAQCBkZWYgX2RyYXdHcmlkKHNlbGYsIGRj LCBwMSwgcDIsIHNjYWxlLCBzaGlmdCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAgICAgICBp ZiBzZWxmLmVuYWJsZUdyaWRbMF06CisrICAgICAgICAgICAgICAgICBmb3IgeCwgXyBpbiB4dGlj a3M6CisrICAgICAgICAgICAgICAgICAgICAgcHQgPSBzY2FsZV9hbmRfc2hpZnRfcG9pbnQoeCwg cDFbMV0sIHNjYWxlLCBzaGlmdCkKKystICAgICAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShw dFswXSwgcHRbMV0sIHB0WzBdLCBwdFsxXSAtIGhlaWdodCkKKysrICAgICAgICAgICAgICAgICAg ICBkYy5EcmF3TGluZShpbnQocHRbMF0pLCBpbnQocHRbMV0pLCBpbnQocHRbMF0pLCBpbnQocHRb MV0gLSBoZWlnaHQpKQorKyAKKysgICAgICAgICBpZiBzZWxmLl95U3BlYyAhPSAnbm9uZSc6Cisr ICAgICAgICAgICAgIGlmIHNlbGYuZW5hYmxlR3JpZFsxXToKKysgICAgICAgICAgICAgICAgIGZv ciB5LCBsYWJlbCBpbiB5dGlja3M6CisrICAgICAgICAgICAgICAgICAgICAgcHQgPSBzY2FsZV9h bmRfc2hpZnRfcG9pbnQocDFbMF0sIHksIHNjYWxlLCBzaGlmdCkKKystICAgICAgICAgICAgICAg ICAgICBkYy5EcmF3TGluZShwdFswXSwgcHRbMV0sIHB0WzBdICsgd2lkdGgsIHB0WzFdKQorKysg ICAgICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKGludChwdFswXSksIGludChwdFsxXSksIGlu dChwdFswXSArIHdpZHRoKSwgaW50KHB0WzFdKSkKKysgCisrICAgICBAVGVtcFN0eWxlKCdwZW4n KQorKyAgICAgZGVmIF9kcmF3VGlja3Moc2VsZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0LCB4 dGlja3MsIHl0aWNrcyk6CisrQEAgLTI0NzEsNyArMjQ3MSw3IEBAIGRlZiBfZHJhd1RpY2tzKHNl bGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBzaGlmdCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAg ICMgaW5jcmVhc2VzIHRoaWNrbmVzcyBmb3IgcHJpbnRpbmcgb25seQorKyAgICAgICAgIHBlbiA9 IHNlbGYudGlja1BlbgorKyAgICAgICAgIHBlbldpZHRoID0gc2VsZi5wcmludGVyU2NhbGUgKiBw ZW4uR2V0V2lkdGgoKQorKy0gICAgICAgIHBlbi5TZXRXaWR0aChwZW5XaWR0aCkKKysrICAgICAg ICBwZW4uU2V0V2lkdGgoaW50KHBlbldpZHRoKSkKKysgICAgICAgICBkYy5TZXRQZW4ocGVuKQor KyAKKysgICAgICAgICAjIGxlbmd0aGVuIGxpbmVzIGZvciBwcmludGluZworK0BAIC0yNDg0LDEz ICsyNDg0LDEzIEBAIGRlZiBfZHJhd1RpY2tzKHNlbGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBzaGlm dCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAgICAgICAgICAgbGluZXMgPSBbXQorKyAgICAg ICAgICAgICAgICAgZm9yIHgsIGxhYmVsIGluIHh0aWNrczoKKysgICAgICAgICAgICAgICAgICAg ICBwdCA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludCh4LCBwMVsxXSwgc2NhbGUsIHNoaWZ0KQorKy0g ICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgocHRbMF0sIHB0WzFdLCBwdFswXSwgcHRb MV0gLSB4VGlja0xlbmd0aCkpCisrKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKChp bnQocHRbMF0pLCBpbnQocHRbMV0pLCBpbnQocHRbMF0pLCBpbnQocHRbMV0gLSB4VGlja0xlbmd0 aCkpKQorKyAgICAgICAgICAgICAgICAgZGMuRHJhd0xpbmVMaXN0KGxpbmVzKQorKyAgICAgICAg ICAgICBpZiB0aWNrcy50b3A6CisrICAgICAgICAgICAgICAgICBsaW5lcyA9IFtdCisrICAgICAg ICAgICAgICAgICBmb3IgeCwgbGFiZWwgaW4geHRpY2tzOgorKyAgICAgICAgICAgICAgICAgICAg IHB0ID0gc2NhbGVfYW5kX3NoaWZ0X3BvaW50KHgsIHAyWzFdLCBzY2FsZSwgc2hpZnQpCisrLSAg ICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKChwdFswXSwgcHRbMV0sIHB0WzBdLCBwdFsx XSArIHhUaWNrTGVuZ3RoKSkKKysrICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoKGlu dChwdFswXSksIGludChwdFsxXSksIGludChwdFswXSksIGludChwdFsxXSArIHhUaWNrTGVuZ3Ro KSkpCisrICAgICAgICAgICAgICAgICBkYy5EcmF3TGluZUxpc3QobGluZXMpCisrIAorKyAgICAg ICAgIGlmIHNlbGYueVNwZWMgIT0gJ25vbmUnOgorK0BAIC0yNDk4LDEzICsyNDk4LDEzIEBAIGRl ZiBfZHJhd1RpY2tzKHNlbGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBzaGlmdCwgeHRpY2tzLCB5dGlj a3MpOgorKyAgICAgICAgICAgICAgICAgbGluZXMgPSBbXQorKyAgICAgICAgICAgICAgICAgZm9y IHksIGxhYmVsIGluIHl0aWNrczoKKysgICAgICAgICAgICAgICAgICAgICBwdCA9IHNjYWxlX2Fu ZF9zaGlmdF9wb2ludChwMVswXSwgeSwgc2NhbGUsIHNoaWZ0KQorKy0gICAgICAgICAgICAgICAg ICAgIGxpbmVzLmFwcGVuZCgocHRbMF0sIHB0WzFdLCBwdFswXSArIHlUaWNrTGVuZ3RoLCBwdFsx XSkpCisrKyAgICAgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKChpbnQocHRbMF0pLCBpbnQo cHRbMV0pLCBpbnQocHRbMF0gKyB5VGlja0xlbmd0aCksIGludChwdFsxXSkpKQorKyAgICAgICAg ICAgICAgICAgZGMuRHJhd0xpbmVMaXN0KGxpbmVzKQorKyAgICAgICAgICAgICBpZiB0aWNrcy5y aWdodDoKKysgICAgICAgICAgICAgICAgIGxpbmVzID0gW10KKysgICAgICAgICAgICAgICAgIGZv ciB5LCBsYWJlbCBpbiB5dGlja3M6CisrICAgICAgICAgICAgICAgICAgICAgcHQgPSBzY2FsZV9h bmRfc2hpZnRfcG9pbnQocDJbMF0sIHksIHNjYWxlLCBzaGlmdCkKKystICAgICAgICAgICAgICAg ICAgICBsaW5lcy5hcHBlbmQoKHB0WzBdLCBwdFsxXSwgcHRbMF0gLSB5VGlja0xlbmd0aCwgcHRb MV0pKQorKysgICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgoaW50KHB0WzBdKSwgaW50 KHB0WzFdKSwgaW50KHB0WzBdIC0geVRpY2tMZW5ndGgpLCBpbnQocHRbMV0pKSkKKysgICAgICAg ICAgICAgICAgIGRjLkRyYXdMaW5lTGlzdChsaW5lcykKKysgCisrICAgICBAVGVtcFN0eWxlKCdw ZW4nKQorK0BAIC0yNTMxLDI1ICsyNTMxLDI1IEBAIGRlZiBfZHJhd0NlbnRlckxpbmVzKHNlbGYs IGRjLCBwMSwgcDIsIHNjYWxlLCBzaGlmdCk6CisrICAgICAgICAgIyBpbmNyZWFzZXMgdGhpY2tu ZXNzIGZvciBwcmludGluZyBvbmx5CisrICAgICAgICAgcGVuID0gc2VsZi5jZW50ZXJMaW5lUGVu CisrICAgICAgICAgcGVuV2lkdGggPSBzZWxmLnByaW50ZXJTY2FsZSAqIHBlbi5HZXRXaWR0aCgp CisrLSAgICAgICAgcGVuLlNldFdpZHRoKHBlbldpZHRoKQorKysgICAgICAgIHBlbi5TZXRXaWR0 aChpbnQocGVuV2lkdGgpKQorKyAgICAgICAgIGRjLlNldFBlbihwZW4pCisrIAorKyAgICAgICAg IGlmIHNlbGYuX2NlbnRlckxpbmVzRW5hYmxlZCBpbiAoJ0hvcml6b250YWwnLCBUcnVlKToKKysg ICAgICAgICAgICAgeTEgPSBzY2FsZVsxXSAqIHAxWzFdICsgc2hpZnRbMV0KKysgICAgICAgICAg ICAgeTIgPSBzY2FsZVsxXSAqIHAyWzFdICsgc2hpZnRbMV0KKysgICAgICAgICAgICAgeSA9ICh5 MSAtIHkyKSAvIDIuMCArIHkyCisrLSAgICAgICAgICAgIGRjLkRyYXdMaW5lKHNjYWxlWzBdICog cDFbMF0gKyBzaGlmdFswXSwKKystICAgICAgICAgICAgICAgICAgICAgICAgeSwKKystICAgICAg ICAgICAgICAgICAgICAgICAgc2NhbGVbMF0gKiBwMlswXSArIHNoaWZ0WzBdLAorKy0gICAgICAg ICAgICAgICAgICAgICAgICB5KQorKysgICAgICAgICAgICBkYy5EcmF3TGluZShpbnQoc2NhbGVb MF0gKiBwMVswXSArIHNoaWZ0WzBdKSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgaW50KHkp LAorKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2NhbGVbMF0gKiBwMlswXSArIHNoaWZ0 WzBdKSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgaW50KHkpKQorKyAgICAgICAgIGlmIHNl bGYuX2NlbnRlckxpbmVzRW5hYmxlZCBpbiAoJ1ZlcnRpY2FsJywgVHJ1ZSk6CisrICAgICAgICAg ICAgIHgxID0gc2NhbGVbMF0gKiBwMVswXSArIHNoaWZ0WzBdCisrICAgICAgICAgICAgIHgyID0g c2NhbGVbMF0gKiBwMlswXSArIHNoaWZ0WzBdCisrICAgICAgICAgICAgIHggPSAoeDEgLSB4Mikg LyAyLjAgKyB4MgorKy0gICAgICAgICAgICBkYy5EcmF3TGluZSh4LAorKy0gICAgICAgICAgICAg ICAgICAgICAgICBzY2FsZVsxXSAqIHAxWzFdICsgc2hpZnRbMV0sCisrLSAgICAgICAgICAgICAg ICAgICAgICAgIHgsCisrLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWzFdICogcDJbMV0g KyBzaGlmdFsxXSkKKysrICAgICAgICAgICAgZGMuRHJhd0xpbmUoaW50KHgpLAorKysgICAgICAg ICAgICAgICAgICAgICAgICBpbnQoc2NhbGVbMV0gKiBwMVsxXSArIHNoaWZ0WzFdKSwKKysrICAg ICAgICAgICAgICAgICAgICAgICAgaW50KHgpLAorKysgICAgICAgICAgICAgICAgICAgICAgICBp bnQoc2NhbGVbMV0gKiBwMlsxXSArIHNoaWZ0WzFdKSkKKysgCisrICAgICBAVGVtcFN0eWxlKCdw ZW4nKQorKyAgICAgZGVmIF9kcmF3RGlhZ29uYWxzKHNlbGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBz aGlmdCk6CisrQEAgLTI1NzUsMTkgKzI1NzUsMTkgQEAgZGVmIF9kcmF3RGlhZ29uYWxzKHNlbGYs IGRjLCBwMSwgcDIsIHNjYWxlLCBzaGlmdCk6CisrICAgICAgICAgIiIiCisrICAgICAgICAgcGVu ID0gc2VsZi5kaWFnb25hbFBlbgorKyAgICAgICAgIHBlbldpZHRoID0gc2VsZi5wcmludGVyU2Nh bGUgKiBwZW4uR2V0V2lkdGgoKQorKy0gICAgICAgIHBlbi5TZXRXaWR0aChwZW5XaWR0aCkKKysr ICAgICAgICBwZW4uU2V0V2lkdGgoaW50KHBlbldpZHRoKSkKKysgICAgICAgICBkYy5TZXRQZW4o cGVuKQorKyAKKysgICAgICAgICBpZiBzZWxmLl9kaWFnb25hbHNFbmFibGVkIGluICgnQm90dG9t bGVmdC1Ub3ByaWdodCcsIFRydWUpOgorKy0gICAgICAgICAgICBkYy5EcmF3TGluZShzY2FsZVsw XSAqIHAxWzBdICsgc2hpZnRbMF0sCisrLSAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlWzFd ICogcDFbMV0gKyBzaGlmdFsxXSwKKystICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGVbMF0g KiBwMlswXSArIHNoaWZ0WzBdLAorKy0gICAgICAgICAgICAgICAgICAgICAgICBzY2FsZVsxXSAq IHAyWzFdICsgc2hpZnRbMV0pCisrKyAgICAgICAgICAgIGRjLkRyYXdMaW5lKGludChzY2FsZVsw XSAqIHAxWzBdICsgc2hpZnRbMF0pLAorKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2Nh bGVbMV0gKiBwMVsxXSArIHNoaWZ0WzFdKSwKKysrICAgICAgICAgICAgICAgICAgICAgICAgaW50 KHNjYWxlWzBdICogcDJbMF0gKyBzaGlmdFswXSksCisrKyAgICAgICAgICAgICAgICAgICAgICAg IGludChzY2FsZVsxXSAqIHAyWzFdICsgc2hpZnRbMV0pKQorKyAgICAgICAgIGlmIHNlbGYuX2Rp YWdvbmFsc0VuYWJsZWQgaW4gKCdCb3R0b21yaWdodC1Ub3BsZWZ0JywgVHJ1ZSk6CisrLSAgICAg ICAgICAgIGRjLkRyYXdMaW5lKHNjYWxlWzBdICogcDFbMF0gKyBzaGlmdFswXSwKKystICAgICAg ICAgICAgICAgICAgICAgICAgc2NhbGVbMV0gKiBwMlsxXSArIHNoaWZ0WzFdLAorKy0gICAgICAg ICAgICAgICAgICAgICAgICBzY2FsZVswXSAqIHAyWzBdICsgc2hpZnRbMF0sCisrLSAgICAgICAg ICAgICAgICAgICAgICAgIHNjYWxlWzFdICogcDFbMV0gKyBzaGlmdFsxXSkKKysrICAgICAgICAg ICAgZGMuRHJhd0xpbmUoaW50KHNjYWxlWzBdICogcDFbMF0gKyBzaGlmdFswXSksCisrKyAgICAg ICAgICAgICAgICAgICAgICAgIGludChzY2FsZVsxXSAqIHAyWzFdICsgc2hpZnRbMV0pLAorKysg ICAgICAgICAgICAgICAgICAgICAgICBpbnQoc2NhbGVbMF0gKiBwMlswXSArIHNoaWZ0WzBdKSwK KysrICAgICAgICAgICAgICAgICAgICAgICAgaW50KHNjYWxlWzFdICogcDFbMV0gKyBzaGlmdFsx XSkpCisrIAorKyAgICAgQFRlbXBTdHlsZSgncGVuJykKKysgICAgIGRlZiBfZHJhd0F4ZXMoc2Vs ZiwgZGMsIHAxLCBwMiwgc2NhbGUsIHNoaWZ0KToKKytAQCAtMjYxNCw3ICsyNjE0LDcgQEAgZGVm IF9kcmF3QXhlcyhzZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQpOgorKyAgICAgICAgICMg aW5jcmVhc2VzIHRoaWNrbmVzcyBmb3IgcHJpbnRpbmcgb25seQorKyAgICAgICAgIHBlbiA9IHNl bGYuYXhlc1BlbgorKyAgICAgICAgIHBlbldpZHRoID0gc2VsZi5wcmludGVyU2NhbGUgKiBwZW4u R2V0V2lkdGgoKQorKy0gICAgICAgIHBlbi5TZXRXaWR0aChwZW5XaWR0aCkKKysrICAgICAgICBw ZW4uU2V0V2lkdGgoaW50KHBlbldpZHRoKSkKKysgICAgICAgICBkYy5TZXRQZW4ocGVuKQorKyAK KysgICAgICAgICBheGVzID0gc2VsZi5lbmFibGVBeGVzCisrQEAgLTI2MjMsMjQgKzI2MjMsMjQg QEAgZGVmIF9kcmF3QXhlcyhzZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQpOgorKyAgICAg ICAgICAgICAgICAgbG93ZXIsIHVwcGVyID0gcDFbMF0sIHAyWzBdCisrICAgICAgICAgICAgICAg ICBhMSA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludChsb3dlciwgcDFbMV0sIHNjYWxlLCBzaGlmdCkK KysgICAgICAgICAgICAgICAgIGEyID0gc2NhbGVfYW5kX3NoaWZ0X3BvaW50KHVwcGVyLCBwMVsx XSwgc2NhbGUsIHNoaWZ0KQorKy0gICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoYTFbMF0sIGEx WzFdLCBhMlswXSwgYTJbMV0pCisrKyAgICAgICAgICAgICAgICBkYy5EcmF3TGluZShpbnQoYTFb MF0pLCBpbnQoYTFbMV0pLCBpbnQoYTJbMF0pLCBpbnQoYTJbMV0pKQorKyAgICAgICAgICAgICBp ZiBheGVzLnRvcDoKKysgICAgICAgICAgICAgICAgIGxvd2VyLCB1cHBlciA9IHAxWzBdLCBwMlsw XQorKyAgICAgICAgICAgICAgICAgYTEgPSBzY2FsZV9hbmRfc2hpZnRfcG9pbnQobG93ZXIsIHAy WzFdLCBzY2FsZSwgc2hpZnQpCisrICAgICAgICAgICAgICAgICBhMiA9IHNjYWxlX2FuZF9zaGlm dF9wb2ludCh1cHBlciwgcDJbMV0sIHNjYWxlLCBzaGlmdCkKKystICAgICAgICAgICAgICAgIGRj LkRyYXdMaW5lKGExWzBdLCBhMVsxXSwgYTJbMF0sIGEyWzFdKQorKysgICAgICAgICAgICAgICAg ZGMuRHJhd0xpbmUoaW50KGExWzBdKSwgaW50KGExWzFdKSwgaW50KGEyWzBdKSwgaW50KGEyWzFd KSkKKysgCisrICAgICAgICAgaWYgc2VsZi55U3BlYyAhPSAnbm9uZSc6CisrICAgICAgICAgICAg IGlmIGF4ZXMubGVmdDoKKysgICAgICAgICAgICAgICAgIGxvd2VyLCB1cHBlciA9IHAxWzFdLCBw MlsxXQorKyAgICAgICAgICAgICAgICAgYTEgPSBzY2FsZV9hbmRfc2hpZnRfcG9pbnQocDFbMF0s IGxvd2VyLCBzY2FsZSwgc2hpZnQpCisrICAgICAgICAgICAgICAgICBhMiA9IHNjYWxlX2FuZF9z aGlmdF9wb2ludChwMVswXSwgdXBwZXIsIHNjYWxlLCBzaGlmdCkKKystICAgICAgICAgICAgICAg IGRjLkRyYXdMaW5lKGExWzBdLCBhMVsxXSwgYTJbMF0sIGEyWzFdKQorKysgICAgICAgICAgICAg ICAgZGMuRHJhd0xpbmUoaW50KGExWzBdKSwgaW50KGExWzFdKSwgaW50KGEyWzBdKSwgaW50KGEy WzFdKSkKKysgICAgICAgICAgICAgaWYgYXhlcy5yaWdodDoKKysgICAgICAgICAgICAgICAgIGxv d2VyLCB1cHBlciA9IHAxWzFdLCBwMlsxXQorKyAgICAgICAgICAgICAgICAgYTEgPSBzY2FsZV9h bmRfc2hpZnRfcG9pbnQocDJbMF0sIGxvd2VyLCBzY2FsZSwgc2hpZnQpCisrICAgICAgICAgICAg ICAgICBhMiA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludChwMlswXSwgdXBwZXIsIHNjYWxlLCBzaGlm dCkKKystICAgICAgICAgICAgICAgIGRjLkRyYXdMaW5lKGExWzBdLCBhMVsxXSwgYTJbMF0sIGEy WzFdKQorKysgICAgICAgICAgICAgICAgZGMuRHJhd0xpbmUoaW50KGExWzBdKSwgaW50KGExWzFd KSwgaW50KGEyWzBdKSwgaW50KGEyWzFdKSkKKysgCisrICAgICBAVGVtcFN0eWxlKCdwZW4nKQor KyAgICAgZGVmIF9kcmF3QXhlc1ZhbHVlcyhzZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQs IHh0aWNrcywgeXRpY2tzKToKKytAQCAtMjY4Niw4ICsyNjg2LDggQEAgZGVmIF9kcmF3QXhlc1Zh bHVlcyhzZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQsIHh0aWNrcywgeXRpY2tzKToKKysg ICAgICAgICAgICAgICAgICAgICB3ID0gZGMuR2V0VGV4dEV4dGVudChsYWJlbClbMF0KKysgICAg ICAgICAgICAgICAgICAgICBwdCA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludCh4LCBwMVsxXSwgc2Nh bGUsIHNoaWZ0KQorKyAgICAgICAgICAgICAgICAgICAgIGNvb3Jkcy5hcHBlbmQoCisrLSAgICAg ICAgICAgICAgICAgICAgICAgIChwdFswXSAtIHcvMiwKKystICAgICAgICAgICAgICAgICAgICAg ICAgIHB0WzFdICsgMiAqIHNlbGYuX3BvaW50U2l6ZVsxXSAtIHhUaWNrTGVuZ3RoKQorKysgICAg ICAgICAgICAgICAgICAgICAgICAoaW50KHB0WzBdIC0gdy8yKSwKKysrICAgICAgICAgICAgICAg ICAgICAgICAgIGludChwdFsxXSArIDIgKiBzZWxmLl9wb2ludFNpemVbMV0gLSB4VGlja0xlbmd0 aCkpCisrICAgICAgICAgICAgICAgICAgICAgKQorKyAgICAgICAgICAgICAgICAgZGMuRHJhd1Rl eHRMaXN0KGxhYmVscywgY29vcmRzKQorKyAKKytAQCAtMjY5OCw4ICsyNjk4LDggQEAgZGVmIF9k cmF3QXhlc1ZhbHVlcyhzZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQsIHh0aWNrcywgeXRp Y2tzKToKKysgICAgICAgICAgICAgICAgICAgICB3LCBoID0gZGMuR2V0VGV4dEV4dGVudChsYWJl bCkKKysgICAgICAgICAgICAgICAgICAgICBwdCA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludCh4LCBw MlsxXSwgc2NhbGUsIHNoaWZ0KQorKyAgICAgICAgICAgICAgICAgICAgIGNvb3Jkcy5hcHBlbmQo CisrLSAgICAgICAgICAgICAgICAgICAgICAgIChwdFswXSAtIHcvMiwKKystICAgICAgICAgICAg ICAgICAgICAgICAgIHB0WzFdIC0gMiAqIHNlbGYuX3BvaW50U2l6ZVsxXSAtIGggLSB4VGlja0xl bmd0aCkKKysrICAgICAgICAgICAgICAgICAgICAgICAgKGludChwdFswXSAtIHcvMiksCisrKyAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQocHRbMV0gLSAyICogc2VsZi5fcG9pbnRTaXplWzFd IC0gaCAtIHhUaWNrTGVuZ3RoKSkKKysgICAgICAgICAgICAgICAgICAgICApCisrICAgICAgICAg ICAgICAgICBkYy5EcmF3VGV4dExpc3QobGFiZWxzLCBjb29yZHMpCisrIAorK0BAIC0yNzEyLDgg KzI3MTIsOCBAQCBkZWYgX2RyYXdBeGVzVmFsdWVzKHNlbGYsIGRjLCBwMSwgcDIsIHNjYWxlLCBz aGlmdCwgeHRpY2tzLCB5dGlja3MpOgorKyAgICAgICAgICAgICAgICAgICAgIHcgPSBkYy5HZXRU ZXh0RXh0ZW50KGxhYmVsKVswXQorKyAgICAgICAgICAgICAgICAgICAgIHB0ID0gc2NhbGVfYW5k X3NoaWZ0X3BvaW50KHAxWzBdLCB5LCBzY2FsZSwgc2hpZnQpCisrICAgICAgICAgICAgICAgICAg ICAgY29vcmRzLmFwcGVuZCgKKystICAgICAgICAgICAgICAgICAgICAgICAgKHB0WzBdIC0gdyAt IDMgKiBzZWxmLl9wb2ludFNpemVbMF0gKyB5VGlja0xlbmd0aCwKKystICAgICAgICAgICAgICAg ICAgICAgICAgIHB0WzFdIC0gMC41ICogaCkKKysrICAgICAgICAgICAgICAgICAgICAgICAgKGlu dChwdFswXSAtIHcgLSAzICogc2VsZi5fcG9pbnRTaXplWzBdICsgeVRpY2tMZW5ndGgpLAorKysg ICAgICAgICAgICAgICAgICAgICAgICAgaW50KHB0WzFdIC0gMC41ICogaCkpCisrICAgICAgICAg ICAgICAgICAgICAgKQorKyAgICAgICAgICAgICAgICAgZGMuRHJhd1RleHRMaXN0KGxhYmVscywg Y29vcmRzKQorKyAKKytAQCAtMjcyNSw4ICsyNzI1LDggQEAgZGVmIF9kcmF3QXhlc1ZhbHVlcyhz ZWxmLCBkYywgcDEsIHAyLCBzY2FsZSwgc2hpZnQsIHh0aWNrcywgeXRpY2tzKToKKysgICAgICAg ICAgICAgICAgICAgICB3ID0gZGMuR2V0VGV4dEV4dGVudChsYWJlbClbMF0KKysgICAgICAgICAg ICAgICAgICAgICBwdCA9IHNjYWxlX2FuZF9zaGlmdF9wb2ludChwMlswXSwgeSwgc2NhbGUsIHNo aWZ0KQorKyAgICAgICAgICAgICAgICAgICAgIGNvb3Jkcy5hcHBlbmQoCisrLSAgICAgICAgICAg ICAgICAgICAgICAgIChwdFswXSArIDMgKiBzZWxmLl9wb2ludFNpemVbMF0gKyB5VGlja0xlbmd0 aCwKKystICAgICAgICAgICAgICAgICAgICAgICAgIHB0WzFdIC0gMC41ICogaCkKKysrICAgICAg ICAgICAgICAgICAgICAgICAgKGludChwdFswXSArIDMgKiBzZWxmLl9wb2ludFNpemVbMF0gKyB5 VGlja0xlbmd0aCksCisrKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQocHRbMV0gLSAwLjUg KiBoKSkKKysgICAgICAgICAgICAgICAgICAgICApCisrICAgICAgICAgICAgICAgICBkYy5EcmF3 VGV4dExpc3QobGFiZWxzLCBjb29yZHMpCisrIAorK0BAIC0yNzg1LDcgKzI3ODUsNyBAQCBkZWYg X2RyYXdQbG90VGl0bGUoc2VsZiwgZGMsIGdyYXBoaWNzLCBsaHNXLCByaHNXLCB0aXRsZVdIKToK KysgICAgICAgICAgICAgKyAoc2VsZi5wbG90Ym94X3NpemVbMF0gLSBsaHNXIC0gcmhzVykgLyAy LiAtIHRpdGxlV0hbMF0gLyAyLiwKKysgICAgICAgICAgICAgc2VsZi5wbG90Ym94X29yaWdpblsx XSAtIHNlbGYucGxvdGJveF9zaXplWzFdCisrICAgICAgICAgKQorKy0gICAgICAgIGRjLkRyYXdU ZXh0KGdyYXBoaWNzLnRpdGxlLCB0aXRsZVBvc1swXSwgdGl0bGVQb3NbMV0pCisrKyAgICAgICAg ZGMuRHJhd1RleHQoZ3JhcGhpY3MudGl0bGUsIGludCh0aXRsZVBvc1swXSksIGludCh0aXRsZVBv c1sxXSkpCisrIAorKyAgICAgZGVmIF9kcmF3QXhlc0xhYmVscyhzZWxmLCBkYywgZ3JhcGhpY3Ms IGxoc1csIHJoc1csIGJvdHRvbUgsIHRvcEgsCisrICAgICAgICAgICAgICAgICAgICAgICAgIHhM YWJlbFdILCB5TGFiZWxXSCk6CisrQEAgLTI4MDYsNyArMjgwNiw3IEBAIGRlZiBfZHJhd0F4ZXNM YWJlbHMoc2VsZiwgZGMsIGdyYXBoaWNzLCBsaHNXLCByaHNXLCBib3R0b21ILCB0b3BILAorKyAg ICAgICAgICAgICArIChzZWxmLnBsb3Rib3hfc2l6ZVswXSAtIGxoc1cgLSByaHNXKSAvIDIuIC0g eExhYmVsV0hbMF0gLyAyLiwKKysgICAgICAgICAgICAgc2VsZi5wbG90Ym94X29yaWdpblsxXSAt IHhMYWJlbFdIWzFdIC0geVRpY2tMZW5ndGgKKysgICAgICAgICApCisrLSAgICAgICAgZGMuRHJh d1RleHQoZ3JhcGhpY3MueExhYmVsLCB4TGFiZWxQb3NbMF0sIHhMYWJlbFBvc1sxXSkKKysrICAg ICAgICBkYy5EcmF3VGV4dChncmFwaGljcy54TGFiZWwsIGludCh4TGFiZWxQb3NbMF0pLCBpbnQo eExhYmVsUG9zWzFdKSkKKysgICAgICAgICB5TGFiZWxQb3MgPSAoCisrICAgICAgICAgICAgIHNl bGYucGxvdGJveF9vcmlnaW5bMF0gLSAzICogc2VsZi5fcG9pbnRTaXplWzBdICsgeFRpY2tMZW5n dGgsCisrICAgICAgICAgICAgIHNlbGYucGxvdGJveF9vcmlnaW5bMV0gLSBib3R0b21ICisrQEAg LTI4MTQsNyArMjgxNCw3IEBAIGRlZiBfZHJhd0F4ZXNMYWJlbHMoc2VsZiwgZGMsIGdyYXBoaWNz LCBsaHNXLCByaHNXLCBib3R0b21ILCB0b3BILAorKyAgICAgICAgICkKKysgICAgICAgICBpZiBn cmFwaGljcy55TGFiZWw6ICAjIGJ1ZyBmaXggZm9yIExpbnV4CisrICAgICAgICAgICAgIGRjLkRy YXdSb3RhdGVkVGV4dCgKKystICAgICAgICAgICAgICAgIGdyYXBoaWNzLnlMYWJlbCwgeUxhYmVs UG9zWzBdLCB5TGFiZWxQb3NbMV0sIDkwKQorKysgICAgICAgICAgICAgICAgZ3JhcGhpY3MueUxh YmVsLCBpbnQoeUxhYmVsUG9zWzBdKSwgaW50KHlMYWJlbFBvc1sxXSksIDkwKQorKyAKKysgICAg IEBUZW1wU3R5bGUoJ3BlbicpCisrICAgICBkZWYgX2RyYXdQbG90QXJlYUxhYmVscyhzZWxmLCBk YywgZ3JhcGhpY3MsIGxoc1csIHJoc1csIHRpdGxlV0gsCisrQEAgLTI5NDIsNyArMjk0Miw3IEBA IGRlZiBfYWRqdXN0U2Nyb2xsYmFycyhzZWxmKToKKysgICAgICAgICBpZiBwb3MgPj0gMDoKKysg ICAgICAgICAgICAgcGFnZXNpemUgPSBpbnQoKHJfY3VycmVudFsxXSAtIHJfY3VycmVudFswXSkg LyB1bml0KQorKyAKKystICAgICAgICAgICAgc2VsZi5zYl9ob3IuU2V0U2Nyb2xsYmFyKHBvcywg cGFnZXNpemUsIHNiZnVsbHJhbmdlLCBwYWdlc2l6ZSkKKysrICAgICAgICAgICAgc2VsZi5zYl9o b3IuU2V0U2Nyb2xsYmFyKHBvcywgcGFnZXNpemUsIGludChzYmZ1bGxyYW5nZSksIHBhZ2VzaXpl KQorKyAgICAgICAgICAgICBzZWxmLl9zYl94dW5pdCA9IHVuaXQKKysgICAgICAgICAgICAgbmVl ZFNjcm9sbGJhcnMgPSBuZWVkU2Nyb2xsYmFycyBvciAocGFnZXNpemUgIT0gc2JmdWxscmFuZ2Up CisrICAgICAgICAgZWxzZToKKytAQCAtMjk2NCw3ICsyOTY0LDcgQEAgZGVmIF9hZGp1c3RTY3Jv bGxiYXJzKHNlbGYpOgorKyAgICAgICAgIGlmIHBvcyA+PSAwOgorKyAgICAgICAgICAgICBwYWdl c2l6ZSA9IGludCgocl9jdXJyZW50WzFdIC0gcl9jdXJyZW50WzBdKSAvIHVuaXQpCisrICAgICAg ICAgICAgIHBvcyA9IChzYmZ1bGxyYW5nZSAtIDEgLSBwb3MgLSBwYWdlc2l6ZSkKKystICAgICAg ICAgICAgc2VsZi5zYl92ZXJ0LlNldFNjcm9sbGJhcihwb3MsIHBhZ2VzaXplLCBzYmZ1bGxyYW5n ZSwgcGFnZXNpemUpCisrKyAgICAgICAgICAgIHNlbGYuc2JfdmVydC5TZXRTY3JvbGxiYXIoaW50 KHBvcyksIHBhZ2VzaXplLCBpbnQoc2JmdWxscmFuZ2UpLCBwYWdlc2l6ZSkKKysgICAgICAgICAg ICAgc2VsZi5fc2JfeXVuaXQgPSB1bml0CisrICAgICAgICAgICAgIG5lZWRTY3JvbGxiYXJzID0g bmVlZFNjcm9sbGJhcnMgb3IgKHBhZ2VzaXplICE9IHNiZnVsbHJhbmdlKQorKyAgICAgICAgIGVs c2U6CisrZGlmZiAtLWdpdCBhL3d4L2xpYi9wbG90L3BvbHlvYmplY3RzLnB5IGIvd3gvbGliL3Bs b3QvcG9seW9iamVjdHMucHkKKytpbmRleCAyNmE1NGY4ZjcuLjcyNWIwMTY0ZSAxMDA2NDQKKyst LS0gYS93eC9saWIvcGxvdC9wb2x5b2JqZWN0cy5weQorKysrKyBiL3d4L2xpYi9wbG90L3BvbHlv YmplY3RzLnB5CisrQEAgLTQxNyw3ICs0MTcsNyBAQCBkZWYgZHJhdyhzZWxmLCBkYywgcHJpbnRl clNjYWxlLCBjb29yZD1Ob25lKToKKysgCisrICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29s b3VyLCB3eC5Db2xvdXIpOgorKyAgICAgICAgICAgICBjb2xvdXIgPSB3eC5Db2xvdXIoY29sb3Vy KQorKy0gICAgICAgIHBlbiA9IHd4LlBlbihjb2xvdXIsIHdpZHRoLCBzdHlsZSkKKysrICAgICAg ICBwZW4gPSB3eC5QZW4oY29sb3VyLCBpbnQod2lkdGgpLCBzdHlsZSkKKysgICAgICAgICBwZW4u U2V0Q2FwKHd4LkNBUF9CVVRUKQorKyAgICAgICAgIGRjLlNldFBlbihwZW4pCisrICAgICAgICAg aWYgY29vcmQgaXMgTm9uZToKKytAQCAtNTE4LDcgKzUxOCw3IEBAIGRlZiBkcmF3KHNlbGYsIGRj LCBwcmludGVyU2NhbGUsIGNvb3JkPU5vbmUpOgorKyAgICAgICAgIHN0eWxlID0gc2VsZi5hdHRy aWJ1dGVzWydzdHlsZSddCisrICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoY29sb3VyLCB3eC5D b2xvdXIpOgorKyAgICAgICAgICAgICBjb2xvdXIgPSB3eC5Db2xvdXIoY29sb3VyKQorKy0gICAg ICAgIHBlbiA9IHd4LlBlbihjb2xvdXIsIHdpZHRoLCBzdHlsZSkKKysrICAgICAgICBwZW4gPSB3 eC5QZW4oY29sb3VyLCBpbnQod2lkdGgpLCBzdHlsZSkKKysgICAgICAgICBwZW4uU2V0Q2FwKHd4 LkNBUF9ST1VORCkKKysgICAgICAgICBkYy5TZXRQZW4ocGVuKQorKyAgICAgICAgIGlmIGNvb3Jk IGlzIE5vbmU6CisrQEAgLTU5MCw3ICs1OTAsNyBAQCBkZWYgZHJhdyhzZWxmLCBkYywgcHJpbnRl clNjYWxlLCBjb29yZD1Ob25lKToKKysgICAgICAgICBpZiBmaWxsY29sb3VyIGFuZCBub3QgaXNp bnN0YW5jZShmaWxsY29sb3VyLCB3eC5Db2xvdXIpOgorKyAgICAgICAgICAgICBmaWxsY29sb3Vy ID0gd3guQ29sb3VyKGZpbGxjb2xvdXIpCisrIAorKy0gICAgICAgIGRjLlNldFBlbih3eC5QZW4o Y29sb3VyLCB3aWR0aCkpCisrKyAgICAgICAgZGMuU2V0UGVuKHd4LlBlbihjb2xvdXIsIGludCh3 aWR0aCkpKQorKyAgICAgICAgIGlmIGZpbGxjb2xvdXI6CisrICAgICAgICAgICAgIGRjLlNldEJy dXNoKHd4LkJydXNoKGZpbGxjb2xvdXIsIGZpbGxzdHlsZSkpCisrICAgICAgICAgZWxzZToKKytA QCAtNjE4LDYgKzYxOCw3IEBAIGRlZiBfY2lyY2xlKHNlbGYsIGRjLCBjb29yZHMsIHNpemU9MSk6 CisrICAgICAgICAgZGMuRHJhd0VsbGlwc2VMaXN0KHJlY3QuYXN0eXBlKG5wLmludDMyKSkKKysg CisrICAgICBkZWYgX2RvdChzZWxmLCBkYywgY29vcmRzLCBzaXplPTEpOgorKysgICAgICAgIGNv b3JkcyA9IFsoaW50KGNbMF0pLCBpbnQoY1sxXSkpIGZvciBjIGluIGNvb3Jkc10KKysgICAgICAg ICBkYy5EcmF3UG9pbnRMaXN0KGNvb3JkcykKKysgCisrICAgICBkZWYgX3NxdWFyZShzZWxmLCBk YywgY29vcmRzLCBzaXplPTEpOgorK0BAIC02OTksNyArNzAwLDcgQEAgZGVmIHNldF9wZW5fYW5k X2JydXNoKHNlbGYsIGRjLCBwcmludGVyU2NhbGUpOgorKyAKKysgICAgICAgICBpZiBub3QgaXNp bnN0YW5jZShwZW5jb2xvdXIsIHd4LkNvbG91cik6CisrICAgICAgICAgICAgIHBlbmNvbG91ciA9 IHd4LkNvbG91cihwZW5jb2xvdXIpCisrLSAgICAgICAgcGVuID0gd3guUGVuKHBlbmNvbG91ciwg cGVud2lkdGgsIHBlbnN0eWxlKQorKysgICAgICAgIHBlbiA9IHd4LlBlbihwZW5jb2xvdXIsIGlu dChwZW53aWR0aCksIHBlbnN0eWxlKQorKyAgICAgICAgIHBlbi5TZXRDYXAod3guQ0FQX0JVVFQp CisrIAorKyAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGxjb2xvdXIsIHd4LkNvbG91cik6 CisrQEAgLTc5MCw2ICs3OTEsNyBAQCBkZWYgZHJhdyhzZWxmLCBkYywgcHJpbnRlclNjYWxlLCBj b29yZD1Ob25lKToKKysgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihlcnJfc3RyLmZv cm1hdCh0eXBlKGJhcndpZHRoKSkpCisrIAorKyAgICAgICAgICAgICByZWN0cyA9IFtzZWxmLmNh bGNfcmVjdCh4LCB5LCB3KSBmb3IgeCwgeSwgdyBpbiBwdHNdCisrKyAgICAgICAgICAgIHJlY3Rz ID0gWyhpbnQoclswXSksIGludChyWzFdKSwgaW50KHJbMl0pLCBpbnQoclszXSkpIGZvciByIGlu IHJlY3RzXQorKyAgICAgICAgICAgICBkYy5EcmF3UmVjdGFuZ2xlTGlzdChyZWN0cykKKysgICAg ICAgICBlbHNlOgorKyAgICAgICAgICAgICBkYy5EcmF3TGluZXMoY29vcmQpICAjIGRyYXcgbGVn ZW5kIGxpbmUKKytAQCAtODU4LDYgKzg2MCw4IEBAIGRlZiBkcmF3KHNlbGYsIGRjLCBwcmludGVy U2NhbGUsIGNvb3JkPU5vbmUpOgorKyAgICAgICAgICAgICByZWN0cyA9IFtzZWxmLmNhbGNfcmVj dCh5LCBsb3csIGhpZ2gpCisrICAgICAgICAgICAgICAgICAgICAgIGZvciB5LCAobG93LCBoaWdo KQorKyAgICAgICAgICAgICAgICAgICAgICBpbiB6aXAoc2VsZi5oaXN0LCBzZWxmLmJpbnMpXQor KysgICAgICAgICAgICByZWN0cyA9IFsoaW50KHJbMF0pLCBpbnQoclsxXSksIGludChyWzJdKSwg aW50KHJbM10pKQorKysgICAgICAgICAgICAgICAgICAgICBmb3IgciBpbiByZWN0c10KKysgCisr ICAgICAgICAgICAgIGRjLkRyYXdSZWN0YW5nbGVMaXN0KHJlY3RzKQorKyAgICAgICAgIGVsc2U6 CisrQEAgLTExMTQsMTAgKzExMTgsMTAgQEAgZGVmIF9kcmF3X2lxcl9ib3goc2VsZiwgZGMsIHBy aW50ZXJTY2FsZSk6CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi5jdXJyZW50U2hpZnQpCisrIAorKyAgICAgICAgICMgcmVjdGFuZ2xlcyBhcmUgZHJhd24gKGxl ZnQsIHRvcCwgd2lkdGgsIGhlaWdodCkgc28gYWRqdXN0CisrLSAgICAgICAgaXFyX2JveCA9IFtp cXJfYm94WzBdWzBdLCAgICAgICAgICAgICAgICAgICAjIFggKGxlZnQpCisrLSAgICAgICAgICAg ICAgICAgICBpcXJfYm94WzBdWzFdLCAgICAgICAgICAgICAgICAgICAjIFkgKHRvcCkKKystICAg ICAgICAgICAgICAgICAgIGlxcl9ib3hbMV1bMF0gLSBpcXJfYm94WzBdWzBdLCAgICMgV2lkdGgK KystICAgICAgICAgICAgICAgICAgIGlxcl9ib3hbMV1bMV0gLSBpcXJfYm94WzBdWzFdXSAgICMg SGVpZ2h0CisrKyAgICAgICAgaXFyX2JveCA9IFtpbnQoaXFyX2JveFswXVswXSksICAgICAgICAg ICAgICAgICAgICMgWCAobGVmdCkKKysrICAgICAgICAgICAgICAgICAgIGludChpcXJfYm94WzBd WzFdKSwgICAgICAgICAgICAgICAgICAgIyBZICh0b3ApCisrKyAgICAgICAgICAgICAgICAgICBp bnQoaXFyX2JveFsxXVswXSAtIGlxcl9ib3hbMF1bMF0pLCAgICMgV2lkdGgKKysrICAgICAgICAg ICAgICAgICAgIGludChpcXJfYm94WzFdWzFdIC0gaXFyX2JveFswXVsxXSldICAgIyBIZWlnaHQK KysgCisrICAgICAgICAgYm94X3BlbiA9IHd4LlBlbih3eC5CTEFDSywgMywgd3guUEVOU1RZTEVf U09MSUQpCisrICAgICAgICAgYm94X2JydXNoID0gd3guQnJ1c2god3guR1JFRU4sIHd4LkJSVVNI U1RZTEVfU09MSUQpCisrQEAgLTE1MDMsNyArMTUwNyw3IEBAIGRlZiBPblByaW50UGFnZShzZWxm LCBwYWdlKToKKysgICAgICAgICBzZWxmLmdyYXBoLl9zZXRTaXplKHBsb3RBcmVhVywgcGxvdEFy ZWFIKQorKyAKKysgICAgICAgICAjIFNldCBvZmZzZXQgYW5kIHNjYWxlCisrLSAgICAgICAgZGMu U2V0RGV2aWNlT3JpZ2luKHBpeExlZnQsIHBpeFRvcCkKKysrICAgICAgICBkYy5TZXREZXZpY2VP cmlnaW4oaW50KHBpeExlZnQpLCBpbnQocGl4VG9wKSkKKysgCisrICAgICAgICAgIyBUaGlja2Vu IHVwIHBlbnMgYW5kIGluY3JlYXNlIG1hcmtlciBzaXplIGZvciBwcmludGluZworKyAgICAgICAg IHJhdGlvVyA9IGZsb2F0KHBsb3RBcmVhVykgLyBjbGllbnREY1NpemVbMF0KKytkaWZmIC0tZ2l0 IGEvd3gvbGliL3BvcHVwY3RsLnB5IGIvd3gvbGliL3BvcHVwY3RsLnB5CisraW5kZXggODgzYmU1 YWU1Li4yMzY1MDFmNmQgMTAwNjQ0CisrLS0tIGEvd3gvbGliL3BvcHVwY3RsLnB5CisrKysrIGIv d3gvbGliL3BvcHVwY3RsLnB5CisrQEAgLTEyNCw3ICsxMjQsNyBAQCBkZWYgRGlzcGxheShzZWxm KToKKysgICAgICAgICBzZWxmU2l6ZSA9IHNlbGYuR2V0U2l6ZSgpCisrICAgICAgICAgdGNTaXpl ID0gc2VsZi5jdHJsLkdldFNpemUoKQorKyAKKystICAgICAgICBwb3MueCAtPSAoc2VsZlNpemUu d2lkdGggLSB0Y1NpemUud2lkdGgpIC8gMgorKysgICAgICAgIHBvcy54IC09IChzZWxmU2l6ZS53 aWR0aCAtIHRjU2l6ZS53aWR0aCkgLy8gMgorKyAgICAgICAgIGlmIHBvcy54ICsgc2VsZlNpemUu d2lkdGggPiBkU2l6ZS53aWR0aDoKKysgICAgICAgICAgICAgcG9zLnggPSBkU2l6ZS53aWR0aCAt IHNlbGZTaXplLndpZHRoCisrICAgICAgICAgaWYgcG9zLnggPCAwOgorK2RpZmYgLS1naXQgYS93 eC9saWIvc2Nyb2xsZWRwYW5lbC5weSBiL3d4L2xpYi9zY3JvbGxlZHBhbmVsLnB5CisraW5kZXgg ZTRjNDgyYWY5Li4xZjc4M2VhOTcgMTAwNjQ0CisrLS0tIGEvd3gvbGliL3Njcm9sbGVkcGFuZWwu cHkKKysrKysgYi93eC9saWIvc2Nyb2xsZWRwYW5lbC5weQorK0BAIC0yMjIsNCArMjIyLDQgQEAg ZGVmIFNjcm9sbENoaWxkSW50b1ZpZXcoc2VsZiwgY2hpbGQpOgorKyAgICAgICAgICMgaWYgd2Ug bmVlZCB0byBhZGp1c3QKKysgICAgICAgICBpZiBuZXdfdnNfeCAhPSAtMSBvciBuZXdfdnNfeSAh PSAtMToKKysgICAgICAgICAgICAgI3ByaW50KCIlczogKCVzLCAlcykiICUgKHNlbGYuR2V0TmFt ZSgpLCBuZXdfdnNfeCwgbmV3X3ZzX3kpKQorKy0gICAgICAgICAgICBzZWxmLlNjcm9sbChuZXdf dnNfeCwgbmV3X3ZzX3kpCisrKyAgICAgICAgICAgIHNlbGYuU2Nyb2xsKGludChuZXdfdnNfeCks IGludChuZXdfdnNfeSkpCisrZGlmZiAtLWdpdCBhL3d4L2xpYi90aHJvYmJlci5weSBiL3d4L2xp Yi90aHJvYmJlci5weQorK2luZGV4IDk5NTRkNmIyNy4uZWU4YzUxMjA5IDEwMDY0NAorKy0tLSBh L3d4L2xpYi90aHJvYmJlci5weQorKysrKyBiL3d4L2xpYi90aHJvYmJlci5weQorK0BAIC0yMDAs MTEgKzIwMCwxMSBAQCBkZWYgRHJhdyhzZWxmLCBkYyk6CisrICAgICAgICAgIiIiCisrICAgICAg ICAgZGMuRHJhd0JpdG1hcChzZWxmLnN1Ym1hcHNbc2VsZi5zZXF1ZW5jZVtzZWxmLmN1cnJlbnRd XSwgMCwgMCwgVHJ1ZSkKKysgICAgICAgICBpZiBzZWxmLm92ZXJsYXkgYW5kIHNlbGYuc2hvd092 ZXJsYXk6CisrLSAgICAgICAgICAgIGRjLkRyYXdCaXRtYXAoc2VsZi5vdmVybGF5LCBzZWxmLm92 ZXJsYXlYLCBzZWxmLm92ZXJsYXlZLCBUcnVlKQorKysgICAgICAgICAgICBkYy5EcmF3Qml0bWFw KHNlbGYub3ZlcmxheSwgaW50KHNlbGYub3ZlcmxheVgpLCBpbnQoc2VsZi5vdmVybGF5WSksIFRy dWUpCisrICAgICAgICAgaWYgc2VsZi5sYWJlbCBhbmQgc2VsZi5zaG93TGFiZWw6CisrLSAgICAg ICAgICAgIGRjLkRyYXdUZXh0KHNlbGYubGFiZWwsIHNlbGYubGFiZWxYLCBzZWxmLmxhYmVsWSkK KysrICAgICAgICAgICAgZGMuRHJhd1RleHQoc2VsZi5sYWJlbCwgaW50KHNlbGYubGFiZWxYKSwg aW50KHNlbGYubGFiZWxZKSkKKysgICAgICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQod3gu V0hJVEUpCisrLSAgICAgICAgICAgIGRjLkRyYXdUZXh0KHNlbGYubGFiZWwsIHNlbGYubGFiZWxY LTEsIHNlbGYubGFiZWxZLTEpCisrKyAgICAgICAgICAgIGRjLkRyYXdUZXh0KHNlbGYubGFiZWws IGludChzZWxmLmxhYmVsWC0xKSwgaW50KHNlbGYubGFiZWxZLTEpKQorKyAKKysgCisrICAgICBk ZWYgT25QYWludChzZWxmLCBldmVudCk6CisrZGlmZiAtLWdpdCBhL3d4L2xpYi90aWNrZXIucHkg Yi93eC9saWIvdGlja2VyLnB5CisraW5kZXggMDRhYmYwZDQ0Li40ZTY4NGI0Y2QgMTAwNjQ0Cisr LS0tIGEvd3gvbGliL3RpY2tlci5weQorKysrKyBiL3d4L2xpYi90aWNrZXIucHkKKytAQCAtODYs NyArODYsNyBAQCBkZWYgU3RvcChzZWxmKToKKysgICAgIGRlZiBTdGFydChzZWxmKToKKysgICAg ICAgICAiIiJTdGFydHMgdGhlIHRleHQgbW92aW5nIiIiCisrICAgICAgICAgaWYgbm90IHNlbGYu dGltZXIuSXNSdW5uaW5nKCk6CisrLSAgICAgICAgICAgIHNlbGYudGltZXIuU3RhcnQoMTAwMCAv IHNlbGYuX2ZwcykKKysrICAgICAgICAgICAgc2VsZi50aW1lci5TdGFydCgxMDAwIC8vIHNlbGYu X2ZwcykKKysgCisrIAorKyAgICAgZGVmIElzVGlja2luZyhzZWxmKToKKytAQCAtMjA4LDcgKzIw OCw3IEBAIGRlZiBEcmF3VGV4dChzZWxmLCBkYyk6CisrICAgICAgICAgICAgIG9mZnggPSBzZWxm Ll9vZmZzZXQgLSBzZWxmLl9leHRlbnRbMF0KKysgICAgICAgICBlbHNlOgorKyAgICAgICAgICAg ICBvZmZ4ID0gc2VsZi5HZXRTaXplKClbMF0gLSBzZWxmLl9vZmZzZXQKKystICAgICAgICBvZmZ5 ID0gKHNlbGYuR2V0U2l6ZSgpWzFdIC0gc2VsZi5fZXh0ZW50WzFdKSAvIDIgI2NlbnRlcmVkIHZl cnRpY2FsbHkKKysrICAgICAgICBvZmZ5ID0gKHNlbGYuR2V0U2l6ZSgpWzFdIC0gc2VsZi5fZXh0 ZW50WzFdKSAvLyAyICNjZW50ZXJlZCB2ZXJ0aWNhbGx5CisrICAgICAgICAgZGMuRHJhd1RleHQo c2VsZi5fdGV4dCwgb2ZmeCwgb2ZmeSkKKysgCisrIAorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3d4 UHl0aG9uNC9wYXRjaGVzLzAwMDMtUHl0aG9uLTMuMTAtQUdXLUZsYXROb3RlYm9vay5wYXRjaCBi L3NyY3BrZ3Mvd3hQeXRob240L3BhdGNoZXMvMDAwMy1QeXRob24tMy4xMC1BR1ctRmxhdE5vdGVi b29rLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODhjM2Nh MTg5NjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy93eFB5dGhvbjQvcGF0Y2hlcy8wMDAz LVB5dGhvbi0zLjEwLUFHVy1GbGF0Tm90ZWJvb2sucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJv bSAxZDVmZDcyZGZmNjNkNjJkZDE5Yjc3ZTQ4OWQ0MTE1MjQ1ZDRkNDUzIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogU2NvdHQgVGFsYmVydCA8c3d0QHRlY2hpZS5uZXQ+CitEYXRlOiBE ZWMgMjggMjAyMSAwMjo1ODoxMiArMDAwMAorU3ViamVjdDogRml4IG1vcmUgUHl0aG9uIDMuMTAg aXNzdWVzIHdpdGggQUdXIEZsYXROb3RlYm9vayAoIzIwMzU3OTApCisKKworLS0tCisKK2RpZmYg LS1naXQgYS9hYTNkY2EwZTQwYmQwNzAxZTgyY2U0MDI5N2E5ODJiNWI4NDg0NGRjLnBhdGNoIGIv YWEzZGNhMGU0MGJkMDcwMWU4MmNlNDAyOTdhOTgyYjViODQ4NDRkYy5wYXRjaAorbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU4Yjc0YWMKKy0tLSAvZGV2L251bGwKKysrKyBi L2FhM2RjYTBlNDBiZDA3MDFlODJjZTQwMjk3YTk4MmI1Yjg0ODQ0ZGMucGF0Y2gKK0BAIC0wLDAg KzEsNDMgQEAKKytGcm9tIGFhM2RjYTBlNDBiZDA3MDFlODJjZTQwMjk3YTk4MmI1Yjg0ODQ0ZGMg TW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisrRnJvbTogU2NvdHQgVGFsYmVydCA8c3d0QHRlY2hp ZS5uZXQ+CisrRGF0ZTogTW9uLCAyNyBEZWMgMjAyMSAxOTo0ODo1NSAtMDUwMAorK1N1YmplY3Q6 IFtQQVRDSF0gRml4IGFkZGl0aW9uYWwgUHl0aG9uIDMuMTAgaXNzdWVzIHdpdGggQUdXIEZsYXRO b3RlYm9vaworKworKy0tLQorKyB3eC9saWIvYWd3L2ZsYXRub3RlYm9vay5weSB8IDE0ICsrKysr KystLS0tLS0tCisrIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25z KC0pCisrCisrZGlmZiAtLWdpdCBhL3d4L2xpYi9hZ3cvZmxhdG5vdGVib29rLnB5IGIvd3gvbGli L2Fndy9mbGF0bm90ZWJvb2sucHkKKytpbmRleCBkMzNmNzFkNTEuLjYxYmM0ZWZiMyAxMDA2NDQK KystLS0gYS93eC9saWIvYWd3L2ZsYXRub3RlYm9vay5weQorKysrKyBiL3d4L2xpYi9hZ3cvZmxh dG5vdGVib29rLnB5CisrQEAgLTkyNSwxNCArOTI1LDE0IEBAIGRlZiBEcmF3QnV0dG9uKGRjLCBy ZWN0LCBmb2N1cywgdXBwZXJUYWJzKToKKysgCisrICAgICBpZiBmb2N1czoKKysgICAgICAgICBp ZiB1cHBlclRhYnM6CisrLSAgICAgICAgICAgIGxlZnRQdCA9IHd4LlBvaW50KHJlY3QueCwgcmVj dC55ICsgKHJlY3QuaGVpZ2h0IC8gMTApKjgpCisrLSAgICAgICAgICAgIHJpZ2h0UHQgPSB3eC5Q b2ludChyZWN0LnggKyByZWN0LndpZHRoIC0gMiwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gMTAp KjgpCisrKyAgICAgICAgICAgIGxlZnRQdCA9IHd4LlBvaW50KHJlY3QueCwgaW50KHJlY3QueSAr IChyZWN0LmhlaWdodCAvIDEwKSo4KSkKKysrICAgICAgICAgICAgcmlnaHRQdCA9IHd4LlBvaW50 KHJlY3QueCArIHJlY3Qud2lkdGggLSAyLCBpbnQocmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gMTAp KjgpKQorKyAgICAgICAgIGVsc2U6CisrLSAgICAgICAgICAgIGxlZnRQdCA9IHd4LlBvaW50KHJl Y3QueCwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8gMTApKjUpCisrLSAgICAgICAgICAgIHJpZ2h0 UHQgPSB3eC5Qb2ludChyZWN0LnggKyByZWN0LndpZHRoIC0gMiwgcmVjdC55ICsgKHJlY3QuaGVp Z2h0IC8gMTApKjUpCisrKyAgICAgICAgICAgIGxlZnRQdCA9IHd4LlBvaW50KHJlY3QueCwgaW50 KHJlY3QueSArIChyZWN0LmhlaWdodCAvIDEwKSo1KSkKKysrICAgICAgICAgICAgcmlnaHRQdCA9 IHd4LlBvaW50KHJlY3QueCArIHJlY3Qud2lkdGggLSAyLCBpbnQocmVjdC55ICsgKHJlY3QuaGVp Z2h0IC8gMTApKjUpKQorKyAgICAgZWxzZToKKystICAgICAgICBsZWZ0UHQgPSB3eC5Qb2ludChy ZWN0LngsIHJlY3QueSArIChyZWN0LmhlaWdodCAvIDIpKQorKy0gICAgICAgIHJpZ2h0UHQgPSB3 eC5Qb2ludChyZWN0LnggKyByZWN0LndpZHRoIC0gMiwgcmVjdC55ICsgKHJlY3QuaGVpZ2h0IC8g MikpCisrKyAgICAgICAgbGVmdFB0ID0gd3guUG9pbnQocmVjdC54LCBpbnQocmVjdC55ICsgKHJl Y3QuaGVpZ2h0IC8gMikpKQorKysgICAgICAgIHJpZ2h0UHQgPSB3eC5Qb2ludChyZWN0LnggKyBy ZWN0LndpZHRoIC0gMiwgaW50KHJlY3QueSArIChyZWN0LmhlaWdodCAvIDIpKSkKKysgCisrICAg ICAjIERlZmluZSB0aGUgdG9wIHJlZ2lvbgorKyAgICAgdG9wID0gd3guUmVjdChyZWN0LkdldFRv cExlZnQoKSwgcmlnaHRQdCkKKytAQCAtMjc2Niw3ICsyNzY2LDcgQEAgZGVmIERyYXdUYWIoc2Vs ZiwgcGFnZUNvbnRhaW5lciwgZGMsIHBvc3gsIHRhYklkeCwgdGFiV2lkdGgsIHRhYkhlaWdodCwg YnRuU3RhdHUKKysgICAgICAgICBpZiBwYWdlVGV4dENvbG91ciBpcyBub3QgTm9uZToKKysgICAg ICAgICAgICAgZGMuU2V0VGV4dEZvcmVncm91bmQocGFnZVRleHRDb2xvdXIpCisrIAorKy0gICAg ICAgIGRjLkRyYXdUZXh0KHBjLkdldFBhZ2VUZXh0KHRhYklkeCksIHBvc3ggKyB0ZXh0T2Zmc2V0 LCBpbWFnZVlDb29yZCkKKysrICAgICAgICBkYy5EcmF3VGV4dChwYy5HZXRQYWdlVGV4dCh0YWJJ ZHgpLCBpbnQocG9zeCArIHRleHRPZmZzZXQpLCBpbWFnZVlDb29yZCkKKysgCisrICAgICAgICAg IyBkcmF3ICd4JyBvbiB0YWIgKGlmIGVuYWJsZWQpCisrICAgICAgICAgaWYgcGMuSGFzQUdXRmxh ZyhGTkJfWF9PTl9UQUIpIGFuZCB0YWJJZHggPT0gcGMuR2V0U2VsZWN0aW9uKCk6CmRpZmYgLS1n aXQgYS9zcmNwa2dzL3d4UHl0aG9uNC9wYXRjaGVzL3Jlc3RvcmUtZ2lsLXBzZXVkb2RjLnBhdGNo IGIvc3JjcGtncy93eFB5dGhvbjQvcGF0Y2hlcy9yZXN0b3JlLWdpbC1wc2V1ZG9kYy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjZmMjFlY2I3YTcxOAotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvd3hQeXRob240L3BhdGNoZXMvcmVzdG9yZS1naWwtcHNl dWRvZGMucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorQmFja3BvcnQgaHR0cHM6Ly9naXRodWIuY29t L3d4V2lkZ2V0cy9QaG9lbml4L3B1bGwvMTg0OQorUmVnYXJkaW5nIHNlZ2ZhdWx0IGFzIGluIGh0 dHBzOi8vZ2l0aHViLmNvbS9PU0dlby9ncmFzcy9pc3N1ZXMvMTEyMworCitGcm9tIDVjYWNlNDdh YWVjZTNjYzRmMmU2ZWE5N2Q3ZmQ1YmI4ZWQzMTZhYzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBSb2JpbiBEdW5uIDxyb2JpbkBhbGxkdW5uLmNvbT4KK0RhdGU6IFdlZCwgMTggTm92 IDIwMjAgMTA6NTI6NTMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVzdG9yZSBHSUwgYWNxdWlz aXRpb24gaW4gd3hQc2V1ZG9EQzo6RmluZE9iamVjdHMqCisKKy0tLQorIHNyYy9wc2V1ZG9kYy5j cHAgfCA4ICsrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgNSBkZWxl dGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wc2V1ZG9kYy5jcHAgYi9zcmMvcHNldWRvZGMu Y3BwCitpbmRleCA1ODkwZWQ3ZTIuLmVkNGJjZDA2YSAxMDA2NDQKKy0tLSBhL3NyYy9wc2V1ZG9k Yy5jcHAKKysrKyBiL3NyYy9wc2V1ZG9kYy5jcHAKK0BAIC00ODMsNyArNDgzLDcgQEAgYm9vbCB3 eFBzZXVkb0RDOjpHZXRJZEdyZXllZE91dChpbnQgaWQpCisgLy8gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFB5T2JqZWN0ICp3eFBzZXVkb0RDOjpGaW5kT2JqZWN0c0J5QkJveCh3eENvb3JkIHgsIHd4 Q29vcmQgeSkKKyB7CistICAgIC8vd3hQeUJsb2NrX3QgYmxvY2tlZCA9IHd4UHlCZWdpbkJsb2Nr VGhyZWFkcygpOworKyAgICB3eFB5VGhyZWFkQmxvY2tlciBibG9ja2VyOworICAgICBwZGNPYmpl Y3RMaXN0Ojpjb21wYXRpYmlsaXR5X2l0ZXJhdG9yIHB0ID0gbV9vYmplY3RsaXN0LkdldEZpcnN0 KCk7CisgICAgIHBkY09iamVjdCAqb2JqOworICAgICBQeU9iamVjdCogcHlMaXN0ID0gTlVMTDsK K0BAIC01MDEsNyArNTAxLDYgQEAgUHlPYmplY3QgKnd4UHNldWRvREM6OkZpbmRPYmplY3RzQnlC Qm94KHd4Q29vcmQgeCwgd3hDb29yZCB5KQorICAgICAgICAgfQorICAgICAgICAgcHQgPSBwdC0+ R2V0TmV4dCgpOworICAgICB9CistICAgIC8vd3hQeUVuZEJsb2NrVGhyZWFkcyhibG9ja2VkKTsK KyAgICAgcmV0dXJuIHB5TGlzdDsKKyB9CisgCitAQCAtNTExLDcgKzUxMCw3IEBAIFB5T2JqZWN0 ICp3eFBzZXVkb0RDOjpGaW5kT2JqZWN0c0J5QkJveCh3eENvb3JkIHgsIHd4Q29vcmQgeSkKKyBQ eU9iamVjdCAqd3hQc2V1ZG9EQzo6RmluZE9iamVjdHMod3hDb29yZCB4LCB3eENvb3JkIHksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHd4Q29vcmQgcmFkaXVzLCBjb25zdCB3 eENvbG9yJiBiZykKKyB7CistICAgIC8vd3hQeUJsb2NrX3QgYmxvY2tlZCA9IHd4UHlCZWdpbkJs b2NrVGhyZWFkcygpOworKyAgICB3eFB5VGhyZWFkQmxvY2tlciBibG9ja2VyOworICAgICBwZGNP YmplY3RMaXN0Ojpjb21wYXRpYmlsaXR5X2l0ZXJhdG9yIHB0ID0gbV9vYmplY3RsaXN0LkdldEZp cnN0KCk7CisgICAgIHBkY09iamVjdCAqb2JqOworICAgICBQeU9iamVjdCogcHlMaXN0ID0gTlVM TDsKK0BAIC02MTEsOCArNjEwLDcgQEAgUHlPYmplY3QgKnd4UHNldWRvREM6OkZpbmRPYmplY3Rz KHd4Q29vcmQgeCwgd3hDb29yZCB5LAorICAgICAgICAgbWFza2RjLlNlbGVjdE9iamVjdCh3eE51 bGxCaXRtYXApOworICAgICAgICAgbWVtZGMuU2VsZWN0T2JqZWN0KHd4TnVsbEJpdG1hcCk7Cisg ICAgIH0KKy0gICAgLy93eFB5RW5kQmxvY2tUaHJlYWRzKGJsb2NrZWQpOworLSAgICByZXR1cm4g cHlMaXN0OworKyAgICAgcmV0dXJuIHB5TGlzdDsKKyB9CisgCisgLy8gLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy93eFB5dGhvbjQvdGVtcGxhdGUgYi9zcmNwa2dzL3d4 UHl0aG9uNC90ZW1wbGF0ZQppbmRleCA1NTQxNzQxMDVhMzYuLmFmZWExYjU1YmY5MCAxMDA2NDQK LS0tIGEvc3JjcGtncy93eFB5dGhvbjQvdGVtcGxhdGUKKysrIGIvc3JjcGtncy93eFB5dGhvbjQv dGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd3eFB5dGhvbjQn CiBwa2duYW1lPXd4UHl0aG9uNAogdmVyc2lvbj00LjAuNwotcmV2aXNpb249NAorcmV2aXNpb249 NQogd3Jrc3JjPSJ3eFB5dGhvbi0ke3ZlcnNpb259IgogYnVpbGRfc3R5bGU9cHl0aG9uMy1tb2R1 bGUKIG1ha2VfYnVpbGRfYXJncz0iLS1za2lwLWJ1aWxkIgpAQCAtMTAsNiArMTAsNyBAQCBob3N0 bWFrZWRlcGVuZHM9InBrZy1jb25maWcgcHl0aG9uMy1zZXR1cHRvb2xzIHB5dGhvbjMtcGF0aGxp YjIiCiBtYWtlZGVwZW5kcz0icHl0aG9uMy1kZXZlbCB3eFdpZGdldHMtZ3RrMy1kZXZlbCBTREwy LWRldmVsIHdlYmtpdDJndGstZGV2ZWwKICBnc3QtcGx1Z2lucy1iYXNlMS1kZXZlbCIKIGRlcGVu ZHM9InB5dGhvbjMgcHl0aG9uMy1zaXggcHl0aG9uMy1udW1weSBweXRob24zLVBpbGxvdyIKK2No ZWNrZGVwZW5kcz0icHl0aG9uMy1zaXggcHl0aG9uMy1udW1weSBweXRob24zLVBpbGxvdyIKIHNo b3J0X2Rlc2M9Ild4V2lkZ2V0cyBHVUkgdG9vbGtpdCBsaWJyYXJ5IChQeXRob24zIEJpbmRpbmdz KSIKIG1haW50YWluZXI9Ikphc3BlciBDaGFuIDxqYXNwZXJjaGFuNTE1QGdtYWlsLmNvbT4iCiBs aWNlbnNlPSJjdXN0b206d3hXaW5kb3dzIgoKRnJvbSBhNjNhYWJmNWQ4OTAyNGFkOTFlZGJlODJk ODA4YTNjOWRkN2NhYWI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBcmphbiBNb3Nz ZWwgPGFyamFubW9zc2VsQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAxNCBGZWIgMjAyMiAyMTo1Njow MyArMDEwMApTdWJqZWN0OiBbUEFUQ0ggMDkvMTZdIGdyYXNzOiB1cGRhdGUgdG8gNy44LjdSQzE7 IHJlYnVpbGQgYWdhaW5zdCBsaWJnZGFsIGFuZAogcHJvagoKVmVyc2lvbiA3LjguN1JDMSBpbmNs dWRlcyBhIHdvcmthcm91bmQgZm9yIGEgd3hQeXRob24gaXNzdWUKaHR0cHM6Ly9naXRodWIuY29t L09TR2VvL2dyYXNzL2lzc3Vlcy8xOTcxI2lzc3VlY29tbWVudC05OTM2MjI2MTMKLS0tCiBzcmNw a2dzL2dyYXNzL3BhdGNoZXMvbXVzbC1idWlsZC1maXgucGF0Y2ggfCAgMTMgKysrCiBzcmNwa2dz L2dyYXNzL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgfCAxMjggKysrKysrKysrKysrKysr KystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMo LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2dyYXNzL3BhdGNoZXMvbXVzbC1idWlsZC1m aXgucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dyYXNzL3BhdGNoZXMvbXVzbC1idWlsZC1m aXgucGF0Y2ggYi9zcmNwa2dzL2dyYXNzL3BhdGNoZXMvbXVzbC1idWlsZC1maXgucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zNjRlZTMwYmU0ZDkKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2dyYXNzL3BhdGNoZXMvbXVzbC1idWlsZC1maXgucGF0Y2gK QEAgLTAsMCArMSwxMyBAQAorZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdpbnQ2NF90JyBwYXRj aCBmb3IgbXVzbAorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9naXMuaCBiL2luY2x1ZGUvZ2lzLmgK Ky0tLSBhL2luY2x1ZGUvZ2lzLmgKKysrKyBiL2luY2x1ZGUvZ2lzLmgKK0BAIC0yNCw2ICsyNCw3 IEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHN0ZGFyZy5oPgorICNpbmNsdWRl IDxzdGRib29sLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorIAorIAorIC8qIEdyYXNzIGFuZCBs b2NhbCBpbmNsdWRlIGZpbGVzICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL2dyYXNzL3RlbXBsYXRl IGIvc3JjcGtncy9ncmFzcy90ZW1wbGF0ZQppbmRleCBiY2NkNjkxYTgxMTYuLjE2N2ZhYTQwMTM4 NSAxMDA2NDQKLS0tIGEvc3JjcGtncy9ncmFzcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dyYXNz L3RlbXBsYXRlCkBAIC0xLDMwICsxLDExNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZ3Jhc3Mn CiBwa2duYW1lPWdyYXNzCi12ZXJzaW9uPTcuNi4xCi1yZXZpc2lvbj00Ci1fYmludmVyPSR7dmVy c2lvbi8vLi99Ci1fYmludmVyPSR7X2JpbnZlcjowOjJ9Cit2ZXJzaW9uPTcuOC43UkMxCityZXZp c2lvbj0xCitfYmludmVyc2lvbj0ke3ZlcnNpb24vLy4vfQorX2JpbnZlcnNpb249JHtfYmludmVy c2lvbjowOjJ9CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCi1jb25maWd1cmVfYXJncz0iLS1w cmVmaXg9XCR7REVTVERJUn0vdXNyL3NoYXJlIC0tYmluZGlyPVwke0RFU1RESVJ9L3Vzci9iaW4K LSAtLXdpdGgtZnJlZXR5cGUtaW5jbHVkZXM9JHtYQlBTX0NST1NTX0JBU0V9L3Vzci9pbmNsdWRl L2ZyZWV0eXBlMiIKLWhvc3RtYWtlZGVwZW5kcz0iZmxleCBsaWJnZGFsLXRvb2xzIHBrZy1jb25m aWcgcHl0aG9uLW51bXB5IHRhciIKLW1ha2VkZXBlbmRzPSJwcm9qLWRldmVsIHRpZmYtZGV2ZWwg bGliZ2RhbC1kZXZlbCBzcWxpdGUtZGV2ZWwKLSBmZnR3LWRldmVsIGNhaXJvLWRldmVsIGdsdS1k ZXZlbCB3eFB5dGhvbi1kZXZlbCIKLWRlcGVuZHM9InB5dGhvbi1udW1weSB3eFB5dGhvbiIKLXNo b3J0X2Rlc2M9Ikdlb2dyYXBoaWMgUmVzb3VyY2VzIEFuYWx5c2lzIFN1cHBvcnQgU3lzdGVtIC0g R0lTIgotbWFpbnRhaW5lcj0iQWxleCBKYXJvc2NoIDxyZXNlYXJjaEBhbGV4ai5hdD4iCitjb25m aWd1cmVfYXJncz0iLS1wcmVmaXg9L3Vzci9saWIKKyAtLWJpbmRpcj0vdXNyL2JpbgorIC0tbGli ZGlyPS91c3IvbGliCisgLS1saWJleGVjPS91c3IvbGliZXhlYworIC0tZW5hYmxlLWxhcmdlZmls ZQorIC0td2l0aC1ibGFzCisgLS13aXRoLWJsYXMtaW5jbHVkZXM9L3Vzci9pbmNsdWRlCisgLS13 aXRoLWJ6aXAyCisgLS13aXRoLWJ6bGliCisgLS13aXRoLWNhaXJvCisgLS13aXRoLWN4eAorIC0t d2l0aC1mcmVldHlwZQorIC0td2l0aC1mcmVldHlwZS1pbmNsdWRlcz0vdXNyL2luY2x1ZGUvZnJl ZXR5cGUyCisgLS13aXRoLWdkYWwKKyAtLXdpdGgtZ2VvcworIC0td2l0aC1nbHcKKyAtLXdpdGgt bGFwYWNrCisgLS13aXRoLWxhcGFjay1pbmNsdWRlcz0vdXNyL2luY2x1ZGUKKyAtLXdpdGgtbXlz cWwKKyAtLXdpdGgtbXlzcWwtaW5jbHVkZXM9L3Vzci9pbmNsdWRlL215c3FsCisgLS13aXRoLW5l dGNkZj0vdXNyL2Jpbi9uYy1jb25maWcKKyAtLXdpdGgtbmxzCisgLS13aXRoLW9wZW5tcAorIC0t d2l0aC1wb3N0Z3JlcworIC0td2l0aC1wb3N0Z3Jlcy1pbmNsdWRlcz0vdXNyL2luY2x1ZGUvcG9z dGdyZXNxbAorIC0td2l0aC1wb3N0Z3Jlcy1saWJzPS91c3IvbGliL3BzcWwxNC9saWIvcG9zdGdy ZXNxbAorIC0td2l0aC1wcm9qCisgLS13aXRoLXByb2otc2hhcmU9L3Vzci9zaGFyZQorIC0td2l0 aC1wdGhyZWFkCisgLS13aXRoLXB5dGhvbj0vdXNyL2Jpbi9weXRob24zLWNvbmZpZworIC0td2l0 aC1yZWFkbGluZQorIC0td2l0aC1yZWdleAorIC0td2l0aC1zcWxpdGUKKyAtLXdpdGgtd3h3aWRn ZXRzIgoraG9zdG1ha2VkZXBlbmRzPSJmbGV4CisgZ2V0dGV4dAorIGxpYmdkYWwtdG9vbHMKKyBw a2ctY29uZmlnCisgcHl0aG9uMy1udW1weQorIHB5dGhvbjMtc2l4CisgdGFyIgorbWFrZWRlcGVu ZHM9ImJpc29uCisgYmxhcy1kZXZlbAorIGJ6aXAyLWRldmVsCisgY2Fpcm8tZGV2ZWwKKyBmZnR3 LWRldmVsCisgZnJlZXR5cGUtZGV2ZWwKKyBnZW9zLWRldmVsCisgZ2V0dGV4dC1kZXZlbAorIGds dS1kZXZlbAorIGxhcGFjay1kZXZlbAorIGxpYmdkYWwtZGV2ZWwKKyBsaWJnb21wLWRldmVsCisg bGlibXlzcWxjbGllbnQtZGV2ZWwKKyBsaWJwbmctZGV2ZWwKKyBsaWJ6c3RkLWRldmVsCisgbmV0 Y2RmLWRldmVsCisgcG9zdGdyZXNxbC1saWJzLWRldmVsCisgcHJvai1kZXZlbAorIHB5dGhvbjMt ZGV2ZWwKKyBweXRob24zLVBpbGxvdworIHB5dGhvbjMtc2l4CisgcmVhZGxpbmUtZGV2ZWwKKyBz cWxpdGUtZGV2ZWwKKyB0aWZmLWRldmVsCisgemxpYi1kZXZlbCIKK2RlcGVuZHM9ImxpYmdkYWwg cHl0aG9uMy1udW1weSB3eFB5dGhvbjQiCitzaG9ydF9kZXNjPSJHZW9ncmFwaGljIFJlc291cmNl cyBBbmFseXNpcyBTdXBwb3J0IFN5c3RlbSIKK21haW50YWluZXI9Ik9ycGhhbmVkIDxvcnBoYW5A dm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJHUEwtMi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0 dHBzOi8vZ3Jhc3Mub3NnZW8ub3JnLyIKLWRpc3RmaWxlcz0iaHR0cHM6Ly9ncmFzcy5vc2dlby5v cmcvZ3Jhc3Mke19iaW52ZXJ9L3NvdXJjZS8ke3BrZ25hbWV9LSR7dmVyc2lvbn0udGFyLmd6Igot Y2hlY2tzdW09OWUyNWM5OWNhZmQxNmVkOGY1ZTJkY2E3NWI1YTEwZGMyYWYwNTY4ZGJlZGYzZmMz OWYxYzVhMGE5Yzg0MGIwYgotcHl0aG9uX3ZlcnNpb249MiAjdW52ZXJpZmllZAorZGlzdGZpbGVz PSJodHRwczovL2dpdGh1Yi5jb20vT1NHZW8vZ3Jhc3MvYXJjaGl2ZS8ke3ZlcnNpb259LnRhci5n eiIKK2NoZWNrc3VtPWZhMWQ2Y2NjMWZkZTRjYmVhMGJlMDk1MjU2NzI5NDIxYzQxYzFhMTJiZjYy MWZlMTI0ZDBkMmM4ZTgyNmRlNmEKIG5vY3Jvc3M9InRyaWVzIHRvIGV4ZWN1dGUgdGFyZ2V0IGJp bmFyaWVzIgogCitzaGxpYl9wcm92aWRlcz0iCisgbGliZ3Jhc3NfZGJtaWJhc2UuJHt2ZXJzaW9u JS4qfS5zbworIGxpYmdyYXNzX2RibWljbGllbnQuJHt2ZXJzaW9uJS4qfS5zbworIGxpYmdyYXNz X2dpcy4ke3ZlcnNpb24lLip9LnNvCisgbGliZ3Jhc3NfZ3Byb2ouJHt2ZXJzaW9uJS4qfS5zbwor IGxpYmdyYXNzX2ltYWdlcnkuJHt2ZXJzaW9uJS4qfS5zbworIGxpYmdyYXNzX3Jhc3Rlci4ke3Zl cnNpb24lLip9LnNvCisgbGliZ3Jhc3NfdmVjdG9yLiR7dmVyc2lvbiUuKn0uc28iCisKIHBvc3Rf aW5zdGFsbCgpIHsKLQkjIG1vdmUgZ3Jhc3M3NiBsaWJyYXJpZXMgZnJvbSAvdXNyL3NoYXJlIHRv IC91c3IvbGliCi0Jdm1rZGlyIHVzci9saWIKLQltdiAke0RFU1RESVJ9L3Vzci9zaGFyZS9ncmFz cyogJHtERVNURElSfS91c3IvbGliCi0JIyBmaXhlcyBhIHRvZG8gaW4gR0lTQkFTRQotCXNlZCAt aSAke0RFU1RESVJ9L3Vzci9iaW4vZ3Jhc3Mke19iaW52ZXJ9IFwKLQkJLWUgIjEwNXM7XChnaXNi YXNlID1cKS4qO1wxIFwiL3Vzci9saWIvZ3Jhc3MtJHt2ZXJzaW9ufVwiOyIKKwkjIHJlbW92ZSAk REVTVERJUiBpbiBwYXRocworCXZzZWQgLWkgLWUgInN8JHtERVNURElSfXx8IiBcCisJCSR7REVT VERJUn0vdXNyL2Jpbi9ncmFzczc4IFwKKwkJJHtERVNURElSfS91c3IvbGliL2dyYXNzNzgvZXRj L2ZvbnRjYXAgXAorCQkke0RFU1RESVJ9L3Vzci9saWIvZ3Jhc3M3OC9kZW1vbG9jYXRpb24vLmdy YXNzcmM3OCBcCisJCSR7REVTVERJUn0vdXNyL2xpYi9ncmFzczc4L2luY2x1ZGUvTWFrZS9QbGF0 Zm9ybS5tYWtlIFwKKwkJJHtERVNURElSfS91c3IvbGliL2dyYXNzNzgvaW5jbHVkZS9NYWtlL0dy YXNzLm1ha2UKKworCSMgbGQuc28uY29uZgorCW1rZGlyIC1wICR7REVTVERJUn0vZXRjL2xkLnNv LmNvbmYuZAorCWVjaG8gIi91c3IvbGliL2dyYXNzJHtfYmludmVyc2lvbn0vbGliIiA+JHtERVNU RElSfS9ldGMvbGQuc28uY29uZi5kL2dyYXNzJHtfYmludmVyc2lvbn0uY29uZgorCSMgcHJvZmls ZXMKKwlta2RpciAtcCAke0RFU1RESVJ9L2V0Yy9wcm9maWxlLmQKKwllY2hvICdleHBvcnQgUEFU SD0iL3Vzci9saWIvZ3Jhc3MnJHtfYmludmVyc2lvbn0nL2JpbjokUEFUSCInID4ke0RFU1RESVJ9 L2V0Yy9wcm9maWxlLmQvZ3Jhc3Mke19iaW52ZXJzaW9ufS5zaAorCisJdmluc3RhbGwgZ3Jhc3Mu cGMgNjQ0IHVzci9zaGFyZS9wa2djb25maWcKKwl2aW5zdGFsbCBndWkvaWNvbnMvZ3Jhc3MuZGVz a3RvcCA2NDQgdXNyL3NoYXJlL2FwcGxpY2F0aW9ucworCisJbG9jYWwgaWNvbiByZXMKKwlmb3Ig aWNvbiBpbiBndWkvaWNvbnMvZ3Jhc3MtWzAtOV0qeFswLTldKi5wbmc7IGRvCisJCXJlcz0kKGVj aG8gJGljb24gfHNlZCAtRSAtZSAnc3wuKi0oWzAtOV0reFswLTldKykucG5nfFwxfCcpCisJCXZp bnN0YWxsICRpY29uIDA2NDQgL3Vzci9zaGFyZS9pY29ucy9oaWNvbG9yLyRyZXMvYXBwcyBncmFz cy5wbmcKKwlkb25lCiB9CgpGcm9tIDIyNjlmY2EyZjY5ZDIwOWE5MzE0ZmJmNzhhM2VmMmRhNzRl OGVhYjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEFyamFuIE1vc3NlbCA8YXJqYW5t b3NzZWxAZ21haWwuY29tPgpEYXRlOiBTdW4sIDI3IEp1biAyMDIxIDIyOjE4OjQ2ICswMjAwClN1 YmplY3Q6IFtQQVRDSCAxMC8xNl0gbWVya2FhcnRvcjogcmVidWlsZCBhZ2FpbnN0IGxpYmdkYWwt My40LjEgYW5kCiBwcm9qLTcuMi4xCgotLS0KIHNyY3BrZ3MvbWVya2FhcnRvci90ZW1wbGF0ZSB8 IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbWVya2FhcnRvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvbWVya2FhcnRv ci90ZW1wbGF0ZQppbmRleCBjZmZjZmJhMWNmMDEuLjY2MDMzNzYxMTFmMiAxMDA2NDQKLS0tIGEv c3JjcGtncy9tZXJrYWFydG9yL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbWVya2FhcnRvci90ZW1w bGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ21lcmthYXJ0b3InCiBw a2duYW1lPW1lcmthYXJ0b3IKIHZlcnNpb249MC4xOS4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0y CiBidWlsZF9zdHlsZT1xbWFrZQogY29uZmlndXJlX2FyZ3M9IlNZU1RFTV9RVUFaSVA9MSBTWVNU RU1fUVVBWklQX0xERkxBR1M9LWxxdWF6aXA1IgogaG9zdG1ha2VkZXBlbmRzPSJxdDUtcW1ha2Ug bGliZ2RhbC10b29scyBxdDUtaG9zdC10b29scyIKCkZyb20gYjZkMWVlZWRiYzI3MDU1NDIzN2Ux Yjk0YmQ5NTFhMWUyZWRiMDM4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogQXJqYW4g TW9zc2VsIDxhcmphbm1vc3NlbEBnbWFpbC5jb20+CkRhdGU6IFR1ZSwgMjkgSnVuIDIwMjEgMDA6 MjE6MjcgKzAyMDAKU3ViamVjdDogW1BBVENIIDExLzE2XSBPcGVuT3JpZW50ZWVyaW5nLU1hcHBl cjogcmVidWlsZCBhZ2FpbnN0IGxpYmdkYWwtMy40LjEKIGFuZCBwcm9qLTcuMi4xCgotLS0KIHNy Y3BrZ3MvT3Blbk9yaWVudGVlcmluZy1NYXBwZXIvdGVtcGxhdGUgfCAxMSArKysrKysrKystLQog MSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL09wZW5PcmllbnRlZXJpbmctTWFwcGVyL3RlbXBsYXRlIGIvc3JjcGtncy9P cGVuT3JpZW50ZWVyaW5nLU1hcHBlci90ZW1wbGF0ZQppbmRleCBmZDI5YTA4ZTc1YjYuLjZhNjUy YTZhN2I5NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9PcGVuT3JpZW50ZWVyaW5nLU1hcHBlci90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL09wZW5PcmllbnRlZXJpbmctTWFwcGVyL3RlbXBsYXRlCkBAIC0x LDE0ICsxLDE1IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdPcGVuT3JpZW50ZWVyaW5nLU1hcHBl cicKIHBrZ25hbWU9T3Blbk9yaWVudGVlcmluZy1NYXBwZXIKIHZlcnNpb249MC45LjUKLXJldmlz aW9uPTEKK3JldmlzaW9uPTIKIHdya3NyYz0ibWFwcGVyLSR7dmVyc2lvbn0iCiBidWlsZF9zdHls ZT1jbWFrZQogaG9zdG1ha2VkZXBlbmRzPSJkb3h5Z2VuIHF0NS1ob3N0LXRvb2xzIHF0NS1wbHVn aW4tc3FsaXRlIHF0NS1xbWFrZSBxdDUtdG9vbHMiCiBtYWtlZGVwZW5kcz0icXQ1LWRldmVsIGNs aXBwZXItZGV2ZWwgcHJvai1kZXZlbCB6bGliLWRldmVsIGxpYmdkYWwtZGV2ZWwKICBxdDUtdG9v bHMtZGV2ZWwgc3FsaXRlLWRldmVsIGN1cHMtZGV2ZWwgJCh2b3B0X2lmIGxvY2F0aW9uIHF0NS1s b2NhdGlvbi1kZXZlbCkKICAkKHZvcHRfaWYgc2Vuc29ycyBxdDUtc2Vuc29ycy1kZXZlbCkKLSBx dDUtcGx1Z2luLW15c3FsIHF0NS1wbHVnaW4tb2RiYyBxdDUtcGx1Z2luLXBnc3FsIHF0NS1wbHVn aW4tc3FsaXRlIHF0NS1wbHVnaW4tdGRzIgorIHF0NS1wbHVnaW4tbXlzcWwgcXQ1LXBsdWdpbi1v ZGJjIHF0NS1wbHVnaW4tcGdzcWwgcXQ1LXBsdWdpbi1zcWxpdGUgcXQ1LXBsdWdpbi10ZHMKKyB0 aWZmLWRldmVsIGxpYmN1cmwtZGV2ZWwiCiBzaG9ydF9kZXNjPSJPcmllbnRlZXJpbmcgbWFwbWFr aW5nIHByb2dyYW0iCiBtYWludGFpbmVyPSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+IgogbGlj ZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKQEAgLTE4LDMgKzE5LDkgQEAgY2hlY2tzdW09NjE5MTUy Y2EwMWEzNzA4NzVjMTVlMTkzMDkxOGNlOTYxMjg0Y2NiZjVkMjM3MWMxNDdkNTBjYWY1ZTVjMmYw MAogCiBidWlsZF9vcHRpb25zPSJsb2NhdGlvbiBzZW5zb3JzIgogYnVpbGRfb3B0aW9uc19kZWZh dWx0PSJsb2NhdGlvbiBzZW5zb3JzIgorCitkb19jaGVjaygpIHsKKyAgICAjIHNlbnNvcnNfdCB0 ZXN0IGZhaWxzIG9uIHRlc3QgcnVubmVyCisJY2QgYnVpbGQKKwljdGVzdCAtRSAnc2Vuc29yc190 JworfQoKRnJvbSAzMGNkNzUwOGU4N2I1NDc2YTM4MDA0MzNkODg2MjliNjlhZmRhMWJlIE1vbiBT ZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2VsQGdtYWls LmNvbT4KRGF0ZTogVHVlLCAyOSBKdW4gMjAyMSAwMDozODozNSArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMTIvMTZdIG9zZzogcmVidWlsZCBhZ2FpbnN0IGxpYmdkYWwtMy40LjEsIGZpeCBsaWNlbnNl CgotLS0KIHNyY3BrZ3Mvb3NnL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NnL3Rl bXBsYXRlIGIvc3JjcGtncy9vc2cvdGVtcGxhdGUKaW5kZXggMDhiZjZkNGI2NTkxLi5mNTE1MzVj NTcxOWQgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NnL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvb3Nn L3RlbXBsYXRlCkBAIC0yLDcgKzIsNyBAQAogcGtnbmFtZT1vc2cKIHJldmVydHM9My42LjBfMQog dmVyc2lvbj0zLjQuMQotcmV2aXNpb249MTIKK3JldmlzaW9uPTEzCiB3cmtzcmM9T3BlblNjZW5l R3JhcGgtT3BlblNjZW5lR3JhcGgtJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxk X2hlbHBlcj0icWVtdSIKQEAgLTE5LDcgKzE5LDcgQEAgbWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2 ZWwgZ3RrZ2xleHQtZGV2ZWwgbGliY3VybC1kZXZlbCBnaWZsaWItZGV2ZWwgbGlicnN2Zy1kZXYK IGRlcGVuZHM9InhyYW5kciIKIHNob3J0X2Rlc2M9Ik9wZW5TY2VuZUdyYXBoOiBoaWdoIHBlcmZv cm1hbmNlIHJlYWwtdGltZSBncmFwaGljcyB0b29sa2l0IgogbWFpbnRhaW5lcj0iT3JwaGFuZWQg PG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWxpY2Vuc2U9Ik9TR1BMLTIuMC1vci1sYXRlciIKK2xp Y2Vuc2U9ImN1c3RvbTpPcGVuU2NlbmVHcmFwaC1QdWJsaWMtTGljZW5zZS0wLjAiCiBob21lcGFn ZT0iaHR0cDovL3d3dy5vcGVuc2NlbmVncmFwaC5vcmciCiBkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0 aHViLmNvbS9vcGVuc2NlbmVncmFwaC9PcGVuU2NlbmVHcmFwaC9hcmNoaXZlL09wZW5TY2VuZUdy YXBoLSR7dmVyc2lvbn0udGFyLmd6IgogY2hlY2tzdW09OTMwZWI0NmYwNTc4MWE3Njg4M2VjMTZj NWY0OWNmYjI5YTA1OTQyMWRiMTMxMDA1ZDc1YmVjNGQ3ODQwMWZkNQoKRnJvbSA0ZmZkNTY5OTkz MjRmMjYxNjYxNGY1ZDJhNTZlNTI1NThiOGI5YWI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBBcmphbiBNb3NzZWwgPGFyamFubW9zc2VsQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyOSBK dW4gMjAyMSAxNzozNTo0NyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTMvMTZdIHN1bW86IHVwZGF0 ZSB0byAxLjkuMjsgcmVidWlsZCBhZ2FpbnN0IGxpYmdkYWwtMy40LjEKIGFuZCBwcm9qLTcuMi4x CgotIEJ1aWxkIFRyYWFTLmphciB1c2luZyBNYXZlbiAoZml4ZXMgdGVzdHMpCi0gQWRkIEVpZ2Vu MyBkZXBlbmRlbmN5Ci0tLQogY29tbW9uL3NobGlicyAgICAgICAgIHwgIDIgKysKIHNyY3BrZ3Mv c3Vtby90ZW1wbGF0ZSB8IDIyICsrKysrKysrKysrKysrKystLS0tLS0KIDIgZmlsZXMgY2hhbmdl ZCwgMTggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb21tb24v c2hsaWJzIGIvY29tbW9uL3NobGlicwppbmRleCA2MmI1NzM5ODYwNTEuLmFlNGRlM2JkMTRiNiAx MDA2NDQKLS0tIGEvY29tbW9uL3NobGlicworKysgYi9jb21tb24vc2hsaWJzCkBAIC00MTI3LDMg KzQxMjcsNSBAQCBsaWJncmFzc19kYm1pYmFzZS43Ljguc28gZ3Jhc3MtNy44LjVfMQogbGliZ3Jh c3NfaW1hZ2VyeS43Ljguc28gZ3Jhc3MtNy44LjVfMQogbGlia21sY29udmVuaWVuY2Uuc28uMSBs aWJrbWwtMS4zLjBfMQogbW9kX3NwYXRpYWxpdGUuc28uNyBsaWJzcGF0aWFsaXRlLTUuMC4wXzEK K2xpYnN1bW9jcHAuc28gc3Vtby0xLjkuMl8xCitsaWJ0cmFjaWNwcC5zbyBzdW1vLTEuOS4yXzEK ZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0 ZQppbmRleCBlNzYwZmRkNDVhZWUuLjNjMGVlYTk5MTZhYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9z dW1vL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3Mvc3Vtby90ZW1wbGF0ZQpAQCAtMSwxOCArMSwyOCBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnc3VtbycKIHBrZ25hbWU9c3VtbwotdmVyc2lvbj0xLjUu MAotcmV2aXNpb249NAordmVyc2lvbj0xLjkuMgorcmV2aXNpb249MQogYnVpbGRfc3R5bGU9Y21h a2UKLXB5dGhvbl92ZXJzaW9uPTMKLWhvc3RtYWtlZGVwZW5kcz0ibGliZ2RhbC10b29scyBwa2ct Y29uZmlnIHN3aWcgcHl0aG9uMy1zZXR1cHRvb2xzIgotbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2 ZWwgZmZtcGVnLWRldmVsIGZveC1kZXZlbCBnbDJwcy1kZXZlbCBsaWJnZGFsLWRldmVsIGxpYnhl cmNlcy1jLWRldmVsIG9zZy1kZXZlbCBwcm9qLWRldmVsIgoraG9zdG1ha2VkZXBlbmRzPSJsaWJn ZGFsLXRvb2xzIHBrZy1jb25maWcgc3dpZyBweXRob24zLXNldHVwdG9vbHMKKyBhcGFjaGUtbWF2 ZW4gb3BlbmpkazExIGdpdCIKK21ha2VkZXBlbmRzPSJweXRob24zLWRldmVsIGZmbXBlZy1kZXZl bCBmb3gtZGV2ZWwgZ2wycHMtZGV2ZWwgbGliZ2RhbC1kZXZlbAorIGxpYnhlcmNlcy1jLWRldmVs IG9zZy1kZXZlbCBwcm9qLWRldmVsIGVpZ2VuIgorY2hlY2tkZXBlbmRzPSJndGVzdCIKIHNob3J0 X2Rlc2M9IlNVTU8gKFNpbXVsYXRpb24gb2YgVXJiYW4gTU9iaWxpdHkpIGFuZCBpbmNsdWRlZCBh cHBsaWNhdGlvbnMiCiBtYWludGFpbmVyPSJXYXJyaW9yIEdyYXBoIDxtYXJxdWVzQGxhcmNlcy51 ZWNlLmJyPiIKIGxpY2Vuc2U9IkVQTC0yLjAiCiBob21lcGFnZT0iaHR0cHM6Ly9zdW1vLmRsci5k ZSIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9zdW1vLmRsci5kZS9yZWxlYXNlcy8ke3ZlcnNpb259L3N1 bW8tc3JjLSR7dmVyc2lvbn0udGFyLmd6IgotY2hlY2tzdW09ZGNmNTMzOWZkZGEwNjU5ZmE0NGZj ZmQ2OWZlM2Y0ZTAzMDA5YWE5YTU5ODQ5NjI0ZjJhM2NmZTcyZWRhOWY4ZQorY2hlY2tzdW09MTkz YThhYjE0YmIzMDVkMzk2NzYyNWQ3NmNkMjkxZjVjNTViYjkwNjgxNzQ2NWYyYTEyYzJlNjlmNGI4 MDgxMworcHl0aG9uX3ZlcnNpb249MworCitwcmVfYnVpbGQoKSB7CisJY2QgdG9vbHMvY29udHJp YnV0ZWQvdHJhYXMKKwltdm4gcGFja2FnZQorCW12IHRhcmdldC90cmFhcyouamFyICR7d3Jrc3Jj fS9iaW4vVHJhYVMuamFyCit9CiAKIHBvc3RfaW5zdGFsbCgpIHsKIAlybSAtZiAke0RFU1RESVJ9 L3Vzci9zaGFyZS9zdW1vL3Rvb2xzL2xpYnN1bW8vKi5zbworCXJtIC1mICR7REVTVERJUn0vdXNy L3NoYXJlL3N1bW8vdG9vbHMvbGlidHJhY2kvX2xpYnRyYWNpLnNvCiB9CgpGcm9tIDAzZmEwZDM4 OGUxYmZjNDAyZDRiMDc4MjljOTBhZTBlMzkxNmM0OGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206IEFyamFuIE1vc3NlbCA8YXJqYW5tb3NzZWxAZ21haWwuY29tPgpEYXRlOiBUdWUsIDI5 IEp1biAyMDIxIDE4OjQzOjA1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAxNC8xNl0gdnRrOiByZWJ1 aWxkIGFnYWluc3QgcHJvai03LjIuMQoKLS0tCiBzcmNwa2dzL3Z0ay90ZW1wbGF0ZSB8IDIgKy0K IDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvdnRrL3RlbXBsYXRlIGIvc3JjcGtncy92dGsvdGVtcGxhdGUKaW5kZXggODU4 YWEzMWI5YzAzLi41NTNjZjkxOTg0NjUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvdnRrL3RlbXBsYXRl CisrKyBiL3NyY3BrZ3MvdnRrL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBm aWxlIGZvciAndnRrJwogcGtnbmFtZT12dGsKIHZlcnNpb249OS4wLjEKLXJldmlzaW9uPTcKK3Jl dmlzaW9uPTgKIHdya3NyYz1WVEstJHt2ZXJzaW9ufQogYnVpbGRfc3R5bGU9Y21ha2UKICMgdnRr IGNhbiBiZSBodWdlLCBlc3BlY2lhbGx5IHdpdGggLURWVEtfQlVJTERfQUxMX01PRFVMRVM9T04i CgpGcm9tIDQxNGRjYTU4ZjVjZGFiNmRjNGM5NTc2ZTY4ZjhiNTIzYzI2YzFiYzAgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206IEFyamFuIE1vc3NlbCA8YXJqYW5tb3NzZWxAZ21haWwuY29t PgpEYXRlOiBUdWUsIDI5IEp1biAyMDIxIDE5OjI0OjQzICswMjAwClN1YmplY3Q6IFtQQVRDSCAx NS8xNl0gb3NtMnBnc3FsOiByZWJ1aWxkIGFnYWluc3QgcHJvai03LjIuMQoKLS0tCiBzcmNwa2dz L29zbTJwZ3NxbC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigr KSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvb3NtMnBnc3FsL3RlbXBsYXRl IGIvc3JjcGtncy9vc20ycGdzcWwvdGVtcGxhdGUKaW5kZXggMWM1M2M0NTA1MDQ3Li4xZDVmNzFi NzAxNDAgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvb3NtMnBnc3FsL3RlbXBsYXRlCisrKyBiL3NyY3Br Z3Mvb3NtMnBnc3FsL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZv ciAnb3NtMnBnc3FsJwogcGtnbmFtZT1vc20ycGdzcWwKIHZlcnNpb249MS42LjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNtYWtlCiBob3N0bWFrZWRlcGVuZHM9ImJvb3N0 IgogbWFrZWRlcGVuZHM9ImV4cGF0LWRldmVsIHByb2otZGV2ZWwgYnppcDItZGV2ZWwgemxpYi1k ZXZlbCBib29zdC1kZXZlbAoKRnJvbSBmZmEzM2I4ZjYzZmU5NDU3NjZmMTQzZjkyMjlkYjk0Yzk3 MzQ4OTA0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBBcmphbiBNb3NzZWwgPGFyamFu bW9zc2VsQGdtYWlsLmNvbT4KRGF0ZTogVHVlLCAyOSBKdW4gMjAyMSAxOToyNjo1NyArMDIwMApT dWJqZWN0OiBbUEFUQ0ggMTYvMTZdIFh5R3JpYjogcmVidWlsZCBhZ2FpbnN0IHByb2otNy4yLjEK CkRvIG5vdCB1c2UgbmluamEgKCJ1bmtub3duIHRhcmdldCIgZXJyb3IpCi0tLQogc3JjcGtncy9Y eUdyaWIvdGVtcGxhdGUgfCA1ICsrKystCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9YeUdyaWIvdGVtcGxhdGUgYi9z cmNwa2dzL1h5R3JpYi90ZW1wbGF0ZQppbmRleCBlNGFhM2EyZTAyNjUuLjk5NWVjM2VlZWFiYiAx MDA2NDQKLS0tIGEvc3JjcGtncy9YeUdyaWIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9YeUdyaWIv dGVtcGxhdGUKQEAgLTEsOCArMSw5IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdYeUdyaWInCiBw a2duYW1lPVh5R3JpYgogdmVyc2lvbj0xLjIuNi4xCi1yZXZpc2lvbj0zCityZXZpc2lvbj00CiBi dWlsZF9zdHlsZT1jbWFrZQorbWFrZV9jbWQ9bWFrZQogaG9zdG1ha2VkZXBlbmRzPSJxdDUtZGV2 ZWwgcGtnLWNvbmZpZyIKIG1ha2VkZXBlbmRzPSJqYXNwZXItZGV2ZWwgbGlibm92YS1kZXZlbCBu ZXR0bGUtZGV2ZWwgcHJvai1kZXZlbCBxdDUtZGV2ZWwKICBxd3QtZGV2ZWwgbGlib3BlbmpwZWcy LWRldmVsIgpAQCAtMTMsNiArMTQsOCBAQCBob21lcGFnZT0iaHR0cHM6Ly9vcGVuZ3JpYnMub3Jn LyIKIGRpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL29wZW5ncmlicy9YeUdyaWIvYXJjaGl2 ZS92JHt2ZXJzaW9ufS50YXIuZ3oiCiBjaGVja3N1bT0yZGM2MDk5MjkzYWU2ZjdhNGJmYmZjMGNh YjU5MGNmN2FkNDgyNDFkNjA4ZTZkN2E3NmUzNTk2MWI5ZmMyMTU3CiAKK2V4cG9ydCBDTUFLRV9H RU5FUkFUT1I9IlVuaXggTWFrZWZpbGVzIgorCiBpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4K IAltYWtlX2J1aWxkX2FyZ3M9IkxJTks9JHtYQlBTX0NST1NTX1RSSVBMRVR9LWMrKyIKIGZpCg== --===============3343234327152910018==--