From mboxrd@z Thu Jan 1 00:00:00 1970 Received: (qmail 28469 invoked from network); 4 Mar 2022 18:12:31 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Mar 2022 18:12:31 -0000 Content-Type: multipart/mixed; boundary="===============8333498822677987645==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_Llvm13?= To: ml@inbox.vuxu.org From: motorto Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Fri, 04 Mar 2022 19:12:31 +0100 List-Id: Message-ID: <20220304181231.3cGK7hK7_B3HSXJcZOYHB9G5lIIUenYV4niJhomAfMU@z> GitHub notification mails are now in MIME to allow UTF8. --===============8333498822677987645== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgbW90b3J0byBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vbW90 b3J0by92b2lkLXBhY2thZ2VzIGxsdm0xMwpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92 b2lkLXBhY2thZ2VzL3B1bGwvMzU4OTUKCkxsdm0xMwpUaGlzIGFkZHMgTExWTSAxMyBhbmQgdXBk YXRlcyBmcm9tIExMVk0gMTIuDQoNCldvcmstaW4tcHJvZ3Jlc3MNCg0KVGhlIGZvbGxvd2luZyBw YWNrYWdlcyB3ZXJlIHJlbW92ZWQ6DQogKiBiZWlnbmV0IC0tIHVwc3RyZWFtIGlzIGRlYWQNCiAq IHJ1bmRpcmQgLS0gIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgdXBzdHJlYW0gd2hpY2ggcmVjb21t ZW5kcyB1c2luZyBkdW1iX3J1bnRpbWVfZGlyDQoNClRoZSBmb2xsb3dpbmcgcGFja2FnZXMgd2Vy ZSB1cGRhdGVkIG9yIHBhdGNoZWQ6DQogKiBpc3BjDQogKiBxdGNyZWF0b3INCiAqIHJpdmVyDQog KiB6aWcNCg0KUmVidWlsdCBwYWNrYWdlczoNCg0KKHJlYnVpbHQgYmFzZWQgb24gb3V0cHV0IG9m OiAgYHhyZXZzaGxpYiBsaWJsbHZtezEyLDEzfWAgKQ0KDQoNCiogU1BJUlYtTExWTS1UcmFuc2xh dG9yDQoqIGJjYw0KKiBicGZ0cmFjZSANCiogY2NscyANCiogY2xhenkgDQoqIGNvZGVsaXRlIA0K KiBnaGRsDQoqIGdub21lLWJ1aWxkZXINCiogaW5jbHVkZS13aGF0LXlvdS11c2UgDQoqIGp1Q2kr KyANCioga2RldmVsb3AgDQoqIGxkYw0KKiBtZXNhIA0KKiBxdDUgDQoqIHJ0YWdzIA0KKiBydXN0 DQoqIHNoaWJva2VuMiANCiogdGlsaXgNCg0KVXBkYXRlZCBUZW1wbGF0ZXM6DQoNCiogQ2hyb21p dW0NCg0KKEkgYW0gcHJvYmFibHkgbWlzc2luZyBzb21lIHBhY2thZ2VzKQ0KDQoNClRoYW5rcyBA REJMb3VpcyBmb3IgeW91ciBoYXJkIHdvcmshIA0KDQogW2NpIHNraXBdCgpBIHBhdGNoIGZpbGUg ZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzU4 OTUucGF0Y2ggaXMgYXR0YWNoZWQ= --===============8333498822677987645== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-llvm13-35895.patch" RnJvbSAyMWQ2ZTFiZGIzYTI3NTA1MDE4Y2ViNWQ0YjkwYTI4N2E2M2MwZjI3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9u aT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAy MDIxIDE2OjIxOjMwICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8zMF0gTmV3IHBhY2thZ2U6IGxs dm0xMy0xMy4wLjAKCi0tLQogY29tbW9uL3NobGlicyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgIDE2ICstCiBzcmNwa2dzL2NsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDIgKy0KIHNyY3BrZ3MvY2xhbmctYW5hbHl6ZXIgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgMiArLQogc3JjcGtncy9jbGFuZy10b29scy1leHRyYSAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBzcmNwa2dzL2xpYmNsYW5nICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDIgKy0KIHNyY3BrZ3MvbGliY2xhbmctY3BwICAgICAgICAgICAgICAgICAgICAgICAg ICB8ICAgMiArLQogc3JjcGtncy9saWJjeHggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICstCiBzcmNwa2dzL2xpYmN4eC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDIgKy0KIHNyY3BrZ3MvbGliY3h4YWJpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgMiArLQogc3JjcGtncy9saWJjeHhhYmktZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmNwa2dzL2xpYmxsdm0xMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogc3JjcGtncy9saWJvbXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBzcmNwa2dzL2xpYm9tcC1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIg Ky0KIHNyY3BrZ3MvbGxkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiAr LQogc3JjcGtncy9sbGQtZGV2ZWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICst CiBzcmNwa2dzL2xsZGIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IHNyY3BrZ3MvbGxkYi1kZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog c3JjcGtncy9sbHZtLWxpYnVud2luZCAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBz cmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIC4u Li9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaCAgICB8ICAgOSArCiAuLi5j bGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2ggfCAgNDQgKysKIC4uLi9w YXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoICB8IDExMCArKysrKwogLi4u L2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIHwgIDEzICsKIC4uLi9w YXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoICB8ICA0OCArKwogLi4uL2Nv bXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2ggICAgICAgIHwgIDExICsKIC4uLi9jb21w aWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCAgICB8ICAzNSArKwogLi4uL3BhdGNo ZXMvY29tcGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyICsrKwogc3JjcGtncy9s bHZtMTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaCAgICAgIHwgIDI2ICsrCiBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2ggICAgICAgfCAgMjIgKwogLi4uL2xsdm0xMy9w YXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIHwgIDExICsKIHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoICAgICB8ICAyNSArKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2ggIHwgIDYzICsrKwogc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxICsrCiBzcmNwa2dzL2xsdm0xMy9w YXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2ggICAgfCAgNTcgKysrCiAuLi4vcGF0Y2hlcy9sbHZt LTAwMi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAgfCAgMzAgKysKIC4uLi9wYXRjaGVzL2xsdm0t MDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAxMSArCiAuLi4vcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggICAgICAgfCAgMTggKwogLi4uL2xsdm0xMy9wYXRjaGVzL2xs dm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2ICsrCiAuLi4vcGF0Y2hlcy9sbHZtLTAwNi1h YXJjaDY0LW1mX2V4ZWMucGF0Y2ggICAgfCAgMjUgKysKIC4uLi9sbHZtMTMvcGF0Y2hlcy9wcGMz Mi1jb21waWxlci1ydC5wYXRjaCAgICB8ICAyMSArCiBzcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZSAg ICAgICAgICAgICAgICAgICAgICAgfCA0MjMgKysrKysrKysrKysrKysrKysrCiBzcmNwa2dzL2xs dm0xMy91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMgKwogNDIgZmlsZXMgY2hh bmdlZCwgMTE2NSBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEy MDAwMCBzcmNwa2dzL2xpYmxsdm0xMwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNoYWluLWluY2x1c2lvbi5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAy LWFkZC1tdXNsLXRyaXBsZXMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0x My9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVz bC1lbGZ2Mi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv Y29tcGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0 LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNo CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwMS1tdXNs LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAw Mi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTMvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdw aWMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0t MDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2 bTEzL3BhdGNoZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEz L3VwZGF0ZQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9zaGxpYnMgYi9jb21tb24vc2hsaWJzCmluZGV4 IDdjOTUwODhmZjc1Zi4uMTcwOTQ4YWJiYTI3IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisr KyBiL2NvbW1vbi9zaGxpYnMKQEAgLTk3MywxMSArOTczLDEyIEBAIGxpYnVjaGFyZGV0LnNvLjAg dWNoYXJkZXQtMC4wLjZfMQogbGliZ3Rrc291cmNldmlld21tLTMuMC5zby4wIGd0a3NvdXJjZXZp ZXdtbS0zLjIuMF8xCiBsaWJ5YWpsLnNvLjIgeWFqbC0yLjAuMV8xCiBsaWJjb25mdXNlLnNvLjIg Y29uZnVzZS0zLjIuMV8xCi1saWJsbGRiLnNvLjEyIGxsZGItMTIuMC4wXzEKLWxpYmNsYW5nLnNv LjEyIGxpYmNsYW5nLTEyLjAuMF8xCi1saWJjbGFuZy1jcHAuc28uMTIgbGliY2xhbmctY3BwLTEy LjAuMF8xCitsaWJsbGRiLnNvLjEzIGxsZGItMTMuMC4wXzEKK2xpYmNsYW5nLnNvLjEzIGxpYmNs YW5nLTEzLjAuMF8xCitsaWJjbGFuZy1jcHAuc28uMTMgbGliY2xhbmctY3BwLTEzLjAuMF8xCiBs aWJMTFZNLTExLnNvIGxpYmxsdm0xMS0xMS4wLjBfMQogbGliTExWTS0xMi5zbyBsaWJsbHZtMTIt MTIuMC4wXzEKK2xpYkxMVk0tMTMuc28gbGlibGx2bTEzLTEzLjAuMF8xCiBsaWJpc29mcy5zby42 IGxpYmlzb2ZzLTAuNi4yNF8xCiBsaWJtcGFjay5zby4wIGxpYm1wYWNrLTEuMC41XzEKIGxpYkdl b0lQLnNvLjEgbGliZ2VvaXAtMS40LjhfMQpAQCAtNDExOCwzICs0MTE5LDEyIEBAIGxpYnNwYXRp YWxpdGUuc28uNyBsaWJzcGF0aWFsaXRlLTUuMC4xXzEKIG1vZF9zcGF0aWFsaXRlLnNvLjcgbGli c3BhdGlhbGl0ZS01LjAuMV8xCiBsaWJTdnRBdjFFbmMuc28uMCBsaWJzdnQtYXYxLTAuOS4wXzEK IGxpYlN2dEF2MURlYy5zby4wIGxpYnN2dC1hdjEtMC45LjBfMQorbGlib21wLnNvIGxpYm9tcC0x My4wLjBfMQorbGlib21wdGFyZ2V0LnJ0bC5hbWRncHUuc28gbGlib21wLTEzLjAuMF8xCitsaWJv bXB0YXJnZXQucnRsLmN1ZGEuc28gbGlib21wLTEzLjAuMF8xCitsaWJvbXB0YXJnZXQucnRsLng4 Nl82NC5zbyBsaWJvbXAtMTMuMC4wXzEKK2xpYmFyY2hlci5zbyBsaWJvbXAtMTMuMC4wXzEKK2xp Ym9tcHRhcmdldC5zbyBsaWJvbXAtMTMuMC4wXzEKK2xpYmxsZGJJbnRlbEZlYXR1cmVzLnNvLjEz IGxsZGItMTMuMC4wXzEKK2xpYkxUTy5zby4xMyBsbHZtMTMtMTMuMC4wXzEKK2xpYlJlbWFya3Mu c28uMTMgbGx2bTEzLTEzLjAuMF8xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nIGIvc3JjcGtn cy9jbGFuZwppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3Jj cGtncy9jbGFuZworKysgYi9zcmNwa2dzL2NsYW5nCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBu ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl CmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nLWFuYWx5emVyIGIvc3JjcGtncy9jbGFuZy1hbmFs eXplcgppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtn cy9jbGFuZy1hbmFseXplcgorKysgYi9zcmNwa2dzL2NsYW5nLWFuYWx5emVyCkBAIC0xICsxIEBA Ci1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NsYW5nLXRvb2xzLWV4dHJhIGIv c3JjcGtncy9jbGFuZy10b29scy1leHRyYQppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5 NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9jbGFuZy10b29scy1leHRyYQorKysgYi9zcmNwa2dzL2Ns YW5nLXRvb2xzLWV4dHJhCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBv ZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9z cmNwa2dzL2xpYmNsYW5nIGIvc3JjcGtncy9saWJjbGFuZwppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2 MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjbGFuZworKysgYi9zcmNwa2dzL2xp YmNsYW5nCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCits bHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xp YmNsYW5nLWNwcCBiL3NyY3BrZ3MvbGliY2xhbmctY3BwCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYz NjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmNsYW5nLWNwcAorKysgYi9zcmNwa2dz L2xpYmNsYW5nLWNwcApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9saWJjeHggYi9zcmNwa2dzL2xpYmN4eAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdk M2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjeHgKKysrIGIvc3JjcGtncy9saWJjeHgKQEAg LTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5v IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGliY3h4LWRldmVs IGIvc3JjcGtncy9saWJjeHgtZGV2ZWwKaW5kZXggY2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUg MTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGliY3h4LWRldmVsCisrKyBiL3NyY3BrZ3MvbGliY3h4LWRl dmVsCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZt MTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYmN4 eGFiaSBiL3NyY3BrZ3MvbGliY3h4YWJpCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1 IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYmN4eGFiaQorKysgYi9zcmNwa2dzL2xpYmN4eGFiaQpA QCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9saWJjeHhhYmkt ZGV2ZWwgYi9zcmNwa2dzL2xpYmN4eGFiaS1kZXZlbAppbmRleCBjZDYwZmQ3YTk4MWIuLmQ2MzY2 ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJjeHhhYmktZGV2ZWwKKysrIGIvc3JjcGtn cy9saWJjeHhhYmktZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGlibGx2bTEzIGIvc3JjcGtncy9saWJsbHZtMTMKbmV3IGZpbGUgbW9kZSAxMjAw MDAKaW5kZXggMDAwMDAwMDAwMDAwLi5kNjM2NmQ3ZDNiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2xpYmxsdm0xMwpAQCAtMCwwICsxIEBACitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xpYm9tcCBiL3NyY3BrZ3MvbGlib21wCmlu ZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xpYm9t cAorKysgYi9zcmNwa2dzL2xpYm9tcApAQCAtMSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9saWJvbXAtZGV2ZWwgYi9zcmNwa2dzL2xpYm9tcC1kZXZlbAppbmRleCBj ZDYwZmQ3YTk4MWIuLmQ2MzY2ZDdkM2I5NSAxMjAwMDAKLS0tIGEvc3JjcGtncy9saWJvbXAtZGV2 ZWwKKysrIGIvc3JjcGtncy9saWJvbXAtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5l d2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGxkIGIvc3JjcGtncy9sbGQKaW5kZXggY2Q2MGZkN2E5ODFi Li5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGxkCisrKyBiL3NyY3BrZ3MvbGxk CkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMK XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsZC1kZXZl bCBiL3NyY3BrZ3MvbGxkLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEy MDAwMAotLS0gYS9zcmNwa2dzL2xsZC1kZXZlbAorKysgYi9zcmNwa2dzL2xsZC1kZXZlbApAQCAt MSArMSBAQAotbGx2bTEyClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorbGx2bTEzClwgTm8g bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbGRiIGIvc3JjcGtn cy9sbGRiCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNw a2dzL2xsZGIKKysrIGIvc3JjcGtncy9sbGRiCkBAIC0xICsxIEBACi1sbHZtMTIKXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCitsbHZtMTMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xsZGItZGV2ZWwgYi9zcmNwa2dzL2xsZGItZGV2ZWwKaW5kZXgg Y2Q2MGZkN2E5ODFiLi5kNjM2NmQ3ZDNiOTUgMTIwMDAwCi0tLSBhL3NyY3BrZ3MvbGxkYi1kZXZl bAorKysgYi9zcmNwa2dzL2xsZGItZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQgYi9zcmNwa2dzL2xsdm0tbGlidW53aW5k CmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2QzYjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xs dm0tbGlidW53aW5kCisrKyBiL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQKQEAgLTEgKzEgQEAKLWxs dm0xMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bS1saWJ1bndpbmQtZGV2ZWwgYi9z cmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsCmluZGV4IGNkNjBmZDdhOTgxYi4uZDYzNjZkN2Qz Yjk1IDEyMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0tbGlidW53aW5kLWRldmVsCisrKyBiL3NyY3Br Z3MvbGx2bS1saWJ1bndpbmQtZGV2ZWwKQEAgLTEgKzEgQEAKLWxsdm0xMgpcIE5vIG5ld2xpbmUg YXQgZW5kIG9mIGZpbGUKK2xsdm0xMwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmggYi9z cmNwa2dzL2xsdm0xMy9maWxlcy9sbHZtLUNvbmZpZy1sbHZtLWNvbmZpZy5oCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMmZhMDhjOWJlNjk2Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9sbHZtMTMvZmlsZXMvbGx2bS1Db25maWctbGx2bS1jb25maWcuaApAQCAt MCwwICsxLDkgQEAKKyNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+CisKKyNpZiBfX1dPUkRTSVpF ID09IDMyCisjaW5jbHVkZSAibGx2bS1jb25maWctMzIuaCIKKyNlbGlmIF9fV09SRFNJWkUgPT0g NjQKKyNpbmNsdWRlICJsbHZtLWNvbmZpZy02NC5oIgorI2Vsc2UKKyNlcnJvciAiVW5rbm93biB3 b3JkIHNpemUiCisjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xh bmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNsdXNpb24ucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNGVhYTc3ODNlN2EKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMS1maXgtdW53aW5kLWNo YWluLWluY2x1c2lvbi5wYXRjaApAQCAtMCwwICsxLDQ0IEBACitGcm9tIDM1Mjk3NDE2OWYwZDJi NWRhM2Q1MzIxZjU4OGY1ZTNiNTk0MTMzMGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9t OiBBbmRyZWEgQnJhbmNhbGVvbmkgPG1pd2F4ZUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDggU2Vw IDIwMTUgMjI6MTQ6NTcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzddIGZpeCB1bndpbmQgY2hh aW4gaW5jbHVzaW9uCisKKy0tLQorIGxpYi9IZWFkZXJzL3Vud2luZC5oIHwgOSArKysrKy0tLS0K KyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZm IC0tZ2l0IGEvbGliL0hlYWRlcnMvdW53aW5kLmggYi9saWIvSGVhZGVycy91bndpbmQuaAoraW5k ZXggMzAzZDc5Mi4uNDRlMTBjYyAxMDA2NDQKKy0tLSBhL2NsYW5nL2xpYi9IZWFkZXJzL3Vud2lu ZC5oCisrKysgYi9jbGFuZy9saWIvSGVhZGVycy91bndpbmQuaAorQEAgLTksOSArOSw2IEBACisg CisgLyogU2VlICJEYXRhIERlZmluaXRpb25zIGZvciBsaWJnY2NfcyIgaW4gdGhlIExpbnV4IFN0 YW5kYXJkIEJhc2UuKi8KKyAKKy0jaWZuZGVmIF9fQ0xBTkdfVU5XSU5EX0gKKy0jZGVmaW5lIF9f Q0xBTkdfVU5XSU5EX0gKKy0KKyAjaWYgZGVmaW5lZChfX0FQUExFX18pICYmIF9faGFzX2luY2x1 ZGVfbmV4dCg8dW53aW5kLmg+KQorIC8qIERhcndpbiAoZnJvbSAxMS54IG9uKSBwcm92aWRlIGFu IHVud2luZC5oLiBJZiB0aGF0J3MgYXZhaWxhYmxlLAorICAqIHVzZSBpdC4gbGlidW53aW5kIHdy YXBzIHNvbWUgb2YgaXRzIGRlZmluaXRpb25zIGluICNpZmRlZiBfR05VX1NPVVJDRSwKK0BAIC0z OSw2ICszNiw5IEBACisgIyBlbmRpZgorICNlbHNlCisgCisrI2lmbmRlZiBfX0NMQU5HX1VOV0lO RF9ICisrI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICisrCisgI2luY2x1ZGUgPHN0ZGludC5oPgor IAorICNpZmRlZiBfX2NwbHVzcGx1cworQEAgLTMyMiw2ICszMjIsNyBAQCBfVW53aW5kX1B0ciBf VW53aW5kX0dldFRleHRSZWxCYXNlKHN0cnVjdCBfVW53aW5kX0NvbnRleHQgKik7CisgfQorICNl bmRpZgorIAorKyNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCisrCisgI2VuZGlmCisgCist I2VuZGlmIC8qIF9fQ0xBTkdfVU5XSU5EX0ggKi8KKy0tIAorMi41LjEKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggYi9z cmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjU2ODhkNDBkYmMyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDItYWRkLW11c2wt dHJpcGxlcy5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorLS0tIGEvY2xhbmcvbGliL0RyaXZlci9U b29sQ2hhaW5zL0dudS5jcHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9HbnUu Y3BwCitAQCAtMjA4Niw3ICsyMDg2LDggQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0 aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQcmVmaXhlcygKKyAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBBUk1IRlRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LWdudWVhYmloZiIsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtcmVkaGF0LWxp bnV4LWdudWVhYmkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJhcm12NmhsLXN1c2UtbGludXgtZ251ZWFiaSIsCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3VzZS1saW51eC1nbnVlYWJpIn07Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY3aGwtc3Vz ZS1saW51eC1nbnVlYWJpIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiYXJtdjdsLWxpbnV4LWdudWVhYmloZiJ9OworICAgc3RhdGljIGNvbnN0IGNoYXIg KmNvbnN0IEFSTWViTGliRGlyc1tdID0geyIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAq Y29uc3QgQVJNZWJUcmlwbGVzW10gPSB7ImFybWViLWxpbnV4LWdudWVhYmkiLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm1lYi1saW51eC1hbmRyb2lk ZWFiaSJ9OworQEAgLTIxNTMsOCArMjE1NCw3IEBAIHZvaWQgR2VuZXJpY19HQ0M6OkdDQ0luc3Rh bGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgICAgInBvd2VycGM2 NC1zdXNlLWxpbnV4IiwgInBvd2VycGMtbW9udGF2aXN0YS1saW51eHNwZSJ9OworICAgc3RhdGlj IGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTGliRGlyc1tdID0geyIvbGliMzIiLCAiL2xpYiJ9Owor ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFVHJpcGxlc1tdID0geyJwb3dlcnBjbGUt bGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAicG93ZXJwY2xlLXVua25vd24tbGludXgtZ251IiwKKy0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLWxpbnV4LW11c2wifTsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwY2xlLXVua25vd24t bGludXgtZ251In07CisgCisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDNjRMaWJEaXJz W10gPSB7Ii9saWI2NCIsICIvbGliIn07CisgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBD NjRUcmlwbGVzW10gPSB7CitAQCAtMjIzNSw2ICsyMjM1LDg3IEBAIHZvaWQgR2VuZXJpY19HQ0M6 OkdDQ0luc3RhbGxhdGlvbkRldGVjdG9yOjpBZGREZWZhdWx0R0NDUHJlZml4ZXMoCisgICAgIHJl dHVybjsKKyAgIH0KKyAKKysgIGlmIChUYXJnZXRUcmlwbGUuaXNNdXNsKCkpIHsKKysgICAgc3Rh dGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRNdXNsVHJpcGxlc1tdID0geyJhYXJjaDY0LWxp bnV4LW11c2wifTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGTXVzbFRyaXBs ZXNbXSA9IHsKKysgICAgICAgICJhcm0tbGludXgtbXVzbGVhYmloZiIsICJhcm12N2wtbGludXgt bXVzbGVhYmloZiIKKysgICAgfTsKKysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTU11 c2xUcmlwbGVzW10gPSB7ImFybS1saW51eC1tdXNsZWFiaSJ9OworKyAgICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgWDg2XzY0TXVzbFRyaXBsZXNbXSA9IHsieDg2XzY0LWxpbnV4LW11c2wifTsK KysgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFg4Nk11c2xUcmlwbGVzW10gPSB7Imk2ODYt bGludXgtbXVzbCJ9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgTUlQU011c2xUcmlw bGVzW10gPSB7CisrICAgICAgICAibWlwcy1saW51eC1tdXNsIiwgIm1pcHNlbC1saW51eC1tdXNs IiwKKysgICAgICAgICJtaXBzZWwtbGludXgtbXVzbGhmIiwgIm1pcHMtbGludXgtbXVzbGhmIgor KyAgICB9OworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTXVzbFRyaXBsZXNbXSA9 IHsicG93ZXJwYy1saW51eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQ UENMRU11c2xUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1tdXNsIn07CisrICAgIHN0YXRp YyBjb25zdCBjaGFyICpjb25zdCBQUEM2NE11c2xUcmlwbGVzW10gPSB7InBvd2VycGM2NC1saW51 eC1tdXNsIn07CisrICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NExFTXVzbFRyaXBs ZXNbXSA9IHsicG93ZXJwYzY0bGUtbGludXgtbXVzbCJ9OworKworKyAgICBzd2l0Y2ggKFRhcmdl dFRyaXBsZS5nZXRBcmNoKCkpIHsKKysgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFhcmNoNjQ6Cisr ICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExp YkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRy aXBsZXMpLCBlbmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5h cHBlbmQoYmVnaW4oQUFyY2g2NExpYkRpcnMpLCBlbmQoQUFyY2g2NExpYkRpcnMpKTsKKysgICAg ICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBQXJjaDY0TXVzbFRyaXBsZXMpLCBl bmQoQUFyY2g2NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAgIGNhc2UgbGx2bTo6 VHJpcGxlOjphcm06CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oQVJNTGliRGlycyksIGVu ZChBUk1MaWJEaXJzKSk7CisrICAgICAgaWYgKFRhcmdldFRyaXBsZS5nZXRFbnZpcm9ubWVudCgp ID09IGxsdm06OlRyaXBsZTo6TXVzbEVBQklIRikgeworKyAgICAgICAgVHJpcGxlQWxpYXNlcy5h cHBlbmQoYmVnaW4oQVJNSEZNdXNsVHJpcGxlcyksIGVuZChBUk1IRk11c2xUcmlwbGVzKSk7Cisr ICAgICAgfSBlbHNlIHsKKysgICAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKEFSTU11 c2xUcmlwbGVzKSwgZW5kKEFSTU11c2xUcmlwbGVzKSk7CisrICAgICAgfQorKyAgICAgIGJyZWFr OworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2XzY0OgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGliRGlycykpOworKyAgICAgIFRyaXBs ZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xU cmlwbGVzKSk7CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2TGliRGlycyks IGVuZChYODZMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVn aW4oWDg2TXVzbFRyaXBsZXMpLCBlbmQoWDg2TXVzbFRyaXBsZXMpKTsKKysgICAgICBicmVhazsK KysgICAgY2FzZSBsbHZtOjpUcmlwbGU6Ong4NjoKKysgICAgICBMaWJEaXJzLmFwcGVuZChiZWdp bihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKKysgICAgICBUcmlwbGVBbGlhc2VzLmFw cGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNsVHJpcGxlcykpOworKyAgICAg IEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4Nl82NExpYkRpcnMpLCBlbmQoWDg2XzY0TGli RGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nl82NE11 c2xUcmlwbGVzKSwgZW5kKFg4Nl82NE11c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7CisrICAg IGNhc2UgbGx2bTo6VHJpcGxlOjptaXBzOgorKyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKE1J UFNMaWJEaXJzKSwgZW5kKE1JUFNMaWJEaXJzKSk7CisrICAgICAgVHJpcGxlQWxpYXNlcy5hcHBl bmQoYmVnaW4oTUlQU011c2xUcmlwbGVzKSwgZW5kKE1JUFNNdXNsVHJpcGxlcykpOworKyAgICAg IGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjOgorKyAgICAgIExpYkRpcnMuYXBw ZW5kKGJlZ2luKFBQQ0xpYkRpcnMpLCBlbmQoUFBDTGliRGlycykpOworKyAgICAgIFRyaXBsZUFs aWFzZXMuYXBwZW5kKGJlZ2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7 CisrICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQ QzY0TGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQ QzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNsVHJpcGxlcykpOworKyAgICAgIGJyZWFrOwor KyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjbGU6CisrICAgICAgTGliRGlycy5hcHBlbmQoYmVn aW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOworKyAgICAgIFRyaXBsZUFsaWFz ZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBlbmQoUFBDTEVNdXNsVHJpcGxlcykp OworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5k KFBQQzY0TEVMaWJEaXJzKSk7CisrICAgICAgQmlhcmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVn aW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVNdXNsVHJpcGxlcykpOworKyAgICAg IGJyZWFrOworKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6CisrICAgICAgTGliRGlycy5h cHBlbmQoYmVnaW4oUFBDNjRMaWJEaXJzKSwgZW5kKFBQQzY0TGliRGlycykpOworKyAgICAgIFRy aXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQzY0TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRNdXNs VHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xpYkRpcnMp LCBlbmQoUFBDTGliRGlycykpOworKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKFBQQ011c2xUcmlwbGVzKSwgZW5kKFBQQ011c2xUcmlwbGVzKSk7CisrICAgICAgYnJlYWs7 CisrICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorKyAgICAgIExpYkRpcnMuYXBwZW5k KGJlZ2luKFBQQzY0TEVMaWJEaXJzKSwgZW5kKFBQQzY0TEVMaWJEaXJzKSk7CisrICAgICAgVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRMRU11c2xUcmlwbGVzKSwgZW5kKFBQQzY0TEVN dXNsVHJpcGxlcykpOworKyAgICAgIEJpYXJjaExpYkRpcnMuYXBwZW5kKGJlZ2luKFBQQ0xFTGli RGlycyksIGVuZChQUENMRUxpYkRpcnMpKTsKKysgICAgICBCaWFyY2hUcmlwbGVBbGlhc2VzLmFw cGVuZChiZWdpbihQUENMRU11c2xUcmlwbGVzKSwgZW5kKFBQQ0xFTXVzbFRyaXBsZXMpKTsKKysg ICAgICBicmVhazsKKysgICAgZGVmYXVsdDoKKysgICAgICBicmVhazsKKysgICAgfQorKyAgICBU cmlwbGVBbGlhc2VzLnB1c2hfYmFjayhUYXJnZXRUcmlwbGUuc3RyKCkpOworKyAgICBpZiAoVGFy Z2V0VHJpcGxlLnN0cigpICE9IEJpYXJjaFRyaXBsZS5zdHIoKSkKKysgICAgICBCaWFyY2hUcmlw bGVBbGlhc2VzLnB1c2hfYmFjayhCaWFyY2hUcmlwbGUuc3RyKCkpOworKyAgICByZXR1cm47Cisr ICB9CisrCisgICAvLyBBbmRyb2lkIHRhcmdldHMgc2hvdWxkIG5vdCB1c2UgR05VL0xpbnV4IHRv b2xzIG9yIGxpYnJhcmllcy4KKyAgIGlmIChUYXJnZXRUcmlwbGUuaXNBbmRyb2lkKCkpIHsKKyAg ICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFBcmNoNjRBbmRyb2lkVHJpcGxlc1tdID0gewpk aWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1p Yy1saW5rZXItcGF0aC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDAzLXBw YzY0LWR5bmFtaWMtbGlua2VyLXBhdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi40YWQ2NDEyZDFlNmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoCkBA IC0wLDAgKzEsMTMgQEAKKy0tLSBhL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5j cHAKKysrKyBiL2NsYW5nL2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKK0BAIC01MDQs MTAgKzUwNCw2IEBAIHN0ZDo6c3RyaW5nIExpbnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFy Z0xpc3QgJkFyZ3MpIGNvbnN0IHsKKyAgICAgTG9hZGVyID0gImxkLnNvLjEiOworICAgICBicmVh azsKKyAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NDoKKy0gICAgTGliRGlyID0gImxpYjY0IjsK Ky0gICAgTG9hZGVyID0KKy0gICAgICAgICh0b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywg ImVsZnYyIikpID8gImxkNjQuc28uMiIgOiAibGQ2NC5zby4xIjsKKy0gICAgYnJlYWs7CisgICBj YXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKKyAgICAgTGliRGlyID0gImxpYjY0IjsKKyAgICAg TG9hZGVyID0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY2xhbmctMDA0LXBw YzY0LW11c2wtZWxmdjIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NsYW5nLTAwNC1w cGM2NC1tdXNsLWVsZnYyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMjFmYzgwMDNjNWYxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0 Y2hlcy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDQ4IEBACist LS0gYS9jbGFuZy9saWIvQmFzaWMvVGFyZ2V0cy9QUEMuaAorKysrIGIvY2xhbmcvbGliL0Jhc2lj L1RhcmdldHMvUFBDLmgKK0BAIC00MTUsMTEgKzQxNSwxMCBAQCBwdWJsaWM6CisgICAgICAgTG9u Z0RvdWJsZUZvcm1hdCA9ICZsbHZtOjpBUEZsb2F0OjpJRUVFZG91YmxlKCk7CisgICAgIH0gZWxz ZSBpZiAoKFRyaXBsZS5nZXRBcmNoKCkgPT0gbGx2bTo6VHJpcGxlOjpwcGM2NGxlKSkgeworICAg ICAgIERhdGFMYXlvdXQgPSAiZS1tOmUtaTY0OjY0LW4zMjo2NCI7CistICAgICAgQUJJID0gImVs ZnYyIjsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBEYXRhTGF5b3V0ID0gIkUtbTplLWk2NDo2NC1u MzI6NjQiOworLSAgICAgIEFCSSA9ICJlbGZ2MSI7CisgICAgIH0KKysgICAgQUJJID0gImVsZnYy IjsKKyAKKyAgICAgaWYgKFRyaXBsZS5pc09TRnJlZUJTRCgpIHx8IFRyaXBsZS5pc09TT3BlbkJT RCgpIHx8IFRyaXBsZS5pc011c2woKSkgeworICAgICAgIExvbmdEb3VibGVXaWR0aCA9IExvbmdE b3VibGVBbGlnbiA9IDY0OworLS0tIGEvY2xhbmcvbGliL0NvZGVHZW4vVGFyZ2V0SW5mby5jcHAK KysrKyBiL2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCitAQCAtMTA5MjcsOSArMTA5 MjcsOSBAQCBjb25zdCBUYXJnZXRDb2RlR2VuSW5mbyAmQ29kZUdlbk1vZHVsZTo6Z2V0VGFyZ2V0 Q29kZUdlbkluZm8oKSB7CisgICAgICAgcmV0dXJuIFNldENHSW5mbyhuZXcgQUlYVGFyZ2V0Q29k ZUdlbkluZm8oVHlwZXMsIC8qSXM2NEJpdCovIHRydWUpKTsKKyAKKyAgICAgaWYgKFRyaXBsZS5p c09TQmluRm9ybWF0RUxGKCkpIHsKKy0gICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQg S2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7CistICAgICAgaWYgKGdldFRhcmdldCgp LmdldEFCSSgpID09ICJlbGZ2MiIpCistICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZv OjpFTEZ2MjsKKysgICAgICBQUEM2NF9TVlI0X0FCSUluZm86OkFCSUtpbmQgS2luZCA9IFBQQzY0 X1NWUjRfQUJJSW5mbzo6RUxGdjI7CisrICAgICAgaWYgKGdldFRhcmdldCgpLmdldEFCSSgpID09 ICJlbGZ2MSIpCisrICAgICAgICBLaW5kID0gUFBDNjRfU1ZSNF9BQklJbmZvOjpFTEZ2MTsKKyAg ICAgICBib29sIElzU29mdEZsb2F0ID0gQ29kZUdlbk9wdHMuRmxvYXRBQkkgPT0gInNvZnQiOwor IAorICAgICAgIHJldHVybiBTZXRDR0luZm8oCistLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xD aGFpbnMvQ2xhbmcuY3BwCisrKysgYi9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvQ2xhbmcu Y3BwCitAQCAtMTkyMCwxNCArMTkyMCw3IEBAIHZvaWQgQ2xhbmc6OkFkZFBQQ1RhcmdldEFyZ3Mo Y29uc3QgQXJnTGlzdCAmQXJncywKKyAgIGNvbnN0IGxsdm06OlRyaXBsZSAmVCA9IGdldFRvb2xD aGFpbigpLmdldFRyaXBsZSgpOworICAgaWYgKFQuaXNPU0JpbkZvcm1hdEVMRigpKSB7CisgICAg IHN3aXRjaCAoZ2V0VG9vbENoYWluKCkuZ2V0QXJjaCgpKSB7CistICAgIGNhc2UgbGx2bTo6VHJp cGxlOjpwcGM2NDogeworLSAgICAgIGlmICgoVC5pc09TRnJlZUJTRCgpICYmIFQuZ2V0T1NNYWpv clZlcnNpb24oKSA+PSAxMykgfHwKKy0gICAgICAgICAgVC5pc09TT3BlbkJTRCgpIHx8IFQuaXNN dXNsKCkpCistICAgICAgICBBQklOYW1lID0gImVsZnYyIjsKKy0gICAgICBlbHNlCistICAgICAg ICBBQklOYW1lID0gImVsZnYxIjsKKy0gICAgICBicmVhazsKKy0gICAgfQorKyAgICBjYXNlIGxs dm06OlRyaXBsZTo6cHBjNjQ6CisgICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGM2NGxlOgorICAg ICAgIEFCSU5hbWUgPSAiZWxmdjIiOworICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoIGIvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODkzYzA1OWQ3YjhkCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0 LXVjb250ZXh0LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9z YW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9saW51eC5jcHAub3JpZworKysrIGIvY29tcGlsZXIt cnQvbGliL3Nhbml0aXplcl9jb21tb24vc2FuaXRpemVyX2xpbnV4LmNwcAorQEAgLTE3OTksNyAr MTc5OSw3IEBACisgCisgc3RhdGljIGJvb2wgQWFyY2g2NEdldEVTUih1Y29udGV4dF90ICp1Y29u dGV4dCwgdTY0ICplc3IpIHsKKyAgIHN0YXRpYyBjb25zdCB1MzIga0Vzck1hZ2ljID0gMHg0NTUz NTIwMTsKKy0gIHU4ICphdXggPSB1Y29udGV4dC0+dWNfbWNvbnRleHQuX19yZXNlcnZlZDsKKysg IHU4ICphdXggPSByZWludGVycHJldF9jYXN0PHU4ICo+KHVjb250ZXh0LT51Y19tY29udGV4dC5f X3Jlc2VydmVkKTsKKyAgIHdoaWxlICh0cnVlKSB7CisgICAgIF9hYXJjaDY0X2N0eCAqY3R4ID0g KF9hYXJjaDY0X2N0eCAqKWF1eDsKKyAgICAgaWYgKGN0eC0+c2l6ZSA9PSAwKSBicmVhazsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBw YzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0 aXplci1wcGM2NC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMzVmMTZkMjRmMzQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0 Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaApAQCAtMCwwICsxLDM1 IEBACistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGlu dXguY3BwCisrKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJf bGludXguY3BwCitAQCAtNzQsNiArNzQsMTAgQEAKKyAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4K KyAjZW5kaWYKKyAKKysjaWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmluZWQoX19wb3dlcnBjX18p CisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjZW5kaWYKKysKKyAjaWYgU0FOSVRJWkVSX0xJ TlVYICYmICFTQU5JVElaRVJfQU5EUk9JRAorICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4K KyAjZW5kaWYKKy0tLSBhL2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXpl cl9wbGF0Zm9ybV9saW1pdHNfcG9zaXguY3BwCisrKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRp emVyX2NvbW1vbi9zYW5pdGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAorQEAgLTkyLDcg KzkyLDcgQEAKKyAjIGluY2x1ZGUgPHV0aW1lLmg+CisgIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+ CisgI2lmIGRlZmluZWQoX19taXBzNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgXAorLSAgICBTQU5JVElaRVJfUklTQ1Y2NAorKyAgICBkZWZpbmVkKF9f cG93ZXJwY19fKSB8fCBTQU5JVElaRVJfUklTQ1Y2NAorICMgIGluY2x1ZGUgPGFzbS9wdHJhY2Uu aD4KKyAjICBpZmRlZiBfX2FybV9fCisgdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHJlZ3MgZWxmX2Zw cmVnc2V0X3Q7CistLS0gYS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6 ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3BwCisrKysgYi9jb21waWxlci1ydC9saWIv c2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3Bw CitAQCAtMzEsNyArMzEsNyBAQAorICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gZm9yIHBpZF90 CisgI2luY2x1ZGUgPHN5cy91aW8uaD4gLy8gZm9yIGlvdmVjCisgI2luY2x1ZGUgPGVsZi5oPiAv LyBmb3IgTlRfUFJTVEFUVVMKKy0jaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFNBTklUSVpF Ul9SSVNDVjY0KSAmJiAhU0FOSVRJWkVSX0FORFJPSUQKKysjaWYgKGRlZmluZWQoX19hYXJjaDY0 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAhU0FO SVRJWkVSX0FORFJPSUQKKyAvLyBHTElCQyAyLjIwKyBzeXMvdXNlciBkb2VzIG5vdCBpbmNsdWRl IGFzbS9wdHJhY2UuaAorICMgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorICNlbmRpZgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wu cGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVz bC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwYjYxYzgw Yzg5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvY29tcGlsZXIt cnQteHJheS1wcGM2NC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKKy0tLSBhL2NvbXBpbGVy LXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYworKysrIGIvY29tcGlsZXItcnQvbGliL3hy YXkveHJheV9wb3dlcnBjNjQuaW5jCitAQCAtMTIsNyArMTIsMTMgQEAKKyAKKyAjaW5jbHVkZSA8 Y3N0ZGludD4KKyAjaW5jbHVkZSA8bXV0ZXg+CisrI2lmZGVmIF9fR0xJQkNfXworICNpbmNsdWRl IDxzeXMvcGxhdGZvcm0vcHBjLmg+CisrI2Vsc2UKKysjaW5jbHVkZSA8Y2N0eXBlPgorKyNpbmNs dWRlIDxjc3RyaW5nPgorKyNpbmNsdWRlIDxjc3RkbGliPgorKyNlbmRpZgorIAorICNpbmNsdWRl ICJ4cmF5X2RlZnMuaCIKKyAKK0BAIC0yMCwxMyArMjYsNDUgQEAgbmFtZXNwYWNlIF9feHJheSB7 CisgCisgQUxXQVlTX0lOTElORSB1aW50NjRfdCByZWFkVFNDKHVpbnQ4X3QgJkNQVSkgWFJBWV9O RVZFUl9JTlNUUlVNRU5UIHsKKyAgIENQVSA9IDA7CisrI2lmZGVmIF9fR0xJQkNfXworICAgcmV0 dXJuIF9fcHBjX2dldF90aW1lYmFzZSgpOworKyNlbHNlCisrICByZXR1cm4gX19idWlsdGluX3Bw Y19nZXRfdGltZWJhc2UoKTsKKysjZW5kaWYKKyB9CisgCisgaW5saW5lIHVpbnQ2NF90IGdldFRT Q0ZyZXF1ZW5jeSgpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7CisgICBzdGF0aWMgc3RkOjptdXRl eCBNOworICAgc3RkOjpsb2NrX2d1YXJkPHN0ZDo6bXV0ZXg+IEd1YXJkKE0pOworKyNpZmRlZiBf X0dMSUJDX18KKyAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2VfZnJlcSgpOworKyNlbHNlCisr ICAvKiBGSVhNRTogYSBsZXNzIGRpcnR5IGltcGxlbWVudGF0aW9uPyAqLworKyAgc3RhdGljIHVp bnQ2NF90IGJhc2U7CisrICBpZiAoIWJhc2UpIHsKKysgICAgRklMRSAqZiA9IGZvcGVuKCIvcHJv Yy9jcHVpbmZvIiwgInJiIik7CisrICAgIGlmIChmKSB7CisrICAgICAgc3NpemVfdCBucjsKKysg ICAgICAvKiB2aXJ0dWFsbHkgYWx3YXlzIGJpZyBlbm91Z2ggdG8gaG9sZCB0aGUgbGluZSAqLwor KyAgICAgIGNoYXIgYnVmWzUxMl07CisrICAgICAgd2hpbGUgKGZnZXRzKGJ1Ziwgc2l6ZW9mKGJ1 ZiksIGYpKSB7CisrICAgICAgICBjaGFyICpyZXQgPSBzdHJzdHIoYnVmLCAidGltZWJhc2UiKTsK KysgICAgICAgIGlmICghcmV0KSB7CisrICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQor KyAgICAgICAgcmV0ICs9IHNpemVvZigidGltZWJhc2UiKSAtIDE7CisrICAgICAgICByZXQgPSBz dHJjaHIocmV0LCAnOicpOworKyAgICAgICAgaWYgKCFyZXQpIHsKKysgICAgICAgICAgY29udGlu dWU7CisrICAgICAgICB9CisrICAgICAgICBiYXNlID0gc3RydG91bChyZXQgKyAxLCBudWxscHRy LCAxMCk7CisrICAgICAgICBicmVhazsKKysgICAgICB9CisrICAgICAgZmNsb3NlKGYpOworKyAg ICB9CisrICB9CisrICByZXR1cm4gYmFzZTsKKysjZW5kaWYKKyB9CisgCisgaW5saW5lIGJvb2wg cHJvYmVSZXF1aXJlZENQVUZlYXR1cmVzKCkgWFJBWV9ORVZFUl9JTlNUUlVNRU5UIHsKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2ggYi9zcmNwa2dz L2xsdm0xMy9wYXRjaGVzL2xpYmN4eC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uYmJkMzFmZmMyY2IxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDI2IEBACistLS0g YS9saWJjeHgvaW5jbHVkZS9sb2NhbGUKKysrKyBiL2xpYmN4eC9pbmNsdWRlL2xvY2FsZQorQEAg LTc0Miw3ICs3NDIsMTEgQEAgX19udW1fZ2V0X3NpZ25lZF9pbnRlZ3JhbChjb25zdCBjaGFyKiBf X2EsIGNvbnN0IGNoYXIqIF9fYV9lbmQsCisgICAgICAgICB0eXBlbmFtZSByZW1vdmVfcmVmZXJl bmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19zYXZlX2Vycm5vID0gZXJybm87CisgICAgICAg ICBlcnJubyA9IDA7CisgICAgICAgICBjaGFyICpfX3AyOworKyNpZiBkZWZpbmVkKF9fbGludXhf XykgJiYgIWRlZmluZWQoX19HTElCQ19fKQorKyAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0 b2xsKF9fYSwgJl9fcDIsIF9fYmFzZSk7CisrI2Vsc2UKKyAgICAgICAgIGxvbmcgbG9uZyBfX2xs ID0gc3RydG9sbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwor KyNlbmRpZgorICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJu byk+Ojp0eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOworICAgICAgICAgaWYgKF9fY3VycmVu dF9lcnJubyA9PSAwKQorICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOworQEAgLTc4 Miw3ICs3ODYsMTEgQEAgX19udW1fZ2V0X3Vuc2lnbmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9f YSwgY29uc3QgY2hhciogX19hX2VuZCwKKyAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVu Y2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX3NhdmVfZXJybm8gPSBlcnJubzsKKyAgICAgICAg IGVycm5vID0gMDsKKyAgICAgICAgIGNoYXIgKl9fcDI7CisrI2lmIGRlZmluZWQoX19saW51eF9f KSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCisrICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgX19s bCA9IHN0cnRvdWxsKF9fYSwgJl9fcDIsIF9fYmFzZSk7CisrI2Vsc2UKKyAgICAgICAgIHVuc2ln bmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGxfbChfX2EsICZfX3AyLCBfX2Jhc2UsIF9MSUJD UFBfR0VUX0NfTE9DQUxFKTsKKysjZW5kaWYKKyAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZl cmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlwZSBfX2N1cnJlbnRfZXJybm8gPSBlcnJubzsKKyAg ICAgICAgIGlmIChfX2N1cnJlbnRfZXJybm8gPT0gMCkKKyAgICAgICAgICAgICBlcnJubyA9IF9f c2F2ZV9lcnJubzsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBw Yy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdhOTJmODAwNGUxYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXBwYy5wYXRjaApAQCAtMCww ICsxLDIyIEBACitUaGlzIGVuc3VyZXMgYGlzX2llYzU1OWAgaXMgZGVmaW5lZCBjb3JyZWN0bHkg dW5kZXIgYWxsIGxvbmcgZG91YmxlIEFCSXMsCitpbmNsdWRpbmcgbXVzbCBhbmQgaXRzIDY0LWJp dCBsb25nIGRvdWJsZS4gQWxzbywgYF9fcHBjX19gIG9yIGBfX3BwYzY0X19gCitpcyBub3QgZGVm aW5lZCBvbiBnY2MuCisKKy0tLSBhL2xpYmN4eC9pbmNsdWRlL2xpbWl0cworKysrIGIvbGliY3h4 L2luY2x1ZGUvbGltaXRzCitAQCAtNDI2LDggKzQyNiwxNCBAQCBwcm90ZWN0ZWQ6CisgICAgIF9M SUJDUFBfSU5MSU5FX1ZJU0lCSUxJVFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgc2ln bmFsaW5nX05hTigpIF9OT0VYQ0VQVCB7cmV0dXJuIF9fYnVpbHRpbl9uYW5zbCgiIik7fQorICAg ICBfTElCQ1BQX0lOTElORV9WSVNJQklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBl IGRlbm9ybV9taW4oKSBfTk9FWENFUFQge3JldHVybiBfX0xEQkxfREVOT1JNX01JTl9fO30KKyAK Ky0jaWYgKGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX3BwYzY0X18pKQorKyNpZiBkZWZp bmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2lmIChfX0xEQkxf TUFYX0VYUF9fID4gX19EQkxfTUFYX0VYUF9fKSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gX19E QkxfTUFOVF9ESUdfXykKKysgICAgLyogSUVFRSA3NTQgcXVhZHJ1cGxlIG9yIGRvdWJsZSBwcmVj aXNpb24gKi8KKysgICAgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVj NTU5ID0gdHJ1ZTsKKysjZWxzZQorKyAgICAvKiAxMjgtYml0IElCTSBkb3VibGUtZG91YmxlICov CisgICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IGZh bHNlOworKyNlbmRpZgorICNlbHNlCisgICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25z dCBib29sIGlzX2llYzU1OSA9IHRydWU7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xs dm0xMy9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hhcmVkLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9saWJjeHgtc3NwLW5vbnNoYXJlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjcwMjkyYmViMmZjZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2gKQEAgLTAsMCArMSwx MSBAQAorLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0CisrKysgYi9saWJjeHgvQ01ha2VMaXN0 cy50eHQKK0BAIC03NjksNiArNzY5LDggQEAgZnVuY3Rpb24oY3h4X2xpbmtfc3lzdGVtX2xpYnJh cmllcyB0YXJnZXQpCisgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFU RSBhdG9taWMpCisgICBlbmRpZigpCisgCisrI3NzcCAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7 dGFyZ2V0fSBQUklWQVRFIHNzcF9ub25zaGFyZWQpCisrCisgICBpZiAoTUlOR1cpCisgICAgIHRh cmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSAiJHtNSU5HV19MSUJSQVJJRVN9 IikKKyAgIGVuZGlmKCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGliY3h4 YWJpLWRsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJjeHhhYmktZGwucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYTE1ZjlkYjhjOTgKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRj aApAQCAtMCwwICsxLDI1IEBACitBbHNvIGxpbmsgdG8gLWxkbCB0byBwcmV2ZW50IHVuZGVmaW5l ZCByZWZlcmVuY2VzLgorCistLS0gYS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0CisrKysg Yi9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtNzMsNiArNzMsNyBAQAorICAgZW5k aWYoKQorIAorICAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBjKQor KyAgYWRkX2xpYnJhcnlfZmxhZ3NfaWYoTElCQ1hYQUJJX0hBU19DX0xJQiBkbCkKKyBlbmRpZigp CisgCisgaWYgKExJQkNYWEFCSV9VU0VfTExWTV9VTldJTkRFUikKKy0tLSBhL2xpYmN4eC9DTWFr ZUxpc3RzLnR4dAorKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0CitAQCAtNzQ1LDYgKzc0NSwx MCBAQAorICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgbSkKKyAg IGVuZGlmKCkKKyAKKysgIGlmIChMSUJDWFhfSEFTX0NfTElCKQorKyAgICB0YXJnZXRfbGlua19s aWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgZGwpCisrICBlbmRpZigpCisrCisgICBpZiAoTElC Q1hYX0hBU19SVF9MSUIpCisgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJ VkFURSBydCkKKyAgIGVuZGlmKCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv bGlidW53aW5kLXBwYzMyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9saWJ1bndpbmQt cHBjMzIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43NGFh NzU3NmVjZjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xpYnVu d2luZC1wcGMzMi5wYXRjaApAQCAtMCwwICsxLDYzIEBACitUaGlzIGZpeGVzIGJ1aWxkIGF0IGxl YXN0IHdpdGggZ2NjOSB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYF9fcHBjX19gLgorCistLS0gYS9s aWJ1bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaAorKysrIGIvbGlidW53aW5kL2lu Y2x1ZGUvX19saWJ1bndpbmRfY29uZmlnLmgKK0BAIC00OSw3ICs0OSw3IEBACisgIyAgZGVmaW5l IF9MSUJVTldJTkRfQ09OVEVYVF9TSVpFIDE2NworICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNP Ul9TSVpFIDE3OQorICMgIGRlZmluZSBfTElCVU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVIg X0xJQlVOV0lORF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSX1BQQzY0CistIyBlbGlmIGRlZmluZWQo X19wcGNfXykKKysjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyAjICBkZWZpbmUgX0xJQlVO V0lORF9UQVJHRVRfUFBDIDEKKyAjICBkZWZpbmUgX0xJQlVOV0lORF9DT05URVhUX1NJWkUgMTE3 CisgIyAgZGVmaW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJWkUgMTI0CistLS0gYS9saWJ1bndpbmQv c3JjL1Vud2luZFJlZ2lzdGVyc1Jlc3RvcmUuUworKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRS ZWdpc3RlcnNSZXN0b3JlLlMKK0BAIC0zOTIsNyArMzkyLDcgQEAgTG5vdmVjOgorICAgUFBDNjRf TFIoMykKKyAgIGJjdHIKKyAKKy0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCisrI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGNfXykKKyAKKyBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9aTjlsaWJ1bndp bmQxM1JlZ2lzdGVyc19wcGM2anVtcHRvRXYpCisgLy8KKy0tLSBhL2xpYnVud2luZC9zcmMvVW53 aW5kUmVnaXN0ZXJzU2F2ZS5TCisrKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1Nh dmUuUworQEAgLTU1NCw3ICs1NTQsNyBAQCBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9fdW53 X2dldGNvbnRleHQpCisgICBibHIKKyAKKyAKKy0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCisrI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGNfXykKKyAKKyAvLworIC8vIGV4dGVybiBpbnQgdW53X2dldGNv bnRleHQodW53X2NvbnRleHRfdCogdGhyZWFkX3N0YXRlKQorLS0tIGEvbGlidW53aW5kL3NyYy9j b25maWcuaAorKysrIGIvbGlidW53aW5kL3NyYy9jb25maWcuaAorQEAgLTk1LDEyICs5NSwxMiBA QAorICNkZWZpbmUgX0xJQlVOV0lORF9CVUlMRF9TSkxKX0FQSVMKKyAjZW5kaWYKKyAKKy0jaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcHBj X18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICNkZWZpbmUgX0xJQlVOV0lORF9T VVBQT1JUX0ZSQU1FX0FQSVMKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor LSAgICBkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pIHx8ICAgICAgICBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg KCFkZWZpbmVkKF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX2FybV9fKSkgfHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAoZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQo X19hYXJjaDY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIGRlZmlu ZWQoX19taXBzX18pCistLS0gYS9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKKysrKyBiL2xp YnVud2luZC9zcmMvbGlidW53aW5kLmNwcAorQEAgLTQyLDcgKzQyLDcgQEAgX0xJQlVOV0lORF9I SURERU4gaW50IF9fdW53X2luaXRfbG9jYWwodW53X2N1cnNvcl90ICpjdXJzb3IsCisgIyBkZWZp bmUgUkVHSVNURVJfS0lORCBSZWdpc3RlcnNfeDg2XzY0CisgI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYzY0CistI2VsaWYg ZGVmaW5lZChfX3BwY19fKQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgIyBkZWZpbmUg UkVHSVNURVJfS0lORCBSZWdpc3RlcnNfcHBjCisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykK KyAjIGRlZmluZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19hcm02NApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9sbHZtMTMvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRj aGVzL2xsZGItbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLjYwMWMwZDEzODUyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGxkYi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKKy0tLSBhL2xsZGIvc291cmNlL1Bs dWdpbnMvUHJvY2Vzcy9MaW51eC9Qcm9jZnMuaAorKysrIGIvbGxkYi9zb3VyY2UvUGx1Z2lucy9Q cm9jZXNzL0xpbnV4L1Byb2Nmcy5oCitAQCAtMTAsMjEgKzEwLDEyIEBACisgLy8gc3lzL3Byb2Nm cy5oIG9uIEFuZHJvaWQvTGludXggZm9yIGFsbCBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcy4KKyAK KyAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+CisgCist I2lmZGVmIF9fQU5EUk9JRF9fCistI2lmIGRlZmluZWQoX19hcm02NF9fKSB8fCBkZWZpbmVkKF9f YWFyY2g2NF9fKQorLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBlbGZfZ3JlZ190OworLXR5cGVkZWYg ZWxmX2dyZWdfdAorLSAgICBlbGZfZ3JlZ3NldF90WyhzaXplb2Yoc3RydWN0IHVzZXJfcHRfcmVn cykgLyBzaXplb2YoZWxmX2dyZWdfdCkpXTsKKy10eXBlZGVmIHN0cnVjdCB1c2VyX2Zwc2ltZF9z dGF0ZSBlbGZfZnByZWdzZXRfdDsKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmluZSBOVF9G UFJFR1NFVCBOVF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VsaWYgZGVmaW5l ZChfX21pcHNfXykKKy0jaWZuZGVmIE5UX0ZQUkVHU0VUCistI2RlZmluZSBOVF9GUFJFR1NFVCBO VF9QUkZQUkVHCistI2VuZGlmIC8vIE5UX0ZQUkVHU0VUCistI2VuZGlmCistI2Vsc2UgLy8gX19B TkRST0lEX18KKysjaWYgIWRlZmluZWQoX19HTElCQ19fKSAmJiBkZWZpbmVkKF9fcG93ZXJwY19f KQorKyNkZWZpbmUgcHRfcmVncyBtdXNsX3B0X3JlZ3MKKysjaW5jbHVkZSA8c3lzL3Byb2Nmcy5o PgorKyN1bmRlZiBwdF9yZWdzCisrI2Vsc2UKKyAjaW5jbHVkZSA8c3lzL3Byb2Nmcy5oPgorLSNl bmRpZiAvLyBfX0FORFJPSURfXworKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMv cGF0Y2hlcy9sbHZtLTAwMS1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZt LTAwMS1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZjJhM2Y4ZDYyODEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9s bHZtLTAwMS1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gZmFjYTNmYmQxNWQwYzMx MDg0OTNjM2M1NGNkOTMxMzhlMDQ5YWM0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206 IEFuZHJlYSBCcmFuY2FsZW9uaSA8bWl3YXhlQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgOCBTZXAg MjAxNSAyMjowMzowMiArMDIwMAorU3ViamVjdDogW1BBVENIIDMvM10gbXVzbAorCistLS0KKyBp bmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCB8IDkgKysrKysrKysrCisg bGliL1N1cHBvcnQvRHluYW1pY0xpYnJhcnkuY3BwICAgICAgICAgICAgfCAyICstCisgbGliL1N1 cHBvcnQvVW5peC9TaWduYWxzLmluYyAgICAgICAgICAgICAgfCA2ICsrKy0tLQorIHV0aWxzL3Vu aXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjICAgIHwgMSArCisgNSBmaWxlcyBjaGFuZ2Vk LCAxNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9sbHZtL0FuYWx5c2lzL1RhcmdldExpYnJhcnlJbmZvLmggYi9pbmNsdWRlL2xsdm0vQW5hbHlz aXMvVGFyZ2V0TGlicmFyeUluZm8uaAoraW5kZXggMzRhOGExZTMuLjEyMTRlY2U1IDEwMDY0NAor LS0tIGEvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAorKysr IGIvbGx2bS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaAorQEAgLTE4 LDYgKzE4LDE1IEBACisgI2luY2x1ZGUgImxsdm0vSVIvUGFzc01hbmFnZXIuaCIKKyAjaW5jbHVk ZSAibGx2bS9QYXNzLmgiCisgCisrI3VuZGVmIGZvcGVuNjQKKysjdW5kZWYgZnNlZWtvNjQKKysj dW5kZWYgZnN0YXQ2NAorKyN1bmRlZiBmc3RhdHZmczY0CisrI3VuZGVmIGZ0ZWxsbzY0CisrI3Vu ZGVmIGxzdGF0NjQKKysjdW5kZWYgc3RhdDY0CisrI3VuZGVmIHRtcGZpbGU2NAorKworIG5hbWVz cGFjZSBsbHZtIHsKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgQXJyYXlSZWY7CisgY2xh c3MgVHJpcGxlOworZGlmZiAtLWdpdCBhL2xpYi9TdXBwb3J0L1VuaXgvRHluYW1pY0xpYnJhcnku aW5jIGIvbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMKK2luZGV4IGEyYTM3OTk2 Li4yZjg2YzQ3MCAxMDA2NDQKKy0tLSBhL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGli cmFyeS5pbmMKKysrKyBiL2xsdm0vbGliL1N1cHBvcnQvVW5peC9EeW5hbWljTGlicmFyeS5pbmMK K0BAIC0xMDIsNyArMTAyLDcgQEAgc3RhdGljIHZvaWQgKkRvU2VhcmNoKGNvbnN0IGNoYXIqIFN5 bWJvbE5hbWUpIHsKKyAKKyAvLyBUaGlzIG1hY3JvIHJldHVybnMgdGhlIGFkZHJlc3Mgb2YgYSB3 ZWxsLWtub3duLCBleHBsaWNpdCBzeW1ib2wKKyAjZGVmaW5lIEVYUExJQ0lUX1NZTUJPTChTWU0p IFwKKy0gICBpZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICZTWU0KKysgICBp ZiAoIXN0cmNtcChTeW1ib2xOYW1lLCAjU1lNKSkgcmV0dXJuICh2b2lkICopJlNZTQorIAorIC8v IFVuZGVyIGdsaWJjIHdlIGhhdmUgYSB3ZWlyZCBzaXR1YXRpb24uIFRoZSBzdGRlcnIvb3V0L2lu IHN5bWJvbHMgYXJlIGJvdGgKKyAvLyBtYWNyb3MgYW5kIGdsb2JhbCB2YXJpYWJsZXMgYmVjYXVz ZSBvZiBzdGFuZGFyZHMgcmVxdWlyZW1lbnRzLiBTbywgd2UKK2RpZmYgLS1naXQgYS91dGlscy91 bml0dGVzdC9nb29nbGV0ZXN0L3NyYy9ndGVzdC5jYyBiL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRl c3Qvc3JjL2d0ZXN0LmNjCitpbmRleCBkODgyYWIyZS4uZjFmYjEyZDAgMTAwNjQ0CistLS0gYS9s bHZtL3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCisrKysgYi9sbHZtL3V0 aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjCitAQCAtMTI4LDYgKzEyOCw3IEBA CisgCisgI2lmIEdURVNUX0NBTl9TVFJFQU1fUkVTVUxUU18KKyAjIGluY2x1ZGUgPGFycGEvaW5l dC5oPiAgLy8gTk9MSU5UCisrIyBpbmNsdWRlIDxzeXMvc29ja2V0Lmg+ICAvLyBOT0xJTlQKKyAj IGluY2x1ZGUgPG5ldGRiLmg+ICAvLyBOT0xJTlQKKyAjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4g IC8vIE5PTElOVAorICMgaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAvLyBOT0xJTlQKZGlmZiAtLWdp dCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRj aCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1wcGM2NC1lbGZ2Mi5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjAwNzFkOTY0YmQzNwot LS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDItbXVzbC1w cGM2NC1lbGZ2Mi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitUaGlzIHBhdGNoZXMgTExWTSB0byB1 c2UgRUxGdjIgb24gcHBjNjQgdW5jb25kaXRpb25hbGx5IHVubGVzcyBvdmVycmlkZGVuLiBXZQor bmVlZCB0aGlzIGJlY2F1c2UgdW5saWtlIG1vc3QgZGlzdHJvcyB3ZSB1c2UgRUxGdjIgZm9yIGJv dGggZ2xpYmMgYW5kIG11c2wKK29uIGJpZyBlbmRpYW4gcHBjNjQuCisKK2RpZmYgLS1naXQgYS9s aWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAgYi9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKK2luZGV4IDA2MzQ4MzNlLi5iN2NiYzJlNyAxMDA2NDQK Ky0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hpbmUuY3BwCisrKysg Yi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNwcAorQEAgLTIyMiw5 ICsyMjIsOCBAQCBzdGF0aWMgUFBDVGFyZ2V0TWFjaGluZTo6UFBDQUJJIGNvbXB1dGVUYXJnZXRB QkkoY29uc3QgVHJpcGxlICZUVCwKKyAKKyAgIHN3aXRjaCAoVFQuZ2V0QXJjaCgpKSB7CisgICBj YXNlIFRyaXBsZTo6cHBjNjRsZToKKy0gICAgcmV0dXJuIFBQQ1RhcmdldE1hY2hpbmU6OlBQQ19B QklfRUxGdjI7CisgICBjYXNlIFRyaXBsZTo6cHBjNjQ6CistICAgIHJldHVybiBQUENUYXJnZXRN YWNoaW5lOjpQUENfQUJJX0VMRnYxOworKyAgICByZXR1cm4gUFBDVGFyZ2V0TWFjaGluZTo6UFBD X0FCSV9FTEZ2MjsKKyAgIGRlZmF1bHQ6CisgICAgIHJldHVybiBQUENUYXJnZXRNYWNoaW5lOjpQ UENfQUJJX1VOS05PV047CisgICB9CitkaWZmIC0tZ2l0IGEvdGVzdC9Db2RlR2VuL1Bvd2VyUEMv cHBjNjQtZWxmLWFiaS5sbCBiL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0LWVsZi1hYmkubGwK K2luZGV4IDhiMWNmNmI1Li4yOTZhMmFmYSAxMDA2NDQKKy0tLSBhL2xsdm0vdGVzdC9Db2RlR2Vu L1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAorKysrIGIvbGx2bS90ZXN0L0NvZGVHZW4vUG93ZXJQ Qy9wcGM2NC1lbGYtYWJpLmxsCitAQCAtMSw0ICsxLDUgQEAKKy07IFJVTjogbGxjIC12ZXJpZnkt bWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgPCAlcyB8 IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYxCisrOyBSVU46IGxsYyAtdmVy aWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGludXgtZ251IDwg JXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MgorKzsgUlVOOiBsbGMg LXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LW11 c2wgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYyCisgOyBSVU46 IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24tbGlu dXgtZ251IC10YXJnZXQtYWJpIGVsZnYxIDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZp eD1DSEVDSy1FTEZ2MQorIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxl PXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBlbGZ2MiA8ICVzIHwgRmls ZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKKyA7IFJVTjogbGxjIC12ZXJpZnkt bWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjRsZS11bmtub3duLWxpbnV4LWdudSA8ICVz IHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaCBiL3NyY3Br Z3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmI1ZDE1OTc0Mzc1ZAotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRj aApAQCAtMCwwICsxLDExIEBACistLS0gYS9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0 YXJnZXQuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENTdWJ0YXJnZXQuY3Bw CitAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgUFBDU3VidGFyZ2V0Ojppbml0U3VidGFyZ2V0RmVh dHVyZXMoU3RyaW5nUmVmIENQVSwgU3RyaW5nUmVmIEZTKSB7CisgCisgICBpZiAoKFRhcmdldFRy aXBsZS5pc09TRnJlZUJTRCgpICYmIFRhcmdldFRyaXBsZS5nZXRPU01ham9yVmVyc2lvbigpID49 IDEzKSB8fAorICAgICAgIFRhcmdldFRyaXBsZS5pc09TTmV0QlNEKCkgfHwgVGFyZ2V0VHJpcGxl LmlzT1NPcGVuQlNEKCkgfHwKKy0gICAgICBUYXJnZXRUcmlwbGUuaXNNdXNsKCkpCisrICAgICAg aXNUYXJnZXRMaW51eCgpKQorICAgICBTZWN1cmVQbHQgPSB0cnVlOworIAorICAgaWYgKEhhc1NQ RSAmJiBJc1BQQzY0KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAw NC1vdmVycmlkZS1vcHQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL2xsdm0tMDA0LW92 ZXJyaWRlLW9wdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjUxZDBlNGIzMWIzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMv bGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoaXMgYWxsb3dz IHVzIHRvIG92ZXJyaWRlIHRoZSBvcHRpbWl6YXRpb24gbGV2ZWwgYXMgbm90IGFsbCBwbGF0Zm9y bXMgY2FuCitkZWFsIHdpdGggLU8zLgorCistLS0gYS9sbHZtL0NNYWtlTGlzdHMudHh0CisrKysg Yi9sbHZtL0NNYWtlTGlzdHMudHh0CitAQCAtOTE4LDYgKzkxOCwxMiBAQCBpZiggTUlOR1cgQU5E IE5PVCAiJHtDTUFLRV9DWFhfQ09NUElMRVJfSUR9IiBNQVRDSEVTICJDbGFuZyIgKQorICAgbGx2 bV9yZXBsYWNlX2NvbXBpbGVyX29wdGlvbihDTUFLRV9DWFhfRkxBR1NfUkVMRUFTRSAiLU8zIiAi LU8yIikKKyBlbmRpZigpCisgCisrc2V0KFZPSURfQ1hYX09QVF9GTEFHUyAiIiBDQUNIRSBTVFJJ TkcgIk9wdGltaXphdGlvbiBsZXZlbCB0byB1c2UiKQorKworK2lmIChOT1QgVk9JRF9DWFhfT1BU X0ZMQUdTIFNUUkVRVUFMICIiKQorKyAgICBsbHZtX3JlcGxhY2VfY29tcGlsZXJfb3B0aW9uKENN QUtFX0NYWF9GTEFHU19SRUxFQVNFICItTzMiICIke1ZPSURfQ1hYX09QVF9GTEFHU30iKQorK2Vu ZGlmKCkKKysKKyAjIFB1dCB0aGlzIGJlZm9yZSB0YmxnZW4uIEVsc2Ugd2UgaGF2ZSBhIGNpcmN1 bGFyIGRlcGVuZGVuY2UuCisgYWRkX3N1YmRpcmVjdG9yeShsaWIvRGVtYW5nbGUpCisgYWRkX3N1 YmRpcmVjdG9yeShsaWIvU3VwcG9ydCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvbGx2 bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmQzMzI2ODdiOWQ5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEzL3Bh dGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGYz ZGJkZDQ5YzA2YmZhZmMxZDYxMzgwOTRjZjQyODg5YzE0ZDM4YjYgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCitGcm9tOiBTYW11ZWwgSG9sbGFuZCA8c2FtdWVsQHNob2xsYW5kLm9yZz4KK0RhdGU6 IFN1biwgMyBOb3YgMjAxOSAxMDo1NzoyNyAtMDYwMAorU3ViamVjdDogW1BBVENIXSBbTExWTV1b UG93ZXJQQ10gQXNzdW1lIEJpZ1BJQyBpZiBubyBQSUMgbGV2ZWwgaXMgc3BlY2lmaWVkCisKKy0t LQorIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwICB8IDIgKy0KKyBs bHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAgfCAyICstCisgMiBmaWxl cyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2Vy UEMvUFBDQXNtUHJpbnRlci5jcHAKK2luZGV4IGNjZTIxZjMyLi44N2NhNWY5YiAxMDA2NDQKKy0t LSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0FzbVByaW50ZXIuY3BwCisrKysgYi9sbHZt L2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVyLmNwcAorQEAgLTUyMCw3ICs1MjAsNyBA QCB2b2lkIFBQQ0FzbVByaW50ZXI6OkVtaXRUbHNDYWxsKGNvbnN0IE1hY2hpbmVJbnN0ciAqTUks CisgCisgICAvLyBBZGQgMzI3Njggb2Zmc2V0IHRvIHRoZSBzeW1ib2wgc28gd2UgZm9sbG93IHVw IHRoZSBsYXRlc3QgR09UL1BMVCBBQkkuCisgICBpZiAoS2luZCA9PSBNQ1N5bWJvbFJlZkV4cHI6 OlZLX1BMVCAmJiBTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0KCkgJiYKKy0gICAgICBNLT5nZXRQSUNM ZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMpCisrICAgICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQ SUNMZXZlbDo6U21hbGxQSUMpCisgICAgIFRsc1JlZiA9IE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRk KAorICAgICAgICAgVGxzUmVmLCBNQ0NvbnN0YW50RXhwcjo6Y3JlYXRlKDMyNzY4LCBPdXRDb250 ZXh0KSwgT3V0Q29udGV4dCk7CisgICBjb25zdCBNYWNoaW5lT3BlcmFuZCAmTU8gPSBNSS0+Z2V0 T3BlcmFuZCgyKTsKK2RpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93 ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01DSW5zdExvd2VyLmNwcAoraW5kZXggNWNj MTgwZDcuLmE1YjAyNTY1IDEwMDY0NAorLS0tIGEvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBD TUNJbnN0TG93ZXIuY3BwCisrKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RM b3dlci5jcHAKK0BAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIE1DT3BlcmFuZCBHZXRTeW1ib2xS ZWYoY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PLCBjb25zdCBNQ1N5bWJvbCAqU3ltYm9sLAorICAg Y29uc3QgTUNFeHByICpFeHByID0gTUNTeW1ib2xSZWZFeHByOjpjcmVhdGUoU3ltYm9sLCBSZWZL aW5kLCBDdHgpOworICAgLy8gSWYgLW1zZWN1cmUtcGx0IC1mUElDLCBhZGQgMzI3NjggdG8gc3lt Ym9sLgorICAgaWYgKFN1YnRhcmdldC0+aXNTZWN1cmVQbHQoKSAmJiBUTS5pc1Bvc2l0aW9uSW5k ZXBlbmRlbnQoKSAmJgorLSAgICAgIE0tPmdldFBJQ0xldmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJ QyAmJgorKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0gUElDTGV2ZWw6OlNtYWxsUElDICYmCisg ICAgICAgTU8uZ2V0VGFyZ2V0RmxhZ3MoKSA9PSBQUENJSTo6TU9fUExUKQorICAgICBFeHByID0K KyAgICAgICAgIE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRkKEV4cHIsIE1DQ29uc3RhbnRFeHByOjpj cmVhdGUoMzI3NjgsIEN0eCksIEN0eCk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy9wYXRj aGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNo ZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uYTAwYWJkMjE2NjY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9sbHZtMTMvcGF0Y2hlcy9sbHZtLTAwNi1hYXJjaDY0LW1mX2V4ZWMucGF0Y2gKQEAgLTAsMCAr MSwyNSBAQAorRml4IGZhaWx1cmVzIGluIEFsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0 Liogb24gYWFyY2g2NDoKKworICAgIEZhaWxpbmcgVGVzdHMgKDgpOgorICAgICAgICBMTFZNLVVu aXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5 VGVzdC5BbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1 cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5EdXBsaWNhdGVOZWFy LzMKKyAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlv blRlc3RzL01hcHBlZE1lbW9yeVRlc3QuRW5hYmxlZFdyaXRlLzMKKyAgICAgICAgTExWTS1Vbml0 IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRl c3QuTXVsdGlwbGVBbGxvY0FuZFJlbGVhc2UvMworICAgICAgICBMTFZNLVVuaXQgOjogU3VwcG9y dC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC5TdWNjZXNz aXZlTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0Fs bG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LlVuYWxpZ25lZE5lYXIvMworICAgICAgICBM TFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVk TWVtb3J5VGVzdC5aZXJvTmVhci8zCisgICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3Vw cG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Llplcm9TaXplTmVhci8z CisKK1Vwc3RyZWFtLUlzc3VlOiBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lk PTE0Mjc4I2MxMAorCistLS0gYS9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvTWVtb3J5LmluYworKysr IGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKK0BAIC01OCw3ICs1OCw3IEBAIHN0 YXRpYyBpbnQgZ2V0UG9zaXhQcm90ZWN0aW9uRmxhZ3ModW5zaWduZWQgRmxhZ3MpIHsKKyAgICAg cmV0dXJuIFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUM7CisgICBjYXNlIGxsdm06 OnN5czo6TWVtb3J5OjpNRl9FWEVDOgorICNpZiAoZGVmaW5lZChfX0ZyZWVCU0RfXykgfHwgZGVm aW5lZChfX1BPV0VSUENfXykgfHwgZGVmaW5lZCAoX19wcGNfXykgfHwgXAorLSAgICAgZGVmaW5l ZChfUE9XRVIpIHx8IGRlZmluZWQoX0FSQ0hfUFBDKSkKKysgICAgIGRlZmluZWQoX1BPV0VSKSB8 fCBkZWZpbmVkKF9BUkNIX1BQQykgfHwgKGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKF9f YWFyY2g2NF9fKSkpCisgICAgIC8vIE9uIFBvd2VyUEMsIGhhdmluZyBhbiBleGVjdXRhYmxlIHBh Z2UgdGhhdCBoYXMgbm8gcmVhZCBwZXJtaXNzaW9uCisgICAgIC8vIGNhbiBoYXZlIHVuaW50ZW5k ZWQgY29uc2VxdWVuY2VzLiAgVGhlIGZ1bmN0aW9uIEludmFsaWRhdGVJbnN0cnVjdGlvbi0KKyAg ICAgLy8gQ2FjaGUgdXNlcyBpbnN0cnVjdGlvbnMgZGNiZiBhbmQgaWNiaSwgYm90aCBvZiB3aGlj aCBhcmUgdHJlYXRlZCBieQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvcGF0Y2hlcy9wcGMz Mi1jb21waWxlci1ydC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEzL3BhdGNoZXMvcHBjMzItY29tcGls ZXItcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44ZTBh OWE3NzlkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK2NvbW1pdCBiYTRlZGU1OTVmZjk1 OTkyMzJmNWRkMmI0Mzg0YzI0MzEzN2I1M2ZjCitBdXRob3I6IERhbmllbCBLb2xlc2EgPGRhbmll bEBvY3RhZm9yZ2Uub3JnPgorRGF0ZTogICBUdWUgSnVuIDIyIDIzOjQwOjU0IDIwMjEgKzAyMDAK KworICAgIGVuYWJsZSBjb21waWxlci1ydCBzdXBwb3J0IGZvciBwcGMzMgorCitkaWZmIC0tZ2l0 IGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UgYi9jb21waWxlci1ydC9j bWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQoraW5kZXggMWVkYWI0My4uNWMwYzhhMiAxMDA2NDQK Ky0tLSBhL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCisrKysgYi9jb21w aWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZQorQEAgLTE4Miw5ICsxODIsNyBAQCBt YWNybyh0ZXN0X3RhcmdldHMpCisgICAgIGVsc2VpZigiJHtDT01QSUxFUl9SVF9ERUZBVUxUX1RB UkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYzY0bGUiKQorICAgICAgIHRlc3RfdGFyZ2V0X2Fy Y2gocG93ZXJwYzY0bGUgIiIgIi1tNjQiKQorICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVG QVVMVF9UQVJHRVRfQVJDSH0iIE1BVENIRVMgInBvd2VycGMiKQorLSAgICAgIGlmKENNQUtFX1NZ U1RFTV9OQU1FIE1BVENIRVMgIkFJWCIpCistICAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBvd2Vy cGMgIiIgIi1tMzIiKQorLSAgICAgIGVuZGlmKCkKKysgICAgICB0ZXN0X3RhcmdldF9hcmNoKHBv d2VycGMgIiIgIi1tMzIiKQorICAgICAgIHRlc3RfdGFyZ2V0X2FyY2gocG93ZXJwYzY0ICIiICIt bTY0IikKKyAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JUX0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBN QVRDSEVTICJzMzkweCIpCisgICAgICAgdGVzdF90YXJnZXRfYXJjaChzMzkweCAiIiAiIikKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxh dGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4wOGQ4NDc0NzI1MjUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQpAQCAtMCwwICsxLDQy MyBAQAorIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bTEzJworcGtnbmFtZT1sbHZtMTMKK3ZlcnNp b249MTMuMC4wCityZXZpc2lvbj0xCit3cmtzcmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNy YyIKK2J1aWxkX3dya3NyYz1sbHZtCitidWlsZF9zdHlsZT1jbWFrZQorY29uZmlndXJlX2FyZ3M9 IgorIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2CisgLURFTkFCTEVfTElOS0VS X0JVSUxEX0lEPVlFUworIC1ETExEQl9VU0VfU1lTVEVNX1NJWD1ZRVMKKyAtRExJQkNYWF9DWFhf QUJJPWxpYmN4eGFiaQorIC1ETElCQ1hYX0VOQUJMRV9TVEFUSUNfQUJJX0xJQlJBUlk9WUVTCisg LURMSUJDWFhBQklfVVNFX0xMVk1fVU5XSU5ERVI9WUVTCisgLURMSUJDWFhBQklfRU5BQkxFX1NU QVRJQ19VTldJTkRFUj1ZRVMKKyAtRExJQk9NUF9FTkFCTEVfU0hBUkVEPVlFUworIC1ETElCT01Q X0lOU1RBTExfQUxJQVNFUz1OTworIC1ETExWTV9JTkNMVURFX0RPQ1M9WUVTCisgLURMTFZNX0JV SUxEX0RPQ1M9WUVTCisgLURMTFZNX0VOQUJMRV9TUEhJTlg9WUVTCisgLURTUEhJTlhfV0FSTklO R1NfQVNfRVJST1JTPU5PCisgLURMTFZNX0lOU1RBTExfVVRJTFM9WUVTCisgLURMTFZNX0JVSUxE X0xMVk1fRFlMSUI9WUVTCisgLURMTFZNX0xJTktfTExWTV9EWUxJQj1ZRVMKKyAtRExMVk1fRU5B QkxFX1JUVEk9WUVTCisgLURMTFZNX0VOQUJMRV9GRkk9WUVTCisgLURMTFZNX0JJTlVUSUxTX0lO Q0RJUj0vdXNyL2luY2x1ZGUiCitob3N0bWFrZWRlcGVuZHM9InBlcmwgcHl0aG9uMyB6bGliLWRl dmVsIGxpYmZmaS1kZXZlbCBzd2lnIHB5dGhvbjMtU3BoaW54CisgcHl0aG9uMy1yZWNvbW1vbm1h cmsgcHl0aG9uMy1zcGhpbngtYXV0b21vZGFwaSIKK21ha2VkZXBlbmRzPSJweXRob24zLWRldmVs IHpsaWItZGV2ZWwgZWxmdXRpbHMtZGV2ZWwgbGliZmZpLWRldmVsIGxpYmVkaXQtZGV2ZWwKKyBs aWJ4bWwyLWRldmVsIGJpbnV0aWxzLWRldmVsIGxpYmF0b21pYy1kZXZlbCIKK2RlcGVuZHM9Imxp Ymxsdm0xMz49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKK3Nob3J0X2Rlc2M9IkxvdyBMZXZlbCBW aXJ0dWFsIE1hY2hpbmUiCittYWludGFpbmVyPSJxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPiIK K2xpY2Vuc2U9IkFwYWNoZS0yLjAiCitob21lcGFnZT0iaHR0cHM6Ly93d3cubGx2bS5vcmciCitk aXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcy9k b3dubG9hZC9sbHZtb3JnLSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjLnRh ci54eiIKK2NoZWNrc3VtPTYwNzVhZDMwZjFhYzBlMTVmMDdjMWJmMDYyYzFlMTI2OGMyNDFkNjc0 ZjExYmQzMmNkZjBlMDQwYzcxZjJiZjMKK2xpYjMyZGlzYWJsZWQ9eWVzCitweXRob25fdmVyc2lv bj0zCisKK2lmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCisJY29uZmln dXJlX2FyZ3MrPSIgLURMSUJDWFhfSEFTX01VU0xfTElCQz1ZRVMiCisJbWFrZWRlcGVuZHMrPSIg bGliZXhlY2luZm8tZGV2ZWwiCisJZGVwZW5kcys9IiBsaWJleGVjaW5mby1kZXZlbCIKK2ZpCisK KyMgIm9wZXJhbmQgb3V0IG9mIHJhbmdlIiBhc3NlbWJsZXIgZmFpbHVyZXMKK2Nhc2UgIiRYQlBT X1RBUkdFVF9NQUNISU5FIiBpbgorCXBwYzY0KikgOzsKKwlwcGMqKSBjb25maWd1cmVfYXJncys9 IiAtRENMQU5HX0VOQUJMRV9DTEFOR0Q9T0ZGIiA7OworZXNhYworCitfZW5hYmxlZF9wcm9qZWN0 cz0iY2xhbmc7Y2xhbmctdG9vbHMtZXh0cmE7Y29tcGlsZXItcnQ7bGliY3h4O2xpYmN4eGFiaTts aWJ1bndpbmQ7bGxkIgorCitfbGxkYl9lbmFibGU9eWVzCitfbGlib21wX2VuYWJsZT1ubworCitj YXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwlwcGM2NGxlKikgOzsKKwlwcGMqfGk2ODYq KSBfbGxkYl9lbmFibGU9bm8gOzsKK2VzYWMKKworY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUi IGluCisJeDg2XzY0KnxhYXJjaDY0KnxwcGM2NCopIF9saWJvbXBfZW5hYmxlPXllczs7Citlc2Fj CisKK3N1YnBhY2thZ2VzPSJjbGFuZy10b29scy1leHRyYSIKKworIyBtdXN0IGdvIGJlZm9yZSBj bGFuZworaWYgWyAiJF9saWJvbXBfZW5hYmxlIiA9ICJ5ZXMiIF07IHRoZW4KKwlfZW5hYmxlZF9w cm9qZWN0cys9IjtvcGVubXAiCisJc3VicGFja2FnZXMrPSIgbGlib21wIGxpYm9tcC1kZXZlbCIK KwkjIGJlY2F1c2Ugb2YgY21ha2Ugbm9uc2Vuc2UgcmVmZXJlbmNpbmcgbGlib21wdGFyZ2V0LnNv LioKKwlkZXBlbmRzKz0iIGxpYm9tcD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKK2ZpCisKK3N1 YnBhY2thZ2VzKz0iIGNsYW5nIGNsYW5nLWFuYWx5emVyIGxpYmNsYW5nIGxpYmNsYW5nLWNwcAor IGxsdm0tbGlidW53aW5kIGxsdm0tbGlidW53aW5kLWRldmVsIGxpYmN4eCBsaWJjeHgtZGV2ZWwK KyBsaWJjeHhhYmkgbGliY3h4YWJpLWRldmVsIGxpYmxsdm0xMyIKKworaWYgWyAiJF9sbGRiX2Vu YWJsZSIgPSAieWVzIiBdOyB0aGVuCisJIyBYWFggZmFpbHMgdG8gY3Jvc3MgY29tcGlsZSBkdWUg dG8gcHl0aG9uCisJX2VuYWJsZWRfcHJvamVjdHMrPSI7bGxkYiIKKwlzdWJwYWNrYWdlcys9IiBs bGRiIGxsZGItZGV2ZWwiCitmaQorCitzdWJwYWNrYWdlcys9IiBsbGQgbGxkLWRldmVsIgorCitj b25maWd1cmVfYXJncys9IiAtRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJsZWRfcHJvamVj dHN9IgorCitwb3N0X3BhdGNoKCkgeworCWlmIFsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXTsg dGhlbgorCQlpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCQkJdnNl ZCAtaSAnc3xfX3B0cmFjZV9yZXF1ZXN0fGludHxnJyBcCisJCQkJJHt3cmtzcmN9L2xsZGIvc291 cmNlL1BsdWdpbnMvUHJvY2Vzcy9MaW51eC9OYXRpdmVQcm9jZXNzTGludXguY3BwCisJCWZpCisJ CSMgZGlzYWJsZSBkb2NzIGZvciBsbGRiIGFzIHRoZXkgZmFpbCB0byBnZW5lcmF0ZQorCQl2c2Vk IC1pICcvYWRkX3N1YmRpcmVjdG9yeShkb2NzKS9kJyBcCisJCQkke3dya3NyY30vbGxkYi9DTWFr ZUxpc3RzLnR4dAorCWZpCisKKwkjIHVwZGF0ZSBjb25maWcuZ3Vlc3MgZm9yIGJldHRlciBwbGF0 Zm9ybSBkZXRlY3Rpb24KKwljcCAkWEJQU19DT01NT05ESVIvZW52aXJvbm1lbnQvY29uZmlndXJl L2F1dG9tYWtlL2NvbmZpZy5ndWVzcyBcCisJCSR7d3Jrc3JjfS9sbHZtL2NtYWtlCisKKwkjIGZp eCBsaW5rZXIgZmFpbHVyZXMgb24gc29tZSBhcmNocworCXZzZWQgLWkgJ3MsY2hlY2tfbGlicmFy eV9leGlzdHMoZ2NjX3MgLiosc2V0KExJQkNYWEFCSV9IQVNfR0NDX1NfTElCIE9OKSwnIFwKKwkJ JHt3cmtzcmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKKwl2c2VkIC1pICdzLGNo ZWNrX2xpYnJhcnlfZXhpc3RzKGdjYyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfTElCIE9OKSwn IFwKKwkJJHt3cmtzcmN9L2xpYmN4eGFiaS9jbWFrZS9jb25maWctaXguY21ha2UKKworCSMgbmVl ZCBsaWJzc3Bfbm9uc2hhcmVkIG9uIHNvbWUgbXVzbCBwbGF0Zm9ybXMgKGJlY2F1c2Ugb2Ygbm9k ZWZhdWx0bGlicykKKwljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjQqKSA7 OworCQlwcGMqLW11c2x8aTY4Ni1tdXNsfG1pcHMqLW11c2wpCisJCQl2c2VkIC1pICdzLF4jIFNl dHVwIGZsYWdzLiQsYWRkX2xpYnJhcnlfZmxhZ3Moc3NwX25vbnNoYXJlZCksJyBcCisJCQkJJHt3 cmtzcmN9L2xpYnVud2luZC9zcmMvQ01ha2VMaXN0cy50eHQKKwkJCXZzZWQgLWkgJ3MsXiMgU2V0 dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKKwkJCQkke3dy a3NyY30vbGliY3h4YWJpL3NyYy9DTWFrZUxpc3RzLnR4dAorCQkJdnNlZCAtaSAncywjc3NwLCwn ICR7d3Jrc3JjfS9saWJjeHgvQ01ha2VMaXN0cy50eHQKKwkJCTs7CisJZXNhYworCisJY2FzZSAi JFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCisJCXg4Nl82NC1tdXNsKSAjIHNvbWUgc2FuaXRpemVy IGN1cnJlbnRseSBvbmx5IG9uIHg4Nl82NCBzdHVmZiBuZWVkcyBiYWNrdHJhY2UKKwkJCXZzZWQg LWkgJ3MsIyBTZXQgY29tbW9uIGxpbmsgZmxhZ3MuLGxpc3QoQVBQRU5EIFNBTklUSVpFUl9DT01N T05fTElOS19MSUJTIGV4ZWNpbmZvKSwnIFwKKwkJCQkke3dya3NyY30vY29tcGlsZXItcnQvQ01h a2VMaXN0cy50eHQKKwkJCTs7CisJCWFybSotbXVzbHxpNjg2LW11c2wpICMgc2FuaXRpemVyIGNv ZGUgaXMgYnJva2VuIHNpbmNlIGl0IGR1cGxpY2F0ZXMgc29tZSBsaWJjIGJpdHMKKwkJCXZzZWQg LWkgJ3Mvc2V0KENPTVBJTEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIFRSVUUpL3NldChDT01Q SUxFUl9SVF9IQVNfU0FOSVRJWkVSX0NPTU1PTiBGQUxTRSkvJyBcCisJCQkJJHt3cmtzcmN9L2Nv bXBpbGVyLXJ0L2NtYWtlL2NvbmZpZy1peC5jbWFrZQorCQkJOzsKKwllc2FjCit9CisKK3ByZV9j b25maWd1cmUoKSB7CisJbG9jYWwgdHJpcGxldAorCisJIyBWYXN0bHkgcmVkdWNlIHNpemUgb2Yg ZGVidWdnaW5nIHN5bWJvbHM6CisJQ0ZMQUdTPSR7Q0ZMQUdTLyAtZy8gLWcxfQorCUNYWEZMQUdT PSR7Q1hYRkxBR1MvIC1nLyAtZzF9CisKKwkjIHNpbmNlIGdjYzksIHRoZSBidWlsZCBsaWtlcyB0 byBibG93IHVwIGZvciBwcGMzMiBhcHBhcmVudGx5IGJlY2F1c2UKKwkjIG9mIGNsYW5nIGJlaW5n IHRvbyBsYXJnZSBmb3IgYSAyNC1iaXQgcmVsYXRpdmUgY2FsbCB0byB0aGUgUExULCBzbworCSMg b3B0aW1pemUgZm9yIHNpemUgaW5zdGVhZAorCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBp bgorCQlwcGM2NCopIDs7CisJCW1pcHMqLW11c2x8cHBjKikgY29uZmlndXJlX2FyZ3MrPSIgLURW T0lEX0NYWF9PUFRfRkxBR1M9LU9zIiA7OworCWVzYWMKKworCWlmIFsgIiRDUk9TU19CVUlMRCIg XTsgdGhlbgorCQltc2dfbm9ybWFsICJCdWlsZGluZyBob3N0IHRibGdlblxuIgorCQlta2RpciAt cCBidWlsZC9IT1NUCisJCWNkIGJ1aWxkL0hPU1QKKwkJQ0M9IiRCVUlMRF9DQyIgQ1hYPSIkQlVJ TERfQ1hYIiBDRkxBR1M9IiRCVUlMRF9DRkxBR1MiIFwKKwkJCUNYWEZMQUdTPSIkQlVJTERfQ1hY RkxBR1MiIExERkxBR1M9IiRCVUlMRF9MREZMQUdTIiBcCisJCQljbWFrZSAuLi8uLiAtRENNQUtF X0JVSUxEX1RZUEU9UmVsZWFzZSBcCisJCQktRExMVk1fRU5BQkxFX1BST0pFQ1RTPSR7X2VuYWJs ZWRfcHJvamVjdHN9CisJCW1ha2UgJHttYWtlam9ic30gLUMgdXRpbHMvVGFibGVHZW4KKwkJbWFr ZSAke21ha2Vqb2JzfSAtQyB0b29scy9jbGFuZy91dGlscy9UYWJsZUdlbgorCQlbICIkX2xsZGJf ZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgbWFrZSAke21ha2Vqb2JzfSAtQyB0b29scy9sbGRiL3V0aWxz L1RhYmxlR2VuCisJCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9UQUJMRUdFTj0ke3dya3NyY30v bGx2bS9idWlsZC9IT1NUL2Jpbi9sbHZtLXRibGdlbiIKKwkJY29uZmlndXJlX2FyZ3MrPSIgLURD TEFOR19UQUJMRUdFTj0ke3dya3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9jbGFuZy10YmxnZW4i CisJCVsgIiRfbGxkYl9lbmFibGUiID0gInllcyIgXSAmJiBjb25maWd1cmVfYXJncys9IiAtRExM REJfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGxkYi10YmxnZW4iCisJ CWNkIC4uLy4uCisJZmkKKworCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCQlpNjg2 KikgX2FyY2g9Ilg4NiI7OworCQl4ODZfNjQqKSBfYXJjaD0iWDg2Ijs7CisJCWFybXY1KikgX2Fy Y2g9IkFybXY1dGUiOzsKKwkJYXJtdjYqKSBfYXJjaD0iQXJtdjYiOzsKKwkJYXJtdjcqKSBfYXJj aD0iQXJtdjciOzsKKwkJYWFyY2g2NCopIF9hcmNoPSJBQXJjaDY0Ijs7CisJCW1pcHMqKSBfYXJj aD0iTWlwcyI7OworCQlwcGMqKSBfYXJjaD0iUG93ZXJQQyI7OworCQlyaXNjdjY0KikgX2FyY2g9 IlJJU0NWNjQiOzsKKwllc2FjCisKKwl0cmlwbGV0PSR7WEJQU19DUk9TU19UUklQTEVUOi0kWEJQ U19UUklQTEVUfQorCisJY29uZmlndXJlX2FyZ3MrPSIgLURMTFZNX1RBUkdFVF9BUkNIPSR7X2Fy Y2h9IgorCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9IT1NUX1RSSVBMRT0ke3RyaXBsZXR9Igor CWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9ERUZBVUxUX1RBUkdFVF9UUklQTEU9JHt0cmlwbGV0 fSIKK30KKworZG9faW5zdGFsbCgpIHsKKwljZCBidWlsZAorCWNtYWtlIC1EQ01BS0VfSU5TVEFM TF9QUkVGSVg9JHtERVNURElSfS91c3IgLVAgY21ha2VfaW5zdGFsbC5jbWFrZQorCisJIyBSZXF1 aXJlZCBmb3IgbXVsdGlsaWIuCisJaWYgWyAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiID0gIng4Nl82 NCIgXTsgdGhlbgorCQlmb3IgX2hlYWRlciBpbiBsbHZtLWNvbmZpZzsgZG8KKwkJCW12ICR7REVT VERJUn0vdXNyL2luY2x1ZGUvbGx2bS9Db25maWcvJHtfaGVhZGVyfXssLTY0fS5oCisJCQl2aW5z dGFsbCAke0ZJTEVTRElSfS9sbHZtLUNvbmZpZy0ke19oZWFkZXJ9LmggNjQ0IFwKKwkJCQl1c3Iv aW5jbHVkZS9sbHZtL0NvbmZpZyAke19oZWFkZXJ9LmgKKwkJZG9uZQorCWZpCisKKwkjIFJlbW92 ZSBsbHZtLWNvbmZpZy1ob3N0IGluIGNyb3NzIGJ1aWxkcy4KKwlpZiBbICIkQ1JPU1NfQlVJTEQi IF07IHRoZW4KKwkJcm0gLWYgJHtERVNURElSfS91c3IvYmluL2xsdm0tY29uZmlnLWhvc3QKKwlm aQorCisJIyBJbnN0YWxsIGxpYmN4eGFiaSBoZWFkZXJzCisJdmluc3RhbGwgJHt3cmtzcmN9L2xp YmN4eGFiaS9pbmNsdWRlL19fY3h4YWJpX2NvbmZpZy5oIDY0NCB1c3IvaW5jbHVkZQorCXZpbnN0 YWxsICR7d3Jrc3JjfS9saWJjeHhhYmkvaW5jbHVkZS9jeHhhYmkuaCA2NDQgdXNyL2luY2x1ZGUK KworCSMgSW5zdGFsbCBsaWJ1bndpbmQgaGVhZGVycworCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1 bndpbmQvaW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaCA2NDQgdXNyL2luY2x1ZGUKKwl2aW5z dGFsbCAke3dya3NyY30vbGlidW53aW5kL2luY2x1ZGUvbGlidW53aW5kLmggNjQ0IHVzci9pbmNs dWRlCisJdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL3Vud2luZC5oIDY0NCB1 c3IvaW5jbHVkZQorCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQvaW5jbHVkZS9tYWNoLW8v Y29tcGFjdF91bndpbmRfZW5jb2RpbmcuaCBcCisJCTY0NCB1c3IvaW5jbHVkZS9tYWNoLW8KK30K KworY2xhbmctYW5hbHl6ZXJfcGFja2FnZSgpIHsKKwlweWNvbXBpbGVfZGlycz0idXNyL3NoYXJl L3NjYW4tdmlldyIKKwlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhv bjMgcGVybCIKKwlzaG9ydF9kZXNjKz0iIC0gQSBzb3VyY2UgY29kZSBhbmFseXNpcyBmcmFtZXdv cmsiCisJaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmctYW5hbHl6ZXIubGx2bS5vcmcvIgorCXBrZ19p bnN0YWxsKCkgeworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvc2Nhbi1idWlsZC4xCisJCXZt b3ZlICIvdXNyL2Jpbi9zY2FuLSoiCisJCXZtb3ZlICIvdXNyL3NoYXJlL3NjYW4tKiIKKwkJdm1v dmUgIi91c3IvbGliZXhlYy8qYW5hbHl6ZXIiCisJfQorfQorCitjbGFuZy10b29scy1leHRyYV9w YWNrYWdlKCkgeworCWxpYjMyZGlzYWJsZWQ9eWVzCisJZGVwZW5kcz0iY2xhbmctJHt2ZXJzaW9u fV8ke3JldmlzaW9ufSBweXRob24zIgorCXNob3J0X2Rlc2MrPSIgLSBFeHRyYSBDbGFuZyB0b29s cyIKKwlob21lcGFnZT0iaHR0cHM6Ly9jbGFuZy5sbHZtLm9yZy9leHRyYS8iCisJcGtnX2luc3Rh bGwoKSB7CisJCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLXRpZHkKKwkJdm1vdmUgdXNyL2Jpbi9j bGFuZy1hcHBseS1yZXBsYWNlbWVudHMKKwkJdm1vdmUgdXNyL2Jpbi9jbGFuZy1xdWVyeQorCQl2 bW92ZSB1c3IvYmluL2NsYW5nLXJlbmFtZQorCQl2bW92ZSB1c3IvYmluL2NsYW5nLXRpZHkKKwkJ dm1vdmUgdXNyL2Jpbi9kaWFndG9vbAorCQl2bW92ZSB1c3IvYmluL2ZpbmQtYWxsLXN5bWJvbHMK KwkJdm1vdmUgdXNyL2Jpbi9obWFwdG9vbAorCQl2bW92ZSB1c3IvYmluL21vZHVsYXJpemUKKwkJ dm1vdmUgdXNyL2Jpbi9wcC10cmFjZQorCQl2bW92ZSB1c3IvYmluL3NhbmNvdgorCQl2bW92ZSAi dXNyL2xpYi9saWJjbGFuZ0FwcGx5UmVwbGFjZW1lbnRzKiIKKwkJdm1vdmUgInVzci9saWIvbGli Y2xhbmdRdWVyeSoiCisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nVGlkeSoiCisJCXZtb3ZlICJ1 c3Ivc2hhcmUvY2xhbmcvKnRpZHkqIgorCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nLXRvb2xz CisJCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9leHRyYWNsYW5ndG9vbHMuMQorCQl2bW92ZSB1 c3Ivc2hhcmUvbWFuL21hbjEvZGlhZ3Rvb2wuMQorCX0KK30KKworY2xhbmdfcGFja2FnZSgpIHsK KwlsaWIzMmRpc2FibGVkPXllcworCWRlcGVuZHM9ImxpYnN0ZGMrKy1kZXZlbCBsaWJnY2MtZGV2 ZWwgIGJpbnV0aWxzICR7WEJQU19UQVJHRVRfTElCQ30tZGV2ZWwKKwkgbGliY2xhbmctJHt2ZXJz aW9ufV8ke3JldmlzaW9ufSIKKwlzaG9ydF9kZXNjKz0iIC0gQyBsYW5ndWFnZSBmYW1pbHkgZnJv bnRlbmQiCisJaG9tZXBhZ2U9Imh0dHBzOi8vY2xhbmcubGx2bS5vcmcvIgorCXBrZ19pbnN0YWxs KCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFuZworCQl2bW92ZSB1c3IvaW5jbHVkZS9jbGFu Zy1jCisJCXZtb3ZlICJ1c3IvYmluLypjbGFuZyoiCisJCXZtb3ZlIHVzci9iaW4vYy1pbmRleC10 ZXN0CisJCXZtb3ZlIHVzci9saWIvY2xhbmcKKwkJdm1vdmUgdXNyL2xpYi9jbWFrZS9jbGFuZwor CQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouYSIKKwkJdm1vdmUgInVzci9saWIvbGliY2xhbmcq LnNvIgorCQl2bW92ZSB1c3Ivc2hhcmUvY2xhbmcKKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9jbGFu ZworCQl2bW92ZSB1c3Ivc2hhcmUvbWFuL21hbjEvY2xhbmcuMQorCX0KK30KKworbGliY2xhbmdf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVuZCBydW50aW1lIGxpYnJhcnki CisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLnNvLioiCisJfQor fQorCitsaWJjbGFuZy1jcHBfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQyBmcm9udGVu ZCBydW50aW1lIGxpYnJhcnkgKEMrKyBpbnRlcmZhY2UpIgorCXBrZ19pbnN0YWxsKCkgeworCQl2 bW92ZSAidXNyL2xpYi9saWJjbGFuZy1jcHAuc28uKiIKKwl9Cit9CisKK2xsZF9wYWNrYWdlKCkg eworCWxpYjMyZGlzYWJsZWQ9eWVzCisJc2hvcnRfZGVzYys9IiAtIGxpbmtlciIKKwlob21lcGFn ZT0iaHR0cHM6Ly9sbGQubGx2bS5vcmciCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9i aW4vbGxkKgorCQl2bW92ZSB1c3IvYmluL3dhc20tbGQKKwkJdm1vdmUgdXNyL2Jpbi9sZC5sbGQq CisJCXZtb3ZlIHVzci9iaW4vbGQ2NC5sbGQqCisJCXZtb3ZlIHVzci9zaGFyZS9kb2MvbGxkCisJ fQorfQorCitsbGQtZGV2ZWxfcGFja2FnZSgpIHsKKwlsaWIzMmRpc2FibGVkPXllcworCXNob3J0 X2Rlc2MrPSIgLSBsaW5rZXIgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlob21lcGFnZT0iaHR0cHM6 Ly9sbGQubGx2bS5vcmciCisJZGVwZW5kcz0ibGxkPj0ke3ZlcnNpb259XyR7cmV2aXNpb259Igor CXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvaW5jbHVkZS9sbGQKKwkJdm1vdmUgdXNyL2xp Yi9jbWFrZS9sbGQKKwkJdm1vdmUgInVzci9saWIvbGlibGxkKmEiCisJfQorfQorCitsbGRiX3Bh Y2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRzKz0iIHB5dGhvbjMtc2l4Igor CXNob3J0X2Rlc2MrPSIgLSBMTERCIGRlYnVnZ2VyIgorCWhvbWVwYWdlPSJodHRwczovL2xsZGIu bGx2bS5vcmcvIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvYmluLypsbGRiKgorCQl2 bW92ZSB1c3IvbGliL2xpYmxsZGIqc28uKgorCQl2bW92ZSAvdXNyL2xpYi9weXRob24qCisJfQor fQorCitsbGRiLWRldmVsX3BhY2thZ2UoKSB7CisJbGliMzJkaXNhYmxlZD15ZXMKKwlkZXBlbmRz PSJsbGRiPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBMTERCIGRl YnVnZ2VyIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVz ci9pbmNsdWRlL2xsZGIKKwkJdm1vdmUgInVzci9saWIvbGlibGxkYiouc28iCisJfQorfQorCits bHZtLWxpYnVud2luZF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlICJ1c3IvbGliL2xpYnVud2luZC5zby4qIgorCX0KK30K KworbGx2bS1saWJ1bndpbmQtZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gbGli dW53aW5kIC0gZGV2ZWxvcG1lbnQgZmlsZXMiCisJZGVwZW5kcz0ibGx2bS1saWJ1bndpbmQ+PSR7 dmVyc2lvbn1fJHtyZXZpc2lvbn0iCisJY29uZmxpY3RzPSJsaWJ1bndpbmQtZGV2ZWw+PTAiCisJ cGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIvbGlidW53aW5kLnNvCisJCXZtb3ZlIHVz ci9saWIvbGlidW53aW5kLmEKKwkJdm1vdmUgInVzci9pbmNsdWRlLyp1bndpbmQqIgorCQl2bW92 ZSB1c3IvaW5jbHVkZS9tYWNoLW8KKwkJdm1vdmUgdXNyL3NoYXJlL2RvYy9saWJ1bndpbmQKKwl9 Cit9CisKK2xpYmN4eGFiaV9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwg c3VwcG9ydCBmb3IgbGliYysrIgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92ZSAidXNyL2xpYi9s aWJjKythYmkuc28uKiIKKwl9Cit9CisKK2xpYmN4eGFiaS1kZXZlbF9wYWNrYWdlKCkgeworCXNo b3J0X2Rlc2MrPSIgLSBsb3cgbGV2ZWwgc3VwcG9ydCBmb3IgbGliYysrIC0gZGV2ZWxvcG1lbnQg ZmlsZXMiCisJZGVwZW5kcz0ibGliY3h4YWJpPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXBr Z19pbnN0YWxsKCkgeworCQl2bW92ZSB1c3IvbGliL2xpYmMrK2FiaS5zbworCQl2bW92ZSB1c3Iv bGliL2xpYmMrK2FiaS5hCisJCXZtb3ZlICJ1c3IvaW5jbHVkZS8qY3h4YWJpKiIKKwl9Cit9CisK K2xpYmN4eF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFy eSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGliYysrLnNvLioiCisJfQor fQorCitsaWJjeHgtZGV2ZWxfcGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQysrIHN0YW5k YXJkIGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKKwlkZXBlbmRzPSJsaWJjeHg+PSR7dmVy c2lvbn1fJHtyZXZpc2lvbn0iCisJcGtnX2luc3RhbGwoKSB7CisJCXZtb3ZlIHVzci9saWIvbGli YysrLnNvCisJCXZtb3ZlIHVzci9saWIvbGliYysrLmEKKwkJdm1vdmUgdXNyL2xpYi9saWJjKytl eHBlcmltZW50YWwuYQorCQl2bW92ZSB1c3IvaW5jbHVkZS9jKysKKwkJdm1vdmUgdXNyL3NoYXJl L2RvYy9saWJjeHgKKwl9Cit9CisKK2xpYm9tcF9wYWNrYWdlKCkgeworCXNob3J0X2Rlc2MrPSIg LSBDbGFuZyBPcGVuTVAgc3VwcG9ydCBsaWJyYXJ5IgorCXBrZ19pbnN0YWxsKCkgeworCQl2bW92 ZSB1c3IvbGliL2xpYm9tcC5zbworCQl2bW92ZSAidXNyL2xpYi9saWJvbXB0YXJnZXQucnRsLiou c28iCisJCXZtb3ZlIHVzci9saWIvbGliYXJjaGVyLnNvCisJfQorfQorCitsaWJvbXAtZGV2ZWxf cGFja2FnZSgpIHsKKwlzaG9ydF9kZXNjKz0iIC0gQ2xhbmcgT3Blbk1QIHN1cHBvcnQgbGlicmFy eSAtIGRldmVsb3BtZW50IGZpbGVzIgorCWRlcGVuZHM9ImxpYm9tcD49JHt2ZXJzaW9ufV8ke3Jl dmlzaW9ufSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIvbGlib21wKi5zbyIK KwkJdm1vdmUgInVzci9saWIvbGliYXJjaGVyKiIKKwkJdm1vdmUgInVzci9pbmNsdWRlL29tcCou aCIKKwkJdm1vdmUgInVzci9saWIvY2xhbmcvJHt2ZXJzaW9ufS9pbmNsdWRlL29tcCouaCIKKwkJ dm1vdmUgdXNyL3NoYXJlL21hbi9tYW4xL2xsdm1vcGVubXAuMQorCQl2bW92ZSB1c3Ivc2hhcmUv ZG9jL29wZW5tcAorCX0KK30KKworbGlibGx2bTEzX3BhY2thZ2UoKSB7CisJc2hvcnRfZGVzYys9 IiAtIHJ1bnRpbWUgbGlicmFyeSIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgInVzci9saWIv bGliTExWTS0qLnNvKiIKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMy91cGRhdGUg Yi9zcmNwa2dzL2xsdm0xMy91cGRhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5lOTVjZjI2YjM1ODYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2xsdm0xMy91 cGRhdGUKQEAgLTAsMCArMSwzIEBACitzaXRlPSJodHRwczovL2dpdGh1Yi5jb20vbGx2bS9sbHZt LXByb2plY3QvcmVsZWFzZXMiCitwYXR0ZXJuPSJsbHZtb3JnLVxLKFxkKy4pezJ9XGQrKC1yY1xk Kyk/IgoraWdub3JlPSIqLXJjKiIKCkZyb20gZGI4ZmJhOTNlZmFkOGNmMDRlYmI5YTdmZWI2NWRj NmY3OTZjOGQwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlz PTIwRHVwcj1DMz1BOT0yMEJlcnRvbmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9y Zz4KRGF0ZTogRnJpLCAzMSBEZWMgMjAyMSAxNjoyMzoxNyArMDIwMApTdWJqZWN0OiBbUEFUQ0gg MDIvMzBdIGxsdm06IHVwZGF0ZSB0byAxMy4wLjAKCi0tLQogc3JjcGtncy9sbHZtL3RlbXBsYXRl IHwgNiArKystLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtL3Rl bXBsYXRlCmluZGV4IGE5MmRiNmY5NGY5Zi4uYmNmZWU4MjA5OGZmIDEwMDY0NAotLS0gYS9zcmNw a2dzL2xsdm0vdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtL3RlbXBsYXRlCkBAIC0xLDEwICsx LDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdsbHZtJwogcGtnbmFtZT1sbHZtCi12ZXJzaW9u PTEyLjAuMAordmVyc2lvbj0xMy4wLjAKIHJldmlzaW9uPTEKIGJ1aWxkX3N0eWxlPW1ldGEKLWRl cGVuZHM9Imxsdm0xMiIKLXJlcGxhY2VzPSJsbHZtMTE+PTAgbGx2bTEwPj0wIGxsdm05Pj0wIGxs dm04Pj0wIGxsdm03Pj0wIGxsdm02LjA+PTAgbGx2bTMuOT49MCIKK2RlcGVuZHM9Imxsdm0xMyIK K3JlcGxhY2VzPSJsbHZtMTI+PTAgbGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49 MCBsbHZtNz49MCBsbHZtNi4wPj0wIGxsdm0zLjk+PTAiCiBzaG9ydF9kZXNjPSJMTFZNIG1ldGEg cGFja2FnZSIKIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4i CiBsaWNlbnNlPSJQdWJsaWMgRG9tYWluIgoKRnJvbSBkMDRlNjg0MzNmZTI1OWUxMWIzNjRiZjEx ZjI0ZGEyNzY1NDMyYWIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/ TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3Ry ZXMub3JnPgpEYXRlOiBGcmksIDMxIERlYyAyMDIxIDE2OjQzOjU2ICswMjAwClN1YmplY3Q6IFtQ QVRDSCAwMy8zMF0gbGx2bTEyOiByZW1vdmUgY2xhbmcgcGFydHMKCi0tLQogLi4uY2xhbmctMDAx LWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoIHwgIDQ0IC0tLQogLi4uL3BhdGNoZXMv Y2xhbmctMDAyLWFkZC1tdXNsLXRyaXBsZXMucGF0Y2ggIHwgMTEwIC0tLS0tLS0KIC4uLi9jbGFu Zy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaCB8ICAxMyAtCiAuLi4vcGF0Y2hl cy9jbGFuZy0wMDQtcHBjNjQtbXVzbC1lbGZ2Mi5wYXRjaCAgfCAgNDggLS0tCiAuLi4vY29tcGls ZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCAgICAgICAgfCAgMTEgLQogLi4uL2NvbXBpbGVy LXJ0LXNhbml0aXplci1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDM1IC0tCiAuLi4vbGx2bTEyL3Bh dGNoZXMvY29tcGlsZXItcnQtc2l6ZV90LnBhdGNoICAgfCAgMTAgLQogLi4uL3BhdGNoZXMvY29t cGlsZXItcnQteHJheS1wcGM2NC1tdXNsLnBhdGNoIHwgIDYyIC0tLS0KIHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2ggICAgICB8ICAyNiAtLQogc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoICAgICAgIHwgIDIyIC0tCiAuLi4vbGx2bTEyL3BhdGNo ZXMvbGliY3h4LXNzcC1ub25zaGFyZWQucGF0Y2ggfCAgMTEgLQogc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9saWJjeHhhYmktZGwucGF0Y2ggICAgIHwgIDI1IC0tCiBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaCAgfCAgNjMgLS0tLQogc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9sbGRiLW11c2wucGF0Y2ggICAgICAgIHwgIDMxIC0tCiAuLi4vbGx2bTEyL3BhdGNoZXMv cHBjMzItY29tcGlsZXItcnQucGF0Y2ggICAgfCAgMjEgLS0KIHNyY3BrZ3MvbGx2bTEyL3RlbXBs YXRlICAgICAgICAgICAgICAgICAgICAgICB8IDMwMSArLS0tLS0tLS0tLS0tLS0tLS0KIDE2IGZp bGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA4MzIgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFp bi1pbmNsdXNpb24ucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2NsYW5nLTAwMi1hZGQtbXVzbC10cmlwbGVzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0 aC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmct MDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LWFhcmNoNjQtdWNvbnRleHQucGF0Y2gKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXNhbml0aXplci1w cGM2NC1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hl cy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2NvbXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4LW11c2wucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1wcGMucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1zc3Atbm9uc2hh cmVkLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJj eHhhYmktZGwucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYnVud2luZC1wcGMzMi5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGxkYi1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9wcGMzMi1jb21waWxlci1ydC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNo IGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDEtZml4LXVud2luZC1jaGFpbi1pbmNs dXNpb24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0ZWFhNzc4M2U3YS4u MDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDAxLWZpeC11 bndpbmQtY2hhaW4taW5jbHVzaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBA QAotRnJvbSAzNTI5NzQxNjlmMGQyYjVkYTNkNTMyMWY1ODhmNWUzYjU5NDEzMzBlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21haWwu Y29tPgotRGF0ZTogVHVlLCA4IFNlcCAyMDE1IDIyOjE0OjU3ICswMjAwCi1TdWJqZWN0OiBbUEFU Q0ggMi83XSBmaXggdW53aW5kIGNoYWluIGluY2x1c2lvbgotCi0tLS0KLSBsaWIvSGVhZGVycy91 bndpbmQuaCB8IDkgKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwg NCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9IZWFkZXJzL3Vud2luZC5oIGIvbGli L0hlYWRlcnMvdW53aW5kLmgKLWluZGV4IDMwM2Q3OTIuLjQ0ZTEwY2MgMTAwNjQ0Ci0tLS0gYS9j bGFuZy9saWIvSGVhZGVycy91bndpbmQuaAotKysrIGIvY2xhbmcvbGliL0hlYWRlcnMvdW53aW5k LmgKLUBAIC05LDkgKzksNiBAQAotIAotIC8qIFNlZSAiRGF0YSBEZWZpbml0aW9ucyBmb3IgbGli Z2NjX3MiIGluIHRoZSBMaW51eCBTdGFuZGFyZCBCYXNlLiovCi0gCi0tI2lmbmRlZiBfX0NMQU5H X1VOV0lORF9ICi0tI2RlZmluZSBfX0NMQU5HX1VOV0lORF9ICi0tCi0gI2lmIGRlZmluZWQoX19B UFBMRV9fKSAmJiBfX2hhc19pbmNsdWRlX25leHQoPHVud2luZC5oPikKLSAvKiBEYXJ3aW4gKGZy b20gMTEueCBvbikgcHJvdmlkZSBhbiB1bndpbmQuaC4gSWYgdGhhdCdzIGF2YWlsYWJsZSwKLSAg KiB1c2UgaXQuIGxpYnVud2luZCB3cmFwcyBzb21lIG9mIGl0cyBkZWZpbml0aW9ucyBpbiAjaWZk ZWYgX0dOVV9TT1VSQ0UsCi1AQCAtMzksNiArMzYsOSBAQAotICMgZW5kaWYKLSAjZWxzZQotIAot KyNpZm5kZWYgX19DTEFOR19VTldJTkRfSAotKyNkZWZpbmUgX19DTEFOR19VTldJTkRfSAotKwot ICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAKLSAjaWZkZWYgX19jcGx1c3BsdXMKLUBAIC0zMjIsNiAr MzIyLDcgQEAgX1Vud2luZF9QdHIgX1Vud2luZF9HZXRUZXh0UmVsQmFzZShzdHJ1Y3QgX1Vud2lu ZF9Db250ZXh0ICopOwotIH0KLSAjZW5kaWYKLSAKLSsjZW5kaWYgLyogX19DTEFOR19VTldJTkRf SCAqLwotKwotICNlbmRpZgotIAotLSNlbmRpZiAvKiBfX0NMQU5HX1VOV0lORF9IICovCi0tLSAK LTIuNS4xCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwMi1hZGQt bXVzbC10cmlwbGVzLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDItYWRk LW11c2wtdHJpcGxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU2ODhk NDBkYmMyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0w MDItYWRkLW11c2wtdHJpcGxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBA Ci0tLS0gYS9jbGFuZy9saWIvRHJpdmVyL1Rvb2xDaGFpbnMvR251LmNwcAotKysrIGIvY2xhbmcv bGliL0RyaXZlci9Ub29sQ2hhaW5zL0dudS5jcHAKLUBAIC0yMDg2LDcgKzIwODYsOCBAQCB2b2lk IEdlbmVyaWNfR0NDOjpHQ0NJbnN0YWxsYXRpb25EZXRlY3Rvcjo6QWRkRGVmYXVsdEdDQ1ByZWZp eGVzKAotICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IEFSTUhGVHJpcGxlc1tdID0geyJhcm0t bGludXgtZ251ZWFiaWhmIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiYXJtdjdobC1yZWRoYXQtbGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFybXY2aGwtc3VzZS1saW51eC1nbnVlYWJp IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtdjdo bC1zdXNlLWxpbnV4LWdudWVhYmkifTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAiYXJtdjdobC1zdXNlLWxpbnV4LWdudWVhYmkiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcm12N2wtbGludXgtZ251ZWFiaWhm In07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQVJNZWJMaWJEaXJzW10gPSB7Ii9saWIi fTsKLSAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBBUk1lYlRyaXBsZXNbXSA9IHsiYXJtZWIt bGludXgtZ251ZWFiaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgImFybWViLWxpbnV4LWFuZHJvaWRlYWJpIn07Ci1AQCAtMjE1Myw4ICsyMTU0LDcgQEAg dm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERlZmF1bHRHQ0NQ cmVmaXhlcygKLSAgICAgICAicG93ZXJwYzY0LXN1c2UtbGludXgiLCAicG93ZXJwYy1tb250YXZp c3RhLWxpbnV4c3BlIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBDTEVMaWJEaXJz W10gPSB7Ii9saWIzMiIsICIvbGliIn07Ci0gICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgUFBD TEVUcmlwbGVzW10gPSB7InBvd2VycGNsZS1saW51eC1nbnUiLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1nbnUi LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBj bGUtbGludXgtbXVzbCJ9OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJwb3dlcnBjbGUtdW5rbm93bi1saW51eC1nbnUifTsKLSAKLSAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBQUEM2NExpYkRpcnNbXSA9IHsiL2xpYjY0IiwgIi9saWIifTsKLSAgIHN0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBQUEM2NFRyaXBsZXNbXSA9IHsKLUBAIC0yMjM1LDYgKzIy MzUsODcgQEAgdm9pZCBHZW5lcmljX0dDQzo6R0NDSW5zdGFsbGF0aW9uRGV0ZWN0b3I6OkFkZERl ZmF1bHRHQ0NQcmVmaXhlcygKLSAgICAgcmV0dXJuOwotICAgfQotIAotKyAgaWYgKFRhcmdldFRy aXBsZS5pc011c2woKSkgewotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFyY2g2NE11 c2xUcmlwbGVzW10gPSB7ImFhcmNoNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3Qg Y2hhciAqY29uc3QgQVJNSEZNdXNsVHJpcGxlc1tdID0gewotKyAgICAgICAgImFybS1saW51eC1t dXNsZWFiaWhmIiwgImFybXY3bC1saW51eC1tdXNsZWFiaWhmIgotKyAgICB9OwotKyAgICBzdGF0 aWMgY29uc3QgY2hhciAqY29uc3QgQVJNTXVzbFRyaXBsZXNbXSA9IHsiYXJtLWxpbnV4LW11c2xl YWJpIn07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBYODZfNjRNdXNsVHJpcGxlc1td ID0geyJ4ODZfNjQtbGludXgtbXVzbCJ9OwotKyAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qg WDg2TXVzbFRyaXBsZXNbXSA9IHsiaTY4Ni1saW51eC1tdXNsIn07Ci0rICAgIHN0YXRpYyBjb25z dCBjaGFyICpjb25zdCBNSVBTTXVzbFRyaXBsZXNbXSA9IHsKLSsgICAgICAgICJtaXBzLWxpbnV4 LW11c2wiLCAibWlwc2VsLWxpbnV4LW11c2wiLAotKyAgICAgICAgIm1pcHNlbC1saW51eC1tdXNs aGYiLCAibWlwcy1saW51eC1tdXNsaGYiCi0rICAgIH07Ci0rICAgIHN0YXRpYyBjb25zdCBjaGFy ICpjb25zdCBQUENNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjLWxpbnV4LW11c2wifTsKLSsgICAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQ0xFTXVzbFRyaXBsZXNbXSA9IHsicG93ZXJwY2xl LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IFBQQzY0TXVzbFRy aXBsZXNbXSA9IHsicG93ZXJwYzY0LWxpbnV4LW11c2wifTsKLSsgICAgc3RhdGljIGNvbnN0IGNo YXIgKmNvbnN0IFBQQzY0TEVNdXNsVHJpcGxlc1tdID0geyJwb3dlcnBjNjRsZS1saW51eC1tdXNs In07Ci0rCi0rICAgIHN3aXRjaCAoVGFyZ2V0VHJpcGxlLmdldEFyY2goKSkgewotKyAgICBjYXNl IGxsdm06OlRyaXBsZTo6YWFyY2g2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJj aDY0TGliRGlycyksIGVuZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIFRyaXBsZUFsaWFzZXMu YXBwZW5kKGJlZ2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMp KTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChiZWdpbihBQXJjaDY0TGliRGlycyksIGVu ZChBQXJjaDY0TGliRGlycykpOwotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJl Z2luKEFBcmNoNjRNdXNsVHJpcGxlcyksIGVuZChBQXJjaDY0TXVzbFRyaXBsZXMpKTsKLSsgICAg ICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OmFybToKLSsgICAgICBMaWJEaXJzLmFw cGVuZChiZWdpbihBUk1MaWJEaXJzKSwgZW5kKEFSTUxpYkRpcnMpKTsKLSsgICAgICBpZiAoVGFy Z2V0VHJpcGxlLmdldEVudmlyb25tZW50KCkgPT0gbGx2bTo6VHJpcGxlOjpNdXNsRUFCSUhGKSB7 Ci0rICAgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihBUk1IRk11c2xUcmlwbGVzKSwg ZW5kKEFSTUhGTXVzbFRyaXBsZXMpKTsKLSsgICAgICB9IGVsc2UgewotKyAgICAgICAgVHJpcGxl QWxpYXNlcy5hcHBlbmQoYmVnaW4oQVJNTXVzbFRyaXBsZXMpLCBlbmQoQVJNTXVzbFRyaXBsZXMp KTsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjp4ODZf NjQ6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2XzY0TGliRGlycyksIGVuZChYODZf NjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVz bFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJz LmFwcGVuZChiZWdpbihYODZMaWJEaXJzKSwgZW5kKFg4NkxpYkRpcnMpKTsKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihYODZNdXNsVHJpcGxlcyksIGVuZChYODZNdXNs VHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBjYXNlIGxsdm06OlRyaXBsZTo6eDg2Ogot KyAgICAgIExpYkRpcnMuYXBwZW5kKGJlZ2luKFg4NkxpYkRpcnMpLCBlbmQoWDg2TGliRGlycykp OwotKyAgICAgIFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFg4Nk11c2xUcmlwbGVzKSwgZW5k KFg4Nk11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQoYmVnaW4oWDg2 XzY0TGliRGlycyksIGVuZChYODZfNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJpcGxlQWxp YXNlcy5hcHBlbmQoYmVnaW4oWDg2XzY0TXVzbFRyaXBsZXMpLCBlbmQoWDg2XzY0TXVzbFRyaXBs ZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6Om1pcHM6Ci0rICAg ICAgTGliRGlycy5hcHBlbmQoYmVnaW4oTUlQU0xpYkRpcnMpLCBlbmQoTUlQU0xpYkRpcnMpKTsK LSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihNSVBTTXVzbFRyaXBsZXMpLCBlbmQo TUlQU011c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENM aWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBs ZXMpLCBlbmQoUFBDTXVzbFRyaXBsZXMpKTsKLSsgICAgICBCaWFyY2hMaWJEaXJzLmFwcGVuZChi ZWdpbihQUEM2NExpYkRpcnMpLCBlbmQoUFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgQmlhcmNoVHJp cGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRNdXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xU cmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxlOjpwcGNsZToK LSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUENMRUxpYkRpcnMpLCBlbmQoUFBDTEVMaWJE aXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTEVNdXNsVHJpcGxl cyksIGVuZChQUENMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGlycy5hcHBlbmQo YmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBDNjRMRUxpYkRpcnMpKTsKLSsgICAgICBCaWFy Y2hUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExFTXVzbFRyaXBsZXMpLCBlbmQoUFBD NjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgbGx2bTo6VHJpcGxl OjpwcGM2NDoKLSsgICAgICBMaWJEaXJzLmFwcGVuZChiZWdpbihQUEM2NExpYkRpcnMpLCBlbmQo UFBDNjRMaWJEaXJzKSk7Ci0rICAgICAgVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDNjRN dXNsVHJpcGxlcyksIGVuZChQUEM2NE11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGliRGly cy5hcHBlbmQoYmVnaW4oUFBDTGliRGlycyksIGVuZChQUENMaWJEaXJzKSk7Ci0rICAgICAgQmlh cmNoVHJpcGxlQWxpYXNlcy5hcHBlbmQoYmVnaW4oUFBDTXVzbFRyaXBsZXMpLCBlbmQoUFBDTXVz bFRyaXBsZXMpKTsKLSsgICAgICBicmVhazsKLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0 bGU6Ci0rICAgICAgTGliRGlycy5hcHBlbmQoYmVnaW4oUFBDNjRMRUxpYkRpcnMpLCBlbmQoUFBD NjRMRUxpYkRpcnMpKTsKLSsgICAgICBUcmlwbGVBbGlhc2VzLmFwcGVuZChiZWdpbihQUEM2NExF TXVzbFRyaXBsZXMpLCBlbmQoUFBDNjRMRU11c2xUcmlwbGVzKSk7Ci0rICAgICAgQmlhcmNoTGli RGlycy5hcHBlbmQoYmVnaW4oUFBDTEVMaWJEaXJzKSwgZW5kKFBQQ0xFTGliRGlycykpOwotKyAg ICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMuYXBwZW5kKGJlZ2luKFBQQ0xFTXVzbFRyaXBsZXMpLCBl bmQoUFBDTEVNdXNsVHJpcGxlcykpOwotKyAgICAgIGJyZWFrOwotKyAgICBkZWZhdWx0OgotKyAg ICAgIGJyZWFrOwotKyAgICB9Ci0rICAgIFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKFRhcmdldFRy aXBsZS5zdHIoKSk7Ci0rICAgIGlmIChUYXJnZXRUcmlwbGUuc3RyKCkgIT0gQmlhcmNoVHJpcGxl LnN0cigpKQotKyAgICAgIEJpYXJjaFRyaXBsZUFsaWFzZXMucHVzaF9iYWNrKEJpYXJjaFRyaXBs ZS5zdHIoKSk7Ci0rICAgIHJldHVybjsKLSsgIH0KLSsKLSAgIC8vIEFuZHJvaWQgdGFyZ2V0cyBz aG91bGQgbm90IHVzZSBHTlUvTGludXggdG9vbHMgb3IgbGlicmFyaWVzLgotICAgaWYgKFRhcmdl dFRyaXBsZS5pc0FuZHJvaWQoKSkgewotICAgICBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgQUFy Y2g2NEFuZHJvaWRUcmlwbGVzW10gPSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2NsYW5nLTAwMy1wcGM2NC1keW5hbWljLWxpbmtlci1wYXRoLnBhdGNoIGIvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5rZXItcGF0aC5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFkNjQxMmQxZTZjLi4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jbGFuZy0wMDMtcHBjNjQtZHluYW1pYy1saW5r ZXItcGF0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS0tLSBhL2NsYW5n L2xpYi9Ecml2ZXIvVG9vbENoYWlucy9MaW51eC5jcHAKLSsrKyBiL2NsYW5nL2xpYi9Ecml2ZXIv VG9vbENoYWlucy9MaW51eC5jcHAKLUBAIC01MDQsMTAgKzUwNCw2IEBAIHN0ZDo6c3RyaW5nIExp bnV4OjpnZXREeW5hbWljTGlua2VyKGNvbnN0IEFyZ0xpc3QgJkFyZ3MpIGNvbnN0IHsKLSAgICAg TG9hZGVyID0gImxkLnNvLjEiOwotICAgICBicmVhazsKLSAgIGNhc2UgbGx2bTo6VHJpcGxlOjpw cGM2NDoKLS0gICAgTGliRGlyID0gImxpYjY0IjsKLS0gICAgTG9hZGVyID0KLS0gICAgICAgICh0 b29sczo6cHBjOjpoYXNQUENBYmlBcmcoQXJncywgImVsZnYyIikpID8gImxkNjQuc28uMiIgOiAi bGQ2NC5zby4xIjsKLS0gICAgYnJlYWs7Ci0gICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToK LSAgICAgTGliRGlyID0gImxpYjY0IjsKLSAgICAgTG9hZGVyID0KZGlmZiAtLWdpdCBhL3NyY3Br Z3MvbGx2bTEyL3BhdGNoZXMvY2xhbmctMDA0LXBwYzY0LW11c2wtZWxmdjIucGF0Y2ggYi9zcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWZjODAwM2M1ZjEuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2NsYW5nLTAwNC1wcGM2NC1tdXNsLWVsZnYyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLS0tIGEvY2xhbmcvbGliL0Jhc2ljL1Rh cmdldHMvUFBDLmgKLSsrKyBiL2NsYW5nL2xpYi9CYXNpYy9UYXJnZXRzL1BQQy5oCi1AQCAtNDE1 LDExICs0MTUsMTAgQEAgcHVibGljOgotICAgICAgIExvbmdEb3VibGVGb3JtYXQgPSAmbGx2bTo6 QVBGbG9hdDo6SUVFRWRvdWJsZSgpOwotICAgICB9IGVsc2UgaWYgKChUcmlwbGUuZ2V0QXJjaCgp ID09IGxsdm06OlRyaXBsZTo6cHBjNjRsZSkpIHsKLSAgICAgICBEYXRhTGF5b3V0ID0gImUtbTpl LWk2NDo2NC1uMzI6NjQiOwotLSAgICAgIEFCSSA9ICJlbGZ2MiI7Ci0gICAgIH0gZWxzZSB7Ci0g ICAgICAgRGF0YUxheW91dCA9ICJFLW06ZS1pNjQ6NjQtbjMyOjY0IjsKLS0gICAgICBBQkkgPSAi ZWxmdjEiOwotICAgICB9Ci0rICAgIEFCSSA9ICJlbGZ2MiI7Ci0gCi0gICAgIGlmIChUcmlwbGUu aXNPU0ZyZWVCU0QoKSB8fCBUcmlwbGUuaXNPU09wZW5CU0QoKSB8fCBUcmlwbGUuaXNNdXNsKCkp IHsKLSAgICAgICBMb25nRG91YmxlV2lkdGggPSBMb25nRG91YmxlQWxpZ24gPSA2NDsKLS0tLSBh L2NsYW5nL2xpYi9Db2RlR2VuL1RhcmdldEluZm8uY3BwCi0rKysgYi9jbGFuZy9saWIvQ29kZUdl bi9UYXJnZXRJbmZvLmNwcAotQEAgLTEwOTI3LDkgKzEwOTI3LDkgQEAgY29uc3QgVGFyZ2V0Q29k ZUdlbkluZm8gJkNvZGVHZW5Nb2R1bGU6OmdldFRhcmdldENvZGVHZW5JbmZvKCkgewotICAgICAg IHJldHVybiBTZXRDR0luZm8obmV3IEFJWFRhcmdldENvZGVHZW5JbmZvKFR5cGVzLCAvKklzNjRC aXQqLyB0cnVlKSk7Ci0gCi0gICAgIGlmIChUcmlwbGUuaXNPU0JpbkZvcm1hdEVMRigpKSB7Ci0t ICAgICAgUFBDNjRfU1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUlu Zm86OkVMRnYxOwotLSAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjIiKQot LSAgICAgICAgS2luZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjI7Ci0rICAgICAgUFBDNjRf U1ZSNF9BQklJbmZvOjpBQklLaW5kIEtpbmQgPSBQUEM2NF9TVlI0X0FCSUluZm86OkVMRnYyOwot KyAgICAgIGlmIChnZXRUYXJnZXQoKS5nZXRBQkkoKSA9PSAiZWxmdjEiKQotKyAgICAgICAgS2lu ZCA9IFBQQzY0X1NWUjRfQUJJSW5mbzo6RUxGdjE7Ci0gICAgICAgYm9vbCBJc1NvZnRGbG9hdCA9 IENvZGVHZW5PcHRzLkZsb2F0QUJJID09ICJzb2Z0IjsKLSAKLSAgICAgICByZXR1cm4gU2V0Q0dJ bmZvKAotLS0tIGEvY2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotKysrIGIv Y2xhbmcvbGliL0RyaXZlci9Ub29sQ2hhaW5zL0NsYW5nLmNwcAotQEAgLTE5MjAsMTQgKzE5MjAs NyBAQCB2b2lkIENsYW5nOjpBZGRQUENUYXJnZXRBcmdzKGNvbnN0IEFyZ0xpc3QgJkFyZ3MsCi0g ICBjb25zdCBsbHZtOjpUcmlwbGUgJlQgPSBnZXRUb29sQ2hhaW4oKS5nZXRUcmlwbGUoKTsKLSAg IGlmIChULmlzT1NCaW5Gb3JtYXRFTEYoKSkgewotICAgICBzd2l0Y2ggKGdldFRvb2xDaGFpbigp LmdldEFyY2goKSkgewotLSAgICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjQ6IHsKLS0gICAgICBp ZiAoKFQuaXNPU0ZyZWVCU0QoKSAmJiBULmdldE9TTWFqb3JWZXJzaW9uKCkgPj0gMTMpIHx8Ci0t ICAgICAgICAgIFQuaXNPU09wZW5CU0QoKSB8fCBULmlzTXVzbCgpKQotLSAgICAgICAgQUJJTmFt ZSA9ICJlbGZ2MiI7Ci0tICAgICAgZWxzZQotLSAgICAgICAgQUJJTmFtZSA9ICJlbGZ2MSI7Ci0t ICAgICAgYnJlYWs7Ci0tICAgIH0KLSsgICAgY2FzZSBsbHZtOjpUcmlwbGU6OnBwYzY0OgotICAg ICBjYXNlIGxsdm06OlRyaXBsZTo6cHBjNjRsZToKLSAgICAgICBBQklOYW1lID0gImVsZnYyIjsK LSAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGls ZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29t cGlsZXItcnQtYWFyY2g2NC11Y29udGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggODkzYzA1OWQ3YjhkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC1hYXJjaDY0LXVjb250ZXh0LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMTEgKzAsMCBAQAotLS0tIGEvY29tcGlsZXItcnQvbGliL3Nhbml0aXplcl9jb21tb24vc2Fu aXRpemVyX2xpbnV4LmNwcC5vcmlnCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2Nv bW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1AQCAtMTc5OSw3ICsxNzk5LDcgQEAKLSAKLSBzdGF0 aWMgYm9vbCBBYXJjaDY0R2V0RVNSKHVjb250ZXh0X3QgKnVjb250ZXh0LCB1NjQgKmVzcikgewot ICAgc3RhdGljIGNvbnN0IHUzMiBrRXNyTWFnaWMgPSAweDQ1NTM1MjAxOwotLSAgdTggKmF1eCA9 IHVjb250ZXh0LT51Y19tY29udGV4dC5fX3Jlc2VydmVkOwotKyAgdTggKmF1eCA9IHJlaW50ZXJw cmV0X2Nhc3Q8dTggKj4odWNvbnRleHQtPnVjX21jb250ZXh0Ll9fcmVzZXJ2ZWQpOwotICAgd2hp bGUgKHRydWUpIHsKLSAgICAgX2FhcmNoNjRfY3R4ICpjdHggPSAoX2FhcmNoNjRfY3R4ICopYXV4 OwotICAgICBpZiAoY3R4LT5zaXplID09IDApIGJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zYW5pdGl6ZXItcHBjNjQtbXVzbC5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBwYzY0LW11c2wucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1ZjE2ZDI0ZjM0MC4uMDAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvY29tcGlsZXItcnQtc2FuaXRpemVyLXBw YzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0tLS0gYS9jb21w aWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi0rKysgYi9j b21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfbGludXguY3BwCi1AQCAt NzQsNiArNzQsMTAgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjZW5kaWYKLSAKLSsj aWYgU0FOSVRJWkVSX0xJTlVYICYmIGRlZmluZWQoX19wb3dlcnBjX18pCi0rI2luY2x1ZGUgPGFz bS9wdHJhY2UuaD4KLSsjZW5kaWYKLSsKLSAjaWYgU0FOSVRJWkVSX0xJTlVYICYmICFTQU5JVEla RVJfQU5EUk9JRAotICNpbmNsdWRlIDxzeXMvcGVyc29uYWxpdHkuaD4KLSAjZW5kaWYKLS0tLSBh L2NvbXBpbGVyLXJ0L2xpYi9zYW5pdGl6ZXJfY29tbW9uL3Nhbml0aXplcl9wbGF0Zm9ybV9saW1p dHNfcG9zaXguY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5p dGl6ZXJfcGxhdGZvcm1fbGltaXRzX3Bvc2l4LmNwcAotQEAgLTkyLDcgKzkyLDcgQEAKLSAjIGlu Y2x1ZGUgPHV0aW1lLmg+Ci0gIyBpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0gI2lmIGRlZmluZWQo X19taXBzNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg XAotLSAgICBTQU5JVElaRVJfUklTQ1Y2NAotKyAgICBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBT QU5JVElaRVJfUklTQ1Y2NAotICMgIGluY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjICBpZmRlZiBf X2FybV9fCi0gdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHJlZ3MgZWxmX2ZwcmVnc2V0X3Q7Ci0tLS0g YS9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1vbi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxk X2xpbnV4X2xpYmNkZXAuY3BwCi0rKysgYi9jb21waWxlci1ydC9saWIvc2FuaXRpemVyX2NvbW1v bi9zYW5pdGl6ZXJfc3RvcHRoZXdvcmxkX2xpbnV4X2xpYmNkZXAuY3BwCi1AQCAtMzEsNyArMzEs NyBAQAotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLy8gZm9yIHBpZF90Ci0gI2luY2x1ZGUgPHN5 cy91aW8uaD4gLy8gZm9yIGlvdmVjCi0gI2luY2x1ZGUgPGVsZi5oPiAvLyBmb3IgTlRfUFJTVEFU VVMKLS0jaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAh U0FOSVRJWkVSX0FORFJPSUQKLSsjaWYgKGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQo X19wb3dlcnBjX18pIHx8IFNBTklUSVpFUl9SSVNDVjY0KSAmJiAhU0FOSVRJWkVSX0FORFJPSUQK LSAvLyBHTElCQyAyLjIwKyBzeXMvdXNlciBkb2VzIG5vdCBpbmNsdWRlIGFzbS9wdHJhY2UuaAot ICMgaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotICNlbmRpZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9s bHZtMTIvcGF0Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9w YXRjaGVzL2NvbXBpbGVyLXJ0LXNpemVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMmM2MzA2M2E1ZTllLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC1zaXplX3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCww IEBACi0tLS0gYS9jb21waWxlci1ydC9saWIvZnV6emVyL0Z1enplckludGVyY2VwdG9ycy5jcHAu b3JpZwotKysrIGIvY29tcGlsZXItcnQvbGliL2Z1enplci9GdXp6ZXJJbnRlcmNlcHRvcnMuY3Bw Ci1AQCAtMjUsNiArMjUsNyBAQAotICAgfQotIAotICNpbmNsdWRlIDxjYXNzZXJ0PgotKyNpbmNs dWRlIDxjc3RkZGVmPgotICNpbmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxkbGZjbi5oPiAv LyBmb3IgZGxzeW0oKQotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9jb21w aWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2Nv bXBpbGVyLXJ0LXhyYXktcHBjNjQtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZDBiNjFjODBjODk3Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9jb21waWxlci1ydC14cmF5LXBwYzY0LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw2MiArMCwwIEBACi0tLS0gYS9jb21waWxlci1ydC9saWIveHJheS94cmF5X3Bvd2VycGM2NC5p bmMKLSsrKyBiL2NvbXBpbGVyLXJ0L2xpYi94cmF5L3hyYXlfcG93ZXJwYzY0LmluYwotQEAgLTEy LDcgKzEyLDEzIEBACi0gCi0gI2luY2x1ZGUgPGNzdGRpbnQ+Ci0gI2luY2x1ZGUgPG11dGV4Pgot KyNpZmRlZiBfX0dMSUJDX18KLSAjaW5jbHVkZSA8c3lzL3BsYXRmb3JtL3BwYy5oPgotKyNlbHNl Ci0rI2luY2x1ZGUgPGNjdHlwZT4KLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSsjaW5jbHVkZSA8Y3N0 ZGxpYj4KLSsjZW5kaWYKLSAKLSAjaW5jbHVkZSAieHJheV9kZWZzLmgiCi0gCi1AQCAtMjAsMTMg KzI2LDQ1IEBAIG5hbWVzcGFjZSBfX3hyYXkgewotIAotIEFMV0FZU19JTkxJTkUgdWludDY0X3Qg cmVhZFRTQyh1aW50OF90ICZDUFUpIFhSQVlfTkVWRVJfSU5TVFJVTUVOVCB7Ci0gICBDUFUgPSAw OwotKyNpZmRlZiBfX0dMSUJDX18KLSAgIHJldHVybiBfX3BwY19nZXRfdGltZWJhc2UoKTsKLSsj ZWxzZQotKyAgcmV0dXJuIF9fYnVpbHRpbl9wcGNfZ2V0X3RpbWViYXNlKCk7Ci0rI2VuZGlmCi0g fQotIAotIGlubGluZSB1aW50NjRfdCBnZXRUU0NGcmVxdWVuY3koKSBYUkFZX05FVkVSX0lOU1RS VU1FTlQgewotICAgc3RhdGljIHN0ZDo6bXV0ZXggTTsKLSAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6 Om11dGV4PiBHdWFyZChNKTsKLSsjaWZkZWYgX19HTElCQ19fCi0gICByZXR1cm4gX19wcGNfZ2V0 X3RpbWViYXNlX2ZyZXEoKTsKLSsjZWxzZQotKyAgLyogRklYTUU6IGEgbGVzcyBkaXJ0eSBpbXBs ZW1lbnRhdGlvbj8gKi8KLSsgIHN0YXRpYyB1aW50NjRfdCBiYXNlOwotKyAgaWYgKCFiYXNlKSB7 Ci0rICAgIEZJTEUgKmYgPSBmb3BlbigiL3Byb2MvY3B1aW5mbyIsICJyYiIpOwotKyAgICBpZiAo ZikgewotKyAgICAgIHNzaXplX3QgbnI7Ci0rICAgICAgLyogdmlydHVhbGx5IGFsd2F5cyBiaWcg ZW5vdWdoIHRvIGhvbGQgdGhlIGxpbmUgKi8KLSsgICAgICBjaGFyIGJ1Zls1MTJdOwotKyAgICAg IHdoaWxlIChmZ2V0cyhidWYsIHNpemVvZihidWYpLCBmKSkgewotKyAgICAgICAgY2hhciAqcmV0 ID0gc3Ryc3RyKGJ1ZiwgInRpbWViYXNlIik7Ci0rICAgICAgICBpZiAoIXJldCkgewotKyAgICAg ICAgICBjb250aW51ZTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJldCArPSBzaXplb2YoInRpbWVi YXNlIikgLSAxOwotKyAgICAgICAgcmV0ID0gc3RyY2hyKHJldCwgJzonKTsKLSsgICAgICAgIGlm ICghcmV0KSB7Ci0rICAgICAgICAgIGNvbnRpbnVlOwotKyAgICAgICAgfQotKyAgICAgICAgYmFz ZSA9IHN0cnRvdWwocmV0ICsgMSwgbnVsbHB0ciwgMTApOwotKyAgICAgICAgYnJlYWs7Ci0rICAg ICAgfQotKyAgICAgIGZjbG9zZShmKTsKLSsgICAgfQotKyAgfQotKyAgcmV0dXJuIGJhc2U7Ci0r I2VuZGlmCi0gfQotIAotIGlubGluZSBib29sIHByb2JlUmVxdWlyZWRDUFVGZWF0dXJlcygpIFhS QVlfTkVWRVJfSU5TVFJVTUVOVCB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVz L2xpYmN4eC1tdXNsLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMzFmZmMyY2IxLi4wMDAwMDAw MDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtbXVzbC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLS0tLSBhL2xpYmN4eC9pbmNsdWRlL2xvY2FsZQot KysrIGIvbGliY3h4L2luY2x1ZGUvbG9jYWxlCi1AQCAtNzQyLDcgKzc0MiwxMSBAQCBfX251bV9n ZXRfc2lnbmVkX2ludGVncmFsKGNvbnN0IGNoYXIqIF9fYSwgY29uc3QgY2hhciogX19hX2VuZCwK LSAgICAgICAgIHR5cGVuYW1lIHJlbW92ZV9yZWZlcmVuY2U8ZGVjbHR5cGUoZXJybm8pPjo6dHlw ZSBfX3NhdmVfZXJybm8gPSBlcnJubzsKLSAgICAgICAgIGVycm5vID0gMDsKLSAgICAgICAgIGNo YXIgKl9fcDI7Ci0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX0dMSUJDX18p Ci0rICAgICAgICBsb25nIGxvbmcgX19sbCA9IHN0cnRvbGwoX19hLCAmX19wMiwgX19iYXNlKTsK LSsjZWxzZQotICAgICAgICAgbG9uZyBsb25nIF9fbGwgPSBzdHJ0b2xsX2woX19hLCAmX19wMiwg X19iYXNlLCBfTElCQ1BQX0dFVF9DX0xPQ0FMRSk7Ci0rI2VuZGlmCi0gICAgICAgICB0eXBlbmFt ZSByZW1vdmVfcmVmZXJlbmNlPGRlY2x0eXBlKGVycm5vKT46OnR5cGUgX19jdXJyZW50X2Vycm5v ID0gZXJybm87Ci0gICAgICAgICBpZiAoX19jdXJyZW50X2Vycm5vID09IDApCi0gICAgICAgICAg ICAgZXJybm8gPSBfX3NhdmVfZXJybm87Ci1AQCAtNzgyLDcgKzc4NiwxMSBAQCBfX251bV9nZXRf dW5zaWduZWRfaW50ZWdyYWwoY29uc3QgY2hhciogX19hLCBjb25zdCBjaGFyKiBfX2FfZW5kLAot ICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0eXBl IF9fc2F2ZV9lcnJubyA9IGVycm5vOwotICAgICAgICAgZXJybm8gPSAwOwotICAgICAgICAgY2hh ciAqX19wMjsKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fR0xJQkNfXykK LSsgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBfX2xsID0gc3RydG91bGwoX19hLCAmX19wMiwg X19iYXNlKTsKLSsjZWxzZQotICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIF9fbGwgPSBzdHJ0 b3VsbF9sKF9fYSwgJl9fcDIsIF9fYmFzZSwgX0xJQkNQUF9HRVRfQ19MT0NBTEUpOwotKyNlbmRp ZgotICAgICAgICAgdHlwZW5hbWUgcmVtb3ZlX3JlZmVyZW5jZTxkZWNsdHlwZShlcnJubyk+Ojp0 eXBlIF9fY3VycmVudF9lcnJubyA9IGVycm5vOwotICAgICAgICAgaWYgKF9fY3VycmVudF9lcnJu byA9PSAwKQotICAgICAgICAgICAgIGVycm5vID0gX19zYXZlX2Vycm5vOwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIv cGF0Y2hlcy9saWJjeHgtcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3 YTkyZjgwMDRlMWMuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xp YmN4eC1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGlzIGVuc3Vy ZXMgYGlzX2llYzU1OWAgaXMgZGVmaW5lZCBjb3JyZWN0bHkgdW5kZXIgYWxsIGxvbmcgZG91Ymxl IEFCSXMsCi1pbmNsdWRpbmcgbXVzbCBhbmQgaXRzIDY0LWJpdCBsb25nIGRvdWJsZS4gQWxzbywg YF9fcHBjX19gIG9yIGBfX3BwYzY0X19gCi1pcyBub3QgZGVmaW5lZCBvbiBnY2MuCi0KLS0tLSBh L2xpYmN4eC9pbmNsdWRlL2xpbWl0cwotKysrIGIvbGliY3h4L2luY2x1ZGUvbGltaXRzCi1AQCAt NDI2LDggKzQyNiwxNCBAQCBwcm90ZWN0ZWQ6Ci0gICAgIF9MSUJDUFBfSU5MSU5FX1ZJU0lCSUxJ VFkgc3RhdGljIF9MSUJDUFBfQ09OU1RFWFBSIHR5cGUgc2lnbmFsaW5nX05hTigpIF9OT0VYQ0VQ VCB7cmV0dXJuIF9fYnVpbHRpbl9uYW5zbCgiIik7fQotICAgICBfTElCQ1BQX0lOTElORV9WSVNJ QklMSVRZIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiB0eXBlIGRlbm9ybV9taW4oKSBfTk9FWENF UFQge3JldHVybiBfX0xEQkxfREVOT1JNX01JTl9fO30KLSAKLS0jaWYgKGRlZmluZWQoX19wcGNf XykgfHwgZGVmaW5lZChfX3BwYzY0X18pKQotKyNpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIChfX0xEQkxfTUFYX0VYUF9fID4gX19EQkxfTUFY X0VYUF9fKSB8fCAoX19MREJMX01BTlRfRElHX18gPT0gX19EQkxfTUFOVF9ESUdfXykKLSsgICAg LyogSUVFRSA3NTQgcXVhZHJ1cGxlIG9yIGRvdWJsZSBwcmVjaXNpb24gKi8KLSsgICAgc3RhdGlj IF9MSUJDUFBfQ09OU1RFWFBSIGNvbnN0IGJvb2wgaXNfaWVjNTU5ID0gdHJ1ZTsKLSsjZWxzZQot KyAgICAvKiAxMjgtYml0IElCTSBkb3VibGUtZG91YmxlICovCi0gICAgIHN0YXRpYyBfTElCQ1BQ X0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IGZhbHNlOwotKyNlbmRpZgotICNlbHNl Ci0gICAgIHN0YXRpYyBfTElCQ1BQX0NPTlNURVhQUiBjb25zdCBib29sIGlzX2llYzU1OSA9IHRy dWU7Ci0gI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eC1z c3Atbm9uc2hhcmVkLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzAyOTJiZWIyZmNk Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJjeHgtc3NwLW5v bnNoYXJlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBhL2xpYmN4 eC9DTWFrZUxpc3RzLnR4dAotKysrIGIvbGliY3h4L0NNYWtlTGlzdHMudHh0Ci1AQCAtNzY5LDYg Kzc2OSw4IEBAIGZ1bmN0aW9uKGN4eF9saW5rX3N5c3RlbV9saWJyYXJpZXMgdGFyZ2V0KQotICAg ICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHt0YXJnZXR9IFBSSVZBVEUgYXRvbWljKQotICAgZW5k aWYoKQotIAotKyNzc3AgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBz c3Bfbm9uc2hhcmVkKQotKwotICAgaWYgKE1JTkdXKQotICAgICB0YXJnZXRfbGlua19saWJyYXJp ZXMoJHt0YXJnZXR9IFBSSVZBVEUgIiR7TUlOR1dfTElCUkFSSUVTfSIpCi0gICBlbmRpZigpCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaCBiL3Ny Y3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGliY3h4YWJpLWRsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAzYTE1ZjlkYjhjOTguLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xs dm0xMi9wYXRjaGVzL2xpYmN4eGFiaS1kbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICsw LDAgQEAKLUFsc28gbGluayB0byAtbGRsIHRvIHByZXZlbnQgdW5kZWZpbmVkIHJlZmVyZW5jZXMu Ci0KLS0tLSBhL2xpYmN4eGFiaS9zcmMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xpYmN4eGFiaS9z cmMvQ01ha2VMaXN0cy50eHQKLUBAIC03Myw2ICs3Myw3IEBACi0gICBlbmRpZigpCi0gCi0gICBh ZGRfbGlicmFyeV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGMpCi0rICBhZGRfbGlicmFy eV9mbGFnc19pZihMSUJDWFhBQklfSEFTX0NfTElCIGRsKQotIGVuZGlmKCkKLSAKLSBpZiAoTElC Q1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSKQotLS0tIGEvbGliY3h4L0NNYWtlTGlzdHMudHh0Ci0r KysgYi9saWJjeHgvQ01ha2VMaXN0cy50eHQKLUBAIC03NDUsNiArNzQ1LDEwIEBACi0gICAgIHRh cmdldF9saW5rX2xpYnJhcmllcygke3RhcmdldH0gUFJJVkFURSBtKQotICAgZW5kaWYoKQotIAot KyAgaWYgKExJQkNYWF9IQVNfQ19MSUIpCi0rICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke3Rh cmdldH0gUFJJVkFURSBkbCkKLSsgIGVuZGlmKCkKLSsKLSAgIGlmIChMSUJDWFhfSEFTX1JUX0xJ QikKLSAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGFyZ2V0fSBQUklWQVRFIHJ0KQotICAg ZW5kaWYoKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBj MzIucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xpYnVud2luZC1wcGMzMi5wYXRjaApk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzRhYTc1NzZlY2Y5Li4wMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9saWJ1bndpbmQtcHBjMzIucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1UaGlzIGZpeGVzIGJ1aWxkIGF0IGxlYXN0IHdpdGgg Z2NjOSB3aGljaCBkb2VzIG5vdCBkZWZpbmUgYF9fcHBjX19gLgotCi0tLS0gYS9saWJ1bndpbmQv aW5jbHVkZS9fX2xpYnVud2luZF9jb25maWcuaAotKysrIGIvbGlidW53aW5kL2luY2x1ZGUvX19s aWJ1bndpbmRfY29uZmlnLmgKLUBAIC00OSw3ICs0OSw3IEBACi0gIyAgZGVmaW5lIF9MSUJVTldJ TkRfQ09OVEVYVF9TSVpFIDE2NwotICMgIGRlZmluZSBfTElCVU5XSU5EX0NVUlNPUl9TSVpFIDE3 OQotICMgIGRlZmluZSBfTElCVU5XSU5EX0hJR0hFU1RfRFdBUkZfUkVHSVNURVIgX0xJQlVOV0lO RF9ISUdIRVNUX0RXQVJGX1JFR0lTVEVSX1BQQzY0Ci0tIyBlbGlmIGRlZmluZWQoX19wcGNfXykK LSsjIGVsaWYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9UQVJH RVRfUFBDIDEKLSAjICBkZWZpbmUgX0xJQlVOV0lORF9DT05URVhUX1NJWkUgMTE3Ci0gIyAgZGVm aW5lIF9MSUJVTldJTkRfQ1VSU09SX1NJWkUgMTI0Ci0tLS0gYS9saWJ1bndpbmQvc3JjL1Vud2lu ZFJlZ2lzdGVyc1Jlc3RvcmUuUwotKysrIGIvbGlidW53aW5kL3NyYy9VbndpbmRSZWdpc3RlcnNS ZXN0b3JlLlMKLUBAIC0zOTIsNyArMzkyLDcgQEAgTG5vdmVjOgotICAgUFBDNjRfTFIoMykKLSAg IGJjdHIKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGNfXykKLSAKLSBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9aTjlsaWJ1bndpbmQxM1JlZ2lz dGVyc19wcGM2anVtcHRvRXYpCi0gLy8KLS0tLSBhL2xpYnVud2luZC9zcmMvVW53aW5kUmVnaXN0 ZXJzU2F2ZS5TCi0rKysgYi9saWJ1bndpbmQvc3JjL1Vud2luZFJlZ2lzdGVyc1NhdmUuUwotQEAg LTU1NCw3ICs1NTQsNyBAQCBERUZJTkVfTElCVU5XSU5EX0ZVTkNUSU9OKF9fdW53X2dldGNvbnRl eHQpCi0gICBibHIKLSAKLSAKLS0jZWxpZiBkZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGNfXykKLSAKLSAvLwotIC8vIGV4dGVybiBpbnQgdW53X2dldGNvbnRleHQodW53 X2NvbnRleHRfdCogdGhyZWFkX3N0YXRlKQotLS0tIGEvbGlidW53aW5kL3NyYy9jb25maWcuaAot KysrIGIvbGlidW53aW5kL3NyYy9jb25maWcuaAotQEAgLTk1LDEyICs5NSwxMiBAQAotICNkZWZp bmUgX0xJQlVOV0lORF9CVUlMRF9TSkxKX0FQSVMKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IGRl ZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGNfXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICNkZWZpbmUgX0xJQlVOV0lORF9TVVBQT1JUX0ZS QU1FX0FQSVMKLSAjZW5kaWYKLSAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotLSAgICBkZWZp bmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pIHx8ICAgICAgICBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgKCFkZWZpbmVk KF9fQVBQTEVfXykgJiYgZGVmaW5lZChfX2FybV9fKSkgfHwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAotICAgICAoZGVmaW5lZChfX2FybTY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0 X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIGRlZmluZWQoX19taXBz X18pCi0tLS0gYS9saWJ1bndpbmQvc3JjL2xpYnVud2luZC5jcHAKLSsrKyBiL2xpYnVud2luZC9z cmMvbGlidW53aW5kLmNwcAotQEAgLTQyLDcgKzQyLDcgQEAgX0xJQlVOV0lORF9ISURERU4gaW50 IF9fdW53X2luaXRfbG9jYWwodW53X2N1cnNvcl90ICpjdXJzb3IsCi0gIyBkZWZpbmUgUkVHSVNU RVJfS0lORCBSZWdpc3RlcnNfeDg2XzY0Ci0gI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICMgZGVmaW5lIFJFR0lTVEVSX0tJTkQgUmVnaXN0ZXJzX3BwYzY0Ci0tI2VsaWYgZGVmaW5lZChf X3BwY19fKQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCi0gIyBkZWZpbmUgUkVHSVNURVJf S0lORCBSZWdpc3RlcnNfcHBjCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAjIGRlZmlu ZSBSRUdJU1RFUl9LSU5EIFJlZ2lzdGVyc19hcm02NApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZt MTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsZGIt bXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAxYzBkMTM4NTIzLi4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbGRiLW11c2wucGF0Y2gK KysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi0tLS0gYS9sbGRiL3NvdXJjZS9QbHVnaW5z L1Byb2Nlc3MvTGludXgvUHJvY2ZzLmgKLSsrKyBiL2xsZGIvc291cmNlL1BsdWdpbnMvUHJvY2Vz cy9MaW51eC9Qcm9jZnMuaAotQEAgLTEwLDIxICsxMCwxMiBAQAotIC8vIHN5cy9wcm9jZnMuaCBv biBBbmRyb2lkL0xpbnV4IGZvciBhbGwgc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMuCi0gCi0gI2lu Y2x1ZGUgPHN5cy9wdHJhY2UuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotIAotLSNpZmRl ZiBfX0FORFJPSURfXwotLSNpZiBkZWZpbmVkKF9fYXJtNjRfXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsKLS10eXBlZGVmIGVsZl9n cmVnX3QKLS0gICAgZWxmX2dyZWdzZXRfdFsoc2l6ZW9mKHN0cnVjdCB1c2VyX3B0X3JlZ3MpIC8g c2l6ZW9mKGVsZl9ncmVnX3QpKV07Ci0tdHlwZWRlZiBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RhdGUg ZWxmX2ZwcmVnc2V0X3Q7Ci0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBSRUdT RVQgTlRfUFJGUFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbGlmIGRlZmluZWQoX19t aXBzX18pCi0tI2lmbmRlZiBOVF9GUFJFR1NFVAotLSNkZWZpbmUgTlRfRlBSRUdTRVQgTlRfUFJG UFJFRwotLSNlbmRpZiAvLyBOVF9GUFJFR1NFVAotLSNlbmRpZgotLSNlbHNlIC8vIF9fQU5EUk9J RF9fCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX3Bvd2VycGNfXykKLSsj ZGVmaW5lIHB0X3JlZ3MgbXVzbF9wdF9yZWdzCi0rI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLSsj dW5kZWYgcHRfcmVncwotKyNlbHNlCi0gI2luY2x1ZGUgPHN5cy9wcm9jZnMuaD4KLS0jZW5kaWYg Ly8gX19BTkRST0lEX18KLSsjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNo ZXMvcHBjMzItY29tcGlsZXItcnQucGF0Y2ggYi9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMy LWNvbXBpbGVyLXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTBhOWE3 NzlkMWIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL3BwYzMyLWNv bXBpbGVyLXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotY29tbWl0IGJh NGVkZTU5NWZmOTU5OTIzMmY1ZGQyYjQzODRjMjQzMTM3YjUzZmMKLUF1dGhvcjogRGFuaWVsIEtv bGVzYSA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+Ci1EYXRlOiAgIFR1ZSBKdW4gMjIgMjM6NDA6NTQg MjAyMSArMDIwMAotCi0gICAgZW5hYmxlIGNvbXBpbGVyLXJ0IHN1cHBvcnQgZm9yIHBwYzMyCi0K LWRpZmYgLS1naXQgYS9jb21waWxlci1ydC9jbWFrZS9iYXNlLWNvbmZpZy1peC5jbWFrZSBiL2Nv bXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1pbmRleCAxZWRhYjQzLi41YzBj OGEyIDEwMDY0NAotLS0tIGEvY29tcGlsZXItcnQvY21ha2UvYmFzZS1jb25maWctaXguY21ha2UK LSsrKyBiL2NvbXBpbGVyLXJ0L2NtYWtlL2Jhc2UtY29uZmlnLWl4LmNtYWtlCi1AQCAtMTgyLDkg KzE4Miw3IEBAIG1hY3JvKHRlc3RfdGFyZ2V0cykKLSAgICAgZWxzZWlmKCIke0NPTVBJTEVSX1JU X0RFRkFVTFRfVEFSR0VUX0FSQ0h9IiBNQVRDSEVTICJwb3dlcnBjNjRsZSIpCi0gICAgICAgdGVz dF90YXJnZXRfYXJjaChwb3dlcnBjNjRsZSAiIiAiLW02NCIpCi0gICAgIGVsc2VpZigiJHtDT01Q SUxFUl9SVF9ERUZBVUxUX1RBUkdFVF9BUkNIfSIgTUFUQ0hFUyAicG93ZXJwYyIpCi0tICAgICAg aWYoQ01BS0VfU1lTVEVNX05BTUUgTUFUQ0hFUyAiQUlYIikKLS0gICAgICAgIHRlc3RfdGFyZ2V0 X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0tICAgICAgZW5kaWYoKQotKyAgICAgIHRlc3RfdGFy Z2V0X2FyY2gocG93ZXJwYyAiIiAiLW0zMiIpCi0gICAgICAgdGVzdF90YXJnZXRfYXJjaChwb3dl cnBjNjQgIiIgIi1tNjQiKQotICAgICBlbHNlaWYoIiR7Q09NUElMRVJfUlRfREVGQVVMVF9UQVJH RVRfQVJDSH0iIE1BVENIRVMgInMzOTB4IikKLSAgICAgICB0ZXN0X3RhcmdldF9hcmNoKHMzOTB4 ICIiICIiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUgYi9zcmNwa2dzL2xs dm0xMi90ZW1wbGF0ZQppbmRleCA3Y2UxODAyOGU0YTMuLjdiMzYxYmJiZjViYyAxMDA2NDQKLS0t IGEvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUK QEAgLTEsMjUgKzEsMTcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2xsdm0xMicKIHBrZ25hbWU9 bGx2bTEyCiB2ZXJzaW9uPTEyLjAuMQotcmV2aXNpb249MgorcmV2aXNpb249Mwogd3Jrc3JjPSJs bHZtLXByb2plY3QtJHt2ZXJzaW9ufS5zcmMiCiBidWlsZF93cmtzcmM9bGx2bQogYnVpbGRfc3R5 bGU9Y21ha2UKIGNvbmZpZ3VyZV9hcmdzPSIKICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSAt V25vLWRldgogIC1ERU5BQkxFX0xJTktFUl9CVUlMRF9JRD1ZRVMKLSAtRExMREJfVVNFX1NZU1RF TV9TSVg9WUVTCi0gLURMSUJDWFhfQ1hYX0FCST1saWJjeHhhYmkKLSAtRExJQkNYWF9FTkFCTEVf U1RBVElDX0FCSV9MSUJSQVJZPVlFUwotIC1ETElCQ1hYQUJJX1VTRV9MTFZNX1VOV0lOREVSPVlF UwotIC1ETElCQ1hYQUJJX0VOQUJMRV9TVEFUSUNfVU5XSU5ERVI9WUVTCi0gLURMSUJPTVBfRU5B QkxFX1NIQVJFRD1ZRVMKLSAtRExJQk9NUF9JTlNUQUxMX0FMSUFTRVM9Tk8KICAtRExMVk1fSU5D TFVERV9ET0NTPVlFUwogIC1ETExWTV9CVUlMRF9ET0NTPVlFUwogIC1ETExWTV9FTkFCTEVfU1BI SU5YPVlFUwogIC1EU1BISU5YX1dBUk5JTkdTX0FTX0VSUk9SUz1OTwotIC1ETExWTV9JTlNUQUxM X1VUSUxTPVlFUwogIC1ETExWTV9CVUlMRF9MTFZNX0RZTElCPVlFUwogIC1ETExWTV9MSU5LX0xM Vk1fRFlMSUI9WUVTCiAgLURMTFZNX0VOQUJMRV9SVFRJPVlFUwpAQCAtNTEsODcgKzQzLDEwIEBA IGNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgogCXBwYyopIGNvbmZpZ3VyZV9hcmdzKz0i IC1EQ0xBTkdfRU5BQkxFX0NMQU5HRD1PRkYiIDs7CiBlc2FjCiAKLV9lbmFibGVkX3Byb2plY3Rz PSJjbGFuZztjbGFuZy10b29scy1leHRyYTtjb21waWxlci1ydDtsaWJjeHg7bGliY3h4YWJpO2xp YnVud2luZDtsbGQiCi0KLV9sbGRiX2VuYWJsZT15ZXMKLV9saWJvbXBfZW5hYmxlPW5vCi0KLWNh c2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCXBwYzY0bGUqKSA7OwotCXBwYyp8aTY4Niop IF9sbGRiX2VuYWJsZT1ubyA7OwotZXNhYwotCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIg aW4KLQl4ODZfNjQqfGFhcmNoNjQqfHBwYzY0KikgX2xpYm9tcF9lbmFibGU9eWVzOzsKLWVzYWMK LQotc3VicGFja2FnZXM9ImNsYW5nLXRvb2xzLWV4dHJhIgotCi0jIG11c3QgZ28gYmVmb3JlIGNs YW5nCi1pZiBbICIkX2xpYm9tcF9lbmFibGUiID0gInllcyIgXTsgdGhlbgotCV9lbmFibGVkX3By b2plY3RzKz0iO29wZW5tcCIKLQlzdWJwYWNrYWdlcys9IiBsaWJvbXAgbGlib21wLWRldmVsIgot CSMgYmVjYXVzZSBvZiBjbWFrZSBub25zZW5zZSByZWZlcmVuY2luZyBsaWJvbXB0YXJnZXQuc28u KgotCWRlcGVuZHMrPSIgbGlib21wPj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotZmkKLQotc3Vi cGFja2FnZXMrPSIgY2xhbmcgY2xhbmctYW5hbHl6ZXIgbGliY2xhbmcgbGliY2xhbmctY3BwCi0g bGx2bS1saWJ1bndpbmQgbGx2bS1saWJ1bndpbmQtZGV2ZWwgbGliY3h4IGxpYmN4eC1kZXZlbAot IGxpYmN4eGFiaSBsaWJjeHhhYmktZGV2ZWwgbGlibGx2bTEyIgotCi1pZiBbICIkX2xsZGJfZW5h YmxlIiA9ICJ5ZXMiIF07IHRoZW4KLQkjIFhYWCBmYWlscyB0byBjcm9zcyBjb21waWxlIGR1ZSB0 byBweXRob24KLQlfZW5hYmxlZF9wcm9qZWN0cys9IjtsbGRiIgotCXN1YnBhY2thZ2VzKz0iIGxs ZGIgbGxkYi1kZXZlbCIKLWZpCi0KLXN1YnBhY2thZ2VzKz0iIGxsZCBsbGQtZGV2ZWwiCi0KLWNv bmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxlZF9wcm9qZWN0 c30iCi0KIHBvc3RfcGF0Y2goKSB7Ci0JaWYgWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdOyB0 aGVuCi0JCWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCi0JCQl2c2Vk IC1pICdzfF9fcHRyYWNlX3JlcXVlc3R8aW50fGcnIFwKLQkJCQkke3dya3NyY30vbGxkYi9zb3Vy Y2UvUGx1Z2lucy9Qcm9jZXNzL0xpbnV4L05hdGl2ZVByb2Nlc3NMaW51eC5jcHAKLQkJZmkKLQkJ IyBkaXNhYmxlIGRvY3MgZm9yIGxsZGIgYXMgdGhleSBmYWlsIHRvIGdlbmVyYXRlCi0JCXZzZWQg LWkgJy9hZGRfc3ViZGlyZWN0b3J5KGRvY3MpL2QnIFwKLQkJCSR7d3Jrc3JjfS9sbGRiL0NNYWtl TGlzdHMudHh0Ci0JZmkKLQogCSMgdXBkYXRlIGNvbmZpZy5ndWVzcyBmb3IgYmV0dGVyIHBsYXRm b3JtIGRldGVjdGlvbgogCWNwICRYQlBTX0NPTU1PTkRJUi9lbnZpcm9ubWVudC9jb25maWd1cmUv YXV0b21ha2UvY29uZmlnLmd1ZXNzIFwKIAkJJHt3cmtzcmN9L2xsdm0vY21ha2UKLQotCSMgZml4 IGxpbmtlciBmYWlsdXJlcyBvbiBzb21lIGFyY2hzCi0JdnNlZCAtaSAncyxjaGVja19saWJyYXJ5 X2V4aXN0cyhnY2NfcyAuKixzZXQoTElCQ1hYQUJJX0hBU19HQ0NfU19MSUIgT04pLCcgXAotCQkk e3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCXZzZWQgLWkgJ3MsY2hl Y2tfbGlicmFyeV9leGlzdHMoZ2NjIC4qLHNldChMSUJDWFhBQklfSEFTX0dDQ19MSUIgT04pLCcg XAotCQkke3dya3NyY30vbGliY3h4YWJpL2NtYWtlL2NvbmZpZy1peC5jbWFrZQotCi0JIyBuZWVk IGxpYnNzcF9ub25zaGFyZWQgb24gc29tZSBtdXNsIHBsYXRmb3JtcyAoYmVjYXVzZSBvZiBub2Rl ZmF1bHRsaWJzKQotCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCQlwcGM2NCopIDs7 Ci0JCXBwYyotbXVzbHxpNjg2LW11c2x8bWlwcyotbXVzbCkKLQkJCXZzZWQgLWkgJ3MsXiMgU2V0 dXAgZmxhZ3MuJCxhZGRfbGlicmFyeV9mbGFncyhzc3Bfbm9uc2hhcmVkKSwnIFwKLQkJCQkke3dy a3NyY30vbGlidW53aW5kL3NyYy9DTWFrZUxpc3RzLnR4dAotCQkJdnNlZCAtaSAncyxeIyBTZXR1 cCBmbGFncy4kLGFkZF9saWJyYXJ5X2ZsYWdzKHNzcF9ub25zaGFyZWQpLCcgXAotCQkJCSR7d3Jr c3JjfS9saWJjeHhhYmkvc3JjL0NNYWtlTGlzdHMudHh0Ci0JCQl2c2VkIC1pICdzLCNzc3AsLCcg JHt3cmtzcmN9L2xpYmN4eC9DTWFrZUxpc3RzLnR4dAotCQkJOzsKLQllc2FjCi0KLQljYXNlICIk WEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQkJeDg2XzY0LW11c2wpICMgc29tZSBzYW5pdGl6ZXIg Y3VycmVudGx5IG9ubHkgb24geDg2XzY0IHN0dWZmIG5lZWRzIGJhY2t0cmFjZQotCQkJdnNlZCAt aSAncywjIFNldCBjb21tb24gbGluayBmbGFncy4sbGlzdChBUFBFTkQgU0FOSVRJWkVSX0NPTU1P Tl9MSU5LX0xJQlMgZXhlY2luZm8pLCcgXAotCQkJCSR7d3Jrc3JjfS9jb21waWxlci1ydC9DTWFr ZUxpc3RzLnR4dAotCQkJOzsKLQkJYXJtKi1tdXNsfGk2ODYtbXVzbCkgIyBzYW5pdGl6ZXIgY29k ZSBpcyBicm9rZW4gc2luY2UgaXQgZHVwbGljYXRlcyBzb21lIGxpYmMgYml0cwotCQkJdnNlZCAt aSAncy9zZXQoQ09NUElMRVJfUlRfSEFTX1NBTklUSVpFUl9DT01NT04gVFJVRSkvc2V0KENPTVBJ TEVSX1JUX0hBU19TQU5JVElaRVJfQ09NTU9OIEZBTFNFKS8nIFwKLQkJCQkke3dya3NyY30vY29t cGlsZXItcnQvY21ha2UvY29uZmlnLWl4LmNtYWtlCi0JCQk7OwotCWVzYWMKIH0KIAogcHJlX2Nv bmZpZ3VyZSgpIHsKQEAgLTE1OCwxMCArNzMsOCBAQCBwcmVfY29uZmlndXJlKCkgewogCQkJY21h a2UgLi4vLi4gLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAogCQkJLURMTFZNX0VOQUJMRV9Q Uk9KRUNUUz0ke19lbmFibGVkX3Byb2plY3RzfQogCQltYWtlICR7bWFrZWpvYnN9IC1DIHV0aWxz L1RhYmxlR2VuCi0JCW1ha2UgJHttYWtlam9ic30gLUMgdG9vbHMvY2xhbmcvdXRpbHMvVGFibGVH ZW4KIAkJWyAiJF9sbGRiX2VuYWJsZSIgPSAieWVzIiBdICYmIG1ha2UgJHttYWtlam9ic30gLUMg dG9vbHMvbGxkYi91dGlscy9UYWJsZUdlbgogCQljb25maWd1cmVfYXJncys9IiAtRExMVk1fVEFC TEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9iaW4vbGx2bS10YmxnZW4iCi0JCWNvbmZp Z3VyZV9hcmdzKz0iIC1EQ0xBTkdfVEFCTEVHRU49JHt3cmtzcmN9L2xsdm0vYnVpbGQvSE9TVC9i aW4vY2xhbmctdGJsZ2VuIgogCQlbICIkX2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgY29uZmln dXJlX2FyZ3MrPSIgLURMTERCX1RBQkxFR0VOPSR7d3Jrc3JjfS9sbHZtL2J1aWxkL0hPU1QvYmlu L2xsZGItdGJsZ2VuIgogCQljZCAuLi8uLgogCWZpCkBAIC0yMDIsMjE4ICsxMTUsNiBAQCBkb19p bnN0YWxsKCkgewogCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgogCQlybSAtZiAke0RFU1RE SVJ9L3Vzci9iaW4vbGx2bS1jb25maWctaG9zdAogCWZpCi0KLQkjIEluc3RhbGwgbGliY3h4YWJp IGhlYWRlcnMKLQl2aW5zdGFsbCAke3dya3NyY30vbGliY3h4YWJpL2luY2x1ZGUvX19jeHhhYmlf Y29uZmlnLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYmN4eGFiaS9p bmNsdWRlL2N4eGFiaS5oIDY0NCB1c3IvaW5jbHVkZQotCi0JIyBJbnN0YWxsIGxpYnVud2luZCBo ZWFkZXJzCi0Jdmluc3RhbGwgJHt3cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL19fbGlidW53aW5k X2NvbmZpZy5oIDY0NCB1c3IvaW5jbHVkZQotCXZpbnN0YWxsICR7d3Jrc3JjfS9saWJ1bndpbmQv aW5jbHVkZS9saWJ1bndpbmQuaCA2NDQgdXNyL2luY2x1ZGUKLQl2aW5zdGFsbCAke3dya3NyY30v bGlidW53aW5kL2luY2x1ZGUvdW53aW5kLmggNjQ0IHVzci9pbmNsdWRlCi0Jdmluc3RhbGwgJHt3 cmtzcmN9L2xpYnVud2luZC9pbmNsdWRlL21hY2gtby9jb21wYWN0X3Vud2luZF9lbmNvZGluZy5o IFwKLQkJNjQ0IHVzci9pbmNsdWRlL21hY2gtbwotfQotCi1jbGFuZy1hbmFseXplcl9wYWNrYWdl KCkgewotCXB5Y29tcGlsZV9kaXJzPSJ1c3Ivc2hhcmUvc2Nhbi12aWV3IgotCWRlcGVuZHM9ImNs YW5nLSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0gcHl0aG9uMyBwZXJsIgotCXNob3J0X2Rlc2MrPSIg LSBBIHNvdXJjZSBjb2RlIGFuYWx5c2lzIGZyYW1ld29yayIKLQlob21lcGFnZT0iaHR0cHM6Ly9j bGFuZy1hbmFseXplci5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9z aGFyZS9tYW4vbWFuMS9zY2FuLWJ1aWxkLjEKLQkJdm1vdmUgIi91c3IvYmluL3NjYW4tKiIKLQkJ dm1vdmUgIi91c3Ivc2hhcmUvc2Nhbi0qIgotCQl2bW92ZSAiL3Vzci9saWJleGVjLyphbmFseXpl ciIKLQl9Ci19Ci0KLWNsYW5nLXRvb2xzLWV4dHJhX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxl ZD15ZXMKLQlkZXBlbmRzPSJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IHB5dGhvbjMiCi0J c2hvcnRfZGVzYys9IiAtIEV4dHJhIENsYW5nIHRvb2xzIgotCWhvbWVwYWdlPSJodHRwczovL2Ns YW5nLmxsdm0ub3JnL2V4dHJhLyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2luY2x1 ZGUvY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2NsYW5nLWFwcGx5LXJlcGxhY2VtZW50cwot CQl2bW92ZSB1c3IvYmluL2NsYW5nLXF1ZXJ5Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctcmVuYW1l Ci0JCXZtb3ZlIHVzci9iaW4vY2xhbmctdGlkeQotCQl2bW92ZSB1c3IvYmluL2RpYWd0b29sCi0J CXZtb3ZlIHVzci9iaW4vZmluZC1hbGwtc3ltYm9scwotCQl2bW92ZSB1c3IvYmluL2htYXB0b29s Ci0JCXZtb3ZlIHVzci9iaW4vbW9kdWxhcml6ZQotCQl2bW92ZSB1c3IvYmluL3BwLXRyYWNlCi0J CXZtb3ZlIHVzci9iaW4vc2FuY292Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nQXBwbHlSZXBs YWNlbWVudHMqIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZ1F1ZXJ5KiIKLQkJdm1vdmUgInVz ci9saWIvbGliY2xhbmdUaWR5KiIKLQkJdm1vdmUgInVzci9zaGFyZS9jbGFuZy8qdGlkeSoiCi0J CXZtb3ZlIHVzci9zaGFyZS9kb2MvY2xhbmctdG9vbHMKLQkJdm1vdmUgdXNyL3NoYXJlL21hbi9t YW4xL2V4dHJhY2xhbmd0b29scy4xCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9kaWFndG9v bC4xCi0JfQotfQotCi1jbGFuZ19wYWNrYWdlKCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0JZGVw ZW5kcz0ibGlic3RkYysrLWRldmVsIGxpYmdjYy1kZXZlbCAgYmludXRpbHMgJHtYQlBTX1RBUkdF VF9MSUJDfS1kZXZlbAotCSBsaWJjbGFuZy0ke3ZlcnNpb259XyR7cmV2aXNpb259IgotCXNob3J0 X2Rlc2MrPSIgLSBDIGxhbmd1YWdlIGZhbWlseSBmcm9udGVuZCIKLQlob21lcGFnZT0iaHR0cHM6 Ly9jbGFuZy5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9pbmNsdWRl L2NsYW5nCi0JCXZtb3ZlIHVzci9pbmNsdWRlL2NsYW5nLWMKLQkJdm1vdmUgInVzci9iaW4vKmNs YW5nKiIKLQkJdm1vdmUgdXNyL2Jpbi9jLWluZGV4LXRlc3QKLQkJdm1vdmUgdXNyL2xpYi9jbGFu ZwotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2NsYW5nCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5n Ki5hIgotCQl2bW92ZSAidXNyL2xpYi9saWJjbGFuZyouc28iCi0JCXZtb3ZlIHVzci9zaGFyZS9j bGFuZwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2NsYW5nCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4v bWFuMS9jbGFuZy4xCi0JfQotfQotCi1saWJjbGFuZ19wYWNrYWdlKCkgewotCXNob3J0X2Rlc2Mr PSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1v dmUgInVzci9saWIvbGliY2xhbmcuc28uKiIKLQl9Ci19Ci0KLWxpYmNsYW5nLWNwcF9wYWNrYWdl KCkgewotCXNob3J0X2Rlc2MrPSIgLSBDIGZyb250ZW5kIHJ1bnRpbWUgbGlicmFyeSAoQysrIGlu dGVyZmFjZSkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmNsYW5nLWNw cC5zby4qIgotCX0KLX0KLQotbGxkX3BhY2thZ2UoKSB7Ci0JbGliMzJkaXNhYmxlZD15ZXMKLQlz aG9ydF9kZXNjKz0iIC0gbGlua2VyIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIK LQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2Jpbi9sbGQqCi0JCXZtb3ZlIHVzci9iaW4v d2FzbS1sZAotCQl2bW92ZSB1c3IvYmluL2xkLmxsZCoKLQkJdm1vdmUgdXNyL2Jpbi9sZDY0Lmxs ZCoKLQkJdm1vdmUgdXNyL3NoYXJlL2RvYy9sbGQKLQl9Ci19Ci0KLWxsZC1kZXZlbF9wYWNrYWdl KCkgewotCWxpYjMyZGlzYWJsZWQ9eWVzCi0Jc2hvcnRfZGVzYys9IiAtIGxpbmtlciAtIGRldmVs b3BtZW50IGZpbGVzIgotCWhvbWVwYWdlPSJodHRwczovL2xsZC5sbHZtLm9yZyIKLQlkZXBlbmRz PSJsbGQ+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3Zl IHVzci9pbmNsdWRlL2xsZAotCQl2bW92ZSB1c3IvbGliL2NtYWtlL2xsZAotCQl2bW92ZSAidXNy L2xpYi9saWJsbGQqYSIKLQl9Ci19Ci0KLWxsZGJfcGFja2FnZSgpIHsKLQlsaWIzMmRpc2FibGVk PXllcwotCWRlcGVuZHMrPSIgcHl0aG9uMy1zaXgiCi0Jc2hvcnRfZGVzYys9IiAtIExMREIgZGVi dWdnZXIiCi0JaG9tZXBhZ2U9Imh0dHBzOi8vbGxkYi5sbHZtLm9yZy8iCi0JcGtnX2luc3RhbGwo KSB7Ci0JCXZtb3ZlIHVzci9iaW4vKmxsZGIqCi0JCXZtb3ZlIHVzci9saWIvbGlibGxkYipzby4q Ci0JCXZtb3ZlIC91c3IvbGliL3B5dGhvbioKLQl9Ci19Ci0KLWxsZGItZGV2ZWxfcGFja2FnZSgp IHsKLQlsaWIzMmRpc2FibGVkPXllcwotCWRlcGVuZHM9ImxsZGI+PSR7dmVyc2lvbn1fJHtyZXZp c2lvbn0iCi0Jc2hvcnRfZGVzYys9IiAtIExMREIgZGVidWdnZXIgLSBkZXZlbG9wbWVudCBmaWxl cyIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2luY2x1ZGUvbGxkYgotCQl2bW92ZSAi dXNyL2xpYi9saWJsbGRiKi5zbyIKLQl9Ci19Ci0KLWxsdm0tbGlidW53aW5kX3BhY2thZ2UoKSB7 Ci0Jc2hvcnRfZGVzYys9IiAtIGxpYnVud2luZCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg InVzci9saWIvbGlidW53aW5kLnNvLioiCi0JfQotfQotCi1sbHZtLWxpYnVud2luZC1kZXZlbF9w YWNrYWdlKCkgewotCXNob3J0X2Rlc2MrPSIgLSBsaWJ1bndpbmQgLSBkZXZlbG9wbWVudCBmaWxl cyIKLQlkZXBlbmRzPSJsbHZtLWxpYnVud2luZD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlj b25mbGljdHM9ImxpYnVud2luZC1kZXZlbD49MCIKLQlwa2dfaW5zdGFsbCgpIHsKLQkJdm1vdmUg dXNyL2xpYi9saWJ1bndpbmQuc28KLQkJdm1vdmUgdXNyL2xpYi9saWJ1bndpbmQuYQotCQl2bW92 ZSAidXNyL2luY2x1ZGUvKnVud2luZCoiCi0JCXZtb3ZlIHVzci9pbmNsdWRlL21hY2gtbwotCQl2 bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYnVud2luZAotCX0KLX0KLQotbGliY3h4YWJpX3BhY2thZ2Uo KSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBzdXBwb3J0IGZvciBsaWJjKysiCi0JcGtn X2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYmMrK2FiaS5zby4qIgotCX0KLX0KLQot bGliY3h4YWJpLWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIGxvdyBsZXZlbCBz dXBwb3J0IGZvciBsaWJjKysgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJjeHhh Ymk+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVz ci9saWIvbGliYysrYWJpLnNvCi0JCXZtb3ZlIHVzci9saWIvbGliYysrYWJpLmEKLQkJdm1vdmUg InVzci9pbmNsdWRlLypjeHhhYmkqIgotCX0KLX0KLQotbGliY3h4X3BhY2thZ2UoKSB7Ci0Jc2hv cnRfZGVzYys9IiAtIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IgotCXBrZ19pbnN0YWxsKCkgewotCQl2 bW92ZSAidXNyL2xpYi9saWJjKysuc28uKiIKLQl9Ci19Ci0KLWxpYmN4eC1kZXZlbF9wYWNrYWdl KCkgewotCXNob3J0X2Rlc2MrPSIgLSBDKysgc3RhbmRhcmQgbGlicmFyeSAtIGRldmVsb3BtZW50 IGZpbGVzIgotCWRlcGVuZHM9ImxpYmN4eD49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLQlwa2df aW5zdGFsbCgpIHsKLQkJdm1vdmUgdXNyL2xpYi9saWJjKysuc28KLQkJdm1vdmUgdXNyL2xpYi9s aWJjKysuYQotCQl2bW92ZSB1c3IvbGliL2xpYmMrK2V4cGVyaW1lbnRhbC5hCi0JCXZtb3ZlIHVz ci9pbmNsdWRlL2MrKwotCQl2bW92ZSB1c3Ivc2hhcmUvZG9jL2xpYmN4eAotCX0KLX0KLQotbGli b21wX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxp YnJhcnkiCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlIHVzci9saWIvbGlib21wLnNvCi0JCXZt b3ZlICJ1c3IvbGliL2xpYm9tcHRhcmdldC5ydGwuKi5zbyIKLQkJdm1vdmUgdXNyL2xpYi9saWJh cmNoZXIuc28KLQkJdm1vdmUgInVzci9saWIvbGlib21wKi5zby4qIgotCX0KLX0KLQotbGlib21w LWRldmVsX3BhY2thZ2UoKSB7Ci0Jc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0 IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKLQlkZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lv bn1fJHtyZXZpc2lvbn0iCi0JcGtnX2luc3RhbGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYm9t cCouc28iCi0JCXZtb3ZlICJ1c3IvbGliL2xpYmFyY2hlcioiCi0JCXZtb3ZlICJ1c3IvaW5jbHVk ZS9vbXAqLmgiCi0JCXZtb3ZlICJ1c3IvbGliL2NsYW5nLyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAq LmgiCi0JCXZtb3ZlIHVzci9zaGFyZS9tYW4vbWFuMS9sbHZtb3Blbm1wLjEKLQkJdm1vdmUgdXNy L3NoYXJlL2RvYy9vcGVubXAKLQl9CiB9CiAKIGxpYmxsdm0xMl9wYWNrYWdlKCkgewoKRnJvbSA4 YTAwMzNmYzcwODE5NzJlNDEwZDk4YzlmMzAzZGNjMjlmZDBjOTdkIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5PTIwQmVydG9uaT89CiA8 bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQsIDEgSmFuIDIwMjIgMTU6 NTc6NTkgKzAyMDAKU3ViamVjdDogW1BBVENIIDA0LzMwXSBydGFnczogcmVidWlsZCBmb3IgbGx2 bTEzCgotLS0KIHNyY3BrZ3MvcnRhZ3MvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3J0YWdz L3RlbXBsYXRlIGIvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQppbmRleCBiNDk2YTFiMGU3MjEuLjli MTYxZTY5MGQ3NiAxMDA2NDQKLS0tIGEvc3JjcGtncy9ydGFncy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3J0YWdzL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAn cnRhZ3MnCiBwa2duYW1lPXJ0YWdzCiB2ZXJzaW9uPTIuMzgKLXJldmlzaW9uPTUKK3JldmlzaW9u PTYKIGJ1aWxkX3N0eWxlPWNtYWtlCiAjIERvbid0IHJ1biB0ZXN0cyBpbiBkb19pbnN0YWxsLCBw bGVhc2UuCiBjb25maWd1cmVfYXJncz0iLURTS0lQX0NURVNUPVRSVUUiCgpGcm9tIDhhOThhMThh ODJmMjYzZWU2MmNiNDI3MWY5ZTk3MWU2YTc3ZGNkNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2Ri QGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODoyNyAr MDIwMApTdWJqZWN0OiBbUEFUQ0ggMDUvMzBdIGJwZnRyYWNlOiByZWJ1aWxkIGZvciBsbHZtMTMK Ci0tLQogc3JjcGtncy9icGZ0cmFjZS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYnBmdHJh Y2UvdGVtcGxhdGUgYi9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlCmluZGV4IDI4YWIzYzYyNjM5 OS4uZWIyNDgwZDIyMzBlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2JwZnRyYWNlL3RlbXBsYXRlCisr KyBiL3NyY3BrZ3MvYnBmdHJhY2UvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICdicGZ0cmFjZScKIHBrZ25hbWU9YnBmdHJhY2UKIHZlcnNpb249MC4xNC4xCi1y ZXZpc2lvbj0xCityZXZpc2lvbj0yCiBhcmNocz0ieDg2XzY0KiBhYXJjaDY0KiBwcGM2NCoiCiBi dWlsZF9zdHlsZT1jbWFrZQogY29uZmlndXJlX2FyZ3M9Ii1EQlVJTERfVEVTVElORz1PRkYiICAj IG5lZWRzIHJvb3QgdG8gcnVuCgpGcm9tIDAxMjU0MjlmMTEwYzc4M2Y3MWE1ZTI0ZTAzOTZmNTI0 NmM2YWVjMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0y MER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+ CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODozOCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDYv MzBdIGNsYXp5OiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9jbGF6eS90ZW1wbGF0 ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvY2xhenkvdGVtcGxhdGUgYi9zcmNwa2dzL2NsYXp5L3RlbXBs YXRlCmluZGV4IDExZjNiYWI1NWFlZi4uZjgxZGUwOGFiODM2IDEwMDY0NAotLS0gYS9zcmNwa2dz L2NsYXp5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvY2xhenkvdGVtcGxhdGUKQEAgLTEsNyArMSw3 IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjbGF6eScKIHBrZ25hbWU9Y2xhenkKIHZlcnNpb249 MS4xMQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIGJ1aWxkX2hl bHBlcj1xZW11CiBob3N0bWFrZWRlcGVuZHM9Imxsdm0iCgpGcm9tIDc1Yjc5MWE4Y2JjOGUzM2M1 ZTYzMzYyMmFiZmFkN2IyMzAxMDI3ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/ VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0 c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNTo1ODo0OSArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggMDcvMzBdIGNjbHM6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dz L2NjbHMvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEg ZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2NjbHMvdGVtcGxhdGUgYi9zcmNwa2dz L2NjbHMvdGVtcGxhdGUKaW5kZXggZmJiN2M2ODQ3YmMxLi40MGFiYTNiNTViZmUgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvY2Nscy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NjbHMvdGVtcGxhdGUKQEAg LTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdjY2xzJwogcGtnbmFtZT1jY2xzCiB2 ZXJzaW9uPTAuMjAyMTAzMzAKLXJldmlzaW9uPTIKK3JldmlzaW9uPTMKIGJ1aWxkX3N0eWxlPWNt YWtlCiBob3N0bWFrZWRlcGVuZHM9ImNsYW5nLXRvb2xzLWV4dHJhIgogbWFrZWRlcGVuZHM9Imxs dm0gbmN1cnNlcy1kZXZlbCByYXBpZGpzb24gemxpYi1kZXZlbCBjbGFuZy10b29scy1leHRyYSIK CkZyb20gN2U2ZWVlNTBkZDI4Njg0ZTYzZGUxM2Y0ZjNjYmUxOTMxZjA5YzI4ZSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0xvdWlzPTIwRHVwcj1DMz1BOT0yMEJlcnRv bmk/PQogPGxvdWlzZGJAbGVzcGV0aXRzcGVkZXN0cmVzLm9yZz4KRGF0ZTogU2F0LCAxIEphbiAy MDIyIDE1OjU5OjM1ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwOC8zMF0gaW5jbHVkZS13aGF0LXlv dS11c2U6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNwa2dzL2luY2x1ZGUtd2hhdC15b3Ut dXNlL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaW5jbHVkZS13aGF0LXlvdS11c2Uv dGVtcGxhdGUgYi9zcmNwa2dzL2luY2x1ZGUtd2hhdC15b3UtdXNlL3RlbXBsYXRlCmluZGV4IGIx M2JiN2VlNTZhZi4uYjRiMTY3NDAxZWJlIDEwMDY0NAotLS0gYS9zcmNwa2dzL2luY2x1ZGUtd2hh dC15b3UtdXNlL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvaW5jbHVkZS13aGF0LXlvdS11c2UvdGVt cGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpbmNsdWRlLXdoYXQt eW91LXVzZScKIHBrZ25hbWU9aW5jbHVkZS13aGF0LXlvdS11c2UKLXZlcnNpb249MC4xNgordmVy c2lvbj0wLjE3CiByZXZpc2lvbj0xCiB3cmtzcmM9IiR7cGtnbmFtZX0iCiBidWlsZF9zdHlsZT1j bWFrZQpAQCAtMTIsNyArMTIsNyBAQCBtYWludGFpbmVyPSJMZWFoIE5ldWtpcmNoZW4gPGxlYWhA dnV4dS5vcmc+IgogbGljZW5zZT0iTkNTQSIKIGhvbWVwYWdlPSJodHRwczovL2luY2x1ZGUtd2hh dC15b3UtdXNlLm9yZy8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8vaW5jbHVkZS13aGF0LXlvdS11c2Uu b3JnL2Rvd25sb2Fkcy8ke3BrZ25hbWV9LSR7dmVyc2lvbn0uc3JjLnRhci5neiIKLWNoZWNrc3Vt PThkNmZjOWIyNTUzNDNiYzFlNWVjNDU5ZTM5NTEyZGYxZDUxYzYwZTAzNTYyOTg1ZTAwNzYwMzYx MTlmZjVhMWMKK2NoZWNrc3VtPWVjYTdjMDRmOGI0MTZiNjM4NWVkMDBlMzM2NjlhN2ZhNDY5M2Nk MjZjYjcyYjUyMmNkZTU1ODgyOGViMGM2NjUKIHB5dGhvbl92ZXJzaW9uPTMKIAogcG9zdF9pbnN0 YWxsKCkgewoKRnJvbSBiNWM1Yjc2MTM1NmNjODg0YTk1NzMyMmQ0ZTFjMzhmMzQ0NDI2Y2NlIE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/TG91aXM9MjBEdXByPUMzPUE5 PTIwQmVydG9uaT89CiA8bG91aXNkYkBsZXNwZXRpdHNwZWRlc3RyZXMub3JnPgpEYXRlOiBTYXQs IDEgSmFuIDIwMjIgMTY6MDE6MjEgKzAyMDAKU3ViamVjdDogW1BBVENIIDA5LzMwXSBjb2RlbGl0 ZTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvY29kZWxpdGUvdGVtcGxhdGUgfCAy ICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlIGIvc3JjcGtncy9jb2RlbGl0ZS90ZW1w bGF0ZQppbmRleCAzYTk5M2EyYzBjZmIuLjI0ZTJjODc5ZGQ0NSAxMDA2NDQKLS0tIGEvc3JjcGtn cy9jb2RlbGl0ZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2NvZGVsaXRlL3RlbXBsYXRlCkBAIC0x LDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnY29kZWxpdGUnCiBwa2duYW1lPWNvZGVs aXRlCiB2ZXJzaW9uPTE1LjAuNgotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9 Y21ha2UKIGJ1aWxkX2hlbHBlcj1jbWFrZS13eFdpZGdldHMtZ3RrMwogY29uZmlndXJlX2FyZ3M9 Ii1EV0lUSF9QQ0g9MCAtRFdJVEhfV1hfQ09ORklHPXd4LWNvbmZpZy1ndGszCgpGcm9tIGNkZTFh MzcyMjMwZGY4ZDllOWQxOWNiMWU2ODg5NTg3N2E2OGY3YTIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vp c2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAyMiAxNjoyMjo0 OCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTAvMzBdIGtkZXZlbG9wOiByZWJ1aWxkIGZvciBsbHZt MTMKCi0tLQogc3JjcGtncy9rZGV2ZWxvcC90ZW1wbGF0ZSB8IDMgKystCiAxIGZpbGUgY2hhbmdl ZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9r ZGV2ZWxvcC90ZW1wbGF0ZSBiL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxhdGUKaW5kZXggNzZhZmUy ZTM0Y2EwLi5mYjNhYWFkODlhNDcgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mva2RldmVsb3AvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9rZGV2ZWxvcC90ZW1wbGF0ZQpAQCAtMSw3ICsxLDggQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ2tkZXZlbG9wJwogcGtnbmFtZT1rZGV2ZWxvcAorPDw8PDw8PCBIRUFE CiB2ZXJzaW9uPTIxLjEyLjIKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIGJ1aWxkX3N0eWxlPWNt YWtlCiBjb25maWd1cmVfYXJncz0iLURCVUlMRF9URVNUSU5HPU9GRiIKIGhvc3RtYWtlZGVwZW5k cz0iZXh0cmEtY21ha2UtbW9kdWxlcyBxdDUtcW1ha2UgcXQ1LWhvc3QtdG9vbHMgcXQ1LXRvb2xz CgpGcm9tIDA4MmEwNjUxNGRhYjhmNmM1N2JkZmI4NGYxNDU0OTM4MTVmOTE5MWQgTW9uIFNlcCAx NyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0 b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4g MjAyMiAxNjoyMzowNyArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTEvMzBdIGp1Q2krKzogcmVidWls ZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvanVDaSsrL3RlbXBsYXRlIHwgMiArLQogMSBmaWxl IGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9qdUNpKysvdGVtcGxhdGUgYi9zcmNwa2dzL2p1Q2krKy90ZW1wbGF0ZQppbmRleCAxYTc2 MDRiNDRhMDAuLjUxMDMzMjRkZWMyMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9qdUNpKysvdGVtcGxh dGUKKysrIGIvc3JjcGtncy9qdUNpKysvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdqdUNpKysnCiBwa2duYW1lPWp1Q2krKwogdmVyc2lvbj0xLjYuMgotcmV2 aXNpb249MgorcmV2aXNpb249MwogX2xpYmNsYW5nbW1fY29tbWl0PSJiMzQyZjRkZDZkZTRmZTUw OWE2OTJhNGI0ZmNmYzdlMjRhYWU5NTkwIgogX3RpbnlfY29tbWl0PSJjOWM4YmY4MTBkZGFkOGNk MTc4ODJiOWE5ZWU2MjhhNjkwZTc3OWY1Igogd3Jrc3JjPSJqdWNpcHAtdiR7dmVyc2lvbn0iCgpG cm9tIDhmZjJmZDQ3ODk2YjA1YTkyZGQxODkxMzBlZGRhNmQ3MWMyNzUwYmEgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25p Pz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVzdHJlcy5vcmc+CkRhdGU6IFNhdCwgMSBKYW4gMjAy MiAxODozMDowMSArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMTIvMzBdIGxsdm0xMzogZml4IGxpYm9t cCogcGFja2FnZXMKCi0tLQogc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUgfCA0ICsrLS0KIDEgZmls ZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTMvdGVtcGxhdGUgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQppbmRleCAw OGQ4NDc0NzI1MjUuLmJmYzkxMDU2ZDI3NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtMTMvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRl bXBsYXRlIGZpbGUgZm9yICdsbHZtMTMnCiBwa2duYW1lPWxsdm0xMwogdmVyc2lvbj0xMy4wLjAK LXJldmlzaW9uPTEKK3JldmlzaW9uPTIKIHdya3NyYz0ibGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0u c3JjIgogYnVpbGRfd3Jrc3JjPWxsdm0KIGJ1aWxkX3N0eWxlPWNtYWtlCkBAIC0zOTcsNiArMzk3 LDcgQEAgbGlib21wX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9IiAtIENsYW5nIE9wZW5NUCBz dXBwb3J0IGxpYnJhcnkiCiAJcGtnX2luc3RhbGwoKSB7CiAJCXZtb3ZlIHVzci9saWIvbGlib21w LnNvCisJCXZtb3ZlIHVzci9saWIvbGlib21wdGFyZ2V0LnNvCiAJCXZtb3ZlICJ1c3IvbGliL2xp Ym9tcHRhcmdldC5ydGwuKi5zbyIKIAkJdm1vdmUgdXNyL2xpYi9saWJhcmNoZXIuc28KIAl9CkBA IC00MDYsNyArNDA3LDYgQEAgbGlib21wLWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9 IiAtIENsYW5nIE9wZW5NUCBzdXBwb3J0IGxpYnJhcnkgLSBkZXZlbG9wbWVudCBmaWxlcyIKIAlk ZXBlbmRzPSJsaWJvbXA+PSR7dmVyc2lvbn1fJHtyZXZpc2lvbn0iCiAJcGtnX2luc3RhbGwoKSB7 Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYm9tcCouc28iCiAJCXZtb3ZlICJ1c3IvbGliL2xpYmFyY2hl cioiCiAJCXZtb3ZlICJ1c3IvaW5jbHVkZS9vbXAqLmgiCiAJCXZtb3ZlICJ1c3IvbGliL2NsYW5n LyR7dmVyc2lvbn0vaW5jbHVkZS9vbXAqLmgiCgpGcm9tIDUxMzFlNTNmMThjMTZkNGE4YWNkYWVh NWE0ZTVhZjFjOTQzM2FiMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVz dHJlcy5vcmc+CkRhdGU6IFN1biwgMTYgSmFuIDIwMjIgMTQ6MzM6NTYgKzAyMDAKU3ViamVjdDog W1BBVENIIDEzLzMwXSBjaHJvbWl1bTogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3Mv Y2hyb21pdW0vdGVtcGxhdGUgfCA4ICstLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9jaHJvbWl1bS90ZW1w bGF0ZSBiL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKaW5kZXggOTJjNDhlNTUwNTk5Li4yNDM5 MjUxMWZmOWEgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvY2hyb21pdW0vdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9jaHJvbWl1bS90ZW1wbGF0ZQpAQCAtMjAsNyArMjAsNyBAQCBkZXNjX29wdGlvbl9kZWJ1 Zz0iQnVpbGQgd2l0aCBkZWJ1ZyBzeW1ib2xzIgogZGVzY19vcHRpb25fanNfb3B0aW1pemU9Ik9w dGltaXplIHRoZSBKUyB1c2VkIGZvciBDaHJvbWl1bSdzIFVJIgogZGVzY19vcHRpb25fcGlwZXdp cmU9IkVuYWJsZSBzdXBwb3J0IGZvciBzY3JlZW4gc2hhcmluZyBmb3IgV2ViUlRDIHZpYSBQaXBl V2lyZSIKIAotaG9zdG1ha2VkZXBlbmRzPSIkKHZvcHRfaWYgY2xhbmcgImNsYW5nIGxsZCBsbHZt MTIiKSBweXRob24gcHl0aG9uMyBwa2djb25mIHBlcmwgZ3BlcmYgYmlzb24gbmluamEgbm9kZWpz IGh3aWRzCitob3N0bWFrZWRlcGVuZHM9IiQodm9wdF9pZiBjbGFuZyAiY2xhbmcgbGxkIGxsdm0x MyIpIHB5dGhvbiBweXRob24zIHBrZ2NvbmYgcGVybCBncGVyZiBiaXNvbiBuaW5qYSBub2RlanMg aHdpZHMKICBsaWJhdG9taWMtZGV2ZWwgbGliZXZlbnQtZGV2ZWwgbGliZ2xpYi1kZXZlbCAkKHZv cHRfaWYganNfb3B0aW1pemUgb3Blbmpkaykgd2F5bGFuZC1kZXZlbCBsaWJlcG94eS1kZXZlbCIK IG1ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwgZ3RrKy1kZXZlbCBndGsrMy1kZXZlbCBuc3MtZGV2 ZWwgcGNpdXRpbHMtZGV2ZWwKICBsaWJYaS1kZXZlbCBsaWJnY3J5cHQtZGV2ZWwgbGliZ25vbWUt a2V5cmluZy1kZXZlbCBjdXBzLWRldmVsIGVsZnV0aWxzLWRldmVsCkBAIC0yNjcsMTIgKzI2Nyw2 IEBAIGRvX2NvbmZpZ3VyZSgpIHsKIAkJJ2Rpc2FibGVfZmllbGR0cmlhbF90ZXN0aW5nX2NvbmZp Zz10cnVlJwogCiAJCSdpc19vZmZpY2lhbF9idWlsZD10cnVlJwotCi0JCSMgc2VnZmF1bHRzIHdp dGggbGx2bS0xMi4wLjEKLQkJJ2lzX2NmaT1mYWxzZScKLQkJJ3VzZV90aGluX2x0bz1mYWxzZScK LQkJJ3VzZV9jZmlfaWNhbGw9ZmFsc2UnCi0JCSdjaHJvbWVfcGdvX3BoYXNlPTAnCiAJKQogCiAJ aWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCgpGcm9tIDIxMmE1YjlmMmQ1YjQyNGRmNmQ2Njhk OTM0MjQ3ZWE5MTA4ZjM0MzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9Mb3Vpcz0yMER1cHI9QzM9QTk9MjBCZXJ0b25pPz0KIDxsb3Vpc2RiQGxlc3BldGl0c3BlZGVz dHJlcy5vcmc+CkRhdGU6IFN1biwgMTYgSmFuIDIwMjIgMTQ6Mzk6MDQgKzAyMDAKU3ViamVjdDog W1BBVENIIDE0LzMwXSBsbHZtMTI6IHJlbW92ZQoKLS0tCiBzcmNwa2dzL2xsdm0xMi9JTlNUQUxM Lm1zZyAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogLi4uL2xsdm0xMi9maWxlcy9sbHZtLUNv bmZpZy1sbHZtLWNvbmZpZy5oICAgIHwgICA5IC0tCiBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xs dm0tMDAxLW11c2wucGF0Y2ggICAgfCAgNTcgLS0tLS0tLS0tCiAuLi4vcGF0Y2hlcy9sbHZtLTAw Mi1tdXNsLXBwYzY0LWVsZnYyLnBhdGNoICAgfCAgMzAgLS0tLS0KIC4uLi9wYXRjaGVzL2xsdm0t MDAzLXBwYy1zZWN1cmVwbHQucGF0Y2ggICAgICB8ICAxMSAtLQogLi4uL3BhdGNoZXMvbGx2bS0w MDQtb3ZlcnJpZGUtb3B0LnBhdGNoICAgICAgIHwgIDE4IC0tLQogLi4uL2xsdm0xMi9wYXRjaGVz L2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2ggIHwgIDM2IC0tLS0tLQogLi4uL3BhdGNoZXMvbGx2 bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNoICAgIHwgIDI1IC0tLS0KIHNyY3BrZ3MvbGx2bTEy L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICB8IDEyMCArLS0tLS0tLS0tLS0tLS0tLS0K IHNyY3BrZ3MvbGx2bTEyL3VwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyAtCiAx MCBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDMwNSBkZWxldGlvbnMoLSkKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9JTlNUQUxMLm1zZwogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAxLW11c2wucGF0Y2gK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAyLW11c2wt cHBjNjQtZWxmdjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2xsdm0xMi9wYXRj aGVzL2xsdm0tMDAzLXBwYy1zZWN1cmVwbHQucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA0LW92ZXJyaWRlLW9wdC5wYXRjaAogZGVsZXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDUtcHBjLWJpZ3BpYy5wYXRj aAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDYtYWFy Y2g2NC1tZl9leGVjLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9sbHZtMTIvdXBk YXRlCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvSU5TVEFMTC5tc2cgYi9zcmNwa2dzL2xs dm0xMi9JTlNUQUxMLm1zZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LjAwNGFjZjdiNTMwYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvbGx2bTEyL0lOU1RBTEwu bXNnCkBAIC0wLDAgKzEgQEAKK2xsdm0xMiBpcyBubyBsb25nZXIgcHJvdmlkZWQgYnkgVm9pZCBM aW51eApkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvZmlsZXMvbGx2bS1Db25maWctbGx2bS1j b25maWcuaCBiL3NyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmYTA4YzliZTY5Ni4uMDAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL2ZpbGVzL2xsdm0tQ29uZmlnLWxsdm0tY29uZmlnLmgKKysr IC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLSNpbmNsdWRlIDxiaXRzL3dvcmRzaXplLmg+Ci0K LSNpZiBfX1dPUkRTSVpFID09IDMyCi0jaW5jbHVkZSAibGx2bS1jb25maWctMzIuaCIKLSNlbGlm IF9fV09SRFNJWkUgPT0gNjQKLSNpbmNsdWRlICJsbHZtLWNvbmZpZy02NC5oIgotI2Vsc2UKLSNl cnJvciAiVW5rbm93biB3b3JkIHNpemUiCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2 bTEyL3BhdGNoZXMvbGx2bS0wMDEtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMv bGx2bS0wMDEtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjJhM2Y4 ZDYyODEzLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAw MS1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSBmYWNhM2Zi ZDE1ZDBjMzEwODQ5M2MzYzU0Y2Q5MzEzOGUwNDlhYzQzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQotRnJvbTogQW5kcmVhIEJyYW5jYWxlb25pIDxtaXdheGVAZ21haWwuY29tPgotRGF0ZTogVHVl LCA4IFNlcCAyMDE1IDIyOjAzOjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBtdXNsCi0K LS0tLQotIGluY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oIHwgOSArKysr KysrKysKLSBsaWIvU3VwcG9ydC9EeW5hbWljTGlicmFyeS5jcHAgICAgICAgICAgICB8IDIgKy0K LSBsaWIvU3VwcG9ydC9Vbml4L1NpZ25hbHMuaW5jICAgICAgICAgICAgICB8IDYgKysrLS0tCi0g dXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MgICAgfCAxICsKLSA1IGZpbGVz IGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQg YS9pbmNsdWRlL2xsdm0vQW5hbHlzaXMvVGFyZ2V0TGlicmFyeUluZm8uaCBiL2luY2x1ZGUvbGx2 bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5oCi1pbmRleCAzNGE4YTFlMy4uMTIxNGVjZTUg MTAwNjQ0Ci0tLS0gYS9sbHZtL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5m by5oCi0rKysgYi9sbHZtL2luY2x1ZGUvbGx2bS9BbmFseXNpcy9UYXJnZXRMaWJyYXJ5SW5mby5o Ci1AQCAtMTgsNiArMTgsMTUgQEAKLSAjaW5jbHVkZSAibGx2bS9JUi9QYXNzTWFuYWdlci5oIgot ICNpbmNsdWRlICJsbHZtL1Bhc3MuaCIKLSAKLSsjdW5kZWYgZm9wZW42NAotKyN1bmRlZiBmc2Vl a282NAotKyN1bmRlZiBmc3RhdDY0Ci0rI3VuZGVmIGZzdGF0dmZzNjQKLSsjdW5kZWYgZnRlbGxv NjQKLSsjdW5kZWYgbHN0YXQ2NAotKyN1bmRlZiBzdGF0NjQKLSsjdW5kZWYgdG1wZmlsZTY0Ci0r Ci0gbmFtZXNwYWNlIGxsdm0gewotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBjbGFzcyBBcnJheVJl ZjsKLSBjbGFzcyBUcmlwbGU7Ci1kaWZmIC0tZ2l0IGEvbGliL1N1cHBvcnQvVW5peC9EeW5hbWlj TGlicmFyeS5pbmMgYi9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJyYXJ5LmluYwotaW5kZXgg YTJhMzc5OTYuLjJmODZjNDcwIDEwMDY0NAotLS0tIGEvbGx2bS9saWIvU3VwcG9ydC9Vbml4L0R5 bmFtaWNMaWJyYXJ5LmluYwotKysrIGIvbGx2bS9saWIvU3VwcG9ydC9Vbml4L0R5bmFtaWNMaWJy YXJ5LmluYwotQEAgLTEwMiw3ICsxMDIsNyBAQCBzdGF0aWMgdm9pZCAqRG9TZWFyY2goY29uc3Qg Y2hhciogU3ltYm9sTmFtZSkgewotIAotIC8vIFRoaXMgbWFjcm8gcmV0dXJucyB0aGUgYWRkcmVz cyBvZiBhIHdlbGwta25vd24sIGV4cGxpY2l0IHN5bWJvbAotICNkZWZpbmUgRVhQTElDSVRfU1lN Qk9MKFNZTSkgXAotLSAgIGlmICghc3RyY21wKFN5bWJvbE5hbWUsICNTWU0pKSByZXR1cm4gJlNZ TQotKyAgIGlmICghc3RyY21wKFN5bWJvbE5hbWUsICNTWU0pKSByZXR1cm4gKHZvaWQgKikmU1lN Ci0gCi0gLy8gVW5kZXIgZ2xpYmMgd2UgaGF2ZSBhIHdlaXJkIHNpdHVhdGlvbi4gVGhlIHN0ZGVy ci9vdXQvaW4gc3ltYm9scyBhcmUgYm90aAotIC8vIG1hY3JvcyBhbmQgZ2xvYmFsIHZhcmlhYmxl cyBiZWNhdXNlIG9mIHN0YW5kYXJkcyByZXF1aXJlbWVudHMuIFNvLCB3ZQotZGlmZiAtLWdpdCBh L3V0aWxzL3VuaXR0ZXN0L2dvb2dsZXRlc3Qvc3JjL2d0ZXN0LmNjIGIvdXRpbHMvdW5pdHRlc3Qv Z29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKLWluZGV4IGQ4ODJhYjJlLi5mMWZiMTJkMCAxMDA2NDQK LS0tLSBhL2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKLSsrKyBi L2xsdm0vdXRpbHMvdW5pdHRlc3QvZ29vZ2xldGVzdC9zcmMvZ3Rlc3QuY2MKLUBAIC0xMjgsNiAr MTI4LDcgQEAKLSAKLSAjaWYgR1RFU1RfQ0FOX1NUUkVBTV9SRVNVTFRTXwotICMgaW5jbHVkZSA8 YXJwYS9pbmV0Lmg+ICAvLyBOT0xJTlQKLSsjIGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4gIC8vIE5P TElOVAotICMgaW5jbHVkZSA8bmV0ZGIuaD4gIC8vIE5PTElOVAotICMgaW5jbHVkZSA8c3lzL3Nv Y2tldC5oPiAgLy8gTk9MSU5UCi0gIyBpbmNsdWRlIDxzeXMvdHlwZXMuaD4gIC8vIE5PTElOVApk aWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVs ZnYyLnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMi1tdXNsLXBwYzY0LWVs ZnYyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDcxZDk2NGJkMzcuLjAw MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDAyLW11c2wtcHBj NjQtZWxmdjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1UaGlzIHBhdGNo ZXMgTExWTSB0byB1c2UgRUxGdjIgb24gcHBjNjQgdW5jb25kaXRpb25hbGx5IHVubGVzcyBvdmVy cmlkZGVuLiBXZQotbmVlZCB0aGlzIGJlY2F1c2UgdW5saWtlIG1vc3QgZGlzdHJvcyB3ZSB1c2Ug RUxGdjIgZm9yIGJvdGggZ2xpYmMgYW5kIG11c2wKLW9uIGJpZyBlbmRpYW4gcHBjNjQuCi0KLWRp ZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAgYi9saWIv VGFyZ2V0L1Bvd2VyUEMvUFBDVGFyZ2V0TWFjaGluZS5jcHAKLWluZGV4IDA2MzQ4MzNlLi5iN2Ni YzJlNyAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ1RhcmdldE1hY2hp bmUuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENUYXJnZXRNYWNoaW5lLmNw cAotQEAgLTIyMiw5ICsyMjIsOCBAQCBzdGF0aWMgUFBDVGFyZ2V0TWFjaGluZTo6UFBDQUJJIGNv bXB1dGVUYXJnZXRBQkkoY29uc3QgVHJpcGxlICZUVCwKLSAKLSAgIHN3aXRjaCAoVFQuZ2V0QXJj aCgpKSB7Ci0gICBjYXNlIFRyaXBsZTo6cHBjNjRsZToKLS0gICAgcmV0dXJuIFBQQ1RhcmdldE1h Y2hpbmU6OlBQQ19BQklfRUxGdjI7Ci0gICBjYXNlIFRyaXBsZTo6cHBjNjQ6Ci0tICAgIHJldHVy biBQUENUYXJnZXRNYWNoaW5lOjpQUENfQUJJX0VMRnYxOwotKyAgICByZXR1cm4gUFBDVGFyZ2V0 TWFjaGluZTo6UFBDX0FCSV9FTEZ2MjsKLSAgIGRlZmF1bHQ6Ci0gICAgIHJldHVybiBQUENUYXJn ZXRNYWNoaW5lOjpQUENfQUJJX1VOS05PV047Ci0gICB9Ci1kaWZmIC0tZ2l0IGEvdGVzdC9Db2Rl R2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbCBiL3Rlc3QvQ29kZUdlbi9Qb3dlclBDL3BwYzY0 LWVsZi1hYmkubGwKLWluZGV4IDhiMWNmNmI1Li4yOTZhMmFmYSAxMDA2NDQKLS0tLSBhL2xsdm0v dGVzdC9Db2RlR2VuL1Bvd2VyUEMvcHBjNjQtZWxmLWFiaS5sbAotKysrIGIvbGx2bS90ZXN0L0Nv ZGVHZW4vUG93ZXJQQy9wcGM2NC1lbGYtYWJpLmxsCi1AQCAtMSw0ICsxLDUgQEAKLS07IFJVTjog bGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjQtdW5rbm93bi1saW51 eC1nbnUgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVMRnYxCi0rOyBS VU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0LXVua25vd24t bGludXgtZ251IDwgJXMgfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2Mgot KzsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5zdHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtu b3duLWxpbnV4LW11c2wgPCAlcyB8IEZpbGVDaGVjayAlcyAtY2hlY2stcHJlZml4PUNIRUNLLUVM RnYyCi0gOyBSVU46IGxsYyAtdmVyaWZ5LW1hY2hpbmVpbnN0cnMgLW10cmlwbGU9cG93ZXJwYzY0 LXVua25vd24tbGludXgtZ251IC10YXJnZXQtYWJpIGVsZnYxIDwgJXMgfCBGaWxlQ2hlY2sgJXMg LWNoZWNrLXByZWZpeD1DSEVDSy1FTEZ2MQotIDsgUlVOOiBsbGMgLXZlcmlmeS1tYWNoaW5laW5z dHJzIC1tdHJpcGxlPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSAtdGFyZ2V0LWFiaSBlbGZ2 MiA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKLSA7IFJVTjog bGxjIC12ZXJpZnktbWFjaGluZWluc3RycyAtbXRyaXBsZT1wb3dlcnBjNjRsZS11bmtub3duLWxp bnV4LWdudSA8ICVzIHwgRmlsZUNoZWNrICVzIC1jaGVjay1wcmVmaXg9Q0hFQ0stRUxGdjIKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5w YXRjaCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDMtcHBjLXNlY3VyZXBsdC5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVkMTU5NzQzNzVkLi4wMDAwMDAwMDAw MDAKLS0tIGEvc3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwMy1wcGMtc2VjdXJlcGx0LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvbGx2bS9saWIvVGFyZ2V0 L1Bvd2VyUEMvUFBDU3VidGFyZ2V0LmNwcAotKysrIGIvbGx2bS9saWIvVGFyZ2V0L1Bvd2VyUEMv UFBDU3VidGFyZ2V0LmNwcAotQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFBQQ1N1YnRhcmdldDo6 aW5pdFN1YnRhcmdldEZlYXR1cmVzKFN0cmluZ1JlZiBDUFUsIFN0cmluZ1JlZiBGUykgewotIAot ICAgaWYgKChUYXJnZXRUcmlwbGUuaXNPU0ZyZWVCU0QoKSAmJiBUYXJnZXRUcmlwbGUuZ2V0T1NN YWpvclZlcnNpb24oKSA+PSAxMykgfHwKLSAgICAgICBUYXJnZXRUcmlwbGUuaXNPU05ldEJTRCgp IHx8IFRhcmdldFRyaXBsZS5pc09TT3BlbkJTRCgpIHx8Ci0tICAgICAgVGFyZ2V0VHJpcGxlLmlz TXVzbCgpKQotKyAgICAgIGlzVGFyZ2V0TGludXgoKSkKLSAgICAgU2VjdXJlUGx0ID0gdHJ1ZTsK LSAKLSAgIGlmIChIYXNTUEUgJiYgSXNQUEM2NCkKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGx2bTEy L3BhdGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoIGIvc3JjcGtncy9sbHZtMTIvcGF0 Y2hlcy9sbHZtLTAwNC1vdmVycmlkZS1vcHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDUxZDBlNGIzMWIzMi4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvbGx2bTEyL3Bh dGNoZXMvbGx2bS0wMDQtb3ZlcnJpZGUtb3B0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTgg KzAsMCBAQAotVGhpcyBhbGxvd3MgdXMgdG8gb3ZlcnJpZGUgdGhlIG9wdGltaXphdGlvbiBsZXZl bCBhcyBub3QgYWxsIHBsYXRmb3JtcyBjYW4KLWRlYWwgd2l0aCAtTzMuCi0KLS0tLSBhL2xsdm0v Q01ha2VMaXN0cy50eHQKLSsrKyBiL2xsdm0vQ01ha2VMaXN0cy50eHQKLUBAIC05MTgsNiArOTE4 LDEyIEBAIGlmKCBNSU5HVyBBTkQgTk9UICIke0NNQUtFX0NYWF9DT01QSUxFUl9JRH0iIE1BVENI RVMgIkNsYW5nIiApCi0gICBsbHZtX3JlcGxhY2VfY29tcGlsZXJfb3B0aW9uKENNQUtFX0NYWF9G TEFHU19SRUxFQVNFICItTzMiICItTzIiKQotIGVuZGlmKCkKLSAKLStzZXQoVk9JRF9DWFhfT1BU X0ZMQUdTICIiIENBQ0hFIFNUUklORyAiT3B0aW1pemF0aW9uIGxldmVsIHRvIHVzZSIpCi0rCi0r aWYgKE5PVCBWT0lEX0NYWF9PUFRfRkxBR1MgU1RSRVFVQUwgIiIpCi0rICAgIGxsdm1fcmVwbGFj ZV9jb21waWxlcl9vcHRpb24oQ01BS0VfQ1hYX0ZMQUdTX1JFTEVBU0UgIi1PMyIgIiR7Vk9JRF9D WFhfT1BUX0ZMQUdTfSIpCi0rZW5kaWYoKQotKwotICMgUHV0IHRoaXMgYmVmb3JlIHRibGdlbi4g RWxzZSB3ZSBoYXZlIGEgY2lyY3VsYXIgZGVwZW5kZW5jZS4KLSBhZGRfc3ViZGlyZWN0b3J5KGxp Yi9EZW1hbmdsZSkKLSBhZGRfc3ViZGlyZWN0b3J5KGxpYi9TdXBwb3J0KQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoIGIvc3JjcGtn cy9sbHZtMTIvcGF0Y2hlcy9sbHZtLTAwNS1wcGMtYmlncGljLnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCBkMzMyNjg3YjlkOTIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA1LXBwYy1iaWdwaWMucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzNiArMCwwIEBACi1Gcm9tIGYzZGJkZDQ5YzA2YmZhZmMxZDYxMzgwOTRjZjQyODg5YzE0 ZDM4YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTYW11ZWwgSG9sbGFuZCA8c2Ft dWVsQHNob2xsYW5kLm9yZz4KLURhdGU6IFN1biwgMyBOb3YgMjAxOSAxMDo1NzoyNyAtMDYwMAot U3ViamVjdDogW1BBVENIXSBbTExWTV1bUG93ZXJQQ10gQXNzdW1lIEJpZ1BJQyBpZiBubyBQSUMg bGV2ZWwgaXMgc3BlY2lmaWVkCi0KLS0tLQotIGxsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0Fz bVByaW50ZXIuY3BwICB8IDIgKy0KLSBsbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENNQ0luc3RM b3dlci5jcHAgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRl ci5jcHAgYi9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDQXNtUHJpbnRlci5jcHAKLWluZGV4IGNjZTIx ZjMyLi44N2NhNWY5YiAxMDA2NDQKLS0tLSBhL2xsdm0vbGliL1RhcmdldC9Qb3dlclBDL1BQQ0Fz bVByaW50ZXIuY3BwCi0rKysgYi9sbHZtL2xpYi9UYXJnZXQvUG93ZXJQQy9QUENBc21QcmludGVy LmNwcAotQEAgLTUyMCw3ICs1MjAsNyBAQCB2b2lkIFBQQ0FzbVByaW50ZXI6OkVtaXRUbHNDYWxs KGNvbnN0IE1hY2hpbmVJbnN0ciAqTUksCi0gCi0gICAvLyBBZGQgMzI3Njggb2Zmc2V0IHRvIHRo ZSBzeW1ib2wgc28gd2UgZm9sbG93IHVwIHRoZSBsYXRlc3QgR09UL1BMVCBBQkkuCi0gICBpZiAo S2luZCA9PSBNQ1N5bWJvbFJlZkV4cHI6OlZLX1BMVCAmJiBTdWJ0YXJnZXQtPmlzU2VjdXJlUGx0 KCkgJiYKLS0gICAgICBNLT5nZXRQSUNMZXZlbCgpID09IFBJQ0xldmVsOjpCaWdQSUMpCi0rICAg ICAgTS0+Z2V0UElDTGV2ZWwoKSAhPSBQSUNMZXZlbDo6U21hbGxQSUMpCi0gICAgIFRsc1JlZiA9 IE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRkKAotICAgICAgICAgVGxzUmVmLCBNQ0NvbnN0YW50RXhw cjo6Y3JlYXRlKDMyNzY4LCBPdXRDb250ZXh0KSwgT3V0Q29udGV4dCk7Ci0gICBjb25zdCBNYWNo aW5lT3BlcmFuZCAmTU8gPSBNSS0+Z2V0T3BlcmFuZCgyKTsKLWRpZmYgLS1naXQgYS9saWIvVGFy Z2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwIGIvbGliL1RhcmdldC9Qb3dlclBDL1BQQ01D SW5zdExvd2VyLmNwcAotaW5kZXggNWNjMTgwZDcuLmE1YjAyNTY1IDEwMDY0NAotLS0tIGEvbGx2 bS9saWIvVGFyZ2V0L1Bvd2VyUEMvUFBDTUNJbnN0TG93ZXIuY3BwCi0rKysgYi9sbHZtL2xpYi9U YXJnZXQvUG93ZXJQQy9QUENNQ0luc3RMb3dlci5jcHAKLUBAIC0xMTcsNyArMTE3LDcgQEAgc3Rh dGljIE1DT3BlcmFuZCBHZXRTeW1ib2xSZWYoY29uc3QgTWFjaGluZU9wZXJhbmQgJk1PLCBjb25z dCBNQ1N5bWJvbCAqU3ltYm9sLAotICAgY29uc3QgTUNFeHByICpFeHByID0gTUNTeW1ib2xSZWZF eHByOjpjcmVhdGUoU3ltYm9sLCBSZWZLaW5kLCBDdHgpOwotICAgLy8gSWYgLW1zZWN1cmUtcGx0 IC1mUElDLCBhZGQgMzI3NjggdG8gc3ltYm9sLgotICAgaWYgKFN1YnRhcmdldC0+aXNTZWN1cmVQ bHQoKSAmJiBUTS5pc1Bvc2l0aW9uSW5kZXBlbmRlbnQoKSAmJgotLSAgICAgIE0tPmdldFBJQ0xl dmVsKCkgPT0gUElDTGV2ZWw6OkJpZ1BJQyAmJgotKyAgICAgIE0tPmdldFBJQ0xldmVsKCkgIT0g UElDTGV2ZWw6OlNtYWxsUElDICYmCi0gICAgICAgTU8uZ2V0VGFyZ2V0RmxhZ3MoKSA9PSBQUENJ STo6TU9fUExUKQotICAgICBFeHByID0KLSAgICAgICAgIE1DQmluYXJ5RXhwcjo6Y3JlYXRlQWRk KEV4cHIsIE1DQ29uc3RhbnRFeHByOjpjcmVhdGUoMzI3NjgsIEN0eCksIEN0eCk7CmRpZmYgLS1n aXQgYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5wYXRj aCBiL3NyY3BrZ3MvbGx2bTEyL3BhdGNoZXMvbGx2bS0wMDYtYWFyY2g2NC1tZl9leGVjLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDBhYmQyMTY2NjUuLjAwMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL2xsdm0xMi9wYXRjaGVzL2xsdm0tMDA2LWFhcmNoNjQtbWZfZXhlYy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZpeCBmYWlsdXJlcyBpbiBBbGxv Y2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVzdC4qIG9uIGFhcmNoNjQ6Ci0KLSAgICBGYWlsaW5n IFRlc3RzICg4KToKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMv QWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuQWxsb2NBbmRSZWxlYXNlLzMKLSAgICAg ICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRlc3RzL01h cHBlZE1lbW9yeVRlc3QuRHVwbGljYXRlTmVhci8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBw b3J0Ly4vU3VwcG9ydFRlc3RzL0FsbG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0LkVuYWJs ZWRXcml0ZS8zCi0gICAgICAgIExMVk0tVW5pdCA6OiBTdXBwb3J0Ly4vU3VwcG9ydFRlc3RzL0Fs bG9jYXRpb25UZXN0cy9NYXBwZWRNZW1vcnlUZXN0Lk11bHRpcGxlQWxsb2NBbmRSZWxlYXNlLzMK LSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0VGVzdHMvQWxsb2NhdGlvblRl c3RzL01hcHBlZE1lbW9yeVRlc3QuU3VjY2Vzc2l2ZU5lYXIvMwotICAgICAgICBMTFZNLVVuaXQg OjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFwcGVkTWVtb3J5VGVz dC5VbmFsaWduZWROZWFyLzMKLSAgICAgICAgTExWTS1Vbml0IDo6IFN1cHBvcnQvLi9TdXBwb3J0 VGVzdHMvQWxsb2NhdGlvblRlc3RzL01hcHBlZE1lbW9yeVRlc3QuWmVyb05lYXIvMwotICAgICAg ICBMTFZNLVVuaXQgOjogU3VwcG9ydC8uL1N1cHBvcnRUZXN0cy9BbGxvY2F0aW9uVGVzdHMvTWFw cGVkTWVtb3J5VGVzdC5aZXJvU2l6ZU5lYXIvMwotCi1VcHN0cmVhbS1Jc3N1ZTogaHR0cHM6Ly9i dWdzLmxsdm0ub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3OCNjMTAKLQotLS0tIGEvbGx2bS9saWIv U3VwcG9ydC9Vbml4L01lbW9yeS5pbmMKLSsrKyBiL2xsdm0vbGliL1N1cHBvcnQvVW5peC9NZW1v cnkuaW5jCi1AQCAtNTgsNyArNTgsNyBAQCBzdGF0aWMgaW50IGdldFBvc2l4UHJvdGVjdGlvbkZs YWdzKHVuc2lnbmVkIEZsYWdzKSB7Ci0gICAgIHJldHVybiBQUk9UX1JFQUQgfCBQUk9UX1dSSVRF IHwgUFJPVF9FWEVDOwotICAgY2FzZSBsbHZtOjpzeXM6Ok1lbW9yeTo6TUZfRVhFQzoKLSAjaWYg KGRlZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19QT1dFUlBDX18pIHx8IGRlZmluZWQg KF9fcHBjX18pIHx8IFwKLS0gICAgIGRlZmluZWQoX1BPV0VSKSB8fCBkZWZpbmVkKF9BUkNIX1BQ QykpCi0rICAgICBkZWZpbmVkKF9QT1dFUikgfHwgZGVmaW5lZChfQVJDSF9QUEMpIHx8IChkZWZp bmVkKF9fbGludXhfXykgJiYgZGVmaW5lZChfX2FhcmNoNjRfXykpKQotICAgICAvLyBPbiBQb3dl clBDLCBoYXZpbmcgYW4gZXhlY3V0YWJsZSBwYWdlIHRoYXQgaGFzIG5vIHJlYWQgcGVybWlzc2lv bgotICAgICAvLyBjYW4gaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcy4gIFRoZSBmdW5jdGlv biBJbnZhbGlkYXRlSW5zdHJ1Y3Rpb24tCi0gICAgIC8vIENhY2hlIHVzZXMgaW5zdHJ1Y3Rpb25z IGRjYmYgYW5kIGljYmksIGJvdGggb2Ygd2hpY2ggYXJlIHRyZWF0ZWQgYnkKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlIGIvc3JjcGtncy9sbHZtMTIvdGVtcGxhdGUKaW5kZXgg N2IzNjFiYmJmNWJjLi5lN2U0MGNhZTQxM2UgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGx2bTEyL3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvbGx2bTEyL3RlbXBsYXRlCkBAIC0xLDEyNSArMSwxMyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnbGx2bTEyJwogcGtnbmFtZT1sbHZtMTIKIHZlcnNpb249MTIu MC4xCi1yZXZpc2lvbj0zCi13cmtzcmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNyYyIKLWJ1 aWxkX3dya3NyYz1sbHZtCi1idWlsZF9zdHlsZT1jbWFrZQotY29uZmlndXJlX2FyZ3M9IgotIC1E Q01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIC1Xbm8tZGV2Ci0gLURFTkFCTEVfTElOS0VSX0JVSUxE X0lEPVlFUwotIC1ETExWTV9JTkNMVURFX0RPQ1M9WUVTCi0gLURMTFZNX0JVSUxEX0RPQ1M9WUVT Ci0gLURMTFZNX0VOQUJMRV9TUEhJTlg9WUVTCi0gLURTUEhJTlhfV0FSTklOR1NfQVNfRVJST1JT PU5PCi0gLURMTFZNX0JVSUxEX0xMVk1fRFlMSUI9WUVTCi0gLURMTFZNX0xJTktfTExWTV9EWUxJ Qj1ZRVMKLSAtRExMVk1fRU5BQkxFX1JUVEk9WUVTCi0gLURMTFZNX0VOQUJMRV9GRkk9WUVTCi0g LURMTFZNX0JJTlVUSUxTX0lOQ0RJUj0vdXNyL2luY2x1ZGUiCi1ob3N0bWFrZWRlcGVuZHM9InBl cmwgcHl0aG9uMyB6bGliLWRldmVsIGxpYmZmaS1kZXZlbCBzd2lnIHB5dGhvbjMtU3BoaW54Ci0g cHl0aG9uMy1yZWNvbW1vbm1hcmsgcHl0aG9uMy1zcGhpbngtYXV0b21vZGFwaSIKLW1ha2VkZXBl bmRzPSJweXRob24zLWRldmVsIHpsaWItZGV2ZWwgZWxmdXRpbHMtZGV2ZWwgbGliZmZpLWRldmVs IGxpYmVkaXQtZGV2ZWwKLSBsaWJ4bWwyLWRldmVsIGJpbnV0aWxzLWRldmVsIGxpYmF0b21pYy1k ZXZlbCIKLWRlcGVuZHM9ImxpYmxsdm0xMj49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKLXNob3J0 X2Rlc2M9IkxvdyBMZXZlbCBWaXJ0dWFsIE1hY2hpbmUiCityZXZpc2lvbj00CitidWlsZF9zdHls ZT1tZXRhCitzaG9ydF9kZXNjPSJMb3cgTGV2ZWwgVmlydHVhbCBNYWNoaW5lIChyZW1vdmVkIHBh Y2thZ2UpIgogbWFpbnRhaW5lcj0icTY2IDxkYW5pZWxAb2N0YWZvcmdlLm9yZz4iCi1saWNlbnNl PSJBcGFjaGUtMi4wIgorbGljZW5zZT0ibWV0YXBhY2thZ2UiCiBob21lcGFnZT0iaHR0cHM6Ly93 d3cubGx2bS5vcmciCi1kaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJv amVjdC9yZWxlYXNlcy9kb3dubG9hZC9sbHZtb3JnLSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0LSR7 dmVyc2lvbn0uc3JjLnRhci54eiIKLWNoZWNrc3VtPTEyOWNiMjVjZDEzNjc3YWFkOTUxY2U1YzJk ZWIwZmU0YWZjMWU5ZDk4OTUwZjUzYjUxYmRjZmI1YTczYWZhMGUKLWxpYjMyZGlzYWJsZWQ9eWVz Ci1weXRob25fdmVyc2lvbj0zCi0KLWlmIFsgIiRYQlBTX1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBd OyB0aGVuCi0JY29uZmlndXJlX2FyZ3MrPSIgLURMSUJDWFhfSEFTX01VU0xfTElCQz1ZRVMiCi0J bWFrZWRlcGVuZHMrPSIgbGliZXhlY2luZm8tZGV2ZWwiCi0JZGVwZW5kcys9IiBsaWJleGVjaW5m by1kZXZlbCIKLWZpCi0KLSMgIm9wZXJhbmQgb3V0IG9mIHJhbmdlIiBhc3NlbWJsZXIgZmFpbHVy ZXMKLWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgotCXBwYzY0KikgOzsKLQlwcGMqKSBj b25maWd1cmVfYXJncys9IiAtRENMQU5HX0VOQUJMRV9DTEFOR0Q9T0ZGIiA7OwotZXNhYwotCi1w b3N0X3BhdGNoKCkgewotCSMgdXBkYXRlIGNvbmZpZy5ndWVzcyBmb3IgYmV0dGVyIHBsYXRmb3Jt IGRldGVjdGlvbgotCWNwICRYQlBTX0NPTU1PTkRJUi9lbnZpcm9ubWVudC9jb25maWd1cmUvYXV0 b21ha2UvY29uZmlnLmd1ZXNzIFwKLQkJJHt3cmtzcmN9L2xsdm0vY21ha2UKLX0KLQotcHJlX2Nv bmZpZ3VyZSgpIHsKLQlsb2NhbCB0cmlwbGV0Ci0KLQkjIFZhc3RseSByZWR1Y2Ugc2l6ZSBvZiBk ZWJ1Z2dpbmcgc3ltYm9sczoKLQlDRkxBR1M9JHtDRkxBR1MvIC1nLyAtZzF9Ci0JQ1hYRkxBR1M9 JHtDWFhGTEFHUy8gLWcvIC1nMX0KLQotCSMgc2luY2UgZ2NjOSwgdGhlIGJ1aWxkIGxpa2VzIHRv IGJsb3cgdXAgZm9yIHBwYzMyIGFwcGFyZW50bHkgYmVjYXVzZQotCSMgb2YgY2xhbmcgYmVpbmcg dG9vIGxhcmdlIGZvciBhIDI0LWJpdCByZWxhdGl2ZSBjYWxsIHRvIHRoZSBQTFQsIHNvCi0JIyBv cHRpbWl6ZSBmb3Igc2l6ZSBpbnN0ZWFkCi0JY2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGlu Ci0JCXBwYzY0KikgOzsKLQkJbWlwcyotbXVzbHxwcGMqKSBjb25maWd1cmVfYXJncys9IiAtRFZP SURfQ1hYX09QVF9GTEFHUz0tT3MiIDs7Ci0JZXNhYwotCi0JaWYgWyAiJENST1NTX0JVSUxEIiBd OyB0aGVuCi0JCW1zZ19ub3JtYWwgIkJ1aWxkaW5nIGhvc3QgdGJsZ2VuXG4iCi0JCW1rZGlyIC1w IGJ1aWxkL0hPU1QKLQkJY2QgYnVpbGQvSE9TVAotCQlDQz0iJEJVSUxEX0NDIiBDWFg9IiRCVUlM RF9DWFgiIENGTEFHUz0iJEJVSUxEX0NGTEFHUyIgXAotCQkJQ1hYRkxBR1M9IiRCVUlMRF9DWFhG TEFHUyIgTERGTEFHUz0iJEJVSUxEX0xERkxBR1MiIFwKLQkJCWNtYWtlIC4uLy4uIC1EQ01BS0Vf QlVJTERfVFlQRT1SZWxlYXNlIFwKLQkJCS1ETExWTV9FTkFCTEVfUFJPSkVDVFM9JHtfZW5hYmxl ZF9wcm9qZWN0c30KLQkJbWFrZSAke21ha2Vqb2JzfSAtQyB1dGlscy9UYWJsZUdlbgotCQlbICIk X2xsZGJfZW5hYmxlIiA9ICJ5ZXMiIF0gJiYgbWFrZSAke21ha2Vqb2JzfSAtQyB0b29scy9sbGRi L3V0aWxzL1RhYmxlR2VuCi0JCWNvbmZpZ3VyZV9hcmdzKz0iIC1ETExWTV9UQUJMRUdFTj0ke3dy a3NyY30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbHZtLXRibGdlbiIKLQkJWyAiJF9sbGRiX2VuYWJs ZSIgPSAieWVzIiBdICYmIGNvbmZpZ3VyZV9hcmdzKz0iIC1ETExEQl9UQUJMRUdFTj0ke3dya3Ny Y30vbGx2bS9idWlsZC9IT1NUL2Jpbi9sbGRiLXRibGdlbiIKLQkJY2QgLi4vLi4KLQlmaQotCi0J Y2FzZSAiJFhCUFNfVEFSR0VUX01BQ0hJTkUiIGluCi0JCWk2ODYqKSBfYXJjaD0iWDg2Ijs7Ci0J CXg4Nl82NCopIF9hcmNoPSJYODYiOzsKLQkJYXJtdjUqKSBfYXJjaD0iQXJtdjV0ZSI7OwotCQlh cm12NiopIF9hcmNoPSJBcm12NiI7OwotCQlhcm12NyopIF9hcmNoPSJBcm12NyI7OwotCQlhYXJj aDY0KikgX2FyY2g9IkFBcmNoNjQiOzsKLQkJbWlwcyopIF9hcmNoPSJNaXBzIjs7Ci0JCXBwYyop IF9hcmNoPSJQb3dlclBDIjs7Ci0JCXJpc2N2NjQqKSBfYXJjaD0iUklTQ1Y2NCI7OwotCWVzYWMK LQotCXRyaXBsZXQ9JHtYQlBTX0NST1NTX1RSSVBMRVQ6LSRYQlBTX1RSSVBMRVR9Ci0KLQljb25m aWd1cmVfYXJncys9IiAtRExMVk1fVEFSR0VUX0FSQ0g9JHtfYXJjaH0iCi0JY29uZmlndXJlX2Fy Z3MrPSIgLURMTFZNX0hPU1RfVFJJUExFPSR7dHJpcGxldH0iCi0JY29uZmlndXJlX2FyZ3MrPSIg LURMTFZNX0RFRkFVTFRfVEFSR0VUX1RSSVBMRT0ke3RyaXBsZXR9IgotfQotCi1kb19pbnN0YWxs KCkgewotCWNkIGJ1aWxkCi0JY21ha2UgLURDTUFLRV9JTlNUQUxMX1BSRUZJWD0ke0RFU1RESVJ9 L3VzciAtUCBjbWFrZV9pbnN0YWxsLmNtYWtlCi0KLQkjIFJlcXVpcmVkIGZvciBtdWx0aWxpYi4K LQlpZiBbICIkWEJQU19UQVJHRVRfTUFDSElORSIgPSAieDg2XzY0IiBdOyB0aGVuCi0JCWZvciBf aGVhZGVyIGluIGxsdm0tY29uZmlnOyBkbwotCQkJbXYgJHtERVNURElSfS91c3IvaW5jbHVkZS9s bHZtL0NvbmZpZy8ke19oZWFkZXJ9eywtNjR9LmgKLQkJCXZpbnN0YWxsICR7RklMRVNESVJ9L2xs dm0tQ29uZmlnLSR7X2hlYWRlcn0uaCA2NDQgXAotCQkJCXVzci9pbmNsdWRlL2xsdm0vQ29uZmln ICR7X2hlYWRlcn0uaAotCQlkb25lCi0JZmkKLQotCSMgUmVtb3ZlIGxsdm0tY29uZmlnLWhvc3Qg aW4gY3Jvc3MgYnVpbGRzLgotCWlmIFsgIiRDUk9TU19CVUlMRCIgXTsgdGhlbgotCQlybSAtZiAk e0RFU1RESVJ9L3Vzci9iaW4vbGx2bS1jb25maWctaG9zdAotCWZpCi19CiAKIGxpYmxsdm0xMl9w YWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBydW50aW1lIGxpYnJhcnkiCi0JcGtnX2luc3Rh bGwoKSB7Ci0JCXZtb3ZlICJ1c3IvbGliL2xpYkxMVk0tKi5zbyoiCi0JfQogfQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9sbHZtMTIvdXBkYXRlIGIvc3JjcGtncy9sbHZtMTIvdXBkYXRlCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTVjZjI2YjM1ODYuLjAwMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL2xsdm0xMi91cGRhdGUKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXNpdGU9 Imh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcyIKLXBhdHRlcm49 Imxsdm1vcmctXEsoXGQrLil7Mn1cZCsoLXJjXGQrKT8iCi1pZ25vcmU9IiotcmMqIgoKRnJvbSAx YTA2ZDE5N2MxMTY4NTMwOWUzMjMxNzgyMDY4ZjQ5MmJmNjFjODYyIE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVl aXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogTW9uLCAyOCBGZWIgMjAyMiAyMTo0Mjo1NSArMDAwMApT dWJqZWN0OiBbUEFUQ0ggMTUvMzBdIG1lc2E6IHJlYnVpbGQgZm9yIGxsdm0xMwoKLS0tCiBzcmNw a2dzL21lc2EvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyks IDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL21lc2EvdGVtcGxhdGUgYi9zcmNw a2dzL21lc2EvdGVtcGxhdGUKaW5kZXggZWI4MWNiYjM0NWE1Li5kMDQ5OWJhOWZiY2EgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvbWVzYS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL21lc2EvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdtZXNhJwogcGtnbmFtZT1tZXNh CiB2ZXJzaW9uPTIxLjMuNQotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9bWVz b24KIGNvbmZpZ3VyZV9hcmdzPSItRGdsdm5kPXRydWUgLURzaGFyZWQtZ2xhcGk9ZW5hYmxlZCAt RGdibT1lbmFibGVkIC1EZWdsPWVuYWJsZWQKICAtRG9zbWVzYT10cnVlIC1EZ2xlczE9ZW5hYmxl ZCAtRGdsZXMyPWVuYWJsZWQgLURnbHg9ZHJpIC1EZHJpMz1lbmFibGVkCgpGcm9tIGI5MzEwMzk3 N2Y2MWRmOTFmY2FhMTczOGQ1ZTkyZWM0NjAxNTdhMzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFA Z21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjQzOjU2ICswMDAwClN1YmplY3Q6 IFtQQVRDSCAxNi8zMF0gcXRjcmVhdG9yOiB1cGRhdGUgdG8gNi4wLjIuCgotLS0KIHNyY3BrZ3Mv cXRjcmVhdG9yL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxhdGUg Yi9zcmNwa2dzL3F0Y3JlYXRvci90ZW1wbGF0ZQppbmRleCA5ODg0OTFlYzY0OTYuLmIxNjZjYzA1 YTk5OSAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdGNyZWF0b3IvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9xdGNyZWF0b3IvdGVtcGxhdGUKQEAgLTUsNyArNSw3IEBAIHJldmlzaW9uPTEKIHdya3NyYz0i cXQtY3JlYXRvci1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259IgogYnVpbGRfc3R5bGU9cW1ha2UK IG1ha2VfaW5zdGFsbF9hcmdzPSJJTlNUQUxMX1JPT1Q9XCR7REVTVERJUn0vdXNyIgotaG9zdG1h a2VkZXBlbmRzPSJjbGFuZyBsbHZtIHBlcmwgcGtnLWNvbmZpZyBweXRob24zIHdoaWNoIHF0NS1x bWFrZQoraG9zdG1ha2VkZXBlbmRzPSJsbHZtMTMgcGVybCBwa2ctY29uZmlnIHB5dGhvbjMgd2hp Y2ggcXQ1LXFtYWtlCiAgcXQ1LWhvc3QtdG9vbHMiCiBtYWtlZGVwZW5kcz0icXQ1LWRlY2xhcmF0 aXZlLWRldmVsIHF0NS1zY3JpcHQtZGV2ZWwgcXQ1LXRvb2xzLWRldmVsCiAgcXQ1LXF1aWNrY29u dHJvbHMgcXQ1LXN2Zy1kZXZlbCBjbGFuZyBsbHZtIgoKRnJvbSA5NDYxNWI1NDU5NGUyMGNkNWVk YTE2OGRmZmVhYmIxMGU5ZDg4ZTgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VU Ri04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4K RGF0ZTogTW9uLCAyOCBGZWIgMjAyMiAyMTo0Njo0OCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMTcv MzBdIGlzcGM6IHVwZGF0ZSB0byAxLjE3LjAuCgotLS0KIC4uLi9pc3BjL3BhdGNoZXMvY21ha2Ut YnVpbGQtdHlwZS1ub25lLnBhdGNoICB8ICAgMTggLQogc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2 bTEyLTAwMS5wYXRjaCAgICAgICAgIHwgICA1NyAtCiBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZt MTItMDAyLnBhdGNoICAgICAgICAgfCAgOTIzIC0tLS0tLS0tCiBzcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDAzLnBhdGNoICAgICAgICAgfCAxNTA0IC0tLS0tLS0tLS0tLQogc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwNC5wYXRjaCAgICAgICAgIHwgICAzNCAtCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA1LnBhdGNoICAgICAgICAgfCAgMzcyIC0tLQogc3JjcGtncy9p c3BjL3BhdGNoZXMvbGx2bTEyLTAwNi5wYXRjaCAgICAgICAgIHwgIDEyNiAtCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA3LnBhdGNoICAgICAgICAgfCAgMTYwIC0tCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA4LnBhdGNoICAgICAgICAgfCAgMTQ5IC0tCiBzcmNwa2dzL2lz cGMvcGF0Y2hlcy9sbHZtMTItMDA5LnBhdGNoICAgICAgICAgfCAyMTA5IC0tLS0tLS0tLS0tLS0t LS0tCiBzcmNwa2dzL2lzcGMvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA4 ICstCiAxMSBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDU0NTYgZGVsZXRpb25zKC0p CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvY21ha2UtYnVpbGQtdHlw ZS1ub25lLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2 bTEyLTAwMS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVzL2xs dm0xMi0wMDIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hlcy9s bHZtMTItMDAzLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNoZXMv bGx2bTEyLTAwNC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRjaGVz L2xsdm0xMi0wMDUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDA2LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9pc3BjL3BhdGNo ZXMvbGx2bTEyLTAwNy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2lzcGMvcGF0 Y2hlcy9sbHZtMTItMDA5LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMv Y21ha2UtYnVpbGQtdHlwZS1ub25lLnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvY21ha2Ut YnVpbGQtdHlwZS1ub25lLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTFl MzUzYzczMTQuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9jbWFrZS1i dWlsZC10eXBlLW5vbmUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1JbmRl eDogaXNwYy0xLjE1LjAvQ01ha2VMaXN0cy50eHQKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBpc3BjLTEuMTUu MC5vcmlnL0NNYWtlTGlzdHMudHh0Ci0rKysgaXNwYy0xLjE1LjAvQ01ha2VMaXN0cy50eHQKLUBA IC0xNTcsMTMgKzE1Nyw2IEBAIHNldChPVVRQVVRfUkVMRUFTRSBSZWxlYXNlL2JpbikKLSBzZXQo Q01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElS fS9iaW4gKQotIAotIGlmKENNQUtFX0JVSUxEX1RZUEUpCi0tICAgICMgVmFsaWRhdGUgYnVpbGQg dHlwZQotLSAgICBzZXQoQ09ORklHVVJBVElPTl9UWVBFUyAiRGVidWc7UmVsZWFzZTtSZWxXaXRo RGViSW5mbyIpCi0tCi0tICAgIHN0cmluZyhGSU5EICIke0NPTkZJR1VSQVRJT05fVFlQRVN9IiAi JHtDTUFLRV9CVUlMRF9UWVBFfSIgTUFUQ0hFRF9DT05GSUcpCi0tICAgIGlmICgke01BVENIRURf Q09ORklHfSBFUVVBTCAtMSkKLS0gICAgICAgICBtZXNzYWdlKEZBVEFMX0VSUk9SICJDTUFLRV9C VUlMRF9UWVBFICgke0NNQUtFX0JVSUxEX1RZUEV9KSBhbGxvd3Mgb25seSB0aGUgZm9sbG93aW5n IHZhbHVlczogJHtDT05GSUdVUkFUSU9OX1RZUEVTfSIpCi0tICAgIGVuZGlmKCkKLSBlbHNlKE5P VCBDTUFLRV9CVUlMRF9UWVBFKQotICAgICBzZXQoQ01BS0VfQlVJTERfVFlQRSAiUmVsZWFzZSIp Ci0gICAgIG1lc3NhZ2UoU1RBVFVTICJCdWlsZCB0eXBlIG5vdCBzcGVjaWZpZWQ6IFVzZSBSZWxl YXNlIGJ5IGRlZmF1bHQuIikKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0x Mi0wMDEucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjJkM2Y1YTQwOWUuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAxLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNTcgKzAsMCBAQAotRnJvbSAxYzBmODlkY2NiNzc0ZjIxNmM3ZjZlNzZhOTllZTkwN2ExZTY0 MWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRG1pdHJ5IEJhYm9raW4gPGRtaXRy eS55LmJhYm9raW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAyMiBEZWMgMjAyMCAxNzowMzo1OSAt MDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggdG8gd29yayB3aXRoIExMVk0gdHJ1bmsgYWZ0ZXIg bGx2bS9sbHZtLXByb2plY3RANDFjM2IyNzEzCi0KLS0tLQotIHNyYy9jdHguY3BwIHwgMTggKysr KysrKysrKysrLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDYgZGVs ZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRl eCA2ZmJiOGI5Y2YuLjk3N2U5ZDIyMiAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9z cmMvY3R4LmNwcAotQEAgLTE0NzMsMTEgKzE0NzMsMTUgQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250 ZXh0OjpBZGREZWJ1Z1BvcyhsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IFNvdXJjZVBvcyAqcG9z LAotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OmR5bl9jYXN0PGxsdm06Oklu c3RydWN0aW9uPih2YWx1ZSk7Ci0gICAgIGlmIChpbnN0ICE9IE5VTEwgJiYgbS0+ZGlCdWlsZGVy KSB7Ci0gICAgICAgICBTb3VyY2VQb3MgcCA9IHBvcyA/ICpwb3MgOiBjdXJyZW50UG9zOwotLSAg ICAgICAgaWYgKHAuZmlyc3RfbGluZSAhPSAwKQotKyAgICAgICAgaWYgKHAuZmlyc3RfbGluZSAh PSAwKSB7Ci0gICAgICAgICAgICAgLy8gSWYgZmlyc3RfbGluZSA9PSAwLCB0aGVuIHdlJ3JlIGlu IHRoZSBtaWRkbGUgb2Ygc2V0dGluZyB1cAotICAgICAgICAgICAgIC8vIHRoZSBzdGFuZGFyZCBs aWJyYXJ5IG9yIHRoZSBsaWtlOyBkb24ndCBhZGQgZGVidWcgcG9zaXRpb25zCi0gICAgICAgICAg ICAgLy8gZm9yIHRob3NlIGZ1bmN0aW9ucwotLSAgICAgICAgICAgIGluc3QtPnNldERlYnVnTG9j KGxsdm06OkRlYnVnTG9jOjpnZXQocC5maXJzdF9saW5lLCBwLmZpcnN0X2NvbHVtbiwgc2NvcGUg PyBzY29wZSA6IEdldERJU2NvcGUoKSkpOwotKyAgICAgICAgICAgIHNjb3BlID0gc2NvcGUgPyBz Y29wZSA6IEdldERJU2NvcGUoKTsKLSsgICAgICAgICAgICBsbHZtOjpEZWJ1Z0xvYyBkaUxvYyA9 Ci0rICAgICAgICAgICAgICAgIGxsdm06OkRJTG9jYXRpb246OmdldChzY29wZS0+Z2V0Q29udGV4 dCgpLCBwLmZpcnN0X2xpbmUsIHAuZmlyc3RfY29sdW1uLCBzY29wZSwgbnVsbHB0ciwgZmFsc2Up OwotKyAgICAgICAgICAgIGluc3QtPnNldERlYnVnTG9jKGRpTG9jKTsKLSsgICAgICAgIH0KLSAg ICAgfQotIH0KLSAKLUBAIC0xNTE4LDkgKzE1MjIsMTAgQEAgdm9pZCBGdW5jdGlvbkVtaXRDb250 ZXh0OjpFbWl0VmFyaWFibGVEZWJ1Z0luZm8oU3ltYm9sICpzeW0pIHsKLSAgICAgbGx2bTo6RElM b2NhbFZhcmlhYmxlICp2YXIgPSBtLT5kaUJ1aWxkZXItPmNyZWF0ZUF1dG9WYXJpYWJsZSgKLSAg ICAgICAgIHNjb3BlLCBzeW0tPm5hbWUsIHN5bS0+cG9zLkdldERJRmlsZSgpLCBzeW0tPnBvcy5m aXJzdF9saW5lLCBkaVR5cGUsIHRydWUgLyogcHJlc2VydmUgdGhyb3VnaCBvcHRzICovKTsKLSAK LSsgICAgbGx2bTo6RGVidWdMb2MgZGlMb2MgPQotKyAgICAgICAgbGx2bTo6RElMb2NhdGlvbjo6 Z2V0KHNjb3BlLT5nZXRDb250ZXh0KCksIHN5bS0+cG9zLmZpcnN0X2xpbmUsIHN5bS0+cG9zLmZp cnN0X2NvbHVtbiwgc2NvcGUsIG51bGxwdHIsIGZhbHNlKTsKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rp b24gKmRlY2xhcmVJbnN0ID0KLS0gICAgICAgIG0tPmRpQnVpbGRlci0+aW5zZXJ0RGVjbGFyZShz eW0tPnN0b3JhZ2VQdHIsIHZhciwgbS0+ZGlCdWlsZGVyLT5jcmVhdGVFeHByZXNzaW9uKCksCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RGVidWdMb2M6OmdldChz eW0tPnBvcy5maXJzdF9saW5lLCBzeW0tPnBvcy5maXJzdF9jb2x1bW4sIHNjb3BlKSwgYmJsb2Nr KTsKLSsgICAgICAgIG0tPmRpQnVpbGRlci0+aW5zZXJ0RGVjbGFyZShzeW0tPnN0b3JhZ2VQdHIs IHZhciwgbS0+ZGlCdWlsZGVyLT5jcmVhdGVFeHByZXNzaW9uKCksIGRpTG9jLCBiYmxvY2spOwot ICAgICBBZGREZWJ1Z1BvcyhkZWNsYXJlSW5zdCwgJnN5bS0+cG9zLCBzY29wZSk7Ci0gfQotIAot QEAgLTE1MzUsOSArMTU0MCwxMCBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkVtaXRGdW5j dGlvblBhcmFtZXRlckRlYnVnSW5mbyhTeW1ib2wgKnN5bSwgaW50IGFyZ051bQotICAgICAgICAg bS0+ZGlCdWlsZGVyLT5jcmVhdGVQYXJhbWV0ZXJWYXJpYWJsZShzY29wZSwgc3ltLT5uYW1lLCBh cmdOdW0gKyAxLCBzeW0tPnBvcy5HZXRESUZpbGUoKSwgc3ltLT5wb3MuZmlyc3RfbGluZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlUeXBlLCB0cnVl IC8qIHByZXNlcnZlIHRocm91Z2ggb3B0cyAqLywgZmxhZ3MpOwotIAotKyAgICBsbHZtOjpEZWJ1 Z0xvYyBkaUxvYyA9Ci0rICAgICAgICBsbHZtOjpESUxvY2F0aW9uOjpnZXQoc2NvcGUtPmdldENv bnRleHQoKSwgc3ltLT5wb3MuZmlyc3RfbGluZSwgc3ltLT5wb3MuZmlyc3RfY29sdW1uLCBzY29w ZSwgbnVsbHB0ciwgZmFsc2UpOwotICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqZGVjbGFyZUluc3Qg PQotLSAgICAgICAgbS0+ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwg dmFyLCBtLT5kaUJ1aWxkZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpEZWJ1Z0xvYzo6Z2V0KHN5bS0+cG9zLmZpcnN0X2xp bmUsIHN5bS0+cG9zLmZpcnN0X2NvbHVtbiwgc2NvcGUpLCBiYmxvY2spOwotKyAgICAgICAgbS0+ ZGlCdWlsZGVyLT5pbnNlcnREZWNsYXJlKHN5bS0+c3RvcmFnZVB0ciwgdmFyLCBtLT5kaUJ1aWxk ZXItPmNyZWF0ZUV4cHJlc3Npb24oKSwgZGlMb2MsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9z KGRlY2xhcmVJbnN0LCAmc3ltLT5wb3MsIHNjb3BlKTsKLSB9Ci0gCmRpZmYgLS1naXQgYS9zcmNw a2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDAyLnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMv bGx2bTEyLTAwMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDkwM2YzMGRh MTBkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMi5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkyMyArMCwwIEBACi1Gcm9tIDA1OTdhNzlkMDg0YzAx NDc4MDEzNmRhOTA2YWZlMjFkMTVlOTgyY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBEZWVwYWtSYWplbmRyYWt1bWFyYW4gPGRlZXBhay5yYWplbmRyYWt1bWFyYW5AaW50ZWwuY29t PgotRGF0ZTogVHVlLCA1IEphbiAyMDIxIDEzOjUzOjMwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hd IFJlbW92ZSBMTFZNIDguMCBhbmQgTExWTSA5LjAuICgjMTk2NikKLQotLS0tCi0gLmFwcHZleW9y LnltbCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgLS0KLSAudHJhdmlzLnltbCAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgNyAtLS0KLSBDTWFrZUxpc3RzLnR4dCAgICAgICAgICAgICAg ICAgICAgICAgfCAxMiArKy0tLS0KLSBzcmMvYXN0LmNwcCAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgNCAtLQotIHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAgICAgICAgICB8IDMwIC0t LS0tLS0tLS0tLS0KLSBzcmMvZ2VuL0dsb2JhbHNMb2NhbGl6YXRpb24uY3BwICAgICAgfCAgNCAt LQotIHNyYy9pc3BjLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICB8IDIwIC0tLS0tLS0tLQot IHNyYy9pc3BjLmggICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzICstCi0gc3JjL2lzcGNf dmVyc2lvbi5oICAgICAgICAgICAgICAgICAgIHwgIDQgKy0KLSBzcmMvbWFpbi5jcHAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAxMyAtLS0tLS0KLSBzcmMvbW9kdWxlLmNwcCAgICAgICAgICAg ICAgICAgICAgICAgfCAyNyAtLS0tLS0tLS0tLS0KLSBzcmMvbW9kdWxlLmggICAgICAgICAgICAg ICAgICAgICAgICAgfCAgMiAtCi0gc3JjL29wdC5jcHAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgNjQgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy90eXBlLmNwcCAgICAgICAg ICAgICAgICAgICAgICAgICB8IDEwICsrLS0tCi0gdGVzdHMvbGl0LXRlc3RzLzE3NzEuaXNwYyAg ICAgICAgICAgIHwgIDEgLQotIHRlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMgICAgICAgICAgICB8 ICAzIC0tCi0gdGVzdHMvbGl0LXRlc3RzLzE5MjYuaXNwYyAgICAgICAgICAgIHwgIDIgLQotIHRl c3RzL2xpdC10ZXN0cy9jcHVzX3g4Ni5pc3BjICAgICAgICB8ICAyICsKLSB0ZXN0cy9saXQtdGVz dHMvY3B1c194ODZfbGx2bTEwLmlzcGMgfCAxMSAtLS0tLQotIHRlc3RzL2xpdC10ZXN0cy9saXQu Y2ZnICAgICAgICAgICAgICB8ICA1IC0tLQotIDIwIGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlv bnMoKyksIDIxMyBkZWxldGlvbnMoLSkKLSBkZWxldGUgbW9kZSAxMDA2NDQgdGVzdHMvbGl0LXRl c3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjCi0KLWRpZmYgLS1naXQgYS8uYXBwdmV5b3IueW1sIGIv LmFwcHZleW9yLnltbAotaW5kZXggNDUxYTdiM2UwLi43OTQ1Y2NhMmEgMTAwNjQ0Ci0tLS0gYS8u YXBwdmV5b3IueW1sCi0rKysgYi8uYXBwdmV5b3IueW1sCi1AQCAtNDEsOCArNDEsNiBAQCBlbnZp cm9ubWVudDoKLSAgICAgICBMTFZNX1ZFUlNJT046IGxhdGVzdAotICAgICAtIEFQUFZFWU9SX0JV SUxEX1dPUktFUl9JTUFHRTogVmlzdWFsIFN0dWRpbyAyMDE5Ci0gICAgICAgTExWTV9WRVJTSU9O OiAxMC4wCi0tICAgIC0gQVBQVkVZT1JfQlVJTERfV09SS0VSX0lNQUdFOiBWaXN1YWwgU3R1ZGlv IDIwMTkKLS0gICAgICBMTFZNX1ZFUlNJT046IDkuMAotIAotIGZvcjoKLSAtCi1AQCAtNjIsNyAr NjAsNiBAQCBmb3I6Ci0gICAgICAgICBpZiAiJUFQUFZFWU9SX0JVSUxEX1dPUktFUl9JTUFHRSUi PT0iVmlzdWFsIFN0dWRpbyAyMDE5IiAoIChzZXQgZ2VuZXJhdG9yPSJWaXN1YWwgU3R1ZGlvIDE2 IikgJiAoc2V0IHZzdmVyc2lvbj0yMDE5KSkKLSAgICAgICAgIHNldCBMTFZNX1RBUj1sbHZtLTEx LjAuMC13aW4udnMyMDE5LVJlbGVhc2UrQXNzZXJ0cy14ODYuYXJtLndhc20uN3oKLSAgICAgICAg IGlmICIlTExWTV9WRVJTSU9OJSI9PSIxMC4wIiAoc2V0IExMVk1fVEFSPWxsdm0tMTAuMC4xLXdp bi52czIwMTktUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS56aXApCi0tICAgICAgICBpZiAi JUxMVk1fVkVSU0lPTiUiPT0iOS4wIiAoc2V0IExMVk1fVEFSPWxsdm0tOS4wLjEtd2luLnZzMjAx Ny1SZWxlYXNlK0Fzc2VydHMteDg2LmFybS53YXNtLnppcCkKLSAgIGluc3RhbGw6Ci0gICAgIC0g cHM6IGNob2NvIGluc3RhbGwgLS1uby1wcm9ncmVzcyB3aW5mbGV4Ymlzb24zIHdnZXQgN3ppcAot ICAgICAtIGNtZDogfC0KLWRpZmYgLS1naXQgYS8udHJhdmlzLnltbCBiLy50cmF2aXMueW1sCi1p bmRleCAyZTk2MDE3YTYuLjNhNmI4NTI2NCAxMDA2NDQKLS0tLSBhLy50cmF2aXMueW1sCi0rKysg Yi8udHJhdmlzLnltbAotQEAgLTEwOCwxMyArMTA4LDYgQEAgam9iczoKLSAgICAgICAgIC0gTExW TV9UQVI9bGx2bS0xMC4wLjEtdWJ1bnR1MTYuMDQtUmVsZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2Fz bS50YXIueHoKLSAgICAgICAgIC0gTExWTV9SRVBPPWh0dHBzOi8vZ2l0aHViLmNvbS9kYmFib2tp bi9sbHZtLXByb2plY3QKLSAgICAgICAgIC0gSVNQQ19IT01FPSRUUkFWSVNfQlVJTERfRElSCi0t ICAgICMgTExWTSA5LjAgKyBVYnVudHUgMTYuMDQ6IGJ1aWxkLCBsaXQgdGVzdHMsIGV4YW1wbGVz IChidWlsZCArIHJ1biksIGJlbmNobWFya3MgKGJ1aWxkICsgdHJpYWwgcnVuKQotLSAgICAtIDw8 OiAqbXlfdGFnCi0tICAgICAgZW52OgotLSAgICAgICAgLSBMTFZNX1ZFUlNJT049OS4wIE9TPVVi dW50dTE2LjA0Ci0tICAgICAgICAtIExMVk1fVEFSPWxsdm0tOS4wLjEtdWJ1bnR1MTYuMDQtUmVs ZWFzZStBc3NlcnRzLXg4Ni5hcm0ud2FzbS50YXIueHoKLS0gICAgICAgIC0gTExWTV9SRVBPPWh0 dHBzOi8vZ2l0aHViLmNvbS9kYmFib2tpbi9sbHZtLXByb2plY3QKLS0gICAgICAgIC0gSVNQQ19I T01FPSRUUkFWSVNfQlVJTERfRElSCi0gICAgICMgV0FTTSBlbmFibGVkIGJ1aWxkCi0gICAgICMg TExWTSAxMS4wICsgVWJ1bnR1IDE2LjA0OiBidWlsZCwgbGl0IHRlc3RzLCBleGFtcGxlcyAoYnVp bGQpLCBiZW5jaG1hcmtzIChidWlsZCArIHRyaWFsIHJ1bikKLSAgICAgLSA8PDogKm15X3RhZwot ZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDVmYTg2 M2ZjZi4uYTZiM2VkMjUxIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtl TGlzdHMudHh0Ci1AQCAtMjQxLDEwICsyNDEsOCBAQCBpZiAoWDg2X0VOQUJMRUQpCi0gICAgICAg ICBhdngyLWk4eDMyIGF2eDItaTE2eDE2Ci0gICAgICAgICBhdngyLWkzMng0IGF2eDItaTMyeDgg YXZ4Mi1pMzJ4MTYgYXZ4Mi1pNjR4NAotICAgICAgICAgYXZ4NTEya25sLWkzMngxNgotLSAgICAg ICAgYXZ4NTEyc2t4LWkzMngxNiBhdng1MTJza3gtaTMyeDgpCi0tICAgIGlmICgke0xMVk1fVkVS U0lPTl9OVU1CRVJ9IFZFUlNJT05fR1JFQVRFUl9FUVVBTCAiMTAuMC4wIikKLS0gICAgICAgIGxp c3QoQVBQRU5EIElTUENfVEFSR0VUUyBhdng1MTJza3gtaTh4NjQgYXZ4NTEyc2t4LWkxNngzMikK LS0gICAgZW5kaWYoKQotKyAgICAgICAgYXZ4NTEyc2t4LWkzMngxNiBhdng1MTJza3gtaTMyeDgK LSsgICAgICAgIGF2eDUxMnNreC1pOHg2NCBhdng1MTJza3gtaTE2eDMyKQotIGVuZGlmKCkKLSBp ZiAoQVJNX0VOQUJMRUQpCi0gICAgIGxpc3QoQVBQRU5EIElTUENfVEFSR0VUUyBuZW9uLWk4eDE2 IG5lb24taTE2eDggbmVvbi1pMzJ4NCBuZW9uLWkzMng4KQotQEAgLTI1OSwxMSArMjU3LDcgQEAg aWYgKFdBU01fRU5BQkxFRCkKLSBlbmRpZigpCi0gCi0gc2V0KENMQU5HX0xJQlJBUllfTElTVCBj bGFuZ0Zyb250ZW5kIGNsYW5nRHJpdmVyIGNsYW5nU2VyaWFsaXphdGlvbiBjbGFuZ1BhcnNlIGNs YW5nU2VtYSBjbGFuZ0FuYWx5c2lzIGNsYW5nQVNUIGNsYW5nQmFzaWMgY2xhbmdFZGl0IGNsYW5n TGV4KQotLXNldChMTFZNX0NPTVBPTkVOVFMgZW5naW5lIGlwbyBiaXRyZWFkZXIgYml0d3JpdGVy IGluc3RydW1lbnRhdGlvbiBsaW5rZXIgb3B0aW9uKQotLQotLWlmICgke0xMVk1fVkVSU0lPTl9O VU1CRVJ9IFZFUlNJT05fR1JFQVRFUl9FUVVBTCAiMTAuMC4wIikKLS0gICAgbGlzdChBUFBFTkQg TExWTV9DT01QT05FTlRTIGZyb250ZW5kb3Blbm1wKQotLWVuZGlmKCkKLStzZXQoTExWTV9DT01Q T05FTlRTIGVuZ2luZSBpcG8gYml0cmVhZGVyIGJpdHdyaXRlciBpbnN0cnVtZW50YXRpb24gbGlu a2VyIG9wdGlvbiBmcm9udGVuZG9wZW5tcCkKLSAKLSBpZiAoWDg2X0VOQUJMRUQpCi0gICAgIGxp c3QoQVBQRU5EIExMVk1fQ09NUE9ORU5UUyB4ODYpCi1kaWZmIC0tZ2l0IGEvc3JjL2FzdC5jcHAg Yi9zcmMvYXN0LmNwcAotaW5kZXggMjBmNzVhMjljLi41YTQzYzQ4NTQgMTAwNjQ0Ci0tLS0gYS9z cmMvYXN0LmNwcAotKysrIGIvc3JjL2FzdC5jcHAKLUBAIC00NCw5ICs0NCw3IEBACi0gI2luY2x1 ZGUgInN5bS5oIgotICNpbmNsdWRlICJ1dGlsLmgiCi0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9O ID49IElTUENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UaW1lUHJvZmlsZXIu aD4KLS0jZW5kaWYKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAvLyBBU1ROb2RlCi0gCi1AQCAtNjIs OSArNjAsNyBAQCB2b2lkIEFTVDo6QWRkRnVuY3Rpb24oU3ltYm9sICpzeW0sIFN0bXQgKmNvZGUp IHsKLSB9Ci0gCi0gdm9pZCBBU1Q6OkdlbmVyYXRlSVIoKSB7Ci0tI2lmIElTUENfTExWTV9WRVJT SU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29w ZSgiR2VuZXJhdGVJUiIpOwotLSNlbmRpZgotICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg aSA8IGZ1bmN0aW9ucy5zaXplKCk7ICsraSkKLSAgICAgICAgIGZ1bmN0aW9uc1tpXS0+R2VuZXJh dGVJUigpOwotIH0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRl eCA5NzdlOWQyMjIuLjQyYzRlYTA5ZCAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9z cmMvY3R4LmNwcAotQEAgLTMwOSwyMSArMzA5LDEzIEBAIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkZ1 bmN0aW9uRW1pdENvbnRleHQoRnVuY3Rpb24gKmZ1bmMsIFN5bWJvbCAqZnVuU3ltLCBsbHZtOjpG Ci0gICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICBzbnByaW50ZihidWYs IHNpemVvZihidWYpLCAiX19vZmZfYWxsX29uX21hc2tfJXMiLCBnLT50YXJnZXQtPkdldElTQVN0 cmluZygpKTsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzhfMAotLSAg ICAgICAgICAgIGxsdm06OkNvbnN0YW50ICpvZmZGdW5jID0gbS0+bW9kdWxlLT5nZXRPckluc2Vy dEZ1bmN0aW9uKGJ1ZiwgTExWTVR5cGVzOjpWb2lkVHlwZSk7Ci0tI2Vsc2UgLy8gTExWTSA5LjAr Ci0gICAgICAgICAgICAgbGx2bTo6RnVuY3Rpb25DYWxsZWUgb2ZmRnVuY0NhbGxlZSA9IG0tPm1v ZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlvbihidWYsIExMVk1UeXBlczo6Vm9pZFR5cGUpOwotICAg ICAgICAgICAgIGxsdm06OkNvbnN0YW50ICpvZmZGdW5jID0gbGx2bTo6Y2FzdDxsbHZtOjpDb25z dGFudD4ob2ZmRnVuY0NhbGxlZS5nZXRDYWxsZWUoKSk7Ci0tI2VuZGlmCi0gICAgICAgICAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZtOjpGdW5jdGlvbj4ob2ZmRnVuYykp OwotICAgICAgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKm9mZkJCID0gbGx2bTo6QmFzaWNCbG9j azo6Q3JlYXRlKCpnLT5jdHgsICJlbnRyeSIsIChsbHZtOjpGdW5jdGlvbiAqKW9mZkZ1bmMsIDAp OwotICAgICAgICAgICAgIGxsdm06OlN0b3JlSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpTdG9yZUlu c3QoTExWTU1hc2tBbGxPZmYsIGdsb2JhbEFsbE9uTWFza1B0ciwgb2ZmQkIpOwotICAgICAgICAg ICAgIGlmIChnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5KSB7Ci0tI2lmIElTUENfTExWTV9WRVJT SU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50 KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkpOwotLSNlbHNlIC8vIExMVk0g MTAuMCsKLSAgICAgICAgICAgICAgICAgaW5zdC0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxp Z24oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSkudmFsdWVPck9uZSgpKTsK LS0jZW5kaWYKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgbGx2bTo6UmV0dXJuSW5zdDo6 Q3JlYXRlKCpnLT5jdHgsIG9mZkJCKTsKLSAgICAgICAgIH0KLUBAIC0yMjg4LDExICsyMjgwLDcg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJbnN0KGxsdm06OlZhbHVl ICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGMKLSAjZW5kaWYKLSAKLSAgICAgaWYgKGctPm9wdC5m b3JjZUFsaWduZWRNZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocHQt PmdldEVsZW1lbnRUeXBlKCkpKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExW TV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChnLT50YXJnZXQtPmdldE5hdGl2ZVZl Y3RvckFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgICAgICBpbnN0LT5z ZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFs aWdubWVudCgpKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICB9Ci0gCi0gICAgIEFkZERl YnVnUG9zKGluc3QpOwotQEAgLTI0MzEsMTEgKzI0MTksNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1h c2ssCi0gICAgICAgICAgICAgICAgIC8vIHZzIHRoZSBwcm9wZXIgYWxpZ25tZW50IGluIHByYWN0 aWNlLikKLSAgICAgICAgICAgICAgICAgaW50IGFsaWduID0gMTsKLSAKLS0jaWYgSVNQQ19MTFZN X1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAgICAgICAgICAgICBpbnN0LT5zZXRBbGln bm1lbnQoYWxpZ24pOwotLSNlbHNlIC8vIExMVk0gMTAuMCsKLSAgICAgICAgICAgICAgICAgaW5z dC0+c2V0QWxpZ25tZW50KGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSk7Ci0t I2VuZGlmCi0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIEFkZERlYnVnUG9zKGluc3Qp OwotQEAgLTI2NDksMTEgKzI2MzMsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6QWxsb2NhSW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgY2hhciAqbgotICAgICAg ICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpOwotIAotICAg ICBpZiAoYWxpZ24gIT0gMCkgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1f OV8wCi0tICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQoYWxpZ24pOwotLSNlbHNlIC8vIExMVk0g MTAuMCsKLSAgICAgICAgIGluc3QtPnNldEFsaWdubWVudChsbHZtOjpNYXliZUFsaWduKGFsaWdu KS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgotICAgICB9Ci0gICAgIC8vIERvbid0IGFkZCBkZWJ1 Z2dpbmcgaW5mbyB0byBhbGxvY2EgaW5zdHJ1Y3Rpb25zCi0gICAgIHJldHVybiBpbnN0OwotQEAg LTI5MjYsMTEgKzI5MDYsNyBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OlN0b3JlSW5zdChs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIsIGNvbnN0Ci0gICAgIGxsdm06OlN0 b3JlSW5zdCAqaW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QodmFsdWUsIHB0ciwgYmJsb2NrKTsK LSAKLSAgICAgaWYgKGctPm9wdC5mb3JjZUFsaWduZWRNZW1vcnkgJiYgbGx2bTo6ZHluX2Nhc3Q8 bGx2bTo6VmVjdG9yVHlwZT4ocHQtPmdldEVsZW1lbnRUeXBlKCkpKSB7Ci0tI2lmIElTUENfTExW TV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgIGluc3QtPnNldEFsaWdubWVudChn LT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKTsKLS0jZWxzZSAvLyBMTFZNIDEw LjArCi0gICAgICAgICBpbnN0LT5zZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihnLT50YXJn ZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVudCgpKS52YWx1ZU9yT25lKCkpOwotLSNlbmRpZgot ICAgICB9Ci0gCi0gI2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi1AQCAtMzAyNSwxNiArMzAwMSwx MCBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6Ok1lbWNweUluc3QobGx2bTo6VmFsdWUgKmRl c3QsIGxsdm06OlZhbHVlICpzcmMsIGxsdm06OgotICAgICB9Ci0gICAgIGlmIChhbGlnbiA9PSBO VUxMKQotICAgICAgICAgYWxpZ24gPSBMTFZNSW50MzIoMSk7Ci0tI2lmIElTUENfTExWTV9WRVJT SU9OIDw9IElTUENfTExWTV84XzAKLS0gICAgbGx2bTo6Q29uc3RhbnQgKm1jRnVuYyA9Ci0tICAg ICAgICBtLT5tb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oImxsdm0ubWVtY3B5LnAwaTgucDBp OC5pNjQiLCBMTFZNVHlwZXM6OlZvaWRUeXBlLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwK LS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNVHlwZXM6OlZvaWRQ b2ludGVyVHlwZSwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIExMVk1UeXBlczo6Qm9vbFR5cGUpOwot LSNlbHNlIC8vIExMVk0gOS4wKwotICAgICBsbHZtOjpGdW5jdGlvbkNhbGxlZSBtY0Z1bmNDYWxs ZWUgPQotICAgICAgICAgbS0+bW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9uKCJsbHZtLm1lbWNw eS5wMGk4LnAwaTguaTY0IiwgTExWTVR5cGVzOjpWb2lkVHlwZSwgTExWTVR5cGVzOjpWb2lkUG9p bnRlclR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExWTVR5 cGVzOjpWb2lkUG9pbnRlclR5cGUsIExMVk1UeXBlczo6SW50NjRUeXBlLCBMTFZNVHlwZXM6OkJv b2xUeXBlKTsKLSAgICAgbGx2bTo6Q29uc3RhbnQgKm1jRnVuYyA9IGxsdm06OmNhc3Q8bGx2bTo6 Q29uc3RhbnQ+KG1jRnVuY0NhbGxlZS5nZXRDYWxsZWUoKSk7Ci0tI2VuZGlmCi0gICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtY0Z1bmMgIT0gTlVMTCk7Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50 UG9zLCBsbHZtOjppc2E8bGx2bTo6RnVuY3Rpb24+KG1jRnVuYykpOwotIAotZGlmZiAtLWdpdCBh L3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgYi9zcmMvZ2VuL0dsb2JhbHNMb2NhbGl6 YXRpb24uY3BwCi1pbmRleCAxOTNhNjYyODkuLmExNzZlOTQ2MiAxMDA2NDQKLS0tLSBhL3NyYy9n ZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLSsrKyBiL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXph dGlvbi5jcHAKLUBAIC00NzAsMTEgKzQ3MCw3IEBAIHZvaWQgR2xvYmFsc0xvY2FsaXphdGlvbjo6 TG9jYWxpemVHbG9iYWxzKExvY2FsaXphdGlvbkluZm8gJkxJKSB7Ci0gICAgICAgICBJbnN0cnVj dGlvbiAmRmlyc3RJID0gKkZuLT5nZXRFbnRyeUJsb2NrKCkuYmVnaW4oKTsKLSAgICAgICAgIFR5 cGUgKkVsZW1UeSA9IEdWLT5nZXRUeXBlKCktPmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgICAgICBB bGxvY2FJbnN0ICpBbGxvY2EgPSBuZXcgQWxsb2NhSW5zdChFbGVtVHksIDAsIEdWLT5nZXROYW1l KCkgKyAiLmxvY2FsIiwgJkZpcnN0SSk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENf TExWTV85XzAKLS0gICAgICAgIEFsbG9jYS0+c2V0QWxpZ25tZW50KEdWLT5nZXRBbGlnbm1lbnQo KSk7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAgICAgICAgQWxsb2NhLT5zZXRBbGlnbm1lbnQo bGx2bTo6TWF5YmVBbGlnbihHVi0+Z2V0QWxpZ25tZW50KCkpKTsKLS0jZW5kaWYKLSAgICAgICAg IGlmICghaXNhPFVuZGVmVmFsdWU+KEdWLT5nZXRJbml0aWFsaXplcigpKSkKLSAgICAgICAgICAg ICBuZXcgU3RvcmVJbnN0KEdWLT5nZXRJbml0aWFsaXplcigpLCBBbGxvY2EsICZGaXJzdEkpOwot IAotZGlmZiAtLWdpdCBhL3NyYy9pc3BjLmNwcCBiL3NyYy9pc3BjLmNwcAotaW5kZXggZTJkMGYy MDZlLi5mYWM1MjMzZjcgMTAwNjQ0Ci0tLS0gYS9zcmMvaXNwYy5jcHAKLSsrKyBiL3NyYy9pc3Bj LmNwcAotQEAgLTI3Miw5ICsyNzIsNyBAQCB0eXBlZGVmIGVudW0gewotICAgICBDUFVfU2lsdmVy bW9udCwKLSAKLSAgICAgQ1BVX0lDWCwKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzEwXzAKLSAgICAgQ1BVX1RHTCwKLS0jZW5kaWYKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzEyXzAKLSAgICAgQ1BVX0FETCwKLSAgICAgQ1BVX1NQUiwKLUBAIC0zNjUs MTAgKzM2Myw4IEBAIGNsYXNzIEFsbENQVXMgewotIAotICAgICAgICAgbmFtZXNbQ1BVX0lDWF0u cHVzaF9iYWNrKCJpY2VsYWtlLXNlcnZlciIpOwotICAgICAgICAgbmFtZXNbQ1BVX0lDWF0ucHVz aF9iYWNrKCJpY3giKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgICAgIG5hbWVzW0NQVV9UR0xdLnB1c2hfYmFjaygidGlnZXJsYWtlIik7Ci0gICAgICAg ICBuYW1lc1tDUFVfVEdMXS5wdXNoX2JhY2soInRnbCIpOwotLSNlbmRpZgotICNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTJfMAotICAgICAgICAgbmFtZXNbQ1BVX0FETF0ucHVz aF9iYWNrKCJhbGRlcmxha2UiKTsKLSAgICAgICAgIG5hbWVzW0NQVV9BRExdLnB1c2hfYmFjaygi YWRsIik7Ci1AQCAtNDExLDExICs0MDcsOSBAQCBjbGFzcyBBbGxDUFVzIHsKLSAgICAgICAgIGNv bXBhdFtDUFVfQURMXSA9IFNldChDUFVfQURMLCBDUFVfeDg2XzY0LCBDUFVfQm9ubmVsbCwgQ1BV X1BlbnJ5biwgQ1BVX0NvcmUyLCBDUFVfTmVoYWxlbSwgQ1BVX1NpbHZlcm1vbnQsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgQ1BVX1NhbmR5QnJpZGdlLCBDUFVfSXZ5QnJpZGdlLCBD UFVfSGFzd2VsbCwgQ1BVX0Jyb2Fkd2VsbCwgQ1BVX05vbmUpOwotICNlbmRpZgotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICAgICAgY29tcGF0W0NQVV9UR0xd ID0KLSAgICAgICAgICAgICBTZXQoQ1BVX1RHTCwgQ1BVX3g4Nl82NCwgQ1BVX0Jvbm5lbGwsIENQ VV9QZW5yeW4sIENQVV9Db3JlMiwgQ1BVX05laGFsZW0sIENQVV9TaWx2ZXJtb250LCBDUFVfU2Fu ZHlCcmlkZ2UsCi0gICAgICAgICAgICAgICAgIENQVV9JdnlCcmlkZ2UsIENQVV9IYXN3ZWxsLCBD UFVfQnJvYWR3ZWxsLCBDUFVfU0tYLCBDUFVfSUNMLCBDUFVfSUNYLCBDUFVfTm9uZSk7Ci0tI2Vu ZGlmCi0gICAgICAgICBjb21wYXRbQ1BVX0lDWF0gPSBTZXQoQ1BVX0lDWCwgQ1BVX3g4Nl82NCwg Q1BVX0Jvbm5lbGwsIENQVV9QZW5yeW4sIENQVV9Db3JlMiwgQ1BVX05laGFsZW0sIENQVV9TaWx2 ZXJtb250LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENQVV9TYW5keUJyaWRnZSwg Q1BVX0l2eUJyaWRnZSwgQ1BVX0hhc3dlbGwsIENQVV9Ccm9hZHdlbGwsIENQVV9TS1gsIENQVV9J Q0wsIENQVV9Ob25lKTsKLSAKLUBAIC01NTYsOSArNTUwLDcgQEAgVGFyZ2V0OjpUYXJnZXQoQXJj aCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIElTUENUYXJnZXQgaXNwY190YXJnZXQsIGJvb2wgcGlj LCBib28KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEyXzAKLSAgICAgICAg IGNhc2UgQ1BVX1NQUjoKLSAjZW5kaWYKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzEwXzAKLSAgICAgICAgIGNhc2UgQ1BVX1RHTDoKLS0jZW5kaWYKLSAgICAgICAgIGNhc2Ug Q1BVX0lDWDoKLSAgICAgICAgIGNhc2UgQ1BVX0lDTDoKLSAgICAgICAgIGNhc2UgQ1BVX1NLWDoK LUBAIC05MTYsNyArOTA4LDYgQEAgVGFyZ2V0OjpUYXJnZXQoQXJjaCBhcmNoLCBjb25zdCBjaGFy ICpjcHUsIElTUENUYXJnZXQgaXNwY190YXJnZXQsIGJvb2wgcGljLCBib28KLSAgICAgICAgIH0K LSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIElTUENUYXJnZXQ6OmF2eDUxMnNreF9pOHg2NDoK LS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAgLy8gTExWTSAxMC4wKwot ICAgICAgICAgLy8gVGhpcyB0YXJnZXQgaXMgZW5hYmxlZCBvbmx5IGZvciBMTFZNIDEwLjAgYW5k IGxhdGVyCi0gICAgICAgICAvLyBiZWNhdXNlIExMVk0gcmVxdWlyZXMgYSBudW1iZXIgb2YgZml4 ZXMsIHdoaWNoIGFyZQotICAgICAgICAgLy8gY29tbWl0dGVkIHRvIExMVk0gMTEuMCBhbmQgY2Fu IGJlIGFwcGxpZWQgdG8gMTAuMCwgYnV0IG5vdAotQEAgLTkzNywxMiArOTI4LDcgQEAgVGFyZ2V0 OjpUYXJnZXQoQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIElTUENUYXJnZXQgaXNwY190YXJn ZXQsIGJvb2wgcGljLCBib28KLSAgICAgICAgIHRoaXMtPm1faGFzVmVjUHJlZmV0Y2ggPSBmYWxz ZTsKLSAgICAgICAgIENQVWZyb21JU0EgPSBDUFVfU0tYOwotICAgICAgICAgYnJlYWs7Ci0tI2Vs c2UKLS0gICAgICAgIHVuc3VwcG9ydGVkX3RhcmdldCA9IHRydWU7Ci0tICAgICAgICBicmVhazsK LS0jZW5kaWYKLSAgICAgY2FzZSBJU1BDVGFyZ2V0Ojphdng1MTJza3hfaTE2eDMyOgotLSNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMCAvLyBMTFZNIDEwLjArCi0gICAgICAg ICAvLyBUaGlzIHRhcmdldCBpcyBlbmFibGVkIG9ubHkgZm9yIExMVk0gMTAuMCBhbmQgbGF0ZXIK LSAgICAgICAgIC8vIGJlY2F1c2UgTExWTSByZXF1aXJlcyBhIG51bWJlciBvZiBmaXhlcywgd2hp Y2ggYXJlCi0gICAgICAgICAvLyBjb21taXR0ZWQgdG8gTExWTSAxMS4wIGFuZCBjYW4gYmUgYXBw bGllZCB0byAxMC4wLCBidXQgbm90Ci1AQCAtOTYzLDEwICs5NDksNiBAQCBUYXJnZXQ6OlRhcmdl dChBcmNoIGFyY2gsIGNvbnN0IGNoYXIgKmNwdSwgSVNQQ1RhcmdldCBpc3BjX3RhcmdldCwgYm9v bCBwaWMsIGJvbwotICAgICAgICAgdGhpcy0+bV9oYXNWZWNQcmVmZXRjaCA9IGZhbHNlOwotICAg ICAgICAgQ1BVZnJvbUlTQSA9IENQVV9TS1g7Ci0gICAgICAgICBicmVhazsKLS0jZWxzZQotLSAg ICAgICAgdW5zdXBwb3J0ZWRfdGFyZ2V0ID0gdHJ1ZTsKLS0gICAgICAgIGJyZWFrOwotLSNlbmRp ZgotICNpZmRlZiBJU1BDX0FSTV9FTkFCTEVECi0gICAgIGNhc2UgSVNQQ1RhcmdldDo6bmVvbl9p OHgxNjoKLSAgICAgICAgIHRoaXMtPm1faXNhID0gVGFyZ2V0OjpORU9OOwotQEAgLTE2NjIsMTEg KzE2NDQsOSBAQCBHbG9iYWxzOjpHbG9iYWxzKCkgewotICAgICBpc011bHRpVGFyZ2V0Q29tcGls YXRpb24gPSBmYWxzZTsKLSAgICAgZXJyb3JMaW1pdCA9IC0xOwotIAotLSNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBlbmFibGVUaW1lVHJhY2UgPSBmYWxzZTsK LSAgICAgLy8gc2V0IGRlZmF1bHQgZ3JhbnVsYXJpdHkgdG8gNTAwLgotICAgICB0aW1lVHJhY2VH cmFudWxhcml0eSA9IDUwMDsKLS0jZW5kaWYKLSAgICAgdGFyZ2V0ID0gTlVMTDsKLSAgICAgY3R4 ID0gbmV3IGxsdm06OkxMVk1Db250ZXh0OwotIAotZGlmZiAtLWdpdCBhL3NyYy9pc3BjLmggYi9z cmMvaXNwYy5oCi1pbmRleCBlMjVkODgzMGUuLmRlMzU3YTIxYyAxMDA2NDQKLS0tLSBhL3NyYy9p c3BjLmgKLSsrKyBiL3NyYy9pc3BjLmgKLUBAIC02OTUsMTMgKzY5NSwxMiBAQCBzdHJ1Y3QgR2xv YmFscyB7Ci0gCi0gICAgIC8qIE51bWJlciBvZiBlcnJvcnMgdG8gc2hvdyBpbiBJU1BDLiAqLwot ICAgICBpbnQgZXJyb3JMaW1pdDsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZN XzEwXzAKLSsKLSAgICAgLyogV2hlbiB0cnVlLCBlbmFibGUgY29tcGlsZSB0aW1lIHRyYWNpbmcu ICovCi0gICAgIGJvb2wgZW5hYmxlVGltZVRyYWNlOwotIAotICAgICAvKiBXaGVuIGNvbXBpbGUg dGltZSB0cmFjaW5nIGlzIGVuYWJsZWQsIHNldCB0aW1lIGdyYW51bGFyaXR5LiAqLwotICAgICBp bnQgdGltZVRyYWNlR3JhbnVsYXJpdHk7Ci0tI2VuZGlmCi0gfTsKLSAKLSBlbnVtIHsKLWRpZmYg LS1naXQgYS9zcmMvaXNwY192ZXJzaW9uLmggYi9zcmMvaXNwY192ZXJzaW9uLmgKLWluZGV4IGQ3 ODEzNDdmZC4uNDM0YjJkNjc4IDEwMDY0NAotLS0tIGEvc3JjL2lzcGNfdmVyc2lvbi5oCi0rKysg Yi9zcmMvaXNwY192ZXJzaW9uLmgKLUBAIC00NCwxMyArNDQsMTEgQEAKLSAKLSAjZGVmaW5lIElT UENfTExWTV9WRVJTSU9OIChMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMDAwMCArIExMVk1fVkVSU0lP Tl9NSU5PUiAqIDEwMCkKLSAKLS0jZGVmaW5lIElTUENfTExWTV84XzAgODAwMDAKLS0jZGVmaW5l IElTUENfTExWTV85XzAgOTAwMDAKLSAjZGVmaW5lIElTUENfTExWTV8xMF8wIDEwMDAwMAotICNk ZWZpbmUgSVNQQ19MTFZNXzExXzAgMTEwMDAwCi0gI2RlZmluZSBJU1BDX0xMVk1fMTJfMCAxMjAw MDAKLSAKLS0jZGVmaW5lIE9MREVTVF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fOF8wCi0rI2Rl ZmluZSBPTERFU1RfU1VQUE9SVEVEX0xMVk0gSVNQQ19MTFZNXzEwXzAKLSAjZGVmaW5lIExBVEVT VF9TVVBQT1JURURfTExWTSBJU1BDX0xMVk1fMTJfMAotIAotICNpZmRlZiBfX2lzcGNfX3hzdHIK LWRpZmYgLS1naXQgYS9zcmMvbWFpbi5jcHAgYi9zcmMvbWFpbi5jcHAKLWluZGV4IDhmNjQzMzBj Yy4uNWM5MjBlYWJjIDEwMDY0NAotLS0tIGEvc3JjL21haW4uY3BwCi0rKysgYi9zcmMvbWFpbi5j cHAKLUBAIC01NSw5ICs1NSw3IEBACi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9TaWduYWxzLmg+ Ci0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9UYXJnZXRSZWdpc3RyeS5oPgotICNpbmNsdWRlIDxs bHZtL1N1cHBvcnQvVGFyZ2V0U2VsZWN0Lmg+Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMF8wCi0gI2luY2x1ZGUgPGxsdm0vU3VwcG9ydC9Ub29sT3V0cHV0RmlsZS5oPgot LSNlbmRpZgotIAotICNpZmRlZiBJU1BDX0hPU1RfSVNfV0lORE9XUwotICNkZWZpbmUgc3RyY2Fz ZWNtcCBzdHJpY21wCi1AQCAtMTgxLDExICsxNzksOSBAQCBzdGF0aWMgdm9pZCBsUHJpbnRWZXJz aW9uKCkgewotICAgICBzbnByaW50Zih0YXJnZXRIZWxwLCBzaXplb2YodGFyZ2V0SGVscCksICJb LS10YXJnZXQtb3M9PG9zPl1cdFx0XHRTZWxlY3QgdGFyZ2V0IE9TLiAgPG9zPj17JXN9IiwKLSAg ICAgICAgICAgICAgZy0+dGFyZ2V0X3JlZ2lzdHJ5LT5nZXRTdXBwb3J0ZWRPU2VzKCkuY19zdHIo KSk7Ci0gICAgIFByaW50V2l0aFdvcmRCcmVha3ModGFyZ2V0SGVscCwgMjQsIFRlcm1pbmFsV2lk dGgoKSwgc3Rkb3V0KTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAK LSAgICAgcHJpbnRmKCIgICAgWy0tdGltZS10cmFjZV1cdFx0XHRUdXJuIG9uIHRpbWUgcHJvZmls ZXIuIEdlbmVyYXRlcyBKU09OIGZpbGUgYmFzZWQgb24gb3V0cHV0IGZpbGVuYW1lLlxuIik7Ci0g ICAgIHByaW50ZigiICAgIFstLXRpbWUtdHJhY2UtZ3JhbnVsYXJpdHk9PHZhbHVlPlx0TWluaW11 bSB0aW1lIGdyYW51bGFyaXR5IChpbiBtaWNyb3NlY29uZHMpIHRyYWNlZCBieSB0aW1lICIKLSAg ICAgICAgICAgICJwcm9maWxlci5cbiIpOwotLSNlbmRpZgotICAgICBwcmludGYoIiAgICBbLS12 ZXJzaW9uXVx0XHRcdFx0UHJpbnQgaXNwYyB2ZXJzaW9uXG4iKTsKLSAjaWZkZWYgSVNQQ19HRU5Y X0VOQUJMRUQKLSAgICAgcHJpbnRmKCIgICAgWy0tdmMtb3B0aW9ucz08XCItb3B0aW9uMSAtb3B0 aW9uMi4uLlwiPl1cdFx0XHRcdFBhc3MgYWRkaXRpb25hbCBvcHRpb25zIHRvIFZlY3RvciBDb21w aWxlciBiYWNrZW5kXG4iKTsKLUBAIC00NjIsNyArNDU4LDYgQEAgc3RhdGljIHZvaWQgc2V0Q2Fs bGluZ0NvbnYoVmVjdG9yQ2FsbFN0YXR1cyB2ZWN0b3JDYWxsLCBBcmNoIGFyY2gpIHsKLSAgICAg fQotIH0KLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSBzdGF0 aWMgdm9pZCB3cml0ZUNvbXBpbGVUaW1lRmlsZShjb25zdCBjaGFyICpvdXRGaWxlTmFtZSkgewot ICAgICBsbHZtOjpTbWFsbFN0cmluZzwxMjg+IGpzb25GaWxlTmFtZShvdXRGaWxlTmFtZSk7Ci0g ICAgIGpzb25GaWxlTmFtZS5hcHBlbmQoIi5qc29uIik7Ci1AQCAtNDc5LDcgKzQ3NCw2IEBAIHN0 YXRpYyB2b2lkIHdyaXRlQ29tcGlsZVRpbWVGaWxlKGNvbnN0IGNoYXIgKm91dEZpbGVOYW1lKSB7 Ci0gICAgIG9mLT5rZWVwKCk7Ci0gICAgIHJldHVybjsKLSB9Ci0tI2VuZGlmCi0gCi0gc3RhdGlj IHN0ZDo6c2V0PGludD4gUGFyc2luZ1BoYXNlcyhjaGFyICpzdGFnZXMsIEFyZ0Vycm9ycyAmZXJy b3JIYW5kbGVyKSB7Ci0gICAgIGNvbnN0ZXhwciBpbnQgcGFyc2luZ19saW1pdCA9IDEwMDsKLUBA IC03OTEsMTIgKzc4NSwxMCBAQCBpbnQgbWFpbihpbnQgQXJnYywgY2hhciAqQXJndltdKSB7Ci0g ICAgICAgICAgICAgfQotICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChhcmd2W2ldLCAiLS1m b3JjZS1hbGlnbm1lbnQ9IiwgMTgpKSB7Ci0gICAgICAgICAgICAgZy0+Zm9yY2VBbGlnbm1lbnQg PSBhdG9pKGFyZ3ZbaV0gKyAxOCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoYXJndltpXSwgIi0tdGltZS10cmFj ZSIpKSB7Ci0gICAgICAgICAgICAgZy0+ZW5hYmxlVGltZVRyYWNlID0gdHJ1ZTsKLSAgICAgICAg IH0gZWxzZSBpZiAoIXN0cm5jbXAoYXJndltpXSwgIi0tdGltZS10cmFjZS1ncmFudWxhcml0eT0i LCAyNSkpIHsKLSAgICAgICAgICAgICBnLT50aW1lVHJhY2VHcmFudWxhcml0eSA9IGF0b2koYXJn dltpXSArIDI1KTsKLS0jZW5kaWYKLSAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNtcChhcmd2W2ld LCAiLS13b2ZmIikgfHwgIXN0cmNtcChhcmd2W2ldLCAiLXdvZmYiKSkgewotICAgICAgICAgICAg IGctPmRpc2FibGVXYXJuaW5ncyA9IHRydWU7Ci0gICAgICAgICAgICAgZy0+ZW1pdFBlcmZXYXJu aW5ncyA9IGZhbHNlOwotQEAgLTEwNTksNyArMTA1MSw2IEBAIGludCBtYWluKGludCBBcmdjLCBj aGFyICpBcmd2W10pIHsKLSAKLSAgICAgLy8gVGhpcyBuZWVkcyB0byBoYXBwZW4gYWZ0ZXIgdGhl IFRhcmdldE9TIGlzIGRlY2lkZWQuCi0gICAgIHNldENhbGxpbmdDb252KHZlY3RvckNhbGwsIGFy Y2gpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBpZiAo Zy0+ZW5hYmxlVGltZVRyYWNlKSB7Ci0gICAgICAgICBsbHZtOjp0aW1lVHJhY2VQcm9maWxlcklu aXRpYWxpemUoZy0+dGltZVRyYWNlR3JhbnVsYXJpdHksICJpc3BjIik7Ci0gICAgIH0KLUBAIC0x MDc3LDkgKzEwNjgsNSBAQCBpbnQgbWFpbihpbnQgQXJnYywgY2hhciAqQXJndltdKSB7Ci0gICAg ICAgICB9Ci0gICAgICAgICBsbHZtOjp0aW1lVHJhY2VQcm9maWxlckNsZWFudXAoKTsKLSAgICAg fQotLSNlbHNlCi0tICAgIGludCByZXQgPSBNb2R1bGU6OkNvbXBpbGVBbmRPdXRwdXQoZmlsZSwg YXJjaCwgY3B1LCB0YXJnZXRzLCBmbGFncywgb3QsIG91dEZpbGVOYW1lLCBoZWFkZXJGaWxlTmFt ZSwgZGVwc0ZpbGVOYW1lLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGRlcHNUYXJnZXROYW1lLCBob3N0U3R1YkZpbGVOYW1lLCBkZXZTdHViRmlsZU5hbWUpOwotLSNl bmRpZgotICAgICByZXR1cm4gcmV0OwotIH0KLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlLmNwcCBi L3NyYy9tb2R1bGUuY3BwCi1pbmRleCBmZTc0NTJkZjEuLmE4NWZlYzc3YSAxMDA2NDQKLS0tLSBh L3NyYy9tb2R1bGUuY3BwCi0rKysgYi9zcmMvbW9kdWxlLmNwcAotQEAgLTE3MCw5ICsxNzAsNyBA QCBNb2R1bGU6Ok1vZHVsZShjb25zdCBjaGFyICpmbikgewotICAgICBtb2R1bGUtPnNldERhdGFM YXlvdXQoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCktPmdldFN0cmluZ1JlcHJlc2VudGF0aW9u KCkpOwotIAotICAgICBpZiAoZy0+Z2VuZXJhdGVEZWJ1Z2dpbmdTeW1ib2xzKSB7Ci0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICBsbHZtOjpUaW1lVHJh Y2VTY29wZSBUaW1lU2NvcGUoIkNyZWF0ZSBEZWJ1ZyBEYXRhIik7Ci0tI2VuZGlmCi0gICAgICAg ICAvLyBUbyBlbmFibGUgZGVidWcgaW5mb3JtYXRpb24gb24gV2luZG93cywgd2UgaGF2ZSB0byBs ZXQgbGx2bSBrbm93LCB0aGF0Ci0gICAgICAgICAvLyBkZWJ1ZyBpbmZvcm1hdGlvbiBzaG91bGQg YmUgZW1pdHRlZCBpbiBDb2RlVmlldyBmb3JtYXQuCi0gICAgICAgICBpZiAoZy0+dGFyZ2V0X29z ID09IFRhcmdldE9TOjp3aW5kb3dzKSB7Ci1AQCAtMjI2LDEwICsyMjQsOCBAQCBleHRlcm4gWVlf QlVGRkVSX1NUQVRFIHl5X2NyZWF0ZV9idWZmZXIoRklMRSAqLCBpbnQpOwotIGV4dGVybiB2b2lk IHl5X2RlbGV0ZV9idWZmZXIoWVlfQlVGRkVSX1NUQVRFKTsKLSAKLSBpbnQgTW9kdWxlOjpDb21w aWxlRmlsZSgpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAg ICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgQ29tcGlsZUZpbGVUaW1lU2NvcGUoCi0gICAgICAgICAi Q29tcGlsZUZpbGUiLCBsbHZtOjpTdHJpbmdSZWYoZmlsZW5hbWUgKyAoIl8iICsgc3RkOjpzdHJp bmcoZy0+dGFyZ2V0LT5HZXRJU0FTdHJpbmcoKSkpKSk7Ci0tI2VuZGlmCi0gICAgIGV4dGVybiB2 b2lkIFBhcnNlckluaXQoKTsKLSAgICAgUGFyc2VySW5pdCgpOwotIAotQEAgLTIzOCwxOCArMjM0 LDE0IEBAIGludCBNb2R1bGU6OkNvbXBpbGVGaWxlKCkgewotICAgICAvLyB2YXJpYWJsZSAnbScg dG8gYmUgaW5pdGlhbGl6ZWQgYW5kIGF2YWlsYWJsZSAod2hpY2ggaXQgaXNuJ3QgdW50aWwKLSAg ICAgLy8gdGhlIE1vZHVsZSBjb25zdHJ1Y3RvciByZXR1cm5zLi4uKQotICAgICB7Ci0tI2lmIElT UENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgICAgICBsbHZtOjpUaW1lVHJh Y2VTY29wZSBUaW1lU2NvcGUoIkRlZmluZVN0ZGxpYiIpOwotLSNlbmRpZgotICAgICAgICAgRGVm aW5lU3RkbGliKHN5bWJvbFRhYmxlLCBnLT5jdHgsIG1vZHVsZSwgZy0+aW5jbHVkZVN0ZGxpYik7 Ci0gICAgIH0KLSAKLSAgICAgYm9vbCBydW5QcmVwcm9jZXNzb3IgPSBnLT5ydW5DUFA7Ci0gCi0g ICAgIGlmIChydW5QcmVwcm9jZXNzb3IpIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQ Q19MTFZNXzEwXzAKLSAgICAgICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVTY29wZSgiRnJv bnRlbmQgcGFyc2VyIik7Ci0tI2VuZGlmCi0gICAgICAgICBpZiAoIUlzU3RkaW4oZmlsZW5hbWUp KSB7Ci0gICAgICAgICAgICAgLy8gVHJ5IHRvIG9wZW4gdGhlIGZpbGUgZmlyc3QsIHNpbmNlIG90 aGVyd2lzZSB3ZSBjcmFzaCBpbiB0aGUKLSAgICAgICAgICAgICAvLyBwcmVwcm9jZXNzb3IgaWYg dGhlIGZpbGUgZG9lc24ndCBleGlzdC4KLUBAIC0yNjgsOSArMjYwLDcgQEAgaW50IE1vZHVsZTo6 Q29tcGlsZUZpbGUoKSB7Ci0gICAgICAgICB5eXBhcnNlKCk7Ci0gICAgICAgICB5eV9kZWxldGVf YnVmZmVyKHN0cmJ1Zik7Ci0gICAgIH0gZWxzZSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUo IkZyb250ZW5kIHBhcnNlciIpOwotLSNlbmRpZgotICAgICAgICAgLy8gTm8gcHJlcHJvY2Vzc29y LCBqdXN0IG9wZW4gdXAgdGhlIGZpbGUgaWYgaXQncyBub3Qgc3RkaW4uLgotICAgICAgICAgRklM RSAqZiA9IE5VTEw7Ci0gICAgICAgICBpZiAoSXNTdGRpbihmaWxlbmFtZSkpIHsKLUBAIC0yOTcs OSArMjg3LDcgQEAgaW50IE1vZHVsZTo6Q29tcGlsZUZpbGUoKSB7Ci0gCi0gICAgIGlmIChkaUJ1 aWxkZXIpCi0gICAgICAgICBkaUJ1aWxkZXItPmZpbmFsaXplKCk7Ci0tI2lmIElTUENfTExWTV9W RVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIFRpbWVT Y29wZSgiT3B0aW1pemUiKTsKLS0jZW5kaWYKLSAgICAgaWYgKGVycm9yQ291bnQgPT0gMCkKLSAg ICAgICAgIE9wdGltaXplKG1vZHVsZSwgZy0+b3B0LmxldmVsKTsKLSAKLUBAIC0xMjQzLDE1ICsx MjMxLDggQEAgYm9vbCBNb2R1bGU6OndyaXRlT2JqZWN0RmlsZU9yQXNzZW1ibHkobGx2bTo6VGFy Z2V0TWFjaGluZSAqdGFyZ2V0TWFjaGluZSwgbGx2bToKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvdXRGaWxlTmFtZSkgewotICAgICAvLyBGaWd1 cmUgb3V0IGlmIHdlJ3JlIGdlbmVyYXRpbmcgb2JqZWN0IGZpbGUgb3IgYXNzZW1ibHkgb3V0cHV0 LCBhbmQKLSAgICAgLy8gc2V0IGJpbmFyeSBvdXRwdXQgZm9yIG9iamVjdCBmaWxlcwotLSNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fOV8wCi0tICAgIEFzc2VydCghZy0+dGFyZ2V0 LT5pc0dlblhUYXJnZXQoKSk7Ci0tICAgIGxsdm06OlRhcmdldE1hY2hpbmU6OkNvZGVHZW5GaWxl VHlwZSBmaWxlVHlwZSA9Ci0tICAgICAgICAob3V0cHV0VHlwZSA9PSBPYmplY3QpID8gbGx2bTo6 VGFyZ2V0TWFjaGluZTo6Q0dGVF9PYmplY3RGaWxlIDogbGx2bTo6VGFyZ2V0TWFjaGluZTo6Q0dG VF9Bc3NlbWJseUZpbGU7Ci0tICAgIGJvb2wgYmluYXJ5ID0gKGZpbGVUeXBlID09IGxsdm06OlRh cmdldE1hY2hpbmU6OkNHRlRfT2JqZWN0RmlsZSk7Ci0tI2Vsc2UgLy8gTExWTSAxMC4wKwotICAg ICBsbHZtOjpDb2RlR2VuRmlsZVR5cGUgZmlsZVR5cGUgPSAob3V0cHV0VHlwZSA9PSBPYmplY3Qp ID8gbGx2bTo6Q0dGVF9PYmplY3RGaWxlIDogbGx2bTo6Q0dGVF9Bc3NlbWJseUZpbGU7Ci0gICAg IGJvb2wgYmluYXJ5ID0gKGZpbGVUeXBlID09IGxsdm06OkNHRlRfT2JqZWN0RmlsZSk7Ci0tI2Vu ZGlmCi0gCi0gICAgIGxsdm06OnN5czo6ZnM6Ok9wZW5GbGFncyBmbGFncyA9IGJpbmFyeSA/IGxs dm06OnN5czo6ZnM6OkZfTm9uZSA6IGxsdm06OnN5czo6ZnM6OkZfVGV4dDsKLSAKLUBAIC0yMjE5 LDExICsyMjAwLDcgQEAgdm9pZCBNb2R1bGU6OmV4ZWNQcmVwcm9jZXNzb3IoY29uc3QgY2hhciAq aW5maWxlbmFtZSwgbGx2bTo6cmF3X3N0cmluZ19vc3RyZWFtICoKLSAgICAgaW5zdC5zZXRUYXJn ZXQodGFyZ2V0KTsKLSAgICAgaW5zdC5jcmVhdGVTb3VyY2VNYW5hZ2VyKGluc3QuZ2V0RmlsZU1h bmFnZXIoKSk7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0g ICAgY2xhbmc6OkZyb250ZW5kSW5wdXRGaWxlIGlucHV0RmlsZShpbmZpbGVuYW1lLCBjbGFuZzo6 SW5wdXRLaW5kOjpVbmtub3duKTsKLS0jZWxzZSAvLyBMTFZNIDEwLjArCi0gICAgIGNsYW5nOjpG cm9udGVuZElucHV0RmlsZSBpbnB1dEZpbGUoaW5maWxlbmFtZSwgY2xhbmc6OklucHV0S2luZCgp KTsKLS0jZW5kaWYKLSAKLSAgICAgaW5zdC5Jbml0aWFsaXplU291cmNlTWFuYWdlcihpbnB1dEZp bGUpOwotIAotQEAgLTI3MjIsOSArMjY5OSw3IEBAIGludCBNb2R1bGU6OkNvbXBpbGVBbmRPdXRw dXQoY29uc3QgY2hhciAqc3JjRmlsZSwgQXJjaCBhcmNoLCBjb25zdCBjaGFyICpjcHUsIHN0Ci0g Ci0gICAgICAgICBtID0gbmV3IE1vZHVsZShzcmNGaWxlKTsKLSAgICAgICAgIGlmIChtLT5Db21w aWxlRmlsZSgpID09IDApIHsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEw XzAKLSAgICAgICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUoIkJhY2tlbmQi KTsKLS0jZW5kaWYKLSAjaWZkZWYgSVNQQ19HRU5YX0VOQUJMRUQKLSAgICAgICAgICAgICBpZiAo b3V0cHV0VHlwZSA9PSBBc20gfHwgb3V0cHV0VHlwZSA9PSBPYmplY3QpIHsKLSAgICAgICAgICAg ICAgICAgaWYgKGctPnRhcmdldC0+aXNHZW5YVGFyZ2V0KCkpIHsKLUBAIC0yODU1LDkgKzI4MzAs NyBAQCBpbnQgTW9kdWxlOjpDb21waWxlQW5kT3V0cHV0KGNvbnN0IGNoYXIgKnNyY0ZpbGUsIEFy Y2ggYXJjaCwgY29uc3QgY2hhciAqY3B1LCBzdAotIAotICAgICAgICAgICAgIG0gPSBuZXcgTW9k dWxlKHNyY0ZpbGUpOwotICAgICAgICAgICAgIGludCBjb21waWxlRmlsZUVycm9yID0gbS0+Q29t cGlsZUZpbGUoKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAg ICAgICAgICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBUaW1lU2NvcGUoIkJhY2tlbmQiKTsKLS0j ZW5kaWYKLSAgICAgICAgICAgICBpZiAoY29tcGlsZUZpbGVFcnJvciA9PSAwKSB7Ci0gICAgICAg ICAgICAgICAgIC8vIENyZWF0ZSB0aGUgZGlzcGF0Y2ggbW9kdWxlLCB1bmxlc3MgYWxyZWFkeSBj cmVhdGVkOwotICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgbGF0dGVyIGNhc2UsIGp1c3QgZG8g dGhlIGNoZWNraW5nCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZS5oIGIvc3JjL21vZHVsZS5oCi1p bmRleCA2MWQzY2ZlYTAuLjYwMzEyNGQ1MCAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGUuaAotKysr IGIvc3JjL21vZHVsZS5oCi1AQCAtNDMsOSArNDMsNyBAQAotIAotICNpbmNsdWRlIDxsbHZtL0lS L0RlYnVnSW5mby5oPgotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBf MAotICNpbmNsdWRlIDxsbHZtL1N1cHBvcnQvVGltZVByb2ZpbGVyLmg+Ci0tI2VuZGlmCi0gCi0g I2lmZGVmIElTUENfR0VOWF9FTkFCTEVECi0gI2luY2x1ZGUgIm9jbF9pZ2NfaW50ZXJmYWNlL2ln Y19vY2xfZGV2aWNlX2N0eC5oIgotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3BwIGIvc3JjL29wdC5j cHAKLWluZGV4IGE2NTVhODM0NC4uNWIxYWM3YjYzIDEwMDY0NAotLS0tIGEvc3JjL29wdC5jcHAK LSsrKyBiL3NyYy9vcHQuY3BwCi1AQCAtNjYsNiArNjYsNyBAQAotICNpbmNsdWRlIDxsbHZtL0lS L0luc3RydWN0aW9ucy5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0ludHJpbnNpY0luc3QuaD4KLSAj aW5jbHVkZSA8bGx2bS9JUi9JbnRyaW5zaWNzLmg+Ci0rI2luY2x1ZGUgPGxsdm0vSVIvSW50cmlu c2ljc1g4Ni5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0xlZ2FjeVBhc3NNYW5hZ2VyLmg+Ci0gI2lu Y2x1ZGUgPGxsdm0vSVIvTW9kdWxlLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvUGF0dGVybk1hdGNo Lmg+Ci1AQCAtODUsOSArODYsNiBAQAotICNpbmNsdWRlIDxsbHZtL1RyYW5zZm9ybXMvU2NhbGFy L0luc3RTaW1wbGlmeVBhc3MuaD4KLSAjaW5jbHVkZSA8bGx2bS9UcmFuc2Zvcm1zL1V0aWxzLmg+ Ci0gI2luY2x1ZGUgPGxsdm0vVHJhbnNmb3Jtcy9VdGlscy9CYXNpY0Jsb2NrVXRpbHMuaD4KLS0j aWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLS0jaW5jbHVkZSA8bGx2bS9J Ui9JbnRyaW5zaWNzWDg2Lmg+Ci0tI2VuZGlmCi0gCi0gI2lmZGVmIElTUENfSE9TVF9JU19MSU5V WAotICNpbmNsdWRlIDxhbGxvY2EuaD4KLUBAIC0xMDAzLDEwICsxMDAxLDcgQEAgYm9vbCBJbnRy aW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAg ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBjYWxsSW5zdC0+ Z2V0Q2FsbGVkRnVuY3Rpb24oKSA9PSBhdnhNYXNrZWRMb2FkMzIgPyA0IDogODsKLSAgICAgICAg ICAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLCAi X2xvYWQiKTsKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPD0gSVNQQ19MTFZNXzlfMAotLSAgICAg ICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3QgPQotLSAgICAgICAgICAgICAg ICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIG5hbWUsIGZhbHNlIC8qIG5vdCB2b2xh dGlsZSAqLywgYWxpZ24sIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotLSNlbGlmIElTUENf TExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJTSU9OID09 IElTUENfTExWTV8xMF8wCi0gICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICpsb2Fk SW5zdCA9IG5ldyBsbHZtOjpMb2FkSW5zdChjYXN0UHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qgdm9s YXRpbGUgKi8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGFsaWduKSwgKGxsdm06Okluc3Ry dWN0aW9uICopTlVMTCk7Ci0gI2Vsc2UKLUBAIC0xMDQzLDEzICsxMDM4LDggQEAgYm9vbCBJbnRy aW5zaWNzT3B0OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAg ICAgICAgICAgICAgICAgIGFsaWduID0gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKTsKLSAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgYWxpZ24g PSBjYWxsSW5zdC0+Z2V0Q2FsbGVkRnVuY3Rpb24oKSA9PSBhdnhNYXNrZWRTdG9yZTMyID8gNCA6 IDg7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgICAgICAg ICAgICAgbGx2bTo6U3RvcmVJbnN0ICpzdG9yZUluc3QgPSBuZXcgbGx2bTo6U3RvcmVJbnN0KHJ2 YWx1ZSwgY2FzdFB0ciwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0tICAgICAgICAgICAg ICAgIHN0b3JlSW5zdC0+c2V0QWxpZ25tZW50KGFsaWduKTsKLS0jZWxzZQotICAgICAgICAgICAg ICAgICBsbHZtOjpTdG9yZUluc3QgKnN0b3JlSW5zdCA9IG5ldyBsbHZtOjpTdG9yZUluc3QocnZh bHVlLCBjYXN0UHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMLAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6 TWF5YmVBbGlnbihhbGlnbikudmFsdWVPck9uZSgpKTsKLS0jZW5kaWYKLSAgICAgICAgICAgICAg ICAgbENvcHlNZXRhZGF0YShzdG9yZUluc3QsIGNhbGxJbnN0KTsKLSAgICAgICAgICAgICAgICAg bGx2bTo6UmVwbGFjZUluc3RXaXRoSW5zdChjYWxsSW5zdCwgc3RvcmVJbnN0KTsKLSAKLUBAIC0x MDY2LDkgKzEwNTYsNyBAQCBib29sIEludHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZt OjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25GdW5jdGlv bihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkludHJpbnNp Y3NPcHQ6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wg bW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYp IHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtMTIz OSw5ICsxMjI3LDcgQEAgYm9vbCBJbnN0cnVjdGlvblNpbXBsaWZ5UGFzczo6cnVuT25CYXNpY0Js b2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBJbnN0cnVjdGlvblNpbXBsaWZ5 UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBG dW5jU2NvcGUoIkluc3RydWN0aW9uU2ltcGxpZnlQYXNzOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXRO YW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZv ciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBy dW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTI5NzQsMTYgKzI5NjAsMTAgQEAgc3RhdGljIGJvb2wg bEltcHJvdmVNYXNrZWRTdG9yZShsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAKLSAgICAg ICAgICAgICBsdmFsdWUgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QobHZhbHVlLCBwdHJUeXBlLCAi bHZhbHVlX3RvX3B0cl90eXBlIiwgY2FsbEluc3QpOwotICAgICAgICAgICAgIGxDb3B5TWV0YWRh dGEobHZhbHVlLCBjYWxsSW5zdCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExW TV85XzAKLS0gICAgICAgICAgICBzdG9yZSA9Ci0tICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpT dG9yZUluc3QocnZhbHVlLCBsdmFsdWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5 ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKTsK LS0jZWxzZQotICAgICAgICAgICAgIHN0b3JlID0gbmV3IGxsdm06OlN0b3JlSW5zdCgKLSAgICAg ICAgICAgICAgICAgcnZhbHVlLCBsdmFsdWUsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywKLSAg ICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5 ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1lbnQoKSA6IGluZm8tPmFsaWduKQot ICAgICAgICAgICAgICAgICAgICAgLnZhbHVlT3JPbmUoKSk7Ci0tI2VuZGlmCi0gICAgICAgICB9 Ci0gICAgICAgICBpZiAoc3RvcmUgIT0gTlVMTCkgewotICAgICAgICAgICAgIGxDb3B5TWV0YWRh dGEoc3RvcmUsIGNhbGxJbnN0KTsKLUBAIC0zMDU5LDExICszMDM5LDcgQEAgc3RhdGljIGJvb2wg bEltcHJvdmVNYXNrZWRMb2FkKGxsdm06OkNhbGxJbnN0ICpjYWxsSW5zdCwgbGx2bTo6QmFzaWNC bG9jazo6aXRlcmEKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBsbHZtOjpUeXBlICpwdHJUeXBl ID0gbGx2bTo6UG9pbnRlclR5cGU6OmdldChjYWxsSW5zdC0+Z2V0VHlwZSgpLCAwKTsKLSAgICAg ICAgICAgICBwdHIgPSBuZXcgbGx2bTo6Qml0Q2FzdEluc3QocHRyLCBwdHJUeXBlLCAicHRyX2Nh c3RfZm9yX2xvYWQiLCBjYWxsSW5zdCk7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENf TExWTV85XzAKLS0gICAgICAgICAgICBsb2FkID0gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgY2Fs bEluc3QtPmdldE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSA/IGct PnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkgOiBpbmZvLT5hbGlnbiwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsbHZtOjpJbnN0cnVjdGlvbiAqKU5V TEwpOwotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElT UENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0gICAgICAgICAgICAgbG9hZCA9IG5l dyBsbHZtOjpMb2FkSW5zdCgKLSAgICAgICAgICAgICAgICAgcHRyLCBjYWxsSW5zdC0+Z2V0TmFt ZSgpLCBmYWxzZSAvKiBub3Qgdm9sYXRpbGUgKi8sCi0gICAgICAgICAgICAgICAgIGxsdm06Ok1h eWJlQWxpZ24oZy0+b3B0LmZvcmNlQWxpZ25lZE1lbW9yeSA/IGctPnRhcmdldC0+Z2V0TmF0aXZl VmVjdG9yQWxpZ25tZW50KCkgOiBpbmZvLT5hbGlnbikKLUBAIC0zMTI5LDkgKzMxMDUsNyBAQCBi b29sIEltcHJvdmVNZW1vcnlPcHNQYXNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9j ayAmYmIpIHsKLSAKLSBib29sIEltcHJvdmVNZW1vcnlPcHNQYXNzOjpydW5PbkZ1bmN0aW9uKGxs dm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiSW1wcm92ZU1lbW9y eU9wc1Bhc3M6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJv b2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6 IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAt MzQyNCw5ICszMzk4LDcgQEAgbGx2bTo6VmFsdWUgKmxHRVBBbmRMb2FkKGxsdm06OlZhbHVlICpi YXNlUHRyLCBpbnQ2NF90IG9mZnNldCwgaW50IGFsaWduLCBsbHZtOjoKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6VHlwZSAqdHlwZSkgewotICAgICBsbHZtOjpWYWx1ZSAqcHRyID0g bEdFUEluc3QoYmFzZVB0ciwgTExWTUludDY0KG9mZnNldCksICJuZXdfYmFzZSIsIGluc2VydEJl Zm9yZSk7Ci0gICAgIHB0ciA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdChwdHIsIGxsdm06OlBvaW50 ZXJUeXBlOjpnZXQodHlwZSwgMCksICJwdHJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0tI2lmIElT UENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAgcmV0dXJuIG5ldyBsbHZtOjpM b2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYWxp Z24sIGluc2VydEJlZm9yZSk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZN XzEwXzAKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzEwXzAKLSAgICAgcmV0 dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChwdHIsICJnYXRoZXJfbG9hZCIsIGZhbHNlIC8qIG5vdCB2 b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIGluc2VydEJlZm9yZSk7Ci0gI2Vs c2UgLy8gTExWTSAxMS4wKwotICAgICByZXR1cm4gbmV3IGxsdm06OkxvYWRJbnN0KGxsdm06OmR5 bl9jYXN0PGxsdm06OlBvaW50ZXJUeXBlPihwdHItPmdldFR5cGUoKSktPmdldFBvaW50ZXJFbGVt ZW50VHlwZSgpLCBwdHIsCi1AQCAtNDEzNSw5ICs0MTA3LDcgQEAgYm9vbCBHYXRoZXJDb2FsZXNj ZVBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wg R2F0aGVyQ29hbGVzY2VQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0g Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiR2F0aGVyQ29hbGVzY2VQYXNzOjpydW5PbkZ1bmN0aW9u IiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7 Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmll ZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTQ0NjcsOSArNDQzNyw3IEBAIGJvb2wg UmVwbGFjZVBzZXVkb01lbW9yeU9wc1Bhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIAotIGJvb2wgUmVwbGFjZVBzZXVkb01lbW9yeU9wc1Bhc3M6OnJ1bk9uRnVu Y3Rpb24obGx2bTo6RnVuY3Rpb24gJkYpIHsKLSAKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0g SVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJSZXBs YWNlUHNldWRvTWVtb3J5T3BzUGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0j ZW5kaWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJh c2ljQmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Js b2NrKEJCKTsKLUBAIC00NTczLDkgKzQ1NDEsNyBAQCBib29sIElzQ29tcGlsZVRpbWVDb25zdGFu dFBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotIAotIGJvb2wg SXNDb21waWxlVGltZUNvbnN0YW50UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAm RikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBs bHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIklzQ29tcGlsZVRpbWVDb25zdGFudFBhc3M6 OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZp ZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAg ICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNTIwMSw5ICs1 MTY3LDcgQEAgYm9vbCBQZWVwaG9sZVBhc3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIAotIGJvb2wgUGVlcGhvbGVQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1 bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8w Ci0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUGVlcGhvbGVQYXNzOjpydW5P bkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55 ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAg ICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTUyOTksOSArNTI2Myw3 IEBAIGJvb2wgUmVwbGFjZVN0ZGxpYlNoaWZ0UGFzczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJh c2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBSZXBsYWNlU3RkbGliU2hpZnRQYXNzOjpydW5PbkZ1 bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gCi0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUmVw bGFjZVN0ZGxpYlNoaWZ0UGFzczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5k aWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2lj QmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2Nr KEJCKTsKLUBAIC01Mzk5LDkgKzUzNjEsNyBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4Qm9vbGVh blNlbGVjdFBhc3M6OmZpeFNlbGVjdChsbHZtOjpTZWxlY3RJbnN0ICpzZWwsIGxsdm06OgotIH0K LSAKLSBib29sIEZpeEJvb2xlYW5TZWxlY3RQYXNzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0 aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAg IGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiRml4Qm9vbGVhblNlbGVjdFBhc3M6OnJ1 bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRB bnkgPSBmYWxzZTsKLSAKLSAgICAgcmV0dXJuIG1vZGlmaWVkQW55OwotQEAgLTU5NjQsOSArNTky NCw3IEBAIGJvb2wgR2VuWEdhdGhlckNvYWxlc2Npbmc6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpC YXNpY0Jsb2NrICZiYikgewotIH0KLSAKLSBib29sIEdlblhHYXRoZXJDb2FsZXNjaW5nOjpydW5P bkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49 IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRpbWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiR2Vu WEdhdGhlckNvYWxlc2Npbmc6OnJ1bk9uRnVuY3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlm Ci0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBmYWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Js b2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1vZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhC Qik7Ci1AQCAtNjExMyw5ICs2MDcxLDcgQEAgYm9vbCBQcm9tb3RlVG9Qcml2YXRlTWVtb3J5UGFz czo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gCi0gYm9vbCBQcm9t b3RlVG9Qcml2YXRlTWVtb3J5UGFzczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikg ewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZt OjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIlByb21vdGVUb1ByaXZhdGVNZW1vcnlQYXNzOjpy dW5PbkZ1bmN0aW9uIiwgRi5nZXROYW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVk QW55ID0gZmFsc2U7Ci0gICAgIGZvciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAg ICAgICBtb2RpZmllZEFueSB8PSBydW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTYxODEsOSArNjEz Nyw3IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6 QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25G dW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotIAotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+ PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIlJl cGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5k aWYKLSAgICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2lj QmxvY2sgJkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2Nr KEJCKTsKLUBAIC02Mjc4LDkgKzYyMzIsNyBAQCBib29sIFJlcGxhY2VVbnN1cHBvcnRlZEluc3Rz OjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAKLSBib29sIFJlcGxh Y2VVbnN1cHBvcnRlZEluc3RzOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0g Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMF8wCi0gICAgIGxsdm06OlRp bWVUcmFjZVNjb3BlIEZ1bmNTY29wZSgiUmVwbGFjZVVuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uRnVu Y3Rpb24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGJvb2wgbW9kaWZpZWRBbnkgPSBm YWxzZTsKLSAgICAgZm9yIChsbHZtOjpCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIG1v ZGlmaWVkQW55IHw9IHJ1bk9uQmFzaWNCbG9jayhCQik7Ci1AQCAtNjM2OSw5ICs2MzIxLDcgQEAg Ym9vbCBDaGVja1Vuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Js b2NrICZiYikgewotIH0KLSAKLSBib29sIENoZWNrVW5zdXBwb3J0ZWRJbnN0czo6cnVuT25GdW5j dGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BD X0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkNoZWNrVW5z dXBwb3J0ZWRJbnN0czo6cnVuT25GdW5jdGlvbiIsIEYuZ2V0TmFtZSgpKTsKLS0jZW5kaWYKLSAg ICAgYm9vbCBtb2RpZmllZEFueSA9IGZhbHNlOwotICAgICBmb3IgKGxsdm06OkJhc2ljQmxvY2sg JkJCIDogRikgewotICAgICAgICAgbW9kaWZpZWRBbnkgfD0gcnVuT25CYXNpY0Jsb2NrKEJCKTsK LUBAIC02NDQwLDkgKzYzOTAsNyBAQCBib29sIE1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpydW5PbkJh c2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSB9Ci0gCi0gYm9vbCBNYW5nbGVPcGVu Q0xCdWlsdGluczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikgewotLSNpZiBJU1BD X0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpUaW1lVHJhY2VTY29w ZSBGdW5jU2NvcGUoIk1hbmdsZU9wZW5DTEJ1aWx0aW5zOjpydW5PbkZ1bmN0aW9uIiwgRi5nZXRO YW1lKCkpOwotLSNlbmRpZgotICAgICBib29sIG1vZGlmaWVkQW55ID0gZmFsc2U7Ci0gICAgIGZv ciAobGx2bTo6QmFzaWNCbG9jayAmQkIgOiBGKSB7Ci0gICAgICAgICBtb2RpZmllZEFueSB8PSBy dW5PbkJhc2ljQmxvY2soQkIpOwotQEAgLTY4MjgsOSArNjc3Niw3IEBAIGJvb2wgRml4QWRkcmVz c1NwYWNlOjpydW5PbkZ1bmN0aW9uKGxsdm06OkZ1bmN0aW9uICZGKSB7Ci0gICAgIC8vIFRyYW5z Zm9ybWF0aW9ucyBhcmUgY29ycmVjdCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBub3QgaW50ZXJuYWwu Ci0gICAgIC8vIFRoaXMgaXMgZHVlIHRvIGFkZHJlc3Mgc3BhY2UgY2FsY3VsYXRpb24gYWxnb3Jp dGhtLgotICAgICAvLyBUT0RPOiBwcm9ibGVtcyBjYW4gYmUgbWV0IGluIGNhc2Ugb2YgU3RhY2sg Q2FsbHMKLS0jaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzEwXzAKLSAgICAgbGx2 bTo6VGltZVRyYWNlU2NvcGUgRnVuY1Njb3BlKCJGaXhBZGRyZXNzU3BhY2U6OnJ1bk9uRnVuY3Rp b24iLCBGLmdldE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGlmIChGLmdldExpbmthZ2UoKSA9PSBs bHZtOjpHbG9iYWxWYWx1ZTo6TGlua2FnZVR5cGVzOjpJbnRlcm5hbExpbmthZ2UpCi0gICAgICAg ICByZXR1cm4gZmFsc2U7Ci0gCi1AQCAtNjg1NCw5ICs2ODAwLDcgQEAgY2xhc3MgRGVtb3RlUEhJ cyA6IHB1YmxpYyBsbHZtOjpGdW5jdGlvblBhc3MgewotIGNoYXIgRGVtb3RlUEhJczo6SUQgPSAw OwotIAotIGJvb2wgRGVtb3RlUEhJczo6cnVuT25GdW5jdGlvbihsbHZtOjpGdW5jdGlvbiAmRikg ewotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTBfMAotICAgICBsbHZtOjpU aW1lVHJhY2VTY29wZSBGdW5jU2NvcGUoIkRlbW90ZVBISXM6OnJ1bk9uRnVuY3Rpb24iLCBGLmdl dE5hbWUoKSk7Ci0tI2VuZGlmCi0gICAgIGlmIChGLmlzRGVjbGFyYXRpb24oKSB8fCBza2lwRnVu Y3Rpb24oRikpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgIHN0ZDo6dmVjdG9yPGxsdm06 Okluc3RydWN0aW9uICo+IFdvcmtMaXN0OwotZGlmZiAtLWdpdCBhL3NyYy90eXBlLmNwcCBiL3Ny Yy90eXBlLmNwcAotaW5kZXggNjg4YTRlODc0Li5mYTBjYjA0ZGIgMTAwNjQ0Ci0tLS0gYS9zcmMv dHlwZS5jcHAKLSsrKyBiL3NyYy90eXBlLmNwcAotQEAgLTE4MjIsMTQgKzE4MjIsMTAgQEAgbGx2 bTo6RElUeXBlICpTdHJ1Y3RUeXBlOjpHZXRESVR5cGUobGx2bTo6RElTY29wZSAqc2NvcGUpIGNv bnN0IHsKLSAgICAgbGx2bTo6RElGaWxlICpkaUZpbGUgPSBwb3MuR2V0RElGaWxlKCk7Ci0gICAg IGxsdm06OkRJTmFtZXNwYWNlICpkaVNwYWNlID0gcG9zLkdldERJTmFtZXNwYWNlKCk7Ci0gICAg IHJldHVybiBtLT5kaUJ1aWxkZXItPmNyZWF0ZVN0cnVjdFR5cGUoZGlTcGFjZSwgR2V0U3RyaW5n KCksIGRpRmlsZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw b3MuZmlyc3RfbGluZSwgICAgICAgICAgLy8gTGluZSBudW1iZXIKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldFNpemVJbkJpdHMoKSwgLy8gU2l6 ZSBpbiBiaXRzCi0tI2lmIElTUENfTExWTV9WRVJTSU9OIDw9IElTUENfTExWTV85XzAKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXQtPmdldEFsaWdubWVu dCgpICogOCwgLy8gQWxpZ25tZW50IGluIGJpdHMKLS0jZWxzZSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTExWTSAxMC4w KwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5maXJzdF9s aW5lLCAgICAgICAgICAgICAgICAgICAgIC8vIExpbmUgbnVtYmVyCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LT5nZXRTaXplSW5CaXRzKCksICAgICAg ICAgICAgLy8gU2l6ZSBpbiBiaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGF5b3V0LT5nZXRBbGlnbm1lbnQoKS52YWx1ZSgpICogOCwgLy8gQWxpZ25tZW50 IGluIGJpdHMKLS0jZW5kaWYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpESU5vZGU6OkZsYWdaZXJvLCAvLyBGbGFncwotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkRJTm9kZTo6RmxhZ1plcm8sICAgICAgICAg ICAgIC8vIEZsYWdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TlVMTCwgZWxlbWVudHMpOwotIH0KLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9saXQtdGVzdHMvMTc3 MS5pc3BjIGIvdGVzdHMvbGl0LXRlc3RzLzE3NzEuaXNwYwotaW5kZXggOTgwNjRkODRkLi40ZmVi NzNkZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saXQtdGVzdHMvMTc3MS5pc3BjCi0rKysgYi90ZXN0 cy9saXQtdGVzdHMvMTc3MS5pc3BjCi1AQCAtNSw3ICs1LDYgQEAKLSAvLyBSVU46ICV7aXNwY30g JXMgLS10YXJnZXQ9c3NlNC1pMTZ4OCAtLWVtaXQtYXNtIC1vIC0gfCBGaWxlQ2hlY2sgJXMgLWNo ZWNrLXByZWZpeD1DSEVDS1NTRTRfSTE2WDgKLSAvLyBSVU46ICV7aXNwY30gJXMgLS10YXJnZXQ9 c3NlNC1pOHgxNiAtLWVtaXQtYXNtIC1vIC0gfCBGaWxlQ2hlY2sgJXMgLWNoZWNrLXByZWZpeD1D SEVDS1NTRTRfSThYMTYKLSAKLS0vLyBSRVFVSVJFUzogTExWTV8xMF8wKwotIC8vIFJFUVVJUkVT OiBYODZfRU5BQkxFRAotIAotIC8vIENIRUNLQVZYMl9JMzJYODoge3tbYS16XSp4b3JbYS16XSp9 fSAgJXhtbTAsICV4bW0wLCAleG1tMAotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpdC10ZXN0cy8xODQ0 LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTg0NC5pc3BjCi1pbmRleCA3OTNhODg2NmMuLjE4OWVk ZjRjMyAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8xODQ0LmlzcGMKLSsrKyBiL3Rlc3Rz L2xpdC10ZXN0cy8xODQ0LmlzcGMKLUBAIC02LDkgKzYsNiBAQAotIAotIC8vIFJFUVVJUkVTOiBY ODZfRU5BQkxFRAotIAotLS8vIEl0IGRvZXNuJ3Qgd29yayBmb3IgYW55dGhpbmcgZWFybGllciB0 aGFuIDEwLjAsIGJ1dCBpdCB3aWxsIG5vdCBiZSBmaXhlZCwgc28gZG9uJ3QgcnVuLgotLS8vIFJF UVVJUkVTOiBMTFZNXzEwXzArCi0tCi0gZXh0ZXJuIHVuaWZvcm0gdW5zaWduZWQgaW50NjQgdmFy XzY7Ci0gZXh0ZXJuIHVuaWZvcm0gdW5zaWduZWQgaW50MTYgdmFyXzExOwotIGV4dGVybiB1bmlm b3JtIGJvb2wgYXJyXzIwMSBbMV0gWzE1XSBbMjBdOwotZGlmZiAtLWdpdCBhL3Rlc3RzL2xpdC10 ZXN0cy8xOTI2LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvMTkyNi5pc3BjCi1pbmRleCA3MGY3Y2Mz YzIuLjc5MjFjOTFhNiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMKLSsr KyBiL3Rlc3RzL2xpdC10ZXN0cy8xOTI2LmlzcGMKLUBAIC0yLDggKzIsNiBAQAotIC8vIFJVTjog Y2F0ICVULzE5MjYuby5qc29uIFwKLSAvLyBSVU46ICAgfCBGaWxlQ2hlY2sgJXMKLSAKLS0vLyBS RVFVSVJFUzogTExWTV8xMF8wKwotLQotIC8vIENIRUNLOiAidHJhY2VFdmVudHMiCi0gLy8gQ0hF Q0s6ICJkZXRhaWwiCi0gZXhwb3J0IHVuaWZvcm0gaW50IGZvbyh1bmlmb3JtIGludCBhW10sIHVu aWZvcm0gaW50IGNvdW50KSB7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2 LmlzcGMgYi90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYwotaW5kZXggNTE2ZWZkZDRjLi40 ZDYwMTg2ZjYgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9saXQtdGVzdHMvY3B1c194ODYuaXNwYwotKysr IGIvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2LmlzcGMKLUBAIC0yNCw2ICsyNCw4IEBACi0gLy87 IFJVTjogJXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAt LWNwdT1pY2wKLSAvLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdl dD1zc2UyLWkzMng0IC0tY3B1PWljZWxha2Utc2VydmVyCi0gLy87IFJVTjogJXtpc3BjfSAlcyAt byAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT1pY3gKLSsvLzsgUlVO OiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdldD1zc2UyLWkzMng0IC0tY3B1 PXRpZ2VybGFrZQotKy8vOyBSVU46ICV7aXNwY30gJXMgLW8gJXQubyAtLW5vc3RkbGliIC0tdGFy Z2V0PXNzZTItaTMyeDQgLS1jcHU9dGdsCi0gCi0gLy8gUkVRVUlSRVM6IFg4Nl9FTkFCTEVECi0g Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjIGIvdGVz dHMvbGl0LXRlc3RzL2NwdXNfeDg2X2xsdm0xMC5pc3BjCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IGVmMDAwMDBlNS4uMDAwMDAwMDAwCi0tLS0gYS90ZXN0cy9saXQtdGVzdHMvY3B1 c194ODZfbGx2bTEwLmlzcGMKLSsrKyAvZGV2L251bGwKLUBAIC0xLDExICswLDAgQEAKLS0vLyBU aGUgdGVzdCBjaGVja3MgdGhhdCBjcHUgZGVmaW5pdGlvbnMgKGluY2x1ZGluZyBhbGwgc3lub255 bXMpIGFyZSBzdWNjZXNzZnVsbHkgY29uc3VtZWQgYnkgY29tcGlsZXIuCi0tCi0tLy87IFJVTjog JXtpc3BjfSAlcyAtbyAldC5vIC0tbm9zdGRsaWIgLS10YXJnZXQ9c3NlMi1pMzJ4NCAtLWNwdT10 aWdlcmxha2UKLS0vLzsgUlVOOiAle2lzcGN9ICVzIC1vICV0Lm8gLS1ub3N0ZGxpYiAtLXRhcmdl dD1zc2UyLWkzMng0IC0tY3B1PXRnbAotLQotLS8vIFJFUVVJUkVTOiBYODZfRU5BQkxFRAotLS8v IFJFUVVJUkVTOiBMTFZNXzEwXzArCi0tCi0tdW5pZm9ybSBpbnQgaTsKLS0KLS12b2lkIGZvbygp IHt9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2xpdC5jZmcgYi90ZXN0cy9saXQtdGVz dHMvbGl0LmNmZwotaW5kZXggMTcwMTY1NzlkLi4wNDVlNjk0MzcgMTAwNjQ0Ci0tLS0gYS90ZXN0 cy9saXQtdGVzdHMvbGl0LmNmZwotKysrIGIvdGVzdHMvbGl0LXRlc3RzL2xpdC5jZmcKLUBAIC0z MCwxMSArMzAsNiBAQCBwcmludCgiQ29uZmlnOiIpCi0gCi0gIyBMTFZNIHZlcnNpb24KLSBsbHZt X3ZlcnNpb24gPSBMb29zZVZlcnNpb24oaXNwY19sbHZtX3ZlcnNpb25fbnVtYmVyKQotLWlmIGxs dm1fdmVyc2lvbiA+PSBMb29zZVZlcnNpb24oIjEwLjAuMCIpOgotLSAgICBwcmludCgiTExWTV8x MF8wKzogWUVTIikKLS0gICAgY29uZmlnLmF2YWlsYWJsZV9mZWF0dXJlcy5hZGQoIkxMVk1fMTBf MCsiKQotLWVsc2U6Ci0tICAgIHByaW50KCJMTFZNXzEwXzArOiBOTyIpCi0gCi0gaWYgbGx2bV92 ZXJzaW9uID49IExvb3NlVmVyc2lvbigiMTIuMC4wIik6Ci0gICAgIHByaW50KCJMTFZNXzEyXzAr OiBZRVMiKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwMy5wYXRj aCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDA0MjNhZmM5ZTNmOS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mv aXNwYy9wYXRjaGVzL2xsdm0xMi0wMDMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNTA0ICsw LDAgQEAKLUZyb20gMTg1MWQxOGIyMTNkYmFkMTY5OTM3MDc2MTc2YjJkNTUwOTczM2M3NiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlZXBhayBSYWplbmRyYWt1bWFyYW4gPGRlZXBh ay5yYWplbmRyYWt1bWFyYW5AaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMiBKYW4gMjAyMSAyMjox NToxMiAtMDgwMAotU3ViamVjdDogW1BBVENIXSBmaXhlcyAjMTgyMSAtIFJlbW92aW5nIExMVk1H ZXROYW1lKCkgYW5kIHN3aXRjaGluZyB0bwotIExMVk06OlR3aW5lLgotCi0tLS0KLSBzcmMvY3R4 LmNwcCAgICAgIHwgMzA0ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0gc3JjL2N0eC5oICAgICAgICB8ICA3MiArKysrKy0tLS0tLQotIHNyYy9leHByLmNw cCAgICAgfCAgMzYgKysrLS0tCi0gc3JjL2xsdm11dGlsLmNwcCB8ICAxNyAtLS0KLSBzcmMvbGx2 bXV0aWwuaCAgIHwgICA1IC0KLSBzcmMvb3B0LmNwcCAgICAgIHwgMTAzICsrKysrKysrKy0tLS0t LS0KLSA2IGZpbGVzIGNoYW5nZWQsIDI1NSBpbnNlcnRpb25zKCspLCAyODIgZGVsZXRpb25zKC0p Ci0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1pbmRleCA0MmM0ZWEw OWQuLmRlZDUyNGI3MSAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNw cAotQEAgLTEwMjAsOCArMTAyMCw4IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6RW1pdENh c2VMYWJlbChpbnQgdmFsdWUsIGJvb2wgY2hlY2tNYXNrLCBTb3VyY2VQb3MgcG9zCi0gICAgIGxs dm06OkJhc2ljQmxvY2sgKmJiQ2FzZUltcGwgPSBOVUxMOwotICAgICBpZiAoZW1pdEdlblhIYXJk d2FyZU1hc2soKSkgewotICAgICAgICAgLy8gQ3JlYXRlIGJhc2ljIGJsb2NrIHdpdGggYWN0dWFs IGNhc2UgaW1wbGVtZW50YXRpb24KLS0gICAgICAgIHN0ZDo6c3RyaW5nIGJiTmFtZSA9IGJiQ2Fz ZS0+Z2V0TmFtZSgpLnN0cigpICsgIl9pbXBsIjsKLS0gICAgICAgIGJiQ2FzZUltcGwgPSBDcmVh dGVCYXNpY0Jsb2NrKGJiTmFtZS5jX3N0cigpLCBiYkNhc2UpOwotKyAgICAgICAgbGx2bTo6VHdp bmUgYmJOYW1lID0gbGx2bTo6VHdpbmUoYmJDYXNlLT5nZXROYW1lKCkpICsgIl9pbXBsIjsKLSsg ICAgICAgIGJiQ2FzZUltcGwgPSBDcmVhdGVCYXNpY0Jsb2NrKGJiTmFtZSwgYmJDYXNlKTsKLSAg ICAgfQotICNlbmRpZgotIAotQEAgLTExODUsNyArMTE4NSw3IEBAIGJvb2wgRnVuY3Rpb25FbWl0 Q29udGV4dDo6aW5pdExhYmVsQkJsb2NrcyhBU1ROb2RlICpub2RlLCB2b2lkICpkYXRhKSB7Ci0g ICAgIGlmIChjdHgtPmxhYmVsTWFwLmZpbmQobHMtPm5hbWUpICE9IGN0eC0+bGFiZWxNYXAuZW5k KCkpCi0gICAgICAgICBFcnJvcihscy0+cG9zLCAiTXVsdGlwbGUgbGFiZWxzIG5hbWVkIFwiJXNc IiBpbiBmdW5jdGlvbi4iLCBscy0+bmFtZS5jX3N0cigpKTsKLSAgICAgZWxzZSB7Ci0tICAgICAg ICBsbHZtOjpCYXNpY0Jsb2NrICpiYiA9IGN0eC0+Q3JlYXRlQmFzaWNCbG9jayhscy0+bmFtZS5j X3N0cigpKTsKLSsgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJiID0gY3R4LT5DcmVhdGVCYXNp Y0Jsb2NrKGxzLT5uYW1lKTsKLSAgICAgICAgIGN0eC0+bGFiZWxNYXBbbHMtPm5hbWVdID0gYmI7 Ci0gICAgIH0KLSAgICAgcmV0dXJuIHRydWU7Ci1AQCAtMTI5OSw3ICsxMjk5LDcgQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFueShsbHZtOjpWYWx1ZSAqbWFzaykgewotICAg ICAvLyBXZSBjYW4gYWN0dWFsbHkgY2FsbCBlaXRoZXIgb25lLCBzaW5jZSBib3RoIGFyZSBpMzJz IGFzIGZhciBhcwotICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2VybmVkLi4uCi0g ICAgIGxsdm06OkZ1bmN0aW9uICpmbW0gPSBtbVswXS0+ZnVuY3Rpb247Ci0tICAgIHJldHVybiBD YWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIExMVk1HZXROYW1lKG1hc2ssICJfYW55IikpOwotKyAg ICByZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBsbHZtOjpUd2luZShtYXNrLT5nZXRO YW1lKCkpICsgIl9hbnkiKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkFsbChsbHZtOjpWYWx1ZSAqbWFzaykgewotQEAgLTEzMTUsNyArMTMxNSw3IEBAIGxsdm06 OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGwobGx2bTo6VmFsdWUgKm1hc2spIHsKLSAg ICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2luY2UgYm90aCBhcmUgaTMy cyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUgc3lzdGVtIGlzIGNvbmNlcm5lZC4uLgot ICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9uOwotLSAgICByZXR1cm4g Q2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBMTFZNR2V0TmFtZShtYXNrLCAiX2FsbCIpKTsKLSsg ICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgbGx2bTo6VHdpbmUobWFzay0+Z2V0 TmFtZSgpKSArICJfYWxsIik7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250 ZXh0OjpOb25lKGxsdm06OlZhbHVlICptYXNrKSB7Ci1AQCAtMTMzMSw3ICsxMzMxLDcgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vbmUobGx2bTo6VmFsdWUgKm1hc2spIHsK LSAgICAgLy8gV2UgY2FuIGFjdHVhbGx5IGNhbGwgZWl0aGVyIG9uZSwgc2luY2UgYm90aCBhcmUg aTMycyBhcyBmYXIgYXMKLSAgICAgLy8gTExWTSdzIHR5cGUgc3lzdGVtIGlzIGNvbmNlcm5lZC4u LgotICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9uOwotLSAgICByZXR1 cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNrLCBMTFZNR2V0TmFtZShtYXNrLCAiX25vbmUiKSk7 Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIG1hc2ssIGxsdm06OlR3aW5lKG1hc2st PmdldE5hbWUoKSkgKyAiX25vbmUiKTsKLSB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1p dENvbnRleHQ6OkxhbmVNYXNrKGxsdm06OlZhbHVlICp2KSB7Ci1AQCAtMTM0OSw3ICsxMzQ5LDcg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxhbmVNYXNrKGxsdm06OlZhbHVl ICp2KSB7Ci0gICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhlciBvbmUsIHNpbmNlIGJv dGggYXJlIGkzMnMgYXMgZmFyIGFzCi0gICAgIC8vIExMVk0ncyB0eXBlIHN5c3RlbSBpcyBjb25j ZXJuZWQuLi4KLSAgICAgbGx2bTo6RnVuY3Rpb24gKmZtbSA9IG1tWzBdLT5mdW5jdGlvbjsKLS0g ICAgcmV0dXJuIENhbGxJbnN0KGZtbSwgTlVMTCwgdiwgTExWTUdldE5hbWUodiwgIl9tb3Ztc2si KSk7Ci0rICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIHYsIGxsdm06OlR3aW5lKHYtPmdl dE5hbWUoKSkgKyAiX21vdm1zayIpOwotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6TWFza3NBbGxFcXVhbChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2Mikg ewotQEAgLTEzNjQsMTEgKzEzNjQsMTIgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6Ok1hc2tzQWxsRXF1YWwobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIKLSAjZWxz ZQotICAgICBpZiAoZy0+dGFyZ2V0LT5nZXRBcmNoKCkgPT0gQXJjaDo6d2FzbTMyKSB7Ci0gICAg ICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbS0+bW9kdWxlLT5nZXRGdW5jdGlvbigiX193YXNt X2NtcF9tc2tfZXEiKTsKLS0gICAgICAgIHJldHVybiBDYWxsSW5zdChmbW0sIE5VTEwsIHt2MSwg djJ9LCBMTFZNR2V0TmFtZSgid2FzbV9jbXBfbXNrX2VxIiwgdjEsIHYyKSk7Ci0rICAgICAgICBy ZXR1cm4gQ2FsbEluc3QoZm1tLCBOVUxMLCB7djEsIHYyfSwgKChsbHZtOjpUd2luZSgid2FzbV9j bXBfbXNrX2VxXyIpICsgdjEtPmdldE5hbWUoKSkgKyAiXyIpICsgdjItPmdldE5hbWUoKSk7Ci0g ICAgIH0KLSAgICAgbGx2bTo6VmFsdWUgKm1tMSA9IExhbmVNYXNrKHYxKTsKLSAgICAgbGx2bTo6 VmFsdWUgKm1tMiA9IExhbmVNYXNrKHYyKTsKLS0gICAgcmV0dXJuIENtcEluc3QobGx2bTo6SW5z dHJ1Y3Rpb246OklDbXAsIGxsdm06OkNtcEluc3Q6OklDTVBfRVEsIG1tMSwgbW0yLCBMTFZNR2V0 TmFtZSgiZXF1YWwiLCB2MSwgdjIpKTsKLSsgICAgcmV0dXJuIENtcEluc3QobGx2bTo6SW5zdHJ1 Y3Rpb246OklDbXAsIGxsdm06OkNtcEluc3Q6OklDTVBfRVEsIG1tMSwgbW0yLAotKyAgICAgICAg ICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJlcXVhbF8iKSArIHYxLT5nZXROYW1lKCkpICsgIl8i KSArIHYyLT5nZXROYW1lKCkpOwotICNlbmRpZgotIH0KLSAKLUBAIC0xMzkyLDcgKzEzOTMsNyBA QCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0U3RyaW5nUHRyKGNvbnN0IHN0 ZDo6c3RyaW5nICZzdHIpIHsKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpCaXRDYXN0SW5zdChsc3Ry UHRyLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwgInN0cl92b2lkX3B0ciIsIGJibG9jayk7 Ci0gfQotIAotLWxsdm06OkJhc2ljQmxvY2sgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNyZWF0ZUJh c2ljQmxvY2soY29uc3QgY2hhciAqbmFtZSwgbGx2bTo6QmFzaWNCbG9jayAqaW5zZXJ0QWZ0ZXIp IHsKLStsbHZtOjpCYXNpY0Jsb2NrICpGdW5jdGlvbkVtaXRDb250ZXh0OjpDcmVhdGVCYXNpY0Js b2NrKGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLCBsbHZtOjpCYXNpY0Jsb2NrICppbnNlcnRBZnRl cikgewotICAgICBsbHZtOjpCYXNpY0Jsb2NrICpuZXdCQiA9IGxsdm06OkJhc2ljQmxvY2s6OkNy ZWF0ZSgqZy0+Y3R4LCBuYW1lLCBsbHZtRnVuY3Rpb24pOwotICAgICBpZiAoaW5zZXJ0QWZ0ZXIp Ci0gICAgICAgICBuZXdCQi0+bW92ZUFmdGVyKGluc2VydEFmdGVyKTsKLUBAIC0xNDE2LDE0ICsx NDE3LDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJMVZlY1RvQm9vbFZl YyhsbHZtOjpWYWx1ZSAqYikgewotIAotICAgICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7 IGkgPCBhdC0+Z2V0TnVtRWxlbWVudHMoKTsgKytpKSB7Ci0gICAgICAgICAgICAgbGx2bTo6VmFs dWUgKmVsdCA9IEV4dHJhY3RJbnN0KGIsIGkpOwotLSAgICAgICAgICAgIGxsdm06OlZhbHVlICpz ZXh0ID0gU3dpdGNoQm9vbFNpemUoZWx0LCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JTdG9yYWdlVHlw ZSwgTExWTUdldE5hbWUoZWx0LCAiX3RvX2Jvb2x2ZWMiKSk7Ci0rICAgICAgICAgICAgbGx2bTo6 VmFsdWUgKnNleHQgPQotKyAgICAgICAgICAgICAgICBTd2l0Y2hCb29sU2l6ZShlbHQsIExMVk1U eXBlczo6Qm9vbFZlY3RvclN0b3JhZ2VUeXBlLCBsbHZtOjpUd2luZShlbHQtPmdldE5hbWUoKSkg KyAiX3RvX2Jvb2x2ZWMiKTsKLSAgICAgICAgICAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgc2V4 dCwgaSk7Ci0gICAgICAgICB9Ci0gICAgICAgICByZXR1cm4gcmV0OwotICAgICB9IGVsc2Ugewot ICAgICAgICAgLy8gRm9yIG5vbi1hcnJheSB0eXBlcywgY29udmVydCB0byAnTExWTVR5cGVzOjpC b29sVmVjdG9yVHlwZScgaWYKLSAgICAgICAgIC8vIG5lY2Vzc2FyeS4KLS0gICAgICAgIHJldHVy biBTd2l0Y2hCb29sU2l6ZShiLCBMTFZNVHlwZXM6OkJvb2xWZWN0b3JUeXBlLCBMTFZNR2V0TmFt ZShiLCAiX3RvX2Jvb2x2ZWMiKSk7Ci0rICAgICAgICByZXR1cm4gU3dpdGNoQm9vbFNpemUoYiwg TExWTVR5cGVzOjpCb29sVmVjdG9yVHlwZSwgbGx2bTo6VHdpbmUoYi0+Z2V0TmFtZSgpKSArICJf dG9fYm9vbHZlYyIpOwotICAgICB9Ci0gfQotIAotQEAgLTE1NjMsNyArMTU2NSw3IEBAIHN0YXRp YyBpbnQgbEFycmF5VmVjdG9yV2lkdGgobGx2bTo6VHlwZSAqdCkgewotIH0KLSAKLSBsbHZtOjpW YWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rp b246OkJpbmFyeU9wcyBpbnN0LCBsbHZtOjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodjAgPT0gTlVMTCB8fCB2 MSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3Vu dCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMTU3Myw3ICsxNTc1LDcgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3Ry dWN0aW9uOjpCaW5hcnlPcHMgaW4KLSAgICAgbGx2bTo6VHlwZSAqdHlwZSA9IHYwLT5nZXRUeXBl KCk7Ci0gICAgIGludCBhcnJheVNpemUgPSBsQXJyYXlWZWN0b3JXaWR0aCh0eXBlKTsKLSAgICAg aWYgKGFycmF5U2l6ZSA9PSAwKSB7Ci0tICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYm9wID0g bGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShpbnN0LCB2MCwgdjEsIG5hbWUgPyBuYW1lIDog IiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqYm9wID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZShpbnN0LCB2MCwgdjEsIG5hbWUsIGJibG9jayk7Ci0gICAgICAg ICBBZGREZWJ1Z1Bvcyhib3ApOwotICAgICAgICAgcmV0dXJuIGJvcDsKLSAgICAgfSBlbHNlIHsK LUBAIC0xNTkxLDcgKzE1OTMsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkJpbmFyeU9wcyBpbgotICAgICB9Ci0g fQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpOb3RPcGVyYXRvcihsbHZt OjpWYWx1ZSAqdiwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAqdiwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUpIHsKLSAgICAgaWYgKHYgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJl bnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTE2 MDMsMTQgKzE2MDUsMTQgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Ok5vdE9w ZXJhdG9yKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICpuYW1lKQotICAgICBsbHZtOjpUeXBl ICp0eXBlID0gdi0+Z2V0VHlwZSgpOwotICAgICBpbnQgYXJyYXlTaXplID0gbEFycmF5VmVjdG9y V2lkdGgodHlwZSk7Ci0gICAgIGlmIChhcnJheVNpemUgPT0gMCkgewotLSAgICAgICAgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmJpbnN0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZU5vdCh2LCBu YW1lID8gbmFtZSA6ICJub3QiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24g KmJpbnN0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZU5vdCh2LCBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/ICJub3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9z KGJpbnN0KTsKLSAgICAgICAgIHJldHVybiBiaW5zdDsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAg IGxsdm06OlZhbHVlICpyZXQgPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQodHlwZSk7Ci0gICAgICAg ICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgbGx2 bTo6VmFsdWUgKmEgPSBFeHRyYWN0SW5zdCh2LCBpKTsKLS0gICAgICAgICAgICBsbHZtOjpWYWx1 ZSAqb3AgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlTm90KGEsIG5hbWUgPyBuYW1lIDog Im5vdCIsIGJibG9jayk7Ci0rICAgICAgICAgICAgbGx2bTo6VmFsdWUgKm9wID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZU5vdChhLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJub3Qi IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgICAgICBBZGREZWJ1Z1BvcyhvcCk7Ci0gICAgICAg ICAgICAgcmV0ID0gSW5zZXJ0SW5zdChyZXQsIG9wLCBpKTsKLSAgICAgICAgIH0KLUBAIC0xNjM4 LDcgKzE2NDAsNyBAQCBzdGF0aWMgbGx2bTo6VHlwZSAqbEdldE1hdGNoaW5nQm9vbFZlY3RvclR5 cGUobGx2bTo6VHlwZSAqdHlwZSkgewotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6Q21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6T3RoZXJPcHMgaW5zdCwgbGx2bTo6 Q21wSW5zdDo6UHJlZGljYXRlIHByZWQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnYwLCBsbHZtOjpWYWx1ZSAqdjEsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpWYWx1ZSAqdjAsIGxsdm06OlZhbHVlICp2MSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsK LSAgICAgaWYgKHYwID09IE5VTEwgfHwgdjEgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9z KGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwot QEAgLTE2NDgsNyArMTY1MCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpD bXBJbnN0KGxsdm06Okluc3RydWN0aW9uOjpPdGhlck9wcyBpbnN0LCBsbHZtCi0gICAgIGxsdm06 OlR5cGUgKnR5cGUgPSB2MC0+Z2V0VHlwZSgpOwotICAgICBpbnQgYXJyYXlTaXplID0gbEFycmF5 VmVjdG9yV2lkdGgodHlwZSk7Ci0gICAgIGlmIChhcnJheVNpemUgPT0gMCkgewotLSAgICAgICAg bGx2bTo6SW5zdHJ1Y3Rpb24gKmNpID0gbGx2bTo6Q21wSW5zdDo6Q3JlYXRlKGluc3QsIHByZWQs IHYwLCB2MSwgbmFtZSA/IG5hbWUgOiAiY21wIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICpjaSA9Ci0rICAgICAgICAgICAgbGx2bTo6Q21wSW5zdDo6Q3JlYXRlKGluc3Qs IHByZWQsIHYwLCB2MSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAiY21wIiA6IG5hbWUsIGJi bG9jayk7Ci0gICAgICAgICBBZGREZWJ1Z1BvcyhjaSk7Ci0gICAgICAgICByZXR1cm4gY2k7Ci0g ICAgIH0gZWxzZSB7Ci1AQCAtMTY1NywxNCArMTY2MCwxNCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6Q21wSW5zdChsbHZtOjpJbnN0cnVjdGlvbjo6T3RoZXJPcHMgaW5zdCwg bGx2bQotICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheVNpemU7ICsraSkgewotICAg ICAgICAgICAgIGxsdm06OlZhbHVlICphID0gRXh0cmFjdEluc3QodjAsIGkpOwotICAgICAgICAg ICAgIGxsdm06OlZhbHVlICpiID0gRXh0cmFjdEluc3QodjEsIGkpOwotLSAgICAgICAgICAgIGxs dm06OlZhbHVlICpvcCA9IENtcEluc3QoaW5zdCwgcHJlZCwgYSwgYiwgbmFtZSk7Ci0rICAgICAg ICAgICAgbGx2bTo6VmFsdWUgKm9wID0gQ21wSW5zdChpbnN0LCBwcmVkLCBhLCBiLCBuYW1lLmlz VHJpdmlhbGx5RW1wdHkoKSA/ICJjbXAiIDogbmFtZSk7Ci0gICAgICAgICAgICAgcmV0ID0gSW5z ZXJ0SW5zdChyZXQsIG9wLCBpKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiByZXQ7Ci0g ICAgIH0KLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlNtZWFyVW5p Zm9ybShsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U21lYXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAg ICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAg ICByZXR1cm4gTlVMTDsKLUBAIC0xNzA0LDIxICsxNzA3LDE5IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBj aGFyICpuCi0gICAgIHJldHVybiByZXQ7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5 cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6Qml0Q2FzdEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJl dHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBu YW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfYml0Y2FzdCIpOwotLQotLSAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpCaXRDYXN0SW5zdCh2YWx1ZSwgdHlwZSwgbmFtZSwg YmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6Qml0Q2Fz dEluc3QoCi0rICAgICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBs bHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfYml0Y2FzdCIgOiBuYW1lLCBiYmxvY2sp OwotICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3Mo Y3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1A QCAtMTcyOCwyMyArMTcyOSwxOSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 UHRyVG9JbnRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hhciAqbgotICAgICAgICAg Ly8gbm8tb3AgZm9yIHZhcnlpbmcgcG9pbnRlcnM7IHRoZXkncmUgYWxyZWFkeSB2ZWN0b3JzIG9m IGludHMKLSAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkK LS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9wdHIyaW50Iik7Ci0gICAgIGxs dm06OlR5cGUgKnR5cGUgPSBMTFZNVHlwZXM6OlBvaW50ZXJJbnRUeXBlOwotLSAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpQdHJUb0ludEluc3QodmFsdWUsIHR5cGUsIG5h bWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlB0 clRvSW50SW5zdCgKLSsgICAgICAgIHZhbHVlLCB0eXBlLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/IGxsdm06OlR3aW5lKHZhbHVlLT5nZXROYW1lKCkpICsgIl9wdHIyaW50IiA6IG5hbWUsIGJi bG9jayk7Ci0gICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICByZXR1cm4gaW5zdDsKLSB9Ci0g Ci0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpW YWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0g ICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywg bS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0g ICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwg Il9wdHIyaW50Iik7Ci0tCi0gICAgIGxsdm06OlR5cGUgKmZyb21UeXBlID0gdmFsdWUtPmdldFR5 cGUoKTsKLSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihmcm9tVHlwZSkpIHsK LSAgICAgICAgIC8vIHZhcnlpbmcgcG9pbnRlcgotQEAgLTE3NTIsMjcgKzE3NDksMjYgQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAq dmFsdWUsIGxsdm06OlR5cGUgKnQKLSAgICAgICAgICAgICAvLyBhbHJlYWR5IHRoZSByaWdodCB0 eXBlLS1kb25lCi0gICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwotICAgICAgICAgZWxzZSBpZiAo ZnJvbVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA+IHRvVHlwZS0+Z2V0U2NhbGFyU2l6ZUlu Qml0cygpKQotLSAgICAgICAgICAgIHJldHVybiBUcnVuY0luc3QodmFsdWUsIHRvVHlwZSwgbmFt ZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpU d2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIgOiBuYW1lKTsKLSAgICAgICAgIGVs c2UgewotICAgICAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBmcm9tVHlwZS0+Z2V0U2Nh bGFyU2l6ZUluQml0cygpIDwgdG9UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkpOwotLSAgICAg ICAgICAgIHJldHVybiBaRXh0SW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgICAg ICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkg PyBsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIgOiBuYW1lKTsKLSAg ICAgICAgIH0KLSAgICAgfQotIAotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBs bHZtOjpQdHJUb0ludEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6UHRyVG9JbnRJbnN0KAotKyAgICAgICAg dmFsdWUsIHRvVHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2YWx1 ZS0+Z2V0TmFtZSgpKSArICJfcHRyMmludCIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1 Z1BvcyhpbnN0KTsKLSAgICAgcmV0dXJuIGluc3Q7Ci0gfQotIAotLWxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpU eXBlICp0b1R5cGUsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25F bWl0Q29udGV4dDo6SW50VG9QdHJJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAq dG9UeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVM TCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsK LSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwp Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfaW50MnB0ciIpOwotLQotICAg ICBsbHZtOjpUeXBlICpmcm9tVHlwZSA9IHZhbHVlLT5nZXRUeXBlKCk7Ci0gICAgIGlmIChsbHZt Ojppc2E8bGx2bTo6VmVjdG9yVHlwZT4oZnJvbVR5cGUpKSB7Ci0gICAgICAgICAvLyB2YXJ5aW5n IHBvaW50ZXIKLUBAIC0xNzgwLDk1ICsxNzc2LDg3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpJbnRUb1B0ckluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0 Ci0gICAgICAgICAgICAgLy8gZG9uZQotICAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKLSAgICAg ICAgIGVsc2UgaWYgKGZyb21UeXBlLT5nZXRTY2FsYXJTaXplSW5CaXRzKCkgPiB0b1R5cGUtPmdl dFNjYWxhclNpemVJbkJpdHMoKSkKLS0gICAgICAgICAgICByZXR1cm4gVHJ1bmNJbnN0KHZhbHVl LCB0b1R5cGUsIG5hbWUpOwotKyAgICAgICAgICAgIHJldHVybiBUcnVuY0luc3QodmFsdWUsIHRv VHlwZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0 eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2ludDJwdHIiIDogbmFtZSk7 Ci0gICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgZnJv bVR5cGUtPmdldFNjYWxhclNpemVJbkJpdHMoKSA8IHRvVHlwZS0+Z2V0U2NhbGFyU2l6ZUluQml0 cygpKTsKLS0gICAgICAgICAgICByZXR1cm4gWkV4dEluc3QodmFsdWUsIHRvVHlwZSwgbmFtZSk7 Ci0rICAgICAgICAgICAgcmV0dXJuIFpFeHRJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2 aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2ludDJwdHIi IDogbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24g Kmluc3QgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KHZhbHVlLCB0b1R5cGUsIG5hbWUsIGJibG9j ayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OkludFRvUHRySW5z dCgKLSsgICAgICAgIHZhbHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2 bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX2ludDJwdHIiIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZt OjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6VHJ1bmNJbnN0KGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFtZSkgewotK2xsdm06Oklu c3RydWN0aW9uICpGdW5jdGlvbkVtaXRDb250ZXh0OjpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZh bHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBp ZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVy cm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlm IChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfdHJ1 bmMiKTsKLS0KLSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJy YXkgY2FzZSBhcyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBj dXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24g Kmluc3QgPSBuZXcgbGx2bTo6VHJ1bmNJbnN0KHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwot KyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IG5ldyBsbHZtOjpUcnVuY0luc3QoCi0rICAg ICAgICB2YWx1ZSwgdHlwZSwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyBsbHZtOjpUd2luZSh2 YWx1ZS0+Z2V0TmFtZSgpKSArICJfdHJ1bmMiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVi dWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLSBsbHZtOjpJbnN0cnVjdGlv biAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FzdEluc3QobGx2bTo6SW5zdHJ1Y3Rpb246OkNhc3RP cHMgb3AsIGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSkg ewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgICAg ICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJl dHVybiBOVUxMOwotICAgICB9Ci0gCi0tICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBu YW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfY2FzdCIpOwotLQotICAgICAvLyBUT0RPOiB3ZSBz aG91bGQgcHJvYmFibHkgaGFuZGxlIHRoZSBhcnJheSBjYXNlIGFzIGluCi0gICAgIC8vIGUuZy4g Qml0Q2FzdEluc3QoKSwgYnV0IHdlIGRvbid0IGN1cnJlbnRseSBuZWVkIHRoYXQgZnVuY3Rpb25h bGl0eQotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVh dGUob3AsIHZhbHVlLCB0eXBlLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlv biAqaW5zdCA9IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoCi0rICAgICAgICBvcCwgdmFsdWUsIHR5 cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUo KSkgKyAiX2Nhc3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0g ICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6RlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6RlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAg cmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAg IG5hbWUgPSBMTFZNR2V0TmFtZSh2YWx1ZSwgIl9jYXN0Iik7Ci0tCi0gICAgIC8vIFRPRE86IHdl IHNob3VsZCBwcm9iYWJseSBoYW5kbGUgdGhlIGFycmF5IGNhc2UgYXMgaW4KLSAgICAgLy8gZS5n LiBCaXRDYXN0SW5zdCgpLCBidXQgd2UgZG9uJ3QgY3VycmVudGx5IG5lZWQgdGhhdCBmdW5jdGlv bmFsaXR5Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbGx2bTo6Q2FzdEluc3Q6OkNy ZWF0ZUZQQ2FzdCh2YWx1ZSwgdHlwZSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmluc3QgPSBsbHZtOjpDYXN0SW5zdDo6Q3JlYXRlRlBDYXN0KAotKyAgICAgICAgdmFs dWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdl dE5hbWUoKSkgKyAiX2Nhc3QiIDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5z dCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rp b25FbWl0Q29udGV4dDo6U0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0 eXBlLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1p dENvbnRleHQ6OlNFeHRJbnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwg Y29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAg ICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAg ICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAg ICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVlLCAiX3NleHQiKTsKLS0KLSAgICAgLy8gVE9ETzog d2Ugc2hvdWxkIHByb2JhYmx5IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAvLyBl LmcuIEJpdENhc3RJbnN0KCksIGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0 aW9uYWxpdHkKLS0gICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6U0V4dElu c3QodmFsdWUsIHR5cGUsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICpp bnN0ID0gbmV3IGxsdm06OlNFeHRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gbGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3NleHQi IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBp bnN0OwotIH0KLSAKLS1sbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6WkV4 dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpu YW1lKSB7Ci0rbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlpFeHRJbnN0 KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUpIHsKLSAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAg ICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKQotLSAgICAgICAgbmFtZSA9IExMVk1HZXRO YW1lKHZhbHVlLCAiX3pleHQiKTsKLS0KLSAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIHByb2JhYmx5 IGhhbmRsZSB0aGUgYXJyYXkgY2FzZSBhcyBpbgotICAgICAvLyBlLmcuIEJpdENhc3RJbnN0KCks IGJ1dCB3ZSBkb24ndCBjdXJyZW50bHkgbmVlZCB0aGF0IGZ1bmN0aW9uYWxpdHkKLS0gICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPSBuZXcgbGx2bTo6WkV4dEluc3QodmFsdWUsIHR5cGUsIG5h bWUsIGJibG9jayk7Ci0rICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0gbmV3IGxsdm06OlpF eHRJbnN0KAotKyAgICAgICAgdmFsdWUsIHR5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8g bGx2bTo6VHdpbmUodmFsdWUtPmdldE5hbWUoKSkgKyAiX3pleHQiIDogbmFtZSwgYmJsb2NrKTsK LSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBpbnN0OwotIH0KLUBAIC0xOTEz LDE0ICsxOTAxLDE1IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjphcHBseVZh cnlpbmdHRVAobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZhCi0gICAgICAgICBzY2FsZSA9 IFNtZWFyVW5pZm9ybShzY2FsZSk7Ci0gICAgICAgICBBc3NlcnQoaW5kZXggIT0gTlVMTCk7Ci0g ICAgICAgICAvLyBvZmZzZXQgPSBpbmRleCAqIHNjYWxlCi0tICAgICAgICBvZmZzZXQgPSBCaW5h cnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBzY2FsZSwgaW5kZXgsIExMVk1HZXRO YW1lKCJtdWwiLCBzY2FsZSwgaW5kZXgpKTsKLSsgICAgICAgIG9mZnNldCA9IEJpbmFyeU9wZXJh dG9yKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHNjYWxlLCBpbmRleCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11bF8iKSArIHNjYWxlLT5nZXROYW1l KCkpICsgIl8iKSArIGluZGV4LT5nZXROYW1lKCkpOwotICAgICB9Ci0gCi0gICAgIC8vIEZvciA2 NC1iaXQgdGFyZ2V0cywgaWYgd2UndmUgYmVlbiBkb2luZyBvdXIgb2Zmc2V0IGNhbGN1bGF0aW9u cyBpbgotICAgICAvLyAzMiBiaXRzLCB3ZSBzdGlsbCBoYXZlIHRvIGNvbnZlcnQgdG8gYSA2NC1i aXQgdmFsdWUgYmVmb3JlIHdlCi0gICAgIC8vIGFjdHVhbGx5IGFkZCB0aGUgb2Zmc2V0IHRvIHRo ZSBwb2ludGVyLgotICAgICBpZiAoZy0+dGFyZ2V0LT5pczMyQml0KCkgPT0gZmFsc2UgJiYgZy0+ b3B0LmZvcmNlMzJCaXRBZGRyZXNzaW5nID09IHRydWUpCi0tICAgICAgICBvZmZzZXQgPSBTRXh0 SW5zdChvZmZzZXQsIExMVk1UeXBlczo6SW50NjRWZWN0b3JUeXBlLCBMTFZNR2V0TmFtZShvZmZz ZXQsICJfdG9fNjQiKSk7Ci0rICAgICAgICBvZmZzZXQgPSBTRXh0SW5zdChvZmZzZXQsIExMVk1U eXBlczo6SW50NjRWZWN0b3JUeXBlLCBsbHZtOjpUd2luZShvZmZzZXQtPmdldE5hbWUoKSkgKyAi X3RvXzY0Iik7Ci0gCi0gICAgIC8vIFNtZWFyIG91dCB0aGUgcG9pbnRlciB0byBiZSB2YXJ5aW5n OyBlaXRoZXIgdGhlIGJhc2UgcG9pbnRlciBvciB0aGUKLSAgICAgLy8gaW5kZXggbXVzdCBiZSB2 YXJ5aW5nIGZvciB0aGlzIG1ldGhvZCB0byBiZSBjYWxsZWQuCi1AQCAtMTkyOSw3ICsxOTE4LDcg QEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OmFwcGx5VmFyeWluZ0dFUChsbHZt OjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmEKLSAgICAgbGx2bTo6VmFsdWUgKnZhcnlpbmdQdHIg PSBiYXNlSXNVbmlmb3JtID8gU21lYXJVbmlmb3JtKGJhc2VQdHIpIDogYmFzZVB0cjsKLSAKLSAg ICAgLy8gbmV3UHRyID0gcHRyICsgb2Zmc2V0Ci0tICAgIHJldHVybiBCaW5hcnlPcGVyYXRvcihs bHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2YXJ5aW5nUHRyLCBvZmZzZXQsIExMVk1HZXROYW1lKGJh c2VQdHIsICJfb2Zmc2V0IikpOwotKyAgICByZXR1cm4gQmluYXJ5T3BlcmF0b3IobGx2bTo6SW5z dHJ1Y3Rpb246OkFkZCwgdmFyeWluZ1B0ciwgb2Zmc2V0LCBsbHZtOjpUd2luZShiYXNlUHRyLT5n ZXROYW1lKCkpICsgIl9vZmZzZXQiKTsKLSB9Ci0gCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0 OjpNYXRjaEludGVnZXJUeXBlcyhsbHZtOjpWYWx1ZSAqKnYwLCBsbHZtOjpWYWx1ZSAqKnYxKSB7 Ci1AQCAtMjAwNiwxMyArMTk5NSwxMyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6TWFrZVNsaWNlUG9pbnRlcihsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZQotICAgICBs bHZtOjpTdHJ1Y3RUeXBlICpzdCA9IGxsdm06OlN0cnVjdFR5cGU6OmdldCgqZy0+Y3R4LCBlbHRU eXBlcyk7Ci0gCi0gICAgIGxsdm06OlZhbHVlICpyZXQgPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQo c3QpOwotLSAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgcHRyLCAwLCBMTFZNR2V0TmFtZShyZXQs ICJfc2xpY2VfcHRyIikpOwotLSAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb2Zmc2V0LCAxLCBM TFZNR2V0TmFtZShyZXQsICJfc2xpY2Vfb2Zmc2V0IikpOwotKyAgICByZXQgPSBJbnNlcnRJbnN0 KHJldCwgcHRyLCAwLCBsbHZtOjpUd2luZShyZXQtPmdldE5hbWUoKSkgKyAiX3NsaWNlX3B0ciIp OwotKyAgICByZXQgPSBJbnNlcnRJbnN0KHJldCwgb2Zmc2V0LCAxLCBsbHZtOjpUd2luZShyZXQt PmdldE5hbWUoKSkgKyAiX3NsaWNlX29mZnNldCIpOwotICAgICByZXR1cm4gcmV0OwotIH0KLSAK LSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RWxlbWVudFB0ckluc3QobGx2 bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZhbHVlICppbmRleCwgY29uc3QgVHlwZSAqcHRyUmVm VHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAo YmFzZVB0ciA9PSBOVUxMIHx8IGluZGV4ID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBA IC0yMDY1LDggKzIwNTQsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0 RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OgotICAgICAgICAgLy8g dW5pZm9ybSwgc28ganVzdCBlbWl0IHRoZSByZWd1bGFyIExMVk0gR0VQIGluc3RydWN0aW9uCi0g ICAgICAgICBsbHZtOjpWYWx1ZSAqaW5kWzFdID0ge2luZGV4fTsKLSAgICAgICAgIGxsdm06OkFy cmF5UmVmPGxsdm06OlZhbHVlICo+IGFycmF5UmVmKCZpbmRbMF0sICZpbmRbMV0pOwotLSAgICAg ICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc3QgPQotLSAgICAgICAgICAgIGxsdm06OkdldEVsZW1l bnRQdHJJbnN0OjpDcmVhdGUoUFRZUEUoYmFzZVB0ciksIGJhc2VQdHIsIGFycmF5UmVmLCBuYW1l ID8gbmFtZSA6ICJnZXAiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmlu c3QgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNl UHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ICJnZXAi IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgICAgIEFkZERlYnVnUG9zKGluc3QpOwotICAgICAgICAg cmV0dXJuIGluc3Q7Ci0gICAgIH0gZWxzZQotQEAgLTIwNzQsNyArMjA2Myw3IEBAIGxsdm06OlZh bHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAq YmFzZVB0ciwgbGx2bTo6Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgbGx2bTo6VmFsdWUgKmlu ZGV4MCwgbGx2bTo6VmFsdWUgKmluZGV4MSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVHlwZSAqcHRyUmVmVHlwZSwgY29uc3QgY2hh ciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBUeXBlICpwdHJSZWZUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkg ewotICAgICBpZiAoYmFzZVB0ciA9PSBOVUxMIHx8IGluZGV4MCA9PSBOVUxMIHx8IGluZGV4MSA9 PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+ IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjExNCw4ICsyMTAzLDggQEAgbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdldEVsZW1lbnRQdHJJbnN0KGxsdm06OlZhbHVl ICpiYXNlUHRyLCBsbHZtOjoKLSAgICAgICAgIC8vIHVuaWZvcm0sIHNvIGp1c3QgZW1pdCB0aGUg cmVndWxhciBMTFZNIEdFUCBpbnN0cnVjdGlvbgotICAgICAgICAgbGx2bTo6VmFsdWUgKmluZGlj ZXNbMl0gPSB7aW5kZXgwLCBpbmRleDF9OwotICAgICAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6 VmFsdWUgKj4gYXJyYXlSZWYoJmluZGljZXNbMF0sICZpbmRpY2VzWzJdKTsKLS0gICAgICAgIGxs dm06Okluc3RydWN0aW9uICppbnN0ID0KLS0gICAgICAgICAgICBsbHZtOjpHZXRFbGVtZW50UHRy SW5zdDo6Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwgbmFtZSA/IG5h bWUgOiAiZ2VwIiwgYmJsb2NrKTsKLSsgICAgICAgIGxsdm06Okluc3RydWN0aW9uICppbnN0ID0g bGx2bTo6R2V0RWxlbWVudFB0ckluc3Q6OkNyZWF0ZShQVFlQRShiYXNlUHRyKSwgYmFzZVB0ciwg YXJyYXlSZWYsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAiZ2VwIiA6IG5h bWUsIGJibG9jayk7Ci0gICAgICAgICBBZGREZWJ1Z1BvcyhpbnN0KTsKLSAgICAgICAgIHJldHVy biBpbnN0OwotICAgICB9IGVsc2UgewotQEAgLTIxMzgsNyArMjEyNyw3IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRFbGVtZW50UHRySW5zdChsbHZtOjpWYWx1ZSAqYmFz ZVB0ciwgbGx2bTo6Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpB ZGRFbGVtZW50T2Zmc2V0KGxsdm06OlZhbHVlICpmdWxsQmFzZVB0ciwgaW50IGVsZW1lbnROdW0s IGNvbnN0IFR5cGUgKnB0clJlZlR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwgY29uc3QgUG9pbnRlclR5cGUg KipyZXN1bHRQdHJUeXBlKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGNvbnN0IFBvaW50ZXJUeXBl ICoqcmVzdWx0UHRyVHlwZSkgewotICAgICBpZiAocmVzdWx0UHRyVHlwZSAhPSBOVUxMKQotICAg ICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIHB0clJlZlR5cGUgIT0gTlVMTCk7Ci0gCi1AQCAt MjE5NSw4ICsyMTg0LDggQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFkZEVs ZW1lbnRPZmZzZXQobGx2bTo6VmFsdWUgKmZ1bGxCYXNlUHRyLCBpbnQKLSAgICAgICAgIC8vIElm IHRoZSBwb2ludGVyIGlzIHVuaWZvcm0sIHdlIGNhbiB1c2UgdGhlIHJlZ3VsYXIgTExWTSBHRVAu Ci0gICAgICAgICBsbHZtOjpWYWx1ZSAqb2Zmc2V0c1syXSA9IHtMTFZNSW50MzIoMCksIExMVk1J bnQzMihlbGVtZW50TnVtKX07Ci0gICAgICAgICBsbHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAq PiBhcnJheVJlZigmb2Zmc2V0c1swXSwgJm9mZnNldHNbMl0pOwotLSAgICAgICAgcmVzdWx0UHRy ID0KLS0gICAgICAgICAgICBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6Q3JlYXRlKFBUWVBFKGJh c2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwgbmFtZSA/IG5hbWUgOiAic3RydWN0X29mZnNldCIs IGJibG9jayk7Ci0rICAgICAgICByZXN1bHRQdHIgPSBsbHZtOjpHZXRFbGVtZW50UHRySW5zdDo6 Q3JlYXRlKFBUWVBFKGJhc2VQdHIpLCBiYXNlUHRyLCBhcnJheVJlZiwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVt cHR5KCkgPyAic3RydWN0X29mZnNldCIgOiBuYW1lLCBiYmxvY2spOwotICAgICB9IGVsc2Ugewot ICAgICAgICAgLy8gT3RoZXJ3aXNlIGRvIHRoZSBtYXRoIHRvIGZpbmQgdGhlIG9mZnNldCBhbmQg YWRkIGl0IHRvIHRoZSBnaXZlbgotICAgICAgICAgLy8gdmFyeWluZyBwb2ludGVycwotQEAgLTIy MzcsNyArMjIyNiw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBZGRFbGVt ZW50T2Zmc2V0KGxsdm06OlZhbHVlICpmdWxsQmFzZVB0ciwgaW50Ci0gICAgICAgICByZXR1cm4g cmVzdWx0UHRyOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U3dp dGNoQm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0 IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6U3dpdGNo Qm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxs dm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIGlmICgodmFsdWUgPT0gTlVMTCkgfHwgKHRvVHlwZSA9 PSBOVUxMKSkgewotICAgICAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQg PiAwKTsKLSAgICAgICAgIHJldHVybiBOVUxMOwotQEAgLTIyNDgsMjAgKzIyMzcsMTggQEAgbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OlN3aXRjaEJvb2xTaXplKGxsdm06OlZhbHVl ICp2YWx1ZSwgbGx2bTo6VHlwZQotICAgICBsbHZtOjpWYWx1ZSAqbmV3Qm9vbCA9IHZhbHVlOwot ICAgICBpZiAoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCktPmdldFR5cGVTaXplSW5CaXRzKGZy b21UeXBlKSA+Ci0gICAgICAgICBnLT50YXJnZXQtPmdldERhdGFMYXlvdXQoKS0+Z2V0VHlwZVNp emVJbkJpdHModG9UeXBlKSkgewotLSAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAg ICAgICBuYW1lID0gTExWTUdldE5hbWUodmFsdWUsICJfc3dpdGNoQm9vbCIpOwotLSAgICAgICAg bmV3Qm9vbCA9IFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lKTsKLSsgICAgICAgIG5ld0Jv b2wgPQotKyAgICAgICAgICAgIFRydW5jSW5zdCh2YWx1ZSwgdG9UeXBlLCBuYW1lLmlzVHJpdmlh bGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2YWx1ZS0+Z2V0TmFtZSgpKSArICJfc3dpdGNoQm9v bCIpIDogbmFtZSk7Ci0gICAgIH0gZWxzZSBpZiAoZy0+dGFyZ2V0LT5nZXREYXRhTGF5b3V0KCkt PmdldFR5cGVTaXplSW5CaXRzKGZyb21UeXBlKSA8Ci0gICAgICAgICAgICAgICAgZy0+dGFyZ2V0 LT5nZXREYXRhTGF5b3V0KCktPmdldFR5cGVTaXplSW5CaXRzKHRvVHlwZSkpIHsKLS0gICAgICAg IGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHZhbHVl LCAiX3N3aXRjaEJvb2wiKTsKLS0gICAgICAgIG5ld0Jvb2wgPSBTRXh0SW5zdCh2YWx1ZSwgdG9U eXBlLCBuYW1lKTsKLSsgICAgICAgIG5ld0Jvb2wgPQotKyAgICAgICAgICAgIFNFeHRJbnN0KHZh bHVlLCB0b1R5cGUsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHZhbHVl LT5nZXROYW1lKCkpICsgIl9zd2l0Y2hCb29sIikgOiBuYW1lKTsKLSAgICAgfQotIAotICAgICBy ZXR1cm4gbmV3Qm9vbDsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OkxvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnR5cGUsIGNvbnN0IGNoYXIg Km5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2 bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUp IHsKLSAgICAgaWYgKHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBv cywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMjI3MCwx MyArMjI1NywxMyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3Qo bGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSwgYwotICAgICBsbHZtOjpQb2ludGVy VHlwZSAqcHQgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBl KCkpOwotICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgcHQgIT0gTlVMTCk7Ci0gCi0tICAgIGlm IChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUocHRyLCAiX2xvYWQi KTsKLS0KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgbGx2 bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHQtPmdldFBvaW50ZXJFbGVt ZW50VHlwZSgpLCBwdHIsIG5hbWUsIGJibG9jayk7Ci0rICAgIGxsdm06OkxvYWRJbnN0ICppbnN0 ID0KLSsgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5zdChwdC0+Z2V0UG9pbnRlckVsZW1lbnRUeXBl KCksIHB0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1w dHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUsIGJi bG9jayk7Ci0gI2Vsc2UKLS0gICAgbGx2bTo6TG9hZEluc3QgKmluc3QgPSBuZXcgbGx2bTo6TG9h ZEluc3QocHRyLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpMb2FkSW5zdCAqaW5zdCA9Ci0r ICAgICAgICBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/ IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUsIGJibG9jayk7 Ci0gI2VuZGlmCi0gCi0gICAgIGlmIChnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5ICYmIGxsdm06 OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHB0LT5nZXRFbGVtZW50VHlwZSgpKSkgewotQEAg LTIzMDcsOCArMjI5NCw4IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2Fk SW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlLCBjCi0gc3RhdGljIGxsdm06 OlZhbHVlICpsRmluYWxTbGljZU9mZnNldChGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxsdm06 OlZhbHVlICpwdHIsIGNvbnN0IFBvaW50ZXJUeXBlICoqcHRyVHlwZSkgewotICAgICBBc3NlcnQo Q2FzdFR5cGU8UG9pbnRlclR5cGU+KCpwdHJUeXBlKSAhPSBOVUxMKTsKLSAKLS0gICAgbGx2bTo6 VmFsdWUgKnNsaWNlUHRyID0gY3R4LT5FeHRyYWN0SW5zdChwdHIsIDAsIExMVk1HZXROYW1lKHB0 ciwgIl9wdHIiKSk7Ci0tICAgIGxsdm06OlZhbHVlICpzbGljZU9mZnNldCA9IGN0eC0+RXh0cmFj dEluc3QocHRyLCAxLCBMTFZNR2V0TmFtZShwdHIsICJfb2Zmc2V0IikpOwotKyAgICBsbHZtOjpW YWx1ZSAqc2xpY2VQdHIgPSBjdHgtPkV4dHJhY3RJbnN0KHB0ciwgMCwgbGx2bTo6VHdpbmUocHRy LT5nZXROYW1lKCkpICsgIl9wdHIiKTsKLSsgICAgbGx2bTo6VmFsdWUgKnNsaWNlT2Zmc2V0ID0g Y3R4LT5FeHRyYWN0SW5zdChwdHIsIDEsIGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJf b2Zmc2V0Iik7Ci0gCi0gICAgIC8vIHNsaWNlUHRyIHNob3VsZCBiZSBhIHBvaW50ZXIgdG8gYW4g c29hLXdpZHRoIHdpZGUgYXJyYXkgb2YgdGhlCi0gICAgIC8vIGZpbmFsIGF0b21pYy9lbnVtL3Bv aW50ZXIgdHlwZQotQEAgLTIzMjcsMTQgKzIzMTQsMTQgQEAgc3RhdGljIGxsdm06OlZhbHVlICps RmluYWxTbGljZU9mZnNldChGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgsIGxsdm06OlZhbHVlICpw dHIKLSAgICAgICAgIHNsaWNlUHRyID0gY3R4LT5CaXRDYXN0SW5zdChzbGljZVB0ciwgKCpwdHJU eXBlKS0+TExWTVR5cGUoZy0+Y3R4KSk7Ci0gCi0gICAgIC8vIEFuZCBmaW5hbGx5IGluZGV4IGJh c2VkIG9uIHRoZSBzbGljZSBvZmZzZXQKLS0gICAgcmV0dXJuIGN0eC0+R2V0RWxlbWVudFB0cklu c3Qoc2xpY2VQdHIsIHNsaWNlT2Zmc2V0LCAqcHRyVHlwZSwgTExWTUdldE5hbWUoc2xpY2VQdHIs ICJfZmluYWxfZ2VwIikpOwotKyAgICByZXR1cm4gY3R4LT5HZXRFbGVtZW50UHRySW5zdChzbGlj ZVB0ciwgc2xpY2VPZmZzZXQsICpwdHJUeXBlLCBsbHZtOjpUd2luZShzbGljZVB0ci0+Z2V0TmFt ZSgpKSArICJfZmluYWxfZ2VwIik7Ci0gfQotIAotIC8qKiBVdGlsaXR5IHJvdXRpbmUgdGhhdCBs b2FkcyBmcm9tIGEgdW5pZm9ybSBwb2ludGVyIHRvIHNvYTw+IGRhdGEsCi0gICAgIHJldHVybmlu ZyBhIHJlZ3VsYXIgdW5pZm9ybSAobm9uLVNPQSByZXN1bHQpLgotICAqLwotIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0Ojpsb2FkVW5pZm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0 ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgY29uc3QgVHlwZSAqdW5p ZlR5cGUgPSBwdHJUeXBlLT5HZXRCYXNlVHlwZSgpLT5HZXRBc1VuaWZvcm1UeXBlKCk7Ci0gCi0g ICAgIGNvbnN0IENvbGxlY3Rpb25UeXBlICpjdCA9IENhc3RUeXBlPENvbGxlY3Rpb25UeXBlPihw dHJUeXBlLT5HZXRCYXNlVHlwZSgpKTsKLUBAIC0yMzYzLDcgKzIzNTAsNyBAQCBsbHZtOjpWYWx1 ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6bG9hZFVuaWZvcm1Gcm9tU09BKGxsdm06OlZhbHVlICpw dHIsIGxsdm06OlZhbAotIH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6 TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUg KnB0clJlZlR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgb25lX2VsZW0pIHsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGJvb2wgb25l X2VsZW0pIHsKLSAgICAgaWYgKHB0ciA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3Vy cmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAt MjM3MSw5ICsyMzU4LDYgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkxvYWRJ bnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLAotIAotICAgICBBc3NlcnRQ b3MoY3VycmVudFBvcywgcHRyUmVmVHlwZSAhPSBOVUxMICYmIG1hc2sgIT0gTlVMTCk7Ci0gCi0t ICAgIGlmIChuYW1lID09IE5VTEwpCi0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUocHRyLCAi X2xvYWQiKTsKLS0KLSAgICAgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGU7Ci0gICAgIGNvbnN0 IFR5cGUgKmVsVHlwZTsKLSAgICAgaWYgKENhc3RUeXBlPFJlZmVyZW5jZVR5cGU+KHB0clJlZlR5 cGUpICE9IE5VTEwpIHsKLUBAIC0yMzkzLDcgKzIzNzcsOCBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1h c2ssCi0gCi0gICAgIGlmIChwdHJUeXBlLT5Jc1VuaWZvcm1UeXBlKCkpIHsKLSAgICAgICAgIGlm IChwdHJUeXBlLT5Jc1NsaWNlKCkpIHsKLS0gICAgICAgICAgICByZXR1cm4gbG9hZFVuaWZvcm1G cm9tU09BKHB0ciwgbWFzaywgcHRyVHlwZSwgbmFtZSk7Ci0rICAgICAgICAgICAgcmV0dXJuIGxv YWRVbmlmb3JtRnJvbVNPQShwdHIsIG1hc2ssIHB0clR5cGUsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2lu ZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUpOwotICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgICAvLyBGSVhNRTogc2FtZSBpc3N1ZSBhcyBhYm92ZSBsb2FkIGluc3QgcmVn YXJkaW5nIGFsaWdubWVudC4uLgotICAgICAgICAgICAgIC8vCi1AQCAtMjQwNSwxMSArMjM5MCwx NSBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6TG9hZEluc3QobGx2bTo6VmFs dWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssCi0gICAgICAgICAgICAgY29uc3QgQXRvbWljVHlw ZSAqYXRvbWljVHlwZSA9IENhc3RUeXBlPEF0b21pY1R5cGU+KHB0clR5cGUtPkdldEJhc2VUeXBl KCkpOwotIAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8PSBJU1BDX0xMVk1fMTBfMAotLSAgICAg ICAgICAgIGxsdm06OkxvYWRJbnN0ICppbnN0ID0gbmV3IGxsdm06OkxvYWRJbnN0KHB0ciwgbmFt ZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2spOwotKyAgICAgICAgICAgIGxsdm06 OkxvYWRJbnN0ICppbnN0ID0KLSsgICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0 ciwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUocHRyLT5nZXROYW1lKCkp ICsgIl9sb2FkIikgOiBuYW1lLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZmFsc2UgLyogbm90IHZvbGF0aWxlICovLCBiYmxvY2spOwotICNlbHNlIC8vIExMVk0gMTEuMCsK LSAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZSAqcHRyX3R5cGUgPSBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpOwotICAgICAgICAgICAgIGxsdm06 OkxvYWRJbnN0ICppbnN0ID0KLS0gICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KHB0 cl90eXBlLT5nZXRQb2ludGVyRWxlbWVudFR5cGUoKSwgcHRyLCBuYW1lLCBmYWxzZSAvKiBub3Qg dm9sYXRpbGUgKi8sIGJibG9jayk7Ci0rICAgICAgICAgICAgICAgIG5ldyBsbHZtOjpMb2FkSW5z dChwdHJfdHlwZS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3 aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfbG9hZCIpIDogbmFtZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgYmJsb2NrKTsKLSAj ZW5kaWYKLSAKLSAgICAgICAgICAgICBpZiAoYXRvbWljVHlwZSAhPSBOVUxMICYmIGF0b21pY1R5 cGUtPklzVmFyeWluZ1R5cGUoKSkgewotQEAgLTI0MzMsNyArMjQyMiw4IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpW YWx1ZSAqbWFzaywKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIC8vIE90aGVyd2lzZSB3ZSBzaG91 bGQgaGF2ZSBhIHZhcnlpbmcgcHRyIGFuZCBpdCdzIHRpbWUgZm9yIGEKLSAgICAgICAgIC8vIGdh dGhlci4KLS0gICAgICAgIGxsdm06OlZhbHVlICpnYXRoZXJfcmVzdWx0ID0gZ2F0aGVyKHB0ciwg cHRyVHlwZSwgR2V0RnVsbE1hc2soKSwgbmFtZSk7Ci0rICAgICAgICBsbHZtOjpWYWx1ZSAqZ2F0 aGVyX3Jlc3VsdCA9IGdhdGhlcihwdHIsIHB0clR5cGUsIEdldEZ1bGxNYXNrKCksCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1w dHkoKSA/IChsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX2xvYWQiKSA6IG5hbWUpOwot ICAgICAgICAgaWYgKCFvbmVfZWxlbSkKLSAgICAgICAgICAgICByZXR1cm4gZ2F0aGVyX3Jlc3Vs dDsKLSAKLUBAIC0yNDUzLDE5ICsyNDQzLDE5IEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSAg ICAgICAgIC8vIFdlIGNhbiBhY3R1YWxseSBjYWxsIGVpdGhlciBvbmUsIHNpbmNlIGJvdGggYXJl IGkzMnMgYXMgZmFyIGFzCi0gICAgICAgICAvLyBMTFZNJ3MgdHlwZSBzeXN0ZW0gaXMgY29uY2Vy bmVkLi4uCi0gICAgICAgICBsbHZtOjpGdW5jdGlvbiAqZm1tID0gbW1bMF0tPmZ1bmN0aW9uOwot LSAgICAgICAgbGx2bTo6VmFsdWUgKmludF9tYXNrID0gQ2FsbEluc3QoZm1tLCBOVUxMLCBtYXNr LCBMTFZNR2V0TmFtZShtYXNrLCAiX21vdm1zayIpKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICpp bnRfbWFzayA9IENhbGxJbnN0KGZtbSwgTlVMTCwgbWFzaywgbGx2bTo6VHdpbmUobWFzay0+Z2V0 TmFtZSgpKSArICJfbW92bXNrIik7Ci0gICAgICAgICBzdGQ6OnZlY3RvcjxTeW1ib2wgKj4gbHo7 Ci0gICAgICAgICBtLT5zeW1ib2xUYWJsZS0+TG9va3VwRnVuY3Rpb24oIl9fY291bnRfdHJhaWxp bmdfemVyb3NfaTY0IiwgJmx6KTsKLSAgICAgICAgIGxsdm06OkZ1bmN0aW9uICpmbHogPSBselsw XS0+ZnVuY3Rpb247Ci0tICAgICAgICBsbHZtOjpWYWx1ZSAqZWxlbV9pZHggPSBDYWxsSW5zdChm bHosIE5VTEwsIGludF9tYXNrLCBMTFZNR2V0TmFtZShtYXNrLCAiX2NseiIpKTsKLS0gICAgICAg IGxsdm06OlZhbHVlICplbGVtID0gbGx2bTo6RXh0cmFjdEVsZW1lbnRJbnN0OjpDcmVhdGUoZ2F0 aGVyX3Jlc3VsdCwgZWxlbV9pZHgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKGdhdGhlcl9yZXN1bHQsICJf dW1hc2tlZF9lbGVtIiksIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpWYWx1ZSAqZWxlbV9pZHgg PSBDYWxsSW5zdChmbHosIE5VTEwsIGludF9tYXNrLCBsbHZtOjpUd2luZShtYXNrLT5nZXROYW1l KCkpICsgIl9jbHoiKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICplbGVtID0gbGx2bTo6RXh0cmFj dEVsZW1lbnRJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgZ2F0aGVyX3Jlc3VsdCwgZWxlbV9p ZHgsIGxsdm06OlR3aW5lKGdhdGhlcl9yZXN1bHQtPmdldE5hbWUoKSkgKyAiX3VtYXNrZWRfZWxl bSIsIGJibG9jayk7Ci0gICAgICAgICByZXR1cm4gZWxlbTsKLSAgICAgfQotIH0KLSAKLSBsbHZt OjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Z2F0aGVyKGxsdm06OlZhbHVlICpwdHIsIGNv bnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBsbHZtOjpWYWx1ZSAqbWFzaywKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpIHsKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lKSB7Ci0gICAgIC8vIFdlIHNob3VsZCBoYXZlIGEgdmFyeWluZyBwb2ludGVyIGlmIHdlIGdl dCBoZXJlLi4uCi0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBwdHJUeXBlLT5Jc1ZhcnlpbmdU eXBlKCkpOwotIAotQEAgLTI2MDIsNyArMjU5Miw4IEBAIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4 dDo6YWRkR1NNZXRhZGF0YShsbHZtOjpWYWx1ZSAqdiwgU291cmNlUG9zIHBvcykgewotICAgICBp bnN0LT5zZXRNZXRhZGF0YSgibGFzdF9jb2x1bW4iLCBtZCk7Ci0gfQotIAotLWxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBj b25zdCBjaGFyICpuYW1lLCBpbnQgYWxpZ24sIGJvb2wgYXRFbnRyeUJsb2NrKSB7Ci0rbGx2bTo6 VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QobGx2bTo6VHlwZSAqbGx2bVR5 cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lLCBpbnQgYWxpZ24sCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhdEVudHJ5QmxvY2spIHsKLSAgICAg aWYgKGxsdm1UeXBlID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBt LT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLUBAIC0yNjE1LDEyICsy NjA2LDEyIEBAIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxs dm06OlR5cGUgKmxsdm1UeXBlLCBjb25zdCBjaGFyICpuCi0gICAgICAgICBsbHZtOjpJbnN0cnVj dGlvbiAqcmV0SW5zdCA9IGFsbG9jYUJsb2NrLT5nZXRUZXJtaW5hdG9yKCk7Ci0gICAgICAgICBB c3NlcnRQb3MoY3VycmVudFBvcywgcmV0SW5zdCk7Ci0gICAgICAgICB1bnNpZ25lZCBBUyA9IGxs dm1GdW5jdGlvbi0+Z2V0UGFyZW50KCktPmdldERhdGFMYXlvdXQoKS5nZXRBbGxvY2FBZGRyU3Bh Y2UoKTsKLS0gICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxsb2NhSW5zdChsbHZtVHlwZSwgQVMs IG5hbWUgPyBuYW1lIDogIiIsIHJldEluc3QpOwotKyAgICAgICAgaW5zdCA9IG5ldyBsbHZtOjpB bGxvY2FJbnN0KGxsdm1UeXBlLCBBUywgbmFtZSwgcmV0SW5zdCk7Ci0gICAgIH0gZWxzZSB7Ci0g ICAgICAgICAvLyBVbmxlc3MgdGhlIGNhbGxlciBvdmVycm9kZSB0aGUgZGVmYXVsdCBhbmQgd2Fu dHMgaXQgaW4gdGhlCi0gICAgICAgICAvLyBjdXJyZW50IGJhc2ljIGJsb2NrCi0gICAgICAgICB1 bnNpZ25lZCBBUyA9IGxsdm1GdW5jdGlvbi0+Z2V0UGFyZW50KCktPmdldERhdGFMYXlvdXQoKS5n ZXRBbGxvY2FBZGRyU3BhY2UoKTsKLS0gICAgICAgIGluc3QgPSBuZXcgbGx2bTo6QWxsb2NhSW5z dChsbHZtVHlwZSwgQVMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBpbnN0 ID0gbmV3IGxsdm06OkFsbG9jYUluc3QobGx2bVR5cGUsIEFTLCBuYW1lLCBiYmxvY2spOwotICAg ICB9Ci0gCi0gICAgIC8vIElmIG5vIGFsaWdubWVudCB3YXMgc3BlY2lmaWVkIGJ1dCB3ZSBoYXZl IGFuIGFycmF5IG9mIGEgdW5pZm9ybQotQEAgLTI2MzksNyArMjYzMCw4IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpBbGxvY2FJbnN0KGxsdm06OlR5cGUgKmxsdm1UeXBlLCBj b25zdCBjaGFyICpuCi0gICAgIHJldHVybiBpbnN0OwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6QWxsb2NhSW5zdChjb25zdCBUeXBlICpwdHJUeXBlLCBjb25zdCBj aGFyICpuYW1lLCBpbnQgYWxpZ24sIGJvb2wgYXRFbnRyeUJsb2NrKSB7Ci0rbGx2bTo6VmFsdWUg KkZ1bmN0aW9uRW1pdENvbnRleHQ6OkFsbG9jYUluc3QoY29uc3QgVHlwZSAqcHRyVHlwZSwgY29u c3QgbGx2bTo6VHdpbmUgJm5hbWUsIGludCBhbGlnbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBib29sIGF0RW50cnlCbG9jaykgewotICAgICBpZiAocHRy VHlwZSA9PSBOVUxMKSB7Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JD b3VudCA+IDApOwotICAgICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzA3NSw2NiArMzA2Nyw1OSBA QCBsbHZtOjpJbnN0cnVjdGlvbiAqRnVuY3Rpb25FbWl0Q29udGV4dDo6QnJhbmNoSW5zdChsbHZt OjpCYXNpY0Jsb2NrICp0cnVlQmxvY2ssCi0gICAgIHJldHVybiBiOwotIH0KLSAKLS1sbHZtOjpW YWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6RXh0cmFjdEluc3QobGx2bTo6VmFsdWUgKnYsIGlu dCBlbHQsIGNvbnN0IGNoYXIgKm5hbWUpIHsKLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29u dGV4dDo6RXh0cmFjdEluc3QobGx2bTo6VmFsdWUgKnYsIGludCBlbHQsIGNvbnN0IGxsdm06OlR3 aW5lICZuYW1lKSB7Ci0gICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBvcyhj dXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsKLSAg ICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAgICBjaGFyIGJ1ZlszMl07 Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX2V4dHJhY3RfJWQiLCBlbHQp OwotLSAgICAgICAgbmFtZSA9IExMVk1HZXROYW1lKHYsIGJ1Zik7Ci0tICAgIH0KLSAgICAgbGx2 bTo6SW5zdHJ1Y3Rpb24gKmVpID0gTlVMTDsKLSAgICAgaWYgKGxsdm06OmlzYTxsbHZtOjpWZWN0 b3JUeXBlPih2LT5nZXRUeXBlKCkpKQotLSAgICAgICAgZWkgPSBsbHZtOjpFeHRyYWN0RWxlbWVu dEluc3Q6OkNyZWF0ZSh2LCBMTFZNSW50MzIoZWx0KSwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAg IGVpID0gbGx2bTo6RXh0cmFjdEVsZW1lbnRJbnN0OjpDcmVhdGUoCi0rICAgICAgICAgICAgdiwg TExWTUludDMyKGVsdCksCi0rICAgICAgICAgICAgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAo KGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAiX2V4dHJhY3RfIikgKyBsbHZtOjpUd2luZShl bHQpKSA6IG5hbWUsIGJibG9jayk7Ci0gICAgIGVsc2UKLS0gICAgICAgIGVpID0gbGx2bTo6RXh0 cmFjdFZhbHVlSW5zdDo6Q3JlYXRlKHYsIGVsdCwgbmFtZSwgYmJsb2NrKTsKLSsgICAgICAgIGVp ID0gbGx2bTo6RXh0cmFjdFZhbHVlSW5zdDo6Q3JlYXRlKAotKyAgICAgICAgICAgIHYsIGVsdCwg bmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAoKGxsdm06OlR3aW5lKHYtPmdldE5hbWUoKSkgKyAi X2V4dHJhY3RfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsCi0rICAgICAgICAgICAgYmJs b2NrKTsKLSAgICAgQWRkRGVidWdQb3MoZWkpOwotICAgICByZXR1cm4gZWk7Ci0gfQotIAotLWxs dm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpJbnNlcnRJbnN0KGxsdm06OlZhbHVlICp2 LCBsbHZtOjpWYWx1ZSAqZWx0VmFsLCBpbnQgZWx0LCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2 bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okluc2VydEluc3QobGx2bTo6VmFsdWUgKnYs IGxsdm06OlZhbHVlICplbHRWYWwsIGludCBlbHQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lKSB7 Ci0gICAgIGlmICh2ID09IE5VTEwgfHwgZWx0VmFsID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2Vy dFBvcyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVM TDsKLSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAgICBjaGFyIGJ1 ZlszMl07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX2luc2VydF8lZCIs IGVsdCk7Ci0tICAgICAgICBuYW1lID0gTExWTUdldE5hbWUodiwgYnVmKTsKLS0gICAgfQotLQot ICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaWkgPSBOVUxMOwotICAgICBpZiAobGx2bTo6aXNhPGxs dm06OlZlY3RvclR5cGU+KHYtPmdldFR5cGUoKSkpCi0tICAgICAgICBpaSA9IGxsdm06Okluc2Vy dEVsZW1lbnRJbnN0OjpDcmVhdGUodiwgZWx0VmFsLCBMTFZNSW50MzIoZWx0KSwgbmFtZSwgYmJs b2NrKTsKLSsgICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0RWxlbWVudEluc3Q6OkNyZWF0ZSgKLSsg ICAgICAgICAgICB2LCBlbHRWYWwsIExMVk1JbnQzMihlbHQpLAotKyAgICAgICAgICAgIG5hbWUu aXNUcml2aWFsbHlFbXB0eSgpID8gKChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9pbnNl cnRfIikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsIGJibG9jayk7Ci0gICAgIGVsc2UKLS0g ICAgICAgIGlpID0gbGx2bTo6SW5zZXJ0VmFsdWVJbnN0OjpDcmVhdGUodiwgZWx0VmFsLCBlbHQs IG5hbWUsIGJibG9jayk7Ci0rICAgICAgICBpaSA9IGxsdm06Okluc2VydFZhbHVlSW5zdDo6Q3Jl YXRlKAotKyAgICAgICAgICAgIHYsIGVsdFZhbCwgZWx0LAotKyAgICAgICAgICAgIG5hbWUuaXNU cml2aWFsbHlFbXB0eSgpID8gKChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9pbnNlcnRf IikgKyBsbHZtOjpUd2luZShlbHQpKSA6IG5hbWUsIGJibG9jayk7Ci0gICAgIEFkZERlYnVnUG9z KGlpKTsKLSAgICAgcmV0dXJuIGlpOwotIH0KLSAKLS1sbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6U2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGxs dm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0 aW9uRW1pdENvbnRleHQ6OlNodWZmbGVJbnN0KGxsdm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUg KnYyLCBsbHZtOjpWYWx1ZSAqbWFzaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAgaWYgKHYxID09 IE5VTEwgfHwgdjIgPT0gTlVMTCB8fCBtYXNrID09IE5VTEwpIHsKLSAgICAgICAgIEFzc2VydFBv cyhjdXJyZW50UG9zLCBtLT5lcnJvckNvdW50ID4gMCk7Ci0gICAgICAgICByZXR1cm4gTlVMTDsK LSAgICAgfQotIAotLSAgICBpZiAobmFtZSA9PSBOVUxMKSB7Ci0tICAgICAgICBjaGFyIGJ1Zlsz Ml07Ci0tICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiX3NodWZmbGUiKTsKLS0g ICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2MSwgYnVmKTsKLS0gICAgfQotLQotLSAgICBsbHZt OjpJbnN0cnVjdGlvbiAqaWkgPSBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QodjEsIHYyLCBt YXNrLCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaWkgPSBuZXcgbGx2 bTo6U2h1ZmZsZVZlY3Rvckluc3QoCi0rICAgICAgICB2MSwgdjIsIG1hc2ssIG5hbWUuaXNUcml2 aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHYxLT5nZXROYW1lKCkpICsgIl9zaHVmZmxlIikg OiBuYW1lLCBiYmxvY2spOwotIAotICAgICBBZGREZWJ1Z1BvcyhpaSk7Ci0gICAgIHJldHVybiBp aTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZh bHVlKGxsdm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBjaGFyICpuYW1l KSB7Ci0rbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxs dm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBsbHZtOjpUd2luZSAmbmFt ZSkgewotICAgICBpZiAodiA9PSBOVUxMIHx8IHZlY1R5cGUgPT0gTlVMTCkgewotICAgICAgICAg QXNzZXJ0UG9zKGN1cnJlbnRQb3MsIG0tPmVycm9yQ291bnQgPiAwKTsKLSAgICAgICAgIHJldHVy biBOVUxMOwotQEAgLTMxNDgsMTIgKzMxMzMsNiBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0 Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwot ICAgICBBc3NlcnQodHkgJiYgdHktPmdldFZlY3RvckVsZW1lbnRUeXBlKCkgPT0gdi0+Z2V0VHlw ZSgpKTsKLSAjZW5kaWYKLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkgewotLSAgICAgICAgY2hh ciBidWZbMzJdOwotLSAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIl9icm9hZGNh c3QiKTsKLS0gICAgICAgIG5hbWUgPSBMTFZNR2V0TmFtZSh2LCBidWYpOwotLSAgICB9Ci0tCi0g ICAgIC8vIEdlbmVyYXRlIHRoZSBmb2xsb3dpbmcgc2VxdWVuY2U6Ci0gICAgIC8vICAgJW5hbWVf aW5pdC5pID0gaW5zZXJ0ZWxlbWVudCA8NCB4IGkzMj4gdW5kZWYsIGkzMiAldmFsLCBpMzIgMAot ICAgICAvLyAgICVuYW1lLmkgPSBzaHVmZmxldmVjdG9yIDw0IHggaTMyPiAlbmFtZV9pbml0Lmks IDw0IHggaTMyPiB1bmRlZiwKLUBAIC0zMTYzLDcgKzMxNDIsNyBAQCBsbHZtOjpWYWx1ZSAqRnVu Y3Rpb25FbWl0Q29udGV4dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5 cGUgKnZlYwotICAgICBsbHZtOjpWYWx1ZSAqdW5kZWYyID0gbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0 KHZlY1R5cGUpOwotIAotICAgICAvLyBJbnNlcnRFbGVtZW50Ci0tICAgIGxsdm06OlR3aW5lIHR3 ID0gbGx2bTo6VHdpbmUobmFtZSkgKyBsbHZtOjpUd2luZSgiX2luaXQiKTsKLSsgICAgbGx2bTo6 VHdpbmUgdHcgPSBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2LT5nZXRO YW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyBsbHZtOjpUd2luZSgiX2luaXQiKTsKLSAg ICAgbGx2bTo6VmFsdWUgKmluc2VydCA9IEluc2VydEluc3QodW5kZWYxLCB2LCAwLCB0dy5zdHIo KS5jX3N0cigpKTsKLSAKLSAgICAgLy8gU2h1ZmZsZVZlY3RvcgotQEAgLTMxNzksMjggKzMxNTgs MjcgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkJyb2FkY2FzdFZhbHVlKGxs dm06OlZhbHVlICp2LCBsbHZtOjpUeXBlICp2ZWMKLSAgICAgICAgIGxsdm06OkNvbnN0YW50VmVj dG9yOjpnZXRTcGxhdChsbHZtOjpFbGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25l ZCBpbnQ+KHR5LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUobGx2bTo6 VHlwZTo6Z2V0SW50MzJUeSgqZy0+Y3R4KSkpOwotICNlbmRpZgotLSAgICBsbHZtOjpWYWx1ZSAq cmV0ID0gU2h1ZmZsZUluc3QoaW5zZXJ0LCB1bmRlZjIsIHplcm9WZWMsIG5hbWUpOwotKyAgICBs bHZtOjpWYWx1ZSAqcmV0ID0gU2h1ZmZsZUluc3QoaW5zZXJ0LCB1bmRlZjIsIHplcm9WZWMsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmlzVHJpdmlhbGx5RW1wdHko KSA/IChsbHZtOjpUd2luZSh2LT5nZXROYW1lKCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUpOwot IAotICAgICByZXR1cm4gcmV0OwotIH0KLSAKLS1sbHZtOjpQSElOb2RlICpGdW5jdGlvbkVtaXRD b250ZXh0OjpQaGlOb2RlKGxsdm06OlR5cGUgKnR5cGUsIGludCBjb3VudCwgY29uc3QgY2hhciAq bmFtZSkgewotLSAgICBsbHZtOjpQSElOb2RlICpwbiA9IGxsdm06OlBISU5vZGU6OkNyZWF0ZSh0 eXBlLCBjb3VudCwgbmFtZSA/IG5hbWUgOiAicGhpIiwgYmJsb2NrKTsKLStsbHZtOjpQSElOb2Rl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpQaGlOb2RlKGxsdm06OlR5cGUgKnR5cGUsIGludCBjb3Vu dCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSsgICAgbGx2bTo6UEhJTm9kZSAqcG4gPSBs bHZtOjpQSElOb2RlOjpDcmVhdGUodHlwZSwgY291bnQsIG5hbWUuaXNUcml2aWFsbHlFbXB0eSgp ID8gInBoaSIgOiBuYW1lLCBiYmxvY2spOwotICAgICBBZGREZWJ1Z1Bvcyhwbik7Ci0gICAgIHJl dHVybiBwbjsKLSB9Ci0gCi0gbGx2bTo6SW5zdHJ1Y3Rpb24gKkZ1bmN0aW9uRW1pdENvbnRleHQ6 OlNlbGVjdEluc3QobGx2bTo6VmFsdWUgKnRlc3QsIGxsdm06OlZhbHVlICp2YWwwLCBsbHZtOjpW YWx1ZSAqdmFsMSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUpIHsKLSAgICAg aWYgKHRlc3QgPT0gTlVMTCB8fCB2YWwwID09IE5VTEwgfHwgdmFsMSA9PSBOVUxMKSB7Ci0gICAg ICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAgICAgICAg cmV0dXJuIE5VTEw7Ci0gICAgIH0KLSAKLS0gICAgaWYgKG5hbWUgPT0gTlVMTCkKLS0gICAgICAg IG5hbWUgPSBMTFZNR2V0TmFtZSh0ZXN0LCAiX3NlbGVjdCIpOwotLQotLSAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqaW5zdCA9IGxsdm06OlNlbGVjdEluc3Q6OkNyZWF0ZSh0ZXN0LCB2YWwwLCB2YWwx LCBuYW1lLCBiYmxvY2spOwotKyAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9IGxsdm06OlNl bGVjdEluc3Q6OkNyZWF0ZSgKLSsgICAgICAgIHRlc3QsIHZhbDAsIHZhbDEsIG5hbWUuaXNUcml2 aWFsbHlFbXB0eSgpID8gKGxsdm06OlR3aW5lKHRlc3QtPmdldE5hbWUoKSkgKyAiX3NlbGVjdCIp IDogbmFtZSwgYmJsb2NrKTsKLSAgICAgQWRkRGVidWdQb3MoaW5zdCk7Ci0gICAgIHJldHVybiBp bnN0OwotIH0KLUBAIC0zMjI2LDcgKzMyMDQsNyBAQCBzdGF0aWMgdW5zaWduZWQgaW50IGxDYWxs ZWVBcmdDb3VudChsbHZtOjpWYWx1ZSAqY2FsbGVlLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bgot IH0KLSAKLSBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6Q2FsbEluc3QobGx2bTo6 VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGxsdm06OlZh bHVlICo+ICZhcmdzLCBjb25zdCBjaGFyICpuYW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+ICZh cmdzLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7 Ci0gICAgICAgICBBc3NlcnRQb3MoY3VycmVudFBvcywgbS0+ZXJyb3JDb3VudCA+IDApOwotICAg ICAgICAgcmV0dXJuIE5VTEw7Ci1AQCAtMzI1OCw5ICszMjM2LDkgQEAgbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5j dGlvblR5cGUKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgIGxsdm06OlBvaW50ZXJUeXBlICpmdW5jX3B0cl90eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2 bTo6UG9pbnRlclR5cGU+KGZ1bmMtPmdldFR5cGUoKSk7Ci0gICAgICAgICBsbHZtOjpGdW5jdGlv blR5cGUgKmZ1bmNfdHlwZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZ1bmN0aW9uVHlwZT4oZnVu Y19wdHJfdHlwZS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCkpOwotLSAgICAgICAgbGx2bTo6Q2Fs bEluc3QgKmNhbGxpbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jX3R5cGUsIGZ1bmMs IGFyZ1ZhbHMsIG5hbWUgPyBuYW1lIDogIiIsIGJibG9jayk7Ci0rICAgICAgICBsbHZtOjpDYWxs SW5zdCAqY2FsbGluc3QgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZ1bmNfdHlwZSwgZnVuYywg YXJnVmFscywgbmFtZSwgYmJsb2NrKTsKLSAjZWxzZQotLSAgICAgICAgbGx2bTo6Q2FsbEluc3Qg KmNhbGxpbnN0ID0gbGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBhcmdWYWxzLCBuYW1lID8g bmFtZSA6ICIiLCBiYmxvY2spOwotKyAgICAgICAgbGx2bTo6Q2FsbEluc3QgKmNhbGxpbnN0ID0g bGx2bTo6Q2FsbEluc3Q6OkNyZWF0ZShmdW5jLCBhcmdWYWxzLCBuYW1lLCBiYmxvY2spOwotICNl bmRpZgotIAotICAgICAgICAgLy8gV2UgY291bGQgYmUgZGVhbGluZyB3aXRoIGEgZnVuY3Rpb24g cG9pbnRlciBpbiB3aGljaCBjYXNlIHRoaXMgd2lsbCBub3QgYmUgYSAnbGx2bTo6RnVuY3Rpb24n LgotQEAgLTM0NjQsMTQgKzM0NDIsMTQgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRl eHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUKLSB9Ci0g Ci0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkNhbGxJbnN0KGxsdm06OlZhbHVl ICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bmNUeXBlLCBsbHZtOjpWYWx1ZSAqYXJnLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpu YW1lKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGxsdm06OlR3aW5lICZuYW1lKSB7Ci0gICAgIHN0ZDo6dmVjdG9yPGxsdm06OlZhbHVlICo+IGFy Z3M7Ci0gICAgIGFyZ3MucHVzaF9iYWNrKGFyZyk7Ci0gICAgIHJldHVybiBDYWxsSW5zdChmdW5j LCBmdW5jVHlwZSwgYXJncywgbmFtZSk7Ci0gfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVt aXRDb250ZXh0OjpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBl ICpmdW5jVHlwZSwgbGx2bTo6VmFsdWUgKmFyZzAsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBjaGFyICpuYW1lKSB7 Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVl ICphcmcxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSkgewotICAgICBzdGQ6OnZlY3RvcjxsbHZt OjpWYWx1ZSAqPiBhcmdzOwotICAgICBhcmdzLnB1c2hfYmFjayhhcmcwKTsKLSAgICAgYXJncy5w dXNoX2JhY2soYXJnMSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2N0eC5oIGIvc3JjL2N0eC5oCi1pbmRl eCA2ZTVhZDc0YmEuLjQ4YjNiYjgyNiAxMDA2NDQKLS0tLSBhL3NyYy9jdHguaAotKysrIGIvc3Jj L2N0eC5oCi1AQCAtMzAyLDcgKzMwMiw3IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewot ICAgICBsbHZtOjpWYWx1ZSAqR2V0U3RyaW5nUHRyKGNvbnN0IHN0ZDo6c3RyaW5nICZzdHIpOwot IAotICAgICAvKiogQ3JlYXRlIGEgbmV3IGJhc2ljIGJsb2NrIHdpdGggZ2l2ZW4gbmFtZSAqLwot LSAgICBsbHZtOjpCYXNpY0Jsb2NrICpDcmVhdGVCYXNpY0Jsb2NrKGNvbnN0IGNoYXIgKm5hbWUs IGxsdm06OkJhc2ljQmxvY2sgKmluc2VydEFmdGVyID0gTlVMTCk7Ci0rICAgIGxsdm06OkJhc2lj QmxvY2sgKkNyZWF0ZUJhc2ljQmxvY2soY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUsIGxsdm06OkJh c2ljQmxvY2sgKmluc2VydEFmdGVyID0gTlVMTCk7Ci0gCi0gICAgIC8qKiBHaXZlbiBhIHZlY3Rv ciB3aXRoIGVsZW1lbnQgdHlwZSBpMSwgcmV0dXJuIGEgdmVjdG9yIG9mIHR5cGUKLSAgICAgICAg IExMVk1UeXBlczo6Qm9vbFZlY3RvclR5cGUuICBUaGlzIG1ldGhvZCBoYW5kbGVzIHRoZSBjb252 ZXJzaW9uIGZvcgotQEAgLTM4MCwzMyArMzgwLDMzIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRl eHQgewotICAgICAgICAgdGhpcyBhbHNvIGhhbmRsZXMgYXBwbHlpbmcgdGhlIGdpdmVuIG9wZXJh dGlvbiB0byB0aGUgdmVjdG9yCi0gICAgICAgICBlbGVtZW50cy4gKi8KLSAgICAgbGx2bTo6VmFs dWUgKkJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3RydWN0aW9uOjpCaW5hcnlPcHMgaW5zdCwgbGx2 bTo6VmFsdWUgKnYwLCBsbHZtOjpWYWx1ZSAqdjEsCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEVt aXQgdGhlICJub3QiIG9wZXJhdG9yLiAgTGlrZSBCaW5hcnlPcGVyYXRvcigpLCB0aGlzIGFsc28g aGFuZGxlcwotICAgICAgICAgYSBWZWN0b3JUeXBlLWJhc2VkIG9wZXJhbmQuICovCi0tICAgIGxs dm06OlZhbHVlICpOb3RPcGVyYXRvcihsbHZtOjpWYWx1ZSAqdiwgY29uc3QgY2hhciAqbmFtZSA9 IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqTm90T3BlcmF0b3IobGx2bTo6VmFsdWUgKnYsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1pdCBhIGNvbXBhcmlz b24gaW5zdHJ1Y3Rpb24uICBJZiB0aGUgb3BlcmFuZHMgYXJlIFZlY3RvclR5cGVzLAotICAgICAg ICAgdGhlbiBhIHZhbHVlIGZvciB0aGUgY29ycmVzcG9uZGluZyBib29sZWFuIFZlY3RvclR5cGUg aXMKLSAgICAgICAgIHJldHVybmVkLiAqLwotICAgICBsbHZtOjpWYWx1ZSAqQ21wSW5zdChsbHZt OjpJbnN0cnVjdGlvbjo6T3RoZXJPcHMgaW5zdCwgbGx2bTo6Q21wSW5zdDo6UHJlZGljYXRlIHBy ZWQsIGxsdm06OlZhbHVlICp2MCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VmFs dWUgKnYxLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OlZhbHVlICp2MSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0g ICAgIC8qKiBHaXZlbiBhIHNjYWxhciB2YWx1ZSwgcmV0dXJuIGEgdmVjdG9yIG9mIHRoZSBzYW1l IHR5cGUgKG9yIGFuCi0gICAgICAgICBhcnJheSwgZm9yIHBvaW50ZXIgdHlwZXMpLiAqLwotLSAg ICBsbHZtOjpWYWx1ZSAqU21lYXJVbmlmb3JtKGxsdm06OlZhbHVlICp2YWx1ZSwgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqU21lYXJVbmlmb3JtKGxsdm06OlZh bHVlICp2YWx1ZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxsdm06 OlZhbHVlICpCaXRDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUs IGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5z dChsbHZtOjpWYWx1ZSAqdmFsdWUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2 bTo6VmFsdWUgKlB0clRvSW50SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5 cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLS0gICAgbGx2bTo6VmFsdWUgKkludFRvUHRy SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5h bWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkJpdENhc3RJbnN0KGxsdm06OlZhbHVlICp2 YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0r ICAgIGxsdm06OlZhbHVlICpQdHJUb0ludEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBs bHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6VmFsdWUgKlB0clRvSW50SW5zdChs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lID0gIiIpOwotKyAgICBsbHZtOjpWYWx1ZSAqSW50VG9QdHJJbnN0KGxsdm06OlZhbHVlICp2 YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0g Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBs bHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxsdm06Oklu c3RydWN0aW9uICpUcnVuY0luc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBl LCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24g KkNhc3RJbnN0KGxsdm06Okluc3RydWN0aW9uOjpDYXN0T3BzIG9wLCBsbHZtOjpWYWx1ZSAqdmFs dWUsIGxsdm06OlR5cGUgKnR5cGUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpGUENhc3RJ bnN0KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgY2hhciAqbmFt ZSA9IE5VTEwpOwotLSAgICBsbHZtOjpJbnN0cnVjdGlvbiAqU0V4dEluc3QobGx2bTo6VmFsdWUg KnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0tICAg IGxsdm06Okluc3RydWN0aW9uICpaRXh0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5 cGUgKnR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpJ bnN0cnVjdGlvbiAqRlBDYXN0SW5zdChsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnR5 cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZtOjpJbnN0cnVjdGlv biAqU0V4dEluc3QobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpUeXBlICp0eXBlLCBjb25zdCBs bHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSsgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKlpFeHRJbnN0 KGxsdm06OlZhbHVlICp2YWx1ZSwgbGx2bTo6VHlwZSAqdHlwZSwgY29uc3QgbGx2bTo6VHdpbmUg Jm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBHaXZlbiB0d28gaW50ZWdlci10eXBlZCB2YWx1ZXMg KGJ1dCBwb3NzaWJseSBvbmUgdmVjdG9yIGFuZCB0aGUKLSAgICAgICAgIG90aGVyIG5vdCwgYW5k IG9yIG9mIHBvc3NpYmx5LWRpZmZlcmVudCBiaXQtd2lkdGhzKSwgdXBkYXRlIHRoZWlyCi1AQCAt NDI2LDkgKzQyNiw5IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAgICAgcG9p bnRlcnMuICBUaGUgdW5kZXJseWluZyB0eXBlIG9mIHRoZSBiYXNlIHBvaW50ZXIgbXVzdCBiZSBw cm92aWRlZAotICAgICAgICAgdmlhIHRoZSBwdHJUeXBlIHBhcmFtZXRlciAqLwotICAgICBsbHZt OjpWYWx1ZSAqR2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06OlZh bHVlICppbmRleCwgY29uc3QgVHlwZSAqcHRyVHlwZSwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMKTsKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotICAgICBs bHZtOjpWYWx1ZSAqR2V0RWxlbWVudFB0ckluc3QobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGxsdm06 OlZhbHVlICppbmRleDAsIGxsdm06OlZhbHVlICppbmRleDEsIGNvbnN0IFR5cGUgKnB0clR5cGUs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0g TlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgbWV0aG9kIHJldHVybnMgYSBuZXcg cG9pbnRlciB0aGF0IHJlcHJlc2VudHMgb2Zmc2V0dGluZyB0aGUKLSAgICAgICAgIGdpdmVuIGJh c2UgcG9pbnRlciB0byBwb2ludCBhdCB0aGUgZ2l2ZW4gZWxlbWVudCBudW1iZXIgb2YgdGhlCi1A QCAtNDM2LDI2ICs0MzYsMjYgQEAgY2xhc3MgRnVuY3Rpb25FbWl0Q29udGV4dCB7Ci0gICAgICAg ICBwb2ludGVyIG11c3QgYmUgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIHR5cGUuICBUaGUgcHRy VHlwZSBnaXZlcwotICAgICAgICAgdGhlIHR5cGUgb2YgdGhlIHBvaW50ZXIsIHRob3VnaCBpdCBt YXkgYmUgTlVMTCBpZiB0aGUgYmFzZSBwb2ludGVyCi0gICAgICAgICBpcyB1bmlmb3JtLiAqLwot LSAgICBsbHZtOjpWYWx1ZSAqQWRkRWxlbWVudE9mZnNldChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwg aW50IGVsZW1lbnROdW0sIGNvbnN0IFR5cGUgKnB0clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBO VUxMLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQb2ludGVyVHlw ZSAqKnJlc3VsdFB0clR5cGUgPSBOVUxMKTsKLSsgICAgbGx2bTo6VmFsdWUgKkFkZEVsZW1lbnRP ZmZzZXQobGx2bTo6VmFsdWUgKmJhc2VQdHIsIGludCBlbGVtZW50TnVtLCBjb25zdCBUeXBlICpw dHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsbHZtOjpU d2luZSAmbmFtZSA9ICIiLCBjb25zdCBQb2ludGVyVHlwZSAqKnJlc3VsdFB0clR5cGUgPSBOVUxM KTsKLSAKLSAgICAgLyoqIEJvb2wgaXMgc3RvcmVkIGFzIGk4IGFuZCA8V0lEVEggeCBpOD4gYnV0 IHJlcHJlc2VudGVkIGluIElSIGFzIGkxIGFuZAotICAgICAgKiA8V0lEVEggeCBNQVNLPi4gVGhp cyBpcyBhIGhlbHBlciBmdW5jdGlvbiB0byBtYXRjaCBib29sIHNpemUgYXQgc3RvcmFnZQotICAg ICAgKiBpbnRlcmZhY2UuICovCi0tICAgIGxsdm06OlZhbHVlICpTd2l0Y2hCb29sU2l6ZShsbHZt OjpWYWx1ZSAqdmFsdWUsIGxsdm06OlR5cGUgKnRvVHlwZSwgY29uc3QgY2hhciAqbmFtZSA9IE5V TEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqU3dpdGNoQm9vbFNpemUobGx2bTo6VmFsdWUgKnZhbHVl LCBsbHZtOjpUeXBlICp0b1R5cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotICAg ICAvKiogTG9hZCBmcm9tIHRoZSBtZW1vcnkgbG9jYXRpb24ocykgZ2l2ZW4gYnkgbHZhbHVlLCB1 c2luZyB0aGUgZ2l2ZW4KLSAgICAgICAgIG1hc2suICBUaGUgbHZhbHVlIG1heSBiZSB2YXJ5aW5n LCBpbiB3aGljaCBjYXNlIHRoaXMgY29ycmVzcG9uZHMgdG8KLSAgICAgICAgIGEgZ2F0aGVyIGZy b20gdGhlIG11bHRpcGxlIG1lbW9yeSBsb2NhdGlvbnMgZ2l2ZW4gYnkgdGhlIGFycmF5IG9mCi0g ICAgICAgICBwb2ludGVyIHZhbHVlcyBnaXZlbiBieSB0aGUgbHZhbHVlLiAgSWYgdGhlIGx2YWx1 ZSBpcyBub3QgdmFyeWluZywKLSAgICAgICAgIHRoZW4gYm90aCB0aGUgbWFzayBwb2ludGVyIGFu ZCB0aGUgdHlwZSBwb2ludGVyIG1heSBiZSBOVUxMLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqTG9h ZEluc3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUgKnB0 clR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLAotKyAgICBsbHZtOjpWYWx1ZSAqTG9hZElu c3QobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFR5cGUgKnB0clR5 cGUsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICBib29sIG9uZV9lbGVtID0gZmFsc2UpOwotIAotICAgICAvKiBMb2FkIGZyb20gbWVtb3J5 IGxvY2F0aW9uKHMpIGdpdmVuLgotICAgICAgKiAndHlwZScgbmVlZHMgdG8gYmUgcHJvdmlkZWQg d2hlbiBzdG9yYWdlIHR5cGUgaXMgZGlmZmVyZW50IGZyb20gSVIgdHlwZS4gRm9yIGV4YW1wbGUs Ci0gICAgICAqICd1bmZvcm0gYm9vbCcgaXMgJ2kxJyBpbiBJUiBidXQgc3RvcmVkIGFzICdpOCcu Ci0gICAgICAqIE90aGVyd2lzZSBsZWF2ZSB0aGlzIGFzIE5VTEwuICovCi0tICAgIGxsdm06OlZh bHVlICpMb2FkSW5zdChsbHZtOjpWYWx1ZSAqcHRyLCBjb25zdCBUeXBlICp0eXBlID0gTlVMTCwg Y29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqTG9hZEluc3QobGx2 bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlwZSAqdHlwZSA9IE5VTEwsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lID0gIiIpOwotIAotICAgICAvKiogRW1pdHMgYW4gYWxsb2NhIGluc3RydWN0aW9uIHRv IGFsbG9jYXRlIHN0YWNrIHN0b3JhZ2UgZm9yIHRoZSBnaXZlbgotICAgICAgICAgdHlwZS4gIElm IGEgbm9uLXplcm8gYWxpZ25tZW50IGlzIHNwZWNpZmllZCwgdGhlIG9iamVjdCBpcyBhbHNvCi1A QCAtNDYzLDcgKzQ2Myw4IEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAgICAg aW5zdHJ1Y3Rpb24gaXMgYWRkZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBmdW5jdGlvbiBpbiB0aGUg ZW50cnkKLSAgICAgICAgIGJhc2ljIGJsb2NrOyBpZiBpdCBzaG91bGQgYmUgYWRkZWQgdG8gdGhl IGN1cnJlbnQgYmFzaWMgYmxvY2ssIHRoZW4KLSAgICAgICAgIHRoZSBhdEVudHJ5QmxvY2sgcGFy YW1ldGVyIHNob3VsZCBiZSBmYWxzZS4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkFsbG9jYUluc3Qo bGx2bTo6VHlwZSAqbGx2bVR5cGUsIGNvbnN0IGNoYXIgKm5hbWUgPSBOVUxMLCBpbnQgYWxpZ24g PSAwLCBib29sIGF0RW50cnlCbG9jayA9IHRydWUpOwotKyAgICBsbHZtOjpWYWx1ZSAqQWxsb2Nh SW5zdChsbHZtOjpUeXBlICpsbHZtVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIiwg aW50IGFsaWduID0gMCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBhdEVudHJ5 QmxvY2sgPSB0cnVlKTsKLSAKLSAgICAgLyoqIEVtaXRzIGFuIGFsbG9jYSBpbnN0cnVjdGlvbiB0 byBhbGxvY2F0ZSBzdGFjayBzdG9yYWdlIGZvciB0aGUgZ2l2ZW4KLSAgICAgICAgIHR5cGUuICBJ ZiBhIG5vbi16ZXJvIGFsaWdubWVudCBpcyBzcGVjaWZpZWQsIHRoZSBvYmplY3QgaXMgYWxzbwot QEAgLTQ3NCw3ICs0NzUsNyBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250ZXh0IHsKLSAgICAgICAg IFRoaXMgaW1wbGVtZW50YXRpb24gaXMgcHJlZmVycmVkIHdoZW4gcG9zc2libGUuIEl0IGlzIG5l ZWRlZCB3aGVuCi0gICAgICAgICBzdG9yYWdlIHR5cGUgaXMgZGlmZmVyZW50IGZyb20gSVIgdHlw ZS4gRm9yIGV4YW1wbGUsCi0gICAgICAgICAndW5mb3JtIGJvb2wnIGlzICdpMScgaW4gSVIgYnV0 IHN0b3JlZCBhcyAnaTgnLiAqLwotLSAgICBsbHZtOjpWYWx1ZSAqQWxsb2NhSW5zdChjb25zdCBU eXBlICpwdHJUeXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCwgaW50IGFsaWduID0gMCwgYm9v bCBhdEVudHJ5QmxvY2sgPSB0cnVlKTsKLSsgICAgbGx2bTo6VmFsdWUgKkFsbG9jYUluc3QoY29u c3QgVHlwZSAqcHRyVHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIiwgaW50IGFsaWdu ID0gMCwgYm9vbCBhdEVudHJ5QmxvY2sgPSB0cnVlKTsKLSAKLSAgICAgLyoqIFN0YW5kYXJkIHN0 b3JlIGluc3RydWN0aW9uOyBmb3IgdGhpcyB2YXJpYW50LCB0aGUgbHZhbHVlIG11c3QgYmUgYQot ICAgICAgICAgc2luZ2xlIHBvaW50ZXIsIG5vdCBhIHZhcnlpbmcgbHZhbHVlLgotQEAgLTUwMiwz OSArNTAzLDQxIEBAIGNsYXNzIEZ1bmN0aW9uRW1pdENvbnRleHQgewotICAgICAvKiogVGhpcyBj b252ZW5pZW5jZSBtZXRob2QgbWFwcyB0byBhbiBsbHZtOjpFeHRyYWN0RWxlbWVudEluc3QgaWYg dGhlCi0gICAgICAgICBnaXZlbiB2YWx1ZSBpcyBhIGxsdm06OlZlY3RvclR5cGUsIGFuZCB0byBh biBsbHZtOjpFeHRyYWN0VmFsdWVJbnN0Ci0gICAgICAgICBvdGhlcndpc2UuICovCi0tICAgIGxs dm06OlZhbHVlICpFeHRyYWN0SW5zdChsbHZtOjpWYWx1ZSAqdiwgaW50IGVsdCwgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpWYWx1ZSAqRXh0cmFjdEluc3QobGx2bTo6VmFs dWUgKnYsIGludCBlbHQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotICAgICAv KiogVGhpcyBjb252ZW5pZW5jZSBtZXRob2QgbWFwcyB0byBhbiBsbHZtOjpJbnNlcnRFbGVtZW50 SW5zdCBpZiB0aGUKLSAgICAgICAgIGdpdmVuIHZhbHVlIGlzIGEgbGx2bTo6VmVjdG9yVHlwZSwg YW5kIHRvIGFuIGxsdm06Okluc2VydFZhbHVlSW5zdAotICAgICAgICAgb3RoZXJ3aXNlLiAqLwot LSAgICBsbHZtOjpWYWx1ZSAqSW5zZXJ0SW5zdChsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VmFsdWUg KmVsdFZhbCwgaW50IGVsdCwgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZtOjpW YWx1ZSAqSW5zZXJ0SW5zdChsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VmFsdWUgKmVsdFZhbCwgaW50 IGVsdCwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGNv bnZlbmllbmNlIG1ldGhvZCBtYXBzIHRvIGFuIGxsdm06OlNodWZmbGVWZWN0b3JJbnN0LiAqLwot LSAgICBsbHZtOjpWYWx1ZSAqU2h1ZmZsZUluc3QobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1 ZSAqdjIsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAg IGxsdm06OlZhbHVlICpTaHVmZmxlSW5zdChsbHZtOjpWYWx1ZSAqdjEsIGxsdm06OlZhbHVlICp2 MiwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAot ICAgICAvKiogVGhpcyBjb252ZW5pZW5jZSBtZXRob2QgdG8gZ2VuZXJhdGUgYnJvYWRjYXN0IHBh dHRlcm4uIEl0IHRha2VzIGEgdmFsdWUKLSAgICAgICAgIGFuZCBhIHZlY3RvciB0eXBlLiBUeXBl IG9mIHRoZSB2YWx1ZSBtdXN0IG1hdGNoIGVsZW1lbnQgdHlwZSBvZiB0aGUKLSAgICAgICAgIHZl Y3Rvci4gKi8KLS0gICAgbGx2bTo6VmFsdWUgKkJyb2FkY2FzdFZhbHVlKGxsdm06OlZhbHVlICp2 LCBsbHZtOjpUeXBlICp2ZWNUeXBlLCBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgIGxs dm06OlZhbHVlICpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2bTo6VHlwZSAqdmVj VHlwZSwgY29uc3QgbGx2bTo6VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0tICAgIGxsdm06OlBISU5v ZGUgKlBoaU5vZGUobGx2bTo6VHlwZSAqdHlwZSwgaW50IGNvdW50LCBjb25zdCBjaGFyICpuYW1l ID0gTlVMTCk7Ci0tICAgIGxsdm06Okluc3RydWN0aW9uICpTZWxlY3RJbnN0KGxsdm06OlZhbHVl ICp0ZXN0LCBsbHZtOjpWYWx1ZSAqdmFsMCwgbGx2bTo6VmFsdWUgKnZhbDEsIGNvbnN0IGNoYXIg Km5hbWUgPSBOVUxMKTsKLSsgICAgbGx2bTo6UEhJTm9kZSAqUGhpTm9kZShsbHZtOjpUeXBlICp0 eXBlLCBpbnQgY291bnQsIGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotKyAgICBsbHZt OjpJbnN0cnVjdGlvbiAqU2VsZWN0SW5zdChsbHZtOjpWYWx1ZSAqdGVzdCwgbGx2bTo6VmFsdWUg KnZhbDAsIGxsdm06OlZhbHVlICp2YWwxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIEVtaXRzIElS IHRvIGRvIGEgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBJZiB0aGUK LSAgICAgICAgIGZ1bmN0aW9uIHR5cGUgaXMgYSB2YXJ5aW5nIGZ1bmN0aW9uIHBvaW50ZXIgdHlw ZSwgaXRzIGZ1bGwgdHlwZQotICAgICAgICAgbXVzdCBiZSBwcm92aWRlZCBpbiBmdW5jVHlwZS4g IGZ1bmNUeXBlIGNhbiBiZSBOVUxMIGlmIGZ1bmMgaXMgYQotICAgICAgICAgdW5pZm9ybSBmdW5j dGlvbiBwb2ludGVyLiAqLwotICAgICBsbHZtOjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUg KmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAqZnVuY1R5cGUsIGNvbnN0IHN0ZDo6dmVjdG9yPGxs dm06OlZhbHVlICo+ICZhcmdzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSA9IE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbGx2bTo6 VHdpbmUgJm5hbWUgPSAiIik7Ci0gCi0gICAgIC8qKiBUaGlzIGlzIGEgY29udmVuaWVuY2UgbWV0 aG9kIHRoYXQgaXNzdWVzIGEgY2FsbCBpbnN0cnVjdGlvbiB0byBhCi0gICAgICAgICBmdW5jdGlv biB0aGF0IHRha2VzIGp1c3QgYSBzaW5nbGUgYXJndW1lbnQuICovCi0tICAgIGxsdm06OlZhbHVl ICpDYWxsSW5zdChsbHZtOjpWYWx1ZSAqZnVuYywgY29uc3QgRnVuY3Rpb25UeXBlICpmdW5jVHlw ZSwgbGx2bTo6VmFsdWUgKmFyZywgY29uc3QgY2hhciAqbmFtZSA9IE5VTEwpOwotKyAgICBsbHZt OjpWYWx1ZSAqQ2FsbEluc3QobGx2bTo6VmFsdWUgKmZ1bmMsIGNvbnN0IEZ1bmN0aW9uVHlwZSAq ZnVuY1R5cGUsIGxsdm06OlZhbHVlICphcmcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIFRoaXMgaXMgYSBjb252 ZW5pZW5jZSBtZXRob2QgdGhhdCBpc3N1ZXMgYSBjYWxsIGluc3RydWN0aW9uIHRvIGEKLSAgICAg ICAgIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdHdvIGFyZ3VtZW50cy4gKi8KLSAgICAgbGx2bTo6VmFs dWUgKkNhbGxJbnN0KGxsdm06OlZhbHVlICpmdW5jLCBjb25zdCBGdW5jdGlvblR5cGUgKmZ1bmNU eXBlLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lID0gTlVMTCk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgLyoqIExh dW5jaCBhbiBhc3luY2hyb25vdXMgdGFzayB0byBydW4gdGhlIGdpdmVuIGZ1bmN0aW9uLCBwYXNz aW5nIGl0Ci0gICAgICAgICBoZSBnaXZlbiBhcmd1bWVudCB2YWx1ZXMuICovCi1AQCAtNzU2LDkg Kzc1OSwxMCBAQCBjbGFzcyBGdW5jdGlvbkVtaXRDb250ZXh0IHsKLSAgICAgdm9pZCBtYXNrZWRT dG9yZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFR5cGUgKnB0 clR5cGUsIGxsdm06OlZhbHVlICptYXNrKTsKLSAgICAgdm9pZCBzdG9yZVVuaWZvcm1Ub1NPQShs bHZtOjpWYWx1ZSAqdmFsdWUsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLCBj b25zdCBUeXBlICp2YWx1ZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg UG9pbnRlclR5cGUgKnB0clR5cGUpOwotLSAgICBsbHZtOjpWYWx1ZSAqbG9hZFVuaWZvcm1Gcm9t U09BKGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlZhbHVlICptYXNrLCBjb25zdCBQb2ludGVyVHlw ZSAqcHRyVHlwZSwgY29uc3QgY2hhciAqbmFtZSk7Ci0rICAgIGxsdm06OlZhbHVlICpsb2FkVW5p Zm9ybUZyb21TT0EobGx2bTo6VmFsdWUgKnB0ciwgbGx2bTo6VmFsdWUgKm1hc2ssIGNvbnN0IFBv aW50ZXJUeXBlICpwdHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGxsdm06OlR3aW5lICZuYW1lID0gIiIpOwotIAotLSAgICBsbHZtOjpWYWx1ZSAqZ2F0 aGVyKGxsdm06OlZhbHVlICpwdHIsIGNvbnN0IFBvaW50ZXJUeXBlICpwdHJUeXBlLCBsbHZtOjpW YWx1ZSAqbWFzaywgY29uc3QgY2hhciAqbmFtZSk7Ci0rICAgIGxsdm06OlZhbHVlICpnYXRoZXIo bGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgUG9pbnRlclR5cGUgKnB0clR5cGUsIGxsdm06OlZhbHVl ICptYXNrLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSA9ICIiKTsKLSAKLSAgICAgbGx2bTo6VmFs dWUgKmFkZFZhcnlpbmdPZmZzZXRzSWZOZWVkZWQobGx2bTo6VmFsdWUgKnB0ciwgY29uc3QgVHlw ZSAqcHRyVHlwZSk7Ci0gfTsKLWRpZmYgLS1naXQgYS9zcmMvZXhwci5jcHAgYi9zcmMvZXhwci5j cHAKLWluZGV4IDgwY2MzMDIwYS4uNmQzOGQxODg5IDEwMDY0NAotLS0tIGEvc3JjL2V4cHIuY3Bw Ci0rKysgYi9zcmMvZXhwci5jcHAKLUBAIC0xMDIxLDExICsxMDIxLDExIEBAIHN0YXRpYyBsbHZt OjpWYWx1ZSAqbEVtaXROZWdhdGUoRXhwciAqYXJnLCBTb3VyY2VQb3MgcG9zLCBGdW5jdGlvbkVt aXRDb250ZXh0ICpjCi0gICAgIGN0eC0+U2V0RGVidWdQb3MocG9zKTsKLSAgICAgaWYgKHR5cGUt PklzRmxvYXRUeXBlKCkpIHsKLSAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvID0gbGx2bTo6Q29u c3RhbnRGUDo6Z2V0WmVyb1ZhbHVlRm9yTmVnYXRpb24odHlwZS0+TExWTVR5cGUoZy0+Y3R4KSk7 Ci0tICAgICAgICByZXR1cm4gY3R4LT5CaW5hcnlPcGVyYXRvcihsbHZtOjpJbnN0cnVjdGlvbjo6 RlN1YiwgemVybywgYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJfbmVnYXRlIikpOwotKyAg ICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkZTdWIs IHplcm8sIGFyZ1ZhbCwgbGx2bTo6VHdpbmUoYXJnVmFsLT5nZXROYW1lKCkpICsgIl9uZWdhdGUi KTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICAgIGxsdm06OlZhbHVlICp6ZXJvID0gbExMVk1Db25z dGFudFZhbHVlKHR5cGUsIGctPmN0eCwgMC4pOwotICAgICAgICAgQXNzZXJ0UG9zKHBvcywgdHlw ZS0+SXNJbnRUeXBlKCkpOwotLSAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IobGx2 bTo6SW5zdHJ1Y3Rpb246OlN1YiwgemVybywgYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJf bmVnYXRlIikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5z dHJ1Y3Rpb246OlN1YiwgemVybywgYXJnVmFsLCBsbHZtOjpUd2luZShhcmdWYWwtPmdldE5hbWUo KSkgKyAiX25lZ2F0ZSIpOwotICAgICB9Ci0gfQotIAotQEAgLTEwNDcsMTEgKzEwNDcsMTEgQEAg bGx2bTo6VmFsdWUgKlVuYXJ5RXhwcjo6R2V0VmFsdWUoRnVuY3Rpb25FbWl0Q29udGV4dCAqY3R4 KSBjb25zdCB7Ci0gICAgICAgICByZXR1cm4gbEVtaXROZWdhdGUoZXhwciwgcG9zLCBjdHgpOwot ICAgICBjYXNlIExvZ2ljYWxOb3Q6IHsKLSAgICAgICAgIGxsdm06OlZhbHVlICphcmdWYWwgPSBl eHByLT5HZXRWYWx1ZShjdHgpOwotLSAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJn VmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJfbG9naWNhbG5vdCIpKTsKLSsgICAgICAgIHJldHVy biBjdHgtPk5vdE9wZXJhdG9yKGFyZ1ZhbCwgbGx2bTo6VHdpbmUoYXJnVmFsLT5nZXROYW1lKCkp ICsgIl9sb2dpY2Fsbm90Iik7Ci0gICAgIH0KLSAgICAgY2FzZSBCaXROb3Q6IHsKLSAgICAgICAg IGxsdm06OlZhbHVlICphcmdWYWwgPSBleHByLT5HZXRWYWx1ZShjdHgpOwotLSAgICAgICAgcmV0 dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBMTFZNR2V0TmFtZShhcmdWYWwsICJfYml0bm90 IikpOwotKyAgICAgICAgcmV0dXJuIGN0eC0+Tm90T3BlcmF0b3IoYXJnVmFsLCBsbHZtOjpUd2lu ZShhcmdWYWwtPmdldE5hbWUoKSkgKyAiX2JpdG5vdCIpOwotICAgICB9Ci0gICAgIGRlZmF1bHQ6 Ci0gICAgICAgICBGQVRBTCgibG9naWMgZXJyb3IiKTsKLUBAIC0xNTE4LDcgKzE1MTgsOCBAQCBz dGF0aWMgbGx2bTo6VmFsdWUgKmxFbWl0QmluYXJ5QXJpdGgoQmluYXJ5RXhwcjo6T3Agb3AsIGxs dm06OlZhbHVlICp2YWx1ZTAsIGxsdgotICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAg ICAgfQotIAotLSAgICAgICAgcmV0dXJuIGN0eC0+QmluYXJ5T3BlcmF0b3IoaW5zdCwgdmFsdWUw LCB2YWx1ZTEsIExMVk1HZXROYW1lKG9wTmFtZSwgdmFsdWUwLCB2YWx1ZTEpKTsKLSsgICAgICAg IHJldHVybiBjdHgtPkJpbmFyeU9wZXJhdG9yKGluc3QsIHZhbHVlMCwgdmFsdWUxLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgobGx2bTo6VHdpbmUob3BOYW1lKSArICJf IikgKyB2YWx1ZTAtPmdldE5hbWUoKSkgKyAiXyIpICsgdmFsdWUxLT5nZXROYW1lKCkpOwotICAg ICB9Ci0gfQotIAotQEAgLTE1NjMsNyArMTU2NCw3IEBAIHN0YXRpYyBsbHZtOjpWYWx1ZSAqbEVt aXRCaW5hcnlDbXAoQmluYXJ5RXhwcjo6T3Agb3AsIGxsdm06OlZhbHVlICplMFZhbCwgbGx2bTo6 Ci0gICAgIH0KLSAKLSAgICAgbGx2bTo6VmFsdWUgKmNtcCA9IGN0eC0+Q21wSW5zdChpc0Zsb2F0 T3AgPyBsbHZtOjpJbnN0cnVjdGlvbjo6RkNtcCA6IGxsdm06Okluc3RydWN0aW9uOjpJQ21wLCBw cmVkLCBlMFZhbCwgZTFWYWwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TExWTUdldE5hbWUob3BOYW1lLCBlMFZhbCwgZTFWYWwpKTsKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoKChsbHZtOjpUd2luZShvcE5hbWUpICsgIl8iKSArIGUwVmFsLT5n ZXROYW1lKCkpICsgIl8iKSArIGUxVmFsLT5nZXROYW1lKCkpOwotICAgICAvLyBUaGlzIGlzIGEg bGl0dGxlIHVnbHk6IENtcEluc3QgcmV0dXJucyBpMSB2YWx1ZXMsIGJ1dCB3ZSB1c2UgdmVjdG9y cwotICAgICAvLyBvZiBpMzJzIGZvciB2YXJ5aW5nIGJvb2wgdmFsdWVzOyB0eXBlIGNvbnZlcnQg dGhlIHJlc3VsdCBoZXJlIGlmCi0gICAgIC8vIG5lZWRlZC4KLUBAIC00MTc3LDcgKzQxNzgsNyBA QCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxDb252ZXJ0VG9TbGljZVBvaW50ZXIoRnVuY3Rpb25FbWl0 Q29udGV4dCAqY3R4LCBsbHZtOjpWYWx1ZQotICAgICAvLyBvZmZzZXRzCi0gICAgIGxsdm06OlZh bHVlICpyZXN1bHQgPSBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHNsaWNlU3RydWN0VHlw ZSk7Ci0gICAgIC8vIEFuZCByZXBsYWNlIHRoZSBwb2ludGVyIGluIHRoZSBzdHJ1Y3Qgd2l0aCB0 aGUgZ2l2ZW4gcG9pbnRlcgotLSAgICByZXR1cm4gY3R4LT5JbnNlcnRJbnN0KHJlc3VsdCwgcHRy LCAwLCBMTFZNR2V0TmFtZShwdHIsICJfc2xpY2UiKSk7Ci0rICAgIHJldHVybiBjdHgtPkluc2Vy dEluc3QocmVzdWx0LCBwdHIsIDAsIGxsdm06OlR3aW5lKHB0ci0+Z2V0TmFtZSgpKSArICJfc2xp Y2UiKTsKLSB9Ci0gCi0gLyoqIElmIHRoZSBnaXZlbiBhcnJheSBpbmRleCBpcyBhIGNvbXBpbGUg dGltZSBjb25zdGFudCwgY2hlY2sgdG8gc2VlIGlmIGl0Ci1AQCAtNDI1OCw4ICs0MjU5LDggQEAg bGx2bTo6VmFsdWUgKkluZGV4RXhwcjo6R2V0TFZhbHVlKEZ1bmN0aW9uRW1pdENvbnRleHQgKmN0 eCkgY29uc3QgewotICAgICAgICAgLy8gQ29udmVydCB0byBhIHNsaWNlIHBvaW50ZXIgaWYgd2Un cmUgaW5kZXhpbmcgaW50byBTT0EgZGF0YQotICAgICAgICAgYmFzZVB0clZhbHVlID0gbENvbnZl cnRQdHJUb1NsaWNlSWZOZWVkZWQoY3R4LCBiYXNlUHRyVmFsdWUsICZiYXNlRXhwclR5cGUpOwot IAotLSAgICAgICAgbGx2bTo6VmFsdWUgKnB0ciA9Ci0tICAgICAgICAgICAgY3R4LT5HZXRFbGVt ZW50UHRySW5zdChiYXNlUHRyVmFsdWUsIGluZGV4VmFsdWUsIGJhc2VFeHByVHlwZSwgTExWTUdl dE5hbWUoYmFzZVB0clZhbHVlLCAiX29mZnNldCIpKTsKLSsgICAgICAgIGxsdm06OlZhbHVlICpw dHIgPSBjdHgtPkdldEVsZW1lbnRQdHJJbnN0KGJhc2VQdHJWYWx1ZSwgaW5kZXhWYWx1ZSwgYmFz ZUV4cHJUeXBlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6VHdpbmUoYmFzZVB0clZhbHVlLT5nZXROYW1lKCkpICsgIl9vZmZzZXQiKTsK LSAgICAgICAgIHJldHVybiBsQWRkVmFyeWluZ09mZnNldHNJZk5lZWRlZChjdHgsIHB0ciwgR2V0 TFZhbHVlVHlwZSgpKTsKLSAgICAgfQotIAotQEAgLTQyOTAsOCArNDI5MSw4IEBAIGxsdm06OlZh bHVlICpJbmRleEV4cHI6OkdldExWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0 IHsKLSAgICAgY3R4LT5TZXREZWJ1Z1Bvcyhwb3MpOwotIAotICAgICAvLyBBbmQgZG8gdGhlIGFj dHVhbCBpbmRleGluZyBjYWxjdWxhdGlvbi4uCi0tICAgIGxsdm06OlZhbHVlICpwdHIgPQotLSAg ICAgICAgY3R4LT5HZXRFbGVtZW50UHRySW5zdChiYXNlUHRyLCBMTFZNSW50MzIoMCksIGluZGV4 VmFsdWUsIGJhc2VQdHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyLCAiX29mZnNldCIpKTsKLSsg ICAgbGx2bTo6VmFsdWUgKnB0ciA9IGN0eC0+R2V0RWxlbWVudFB0ckluc3QoYmFzZVB0ciwgTExW TUludDMyKDApLCBpbmRleFZhbHVlLCBiYXNlUHRyVHlwZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgp KSArICJfb2Zmc2V0Iik7Ci0gICAgIHJldHVybiBsQWRkVmFyeWluZ09mZnNldHNJZk5lZWRlZChj dHgsIHB0ciwgR2V0TFZhbHVlVHlwZSgpKTsKLSB9Ci0gCi1AQCAtNDc4OCwxNSArNDc4OSwxNCBA QCBsbHZtOjpWYWx1ZSAqVmVjdG9yTWVtYmVyRXhwcjo6R2V0VmFsdWUoRnVuY3Rpb25FbWl0Q29u dGV4dCAqY3R4KSBjb25zdCB7Ci0gICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlkZW50 aWZpZXIuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICBjaGFyIGlkU3RyWzJdID0ge2lkZW50 aWZpZXJbaV0sICdcMCd9OwotICAgICAgICAgICAgIGxsdm06OlZhbHVlICplbGVtZW50UHRyID0K LS0gICAgICAgICAgICAgICAgY3R4LT5BZGRFbGVtZW50T2Zmc2V0KGJhc2VQdHIsIGluZGljZXNb aV0sIGJhc2VQdHJUeXBlLCBMTFZNR2V0TmFtZShiYXNlUHRyLCBpZFN0cikpOwotKyAgICAgICAg ICAgICAgICBjdHgtPkFkZEVsZW1lbnRPZmZzZXQoYmFzZVB0ciwgaW5kaWNlc1tpXSwgYmFzZVB0 clR5cGUsIGxsdm06OlR3aW5lKGJhc2VQdHItPmdldE5hbWUoKSkgKyBpZFN0cik7Ci0gICAgICAg ICAgICAgbGx2bTo6VmFsdWUgKmVsZW1lbnRWYWx1ZSA9IGN0eC0+TG9hZEluc3QoZWxlbWVudFB0 ciwgZWxlbWVudE1hc2ssIGVsZW1lbnRQdHJUeXBlKTsKLSAKLS0gICAgICAgICAgICBjb25zdCBj aGFyICpyZXN1bHROYW1lID0gTExWTUdldE5hbWUocmVzdWx0UHRyLCBpZFN0cik7Ci0tICAgICAg ICAgICAgbGx2bTo6VmFsdWUgKnB0bXAgPSBjdHgtPkFkZEVsZW1lbnRPZmZzZXQocmVzdWx0UHRy LCBpLCBOVUxMLCByZXN1bHROYW1lKTsKLSsgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqcHRtcCA9 IGN0eC0+QWRkRWxlbWVudE9mZnNldChyZXN1bHRQdHIsIGksIE5VTEwsIGxsdm06OlR3aW5lKHJl c3VsdFB0ci0+Z2V0TmFtZSgpKSArIGlkU3RyKTsKLSAgICAgICAgICAgICBjdHgtPlN0b3JlSW5z dChlbGVtZW50VmFsdWUsIHB0bXAsIGVsZW1lbnRQdHJUeXBlLCBleHByLT5HZXRUeXBlKCktPklz VW5pZm9ybVR5cGUoKSk7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICByZXR1cm4gY3R4LT5Mb2Fk SW5zdChyZXN1bHRQdHIsIG1lbWJlclR5cGUsIExMVk1HZXROYW1lKGJhc2VQdHIsICJfc3dpenps ZSIpKTsKLSsgICAgICAgIHJldHVybiBjdHgtPkxvYWRJbnN0KHJlc3VsdFB0ciwgbWVtYmVyVHlw ZSwgbGx2bTo6VHdpbmUoYmFzZVB0ci0+Z2V0TmFtZSgpKSArICJfc3dpenpsZSIpOwotICAgICB9 Ci0gfQotIAotQEAgLTQ5MzIsNyArNDkzMiw3IEBAIGxsdm06OlZhbHVlICpNZW1iZXJFeHByOjpH ZXRWYWx1ZShGdW5jdGlvbkVtaXRDb250ZXh0ICpjdHgpIGNvbnN0IHsKLSAKLSAgICAgY3R4LT5T ZXREZWJ1Z1Bvcyhwb3MpOwotICAgICBzdGQ6OnN0cmluZyBzdWZmaXggPSBzdGQ6OnN0cmluZygi XyIpICsgaWRlbnRpZmllcjsKLS0gICAgcmV0dXJuIGN0eC0+TG9hZEluc3QobHZhbHVlLCBtYXNr LCBsdmFsdWVUeXBlLCBMTFZNR2V0TmFtZShsdmFsdWUsIHN1ZmZpeC5jX3N0cigpKSk7Ci0rICAg IHJldHVybiBjdHgtPkxvYWRJbnN0KGx2YWx1ZSwgbWFzaywgbHZhbHVlVHlwZSwgbGx2bTo6VHdp bmUobHZhbHVlLT5nZXROYW1lKCkpICsgc3VmZml4KTsKLSB9Ci0gCi0gY29uc3QgVHlwZSAqTWVt YmVyRXhwcjo6R2V0VHlwZSgpIGNvbnN0IHsgcmV0dXJuIE5VTEw7IH0KLUBAIC02NTAyLDcgKzY1 MDIsNyBAQCBzdGF0aWMgbGx2bTo6VmFsdWUgKmxUeXBlQ29udkF0b21pYyhGdW5jdGlvbkVtaXRD b250ZXh0ICpjdHgsIGxsdm06OlZhbHVlICpleHByVgotICAgICAgICAgICAgICAgICAvLyBkb2Vz IGZvciBldmVyeW9uZSBlbHNlLi4uCi0gICAgICAgICAgICAgICAgIEFzc2VydChjYXN0KTsKLSAg ICAgICAgICAgICAgICAgY2FzdCA9IGN0eC0+U3dpdGNoQm9vbFNpemUoY2FzdCwgTExWTVR5cGVz OjpCb29sVmVjdG9yVHlwZS0+Z2V0RWxlbWVudFR5cGUoKSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTExWTUdldE5hbWUoY2FzdCwgInRvX2lfYm9vbCIpKTsK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUo Y2FzdC0+Z2V0TmFtZSgpKSArICJ0b19pX2Jvb2wiKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAg ICB9IGVsc2UgewotICAgICAgICAgICAgIC8vIGZyb21UeXBlLT5Jc1ZhcnlpbmdUeXBlKCkpCi1A QCAtODI0Niw3ICs4MjQ2LDcgQEAgbGx2bTo6VmFsdWUgKk5ld0V4cHI6OkdldFZhbHVlKEZ1bmN0 aW9uRW1pdENvbnRleHQgKmN0eCkgY29uc3QgewotICAgICAgICAgLy8gcG9pbnRlciBvZiB0aGUg cmV0dXJuIHR5cGUgYW5kIHRvIHJ1biB0aGUgY29kZSBmb3IgaW5pdGlhbGl6ZXJzLAotICAgICAg ICAgLy8gaWYgcHJlc2VudC4KLSAgICAgICAgIGxsdm06OlR5cGUgKnB0clR5cGUgPSByZXRUeXBl LT5MTFZNVHlwZShnLT5jdHgpOwotLSAgICAgICAgcHRyVmFsdWUgPSBjdHgtPkJpdENhc3RJbnN0 KHB0clZhbHVlLCBwdHJUeXBlLCBMTFZNR2V0TmFtZShwdHJWYWx1ZSwgIl9jYXN0X3B0ciIpKTsK LSsgICAgICAgIHB0clZhbHVlID0gY3R4LT5CaXRDYXN0SW5zdChwdHJWYWx1ZSwgcHRyVHlwZSwg bGx2bTo6VHdpbmUocHRyVmFsdWUtPmdldE5hbWUoKSkgKyAiX2Nhc3RfcHRyIik7Ci0gCi0gICAg ICAgICBpZiAoaW5pdEV4cHIgIT0gTlVMTCkKLSAgICAgICAgICAgICBJbml0U3ltYm9sKHB0clZh bHVlLCBhbGxvY1R5cGUsIGluaXRFeHByLCBjdHgsIHBvcyk7Ci1kaWZmIC0tZ2l0IGEvc3JjL2xs dm11dGlsLmNwcCBiL3NyYy9sbHZtdXRpbC5jcHAKLWluZGV4IDk3MDE3NWRiZi4uZDBiZWNiOWY1 IDEwMDY0NAotLS0tIGEvc3JjL2xsdm11dGlsLmNwcAotKysrIGIvc3JjL2xsdm11dGlsLmNwcAot QEAgLTE2MDUsMjMgKzE2MDUsNiBAQCBsbHZtOjpWYWx1ZSAqTExWTVNodWZmbGVWZWN0b3JzKGxs dm06OlZhbHVlICp2MSwgbGx2bTo6VmFsdWUgKnYyLCBpbnQzMl90IHNodWZbXQotICAgICByZXR1 cm4gbmV3IGxsdm06OlNodWZmbGVWZWN0b3JJbnN0KHYxLCB2MiwgdmVjLCAic2h1ZmZsZSIsIGlu c2VydEJlZm9yZSk7Ci0gfQotIAotLWNvbnN0IGNoYXIgKkxMVk1HZXROYW1lKGxsdm06OlZhbHVl ICp2LCBjb25zdCBjaGFyICpzKSB7Ci0tICAgIGlmICh2ID09IE5VTEwpCi0tICAgICAgICByZXR1 cm4gczsKLS0gICAgc3RkOjpzdHJpbmcgcmV0ID0gc3RkOjpzdHJpbmcodi0+Z2V0TmFtZSgpKTsK LS0gICAgcmV0ICs9IHM7Ci0tICAgIHJldHVybiBzdHJkdXAocmV0LmNfc3RyKCkpOwotLX0KLS0K LS1jb25zdCBjaGFyICpMTFZNR2V0TmFtZShjb25zdCBjaGFyICpvcCwgbGx2bTo6VmFsdWUgKnYx LCBsbHZtOjpWYWx1ZSAqdjIpIHsKLS0gICAgc3RkOjpzdHJpbmcgciA9IG9wOwotLSAgICByICs9 ICJfIjsKLS0gICAgciArPSB2MS0+Z2V0TmFtZSgpLnN0cigpOwotLSAgICByICs9ICJfIjsKLS0g ICAgciArPSB2Mi0+Z2V0TmFtZSgpLnN0cigpOwotLSAgICByZXR1cm4gc3RyZHVwKHIuY19zdHIo KSk7Ci0tfQotLQotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotIGJvb2wgbElzU1ZNTG9hZChs bHZtOjpJbnN0cnVjdGlvbiAqaW5zdCkgewotICAgICBBc3NlcnQoaW5zdCk7Ci1kaWZmIC0tZ2l0 IGEvc3JjL2xsdm11dGlsLmggYi9zcmMvbGx2bXV0aWwuaAotaW5kZXggNDJjY2U0ZDgzLi4wN2Qw ODliYjQgMTAwNjQ0Ci0tLS0gYS9zcmMvbGx2bXV0aWwuaAotKysrIGIvc3JjL2xsdm11dGlsLmgK LUBAIC0zMjgsMTEgKzMyOCw2IEBAIGV4dGVybiBsbHZtOjpWYWx1ZSAqTExWTUNvbmNhdFZlY3Rv cnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAqdjIsIGxsdm06OkluCi0gZXh0ZXJuIGxs dm06OlZhbHVlICpMTFZNU2h1ZmZsZVZlY3RvcnMobGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1 ZSAqdjIsIGludDMyX3Qgc2h1ZltdLCBpbnQgc2h1ZlNpemUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmluc2VydEJlZm9yZSk7Ci0g Ci0tLyoqIFV0aWxpdHkgcm91dGluZXMgdG8gY29uY2F0IHN0cmluZ3Mgd2l0aCB0aGUgbmFtZXMg b2YgZXhpc3RpbmcgdmFsdWVzIHRvCi0tICAgIGNyZWF0ZSBtZWFuaW5nZnVsIG5ldyBuYW1lcyBm b3IgaW5zdHJ1Y3Rpb24gdmFsdWVzLgotLSovCi0tZXh0ZXJuIGNvbnN0IGNoYXIgKkxMVk1HZXRO YW1lKGxsdm06OlZhbHVlICp2LCBjb25zdCBjaGFyICopOwotLWV4dGVybiBjb25zdCBjaGFyICpM TFZNR2V0TmFtZShjb25zdCBjaGFyICpvcCwgbGx2bTo6VmFsdWUgKnYxLCBsbHZtOjpWYWx1ZSAq djIpOwotICNpZmRlZiBJU1BDX0dFTlhfRU5BQkxFRAotIGVudW0gQWRkcmVzc1NwYWNlIHsgTG9j YWwsIEdsb2JhbCwgRXh0ZXJuYWwgfTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvb3B0LmNwcCBiL3Ny Yy9vcHQuY3BwCi1pbmRleCA1YjFhYzdiNjMuLjlkNmNhZTA1OCAxMDA2NDQKLS0tLSBhL3NyYy9v cHQuY3BwCi0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGF0aWMgYm9v bCBsR2V0U291cmNlUG9zRnJvbU1ldGFkYXRhKGNvbnN0IGxsdm06Okluc3RydWN0aW9uICppbnN0 LCBTb3VyY2VQb3MgKgotICAgICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0tc3RhdGljIGxsdm06Oklu c3RydWN0aW9uICpsQ2FsbEluc3QobGx2bTo6RnVuY3Rpb24gKmZ1bmMsIGxsdm06OlZhbHVlICph cmcwLCBsbHZtOjpWYWx1ZSAqYXJnMSwgY29uc3QgY2hhciAqbmFtZSwKLStzdGF0aWMgbGx2bTo6 SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUg KmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0 QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZtOjpWYWx1ZSAqYXJnc1syXSA9IHthcmcwLCBhcmcx fTsKLSAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gbmV3QXJnQXJyYXkoJmFyZ3Nb MF0sICZhcmdzWzJdKTsKLUBAIC0yNjUsMjEgKzI2NSwyMiBAQCBzdGF0aWMgbGx2bTo6SW5zdHJ1 Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAs IGxsdgotIH0KLSAKLSBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpG dW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBsbHZt OjpWYWx1ZSAqYXJnMiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpuYW1lLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGxsdm06OlR3aW5lICZu YW1lLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZt OjpWYWx1ZSAqYXJnc1szXSA9IHthcmcwLCBhcmcxLCBhcmcyfTsKLSAgICAgbGx2bTo6QXJyYXlS ZWY8bGx2bTo6VmFsdWUgKj4gbmV3QXJnQXJyYXkoJmFyZ3NbMF0sICZhcmdzWzNdKTsKLSAgICAg cmV0dXJuIGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoZnVuYywgbmV3QXJnQXJyYXksIG5hbWUsIGlu c2VydEJlZm9yZSk7Ci0gfQotIAotIHN0YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0 KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBsbHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFy ZzEsIGxsdm06OlZhbHVlICphcmcyLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06OlZhbHVlICphcmczLCBjb25zdCBjaGFyICpuYW1lLCBsbHZtOjpJbnN0cnVjdGlv biAqaW5zZXJ0QmVmb3JlID0gTlVMTCkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06OlZhbHVlICphcmczLCBjb25zdCBsbHZtOjpUd2luZSAmbmFtZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zZXJ0 QmVmb3JlID0gTlVMTCkgewotICAgICBsbHZtOjpWYWx1ZSAqYXJnc1s0XSA9IHthcmcwLCBhcmcx LCBhcmcyLCBhcmczfTsKLSAgICAgbGx2bTo6QXJyYXlSZWY8bGx2bTo6VmFsdWUgKj4gbmV3QXJn QXJyYXkoJmFyZ3NbMF0sICZhcmdzWzRdKTsKLSAgICAgcmV0dXJuIGxsdm06OkNhbGxJbnN0OjpD cmVhdGUoZnVuYywgbmV3QXJnQXJyYXksIG5hbWUsIGluc2VydEJlZm9yZSk7Ci0gfQotIAotIHN0 YXRpYyBsbHZtOjpJbnN0cnVjdGlvbiAqbENhbGxJbnN0KGxsdm06OkZ1bmN0aW9uICpmdW5jLCBs bHZtOjpWYWx1ZSAqYXJnMCwgbGx2bTo6VmFsdWUgKmFyZzEsIGxsdm06OlZhbHVlICphcmcyLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmczLCBs bHZtOjpWYWx1ZSAqYXJnNCwgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYXJnMywgbGx2bTo6VmFsdWUgKmFyZzQsIGNv bnN0IGxsdm06OlR3aW5lICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxsdm06Okluc3RydWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06 OlZhbHVlICphcmdzWzVdID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzR9OwotICAgICBs bHZtOjpBcnJheVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3Nb NV0pOwotQEAgLTI4Nyw3ICsyODgsNyBAQCBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxs SW5zdChsbHZtOjpGdW5jdGlvbiAqZnVuYywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdgotIH0KLSAK LSBzdGF0aWMgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxDYWxsSW5zdChsbHZtOjpGdW5jdGlvbiAqZnVu YywgbGx2bTo6VmFsdWUgKmFyZzAsIGxsdm06OlZhbHVlICphcmcxLCBsbHZtOjpWYWx1ZSAqYXJn MiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqYXJn MywgbGx2bTo6VmFsdWUgKmFyZzQsIGxsdm06OlZhbHVlICphcmc1LCBjb25zdCBjaGFyICpuYW1l LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlZhbHVlICphcmcz LCBsbHZtOjpWYWx1ZSAqYXJnNCwgbGx2bTo6VmFsdWUgKmFyZzUsIGNvbnN0IGxsdm06OlR3aW5l ICZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3Ry dWN0aW9uICppbnNlcnRCZWZvcmUgPSBOVUxMKSB7Ci0gICAgIGxsdm06OlZhbHVlICphcmdzWzZd ID0ge2FyZzAsIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQsIGFyZzV9OwotICAgICBsbHZtOjpBcnJh eVJlZjxsbHZtOjpWYWx1ZSAqPiBuZXdBcmdBcnJheSgmYXJnc1swXSwgJmFyZ3NbNl0pOwotQEAg LTk5MSwyMyArOTkyLDI0IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNpY0Jsb2NrKGxs dm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlR5cGUgKnJldHVy blR5cGUgPSBjYWxsSW5zdC0+Z2V0VHlwZSgpOwotICAgICAgICAgICAgICAgICBBc3NlcnQobGx2 bTo6aXNhPGxsdm06OlZlY3RvclR5cGU+KHJldHVyblR5cGUpKTsKLSAgICAgICAgICAgICAgICAg Ly8gY2FzdCB0aGUgaTggKiB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZQotLSAgICAgICAgICAgICAg ICBjb25zdCBjaGFyICpuYW1lID0gTExWTUdldE5hbWUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQo MCksICJfY2FzdCIpOwotLSAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY2FzdFB0ciA9IG5l dyBsbHZtOjpCaXRDYXN0SW5zdChjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2 bTo6UG9pbnRlclR5cGU6OmdldChyZXR1cm5UeXBlLCAwKSwgbmFtZSwgY2FsbEluc3QpOwotKyAg ICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqY2FzdFB0ciA9Ci0rICAgICAgICAgICAgICAgICAg ICBuZXcgbGx2bTo6Qml0Q2FzdEluc3QoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCksIGxsdm06 OlBvaW50ZXJUeXBlOjpnZXQocmV0dXJuVHlwZSwgMCksCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQo MCktPmdldE5hbWUoKSkgKyAiX2Nhc3QiLCBjYWxsSW5zdCk7Ci0gICAgICAgICAgICAgICAgIGxD b3B5TWV0YWRhdGEoY2FzdFB0ciwgY2FsbEluc3QpOwotICAgICAgICAgICAgICAgICBpbnQgYWxp Z247Ci0gICAgICAgICAgICAgICAgIGlmIChnLT5vcHQuZm9yY2VBbGlnbmVkTWVtb3J5KQotICAg ICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdu bWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBhbGln biA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZExvYWQzMiA/IDQg OiA4OwotLSAgICAgICAgICAgICAgICBuYW1lID0gTExWTUdldE5hbWUoY2FsbEluc3QtPmdldEFy Z09wZXJhbmQoMCksICJfbG9hZCIpOwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xM Vk1fMTBfMAotLSAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3QgPSBu ZXcgbGx2bTo6TG9hZEluc3QoY2FzdFB0ciwgbmFtZSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICov LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIChsbHZtOjpJbnN0cnVjdGlvbiAq KU5VTEwpOwotKyAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3QgPQot KyAgICAgICAgICAgICAgICAgICAgbmV3IGxsdm06OkxvYWRJbnN0KGNhc3RQdHIsIGxsdm06OlR3 aW5lKGNhbGxJbnN0LT5nZXRBcmdPcGVyYW5kKDApLT5nZXROYW1lKCkpICsgIl9sb2FkIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBub3Qgdm9sYXRp bGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxM KTsKLSAjZWxzZQotICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbG9hZEluc3Qg PSBuZXcgbGx2bTo6TG9hZEluc3QoCi0tICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4oY2FzdFB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1l bnRUeXBlKCksIGNhc3RQdHIsIG5hbWUsCi0tICAgICAgICAgICAgICAgICAgICBmYWxzZSAvKiBu b3Qgdm9sYXRpbGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLnZhbHVlT3JPbmUoKSwgKGxs dm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5f Y2FzdDxsbHZtOjpQb2ludGVyVHlwZT4oY2FzdFB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVs ZW1lbnRUeXBlKCksIGNhc3RQdHIsCi0rICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShj YWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgwKS0+Z2V0TmFtZSgpKSArICJfbG9hZCIsIGZhbHNlIC8q IG5vdCB2b2xhdGlsZSAqLywKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06Ok1heWJlQWxpZ24o YWxpZ24pLnZhbHVlT3JPbmUoKSwgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2VuZGlm Ci0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEobG9hZEluc3QsIGNhbGxJbnN0KTsKLSAg ICAgICAgICAgICAgICAgbGx2bTo6UmVwbGFjZUluc3RXaXRoSW5zdChjYWxsSW5zdCwgbG9hZElu c3QpOwotQEAgLTEwMjgsOSArMTAzMCw5IEBAIGJvb2wgSW50cmluc2ljc09wdDo6cnVuT25CYXNp Y0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJiKSB7Ci0gICAgICAgICAgICAgICAgIC8vIGFsbCBs YW5lcyBzdG9yaW5nLCBzbyByZXBsYWNlIHdpdGggYSByZWd1bGFyIHN0b3JlCi0gICAgICAgICAg ICAgICAgIGxsdm06OlZhbHVlICpydmFsdWUgPSBjYWxsSW5zdC0+Z2V0QXJnT3BlcmFuZCgyKTsK LSAgICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqc3RvcmVUeXBlID0gcnZhbHVlLT5nZXRUeXBl KCk7Ci0tICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBMTFZNR2V0TmFtZShjYWxs SW5zdC0+Z2V0QXJnT3BlcmFuZCgwKSwgIl9wdHJjYXN0Iik7Ci0tICAgICAgICAgICAgICAgIGxs dm06OlZhbHVlICpjYXN0UHRyID0gbmV3IGxsdm06OkJpdENhc3RJbnN0KGNhbGxJbnN0LT5nZXRB cmdPcGVyYW5kKDApLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHN0b3JlVHlwZSwgMCks IG5hbWUsIGNhbGxJbnN0KTsKLSsgICAgICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmNhc3RQdHIg PQotKyAgICAgICAgICAgICAgICAgICAgbmV3IGxsdm06OkJpdENhc3RJbnN0KGNhbGxJbnN0LT5n ZXRBcmdPcGVyYW5kKDApLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHN0b3JlVHlwZSwgMCksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUoY2Fs bEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdldE5hbWUoKSkgKyAiX3B0cmNhc3QiLCBjYWxsSW5z dCk7Ci0gICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEoY2FzdFB0ciwgY2FsbEluc3QpOwot IAotICAgICAgICAgICAgICAgICBpbnQgYWxpZ247Ci1AQCAtMTMzOSw4ICsxMzQxLDggQEAgc3Rh dGljIGxsdm06OlZhbHVlICpsR2V0QmFzZVBvaW50ZXIobGx2bTo6VmFsdWUgKnYsIGxsdm06Oklu c3RydWN0aW9uICppbnNlcnRCZWYKLSAgICAgICAgIGlmICh0ID09IE5VTEwpIHsKLSAgICAgICAg ICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgIH0gZWxzZSB7Ci0tICAgICAgICAgICAgcmV0dXJu IGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2ktPmdldE9wY29kZSgpLCB0LCBjaS0+Z2V0VHlwZSgp LT5nZXRTY2FsYXJUeXBlKCksIExMVk1HZXROYW1lKHQsICJfY2FzdCIpLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAg ICAgcmV0dXJuIGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2ktPmdldE9wY29kZSgpLCB0LCBjaS0+ Z2V0VHlwZSgpLT5nZXRTY2FsYXJUeXBlKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUodC0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGluc2Vy dEJlZm9yZSk7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC0xNTgzLDEzICsxNTg1LDEzIEBA IHN0YXRpYyB2b2lkIGxFeHRyYWN0Q29uc3RhbnRPZmZzZXQobGx2bTo6VmFsdWUgKnZlYywgbGx2 bTo6VmFsdWUgKipjb25zdE9mZnNldCwKLSAgICAgICAgIGlmIChjbyA9PSBOVUxMKQotICAgICAg ICAgICAgICpjb25zdE9mZnNldCA9IE5VTEw7Ci0gICAgICAgICBlbHNlCi0tICAgICAgICAgICAg KmNvbnN0T2Zmc2V0ID0KLS0gICAgICAgICAgICAgICAgbGx2bTo6Q2FzdEluc3Q6OkNyZWF0ZShj YXN0LT5nZXRPcGNvZGUoKSwgY28sIGNhc3QtPmdldFR5cGUoKSwgTExWTUdldE5hbWUoY28sICJf Y2FzdCIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06 OkNhc3RJbnN0OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCksIGNvLCBjYXN0LT5nZXRUeXBlKCks Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZt OjpUd2luZShjby0+Z2V0TmFtZSgpKSArICJfY2FzdCIsIGluc2VydEJlZm9yZSk7Ci0gICAgICAg ICBpZiAodm8gPT0gTlVMTCkKLSAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBOVUxMOwot ICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9Ci0tICAgICAgICAg ICAgICAgIGxsdm06OkNhc3RJbnN0OjpDcmVhdGUoY2FzdC0+Z2V0T3Bjb2RlKCksIHZvLCBjYXN0 LT5nZXRUeXBlKCksIExMVk1HZXROYW1lKHZvLCAiX2Nhc3QiKSwgaW5zZXJ0QmVmb3JlKTsKLSsg ICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpDYXN0SW5zdDo6Q3JlYXRlKGNhc3Qt PmdldE9wY29kZSgpLCB2bywgY2FzdC0+Z2V0VHlwZSgpLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6VHdpbmUodm8tPmdldE5hbWUo KSkgKyAiX2Nhc3QiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgcmV0dXJuOwotICAgICB9Ci0g Ci1AQCAtMTYwOCwxNiArMTYxMCwxOCBAQCBzdGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zm c2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAg ICAgICAgZWxzZSBpZiAoYzEgPT0gTlVMTCB8fCBsbHZtOjppc2E8bGx2bTo6Q29uc3RhbnRBZ2dy ZWdhdGVaZXJvPihjMSkpCi0gICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGMwOwotICAg ICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6Qmlu YXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCBjMCwgYzEsIExMVk1H ZXROYW1lKCJhZGQiLCBjMCwgYzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAg ICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAg ICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCBjMCwgYzEsICgobGx2bTo6VHdp bmUoImFkZF8iKSArIGMwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0rICAg ICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotIAotICAgICAgICAgICAgIGlmICh2MCA9 PSBOVUxMIHx8IGxsdm06OmlzYTxsbHZtOjpDb25zdGFudEFnZ3JlZ2F0ZVplcm8+KHYwKSkKLSAg ICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gdjE7Ci0gICAgICAgICAgICAgZWxzZSBp ZiAodjEgPT0gTlVMTCB8fCBsbHZtOjppc2E8bGx2bTo6Q29uc3RhbnRBZ2dyZWdhdGVaZXJvPih2 MSkpCi0gICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNldCA9IHYwOwotICAgICAgICAgICAg IGVsc2UKLS0gICAgICAgICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3Bl cmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2MCwgdjEsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTExW TUdldE5hbWUoImFkZCIsIHYwLCB2MSksIGluc2VydEJlZm9yZSk7Ci0rICAgICAgICAgICAgICAg ICp2YXJpYWJsZU9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUoCi0rICAgICAg ICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbjo6QWRkLCB2MCwgdjEsICgobGx2bTo6VHdp bmUoImFkZF8iKSArIHYwLT5nZXROYW1lKCkpICsgIl8iKSArIHYxLT5nZXROYW1lKCksCi0rICAg ICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIHJldHVybjsKLSAg ICAgICAgIH0gZWxzZSBpZiAoYm9wLT5nZXRPcGNvZGUoKSA9PSBsbHZtOjpJbnN0cnVjdGlvbjo6 U2hsKSB7Ci0gICAgICAgICAgICAgbEV4dHJhY3RDb25zdGFudE9mZnNldChvcDAsICZjMCwgJnYw LCBpbnNlcnRCZWZvcmUpOwotQEAgLTE2MzMsMTAgKzE2MzcsMTIgQEAgc3RhdGljIHZvaWQgbEV4 dHJhY3RDb25zdGFudE9mZnNldChsbHZtOjpWYWx1ZSAqdmVjLCBsbHZtOjpWYWx1ZSAqKmNvbnN0 T2Zmc2V0LAotICAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSB2ZWM7Ci0gICAgICAgICAg ICAgICAgICp2YXJpYWJsZU9mZnNldCA9IE5VTEw7Ci0gICAgICAgICAgICAgfSBlbHNlIHsKLS0g ICAgICAgICAgICAgICAgKmNvbnN0T2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0 ZShsbHZtOjpJbnN0cnVjdGlvbjo6U2hsLCBjMCwgYzEsIExMVk1HZXROYW1lKCJzaGwiLCBjMCwg YzEpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0tICAgICAgICAgICAgICAgICp2YXJpYWJsZU9mZnNl dCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OlNobCwg djAsIGMxLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIExMVk1HZXROYW1lKCJzaGwiLCB2MCwgYzEpLCBpbnNlcnRCZWZvcmUp OwotKyAgICAgICAgICAgICAgICAqY29uc3RPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246OlNobCwgYzAs IGMxLCAoKGxsdm06OlR3aW5lKCJzaGxfIikgKyBjMC0+Z2V0TmFtZSgpKSArICJfIikgKyBjMS0+ Z2V0TmFtZSgpLAotKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSsgICAgICAg ICAgICAgICAgKnZhcmlhYmxlT2Zmc2V0ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZSgK LSsgICAgICAgICAgICAgICAgICAgIGxsdm06Okluc3RydWN0aW9uOjpTaGwsIHYwLCBjMSwgKChs bHZtOjpUd2luZSgic2hsXyIpICsgdjAtPmdldE5hbWUoKSkgKyAiXyIpICsgYzEtPmdldE5hbWUo KSwKLSsgICAgICAgICAgICAgICAgICAgIGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgfQot ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgIH0gZWxzZSBpZiAoYm9wLT5nZXRPcGNvZGUo KSA9PSBsbHZtOjpJbnN0cnVjdGlvbjo6TXVsKSB7Ci1AQCAtMTY0OCwyNSArMTY1NCwzMCBAQCBz dGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06 OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBmaXJz dCB0ZXJtIGlzIGEgY29uc3RhbnQgYW5kIHRoZSBsYXN0IHRocmVlIGFyZQotICAgICAgICAgICAg IC8vIHZhcmlhYmxlLgotICAgICAgICAgICAgIGlmIChjMCAhPSBOVUxMICYmIGMxICE9IE5VTEwp Ci0tICAgICAgICAgICAgICAgICpjb25zdE9mZnNldCA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpD cmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAsIGMxLCBMTFZNR2V0TmFtZSgibXVsIiwg YzAsIGMxKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAqY29uc3RPZmZz ZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKAotKyAgICAgICAgICAgICAgICAgICAg bGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAsIGMxLCAoKGxsdm06OlR3aW5lKCJtdWxfIikgKyBj MC0+Z2V0TmFtZSgpKSArICJfIikgKyBjMS0+Z2V0TmFtZSgpLAotKyAgICAgICAgICAgICAgICAg ICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICpj b25zdE9mZnNldCA9IE5VTEw7Ci0gCi0gICAgICAgICAgICAgbGx2bTo6VmFsdWUgKnZhID0gTlVM TCwgKnZiID0gTlVMTCwgKnZjID0gTlVMTDsKLSAgICAgICAgICAgICBpZiAodjAgIT0gTlVMTCAm JiBjMSAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YSA9IGxsdm06OkJpbmFyeU9wZXJhdG9y OjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgdjAsIGMxLCBMTFZNR2V0TmFtZSgibXVs IiwgdjAsIGMxKSwKLSsgICAgICAgICAgICAgICAgdmEgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCBjMSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoIm11bF8iKSAr IHYwLT5nZXROYW1lKCkpICsgIl8iKSArIGMxLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAg ICAgICAgIGlmIChjMCAhPSBOVUxMICYmIHYxICE9IE5VTEwpCi0tICAgICAgICAgICAgICAgIHZi ID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZtOjpJbnN0cnVjdGlvbjo6TXVsLCBj MCwgdjEsIExMVk1HZXROYW1lKCJtdWwiLCBjMCwgdjEpLAotKyAgICAgICAgICAgICAgICB2YiA9 IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpDcmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246Ok11bCwgYzAs IHYxLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KChsbHZtOjpUd2luZSgibXVsXyIpICsgYzAtPmdldE5hbWUoKSkgKyAiXyIpICsgdjEtPmdldE5h bWUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluc2VydEJlZm9yZSk7Ci0gICAgICAgICAgICAgaWYgKHYwICE9IE5VTEwgJiYgdjEgIT0gTlVM TCkKLS0gICAgICAgICAgICAgICAgdmMgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKGxs dm06Okluc3RydWN0aW9uOjpNdWwsIHYwLCB2MSwgTExWTUdldE5hbWUoIm11bCIsIHYwLCB2MSks Ci0rICAgICAgICAgICAgICAgIHZjID0gbGx2bTo6QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZShsbHZt OjpJbnN0cnVjdGlvbjo6TXVsLCB2MCwgdjEsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoKGxsdm06OlR3aW5lKCJtdWxfIikgKyB2MC0+Z2V0TmFt ZSgpKSArICJfIikgKyB2MS0+Z2V0TmFtZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAgICAgICBs bHZtOjpWYWx1ZSAqdmFiID0gTlVMTDsKLSAgICAgICAgICAgICBpZiAodmEgIT0gTlVMTCAmJiB2 YiAhPSBOVUxMKQotLSAgICAgICAgICAgICAgICB2YWIgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6 Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhLCB2YiwgTExWTUdldE5hbWUoImFkZCIs IHZhLCB2YiksCi0rICAgICAgICAgICAgICAgIHZhYiA9IGxsdm06OkJpbmFyeU9wZXJhdG9yOjpD cmVhdGUobGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmEsIHZiLAotKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobGx2bTo6VHdpbmUoImFkZF8iKSAr IHZhLT5nZXROYW1lKCkpICsgIl8iKSArIHZiLT5nZXROYW1lKCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKTsKLSAgICAg ICAgICAgICBlbHNlIGlmICh2YSAhPSBOVUxMKQotICAgICAgICAgICAgICAgICB2YWIgPSB2YTsK LUBAIC0xNjc0LDggKzE2ODUsOSBAQCBzdGF0aWMgdm9pZCBsRXh0cmFjdENvbnN0YW50T2Zmc2V0 KGxsdm06OlZhbHVlICp2ZWMsIGxsdm06OlZhbHVlICoqY29uc3RPZmZzZXQsCi0gICAgICAgICAg ICAgICAgIHZhYiA9IHZiOwotIAotICAgICAgICAgICAgIGlmICh2YWIgIT0gTlVMTCAmJiB2YyAh PSBOVUxMKQotLSAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlP cGVyYXRvcjo6Q3JlYXRlKGxsdm06Okluc3RydWN0aW9uOjpBZGQsIHZhYiwgdmMsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TExWTUdldE5hbWUoImFkZCIsIHZhYiwgdmMpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAg ICAgICAqdmFyaWFibGVPZmZzZXQgPSBsbHZtOjpCaW5hcnlPcGVyYXRvcjo6Q3JlYXRlKAotKyAg ICAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb246OkFkZCwgdmFiLCB2YywgKChsbHZt OjpUd2luZSgiYWRkXyIpICsgdmFiLT5nZXROYW1lKCkpICsgIl8iKSArIHZjLT5nZXROYW1lKCks Ci0rICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgICAgIGVsc2Ug aWYgKHZhYiAhPSBOVUxMKQotICAgICAgICAgICAgICAgICAqdmFyaWFibGVPZmZzZXQgPSB2YWI7 Ci0gICAgICAgICAgICAgZWxzZQotQEAgLTE5NDMsNyArMTk1NSw3IEBAIHN0YXRpYyBib29sIGxP ZmZzZXRzMzJCaXRTYWZlKGxsdm06OlZhbHVlICoqdmFyaWFibGVPZmZzZXRQdHIsIGxsdm06OlZh bHVlICoqY29uCi0gICAgICAgICAgICAgLy8gYWxsIHplcm9zIChpLmUuIGEgQ29uc3RhbnRBZ2dy ZWdhdGVaZXJvLCBidXQganVzdCBpbiBjYXNlLAotICAgICAgICAgICAgIC8vIGRvIHRoZSBtb3Jl IGdlbmVyYWwgY2hlY2sgd2l0aCBsVmVjdG9ySXMzMkJpdEludHMoKS4KLSAgICAgICAgICAgICB2 YXJpYWJsZU9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3QodmFyaWFibGVPZmZzZXQsIExMVk1U eXBlczo6SW50MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZSh2YXJpYWJsZU9mZnNldCwgIl90cnVuYyIpLCBp bnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpUd2luZSh2YXJpYWJsZU9mZnNldC0+Z2V0TmFtZSgpKSArICJfdHJ1bmMi LCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgZWxzZQotICAgICAgICAgICAgIHJldHVybiBmYWxz ZTsKLSAgICAgfQotQEAgLTE5NTIsNyArMTk2NCw3IEBAIHN0YXRpYyBib29sIGxPZmZzZXRzMzJC aXRTYWZlKGxsdm06OlZhbHVlICoqdmFyaWFibGVPZmZzZXRQdHIsIGxsdm06OlZhbHVlICoqY29u Ci0gICAgICAgICBpZiAobFZlY3RvcklzMzJCaXRJbnRzKGNvbnN0T2Zmc2V0KSkgewotICAgICAg ICAgICAgIC8vIFRydW5jYXRlIHRoZW0gc28gd2UgaGF2ZSBhIDMyLWJpdCB2ZWN0b3IgdHlwZSBm b3IgdGhlbS4KLSAgICAgICAgICAgICBjb25zdE9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3Qo Y29uc3RPZmZzZXQsIExMVk1UeXBlczo6SW50MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMTFZNR2V0TmFtZShjb25zdE9mZnNldCwg Il90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsbHZtOjpUd2luZShjb25zdE9mZnNldC0+Z2V0TmFtZSgpKSArICJf dHJ1bmMiLCBpbnNlcnRCZWZvcmUpOwotICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAv LyBGSVhNRTogb3RoZXJ3aXNlIHdlIGp1c3QgYXNzdW1lIHRoYXQgYWxsIGNvbnN0YW50IG9mZnNl dHMKLSAgICAgICAgICAgICAvLyBjYW4gYWN0dWFsbHkgYWx3YXlzIGZpdCBpbnRvIDMyLWJpdHMu Li4gIChUaGlzIGNvdWxkIGJlCi1AQCAtMTk2Myw3ICsxOTc1LDcgQEAgc3RhdGljIGJvb2wgbE9m ZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKip2YXJpYWJsZU9mZnNldFB0ciwgbGx2bTo6VmFs dWUgKipjb24KLSAgICAgICAgICAgICAvLyBsbHZtOjpDb25zdGFudEZvbGRJbnN0cnVjdGlvbigp IGRvZXNuJ3Qgc2VlbSB0byBiZSBkb2luZwotICAgICAgICAgICAgIC8vIGVub3VnaCBmb3IgdXMg aW4gc29tZSBjYXNlcyBpZiB3ZSBjYWxsIGl0IGZyb20gaGVyZS4KLSAgICAgICAgICAgICBjb25z dE9mZnNldCA9IG5ldyBsbHZtOjpUcnVuY0luc3QoY29uc3RPZmZzZXQsIExMVk1UeXBlczo6SW50 MzJWZWN0b3JUeXBlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMTFZNR2V0TmFtZShjb25zdE9mZnNldCwgIl90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpUd2lu ZShjb25zdE9mZnNldC0+Z2V0TmFtZSgpKSArICJfdHJ1bmMiLCBpbnNlcnRCZWZvcmUpOwotICAg ICAgICAgfQotICAgICB9Ci0gCi1AQCAtMjAxMiw4ICsyMDI0LDggQEAgc3RhdGljIGJvb2wgbE9m ZnNldHMzMkJpdFNhZmUobGx2bTo6VmFsdWUgKipvZmZzZXRQdHIsIGxsdm06Okluc3RydWN0aW9u ICppbnNlcnQKLSAKLSAgICAgICAgIC8vIEFsdGVybmF0aXZlbHksIG9mZnNldCBjb3VsZCBiZSBh IHNlcXVlbmNlIG9mIGFkZHMgdGVybWluYXRpbmcKLSAgICAgICAgIC8vIGluIHNhZmUgY29uc3Rh bnQgdmVjdG9ycyBvciBhIFNFeHQuCi0tICAgICAgICAqb2Zmc2V0UHRyID0KLS0gICAgICAgICAg ICBuZXcgbGx2bTo6VHJ1bmNJbnN0KG9mZnNldCwgTExWTVR5cGVzOjpJbnQzMlZlY3RvclR5cGUs IExMVk1HZXROYW1lKG9mZnNldCwgIl90cnVuYyIpLCBpbnNlcnRCZWZvcmUpOwotKyAgICAgICAg Km9mZnNldFB0ciA9IG5ldyBsbHZtOjpUcnVuY0luc3Qob2Zmc2V0LCBMTFZNVHlwZXM6OkludDMy VmVjdG9yVHlwZSwgbGx2bTo6VHdpbmUob2Zmc2V0LT5nZXROYW1lKCkpICsgIl90cnVuYyIsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRCZWZvcmUpOwot ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIH0gZWxzZQotICAgICAgICAgcmV0dXJuIGZhbHNl OwotQEAgLTIyMjksNyArMjI0MSw4IEBAIHN0YXRpYyBib29sIGxHU1RvR1NCYXNlT2Zmc2V0cyhs bHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsKLSAgICAgfQotICAgICAvLyBDYXN0IHRoZSBiYXNl IHBvaW50ZXIgdG8gYSB2b2lkICosIHNpbmNlIHRoYXQncyB3aGF0IHRoZQotICAgICAvLyBfX3Bz ZXVkb18qX2Jhc2Vfb2Zmc2V0c18qIGZ1bmN0aW9ucyB3YW50LgotLSAgICBiYXNlUHRyID0gbmV3 IGxsdm06OkludFRvUHRySW5zdChiYXNlUHRyLCBMTFZNVHlwZXM6OlZvaWRQb2ludGVyVHlwZSwg TExWTUdldE5hbWUoYmFzZVB0ciwgIl8ydm9pZCIpLCBjYWxsSW5zdCk7Ci0rICAgIGJhc2VQdHIg PSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGJhc2VQdHIsIExMVk1UeXBlczo6Vm9pZFBvaW50ZXJU eXBlLCBsbHZtOjpUd2luZShiYXNlUHRyLT5nZXROYW1lKCkpICsgIl8ydm9pZCIsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxJbnN0KTsKLSAgICAgbENvcHlNZXRh ZGF0YShiYXNlUHRyLCBjYWxsSW5zdCk7Ci0gICAgIGxsdm06OkZ1bmN0aW9uICpnYXRoZXJTY2F0 dGVyRnVuYyA9IGluZm8tPmJhc2VPZmZzZXRzRnVuYzsKLSAKLUBAIC0yODAzLDcgKzI4MTYsNyBA QCBzdGF0aWMgYm9vbCBsR1NUb0xvYWRTdG9yZShsbHZtOjpDYWxsSW5zdCAqY2FsbEluc3QpIHsK LSAgICAgICAgICAgICAgICAgbENvcHlNZXRhZGF0YShwdHIsIGNhbGxJbnN0KTsKLSAgICAgICAg ICAgICAgICAgRGVidWcocG9zLCAiVHJhbnNmb3JtZWQgZ2F0aGVyIHRvIHVuYWxpZ25lZCB2ZWN0 b3IgbG9hZCEiKTsKLSAgICAgICAgICAgICAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKm5ld0NhbGwg PQotLSAgICAgICAgICAgICAgICAgICAgbENhbGxJbnN0KGdhdGhlckluZm8tPmxvYWRNYXNrZWRG dW5jLCBwdHIsIG1hc2ssIExMVk1HZXROYW1lKHB0ciwgIl9tYXNrZWRfbG9hZCIpKTsKLSsgICAg ICAgICAgICAgICAgICAgIGxDYWxsSW5zdChnYXRoZXJJbmZvLT5sb2FkTWFza2VkRnVuYywgcHRy LCBtYXNrLCBsbHZtOjpUd2luZShwdHItPmdldE5hbWUoKSkgKyAiX21hc2tlZF9sb2FkIik7Ci0g ICAgICAgICAgICAgICAgIGxDb3B5TWV0YWRhdGEobmV3Q2FsbCwgY2FsbEluc3QpOwotICAgICAg ICAgICAgICAgICBsbHZtOjpSZXBsYWNlSW5zdFdpdGhJbnN0KGNhbGxJbnN0LCBuZXdDYWxsKTsK LSAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2lzcGMv cGF0Y2hlcy9sbHZtMTItMDA0LnBhdGNoIGIvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAw NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5NGQ4NDQzYTVlLi4wMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gYzAzYTUxNDI0NDQ0NzZhMWNhYTVjMmJh N2ZhMmQ5MmQ3NzkzZDZmMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlZXBhayBS YWplbmRyYWt1bWFyYW4gPGRlZXBhay5yYWplbmRyYWt1bWFyYW5AaW50ZWwuY29tPgotRGF0ZTog TW9uLCAyNSBKYW4gMjAyMSAwOToyMjo0OSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXhpbmcg YnVpbGQgb24gbGx2bSB0cnVuay4KLQotLS0tCi0gc3JjL2N0eC5jcHAgfCA3ICsrKy0tLS0KLSAx IGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0t Z2l0IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4LmNwcAotaW5kZXggZGVkNTI0YjcxLi5iNjBlNmZl ODQgMTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNwcAotKysrIGIvc3JjL2N0eC5jcHAKLUBAIC0xMDIw LDggKzEwMjAsNyBAQCB2b2lkIEZ1bmN0aW9uRW1pdENvbnRleHQ6OkVtaXRDYXNlTGFiZWwoaW50 IHZhbHVlLCBib29sIGNoZWNrTWFzaywgU291cmNlUG9zIHBvcwotICAgICBsbHZtOjpCYXNpY0Js b2NrICpiYkNhc2VJbXBsID0gTlVMTDsKLSAgICAgaWYgKGVtaXRHZW5YSGFyZHdhcmVNYXNrKCkp IHsKLSAgICAgICAgIC8vIENyZWF0ZSBiYXNpYyBibG9jayB3aXRoIGFjdHVhbCBjYXNlIGltcGxl bWVudGF0aW9uCi0tICAgICAgICBsbHZtOjpUd2luZSBiYk5hbWUgPSBsbHZtOjpUd2luZShiYkNh c2UtPmdldE5hbWUoKSkgKyAiX2ltcGwiOwotLSAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJh c2ljQmxvY2soYmJOYW1lLCBiYkNhc2UpOwotKyAgICAgICAgYmJDYXNlSW1wbCA9IENyZWF0ZUJh c2ljQmxvY2sobGx2bTo6VHdpbmUoYmJDYXNlLT5nZXROYW1lKCkpICsgIl9pbXBsIiwgYmJDYXNl KTsKLSAgICAgfQotICNlbmRpZgotIAotQEAgLTMxNDIsOCArMzE0MSw4IEBAIGxsdm06OlZhbHVl ICpGdW5jdGlvbkVtaXRDb250ZXh0OjpCcm9hZGNhc3RWYWx1ZShsbHZtOjpWYWx1ZSAqdiwgbGx2 bTo6VHlwZSAqdmVjCi0gICAgIGxsdm06OlZhbHVlICp1bmRlZjIgPSBsbHZtOjpVbmRlZlZhbHVl OjpnZXQodmVjVHlwZSk7Ci0gCi0gICAgIC8vIEluc2VydEVsZW1lbnQKLS0gICAgbGx2bTo6VHdp bmUgdHcgPSBuYW1lLmlzVHJpdmlhbGx5RW1wdHkoKSA/IChsbHZtOjpUd2luZSh2LT5nZXROYW1l KCkpICsgIl9icm9hZGNhc3QiKSA6IG5hbWUgKyBsbHZtOjpUd2luZSgiX2luaXQiKTsKLS0gICAg bGx2bTo6VmFsdWUgKmluc2VydCA9IEluc2VydEluc3QodW5kZWYxLCB2LCAwLCB0dy5zdHIoKS5j X3N0cigpKTsKLSsgICAgbGx2bTo6VmFsdWUgKmluc2VydCA9Ci0rICAgICAgICBJbnNlcnRJbnN0 KHVuZGVmMSwgdiwgMCwgbmFtZS5pc1RyaXZpYWxseUVtcHR5KCkgPyAobGx2bTo6VHdpbmUodi0+ Z2V0TmFtZSgpKSArICJfYnJvYWRjYXN0IikgOiBuYW1lICsgIl9pbml0Iik7Ci0gCi0gICAgIC8v IFNodWZmbGVWZWN0b3IKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMApk aWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNS5wYXRjaCBiL3NyY3Br Z3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGUzZTk2YjAwYWJmYS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNzIgKzAsMCBAQAotRnJv bSBjMWQwYTUxYmY4NDE2ZDQyMTQ0ZGU5ZTJiZGQ1OTgyNWVhZWZmMWFjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRl bC5jb20+Ci1EYXRlOiBGcmksIDggSmFuIDIwMjEgMTQ6MTM6NDkgLTA4MDAKLVN1YmplY3Q6IFtQ QVRDSF0gTExWTSAxMSBzdXBwb3J0IGZvciBnZW4gY29kZQotCi0tLS0KLSBzcmMvY3R4LmNwcCAg ICAgICAgICAgICAgICAgICAgIHwgIDEzICsrLQotIHNyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlv bi5jcHAgfCAgIDkgKy0KLSBzcmMvb3B0LmNwcCAgICAgICAgICAgICAgICAgICAgIHwgMTQzICsr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMjQgaW5z ZXJ0aW9ucygrKSwgNDEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBi L3NyYy9jdHguY3BwCi1pbmRleCBiNjBlNmZlODQuLjJhNzJlNjgzNyAxMDA2NDQKLS0tLSBhL3Ny Yy9jdHguY3BwCi0rKysgYi9zcmMvY3R4LmNwcAotQEAgLTEsNSArMSw1IEBACi0gLyoKLS0gIENv cHlyaWdodCAoYykgMjAxMC0yMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbgotKyAgQ29weXJpZ2h0IChj KSAyMDEwLTIwMjEsIEludGVsIENvcnBvcmF0aW9uCi0gICBBbGwgcmlnaHRzIHJlc2VydmVkLgot IAotICAgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg d2l0aCBvciB3aXRob3V0Ci1AQCAtMzY4NSw4ICszNjg1LDE3IEBAIGxsdm06OlZhbHVlICpGdW5j dGlvbkVtaXRDb250ZXh0OjpHZW5YU2ltZENGUHJlZGljYXRlKGxsdm06OlZhbHVlICp2YWx1ZSwg bGx2bTo6Ci0gICAgIEFzc2VydFBvcyhjdXJyZW50UG9zLCBsbHZtOjppc2E8bGx2bTo6VmVjdG9y VHlwZT4odmFsdWUtPmdldFR5cGUoKSkpOwotICAgICBsbHZtOjpWZWN0b3JUeXBlICp2dCA9IGxs dm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbHVlLT5nZXRUeXBlKCkpOwotICAgICBp ZiAoZGVmYXVsdHMgPT0gTlVMTCkgewotLSAgICAgICAgZGVmYXVsdHMgPSBsbHZtOjpDb25zdGFu dFZlY3Rvcjo6Z2V0U3BsYXQodmFsdWUtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMo KSwKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgZGVm YXVsdHMgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQodnQtPmdldFZlY3Rvck51bUVs ZW1lbnRzKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKHZ0LT5nZXRFbGVtZW50VHlwZSgpKSk7 Ci0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIGRl ZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNp Z25lZCBpbnQ+KHZ0LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51 bGxWYWx1ZSh2dC0+Z2V0RWxlbWVudFR5cGUoKSkpOwotKyNlbHNlCi0rICAgICAgICBkZWZhdWx0 cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSsgICAgICAgICAgICBsbHZtOjpF bGVtZW50Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZ0LT5nZXROdW1FbGVt ZW50cygpKSwgZmFsc2UpLAotKyAgICAgICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFs dWUodnQtPmdldEVsZW1lbnRUeXBlKCkpKTsKLSsjZW5kaWYKLSAgICAgfQotIAotICAgICBhdXRv IEZuID0gbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0R2VuWERlY2xhcmF0aW9uKG0tPm1vZHVsZSwg bGx2bTo6R2VuWEludHJpbnNpYzo6Z2VueF9zaW1kY2ZfcHJlZGljYXRlLAotZGlmZiAtLWdpdCBh L3NyYy9nZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAgYi9zcmMvZ2VuL0dsb2JhbHNMb2NhbGl6 YXRpb24uY3BwCi1pbmRleCBhMTc2ZTk0NjIuLjQxZjNiMDBlMiAxMDA2NDQKLS0tLSBhL3NyYy9n ZW4vR2xvYmFsc0xvY2FsaXphdGlvbi5jcHAKLSsrKyBiL3NyYy9nZW4vR2xvYmFsc0xvY2FsaXph dGlvbi5jcHAKLUBAIC0xLDUgKzEsNSBAQAotIC8qCi0tICBDb3B5cmlnaHQgKGMpIDIwMTQsIDIw MTYtMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24KLSsgIENvcHlyaWdodCAoYykgMjAxNCwgMjAxNi0y MDIxLCBJbnRlbCBDb3Jwb3JhdGlvbgotICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAKLSAgIFJl ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig d2l0aG91dAotQEAgLTUzLDggKzUzLDEwIEBACi0gI2luY2x1ZGUgPGxsdm0vR2VuWEludHJpbnNp Y3MvR2VuWEludHJPcHRzLmg+Ci0gI2luY2x1ZGUgPGxsdm0vR2VuWEludHJpbnNpY3MvR2VuWElu dHJpbnNpY3MuaD4KLSAjaW5jbHVkZSA8bGx2bS9HZW5YSW50cmluc2ljcy9HZW5YTWV0YWRhdGEu aD4KLS0jaW5jbHVkZSA8bGx2bS9JUi9DRkcuaD4KLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJ U1BDX0xMVk1fMTFfMAotICNpbmNsdWRlIDxsbHZtL0lSL0NhbGxTaXRlLmg+Ci0rI2VuZGlmCi0r I2luY2x1ZGUgPGxsdm0vSVIvQ0ZHLmg+Ci0gI2luY2x1ZGUgPGxsdm0vSVIvRGVidWdJbmZvLmg+ Ci0gI2luY2x1ZGUgPGxsdm0vSVIvRG9taW5hdG9ycy5oPgotICNpbmNsdWRlIDxsbHZtL0lSL0Z1 bmN0aW9uLmg+Ci1AQCAtNDcwLDcgKzQ3Miw4IEBAIHZvaWQgR2xvYmFsc0xvY2FsaXphdGlvbjo6 TG9jYWxpemVHbG9iYWxzKExvY2FsaXphdGlvbkluZm8gJkxJKSB7Ci0gICAgICAgICBJbnN0cnVj dGlvbiAmRmlyc3RJID0gKkZuLT5nZXRFbnRyeUJsb2NrKCkuYmVnaW4oKTsKLSAgICAgICAgIFR5 cGUgKkVsZW1UeSA9IEdWLT5nZXRUeXBlKCktPmdldEVsZW1lbnRUeXBlKCk7Ci0gICAgICAgICBB bGxvY2FJbnN0ICpBbGxvY2EgPSBuZXcgQWxsb2NhSW5zdChFbGVtVHksIDAsIEdWLT5nZXROYW1l KCkgKyAiLmxvY2FsIiwgJkZpcnN0SSk7Ci0tICAgICAgICBBbGxvY2EtPnNldEFsaWdubWVudChs bHZtOjpNYXliZUFsaWduKEdWLT5nZXRBbGlnbm1lbnQoKSkpOwotKyAgICAgICAgQWxsb2NhLT5z ZXRBbGlnbm1lbnQobGx2bTo6TWF5YmVBbGlnbihHVi0+Z2V0QWxpZ25tZW50KCkpLnZhbHVlT3JP bmUoKSk7Ci0rCi0gICAgICAgICBpZiAoIWlzYTxVbmRlZlZhbHVlPihHVi0+Z2V0SW5pdGlhbGl6 ZXIoKSkpCi0gICAgICAgICAgICAgbmV3IFN0b3JlSW5zdChHVi0+Z2V0SW5pdGlhbGl6ZXIoKSwg QWxsb2NhLCAmRmlyc3RJKTsKLSAKLWRpZmYgLS1naXQgYS9zcmMvb3B0LmNwcCBiL3NyYy9vcHQu Y3BwCi1pbmRleCBkNThkNzdmNzMuLjE3ODliODQ3NiAxMDA2NDQKLS0tLSBhL3NyYy9vcHQuY3Bw Ci0rKysgYi9zcmMvb3B0LmNwcAotQEAgLTI4OTksMTUgKzI4OTksMTcgQEAgc3RhdGljIGxsdm06 OkZ1bmN0aW9uICpsR2VuWE1hc2tlZEludDhJbnN0KGxsdm06Okluc3RydWN0aW9uICppbnN0LCBi b29sIGlzU3RvcmUKLSBzdGF0aWMgbGx2bTo6Q2FsbEluc3QgKmxHZW5YU3RvcmVJbnN0KGxsdm06 OlZhbHVlICp2YWwsIGxsdm06OlZhbHVlICpwdHIsIGxsdm06Okluc3RydWN0aW9uICppbnN0KSB7 Ci0gICAgIEFzc2VydChnLT50YXJnZXQtPmlzR2VuWFRhcmdldCgpKTsKLSAgICAgQXNzZXJ0KGxs dm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPih2YWwtPmdldFR5cGUoKSkpOwotLSAgICBBc3NlcnQo bGx2bTo6aXNQb3dlck9mMl8zMih2YWwtPmdldFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMo KSkpOwotLSAgICBBc3NlcnQodmFsLT5nZXRUeXBlKCktPmdldFByaW1pdGl2ZVNpemVJbkJpdHMo KSAvIDggPD0gOCAqIE9XT1JEKTsKLSsKLSsgICAgbGx2bTo6VmVjdG9yVHlwZSAqdmFsVmVjVHlw ZSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHZhbC0+Z2V0VHlwZSgpKTsKLSsg ICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIodmFsVmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMo KSkpOwotKyAgICBBc3NlcnQodmFsVmVjVHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0cygpIC8g OCA8PSA4ICogT1dPUkQpOwotIAotICAgICAvLyBUaGUgZGF0YSB3cml0ZSBvZiBzdm0gc3RvcmUg bXVzdCBoYXZlIGEgc2l6ZSB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIGZyb20gMTYgdG8gMTI4Ci0g ICAgIC8vIGJ5dGVzLiBIb3dldmVyIGZvciBpbnQ4IHR5cGUgYW5kIHNpbWQgd2lkdGggPSA4LCB0 aGUgZGF0YSB3cml0ZSBzaXplIGlzIDguCi0gICAgIC8vIFNvIHdlIHVzZSBtYXNrZWQgc3RvcmUg ZnVuY3Rpb24gaGVyZSBpbnN0ZWFkIG9mIHN2bSBzdG9yZSB3aGljaCBwcm9jZXNzIGludDggdHlw ZQotICAgICAvLyBjb3JyZWN0bHkuCi0tICAgIGlmICh2YWwtPmdldFR5cGUoKS0+Z2V0UHJpbWl0 aXZlU2l6ZUluQml0cygpIC8gOCA8IDE2KSB7Ci0tICAgICAgICBBc3NlcnQodmFsLT5nZXRUeXBl KCktPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBlKTsKLSsgICAgaWYgKHZh bFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAvIDggPCAxNikgewotKyAgICAgICAg QXNzZXJ0KHZhbFZlY1R5cGUtPmdldFNjYWxhclR5cGUoKSA9PSBMTFZNVHlwZXM6OkludDhUeXBl KTsKLSAgICAgICAgIGlmIChsbHZtOjpGdW5jdGlvbiAqbWFza2VkRnVuYyA9IGxHZW5YTWFza2Vk SW50OEluc3QoaW5zdCwgdHJ1ZSkpCi0gICAgICAgICAgICAgcmV0dXJuIGxsdm06OmR5bl9jYXN0 PGxsdm06OkNhbGxJbnN0PihsQ2FsbEluc3QobWFza2VkRnVuYywgcHRyLCB2YWwsIExMVk1NYXNr QWxsT24sICIiKSk7Ci0gICAgICAgICBlbHNlIHsKLUBAIC0yOTIzLDE1ICsyOTI1LDE3IEBAIHN0 YXRpYyBsbHZtOjpDYWxsSW5zdCAqbEdlblhTdG9yZUluc3QobGx2bTo6VmFsdWUgKnZhbCwgbGx2 bTo6VmFsdWUgKnB0ciwgbGx2bTo6Ci0gCi0gc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWExv YWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlR5cGUgKnJldFR5cGUsIGxsdm06Okluc3Ry dWN0aW9uICppbnN0KSB7Ci0gICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6VmVjdG9yVHlwZT4o cmV0VHlwZSkpOwotLSAgICBBc3NlcnQobGx2bTo6aXNQb3dlck9mMl8zMihyZXRUeXBlLT5nZXRW ZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0tICAgIEFzc2VydChyZXRUeXBlLT5nZXRQcmltaXRpdmVT aXplSW5CaXRzKCkpOwotLSAgICBBc3NlcnQocmV0VHlwZS0+Z2V0UHJpbWl0aXZlU2l6ZUluQml0 cygpIC8gOCA8PSA4ICogT1dPUkQpOwotKwotKyAgICBsbHZtOjpWZWN0b3JUeXBlICpyZXRWZWNU eXBlID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmV0VHlwZSk7Ci0rICAgIEFz c2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHJldFZlY1R5cGUtPmdldE51bUVsZW1lbnRzKCkpKTsK LSsgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSk7Ci0rICAg IEFzc2VydChyZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDw9IDggKiBP V09SRCk7Ci0gICAgIC8vIFRoZSBkYXRhIHJlYWQgb2Ygc3ZtIGxvYWQgbXVzdCBoYXZlIGEgc2l6 ZSB0aGF0IGlzIGEgcG93ZXIgb2YgdHdvIGZyb20gMTYgdG8gMTI4Ci0gICAgIC8vIGJ5dGVzLiBI b3dldmVyIGZvciBpbnQ4IHR5cGUgYW5kIHNpbWQgd2lkdGggPSA4LCB0aGUgZGF0YSByZWFkIHNp emUgaXMgOC4KLSAgICAgLy8gU28gd2UgdXNlIG1hc2tlZCBsb2FkIGZ1bmN0aW9uIGhlcmUgaW5z dGVhZCBvZiBzdm0gbG9hZCB3aGljaCBwcm9jZXNzIGludDggdHlwZQotICAgICAvLyBjb3JyZWN0 bHkuCi0tICAgIGlmIChyZXRUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRzKCkgLyA4IDwgMTYp IHsKLS0gICAgICAgIEFzc2VydChyZXRUeXBlLT5nZXRTY2FsYXJUeXBlKCkgPT0gTExWTVR5cGVz OjpJbnQ4VHlwZSk7Ci0rICAgIGlmIChyZXRWZWNUeXBlLT5nZXRQcmltaXRpdmVTaXplSW5CaXRz KCkgLyA4IDwgMTYpIHsKLSsgICAgICAgIEFzc2VydChyZXRWZWNUeXBlLT5nZXRTY2FsYXJUeXBl KCkgPT0gTExWTVR5cGVzOjpJbnQ4VHlwZSk7Ci0gICAgICAgICBpZiAobGx2bTo6RnVuY3Rpb24g Km1hc2tlZEZ1bmMgPSBsR2VuWE1hc2tlZEludDhJbnN0KGluc3QsIGZhbHNlKSkKLSAgICAgICAg ICAgICByZXR1cm4gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Q2FsbEluc3Q+KGxDYWxsSW5zdChtYXNr ZWRGdW5jLCBwdHIsIExMVk1NYXNrQWxsT24sICIiKSk7Ci0gICAgICAgICBlbHNlIHsKLUBAIC01 NjIyLDE1ICs1NjI2LDI0IEBAIHN0YXRpYyBib29sIGxWZWN0b3JpemVHRVBzKGxsdm06OlZhbHVl ICpwdHIsIHN0ZDo6dmVjdG9yPFB0clVzZT4gJnB0clVzZXMsIHN0ZDo6Ci0gICAgICAgICBsbHZt OjpQdHJUb0ludEluc3QgKnB0clRvSW50ID0KLSAgICAgICAgICAgICBuZXcgbGx2bTo6UHRyVG9J bnRJbnN0KHB0ciwgTExWTVR5cGVzOjpJbnQ2NFR5cGUsICJ2ZWN0b3JpemVkX3B0cnRvaW50Iiwg aW5zZXJ0QmVmb3JlKTsKLSAgICAgICAgIGxsdm06Okluc3RydWN0aW9uICphZGRyID0gbGx2bTo6 QmluYXJ5T3BlcmF0b3I6OkNyZWF0ZUFkZChwdHJUb0ludCwgb2Zmc2V0LCAidmVjdG9yaXplZF9h ZGRyZXNzIiwgaW5zZXJ0QmVmb3JlKTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19M TFZNXzExXzAKLSsgICAgICAgIGxsdm06OlR5cGUgKnJldFR5cGUgPSBsbHZtOjpGaXhlZFZlY3Rv clR5cGU6OmdldChzY2FsYXJfdHlwZSwgcmVxU2l6ZSAvIHRfc2l6ZSk7Ci0rI2Vsc2UKLSAgICAg ICAgIGxsdm06OlR5cGUgKnJldFR5cGUgPSBsbHZtOjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyX3R5 cGUsIHJlcVNpemUgLyB0X3NpemUpOwotKyNlbmRpZgotICAgICAgICAgbGx2bTo6RnVuY3Rpb24g KmZuID0gbGx2bTo6R2VuWEludHJpbnNpYzo6Z2V0R2VuWERlY2xhcmF0aW9uKAotICAgICAgICAg ICAgIG0tPm1vZHVsZSwgbGx2bTo6R2VuWEludHJpbnNpYzo6Z2VueF9zdm1fYmxvY2tfbGRfdW5h bGlnbmVkLCB7cmV0VHlwZSwgYWRkci0+Z2V0VHlwZSgpfSk7Ci0gICAgICAgICBsbHZtOjpJbnN0 cnVjdGlvbiAqbGQgPSBsbHZtOjpDYWxsSW5zdDo6Q3JlYXRlKGZuLCB7YWRkcn0sICJ2ZWN0b3Jp emVkX2xkIiwgaW5zZXJ0QmVmb3JlKTsKLSAKLSAgICAgICAgIGlmIChsb2FkaW5nUHRyKSB7Ci0g ICAgICAgICAgICAgLy8gQ2FzdCBpbnQgdG8gcHRyIHZpYSBpbnR0b3B0cgotKyNpZiBJU1BDX0xM Vk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgIGxkID0gbmV3IGxsdm06 OkludFRvUHRySW5zdChsZCwgbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQob3JpZ2luYWxUeXBl LCByZXFTaXplIC8gdF9zaXplKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgInZlY3Rvcml6ZWRfaW50dG9wdHIiLCBpbnNlcnRCZWZvcmUpOwotKyNlbHNlCi0gICAg ICAgICAgICAgbGQgPSBuZXcgbGx2bTo6SW50VG9QdHJJbnN0KGxkLCBsbHZtOjpWZWN0b3JUeXBl OjpnZXQob3JpZ2luYWxUeXBlLCByZXFTaXplIC8gdF9zaXplKSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgInZlY3Rvcml6ZWRfaW50dG9wdHIiLCBpbnNlcnRCZWZv cmUpOwotKyNlbmRpZgotICAgICAgICAgfQotIAotICAgICAgICAgLy8gU2NhbGFyIGV4dHJhY3Rz IGZvciBhbGwgbG9hZGVkIGVsZW1lbnRzCi1AQCAtNjE2MCwxOSArNjE3MywzNCBAQCBib29sIFJl cGxhY2VMTFZNSW50cmluc2ljczo6cnVuT25CYXNpY0Jsb2NrKGxsdm06OkJhc2ljQmxvY2sgJmJi KSB7Ci0gICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCA9ICYqSTsKLSAgICAgICAgIGlm IChsbHZtOjpDYWxsSW5zdCAqY2kgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpDYWxsSW5zdD4oaW5z dCkpIHsKLSAgICAgICAgICAgICBsbHZtOjpGdW5jdGlvbiAqZnVuYyA9IGNpLT5nZXRDYWxsZWRG dW5jdGlvbigpOwotLSAgICAgICAgICAgIGlmIChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKSA9PSAi bGx2bS50cmFwIikgewotKyAgICAgICAgICAgIGlmIChmdW5jICYmIGZ1bmMtPmdldE5hbWUoKS5l cXVhbHMoImxsdm0udHJhcCIpKSB7Ci0gICAgICAgICAgICAgICAgIGxsdm06OlR5cGUgKmFyZ1R5 cGVzW10gPSB7TExWTVR5cGVzOjpJbnQxVmVjdG9yVHlwZSwgTExWTVR5cGVzOjpJbnQxNlZlY3Rv clR5cGV9OwotICAgICAgICAgICAgICAgICAvLyBEZXNjcmlwdGlvbiBvZiBwYXJhbWV0ZXJzIGZv ciBnZW54X3Jhd19zZW5kX25vcmVzdWx0IGNhbiBiZSBmb3VuZCBpbiB0YXJnZXQtZ2VueC5sbAot ICAgICAgICAgICAgICAgICBhdXRvIEZuID0gK2xsdm06OkdlblhJbnRyaW5zaWM6OmdldEdlblhE ZWNsYXJhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgIG0tPm1vZHVsZSwgbGx2bTo6R2VuWElu dHJpbnNpYzo6Z2VueF9yYXdfc2VuZF9ub3Jlc3VsdCwgYXJnVHlwZXMpOwotICAgICAgICAgICAg ICAgICBsbHZtOjpTbWFsbFZlY3RvcjxsbHZtOjpWYWx1ZSAqLCA4PiBBcmdzOwotICAgICAgICAg ICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6 SW50MzJUeXBlLCAwKSk7Ci0tICAgICAgICAgICAgICAgIEFyZ3MucHVzaF9iYWNrKGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdChnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCks Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0VHJ1ZSgqZy0+Y3R4KSkpOwotKyAgICAgICAg ICAgICAgICBBcmdzLnB1c2hfYmFjayhsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0r I2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSsgICAgICAgICAgICAgICAg ICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLSsjZWxpZiBJU1BDX0xMVk1f VkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgICAgICAgICAge3N0YXRpY19j YXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFs c2V9LAotKyNlbHNlIC8vIExMVk0gMTIuMCsKLSsgICAgICAgICAgICAgICAgICAgIGxsdm06OkVs ZW1lbnRDb3VudDo6Z2V0KHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5nZXRO YXRpdmVWZWN0b3JXaWR0aCgpKSwgZmFsc2UpLAotKyNlbmRpZgotKyAgICAgICAgICAgICAgICAg ICAgbGx2bTo6Q29uc3RhbnRJbnQ6OmdldFRydWUoKmctPmN0eCkpKTsKLSsKLSAgICAgICAgICAg ICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6Oklu dDMyVHlwZSwgMzkpKTsKLSAgICAgICAgICAgICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29u c3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgMzM1NTQ0NDgpKTsKLSAgICAgICAg ICAgICAgICAgbGx2bTo6VmFsdWUgKnplcm9NYXNrID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6Omdl dFNwbGF0KAotLSAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JX aWR0aCgpLCBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDE2 VHkoKmctPmN0eCkpKTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAot KyAgICAgICAgICAgICAgICAgICAgZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JXaWR0aCgpLAot KyNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rICAgICAgICAgICAg ICAgICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZl Y3RvcldpZHRoKCkpLCBmYWxzZX0sCi0rI2Vsc2UgLy8gTExWTSAxMi4wKwotKyAgICAgICAgICAg ICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQoc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50 PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZSksCi0rI2VuZGlmCi0r ICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5 cGU6OmdldEludDE2VHkoKmctPmN0eCkpKTsKLSAgICAgICAgICAgICAgICAgQXJncy5wdXNoX2Jh Y2soemVyb01hc2spOwotIAotICAgICAgICAgICAgICAgICBsbHZtOjpJbnN0cnVjdGlvbiAqbmV3 SW5zdCA9IGxsdm06OkNhbGxJbnN0OjpDcmVhdGUoRm4sIEFyZ3MsIGNpLT5nZXROYW1lKCkpOwot QEAgLTYxODEsNyArNjIwOSw3IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5zaWNzOjpydW5PbkJh c2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAgICAgICAgICAgIG1v ZGlmaWVkQW55ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmVzdGFydDsKLSAg ICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZnVuYyAmJiBmdW5jLT5n ZXROYW1lKCkgPT0gImxsdm0uYXNzdW1lIikgewotKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZnVu YyAmJiBmdW5jLT5nZXROYW1lKCkuZXF1YWxzKCJsbHZtLmFzc3VtZSIpKSB7Ci0gICAgICAgICAg ICAgICAgIGNpLT5lcmFzZUZyb21QYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgbW9kaWZpZWRB bnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICBnb3RvIHJlc3RhcnQ7Ci1AQCAtNjMzNSw3ICs2 MzYzLDcgQEAgYm9vbCBDaGVja1Vuc3VwcG9ydGVkSW5zdHM6OnJ1bk9uQmFzaWNCbG9jayhsbHZt OjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IHVuc3VwcG9ydGVkRnVuY3Muc2l6ZSgpOyBpKyspIHsK LSAgICAgICAgICAgICAgICAgc3RkOjpzbWF0Y2ggbWF0Y2g7Ci0tICAgICAgICAgICAgICAgIHN0 ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFtZSgpOwotKyAgICAgICAgICAgICAgICBz dGQ6OnN0cmluZyBmdW5jTmFtZSA9IGZ1bmMtPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICAgICAg ICAgICAgaWYgKHN0ZDo6cmVnZXhfbWF0Y2goZnVuY05hbWUsIG1hdGNoLCB1bnN1cHBvcnRlZEZ1 bmNzW2ldKSkgewotICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZm91bmQgdW5zdXBwb3J0ZWQg ZnVuY3Rpb24uIEdlbmVyYXRlIGVycm9yIGFuZCBzdG9wIGNvbXBpbGF0aW9uLgotICAgICAgICAg ICAgICAgICAgICAgU291cmNlUG9zIHBvczsKLUBAIC02NDE4LDEyICs2NDQ2LDE0IEBAIGJvb2wg TWFuZ2xlT3BlbkNMQnVpbHRpbnM6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZi YikgewotICAgICAgICAgICAgIGlmIChmdW5jLT5nZXROYW1lKCkuc3RhcnRzd2l0aCgiX19zcGly dl9vY2wiKSkgewotICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBtYW5nbGVkTmFtZTsKLSAg ICAgICAgICAgICAgICAgbGx2bTo6VHlwZSAqcmV0VHlwZSA9IGZ1bmMtPmdldFJldHVyblR5cGUo KTsKLS0gICAgICAgICAgICAgICAgc3RkOjpzdHJpbmcgZnVuY05hbWUgPSBmdW5jLT5nZXROYW1l KCk7Ci0rICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nIGZ1bmNOYW1lID0gZnVuYy0+Z2V0TmFt ZSgpLnN0cigpOwotICAgICAgICAgICAgICAgICBzdGQ6OnZlY3RvcjxsbHZtOjpUeXBlICo+IEFy Z1R5OwotICAgICAgICAgICAgICAgICAvLyBzcGlydiBPcGVuQ0wgYnVpbHRpbnMgYXJlIHVzZWQg Zm9yIGRvdWJsZSB0eXBlcyBvbmx5Ci0tICAgICAgICAgICAgICAgIEFzc2VydChyZXRUeXBlLT5p c1ZlY3RvclR5KCkgJiYgcmV0VHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKS0+aXNEb3VibGVU eSgpIHx8Ci0rICAgICAgICAgICAgICAgIEFzc2VydChyZXRUeXBlLT5pc1ZlY3RvclR5KCkgJiYK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JU eXBlPihyZXRUeXBlKS0+Z2V0RWxlbWVudFR5cGUoKS0+aXNEb3VibGVUeSgpIHx8Ci0gICAgICAg ICAgICAgICAgICAgICAgICByZXRUeXBlLT5pc1NpbmdsZVZhbHVlVHlwZSgpICYmIHJldFR5cGUt PmlzRG91YmxlVHkoKSk7Ci0tICAgICAgICAgICAgICAgIGlmIChyZXRUeXBlLT5pc1ZlY3RvclR5 KCkgJiYgcmV0VHlwZS0+Z2V0VmVjdG9yRWxlbWVudFR5cGUoKS0+aXNEb3VibGVUeSgpKSB7Ci0r ICAgICAgICAgICAgICAgIGlmIChyZXRUeXBlLT5pc1ZlY3RvclR5KCkgJiYKLSsgICAgICAgICAg ICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXRF bGVtZW50VHlwZSgpLT5pc0RvdWJsZVR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgIEFyZ1R5 LnB1c2hfYmFjayhMTFZNVHlwZXM6OkRvdWJsZVZlY3RvclR5cGUpOwotICAgICAgICAgICAgICAg ICAgICAgLy8gX0R2V0lEVEggc3VmZml4IGlzIHVzZWQgaW4gdGFyZ2V0IGZpbGUgdG8gZGlmZmVy ZW50aWF0ZSBzY2FsYXIKLSAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB2ZWN0b3IgdmVyc2lv bnMgb2YgaW50cmluc2ljcy4gSGVyZSB3ZSByZW1vdmUgdGhpcwotQEAgLTY1MTEsOCArNjU0MSwx NSBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVy QWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotIAotICAgICAvLyBDYXN0IG9mZnNldHMgdG8g aW50NjQKLSAgICAgT2Zmc2V0cyA9IG5ldyBsbHZtOjpaRXh0SW5zdCgKLSsjaWYgSVNQQ19MTFZN X1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIE9mZnNldHMsCi0rICAgICAgICBs bHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5 cGU+KE9mZnNldHMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCkpLAotKyAgICAgICAgInN2 bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0rI2Vsc2UKLSAgICAgICAgIE9mZnNldHMs IGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgT2Zmc2V0cy0+Z2V0 VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSwKLSAgICAgICAgICJzdm1fb2Zmc2V0X3pl eHQiLCBJbnNlcnRCZWZvcmUpOwotKyNlbmRpZgotIAotICAgICBpZiAoIWxsdm06OmlzYTxsbHZt OjpDb25zdGFudFBvaW50ZXJOdWxsPihQdHIpKSB7Ci0gICAgICAgICAvLyBDYXN0IHB0ciB0byBp bnQ2NAotQEAgLTY1MjAsMTMgKzY1NTcsMzEgQEAgbGx2bTo6VmFsdWUgKkZpeEFkZHJlc3NTcGFj ZTo6Y2FsY3VsYXRlR2F0aGVyU2NhdHRlckFkZHJlc3MobGx2bTo6VmFsdWUgKlB0ciwgbGwKLSAK LSAgICAgICAgIC8vIFZlY3Rvcml6ZSBwdHIKLSAgICAgICAgIGxsdm06OlZhbHVlICp1bmRlZklu c2VydFZhbHVlID0KLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLSsg ICAgICAgICAgICBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpn ZXQoCi0rICAgICAgICAgICAgICAgIExMVk1UeXBlczo6SW50NjRUeXBlLCBsbHZtOjpkeW5fY2Fz dDxsbHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCkpKTsKLSsj ZWxzZQotICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBl OjpnZXQoTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVt ZW50cygpKSk7Ci0rI2VuZGlmCi0gICAgICAgICBhZGRyZXNzID0gbGx2bTo6SW5zZXJ0RWxlbWVu dEluc3Q6OkNyZWF0ZSh1bmRlZkluc2VydFZhbHVlLCBhZGRyZXNzLCBMTFZNSW50MzIoMCksICJz dm1fcHRyX2llaSIsIEluc2VydEJlZm9yZSk7Ci0gICAgICAgICBsbHZtOjpDb25zdGFudCAqemVy b1ZlYyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCgKLSsjaWYgSVNQQ19MTFZNX1ZF UlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAgIGFkZHJlc3NUeXBlLT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8x MV8wCi0rICAgICAgICAgICAge2xsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGFkZHJl c3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotKyNlbHNlCi0rICAgICAgICBsbHZt OjpFbGVtZW50Q291bnQ6OmdldCgKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxs dm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUtPmdldE51bUVs ZW1lbnRzKCksIGZhbHNlKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICBsbHZtOjpDb25zdGFudDo6 Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMyVHkoSW5zZXJ0QmVmb3JlLT5nZXRDb250 ZXh0KCkpKSk7Ci0rCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqdW5kZWZTaHVmZmxlVmFsdWUgPQot KyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAgICAgICAgIGxs dm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldCgKLSsgICAgICAg ICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3Rv clR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyNlbHNlCi0gICAgICAg ICAgICAgbGx2bTo6VW5kZWZWYWx1ZTo6Z2V0KGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlw ZXM6OkludDY0VHlwZSwgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpKTsKLSsj ZW5kaWYKLSAgICAgICAgIGFkZHJlc3MgPSBuZXcgbGx2bTo6U2h1ZmZsZVZlY3Rvckluc3QoYWRk cmVzcywgdW5kZWZTaHVmZmxlVmFsdWUsIHplcm9WZWMsICJzdm1fcHRyX3N2aSIsIEluc2VydEJl Zm9yZSk7Ci0gCi0gICAgICAgICAvLyBDYWxjdWxhdGUgYWRkcmVzcwotQEAgLTY1NTMsOSArNjYw OCwxMiBAQCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzVmVjdG9y TG9hZChsbHZtOjpMb2FkSW5zdCAqTEkpIHsKLSAgICAgaWYgKHJldFR5cGUtPmdldFNjYWxhclR5 cGUoKS0+aXNQb2ludGVyVHkoKSkgewotICAgICAgICAgaXNQdHJMb2FkID0gdHJ1ZTsKLSAgICAg ICAgIGF1dG8gc2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMzMkJpdCgpID8gTExWTVR5cGVzOjpJ bnQzMlR5cGUgOiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSsjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzExXzAKLSsgICAgICAgIHJldFR5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5 cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPihyZXRU eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0rI2Vsc2UKLSAgICAgICAgIHJldFR5cGUgPSBsbHZt OjpWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgcmV0VHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVu dHMoKSk7Ci0rI2VuZGlmCi0gICAgIH0KLS0KLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKnJlcyA9 IGxHZW5YTG9hZEluc3QocHRyLCByZXRUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpJbnN0cnVj dGlvbj4oTEkpKTsKLSAgICAgQXNzZXJ0KHJlcyk7Ci0gCi1AQCAtNjU4MCwxMSArNjYzOCwxNiBA QCBsbHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzU1ZNVmVjdG9yTG9h ZChsbHZtOjpJbnN0cnVjdGlvbiAqQ0kpCi0gICAgIHB0ciA9IG5ldyBsbHZtOjpJbnRUb1B0cklu c3QocHRyLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHJldFR5cGUsIDApLCBDSS0+Z2V0TmFtZSgp ICsgIl9pbnR0b3B0ciIsIENJKTsKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKmxvYWRJbnN0ID0g TlVMTDsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPj0gSVNQQ19MTFZNXzExXzAKLS0gICAgbG9h ZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QobGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5 cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9pbnRlckVsZW1lbnRUeXBlKCksIGxvYWRJbnN0LAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSS0+Z2V0TmFtZSgpLCAobGx2bTo6 SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3Qo bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6UG9pbnRlclR5cGU+KHB0ci0+Z2V0VHlwZSgpKS0+Z2V0UG9p bnRlckVsZW1lbnRUeXBlKCksIHB0ciwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ0ktPmdldE5hbWUoKSwgZmFsc2UgLyogbm90IHZvbGF0aWxlICovLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0 aXZlVmVjdG9yQWxpZ25tZW50KCkpLnZhbHVlT3JPbmUoKSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKGxsdm06Okluc3RydWN0aW9uICopTlVMTCk7Ci0gI2Vsc2UKLS0gICAg bG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3QocHRyLCBDSS0+Z2V0TmFtZSgpLCAobGx2bTo6 SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLSsgICAgbG9hZEluc3QgPSBuZXcgbGx2bTo6TG9hZEluc3Qo cHRyLCBDSS0+Z2V0TmFtZSgpLCBmYWxzZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdubWVu dCgpKS52YWx1ZU9yT25lKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotICNlbmRpZgotKwotICAgICBBc3NlcnQobG9hZElu c3QpOwotICAgICByZXR1cm4gbG9hZEluc3Q7Ci0gfQotQEAgLTY2MDYsNyArNjY2OSwxMSBAQCBs bHZtOjpJbnN0cnVjdGlvbiAqRml4QWRkcmVzc1NwYWNlOjpwcm9jZXNzVmVjdG9yU3RvcmUobGx2 bTo6U3RvcmVJbnN0ICpTSSkgewotICAgICAvLyBOb3RlOiBpdCBkb2Vzbid0IGxvb2sgbGlrZSBh IG5vcm1hbCBjYXNlIGZvciBHZW5YIHRhcmdldAotICAgICBpZiAodmFsVHlwZS0+Z2V0U2NhbGFy VHlwZSgpLT5pc1BvaW50ZXJUeSgpKSB7Ci0gICAgICAgICBhdXRvIHNjYWxhclR5cGUgPSBnLT50 YXJnZXQtPmlzMzJCaXQoKSA/IExMVk1UeXBlczo6SW50MzJUeXBlIDogTExWTVR5cGVzOjpJbnQ2 NFR5cGU7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgICAg ICB2YWxUeXBlID0gbGx2bTo6Rml4ZWRWZWN0b3JUeXBlOjpnZXQoc2NhbGFyVHlwZSwgbGx2bTo6 ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4odmFsVHlwZSktPmdldE51bUVsZW1lbnRzKCkpOwot KyNlbHNlCi0gICAgICAgICB2YWxUeXBlID0gbGx2bTo6VmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5 cGUsIHZhbFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkpOwotKyNlbmRpZgotICAgICAgICAg dmFsID0gbmV3IGxsdm06OlB0clRvSW50SW5zdCh2YWwsIHZhbFR5cGUsICJzdm1fc3RfdmFsX3B0 cnRvaW50IiwgU0kpOwotICAgICB9Ci0gCi1AQCAtNjYzMSwxMiArNjY5OCw4IEBAIGxsdm06Oklu c3RydWN0aW9uICpGaXhBZGRyZXNzU3BhY2U6OnByb2Nlc3NTVk1WZWN0b3JTdG9yZShsbHZtOjpJ bnN0cnVjdGlvbiAqQ0kpCi0gICAgIHB0ciA9IG5ldyBsbHZtOjpJbnRUb1B0ckluc3QocHRyLCBs bHZtOjpQb2ludGVyVHlwZTo6Z2V0KHZhbFR5cGUsIDApLCBDSS0+Z2V0TmFtZSgpICsgIl9pbnR0 b3B0ciIsIENJKTsKLSAKLSAgICAgbGx2bTo6SW5zdHJ1Y3Rpb24gKnN0b3JlSW5zdCA9IE5VTEw7 Ci0tI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0tICAgIGxvYWRJbnN0 ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWwsIGxsdm06OmR5bl9jYXN0PGxsdm06OlBvaW50ZXJU eXBlPihwdHItPmdldFR5cGUoKSktPmdldFBvaW50ZXJFbGVtZW50VHlwZSgpLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmVJbnN0LCBDSS0+Z2V0TmFtZSgpLCAobGx2 bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLS0jZWxzZQotLSAgICBzdG9yZUluc3QgPSBuZXcgbGx2 bTo6U3RvcmVJbnN0KHZhbCwgcHRyLCAobGx2bTo6SW5zdHJ1Y3Rpb24gKilOVUxMKTsKLS0jZW5k aWYKLSsgICAgc3RvcmVJbnN0ID0gbmV3IGxsdm06OlN0b3JlSW5zdCh2YWwsIHB0ciwgKGxsdm06 Okluc3RydWN0aW9uICopTlVMTCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsbHZtOjpNYXliZUFsaWduKGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yQWxpZ25tZW50KCkp LnZhbHVlT3JPbmUoKSk7Ci0gICAgIEFzc2VydChzdG9yZUluc3QpOwotICAgICByZXR1cm4gc3Rv cmVJbnN0OwotIH0KLUBAIC02NjQ1LDE1ICs2NzA4LDE4IEBAIGxsdm06Okluc3RydWN0aW9uICpG aXhBZGRyZXNzU3BhY2U6OmNyZWF0ZUludDhXclJlZ2lvbihsbHZtOjpWYWx1ZSAqVmFsLCBsbHZt OjpWCi0gICAgIGludCB3aWR0aCA9IGctPnRhcmdldC0+Z2V0VmVjdG9yV2lkdGgoKTsKLSAKLSAg ICAgbGx2bTo6VmFsdWUgKkFyZ3NbOF07Ci0tCi0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElT UENfTExWTV8xMV8wCi0rICAgIEFyZ3NbMF0gPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQobGx2bTo6 Rml4ZWRWZWN0b3JUeXBlOjpnZXQoTExWTVR5cGVzOjpJbnQ4VHlwZSwgd2lkdGggKiA0KSk7IC8v IG9sZCB2YWx1ZQotKyNlbHNlCi0gICAgIEFyZ3NbMF0gPSBsbHZtOjpVbmRlZlZhbHVlOjpnZXQo bGx2bTo6VmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50OFR5cGUsIHdpZHRoICogNCkpOyAv LyBvbGQgdmFsdWUKLS0gICAgQXJnc1sxXSA9IFZhbDsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVl IHRvIHN0b3JlCi0tICAgIEFyZ3NbMl0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBl czo6SW50MzJUeXBlLCAwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2c3RyaWRl Ci0tICAgIEFyZ3NbM10gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJU eXBlLCB3aWR0aCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWR0aAotLSAgICBBcmdz WzRdID0gbGx2bTo6Q29uc3RhbnRJbnQ6OmdldChMTFZNVHlwZXM6OkludDMyVHlwZSwgNCk7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RyaWRlCi0tICAgIEFyZ3NbNV0gPSBsbHZt OjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50MTZUeXBlLCAwKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAvLyBvZmZzZXRzCi0tICAgIEFyZ3NbNl0gPSBsbHZtOjpDb25zdGFu dEludDo6Z2V0KExMVk1UeXBlczo6SW50MzJUeXBlLCAwKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAvLyBwYXJlbnQgd2lkdGggKGlnbm9yZWQpCi0tICAgIEFyZ3NbN10gPSBNYXNrOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAvLyBtYXNrCi0rI2VuZGlmCi0rICAgIEFyZ3NbMV0gPSBWYWw7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIHRvIHN0 b3JlCi0rICAgIEFyZ3NbMl0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1UeXBlczo6SW50 MzJUeXBlLCAwKTsgICAgIC8vIHZzdHJpZGUKLSsgICAgQXJnc1szXSA9IGxsdm06OkNvbnN0YW50 SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIHdpZHRoKTsgLy8gd2lkdGgKLSsgICAgQXJn c1s0XSA9IGxsdm06OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDQpOyAg ICAgLy8gc3RyaWRlCi0rICAgIEFyZ3NbNV0gPSBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1U eXBlczo6SW50MTZUeXBlLCAwKTsgICAgIC8vIG9mZnNldHMKLSsgICAgQXJnc1s2XSA9IGxsdm06 OkNvbnN0YW50SW50OjpnZXQoTExWTVR5cGVzOjpJbnQzMlR5cGUsIDApOyAgICAgLy8gcGFyZW50 IHdpZHRoIChpZ25vcmVkKQotKyAgICBBcmdzWzddID0gTWFzazsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXNrCi0gCi0gICAgIGxsdm06OlR5cGUg KlR5c1s0XTsKLSAKLUBAIC02NzA4LDcgKzY3NzQsMTIgQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZp eEFkZHJlc3NTcGFjZTo6cHJvY2Vzc0dhdGhlclNjYXR0ZXJQcml2YXRlKGxsdm06OkNhbGxJbnN0 ICoKLSAgICAgICAgIHJldHVybiBOVUxMOwotIAotICAgICBsbHZtOjpWYWx1ZSAqYWRkcmVzcyA9 IGNhbGN1bGF0ZUdhdGhlclNjYXR0ZXJBZGRyZXNzKHB0ciwgb2Zmc2V0cywgQ0kpOwotKyNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICBsbHZtOjpUeXBlICppOFZl Y1R5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3 aWR0aCAqIDQpOwotKyNlbHNlCi0gICAgIGxsdm06OlR5cGUgKmk4VmVjVHlwZSA9IGxsdm06OlZl Y3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDhUeXBlLCB3aWR0aCAqIDQpOwotKyNlbmRpZgot KwotICAgICBib29sIGlzSW50OCA9ICh2YWx1ZS0+Z2V0VHlwZSgpLT5nZXRTY2FsYXJUeXBlKCkg PT0gTExWTVR5cGVzOjpJbnQ4VHlwZSk7Ci0gCi0gICAgIEFzc2VydChhZGRyZXNzICYmICJCYWQg Z2F0aGVyL3NjYXR0ZXIgYWRkcmVzcyEiKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvaXNwYy9wYXRj aGVzL2xsdm0xMi0wMDYucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODI5ZWE0ODM5MWUuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA2LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTI2ICswLDAgQEAKLUZyb20gYmIzZjQ5M2QxZmJkNDVjNzllMWQ5ZGVlNjdh MDQzMGJhMzEzZWFhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFyaW5hIE5lc2hs eWFldmEgPGFyaW5hLm5lc2hseWFldmFAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxOSBKYW4gMjAy MSAxMTowNzozMyAtMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXhlZCBpZmRlZnMgZm9yIExMVk1f MTEKLQotLS0tCi0gc3JjL2N0eC5jcHAgfCAgNiArKystLS0KLSBzcmMvb3B0LmNwcCB8IDE4ICsr KysrKysrKy0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY3R4LmNwcCBiL3NyYy9jdHguY3BwCi1p bmRleCAyYTcyZTY4MzcuLjUyN2EwMmYzMCAxMDA2NDQKLS0tLSBhL3NyYy9jdHguY3BwCi0rKysg Yi9zcmMvY3R4LmNwcAotQEAgLTE2OTEsNyArMTY5MSw3IEBAIGxsdm06OlZhbHVlICpGdW5jdGlv bkVtaXRDb250ZXh0OjpTbWVhclVuaWZvcm0obGx2bTo6VmFsdWUgKnZhbHVlLCBjb25zdCBsbHZt OjpUCi0gICAgIGlmIChsbHZtOjpDb25zdGFudCAqY29uc3RfdmFsID0gbGx2bTo6ZHluX2Nhc3Q8 bGx2bTo6Q29uc3RhbnQ+KHZhbHVlKSkgewotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMV8wCi0gICAgICAgICByZXQgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQo Zy0+dGFyZ2V0LT5nZXRWZWN0b3JXaWR0aCgpLCBjb25zdF92YWwpOwotLSNlbGlmIElTUENfTExW TV9WRVJTSU9OID09IElTUENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJ U1BDX0xMVk1fMTJfMAotICAgICAgICAgcmV0ID0KLSAgICAgICAgICAgICBsbHZtOjpDb25zdGFu dFZlY3Rvcjo6Z2V0U3BsYXQoe3N0YXRpY19jYXN0PHVuc2lnbmVkIGludD4oZy0+dGFyZ2V0LT5n ZXRWZWN0b3JXaWR0aCgpKSwgZmFsc2V9LCBjb25zdF92YWwpOwotICNlbHNlIC8vIExMVk0gMTIu MCsKLUBAIC0zMTQ4LDcgKzMxNDgsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4 dDo6QnJvYWRjYXN0VmFsdWUobGx2bTo6VmFsdWUgKnYsIGxsdm06OlR5cGUgKnZlYwotICNpZiBJ U1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgIGxsdm06OkNvbnN0YW50ICp6 ZXJvVmVjID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotICAgICAgICAgdmVjVHlw ZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZShs bHZtOjpUeXBlOjpnZXRJbnQzMlR5KCpnLT5jdHgpKSk7Ci0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJ T04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExW TV8xMl8wCi0gICAgIGxsdm06OkNvbnN0YW50ICp6ZXJvVmVjID0KLSAgICAgICAgIGxsdm06OkNv bnN0YW50VmVjdG9yOjpnZXRTcGxhdCh7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50Pih0eS0+Z2V0 TnVtRWxlbWVudHMoKSksIGZhbHNlfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsbHZtOjpDb25zdGFudDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMy VHkoKmctPmN0eCkpKTsKLUBAIC0zNjg4LDcgKzM2ODgsNyBAQCBsbHZtOjpWYWx1ZSAqRnVuY3Rp b25FbWl0Q29udGV4dDo6R2VuWFNpbWRDRlByZWRpY2F0ZShsbHZtOjpWYWx1ZSAqdmFsdWUsIGxs dm06OgotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICBk ZWZhdWx0cyA9IGxsdm06OkNvbnN0YW50VmVjdG9yOjpnZXRTcGxhdCh2dC0+Z2V0VmVjdG9yTnVt RWxlbWVudHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxsdm06OkNvbnN0YW50OjpnZXROdWxsVmFsdWUodnQtPmdldEVsZW1lbnRUeXBlKCkp KTsKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElT UENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgIGRlZmF1bHRzID0gbGx2 bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHtzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KHZ0 LT5nZXROdW1FbGVtZW50cygpKSwgZmFsc2V9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnQ6OmdldE51bGxWYWx1ZSh2dC0+ Z2V0RWxlbWVudFR5cGUoKSkpOwotICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3JjL29wdC5jcHAgYi9z cmMvb3B0LmNwcAotaW5kZXggMTc4OWI4NDc2Li4zZmYxOTFhMGEgMTAwNjQ0Ci0tLS0gYS9zcmMv b3B0LmNwcAotKysrIGIvc3JjL29wdC5jcHAKLUBAIC0xMDQ1LDcgKzEwNDUsNyBAQCBib29sIElu dHJpbnNpY3NPcHQ6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAg ICAgICAgICAgICAgICAgICAgYWxpZ24gPSBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvckFsaWdu bWVudCgpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBhbGln biA9IGNhbGxJbnN0LT5nZXRDYWxsZWRGdW5jdGlvbigpID09IGF2eE1hc2tlZExvYWQzMiA/IDQg OiA4OwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBfMAotKyNpZiBJU1BD X0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgICAgIGxsdm06Oklu c3RydWN0aW9uICpsb2FkSW5zdCA9Ci0gICAgICAgICAgICAgICAgICAgICBuZXcgbGx2bTo6TG9h ZEluc3QoY2FzdFB0ciwgbGx2bTo6VHdpbmUoY2FsbEluc3QtPmdldEFyZ09wZXJhbmQoMCktPmdl dE5hbWUoKSkgKyAiX2xvYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZhbHNlIC8qIG5vdCB2b2xhdGlsZSAqLywgbGx2bTo6TWF5YmVBbGlnbihhbGlnbiksIChs bHZtOjpJbnN0cnVjdGlvbiAqKU5VTEwpOwotQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHN0YXRpYyBs bHZtOjpWYWx1ZSAqbEdldEJhc2VQdHJBbmRPZmZzZXRzKGxsdm06OlZhbHVlICpwdHJzLCBsbHZt OjpWYWx1ZSAqKm9mZnNlCi0gICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01h c2sgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAg ICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KGN2LT5nZXRUeXBl KCktPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0tI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPT0g SVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMl8w Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0 KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVj dG9yVHlwZT4oY3YtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAjZWxz ZSAvLyBMTFZNIDEyLjArCi1AQCAtMTQ5NSw3ICsxNDk1LDcgQEAgc3RhdGljIGxsdm06OlZhbHVl ICpsR2V0QmFzZVB0ckFuZE9mZnNldHMobGx2bTo6VmFsdWUgKnB0cnMsIGxsdm06OlZhbHVlICoq b2Zmc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBs bHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwg SVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9wX3Zhcl90eXBl LT5nZXRWZWN0b3JOdW1FbGVtZW50cygpLAotLSNlbGlmIElTUENfTExWTV9WRVJTSU9OID09IElT UENfTExWTV8xMV8wCi0rI2VsaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9y VHlwZT4oYm9wX3Zhcl90eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSwgZmFsc2V9LAotICNlbHNlIC8v IExMVk0gMTIuMCsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RWxlbWVudENv dW50OjpnZXQoCi1AQCAtMjgwMyw3ICsyODAzLDcgQEAgc3RhdGljIGJvb2wgbEdTVG9Mb2FkU3Rv cmUobGx2bTo6Q2FsbEluc3QgKmNhbGxJbnN0KSB7Ci0gICAgICAgICAgICAgbGx2bTo6VmFsdWUg Knplcm9NYXNrID0KLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04gPCBJU1BDX0xMVk1fMTFfMAotICAg ICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoY2FsbEluc3QtPmdl dFR5cGUoKS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMoKSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lP TiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZN XzEyXzAKLSAgICAgICAgICAgICAgICAgbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAot ICAgICAgICAgICAgICAgICAgICAge2xsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KGNh bGxJbnN0LT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpLCBmYWxzZX0sCi0gCi1AQCAtMzEw MCw3ICszMTAwLDcgQEAgc3RhdGljIGJvb2wgbEltcHJvdmVNYXNrZWRMb2FkKGxsdm06OkNhbGxJ bnN0ICpjYWxsSW5zdCwgbGx2bTo6QmFzaWNCbG9jazo6aXRlcmEKLSAgICAgICAgIHsKLSAgICAg ICAgICAgICBsbHZtOjpUeXBlICpwdHJUeXBlID0gbGx2bTo6UG9pbnRlclR5cGU6OmdldChjYWxs SW5zdC0+Z2V0VHlwZSgpLCAwKTsKLSAgICAgICAgICAgICBwdHIgPSBuZXcgbGx2bTo6Qml0Q2Fz dEluc3QocHRyLCBwdHJUeXBlLCAicHRyX2Nhc3RfZm9yX2xvYWQiLCBjYWxsSW5zdCk7Ci0tI2lm IElTUENfTExWTV9WRVJTSU9OID09IElTUENfTExWTV8xMF8wCi0rI2lmIElTUENfTExWTV9WRVJT SU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAgICAgICBsb2FkID0gbmV3IGxsdm06OkxvYWRJ bnN0KAotICAgICAgICAgICAgICAgICBwdHIsIGNhbGxJbnN0LT5nZXROYW1lKCksIGZhbHNlIC8q IG5vdCB2b2xhdGlsZSAqLywKLSAgICAgICAgICAgICAgICAgbGx2bTo6TWF5YmVBbGlnbihnLT5v cHQuZm9yY2VBbGlnbmVkTWVtb3J5ID8gZy0+dGFyZ2V0LT5nZXROYXRpdmVWZWN0b3JBbGlnbm1l bnQoKSA6IGluZm8tPmFsaWduKQotQEAgLTM0NTksNyArMzQ1OSw3IEBAIGxsdm06OlZhbHVlICps R0VQQW5kTG9hZChsbHZtOjpWYWx1ZSAqYmFzZVB0ciwgaW50NjRfdCBvZmZzZXQsIGludCBhbGln biwgbGx2bTo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGxsdm06OlR5cGUgKnR5cGUpIHsK LSAgICAgbGx2bTo6VmFsdWUgKnB0ciA9IGxHRVBJbnN0KGJhc2VQdHIsIExMVk1JbnQ2NChvZmZz ZXQpLCAibmV3X2Jhc2UiLCBpbnNlcnRCZWZvcmUpOwotICAgICBwdHIgPSBuZXcgbGx2bTo6Qml0 Q2FzdEluc3QocHRyLCBsbHZtOjpQb2ludGVyVHlwZTo6Z2V0KHR5cGUsIDApLCAicHRyX2Nhc3Qi LCBpbnNlcnRCZWZvcmUpOwotLSNpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTBf MAotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgIHJldHVybiBu ZXcgbGx2bTo6TG9hZEluc3QocHRyLCAiZ2F0aGVyX2xvYWQiLCBmYWxzZSAvKiBub3Qgdm9sYXRp bGUgKi8sIGxsdm06Ok1heWJlQWxpZ24oYWxpZ24pLCBpbnNlcnRCZWZvcmUpOwotICNlbHNlIC8v IExMVk0gMTEuMCsKLSAgICAgcmV0dXJuIG5ldyBsbHZtOjpMb2FkSW5zdChsbHZtOjpkeW5fY2Fz dDxsbHZtOjpQb2ludGVyVHlwZT4ocHRyLT5nZXRUeXBlKCkpLT5nZXRQb2ludGVyRWxlbWVudFR5 cGUoKSwgcHRyLAotQEAgLTYxODMsNyArNjE4Myw3IEBAIGJvb2wgUmVwbGFjZUxMVk1JbnRyaW5z aWNzOjpydW5PbkJhc2ljQmxvY2sobGx2bTo6QmFzaWNCbG9jayAmYmIpIHsKLSAgICAgICAgICAg ICAgICAgQXJncy5wdXNoX2JhY2sobGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KAotICNp ZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAgICAgICAgICAg ICBnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCksCi0tI2VsaWYgSVNQQ19MTFZNX1ZF UlNJT04gPT0gSVNQQ19MTFZNXzExXzAKLSsjZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENf TExWTV8xMl8wCi0gICAgICAgICAgICAgICAgICAgICB7c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50 PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRoKCkpLCBmYWxzZX0sCi0gI2Vsc2UgLy8g TExWTSAxMi4wKwotICAgICAgICAgICAgICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQo c3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihnLT50YXJnZXQtPmdldE5hdGl2ZVZlY3RvcldpZHRo KCkpLCBmYWxzZSksCi1AQCAtNjE5NSw3ICs2MTk1LDcgQEAgYm9vbCBSZXBsYWNlTExWTUludHJp bnNpY3M6OnJ1bk9uQmFzaWNCbG9jayhsbHZtOjpCYXNpY0Jsb2NrICZiYikgewotICAgICAgICAg ICAgICAgICBsbHZtOjpWYWx1ZSAqemVyb01hc2sgPSBsbHZtOjpDb25zdGFudFZlY3Rvcjo6Z2V0 U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAgICAg ICAgICAgICAgICAgIGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSwKLS0jZWxpZiBJ U1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElTUENfTExWTV9WRVJT SU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICAgICAgICAgIHtzdGF0aWNfY2FzdDx1 bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZlVmVjdG9yV2lkdGgoKSksIGZhbHNlfSwK LSAjZWxzZSAvLyBMTFZNIDEyLjArCi0gICAgICAgICAgICAgICAgICAgICBsbHZtOjpFbGVtZW50 Q291bnQ6OmdldChzdGF0aWNfY2FzdDx1bnNpZ25lZCBpbnQ+KGctPnRhcmdldC0+Z2V0TmF0aXZl VmVjdG9yV2lkdGgoKSksIGZhbHNlKSwKLUBAIC02NTY3LDcgKzY1NjcsNyBAQCBsbHZtOjpWYWx1 ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpW YWx1ZSAqUHRyLCBsbAotICAgICAgICAgbGx2bTo6Q29uc3RhbnQgKnplcm9WZWMgPSBsbHZtOjpD b25zdGFudFZlY3Rvcjo6Z2V0U3BsYXQoCi0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19M TFZNXzExXzAKLSAgICAgICAgICAgICBhZGRyZXNzVHlwZS0+Z2V0VmVjdG9yTnVtRWxlbWVudHMo KSwKLS0jZWxpZiBJU1BDX0xMVk1fVkVSU0lPTiA9PSBJU1BDX0xMVk1fMTFfMAotKyNlbGlmIElT UENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzEyXzAKLSAgICAgICAgICAgICB7bGx2bTo6ZHlu X2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4oYWRkcmVzc1R5cGUpLT5nZXROdW1FbGVtZW50cygpLCBm YWxzZX0sCi0gI2Vsc2UKLSAgICAgICAgIGxsdm06OkVsZW1lbnRDb3VudDo6Z2V0KApkaWZmIC0t Z2l0IGEvc3JjcGtncy9pc3BjL3BhdGNoZXMvbGx2bTEyLTAwNy5wYXRjaCBiL3NyY3BrZ3MvaXNw Yy9wYXRjaGVzL2xsdm0xMi0wMDcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDFiOTc1Zjg5NmM3ZS4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xs dm0xMi0wMDcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotRnJvbSA2MmY1 YTZjMzdiZjI2ZmMyNWE3Y2Y4MTg2ODA1MmQzNDcyODc0NjEwIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogQXJpbmEgTmVzaGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+ Ci1EYXRlOiBUdWUsIDIzIE1hciAyMDIxIDIzOjA3OjMwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hd IERvIG5vdCBnZW5lcmF0ZSBmdW5jdGlvbiBtYXNrIHdoZW4gaXQgaXMgbm90IHJlcXVpcmVkCi0K LS0tLQotIHNyYy9jdHguY3BwICAgICAgICAgICAgICAgICAgICB8IDM5ICsrKysrKysrKysrKysr LS0tLS0tLQotIHRlc3RzL2xpdC10ZXN0cy9mdWxsX21hc2suaXNwYyB8IDYzICsrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMo KyksIDEyIGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0cy9saXQtdGVzdHMv ZnVsbF9tYXNrLmlzcGMKLQotZGlmZiAtLWdpdCBhL3NyYy9jdHguY3BwIGIvc3JjL2N0eC5jcHAK LWluZGV4IDUyN2EwMmYzMC4uOWU3NzVmYzVjIDEwMDY0NAotLS0tIGEvc3JjL2N0eC5jcHAKLSsr KyBiL3NyYy9jdHguY3BwCi1AQCAtMjMxLDEwICsyMzEsMTggQEAgRnVuY3Rpb25FbWl0Q29udGV4 dDo6RnVuY3Rpb25FbWl0Q29udGV4dChGdW5jdGlvbiAqZnVuYywgU3ltYm9sICpmdW5TeW0sIGxs dm06OkYKLSAgICAgaW50ZXJuYWxNYXNrUG9pbnRlciA9IEFsbG9jYUluc3QoTExWTVR5cGVzOjpN YXNrVHlwZSwgImludGVybmFsX21hc2tfbWVtb3J5Iik7Ci0gICAgIFN0b3JlSW5zdChMTFZNTWFz a0FsbE9uLCBpbnRlcm5hbE1hc2tQb2ludGVyKTsKLSAKLS0gICAgZnVuY3Rpb25NYXNrVmFsdWUg PSBMTFZNTWFza0FsbE9uOwotLQotLSAgICBmdWxsTWFza1BvaW50ZXIgPSBBbGxvY2FJbnN0KExM Vk1UeXBlczo6TWFza1R5cGUsICJmdWxsX21hc2tfbWVtb3J5Iik7Ci0tICAgIFN0b3JlSW5zdChM TFZNTWFza0FsbE9uLCBmdWxsTWFza1BvaW50ZXIpOwotKyAgICAvLyBJZiB0aGUgZnVuY3Rpb24g ZG9lc24ndCBoYXZlIF9fbWFzayBpbiBwYXJhbWV0ZXJzLCB0aGVyZSBpcyBubyBuZWVkIHRvCi0r ICAgIC8vIGhhdmUgZnVuY3Rpb24gbWFzawotKyAgICBpZiAoKGZ1bmMtPkdldFR5cGUoKS0+aXNF eHBvcnRlZCAmJgotKyAgICAgICAgIChsZi0+Z2V0RnVuY3Rpb25UeXBlKCktPmdldE51bVBhcmFt cygpID09IGZ1bmMtPkdldFR5cGUoKS0+R2V0TnVtUGFyYW1ldGVycygpKSkgfHwKLSsgICAgICAg IChmdW5jLT5HZXRUeXBlKCktPmlzVW5tYXNrZWQpIHx8IChmdW5jLT5HZXRUeXBlKCktPmlzVGFz aykpIHsKLSsgICAgICAgIGZ1bmN0aW9uTWFza1ZhbHVlID0gTlVMTDsKLSsgICAgICAgIGZ1bGxN YXNrUG9pbnRlciA9IE5VTEw7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgICBmdW5jdGlvbk1hc2tW YWx1ZSA9IExMVk1NYXNrQWxsT247Ci0rICAgICAgICBmdWxsTWFza1BvaW50ZXIgPSBBbGxvY2FJ bnN0KExMVk1UeXBlczo6TWFza1R5cGUsICJmdWxsX21hc2tfbWVtb3J5Iik7Ci0rICAgICAgICBT dG9yZUluc3QoTExWTU1hc2tBbGxPbiwgZnVsbE1hc2tQb2ludGVyKTsKLSsgICAgfQotIAotICAg ICBibG9ja0VudHJ5TWFzayA9IE5VTEw7Ci0gICAgIGJyZWFrTGFuZXNQdHIgPSBjb250aW51ZUxh bmVzUHRyID0gTlVMTDsKLUBAIC0zODksMjAgKzM5NywyNiBAQCBsbHZtOjpCYXNpY0Jsb2NrICpG dW5jdGlvbkVtaXRDb250ZXh0OjpHZXRDdXJyZW50QmFzaWNCbG9jaygpIHsgcmV0dXJuIGJibG9j azsgfQotIAotIHZvaWQgRnVuY3Rpb25FbWl0Q29udGV4dDo6U2V0Q3VycmVudEJhc2ljQmxvY2so bGx2bTo6QmFzaWNCbG9jayAqYmIpIHsgYmJsb2NrID0gYmI7IH0KLSAKLS1sbHZtOjpWYWx1ZSAq RnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVuY3Rpb25NYXNrKCkgeyByZXR1cm4gZnVuY3Rpb25N YXNrVmFsdWU7IH0KLStsbHZtOjpWYWx1ZSAqRnVuY3Rpb25FbWl0Q29udGV4dDo6R2V0RnVuY3Rp b25NYXNrKCkgeyByZXR1cm4gZnVsbE1hc2tQb2ludGVyID8gZnVuY3Rpb25NYXNrVmFsdWUgOiBM TFZNTWFza0FsbE9uOyB9Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6Okdl dEludGVybmFsTWFzaygpIHsgcmV0dXJuIExvYWRJbnN0KGludGVybmFsTWFza1BvaW50ZXIsIE5V TEwsICJsb2FkX21hc2siKTsgfQotIAotIGxsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0 OjpHZXRGdWxsTWFzaygpIHsKLS0gICAgcmV0dXJuIEJpbmFyeU9wZXJhdG9yKGxsdm06Okluc3Ry dWN0aW9uOjpBbmQsIEdldEludGVybmFsTWFzaygpLCBmdW5jdGlvbk1hc2tWYWx1ZSwgImludGVy bmFsX21hc2smZnVuY3Rpb25fbWFzayIpOwotKyAgICByZXR1cm4gZnVsbE1hc2tQb2ludGVyID8g QmluYXJ5T3BlcmF0b3IobGx2bTo6SW5zdHJ1Y3Rpb246OkFuZCwgR2V0SW50ZXJuYWxNYXNrKCks IGZ1bmN0aW9uTWFza1ZhbHVlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgImludGVybmFsX21hc2smZnVuY3Rpb25fbWFzayIpCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiBHZXRJbnRlcm5hbE1hc2soKTsKLSB9Ci0gCi0tbGx2bTo6VmFsdWUgKkZ1 bmN0aW9uRW1pdENvbnRleHQ6OkdldEZ1bGxNYXNrUG9pbnRlcigpIHsgcmV0dXJuIGZ1bGxNYXNr UG9pbnRlcjsgfQotK2xsdm06OlZhbHVlICpGdW5jdGlvbkVtaXRDb250ZXh0OjpHZXRGdWxsTWFz a1BvaW50ZXIoKSB7Ci0rICAgIHJldHVybiBmdWxsTWFza1BvaW50ZXIgPyBmdWxsTWFza1BvaW50 ZXIgOiBpbnRlcm5hbE1hc2tQb2ludGVyOwotK30KLSAKLSB2b2lkIEZ1bmN0aW9uRW1pdENvbnRl eHQ6OlNldEZ1bmN0aW9uTWFzayhsbHZtOjpWYWx1ZSAqdmFsdWUpIHsKLS0gICAgZnVuY3Rpb25N YXNrVmFsdWUgPSB2YWx1ZTsKLS0gICAgaWYgKGJibG9jayAhPSBOVUxMKQotLSAgICAgICAgU3Rv cmVJbnN0KEdldEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7Ci0rICAgIGlmIChmdWxsTWFz a1BvaW50ZXIgIT0gTlVMTCkgewotKyAgICAgICAgZnVuY3Rpb25NYXNrVmFsdWUgPSB2YWx1ZTsK LSsgICAgICAgIGlmIChiYmxvY2sgIT0gTlVMTCkKLSsgICAgICAgICAgICBTdG9yZUluc3QoR2V0 RnVsbE1hc2soKSwgZnVsbE1hc2tQb2ludGVyKTsKLSsgICAgfQotIH0KLSAKLSB2b2lkIEZ1bmN0 aW9uRW1pdENvbnRleHQ6OlNldEJsb2NrRW50cnlNYXNrKGxsdm06OlZhbHVlICp2YWx1ZSkgeyBi bG9ja0VudHJ5TWFzayA9IHZhbHVlOyB9Ci1AQCAtNDEwLDcgKzQyNCw4IEBAIHZvaWQgRnVuY3Rp b25FbWl0Q29udGV4dDo6U2V0QmxvY2tFbnRyeU1hc2sobGx2bTo6VmFsdWUgKnZhbHVlKSB7IGJs b2NrRW50cnlNYXNrCi0gdm9pZCBGdW5jdGlvbkVtaXRDb250ZXh0OjpTZXRJbnRlcm5hbE1hc2so bGx2bTo6VmFsdWUgKnZhbHVlKSB7Ci0gICAgIFN0b3JlSW5zdCh2YWx1ZSwgaW50ZXJuYWxNYXNr UG9pbnRlcik7Ci0gICAgIC8vIGtsdWRnZSBzbyB0aGF0IF9fbWFzayByZXR1cm5zIHRoZSByaWdo dCB2YWx1ZSBpbiBpc3BjIGNvZGUuCi0tICAgIFN0b3JlSW5zdChHZXRGdWxsTWFzaygpLCBmdWxs TWFza1BvaW50ZXIpOwotKyAgICBpZiAoZnVsbE1hc2tQb2ludGVyKQotKyAgICAgICAgU3RvcmVJ bnN0KEdldEZ1bGxNYXNrKCksIGZ1bGxNYXNrUG9pbnRlcik7Ci0gfQotIAotIHZvaWQgRnVuY3Rp b25FbWl0Q29udGV4dDo6U2V0SW50ZXJuYWxNYXNrQW5kKGxsdm06OlZhbHVlICpvbGRNYXNrLCBs bHZtOjpWYWx1ZSAqdGVzdCkgewotQEAgLTEyNjUsNyArMTI4MCw3IEBAIHZvaWQgRnVuY3Rpb25F bWl0Q29udGV4dDo6Q3VycmVudExhbmVzUmV0dXJuZWQoRXhwciAqZXhwciwgYm9vbCBkb0NvaGVy ZW5jZUNoZWNrCi0gICAgICAgICAvLyBsYW5lcyBoYXZlIHJldHVybmVkCi0gICAgICAgICBpZiAo ZG9Db2hlcmVuY2VDaGVjaykgewotICAgICAgICAgICAgIC8vIGlmIG5ld1JldHVybmVkTGFuZXMg PT0gZnVuY3Rpb25NYXNrVmFsdWUsIGdldCBvdXQgb2YgaGVyZSEKLS0gICAgICAgICAgICBsbHZt OjpWYWx1ZSAqY21wID0gTWFza3NBbGxFcXVhbChmdW5jdGlvbk1hc2tWYWx1ZSwgbmV3UmV0dXJu ZWRMYW5lcyk7Ci0rICAgICAgICAgICAgbGx2bTo6VmFsdWUgKmNtcCA9IE1hc2tzQWxsRXF1YWwo R2V0RnVuY3Rpb25NYXNrKCksIG5ld1JldHVybmVkTGFuZXMpOwotICAgICAgICAgICAgIGxsdm06 OkJhc2ljQmxvY2sgKmJEb1JldHVybiA9IENyZWF0ZUJhc2ljQmxvY2soImRvX3JldHVybiIpOwot ICAgICAgICAgICAgIGxsdm06OkJhc2ljQmxvY2sgKmJOb1JldHVybiA9IENyZWF0ZUJhc2ljQmxv Y2soIm5vX3JldHVybiIpOwotICAgICAgICAgICAgIEJyYW5jaEluc3QoYkRvUmV0dXJuLCBiTm9S ZXR1cm4sIGNtcCk7Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3Bj IGIvdGVzdHMvbGl0LXRlc3RzL2Z1bGxfbWFzay5pc3BjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAot aW5kZXggMDAwMDAwMDAwLi5hYzBiMGJjYTMKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Rlc3RzL2xp dC10ZXN0cy9mdWxsX21hc2suaXNwYwotQEAgLTAsMCArMSw2MyBAQAotKy8vIFJVTjogJXtpc3Bj fSAlcyAtRElTUENfRVhQT1JUIC0tZW1pdC1sbHZtLXRleHQgLU8wIC0tbm93cmFwIC1vICV0Lmxs Ci0rLy8gUlVOOiBGaWxlQ2hlY2sgLS1pbnB1dC1maWxlPSV0LmxsIC1jaGVjay1wcmVmaXg9Q0hF Q0tfSVNQQ19FWFBPUlQgJXMKLSsKLSsvLyBSVU46ICV7aXNwY30gJXMgLURJU1BDX1VOTUFTS0VE IC0tZW1pdC1sbHZtLXRleHQgLU8wIC0tbm93cmFwIC1vICV0LmxsCi0rLy8gUlVOOiBGaWxlQ2hl Y2sgLS1pbnB1dC1maWxlPSV0LmxsIC1jaGVjay1wcmVmaXg9Q0hFQ0tfSVNQQ19VTk1BU0tFRCAl cwotKwotKy8vIFJVTjogJXtpc3BjfSAlcyAtRElTUENfTk9RVUFMSUYgLS1lbWl0LWxsdm0tdGV4 dCAtTzAgLS1ub3dyYXAgLW8gJXQubGwKLSsvLyBSVU46IEZpbGVDaGVjayAtLWlucHV0LWZpbGU9 JXQubGwgLWNoZWNrLXByZWZpeD1DSEVDS19JU1BDX05PUVVBTElGICVzCi0rCi0rLy8gUlVOOiAl e2lzcGN9ICVzIC1ESVNQQ19UQVNLIC0tZW1pdC1sbHZtLXRleHQgLU8wIC0tbm93cmFwIC1vICV0 LmxsCi0rLy8gUlVOOiBGaWxlQ2hlY2sgLS1pbnB1dC1maWxlPSV0LmxsIC1jaGVjay1wcmVmaXg9 Q0hFQ0tfSVNQQ19UQVNLICVzCi0rCi0rc3RydWN0IFBhcmFtZXRlcnMgewotKyAgICBmbG9hdCAq dm91dDsKLSsgICAgaW50IHBhcmFtOwotK307Ci0rCi0rI2lmZGVmIElTUENfRVhQT1JUCi0rLy8g Q0hFQ0tfSVNQQ19FWFBPUlQ6IGRlZmluZSB2b2lkIEBzaW1wbGVfZXhwb3J0X19fCi0rLy8gQ0hF Q0tfSVNQQ19FWFBPUlQ6ICVmdWxsX21hc2tfbWVtb3J5ID0gYWxsb2NhCi0rLy8gQ0hFQ0tfSVNQ Q19FWFBPUlQ6IGRlZmluZSB2b2lkIEBzaW1wbGVfZXhwb3J0KAotKy8vIENIRUNLX0lTUENfRVhQ T1JULU5PVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLStleHBvcnQgdm9pZCBzaW1wbGVf ZXhwb3J0KHZvaWQgKnVuaWZvcm0gX3ApIHsKLSsgICAgUGFyYW1ldGVycyAqdW5pZm9ybSBwID0g KFBhcmFtZXRlcnMgKiB1bmlmb3JtKSBfcDsKLSsgICAgaWYgKHByb2dyYW1JbmRleCA+IHAtPnBh cmFtKQotKyAgICAgICAgcC0+dm91dFtwcm9ncmFtSW5kZXhdID0gcHJvZ3JhbUNvdW50ICogcHJv Z3JhbUluZGV4OwotK30KLSsjZW5kaWYKLSsjaWZkZWYgSVNQQ19VTk1BU0tFRAotKy8vIENIRUNL X0lTUENfVU5NQVNLRUQ6IGRlZmluZSB2b2lkIEBzaW1wbGVfdW5tYXNrZWQKLSsvLyBDSEVDS19J U1BDX1VOTUFTS0VELU5PVDogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSt1bm1hc2tlZCB2 b2lkIHNpbXBsZV91bm1hc2tlZCh2b2lkICp1bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRlcnMg KnVuaWZvcm0gcCA9IChQYXJhbWV0ZXJzICogdW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9ncmFt SW5kZXggPiBwLT5wYXJhbSkKLSsgICAgICAgIHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHByb2dy YW1Db3VudCAqIHByb2dyYW1JbmRleDsKLSt9Ci0rI2VuZGlmCi0rI2lmZGVmIElTUENfTk9RVUFM SUYKLSsvLyBDSEVDS19JU1BDX05PUVVBTElGOiBkZWZpbmUgdm9pZCBAc2ltcGxlCi0rLy8gQ0hF Q0tfSVNQQ19OT1FVQUxJRjogJWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSt2b2lkIHNpbXBs ZSh2b2lkICp1bmlmb3JtIF9wKSB7Ci0rICAgIFBhcmFtZXRlcnMgKnVuaWZvcm0gcCA9IChQYXJh bWV0ZXJzICogdW5pZm9ybSkgX3A7Ci0rICAgIGlmIChwcm9ncmFtSW5kZXggPiBwLT5wYXJhbSkK LSsgICAgICAgIHAtPnZvdXRbcHJvZ3JhbUluZGV4XSA9IHByb2dyYW1Db3VudCAqIHByb2dyYW1J bmRleDsKLSt9Ci0rI2VuZGlmCi0rI2lmZGVmIElTUENfVEFTSwotKwotKy8vIENIRUNLX0lTUENf VEFTSzogZGVmaW5lIHZvaWQgQHNpbXBsZV90YXNrCi0rLy8gQ0hFQ0tfSVNQQ19UQVNLLU5PVDog JWZ1bGxfbWFza19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVDS19JU1BDX1RBU0s6IGRlZmluZSB2 b2lkIEBzaW1wbGVfZW50cnlfcG9pbnRfXwotKy8vIENIRUNLX0lTUENfVEFTSzogJWZ1bGxfbWFz a19tZW1vcnkgPSBhbGxvY2EKLSsvLyBDSEVDS19JU1BDX1RBU0s6IGRlZmluZSB2b2lkIEBzaW1w bGVfZW50cnlfcG9pbnQoCi0rLy8gQ0hFQ0tfSVNQQ19UQVNLLU5PVDogJWZ1bGxfbWFza19tZW1v cnkgPSBhbGxvY2EKLSt0YXNrIHZvaWQgc2ltcGxlX3Rhc2sodm9pZCAqdW5pZm9ybSBfcCkgewot KyAgICBQYXJhbWV0ZXJzICp1bmlmb3JtIHAgPSAoUGFyYW1ldGVycyAqIHVuaWZvcm0pIF9wOwot KyAgICBpZiAocHJvZ3JhbUluZGV4ID4gcC0+cGFyYW0pCi0rICAgICAgICBwLT52b3V0W3Byb2dy YW1JbmRleF0gPSBwcm9ncmFtQ291bnQgKiBwcm9ncmFtSW5kZXg7Ci0rfQotK2V4cG9ydCB2b2lk IHNpbXBsZV9lbnRyeV9wb2ludCh2b2lkICp1bmlmb3JtIHBhcmFtZXRlcnMsIHVuaWZvcm0gaW50 IGRpbTAsIHVuaWZvcm0gaW50IGRpbTEsIHVuaWZvcm0gaW50IGRpbTIpIHsKLSsgICAgbGF1bmNo W2RpbTAsIGRpbTEsIGRpbTJdIHNpbXBsZV90YXNrKHBhcmFtZXRlcnMpOwotK30KLSsjZW5kaWYK LVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3Bh dGNoZXMvbGx2bTEyLTAwOC5wYXRjaCBiL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4NDEzZDhiNzg4Ny4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDgucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxNDkgKzAsMCBAQAotRnJvbSBhZmFkMTQyMjdkOTIwNGEzYzhhNjI2Y2E2 MDhmNWI0M2MzMjE4ZmU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQXJpbmEgTmVz aGx5YWV2YSA8YXJpbmEubmVzaGx5YWV2YUBpbnRlbC5jb20+Ci1EYXRlOiBUdWUsIDQgTWF5IDIw MjEgMTE6NDM6NTIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ZWQgSVNQQyBnZW4gYnVpbGQg Zm9yIExMVk0xMgotCi0tLS0KLSBzcmMvY3R4LmNwcCB8ICA0ICsrKysKLSBzcmMvb3B0LmNwcCB8 IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVz IGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0 IGEvc3JjL2N0eC5jcHAgYi9zcmMvY3R4LmNwcAotaW5kZXggMGM3MDUwNTkxLi5mN2RjMDY5Mzkg MTAwNjQ0Ci0tLS0gYS9zcmMvY3R4LmNwcAotKysrIGIvc3JjL2N0eC5jcHAKLUBAIC0zNzM4LDcg KzM3MzgsMTEgQEAgbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENvbnRleHQ6OkdlblhTaW1kQ0ZB bnkobGx2bTo6VmFsdWUgKnZhbHVlKSB7Ci0gCi0gbGx2bTo6VmFsdWUgKkZ1bmN0aW9uRW1pdENv bnRleHQ6OkdlblhTaW1kQ0ZQcmVkaWNhdGUobGx2bTo6VmFsdWUgKnZhbHVlLCBsbHZtOjpWYWx1 ZSAqZGVmYXVsdHMpIHsKLSAgICAgQXNzZXJ0UG9zKGN1cnJlbnRQb3MsIGxsdm06OmlzYTxsbHZt OjpWZWN0b3JUeXBlPih2YWx1ZS0+Z2V0VHlwZSgpKSk7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9O ID49IElTUENfTExWTV8xMV8wCi0rICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZSAqdnQgPSBsbHZt OjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZhbHVlLT5nZXRUeXBlKCkpOwotKyNl bHNlCi0gICAgIGxsdm06OlZlY3RvclR5cGUgKnZ0ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVj dG9yVHlwZT4odmFsdWUtPmdldFR5cGUoKSk7Ci0rI2VuZGlmCi0gICAgIGlmIChkZWZhdWx0cyA9 PSBOVUxMKSB7Ci0gI2lmIElTUENfTExWTV9WRVJTSU9OIDwgSVNQQ19MTFZNXzExXzAKLSAgICAg ICAgIGRlZmF1bHRzID0gbGx2bTo6Q29uc3RhbnRWZWN0b3I6OmdldFNwbGF0KHZ0LT5nZXRWZWN0 b3JOdW1FbGVtZW50cygpLAotZGlmZiAtLWdpdCBhL3NyYy9vcHQuY3BwIGIvc3JjL29wdC5jcHAK LWluZGV4IGNlYTRhZmEyMy4uNGUzM2Q2YjFhIDEwMDY0NAotLS0tIGEvc3JjL29wdC5jcHAKLSsr KyBiL3NyYy9vcHQuY3BwCi1AQCAtMjkxNiw5ICsyOTE2LDEzIEBAIHN0YXRpYyBsbHZtOjpGdW5j dGlvbiAqbEdlblhNYXNrZWRJbnQ4SW5zdChsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCwgYm9vbCBp c1N0b3JlCi0gCi0gc3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5zdChsbHZtOjpW YWx1ZSAqdmFsLCBsbHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjpJbnN0cnVjdGlvbiAqaW5zdCkgewot ICAgICBBc3NlcnQoZy0+dGFyZ2V0LT5pc0dlblhUYXJnZXQoKSk7Ci0rI2lmIElTUENfTExWTV9W RVJTSU9OID49IElTUENfTExWTV8xMV8wCi0rICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6Rml4 ZWRWZWN0b3JUeXBlPih2YWwtPmdldFR5cGUoKSkpOwotKyAgICBsbHZtOjpGaXhlZFZlY3RvclR5 cGUgKnZhbFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KHZh bC0+Z2V0VHlwZSgpKTsKLSsjZWxzZQotICAgICBBc3NlcnQobGx2bTo6aXNhPGxsdm06OlZlY3Rv clR5cGU+KHZhbC0+Z2V0VHlwZSgpKSk7Ci0tCi0gICAgIGxsdm06OlZlY3RvclR5cGUgKnZhbFZl Y1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWwtPmdldFR5cGUoKSk7 Ci0rI2VuZGlmCi0gICAgIEFzc2VydChsbHZtOjppc1Bvd2VyT2YyXzMyKHZhbFZlY1R5cGUtPmdl dE51bUVsZW1lbnRzKCkpKTsKLSAgICAgQXNzZXJ0KHZhbFZlY1R5cGUtPmdldFByaW1pdGl2ZVNp emVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLSAKLUBAIC0yOTQyLDkgKzI5NDYsMTMgQEAg c3RhdGljIGxsdm06OkNhbGxJbnN0ICpsR2VuWFN0b3JlSW5zdChsbHZtOjpWYWx1ZSAqdmFsLCBs bHZtOjpWYWx1ZSAqcHRyLCBsbHZtOjoKLSB9Ci0gCi0gc3RhdGljIGxsdm06OkNhbGxJbnN0ICps R2VuWExvYWRJbnN0KGxsdm06OlZhbHVlICpwdHIsIGxsdm06OlR5cGUgKnJldFR5cGUsIGxsdm06 Okluc3RydWN0aW9uICppbnN0KSB7Ci0rI2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExW TV8xMV8wCi0rICAgIEFzc2VydChsbHZtOjppc2E8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihyZXRU eXBlKSk7Ci0rICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZSAqcmV0VmVjVHlwZSA9IGxsdm06OmR5 bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4ocmV0VHlwZSk7Ci0rI2Vsc2UKLSAgICAgQXNz ZXJ0KGxsdm06OmlzYTxsbHZtOjpWZWN0b3JUeXBlPihyZXRUeXBlKSk7Ci0tCi0gICAgIGxsdm06 OlZlY3RvclR5cGUgKnJldFZlY1R5cGUgPSBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBl PihyZXRUeXBlKTsKLSsjZW5kaWYKLSAgICAgQXNzZXJ0KGxsdm06OmlzUG93ZXJPZjJfMzIocmV0 VmVjVHlwZS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotICAgICBBc3NlcnQocmV0VmVjVHlwZS0+Z2V0 UHJpbWl0aXZlU2l6ZUluQml0cygpKTsKLSAgICAgQXNzZXJ0KHJldFZlY1R5cGUtPmdldFByaW1p dGl2ZVNpemVJbkJpdHMoKSAvIDggPD0gOCAqIE9XT1JEKTsKLUBAIC01NDg1LDggKzU0OTMsMTMg QEAgc3RhdGljIHZvaWQgbENyZWF0ZUJsb2NrTERVc2UobGx2bTo6SW5zdHJ1Y3Rpb24gKmN1cnJJ bnN0LCBzdGQ6OnZlY3RvcjxsbHZtOjpFeHQKLSAgICAgICAgIH0gZWxzZSBpZiAoYXV0byBnYXRo ZXIgPSBsR2V0UHNldWRvR2F0aGVyKGxsdm06OmR5bl9jYXN0PGxsdm06Okluc3RydWN0aW9uPih1 aS0+Z2V0VXNlcigpKSkpIHsKLSAgICAgICAgICAgICAvLyBDb2xsZWN0IGlkeHMgZnJvbSBnYXRo ZXIgYW5kIGZpeCB1c2VycwotICAgICAgICAgICAgIGxsdm06OlZhbHVlICpyZXMgPSBsbHZtOjpV bmRlZlZhbHVlOjpnZXQoZ2F0aGVyLT5nZXRUeXBlKCkpOwotLSAgICAgICAgICAgIGZvciAodW5z aWduZWQgaSA9IDAsIGVuZCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OlZlY3RvclR5cGU+KHJlcy0+ Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKTsgaSA8IGVuZDsKLS0gICAgICAgICAgICAgICAg ICsraSkgewotKyNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotKyAgICAg ICAgICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGVuZCA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZp eGVkVmVjdG9yVHlwZT4ocmVzLT5nZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5k OwotKyAgICAgICAgICAgICAgICAgKytpKQotKyNlbHNlCi0rICAgICAgICAgICAgZm9yICh1bnNp Z25lZCBpID0gMCwgZW5kID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlwZT4ocmVzLT5n ZXRUeXBlKCkpLT5nZXROdW1FbGVtZW50cygpOyBpIDwgZW5kOyArK2kpCi0rI2VuZGlmCi0rICAg ICAgICAgICAgewotICAgICAgICAgICAgICAgICAvLyBHZXQgZWxlbWVudCB2aWEgSUVJCi0gICAg ICAgICAgICAgICAgIHJlcyA9IGxsdm06Okluc2VydEVsZW1lbnRJbnN0OjpDcmVhdGUocmVzLCBF RUlzW3B0clVzZS5pZHhzW2N1cnJfaWR4KytdXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpDb25zdGFudEludDo6Z2V0KExMVk1U eXBlczo6SW50MzJUeXBlLCBpKSwKLUBAIC01NTIyLDEwICs1NTM1LDExIEBAIHN0YXRpYyBib29s IGxWZWN0b3JpemVHRVBzKGxsdm06OlZhbHVlICpwdHIsIHN0ZDo6dmVjdG9yPFB0clVzZT4gJnB0 clVzZXMsIHN0ZDo6Ci0gCi0gICAgIC8vIEFkanVzdCB2YWx1ZXMgZm9yIHZlY3RvciBsb2FkCi0g I2lmIElTUENfTExWTV9WRVJTSU9OID49IElTUENfTExWTV8xMV8wCi0tICAgIGlmIChhdXRvIHZl Y1R5ID0gbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPih0eXBlKSkgewotKyAg ICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4o dHlwZSkpCi0gI2Vsc2UKLS0gICAgaWYgKGF1dG8gdmVjVHkgPSBsbHZtOjpkeW5fY2FzdDxsbHZt OjpWZWN0b3JUeXBlPih0eXBlKSkgewotKyAgICBpZiAoYXV0byB2ZWNUeSA9IGxsdm06OmR5bl9j YXN0PGxsdm06OlZlY3RvclR5cGU+KHR5cGUpKQotICNlbmRpZgotKyAgICB7Ci0gICAgICAgICAv LyBHZXQgc2luZ2xlIGVsZW1lbnQgc2l6ZQotICAgICAgICAgdF9zaXplIC89IHZlY1R5LT5nZXRO dW1FbGVtZW50cygpOwotICAgICAgICAgLy8gR2V0IHNpbmdsZSBlbGVtZW50IHR5cGUKLUBAIC02 NDc3LDcgKzY0OTEsNyBAQCBsbHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVH YXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotICNpZiBJU1BDX0xMVk1f VkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgT2Zmc2V0cywKLSAgICAgICAgIGxs dm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KExMVk1UeXBlczo6SW50NjRUeXBlLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6VmVjdG9yVHlw ZT4oT2Zmc2V0cy0+Z2V0VHlwZSgpKS0+Z2V0TnVtRWxlbWVudHMoKSksCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsbHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5 cGU+KE9mZnNldHMtPmdldFR5cGUoKSktPmdldE51bUVsZW1lbnRzKCkpLAotICAgICAgICAgInN2 bV9vZmZzZXRfemV4dCIsIEluc2VydEJlZm9yZSk7Ci0gI2Vsc2UKLSAgICAgICAgIE9mZnNldHMs IGxsdm06OlZlY3RvclR5cGU6OmdldChMTFZNVHlwZXM6OkludDY0VHlwZSwgT2Zmc2V0cy0+Z2V0 VHlwZSgpLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSwKLUBAIC02NDkyLDcgKzY1MDYsNyBAQCBs bHZtOjpWYWx1ZSAqRml4QWRkcmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVz cyhsbHZtOjpWYWx1ZSAqUHRyLCBsbAotICAgICAgICAgbGx2bTo6VmFsdWUgKnVuZGVmSW5zZXJ0 VmFsdWUgPQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAg ICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldCgK LS0gICAgICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5bl9jYXN0PGxs dm06OlZlY3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyAgICAg ICAgICAgICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4 ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCkpKTsKLSAjZWxzZQot ICAgICAgICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQo TExWTVR5cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygp KSk7Ci0gI2VuZGlmCi1AQCAtNjUwMSwxNyArNjUxNSwxNiBAQCBsbHZtOjpWYWx1ZSAqRml4QWRk cmVzc1NwYWNlOjpjYWxjdWxhdGVHYXRoZXJTY2F0dGVyQWRkcmVzcyhsbHZtOjpWYWx1ZSAqUHRy LCBsbAotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA8IElTUENfTExWTV8xMV8wCi0gICAgICAgICAg ICAgYWRkcmVzc1R5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCksCi0gI2VsaWYgSVNQQ19MTFZN X1ZFUlNJT04gPCBJU1BDX0xMVk1fMTJfMAotLSAgICAgICAgICAgIHtsbHZtOjpkeW5fY2FzdDxs bHZtOjpWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwK LSsgICAgICAgICAgICB7bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRy ZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCksIGZhbHNlfSwKLSAjZWxzZQotLSAgICAgICAgbGx2 bTo6RWxlbWVudENvdW50OjpnZXQoCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs bHZtOjpkeW5fY2FzdDxsbHZtOjpGaXhlZFZlY3RvclR5cGU+KGFkZHJlc3NUeXBlLT5nZXROdW1F bGVtZW50cygpLCBmYWxzZSksCi0rICAgICAgICAgICAgbGx2bTo6RWxlbWVudENvdW50OjpnZXQo bGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51 bUVsZW1lbnRzKCksIGZhbHNlKSwKLSAjZW5kaWYKLSAgICAgICAgICAgICBsbHZtOjpDb25zdGFu dDo6Z2V0TnVsbFZhbHVlKGxsdm06OlR5cGU6OmdldEludDMyVHkoSW5zZXJ0QmVmb3JlLT5nZXRD b250ZXh0KCkpKSk7Ci0gCi0gICAgICAgICBsbHZtOjpWYWx1ZSAqdW5kZWZTaHVmZmxlVmFsdWUg PQotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotICAgICAgICAgICAg IGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldCgKLS0gICAg ICAgICAgICAgICAgTExWTVR5cGVzOjpJbnQ2NFR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OlZl Y3RvclR5cGU+KGFkZHJlc3NUeXBlKS0+Z2V0TnVtRWxlbWVudHMoKSkpOwotKyAgICAgICAgICAg ICAgICBMTFZNVHlwZXM6OkludDY0VHlwZSwgbGx2bTo6ZHluX2Nhc3Q8bGx2bTo6Rml4ZWRWZWN0 b3JUeXBlPihhZGRyZXNzVHlwZSktPmdldE51bUVsZW1lbnRzKCkpKTsKLSAjZWxzZQotICAgICAg ICAgICAgIGxsdm06OlVuZGVmVmFsdWU6OmdldChsbHZtOjpWZWN0b3JUeXBlOjpnZXQoTExWTVR5 cGVzOjpJbnQ2NFR5cGUsIGFkZHJlc3NUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKSk7Ci0g I2VuZGlmCi1AQCAtNjU0Miw3ICs2NTU1LDggQEAgbGx2bTo6SW5zdHJ1Y3Rpb24gKkZpeEFkZHJl c3NTcGFjZTo6cHJvY2Vzc1ZlY3RvckxvYWQobGx2bTo6TG9hZEluc3QgKkxJKSB7Ci0gICAgICAg ICBpc1B0ckxvYWQgPSB0cnVlOwotICAgICAgICAgYXV0byBzY2FsYXJUeXBlID0gZy0+dGFyZ2V0 LT5pczMyQml0KCkgPyBMTFZNVHlwZXM6OkludDMyVHlwZSA6IExMVk1UeXBlczo6SW50NjRUeXBl OwotICNpZiBJU1BDX0xMVk1fVkVSU0lPTiA+PSBJU1BDX0xMVk1fMTFfMAotLSAgICAgICAgcmV0 VHlwZSA9IGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIGxsdm06OmR5bl9j YXN0PGxsdm06OlZlY3RvclR5cGU+KHJldFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSsgICAg ICAgIHJldFR5cGUgPQotKyAgICAgICAgICAgIGxsdm06OkZpeGVkVmVjdG9yVHlwZTo6Z2V0KHNj YWxhclR5cGUsIGxsdm06OmR5bl9jYXN0PGxsdm06OkZpeGVkVmVjdG9yVHlwZT4ocmV0VHlwZSkt PmdldE51bUVsZW1lbnRzKCkpOwotICNlbHNlCi0gICAgICAgICByZXRUeXBlID0gbGx2bTo6VmVj dG9yVHlwZTo6Z2V0KHNjYWxhclR5cGUsIHJldFR5cGUtPmdldFZlY3Rvck51bUVsZW1lbnRzKCkp OwotICNlbmRpZgotQEAgLTY2MDQsNyArNjYxOCw4IEBAIGxsdm06Okluc3RydWN0aW9uICpGaXhB ZGRyZXNzU3BhY2U6OnByb2Nlc3NWZWN0b3JTdG9yZShsbHZtOjpTdG9yZUluc3QgKlNJKSB7Ci0g ICAgIGlmICh2YWxUeXBlLT5nZXRTY2FsYXJUeXBlKCktPmlzUG9pbnRlclR5KCkpIHsKLSAgICAg ICAgIGF1dG8gc2NhbGFyVHlwZSA9IGctPnRhcmdldC0+aXMzMkJpdCgpID8gTExWTVR5cGVzOjpJ bnQzMlR5cGUgOiBMTFZNVHlwZXM6OkludDY0VHlwZTsKLSAjaWYgSVNQQ19MTFZNX1ZFUlNJT04g Pj0gSVNQQ19MTFZNXzExXzAKLS0gICAgICAgIHZhbFR5cGUgPSBsbHZtOjpGaXhlZFZlY3RvclR5 cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxsbHZtOjpWZWN0b3JUeXBlPih2YWxU eXBlKS0+Z2V0TnVtRWxlbWVudHMoKSk7Ci0rICAgICAgICB2YWxUeXBlID0KLSsgICAgICAgICAg ICBsbHZtOjpGaXhlZFZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCBsbHZtOjpkeW5fY2FzdDxs bHZtOjpGaXhlZFZlY3RvclR5cGU+KHZhbFR5cGUpLT5nZXROdW1FbGVtZW50cygpKTsKLSAjZWxz ZQotICAgICAgICAgdmFsVHlwZSA9IGxsdm06OlZlY3RvclR5cGU6OmdldChzY2FsYXJUeXBlLCB2 YWxUeXBlLT5nZXRWZWN0b3JOdW1FbGVtZW50cygpKTsKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvaXNwYy9wYXRjaGVzL2xsdm0xMi0wMDkucGF0Y2ggYi9zcmNwa2dzL2lzcGMvcGF0Y2hl cy9sbHZtMTItMDA5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2VhNjc4 Mjg1ODIuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2lzcGMvcGF0Y2hlcy9sbHZtMTItMDA5 LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEwOSArMCwwIEBACi1Gcm9tIDk3YjEzYzMyMTMy ZTI3MDRhNWUzZTdiMmVhZTQ5ZDg1NGQwODdlM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1G cm9tOiBBcmluYSBOZXNobHlhZXZhIDxhcmluYS5uZXNobHlhZXZhQGludGVsLmNvbT4KLURhdGU6 IFR1ZSwgNCBNYXkgMjAyMSAxMTozMTo1NSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVcGRhdGVk IGJ1aWx0aW5zLWNtKiBmb3Igc3dpdGNoIHRvIExMVk0xMgotCi0tLS0KLSBidWlsdGlucy9idWls dGlucy1jbS0zMi5sbCB8IDIzNCArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t Ci0gYnVpbHRpbnMvYnVpbHRpbnMtY20tNjQubGwgfCAyMzIgKysrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMzMgaW5zZXJ0aW9ucygrKSwgMjMz IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYnVpbHRpbnMvYnVpbHRpbnMtY20tMzIubGwg Yi9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbAotaW5kZXggMzJkZWJmMzJlLi40ODFiYmRjNDgg MTAwNjQ0Ci0tLS0gYS9idWlsdGlucy9idWlsdGlucy1jbS0zMi5sbAotKysrIGIvYnVpbHRpbnMv YnVpbHRpbnMtY20tMzIubGwKLUBAIC01NTcsNyArNTU3LDcgQEAgJF9aTjEzVmFyeWluZ1dyaXRl cjEyV3JpdGVWZWNFbGVtSVB2RUV2diA9IGNvbWRhdCBhbnkKLSBALnN0ci4xMCA9IHByaXZhdGUg dW5uYW1lZF9hZGRyIGNvbnN0YW50IFs1IHggaThdIGMiJTA4WFwwMCIsIGFsaWduIDEKLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2ln bmV4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdmNjKGk4IHNpZ25leHQsIGk4IHNp Z25leHQpICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpOCBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdmNjKGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLSAgICUzID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC02MTgsNyArNjE4LDcgQEAgZGVmaW5lIGludGVybmFs IDwxIHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTFFRUV1MkNNdmJUX19jUzFf UzFfdTJDTXYKLSBkZWNsYXJlIDwxIHggaTg+IEBsbHZtLmdlbngucmRyZWdpb25pLnYxaTgudjFp OC5pMTYoPDEgeCBpOD4sIGkzMiwgaTMyLCBpMzIsIGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4 PikgIzAgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjFfY1NfKDwxIHggaTg+LCA8MSB4IGk4PikgIzAgewotICAgJTMgPSBhbGxv Y2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTYzNCw3ICs2MzQsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZi MV9jU18oPDEgeCBpOD4sIDwxCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdnUyQ012YjJfY1NfKDwyIHggaTg+LCA8MiB4IGk4PikgIzMgewotK2RlZmluZSBpbnRl cm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjJfY1NfKDwy IHggaTg+LCA8MiB4IGk4PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIK LSAgICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4 PiwgYWxpZ24gMgotQEAgLTY4MCw3ICs2ODAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4g QF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012YlRfX2NTMV9TMV91MkNNdgot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2NTXyg8 NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1 IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC04MTgs NyArODE4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxNiB4IGk4PiBAX1pON2RldGFpbHMxM19faW1w bF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX2NTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2NTXyg8MzIgeCBpOD4sIDwzMiB4IGk4 PikgIzExIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotICAgJTMg PSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBh bGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTg2NCw3ICs4 NjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2Rp dnJlbUlMaTMyRUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2lnbmV4dCBpOCBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbWNjKGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLStk ZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWNj KGk4IHNpZ25leHQsIGk4IHNpZ25leHQpICMwIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAx Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLUBAIC04OTAsNyArODkwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmUKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBp OD4sIDwxIHggaTg+KSAjMCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0g ICAlMyA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4s IGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtOTA0LDcgKzkw NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0r ZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4 PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxs b2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtOTE4LDcgKzkxOCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4 IGk4PiwgPDIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJD TXZiNF9jU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9jU18oPDQgeCBpOD4sIDw0 IHggaTg+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBh bGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci1AQCAtOTMyLDcgKzkzMiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4 IHggaTg+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiOF9jU18oPDggeCBpOD4sIDw4IHggaTg+KSAjNyB7Ci0gICAlMyA9 IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWdu IDgKLSAgICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1AQCAtOTQ2LDcgKzk0Niw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDgKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotK2Rl ZmluZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxNl9jU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICM5IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4 IGk4PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLSAgICU1 ID0gYWxsb2NhIDwxNiB4IGk4PiwgYWxpZ24gMTYKLUBAIC05NjAsNyArOTYwLDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIx Nl9jU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewotK2RlZmluZSBp bnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9j U18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4s IGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFs bG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtOTc0LDcgKzk3NCw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMzJfY1Nf KDwzMiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2c3MoaTE2IHNpZ25leHQsIGkxNiBzaWduZXh0KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIHNp Z25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2c3MoaTE2IHNpZ25leHQsIGkx NiBzaWduZXh0KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxs b2NhIGkxNiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAt MTA1OCw3ICsxMDU4LDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1pON2RldGFpbHMx M19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9fc1MxX1MxX3UyQ00KLSBkZWNsYXJlIDwxIHgg aTE2PiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkxNi52MWkxNi5pMTYoPDEgeCBpMTY+LCBpMzIs IGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLStkZWZpbmUg aW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9z U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2Piwg YWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9j YSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xMDc0LDcgKzEwNzQsNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfc1NfKDwx IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2 dTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9zU18oPDIgeCBp MTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAot ICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkx Nj4sIGFsaWduIDQKLUBAIC0xMTQzLDcgKzExNDMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTJFRUV1MkNNdmJUX19zUzFfUzFfdTJD TQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9z U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4 IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBh bGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWdu IDgKLUBAIC0xMzUwLDcgKzEzNTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1pO N2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX3NTMV9TMV91MgotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX3NTXyg8MzIg eCBpMTY+LCA8MzIgeCBpMTY+KSAjMTMgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4 IGkxNj4pICMxMyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTQg PSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkxNj4s IGFsaWduIDY0Ci1AQCAtMTQxOSw3ICsxNDE5LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkx Nj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJUX19zUzFfUzFfdTIK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNp Z25leHQsIGkxNiBzaWduZXh0KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIHNpZ25leHQgaTE2IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3MoaTE2IHNpZ25leHQsIGkxNiBzaWduZXh0KSAj MyB7Ci0gICAlMyA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIGkxNiwgYWxp Z24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMTQ0NSw3ICsxNDQ1 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc3JlbXNzKGkxNiBzaWduZXh0LCBpMTYgc2kKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7 Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjFfc1NfKDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8 MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAg JTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMTQ1OSw3ICsxNDU5LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxX3NTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUg bm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjJfc1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0rZGVmaW5l IGludGVybmFsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJf c1NfKDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4s IGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxv Y2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAtMTQ3Myw3ICsxNDczLDcgQEAgZGVmaW5lIGRzb19s b2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX3NTXyg8 MiB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3Jl bXUyQ012YjRfc1NfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0rZGVmaW5lIGludGVybmFs IDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1NfKDw0IHgg aTE2PiwgPDQgeCBpMTY+KSAjNyB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgK LSAgICU0ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDQgeCBp MTY+LCBhbGlnbiA4Ci1AQCAtMTQ4Nyw3ICsxNDg3LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X3NTXyg8NCB4IGkxNj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhf c1NfKDw4IHggaTE2PiwgPDggeCBpMTY+KSAjOSB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHggaTE2PiwgPDgg eCBpMTY+KSAjOSB7Ci0gICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNCA9 IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGkxNj4sIGFs aWduIDE2Ci1AQCAtMTUwMSw3ICsxNTAxLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X3NTXyg8OCB4IGkxNj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDwxNiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxNl9zU18o PDE2IHggaTE2PiwgPDE2IHggaTE2PikgIzExIHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+LCA8 MTYgeCBpMTY+KSAjMTEgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAg ICU0ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MTYgeCBp MTY+LCBhbGlnbiAzMgotQEAgLTE1MTUsNyArMTUxNSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2 IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X3NTXyg8MTYgeCBp MTY+Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi MzJfc1NfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFsIDwz MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9zU18oPDMyIHgg aTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWdu IDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2Eg PDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0xNTI5LDcgKzE1MjksNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9zU18o PDMyIHggaTE2PgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2aWkoaTMy LCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfc2RpdmlpKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0g ICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotQEAgLTE3MzAsNyArMTczMCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9a TjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX2lTMV9TMV91MkNNCi0gZGVj bGFyZSA8MSB4IGkzMj4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpMzIudjFpMzIuaTE2KDwxIHgg aTMyPiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQg ewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLSAgICUzID0gYWxsb2Nh IDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC0xNzQ2LDcgKzE3NDYsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUy Q012YjFfaVNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zZGl2dTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0rZGVm aW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBp MzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU1ID0g YWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTE5MzIsNyArMTkzMiw3IEBAIGRlZmluZSBp bnRlcm5hbCA8MiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012 YlRfX2lTMV9TMV91MkNNCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53 aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NkaXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiNF9pU18o PDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9j YSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtMjQ5MCw3ICsyNDkwLDcgQEAgZGVmaW5lIGludGVy bmFsIDwxNiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMTZFRUV1MkNNdmJU X19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLStkZWZpbmUgaW50 ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMyX2lT Xyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTMy PiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1 ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotQEAgLTI2NzYsNyArMjY3Niw3IEBAIGRl ZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlMaTMy RUVFdTJDTXZiVF9faVMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW1paShpMzIsIGkzMikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zcmVtaWkoaTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIs IGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEg eCBpMzI+LCBhbGlnbiA0Ci1AQCAtMjcwMiw3ICsyNzAyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCBp MzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2lTXyg8MSB4IGkzMj4sIDwxIHggaTMyPikg IzE0IHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2Eg PDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBA IC0yNzE2LDcgKzI3MTYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfaVNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUgewot ICAgJTMgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGkz Mj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotQEAgLTI3MzAs NyArMjczMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiNF9pU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0gICAlMyA9 IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkzMj4sIGFs aWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkzMj4sIGFsaWduIDE2Ci1AQCAtMjc0NCw3ICsy NzQ0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAj MTcgewotK2RlZmluZSBpbnRlcm5hbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3NyZW11MkNNdmI4X2lTXyg8OCB4IGkzMj4sIDw4IHggaTMyPikgIzE3IHsKLSAgICUzID0gYWxs b2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24g MzIKLSAgICU1ID0gYWxsb2NhIDw4IHggaTMyPiwgYWxpZ24gMzIKLUBAIC0yNzU4LDcgKzI3NTgs NyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf c3JlbXUyQ012YjhfaVNfKDw4IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2lTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAj MTggewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0gICAlMyA9 IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDE2IHggaTMyPiwg YWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci1AQCAtMjc3Miw3 ICsyNzcyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9pU18oPDMyIHggaTMyPiwgPDMyIHgg aTMyPikgIzE5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewot ICAgJTMgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNCA9IGFsbG9jYSA8MzIg eCBpMzI+LCBhbGlnbiAxMjgKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAot QEAgLTI3ODYsNyArMjc4Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCB6ZXJv ZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2aGgoaTggemVyb2V4dCwgaTggemVy b2V4dCkgIzIxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdWRpdmhoKGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0gICAlMyA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMjg0NCw3ICsyODQ0LDcgQEAgZGVmaW5lIGludGVy bmFsIDwxIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVFdTJDTXZiVF9f aFMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2 dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotK2RlZmluZSBpbnRlcm5hbCA8 MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfaFNfKDwxIHggaTg+ LCA8MSB4IGk4PikgIzIxIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAl NCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFs aWduIDEKLUBAIC0yODYwLDcgKzI4NjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2Nh bCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHgg aTg+LCA8MiB4IGk4PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7 Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDIgeCBp OD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi1AQCAtMjkwNiw3 ICsyOTA2LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBs X3VkaXZyZW1JTGkyRUVFdTJDTXZiVF9faFMxX1MxX3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAj MTQgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLSAgICUzID0gYWxsb2Nh IDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAg JTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC0zMDQ0LDcgKzMwNDQsNyBAQCBkZWZp bmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVF RXUyQ012YlRfX2hTMV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotK2RlZmlu ZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIz Ml9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBp OD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9 IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzA5MCw3ICszMDkwLDcgQEAgZGVmaW5l IGludGVybmFsIDwzMiB4IGk4PiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2cmVtSUxpMzJFRUV1 MkNNdmJUX19oUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91 bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtaGgoaTggemVyb2V4dCwg aTggemVyb2V4dCkgIzIxIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC0z MTE2LDcgKzMxMTYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBp OD4pICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMjEgewotICAgJTMgPSBh bGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIDwxIHggaTg+LCBhbGlnbiAx Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTMxMzAsNyArMzEzMCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMjIgewotK2RlZmlu ZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJf aFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBh bGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2Eg PDIgeCBpOD4sIGFsaWduIDIKLUBAIC0zMTQ0LDcgKzMxNDQsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBp OD4sIDwyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBp OD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQg eCBpOD4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotICAgJTQgPSBh bGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0 Ci1AQCAtMzE1OCw3ICszMTU4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0IHggaTg+LCA8NAotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDgg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4Piwg PDggeCBpOD4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtdTJDTXZiOF9oU18oPDggeCBpOD4sIDw4IHggaTg+KSAjMTUgewotICAg JTMgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDw4IHggaTg+LCBh bGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotQEAgLTMxNzIsNyArMzE3 Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDgKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2hTXyg8MTYgeCBpOD4sIDwxNiB4IGk4PikgIzE2 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjMTYgewotICAgJTMgPSBhbGxv Y2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAx NgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTMxODYsNyArMzE4Niw3 IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGk4PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2hTXyg8MzIgeCBpOD4sIDwzMiB4IGk4PikgIzE3IHsK LStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotICAgJTMgPSBhbGxvY2Eg PDMyIHggaTg+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgot ICAgJTUgPSBhbGxvY2EgPDMyIHggaTg+LCBhbGlnbiAzMgotQEAgLTMyMDAsNyArMzIwMCw3IEBA IGRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxp bmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotK2RlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnR0KGkx NiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24g MgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4s IGFsaWduIDIKLUBAIC0zMjc4LDcgKzMyNzgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+ IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18o PDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfdFNfKDwxIHggaTE2PiwgPDEgeCBp MTY+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNCA9IGFs bG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24g MgotQEAgLTMyOTQsNyArMzI5NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkx Nj4sIDwyIHggaTE2PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl90U18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICMx NCB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwy IHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci1AQCAt MzM2MCw3ICszMzYwLDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTE2PiBAX1pON2RldGFpbHMx NF9faW1wbF91ZGl2cmVtSUxpMkVFRXUyQ012YlRfX3RTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQg eCBpMTY+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzE1IHsKLSAg ICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDQgeCBpMTY+ LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgKLUBAIC0zNTU4LDcg KzM1NTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1w bF91ZGl2cmVtSUxpMTZFRUV1MkNNdmJUX190UzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX3RTXyg8MzIgeCBpMTY+LCA8MzIgeCBp MTY+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0g ICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTQgPSBhbGxvY2EgPDMyIHgg aTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci1AQCAt MzYyNCw3ICszNjI0LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aTjdkZXRhaWxz MTRfX2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZiVF9fdFMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQg aTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJv ZXh0KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxNiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXR0KGkxNiB6ZXJvZXh0LCBpMTYgemVyb2V4dCkgIzIyIHsKLSAgICUzID0g YWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNSA9 IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0zNjUwLDcgKzM2NTAsNyBAQCBkZWZpbmUg ZHNvX2xvY2FsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdHQoaTE2 IHplcm9leHQsIGkxNiB6ZQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7Ci0rZGVmaW5lIGlu dGVybmFsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfdFNf KDwxIHggaTE2PiwgPDEgeCBpMTY+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBh bGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2Nh IDwxIHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NjQsNyArMzY2NCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV90U18oPDEg eCBpMTY+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl90U18oPDIgeCBp MTY+LCA8MiB4IGkxNj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQK LSAgICU0ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDIgeCBp MTY+LCBhbGlnbiA0Ci1AQCAtMzY3OCw3ICszNjc4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX3RTXyg8MiB4IGkxNj4s IDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUg ZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRf dFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X3RTXyg8NCB4IGkxNj4sIDw0 IHggaTE2PikgIzE1IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQg PSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFs aWduIDgKLUBAIC0zNjkyLDcgKzM2OTIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0IHggaTE2PiwgPAotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDgg eCBpMTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfdFNfKDw4IHggaTE2PiwgPDggeCBpMTY+ KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxv Y2EgPDggeCBpMTY+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDggeCBpMTY+LCBhbGlnbiAx NgotQEAgLTM3MDYsNyArMzcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMTY+IEBfWjI0 X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+LCA8Ci0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 MTYgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfdFNfKDwxNiB4 IGkxNj4sIDwxNiB4IGkxNj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkxNj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18oPDE2IHggaTE2PiwgPDE2IHgg aTE2PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNCA9 IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDE2IHggaTE2Piwg YWxpZ24gMzIKLUBAIC0zNzIwLDcgKzM3MjAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18oPDE2IHggaTE2Pgot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDMyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX3RT Xyg8MzIgeCBpMTY+LCA8MzIgeCBpMTY+KSAjMTggewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4s IDwzMiB4IGkxNj4pICMxOCB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAot ICAgJTQgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU1ID0gYWxsb2NhIDwzMiB4 IGkxNj4sIGFsaWduIDY0Ci1AQCAtMzczNCw3ICszNzM0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4 IGkxNj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmpqKGkzMiwgaTMy KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZqaihpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQg PSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQK LUBAIC0zODkyLDcgKzM4OTIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWk43ZGV0 YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxRUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+ LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjFfalNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQg ewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4 IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTM5 MDgsNyArMzkwOCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHgg aTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAl MyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwg YWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtNDA1NCw3ICs0 MDU0LDcgQEAgZGVmaW5lIGludGVybmFsIDwyIHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91 ZGl2cmVtSUxpMkVFRXUyQ012YlRfX2pTMV9TMV91MkMKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAj MTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24g MTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC00NDkyLDcgKzQ0OTIs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2 cmVtSUxpMTZFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2pTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAj MTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9 IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4s IGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtNDYz OCw3ICs0NjM4LDcgQEAgZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTRf X2ltcGxfdWRpdnJlbUlMaTMyRUVFdTJDTXZiVF9falMxX1MxX3UKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5h bCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1qaihpMzIsIGkzMikgIzE0IHsKLSAg ICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0g ICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLUBAIC00NjY0LDcgKzQ2NjQsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwg aTMyKSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVt dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFs IDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfalNfKDwxIHgg aTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0 Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHgg aTMyPiwgYWxpZ24gNAotQEAgLTQ2NzgsNyArNDY3OCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9qU18oPDEgeCBpMzI+ LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5l IGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIy X2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9qU18oPDIgeCBpMzI+LCA8 MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0 ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBh bGlnbiA4Ci1AQCAtNDY5Miw3ICs0NjkyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0 IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI0X2pTXyg8NCB4IGkzMj4sIDw0IHggaTMy PikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxs b2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24g MTYKLUBAIC00NzA2LDcgKzQ3MDYsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMyPiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBp MzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfalNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAj MTcgewotICAgJTMgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2Eg PDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgot QEAgLTQ3MjAsNyArNDcyMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMTZfalNfKDwxNiB4IGkz Mj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2IHggaTMyPiwgPDE2IHggaTMy PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwxNiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFs bG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxp Z24gNjQKLUBAIC00NzM0LDcgKzQ3MzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2IHggaTMyPgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjMyX2pTXyg8 MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwz MiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAg ICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHgg aTMyPiwgYWxpZ24gMTI4Ci1AQCAtNDc0OCw3ICs0NzQ4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8 MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfalNfKDwzMiB4 IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIHZvaWQgQF9fZG9fcHJpbnRfY20oaTgqLCBpOCosIGkzMiwgaTY0LCBpMzIq LCBpMzIsIGkzMikgIzIzICFkYmcgITE1IHsKLStkZWZpbmUgaW50ZXJuYWwgdm9pZCBAX19kb19w cmludF9jbShpOCosIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyKSAjMjMgIWRiZyAhMTUg ewotICAgJTggPSBhbGxvY2EgaTgqLCBhbGlnbiA0Ci0gICAlOSA9IGFsbG9jYSBpOCosIGFsaWdu IDQKLSAgICUxMCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLUBAIC00OTg4LDcgKzQ5ODgsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgdm9pZCBAX1pON2RldGFpbHMxNl9jbV9wcmludF9mb3JtYXRJTGkxMjhF RUV2MTVjbV9zdXJmYWNlaW5kZXhqdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4 KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBpMzIsIGkzMikgIzI2ICFkYmcgITExNyB7Ci0r ZGVmaW5lIGludGVybmFsIHZvaWQgQF9fZG9fcHJpbnRfbHooaTMyLCBpOCosIGkzMiwgaTY0LCBp MzIqLCBpMzIsIGkzMiwgaTMyLCBpMzIpICMyNiAhZGJnICExMTcgewotICAgJTEwID0gYWxsb2Nh IGkzMiwgYWxpZ24gNAotICAgJTExID0gYWxsb2NhIGk4KiwgYWxpZ24gNAotICAgJTEyID0gYWxs b2NhIGkzMiwgYWxpZ24gNAotQEAgLTUwNjksNyArNTA2OSw3IEBAIGRlZmluZSBkc29fbG9jYWwg dm9pZCBAX19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMyLCBp MzIsIGkzCi0gICAlNjcgPSBsb2FkIGk2NCwgaTY0KiAlMTMsIGFsaWduIDgsICFkYmcgITE1OSwg IXRiYWEgITE5Ci0gICAlNjggPSBsb2FkIDw1IHggaTMyPiwgPDUgeCBpMzI+KiAlMjEsIGFsaWdu IDMyLCAhZGJnICExNjAsICF0YmFhICE3Ci0gICBjYWxsIHZvaWQgQF9aTjEzVmFyeWluZ1dyaXRl ckMyRVJqUlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMjMsIGkzMiogZGVy ZWZlcmVuY2VhYmxlKDQpICUxOSwgaTMyKiogZGVyZWZlcmVuY2VhYmxlKDQpICUxNCwgaTMyICU2 NiwgaTY0ICU2NywgPDUgeCBpMzI+ICU2OCksICFkYmcgITE2MQotLSAgJTY5ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0ZXIxM1Zh cnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMjIsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIKLSsgICU2OSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aW5nV3Jp dGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYyLCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICUyMiwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMjMpLCAh ZGJnICExNjIKLSAgIGJyIGxhYmVsICU3MCwgIWRiZyAhMTYzCi0gCi0gOyA8bGFiZWw+OjcwOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTYwCi1AQCAtNTE4 Nyw3ICs1MTg3LDcgQEAgZGVmaW5lIGludGVybmFsIDw1IHggaTMyPiBAX1oxN2dldF9hdXhpbGlh cnlfc3RydigpICMyOCBjb21kYXQgIWRiZyAhMTc4IHsKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNW YXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFs aWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcjEzVmFyeWlu Z1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0 ICFkYmcgITE5MSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2Eg JWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlY2xhc3MuVmFy eWluZ1dyaXRlciwgYWxpZ24gMzIKLUBAIC01MTk2LDcgKzUxOTYsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyMTNWYXJ5aQotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNSB0byBp OCosICFkYmcgITE5NgotICAgJTkgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0 byBpOCosICFkYmcgITE5NgotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMy KGk4KiBhbGlnbiAzMiAlOCwgaTgqIGFsaWduIDMyICU5LCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRi ZyAhMTk2LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTEwID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVFYk5TXzhF bmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxp Z24gMzIgJTUpLCAhZGJnICExOTgKLSsgICUxMCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJFRWJOU184RW5jb2Rp bmdFVF8oaTggc2lnbmV4dCAlNywgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5V bmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotICAgYnIgaTEgJTEwLCBsYWJl bCAlMTYsIGxhYmVsICUxMSwgIWRiZyAhMTk5Ci0gCi0gOyA8bGFiZWw+OjExOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC01MjA0LDcgKzUyMDQs NyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5j b2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQotICAgJTEzID0gYml0Y2FzdCAlY2xhc3MuVmFy eWluZ1dyaXRlciogJTYgdG8gaTgqLCAhZGJnICEyMDEKLSAgICUxNCA9IGJpdGNhc3QgJWNsYXNz LlZhcnlpbmdXcml0ZXIqICUyIHRvIGk4KiwgIWRiZyAhMjAxCi0gICBjYWxsIHZvaWQgQGxsdm0u bWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUxMywgaTgqIGFsaWduIDMyICUxNCwg aTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwMSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUxNSA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kx M1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlMTIsICVjbGFzcy5W YXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNiksICFkYmcgITIwMgotKyAgJTE1ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5nSTEzVmFy eWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUxMiwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNiksICFkYmcg ITIwMgotICAgYnIgbGFiZWwgJTE2LCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTY6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMTEsICUzCi1AQCAtNTI3 OSw3ICs1Mjc5LDcgQEAgZGVmaW5lIGludGVybmFsIHZvaWQgQF9aTjEzVmFyeWluZ1dyaXRlckMy RVJqUlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGUKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX19udW1f Y29yZXMoKSAjMjkgIWRiZyAhMjM2IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfX251bV9jb3Jl cygpICMyOSAhZGJnICEyMzYgewotICAgcmV0IGkzMiAtMSwgIWRiZyAhMjM3Ci0gfQotIAotQEAg LTg4NjAsNyArODg2MCw3IEBAIGRlY2xhcmUgZHNvX2xvY2FsIHZvaWQgQF9aTjdkZXRhaWxzMzdf X2NtX2ludHJpbnNpY19pbXBsX3N2bV9zY2F0dGVyX3dyaXRlSWlMaTFFCi0gZGVjbGFyZSB2b2lk IEBsbHZtLmdlbnguc3ZtLnNjYXR0ZXIudjFpMS52MWk2NC52MWkzMig8MSB4IGkxPiwgaTMyLCA8 MSB4IGk2ND4sIDwxIHggaTMyPikgIzI3Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5s aW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJFRWJOU184 RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWdu IDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVF Yk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewot ICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhICVjbGFzcy5Vbmlmb3Jt V3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg4NjksNyArODg2OSw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEz VW5pZm9ybVdyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICU0IHRv IGk4KiwgIWRiZyAhMTY0NwotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAl MSB0byBpOCosICFkYmcgITE2NDcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4 LmkzMihpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTMyIDY0LCBpMSBmYWxzZSks ICFkYmcgITE2NDcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2 RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNiwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAhMTY0OAotKyAgJTkg PSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVRfVDBf KGk4IHNpZ25leHQgJTYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9y bVdyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9y bSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEg JTUpLCAhZGJnICExNjQ4Ci0gICByZXQgaTEgJTksICFkYmcgITE2NDkKLSB9Ci0gCi1AQCAtODg3 Nyw3ICs4ODc3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm8y MnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSBkZWNsYXJlIHZvaWQgQGxs dm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIG5vY2FwdHVyZSB3cml0ZW9ubHksIGk4KiBub2Nh cHR1cmUgcmVhZG9ubHksIGkzMiwgaTEpICMzMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5 c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3JpdGVyRUVi TlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBh bGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUwIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1ZhcnlpbmdXcml0 ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUw IHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSAlY2xhc3MuVmFy eWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC04ODg2LDEyICs4ODg2LDEyIEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5 aW5nSTEzVmFyeWluZ1dyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICU0IHRvIGk4KiwgIWRiZyAhMTY1MgotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITE2NTIKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTMyIDY0LCBpMSBm YWxzZSksICFkYmcgITE2NTIsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRl ck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAl NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAhMTY1Mwot KyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNv ZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFs aWduIDEgJTUpLCAhZGJnICExNjUzCi0gICByZXQgaTEgJTksICFkYmcgITE2NTQKLSB9Ci0gCi0g OyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITE2NTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewotICAgJTQg PSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhICVjbGFzcy5Vbmlmb3JtV3JpdGVy LCBhbGlnbiAzMgotICAgJTYgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRV bmlmb3JtIiwgYWxpZ24gMQotQEAgLTg5MTQsNyArODkxNCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3Jt V3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNSB0byBpOCos ICFkYmcgITE2NTcKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRv IGk4KiwgIWRiZyAhMTY1NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMy KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMsIGkzMiA2NCwgaTEgZmFsc2UpLCAh ZGJnICExNjU3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1LCAlInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU2KSwgIWRiZyAhMTY1 OAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq IGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRVbmlmb3JtIikgYWxpZ24gMSAlNiksICFkYmcgITE2NTgKLSAgIGJyIGkxICUyNCwgbGFiZWwg JTYwLCBsYWJlbCAlMjUsICFkYmcgITE2NTkKLSAKLSA7IDxsYWJlbD46MjU6ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTg5MjIsNyArODkyMiw3 IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITE2NjEKLSAgICUyOCA9IGJpdGNhc3QgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2MQotICAgY2FsbCB2b2lkIEBsbHZt Lm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAzMiAlMjgs IGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjYxLCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI5 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFs aWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBh bGlnbiAxICU4KSwgIWRiZyAhMTY2MgotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18x NkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlOCksICFkYmcgITE2NjIK LSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITE2NjMKLSAKLSA7IDxs YWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl MjUKLUBAIC04OTMwLDcgKzg5MzAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTMy ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTkgdG8gaTgqLCAhZGJnICExNjY1Ci0g ICAlMzMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2 NjUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIg JTMyLCBpOCogYWxpZ24gMzIgJTMzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2NSwgIXRi YWEuc3RydWN0ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAlMTApLCAhZGJnICExNjY2Ci0rICAlMzQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNz LlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxICUxMCksICFkYmcgITE2NjYKLSAgIGJyIGkxICUzNCwgbGFiZWwgJTYwLCBsYWJlbCAl MzUsICFkYmcgITE2NjcKLSAKLSA7IDxsYWJlbD46MzU6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzAKLUBAIC04OTM4LDcgKzg5MzgsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVW5pZm9ybVdyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTExIHRvIGk4KiwgIWRiZyAhMTY2OQotICAgJTM4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICUzNywgaTgqIGFsaWduIDMyICUzOCwgaTMyIDY0LCBp MSBmYWxzZSksICFkYmcgITE2NjksICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEz VW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEx LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUx MiksICFkYmcgITE2NzAKLSsgICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGlu ZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVjbGFzcy5V bmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTExLCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxMiksICFkYmcgITE2NzAKLSAgIGJy IGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcgITE2NzEKLSAKLSA7IDxsYWJlbD46 NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzUKLUBA IC04OTQ2LDcgKzg5NDYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQyID0gYml0 Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMTY3MwotICAgJTQz ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjczCi0g ICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU0Miwg aTgqIGFsaWduIDMyICU0MywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2NzMsICF0YmFhLnN0 cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3MuVW5pZm9y bVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSsgICU0NCA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4 MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5p Zm9ybVdyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGln biAxICUxNCksICFkYmcgITE2NzQKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJlbCAlNDUs ICFkYmcgITE2NzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC04OTU0LDcgKzg5NTQsNyBAQCBkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEz VW5pZm9ybVdyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE1 IHRvIGk4KiwgIWRiZyAhMTY3NwotICAgJTQ4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogJTEgdG8gaTgqLCAhZGJnICExNjc3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgu cDBpOC5pMzIoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWduIDMyICU0OCwgaTMyIDY0LCBpMSBm YWxzZSksICFkYmcgITE2NzcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDkgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVW5p Zm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTQ2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE1LCAl InN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNiks ICFkYmcgITE2NzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRV bmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5Vbmlm b3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE1LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxNiksICFkYmcgITE2NzgKLSAgIGJyIGkx ICU0OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITE2NzkKLSAKLSA7IDxsYWJlbD46NTA6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDUKLUBAIC04 OTYyLDcgKzg5NjIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTUyID0gYml0Y2Fz dCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE3IHRvIGk4KiwgIWRiZyAhMTY4MQotICAgJTUzID0g Yml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjgxCi0gICBj YWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMyICU1MiwgaTgq IGFsaWduIDMyICU1MywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITE2ODEsICF0YmFhLnN0cnVj dCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVW5pZm9ybVdy aXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVu aWZvcm0iKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcgITE2ODIKLSsgICU1NCA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9y bVdyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAx ICUxOCksICFkYmcgITE2ODIKLSAgIGJyIGkxICU1NCwgbGFiZWwgJTYwLCBsYWJlbCAlNTUsICFk YmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC04OTcwLDcgKzg5NzAsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5p Zm9ybVdyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE5IHRv IGk4KiwgIWRiZyAhMTY4NQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTEgdG8gaTgqLCAhZGJnICExNjg1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pMzIoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTMyIDY0LCBpMSBmYWxz ZSksICFkYmcgITE2ODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxOSwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAlMjApLCAh ZGJnICExNjg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVu aWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlVuaWZv cm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTksICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMTY4NgotICAgYnIgbGFi ZWwgJTYwLCAhZGJnICExNjgzCi0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAlMzUsICUzMCwg JTI1LCAlMwotQEAgLTg5NzksNyArODk3OSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3Jp dGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICExNjg4IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEg ITE5MwotQEAgLTkwMDUsNyArOTAwNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0t ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRh dCAhZGJnICExNjk3IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5 MwotQEAgLTkwMzEsNyArOTAzMSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAh ZGJnICExNzA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5Mwot QEAgLTkwNTcsNyArOTA1Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJn ICExNzE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwg YWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAg LTkwODMsNyArOTA4Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEx NzI0IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkx MDksNyArOTEwOSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICExNzMzIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNf MTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNs YXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzMz IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24g MQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkxMzUs NyArOTEzNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ ZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICExNzQyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzQyIHsK LSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQot ICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkxNjEsNyAr OTE2MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMTc1MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVu Y29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3NTEgewot ICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0g ICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtOTk4NCw3ICs5 OTg0LDcgQEAgZGVmaW5lIGludGVybmFsIGkzMiBAX1pON2RldGFpbHMxOF9jbV9wcmludF90eXBl X29jbElQdkVFTlNfMThTSEFERVJfUFJJTlRGX1RZUEUKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRy czogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dy aXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4 dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIw NTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0 c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5T XzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwo JWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwNTUgewotICAgJTQgPSBhbGxvY2EgaTgsIGFs aWduIDEKLSAgICU1ID0gYWxsb2NhICVjbGFzcy5WYXJ5aW5nV3JpdGVyLCBhbGlnbiAzMgotICAg JTYgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiwgYWxpZ24g MQotQEAgLTEwMDA3LDcgKzEwMDA3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUy MiA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICU1IHRvIGk4KiwgIWRiZyAhMjA1Nwot ICAgJTIzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEy MDU3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pMzIoaTgqIGFsaWduIDMy ICUyMiwgaTgqIGFsaWduIDMyICUyMywgaTMyIDY0LCBpMSBmYWxzZSksICFkYmcgITIwNTcsICF0 YmFhLnN0cnVjdCAhMTk3Ci0tICAlMjQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rp bmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTYpLCAhZGJnICEyMDU4Ci0rICAlMjQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTIxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICU1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBh bGlnbiAxICU2KSwgIWRiZyAhMjA1OAotICAgYnIgaTEgJTI0LCBsYWJlbCAlNjAsIGxhYmVsICUy NSwgIWRiZyAhMjA1OQotIAotIDsgPGxhYmVsPjoyNTogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOyBwcmVkcyA9ICUzCi1AQCAtMTAwMTUsNyArMTAwMTUsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVmFyeWluZ1dyaXRlcgotICAgJTI3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciog JTcgdG8gaTgqLCAhZGJnICEyMDYxCi0gICAlMjggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITIwNjEKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTI3LCBpOCogYWxpZ24gMzIgJTI4LCBpMzIgNjQsIGkx IGZhbHNlKSwgIWRiZyAhMjA2MSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyOSA9IGNhbGwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCAlMjYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNywg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlOCks ICFkYmcgITIwNjIKLSsgICUyOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjYsICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTcsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTgpLCAhZGJnICEyMDYyCi0gICBiciBpMSAl MjksIGxhYmVsICU2MCwgbGFiZWwgJTMwLCAhZGJnICEyMDYzCi0gCi0gOyA8bGFiZWw+OjMwOiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTI1Ci1AQCAtMTAw MjMsNyArMTAwMjMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTMyID0gYml0Y2Fz dCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTkgdG8gaTgqLCAhZGJnICEyMDY1Ci0gICAlMzMgPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwNjUKLSAgIGNh bGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTMyLCBpOCog YWxpZ24gMzIgJTMzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA2NSwgIXRiYWEuc3RydWN0 ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwgYWxpZ24gMSAlMTApLCAhZGJnICEyMDY2Ci0rICAlMzQgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTMxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUx MCksICFkYmcgITIwNjYKLSAgIGJyIGkxICUzNCwgbGFiZWwgJTYwLCBsYWJlbCAlMzUsICFkYmcg ITIwNjcKLSAKLSA7IDxsYWJlbD46MzU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDsgcHJlZHMgPSAlMzAKLUBAIC0xMDAzMSw3ICsxMDAzMSw3IEBAIGRlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5 aW5nV3JpdGVyCi0gICAlMzcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTEgdG8g aTgqLCAhZGJnICEyMDY5Ci0gICAlMzggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAl MSB0byBpOCosICFkYmcgITIwNjkKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4 LmkzMihpOCogYWxpZ24gMzIgJTM3LCBpOCogYWxpZ24gMzIgJTM4LCBpMzIgNjQsIGkxIGZhbHNl KSwgIWRiZyAhMjA2OSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzOSA9IGNhbGwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5n V3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCAlMzYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTEsICUic3Ry dWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTEyKSwgIWRi ZyAhMjA3MAotKyAgJTM5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTEsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTEyKSwgIWRiZyAhMjA3MAotICAgYnIgaTEgJTM5 LCBsYWJlbCAlNjAsIGxhYmVsICU0MCwgIWRiZyAhMjA3MQotIAotIDsgPGxhYmVsPjo0MDogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICUzNQotQEAgLTEwMDM5 LDcgKzEwMDM5LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU0MiA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxMyB0byBpOCosICFkYmcgITIwNzMKLSAgICU0MyA9IGJp dGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA3MwotICAgY2Fs bCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTMyKGk4KiBhbGlnbiAzMiAlNDIsIGk4KiBh bGlnbiAzMiAlNDMsIGkzMiA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDczLCAhdGJhYS5zdHJ1Y3Qg ITE5NwotLSAgJTQ0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0MSwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyICUxMywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwgYWxpZ24gMSAlMTQpLCAhZGJnICEyMDc0Ci0rICAlNDQgPSBjYWxsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQgJTQxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyICUxMywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAl MTQpLCAhZGJnICEyMDc0Ci0gICBiciBpMSAlNDQsIGxhYmVsICU2MCwgbGFiZWwgJTQ1LCAhZGJn ICEyMDc1Ci0gCi0gOyA8bGFiZWw+OjQ1OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA7IHByZWRzID0gJTQwCi1AQCAtMTAwNDcsNyArMTAwNDcsNyBAQCBkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFy eWluZ1dyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTE1IHRv IGk4KiwgIWRiZyAhMjA3NwotICAgJTQ4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciog JTEgdG8gaTgqLCAhZGJnICEyMDc3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBp OC5pMzIoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWduIDMyICU0OCwgaTMyIDY0LCBpMSBmYWxz ZSksICFkYmcgITIwNzcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDkgPSBjYWxsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNp Z25leHQgJTQ2LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE1LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNiksICFk YmcgITIwNzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTE1LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86 OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUxNiksICFkYmcgITIwNzgKLSAgIGJyIGkxICU0 OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITIwNzkKLSAKLSA7IDxsYWJlbD46NTA6ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDUKLUBAIC0xMDA1 NSw3ICsxMDA1NSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNTIgPSBiaXRjYXN0 ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMTcgdG8gaTgqLCAhZGJnICEyMDgxCi0gICAlNTMgPSBi aXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwODEKLSAgIGNh bGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4LmkzMihpOCogYWxpZ24gMzIgJTUyLCBpOCog YWxpZ24gMzIgJTUzLCBpMzIgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMjA4MSwgIXRiYWEuc3RydWN0 ICExOTcKLS0gICU1NCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEgJTE4KSwgIWRiZyAhMjA4MgotKyAgJTU0ID0gY2FsbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0ICU1MSwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiAlMTcsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEg JTE4KSwgIWRiZyAhMjA4MgotICAgYnIgaTEgJTU0LCBsYWJlbCAlNjAsIGxhYmVsICU1NSwgIWRi ZyAhMjA4MwotIAotIDsgPGxhYmVsPjo1NTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOyBwcmVkcyA9ICU1MAotQEAgLTEwMDYzLDcgKzEwMDYzLDcgQEAgZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Zh cnlpbmdXcml0ZXIKLSAgICU1NyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxOSB0 byBpOCosICFkYmcgITIwODUKLSAgICU1OCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMjA4NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTMyKGk4KiBhbGlnbiAzMiAlNTcsIGk4KiBhbGlnbiAzMiAlNTgsIGkzMiA2NCwgaTEgZmFs c2UpLCAhZGJnICEyMDg1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTU5ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5 aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCAlNTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMTksICUi c3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEgJTIwKSwg IWRiZyAhMjA4NgotKyAgJTU5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNTYsICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTE5LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxICUyMCksICFkYmcgITIwODYKLSAgIGJyIGxh YmVsICU2MCwgIWRiZyAhMjA4MwotIAotIDsgPGxhYmVsPjo2MDogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU1NSwgJTUwLCAlNDUsICU0MCwgJTM1LCAlMzAs ICUyNSwgJTMKLUBAIC0xMDA3Miw3ICsxMDA3Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVy Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53 aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWlu Z0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMDg4IHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0li MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5n V3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICEyMDg4IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRi YWEgITE5MwotQEAgLTEwMDk4LDcgKzEwMDk4LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQg aTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVmFyeWkK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndp bmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFw cGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5n RUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIq IGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTcgewotK2RlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdX cml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBi eXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUg Y29tZGF0ICFkYmcgITIwOTcgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJh YSAhMTkzCi1AQCAtMTAxMjQsNyArMTAxMjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lpMTNWYXJ5aQot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2lu ZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBw bHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdF RUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciog Ynl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEwNiB7Ci0rZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEz VmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFf KGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dy aXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5 dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBj b21kYXQgIWRiZyAhMjEwNiB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBh bGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFh ICExOTMKLUBAIC0xMDE1MCw3ICsxMDE1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2 YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTE1IHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3Jp dGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICEyMTE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEg ITE5MwotQEAgLTEwMTc2LDcgKzEwMTc2LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEg QF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWkKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5 SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVF Yk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMjQgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1Zh cnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhp OCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0 ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZh bCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAjMjUgY29t ZGF0ICFkYmcgITIxMjQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAh MTkzCi1AQCAtMTAyMDIsNyArMTAyMDIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNWYXJ5aQotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAot LWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJ ZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUVi TlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2 YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs IGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEzMyB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMjEzMyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICEx OTMKLUBAIC0xMDIyOCw3ICsxMDIyOCw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0t ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTQyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5 aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVy KSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkgIzI1IGNvbWRh dCAhZGJnICEyMTQyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5 MwotQEAgLTEwMjU0LDcgKzEwMjU0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9a TjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVmFyeWkKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1k ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQ cm9wZXJFbmNvZGluZ0lQdjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTUxIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lQdjEzVmFy eWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4 IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRl cikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFs KCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21k YXQgIWRiZyAhMjE1MSB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAgJTUgPSBhbGxv Y2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEsICF0YmFhICEx OTMKLWRpZmYgLS1naXQgYS9idWlsdGlucy9idWlsdGlucy1jbS02NC5sbCBiL2J1aWx0aW5zL2J1 aWx0aW5zLWNtLTY0LmxsCi1pbmRleCAzOWEyZGQ4YmUuLjM3NWQwMWJlZCAxMDA2NDQKLS0tLSBh L2J1aWx0aW5zL2J1aWx0aW5zLWNtLTY0LmxsCi0rKysgYi9idWlsdGlucy9idWlsdGlucy1jbS02 NC5sbAotQEAgLTU1Nyw3ICs1NTcsNyBAQCAkX1pOMTNWYXJ5aW5nV3JpdGVyMTJXcml0ZVZlY0Vs ZW1JUHZFRXZ2ID0gY29tZGF0IGFueQotIEAuc3RyLjEwID0gcHJpdmF0ZSB1bm5hbWVkX2FkZHIg Y29uc3RhbnQgWzggeCBpOF0gYyIlMDE2bGxYXDAwIiwgYWxpZ24gMQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAg ewotK2RlZmluZSBpbnRlcm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z ZGl2Y2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFs aWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4 PiwgYWxpZ24gMQotQEAgLTYxOCw3ICs2MTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4g QF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMUVFRXUyQ012YlRfX2NTMV9TMV91MkNNdgot IGRlY2xhcmUgPDEgeCBpOD4gQGxsdm0uZ2VueC5yZHJlZ2lvbmkudjFpOC52MWk4LmkxNig8MSB4 IGk4PiwgaTMyLCBpMzIsIGkzMiwgaTE2LCBpMzIpICMyCi0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxIHggaTg+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0r ZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMV9jU18oPDEgeCBpOD4sIDwxIHggaTg+KSAjMCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGk4 PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0gYWxs b2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtNjM0LDcgKzYzNCw3IEBAIGRlZmluZSBkc29fbG9j YWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX2NTXyg8MSB4 IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1k ZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJD TXZiMl9jU18oPDIgeCBpOD4sIDwyIHggaTg+KSAjMyB7Ci0rZGVmaW5lIGludGVybmFsIDwyIHgg aTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9jU18oPDIgeCBpOD4sIDwy IHggaTg+KSAjMyB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTQgPSBh bGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAy Ci1AQCAtNjgwLDcgKzY4MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1pON2RldGFp bHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9fY1MxX1MxX3UyQ012Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8NCB4 IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8 NCB4IGk4PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc2RpdnUyQ012YjRfY1NfKDw0IHggaTg+LCA8NCB4IGk4PikgIzUgewotICAgJTMg PSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGln biA0Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTgxOCw3ICs4MTgsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTg+IEBfWk43ZGV0YWlsczEzX19pbXBsX2RpdnJlbUlM aTE2RUVFdTJDTXZiVF9fY1MxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfY1NfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTEgewot K2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8 MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0g ICAlNSA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtODY0LDcgKzg2NCw3IEBAIGRl ZmluZSBpbnRlcm5hbCA8MzIgeCBpOD4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJF RUV1MkNNdmJUX19jUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5l IG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4dCwgaTggc2lnbmV4dCkgIzAgewotK2RlZmluZSBpbnRl cm5hbCBzaWduZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtY2MoaTggc2lnbmV4 dCwgaTggc2lnbmV4dCkgIzAgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0g YWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAg LTg5MCw3ICs4OTAsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIHNpZ25leHQgaTggQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW1jYyhpOCBzaWduZXh0LCBpOCBzaWduZQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBp OD4pICMwIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIxX2NTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMwIHsKLSAgICUzID0gYWxs b2NhIDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQot ICAgJTUgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLUBAIC05MDQsNyArOTA0LDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjFfY1NfKDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW11MkNNdmIyX2NTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLStkZWZpbmUgaW50 ZXJuYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2NTXyg8 MiB4IGk4PiwgPDIgeCBpOD4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAy Ci0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDIgeCBp OD4sIGFsaWduIDIKLUBAIC05MTgsNyArOTE4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGk4 PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfY1NfKDwyIHggaTg+LCA8Mgot IH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29f bG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8 NCB4IGk4PiwgPDQgeCBpOD4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI0X2NTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICM1 IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC05MzIs NyArOTMyLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8NCB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfc3JlbXUyQ012YjRfY1NfKDw0IHggaTg+LCA8NAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0 dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpOD4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3 IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmI4X2NTXyg8OCB4IGk4PiwgPDggeCBpOD4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw4 IHggaTg+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTUg PSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLUBAIC05NDYsNyArOTQ2LDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjhfY1Nf KDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMTZfY1NfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjOSB7Ci0rZGVmaW5lIGludGVy bmFsIDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8 MTYgeCBpOD4sIDwxNiB4IGk4PikgIzkgewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGln biAxNgotICAgJTQgPSBhbGxvY2EgPDE2IHggaTg+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2Eg PDE2IHggaTg+LCBhbGlnbiAxNgotQEAgLTk2MCw3ICs5NjAsNyBAQCBkZWZpbmUgZHNvX2xvY2Fs IDwxNiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X2NTXyg8MTYg eCBpOD4sCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIzMl9jU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxMSB7Ci0rZGVmaW5lIGludGVybmFsIDwz MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2NTXyg8MzIgeCBp OD4sIDwzMiB4IGk4PikgIzExIHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIK LSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwzMiB4 IGk4PiwgYWxpZ24gMzIKLUBAIC05NzQsNyArOTc0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIg eCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9jU18oPDMyIHggaTg+ LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYg c2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYg QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZzcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQp ICMzIHsKLSAgICUzID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBh bGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xMDU4LDcgKzEw NTgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWk43ZGV0YWlsczEzX19pbXBsX2Rp dnJlbUlMaTFFRUV1MkNNdmJUX19zUzFfUzFfdTJDTQotIGRlY2xhcmUgPDEgeCBpMTY+IEBsbHZt LmdlbngucmRyZWdpb25pLnYxaTE2LnYxaTE2LmkxNig8MSB4IGkxNj4sIGkzMiwgaTMyLCBpMzIs IGkxNiwgaTMyKSAjMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1 MkNNdmIxX3NTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzMgewotK2RlZmluZSBpbnRlcm5hbCA8 MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIxX3NTXyg8MSB4IGkx Nj4sIDwxIHggaTE2PikgIzMgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0g ICAlNCA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2 PiwgYWxpZ24gMgotQEAgLTEwNzQsNyArMTA3NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBp MTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NT Xyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIyX3NTXyg8MiB4IGkxNj4sIDwyIHgg aTE2PikgIzUgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNCA9IGFs bG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24g NAotQEAgLTExNDMsNyArMTE0Myw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aTjdk ZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMkVFRXUyQ012YlRfX3NTMV9TMV91MkNNCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8 NCB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkx Nj4sIDw0IHggaTE2PikgIzcgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGkxNj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X3NTXyg8NCB4IGkxNj4sIDw0IHggaTE2PikgIzcg ewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTEz NTAsNyArMTM1MCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczEz X19pbXBsX2RpdnJlbUlMaTE2RUVFdTJDTXZiVF9fc1MxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfc1NfKDwzMiB4IGkxNj4sIDwz MiB4IGkxNj4pICMxMyB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NkaXZ1MkNNdmIzMl9zU18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzEz IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8 MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQK LUBAIC0xNDE5LDcgKzE0MTksNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2Rl dGFpbHMxM19faW1wbF9kaXZyZW1JTGkzMkVFRXUyQ012YlRfX3NTMV9TMV91MgotIH0KLSAKLSA7 IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgc2ln bmV4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2 IHNpZ25leHQpICMzIHsKLStkZWZpbmUgaW50ZXJuYWwgc2lnbmV4dCBpMTYgQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3NyZW1zcyhpMTYgc2lnbmV4dCwgaTE2IHNpZ25leHQpICMzIHsKLSAgICUz ID0gYWxsb2NhIGkxNiwgYWxpZ24gMgotICAgJTQgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAl NSA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDQ1LDcgKzE0NDUsNyBAQCBkZWZp bmUgZHNvX2xvY2FsIHNpZ25leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtc3Mo aTE2IHNpZ25leHQsIGkxNiBzaQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMV9zU18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLStkZWZpbmUg aW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9z U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMzIHsKLSAgICUzID0gYWxsb2NhIDwxIHggaTE2Piwg YWxpZ24gMgotICAgJTQgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9j YSA8MSB4IGkxNj4sIGFsaWduIDIKLUBAIC0xNDU5LDcgKzE0NTksNyBAQCBkZWZpbmUgZHNvX2xv Y2FsIDwxIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjFfc1NfKDwx IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAot LWRlZmluZSBkc29fbG9jYWwgPDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVt dTJDTXZiMl9zU18oPDIgeCBpMTY+LCA8MiB4IGkxNj4pICM1IHsKLStkZWZpbmUgaW50ZXJuYWwg PDIgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMl9zU18oPDIgeCBp MTY+LCA8MiB4IGkxNj4pICM1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAot ICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkx Nj4sIGFsaWduIDQKLUBAIC0xNDczLDcgKzE0NzMsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjJfc1NfKDwyIHggaTE2Piwg PAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9z U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICM3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDQgeCBpMTY+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiNF9zU18oPDQgeCBpMTY+LCA8NCB4 IGkxNj4pICM3IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotICAgJTQgPSBh bGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWdu IDgKLUBAIC0xNDg3LDcgKzE0ODcsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfc1NfKDw0IHggaTE2PiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDggeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBp MTY+LCA8OCB4IGkxNj4pICM5IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiOF9zU18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICM5 IHsKLSAgICUzID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw4 IHggaTE2PiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw4IHggaTE2PiwgYWxpZ24gMTYKLUBA IC0xNTAxLDcgKzE1MDEsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw4IHggaTE2PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfc3JlbXUyQ012Yjhfc1NfKDw4IHggaTE2PiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjE2X3NTXyg8MTYgeCBpMTY+ LCA8MTYgeCBpMTY+KSAjMTEgewotK2RlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkxNj4sIDwxNiB4IGkxNj4p ICMxMSB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxv Y2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwxNiB4IGkxNj4sIGFsaWdu IDMyCi1AQCAtMTUxNSw3ICsxNTE1LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMTY+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMTZfc1NfKDwxNiB4IGkxNj4KLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIzMl9zU18oPDMy IHggaTE2PiwgPDMyIHggaTE2PikgIzEzIHsKLStkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+LCA8MzIg eCBpMTY+KSAjMTMgewotICAgJTMgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLSAgICU0 ID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMTY+ LCBhbGlnbiA2NAotQEAgLTE1MjksNyArMTUyOSw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDMyIHgg aTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX3NTXyg8MzIgeCBpMTY+ Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZpaShpMzIsIGkzMikgIzE0 IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2aWko aTMyLCBpMzIpICMxNCB7Ci0gICAlMyA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU0ID0gYWxs b2NhIGkzMiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAt MTczMCw3ICsxNzMwLDcgQEAgZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1pON2RldGFpbHMx M19faW1wbF9kaXZyZW1JTGkxRUVFdTJDTXZiVF9faVMxX1MxX3UyQ00KLSBkZWNsYXJlIDwxIHgg aTMyPiBAbGx2bS5nZW54LnJkcmVnaW9uaS52MWkzMi52MWkzMi5pMTYoPDEgeCBpMzI+LCBpMzIs IGkzMiwgaTMyLCBpMTYsIGkzMikgIzIKLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zZGl2dTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0rZGVmaW5l IGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjFf aVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpMzI+ LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTE3NDYsNyArMTc0Niw3IEBAIGRlZmluZSBkc29f bG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMV9pU18o PDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5k Ci0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Nk aXZ1MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLStkZWZpbmUgaW50ZXJu YWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMl9pU18oPDIg eCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWdu IDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTUgPSBhbGxvY2EgPDIg eCBpMzI+LCBhbGlnbiA4Ci1AQCAtMTkzMiw3ICsxOTMyLDcgQEAgZGVmaW5lIGludGVybmFsIDwy IHggaTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkyRUVFdTJDTXZiVF9faVMxX1Mx X3UyQ00KLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZp bmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012 YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4 IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NkaXZ1MkNNdmI0X2lTXyg8NCB4IGkzMj4s IDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAg ICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAgICU1ID0gYWxsb2NhIDw0IHggaTMy PiwgYWxpZ24gMTYKLUBAIC0yNDkwLDcgKzI0OTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDE2IHgg aTMyPiBAX1pON2RldGFpbHMxM19faW1wbF9kaXZyZW1JTGkxNkVFRXUyQ012YlRfX2lTMV9TMV91 MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc2RpdnUyQ012YjMy X2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkgewotK2RlZmluZSBpbnRlcm5hbCA8MzIg eCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zZGl2dTJDTXZiMzJfaVNfKDwzMiB4IGkz Mj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAx MjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTUgPSBhbGxvY2Eg PDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjY3Niw3ICsyNjc2LDcgQEAgZGVmaW5lIGludGVy bmFsIDwzMiB4IGkzMj4gQF9aTjdkZXRhaWxzMTNfX2ltcGxfZGl2cmVtSUxpMzJFRUV1MkNNdmJU X19pUzFfUzFfdTIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQK LS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkz MiwgaTMyKSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCBpMzIgQF9aMjRfX2NtX2ludHJpbnNpY19p bXBsX3NyZW1paShpMzIsIGkzMikgIzE0IHsKLSAgICUzID0gYWxsb2NhIGkzMiwgYWxpZ24gNAot ICAgJTQgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MSB4IGkzMj4sIGFs aWduIDQKLUBAIC0yNzAyLDcgKzI3MDIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIGkzMiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfc3JlbWlpKGkzMiwgaTMyKSAjMTQgewotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8MSB4 IGkzMj4pICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfc3JlbXUyQ012YjFfaVNfKDwxIHggaTMyPiwgPDEgeCBpMzI+KSAjMTQgewotICAg JTMgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8MSB4IGkzMj4s IGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTI3MTYsNyAr MjcxNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMV9pU18oPDEgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0 cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikg IzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF9zcmVtdTJDTXZiMl9pU18oPDIgeCBpMzI+LCA8MiB4IGkzMj4pICMxNSB7Ci0gICAlMyA9IGFs bG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLSAgICU0ID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24g OAotICAgJTUgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci1AQCAtMjczMCw3ICsyNzMwLDcg QEAgZGVmaW5lIGRzb19sb2NhbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIyX2lTXyg8MiB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9p bmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjRfaVNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewot K2RlZmluZSBpbnRlcm5hbCA8NCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11 MkNNdmI0X2lTXyg8NCB4IGkzMj4sIDw0IHggaTMyPikgIzE2IHsKLSAgICUzID0gYWxsb2NhIDw0 IHggaTMyPiwgYWxpZ24gMTYKLSAgICU0ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLSAg ICU1ID0gYWxsb2NhIDw0IHggaTMyPiwgYWxpZ24gMTYKLUBAIC0yNzQ0LDcgKzI3NDQsNyBAQCBk ZWZpbmUgZHNvX2xvY2FsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUy Q012YjRfaVNfKDw0IHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiOF9pU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0rZGVm aW5lIGludGVybmFsIDw4IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfc3JlbXUyQ012 YjhfaVNfKDw4IHggaTMyPiwgPDggeCBpMzI+KSAjMTcgewotICAgJTMgPSBhbGxvY2EgPDggeCBp MzI+LCBhbGlnbiAzMgotICAgJTQgPSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotICAgJTUg PSBhbGxvY2EgPDggeCBpMzI+LCBhbGlnbiAzMgotQEAgLTI3NTgsNyArMjc1OCw3IEBAIGRlZmlu ZSBkc29fbG9jYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9zcmVtdTJDTXZi OF9pU18oPDggeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MTYgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF9zcmVtdTJDTXZiMTZfaVNfKDwxNiB4IGkzMj4sIDwxNiB4IGkzMj4pICMxOCB7Ci0rZGVm aW5lIGludGVybmFsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3NyZW11MkNN dmIxNl9pU18oPDE2IHggaTMyPiwgPDE2IHggaTMyPikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwx NiB4IGkzMj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAot ICAgJTUgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLUBAIC0yNzcyLDcgKzI3NzIsNyBA QCBkZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Ny ZW11MkNNdmIxNl9pU18oPDE2IHggaTMyPgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfc3JlbXUyQ012YjMyX2lTXyg8MzIgeCBpMzI+LCA8MzIgeCBpMzI+KSAjMTkg ewotK2RlZmluZSBpbnRlcm5hbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF9z cmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0gICAlMyA9IGFs bG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFs aWduIDEyOAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci1AQCAtMjc4Niw3 ICsyNzg2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF9zcmVtdTJDTXZiMzJfaVNfKDwzMiB4IGkzMj4KLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIHplcm9leHQgaTggQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZoaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0KSAjMjEg ewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGk4IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 ZGl2aGgoaTggemVyb2V4dCwgaTggemVyb2V4dCkgIzIxIHsKLSAgICUzID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgPDEgeCBp OD4sIGFsaWduIDEKLUBAIC0yODQ0LDcgKzI4NDQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDEgeCBp OD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19oUzFfUzFfdTJD TQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBk c29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hT Xyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIDwxIHggaTg+IEBf WjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV9oU18oPDEgeCBpOD4sIDwxIHggaTg+ KSAjMjEgewotICAgJTMgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU0ID0gYWxsb2Nh IDwxIHggaTg+LCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAg LTI4NjAsNyArMjg2MCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2lu dHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEKLSB9Ci0gCi0gOyBGdW5j dGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTg+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMl9oU18oPDIgeCBpOD4sIDwyIHgg aTg+KSAjMjIgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGk4PiBAX1oyNF9fY21faW50cmluc2lj X2ltcGxfdWRpdnUyQ012YjJfaFNfKDwyIHggaTg+LCA8MiB4IGk4PikgIzIyIHsKLSAgICUzID0g YWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSA8MiB4IGk4PiwgYWxpZ24g MgotICAgJTUgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLUBAIC0yOTA2LDcgKzI5MDYsNyBA QCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlM aTJFRUV1MkNNdmJUX19oUzFfUzFfdTJDTQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lu bGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpOD4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmI0X2hTXyg8NCB4IGk4PiwgPDQgeCBpOD4pICMxNCB7Ci0rZGVm aW5lIGludGVybmFsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZi NF9oU18oPDQgeCBpOD4sIDw0IHggaTg+KSAjMTQgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpOD4s IGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9j YSA8NCB4IGk4PiwgYWxpZ24gNAotQEAgLTMwNDQsNyArMzA0NCw3IEBAIGRlZmluZSBpbnRlcm5h bCA8MTYgeCBpOD4gQF9aTjdkZXRhaWxzMTRfX2ltcGxfdWRpdnJlbUlMaTE2RUVFdTJDTXZiVF9f aFMxX1MxX3UyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0t ZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1 MkNNdmIzMl9oU18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0rZGVmaW5lIGludGVybmFs IDwzMiB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjMyX2hTXyg8MzIg eCBpOD4sIDwzMiB4IGk4PikgIzE3IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24g MzIKLSAgICU0ID0gYWxsb2NhIDwzMiB4IGk4PiwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhIDwz MiB4IGk4PiwgYWxpZ24gMzIKLUBAIC0zMDkwLDcgKzMwOTAsNyBAQCBkZWZpbmUgaW50ZXJuYWwg PDMyIHggaTg+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkzMkVFRXUyQ012YlRfX2hT MV9TMV91MgotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRl ZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbWho KGk4IHplcm9leHQsIGk4IHplcm9leHQpICMyMSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQg aTggQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW1oaChpOCB6ZXJvZXh0LCBpOCB6ZXJvZXh0 KSAjMjEgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhIGk4LCBh bGlnbiAxCi0gICAlNSA9IGFsbG9jYSA8MSB4IGk4PiwgYWxpZ24gMQotQEAgLTMxMTYsNyArMzEx Niw3IEBAIGRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpOCBAX1oyNF9fY21faW50cmluc2ljX2lt cGxfdXJlbWhoKGk4IHplcm9leHQsIGk4IHplcm9lCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNfKDwxIHggaTg+LCA8MSB4IGk4PikgIzIxIHsK LStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11 MkNNdmIxX2hTXyg8MSB4IGk4PiwgPDEgeCBpOD4pICMyMSB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4 IGk4PiwgYWxpZ24gMQotICAgJTQgPSBhbGxvY2EgPDEgeCBpOD4sIGFsaWduIDEKLSAgICU1ID0g YWxsb2NhIDwxIHggaTg+LCBhbGlnbiAxCi1AQCAtMzEzMCw3ICszMTMwLDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MSB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjFfaFNf KDwxIHggaTg+LCA8MQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vy ZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIgeCBpOD4pICMyMiB7Ci0rZGVmaW5lIGludGVybmFs IDwyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMl9oU18oPDIgeCBp OD4sIDwyIHggaTg+KSAjMjIgewotICAgJTMgPSBhbGxvY2EgPDIgeCBpOD4sIGFsaWduIDIKLSAg ICU0ID0gYWxsb2NhIDwyIHggaTg+LCBhbGlnbiAyCi0gICAlNSA9IGFsbG9jYSA8MiB4IGk4Piwg YWxpZ24gMgotQEAgLTMxNDQsNyArMzE0NCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDIgeCBpOD4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2hTXyg8MiB4IGk4PiwgPDIKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xv Y2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQg eCBpOD4sIDw0IHggaTg+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8NCB4IGk4PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfaFNfKDw0IHggaTg+LCA8NCB4IGk4PikgIzE0 IHsKLSAgICUzID0gYWxsb2NhIDw0IHggaTg+LCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSA8NCB4 IGk4PiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDQgeCBpOD4sIGFsaWduIDQKLUBAIC0zMTU4 LDcgKzMxNTgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDw0IHggaTg+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiNF9oU18oPDQgeCBpOD4sIDw0Ci0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjhfaFNfKDw4IHggaTg+LCA8OCB4IGk4Pikg IzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VyZW11MkNNdmI4X2hTXyg8OCB4IGk4PiwgPDggeCBpOD4pICMxNSB7Ci0gICAlMyA9IGFsbG9j YSA8OCB4IGk4PiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDggeCBpOD4sIGFsaWduIDgKLSAg ICU1ID0gYWxsb2NhIDw4IHggaTg+LCBhbGlnbiA4Ci1AQCAtMzE3Miw3ICszMTcyLDcgQEAgZGVm aW5lIGRzb19sb2NhbCA8OCB4IGk4PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012 YjhfaFNfKDw4IHggaTg+LCA8OAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBu b3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDE2IHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91cmVtdTJDTXZiMTZfaFNfKDwxNiB4IGk4PiwgPDE2IHggaTg+KSAjMTYgewotK2RlZmlu ZSBpbnRlcm5hbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl9oU18oPDE2IHggaTg+LCA8MTYgeCBpOD4pICMxNiB7Ci0gICAlMyA9IGFsbG9jYSA8MTYgeCBp OD4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci0gICAlNSA9 IGFsbG9jYSA8MTYgeCBpOD4sIGFsaWduIDE2Ci1AQCAtMzE4Niw3ICszMTg2LDcgQEAgZGVmaW5l IGRzb19sb2NhbCA8MTYgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIx Nl9oU18oPDE2IHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vu d2luZAotLWRlZmluZSBkc29fbG9jYWwgPDMyIHggaTg+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1w bF91cmVtdTJDTXZiMzJfaFNfKDwzMiB4IGk4PiwgPDMyIHggaTg+KSAjMTcgewotK2RlZmluZSBp bnRlcm5hbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9o U18oPDMyIHggaTg+LCA8MzIgeCBpOD4pICMxNyB7Ci0gICAlMyA9IGFsbG9jYSA8MzIgeCBpOD4s IGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi0gICAlNSA9IGFs bG9jYSA8MzIgeCBpOD4sIGFsaWduIDMyCi1AQCAtMzIwMCw3ICszMjAwLDcgQEAgZGVmaW5lIGRz b19sb2NhbCA8MzIgeCBpOD4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9o U18oPDMyIHggaTg+LAotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2lu ZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ0dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7Ci0rZGVmaW5lIGludGVybmFs IHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2dHQoaTE2IHplcm9leHQs IGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2LCBhbGlnbiAyCi0gICAlNCA9 IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgot QEAgLTMyNzgsNyArMzI3OCw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkxNj4gQF9aTjdkZXRh aWxzMTRfX2ltcGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX190UzFfUzFfdTJDCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4 IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4s IDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiMV90U18oPDEgeCBpMTY+LCA8MSB4IGkxNj4pICMyMiB7 Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAgICU0ID0gYWxsb2NhIDwxIHgg aTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+LCBhbGlnbiAyCi1AQCAtMzI5 NCw3ICszMjk0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VkaXZ1MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBA X1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfdFNfKDwyIHggaTE2PiwgPDIgeCBp MTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VkaXZ1MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHggaTE2PikgIzE0IHsKLSAgICUz ID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMTY+LCBh bGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWduIDQKLUBAIC0zMzYwLDcgKzMz NjAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDIgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3Vk aXZyZW1JTGkyRUVFdTJDTXZiVF9fdFMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19j bV9pbnRyaW5zaWNfaW1wbF91ZGl2dTJDTXZiNF90U18oPDQgeCBpMTY+LCA8NCB4IGkxNj4pICMx NSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxf dWRpdnUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAjMTUgewotICAgJTMgPSBhbGxv Y2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8NCB4IGkxNj4sIGFsaWduIDgK LSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAgLTM1NTgsNyArMzU1OCw3IEBA IGRlZmluZSBpbnRlcm5hbCA8MTYgeCBpMTY+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1J TGkxNkVFRXUyQ012YlRfX3RTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5s aW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91ZGl2dTJDTXZiMzJfdFNfKDwzMiB4IGkxNj4sIDwzMiB4IGkxNj4pICMxOCB7 Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ1MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2PikgIzE4IHsKLSAgICUzID0gYWxs b2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFsbG9jYSA8MzIgeCBpMTY+LCBhbGln biA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxpZ24gNjQKLUBAIC0zNjI0LDcgKzM2 MjQsNyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTE2PiBAX1pON2RldGFpbHMxNF9faW1wbF91 ZGl2cmVtSUxpMzJFRUV1MkNNdmJUX190UzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJz OiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgemVyb2V4dCBpMTYgQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwgaTE2IHplcm9leHQpICMyMiB7 Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTE2IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91 cmVtdHQoaTE2IHplcm9leHQsIGkxNiB6ZXJvZXh0KSAjMjIgewotICAgJTMgPSBhbGxvY2EgaTE2 LCBhbGlnbiAyCi0gICAlNCA9IGFsbG9jYSBpMTYsIGFsaWduIDIKLSAgICU1ID0gYWxsb2NhIDwx IHggaTE2PiwgYWxpZ24gMgotQEAgLTM2NTAsNyArMzY1MCw3IEBAIGRlZmluZSBkc29fbG9jYWwg emVyb2V4dCBpMTYgQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW10dChpMTYgemVyb2V4dCwg aTE2IHplCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVm aW5lIGRzb19sb2NhbCA8MSB4IGkxNj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNN dmIxX3RTXyg8MSB4IGkxNj4sIDwxIHggaTE2PikgIzIyIHsKLStkZWZpbmUgaW50ZXJuYWwgPDEg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV90U18oPDEgeCBpMTY+ LCA8MSB4IGkxNj4pICMyMiB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkxNj4sIGFsaWduIDIKLSAg ICU0ID0gYWxsb2NhIDwxIHggaTE2PiwgYWxpZ24gMgotICAgJTUgPSBhbGxvY2EgPDEgeCBpMTY+ LCBhbGlnbiAyCi1AQCAtMzY2NCw3ICszNjY0LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX3RTXyg8MSB4IGkxNj4sIDwK LSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNv X2xvY2FsIDwyIHggaTE2PiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNf KDwyIHggaTE2PiwgPDIgeCBpMTY+KSAjMTQgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX3RTXyg8MiB4IGkxNj4sIDwyIHgg aTE2PikgIzE0IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTE2PiwgYWxpZ24gNAotICAgJTQgPSBh bGxvY2EgPDIgeCBpMTY+LCBhbGlnbiA0Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkxNj4sIGFsaWdu IDQKLUBAIC0zNjc4LDcgKzM2NzgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTE2PiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfdFNfKDwyIHggaTE2PiwgPAotIH0KLSAK LSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwg PDQgeCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBp MTY+LCA8NCB4IGkxNj4pICMxNSB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfdFNfKDw0IHggaTE2PiwgPDQgeCBpMTY+KSAj MTUgewotICAgJTMgPSBhbGxvY2EgPDQgeCBpMTY+LCBhbGlnbiA4Ci0gICAlNCA9IGFsbG9jYSA8 NCB4IGkxNj4sIGFsaWduIDgKLSAgICU1ID0gYWxsb2NhIDw0IHggaTE2PiwgYWxpZ24gOAotQEAg LTM2OTIsNyArMzY5Miw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMTY+IEBfWjI0X19jbV9p bnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF90U18oPDQgeCBpMTY+LCA8Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkx Nj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDw4 IHggaTE2PikgIzE2IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMTY+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtdTJDTXZiOF90U18oPDggeCBpMTY+LCA8OCB4IGkxNj4pICMxNiB7Ci0g ICAlMyA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci0gICAlNCA9IGFsbG9jYSA8OCB4IGkx Nj4sIGFsaWduIDE2Ci0gICAlNSA9IGFsbG9jYSA8OCB4IGkxNj4sIGFsaWduIDE2Ci1AQCAtMzcw Niw3ICszNzA2LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkxNj4gQF9aMjRfX2NtX2ludHJp bnNpY19pbXBsX3VyZW11MkNNdmI4X3RTXyg8OCB4IGkxNj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl90U18oPDE2IHggaTE2PiwgPDE2 IHggaTE2PikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTE2PiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+LCA8MTYgeCBpMTY+KSAjMTcg ewotICAgJTMgPSBhbGxvY2EgPDE2IHggaTE2PiwgYWxpZ24gMzIKLSAgICU0ID0gYWxsb2NhIDwx NiB4IGkxNj4sIGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMTY+LCBhbGlnbiAzMgot QEAgLTM3MjAsNyArMzcyMCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTE2PiBAX1oyNF9f Y21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X3RTXyg8MTYgeCBpMTY+Ci0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIg eCBpMTY+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfdFNfKDwzMiB4IGkx Nj4sIDwzMiB4IGkxNj4pICMxOCB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkxNj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHggaTE2PiwgPDMyIHggaTE2 PikgIzE4IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkxNj4sIGFsaWduIDY0Ci0gICAlNCA9IGFs bG9jYSA8MzIgeCBpMTY+LCBhbGlnbiA2NAotICAgJTUgPSBhbGxvY2EgPDMyIHggaTE2PiwgYWxp Z24gNjQKLUBAIC0zNzM0LDcgKzM3MzQsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkxNj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl90U18oPDMyIHggaTE2PgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91ZGl2amooaTMyLCBpMzIpICMxNCB7Ci0r ZGVmaW5lIGludGVybmFsIGkzMiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdmpqKGkzMiwg aTMyKSAjMTQgewotICAgJTMgPSBhbGxvY2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBp MzIsIGFsaWduIDQKLSAgICU1ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTM4OTIs NyArMzg5Miw3IEBAIGRlZmluZSBpbnRlcm5hbCA8MSB4IGkzMj4gQF9aTjdkZXRhaWxzMTRfX2lt cGxfdWRpdnJlbUlMaTFFRUV1MkNNdmJUX19qUzFfUzFfdTJDCi0gfQotIAotIDsgRnVuY3Rpb24g QXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwxIHggaTMy PikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4IGkzMj4pICMxNCB7Ci0gICAlMyA9 IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0gYWxsb2NhIDwxIHggaTMyPiwgYWxp Z24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGlnbiA0Ci1AQCAtMzkwOCw3ICszOTA4 LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBs X3VkaXZ1MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczog bm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdWRpdnUyQ012YjJfalNfKDwyIHggaTMyPiwgPDIgeCBpMzI+KSAjMTUg ewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3Vk aXZ1MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikgIzE1IHsKLSAgICUzID0gYWxsb2Nh IDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2EgPDIgeCBpMzI+LCBhbGlnbiA4Ci0g ICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBAIC00MDU0LDcgKzQwNTQsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgPDIgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGky RUVFdTJDTXZiVF9falMxX1MxX3UyQwotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGlu ZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91ZGl2dTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8NCB4IGkzMj4pICMxNiB7Ci0rZGVm aW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdWRpdnUyQ012 YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewotICAgJTMgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTUg PSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ0OTIsNyArNDQ5Miw3IEBAIGRlZmlu ZSBpbnRlcm5hbCA8MTYgeCBpMzI+IEBfWk43ZGV0YWlsczE0X19pbXBsX3VkaXZyZW1JTGkxNkVF RXUyQ012YlRfX2pTMV9TMV91Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5v dW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5zaWNf aW1wbF91ZGl2dTJDTXZiMzJfalNfKDwzMiB4IGkzMj4sIDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVm aW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VkaXZ1MkNN dmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikgIzE5IHsKLSAgICUzID0gYWxsb2NhIDwz MiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxvY2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4 Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGlnbiAxMjgKLUBAIC00NjM4LDcgKzQ2Mzgs NyBAQCBkZWZpbmUgaW50ZXJuYWwgPDMyIHggaTMyPiBAX1pON2RldGFpbHMxNF9faW1wbF91ZGl2 cmVtSUxpMzJFRUV1MkNNdmJUX19qUzFfUzFfdQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBu b2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7Ci0rZGVmaW5lIGludGVybmFsIGkzMiBAX1oy NF9fY21faW50cmluc2ljX2ltcGxfdXJlbWpqKGkzMiwgaTMyKSAjMTQgewotICAgJTMgPSBhbGxv Y2EgaTMyLCBhbGlnbiA0Ci0gICAlNCA9IGFsbG9jYSBpMzIsIGFsaWduIDQKLSAgICU1ID0gYWxs b2NhIDwxIHggaTMyPiwgYWxpZ24gNAotQEAgLTQ2NjQsNyArNDY2NCw3IEBAIGRlZmluZSBkc29f bG9jYWwgaTMyIEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtamooaTMyLCBpMzIpICMxNCB7 Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRz b19sb2NhbCA8MSB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pT Xyg8MSB4IGkzMj4sIDwxIHggaTMyPikgIzE0IHsKLStkZWZpbmUgaW50ZXJuYWwgPDEgeCBpMzI+ IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMV9qU18oPDEgeCBpMzI+LCA8MSB4 IGkzMj4pICMxNCB7Ci0gICAlMyA9IGFsbG9jYSA8MSB4IGkzMj4sIGFsaWduIDQKLSAgICU0ID0g YWxsb2NhIDwxIHggaTMyPiwgYWxpZ24gNAotICAgJTUgPSBhbGxvY2EgPDEgeCBpMzI+LCBhbGln biA0Ci1AQCAtNDY3OCw3ICs0Njc4LDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8MSB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxX2pTXyg8MSB4IGkzMj4sIDwKLSB9Ci0g Ci0gOyBGdW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2Fs IDwyIHggaTMyPiBAX1oyNF9fY21faW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHgg aTMyPiwgPDIgeCBpMzI+KSAjMTUgewotK2RlZmluZSBpbnRlcm5hbCA8MiB4IGkzMj4gQF9aMjRf X2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIyX2pTXyg8MiB4IGkzMj4sIDwyIHggaTMyPikg IzE1IHsKLSAgICUzID0gYWxsb2NhIDwyIHggaTMyPiwgYWxpZ24gOAotICAgJTQgPSBhbGxvY2Eg PDIgeCBpMzI+LCBhbGlnbiA4Ci0gICAlNSA9IGFsbG9jYSA8MiB4IGkzMj4sIGFsaWduIDgKLUBA IC00NjkyLDcgKzQ2OTIsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwyIHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjJfalNfKDwyIHggaTMyPiwgPAotIH0KLSAKLSA7IEZ1 bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9jYWwgPDQgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8 NCB4IGkzMj4pICMxNiB7Ci0rZGVmaW5lIGludGVybmFsIDw0IHggaTMyPiBAX1oyNF9fY21faW50 cmluc2ljX2ltcGxfdXJlbXUyQ012YjRfalNfKDw0IHggaTMyPiwgPDQgeCBpMzI+KSAjMTYgewot ICAgJTMgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotICAgJTQgPSBhbGxvY2EgPDQgeCBp MzI+LCBhbGlnbiAxNgotICAgJTUgPSBhbGxvY2EgPDQgeCBpMzI+LCBhbGlnbiAxNgotQEAgLTQ3 MDYsNyArNDcwNiw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDQgeCBpMzI+IEBfWjI0X19jbV9pbnRy aW5zaWNfaW1wbF91cmVtdTJDTXZiNF9qU18oPDQgeCBpMzI+LCA8Ci0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDw4IHgg aTMyPikgIzE3IHsKLStkZWZpbmUgaW50ZXJuYWwgPDggeCBpMzI+IEBfWjI0X19jbV9pbnRyaW5z aWNfaW1wbF91cmVtdTJDTXZiOF9qU18oPDggeCBpMzI+LCA8OCB4IGkzMj4pICMxNyB7Ci0gICAl MyA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi0gICAlNCA9IGFsbG9jYSA8OCB4IGkzMj4s IGFsaWduIDMyCi0gICAlNSA9IGFsbG9jYSA8OCB4IGkzMj4sIGFsaWduIDMyCi1AQCAtNDcyMCw3 ICs0NzIwLDcgQEAgZGVmaW5lIGRzb19sb2NhbCA8OCB4IGkzMj4gQF9aMjRfX2NtX2ludHJpbnNp Y19pbXBsX3VyZW11MkNNdmI4X2pTXyg8OCB4IGkzMj4sIDwKLSB9Ci0gCi0gOyBGdW5jdGlvbiBB dHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIDwxNiB4IGkzMj4gQF9a MjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIxNl9qU18oPDE2IHggaTMyPiwgPDE2IHgg aTMyPikgIzE4IHsKLStkZWZpbmUgaW50ZXJuYWwgPDE2IHggaTMyPiBAX1oyNF9fY21faW50cmlu c2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+LCA8MTYgeCBpMzI+KSAjMTggewot ICAgJTMgPSBhbGxvY2EgPDE2IHggaTMyPiwgYWxpZ24gNjQKLSAgICU0ID0gYWxsb2NhIDwxNiB4 IGkzMj4sIGFsaWduIDY0Ci0gICAlNSA9IGFsbG9jYSA8MTYgeCBpMzI+LCBhbGlnbiA2NAotQEAg LTQ3MzQsNyArNDczNCw3IEBAIGRlZmluZSBkc29fbG9jYWwgPDE2IHggaTMyPiBAX1oyNF9fY21f aW50cmluc2ljX2ltcGxfdXJlbXUyQ012YjE2X2pTXyg8MTYgeCBpMzI+Ci0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IG5vaW5saW5lIG5vdW53aW5kCi0tZGVmaW5lIGRzb19sb2NhbCA8MzIgeCBp MzI+IEBfWjI0X19jbV9pbnRyaW5zaWNfaW1wbF91cmVtdTJDTXZiMzJfalNfKDwzMiB4IGkzMj4s IDwzMiB4IGkzMj4pICMxOSB7Ci0rZGVmaW5lIGludGVybmFsIDwzMiB4IGkzMj4gQF9aMjRfX2Nt X2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMyPiwgPDMyIHggaTMyPikg IzE5IHsKLSAgICUzID0gYWxsb2NhIDwzMiB4IGkzMj4sIGFsaWduIDEyOAotICAgJTQgPSBhbGxv Y2EgPDMyIHggaTMyPiwgYWxpZ24gMTI4Ci0gICAlNSA9IGFsbG9jYSA8MzIgeCBpMzI+LCBhbGln biAxMjgKLUBAIC00NzQ4LDcgKzQ3NDgsNyBAQCBkZWZpbmUgZHNvX2xvY2FsIDwzMiB4IGkzMj4g QF9aMjRfX2NtX2ludHJpbnNpY19pbXBsX3VyZW11MkNNdmIzMl9qU18oPDMyIHggaTMyPgotIH0K LSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBub2lubGluZSBub3Vud2luZAotLWRlZmluZSBkc29fbG9j YWwgdm9pZCBAX19kb19wcmludF9jbShpOCosIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwgaTMy KSAjMjMgIWRiZyAhMTUgewotK2RlZmluZSBpbnRlcm5hbCB2b2lkIEBfX2RvX3ByaW50X2NtKGk4 KiwgaTgqLCBpMzIsIGk2NCwgaTMyKiwgaTMyLCBpMzIpICMyMyAhZGJnICExNSB7Ci0gICAlOCA9 IGFsbG9jYSBpOCosIGFsaWduIDgKLSAgICU5ID0gYWxsb2NhIGk4KiwgYWxpZ24gOAotICAgJTEw ID0gYWxsb2NhIGkzMiwgYWxpZ24gNAotQEAgLTUwNzAsNyArNTA3MCw3IEBAIGRlZmluZSBkc29f bG9jYWwgdm9pZCBAX19kb19wcmludF9seihpMzIsIGk4KiwgaTMyLCBpNjQsIGkzMiosIGkzMiwg aTMyLCBpMzIsIGkzCi0gICAlNjcgPSBsb2FkIGk2NCwgaTY0KiAlMTMsIGFsaWduIDgsICFkYmcg ITE1OSwgIXRiYWEgITE5Ci0gICAlNjggPSBsb2FkIDw1IHggaTMyPiwgPDUgeCBpMzI+KiAlMjEs IGFsaWduIDMyLCAhZGJnICExNjAsICF0YmFhICE3Ci0gICBjYWxsIHZvaWQgQF9aTjEzVmFyeWlu Z1dyaXRlckMyRVJ5UlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMjMsIGk2 NCogZGVyZWZlcmVuY2VhYmxlKDgpICUxOSwgaTMyKiogZGVyZWZlcmVuY2VhYmxlKDgpICUxNCwg aTMyICU2NiwgaTY0ICU2NywgPDUgeCBpMzI+ICU2OCksICFkYmcgITE2MQotLSAgJTY5ID0gY2Fs bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMTRzd2l0Y2hFbmNvZGluZ0kxM1VuaWZvcm1Xcml0 ZXIxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAlNjIsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlMjIsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiAlMjMpLCAhZGJnICExNjIKLSsgICU2OSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5 aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYyLCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICUyMiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAl MjMpLCAhZGJnICExNjIKLSAgIGJyIGxhYmVsICU3MCwgIWRiZyAhMTYzCi0gCi0gOyA8bGFiZWw+ OjcwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTYwCi1A QCAtNTE4OCw3ICs1MTg4LDcgQEAgZGVmaW5lIGludGVybmFsIDw1IHggaTMyPiBAX1oxN2dldF9h dXhpbGlhcnlfc3RydigpICMyOCBjb21kYXQgIWRiZyAhMTc4IHsKLSB9Ci0gCi0gOyBGdW5jdGlv biBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyMTNWYXJ5aW5nV3JpdGVyRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5 dmFsIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE5MSB7Ci0rZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm8xNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcjEz VmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyKSAjMjUg Y29tZGF0ICFkYmcgITE5MSB7Ci0gICAlNCA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgJTUgPSBh bGxvY2EgJWNsYXNzLlVuaWZvcm1Xcml0ZXIsIGFsaWduIDMyCi0gICAlNiA9IGFsbG9jYSAlY2xh c3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLUBAIC01MTk3LDcgKzUxOTcsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dpdGNoRW5jb2RpbmdJMTNVbmlm b3JtV3JpdGVyMTNWYXJ5aQotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAl NSB0byBpOCosICFkYmcgITE5NgotICAgJTkgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiAlMSB0byBpOCosICFkYmcgITE5NgotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTY0KGk4KiBhbGlnbiAzMiAlOCwgaTgqIGFsaWduIDMyICU5LCBpNjQgNjQsIGkxIGZhbHNl KSwgIWRiZyAhMTk2LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTEwID0gY2FsbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdyaXRlckVF Yk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICU3LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2 YWwgYWxpZ24gMzIgJTUpLCAhZGJnICExOTgKLSsgICUxMCA9IGNhbGwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJFRWJOU184 RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlNywgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVj bGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSksICFkYmcgITE5OAotICAgYnIgaTEgJTEw LCBsYWJlbCAlMTYsIGxhYmVsICUxMSwgIWRiZyAhMTk5Ci0gCi0gOyA8bGFiZWw+OjExOiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC01MjA1LDcg KzUyMDUsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzE0c3dp dGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyMTNWYXJ5aQotICAgJTEzID0gYml0Y2FzdCAlY2xh c3MuVmFyeWluZ1dyaXRlciogJTYgdG8gaTgqLCAhZGJnICEyMDEKLSAgICUxNCA9IGJpdGNhc3Qg JWNsYXNzLlZhcnlpbmdXcml0ZXIqICUyIHRvIGk4KiwgIWRiZyAhMjAxCi0gICBjYWxsIHZvaWQg QGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUxMywgaTgqIGFsaWduIDMy ICUxNCwgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwMSwgIXRiYWEuc3RydWN0ICExOTcKLS0g ICUxNSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFy eWluZ0kxM1ZhcnlpbmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCAlMTIsICVj bGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNiksICFkYmcgITIwMgotKyAgJTE1 ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRWYXJ5aW5n STEzVmFyeWluZ1dyaXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0ICUxMiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlNiks ICFkYmcgITIwMgotICAgYnIgbGFiZWwgJTE2LCAhZGJnICExOTkKLSAKLSA7IDxsYWJlbD46MTY6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMTEsICUzCi1A QCAtNTI4MCw3ICs1MjgwLDcgQEAgZGVmaW5lIGludGVybmFsIHZvaWQgQF9aTjEzVmFyeWluZ1dy aXRlckMyRVJ5UlBLaml5dTJDTXZiNV9pKCVjbGFzcy5WYXJ5aW5nV3JpdGUKLSB9Ci0gCi0gOyBG dW5jdGlvbiBBdHRyczogbm9pbmxpbmUgbm91bndpbmQKLS1kZWZpbmUgZHNvX2xvY2FsIGkzMiBA X19udW1fY29yZXMoKSAjMjkgIWRiZyAhMjM2IHsKLStkZWZpbmUgaW50ZXJuYWwgaTMyIEBfX251 bV9jb3JlcygpICMyOSAhZGJnICEyMzYgewotICAgcmV0IGkzMiAtMSwgIWRiZyAhMjM3Ci0gfQot IAotQEAgLTg4NzAsNyArODg3MCw3IEBAIGRlY2xhcmUgZHNvX2xvY2FsIHZvaWQgQF9aTjdkZXRh aWxzMzdfX2NtX2ludHJpbnNpY19pbXBsX3N2bV9zY2F0dGVyX3dyaXRlSWlMaTFFCi0gZGVjbGFy ZSB2b2lkIEBsbHZtLmdlbnguc3ZtLnNjYXR0ZXIudjFpMS52MWk2NC52MWkzMig8MSB4IGkxPiwg aTMyLCA8MSB4IGk2ND4sIDwxIHggaTMyPikgIzI3Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3 YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VW5pZm9ybUkxM1VuaWZvcm1Xcml0ZXJF RWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFs IGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2NDUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlmb3JtSTEzVW5pZm9ybVdy aXRlckVFYk5TXzhFbmNvZGluZ0VUXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciog Ynl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyKSAjMjUgY29tZGF0ICFkYmcgITE2 NDUgewotICAgJTMgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU0ID0gYWxsb2NhICVjbGFzcy5V bmlmb3JtV3JpdGVyLCBhbGlnbiAzMgotICAgJTUgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg4NzksNyArODg3OSw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGluZzRVbmlm b3JtSTEzVW5pZm9ybVdyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICU0IHRvIGk4KiwgIWRiZyAhMTY0NwotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiAlMSB0byBpOCosICFkYmcgITE2NDcKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBp OC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTY0IDY0LCBpMSBm YWxzZSksICFkYmcgITE2NDcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRl ck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2lnbmV4dCAl NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVjdC5Qcmlu dEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAhMTY0OAot KyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNv ZGluZ0kxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3Mu VW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFs aWduIDEgJTUpLCAhZGJnICExNjQ4Ci0gICByZXQgaTEgJTksICFkYmcgITE2NDkKLSB9Ci0gCi1A QCAtODg4Nyw3ICs4ODg3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmlu dEluZm8yMnN3aXRjaEVuY29kaW5nNFVuaWZvcm1JMTNVbmlmb3JtV3JpdGUKLSBkZWNsYXJlIHZv aWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIG5vY2FwdHVyZSB3cml0ZW9ubHksIGk4 KiBub2NhcHR1cmUgcmVhZG9ubHksIGk2NCwgaTEpICMzMgotIAotIDsgRnVuY3Rpb24gQXR0cnM6 IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm8yMnN3aXRjaEVuY29kaW5nNFZhcnlpbmdJMTNWYXJ5aW5nV3Jp dGVyRUViTlNfOEVuY29kaW5nRVRfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBi eXZhbCBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJnICExNjUwIHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzIyc3dpdGNoRW5jb2Rpbmc0VmFyeWluZ0kxM1Zhcnlp bmdXcml0ZXJFRWJOU184RW5jb2RpbmdFVF8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMikgIzI1IGNvbWRhdCAhZGJn ICExNjUwIHsKLSAgICUzID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICAlNCA9IGFsbG9jYSAlY2xh c3MuVmFyeWluZ1dyaXRlciwgYWxpZ24gMzIKLSAgICU1ID0gYWxsb2NhICUic3RydWN0LlByaW50 SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIsIGFsaWduIDEKLUBAIC04ODk2LDEyICs4ODk2LDEyIEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvMjJzd2l0Y2hFbmNvZGlu ZzRWYXJ5aW5nSTEzVmFyeWluZ1dyaXRlCi0gICAlNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICU0IHRvIGk4KiwgIWRiZyAhMTY1MgotICAgJTggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5 aW5nV3JpdGVyKiAlMSB0byBpOCosICFkYmcgITE2NTIKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1j cHkucDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTcsIGk4KiBhbGlnbiAzMiAlOCwgaTY0IDY0 LCBpMSBmYWxzZSksICFkYmcgITE2NTIsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlOSA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWlu Z1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVF9UMF8oaTggc2ln bmV4dCAlNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU0LCAlInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICU1KSwgIWRiZyAh MTY1MwotKyAgJTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0 Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVu Y29kaW5nRVRfVDBfKGk4IHNpZ25leHQgJTYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCgl Y2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTQsICUic3RydWN0LlByaW50SW5mbzo6RW5j b2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIpIGFsaWduIDEgJTUpLCAhZGJnICExNjUzCi0gICByZXQgaTEgJTksICFkYmcgITE2NTQKLSB9 Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91bndpbmQK LS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRj aEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVF9UMF8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWdu IDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewotK2RlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhpOCBzaWduZXh0LCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyLCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludElu Zm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE2NTUgewot ICAgJTQgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhICVjbGFzcy5Vbmlmb3Jt V3JpdGVyLCBhbGlnbiAzMgotICAgJTYgPSBhbGxvY2EgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRVbmlmb3JtIiwgYWxpZ24gMQotQEAgLTg5MjQsNyArODkyNCw3IEBAIGRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNV bmlmb3JtV3JpdGVyCi0gICAlMjIgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlNSB0 byBpOCosICFkYmcgITE2NTcKLSAgICUyMyA9IGJpdGNhc3QgJWNsYXNzLlVuaWZvcm1Xcml0ZXIq ICUxIHRvIGk4KiwgIWRiZyAhMTY1NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAw aTguaTY0KGk4KiBhbGlnbiAzMiAlMjIsIGk4KiBhbGlnbiAzMiAlMjMsIGk2NCA2NCwgaTEgZmFs c2UpLCAhZGJnICExNjU3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI0ID0gY2FsbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZv cm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBz aWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU1LCAlInN0 cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICU2KSwgIWRi ZyAhMTY1OAotKyAgJTI0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZv cm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyMSwgJWNsYXNzLlVuaWZvcm1X cml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpF bmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlNiksICFkYmcgITE2NTgKLSAgIGJyIGkxICUyNCwg bGFiZWwgJTYwLCBsYWJlbCAlMjUsICFkYmcgITE2NTkKLSAKLSA7IDxsYWJlbD46MjU6ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMwotQEAgLTg5MzIsNyAr ODkzMiw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiAlNyB0byBpOCosICFkYmcgITE2NjEKLSAgICUyOCA9IGJpdGNhc3Qg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMTY2MQotICAgY2FsbCB2b2lk IEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAz MiAlMjgsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICExNjYxLCAhdGJhYS5zdHJ1Y3QgITE5Nwot LSAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlBy b3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNf OEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5 dmFsIGFsaWduIDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBi eXZhbCBhbGlnbiAxICU4KSwgIWRiZyAhMTY2MgotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvcm1Xcml0 ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0 ICUyNiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiAlNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSAlOCksICFkYmcg ITE2NjIKLSAgIGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITE2NjMKLSAK LSA7IDxsYWJlbD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJl ZHMgPSAlMjUKLUBAIC04OTQwLDcgKzg5NDAsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgot ICAgJTMyID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTkgdG8gaTgqLCAhZGJnICEx NjY1Ci0gICAlMzMgPSBiaXRjYXN0ICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiAlMSB0byBpOCosICFk YmcgITE2NjUKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCogYWxp Z24gMzIgJTMyLCBpOCogYWxpZ24gMzIgJTMzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAhMTY2 NSwgIXRiYWEuc3RydWN0ICExOTcKLS0gICUzNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzEsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlOSwgJSJzdHJ1Y3QuUHJpbnRJbmZv OjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAlMTApLCAhZGJnICExNjY2Ci0rICAl MzQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTMxLCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwo JWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZv cm0iKSBhbGlnbiAxICUxMCksICFkYmcgITE2NjYKLSAgIGJyIGkxICUzNCwgbGFiZWwgJTYwLCBs YWJlbCAlMzUsICFkYmcgITE2NjcKLSAKLSA7IDxsYWJlbD46MzU6ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMzAKLUBAIC04OTQ4LDcgKzg5NDgsNyBAQCBk ZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVu Y29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTM3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTExIHRvIGk4KiwgIWRiZyAhMTY2OQotICAgJTM4ID0gYml0Y2FzdCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjY5Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVt Y3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICUzNywgaTgqIGFsaWduIDMyICUzOCwgaTY0 IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NjksICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlMzkgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24g MzIgJTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGln biAxICUxMiksICFkYmcgITE2NzAKLSsgICUzOSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50 SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlmb3JtV3JpdGVyTlNfMTZF bmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMzYsICVj bGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIg JTExLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVj dC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxMiksICFkYmcgITE2NzAK LSAgIGJyIGkxICUzOSwgbGFiZWwgJTYwLCBsYWJlbCAlNDAsICFkYmcgITE2NzEKLSAKLSA7IDxs YWJlbD46NDA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAl MzUKLUBAIC04OTU2LDcgKzg5NTYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQy ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMTY3Mwot ICAgJTQzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICEx NjczCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMy ICU0MiwgaTgqIGFsaWduIDMyICU0MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2NzMsICF0 YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rp bmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3Mu VW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVu Y29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSsgICU0NCA9 IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0l4MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xh c3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0i KSBhbGlnbiAxICUxNCksICFkYmcgITE2NzQKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJl bCAlNDUsICFkYmcgITE2NzUKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC04OTY0LDcgKzg5NjQsNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTQ3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRl ciogJTE1IHRvIGk4KiwgIWRiZyAhMTY3NwotICAgJTQ4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9y bVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjc3Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5 LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU0NywgaTgqIGFsaWduIDMyICU0OCwgaTY0IDY0 LCBpMSBmYWxzZSksICFkYmcgITE2NzcsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNDkgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ eTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBf VDFfKGk4IHNpZ25leHQgJTQ2LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIg JTE1LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAx ICUxNiksICFkYmcgITE2NzgKLSsgICU0OSA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5m bzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNv ZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlNDYsICVjbGFz cy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3MuVW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE1 LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxICUxNiksICFkYmcgITE2NzgKLSAg IGJyIGkxICU0OSwgbGFiZWwgJTYwLCBsYWJlbCAlNTAsICFkYmcgITE2NzkKLSAKLSA7IDxsYWJl bD46NTA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDUK LUBAIC04OTcyLDcgKzg5NzIsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVW5pZm9ybVdyaXRlcgotICAgJTUyID0g Yml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTE3IHRvIGk4KiwgIWRiZyAhMTY4MQotICAg JTUzID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciogJTEgdG8gaTgqLCAhZGJnICExNjgx Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1 MiwgaTgqIGFsaWduIDMyICU1MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITE2ODEsICF0YmFh LnN0cnVjdCAhMTk3Ci0tICAlNTQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0 VW5pZm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVW5p Zm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFVuaWZvcm0iKiBieXZhbCBhbGlnbiAxICUxOCksICFkYmcgITE2ODIKLSsgICU1NCA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lkMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlNTEsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCglY2xhc3Mu VW5pZm9ybVdyaXRlcikgYWxpZ24gMzIgJTE3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBh bGlnbiAxICUxOCksICFkYmcgITE2ODIKLSAgIGJyIGkxICU1NCwgbGFiZWwgJTYwLCBsYWJlbCAl NTUsICFkYmcgITE2ODMKLSAKLSA7IDxsYWJlbD46NTU6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgcHJlZHMgPSAlNTAKLUBAIC04OTgwLDcgKzg5ODAsNyBAQCBkZWZpbmUg aW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5n STEzVW5pZm9ybVdyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdyaXRlciog JTE5IHRvIGk4KiwgIWRiZyAhMTY4NQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVW5pZm9ybVdy aXRlciogJTEgdG8gaTgqLCAhZGJnICExNjg1Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAw aTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTY0IDY0LCBp MSBmYWxzZSksICFkYmcgITE2ODUsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYx M1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUx OSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSAl MjApLCAhZGJnICExNjg2Ci0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29k aW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNz LlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAzMiAlMTks ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMTY4NgotICAg YnIgbGFiZWwgJTYwLCAhZGJnICExNjgzCi0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAlMzUs ICUzMCwgJTI1LCAlMwotQEAgLTg5ODksNyArODk4OSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNVbmlmb3JtV3Jp dGVyCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5v dW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJYjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5p Zm9ybUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0liMTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlm b3JtV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3Jt IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICExNjg4IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwotQEAgLTkwMTUsNyArOTAxNSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0 IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWIxM1VuaWZv Ci0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53 aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFh cHBseUlmUHJvcGVyRW5jb2RpbmdJaTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9y bUVFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVy KiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNjk3IHsKLStkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lp MTNVbmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3Jt V3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiog Ynl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1 IGNvbWRhdCAhZGJnICExNjk3IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9 IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRi YWEgITE5MwotQEAgLTkwNDEsNyArOTA0MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkx IEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1VuaWZvCi0g fQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5k Ci0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBs eUlmUHJvcGVyRW5jb2RpbmdJajEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVF RWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBi eXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzA2IHsKLStkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lqMTNV bmlmb3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8o aTggc2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3Jp dGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2 YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNv bWRhdCAhZGJnICExNzA2IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFs bG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEg ITE5MwotQEAgLTkwNjcsNyArOTA2Nyw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBf Wk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1VuaWZvCi0gfQot IAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0t ZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlm UHJvcGVyRW5jb2RpbmdJZjEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJO U184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZh bCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwg YWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzE1IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNVbmlm b3JtV3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTgg c2lnbmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVy KSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwo JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRh dCAhZGJnICExNzE1IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5 MwotQEAgLTkwOTMsNyArOTA5Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYxM1VuaWZvCi0gfQotIAot IDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVm aW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJv cGVyRW5jb2RpbmdJeDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184 RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxp Z24gMSkgIzI1IGNvbWRhdCAhZGJnICExNzI0IHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBp MSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l4MTNVbmlmb3Jt V3JpdGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2ln bmV4dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBh bGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJz dHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAh ZGJnICExNzI0IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBp OCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5Mwot QEAgLTkxMTksNyArOTExOSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJp bnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1VuaWZvCi0gfQotIAotIDsg RnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVy RW5jb2RpbmdJeTEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5j b2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICExNzMzIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBA X1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5MTNVbmlmb3JtV3Jp dGVyTlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4 dCwgJWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGln biAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1 Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJn ICExNzMzIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwg YWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAg LTkxNDUsNyArOTE0NSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1VuaWZvCi0gfQotIAotIDsgRnVu Y3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJZDEzVW5pZm9ybVdyaXRlck5TXzE2RW5jb2Rpbmc0VW5pZm9ybUVFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5Vbmlmb3JtV3JpdGVyKiBieXZhbCBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICExNzQyIHsKLStkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pO OVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNVbmlmb3JtV3JpdGVy TlNfMTZFbmNvZGluZzRVbmlmb3JtRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwg JWNsYXNzLlVuaWZvcm1Xcml0ZXIqIGJ5dmFsKCVjbGFzcy5Vbmlmb3JtV3JpdGVyKSBhbGlnbiAz MiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIiogYnl2YWwoJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRVbmlmb3JtIikgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEx NzQyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAlNSA9IGFsbG9jYSBpOCwgYWxp Z24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwgIXRiYWEgITE5MwotQEAgLTkx NzEsNyArOTE3MSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1VuaWZvCi0gfQotIAotIDsgRnVuY3Rp b24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5vdW53aW5kCi0tZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJUHYxM1VuaWZvcm1Xcml0ZXJOU18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwgYWxpZ24gMzIs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VW5pZm9ybSIqIGJ5dmFsIGFsaWduIDEpICMy NSBjb21kYXQgIWRiZyAhMTc1MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1VuaWZvcm1Xcml0ZXJO U18xNkVuY29kaW5nNFVuaWZvcm1FRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAl Y2xhc3MuVW5pZm9ybVdyaXRlciogYnl2YWwoJWNsYXNzLlVuaWZvcm1Xcml0ZXIpIGFsaWduIDMy LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKiBieXZhbCglInN0cnVjdC5Q cmludEluZm86OkVuY29kaW5nNFVuaWZvcm0iKSBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITE3 NTEgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1ID0gYWxsb2NhIGk4LCBhbGln biAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAhdGJhYSAhMTkzCi1AQCAtMTAw MTMsNyArMTAwMTMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgaTMyIEBfWk43ZGV0YWlsczE4X2NtX3By aW50X3R5cGVfb2NsSVB2RUVOU18xOFNIQURFUl9QUklOVEZfVFlQRQotIH0KLSAKLSA7IEZ1bmN0 aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vud2luZAotLWRlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNW YXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUX1QwXyhp OCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQg IWRiZyAhMjA2MSB7Ci0rZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlp bmdFRUViTlNfOEVuY29kaW5nRVRfVDBfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiBieXZhbCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5m bzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIpIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjA2MSB7Ci0gICAlNCA9IGFsbG9j YSBpOCwgYWxpZ24gMQotICAgJTUgPSBhbGxvY2EgJWNsYXNzLlZhcnlpbmdXcml0ZXIsIGFsaWdu IDMyCi0gICAlNiA9IGFsbG9jYSAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci LCBhbGlnbiAxCi1AQCAtMTAwMzYsNyArMTAwMzYsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRl cgotICAgJTIyID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTUgdG8gaTgqLCAhZGJn ICEyMDYzCi0gICAlMjMgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlMSB0byBpOCos ICFkYmcgITIwNjMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHkucDBpOC5wMGk4Lmk2NChpOCog YWxpZ24gMzIgJTIyLCBpOCogYWxpZ24gMzIgJTIzLCBpNjQgNjQsIGkxIGZhbHNlKSwgIWRiZyAh MjA2MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNf MTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEs ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAlNSwgJSJzdHJ1Y3QuUHJpbnRJ bmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlNiksICFkYmcgITIwNjQKLSsg ICUyNCA9IGNhbGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9w ZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhF bmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCAlMjEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZh bCglY2xhc3MuVmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTUsICUic3RydWN0LlByaW50SW5mbzo6 RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIpIGFsaWduIDEgJTYpLCAhZGJnICEyMDY0Ci0gICBiciBpMSAlMjQsIGxhYmVsICU2MCwg bGFiZWwgJTI1LCAhZGJnICEyMDY1Ci0gCi0gOyA8bGFiZWw+OjI1OiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTMKLUBAIC0xMDA0NCw3ICsxMDA0NCw3IEBA IGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNo RW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMjcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlNyB0byBpOCosICFkYmcgITIwNjcKLSAgICUyOCA9IGJpdGNhc3QgJWNsYXNzLlZh cnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA2NwotICAgY2FsbCB2b2lkIEBsbHZtLm1l bWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMjcsIGk4KiBhbGlnbiAzMiAlMjgsIGk2 NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDY3LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTI5ID0g Y2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWdu IDMyICU3LCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKiBieXZhbCBhbGln biAxICU4KSwgIWRiZyAhMjA2OAotKyAgJTI5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJ bmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUyNiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAl NywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3Qu UHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlOCksICFkYmcgITIwNjgKLSAg IGJyIGkxICUyOSwgbGFiZWwgJTYwLCBsYWJlbCAlMzAsICFkYmcgITIwNjkKLSAKLSA7IDxsYWJl bD46MzA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsgcHJlZHMgPSAlMjUK LUBAIC0xMDA1Miw3ICsxMDA1Miw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45 UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2RpbmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlMzIg PSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiAlOSB0byBpOCosICFkYmcgITIwNzEKLSAg ICUzMyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA3 MQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAl MzIsIGk4KiBhbGlnbiAzMiAlMzMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDcxLCAhdGJh YS5zdHJ1Y3QgITE5NwotLSAgJTM0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWoxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICUzMSwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICU5LCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxMCksICFkYmcgITIwNzIKLSsgICUzNCA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlMzEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0 VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFs aWduIDEgJTEwKSwgIWRiZyAhMjA3MgotICAgYnIgaTEgJTM0LCBsYWJlbCAlNjAsIGxhYmVsICUz NSwgIWRiZyAhMjA3MwotIAotIDsgPGxhYmVsPjozNTogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOyBwcmVkcyA9ICUzMAotQEAgLTEwMDYwLDcgKzEwMDYwLDcgQEAgZGVmaW5l IGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGlu Z0kxM1ZhcnlpbmdXcml0ZXIKLSAgICUzNyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIq ICUxMSB0byBpOCosICFkYmcgITIwNzUKLSAgICUzOCA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdX cml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA3NQotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5w MGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAlMzcsIGk4KiBhbGlnbiAzMiAlMzgsIGk2NCA2NCwg aTEgZmFsc2UpLCAhZGJnICEyMDc1LCAhdGJhYS5zdHJ1Y3QgITE5NwotLSAgJTM5ID0gY2FsbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWYx M1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1Qx XyhpOCBzaWduZXh0ICUzNiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUx MSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAl MTIpLCAhZGJnICEyMDc2Ci0rICAlMzkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82 ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJZjEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rp bmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTM2LCAlY2xhc3Mu VmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxMSwg JSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJp bnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSAlMTIpLCAhZGJnICEyMDc2Ci0gICBi ciBpMSAlMzksIGxhYmVsICU2MCwgbGFiZWwgJTQwLCAhZGJnICEyMDc3Ci0gCi0gOyA8bGFiZWw+ OjQwOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTM1Ci1A QCAtMTAwNjgsNyArMTAwNjgsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVBy aW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29kaW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTQyID0g Yml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEzIHRvIGk4KiwgIWRiZyAhMjA3OQotICAg JTQzID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDc5 Ci0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU0 MiwgaTgqIGFsaWduIDMyICU0MywgaTY0IDY0LCBpMSBmYWxzZSksICFkYmcgITIwNzksICF0YmFh LnN0cnVjdCAhMTk3Ci0tICAlNDQgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQgJTQxLCAlY2xhc3MuVmFy eWluZ1dyaXRlciogYnl2YWwgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29k aW5nNFZhcnlpbmciKiBieXZhbCBhbGlnbiAxICUxNCksICFkYmcgITIwODAKLSsgICU0NCA9IGNh bGwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0l4MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCAlNDEsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIgJTEzLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5n NFZhcnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBh bGlnbiAxICUxNCksICFkYmcgITIwODAKLSAgIGJyIGkxICU0NCwgbGFiZWwgJTYwLCBsYWJlbCAl NDUsICFkYmcgITIwODEKLSAKLSA7IDxsYWJlbD46NDU6ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDsgcHJlZHMgPSAlNDAKLUBAIC0xMDA3Niw3ICsxMDA3Niw3IEBAIGRlZmlu ZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDE0c3dpdGNoRW5jb2Rp bmdJMTNWYXJ5aW5nV3JpdGVyCi0gICAlNDcgPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5nV3JpdGVy KiAlMTUgdG8gaTgqLCAhZGJnICEyMDgzCi0gICAlNDggPSBiaXRjYXN0ICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiAlMSB0byBpOCosICFkYmcgITIwODMKLSAgIGNhbGwgdm9pZCBAbGx2bS5tZW1jcHku cDBpOC5wMGk4Lmk2NChpOCogYWxpZ24gMzIgJTQ3LCBpOCogYWxpZ24gMzIgJTQ4LCBpNjQgNjQs IGkxIGZhbHNlKSwgIWRiZyAhMjA4MywgIXRiYWEuc3RydWN0ICExOTcKLS0gICU0OSA9IGNhbGwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0l5 MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9U MV8oaTggc2lnbmV4dCAlNDYsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCBhbGlnbiAzMiAl MTUsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsIGFsaWduIDEg JTE2KSwgIWRiZyAhMjA4NAotKyAgJTQ5ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZv NmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29k aW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU0NiwgJWNsYXNz LlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAlMTUs ICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0LlBy aW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTE2KSwgIWRiZyAhMjA4NAotICAg YnIgaTEgJTQ5LCBsYWJlbCAlNjAsIGxhYmVsICU1MCwgIWRiZyAhMjA4NQotIAotIDsgPGxhYmVs Pjo1MDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOyBwcmVkcyA9ICU0NQot QEAgLTEwMDg0LDcgKzEwMDg0LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQ cmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1ZhcnlpbmdXcml0ZXIKLSAgICU1MiA9 IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxNyB0byBpOCosICFkYmcgITIwODcKLSAg ICU1MyA9IGJpdGNhc3QgJWNsYXNzLlZhcnlpbmdXcml0ZXIqICUxIHRvIGk4KiwgIWRiZyAhMjA4 NwotICAgY2FsbCB2b2lkIEBsbHZtLm1lbWNweS5wMGk4LnAwaTguaTY0KGk4KiBhbGlnbiAzMiAl NTIsIGk4KiBhbGlnbiAzMiAlNTMsIGk2NCA2NCwgaTEgZmFsc2UpLCAhZGJnICEyMDg3LCAhdGJh YS5zdHJ1Y3QgITE5NwotLSAgJTU0ID0gY2FsbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1MSwgJWNsYXNzLlZh cnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNv ZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24gMSAlMTgpLCAhZGJnICEyMDg4Ci0rICAlNTQgPSBj YWxsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJZDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQgJTUxLCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyICUxNywgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGlu ZzRWYXJ5aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikg YWxpZ24gMSAlMTgpLCAhZGJnICEyMDg4Ci0gICBiciBpMSAlNTQsIGxhYmVsICU2MCwgbGFiZWwg JTU1LCAhZGJnICEyMDg5Ci0gCi0gOyA8bGFiZWw+OjU1OiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICA7IHByZWRzID0gJTUwCi1AQCAtMTAwOTIsNyArMTAwOTIsNyBAQCBkZWZp bmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwxNHN3aXRjaEVuY29k aW5nSTEzVmFyeWluZ1dyaXRlcgotICAgJTU3ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWluZ1dyaXRl ciogJTE5IHRvIGk4KiwgIWRiZyAhMjA5MQotICAgJTU4ID0gYml0Y2FzdCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogJTEgdG8gaTgqLCAhZGJnICEyMDkxCi0gICBjYWxsIHZvaWQgQGxsdm0ubWVtY3B5 LnAwaTgucDBpOC5pNjQoaTgqIGFsaWduIDMyICU1NywgaTgqIGFsaWduIDMyICU1OCwgaTY0IDY0 LCBpMSBmYWxzZSksICFkYmcgITIwOTEsICF0YmFhLnN0cnVjdCAhMTk3Ci0tICAlNTkgPSBjYWxs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJ UHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0ICU1NiwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMy ICUxOSwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIiogYnl2YWwgYWxpZ24g MSAlMjApLCAhZGJnICEyMDkyCi0rICAlNTkgPSBjYWxsIHplcm9leHQgaTEgQF9aTjlQcmludElu Zm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJUHYxM1ZhcnlpbmdXcml0ZXJOU18xNkVu Y29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0ICU1NiwgJWNs YXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiAl MTksICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIqIGJ5dmFsKCUic3RydWN0 LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEgJTIwKSwgIWRiZyAhMjA5Mgot ICAgYnIgbGFiZWwgJTYwLCAhZGJnICEyMDg5Ci0gCi0gOyA8bGFiZWw+OjYwOiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA7IHByZWRzID0gJTU1LCAlNTAsICU0NSwgJTQwLCAl MzUsICUzMCwgJTI1LCAlMwotQEAgLTEwMTAxLDcgKzEwMTAxLDcgQEAgZGVmaW5lIGludGVybmFs IHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMTRzd2l0Y2hFbmNvZGluZ0kxM1Zhcnlp bmdXcml0ZXIKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhp bnQgbm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZk ZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0liMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGlu ZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlp bmdXcml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTQgewotK2RlZmluZSBp bnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVu Y29kaW5nSWIxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29k aW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNz LlZhcnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZh cnlpbmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGln biAxKSAjMjUgY29tZGF0ICFkYmcgITIwOTQgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEK LSAgICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGln biAxLCAhdGJhYSAhMTkzCi1AQCAtMTAxMjcsNyArMTAxMjcsNyBAQCBkZWZpbmUgaW50ZXJuYWwg emVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0li MTNWYXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGlu dCBub3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRl dGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5n NFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWlu Z1dyaXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEwMyB7Ci0rZGVmaW5lIGlu dGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5j b2RpbmdJaTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2Rp bmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3Mu VmFyeWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFy eWluZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWdu IDEpICMyNSBjb21kYXQgIWRiZyAhMjEwMyB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQot ICAgJTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWdu IDEsICF0YmFhICExOTMKLUBAIC0xMDE1Myw3ICsxMDE1Myw3IEBAIGRlZmluZSBpbnRlcm5hbCB6 ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSWkx M1ZhcnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50 IG5vdW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0 YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0 VmFyeWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5n V3JpdGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTEyIHsKLStkZWZpbmUgaW50 ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNv ZGluZ0lqMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGlu Z0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5W YXJ5aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5 aW5nIiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24g MSkgIzI1IGNvbWRhdCAhZGJnICEyMTEyIHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0g ICAlNSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24g MSwgIXRiYWEgITE5MwotQEAgLTEwMTc5LDcgKzEwMTc5LDcgQEAgZGVmaW5lIGludGVybmFsIHpl cm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJajEz VmFyeWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQg bm91bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRh aWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRW YXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdX cml0ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxMjEgewotK2RlZmluZSBpbnRl cm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29k aW5nSWYxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5n RVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZh cnlpbmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlp bmciKiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAx KSAjMjUgY29tZGF0ICFkYmcgITIxMjEgewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAg ICU1ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAx LCAhdGJhYSAhMTkzCi1AQCAtMTAyMDUsNyArMTAyMDUsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVy b2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lmMTNW YXJ5aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBu b3Vud2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFp bDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZh cnlpbmdFRUViTlNfOEVuY29kaW5nRVQwX1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dy aXRlciogYnl2YWwgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsIGFsaWduIDEpICMyNSBjb21kYXQgIWRiZyAhMjEzMCB7Ci0rZGVmaW5lIGludGVy bmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2Rp bmdJeDEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFyeWluZ0VFRWJOU184RW5jb2RpbmdF VDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3JpdGVyKiBieXZhbCglY2xhc3MuVmFy eWluZ1dyaXRlcikgYWxpZ24gMzIsICUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWlu ZyIqIGJ5dmFsKCUic3RydWN0LlByaW50SW5mbzo6RW5jb2Rpbmc0VmFyeWluZyIpIGFsaWduIDEp ICMyNSBjb21kYXQgIWRiZyAhMjEzMCB7Ci0gICAlNCA9IGFsbG9jYSBpMSwgYWxpZ24gMQotICAg JTUgPSBhbGxvY2EgaTgsIGFsaWduIDEKLSAgIHN0b3JlIGk4ICUwLCBpOCogJTUsIGFsaWduIDEs ICF0YmFhICExOTMKLUBAIC0xMDIzMSw3ICsxMDIzMSw3IEBAIGRlZmluZSBpbnRlcm5hbCB6ZXJv ZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5nSXgxM1Zh cnlpCi0gfQotIAotIDsgRnVuY3Rpb24gQXR0cnM6IGFsd2F5c2lubGluZSBpbmxpbmVoaW50IG5v dW53aW5kCi0tZGVmaW5lIGludGVybmFsIHplcm9leHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWls MjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFyeWluZ1dyaXRlck5TXzE2RW5jb2Rpbmc0VmFy eWluZ0VFRWJOU184RW5jb2RpbmdFVDBfVDFfKGk4IHNpZ25leHQsICVjbGFzcy5WYXJ5aW5nV3Jp dGVyKiBieXZhbCBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwgYWxpZ24gMSkgIzI1IGNvbWRhdCAhZGJnICEyMTM5IHsKLStkZWZpbmUgaW50ZXJu YWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGlu Z0l5MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICEyMTM5IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwotQEAgLTEwMjU3LDcgKzEwMjU3LDcgQEAgZGVmaW5lIGludGVybmFsIHplcm9l eHQgaTEgQF9aTjlQcmludEluZm82ZGV0YWlsMjFhcHBseUlmUHJvcGVyRW5jb2RpbmdJeTEzVmFy eWkKLSB9Ci0gCi0gOyBGdW5jdGlvbiBBdHRyczogYWx3YXlzaW5saW5lIGlubGluZWhpbnQgbm91 bndpbmQKLS1kZWZpbmUgaW50ZXJuYWwgemVyb2V4dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwy MWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNDggewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SWQxM1ZhcnlpbmdXcml0ZXJOU18xNkVuY29kaW5nNFZhcnlpbmdFRUViTlNfOEVuY29kaW5nRVQw X1QxXyhpOCBzaWduZXh0LCAlY2xhc3MuVmFyeWluZ1dyaXRlciogYnl2YWwoJWNsYXNzLlZhcnlp bmdXcml0ZXIpIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCglInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmciKSBhbGlnbiAxKSAj MjUgY29tZGF0ICFkYmcgITIxNDggewotICAgJTQgPSBhbGxvY2EgaTEsIGFsaWduIDEKLSAgICU1 ID0gYWxsb2NhIGk4LCBhbGlnbiAxCi0gICBzdG9yZSBpOCAlMCwgaTgqICU1LCBhbGlnbiAxLCAh dGJhYSAhMTkzCi1AQCAtMTAyODMsNyArMTAyODMsNyBAQCBkZWZpbmUgaW50ZXJuYWwgemVyb2V4 dCBpMSBAX1pOOVByaW50SW5mbzZkZXRhaWwyMWFwcGx5SWZQcm9wZXJFbmNvZGluZ0lkMTNWYXJ5 aQotIH0KLSAKLSA7IEZ1bmN0aW9uIEF0dHJzOiBhbHdheXNpbmxpbmUgaW5saW5laGludCBub3Vu d2luZAotLWRlZmluZSBpbnRlcm5hbCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIx YXBwbHlJZlByb3BlckVuY29kaW5nSVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5 aW5nRUVFYk5TXzhFbmNvZGluZ0VUMF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0 ZXIqIGJ5dmFsIGFsaWduIDMyLCAlInN0cnVjdC5QcmludEluZm86OkVuY29kaW5nNFZhcnlpbmci KiBieXZhbCBhbGlnbiAxKSAjMjUgY29tZGF0ICFkYmcgITIxNTcgewotK2RlZmluZSBpbnRlcm5h bCB6ZXJvZXh0IGkxIEBfWk45UHJpbnRJbmZvNmRldGFpbDIxYXBwbHlJZlByb3BlckVuY29kaW5n SVB2MTNWYXJ5aW5nV3JpdGVyTlNfMTZFbmNvZGluZzRWYXJ5aW5nRUVFYk5TXzhFbmNvZGluZ0VU MF9UMV8oaTggc2lnbmV4dCwgJWNsYXNzLlZhcnlpbmdXcml0ZXIqIGJ5dmFsKCVjbGFzcy5WYXJ5 aW5nV3JpdGVyKSBhbGlnbiAzMiwgJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5n IiogYnl2YWwoJSJzdHJ1Y3QuUHJpbnRJbmZvOjpFbmNvZGluZzRWYXJ5aW5nIikgYWxpZ24gMSkg IzI1IGNvbWRhdCAhZGJnICEyMTU3IHsKLSAgICU0ID0gYWxsb2NhIGkxLCBhbGlnbiAxCi0gICAl NSA9IGFsbG9jYSBpOCwgYWxpZ24gMQotICAgc3RvcmUgaTggJTAsIGk4KiAlNSwgYWxpZ24gMSwg IXRiYWEgITE5MwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9pc3BjL3RlbXBsYXRlIGIvc3JjcGtncy9p c3BjL3RlbXBsYXRlCmluZGV4IDljM2FjYjQyYTljZi4uNjhmZWQ1YTRjNjU5IDEwMDY0NAotLS0g YS9zcmNwa2dzL2lzcGMvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9pc3BjL3RlbXBsYXRlCkBAIC0x LDEwICsxLDEwIEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdpc3BjJwogcGtnbmFtZT1pc3BjCi12 ZXJzaW9uPTEuMTUuMAotcmV2aXNpb249MgordmVyc2lvbj0xLjE3LjAKK3JldmlzaW9uPTEKIGFy Y2hzPSJ4ODZfNjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKLWNvbmZpZ3VyZV9hcmdzPSItRElTUENf Tk9fRFVNUFM9T04gLURBUk1fRU5BQkxFRD1PRkYiCitjb25maWd1cmVfYXJncz0iLURJU1BDX05P X0RVTVBTPU9OIC1EQVJNX0VOQUJMRUQ9T0ZGIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgog aG9zdG1ha2VkZXBlbmRzPSJjbGFuZyBjbGFuZy10b29scy1leHRyYSBweXRob24zIG00IGJpc29u IGZsZXggbGx2bSIKIG1ha2VkZXBlbmRzPSJuY3Vyc2VzLWRldmVsIG5jdXJzZXMtbGlidGluZm8t ZGV2ZWwgemxpYi1kZXZlbCIKIHNob3J0X2Rlc2M9IkNvbXBpbGVyIGZvciBoaWdoLXBlcmZvcm1h bmNlIFNJTUQgcHJvZ3JhbW1pbmcgb24gdGhlIENQVSIKQEAgLTEyLDcgKzEyLDcgQEAgbWFpbnRh aW5lcj0iQW5kcmVhIEJyYW5jYWxlb25pIDxhYmNAcG9tcGVsLm1lPiIKIGxpY2Vuc2U9IkJTRC0z LUNsYXVzZSIKIGhvbWVwYWdlPSJodHRwczovL2lzcGMuZ2l0aHViLmlvIgogZGlzdGZpbGVzPSJo dHRwczovL2dpdGh1Yi5jb20vaXNwYy9pc3BjL2FyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6Igot Y2hlY2tzdW09MjY1OGZmMDBkYzA0NWFjOWZjZWZiZjZiZDI2ZGZmYWY3MjNiMDU5YTk0MmEyN2Rm OTFiYmI2MWJjNTAzYTI4NQorY2hlY2tzdW09MzdmYjEwNTVkNmM2YjIzMmUxMTJkOGQ1MDE0NWQ3 MjY4MjRlZDRkOGRhOTNhNzM5NjMxNWRjZWJhNmM3NmU2Mgogbm9jcm9zcz15ZXMKIG5vcGllPXll cwogCgpGcm9tIGMxYTNmOTdkOTk1ZDUwMTYyMDY5M2EwN2U1YmIzNDE4ZmY3YTAxNWQgTW9uIFNl cCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJh Pz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjQ3 OjI0ICswMDAwClN1YmplY3Q6IFtQQVRDSCAxOC8zMF0gemlnOiB1cGRhdGUgdG8gMC45LjEuCgot LS0KIC4uLi8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2YtRGNwdS5wYXRjaCB8IDQ4IC0t LS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvemlnL3RlbXBsYXRlICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICA4ICsrLS0KIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1MiBk ZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3ppZy9wYXRjaGVzLzAwMDEt c3RkLmJ1aWxkLWZpeC1oYW5kbGluZy1vZi1EY3B1LnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtn cy96aWcvcGF0Y2hlcy8wMDAxLXN0ZC5idWlsZC1maXgtaGFuZGxpbmctb2YtRGNwdS5wYXRjaCBi L3NyY3BrZ3MvemlnL3BhdGNoZXMvMDAwMS1zdGQuYnVpbGQtZml4LWhhbmRsaW5nLW9mLURjcHUu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxMDFmMjQ0NTliYi4uMDAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvemlnL3BhdGNoZXMvMDAwMS1zdGQuYnVpbGQtZml4LWhhbmRs aW5nLW9mLURjcHUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIDFl OGNkYWNlN2FkMzI0YTQyMjI4YWViNWNkNmViOGRkMTU0Mjk0MTMgTW9uIFNlcCAxNyAwMDowMDow MCAyMDAxCi1Gcm9tOiBJc2FhYyBGcmV1bmQgPGlmcmV1bmRAaWZyZXVuZC54eXo+Ci1EYXRlOiBU dWUsIDIxIFNlcCAyMDIxIDIxOjA2OjEwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN0ZC5idWls ZDogZml4IGhhbmRsaW5nIG9mIC1EY3B1Ci0KLUN1cnJlbnRseSAtRGNwdSBpcyBjb21wbGV0ZWx5 IGlnbm9yZWQgaWYgLUR0YXJnZXQgaXNuJ3QgcGFzc2VkIGFzIHdlbGwuCi1GdXJ0aGVyLCAtRGNw dT1iYXNlbGluZSBpcyBpZ25vcmVkIGV2ZW4gaWYgLUR0YXJnZXQ9bmF0aXZlIGlzIHBhc3NlZC4K LQotVGhpcyBwYXRjaCBmaXhlcyB0aGVzZSAyIGlzc3VlcywgYWx3YXlzIHJlc3BlY3RpbmcgdGhl IC1EY3B1IG9wdGlvbiBpZgotcHJlc2VudC4KLS0tLQotIGxpYi9zdGQvYnVpbGQuemlnIHwgMTMg KysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDYgZGVsZXRp b25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvc3RkL2J1aWxkLnppZyBiL2xpYi9zdGQvYnVpbGQu emlnCi1pbmRleCA5YjdlYmIxZjQuLmUzOTg1MjlmOSAxMDA2NDQKLS0tLSBhL2xpYi9zdGQvYnVp bGQuemlnCi0rKysgYi9saWIvc3RkL2J1aWxkLnppZwotQEAgLTY4NSw3ICs2ODUsMTEgQEAgcHVi IGNvbnN0IEJ1aWxkZXIgPSBzdHJ1Y3QgewotICAgICAgICAgKTsKLSAgICAgICAgIGNvbnN0IG1j cHUgPSBzZWxmLm9wdGlvbihbXWNvbnN0IHU4LCAiY3B1IiwgIlRhcmdldCBDUFUiKTsKLSAKLS0g ICAgICAgIGNvbnN0IHRyaXBsZSA9IG1heWJlX3RyaXBsZSBvcmVsc2UgcmV0dXJuIGFyZ3MuZGVm YXVsdF90YXJnZXQ7Ci0rICAgICAgICBpZiAobWF5YmVfdHJpcGxlID09IG51bGwgYW5kIG1jcHUg PT0gbnVsbCkgewotKyAgICAgICAgICAgIHJldHVybiBhcmdzLmRlZmF1bHRfdGFyZ2V0OwotKyAg ICAgICAgfQotKwotKyAgICAgICAgY29uc3QgdHJpcGxlID0gbWF5YmVfdHJpcGxlIG9yZWxzZSAi bmF0aXZlIjsKLSAKLSAgICAgICAgIHZhciBkaWFnczogQ3Jvc3NUYXJnZXQuUGFyc2VPcHRpb25z LkRpYWdub3N0aWNzID0gLnt9OwotICAgICAgICAgY29uc3Qgc2VsZWN0ZWRfdGFyZ2V0ID0gQ3Jv c3NUYXJnZXQucGFyc2UoLnsKLUBAIC0yNDUxLDExICsyNDU1LDggQEAgcHViIGNvbnN0IExpYkV4 ZU9ialN0ZXAgPSBzdHJ1Y3QgewotIAotICAgICAgICAgICAgIGlmIChwb3B1bGF0ZWRfY3B1X2Zl YXR1cmVzLmVxbChjcm9zcy5jcHUuZmVhdHVyZXMpKSB7Ci0gICAgICAgICAgICAgICAgIC8vIFRo ZSBDUFUgbmFtZSBhbG9uZSBpcyBzdWZmaWNpZW50LgotLSAgICAgICAgICAgICAgICAvLyBJZiBp dCBpcyB0aGUgYmFzZWxpbmUgQ1BVLCBubyBjb21tYW5kIGxpbmUgYXJncyBhcmUgcmVxdWlyZWQu Ci0tICAgICAgICAgICAgICAgIGlmIChjcm9zcy5jcHUubW9kZWwgIT0gc3RkLlRhcmdldC5DcHUu YmFzZWxpbmUoY3Jvc3MuY3B1LmFyY2gpLm1vZGVsKSB7Ci0tICAgICAgICAgICAgICAgICAgICB0 cnkgemlnX2FyZ3MuYXBwZW5kKCItbWNwdSIpOwotLSAgICAgICAgICAgICAgICAgICAgdHJ5IHpp Z19hcmdzLmFwcGVuZChjcm9zcy5jcHUubW9kZWwubmFtZSk7Ci0tICAgICAgICAgICAgICAgIH0K LSsgICAgICAgICAgICAgICAgdHJ5IHppZ19hcmdzLmFwcGVuZCgiLW1jcHUiKTsKLSsgICAgICAg ICAgICAgICAgdHJ5IHppZ19hcmdzLmFwcGVuZChjcm9zcy5jcHUubW9kZWwubmFtZSk7Ci0gICAg ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgdmFyIG1jcHVfYnVmZmVyID0gc3Rk LkFycmF5TGlzdCh1OCkuaW5pdChidWlsZGVyLmFsbG9jYXRvcik7Ci0gCi0tLSAKLTIuMzMuMQot CmRpZmYgLS1naXQgYS9zcmNwa2dzL3ppZy90ZW1wbGF0ZSBiL3NyY3BrZ3MvemlnL3RlbXBsYXRl CmluZGV4IDcyOGM1YTY0ZTlkZi4uNDgzMmM4OTM4MTYwIDEwMDY0NAotLS0gYS9zcmNwa2dzL3pp Zy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3ppZy90ZW1wbGF0ZQpAQCAtMSwxNyArMSwxNyBAQAog IyBUZW1wbGF0ZSBmaWxlIGZvciAnemlnJwogcGtnbmFtZT16aWcKLXZlcnNpb249MC44LjEKLXJl dmlzaW9uPTIKK3ZlcnNpb249MC45LjEKK3JldmlzaW9uPTEKIGFyY2hzPSJ4ODZfNjQqIGFhcmNo NjQqIgogYnVpbGRfc3R5bGU9Y21ha2UKIG1ha2VfY21kPW1ha2UKLW1ha2VkZXBlbmRzPSJjbGFu ZyBsbHZtMTIgbGxkLWRldmVsIgorbWFrZWRlcGVuZHM9ImNsYW5nIGxsdm0xMyBsbGQtZGV2ZWwi CiBzaG9ydF9kZXNjPSJQcm9ncmFtbWluZyBsYW5ndWFnZSBkZXNpZ25lZCBmb3Igcm9idXN0bmVz cywgb3B0aW1hbGl0eSwgYW5kIGNsYXJpdHkiCiBtYWludGFpbmVyPSJJc2FhYyBGcmV1bmQgPG1h aWxAaXNhYWNmcmV1bmQuY29tPiIKIGxpY2Vuc2U9Ik1JVCIKIGhvbWVwYWdlPSJodHRwczovL3pp Z2xhbmcub3JnIgogZGlzdGZpbGVzPSJodHRwczovL3ppZ2xhbmcub3JnL2Rvd25sb2FkLyR7dmVy c2lvbn0vemlnLSR7dmVyc2lvbn0udGFyLnh6IgotY2hlY2tzdW09OGM0MjhlMTRhMGE4OWNiN2Ex NWE2NzY4NDI0YTM3NDQyMjkyODU4Y2RiNjk1ZTJlYjUwM2ZhM2M3YmY0N2YxYQorY2hlY2tzdW09 MzhjZjRlODQ0ODFmNWZhY2M3NjZiYTcyNzgzZTc0NjJlMDhkNmQyOWE1ZDQ3ZTNiNzVjOGVlMzE0 MjQ4NTIxMAogbm9waWU9eWVzCiBub2Nyb3NzPXllcwogCgpGcm9tIGFlYTQ2MTVmOTE1MmU1ZmMz N2ExMzEzOTY4OGRiZTkxYzM3NDRlNzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/ VVRGLTg/cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29t PgpEYXRlOiBNb24sIDI4IEZlYiAyMDIyIDIxOjUyOjA3ICswMDAwClN1YmplY3Q6IFtQQVRDSCAx OS8zMF0gYmVpZ25ldDogcmVtb3ZlIHBhY2thZ2UKCi0tLQogc3JjcGtncy9iZWlnbmV0L3BhdGNo ZXMvY2xfdWludC5wYXRjaCAgICAgICAgIHwgIDIyIC0KIC4uLjQxOWEwMDA4ZTM4ZWYyZDlkMjU1 ZDllOWM3NGU5ZmJhMDg0Yi5wYXRjaCB8IDEzNCAtLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVz L2xsdm0wNi5wYXRjaCAgICAgICAgICB8ICAzMyAtCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9s bHZtMDgucGF0Y2ggICAgICAgICAgfCAgNTYgLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xs dm0wOS5wYXRjaCAgICAgICAgICB8IDExMSAtLS0KIHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2xs dm0xMC5wYXRjaCAgICAgICAgICB8IDM0NyAtLS0tLS0tCiBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMTEucGF0Y2ggICAgICAgICAgfCA5MzcgLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9sbHZtMTIucGF0Y2ggICAgICAgICAgfCAxMTUgLS0tCiBzcmNwa2dz L2JlaWduZXQvcGF0Y2hlcy9tdXNsLnBhdGNoICAgICAgICAgICAgfCAgMTEgLQogc3JjcGtncy9i ZWlnbmV0L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgIHwgIDIyIC0KIHNyY3BrZ3MvYmVp Z25ldC91cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBzcmNwa2dzL3JlbW92 ZWQtcGFja2FnZXMvdGVtcGxhdGUgICAgICAgICAgICAgfCAgIDEgKwogMTIgZmlsZXMgY2hhbmdl ZCwgMSBpbnNlcnRpb24oKyksIDE3ODkgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvY2xfdWludC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2UxYjI0MTlhMDAwOGUzOGVmMmQ5ZDI1NWQ5ZTljNzRl OWZiYTA4NGIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMDYucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMDgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMDkucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMTAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMTEucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMTIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0L3RlbXBsYXRl CiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9iZWlnbmV0L3VwZGF0ZQoKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2NsX3VpbnQucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQv cGF0Y2hlcy9jbF91aW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmJh MDBmMDRlOTUuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9jbF91 aW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotLS0tIGEvc3JjL2NsX2Fw aV9rZXJuZWwuYwkyMDE3LTA5LTIyIDEwOjA1OjIyLjAwMDAwMDAwMCArMDIwMAotKysrIGIvc3Jj L2NsX2FwaV9rZXJuZWwuYwkyMDIwLTAzLTI0IDE4OjI3OjQwLjE4NjQ4NTg4NyArMDEwMAotQEAg LTE1MSw3ICsxNTEsNyBAQAotICAgICAgICAgZml4ZWRfbG9jYWxfc3pbMF0gPSAxNjsKLSAgICAg ICAgIGZpeGVkX2xvY2FsX3N6WzFdID0gMTsKLSAgICAgICB9IGVsc2UgewotLSAgICAgICAgdWlu dCBqLCBtYXhEaW1TaXplID0gNjQgLyogZnJvbSA2ND8gKi8sIG1heEdyb3VwU2l6ZSA9IDI1Njsg Ly9NQVhfV09SS19HUk9VUF9TSVpFIG1heSB0b28gbGFyZ2UKLSsgICAgICAgIGNsX3VpbnQgaiwg bWF4RGltU2l6ZSA9IDY0IC8qIGZyb20gNjQ/ICovLCBtYXhHcm91cFNpemUgPSAyNTY7IC8vTUFY X1dPUktfR1JPVVBfU0laRSBtYXkgdG9vIGxhcmdlCi0gICAgICAgICBzaXplX3QgcmVhbEdyb3Vw U2l6ZSA9IDE7Ci0gICAgICAgICBmb3IgKGkgPSAwOyBpIDwgd29ya19kaW07IGkrKykgewotICAg ICAgICAgICBmb3IgKGogPSBtYXhEaW1TaXplOyBqID4gMTsgai0tKSB7Ci0tLS0gYS9zcmMvY2xf ZW5xdWV1ZS5jCTIwMTctMDktMjIgMTA6MDU6MjIuMDAwMDAwMDAwICswMjAwCi0rKysgYi9zcmMv Y2xfZW5xdWV1ZS5jCTIwMjAtMDMtMjQgMTg6MzA6MTIuMDMxNDc5ODMzICswMTAwCi1AQCAtNDk0 LDcgKzQ5NCw3IEBACi0gY2xfaW50IGNsX2VucXVldWVfc3ZtX2ZyZWUoZW5xdWV1ZV9kYXRhICpk YXRhLCBjbF9pbnQgc3RhdHVzKSB7Ci0gICBpbnQgaTsKLSAgIHZvaWQgKipwb2ludGVycyA9IGRh dGEtPnBvaW50ZXJzOwotLSAgdWludCBudW1fc3ZtX3B0cnMgPSBkYXRhLT5zaXplOwotKyAgY2xf dWludCBudW1fc3ZtX3B0cnMgPSBkYXRhLT5zaXplOwotICAgY2xfaW50IGVyciA9IENMX1NVQ0NF U1M7Ci0gCi0gICBpZiAoc3RhdHVzICE9IENMX0NPTVBMRVRFKQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9iZWlnbmV0L3BhdGNoZXMvZTFiMjQxOWEwMDA4ZTM4ZWYyZDlkMjU1ZDllOWM3NGU5ZmJhMDg0 Yi5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2UxYjI0MTlhMDAwOGUzOGVmMmQ5ZDI1 NWQ5ZTljNzRlOWZiYTA4NGIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhk ZTllNmUyZjA5My4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVzL2Ux YjI0MTlhMDAwOGUzOGVmMmQ5ZDI1NWQ5ZTljNzRlOWZiYTA4NGIucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxMzQgKzAsMCBAQAotRnJvbSBlMWIyNDE5YTAwMDhlMzhlZjJkOWQyNTVkOWU5Yzc0 ZTlmYmEwODRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlJlYmVjY2EgTi4gUGFs bWVyIiA8cmViZWNjYV9wYWxtZXJAem9oby5jb20+Ci1EYXRlOiBTYXQsIDIxIEp1bCAyMDE4IDIw OjA1OjU0ICswMTAwCi1TdWJqZWN0OiBBZGQgcHJlbGltaW5hcnkgTExWTSA3IHN1cHBvcnQKLQot VGhpcyBpcyBwcmVsaW1pbmFyeSBiZWNhdXNlIExMVk0gNyBoYXMgbm90IGJlZW4gcmVsZWFzZWQg eWV0OgotaXQgd2FzIHRlc3RlZCB3aXRoIHRoZSBzbmFwc2hvdCBmcm9tIERlYmlhbiBleHBlcmlt ZW50YWwgKHN2bjMzNjg5NCkuCi0KLTEuQ2hhbmdlIGxpbmtpbmcgb3JkZXIsIGFzIGNsYW5nQ29k ZUdlbiBub3cgbGlua3MgdG8gY2xhbmdGcm9udGVuZAotMi5QYXNzIHJlZmVyZW5jZXMgbm90IHBv aW50ZXJzIHRvIFdyaXRlQml0Y29kZVRvRmlsZSBhbmQgQ2xvbmVNb2R1bGUKLTMuQWRkIHRoZSBo ZWFkZXJzIHRoYXQgTG9vcFNpbXBsaWZ5SUQsIExDU1NBSUQgYW5kCi1zb21lIGNyZWF0ZSpQYXNz IGhhdmUgbW92ZWQgdG8KLTQuRGVmaW5lIG91ciBERUJVRyB3aGV0aGVyIG9yIG5vdCB3ZSBqdXN0 IHVuZGVmaW5lZCBMTFZNJ3MKLSh0aGVpcnMgaXMgbm93IExMVk1fREVCVUcsIGJ1dCB3ZSBuZXZl ciBhY3R1YWxseSB1c2UgaXQpCi0KLVNpZ25lZC1vZmYtYnk6IFJlYmVjY2EgTi4gUGFsbWVyIDxy ZWJlY2NhX3BhbG1lckB6b2hvLmNvbT4KLVJldmlld2VkLWJ5OiBZYW5nIFJvbmcgPHJvbmcuci55 YW5nQGludGVsLmNvbT4KLS0tLQotIENNYWtlL0ZpbmRMTFZNLmNtYWtlICAgICAgICAgICAgICAg ICAgICAgfCAyICstCi0gYmFja2VuZC9zcmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAgICAgICB8 IDggKysrKysrKysKLSBiYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwICAgICAgICAgIHwg NCArKysrCi0gYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUludGVnZXJzLmNwcCB8IDIgKy0K LSBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcCAgIHwgNCArKysrCi0gYmFj a2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcCAgICAgICB8IDQgKysrKwotIDYgZmlsZXMg Y2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBh L0NNYWtlL0ZpbmRMTFZNLmNtYWtlIGIvQ01ha2UvRmluZExMVk0uY21ha2UKLWluZGV4IDU0NTdm MjQuLmY4ODI1ODkgMTAwNjQ0Ci0tLS0gYS9DTWFrZS9GaW5kTExWTS5jbWFrZQotKysrIGIvQ01h a2UvRmluZExMVk0uY21ha2UKLUBAIC0xMTMsMTAgKzExMywxMCBAQCBtYWNybyhhZGRfb25lX2xp YiBuYW1lKQotIGVuZG1hY3JvKCkKLSAKLSAjQXNzdW1lIGNsYW5nIGxpYiBwYXRoIHNhbWUgYXMg bGx2bSBsaWIgcGF0aAotK2FkZF9vbmVfbGliKCJjbGFuZ0NvZGVHZW4iKQotIGFkZF9vbmVfbGli KCJjbGFuZ0Zyb250ZW5kIikKLSBhZGRfb25lX2xpYigiY2xhbmdTZXJpYWxpemF0aW9uIikKLSBh ZGRfb25lX2xpYigiY2xhbmdEcml2ZXIiKQotLWFkZF9vbmVfbGliKCJjbGFuZ0NvZGVHZW4iKQot IGFkZF9vbmVfbGliKCJjbGFuZ1NlbWEiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1N0YXRpY0FuYWx5 emVyRnJvbnRlbmQiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1N0YXRpY0FuYWx5emVyQ2hlY2tlcnMi KQotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2JhY2tlbmQvZ2VuX3Byb2dyYW0uY3BwIGIvYmFj a2VuZC9zcmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAKLWluZGV4IDI3NGM5OWMuLjQxNTkyMzQg MTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9iYWNrZW5kL2dlbl9wcm9ncmFtLmNwcAotKysrIGIv YmFja2VuZC9zcmMvYmFja2VuZC9nZW5fcHJvZ3JhbS5jcHAKLUBAIC00NTQsNyArNDU0LDExIEBA IG5hbWVzcGFjZSBnYmUgewotICNpZmRlZiBHQkVfQ09NUElMRVJfQVZBSUxBQkxFCi0gICAgICAg c3RkOjpzdHJpbmcgc3RyOwotICAgICAgIGxsdm06OnJhd19zdHJpbmdfb3N0cmVhbSBPUyhzdHIp OwotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgPj0gNwotKyAgICAgIGxsdm06OldyaXRlQml0Y29k ZVRvRmlsZSgqKChsbHZtOjpNb2R1bGUqKXByb2ctPm1vZHVsZSksIE9TKTsKLSsjZWxzZQotICAg ICAgIGxsdm06OldyaXRlQml0Y29kZVRvRmlsZSgobGx2bTo6TW9kdWxlKilwcm9nLT5tb2R1bGUs IE9TKTsKLSsjZW5kaWYKLSAgICAgICBzdGQ6OnN0cmluZyYgYmluX3N0ciA9IE9TLnN0cigpOwot ICAgICAgIGludCBsbHN6ID0gYmluX3N0ci5zaXplKCk7Ci0gICAgICAgKmJpbmFyeSA9IChjaGFy ICopbWFsbG9jKHNpemVvZihjaGFyKSAqIChsbHN6KzEpICk7Ci1AQCAtNTQ1LDcgKzU0OSwxMSBA QCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAm bW9kUmVmKTsKLSAgICAgICAgIHNyYyA9IGxsdm06OnVud3JhcChtb2RSZWYpOwotICAgICAgIH0K LSsjaWYgTExWTV9WRVJTSU9OX01BSk9SID49IDcKLSsgICAgICBsbHZtOjpNb2R1bGUqIGNsb25l ID0gbGx2bTo6Q2xvbmVNb2R1bGUoKnNyYykucmVsZWFzZSgpOwotKyNlbHNlCi0gICAgICAgbGx2 bTo6TW9kdWxlKiBjbG9uZSA9IGxsdm06OkNsb25lTW9kdWxlKHNyYykucmVsZWFzZSgpOwotKyNl bmRpZgotICAgICAgIGlmIChMTFZNTGlua01vZHVsZXMyKHdyYXAoZHN0KSwgd3JhcChjbG9uZSkp KSB7Ci0gI2VsaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1Ig Pj0gMzcKLSAgICAgICBpZiAoTExWTUxpbmtNb2R1bGVzKHdyYXAoZHN0KSwgd3JhcChzcmMpLCBM TFZNTGlua2VyUHJlc2VydmVTb3VyY2VfUmVtb3ZlZCwgJmVyck1zZykpIHsKLWRpZmYgLS1naXQg YS9iYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwIGIvYmFja2VuZC9zcmMvYmFja2VuZC9w cm9ncmFtLmNwcAotaW5kZXggYzM3YzU5NS4uYjM2ZjdiNCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQv c3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3Jh bS5jcHAKLUBAIC03OTQsNyArNzk0LDExIEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgIGxsdm06 OnJhd19mZF9vc3RyZWFtIG9zdHJlYW0gKGR1bXBTUElSQmluYXJ5TmFtZS5jX3N0cigpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciwgbGx2bTo6c3lzOjpmczo6Rl9O b25lKTsKLSAgICAgICBpZiAoIWVycikKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SPDcKLSAgICAg ICAgIGxsdm06OldyaXRlQml0Y29kZVRvRmlsZSgqb3V0X21vZHVsZSwgb3N0cmVhbSk7Ci0rI2Vs c2UKLSsgICAgICAgIGxsdm06OldyaXRlQml0Y29kZVRvRmlsZSgqKm91dF9tb2R1bGUsIG9zdHJl YW0pOwotKyNlbmRpZgotICAgICB9Ci0gI2VuZGlmCi0gICAgIHJldHVybiB0cnVlOwotZGlmZiAt LWdpdCBhL2JhY2tlbmQvc3JjL2xsdm0vRXhwYW5kTGFyZ2VJbnRlZ2Vycy5jcHAgYi9iYWNrZW5k L3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1pbmRleCA4NTE1ZGMxLi40YWVjNDRl IDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUludGVnZXJzLmNwcAot KysrIGIvYmFja2VuZC9zcmMvbGx2bS9FeHBhbmRMYXJnZUludGVnZXJzLmNwcAotQEAgLTk5LDgg Kzk5LDggQEAgdXNpbmcgbmFtZXNwYWNlIGxsdm07Ci0gCi0gI2lmZGVmIERFQlVHCi0gICAjdW5k ZWYgREVCVUcKLS0gICNkZWZpbmUgREVCVUcoLi4uKQotICNlbmRpZgotKyNkZWZpbmUgREVCVUco Li4uKQotIC8vIEJyZWFrIGluc3RydWN0aW9ucyB1cCBpbnRvIG5vIGxhcmdlciB0aGFuIDY0LWJp dCBjaHVua3MuCi0gc3RhdGljIGNvbnN0IHVuc2lnbmVkIGtDaHVua0JpdHMgPSA2NDsKLSBzdGF0 aWMgY29uc3QgdW5zaWduZWQga0NodW5rQnl0ZXMgPSBrQ2h1bmtCaXRzIC8gQ0hBUl9CSVQ7Ci1k aWZmIC0tZ2l0IGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2JpdGNvZGVfbGluay5jcHAgYi9iYWNr ZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcAotaW5kZXggZWY1NmU0Yy4uNGMzZTIw ZSAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCi0r KysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9saW5rLmNwcAotQEAgLTM0MCw3ICsz NDAsMTEgQEAgbmFtZXNwYWNlIGdiZQotICAgICAvKiBXZSB1c2UgYmVpZ25ldCdzIGJpdGNvZGUg YXMgZHN0IGJlY2F1c2UgaXQgd2lsbCBoYXZlIGEgbG90IG9mCi0gICAgICAgIGxhenkgZnVuY3Rp b25zIHdoaWNoIHdpbGwgbm90IGJlIGxvYWRlZC4gKi8KLSAjaWYgTExWTV9WRVJTSU9OX01BSk9S ICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzkKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9S ID49IDcKLSsgICAgbGx2bTo6TW9kdWxlICogbGlua2VkX21vZHVsZSA9IGxsdm06OkNsb25lTW9k dWxlKCoobGx2bTo6TW9kdWxlKiltb2QpLnJlbGVhc2UoKTsKLSsjZWxzZQotICAgICBsbHZtOjpN b2R1bGUgKiBsaW5rZWRfbW9kdWxlID0gbGx2bTo6Q2xvbmVNb2R1bGUoKGxsdm06Ok1vZHVsZSop bW9kKS5yZWxlYXNlKCk7Ci0rI2VuZGlmCi0gICAgIGlmKExMVk1MaW5rTW9kdWxlczIod3JhcChj bG9uZWRMaWIpLCB3cmFwKGxpbmtlZF9tb2R1bGUpKSkgewotICNlbHNlCi0gICAgIGNoYXIqIGVy cm9yTXNnOwotZGlmZiAtLWdpdCBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbmNsdWRlcy5ocHAg Yi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW5jbHVkZXMuaHBwCi1pbmRleCAxODQ1NTNhLi5mZmNj ZjAyIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcAotKysr IGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcAotQEAgLTg5LDYgKzg5LDEwIEBA Ci0gI2luY2x1ZGUgImxsdm0vQ29kZUdlbi9JbnRyaW5zaWNMb3dlcmluZy5oIgotIAotICNpbmNs dWRlICJsbHZtL1RyYW5zZm9ybXMvU2NhbGFyLmgiCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA+ PSA3Ci0rI2luY2x1ZGUgImxsdm0vVHJhbnNmb3Jtcy9VdGlscy5oIgotKyNpbmNsdWRlICJsbHZt L1RyYW5zZm9ybXMvSW5zdENvbWJpbmUvSW5zdENvbWJpbmUuaCIKLSsjZW5kaWYKLSAjaW5jbHVk ZSAibGx2bS9NQy9NQ0FzbUluZm8uaCIKLSAjaW5jbHVkZSAibGx2bS9NQy9NQ0NvbnRleHQuaCIK LSAjaW5jbHVkZSAibGx2bS9NQy9NQ0luc3RySW5mby5oIgotLS0gCi1jZ2l0IHYxLjEKLQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTA2LnBhdGNoIGIvc3JjcGtncy9i ZWlnbmV0L3BhdGNoZXMvbGx2bTA2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAzMzg5ZTY2YzgyZGYuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMDYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Tb3VyY2U6IEFy Y2ggTGludXgKLVVwc3RyZWFtOiB1bmtub3duCi1SZWFzb246IGZpeGVzIGxsdm02IGNvbXBpbGF0 aW9uCi0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90b19nZW4uY3BwCTIwMTctMTAtMjQg MDk6MDQ6NDguMDAwMDAwMDAwICswMzAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9f Z2VuLmNwcAkyMDE4LTAzLTE2IDE2OjA4OjU0LjY2OTk2MzgyNCArMDIwMAotQEAgLTMyMiw3ICsz MjIsMTEgQEAgbmFtZXNwYWNlIGdiZQotICAgICBEYXRhTGF5b3V0IERMKCZtb2QpOwotICAgICAK LSAgICAgZ2JlRGlhZ25vc3RpY0NvbnRleHQgZGM7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA+ PSA2Ci0rICAgIG1vZC5nZXRDb250ZXh0KCkuc2V0RGlhZ25vc3RpY0hhbmRsZXJDYWxsQmFjaygm Z2JlRGlhZ25vc3RpY0hhbmRsZXIsJmRjKTsKLSsjZWxzZQotICAgICBtb2QuZ2V0Q29udGV4dCgp LnNldERpYWdub3N0aWNIYW5kbGVyKCZnYmVEaWFnbm9zdGljSGFuZGxlciwmZGMpOwotKyNlbmRp ZgotIAotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+ PSAzNwotICAgICBtb2Quc2V0RGF0YUxheW91dChETCk7Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZt L2xsdm1fdW5yb2xsLmNwcAkyMDE3LTEwLTI0IDA5OjA0OjQ4LjAwMDAwMDAwMCArMDMwMAotKysr IGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Vucm9sbC5jcHAJMjAxOC0wMy0xNiAxNjowOTo0Ny43 MzY0MDM1NTcgKzAyMDAKLUBAIC0yMDUsNyArMjA1LDkgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAg ICAgICAgIGlmIChwYXJlbnRUcmlwQ291bnQgIT0gMCAmJiBjdXJyVHJpcENvdW50ICogcGFyZW50 VHJpcENvdW50ID4gMzIpIHsKLSAgICAgICAgICAgICAvL0Rvbid0IGNoYW5nZSB0aGUgdW5yb2xs SUQgaWYgZG9lc24ndCBmb3JjZSB1bnJvbGwuCi0gICAgICAgICAgICAgLy9zZXRVbnJvbGxJRChw YXJlbnRMLCBmYWxzZSk7Ci0tI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJT SU9OX01JTk9SID49IDM4Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA+PSA2Ci0rICAgICAgICAg ICAgbG9vcEluZm8uZXJhc2UocGFyZW50TCk7Ci0rI2VsaWYgTExWTV9WRVJTSU9OX01BSk9SICog MTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzgKLSAgICAgICAgICAgICBsb29wSW5mby5tYXJr QXNSZW1vdmVkKHBhcmVudEwpOwotICNlbHNlCi0gICAgICAgICAgICAgTFBNLmRlbGV0ZUxvb3BG cm9tUXVldWUocGFyZW50TCk7Ci1Pbmx5IGluIEJlaWduZXQtMS4zLjItU291cmNlOiBidWlsZAot CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDgucGF0Y2ggYi9zcmNw a2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGEwYzVlN2E3YzRmNy4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvYmVpZ25ldC9w YXRjaGVzL2xsdm0wOC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20g NzVjMTUyNTk5YTdjMTczOWU2ZGFkY2RiOWIzNzdhY2Y3ZTQ0ZDljZiBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKLUZyb206IEphbiBCZWljaCA8amJlaWNoQEZyZWVCU0Qub3JnPgotRGF0ZTogV2Vk LCAzMCBKYW4gMjAxOSAxMjo0MjozNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBsYW5nL2JlaWdu ZXQ6IHVuYnJlYWsgd2l0aCBsbHZtODAKLQotUmVncmVzc2VkIGJ5IGh0dHBzOi8vZ2l0aHViLmNv bS9sbHZtL2xsdm0tcHJvamVjdC9jb21taXQvNzIxZDk1NzEzYTllCi0KLXVuYWJsZSB0byBsb2Fk IC91c3IvbG9jYWwvbGliL2JlaWduZXQvL2xpYmdiZWludGVycC5zbyB3aGljaCBpcyBwYXJ0IG9m IHRoZSBkcml2ZXIsIHBsZWFzZSBjaGVjayEKLWxkLWVsZi5zby4xOiAvdXNyL2xvY2FsL2xpYi9i ZWlnbmV0Ly9saWJnYmVpbnRlcnAuc286IFVuZGVmaW5lZCBzeW1ib2wgIl9aTjRsbHZtMjREaXNh YmxlQUJJQnJlYWtpbmdDaGVja3NFIgotCi1SZWdyZXNzZWQgYnkgaHR0cHM6Ly9naXRodWIuY29t L2xsdm0vbGx2bS1wcm9qZWN0L2NvbW1pdC80YTJkNThlMTZhY2MKLQotYmFja2VuZC9zcmMvbGx2 bS9sbHZtX2dlbl9iYWNrZW5kLmNwcDozMDc2OjU6IGVycm9yOgotICAgICAgdW5rbm93biB0eXBl IG5hbWUgJ1Rlcm1pbmF0b3JJbnN0JwotICAgIFRlcm1pbmF0b3JJbnN0ICp0ZXJtID0gYmItPmdl dFRlcm1pbmF0b3IoKTsKLSAgICBeCi1iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQu Y3BwOjMwODM6NTogZXJyb3I6Ci0gICAgICB1bmtub3duIHR5cGUgbmFtZSAnVGVybWluYXRvcklu c3QnCi0gICAgVGVybWluYXRvckluc3QgKnRlcm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotICAg IF4KLQotLS0tIGEvYmFja2VuZC9zcmMvQ01ha2VMaXN0cy50eHQJMjAxNy0wOS0yMiAwODowNToy MiBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTY4LDYgKzE2OCw3 IEBAIGFkZF9kZXBlbmRlbmNpZXMoZ2JlIGJlaWduZXRfYml0Y29kZSkKLSBlbmRpZiAoTk9UIChV U0VfU1RBTkRBTE9ORV9HQkVfQ09NUElMRVIgU1RSRVFVQUwgInRydWUiKSkKLSAKLSBhZGRfbGli cmFyeShnYmVpbnRlcnAgU0hBUkVEIGdiZV9iaW5faW50ZXJwcmV0ZXIuY3BwKQotK3RhcmdldF9s aW5rX2xpYnJhcmllcyhnYmVpbnRlcnAgJHtMTFZNX01PRFVMRV9MSUJTfSkKLSAKLSBpZiAoTExW TV9WRVJTSU9OX05PRE9UIFZFUlNJT05fRVFVQUwgMzQpCi0gICBmaW5kX2xpYnJhcnkoVEVSTUlO Rk8gTkFNRVMgdGluZm8gbmN1cnNlcykKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5f YmFja2VuZC5jcHAJMjAxNy0xMC0yNCAwNjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9nZW5fYmFja2VuZC5jcHAKLUBAIC0zMDczLDE0ICszMDczLDIyIEBAIG5hbWVzcGFj ZSBnYmUKLSAKLSAKLSAgIHN0YXRpYyB1bnNpZ25lZCBnZXRDaGlsZE5vKEJhc2ljQmxvY2sgKmJi KSB7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8IDgKLSAgICAgVGVybWluYXRvckluc3QgKnRl cm0gPSBiYi0+Z2V0VGVybWluYXRvcigpOwotKyNlbHNlCi0rICAgIEluc3RydWN0aW9uICp0ZXJt ID0gYmItPmdldFRlcm1pbmF0b3IoKTsKLSsjZW5kaWYKLSAgICAgcmV0dXJuIHRlcm0tPmdldE51 bVN1Y2Nlc3NvcnMoKTsKLSAgIH0KLSAKLSAgIC8vIHJldHVybiBOVUxMIGlmIGluZGV4IG91dC1y YW5nZSBvZiBjaGlsZHJlbiBudW1iZXIKLSAgIHN0YXRpYyBCYXNpY0Jsb2NrICpnZXRDaGlsZFBv c3NpYmxlKEJhc2ljQmxvY2sgKmJiLCB1bnNpZ25lZCBpbmRleCkgewotIAotKyNpZiBMTFZNX1ZF UlNJT05fTUFKT1IgPCA4Ci0gICAgIFRlcm1pbmF0b3JJbnN0ICp0ZXJtID0gYmItPmdldFRlcm1p bmF0b3IoKTsKLSsjZWxzZQotKyAgICBJbnN0cnVjdGlvbiAqdGVybSA9IGJiLT5nZXRUZXJtaW5h dG9yKCk7Ci0rI2VuZGlmCi0gICAgIHVuc2lnbmVkIGNoaWxkTm8gPSB0ZXJtLT5nZXROdW1TdWNj ZXNzb3JzKCk7Ci0gICAgIEJhc2ljQmxvY2sgKmNoaWxkID0gTlVMTDsKLSAgICAgaWYoaW5kZXgg PCBjaGlsZE5vKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDku cGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMDkucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGFjYWVjZWFiYjZkZC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0wOS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMSAr MCwwIEBACi1Tb3VyY2U6IEZyZWVCU0QgKyBxNjYKLQotTW9zdGx5IEZyZWVCU0Qgb3RoZXIgdGhh biBGaW5kTExWTS5jbWFrZSBjaGFuZ2VzLgotTGlua2luZyBhZ2FpbnN0IGNsYW5nLWNwcCBkb2Vz IG5vdCB3b3JrIGZvciB1cy4KLQotLS0tIGEvQ01ha2UvRmluZExMVk0uY21ha2UKLSsrKyBiL0NN YWtlL0ZpbmRMTFZNLmNtYWtlCi1AQCAtMTQwLDYgKzE0MCw3IEBAIGFkZF9vbmVfbGliKCJjbGFu Z1N0YXRpY0FuYWx5emVyQ29yZSIpCi0gYWRkX29uZV9saWIoImNsYW5nQW5hbHlzaXMiKQotIGFk ZF9vbmVfbGliKCJjbGFuZ0VkaXQiKQotIGFkZF9vbmVfbGliKCJjbGFuZ0FTVCIpCi0rYWRkX29u ZV9saWIoImNsYW5nQVNUTWF0Y2hlcnMiKQotIGFkZF9vbmVfbGliKCJjbGFuZ1BhcnNlIikKLSBh ZGRfb25lX2xpYigiY2xhbmdTZW1hIikKLSBhZGRfb25lX2xpYigiY2xhbmdMZXgiKQotLS0tIGEv YmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dlcmluZy5jcHAJMjAxNy0xMC0yNCAw NjowNDo0OCBVVEMKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9pbnRyaW5zaWNfbG93ZXJp bmcuY3BwCi1AQCAtNzcsNyArNzcsMTEgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgICBzdGQ6 OnZlY3RvcjxUeXBlICo+IFBhcmFtVHlzOwotICAgICAgICAgZm9yIChWYWx1ZSoqIEkgPSBBcmdC ZWdpbjsgSSAhPSBBcmdFbmQ7ICsrSSkKLSAgICAgICAgICAgUGFyYW1UeXMucHVzaF9iYWNrKCgq SSktPmdldFR5cGUoKSk7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJT SU9OX01JTk9SID49IDkwCi0rICAgICAgICBGdW5jdGlvbkNhbGxlZSBGQ2FjaGUgPSBNLT5nZXRP ckluc2VydEZ1bmN0aW9uKE5ld0ZuLAotKyNlbHNlCi0gICAgICAgICBDb25zdGFudCogRkNhY2hl ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbihOZXdGbiwKLSsjZW5kaWYKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25UeXBlOjpnZXQoUmV0VHksIFBhcmFt VHlzLCBmYWxzZSkpOwotIAotICAgICAgICAgSVJCdWlsZGVyPD4gQnVpbGRlcihDSS0+Z2V0UGFy ZW50KCksIEJhc2ljQmxvY2s6Oml0ZXJhdG9yKENJKSk7Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZt L2xsdm1fc2FtcGxlcl9maXguY3BwCTIwMTctMTAtMjQgMDY6MDQ6NDggVVRDCi0rKysgYi9iYWNr ZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXguY3BwCi1AQCAtODIsNyArODIsMTEgQEAgbmFt ZXNwYWNlIGdiZSB7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9O X01JTk9SID49IDQwCi0gICAgICAgICAgIE1vZHVsZSAqTSA9IEktPmdldFBhcmVudCgpLT5nZXRQ YXJlbnQoKS0+Z2V0UGFyZW50KCk7Ci0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExW TV9WRVJTSU9OX01JTk9SID49IDUwCi0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExW TV9WRVJTSU9OX01JTk9SID49IDkwCi0rICAgICAgICAgIEZ1bmN0aW9uQ2FsbGVlIHNhbXBsZXJD dnQgPSBNLT5nZXRPckluc2VydEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBp MzJUeSwgSS0+Z2V0T3BlcmFuZCgwKS0+Z2V0VHlwZSgpKTsKLSsjZWxzZQotICAgICAgICAgICBW YWx1ZSogc2FtcGxlckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1w bGVyX3RvX2ludCIsIGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCkpOwotKyNlbmRp ZgotICNlbHNlCi0gICAgICAgICAgIFZhbHVlKiBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRG dW5jdGlvbigiX19nZW5fb2NsX3NhbXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQo MCktPmdldFR5cGUoKSwgbnVsbHB0cik7Ci0gI2VuZGlmCi1AQCAtMTI0LDcgKzEyOCwxMSBAQCBu YW1lc3BhY2UgZ2JlIHsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJ T05fTUlOT1IgPj0gNDAKLSAgICAgICAgICAgTW9kdWxlICpNID0gSS0+Z2V0UGFyZW50KCktPmdl dFBhcmVudCgpLT5nZXRQYXJlbnQoKTsKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBM TFZNX1ZFUlNJT05fTUlOT1IgPj0gNTAKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBM TFZNX1ZFUlNJT05fTUlOT1IgPj0gOTAKLSsgICAgICAgICAgRnVuY3Rpb25DYWxsZWUgc2FtcGxl ckN2dCA9IE0tPmdldE9ySW5zZXJ0RnVuY3Rpb24oIl9fZ2VuX29jbF9zYW1wbGVyX3RvX2ludCIs IGkzMlR5LCBJLT5nZXRPcGVyYW5kKDApLT5nZXRUeXBlKCkpOwotKyNlbHNlCi0gICAgICAgICAg IFZhbHVlKiBzYW1wbGVyQ3Z0ID0gTS0+Z2V0T3JJbnNlcnRGdW5jdGlvbigiX19nZW5fb2NsX3Nh bXBsZXJfdG9faW50IiwgaTMyVHksIEktPmdldE9wZXJhbmQoMCktPmdldFR5cGUoKSk7Ci0rI2Vu ZGlmCi0gI2Vsc2UKLSAgICAgICAgICAgVmFsdWUqIHNhbXBsZXJDdnQgPSBNLT5nZXRPckluc2Vy dEZ1bmN0aW9uKCJfX2dlbl9vY2xfc2FtcGxlcl90b19pbnQiLCBpMzJUeSwgSS0+Z2V0T3BlcmFu ZCgwKS0+Z2V0VHlwZSgpLCBudWxscHRyKTsKLSAjZW5kaWYKLS0tLSBhL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9wcm9maWxpbmcuY3BwCTIwMTctMTAtMjQgMDY6MDQ6NDggVVRDCi0rKysgYi9iYWNr ZW5kL3NyYy9sbHZtL2xsdm1fcHJvZmlsaW5nLmNwcAotQEAgLTE2MywxMCArMTYzLDE4IEBAIG5h bWVzcGFjZSBnYmUKLSAgICAgICAvLyBfX2dlbl9vY2xfc3RvcmVfdGltZXN0YW1wKGludCBudGgs IGludCB0eXBlKTsKLSAgICAgICBWYWx1ZSAqQXJnc1syXSA9IHtDb25zdGFudEludDo6Z2V0KGlu dFR5LCBwb2ludE51bSsrKSwgQ29uc3RhbnRJbnQ6OmdldChpbnRUeSwgcHJvZmlsaW5nVHlwZSl9 OwotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA1 MAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5 MAotKyAgICAgIGJ1aWxkZXItPkNyZWF0ZUNhbGwobW9kdWxlLT5nZXRPckluc2VydEZ1bmN0aW9u KAotKyNlbHNlCi0gICAgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbChjYXN0PGxsdm06OkZ1bmN0aW9u Pihtb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0rI2VuZGlmCi0gICAgICAgICAgICAgICAi X19nZW5fb2NsX2NhbGNfdGltZXN0YW1wIiwgVHlwZTo6Z2V0Vm9pZFR5KG1vZHVsZS0+Z2V0Q29u dGV4dCgpKSwKLSAgICAgICAgICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5KG1vZHVsZS0+ Z2V0Q29udGV4dCgpKSwKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJ T05fTUlOT1IgPj0gOTAKLSsgICAgICAgICAgICAgIEludGVnZXJUeXBlOjpnZXRJbnQzMlR5KG1v ZHVsZS0+Z2V0Q29udGV4dCgpKSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAgIEludGVnZXJUeXBl OjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSkpLAotKyNlbmRpZgotICAgICAgICAg ICAgICAgQXJyYXlSZWY8VmFsdWUqPihBcmdzKSk7Ci0gI2Vsc2UKLSAgICAgICBidWlsZGVyLT5D cmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1vZHVsZS0+Z2V0T3JJbnNlcnRGdW5jdGlv bigKLUBAIC0xODUsMTAgKzE5MywxOCBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIFZhbHVlICpBcmdz MlsyXSA9IHtwcm9maWxpbmdCdWYsIENvbnN0YW50SW50OjpnZXQoaW50VHksIHByb2ZpbGluZ1R5 cGUpfTsKLSAKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlO T1IgPj0gNTAKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlO T1IgPj0gOTAKLSsgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbChtb2R1bGUtPmdldE9ySW5zZXJ0RnVu Y3Rpb24oCi0rI2Vsc2UKLSAgICAgYnVpbGRlci0+Q3JlYXRlQ2FsbChjYXN0PGxsdm06OkZ1bmN0 aW9uPihtb2R1bGUtPmdldE9ySW5zZXJ0RnVuY3Rpb24oCi0rI2VuZGlmCi0gICAgICAgICAgICAg Il9fZ2VuX29jbF9zdG9yZV9wcm9maWxpbmciLCBUeXBlOjpnZXRWb2lkVHkobW9kdWxlLT5nZXRD b250ZXh0KCkpLAotICAgICAgICAgICAgIHB0clR5LAotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1Ig KiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA5MAotKyAgICAgICAgICAgIEludGVnZXJUeXBl OjpnZXRJbnQzMlR5KG1vZHVsZS0+Z2V0Q29udGV4dCgpKSksCi0rI2Vsc2UKLSAgICAgICAgICAg ICBJbnRlZ2VyVHlwZTo6Z2V0SW50MzJUeShtb2R1bGUtPmdldENvbnRleHQoKSkpKSwKLSsjZW5k aWYKLSAgICAgICAgICAgICBBcnJheVJlZjxWYWx1ZSo+KEFyZ3MyKSk7Ci0gI2Vsc2UKLSAgICAg YnVpbGRlci0+Q3JlYXRlQ2FsbChjYXN0PGxsdm06OkZ1bmN0aW9uPihtb2R1bGUtPmdldE9ySW5z ZXJ0RnVuY3Rpb24oCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZGV2aWNlX2VucXVldWUu Y3BwCTIwMTctMTAtMjQgMDY6MDQ6NDggVVRDCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f ZGV2aWNlX2VucXVldWUuY3BwCi1AQCAtMzk4LDggKzM5OCwxMyBAQCBuYW1lc3BhY2UgZ2JlIHsK LSAgICAgICAgICAgICAgIHN0ZDo6dmVjdG9yPFR5cGUgKj4gUGFyYW1UeXM7Ci0gICAgICAgICAg ICAgICBmb3IgKFZhbHVlKiogaXRlciA9IGFyZ3MuYmVnaW4oKTsgaXRlciAhPSBhcmdzLmVuZCgp OyArK2l0ZXIpCi0gICAgICAgICAgICAgICAgIFBhcmFtVHlzLnB1c2hfYmFjaygoKml0ZXIpLT5n ZXRUeXBlKCkpOwotKyNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9N SU5PUiA+PSA5MAotKyAgICAgICAgICAgICAgQ2FsbEluc3QqIG5ld0NJID0gYnVpbGRlci5DcmVh dGVDYWxsKG1vZC0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiX19nZW5fZW5xdWV1ZV9rZXJuZWxfc2xtIiwgRnVuY3Rpb25UeXBlOjpnZXQoaW50 VHksIFBhcmFtVHlzLCBmYWxzZSkpLCBhcmdzKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgQ2Fs bEluc3QqIG5ld0NJID0gYnVpbGRlci5DcmVhdGVDYWxsKGNhc3Q8bGx2bTo6RnVuY3Rpb24+KG1v ZC0+Z2V0T3JJbnNlcnRGdW5jdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi X19nZW5fZW5xdWV1ZV9rZXJuZWxfc2xtIiwgRnVuY3Rpb25UeXBlOjpnZXQoaW50VHksIFBhcmFt VHlzLCBmYWxzZSkpKSwgYXJncyk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgICBDSS0+cmVwbGFj ZUFsbFVzZXNXaXRoKG5ld0NJKTsKLSAgICAgICAgICAgICAgIGRlYWRJbnNuU2V0Lmluc2VydChD SSk7Ci0gICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMv bGx2bTEwLnBhdGNoIGIvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEwLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWFmZTQ4YTI0MGQuLjAwMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9sbHZtMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwzNDcgKzAsMCBAQAotZGlmZiAtLWdpdCBDTWFrZS9GaW5kTExWTS5jbWFrZSBDTWFrZS9GaW5k TExWTS5jbWFrZQotaW5kZXggMGE1OWU0Ny4uNmU5MDkyMyAxMDA2NDQKLS0tLSBhL0NNYWtlL0Zp bmRMTFZNLmNtYWtlCi0rKysgYi9DTWFrZS9GaW5kTExWTS5jbWFrZQotQEAgLTEwNCwyOCArMTA0 LDE2IEBAIHN0cmluZyhSRUdFWCBSRVBMQUNFICIgKlxuIiAiIiBMTFZNX1NZU1RFTV9MSUJTICR7 TExWTV9TWVNURU1fTElCU19PUklHfSkKLSBlbmRpZiAoTExWTV9TWVNURU1fTElCU19PUklHKQot IGVuZGlmIChMTFZNX1ZFUlNJT05fTk9ET1QgVkVSU0lPTl9HUkVBVEVSIDM0KQotIAotKyNzb21l dGhpbmcgaGFybWxlc3MgYmVjYXVzZSB3aGl0ZXNwYWNlIGF0IHN0YXJ0IGlzIGFuIGVycm9yCi0r c2V0KENMQU5HX0xJQlJBUklFUyAiLWxkbCIpCi0gbWFjcm8oYWRkX29uZV9saWIgbmFtZSkKLSAg IEZJTkRfTElCUkFSWShDTEFOR19MSUIKLSAgICAgTkFNRVMgJHtuYW1lfQotICAgICBQQVRIUyAk e0xMVk1fTElCUkFSWV9ESVJ9IE5PX0RFRkFVTFRfUEFUSCkKLS0gIHNldChDTEFOR19MSUJSQVJJ RVMgJHtDTEFOR19MSUJSQVJJRVN9ICR7Q0xBTkdfTElCfSkKLSsgIHNldChDTEFOR19MSUJSQVJJ RVMgIiR7Q0xBTkdfTElCUkFSSUVTfSAke0NMQU5HX0xJQn0iKQotKyAgbWVzc2FnZShTVEFUVVMg ImNsYW5nbGlicyBuYW1lICR7bmFtZX0gdGhpcyAke0NMQU5HX0xJQn0gYWxsICR7Q0xBTkdfTElC UkFSSUVTfSAiKQotIAl1bnNldChDTEFOR19MSUIgQ0FDSEUpCi0gZW5kbWFjcm8oKQotIAotICNB c3N1bWUgY2xhbmcgbGliIHBhdGggc2FtZSBhcyBsbHZtIGxpYiBwYXRoCi0tYWRkX29uZV9saWIo ImNsYW5nQ29kZUdlbiIpCi0tYWRkX29uZV9saWIoImNsYW5nRnJvbnRlbmQiKQotLWFkZF9vbmVf bGliKCJjbGFuZ1NlcmlhbGl6YXRpb24iKQotLWFkZF9vbmVfbGliKCJjbGFuZ0RyaXZlciIpCi0t YWRkX29uZV9saWIoImNsYW5nU2VtYSIpCi0tYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6 ZXJGcm9udGVuZCIpCi0tYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDaGVja2VycyIp Ci0tYWRkX29uZV9saWIoImNsYW5nU3RhdGljQW5hbHl6ZXJDb3JlIikKLS1hZGRfb25lX2xpYigi Y2xhbmdBbmFseXNpcyIpCi0tYWRkX29uZV9saWIoImNsYW5nRWRpdCIpCi0tYWRkX29uZV9saWIo ImNsYW5nQVNUIikKLS1hZGRfb25lX2xpYigiY2xhbmdBU1RNYXRjaGVycyIpCi0tYWRkX29uZV9s aWIoImNsYW5nUGFyc2UiKQotLWFkZF9vbmVfbGliKCJjbGFuZ1NlbWEiKQotLWFkZF9vbmVfbGli KCJjbGFuZ0xleCIpCi0tYWRkX29uZV9saWIoImNsYW5nQmFzaWMiKQotK2FkZF9vbmVfbGliKCJj bGFuZy1jcHAiKQotZGlmZiAtLWdpdCBDTWFrZUxpc3RzLnR4dCBDTWFrZUxpc3RzLnR4dAotaW5k ZXggYzExYWNiYi4uMDhmNDI3ZCAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9D TWFrZUxpc3RzLnR4dAotQEAgLTc5LDcgKzc5LDcgQEAgZWxzZWlmIChDT01QSUxFUiBTVFJFUVVB TCAiQ0xBTkciKQotIGVsc2VpZiAoQ09NUElMRVIgU1RSRVFVQUwgIklDQyIpCi0gICBzZXQgKENN QUtFX0NfQ1hYX0ZMQUdTICIke0NNQUtFX0NfQ1hYX0ZMQUdTfSAgLXdkMjkyOCAtV2FsbCAtZlBJ QyAtZnN0cmljdC1hbGlhc2luZyAtZnAtbW9kZWwgZmFzdCAtbXNzZTQuMSAtV2wsLUUiKQotIGVu ZGlmICgpCi0tc2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAke0NNQUtF X0NfQ1hYX0ZMQUdTfSAtc3RkPWMrKzB4IC1Xbm8taW52YWxpZC1vZmZzZXRvZiIpCi0rc2V0IChD TUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAt V25vLWludmFsaWQtb2Zmc2V0b2YiKQotIHNldCAoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZM QUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSIpCi0gc2V0IChDTUFLRV9DWFhfRkxBR1NfREVCVUcg ICAgICAgICAgIi1PMCAtZyAtREdCRV9ERUJVRz0xIikKLSBzZXQgKENNQUtFX0NYWF9GTEFHU19S RUxXSVRIREVCSU5GTyAiLU8yIC1nIC1ER0JFX0RFQlVHPTEiKQotZGlmZiAtLWdpdCBiYWNrZW5k L3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwIGJhY2tlbmQvc3JjL2JhY2tlbmQvcHJvZ3JhbS5jcHAK LWluZGV4IGIzNmY3YjQuLmU2NjYwMzEgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9iYWNrZW5k L3Byb2dyYW0uY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9iYWNrZW5kL3Byb2dyYW0uY3BwCi1AQCAt Njk0LDkgKzY5NCw5IEBAIG5hbWVzcGFjZSBnYmUgewotICNlbmRpZgotICAgICAgICAgICAgICAg ICApOwotIAotKyAgICBsbHZtOjpjbDo6UmVzZXRBbGxPcHRpb25PY2N1cnJlbmNlcygpOwotICAg ICBjbGFuZzo6Q29tcGlsZXJJbnZvY2F0aW9uOjpDcmVhdGVGcm9tQXJncygqQ0ksCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZhcmdzWzBdLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYXJnc1swXSArIGFyZ3Mu c2l6ZSgpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj bGFuZzo6QXJyYXlSZWY8Y29uc3QgY2hhcio+KGFyZ3MpLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBEaWFncyk7Ci0gICAgIC8vIENyZWF0ZSB0aGUgY29t cGlsZXIgaW5zdGFuY2UKLSAgICAgY2xhbmc6OkNvbXBpbGVySW5zdGFuY2UgQ2xhbmc7Ci1AQCAt MTI0Miw4ICsxMjQyLDcgQEAgRVhURU5EX1FVT1RFOgotICAgICAgIC8vIENyZWF0ZSB0aGUgY29t cGlsZXIgaW52b2NhdGlvbgotICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxjbGFuZzo6Q29tcGlsZXJJ bnZvY2F0aW9uPiBDSShuZXcgY2xhbmc6OkNvbXBpbGVySW52b2NhdGlvbik7Ci0gICAgICAgcmV0 dXJuIGNsYW5nOjpDb21waWxlckludm9jYXRpb246OkNyZWF0ZUZyb21BcmdzKCpDSSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmFyZ3Nb MF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICZhcmdzWzBdICsgYXJncy5zaXplKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYW5nOjpBcnJheVJlZjxjb25zdCBjaGFyKj4o YXJncyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERpYWdzKTsKLSAgICAgfQotICNlbmRpZgotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwIGJhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2Vu ZC5jcHAKLWluZGV4IGM2ZmMzMGQuLjgyNDQxZDggMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9s bHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2Vu X2JhY2tlbmQuY3BwCi1AQCAtNTc1LDEwICs1NzUsMTIgQEAgbmFtZXNwYWNlIGdiZQotICAgICAg ICAgaGFzX2Vycm9ycyhmYWxzZSksCi0gICAgICAgICBsZWdhY3lNb2RlKHRydWUpCi0gICAgIHsK LSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMTAKLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICog MTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzcKLSAgICAgICBpbml0aWFsaXplTG9vcEluZm9X cmFwcGVyUGFzc1Bhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOwotICNlbHNl Ci0gICAgICAgaW5pdGlhbGl6ZUxvb3BJbmZvUGFzcygqUGFzc1JlZ2lzdHJ5OjpnZXRQYXNzUmVn aXN0cnkoKSk7Ci0rI2VuZGlmCi0gI2VuZGlmCi0gICAgICAgcGFzcyA9IFBBU1NfRU1JVF9SRUdJ U1RFUlM7Ci0gICAgIH0KLWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNr ZW5kLmhwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuaHBwCi1pbmRleCBiNDcx NWIxLi44ZTc0ZjdhIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNr ZW5kLmhwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5kLmhwcAotQEAg LTEzMCwxMCArMTMwLDEwIEBAIG5hbWVzcGFjZSBnYmUKLSAgIGxsdm06OkZ1bmN0aW9uUGFzcyAq Y3JlYXRlR2VuUGFzcyhpcjo6VW5pdCAmdW5pdCk7Ci0gCi0gICAvKiEgUmVtb3ZlIHRoZSBHRVAg aW5zdHJ1Y3Rpb25zICovCi0tICBsbHZtOjpCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlUmVtb3ZlR0VQ UGFzcyhjb25zdCBpcjo6VW5pdCAmdW5pdCk7Ci0rICBsbHZtOjpGdW5jdGlvblBhc3MgKmNyZWF0 ZVJlbW92ZUdFUFBhc3MoY29uc3QgaXI6OlVuaXQgJnVuaXQpOwotIAotICAgLyohIE1lcmdlIGxv YWQvc3RvcmUgaWYgcG9zc2libGUgKi8KLS0gIGxsdm06OkJhc2ljQmxvY2tQYXNzICpjcmVhdGVM b2FkU3RvcmVPcHRpbWl6YXRpb25QYXNzKCk7Ci0rICBsbHZtOjpGdW5jdGlvblBhc3MgKmNyZWF0 ZUxvYWRTdG9yZU9wdGltaXphdGlvblBhc3MoKTsKLSAKLSAgIC8qISBTY2FsYXJpemUgYWxsIHZl Y3RvciBvcCBpbnN0cnVjdGlvbnMgKi8KLSAgIGxsdm06OkZ1bmN0aW9uUGFzcyogY3JlYXRlU2Nh bGFyaXplUGFzcygpOwotQEAgLTE0MSw3ICsxNDEsNyBAQCBuYW1lc3BhY2UgZ2JlCi0gICBsbHZt OjpNb2R1bGVQYXNzKiBjcmVhdGVCYXJyaWVyTm9kdXBQYXNzKGJvb2wpOwotIAotICAgLyohIENv bnZlcnQgdGhlIEludHJpbnNpYyBjYWxsIHRvIGdlbiBmdW5jdGlvbiAqLwotLSAgbGx2bTo6QmFz aWNCbG9ja1Bhc3MgKmNyZWF0ZUludHJpbnNpY0xvd2VyaW5nUGFzcygpOwotKyAgbGx2bTo6RnVu Y3Rpb25QYXNzICpjcmVhdGVJbnRyaW5zaWNMb3dlcmluZ1Bhc3MoKTsKLSAKLSAgIC8qISBQYXNz ZXIgdGhlIHByaW50ZiBmdW5jdGlvbiBjYWxsLiAqLwotICAgbGx2bTo6RnVuY3Rpb25QYXNzKiBj cmVhdGVQcmludGZQYXJzZXJQYXNzKGlyOjpVbml0ICZ1bml0KTsKLWRpZmYgLS1naXQgYmFja2Vu ZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dlcmluZy5jcHAgYmFja2VuZC9zcmMvbGx2bS9s bHZtX2ludHJpbnNpY19sb3dlcmluZy5jcHAKLWluZGV4IDk0ZjBjZTYuLmI1NTM5ZTkgMTAwNjQ0 Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1faW50cmluc2ljX2xvd2VyaW5nLmNwcAotKysr IGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2ludHJpbnNpY19sb3dlcmluZy5jcHAKLUBAIC0yOSwx MiArMjksMTIgQEAKLSB1c2luZyBuYW1lc3BhY2UgbGx2bTsKLSAKLSBuYW1lc3BhY2UgZ2JlIHsK LS0gICAgY2xhc3MgSW5zdHJpbnNpY0xvd2VyaW5nIDogcHVibGljIEJhc2ljQmxvY2tQYXNzCi0r ICAgIGNsYXNzIEluc3RyaW5zaWNMb3dlcmluZyA6IHB1YmxpYyBGdW5jdGlvblBhc3MKLSAgICAg ewotICAgICBwdWJsaWM6Ci0gICAgICAgc3RhdGljIGNoYXIgSUQ7Ci0gICAgICAgSW5zdHJpbnNp Y0xvd2VyaW5nKCkgOgotLSAgICAgICAgQmFzaWNCbG9ja1Bhc3MoSUQpIHt9Ci0rICAgICAgICBG dW5jdGlvblBhc3MoSUQpIHt9Ci0gCi0gICAgICAgdm9pZCBnZXRBbmFseXNpc1VzYWdlKEFuYWx5 c2lzVXNhZ2UgJkFVKSBjb25zdCB7Ci0gCi1AQCAtOTMsOSArOTMsOSBAQCBuYW1lc3BhY2UgZ2Jl IHsKLSAgICAgICAgIENJLT5lcmFzZUZyb21QYXJlbnQoKTsKLSAgICAgICAgIHJldHVybiBOZXdD STsKLSAgICAgICB9Ci0tICAgICAgdmlydHVhbCBib29sIHJ1bk9uQmFzaWNCbG9jayhCYXNpY0Js b2NrICZCQikKLSsgICAgICB2aXJ0dWFsIGJvb2wgcnVuT25GdW5jdGlvbihGdW5jdGlvbiAmRikK LSAgICAgICB7Ci0tICAgICAgICBib29sIGNoYW5nZWRCbG9jayA9IGZhbHNlOwotKyAgICAgICAg Zm9yIChCYXNpY0Jsb2NrICZCQiA6IEYpIHsKLSAgICAgICAgIE1vZHVsZSAqTSA9IEJCLmdldFBh cmVudCgpLT5nZXRQYXJlbnQoKTsKLSAKLSAgICAgICAgIERhdGFMYXlvdXQgVEQoTSk7Ci1AQCAt MTU5LDEzICsxNTksMTQgQEAgbmFtZXNwYWNlIGdiZSB7Ci0gICAgICAgICAgICAgfQotICAgICAg ICAgICB9Ci0gICAgICAgICB9Ci0tICAgICAgICByZXR1cm4gY2hhbmdlZEJsb2NrOwotKyAgICAg ICAgfQotKyAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgfQotICAgICB9OwotIAotICAgICBj aGFyIEluc3RyaW5zaWNMb3dlcmluZzo6SUQgPSAwOwotIAotLSAgICBCYXNpY0Jsb2NrUGFzcyAq Y3JlYXRlSW50cmluc2ljTG93ZXJpbmdQYXNzKCkgewotKyAgICBGdW5jdGlvblBhc3MgKmNyZWF0 ZUludHJpbnNpY0xvd2VyaW5nUGFzcygpIHsKLSAgICAgICByZXR1cm4gbmV3IEluc3RyaW5zaWNM b3dlcmluZygpOwotICAgICB9Ci0gfSAvLyBlbmQgbmFtZXNwYWNlCi1kaWZmIC0tZ2l0IGJhY2tl bmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAKLWluZGV4IDVhYTM4YmUuLmUzMTQz MDIgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXph dGlvbi5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0 aW9uLmNwcAotQEAgLTI2LDEzICsyNiwxMyBAQAotIAotIHVzaW5nIG5hbWVzcGFjZSBsbHZtOwot IG5hbWVzcGFjZSBnYmUgewotLSAgY2xhc3MgR2VuTG9hZFN0b3JlT3B0aW1pemF0aW9uIDogcHVi bGljIEJhc2ljQmxvY2tQYXNzIHsKLSsgIGNsYXNzIEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbiA6 IHB1YmxpYyBGdW5jdGlvblBhc3MgewotIAotICAgcHVibGljOgotICAgICBzdGF0aWMgY2hhciBJ RDsKLSAgICAgU2NhbGFyRXZvbHV0aW9uICpTRTsKLSAgICAgY29uc3QgRGF0YUxheW91dCAqVEQ7 Ci0tICAgIEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbigpIDogQmFzaWNCbG9ja1Bhc3MoSUQpIHt9 Ci0rICAgIEdlbkxvYWRTdG9yZU9wdGltaXphdGlvbigpIDogRnVuY3Rpb25QYXNzKElEKSB7fQot IAotICAgICB2b2lkIGdldEFuYWx5c2lzVXNhZ2UoQW5hbHlzaXNVc2FnZSAmQVUpIGNvbnN0IHsK LSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzgK LUBAIC00NSw3ICs0NSw5IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgIEFVLnNldFByZXNlcnZl c0NGRygpOwotICAgICB9Ci0gCi0tICAgIHZpcnR1YWwgYm9vbCBydW5PbkJhc2ljQmxvY2soQmFz aWNCbG9jayAmQkIpIHsKLSsgICAgdmlydHVhbCBib29sIHJ1bk9uRnVuY3Rpb24oRnVuY3Rpb24g JkYpIHsKLSsgICAgICAgIGJvb2wgY2hhbmdlZEFueUJsb2NrID0gZmFsc2U7Ci0rICAgICAgICBm b3IgKEJhc2ljQmxvY2sgJkJCIDogRikgewotICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCAr IExMVk1fVkVSU0lPTl9NSU5PUiA+PSAzOAotICAgICAgIFNFID0gJmdldEFuYWx5c2lzPFNjYWxh ckV2b2x1dGlvbldyYXBwZXJQYXNzPigpLmdldFNFKCk7Ci0gI2Vsc2UKLUBAIC01OSw3ICs2MSw5 IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgICNlbHNlCi0gICAgICAgICBURCA9IGdldEFuYWx5 c2lzSWZBdmFpbGFibGU8RGF0YUxheW91dD4oKTsKLSAgICAgICAjZW5kaWYKLS0gICAgICByZXR1 cm4gb3B0aW1pemVMb2FkU3RvcmUoQkIpOwotKyAgICAgICAgICAgY2hhbmdlZEFueUJsb2NrID0g b3B0aW1pemVMb2FkU3RvcmUoQkIpIHwgY2hhbmdlZEFueUJsb2NrOwotKyAgICAgICAgfQotKyAg ICAgICAgcmV0dXJuIGNoYW5nZWRBbnlCbG9jazsKLSAgICAgfQotICAgICBUeXBlICAgICpnZXRW YWx1ZVR5cGUoVmFsdWUgKmluc24pOwotICAgICBWYWx1ZSAgICpnZXRQb2ludGVyT3BlcmFuZChW YWx1ZSAqSSk7Ci1AQCAtMTQ4LDcgKzE1Miw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICAgIHZh bHVlcy5wdXNoX2JhY2sobWVyZ2VkW2ldKTsKLSAgICAgfQotICAgICBMb2FkSW5zdCAqbGQgPSBj YXN0PExvYWRJbnN0PihtZXJnZWRbMF0pOwotLSAgICB1bnNpZ25lZCBhbGlnbiA9IGxkLT5nZXRB bGlnbm1lbnQoKTsKLSsgICAgTWF5YmVBbGlnbiBhbGlnbiA9IGxkLT5nZXRBbGlnbigpOwotICAg ICB1bnNpZ25lZCBhZGRyU3BhY2UgPSBsZC0+Z2V0UG9pbnRlckFkZHJlc3NTcGFjZSgpOwotICAg ICAvLyBpbnNlcnQgYmVmb3JlIGZpcnN0IGxvYWQKLSAgICAgQnVpbGRlci5TZXRJbnNlcnRQb2lu dChsZCk7Ci1AQCAtMjMxLDcgKzIzNSw3IEBAIG5hbWVzcGFjZSBnYmUgewotIAotICAgICB1bnNp Z25lZCBhZGRyU3BhY2UgPSBzdC0+Z2V0UG9pbnRlckFkZHJlc3NTcGFjZSgpOwotIAotLSAgICB1 bnNpZ25lZCBhbGlnbiA9IHN0LT5nZXRBbGlnbm1lbnQoKTsKLSsgICAgTWF5YmVBbGlnbiBhbGln biA9IHN0LT5nZXRBbGlnbigpOwotICAgICAvLyBpbnNlcnQgYmVmb3JlIHRoZSBsYXN0IHN0b3Jl Ci0gICAgIEJ1aWxkZXIuU2V0SW5zZXJ0UG9pbnQobWVyZ2VkW3NpemUtMV0pOwotIAotQEAgLTMy NSw3ICszMjksNyBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgICAgcmV0dXJuIGNoYW5nZWQ7Ci0gICB9 Ci0gCi0tICBCYXNpY0Jsb2NrUGFzcyAqY3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFzcygp IHsKLSsgIEZ1bmN0aW9uUGFzcyAqY3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFzcygpIHsK LSAgICAgcmV0dXJuIG5ldyBHZW5Mb2FkU3RvcmVPcHRpbWl6YXRpb24oKTsKLSAgIH0KLSB9Owot ZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fcGFzc2VzLmNwcCBiYWNrZW5kL3NyYy9s bHZtL2xsdm1fcGFzc2VzLmNwcAotaW5kZXggMTA3NTJhMy4uYjhmMjI4MiAxMDA2NDQKLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZt L2xsdm1fcGFzc2VzLmNwcAotQEAgLTM3LDcgKzM3LDcgQEAKLSAjaW5jbHVkZSAic3lzL21hcC5o cHAiCi0gCi0gdXNpbmcgbmFtZXNwYWNlIGxsdm07Ci0tCi0rdGVtcGxhdGUgY2xhc3MgY2ZnOjpV cGRhdGU8QmFzaWNCbG9jayAqPjsKLSBuYW1lc3BhY2UgZ2JlCi0gewotICAgYm9vbCBpc0tlcm5l bEZ1bmN0aW9uKGNvbnN0IGxsdm06OkZ1bmN0aW9uICZGKSB7Ci1AQCAtMjE5LDEzICsyMTksMTMg QEAgbmFtZXNwYWNlIGdiZQotICAgICByZXR1cm4gb2Zmc2V0OwotICAgfQotIAotLSAgY2xhc3Mg R2VuUmVtb3ZlR0VQUGFzc3MgOiBwdWJsaWMgQmFzaWNCbG9ja1Bhc3MKLSsgIGNsYXNzIEdlblJl bW92ZUdFUFBhc3NzIDogcHVibGljIEZ1bmN0aW9uUGFzcwotICAgewotIAotICAgIHB1YmxpYzoK LSAgICAgc3RhdGljIGNoYXIgSUQ7Ci0gICAgIEdlblJlbW92ZUdFUFBhc3NzKGNvbnN0IGlyOjpV bml0ICZ1bml0KSA6Ci0tICAgICAgQmFzaWNCbG9ja1Bhc3MoSUQpLAotKyAgICAgIEZ1bmN0aW9u UGFzcyhJRCksCi0gICAgICAgdW5pdCh1bml0KSB7fQotICAgICBjb25zdCBpcjo6VW5pdCAmdW5p dDsKLSAgICAgdm9pZCBnZXRBbmFseXNpc1VzYWdlKEFuYWx5c2lzVXNhZ2UgJkFVKSBjb25zdCB7 Ci1AQCAtMjQyLDE2ICsyNDIsMTggQEAgbmFtZXNwYWNlIGdiZQotIAotICAgICBib29sIHNpbXBs aWZ5R0VQSW5zdHJ1Y3Rpb25zKEdldEVsZW1lbnRQdHJJbnN0KiBHRVBJbnN0KTsKLSAKLS0gICAg dmlydHVhbCBib29sIHJ1bk9uQmFzaWNCbG9jayhCYXNpY0Jsb2NrICZCQikKLSsgICAgdmlydHVh bCBib29sIHJ1bk9uRnVuY3Rpb24oRnVuY3Rpb24gJkYpCi0gICAgIHsKLS0gICAgICBib29sIGNo YW5nZWRCbG9jayA9IGZhbHNlOwotKyAgICAgIGJvb2wgY2hhbmdlZEFueUJsb2NrID0gZmFsc2U7 Ci0rICAgICAgICBmb3IgKEJhc2ljQmxvY2sgJkJCIDogRikgewotICAgICAgIGlwbGlzdDxJbnN0 cnVjdGlvbj46Oml0ZXJhdG9yIEkgPSBCQi5nZXRJbnN0TGlzdCgpLmJlZ2luKCk7Ci0gICAgICAg Zm9yIChhdXRvIG5leHRJID0gSSwgRSA9IC0tQkIuZ2V0SW5zdExpc3QoKS5lbmQoKTsgSSAhPSBF OyBJID0gbmV4dEkpIHsKLSAgICAgICAgIGlwbGlzdDxJbnN0cnVjdGlvbj46Oml0ZXJhdG9yIEkg PSBuZXh0SSsrOwotICAgICAgICAgaWYoR2V0RWxlbWVudFB0ckluc3QqIGdlcCA9IGR5bl9jYXN0 PEdldEVsZW1lbnRQdHJJbnN0PigmKkkpKQotLSAgICAgICAgICBjaGFuZ2VkQmxvY2sgPSAoc2lt cGxpZnlHRVBJbnN0cnVjdGlvbnMoZ2VwKSB8fCBjaGFuZ2VkQmxvY2spOwotKyAgICAgICAgICBj aGFuZ2VkQW55QmxvY2sgPSAoc2ltcGxpZnlHRVBJbnN0cnVjdGlvbnMoZ2VwKSB8IGNoYW5nZWRB bnlCbG9jayk7Ci0gICAgICAgfQotLSAgICAgIHJldHVybiBjaGFuZ2VkQmxvY2s7Ci0rICAgICAg ICB9Ci0rICAgICAgcmV0dXJuIGNoYW5nZWRBbnlCbG9jazsKLSAgICAgfQotICAgfTsKLSAKLUBA IC0zNjcsNyArMzY5LDcgQEAgbmFtZXNwYWNlIGdiZQotICAgICByZXR1cm4gdHJ1ZTsKLSAgIH0K LSAKLS0gIEJhc2ljQmxvY2tQYXNzICpjcmVhdGVSZW1vdmVHRVBQYXNzKGNvbnN0IGlyOjpVbml0 ICZ1bml0KSB7Ci0rICBGdW5jdGlvblBhc3MgKmNyZWF0ZVJlbW92ZUdFUFBhc3MoY29uc3QgaXI6 OlVuaXQgJnVuaXQpIHsKLSAgICAgcmV0dXJuIG5ldyBHZW5SZW1vdmVHRVBQYXNzcyh1bml0KTsK LSAgIH0KLSB9IC8qIG5hbWVzcGFjZSBnYmUgKi8KLWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2 bS9sbHZtX3NhbXBsZXJfZml4LmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2FtcGxlcl9maXgu Y3BwCi1pbmRleCAyYTA5N2M4Li44NjNiZTZkIDEwMDY0NAotLS0tIGEvYmFja2VuZC9zcmMvbGx2 bS9sbHZtX3NhbXBsZXJfZml4LmNwcAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NhbXBs ZXJfZml4LmNwcAotQEAgLTMzLDEwICszMywxMiBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAgIGNsYXNz IFNhbXBsZXJGaXggOiBwdWJsaWMgRnVuY3Rpb25QYXNzIHsKLSAgIHB1YmxpYzoKLSAgICAgU2Ft cGxlckZpeCgpIDogRnVuY3Rpb25QYXNzKElEKSB7Ci0rI2lmIExMVk1fVkVSU0lPTl9NQUpPUiA8 IDEwCi0gI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49 IDM1Ci0gICAgICAgaW5pdGlhbGl6ZURvbWluYXRvclRyZWVXcmFwcGVyUGFzc1Bhc3MoKlBhc3NS ZWdpc3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOwotICNlbHNlCi0gICAgICAgaW5pdGlhbGl6ZURv bWluYXRvclRyZWVQYXNzKCpQYXNzUmVnaXN0cnk6OmdldFBhc3NSZWdpc3RyeSgpKTsKLSsjZW5k aWYKLSAjZW5kaWYKLSAgICAgfQotIAotZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1f c2NhbGFyaXplLmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2NhbGFyaXplLmNwcAotaW5kZXgg ZTlhMmE2Ni4uZTlkMmVlNCAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2Fs YXJpemUuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fc2NhbGFyaXplLmNwcAotQEAg LTk2LDEwICs5NiwxMiBAQCBuYW1lc3BhY2UgZ2JlIHsKLSAKLSAgICAgU2NhbGFyaXplKCkgOiBG dW5jdGlvblBhc3MoSUQpCi0gICAgIHsKLSsjaWYgTExWTV9WRVJTSU9OX01BSk9SIDwgMTAKLSAj aWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZNX1ZFUlNJT05fTUlOT1IgPj0gMzUKLSAg ICAgICBpbml0aWFsaXplRG9taW5hdG9yVHJlZVdyYXBwZXJQYXNzUGFzcygqUGFzc1JlZ2lzdHJ5 OjpnZXRQYXNzUmVnaXN0cnkoKSk7Ci0gI2Vsc2UKLSAgICAgICBpbml0aWFsaXplRG9taW5hdG9y VHJlZVBhc3MoKlBhc3NSZWdpc3RyeTo6Z2V0UGFzc1JlZ2lzdHJ5KCkpOwotKyNlbmRpZgotICNl bmRpZgotICAgICB9Ci0gCi1kaWZmIC0tZ2l0IHV0ZXN0cy9DTWFrZUxpc3RzLnR4dCB1dGVzdHMv Q01ha2VMaXN0cy50eHQKLWluZGV4IDMwMGQ4N2EuLjY0MTc5YzcgMTAwNjQ0Ci0tLS0gYS91dGVz dHMvQ01ha2VMaXN0cy50eHQKLSsrKyBiL3V0ZXN0cy9DTWFrZUxpc3RzLnR4dAotQEAgLTI2LDgg KzI2LDggQEAgaWYgKE5PVCBOT1RfQlVJTERfU1RBTkRfQUxPTkVfVVRFU1QpCi0gICAjIFRocmVh ZHMKLSAgIEZpbmRfUGFja2FnZShUaHJlYWRzKQotIAotLSAgc2V0IChDTUFLRV9DWFhfRkxBR1Mg IiR7Q01BS0VfQ1hYX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAtc3RkPWMrKzB4IC1Xbm8t aW52YWxpZC1vZmZzZXRvZiIpCi0tICBzZXQgKENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFH U30gJHtDTUFLRV9DX0NYWF9GTEFHU30iKQotKyAgc2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01B S0VfQ1hYX0ZMQUdTfSAke0NNQUtFX0NfQ1hYX0ZMQUdTfSAtV25vLWludmFsaWQtb2Zmc2V0b2Yg LWZmbG9hdC1zdG9yZSAtZm5vLXN0cmljdC1hbGlhc2luZyIpCi0rICBzZXQgKENNQUtFX0NfRkxB R1MgIiR7Q01BS0VfQ19GTEFHU30gJHtDTUFLRV9DX0NYWF9GTEFHU30gLWZmbG9hdC1zdG9yZSAt Zm5vLXN0cmljdC1hbGlhc2luZyIpICNjb21waWxlcl97ZGVncmVlcyxyYWRpYW5zLGZ1bmN0aW9u X2FyZ3VtZW50Mn0gdXNlIGVxdWFsaXR5IGNvbXBhcmlzb24gb2YgZmxvYXRzLCBjb21waWxlcl9s b25nX2JpdGNhc3QgdXNlcyBhbGlhc2luZwotICAgc2V0IChDTUFLRV9DWFhfRkxBR1NfREVCVUcg ICAgICAgICAgIi1PMCAtZyAtREdCRV9ERUJVRz0xIikKLSAgIHNldCAoQ01BS0VfQ1hYX0ZMQUdT X1JFTFdJVEhERUJJTkZPICItTzIgLWcgLURHQkVfREVCVUc9MSIpCi0gICBzZXQgKENNQUtFX0NY WF9GTEFHU19NSU5TSVpFUkVMICAgICAiLU9zIC1ETkRFQlVHIC1ER0JFX0RFQlVHPTAiKQpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTExLnBhdGNoIGIvc3JjcGtncy9i ZWlnbmV0L3BhdGNoZXMvbGx2bTExLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAyYzNhNDI3ODk0M2MuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hl cy9sbHZtMTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MzcgKzAsMCBAQAotU291cmNlOiBT bmVrdHJvbgotCi1UaGVyZSB3ZXJlIGEgZmV3IGNoYW5nZXMgcmVxdWlyZWQgZm9yIExMVk0gMTE6 Ci0qIGxsdm06OlN0cmluZ1JlZiByZXF1aXJlcyAuc3RyKCksIGltcGxpY2l0IGNvbnZlcnNpb24g d2FzIHJlbW92ZWQKLSogbGx2bTo6Q2FsbFNpdGUgd2FzIHJlbW92ZWQsIGJ1dCB0aGUgcmVxdWly ZWQgbWV0aG9kcyBhcmUgYXZhaWxhYmxlIG9uIGxsdm06OkNhbGxJbnN0Ci0qIFZlY3RvclR5SUQg d2FzIHNwbGl0IGludG8gRml4ZWRWZWN0b3JUeUlEIGFuZCBTY2FsYWJsZVZlY3RvclR5SUQsIEZp eGVkVmVjdG9yVHlJRCB3YXMgdXNlZAotKiBDYWxsSW5zdDo6Z2V0Q2FsbGVkVmFsdWUoKSB3YXMg cmVuYW1lZCB0byBDYWxsSW5zdDo6Z2V0Q2FsbGVkT3BlcmFuZCgpCi0qIEltcGxpY2l0IGNvbnZl cnNpb24gZnJvbSBNYXliZUFsaWduIHRvIEFsaWduIHdhcyByZW1vdmVkLCBzbyBNYXliZUFsaWdu Ojp2YWx1ZU9yT25lIHdhcyB1c2VkIGluc3RlYWQuCi0KLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0v U3RyaXBBdHRyaWJ1dGVzLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAot KysrIGIvYmFja2VuZC9zcmMvbGx2bS9TdHJpcEF0dHJpYnV0ZXMuY3BwCTIwMjAtMTEtMDkgMTk6 MDQ6MTkuNjQxODk3MTQxICswMTAwCi1AQCAtMTA3LDkgKzEwNyw4IEBACi0gICAgICAgIEJCICE9 IEU7ICsrQkIpIHsKLSAgICAgZm9yIChCYXNpY0Jsb2NrOjppdGVyYXRvciBJbnN0ID0gQkItPmJl Z2luKCksIEUgPSBCQi0+ZW5kKCk7Ci0gICAgICAgICAgSW5zdCAhPSBFOyArK0luc3QpIHsKLS0g ICAgICBDYWxsU2l0ZSBDYWxsKCYqSW5zdCk7Ci0tICAgICAgaWYgKENhbGwpCi0tICAgICAgICBD YWxsLnNldENhbGxpbmdDb252KENhbGxpbmdDb252OjpDKTsKLSsgICAgICBpZiAoQ2FsbEluc3Qq IGNhbGxJbnN0ID0gZHluX2Nhc3Q8Q2FsbEluc3Q+KCYqSW5zdCkpCi0rICAgICAgICBjYWxsSW5z dC0+c2V0Q2FsbGluZ0NvbnYoQ2FsbGluZ0NvbnY6OkMpOwotICAgICB9Ci0gICB9Ci0KLS0tLSBh L2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9iaXRjb2RlX2xpbmsuY3BwCTIwMjAtMTEtMDkgMTY6NDg6 MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fYml0Y29kZV9s aW5rLmNwcAkyMDIwLTExLTA5IDE3OjA0OjA5LjYzMzc1MzQyOCArMDEwMAotQEAgLTk4LDcgKzk4 LDcgQEAKLSAgICAgICAgIGlmIChjYWxsRnVuYyAmJiBjYWxsRnVuYy0+Z2V0SW50cmluc2ljSUQo KSAhPSAwKQotICAgICAgICAgICBjb250aW51ZTsKLQotLSAgICAgICAgc3RkOjpzdHJpbmcgZm5O YW1lID0gY2FsbC0+Z2V0Q2FsbGVkVmFsdWUoKS0+c3RyaXBQb2ludGVyQ2FzdHMoKS0+Z2V0TmFt ZSgpOwotKyAgICAgICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gY2FsbC0+Z2V0Q2FsbGVkT3BlcmFu ZCgpLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCkuc3RyKCk7Ci0KLSAgICAgICAgIGlm ICghTUZTLmluc2VydChmbk5hbWUpLnNlY29uZCkgewotICAgICAgICAgICBjb250aW51ZTsKLS0t LSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9kZXZpY2VfZW5xdWV1ZS5jcHAJMjAyMC0xMS0wOSAx Njo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9kZXZp Y2VfZW5xdWV1ZS5jcHAJMjAyMC0xMS0wOSAxOTowMTo0OS4yMDE5MTUwMDggKzAxMDAKLUBAIC00 NSw3ICs0NSw3IEBACi0gICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgLyogVGhpcyBpcyBhIGZh a2UsIHRvIGNoZWNrIHRoZSBmdW5jdGlvbiBiaXRjYXN0IGlzIGZvciBibG9jayBvciBub3QgKi8K LS0gICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gRm4tPmdldE5hbWUoKTsKLSsgICAgc3RkOjpzdHJp bmcgZm5OYW1lID0gRm4tPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgaWYoZm5OYW1lLmZpbmQoIl9p bnZva2UiKSA9PSBzdGQ6OnN0cmluZzo6bnBvcykKLSAgICAgICByZXR1cm4gTlVMTDsKLQotQEAg LTExOSwxOCArMTE5LDE4IEBACi0gICAgICAgUGFyYW1UeXMucHVzaF9iYWNrKHR5KTsKLSAgICAg fQotICAgICBGdW5jdGlvblR5cGUqIE5ld0ZUID0gRnVuY3Rpb25UeXBlOjpnZXQoRm4tPmdldFJl dHVyblR5cGUoKSwgUGFyYW1UeXMsIGZhbHNlKTsKLS0gICAgRnVuY3Rpb24qIE5ld0ZuID0gRnVu Y3Rpb246OkNyZWF0ZShOZXdGVCwgRnVuY3Rpb246OkV4dGVybmFsTGlua2FnZSwgRm4tPmdldE5h bWUoKSk7Ci0rICAgIEZ1bmN0aW9uKiBOZXdGbiA9IEZ1bmN0aW9uOjpDcmVhdGUoTmV3RlQsIEZ1 bmN0aW9uOjpFeHRlcm5hbExpbmthZ2UsIEZuLT5nZXROYW1lKCkuc3RyKCkpOwotICAgICBTbWFs bFZlY3RvcjxSZXR1cm5JbnN0KiwgOD4gUmV0dXJuczsKLQotICAgICBGdW5jdGlvbjo6YXJnX2l0 ZXJhdG9yIE5ld0ZuQXJnSXQgPSBOZXdGbi0+YXJnX2JlZ2luKCk7Ci0gICAgIGZvciAoRnVuY3Rp b246OmFyZ19pdGVyYXRvciBJID0gRm4tPmFyZ19iZWdpbigpLCBFID0gRm4tPmFyZ19lbmQoKTsg SSAhPSBFOyArK0kpIHsKLS0gICAgICBzdGQ6OnN0cmluZyBBcmdOYW1lID0gSS0+Z2V0TmFtZSgp OwotKyAgICAgIHN0ZDo6c3RyaW5nIEFyZ05hbWUgPSBJLT5nZXROYW1lKCkuc3RyKCk7Ci0gICAg ICAgTmV3Rm5BcmdJdC0+c2V0TmFtZShBcmdOYW1lKTsKLSAgICAgICBWTWFwWyYqSV0gPSAmKCpO ZXdGbkFyZ0l0KyspOwotICAgICB9Ci0gICAgIENsb25lRnVuY3Rpb25JbnRvKE5ld0ZuLCBGbiwg Vk1hcCwgLypNb2R1bGVMZXZlbENoYW5nZXM9Ki90cnVlLCBSZXR1cm5zKTsKLQotLSAgICBGbi0+ c2V0TmFtZSgiX19kIiArIEZuLT5nZXROYW1lKCkpOwotKyAgICBGbi0+c2V0TmFtZSgiX19kIiAr IEZuLT5nZXROYW1lKCkuc3RyKCkpOwotICAgICBtb2QtPmdldEZ1bmN0aW9uTGlzdCgpLnB1c2hf YmFjayhOZXdGbik7Ci0gICAgIC8vbW9kLT5nZXRPckluc2VydEZ1bmN0aW9uKE5ld0ZuLT5nZXRO YW1lKCksIE5ld0ZuLT5nZXRGdW5jdGlvblR5cGUoKSwKLSAgICAgLy8gICAgICAgICAgICAgICAg ICAgICAgICAgTmV3Rm4tPmdldEF0dHJpYnV0ZXMoKSk7Ci1AQCAtMTQ3LDcgKzE0Nyw3IEBACi0g ICAgICAgYXJnVHlwZU5hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0cmluZzo6Z2V0KENvbnRleHQs ICJjaGFyKiIpKTsKLSAgICAgICBhcmdCYXNlVHlwZU5hbWVzLnB1c2hfYmFjayhsbHZtOjpNRFN0 cmluZzo6Z2V0KENvbnRleHQsICJjaGFyKiIpKTsKLSAgICAgICBhcmdUeXBlUXVhbHMucHVzaF9i YWNrKGxsdm06Ok1EU3RyaW5nOjpnZXQoQ29udGV4dCwgIiIpKTsKLS0gICAgICBhcmdOYW1lcy5w dXNoX2JhY2sobGx2bTo6TURTdHJpbmc6OmdldChDb250ZXh0LCBJLT5nZXROYW1lKCkpKTsKLSsg ICAgICBhcmdOYW1lcy5wdXNoX2JhY2sobGx2bTo6TURTdHJpbmc6OmdldChDb250ZXh0LCBJLT5n ZXROYW1lKCkuc3RyKCkpKTsKLSAgICAgfQotCi0gICAgIC8vSWYgcnVuIHRvIGhlcmUsIGxsdm0g dmVyc2lvbiBhbHdheXMgPiAzLjksIGFkZCB0aGUgdmVyc2lvbiBjaGVjayBqdXN0IGZvciBidWls ZC4KLUBAIC0xOTgsNyArMTk4LDcgQEAKLSAgICAgICAgICAgICogaW52b2tlIHBvaW50ZXIgdG8g c3RvcmUgdGhlIGluZGV4IGluIHRoZSB1bml0J3MgYmxvY2sgZnVuY3Rpb25zIGluZGV4LiovCi0g ICAgICAgICAgIEZ1bmN0aW9uICpGbiA9IGR5bl9jYXN0PEZ1bmN0aW9uPihidC0+Z2V0T3BlcmFu ZCgwKSk7Ci0KLS0gICAgICAgICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gRm4tPmdldE5hbWUoKTsK LSsgICAgICAgICAgc3RkOjpzdHJpbmcgZm5OYW1lID0gRm4tPmdldE5hbWUoKS5zdHIoKTsKLSAg ICAgICAgICAgaW50IGluZGV4ID0gLTE7Ci0gICAgICAgICAgIGZvcihzaXplX3QgaT0wOyBpPHVu aXQuYmxvY2tGdW5jcy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgIGlmKHVuaXQuYmxvY2tG dW5jc1tpXSA9PSBmbk5hbWUpIHsKLUBAIC0yNDEsNyArMjQxLDcgQEAKLSAgICAgICAgICAgICAv L3VubmFtZWQgY2FsbCBmdW5jdGlvbiwgcGFyc2UgdGhlIHVzZSB0byBmaW5kIHRoZSBkZWZpbmUg b2YgY2FsbGVkIGZ1bmN0aW9uCi0gICAgICAgICAgICAgU21hbGxWZWN0b3I8VmFsdWUqLCAxNj4g YXJncyhDSS0+b3BfYmVnaW4oKSwgQ0ktPm9wX2VuZCgpLTEpOwotCi0tICAgICAgICAgICAgVmFs dWUgKnYgPSBDSS0+Z2V0Q2FsbGVkVmFsdWUoKTsKLSsgICAgICAgICAgICBWYWx1ZSAqdiA9IENJ LT5nZXRDYWxsZWRPcGVyYW5kKCk7Ci0gICAgICAgICAgICAgQml0Q2FzdEluc3QqIGJ0ID0gZHlu X2Nhc3Q8Qml0Q2FzdEluc3Q+KHYpOwotICAgICAgICAgICAgIGlmKGJ0ID09IE5VTEwpCi0gICAg ICAgICAgICAgICBjb250aW51ZTsKLUBAIC0zMTYsNyArMzE2LDcgQEAKLSAgICAgICAgICAgICAg ICAgICBDb25zdGFudEV4cHIgKmV4cHIgPSBkeW5fY2FzdDxDb25zdGFudEV4cHI+KGMtPmdldE9w ZXJhbmQoMykpOwotICAgICAgICAgICAgICAgICAgIEJpdENhc3RJbnN0ICpidCA9IGR5bl9jYXN0 PEJpdENhc3RJbnN0PihleHByLT5nZXRBc0luc3RydWN0aW9uKCkpOwotICAgICAgICAgICAgICAg ICAgIEZ1bmN0aW9uKiBmID0gZHluX2Nhc3Q8RnVuY3Rpb24+KGJ0LT5nZXRPcGVyYW5kKDApKTsK LS0gICAgICAgICAgICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCk7Ci0rICAgICAgICAg ICAgICAgICAgYmxvY2tzW3ZdID0gZi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICB9Ci0KLUBAIC0zMzIsNyArMzMyLDcgQEAKLSAgICAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgICAvL2hhbmRsZSBlbnF1ZXVlX2tlcm5lbCBmdW5jdGlvbiBj YWxsCi0gICAgICAgICAgICAgRnVuY3Rpb24gKmZuID0gQ0ktPmdldENhbGxlZEZ1bmN0aW9uKCk7 Ci0tICAgICAgICAgICAgaWYgKGZuLT5nZXROYW1lKCkuZmluZCgiZW5xdWV1ZV9rZXJuZWwiKSA9 PSBzdGQ6OnN0cmluZzo6bnBvcykKLSsgICAgICAgICAgICBpZiAoZm4tPmdldE5hbWUoKS5zdHIo KS5maW5kKCJlbnF1ZXVlX2tlcm5lbCIpID09IHN0ZDo6c3RyaW5nOjpucG9zKQotICAgICAgICAg ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAvL2Jsb2NrIHBhcmFtZXRlcidzIGluZGV4 LCAzIG9yIDYKLUBAIC0zNjEsNyArMzYxLDcgQEAKLSAgICAgICAgICAgICAgICAgICBDb25zdGFu dEV4cHIgKmV4cHIgPSBkeW5fY2FzdDxDb25zdGFudEV4cHI+KGMtPmdldE9wZXJhbmQoMykpOwot ICAgICAgICAgICAgICAgICAgIEJpdENhc3RJbnN0ICpidCA9IGR5bl9jYXN0PEJpdENhc3RJbnN0 PihleHByLT5nZXRBc0luc3RydWN0aW9uKCkpOwotICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9u KiBmID0gZHluX2Nhc3Q8RnVuY3Rpb24+KGJ0LT5nZXRPcGVyYW5kKDApKTsKLS0gICAgICAgICAg ICAgICAgICBibG9ja3Nbdl0gPSBmLT5nZXROYW1lKCk7Ci0rICAgICAgICAgICAgICAgICAgYmxv Y2tzW3ZdID0gZi0+Z2V0TmFtZSgpLnN0cigpOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgfSBlbHNlIGlmKGlzYTxBbGxvY2FJbnN0PihibG9jaykp IHsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9nZW5fYmFja2VuZC5jcHAJMjAyMC0xMS0w OSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9n ZW5fYmFja2VuZC5jcHAJMjAyMC0xMS0wOSAxODozMzo1MC45MTkxMTQzMjcgKzAxMDAKLUBAIC0z NzYsNyArMzc2LDcgQEAKLSAgICAgICAgICAgR0JFX0FTU0VSVChpbmRleCA9PSAwKTsKLSAgICAg ICAgICAgcmV0dXJuIHRoaXMtPl9uZXdTY2FsYXIodmFsdWUsIGtleSwgdHlwZSwgaW5kZXgsIHVu aWZvcm0pOwotICAgICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgVHlwZTo6VmVjdG9yVHlJ RDoKLSsgICAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0b3JUeUlEOgotICAgICAgICAgewotICAg ICAgICAgICBhdXRvIHZlY3RvclR5cGUgPSBjYXN0PFZlY3RvclR5cGU+KHR5cGUpOwotICAgICAg ICAgICBhdXRvIGVsZW1lbnRUeXBlID0gdmVjdG9yVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLUBA IC03NDMsMjAgKzc0MywyMCBAQAotICN1bmRlZiBERUNMX1ZJU0lUX0ZOCi0KLSAgICAgLy8gRW1p dCByb3VuZGluZyBpbnN0cnVjdGlvbnMgZnJvbSBnZW4gbmF0aXZlIGZ1bmN0aW9uCi0tICAgIHZv aWQgZW1pdFJvdW5kaW5nQ2FsbEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6Ok9w Y29kZSBvcGNvZGUpOwotKyAgICB2b2lkIGVtaXRSb3VuZGluZ0NhbGxJbnN0KENhbGxJbnN0ICZJ LCBpcjo6T3Bjb2RlIG9wY29kZSk7Ci0gICAgIC8vIEVtaXQgdW5hcnkgaW5zdHJ1Y3Rpb25zIGZy b20gZ2VuIG5hdGl2ZSBmdW5jdGlvbgotLSAgICB2b2lkIGVtaXRVbmFyeUNhbGxJbnN0KENhbGxJ bnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpPcGNvZGUgb3Bjb2RlLCBpcjo6VHlwZSA9IGlyOjpU WVBFX0ZMT0FUKTsKLSsgICAgdm9pZCBlbWl0VW5hcnlDYWxsSW5zdChDYWxsSW5zdCAmSSwgaXI6 Ok9wY29kZSBvcGNvZGUsIGlyOjpUeXBlID0gaXI6OlRZUEVfRkxPQVQpOwotICAgICAvLyBFbWl0 IHVuYXJ5IGluc3RydWN0aW9ucyBmcm9tIGdlbiBuYXRpdmUgZnVuY3Rpb24KLS0gICAgdm9pZCBl bWl0QXRvbWljSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBpcjo6QXRvbWljT3BzIG9w Y29kZSk7Ci0rICAgIHZvaWQgZW1pdEF0b21pY0luc3QoQ2FsbEluc3QgJkksIGlyOjpBdG9taWNP cHMgb3Bjb2RlKTsKLSAgICAgLy8gRW1pdCB3b3JrZ3JvdXAgaW5zdHJ1Y3Rpb25zCi0tICAgIHZv aWQgZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6OldvcmtH cm91cE9wcyBvcGNvZGUpOwotKyAgICB2b2lkIGVtaXRXb3JrR3JvdXBJbnN0KENhbGxJbnN0ICZJ LCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0gICAgIC8vIEVtaXQgc3ViZ3JvdXAgaW5zdHJ1 Y3Rpb25zCi0tICAgIHZvaWQgZW1pdFN1Ykdyb3VwSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUg JkNTLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSk7Ci0rICAgIHZvaWQgZW1pdFN1Ykdyb3VwSW5z dChDYWxsSW5zdCAmSSwgaXI6OldvcmtHcm91cE9wcyBvcGNvZGUpOwotICAgICAvLyBFbWl0IHN1 Ymdyb3VwIGluc3RydWN0aW9ucwotLSAgICB2b2lkIGVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3Qo Q2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXpl LCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0tICAgIHZvaWQgZW1pdEJsb2NrUmVhZFdyaXRl SW1hZ2VJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGJvb2wgaXNXcml0ZSwgdWludDhf dCB2ZWNfc2l6ZSwgaXI6OlR5cGUgPSBpcjo6VFlQRV9VMzIpOwotKyAgICB2b2lkIGVtaXRCbG9j a1JlYWRXcml0ZU1lbUluc3QoQ2FsbEluc3QgJkksIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNf c2l6ZSwgaXI6OlR5cGUgPSBpcjo6VFlQRV9VMzIpOwotKyAgICB2b2lkIGVtaXRCbG9ja1JlYWRX cml0ZUltYWdlSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBpc1dyaXRlLCB1aW50OF90IHZlY19zaXpl LCBpcjo6VHlwZSA9IGlyOjpUWVBFX1UzMik7Ci0KLS0gICAgdWludDhfdCBhcHBlbmRTYW1wbGVy KENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkpOwotKyAgICB1aW50OF90IGFwcGVuZFNhbXBsZXIo VXNlcjo6b3BfaXRlcmF0b3IgQUkpOwotICAgICB1aW50OF90IGdldEltYWdlSUQoQ2FsbEluc3Qg JkkpOwotCi0gICAgIC8vIFRoZXNlIGluc3RydWN0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCBhdCBh bGwKLUBAIC0xMzIwLDEzICsxMzIwLDEzIEBACi0gI2VuZGlmCi0KLSAgICAgICBpZih0eXBlTmFt ZU5vZGUpIHsKLS0gICAgICAgIGxsdm1JbmZvLnR5cGVOYW1lPSAoY2FzdDxNRFN0cmluZz4odHlw ZU5hbWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotKyAgICAgICAgbGx2 bUluZm8udHlwZU5hbWU9IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQo b3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgfQotICAgICAgIGlmKHR5cGVCYXNl TmFtZU5vZGUpIHsKLS0gICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZT0gKGNhc3Q8TURTdHJp bmc+KHR5cGVCYXNlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0r ICAgICAgICBsbHZtSW5mby50eXBlQmFzZU5hbWU9IChjYXN0PE1EU3RyaW5nPih0eXBlQmFzZU5h bWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpLnN0cigpOwotICAgICAgIH0K LS0gICAgICBsbHZtSW5mby50eXBlTmFtZT0gKGNhc3Q8TURTdHJpbmc+KHR5cGVOYW1lTm9kZS0+ Z2V0T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKTsKLS0gICAgICBsbHZtSW5mby50eXBlUXVh bCA9IChjYXN0PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0 U3RyaW5nKCk7Ci0rICAgICAgbGx2bUluZm8udHlwZU5hbWU9IChjYXN0PE1EU3RyaW5nPih0eXBl TmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0rICAgICAg bGx2bUluZm8udHlwZVF1YWwgPSAoY2FzdDxNRFN0cmluZz4odHlwZVF1YWxOb2RlLT5nZXRPcGVy YW5kKG9wSUQpKSktPmdldFN0cmluZygpLnN0cigpOwotICAgICAgIGJvb2wgaXNJbWFnZSA9IGxs dm1JbmZvLmlzSW1hZ2VUeXBlKCk7Ci0gICAgICAgYm9vbCBpc1BpcGUgPSBsbHZtSW5mby5pc1Bp cGVUeXBlKCk7Ci0gICAgICAgaWYgKEktPmdldFR5cGUoKS0+aXNQb2ludGVyVHkoKSB8fCBpc0lt YWdlIHx8IGlzUGlwZSkgewotQEAgLTE1MzEsNyArMTUzMSw3IEBACi0gICAgICAgICAgICAgRWx0 VHkgPSBnZXRFbHRUeXBlKEVsdFR5LCBUeXBlSW5kZXgpOwotICAgICAgICAgfQotCi0tICAgICAg ICBpcjo6Q29uc3RhbnQgY2MgPSB1bml0LmdldENvbnN0YW50U2V0KCkuZ2V0Q29uc3RhbnQocG9p bnRlci0+Z2V0TmFtZSgpKTsKLSsgICAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQuZ2V0Q29u c3RhbnRTZXQoKS5nZXRDb25zdGFudChwb2ludGVyLT5nZXROYW1lKCkuc3RyKCkpOwotICAgICAg ICAgdW5zaWduZWQgaW50IGRlZk9mZnNldCA9IGNjLmdldE9mZnNldCgpOwotICAgICAgICAgcmVs b2NzLnB1c2hfYmFjayhpcjo6UmVsb2NFbnRyeShvZmZzZXQsIGRlZk9mZnNldCArIGNvbnN0YW50 T2Zmc2V0KSk7Ci0KLUBAIC0xNTQ2LDcgKzE1NDYsNyBAQAotICAgICAgIHJldHVybjsKLSAgICAg fQotICAgICBpZiAoaXNhPEdsb2JhbFZhcmlhYmxlPihjKSkgewotLSAgICAgIGlyOjpDb25zdGFu dCBjYyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFudChjLT5nZXROYW1lKCkpOwot KyAgICAgIGlyOjpDb25zdGFudCBjYyA9IHVuaXQuZ2V0Q29uc3RhbnRTZXQoKS5nZXRDb25zdGFu dChjLT5nZXROYW1lKCkuc3RyKCkpOwotICAgICAgIHVuc2lnbmVkIGludCBkZWZPZmZzZXQgPSBj Yy5nZXRPZmZzZXQoKTsKLQotICAgICAgIHJlbG9jcy5wdXNoX2JhY2soaXI6OlJlbG9jRW50cnko b2Zmc2V0LCBkZWZPZmZzZXQpKTsKLUBAIC0xNjA5LDcgKzE2MDksNyBAQAotICAgICAgICAgICB9 Ci0gICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotLSAgICAgIGNhc2UgVHlwZTo6VHlwZUlE OjpWZWN0b3JUeUlEOgotKyAgICAgIGNhc2UgVHlwZTo6VHlwZUlEOjpGaXhlZFZlY3RvclR5SUQ6 Ci0gICAgICAgICB7Ci0gICAgICAgICAgIGNvbnN0IENvbnN0YW50RGF0YVNlcXVlbnRpYWwgKmNk cyA9IGR5bl9jYXN0PENvbnN0YW50RGF0YVNlcXVlbnRpYWw+KGMpOwotICAgICAgICAgICBjb25z dCBWZWN0b3JUeXBlICp2ZWNUeSA9IGNhc3Q8VmVjdG9yVHlwZT4odHlwZSk7Ci1AQCAtMTkzNiw3 ICsxOTM2LDcgQEAKLSAgICAgICBjYXNlIFR5cGU6OlBvaW50ZXJUeUlEOgotICAgICAgICAgcmVn VHJhbnNsYXRvci5uZXdTY2FsYXIodmFsdWUsIGtleSwgMCwgdW5pZm9ybSk7Ci0gICAgICAgICBi cmVhazsKLS0gICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6Ci0rICAgICAgY2FzZSBUeXBlOjpG aXhlZFZlY3RvclR5SUQ6Ci0gICAgICAgewotICAgICAgICAgYXV0byB2ZWN0b3JUeXBlID0gY2Fz dDxWZWN0b3JUeXBlPih0eXBlKTsKLSAgICAgICAgIGNvbnN0IHVpbnQzMl90IGVsZW1OdW0gPSB2 ZWN0b3JUeXBlLT5nZXROdW1FbGVtZW50cygpOwotQEAgLTIzOTUsNyArMjM5NSw3IEBACi0gI2Vu ZGlmCi0gICAgICAgICB9Ci0gICAgICAgICBpZih0eXBlTmFtZU5vZGUpIHsKLS0gICAgICAgICAg bGx2bUluZm8udHlwZU5hbWUgPSAoY2FzdDxNRFN0cmluZz4odHlwZU5hbWVOb2RlLT5nZXRPcGVy YW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotKyAgICAgICAgICBsbHZtSW5mby50eXBlTmFtZSA9 IChjYXN0PE1EU3RyaW5nPih0eXBlTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3Ry aW5nKCkuc3RyKCk7Ci0gICAgICAgICAgIC8vTExWTSAzLjkgaW1hZ2UncyB0eXBlIG5hbWUgaW5j bHVkZSBhY2Nlc3MgcXVhbCwgZG9uJ3QgbWF0Y2ggT3BlbkNMIHNwZWMsIGVyYXNlIHRoZW0uCi0g ICAgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBmaWx0ZXJzID0geyJfX3JlYWRfb25s eSAiLCAiX193cml0ZV9vbmx5ICJ9OwotICAgICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBp IDwgZmlsdGVycy5zaXplKCk7IGkrKykgewotQEAgLTI0MDYsMTYgKzI0MDYsMTYgQEAKLSAgICAg ICAgICAgfQotICAgICAgICAgfQotICAgICAgICAgaWYodHlwZUJhc2VOYW1lTm9kZSl7Ci0tICAg ICAgICAgIGxsdm1JbmZvLnR5cGVCYXNlTmFtZSA9IChjYXN0PE1EU3RyaW5nPih0eXBlQmFzZU5h bWVOb2RlLT5nZXRPcGVyYW5kKG9wSUQpKSktPmdldFN0cmluZygpOwotKyAgICAgICAgICBsbHZt SW5mby50eXBlQmFzZU5hbWUgPSAoY2FzdDxNRFN0cmluZz4odHlwZUJhc2VOYW1lTm9kZS0+Z2V0 T3BlcmFuZChvcElEKSkpLT5nZXRTdHJpbmcoKS5zdHIoKTsKLSAgICAgICAgIH0KLSAgICAgICAg IGlmKGFjY2Vzc1F1YWxOb2RlKSB7Ci0tICAgICAgICAgIGxsdm1JbmZvLmFjY2Vzc1F1YWwgPSAo Y2FzdDxNRFN0cmluZz4oYWNjZXNzUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3Ry aW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLmFjY2Vzc1F1YWwgPSAoY2FzdDxNRFN0cmluZz4o YWNjZXNzUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCkuc3RyKCk7Ci0g ICAgICAgICB9Ci0gICAgICAgICBpZih0eXBlUXVhbE5vZGUpIHsKLS0gICAgICAgICAgbGx2bUlu Zm8udHlwZVF1YWwgPSAoY2FzdDxNRFN0cmluZz4odHlwZVF1YWxOb2RlLT5nZXRPcGVyYW5kKG9w SUQpKSktPmdldFN0cmluZygpOwotKyAgICAgICAgICBsbHZtSW5mby50eXBlUXVhbCA9IChjYXN0 PE1EU3RyaW5nPih0eXBlUXVhbE5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5nKCku c3RyKCk7Ci0gICAgICAgICB9Ci0gICAgICAgICBpZihhcmdOYW1lTm9kZSl7Ci0tICAgICAgICAg IGxsdm1JbmZvLmFyZ05hbWUgPSAoY2FzdDxNRFN0cmluZz4oYXJnTmFtZU5vZGUtPmdldE9wZXJh bmQob3BJRCkpKS0+Z2V0U3RyaW5nKCk7Ci0rICAgICAgICAgIGxsdm1JbmZvLmFyZ05hbWUgPSAo Y2FzdDxNRFN0cmluZz4oYXJnTmFtZU5vZGUtPmdldE9wZXJhbmQob3BJRCkpKS0+Z2V0U3RyaW5n KCkuc3RyKCk7Ci0gICAgICAgICB9Ci0KLSAgICAgICAgIC8vIGZ1bmN0aW9uIGFyZ3VtZW50cyBh cmUgdW5pZm9ybSB2YWx1ZXMuCi1AQCAtMzAxMCw3ICszMDEwLDcgQEAKLSAgICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgIHRoaXMtPm5ld1JlZ2lzdGVyKGNvbnN0X2Nhc3Q8R2xvYmFsVmFyaWFi bGUqPigmdikpOwotICAgICAgICAgICBpcjo6UmVnaXN0ZXIgcmVnID0gcmVnVHJhbnNsYXRvci5n ZXRTY2FsYXIoY29uc3RfY2FzdDxHbG9iYWxWYXJpYWJsZSo+KCZ2KSwgMCk7Ci0tICAgICAgICAg IGlyOjpDb25zdGFudCAmY29uID0gdW5pdC5nZXRDb25zdGFudFNldCgpLmdldENvbnN0YW50KHYu Z2V0TmFtZSgpKTsKLSsgICAgICAgICAgaXI6OkNvbnN0YW50ICZjb24gPSB1bml0LmdldENvbnN0 YW50U2V0KCkuZ2V0Q29uc3RhbnQodi5nZXROYW1lKCkuc3RyKCkpOwotICAgICAgICAgICBpZiAo IWxlZ2FjeU1vZGUpIHsKLSAgICAgICAgICAgICBpcjo6UmVnaXN0ZXIgcmVnbG9hZCA9IGN0eC5y ZWcoZ2V0RmFtaWx5KGdldFR5cGUoY3R4LCB2LmdldFR5cGUoKSkpKTsKLSAgICAgICAgICAgICBj dHguTE9BREkoZ2V0VHlwZShjdHgsIHYuZ2V0VHlwZSgpKSwgcmVnbG9hZCwgY3R4Lm5ld0ludGVn ZXJJbW1lZGlhdGUoY29uLmdldE9mZnNldCgpLCBnZXRUeXBlKGN0eCwgdi5nZXRUeXBlKCkpKSk7 Ci1AQCAtMzIxMiw3ICszMjEyLDcgQEAKLSAgICAgICAgIEdCRV9BU1NFUlRNKGZhbHNlLCAiVW5z dXBwb3J0ZWQgY2FsbGluZyBjb252ZW50aW9uIik7Ci0gICAgIH0KLQotLSAgICBjdHguc3RhcnRG dW5jdGlvbihGLmdldE5hbWUoKSk7Ci0rICAgIGN0eC5zdGFydEZ1bmN0aW9uKEYuZ2V0TmFtZSgp LnN0cigpKTsKLQotICAgICBpcjo6RnVuY3Rpb24gJmZuID0gY3R4LmdldEZ1bmN0aW9uKCk7Ci0g ICAgIHRoaXMtPnJlZ1RyYW5zbGF0b3IuY2xlYXIoKTsKLUBAIC0zODEwLDkgKzM4MTAsOSBAQAot Ci0gICB2b2lkIEdlbldyaXRlcjo6cmVnQWxsb2NhdGVDYWxsSW5zdChDYWxsSW5zdCAmSSkgewot ICAgICBWYWx1ZSAqZHN0ID0gJkk7Ci0tICAgIFZhbHVlICpDYWxsZWUgPSBJLmdldENhbGxlZFZh bHVlKCk7Ci0rICAgIFZhbHVlICpDYWxsZWUgPSBJLmdldENhbGxlZE9wZXJhbmQoKTsKLSAgICAg R0JFX0FTU0VSVChjdHguZ2V0RnVuY3Rpb24oKS5nZXRQcm9maWxlKCkgPT0gaXI6OlBST0ZJTEVf T0NMKTsKLS0gICAgR0JFX0FTU0VSVChpc2E8SW5saW5lQXNtPihJLmdldENhbGxlZFZhbHVlKCkp ID09IGZhbHNlKTsKLSsgICAgR0JFX0FTU0VSVChpc2E8SW5saW5lQXNtPihJLmdldENhbGxlZE9w ZXJhbmQoKSkgPT0gZmFsc2UpOwotICAgICBpZihJLmdldE51bUFyZ09wZXJhbmRzKCkpIEdCRV9B U1NFUlQoSS5oYXNTdHJ1Y3RSZXRBdHRyKCkgPT0gZmFsc2UpOwotCi0gICAgIC8vIFdlIG9ubHkg c3VwcG9ydCBhIHNtYWxsIG51bWJlciBvZiBpbnRyaW5zaWNzIHJpZ2h0IG5vdwotQEAgLTM4NzAs NyArMzg3MCw3IEBACi0gICAgICAgfQotICAgICB9Ci0gICAgIC8vIEdldCB0aGUgbmFtZSBvZiB0 aGUgY2FsbGVkIGZ1bmN0aW9uIGFuZCBoYW5kbGUgaXQKLS0gICAgY29uc3Qgc3RkOjpzdHJpbmcg Zm5OYW1lID0gQ2FsbGVlLT5zdHJpcFBvaW50ZXJDYXN0cygpLT5nZXROYW1lKCk7Ci0rICAgIGNv bnN0IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3RyaXBQb2ludGVyQ2FzdHMoKS0+Z2V0 TmFtZSgpLnN0cigpOwotICAgICBhdXRvIGdlbkludHJpbnNpY0lEID0gaW50cmluc2ljTWFwLmZp bmQoZm5OYW1lKTsKLSAgICAgc3dpdGNoIChnZW5JbnRyaW5zaWNJRCkgewotICAgICAgIGNhc2Ug R0VOX09DTF9HRVRfR1JPVVBfSUQwOgotQEAgLTQxNjYsNyArNDE2Niw3IEBACi0gICAgIH07Ci0g ICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0Um91bmRpbmdDYWxsSW5zdChDYWxsSW5zdCAm SSwgQ2FsbFNpdGUgJkNTLCBpcjo6T3Bjb2RlIG9wY29kZSkgewotKyAgdm9pZCBHZW5Xcml0ZXI6 OmVtaXRSb3VuZGluZ0NhbGxJbnN0KENhbGxJbnN0ICZJLCBpcjo6T3Bjb2RlIG9wY29kZSkgewot ICAgICBpZiAoSS5nZXRUeXBlKCktPmlzSGFsZlR5KCkpIHsKLSAgICAgICBjb25zdCBpcjo6UmVn aXN0ZXIgc3JjID0gdGhpcy0+Z2V0UmVnaXN0ZXIoSS5nZXRPcGVyYW5kKDApKTsKLSAgICAgICBj b25zdCBpcjo6UmVnaXN0ZXIgc3JjRmxvYXQgPSBjdHgucmVnKGlyOjpGQU1JTFlfRFdPUkQpOwot QEAgLTQxNzcsMTQgKzQxNzcsMTQgQEAKLSAgICAgICBjdHguRjMyVE8xNihpcjo6VFlQRV9VMTYs IGlyOjpUWVBFX0ZMT0FULCBkc3QsIGRzdEZsb2F0KTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICBH QkVfQVNTRVJUKEkuZ2V0VHlwZSgpLT5pc0Zsb2F0VHkoKSk7Ci0tICAgICAgdGhpcy0+ZW1pdFVu YXJ5Q2FsbEluc3QoSSxDUyxvcGNvZGUpOwotKyAgICAgIHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0 KEksb3Bjb2RlKTsKLSAgICAgfQotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdFVuYXJ5 Q2FsbEluc3QoQ2FsbEluc3QgJkksIENhbGxTaXRlICZDUywgaXI6Ok9wY29kZSBvcGNvZGUsIGly OjpUeXBlIHR5cGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19i ZWdpbigpOwotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRVbmFyeUNhbGxJbnN0KENhbGxJbnN0ICZJ LCBpcjo6T3Bjb2RlIG9wY29kZSwgaXI6OlR5cGUgdHlwZSkgewotKyAgICBVc2VyOjpvcF9pdGVy YXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0gI2lmIEdCRV9ERUJVRwotLSAgICBDYWxsU2l0ZTo6 YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBB RSA9IEkuYXJnX2VuZCgpOwotICNlbmRpZiAvKiBHQkVfREVCVUcgKi8KLSAgICAgR0JFX0FTU0VS VChBSSAhPSBBRSk7Ci0gICAgIGNvbnN0IGlyOjpSZWdpc3RlciBzcmMgPSB0aGlzLT5nZXRSZWdp c3RlcigqQUkpOwotQEAgLTQyOTMsOSArNDI5Myw5IEBACi0gICAgIHRoaXMtPmVtaXRBdG9taWNJ bnN0SGVscGVyKG9wY29kZSwgdHlwZSwgZHN0LCBsbHZtUHRyLCBwYXlsb2FkVHVwbGUpOwotICAg fQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdEF0b21pY0luc3QoQ2FsbEluc3QgJkksIENhbGxT aXRlICZDUywgaXI6OkF0b21pY09wcyBvcGNvZGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVy YXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFF ID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRBdG9taWNJbnN0KENhbGxJ bnN0ICZJLCBpcjo6QXRvbWljT3BzIG9wY29kZSkgewotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBB SSA9IEkuYXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5k KCk7Ci0gICAgIEdCRV9BU1NFUlQoQUkgIT0gQUUpOwotICAgICBWYWx1ZSAqbGx2bVB0ciA9ICpB STsKLSAgICAgaXI6OkFkZHJlc3NTcGFjZSBhZGRyU3BhY2UgPSBhZGRyZXNzU3BhY2VMTFZNVG9H ZW4obGx2bVB0ci0+Z2V0VHlwZSgpLT5nZXRQb2ludGVyQWRkcmVzc1NwYWNlKCkpOwotQEAgLTQz NDgsNyArNDM0OCw3IEBACi0gICAgIH0KLSAgIH0KLQotLSAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRX b3JrR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpXb3JrR3JvdXBPcHMg b3Bjb2RlKSB7Ci0rICB2b2lkIEdlbldyaXRlcjo6ZW1pdFdvcmtHcm91cEluc3QoQ2FsbEluc3Qg JkksIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKSB7Ci0gICAgIGlyOjpGdW5jdGlvbiAmZiA9IGN0 eC5nZXRGdW5jdGlvbigpOwotCi0gICAgIGlmIChmLmdldHdnQnJvYWRjYXN0U0xNKCkgPCAwICYm IG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0JST0FEQ0FTVCkgewotQEAgLTQzNzgsOCArNDM3 OCw4IEBACi0gICAgICAgR0JFX0FTU0VSVChmLmdldHRpZE1hcFNMTSgpID49IDApOwotICAgICB9 Ci0KLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotLSAg ICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgICBVc2VyOjpv cF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFF ID0gSS5hcmdfZW5kKCk7Ci0gICAgIEdCRV9BU1NFUlQoQUkgIT0gQUUpOwotCi0gICAgIGlmIChv cGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTEwgfHwgb3Bjb2RlID09IGlyOjpXT1JLR1JPVVBf T1BfQU5ZKSB7Ci1AQCAtNDM5MSwxNCArNDM5MSwxNCBAQAotICAgICAgIGNvbnN0IGlyOjpUdXBs ZSBzcmNUdXBsZSA9IGN0eC5hcnJheVR1cGxlKCZzcmNbMF0sIDMpOwotICAgICAgIGN0eC5XT1JL R1JPVVAob3Bjb2RlLCAodWludDMyX3QpZi5nZXR0aWRNYXBTTE0oKSwgZ2V0UmVnaXN0ZXIoJkkp LCBzcmNUdXBsZSwgMywgaXI6OlRZUEVfUzMyKTsKLSAgICAgfSBlbHNlIGlmIChvcGNvZGUgPT0g aXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpIHsKLS0gICAgICBpbnQgYXJnTnVtID0gQ1MuYXJn X3NpemUoKTsKLSsgICAgICBpbnQgYXJnTnVtID0gSS5hcmdfc2l6ZSgpOwotICAgICAgIHN0ZDo6 dmVjdG9yPGlyOjpSZWdpc3Rlcj4gc3JjKGFyZ051bSk7Ci0gICAgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBhcmdOdW07IGkrKykgewotICAgICAgICAgc3JjW2ldID0gdGhpcy0+Z2V0UmVnaXN0ZXIo KihBSSsrKSk7Ci0gICAgICAgfQotICAgICAgIGNvbnN0IGlyOjpUdXBsZSBzcmNUdXBsZSA9IGN0 eC5hcnJheVR1cGxlKCZzcmNbMF0sIGFyZ051bSk7Ci0gICAgICAgY3R4LldPUktHUk9VUChpcjo6 V09SS0dST1VQX09QX0JST0FEQ0FTVCwgKHVpbnQzMl90KWYuZ2V0d2dCcm9hZGNhc3RTTE0oKSwg Z2V0UmVnaXN0ZXIoJkkpLCBzcmNUdXBsZSwgYXJnTnVtLAotLSAgICAgICAgICBnZXRUeXBlKGN0 eCwgKCpDUy5hcmdfYmVnaW4oKSktPmdldFR5cGUoKSkpOwotKyAgICAgICAgICBnZXRUeXBlKGN0 eCwgKCpJLmFyZ19iZWdpbigpKS0+Z2V0VHlwZSgpKSk7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAg Q29uc3RhbnRJbnQgKnNpZ24gPSBkeW5fY2FzdDxDb25zdGFudEludD4oQUkpOwotICAgICAgIEdC RV9BU1NFUlQoc2lnbik7Ci1AQCAtNDQyMyw5ICs0NDIzLDkgQEAKLSAgICAgR0JFX0FTU0VSVChB SSA9PSBBRSk7Ci0gICB9Ci0KLS0gIHZvaWQgR2VuV3JpdGVyOjplbWl0U3ViR3JvdXBJbnN0KENh bGxJbnN0ICZJLCBDYWxsU2l0ZSAmQ1MsIGlyOjpXb3JrR3JvdXBPcHMgb3Bjb2RlKSB7Ci0tICAg IENhbGxTaXRlOjphcmdfaXRlcmF0b3IgQUkgPSBDUy5hcmdfYmVnaW4oKTsKLS0gICAgQ2FsbFNp dGU6OmFyZ19pdGVyYXRvciBBRSA9IENTLmFyZ19lbmQoKTsKLSsgIHZvaWQgR2VuV3JpdGVyOjpl bWl0U3ViR3JvdXBJbnN0KENhbGxJbnN0ICZJLCBpcjo6V29ya0dyb3VwT3BzIG9wY29kZSkgewot KyAgICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0rICAgIFVzZXI6Om9w X2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gICAgIEdCRV9BU1NFUlQoQUkgIT0gQUUpOwot Ci0gICAgIGlmIChvcGNvZGUgPT0gaXI6OldPUktHUk9VUF9PUF9BTEwgfHwgb3Bjb2RlID09IGly OjpXT1JLR1JPVVBfT1BfQU5ZKSB7Ci1AQCAtNDQzNSw3ICs0NDM1LDcgQEAKLSAgICAgICBjb25z dCBpcjo6VHVwbGUgc3JjVHVwbGUgPSBjdHguYXJyYXlUdXBsZSgmc3JjWzBdLCAxKTsKLSAgICAg ICBjdHguU1VCR1JPVVAob3Bjb2RlLCBnZXRSZWdpc3RlcigmSSksIHNyY1R1cGxlLCAxLCBpcjo6 VFlQRV9TMzIpOwotICAgICB9IGVsc2UgaWYgKG9wY29kZSA9PSBpcjo6V09SS0dST1VQX09QX0JS T0FEQ0FTVCkgewotLSAgICAgIGludCBhcmdOdW0gPSBDUy5hcmdfc2l6ZSgpOwotKyAgICAgIGlu dCBhcmdOdW0gPSBJLmFyZ19zaXplKCk7Ci0gICAgICAgR0JFX0FTU0VSVChhcmdOdW0gPT0gMik7 Ci0gICAgICAgc3RkOjp2ZWN0b3I8aXI6OlJlZ2lzdGVyPiBzcmMoYXJnTnVtKTsKLSAgICAgICBm b3IgKGludCBpID0gMDsgaSA8IGFyZ051bTsgaSsrKSB7Ci1AQCAtNDQ0Myw3ICs0NDQzLDcgQEAK LSAgICAgICB9Ci0gICAgICAgY29uc3QgaXI6OlR1cGxlIHNyY1R1cGxlID0gY3R4LmFycmF5VHVw bGUoJnNyY1swXSwgYXJnTnVtKTsKLSAgICAgICBjdHguU1VCR1JPVVAoaXI6OldPUktHUk9VUF9P UF9CUk9BRENBU1QsIGdldFJlZ2lzdGVyKCZJKSwgc3JjVHVwbGUsIGFyZ051bSwKLS0gICAgICAg ICAgZ2V0VHlwZShjdHgsICgqQ1MuYXJnX2JlZ2luKCkpLT5nZXRUeXBlKCkpKTsKLSsgICAgICAg ICAgZ2V0VHlwZShjdHgsICgqSS5hcmdfYmVnaW4oKSktPmdldFR5cGUoKSkpOwotICAgICB9IGVs c2UgewotICAgICAgIENvbnN0YW50SW50ICpzaWduID0gZHluX2Nhc3Q8Q29uc3RhbnRJbnQ+KEFJ KTsKLSAgICAgICBHQkVfQVNTRVJUKHNpZ24pOwotQEAgLTQ0NjYsOSArNDQ2Niw5IEBACi0gICAg IEdCRV9BU1NFUlQoQUkgPT0gQUUpOwotICAgfQotCi0tICB2b2lkIEdlbldyaXRlcjo6ZW1pdEJs b2NrUmVhZFdyaXRlTWVtSW5zdChDYWxsSW5zdCAmSSwgQ2FsbFNpdGUgJkNTLCBib29sIGlzV3Jp dGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlIHR5cGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFy Z19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwotLSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJh dG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9pZCBHZW5Xcml0ZXI6OmVtaXRCbG9ja1JlYWRX cml0ZU1lbUluc3QoQ2FsbEluc3QgJkksIGJvb2wgaXNXcml0ZSwgdWludDhfdCB2ZWNfc2l6ZSwg aXI6OlR5cGUgdHlwZSkgewotKyAgICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEkuYXJnX2JlZ2lu KCk7Ci0rICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gICAgIEdCRV9B U1NFUlQoQUkgIT0gQUUpOwotCi0gICAgIFZhbHVlICpsbHZtUHRyID0gKihBSSsrKTsKLUBAIC00 NTIyLDkgKzQ1MjIsOSBAQAotICAgICBHQkVfQVNTRVJUKEFJID09IEFFKTsKLSAgIH0KLQotLSAg dm9pZCBHZW5Xcml0ZXI6OmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChDYWxsSW5zdCAmSSwg Q2FsbFNpdGUgJkNTLCBib29sIGlzV3JpdGUsIHVpbnQ4X3QgdmVjX3NpemUsIGlyOjpUeXBlIHR5 cGUpIHsKLS0gICAgQ2FsbFNpdGU6OmFyZ19pdGVyYXRvciBBSSA9IENTLmFyZ19iZWdpbigpOwot LSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFFID0gQ1MuYXJnX2VuZCgpOwotKyAgdm9pZCBH ZW5Xcml0ZXI6OmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChDYWxsSW5zdCAmSSwgYm9vbCBp c1dyaXRlLCB1aW50OF90IHZlY19zaXplLCBpcjo6VHlwZSB0eXBlKSB7Ci0rICAgIFVzZXI6Om9w X2l0ZXJhdG9yIEFJID0gSS5hcmdfYmVnaW4oKTsKLSsgICAgVXNlcjo6b3BfaXRlcmF0b3IgQUUg PSBJLmFyZ19lbmQoKTsKLSAgICAgR0JFX0FTU0VSVChBSSAhPSBBRSk7Ci0KLSAgICAgY29uc3Qg dWludDhfdCBpbWFnZUlEID0gZ2V0SW1hZ2VJRChJKTsKLUBAIC00NTU3LDcgKzQ1NTcsNyBAQAot Ci0gICAvKiBhcHBlbmQgYSBuZXcgc2FtcGxlci4gc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55 IHJlZmVyZW5jZSB0bwotICAgICogYSBzYW1wbGVyX3QgdmFsdWUuICovCi0tICB1aW50OF90IEdl bldyaXRlcjo6YXBwZW5kU2FtcGxlcihDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIEFJKSB7Ci0rICB1 aW50OF90IEdlbldyaXRlcjo6YXBwZW5kU2FtcGxlcihVc2VyOjpvcF9pdGVyYXRvciBBSSkgewot ICNpZiBMTFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA0MAot ICAgICBDYWxsSW5zdCAqVEMgPSBkeW5fY2FzdDxDYWxsSW5zdD4oKkFJKTsKLSAgICAgQ29uc3Rh bnQgKkNQViA9IFRDID8gZHluX2Nhc3Q8Q29uc3RhbnQ+KFRDLT5nZXRPcGVyYW5kKDApKSA6IE5V TEw7Ci1AQCAtNDU5NSwxMCArNDU5NSw5IEBACi0gICAgICAgICBjb25zdCBpcjo6RnVuY3Rpb24g JmZuID0gY3R4LmdldEZ1bmN0aW9uKCk7Ci0KLSAgICAgICAgIC8vIEdldCB0aGUgZnVuY3Rpb24g YXJndW1lbnRzCi0tICAgICAgICBDYWxsU2l0ZSBDUygmSSk7Ci0tICAgICAgICBDYWxsU2l0ZTo6 YXJnX2l0ZXJhdG9yIEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICAgICAgICBVc2VyOjpvcF9pdGVy YXRvciBBSSA9IEkuYXJnX2JlZ2luKCk7Ci0gI2lmIEdCRV9ERUJVRwotLSAgICAgICAgQ2FsbFNp dGU6OmFyZ19pdGVyYXRvciBBRSA9IENTLmFyZ19lbmQoKTsKLSsgICAgICAgIFVzZXI6Om9wX2l0 ZXJhdG9yIEFFID0gSS5hcmdfZW5kKCk7Ci0gI2VuZGlmIC8qIEdCRV9ERUJVRyAqLwotICAgICAg ICAgc3dpdGNoIChGLT5nZXRJbnRyaW5zaWNJRCgpKSB7Ci0gICAgICAgICAgIGNhc2UgSW50cmlu c2ljOjpzdGFja3NhdmU6Ci1AQCAtNDc2NCwxNyArNDc2MywxNyBAQAotICAgICAgICAgICAgIGN0 eC5NQUQoc3JjVHlwZSwgZHN0LCBzcmMwLCBzcmMxLCBzcmMyKTsKLSAgICAgICAgICAgfQotICAg ICAgICAgICBicmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OnNxcnQ6IHRoaXMtPmVt aXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX1NRUik7IGJyZWFrOwotLSAgICAgICAgICBjYXNl IEludHJpbnNpYzo6Y2VpbDogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxDUyxpcjo6T1Bf Uk5EVSk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6dHJ1bmM6IHRoaXMtPmVt aXRSb3VuZGluZ0NhbGxJbnN0KEksQ1MsaXI6Ok9QX1JORFopOyBicmVhazsKLS0gICAgICAgICAg Y2FzZSBJbnRyaW5zaWM6OnJpbnQ6IHRoaXMtPmVtaXRSb3VuZGluZ0NhbGxJbnN0KEksQ1MsaXI6 Ok9QX1JOREUpOyBicmVhazsKLS0gICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmZsb29yOiB0aGlz LT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLENTLGlyOjpPUF9STkREKTsgYnJlYWs7Ci0tICAgICAg ICAgIGNhc2UgSW50cmluc2ljOjpzaW46IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6 Ok9QX1NJTik7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6Y29zOiB0aGlzLT5l bWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9DT1MpOyBicmVhazsKLS0gICAgICAgICAgY2Fz ZSBJbnRyaW5zaWM6OmxvZzI6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0xP Ryk7IGJyZWFrOwotLSAgICAgICAgICBjYXNlIEludHJpbnNpYzo6ZXhwMjogdGhpcy0+ZW1pdFVu YXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1BfRVhQKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgSW50 cmluc2ljOjpzcXJ0OiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9TUVIpOyBicmVh azsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmNlaWw6IHRoaXMtPmVtaXRSb3VuZGluZ0Nh bGxJbnN0KEksaXI6Ok9QX1JORFUpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6 OnRydW5jOiB0aGlzLT5lbWl0Um91bmRpbmdDYWxsSW5zdChJLGlyOjpPUF9STkRaKTsgYnJlYWs7 Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpyaW50OiB0aGlzLT5lbWl0Um91bmRpbmdDYWxs SW5zdChJLGlyOjpPUF9STkRFKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgSW50cmluc2ljOjpm bG9vcjogdGhpcy0+ZW1pdFJvdW5kaW5nQ2FsbEluc3QoSSxpcjo6T1BfUk5ERCk7IGJyZWFrOwot KyAgICAgICAgICBjYXNlIEludHJpbnNpYzo6c2luOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJ LGlyOjpPUF9TSU4pOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmNvczogdGhp cy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1BfQ09TKTsgYnJlYWs7Ci0rICAgICAgICAgIGNh c2UgSW50cmluc2ljOjpsb2cyOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9MT0cp OyBicmVhazsKLSsgICAgICAgICAgY2FzZSBJbnRyaW5zaWM6OmV4cDI6IHRoaXMtPmVtaXRVbmFy eUNhbGxJbnN0KEksaXI6Ok9QX0VYUCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEludHJpbnNp Yzo6YnN3YXA6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6 T1BfQlNXQVAsIGdldFVuc2lnbmVkVHlwZShjdHgsIEkuZ2V0VHlwZSgpKSk7IGJyZWFrOwotKyAg ICAgICAgICAgIHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksaXI6Ok9QX0JTV0FQLCBnZXRVbnNp Z25lZFR5cGUoY3R4LCBJLmdldFR5cGUoKSkpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBJbnRy aW5zaWM6OnBvdzoKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGNvbnN0IGlyOjpSZWdpc3Rl ciBzcmMwID0gdGhpcy0+Z2V0UmVnaXN0ZXIoKkFJKTsgKytBSTsKLUBAIC00Nzk0LDIxICs0Nzkz LDIwIEBACi0gICAgICAgICB9Ci0gICAgICAgfSBlbHNlIHsKLSAgICAgICAgIC8vIEdldCB0aGUg bmFtZSBvZiB0aGUgY2FsbGVkIGZ1bmN0aW9uIGFuZCBoYW5kbGUgaXQKLS0gICAgICAgIFZhbHVl ICpDYWxsZWUgPSBJLmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgICBjb25zdCBzdGQ6OnN0cmlu ZyBmbk5hbWUgPSBDYWxsZWUtPnN0cmlwUG9pbnRlckNhc3RzKCktPmdldE5hbWUoKTsKLSsgICAg ICAgIFZhbHVlICpDYWxsZWUgPSBJLmdldENhbGxlZE9wZXJhbmQoKTsKLSsgICAgICAgIGNvbnN0 IHN0ZDo6c3RyaW5nIGZuTmFtZSA9IENhbGxlZS0+c3RyaXBQb2ludGVyQ2FzdHMoKS0+Z2V0TmFt ZSgpLnN0cigpOwotICAgICAgICAgYXV0byBnZW5JbnRyaW5zaWNJRCA9IGludHJpbnNpY01hcC5m aW5kKGZuTmFtZSk7Ci0KLSAgICAgICAgIC8vIEdldCB0aGUgZnVuY3Rpb24gYXJndW1lbnRzCi0t ICAgICAgICBDYWxsU2l0ZSBDUygmSSk7Ci0tICAgICAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9y IEFJID0gQ1MuYXJnX2JlZ2luKCk7Ci0rICAgICAgICBVc2VyOjpvcF9pdGVyYXRvciBBSSA9IEku YXJnX2JlZ2luKCk7Ci0gI2lmIEdCRV9ERUJVRwotLSAgICAgICAgQ2FsbFNpdGU6OmFyZ19pdGVy YXRvciBBRSA9IENTLmFyZ19lbmQoKTsKLSsgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9yIEFFID0g SS5hcmdfZW5kKCk7Ci0gI2VuZGlmIC8qIEdCRV9ERUJVRyAqLwotCi0gICAgICAgICBzd2l0Y2gg KGdlbkludHJpbnNpY0lEKSB7Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkg6IHRoaXMtPmVt aXRVbmFyeUNhbGxJbnN0KEksQ1MsaXI6Ok9QX0ZCSCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0t ICAgICAgICAgIGNhc2UgR0VOX09DTF9GQkw6IHRoaXMtPmVtaXRVbmFyeUNhbGxJbnN0KEksQ1Ms aXI6Ok9QX0ZCTCwgaXI6OlRZUEVfVTMyKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgR0VOX09D TF9DQklUOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLENTLGlyOjpPUF9DQklULCBnZXRVbnNp Z25lZFR5cGUoY3R4LCAoKkFJKS0+Z2V0VHlwZSgpKSk7IGJyZWFrOwotKyAgICAgICAgICBjYXNl IEdFTl9PQ0xfRkJIOiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9GQkgsIGlyOjpU WVBFX1UzMik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfRkJMOiB0aGlzLT5lbWl0 VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9GQkwsIGlyOjpUWVBFX1UzMik7IGJyZWFrOwotKyAgICAg ICAgICBjYXNlIEdFTl9PQ0xfQ0JJVDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6T1Bf Q0JJVCwgZ2V0VW5zaWduZWRUeXBlKGN0eCwgKCpBSSktPmdldFR5cGUoKSkpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX0FCUzoKLSAgICAgICAgICAgewotICAgICAgICAgICAgIGNv bnN0IGlyOjpSZWdpc3RlciBzcmMgPSB0aGlzLT5nZXRSZWdpc3RlcigqQUkpOwotQEAgLTQ5MTUs OCArNDkxMyw4IEBACi0gICAgICAgICAgICAgY3R4LlJFR0lPTihkc3QsIHNyYywgeC5nZXRJbnRl Z2VyVmFsdWUoKSk7Ci0gICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgIH0KLS0gICAgICAg ICAgY2FzZSBHRU5fT0NMX1JTUTogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxDUyxpcjo6T1Bf UlNRKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9SQ1A6IHRoaXMtPmVtaXRVbmFy eUNhbGxJbnN0KEksQ1MsaXI6Ok9QX1JDUCk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9P Q0xfUlNROiB0aGlzLT5lbWl0VW5hcnlDYWxsSW5zdChJLGlyOjpPUF9SU1EpOyBicmVhazsKLSsg ICAgICAgICAgY2FzZSBHRU5fT0NMX1JDUDogdGhpcy0+ZW1pdFVuYXJ5Q2FsbEluc3QoSSxpcjo6 T1BfUkNQKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9GT1JDRV9TSU1EODogY3R4 LnNldFNpbWRXaWR0aCg4KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9GT1JDRV9T SU1EMTY6IGN0eC5zZXRTaW1kV2lkdGgoMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX0xCQVJSSUVSOiBjdHguU1lOQyhpcjo6c3luY0xvY2FsQmFycmllcik7IGJyZWFrOwotQEAg LTQ5NDcsMzEgKzQ5NDUsMzEgQEAKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgfQot ICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0FERDA6Ci0tICAgICAgICAgIGNhc2UgR0VO X09DTF9BVE9NSUNfQUREMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09Q X0FERCk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0FERDE6IHRoaXMt PmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9BREQpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX0FUT01JQ19TVUIwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlD X1NVQjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9TVUIpOyBicmVh azsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19TVUIxOiB0aGlzLT5lbWl0QXRvbWlj SW5zdChJLGlyOjpBVE9NSUNfT1BfU1VCKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9BVE9NSUNfQU5EMDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19BTkQxOiB0aGlz LT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1BfQU5EKTsgYnJlYWs7Ci0rICAgICAg ICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQU5EMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6 QVRPTUlDX09QX0FORCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX09S MDoKLS0gICAgICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19PUjE6IHRoaXMtPmVtaXRBdG9taWNJ bnN0KEksQ1MsaXI6OkFUT01JQ19PUF9PUik7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9P Q0xfQVRPTUlDX09SMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX09SKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWE9SMDoKLS0gICAgICAgICAg Y2FzZSBHRU5fT0NMX0FUT01JQ19YT1IxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpB VE9NSUNfT1BfWE9SKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfWE9S MTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxpcjo6QVRPTUlDX09QX1hPUik7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hDSEcwOgotLSAgICAgICAgICBjYXNlIEdFTl9P Q0xfQVRPTUlDX1hDSEcxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLENTLGlyOjpBVE9NSUNfT1Bf WENIRyk7IGJyZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX1hDSEcxOiB0aGlz LT5lbWl0QXRvbWljSW5zdChJLGlyOjpBVE9NSUNfT1BfWENIRyk7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0lOQzA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfSU5DMTogdGhpcy0+ZW1pdEF0b21pY0luc3QoSSxDUyxpcjo6QVRPTUlDX09QX0lOQyk7IGJy ZWFrOwotKyAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0lOQzE6IHRoaXMtPmVtaXRBdG9t aWNJbnN0KEksaXI6OkFUT01JQ19PUF9JTkMpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX0FUT01JQ19ERUMwOgotLSAgICAgICAgICBjYXNlIEdFTl9PQ0xfQVRPTUlDX0RFQzE6IHRo aXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9ERUMpOyBicmVhazsKLSsgICAg ICAgICAgY2FzZSBHRU5fT0NMX0FUT01JQ19ERUMxOiB0aGlzLT5lbWl0QXRvbWljSW5zdChJLGly OjpBVE9NSUNfT1BfREVDKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNf VU1JTjA6Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfVU1JTjE6IHRoaXMtPmVtaXRB dG9taWNJbnN0KEksQ1MsaXI6OkFUT01JQ19PUF9VTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgIGNh c2UgR0VOX09DTF9BVE9NSUNfVU1JTjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01J Q19PUF9VTUlOKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfVU1BWDA6 Ci0tICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfVU1BWDE6IHRoaXMtPmVtaXRBdG9taWNJ bnN0KEksQ1MsaXI6OkFUT01JQ19PUF9VTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VO X09DTF9BVE9NSUNfVU1BWDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9V TUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU1JTjA6Ci0tICAg ICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU1JTjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEks Q1MsaXI6OkFUT01JQ19PUF9JTUlOKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9B VE9NSUNfSU1JTjE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9JTUlOKTsg YnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfSU1BWDA6Ci0tICAgICAgICAg IGNhc2UgR0VOX09DTF9BVE9NSUNfSU1BWDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6 OkFUT01JQ19PUF9JTUFYKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNf SU1BWDE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9JTUFYKTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9NSUNfQ01QWENIRzA6Ci0tICAgICAgICAgIGNh c2UgR0VOX09DTF9BVE9NSUNfQ01QWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksQ1MsaXI6 OkFUT01JQ19PUF9DTVBYQ0hHKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9BVE9N SUNfQ01QWENIRzE6IHRoaXMtPmVtaXRBdG9taWNJbnN0KEksaXI6OkFUT01JQ19PUF9DTVBYQ0hH KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9HRVRfSU1BR0VfV0lEVEg6Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9HRVRfSU1BR0VfSEVJR0hUOgotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfR0VUX0lNQUdFX0RFUFRIOgotQEAgLTU0MjksNDggKzU0MjcsNDggQEAKLSAgICAgICAg ICAgICBjdHguV0FJVCgpOwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICB9Ci0tICAg ICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX0FMTDogdGhpcy0+ZW1pdFdvcmtHcm91cElu c3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfQUxMKTsgYnJlYWs7Ci0tICAgICAgICAgIGNhc2Ug R0VOX09DTF9XT1JLX0dST1VQX0FOWTogdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGly OjpXT1JLR1JPVVBfT1BfQU5ZKTsgYnJlYWs7Ci0rICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JL X0dST1VQX0FMTDogdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9B TEwpOyBicmVhazsKLSsgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfQU5ZOiB0aGlz LT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0FOWSk7IGJyZWFrOwotICAg ICAgICAgICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9CUk9BRENBU1Q6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfQlJPQURDQVNU KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldP UktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dP UktfR1JPVVBfUkVEVUNFX0FERDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5z dChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfQUREKTsgYnJlYWs7Ci0rICAgICAgICAg ICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfQURE KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9XT1JLX0dST1VQX1JFRFVDRV9NQVg6 Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdFdvcmtHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JP VVBfT1BfUkVEVUNFX01BWCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3Jv dXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01BWCk7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfV09SS19HUk9VUF9SRURVQ0VfTUlOOgotLSAgICAgICAgICAgIHRoaXMt PmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX1JFRFVDRV9NSU4pOyBi cmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dS T1VQX09QX1JFRFVDRV9NSU4pOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktf R1JPVVBfU0NBTl9FWENMVVNJVkVfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3Jv dXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9BREQpOyBicmVhazsKLSsg ICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VY Q0xVU0lWRV9BREQpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBf U0NBTl9FWENMVVNJVkVfTUFYOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0 KEksIENTLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NQVgpOyBicmVhazsKLSsgICAgICAg ICAgICB0aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lW RV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfU0NBTl9F WENMVVNJVkVfTUlOOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENT LCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NSU4pOyBicmVhazsKLSsgICAgICAgICAgICB0 aGlzLT5lbWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0VYQ0xVU0lWRV9NSU4p OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfU0NBTl9JTkNMVVNJ VkVfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6 V09SS0dST1VQX09QX0lOQ0xVU0lWRV9BREQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5l bWl0V29ya0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9BREQpOyBicmVh azsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfU0NBTl9JTkNMVVNJVkVfTUFY OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dS T1VQX09QX0lOQ0xVU0lWRV9NQVgpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29y a0dyb3VwSW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NQVgpOyBicmVhazsKLSAg ICAgICAgICAgY2FzZSBHRU5fT0NMX1dPUktfR1JPVVBfU0NBTl9JTkNMVVNJVkVfTUlOOgotLSAg ICAgICAgICAgIHRoaXMtPmVtaXRXb3JrR3JvdXBJbnN0KEksIENTLCBpcjo6V09SS0dST1VQX09Q X0lOQ0xVU0lWRV9NSU4pOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0V29ya0dyb3Vw SW5zdChJLCBpcjo6V09SS0dST1VQX09QX0lOQ0xVU0lWRV9NSU4pOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CUk9BRENBU1Q6Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9CUk9BRENBU1QpOyBicmVh azsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBf T1BfQlJPQURDQVNUKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf UkVEVUNFX0FERDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0U3ViR3JvdXBJbnN0KEksIENTLCBp cjo6V09SS0dST1VQX09QX1JFRFVDRV9BREQpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5l bWl0U3ViR3JvdXBJbnN0KEksIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX0FERCk7IGJyZWFrOwot ICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX1JFRFVDRV9NQVg6Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBDUywgaXI6OldPUktHUk9VUF9PUF9SRURVQ0Vf TUFYKTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdFN1Ykdyb3VwSW5zdChJLCBpcjo6 V09SS0dST1VQX09QX1JFRFVDRV9NQVgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X1NVQl9HUk9VUF9SRURVQ0VfTUlOOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cElu c3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfUkVEVUNFX01JTik7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9SRURVQ0VfTUlO KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfU0NBTl9FWENMVVNJ VkVfQUREOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpX T1JLR1JPVVBfT1BfRVhDTFVTSVZFX0FERCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfQUREKTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfU0NBTl9FWENMVVNJVkVfTUFYOgot LSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBf T1BfRVhDTFVTSVZFX01BWCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91 cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUFYKTsgYnJlYWs7Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfU0NBTl9FWENMVVNJVkVfTUlOOgotLSAgICAgICAg ICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfRVhDTFVT SVZFX01JTik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwg aXI6OldPUktHUk9VUF9PUF9FWENMVVNJVkVfTUlOKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfU0NBTl9JTkNMVVNJVkVfQUREOgotLSAgICAgICAgICAgIHRoaXMt PmVtaXRTdWJHcm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX0FERCk7 IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktH Uk9VUF9PUF9JTkNMVVNJVkVfQUREKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfU0NBTl9JTkNMVVNJVkVfTUFYOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJH cm91cEluc3QoSSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01BWCk7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9J TkNMVVNJVkVfTUFYKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBf U0NBTl9JTkNMVVNJVkVfTUlOOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3Qo SSwgQ1MsIGlyOjpXT1JLR1JPVVBfT1BfSU5DTFVTSVZFX01JTik7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRTdWJHcm91cEluc3QoSSwgaXI6OldPUktHUk9VUF9PUF9JTkNMVVNJVkVf TUlOKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9MUlA6Ci0gICAgICAgICAgIHsK LSAgICAgICAgICAgICBjb25zdCBpcjo6UmVnaXN0ZXIgZHN0ICA9IHRoaXMtPmdldFJlZ2lzdGVy KCZJKTsKLUBAIC01NDg0LDY5ICs1NDgyLDY5IEBACi0gICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgIH0KLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJ X01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENT LCBmYWxzZSwgMSk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZU1lbUluc3QoSSwgZmFsc2UsIDEpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NV Ql9HUk9VUF9CTE9DS19SRUFEX1VJX01FTTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2Nr UmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDIpOyBicmVhazsKLSsgICAgICAgICAgICB0 aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIGZhbHNlLCAyKTsgYnJlYWs7Ci0gICAg ICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9NRU00OgotLSAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCA0KTsg YnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBm YWxzZSwgNCk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NL X1JFQURfVUlfTUVNODoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1J bnN0KEksIENTLCBmYWxzZSwgOCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2UsIDgpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBH RU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VSV9NRU06Ci0tICAgICAgICAgICAgdGhpcy0+ ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgMSk7IGJyZWFrOwotKyAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgMSk7IGJyZWFr OwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJX01FTTI6 Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1 ZSwgMik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUlu c3QoSSwgdHJ1ZSwgMik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQ X0JMT0NLX1dSSVRFX1VJX01FTTQ6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgNCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgNCk7IGJyZWFrOwotICAgICAgICAgICBj YXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJX01FTTg6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgdHJ1ZSwgOCk7IGJyZWFrOwot KyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgOCk7 IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlf SU1BR0U6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEks IENTLCBmYWxzZSwgMSk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZUltYWdlSW5zdChJLCBmYWxzZSwgMSk7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9P Q0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVUlfSU1BR0UyOgotLSAgICAgICAgICAgIHRoaXMtPmVt aXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDIpOyBicmVhazsKLSsgICAg ICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgZmFsc2UsIDIpOyBi cmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VJX0lN QUdFNDoKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwg Q1MsIGZhbHNlLCA0KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KEksIGZhbHNlLCA0KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09D TF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VSV9JTUFHRTg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1p dEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgOCk7IGJyZWFrOwotKyAgICAg ICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBmYWxzZSwgOCk7IGJy ZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VJX0lN QUdFOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBD UywgdHJ1ZSwgMSk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZUltYWdlSW5zdChJLCB0cnVlLCAxKTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9T VUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfSU1BR0UyOgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRC bG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgMik7IGJyZWFrOwotKyAgICAgICAg ICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCAyKTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVUlfSU1BR0U0 OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywg dHJ1ZSwgNCk7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUlt YWdlSW5zdChJLCB0cnVlLCA0KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJf R1JPVVBfQkxPQ0tfV1JJVEVfVUlfSU1BR0U4OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9j a1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgOCk7IGJyZWFrOwotKyAgICAgICAgICAg IHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCB0cnVlLCA4KTsgYnJlYWs7Ci0g ICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19NRU06Ci0tICAg ICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDEs IGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRX cml0ZU1lbUluc3QoSSwgZmFsc2UsIDEsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfTUVNMjoKLS0gICAgICAgICAg ICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCBmYWxzZSwgMiwgaXI6OlRZ UEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVt SW5zdChJLCBmYWxzZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19NRU00OgotLSAgICAgICAgICAgIHRoaXMt PmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgQ1MsIGZhbHNlLCA0LCBpcjo6VFlQRV9VMTYp OyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEks IGZhbHNlLCA0LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NM X1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX01FTTg6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJs b2NrUmVhZFdyaXRlTWVtSW5zdChJLCBDUywgZmFsc2UsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFr OwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgZmFsc2Us IDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dS T1VQX0JMT0NLX1dSSVRFX1VTX01FTToKLS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFk V3JpdGVNZW1JbnN0KEksIENTLCB0cnVlLCAxLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAg ICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIHRydWUsIDEsIGlyOjpU WVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NL X1dSSVRFX1VTX01FTTI6Ci0tICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVt SW5zdChJLCBDUywgdHJ1ZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlTWVtSW5zdChJLCB0cnVlLCAyLCBpcjo6VFlQRV9VMTYp OyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9V U19NRU00OgotLSAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwg Q1MsIHRydWUsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVt aXRCbG9ja1JlYWRXcml0ZU1lbUluc3QoSSwgdHJ1ZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7 Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfTUVNODoK LS0gICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVNZW1JbnN0KEksIENTLCB0cnVl LCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tS ZWFkV3JpdGVNZW1JbnN0KEksIHRydWUsIDgsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAg ICAgICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfSU1BR0U6Ci0tICAgICAg ICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgMSwg aXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdy aXRlSW1hZ2VJbnN0KEksIGZhbHNlLCAxLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAg ICAgY2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19SRUFEX1VTX0lNQUdFMjoKLS0gICAgICAg ICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIGZhbHNlLCAyLCBp cjo6VFlQRV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3Jp dGVJbWFnZUluc3QoSSwgZmFsc2UsIDIsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAg ICBjYXNlIEdFTl9PQ0xfU1VCX0dST1VQX0JMT0NLX1JFQURfVVNfSU1BR0U0OgotLSAgICAgICAg ICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgZmFsc2UsIDQsIGly OjpUWVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0 ZUltYWdlSW5zdChJLCBmYWxzZSwgNCwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAg IGNhc2UgR0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfUkVBRF9VU19JTUFHRTg6Ci0tICAgICAgICAg ICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCBmYWxzZSwgOCwgaXI6 OlRZUEVfVTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRl SW1hZ2VJbnN0KEksIGZhbHNlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAg Y2FzZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19JTUFHRToKLS0gICAgICAgICAg ICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIHRydWUsIDEsIGlyOjpU WVBFX1UxNik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUlt YWdlSW5zdChJLCB0cnVlLCAxLCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2Fz ZSBHRU5fT0NMX1NVQl9HUk9VUF9CTE9DS19XUklURV9VU19JTUFHRTI6Ci0tICAgICAgICAgICAg dGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJbnN0KEksIENTLCB0cnVlLCAyLCBpcjo6VFlQ RV9VMTYpOyBicmVhazsKLSsgICAgICAgICAgICB0aGlzLT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFn ZUluc3QoSSwgdHJ1ZSwgMiwgaXI6OlRZUEVfVTE2KTsgYnJlYWs7Ci0gICAgICAgICAgIGNhc2Ug R0VOX09DTF9TVUJfR1JPVVBfQkxPQ0tfV1JJVEVfVVNfSU1BR0U0OgotLSAgICAgICAgICAgIHRo aXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5zdChJLCBDUywgdHJ1ZSwgNCwgaXI6OlRZUEVf VTE2KTsgYnJlYWs7Ci0rICAgICAgICAgICAgdGhpcy0+ZW1pdEJsb2NrUmVhZFdyaXRlSW1hZ2VJ bnN0KEksIHRydWUsIDQsIGlyOjpUWVBFX1UxNik7IGJyZWFrOwotICAgICAgICAgICBjYXNlIEdF Tl9PQ0xfU1VCX0dST1VQX0JMT0NLX1dSSVRFX1VTX0lNQUdFODoKLS0gICAgICAgICAgICB0aGlz LT5lbWl0QmxvY2tSZWFkV3JpdGVJbWFnZUluc3QoSSwgQ1MsIHRydWUsIDgsIGlyOjpUWVBFX1Ux Nik7IGJyZWFrOwotKyAgICAgICAgICAgIHRoaXMtPmVtaXRCbG9ja1JlYWRXcml0ZUltYWdlSW5z dChJLCB0cnVlLCA4LCBpcjo6VFlQRV9VMTYpOyBicmVhazsKLSAgICAgICAgICAgY2FzZSBHRU5f T0NMX0dFVF9QSVBFOgotICAgICAgICAgICBjYXNlIEdFTl9PQ0xfTUFLRV9SSUQ6Ci0gICAgICAg ICAgIGNhc2UgR0VOX09DTF9HRVRfUklEOgotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX2lu Y2x1ZGVzLmhwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFj a2VuZC9zcmMvbGx2bS9sbHZtX2luY2x1ZGVzLmhwcAkyMDIwLTExLTA5IDE5OjAwOjA5Ljk1NTky Njc5NSArMDEwMAotQEAgLTEwMyw3ICsxMDMsNiBAQAotCi0gI2lmIExMVk1fVkVSU0lPTl9NQUpP UiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDM1Ci0gI2luY2x1ZGUgImxsdm0vSVIvTWFu Z2xlci5oIgotLSNpbmNsdWRlICJsbHZtL0lSL0NhbGxTaXRlLmgiCi0gI2luY2x1ZGUgImxsdm0v SVIvQ0ZHLmgiCi0gI2luY2x1ZGUgImxsdm0vSVIvSW5zdFZpc2l0b3IuaCIKLSAjaW5jbHVkZSAi bGx2bS9JUi9JUlByaW50aW5nUGFzc2VzLmgiCi0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f bG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIg KzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9sb2Fkc3RvcmVfb3B0aW1pemF0aW9u LmNwcAkyMDIwLTExLTA5IDE5OjEwOjM3LjE0MTg1MjMwOCArMDEwMAotQEAgLTE2MCw3ICsxNjAs NyBAQAotICAgICBWYWx1ZSAqdmVjUHRyID0gQnVpbGRlci5DcmVhdGVCaXRDYXN0KGxkLT5nZXRQ b2ludGVyT3BlcmFuZCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQb2ludGVyVHlwZTo6Z2V0KHZlY1R5LCBhZGRyU3BhY2UpKTsKLSAgICAgTG9hZEluc3QgKnZl Y1ZhbHVlID0gQnVpbGRlci5DcmVhdGVMb2FkKHZlY1B0cik7Ci0tICAgIHZlY1ZhbHVlLT5zZXRB bGlnbm1lbnQoYWxpZ24pOwotKyAgICB2ZWNWYWx1ZS0+c2V0QWxpZ25tZW50KGFsaWduLnZhbHVl T3JPbmUoKSk7Ci0KLSAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHNpemU7ICsraSkgewot ICAgICAgIFZhbHVlICpTID0gQnVpbGRlci5DcmVhdGVFeHRyYWN0RWxlbWVudCh2ZWNWYWx1ZSwg QnVpbGRlci5nZXRJbnQzMihpKSk7Ci1AQCAtMjUxLDcgKzI1MSw3IEBACi0gICAgICAgcmV0dXJu OwotICAgICBWYWx1ZSAqbmV3UHRyID0gQnVpbGRlci5DcmVhdGVCaXRDYXN0KHN0UG9pbnRlciwg UG9pbnRlclR5cGU6OmdldCh2ZWNUeSwgYWRkclNwYWNlKSk7Ci0gICAgIFN0b3JlSW5zdCAqbmV3 U1QgPSBCdWlsZGVyLkNyZWF0ZVN0b3JlKHBhcmVudCwgbmV3UHRyKTsKLS0gICAgbmV3U1QtPnNl dEFsaWdubWVudChhbGlnbik7Ci0rICAgIG5ld1NULT5zZXRBbGlnbm1lbnQoYWxpZ24udmFsdWVP ck9uZSgpKTsKLSAgIH0KLQotICAgLy8gRmluZCB0aGUgc2FmZSBpdGVyYXRvciB3ZSBjYW4gcG9p bnQgdG8uIElmIHJlb3JkZXIgaGFwcGVucywgd2UgbmVlZCB0bwotLS0tIGEvYmFja2VuZC9zcmMv bGx2bS9sbHZtX3Bhc3Nlcy5jcHAJMjAyMC0xMS0wOSAxNjo0ODoyMC44MjM4NjYxMTIgKzAxMDAK LSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wYXNzZXMuY3BwCTIwMjAtMTEtMDkgMTg6NDg6 NTUuOTk3MDA2ODM3ICswMTAwCi1AQCAtOTUsNyArOTUsNyBAQAotICAgewotICAgICBzd2l0Y2gg KFR5LT5nZXRUeXBlSUQoKSkgewotICAgICAgIGNhc2UgVHlwZTo6Vm9pZFR5SUQ6IE5PVF9TVVBQ T1JURUQ7Ci0tICAgICAgY2FzZSBUeXBlOjpWZWN0b3JUeUlEOgotKyAgICAgIGNhc2UgVHlwZTo6 Rml4ZWRWZWN0b3JUeUlEOgotICAgICAgIHsKLSAgICAgICAgIGNvbnN0IFZlY3RvclR5cGUqIFZl Y1R5ID0gY2FzdDxWZWN0b3JUeXBlPihUeSk7Ci0gICAgICAgICB1aW50MzJfdCBlbGVtTnVtID0g VmVjVHktPmdldE51bUVsZW1lbnRzKCk7Ci1AQCAtMTM4LDcgKzEzOCw3IEBACi0gICAgICAgY2Fz ZSBUeXBlOjpIYWxmVHlJRDogICAgcmV0dXJuIDE2OwotICAgICAgIGNhc2UgVHlwZTo6RmxvYXRU eUlEOiAgIHJldHVybiAzMjsKLSAgICAgICBjYXNlIFR5cGU6OkRvdWJsZVR5SUQ6ICByZXR1cm4g NjQ7Ci0tICAgICAgY2FzZSBUeXBlOjpWZWN0b3JUeUlEOgotKyAgICAgIGNhc2UgVHlwZTo6Rml4 ZWRWZWN0b3JUeUlEOgotICAgICAgIHsKLSAgICAgICAgIGNvbnN0IFZlY3RvclR5cGUqIFZlY1R5 ID0gY2FzdDxWZWN0b3JUeXBlPihUeSk7Ci0gICAgICAgICB1aW50MzJfdCBudW1FbGVtID0gVmVj VHktPmdldE51bUVsZW1lbnRzKCk7Ci1AQCAtMTg0LDEwICsxODQsMTIgQEAKLSAgICAgVHlwZSAq ZWxlbWVudFR5cGUgPSBOVUxMOwotICAgICBpZiAoUG9pbnRlclR5cGUqIHB0clR5cGUgPSBkeW5f Y2FzdDxQb2ludGVyVHlwZT4oZWx0VHkpKQotICAgICAgIGVsZW1lbnRUeXBlID0gcHRyVHlwZS0+ Z2V0RWxlbWVudFR5cGUoKTsKLS0gICAgZWxzZSBpZihTZXF1ZW50aWFsVHlwZSAqIHNlcVR5cGUg PSBkeW5fY2FzdDxTZXF1ZW50aWFsVHlwZT4oZWx0VHkpKQotLSAgICAgIGVsZW1lbnRUeXBlID0g c2VxVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLS0gICAgZWxzZSBpZihDb21wb3NpdGVUeXBlICog Y29tcFR5PSBkeW5fY2FzdDxDb21wb3NpdGVUeXBlPihlbHRUeSkpCi0tICAgICAgZWxlbWVudFR5 cGUgPSBjb21wVHktPmdldFR5cGVBdEluZGV4KGluZGV4KTsKLSsgICAgZWxzZSBpZiAoQXJyYXlU eXBlICogYXJyVHlwZSA9IGR5bl9jYXN0PEFycmF5VHlwZT4oZWx0VHkpKQotKyAgICAgIGVsZW1l bnRUeXBlID0gYXJyVHlwZS0+Z2V0RWxlbWVudFR5cGUoKTsKLSsgICAgZWxzZSBpZihWZWN0b3JU eXBlICogdmVjVHlwZSA9IGR5bl9jYXN0PFZlY3RvclR5cGU+KGVsdFR5KSkKLSsgICAgICBlbGVt ZW50VHlwZSA9IHZlY1R5cGUtPmdldEVsZW1lbnRUeXBlKCk7Ci0rICAgIGVsc2UgaWYoU3RydWN0 VHlwZSAqIHN0cnVjdFR5cGUgPSBkeW5fY2FzdDxTdHJ1Y3RUeXBlPihlbHRUeSkpCi0rICAgICAg ZWxlbWVudFR5cGUgPSBzdHJ1Y3RUeXBlLT5nZXRUeXBlQXRJbmRleChpbmRleCk7Ci0gICAgIEdC RV9BU1NFUlQoZWxlbWVudFR5cGUpOwotICAgICByZXR1cm4gZWxlbWVudFR5cGU7Ci0gICB9Ci0t LS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAJMjAyMC0xMS0wOSAx Njo0ODoyMC44MjM4NjYxMTIgKzAxMDAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9wcmlu dGZfcGFyc2VyLmNwcAkyMDIwLTExLTA5IDE4OjU3OjUyLjYxODk0MzEwNSArMDEwMAotQEAgLTMy Myw4ICszMjMsNyBAQAotCi0gICBib29sIFByaW50ZlBhcnNlcjo6cGFyc2VPbmVQcmludGZJbnN0 cnVjdGlvbihDYWxsSW5zdCAqIGNhbGwpCi0gICB7Ci0tICAgIENhbGxTaXRlIENTKGNhbGwpOwot LSAgICBDYWxsU2l0ZTo6YXJnX2l0ZXJhdG9yIENJX0ZNVCA9IENTLmFyZ19iZWdpbigpOwotKyAg ICBVc2VyOjpvcF9pdGVyYXRvciBDSV9GTVQgPSBjYWxsLT5hcmdfYmVnaW4oKTsKLSAgICAgaW50 IHBhcmFtX251bSA9IDA7Ci0KLSAgICAgbGx2bTo6Q29uc3RhbnQqIGFyZzAgPSBkeW5fY2FzdDxs bHZtOjpDb25zdGFudEV4cHI+KCpDSV9GTVQpOwotQEAgLTM0MSw3ICszNDAsNyBAQAotICAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgfQotCi0tICAgIHN0ZDo6c3RyaW5nIGZtdCA9IGZtdF9hcmct PmdldEFzQ1N0cmluZygpOwotKyAgICBzdGQ6OnN0cmluZyBmbXQgPSBmbXRfYXJnLT5nZXRBc0NT dHJpbmcoKS5zdHIoKTsKLSAgICAgaWYgKGZtdC5zaXplKCkgPT0gMCkKLSAgICAgICByZXR1cm4g ZmFsc2U7Ci0KLUBAIC00MzcsOCArNDM2LDggQEAKLSAgICAgICAgIGlmICggY2FsbEZ1bmMtPmdl dEludHJpbnNpY0lEKCkgIT0gMCkKLSAgICAgICAgICAgY29udGludWU7Ci0KLS0gICAgICAgIFZh bHVlICpDYWxsZWUgPSBjYWxsLT5nZXRDYWxsZWRWYWx1ZSgpOwotLSAgICAgICAgY29uc3Qgc3Rk OjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCk7Ci0rICAgICAgICBWYWx1ZSAqQ2Fs bGVlID0gY2FsbC0+Z2V0Q2FsbGVkT3BlcmFuZCgpOwotKyAgICAgICAgY29uc3Qgc3RkOjpzdHJp bmcgZm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCkuc3RyKCk7Ci0KLSAgICAgICAgIGlmIChmbk5h bWUgIT0gIl9fZ2VuX29jbF9wcmludGZfc3R1YiIgJiYgZm5OYW1lICE9ICJfX2dlbl9vY2xfcHV0 c19zdHViIikKLSAgICAgICAgICAgY29udGludWU7Ci1AQCAtNTgyLDcgKzU4MSw3IEBACi0gICAg ICAgICAgICAgaWYgKCFmbXRfYXJnIHx8ICFmbXRfYXJnLT5pc0NTdHJpbmcoKSkgewotICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgICBzbG90 LnN0YXRlLnN0ciA9IGZtdF9hcmctPmdldEFzQ1N0cmluZygpOwotKyAgICAgICAgICAgIHNsb3Qu c3RhdGUuc3RyID0gZm10X2FyZy0+Z2V0QXNDU3RyaW5nKCkuc3RyKCk7Ci0gICAgICAgICAgICAg cmV0dXJuIHRydWU7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgY2FzZSBQUklOVEZfQ09OVkVS U0lPTl9QOiB7Ci1AQCAtNTk1LDEwICs1OTQsMTAgQEAKLQotICAgICAgICAgYnJlYWs7Ci0KLS0g ICAgICBjYXNlIFR5cGU6OlZlY3RvclR5SUQ6IHsKLS0gICAgICAgIFR5cGUqIHZlY3RfdHlwZSA9 IGFyZy0+Z2V0VHlwZSgpOwotLSAgICAgICAgVHlwZSogZWx0X3R5cGUgPSB2ZWN0X3R5cGUtPmdl dFZlY3RvckVsZW1lbnRUeXBlKCk7Ci0tICAgICAgICBpbnQgdmVjX251bSA9IHZlY3RfdHlwZS0+ Z2V0VmVjdG9yTnVtRWxlbWVudHMoKTsKLSsgICAgICBjYXNlIFR5cGU6OkZpeGVkVmVjdG9yVHlJ RDogewotKyAgICAgICAgVmVjdG9yVHlwZSogdmVjdF90eXBlID0gZHluX2Nhc3Q8VmVjdG9yVHlw ZT4oYXJnLT5nZXRUeXBlKCkpOwotKyAgICAgICAgVHlwZSogZWx0X3R5cGUgPSB2ZWN0X3R5cGUt PmdldEVsZW1lbnRUeXBlKCk7Ci0rICAgICAgICBpbnQgdmVjX251bSA9IHZlY3RfdHlwZS0+Z2V0 TnVtRWxlbWVudHMoKTsKLSAgICAgICAgIGJvb2wgc2lnbiA9IGZhbHNlOwotCi0gICAgICAgICBp ZiAodmVjX251bSAhPSBzbG90LnN0YXRlLnZlY3Rvcl9uKSB7Ci0tLS0gYS9iYWNrZW5kL3NyYy9s bHZtL2xsdm1fcHJvZmlsaW5nLmNwcAkyMDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEw MAotKysrIGIvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Byb2ZpbGluZy5jcHAJMjAyMC0xMS0wOSAx ODo1OTo1MC4xMjA5MjkxNTAgKzAxMDAKLUBAIC0zNSw3ICszNSw2IEBACi0gI2luY2x1ZGUgImxs dm0vSVIvSVJCdWlsZGVyLmgiCi0KLSAjaWYgTExWTV9WRVJTSU9OX01BSk9SICogMTAgKyBMTFZN X1ZFUlNJT05fTUlOT1IgPj0gMzUKLS0jaW5jbHVkZSAibGx2bS9JUi9DYWxsU2l0ZS5oIgotICNp bmNsdWRlICJsbHZtL0lSL0NGRy5oIgotICNlbHNlCi0gI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9D YWxsU2l0ZS5oIgotLS0tIGEvYmFja2VuZC9zcmMvbGx2bS9sbHZtX3NhbXBsZXJfZml4LmNwcAky MDIwLTExLTA5IDE2OjQ4OjIwLjgyMzg2NjExMiArMDEwMAotKysrIGIvYmFja2VuZC9zcmMvbGx2 bS9sbHZtX3NhbXBsZXJfZml4LmNwcAkyMDIwLTExLTA5IDE3OjAxOjA5LjQwNzc3NDgzMiArMDEw MAotQEAgLTQ1LDggKzQ1LDggQEAKLSAgICAgYm9vbCB2aXNpdENhbGxJbnN0KENhbGxJbnN0ICpJ KSB7Ci0gICAgICAgaWYoIUkpCi0gICAgICAgICByZXR1cm4gZmFsc2U7Ci0tICAgICAgVmFsdWUg KkNhbGxlZSA9IEktPmdldENhbGxlZFZhbHVlKCk7Ci0tICAgICAgY29uc3Qgc3RkOjpzdHJpbmcg Zm5OYW1lID0gQ2FsbGVlLT5nZXROYW1lKCk7Ci0rICAgICAgVmFsdWUgKkNhbGxlZSA9IEktPmdl dENhbGxlZE9wZXJhbmQoKTsKLSsgICAgICBjb25zdCBzdGQ6OnN0cmluZyBmbk5hbWUgPSBDYWxs ZWUtPmdldE5hbWUoKS5zdHIoKTsKLSAgICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKLSAgICAg ICBUeXBlICpib29sVHkgPSBJbnRlZ2VyVHlwZTo6Z2V0KEktPmdldENvbnRleHQoKSwgMSk7Ci0g ICAgICAgVHlwZSAqaTMyVHkgPSBJbnRlZ2VyVHlwZTo6Z2V0KEktPmdldENvbnRleHQoKSwgMzIp OwotQEAgLTU5LDcgKzU5LDcgQEAKLSAgICAgICAgIFZhbHVlICpuZWVkRml4VmFsOwotICNpZiBM TFZNX1ZFUlNJT05fTUFKT1IgKiAxMCArIExMVk1fVkVSU0lPTl9NSU5PUiA+PSA0MAotICAgICAg ICAgQ2FsbEluc3QgKmluaXQgPSBkeW5fY2FzdDxDYWxsSW5zdD4oSS0+Z2V0T3BlcmFuZCgwKSk7 Ci0tICAgICAgICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxsZWRWYWx1ZSgpLT5nZXROYW1lKCku Y29tcGFyZSgiX190cmFuc2xhdGVfc2FtcGxlcl9pbml0aWFsaXplciIpKQotKyAgICAgICAgaWYg KGluaXQgJiYgaW5pdC0+Z2V0Q2FsbGVkT3BlcmFuZCgpLT5nZXROYW1lKCkuY29tcGFyZSgiX190 cmFuc2xhdGVfc2FtcGxlcl9pbml0aWFsaXplciIpKQotICAgICAgICAgewotICAgICAgICAgICBj b25zdCBDb25zdGFudEludCAqY2kgPSBkeW5fY2FzdDxDb25zdGFudEludD4oaW5pdC0+Z2V0T3Bl cmFuZCgwKSk7Ci0gICAgICAgICAgIHVpbnQzMl90IHNhbXBsZXJJbnQgPSBjaS0+Z2V0WkV4dFZh bHVlKCk7Ci1AQCAtMTEzLDcgKzExMyw3IEBACi0gICAgICAgICBWYWx1ZSAqbmVlZEZpeFZhbDsK LSAgI2lmIExMVk1fVkVSU0lPTl9NQUpPUiAqIDEwICsgTExWTV9WRVJTSU9OX01JTk9SID49IDQw Ci0gICAgICAgICBDYWxsSW5zdCAqaW5pdCA9IGR5bl9jYXN0PENhbGxJbnN0PihJLT5nZXRPcGVy YW5kKDApKTsKLS0gICAgICAgIGlmIChpbml0ICYmIGluaXQtPmdldENhbGxlZFZhbHVlKCktPmdl dE5hbWUoKS5jb21wYXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikpCi0rICAg ICAgICBpZiAoaW5pdCAmJiBpbml0LT5nZXRDYWxsZWRPcGVyYW5kKCktPmdldE5hbWUoKS5jb21w YXJlKCJfX3RyYW5zbGF0ZV9zYW1wbGVyX2luaXRpYWxpemVyIikpCi0gICAgICAgICB7Ci0gICAg ICAgICAgIGNvbnN0IENvbnN0YW50SW50ICpjaSA9IGR5bl9jYXN0PENvbnN0YW50SW50Pihpbml0 LT5nZXRPcGVyYW5kKDApKTsKLSAgICAgICAgICAgdWludDMyX3Qgc2FtcGxlckludCA9IGNpLT5n ZXRaRXh0VmFsdWUoKTsKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9zY2FsYXJpemUuY3Bw CTIwMjAtMTEtMDkgMTY6NDg6MjAuODIzODY2MTEyICswMTAwCi0rKysgYi9iYWNrZW5kL3NyYy9s bHZtL2xsdm1fc2NhbGFyaXplLmNwcAkyMDIwLTExLTA5IDE4OjUxOjE2Ljg4ODk5MDEwNCArMDEw MAotQEAgLTE3OCw3ICsxNzgsNyBAQAotICAgICAgIGlmKCF0eXBlKQotICAgICAgICAgcmV0dXJu IHR5cGU7Ci0gICAgICAgc3dpdGNoKHR5cGUtPmdldFR5cGVJRCgpKSB7Ci0tICAgICAgY2FzZSBU eXBlOjpWZWN0b3JUeUlEOgotKyAgICAgIGNhc2UgVHlwZTo6Rml4ZWRWZWN0b3JUeUlEOgotICAg ICAgIGNhc2UgVHlwZTo6QXJyYXlUeUlEOgotICAgICAgICAgcmV0dXJuIEdldEJhc2ljVHlwZSh0 eXBlLT5nZXRDb250YWluZWRUeXBlKDApKTsKLSAgICAgICBkZWZhdWx0OgotQEAgLTE4OCw3ICsx ODgsNyBAQAotICAgICB9Ci0KLSAgICAgaW50IEdldENvbXBvbmVudENvdW50KGNvbnN0IFR5cGUq IHR5cGUpICB7Ci0tICAgICAgaWYgKHR5cGUgJiYgdHlwZS0+Z2V0VHlwZUlEKCkgPT0gVHlwZTo6 VmVjdG9yVHlJRCkKLSsgICAgICBpZiAodHlwZSAmJiB0eXBlLT5nZXRUeXBlSUQoKSA9PSBUeXBl OjpGaXhlZFZlY3RvclR5SUQpCi0gICAgICAgICByZXR1cm4gbGx2bTo6ZHluX2Nhc3Q8VmVjdG9y VHlwZT4odHlwZSktPmdldE51bUVsZW1lbnRzKCk7Ci0gICAgICAgZWxzZQotICAgICAgICAgcmV0 dXJuIDE7Ci1AQCAtNjUyLDEzICs2NTIsMTIgQEAKLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg ICB9Ci0gICAgICAgfSBlbHNlIHsKLS0gICAgICAgIFZhbHVlICpDYWxsZWUgPSBjYWxsLT5nZXRD YWxsZWRWYWx1ZSgpOwotLSAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVl LT5nZXROYW1lKCk7Ci0rICAgICAgICBWYWx1ZSAqQ2FsbGVlID0gY2FsbC0+Z2V0Q2FsbGVkT3Bl cmFuZCgpOwotKyAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcgZm5OYW1lID0gQ2FsbGVlLT5nZXRO YW1lKCkuc3RyKCk7Ci0gICAgICAgICBhdXRvIGdlbkludHJpbnNpY0lEID0gaW50cmluc2ljTWFw LmZpbmQoZm5OYW1lKTsKLQotICAgICAgICAgLy8gR2V0IHRoZSBmdW5jdGlvbiBhcmd1bWVudHMK LS0gICAgICAgIENhbGxTaXRlIENTKGNhbGwpOwotLSAgICAgICAgQ2FsbFNpdGU6OmFyZ19pdGVy YXRvciBDSSA9IENTLmFyZ19iZWdpbigpICsgMTsKLSsgICAgICAgIFVzZXI6Om9wX2l0ZXJhdG9y IENJID0gY2FsbC0+YXJnX2JlZ2luKCkgKyAxOwotCi0gICAgICAgICBzd2l0Y2ggKGdlbkludHJp bnNpY0lEKSB7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9OT1RfRk9VTkQ6Ci1AQCAtNzI5LDcg KzcyOCw3IEBACi0gICAgICAgICAgICAgZXh0cmFjdEZyb21WZWN0b3IoY2FsbCk7Ci0gICAgICAg ICAgICAgYnJlYWs7Ci0gICAgICAgICAgIGNhc2UgR0VOX09DTF9QUklOVEY6Ci0tICAgICAgICAg ICAgZm9yICg7IENJICE9IENTLmFyZ19lbmQoKTsgKytDSSkKLSsgICAgICAgICAgICBmb3IgKDsg Q0kgIT0gY2FsbC0+YXJnX2VuZCgpOyArK0NJKQotICAgICAgICAgICAgICAgaWYgKCgqQ0kpLT5n ZXRUeXBlKCktPmlzVmVjdG9yVHkoKSkKLSAgICAgICAgICAgICAgICAgKkNJID0gSW5zZXJ0VG9W ZWN0b3IoY2FsbCwgKkNJKTsKLSAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvYmVpZ25ldC9wYXRjaGVzL2xsdm0xMi5wYXRjaCBiL3NyY3BrZ3MvYmVpZ25ldC9wYXRjaGVz L2xsdm0xMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY4YWIwMDVjMTQ4 Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3BhdGNoZXMvbGx2bTEyLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTE1ICswLDAgQEAKLWRpZmYgLS1naXQgYmFja2VuZC9zcmMv bGx2bS9FeHBhbmRMYXJnZUludGVnZXJzLmNwcCBiYWNrZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdl SW50ZWdlcnMuY3BwCi1pbmRleCA4NTE1ZGMxMy4uMjcwODAzODAgMTAwNjQ0Ci0tLS0gYS9iYWNr ZW5kL3NyYy9sbHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9s bHZtL0V4cGFuZExhcmdlSW50ZWdlcnMuY3BwCi1AQCAtMzI4LDcgKzMyOCw3IEBAIHN0YXRpYyBW YWx1ZSAqYnVpbGRWZWN0b3JPclNjYWxhcihDb252ZXJzaW9uU3RhdGUgJlN0YXRlLCBJUkJ1aWxk ZXI8PiAmSVJCLCBTbWFsCi0gICAgIC8vIHNwbGl0ZWQsIHRoYXQncyB3aHkgdGhlc2UgdGVtcG9y YXJ5IHZhbHVlcyBzaG91bGQgYmUgZXJhc2VkLgotICAgICBib29sIEtlZXBJbnNlcnQgPSBpc0xl Z2FsQml0U2l6ZShFbGVtVHktPmdldFByaW1pdGl2ZVNpemVJbkJpdHMoKSAqIEVsZW1Obyk7Ci0g ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBFbGVtTm87ICsraSkgewotLSAgICAgIFZhbHVl ICp0bXAgPSB2ZWMgPyB2ZWMgOiBVbmRlZlZhbHVlOjpnZXQoVmVjdG9yVHlwZTo6Z2V0KEVsZW1U eSwgRWxlbU5vKSk7Ci0rICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6 OmdldChWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBFbGVtTm8sIGZhbHNlKSk7Ci0gICAgICAgVmFs dWUgKmlkeCA9IENvbnN0YW50SW50OjpnZXQoSW50VHksIGkpOwotICAgICAgIHZlYyA9IElSQi5D cmVhdGVJbnNlcnRFbGVtZW50KHRtcCwgRWxlbWVudHNbaV0sIGlkeCk7Ci0gICAgICAgaWYgKCFL ZWVwSW5zZXJ0ICYmICFpc2E8Q29uc3RhbnQ+KHZlYykpIHsKLUBAIC0zNzMsNyArMzczLDcgQEAg c3RhdGljIHZvaWQgdW5pZnlFbGVtZW50VHlwZShJUkJ1aWxkZXI8PiAmSVJCLCBTbWFsbFZlY3Rv cjxWYWx1ZSAqLCAxNj4gJlNyYywgU20KLSAgICAgICBhc3NlcnQoKFNpemUgJSBNaW5XaWR0aCkg PT0gMCk7Ci0gCi0gICAgICAgaWYgKFNpemUgPiBNaW5XaWR0aCkgewotLSAgICAgICAgVmVjdG9y VHlwZSAqVmVjVHkgPSBWZWN0b3JUeXBlOjpnZXQoRWxlbVR5LCBTaXplL01pbldpZHRoKTsKLSsg ICAgICAgIFZlY3RvclR5cGUgKlZlY1R5ID0gVmVjdG9yVHlwZTo6Z2V0KEVsZW1UeSwgU2l6ZS9N aW5XaWR0aCwgZmFsc2UpOwotICAgICAgICAgVmFsdWUgKkNhc3RlZCA9IElSQi5DcmVhdGVCaXRD YXN0KFNyY1tpXSwgVmVjVHkpOwotICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsgaiA8IFNp emUvTWluV2lkdGg7IGorKykKLSAgICAgICAgICAgRHN0LnB1c2hfYmFjayhJUkIuQ3JlYXRlRXh0 cmFjdEVsZW1lbnQoQ2FzdGVkLCBDb25zdGFudEludDo6Z2V0KEludFR5LCBqKSkpOwotQEAgLTQ2 Miw3ICs0NjIsNyBAQCBzdGF0aWMgdm9pZCBjb252ZXJ0SW5zdHJ1Y3Rpb24oSW5zdHJ1Y3Rpb24g Kkluc3QsIENvbnZlcnNpb25TdGF0ZSAmU3RhdGUsCi0gICAgICAgdW5zaWduZWQgRWxlbU5vID0g VW5pZmllZC5zaXplKCk7Ci0gICAgICAgVHlwZSAqRWxlbVR5ID0gVW5pZmllZFswXS0+Z2V0VHlw ZSgpOwotICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBFbGVtTm87ICsraSkgewotLSAg ICAgICAgVmFsdWUgKnRtcCA9IHZlYyA/IHZlYyA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBl OjpnZXQoRWxlbVR5LCBFbGVtTm8pKTsKLSsgICAgICAgIFZhbHVlICp0bXAgPSB2ZWMgPyB2ZWMg OiBVbmRlZlZhbHVlOjpnZXQoVmVjdG9yVHlwZTo6Z2V0KEVsZW1UeSwgRWxlbU5vLCBmYWxzZSkp OwotICAgICAgICAgVmFsdWUgKmlkeCA9IENvbnN0YW50SW50OjpnZXQoSW50VHksIGkpOwotICAg ICAgICAgdmVjID0gSVJCLkNyZWF0ZUluc2VydEVsZW1lbnQodG1wLCBVbmlmaWVkW2ldLCBpZHgp OwotICAgICAgIH0KLWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2dlbl9iYWNrZW5k LmNwcCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwCi1pbmRleCBjOTNkODlj Yy4uNjRkNWIwZTUgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tl bmQuY3BwCi0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fZ2VuX2JhY2tlbmQuY3BwCi1AQCAt MzA0LDcgKzMwNCw3IEBAIG5hbWVzcGFjZSBnYmUKLSAgICAgICBUWVBFU0laRVZFQyhsb25nLDgp Ci0gICAgICAgVFlQRVNJWkVWRUModW5zaWduZWQgbG9uZyw4KQotICAgICAgIGVsc2V7Ci0tICAg ICAgICBTdHJ1Y3RUeXBlICpTdHJUeSA9IE0tPmdldFR5cGVCeU5hbWUoInN0cnVjdC4iK25hbWUp OwotKyAgICAgICAgU3RydWN0VHlwZSAqU3RyVHkgPSBTdHJ1Y3RUeXBlOjpnZXRUeXBlQnlOYW1l KE0tPmdldENvbnRleHQoKSwgInN0cnVjdC4iK25hbWUpOwotICAgICAgICAgaWYoU3RyVHkpCi0g ICAgICAgICAgIHJldHVybiBnZXRUeXBlQnl0ZVNpemUodW5pdCxTdHJUeSk7Ci0gICAgICAgfQot ZGlmZiAtLWdpdCBiYWNrZW5kL3NyYy9sbHZtL2xsdm1fbG9hZHN0b3JlX29wdGltaXphdGlvbi5j cHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX2xvYWRzdG9yZV9vcHRpbWl6YXRpb24uY3BwCi1pbmRl eCA1YWEzOGJlZi4uNmI1YzFiYWQgMTAwNjQ0Ci0tLS0gYS9iYWNrZW5kL3NyYy9sbHZtL2xsdm1f bG9hZHN0b3JlX29wdGltaXphdGlvbi5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV9s b2Fkc3RvcmVfb3B0aW1pemF0aW9uLmNwcAotQEAgLTE1Miw3ICsxNTIsNyBAQCBuYW1lc3BhY2Ug Z2JlIHsKLSAgICAgdW5zaWduZWQgYWRkclNwYWNlID0gbGQtPmdldFBvaW50ZXJBZGRyZXNzU3Bh Y2UoKTsKLSAgICAgLy8gaW5zZXJ0IGJlZm9yZSBmaXJzdCBsb2FkCi0gICAgIEJ1aWxkZXIuU2V0 SW5zZXJ0UG9pbnQobGQpOwotLSAgICBWZWN0b3JUeXBlICp2ZWNUeSA9IFZlY3RvclR5cGU6Omdl dChsZC0+Z2V0VHlwZSgpLCBzaXplKTsKLSsgICAgVmVjdG9yVHlwZSAqdmVjVHkgPSBWZWN0b3JU eXBlOjpnZXQobGQtPmdldFR5cGUoKSwgc2l6ZSwgZmFsc2UpOwotICAgICBWYWx1ZSAqdmVjUHRy ID0gQnVpbGRlci5DcmVhdGVCaXRDYXN0KGxkLT5nZXRQb2ludGVyT3BlcmFuZCgpLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludGVyVHlwZTo6Z2V0KHZlY1R5 LCBhZGRyU3BhY2UpKTsKLSAgICAgTG9hZEluc3QgKnZlY1ZhbHVlID0gQnVpbGRlci5DcmVhdGVM b2FkKHZlY1B0cik7Ci1AQCAtMjM2LDcgKzIzNiw3IEBAIG5hbWVzcGFjZSBnYmUgewotICAgICBC dWlsZGVyLlNldEluc2VydFBvaW50KG1lcmdlZFtzaXplLTFdKTsKLSAKLSAgICAgVHlwZSAqZGF0 YVR5ID0gc3QtPmdldFZhbHVlT3BlcmFuZCgpLT5nZXRUeXBlKCk7Ci0tICAgIFZlY3RvclR5cGUg KnZlY1R5ID0gVmVjdG9yVHlwZTo6Z2V0KGRhdGFUeSwgc2l6ZSk7Ci0rICAgIFZlY3RvclR5cGUg KnZlY1R5ID0gVmVjdG9yVHlwZTo6Z2V0KGRhdGFUeSwgc2l6ZSwgZmFsc2UpOwotICAgICBWYWx1 ZSAqIHBhcmVudCA9IFVuZGVmVmFsdWU6OmdldCh2ZWNUeSk7Ci0gICAgIGZvcih1bnNpZ25lZCBp ID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgIHBhcmVudCA9IEJ1aWxkZXIuQ3JlYXRlSW5z ZXJ0RWxlbWVudChwYXJlbnQsIHZhbHVlc1tpXSwgQ29uc3RhbnRJbnQ6OmdldChJbnRlZ2VyVHlw ZTo6Z2V0KHN0LT5nZXRDb250ZXh0KCksIDMyKSwgaSkpOwotZGlmZiAtLWdpdCBiYWNrZW5kL3Ny Yy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX3ByaW50 Zl9wYXJzZXIuY3BwCi1pbmRleCA2YmI3YzUyYS4uYWY0NTljZDIgMTAwNjQ0Ci0tLS0gYS9iYWNr ZW5kL3NyYy9sbHZtL2xsdm1fcHJpbnRmX3BhcnNlci5jcHAKLSsrKyBiL2JhY2tlbmQvc3JjL2xs dm0vbGx2bV9wcmludGZfcGFyc2VyLmNwcAotQEAgLTYzMCw3ICs2MzAsNyBAQCBlcnJvcjoKLSAg ICAgICAgICAgICBpZiAoZWx0X3R5cGUgIT0gZWx0X2RzdF90eXBlKSB7Ci0gICAgICAgICAgICAg ICBWYWx1ZSAqSUkgPSBOVUxMOwotICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB2 ZWNfbnVtOyBpKyspIHsKLS0gICAgICAgICAgICAgICAgVmFsdWUgKnZlYyA9IElJID8gSUkgOiBV bmRlZlZhbHVlOjpnZXQoVmVjdG9yVHlwZTo6Z2V0KGVsdF9kc3RfdHlwZSwgdmVjX251bSkpOwot KyAgICAgICAgICAgICAgICBWYWx1ZSAqdmVjID0gSUkgPyBJSSA6IFVuZGVmVmFsdWU6OmdldChW ZWN0b3JUeXBlOjpnZXQoZWx0X2RzdF90eXBlLCB2ZWNfbnVtLCBmYWxzZSkpOwotICAgICAgICAg ICAgICAgICBWYWx1ZSAqY3YgPSBDb25zdGFudEludDo6Z2V0KFR5cGU6OmdldEludDMyVHkoZWx0 X3R5cGUtPmdldENvbnRleHQoKSksIGkpOwotICAgICAgICAgICAgICAgICBWYWx1ZSAqb3JnID0g YnVpbGRlci0+Q3JlYXRlRXh0cmFjdEVsZW1lbnQoYXJnLCBjdik7Ci0gICAgICAgICAgICAgICAg IFZhbHVlICpjdnQgPSBidWlsZGVyLT5DcmVhdGVJbnRDYXN0KG9yZywgZWx0X2RzdF90eXBlLCBz aWduKTsKLUBAIC02NTgsNyArNjU4LDcgQEAgZXJyb3I6Ci0gICAgICAgICAgICAgaWYgKGVsdF90 eXBlLT5nZXRUeXBlSUQoKSAhPSBUeXBlOjpGbG9hdFR5SUQpIHsKLSAgICAgICAgICAgICAgIFZh bHVlICpJSSA9IE5VTEw7Ci0gICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHZlY19u dW07IGkrKykgewotLSAgICAgICAgICAgICAgICBWYWx1ZSAqdmVjID0gSUkgPyBJSSA6IFVuZGVm VmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoVHlwZTo6Z2V0RmxvYXRUeShlbHRfdHlwZS0+Z2V0 Q29udGV4dCgpKSwgdmVjX251bSkpOwotKyAgICAgICAgICAgICAgICBWYWx1ZSAqdmVjID0gSUkg PyBJSSA6IFVuZGVmVmFsdWU6OmdldChWZWN0b3JUeXBlOjpnZXQoVHlwZTo6Z2V0RmxvYXRUeShl bHRfdHlwZS0+Z2V0Q29udGV4dCgpKSwgdmVjX251bSwgZmFsc2UpKTsKLSAgICAgICAgICAgICAg ICAgVmFsdWUgKmN2ID0gQ29uc3RhbnRJbnQ6OmdldChUeXBlOjpnZXRJbnQzMlR5KGVsdF90eXBl LT5nZXRDb250ZXh0KCkpLCBpKTsKLSAgICAgICAgICAgICAgICAgVmFsdWUgKm9yZyA9IGJ1aWxk ZXItPkNyZWF0ZUV4dHJhY3RFbGVtZW50KGFyZywgY3YpOwotICAgICAgICAgICAgICAgICBWYWx1 ZSogY3Z0ICA9IGJ1aWxkZXItPkNyZWF0ZUZQQ2FzdChvcmcsIFR5cGU6OmdldEZsb2F0VHkobW9k dWxlLT5nZXRDb250ZXh0KCkpKTsKLWRpZmYgLS1naXQgYmFja2VuZC9zcmMvbGx2bS9sbHZtX3Rv X2dlbi5jcHAgYmFja2VuZC9zcmMvbGx2bS9sbHZtX3RvX2dlbi5jcHAKLWluZGV4IDdmN2RlZmZl Li45ZThjY2M2NyAxMDA2NDQKLS0tLSBhL2JhY2tlbmQvc3JjL2xsdm0vbGx2bV90b19nZW4uY3Bw Ci0rKysgYi9iYWNrZW5kL3NyYy9sbHZtL2xsdm1fdG9fZ2VuLmNwcAotQEAgLTM1OCw3ICszNTgs NyBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlU2NhbGFyUmVwbEFnZ3Jl Z2F0ZXNQYXNzKDY0LCB0cnVlLCAtMSwgLTEsIDY0KSk7Ci0gI2VuZGlmCi0gICAgIHBhc3Nlcy5h ZGQoY3JlYXRlTG9hZFN0b3JlT3B0aW1pemF0aW9uUGFzcygpKTsKLS0gICAgcGFzc2VzLmFkZChj cmVhdGVDb25zdGFudFByb3BhZ2F0aW9uUGFzcygpKTsKLSsgICAgLy9wYXNzZXMuYWRkKGNyZWF0 ZUNvbnN0YW50UHJvcGFnYXRpb25QYXNzKCkpOwotICAgICBwYXNzZXMuYWRkKGNyZWF0ZVByb21v dGVNZW1vcnlUb1JlZ2lzdGVyUGFzcygpKTsKLSAgICAgaWYob3B0TGV2ZWwgPiAwKQotICAgICAg IHBhc3Nlcy5hZGQoY3JlYXRlR1ZOUGFzcygpKTsgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBy ZWR1bmRhbmNpZXMKLUBAIC0zNjcsMTEgKzM2NywxMSBAQCBuYW1lc3BhY2UgZ2JlCi0gICAgIHBh c3Nlcy5hZGQoY3JlYXRlU2NhbGFyaXplUGFzcygpKTsgICAgICAgICAgICAgLy8gRXhwYW5kIGFs bCB2ZWN0b3Igb3BzCi0gICAgIHBhc3Nlcy5hZGQoY3JlYXRlRXhwYW5kTGFyZ2VJbnRlZ2Vyc1Bh c3MoKSk7ICAgLy8gbGVnYWxpemUgbGFyZ2UgaW50ZWdlciBvcGVyYXRpb24KLSAgICAgcGFzc2Vz LmFkZChjcmVhdGVJbnN0cnVjdGlvbkNvbWJpbmluZ1Bhc3MoKSk7ICAvLyBsZWdhbGl6ZSB3aWxs IGdlbmVyYXRlIHNvbWUgc2lsbHkgaW5zdHJ1Y3Rpb25zCi0tICAgIHBhc3Nlcy5hZGQoY3JlYXRl Q29uc3RhbnRQcm9wYWdhdGlvblBhc3MoKSk7ICAgLy8gcHJvcGFnYXRlIGNvbnN0YW50IGFmdGVy IHNjYWxhcml6ZS9sZWdhbGl6ZQotKyAgICAvL3Bhc3Nlcy5hZGQoY3JlYXRlQ29uc3RhbnRQcm9w YWdhdGlvblBhc3MoKSk7ICAgLy8gcHJvcGFnYXRlIGNvbnN0YW50IGFmdGVyIHNjYWxhcml6ZS9s ZWdhbGl6ZQotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUV4cGFuZENvbnN0YW50RXhwclBhc3MoKSk7 ICAgIC8vIGNvbnN0YW50IHByb3AgbWF5IGdlbmVyYXRlIENvbnN0YW50RXhwcgotICAgICBwYXNz ZXMuYWRkKGNyZWF0ZVByb21vdGVJbnRlZ2Vyc1Bhc3MoKSk7ICAgICAgIC8vIGFsaWduIGludGVn ZXIgc2l6ZSB0byBwb3dlciBvZiB0d28KLSAgICAgcGFzc2VzLmFkZChjcmVhdGVSZW1vdmVHRVBQ YXNzKHVuaXQpKTsgICAgICAgICAvLyBDb25zdGFudCBwcm9wIG1heSBnZW5lcmF0ZSBnZXAKLS0g ICAgcGFzc2VzLmFkZChjcmVhdGVEZWFkSW5zdEVsaW1pbmF0aW9uUGFzcygpKTsgICAvLyBSZW1v dmUgc2ltcGxpZmllZCBpbnN0cnVjdGlvbnMKLSsgICAgLy9wYXNzZXMuYWRkKGNyZWF0ZURlYWRJ bnN0RWxpbWluYXRpb25QYXNzKCkpOyAgIC8vIFJlbW92ZSBzaW1wbGlmaWVkIGluc3RydWN0aW9u cwotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUNGR1NpbXBsaWZpY2F0aW9uUGFzcygpKTsgICAgIC8v IE1lcmdlICYgcmVtb3ZlIEJCcwotICAgICBwYXNzZXMuYWRkKGNyZWF0ZUxvd2VyU3dpdGNoUGFz cygpKTsgICAgICAgICAgIC8vIHNpbXBsaWZ5IGNmZyB3aWxsIGdlbmVyYXRlIHN3aXRjaC1jYXNl IGluc3RydWN0aW9uCi0gICAgIGlmIChwcm9maWxpbmcpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv YmVpZ25ldC9wYXRjaGVzL211c2wucGF0Y2ggYi9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9tdXNs LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZWZhZmJiNjU1ODguLjAwMDAw MDAwMDAwMAotLS0gYS9zcmNwa2dzL2JlaWduZXQvcGF0Y2hlcy9tdXNsLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMTEgKzAsMCBAQAotLS0tIGEvYmFja2VuZC9zcmMvYmFja2VuZC9nZW4vZ2Vu X21lc2FfZGlzYXNtLmMKLSsrKyBiL2JhY2tlbmQvc3JjL2JhY2tlbmQvZ2VuL2dlbl9tZXNhX2Rp c2FzbS5jCi1AQCAtMTEzNyw3ICsxMTM3LDcgQEAgc3RhdGljIHVpbnQzMl90IF9fY29udl9oYWxm X3RvX2Zsb2F0KHVpbnQxNl90IGgpCi0gICAgICAgLy8gQWRqdXN0IG1hbnRpc3NhIHNvIGl0J3Mg bm9ybWFsaXplZCAoYW5kIGtlZXAKLSAgICAgICAvLyB0cmFjayBvZiBleHBvbmVudCBhZGp1c3Rt ZW50KQotICAgICAgIGludCBlID0gLTE7Ci0tICAgICAgdWludCBtID0gaS5tYW50aXNzYTsKLSsg ICAgICB1bnNpZ25lZCBpbnQgbSA9IGkubWFudGlzc2E7Ci0gICAgICAgZG8gewotICAgICAgICAg ZSsrOwotICAgICAgICAgbSA8PD0gMTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvYmVpZ25ldC90ZW1w bGF0ZSBiL3NyY3BrZ3MvYmVpZ25ldC90ZW1wbGF0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggZGNlNmJiYjdhZTI0Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3Rl bXBsYXRlCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyBUZW1wbGF0ZSBmaWxlIGZv ciAnYmVpZ25ldCcKLXBrZ25hbWU9YmVpZ25ldAotdmVyc2lvbj0xLjMuMgotcmV2aXNpb249MTAK LWFyY2hzPSJpNjg2KiB4ODZfNjQqIgotd3Jrc3JjPSJCZWlnbmV0LSR7dmVyc2lvbn0tU291cmNl IgotYnVpbGRfc3R5bGU9Y21ha2UKLWhvc3RtYWtlZGVwZW5kcz0iY2xhbmcgbGx2bSBwa2ctY29u ZmlnIgotbWFrZWRlcGVuZHM9Ik1lc2FMaWItZGV2ZWwgbGliZWRpdC1kZXZlbCBsaWJmZmktZGV2 ZWwgb2NsLWljZC1kZXZlbCB6bGliLWRldmVsCi0gbGliWGZpeGVzLWRldmVsIgotZGVwZW5kcz0i b2NsLWljZCIKLXNob3J0X2Rlc2M9IkJlaWduZXQgR1BHUFUgU3lzdGVtIGZvciBJbnRlbCBHUFVz IgotbWFpbnRhaW5lcj0iT3JwaGFuZWQgPG9ycGhhbkB2b2lkbGludXgub3JnPiIKLWxpY2Vuc2U9 IkxHUEwtMi4xLW9yLWxhdGVyIgotaG9tZXBhZ2U9Imh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3Jn L3dpa2kvU29mdHdhcmUvQmVpZ25ldC8iCi1kaXN0ZmlsZXM9Imh0dHBzOi8vMDEub3JnL3NpdGVz L2RlZmF1bHQvZmlsZXMvJHtwa2duYW1lfS0ke3ZlcnNpb259LXNvdXJjZS50YXIuZ3oiCi1jaGVj a3N1bT1jNTU1ZWRiYTE0OWRlMjMyNDM5NjVhNzAzZjM5Zjc5ZmEwNmYxNWJjZmY1YTM3NjJiNTU0 NGIwOTI1MDEwYjQzCi0KLXBvc3RfaW5zdGFsbCgpIHsKLQkjIHJlbW92ZSBDTCBoZWFkZXJzLCB3 ZSBkbyB1c2Ugb3BlbmNsLWhlYWRlcnMgaW5zdGVhZC4KLQlybSAtciAke0RFU1RESVJ9L3Vzci9p bmNsdWRlCi19CmRpZmYgLS1naXQgYS9zcmNwa2dzL2JlaWduZXQvdXBkYXRlIGIvc3JjcGtncy9i ZWlnbmV0L3VwZGF0ZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E0MWUwYWZlNjBj Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9iZWlnbmV0L3VwZGF0ZQorKysgL2Rldi9udWxs CkBAIC0xICswLDAgQEAKLXNpdGU9Imh0dHBzOi8vMDEub3JnL2JlaWduZXQvZG93bmxvYWRzIgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlIGIvc3JjcGtncy9y ZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCmluZGV4IGM5MTE0ZmMwNDU4ZS4uYjNhODE3N2QxYTlk IDEwMDY0NAotLS0gYS9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlCkBAIC0yMiw2ICsyMiw3IEBAIHJlcGxhY2Vz PSIKICBhdG9tPD0xLjQ0LjBfMQogIGF2b2dhZHJvLWRldmVsPD0xLjIuMF84CiAgYXZvZ2Fkcm88 PTEuMi4wXzgKKyBiZWlnbmV0PD0xLjMuMgogIGJva2tlbjw9MS44XzMKICBib21pPD0wLjkuMTFf MTcKICBidXJwLWNsaWVudDw9MS40LjQwXzEzCgpGcm9tIDk2OTJjYWFjNjUyYTJmNThiODgzNjll M2M2NDFhOTU0NTQ2YmJiYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206ID0/VVRGLTg/ cT9BbmRyPUMzPUE5PTIwQ2VycXVlaXJhPz0gPGFjZXJxdWVpcmEwMjFAZ21haWwuY29tPgpEYXRl OiBNb24sIDI4IEZlYiAyMDIyIDIyOjAwOjU0ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyMC8zMF0g bGx2bTEzOiB1cGRhdGUgdG8gMTMuMC4xLgoKLS0tCiBzcmNwa2dzL2xsdm0vdGVtcGxhdGUgICB8 IDIgKy0KIHNyY3BrZ3MvbGx2bTEzL3RlbXBsYXRlIHwgNiArKystLS0KIDIgZmlsZXMgY2hhbmdl ZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv bGx2bS90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGx2bS90ZW1wbGF0ZQppbmRleCBiY2ZlZTgyMDk4ZmYu Ljk2ZDE4ZjczMGZjYSAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtL3RlbXBsYXRlCisrKyBiL3Ny Y3BrZ3MvbGx2bS90ZW1wbGF0ZQpAQCAtNCw4ICs0LDggQEAgdmVyc2lvbj0xMy4wLjAKIHJldmlz aW9uPTEKIGJ1aWxkX3N0eWxlPW1ldGEKIGRlcGVuZHM9Imxsdm0xMyIKLXJlcGxhY2VzPSJsbHZt MTI+PTAgbGx2bTExPj0wIGxsdm0xMD49MCBsbHZtOT49MCBsbHZtOD49MCBsbHZtNz49MCBsbHZt Ni4wPj0wIGxsdm0zLjk+PTAiCiBzaG9ydF9kZXNjPSJMTFZNIG1ldGEgcGFja2FnZSIKIG1haW50 YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCiBsaWNlbnNlPSJQdWJs aWMgRG9tYWluIgogaG9tZXBhZ2U9Imh0dHBzOi8vd3d3LnZvaWRsaW51eC5vcmciCityZXBsYWNl cz0ibGx2bTEyPj0wIGxsdm0xMT49MCBsbHZtMTA+PTAgbGx2bTk+PTAgbGx2bTg+PTAgbGx2bTc+ PTAgbGx2bTYuMD49MCBsbHZtMy45Pj0wIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9sbHZtMTMvdGVt cGxhdGUgYi9zcmNwa2dzL2xsdm0xMy90ZW1wbGF0ZQppbmRleCBiZmM5MTA1NmQyNzcuLjhlNjcz NzAxZmI5YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9sbHZtMTMvdGVtcGxhdGUKKysrIGIvc3JjcGtn cy9sbHZtMTMvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICds bHZtMTMnCiBwa2duYW1lPWxsdm0xMwotdmVyc2lvbj0xMy4wLjAKLXJldmlzaW9uPTIKK3ZlcnNp b249MTMuMC4xCityZXZpc2lvbj0xCiB3cmtzcmM9Imxsdm0tcHJvamVjdC0ke3ZlcnNpb259LnNy YyIKIGJ1aWxkX3dya3NyYz1sbHZtCiBidWlsZF9zdHlsZT1jbWFrZQpAQCAtMzUsNyArMzUsNyBA QCBtYWludGFpbmVyPSJxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPiIKIGxpY2Vuc2U9IkFwYWNo ZS0yLjAiCiBob21lcGFnZT0iaHR0cHM6Ly93d3cubGx2bS5vcmciCiBkaXN0ZmlsZXM9Imh0dHBz Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9yZWxlYXNlcy9kb3dubG9hZC9sbHZtb3Jn LSR7dmVyc2lvbn0vbGx2bS1wcm9qZWN0LSR7dmVyc2lvbn0uc3JjLnRhci54eiIKLWNoZWNrc3Vt PTYwNzVhZDMwZjFhYzBlMTVmMDdjMWJmMDYyYzFlMTI2OGMyNDFkNjc0ZjExYmQzMmNkZjBlMDQw YzcxZjJiZjMKK2NoZWNrc3VtPTMyNjMzNWE4MzBmMmUzMmQwNmQwYTM2MzkzYjU0NTVkMTdkYzcz ZTBiZDEyMTEwNjUyMjdlZTAxNGY5MmNiZjgKIGxpYjMyZGlzYWJsZWQ9eWVzCiBweXRob25fdmVy c2lvbj0zCiAKCkZyb20gOTVkZWFiZDQ3MmZmNzAxZWI5ODM4NGFhOWEzNWM1ZWFmYjc2NDgzMCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSXNhYWMgRnJldW5kIDxtYWlsQGlzYWFjZnJl dW5kLmNvbT4KRGF0ZTogV2VkLCAyIE1hciAyMDIyIDIwOjQ5OjM3ICswMDAwClN1YmplY3Q6IFtQ QVRDSCAyMS8zMF0gcml2ZXI6IHVwZGF0ZSB0byAwLjEuMwoKLS0tCiAuLi5hYmxlLVBJRS1mb3It cml2ZXItcml2ZXJjdGwtcml2ZXJ0aWxlLnBhdGNoIHwgMTggKysrKysrKysrLS0tLS0tLS0tCiBz cmNwa2dzL3JpdmVyL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQgKystLQog MiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmNwa2dzL3JpdmVyL3BhdGNoZXMvMDAwMS1FbmFibGUtUElFLWZvci1yaXZlci1y aXZlcmN0bC1yaXZlcnRpbGUucGF0Y2ggYi9zcmNwa2dzL3JpdmVyL3BhdGNoZXMvMDAwMS1FbmFi bGUtUElFLWZvci1yaXZlci1yaXZlcmN0bC1yaXZlcnRpbGUucGF0Y2gKaW5kZXggZWNjNjgzMDJk YjA5Li45ZGEwZTVkNWQwNDMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3Mvcml2ZXIvcGF0Y2hlcy8wMDAx LUVuYWJsZS1QSUUtZm9yLXJpdmVyLXJpdmVyY3RsLXJpdmVydGlsZS5wYXRjaAorKysgYi9zcmNw a2dzL3JpdmVyL3BhdGNoZXMvMDAwMS1FbmFibGUtUElFLWZvci1yaXZlci1yaXZlcmN0bC1yaXZl cnRpbGUucGF0Y2gKQEAgLTEwLDMzICsxMCwzMyBAQCBidWlsZCBzeXN0ZW0uIFNlZTogaHR0cHM6 Ly9naXRodWIuY29tL3ppZ2xhbmcvemlnL2lzc3Vlcy83MjAxCiAgMSBmaWxlIGNoYW5nZWQsIDMg aW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvYnVpbGQuemlnIGIvYnVpbGQuemlnCi1pbmRl eCBkNTYxZjQ5Li44YWM5YTRlIDEwMDY0NAoraW5kZXggOTgyOTYzMy4uMTgwMTc5ZiAxMDA2NDQK IC0tLSBhL2J1aWxkLnppZwogKysrIGIvYnVpbGQuemlnCi1AQCAtODUsNiArODUsNyBAQCBwdWIg Zm4gYnVpbGQoYjogKnpicy5CdWlsZGVyKSAhdm9pZCB7CitAQCAtODksNiArODksNyBAQCBwdWIg Zm4gYnVpbGQoYjogKnpicy5CdWlsZGVyKSAhdm9pZCB7CiAgICAgICAgICBjb25zdCByaXZlciA9 IGIuYWRkRXhlY3V0YWJsZSgicml2ZXIiLCAicml2ZXIvbWFpbi56aWciKTsKICAgICAgICAgIHJp dmVyLnNldFRhcmdldCh0YXJnZXQpOwogICAgICAgICAgcml2ZXIuc2V0QnVpbGRNb2RlKG1vZGUp OwogKyAgICAgICAgcml2ZXIucGllID0gdHJ1ZTsKLSAgICAgICAgIHJpdmVyLmFkZEJ1aWxkT3B0 aW9uKGJvb2wsICJ4d2F5bGFuZCIsIHh3YXlsYW5kKTsKLSAgICAgICAgIHJpdmVyLmFkZEJ1aWxk T3B0aW9uKFs6MF1jb25zdCB1OCwgInZlcnNpb24iLCBmdWxsX3ZlcnNpb24pOworICAgICAgICAg cml2ZXIuYWRkT3B0aW9ucygiYnVpbGRfb3B0aW9ucyIsIG9wdGlvbnMpOwogIAotQEAgLTk3LDYg Kzk4LDcgQEAgcHViIGZuIGJ1aWxkKGI6ICp6YnMuQnVpbGRlcikgIXZvaWQgeworICAgICAgICAg YWRkU2VydmVyRGVwcyhyaXZlciwgc2Nhbm5lcik7CitAQCAtMTAwLDYgKzEwMSw3IEBAIHB1YiBm biBidWlsZChiOiAqemJzLkJ1aWxkZXIpICF2b2lkIHsKICAgICAgICAgIGNvbnN0IHJpdmVyY3Rs ID0gYi5hZGRFeGVjdXRhYmxlKCJyaXZlcmN0bCIsICJyaXZlcmN0bC9tYWluLnppZyIpOwogICAg ICAgICAgcml2ZXJjdGwuc2V0VGFyZ2V0KHRhcmdldCk7CiAgICAgICAgICByaXZlcmN0bC5zZXRC dWlsZE1vZGUobW9kZSk7CiArICAgICAgICByaXZlcmN0bC5waWUgPSB0cnVlOwotICAgICAgICAg cml2ZXJjdGwuYWRkQnVpbGRPcHRpb24oWzowXWNvbnN0IHU4LCAidmVyc2lvbiIsIGZ1bGxfdmVy c2lvbik7CisgICAgICAgICByaXZlcmN0bC5hZGRPcHRpb25zKCJidWlsZF9vcHRpb25zIiwgb3B0 aW9ucyk7CiAgCiAgICAgICAgICByaXZlcmN0bC5zdGVwLmRlcGVuZE9uKCZzY2FubmVyLnN0ZXAp OwotQEAgLTExNCw2ICsxMTYsNyBAQCBwdWIgZm4gYnVpbGQoYjogKnpicy5CdWlsZGVyKSAhdm9p ZCB7CitAQCAtMTIwLDYgKzEyMiw3IEBAIHB1YiBmbiBidWlsZChiOiAqemJzLkJ1aWxkZXIpICF2 b2lkIHsKICAgICAgICAgIGNvbnN0IHJpdmVydGlsZSA9IGIuYWRkRXhlY3V0YWJsZSgicml2ZXJ0 aWxlIiwgInJpdmVydGlsZS9tYWluLnppZyIpOwogICAgICAgICAgcml2ZXJ0aWxlLnNldFRhcmdl dCh0YXJnZXQpOwogICAgICAgICAgcml2ZXJ0aWxlLnNldEJ1aWxkTW9kZShtb2RlKTsKICsgICAg ICAgIHJpdmVydGlsZS5waWUgPSB0cnVlOwotICAgICAgICAgcml2ZXJ0aWxlLmFkZEJ1aWxkT3B0 aW9uKFs6MF1jb25zdCB1OCwgInZlcnNpb24iLCBmdWxsX3ZlcnNpb24pOworICAgICAgICAgcml2 ZXJ0aWxlLmFkZE9wdGlvbnMoImJ1aWxkX29wdGlvbnMiLCBvcHRpb25zKTsKICAKICAgICAgICAg IHJpdmVydGlsZS5zdGVwLmRlcGVuZE9uKCZzY2FubmVyLnN0ZXApOwogLS0gCi0yLjMzLjEKKzIu MzUuMQogCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JpdmVyL3RlbXBsYXRlIGIvc3JjcGtncy9yaXZl ci90ZW1wbGF0ZQppbmRleCA5Y2YzYWJlNGI4NWIuLmFlMDlhZTU0YjM0ZiAxMDA2NDQKLS0tIGEv c3JjcGtncy9yaXZlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JpdmVyL3RlbXBsYXRlCkBAIC0x LDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncml2ZXInCiBwa2duYW1lPXJpdmVyCi12 ZXJzaW9uPTAuMS4xCit2ZXJzaW9uPTAuMS4zCiByZXZpc2lvbj0xCiBidWlsZF9zdHlsZT16aWct YnVpbGQKIGNvbmZpZ3VyZV9hcmdzPSIkKHZvcHRfaWYgeHdheWxhbmQgLUR4d2F5bGFuZCkiCkBA IC0xMiw3ICsxMiw3IEBAIG1haW50YWluZXI9IklzYWFjIEZyZXVuZCA8bWFpbEBpc2FhY2ZyZXVu ZC5jb20+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKIGhvbWVwYWdlPSJodHRwczovL2dp dGh1Yi5jb20vcml2ZXJ3bS9yaXZlciIKIGRpc3RmaWxlcz0iJHtob21lcGFnZX0vcmVsZWFzZXMv ZG93bmxvYWQvdiR7dmVyc2lvbn0vcml2ZXItJHt2ZXJzaW9ufS50YXIuZ3oiCi1jaGVja3N1bT0y YTBiY2Q0NjcwZWQ5ZWJkMzljMjc5ZjJiZjEwODAzZmM2NWM5ZjNlZTIzMDdjZTQwNzI4ZGYyM2Nl OTE0ZDE4CitjaGVja3N1bT1mNjM0NDRjMzAwYWI1NTRlZjNjYTBkOTA0YTZiMTI0YTgzMmM4Mzk3 ZDQ3NGVmMDY3YmRkZTkxMWM5ODFjNzlmCiAKIGJ1aWxkX29wdGlvbnM9Inh3YXlsYW5kIgogYnVp bGRfb3B0aW9uc19kZWZhdWx0PSJ4d2F5bGFuZCIKCkZyb20gNDczNDYzMTc0NmRlYTA2ODhlM2Nl MmU0OTZjNDhmMjNiNTQ0MjNkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSXNhYWMg RnJldW5kIDxtYWlsQGlzYWFjZnJldW5kLmNvbT4KRGF0ZTogV2VkLCAyIE1hciAyMDIyIDIwOjUw OjE3ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyMi8zMF0gcnVuZGlyZDogcmVtb3ZlIHBhY2thZ2UK CiAgICBUaGlzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgYnkgdXBzdHJlYW0gd2hpY2ggcmVjb21tZW5k cyB1c2luZwogICAgZHVtYl9ydW50aW1lX2RpciAoYWxyZWFkeSBwYWNrYWdlZCBmb3Igdm9pZCkg aW5zdGVhZC4KCiAgICBSZW1vdmluZyBub3cgc2luY2UgcnVuZGlyZCAwLjIuMCBpcyBub3QgY29t cGF0aWJsZSB3aXRoIHppZyAwLjkgYW5kCiAgICB0aGVyZSB3b24ndCBiZSBhbnkgbmV3IHJ1bmRp cmQgcmVsZWFzZXMuCi0tLQogc3JjcGtncy9yZW1vdmVkLXBhY2thZ2VzL3RlbXBsYXRlIHwgIDEg Kwogc3JjcGtncy9ydW5kaXJkL2ZpbGVzL3J1bmRpcmQvcnVuIHwgIDIgLS0KIHNyY3BrZ3MvcnVu ZGlyZC90ZW1wbGF0ZSAgICAgICAgICB8IDE3IC0tLS0tLS0tLS0tLS0tLS0tCiAzIGZpbGVzIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxOSBkZWxldGlvbnMoLSkKIGRlbGV0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3J1bmRpcmQvZmlsZXMvcnVuZGlyZC9ydW4KIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3J1bmRpcmQvdGVtcGxhdGUKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3JlbW92ZWQtcGFj a2FnZXMvdGVtcGxhdGUgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUKaW5kZXgg YjNhODE3N2QxYTlkLi5jOTAwNDY1ZTZhYjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcmVtb3ZlZC1w YWNrYWdlcy90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3JlbW92ZWQtcGFja2FnZXMvdGVtcGxhdGUK QEAgLTMzOCw2ICszMzgsNyBAQCByZXBsYWNlcz0iCiAgcmt0LXN0YWdlMS1jb3Jlb3M8PTEuMzAu MF8zCiAgcmt0LXN0YWdlMS1mbHk8PTEuMzAuMF8zCiAgcmt0PD0xLjMwLjBfMworIHJ1bmRpcmQ8 PTAuMi4wXzEKICBzY2FudGFpbG9yPD0wLjkuMTIuMV8yCiAgc2VhaG9yc2Utc2hhcmluZzw9My44 LjBfNAogIHNlcmllc3BsPD0yLjMuNV8yCmRpZmYgLS1naXQgYS9zcmNwa2dzL3J1bmRpcmQvZmls ZXMvcnVuZGlyZC9ydW4gYi9zcmNwa2dzL3J1bmRpcmQvZmlsZXMvcnVuZGlyZC9ydW4KZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0YWFlOGM4M2I0Yi4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvcnVuZGlyZC9maWxlcy9ydW5kaXJkL3J1bgorKysgL2Rldi9udWxsCkBAIC0xLDIg KzAsMCBAQAotIyEvYmluL3NoCi1leGVjIHJ1bmRpcmQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcnVu ZGlyZC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcnVuZGlyZC90ZW1wbGF0ZQpkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggNWZmODk3YWJkNDU2Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9y dW5kaXJkL3RlbXBsYXRlCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotIyBUZW1wbGF0 ZSBmaWxlIGZvciAncnVuZGlyZCcKLXBrZ25hbWU9cnVuZGlyZAotdmVyc2lvbj0wLjIuMAotcmV2 aXNpb249MQotYnVpbGRfc3R5bGU9emlnLWJ1aWxkCi1tYWtlZGVwZW5kcz0icGFtLWRldmVsIgot c2hvcnRfZGVzYz0iU2ltcGxlIGRhZW1vbiArIFBBTSBtb2R1bGUgcHJvdmlkaW5nIGFuIFhER19S VU5USU1FX0RJUiIKLW1haW50YWluZXI9IklzYWFjIEZyZXVuZCA8bWFpbEBpc2FhY2ZyZXVuZC5j b20+IgotbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciIKLWhvbWVwYWdlPSJodHRwczovL2dpdGh1 Yi5jb20vaWZyZXVuZC9ydW5kaXJkIgotZGlzdGZpbGVzPSIke2hvbWVwYWdlfS9hcmNoaXZlL3Yk e3ZlcnNpb259LnRhci5neiIKLWNoZWNrc3VtPTFkZWEyMDdmMzkzODhlOGMyYzI3NWI4YTlhYWRh MDE2NmQxZjU4N2E4MDZmMmU1ZTQ0ODZkOTgyNTllMjNlNGMKLQotcG9zdF9pbnN0YWxsKCkgewot CXZzdiBydW5kaXJkCi0JdmRvYyBSRUFETUUubWQKLX0KCkZyb20gZGM2OTRiMDdkYjRjNTM3ZmRl NWVlNmUyOTQ0YjQ1Yzg1YzI3MDMxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9V VEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMTo1NTo0NiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMjMv MzBdIGJjYzogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvYmNjL3RlbXBsYXRlIHwg MiArLQogMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9iY2MvdGVtcGxhdGUgYi9zcmNwa2dzL2JjYy90ZW1wbGF0ZQppbmRl eCA1NDUwOWI2M2Q1YTcuLjJjZmEwYTI5NzdkMCAxMDA2NDQKLS0tIGEvc3JjcGtncy9iY2MvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9iY2MvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBs YXRlIGZpbGUgZm9yICdiY2MnCiBwa2duYW1lPWJjYwogdmVyc2lvbj0wLjI0LjAKLXJldmlzaW9u PTEKK3JldmlzaW9uPTIKIHdya3NyYz0iYmNjIgogYnVpbGRfc3R5bGU9Y21ha2UKIGNvbmZpZ3Vy ZV9hcmdzPSItRFJFVklTSU9OPSR7dmVyc2lvbn0gLURFTkFCTEVfTExWTV9TSEFSRUQ9MSIKCkZy b20gM2FmZDgxOTkxZmI5MWJjYzJiZDY0YmVkZDkyZDk2Mjc0MzBhZGFlMyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNl cnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMTo1NjozMiArMDAw MApTdWJqZWN0OiBbUEFUQ0ggMjQvMzBdIGdub21lLWJ1aWxkZXI6IHJlYnVpbGQgZm9yIGxsdm0x MwoKLS0tCiBzcmNwa2dzL2dub21lLWJ1aWxkZXIvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hh bmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dz L2dub21lLWJ1aWxkZXIvdGVtcGxhdGUgYi9zcmNwa2dzL2dub21lLWJ1aWxkZXIvdGVtcGxhdGUK aW5kZXggOTM1NTliMjE3NzRmLi41YTVhNTE4OTNhZTggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZ25v bWUtYnVpbGRlci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2dub21lLWJ1aWxkZXIvdGVtcGxhdGUK QEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdnbm9tZS1idWlsZGVyJwogcGtn bmFtZT1nbm9tZS1idWlsZGVyCiB2ZXJzaW9uPTQxLjMKLXJldmlzaW9uPTEKK3JldmlzaW9uPTIK IGJ1aWxkX3N0eWxlPW1lc29uCiBidWlsZF9oZWxwZXI9cWVtdQogY29uZmlndXJlX2FyZ3M9Ii1E aGVscD10cnVlIC1EbmV0d29ya190ZXN0cz1mYWxzZSIKCkZyb20gYTY4NjI2ZTA0ZjcwOTdmYjJk YjRkNzc1ZTA5ZTNhOTJmNTE3NWFjMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9V VEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVpcmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMTo1Njo1OCArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMjUv MzBdIGxkYzogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvbGRjL3RlbXBsYXRlIHwg NCArKy0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGRjL3RlbXBsYXRlIGIvc3JjcGtncy9sZGMvdGVtcGxhdGUK aW5kZXggYTI3MjgwZGRlM2I4Li44MDU5NzhhODFmZDkgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvbGRj L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvbGRjL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBAQAogIyBU ZW1wbGF0ZSBmaWxlIGZvciAnbGRjJwogcGtnbmFtZT1sZGMKIHZlcnNpb249MS4yOC4wCi1yZXZp c2lvbj0xCityZXZpc2lvbj0yCiB3cmtzcmM9ImxkYy0ke3ZlcnNpb259LXNyYyIKIGJ1aWxkX3N0 eWxlPWNtYWtlCiBjb25maWd1cmVfYXJncz0iCkBAIC0xMSw3ICsxMSw3IEBAIGNvbmZpZ3VyZV9h cmdzPSIKICAtREJBU0hfQ09NUExFVElPTl9DT01QTEVUSU9OU0RJUj0vdXNyL3NoYXJlL2Jhc2gt Y29tcGxldGlvbgogIC1EQ19TWVNURU1fTElCUz0ndW53aW5kO207cHRocmVhZDtydDtkbCciCiBj b25mX2ZpbGVzPSIvZXRjL2xkYzIuY29uZiIKLWhvc3RtYWtlZGVwZW5kcz0iZG1kIGxsdm0xMiBw ZXJsIHBrZy1jb25maWciCitob3N0bWFrZWRlcGVuZHM9ImRtZCBsbHZtIHBlcmwgcGtnLWNvbmZp ZyIKIG1ha2VkZXBlbmRzPSJsaWJjdXJsLWRldmVsIGxpYmZmaS1kZXZlbCBuY3Vyc2VzLWRldmVs IHpsaWItZGV2ZWwKICBsbHZtLWxpYnVud2luZC1kZXZlbCIKIGRlcGVuZHM9ImxkYy1ydW50aW1l IGxsdm0tbGlidW53aW5kLWRldmVsIgoKRnJvbSA1YmIzMmFhYmZhYzdkZmZlYTk4MGRkNWIwNWEx ODFkNzFkNmM1MTlkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5k cj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogRnJp LCA0IE1hciAyMDIyIDExOjU4OjE3ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyNi8zMF0gc2hpYm9r ZW4yOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9zaGlib2tlbjIvdGVtcGxhdGUg fCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hpYm9rZW4y L3RlbXBsYXRlCmluZGV4IGI1NjYxMzIyOWMxMy4uYWI5ZDJjNGNiOGY5IDEwMDY0NAotLS0gYS9z cmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0 ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ3NoaWJva2VuMicKIHBrZ25h bWU9c2hpYm9rZW4yCiB2ZXJzaW9uPTUuMTUuMgotcmV2aXNpb249NAorcmV2aXNpb249NQogX3Br Z25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3ZlcnNpb259Igogd3Jrc3JjPSIk e19wa2duYW1lLyU1LjE0LjIuMS81LjE0LjJ9IgogYnVpbGRfd3Jrc3JjPSJzb3VyY2VzL3NoaWJv a2VuMiIKCkZyb20gYjQ2ZjMwYWM0ZmUwNzQ1ZDNhZGFkYTFhMjEyMjg0MTI4NWQxMGVjNSBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogPT9VVEYtOD9xP0FuZHI9QzM9QTk9MjBDZXJxdWVp cmE/PSA8YWNlcnF1ZWlyYTAyMUBnbWFpbC5jb20+CkRhdGU6IEZyaSwgNCBNYXIgMjAyMiAxMTo1 ODoyMyArMDAwMApTdWJqZWN0OiBbUEFUQ0ggMjcvMzBdIHRpbGl4OiByZWJ1aWxkIGZvciBsbHZt MTMKCi0tLQogc3JjcGtncy90aWxpeC90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBjaGFuZ2VkLCAx IGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdGlsaXgv dGVtcGxhdGUgYi9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlCmluZGV4IGQ4ZjAxNGJjNzhjNS4uYWMx YmY3ZGQzYmRkIDEwMDY0NAotLS0gYS9zcmNwa2dzL3RpbGl4L3RlbXBsYXRlCisrKyBiL3NyY3Br Z3MvdGlsaXgvdGVtcGxhdGUKQEAgLTEsNyArMSw3IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICd0 aWxpeCcKIHBrZ25hbWU9dGlsaXgKIHZlcnNpb249MS45LjQKLXJldmlzaW9uPTMKK3JldmlzaW9u PTQKIGJ1aWxkX3N0eWxlPW1lc29uCiBjb25maWd1cmVfYXJncz0iLURiX2x0bz1mYWxzZSIKIGhv c3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgZ2V0dGV4dC1kZXZlbCBnZGstcGl4YnVmIGdsaWItZGV2 ZWwgbGRjIHBvNGEgcGtnLWNvbmZpZwoKRnJvbSA5OTQyYTJhN2RjY2E4Y2I4YjgxYzE3NjkxMzAz OTJiNjM3MzkwZDFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5k cj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogRnJp LCA0IE1hciAyMDIyIDEyOjA4OjU1ICswMDAwClN1YmplY3Q6IFtQQVRDSCAyOC8zMF0gU1BJUlYt TExWTS1UcmFuc2xhdG9yOiByZWJ1aWxkIGZvciBsbHZtMTMKCi0tLQogc3JjcGtncy9TUElSVi1M TFZNLVRyYW5zbGF0b3IvdGVtcGxhdGUgfCAyICstCiAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRp b24oKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL1NQSVJWLUxMVk0tVHJh bnNsYXRvci90ZW1wbGF0ZSBiL3NyY3BrZ3MvU1BJUlYtTExWTS1UcmFuc2xhdG9yL3RlbXBsYXRl CmluZGV4IDI1MDRjYWJlZDM2Ny4uODUyYWE1Y2IzODQwIDEwMDY0NAotLS0gYS9zcmNwa2dzL1NQ SVJWLUxMVk0tVHJhbnNsYXRvci90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL1NQSVJWLUxMVk0tVHJh bnNsYXRvci90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ1NQ SVJWLUxMVk0tVHJhbnNsYXRvcicKIHBrZ25hbWU9U1BJUlYtTExWTS1UcmFuc2xhdG9yCiB2ZXJz aW9uPTEyLjAuMAotcmV2aXNpb249MQorcmV2aXNpb249MgogYnVpbGRfc3R5bGU9Y21ha2UKIG1h a2VfYnVpbGRfYXJncz0ibGx2bS1zcGlydiIKIGNvbmZpZ3VyZV9hcmdzPSItV25vLWRldiAtRExM Vk1fTElOS19MTFZNX0RZTElCPU9OIC1EQ01BS0VfU0tJUF9SUEFUSD1PTgoKRnJvbSBkOTc1NGRk ZjA5Y2JhNmNhNjBmNTQ0YzQzZDYwMjEyNTRiMGZjZmJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAw MQpGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIx QGdtYWlsLmNvbT4KRGF0ZTogRnJpLCA0IE1hciAyMDIyIDEyOjExOjQ5ICswMDAwClN1YmplY3Q6 IFtQQVRDSCAyOS8zMF0gZ2hkbDogcmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvZ2hk bC90ZW1wbGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2doZGwvdGVtcGxhdGUgYi9zcmNwa2dz L2doZGwvdGVtcGxhdGUKaW5kZXggZTc1NmQ4YzNjZDg3Li5hODNkOTlmNGJmNWQgMTAwNjQ0Ci0t LSBhL3NyY3BrZ3MvZ2hkbC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL2doZGwvdGVtcGxhdGUKQEAg LTcsNyArNyw3IEBACiBwa2duYW1lPWdoZGwKIHJldmVydHM9IjIwMTgxMTI5XzEiCiB2ZXJzaW9u PTEuMC4wCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBidWlsZF9zdHlsZT1jb25maWd1cmUKIGNv bmZpZ3VyZV9hcmdzPSItLXByZWZpeD0vdXNyIC0tc3JjZGlyPS4uIC0taW5jZGlyPWxpYi9naGRs L2luY2x1ZGUiCiBtYWtlZGVwZW5kcz0iemxpYi1kZXZlbCIKQEAgLTUxLDcgKzUxLDcgQEAgZmkK IAogaWYgWyAiJGJ1aWxkX29wdGlvbl9sbHZtIiBdOyB0aGVuCiAJc3VicGFja2FnZXMrPSIgZ2hk bC1sbHZtIgotCW1ha2VkZXBlbmRzKz0iIGxsdm0xMiIKKwltYWtlZGVwZW5kcys9IiBsbHZtIgog ZmkKIAogZG9fY29uZmlndXJlKCkgewoKRnJvbSAyNDlkYmFkNjFmNTFjYzYyMTg0YmY0ZGE1MWQz OGU2ZmI1MGVmYzU4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/QW5k cj1DMz1BOT0yMENlcnF1ZWlyYT89IDxhY2VycXVlaXJhMDIxQGdtYWlsLmNvbT4KRGF0ZTogRnJp LCA0IE1hciAyMDIyIDEyOjEzOjE4ICswMDAwClN1YmplY3Q6IFtQQVRDSCAzMC8zMF0gcnVzdDog cmVidWlsZCBmb3IgbGx2bTEzCgotLS0KIHNyY3BrZ3MvcnVzdC90ZW1wbGF0ZSB8IDYgKysrLS0t CiAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcnVzdC90ZW1wbGF0ZSBiL3NyY3BrZ3MvcnVzdC90ZW1wbGF0ZQppbmRl eCA1NjBhNjI5ZjNkYTIuLjI3ZjQ5MWQzYzY5NyAxMDA2NDQKLS0tIGEvc3JjcGtncy9ydXN0L3Rl bXBsYXRlCisrKyBiL3NyY3BrZ3MvcnVzdC90ZW1wbGF0ZQpAQCAtOSwxMCArOSwxMCBAQAogIwog cGtnbmFtZT1ydXN0CiB2ZXJzaW9uPTEuNTcuMAotcmV2aXNpb249MQorcmV2aXNpb249Mgogd3Jr c3JjPSJydXN0Yy0ke3ZlcnNpb259LXNyYyIKIGhvc3RtYWtlZGVwZW5kcz0iY21ha2UgY3VybCBw a2ctY29uZmlnIHB5dGhvbjMgdGFyIGNhcmdvLWJvb3RzdHJhcCIKLW1ha2VkZXBlbmRzPSJsaWJm ZmktZGV2ZWwgbmN1cnNlcy1kZXZlbCBsaWJ4bWwyLWRldmVsIHpsaWItZGV2ZWwgbGx2bTEyIgor bWFrZWRlcGVuZHM9ImxpYmZmaS1kZXZlbCBuY3Vyc2VzLWRldmVsIGxpYnhtbDItZGV2ZWwgemxp Yi1kZXZlbCBsbHZtIgogZGVwZW5kcz0icnVzdC1zdGQiCiBzaG9ydF9kZXNjPSJTYWZlLCBjb25j dXJyZW50LCBwcmFjdGljYWwgc3lzdGVtcyBsYW5ndWFnZSIKIG1haW50YWluZXI9IkVubm8gQm9s YW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9yZz4iCkBAIC0zNCw3ICszNCw3IEBAIGlmIFsgIiRYQlBT X1RBUkdFVF9MSUJDIiA9ICJtdXNsIiBdOyB0aGVuCiBmaQogCiBpZiBbICIkQ1JPU1NfQlVJTEQi IF07IHRoZW4KLQlob3N0bWFrZWRlcGVuZHMrPSIgcnVzdCBsbHZtMTIiCisJaG9zdG1ha2VkZXBl bmRzKz0iIHJ1c3QgbGx2bSIKIAkjIFRoZXNlIGFyZSByZXF1aXJlZCBmb3IgYnVpbGRpbmcgdGhl IGJ1aWxkaG9zdCdzIHN0YWdlMC8xCiAJaG9zdG1ha2VkZXBlbmRzKz0iIGxpYmZmaS1kZXZlbCBs aWJ4bWwyLWRldmVsIG5jdXJzZXMtZGV2ZWwgemxpYi1kZXZlbCIKIGVsc2UK --===============8333498822677987645==--