From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 7177 invoked from network); 23 Aug 2022 13:39:52 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 23 Aug 2022 13:39:52 -0000 Content-Type: multipart/mixed; boundary="===============3582828229128987507==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_=5Bci_skip=5D_freecad=3A_update_to_0=2E20=2E1=2C_update_pyside_to_5=2E15=2E5_and_others_related?= To: ml@inbox.vuxu.org From: yopito Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 23 Aug 2022 15:39:52 +0200 List-Id: Message-ID: <20220823133952.qVr9cWnAYoejCdEmwsLCGdzeIpSfnMOhV_t6SddYsSM@z> GitHub notification mails are now in MIME to allow UTF8. --===============3582828229128987507== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgeW9waXRvIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS95b3Bp dG8vdm9pZC1wYWNrYWdlcyBweXNpZGU1LjE1LjVfYW5kX2ZyZWVjYWQwLjIwCmh0dHBzOi8vZ2l0 aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8zODg1NgoKW2NpIHNraXBdIGZy ZWVjYWQ6IHVwZGF0ZSB0byAwLjIwLjEsIHVwZGF0ZSBweXNpZGUgdG8gNS4xNS41IGFuZCBvdGhl cnMgcmVsYXRlZAo8IS0tIFVuY29tbWVudCByZWxldmFudCBzZWN0aW9ucyBhbmQgZGVsZXRlIG9w dGlvbnMgd2hpY2ggYXJlIG5vdCBhcHBsaWNhYmxlIC0tPg0KDQojIyMjIFRlc3RpbmcgdGhlIGNo YW5nZXMNCi0gSSB0ZXN0ZWQgdGhlIGNoYW5nZXMgaW4gdGhpcyBQUjogKipZRVMqKg0KDQo8IS0t DQojIyMjIE5ldyBwYWNrYWdlDQotIFRoaXMgbmV3IHBhY2thZ2UgY29uZm9ybXMgdG8gdGhlIFtw YWNrYWdlIHJlcXVpcmVtZW50c10oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1w YWNrYWdlcy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQjcGFja2FnZS1yZXF1aXJlbWVudHMp OiAqKllFUyoqfCoqTk8qKg0KLS0+DQoNCjwhLS0gTm90ZTogSWYgdGhlIGJ1aWxkIGlzIGxpa2Vs eSB0byB0YWtlIG1vcmUgdGhhbiAyIGhvdXJzLCBwbGVhc2UgYWRkIGNpIHNraXAgdGFnIGFzIGRl c2NyaWJlZCBpbg0KaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9i bG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQjY29udGludW91cy1pbnRlZ3JhdGlvbg0KYW5kIHRl c3QgYXQgbGVhc3Qgb25lIG5hdGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVhc3Qg b25lIGNyb3NzIGJ1aWxkLg0KSWdub3JlIHRoaXMgc2VjdGlvbiBpZiB0aGlzIFBSIGlzIG5vdCBz a2lwcGluZyBDSS4NCi0tPg0KDQojIyMjIExvY2FsIGJ1aWxkIHRlc3RpbmcNCi0gSSBidWlsdCB0 aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUgKHg4Nl82NC1tdXNsKSA6 ICoqWUVTKioNCi0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIHRoZXNlIGFyY2hpdGVjdHVy ZXMgKGlmIHN1cHBvcnRlZC4gbWFyayBjcm9zc2J1aWxkcyk6DQogIC0gYWFyY2g2NCAoZ2xpYmMp OiBwYXJ0aWFsLCBzaW5jZSBzb21lIHBhY2thZ2VzIGNhbid0IGJlIGNyb3NzYnVpbGRlZA0KDQoj IyMjIEFkZGl0aW9uYWwgY29tbWVudHMNCg0KKiBydW50aW1lIHRlc3QgYXJlIE9LLCBhcGFydCB0 aGVzZSByZWxhdGVkIHRvIHBpdnksIHNlZSBiZWxvdw0KKiBzdXBlcnNlZWRzIFBSICMzNjM1NiBy ZWdhcmRpbmcgRnJlZUNBRCB1cGRhdGUNCiogYWJvdXQgcGl2eTogc29tZSAgU0lHU0VHViBvbiBy dW5uaW5nIEZyZWVDQUQgd2hlbiBpdCdzIHVzaW5nIENvaW4vcGl2eS4gIA0KICBTZWUgaHR0cHM6 Ly9naXRodWIuY29tL2NvaW4zZC9waXZ5L2lzc3Vlcy85OCAgDQogIEhvd2V2ZXIsIHRoaXMgaXMg YWZmZWN0aW5nIGN1cnJlbnQgRnJlZUNBRCBiaW5hcnkgcGFja2FnaW5nIHRvby4NCg0KcGluZyBA bHV6cGF6IEBrYXJsLW5pbHNzb24gQFBpcmF0eQ0KCgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczov L2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzg4NTYucGF0Y2ggaXMg YXR0YWNoZWQ= --===============3582828229128987507== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-pyside5.15.5_and_freecad0.20-38856.patch" RnJvbSAyYzA4YmZlYTdkYTliYWFiMGNlMTE2ZGE0YzcyYTU3ZmEyZmU0N2Q4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiB5b3BpdG8gPHBpZXJyZS5ib3VyZ2luQGZyZWUuZnI+CkRhdGU6 IE1vbiwgMjIgQXVnIDIwMjIgMTM6NDI6MzIgKzAyMDAKU3ViamVjdDogW1BBVENIIDEvNl0gc2hp Ym9rZW4yOiB1cGRhdGUgdG8gNS4xNS41CgotLS0KIC4uLi9wYXRjaGVzL2ZpeC1mb3ItbnVtcHkt MS4yMy4wLnBhdGNoICAgICAgICB8ICAxOCArKysKIC4uLi9wYXRjaGVzL25vLXB5dGhvbi1hcmNo LXN1ZmZpeC5wYXRjaCAgICAgICB8ICAgMiArLQogc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9w eXRob24zMTAucGF0Y2ggICAgIHwgMTE0IC0tLS0tLS0tLS0tLS0tLS0tLQogLi4uL3BhdGNoZXMv dGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaCAgICAgICAgIHwgIDkxIC0tLS0tLS0tLS0tLS0tCiBz cmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KIDUg ZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgMjA5IGRlbGV0aW9ucygtKQogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvZml4LWZvci1udW1weS0xLjIz LjAucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL3B5 dGhvbjMxMC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNo ZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvc2hpYm9r ZW4yL3BhdGNoZXMvZml4LWZvci1udW1weS0xLjIzLjAucGF0Y2ggYi9zcmNwa2dzL3NoaWJva2Vu Mi9wYXRjaGVzL2ZpeC1mb3ItbnVtcHktMS4yMy4wLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNzA4Y2ViZTNmOWZjCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9zaGlib2tlbjIvcGF0Y2hlcy9maXgtZm9yLW51bXB5LTEuMjMuMC5wYXRjaApAQCAtMCww ICsxLDE4IEBACityZXdvcmsgb2YgY29tbWl0IDE0MjJjZjRhN2YyNzdmYjEzZmQyMDlmMjRhOTBk NmMwMjY0MTQ5N2QgKHNoaWJva2VuNikKKworLS0tIGEvc291cmNlcy9zaGlib2tlbjIvbGlic2hp Ym9rZW4vc2JrbnVtcHlhcnJheWNvbnZlcnRlci5jcHAKKysrKyBiL3NvdXJjZXMvc2hpYm9rZW4y L2xpYnNoaWJva2VuL3Nia251bXB5YXJyYXljb252ZXJ0ZXIuY3BwCitAQCAtMTE2LDggKzExNiwx MyBAQAorICAgICAgICAgICAgIHN0ciA8PCAiIE5QWV9BUlJBWV9OT1RTV0FQUEVEIjsKKyAgICAg ICAgIGlmICgoZmxhZ3MgJiBOUFlfQVJSQVlfV1JJVEVBQkxFKSAhPSAwKQorICAgICAgICAgICAg IHN0ciA8PCAiIE5QWV9BUlJBWV9XUklURUFCTEUiOworKyNpZiBOUFlfVkVSU0lPTiA+PSAweDAw MDAwMDEwIC8vIE5QWV8xXzIzX0FQSV9WRVJTSU9OCisrICAgICAgICBpZiAoKGZsYWdzICYgTlBZ X0FSUkFZX1dSSVRFQkFDS0lGQ09QWSkgIT0gMCkKKysgICAgICAgICAgICBzdHIgPDwgIiBOUFlf QVJSQVlfV1JJVEVCQUNLSUZDT1BZIjsKKysjZWxzZQorICAgICAgICAgaWYgKChmbGFncyAmIE5Q WV9BUlJBWV9VUERBVEVJRkNPUFkpICE9IDApCisgICAgICAgICAgICAgc3RyIDw8ICIgTlBZX0FS UkFZX1VQREFURUlGQ09QWSI7CisrI2VuZGlmCisgICAgIH0gZWxzZSB7CisgICAgICAgICBzdHIg PDwgJzAnOworICAgICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL25v LXB5dGhvbi1hcmNoLXN1ZmZpeC5wYXRjaCBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3BhdGNoZXMvbm8t cHl0aG9uLWFyY2gtc3VmZml4LnBhdGNoCmluZGV4IDAyYmFhNjg5NmY3Yi4uMzFlOWM1NWRiNmYy IDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL25vLXB5dGhvbi1hcmNoLXN1 ZmZpeC5wYXRjaAorKysgYi9zcmNwa2dzL3NoaWJva2VuMi9wYXRjaGVzL25vLXB5dGhvbi1hcmNo LXN1ZmZpeC5wYXRjaApAQCAtMSw1ICsxLDUgQEAKIENvbnNpc3RlbnQgZmlsZSBuYW1pbmcgYWNy b3NzIGFyY2hpdGVjdHVyZXMgZm9yIHNvIGxpYnMgYW5kIGNtYWtlIGZpbGVzOgotcmVtb3ZlIGlu dGVybWVkaWF0ZSBzdWZmaXggbGlrZSAiLmNweXRob24tMzZtLXg4Nl82NC1saW51eC1nbnUiLgor cmVtb3ZlIHB5dGhvbiBzdWZmaXggbGlrZSAiLmNweXRob24tMzZtLXg4Nl82NC1saW51eC1nbnUi LgogQXZvaWQgb3ZlcndyaXRpbmcgdGhlICJyZWFsIiBjbWFrZSBmaWxlIHdpdGggdGhlIGdlbmVy aWMgd3JhcHBlcidzIG9uZSAoc2FtZQogbmFtZSBpbiBzdWNoIGEgY2FzZSkKIApkaWZmIC0tZ2l0 IGEvc3JjcGtncy9zaGlib2tlbjIvcGF0Y2hlcy9weXRob24zMTAucGF0Y2ggYi9zcmNwa2dzL3No aWJva2VuMi9wYXRjaGVzL3B5dGhvbjMxMC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMTYwMGRlZGE0NmYyLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9zaGlib2tlbjIv cGF0Y2hlcy9weXRob24zMTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTQgKzAsMCBAQAot VGhlIGZpcnN0IHBhdGNoIGlzIHRha2VuIGZyb20gdGhlIGlzc3VlIGFuZCByZXNvbHV0aW9uIGRv Y3VtZW50ZWQgYXQKLQotICAgIGh0dHBzOi8vYnVncmVwb3J0cy5xdC5pby9icm93c2UvUFlTSURF LTE0MzYKLQotTm90ZSB0aGF0IHN0cmluZ3MgY3JlYXRlZCBhcyBwYXJ0IG9mIHRoZSBgc3RhdGlj U3RyaW5ncygpYCBzZXQgdXNlZCBpbiB0aGUKLWBmaW5hbGl6ZVN0YXRpY1N0cmluZ3MoKWAgZnVu Y3Rpb24gYXJlIGNyZWF0ZWQgYnkgYGNyZWF0ZVN0YXRpY1N0cmluZygpYCwgd2hpY2gKLXVzZXMg YFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nYCB0byBjcmVhdGUgYW4gb3duZWQgcmVmZXJlbmNl IHRvIGFuIGludGVybmVkCi1QeXRob24gc3RyaW5nICoqYW5kKiogY2FsbHMgUHlfSU5DUkVGIHRv IGZ1cnRoZXIgZ3VhcmQgYWdhaW5zdCB0aGUgc3RyaW5ncwotZGlzYXBwZWFyaW5nLiBUaHVzLCBp biBgZmluYWxpemVTdGF0aWNTdHJpbmdzKClgLCB3ZSBuZWVkICp0d28qIGNhbGxzIHRvCi1QeV9E RUNSRUY6IG9uZSB0byBjbGVhciB0aGUgImd1YXJkIiBpbmNyZW1lbnQgYWZ0ZXIgY3JlYXRpb24g YW5kIG9uZSB0byByZWxlYXNlCi1vd25lcnNoaXAgZnJvbSB0aGUgY3JlYXRpb24gaXRzZWxmLgot Ci1UaGUgc2Vjb25kIGFuZCB0aGlyZCBwYXRjaGVzIGFyZSBhZGFwdGVkIGZyb20KLQotICAgIGh0 dHBzOi8vY29kZXJldmlldy5xdC1wcm9qZWN0Lm9yZy9jL3B5c2lkZS9weXNpZGUtc2V0dXAvKy8z NDgzOTAKLQotVGhlIHNlY29uZCBhZGRyZXNzZXMgdGhlIGRpc2FwcGVhcmFuY2Ugb2YgX1B5X01h bmdsZSBmcm9tIFB5dGhvbiAzLjEwIGJ5Ci1wcm92aWRpbmcgYW4gYWx0ZXJuYXRpdmUgaW1wbGVt ZW50YXRpb24gdGhhdCB3YXMgcHJldmlvdXNseSByZXNlcnZlZCBmb3IKLVB5X0xJTUlURURfQVBJ LgotCi1UaGUgZm91cnRoIHBhdGNoIHdhcyBhZGFwdGVkIGZyb20KLQotICAgIGh0dHBzOi8vY29k ZXJldmlldy5xdC1wcm9qZWN0Lm9yZy9jL3B5c2lkZS9weXNpZGUtc2V0dXAvKy8zNjU0MDMvNAot Ci1Ub2dldGhlciB3aXRoIHRoZSB0aGlyZCBwYXRjaCx0IGhpcyBhZGRyZXNzZXMgY2hhbmdlcyB0 byB0aGUgdHlwaW5nIG1vZHVsZSB0aGF0Ci1jYXVzZWQgdGhlIHB5aSBiaW5kaW5nIGdlbmVyYXRv ciB0byBmYWlsIGluIHNvbWUgY2FzZXMuCi0KLWRpZmYgLXVyIGEvc291cmNlcy9zaGlib2tlbjIv bGlic2hpYm9rZW4vcGVwMzg0aW1wbC5jcHAgYi9zb3VyY2VzL3NoaWJva2VuMi9saWJzaGlib2tl bi9wZXAzODRpbXBsLmNwcAotLS0tIGEvc291cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vcGVw Mzg0aW1wbC5jcHAJMjAyMC0xMS0xMSAwNzo1MTozMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBiL3Nv dXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL3BlcDM4NGltcGwuY3BwCTIwMjEtMDktMjYgMDg6 NDc6MDAuNjE0MTg0OTI2IC0wNDAwCi1AQCAtNzUxLDE0ICs3NTEsMTQgQEAKLSAjZW5kaWYgLy8g SVNfUFkyCi0gICAgIFNoaWJva2VuOjpBdXRvRGVjUmVmIHByaXZhdGVvYmooUHlPYmplY3RfR2V0 QXR0cigKLSAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8UHlPYmplY3QgKj4oUHlfVFlQRShzZWxm KSksIFNoaWJva2VuOjpQeU1hZ2ljTmFtZTo6bmFtZSgpKSk7Ci0tI2lmbmRlZiBQeV9MSU1JVEVE X0FQSQotLSAgICByZXR1cm4gX1B5X01hbmdsZShwcml2YXRlb2JqLCBuYW1lKTsKLS0jZWxzZQot LSAgICAvLyBGb3Igc29tZSByZWFzb24sIF9QeV9NYW5nbGUgaXMgbm90IGluIHRoZSBMaW1pdGVk IEFQSS4gV2h5PwotLSAgICBzaXplX3QgcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByaXZh dGVvYmopOwotKwotKyAgICAvLyBQWVNJREUtMTQzNjogX1B5X01hbmdsZSBpcyBubyBsb25nZXIg ZXhwb3NlZDsgaW1wbGVtZW50IGl0IGFsd2F5cy4KLSsgICAgLy8gVGhlIHJlc3Qgb2YgdGhpcyBm dW5jdGlvbiBpcyBvdXIgb3duIGltcGxlbWVudGF0aW9uIG9mIF9QeV9NYW5nbGUuCi0rICAgIC8v IFBsZWFzZSBjb21wYXJlIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpbiBjb21waWxlLmMgLgotKyAg ICBzaXplX3QgcGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHByaXZhdGVvYmoub2JqZWN0KCkp OwotICAgICAvKiBTdHJpcCBsZWFkaW5nIHVuZGVyc2NvcmVzIGZyb20gY2xhc3MgbmFtZSAqLwot ICAgICBzaXplX3QgaXByaXYgPSAwOwotLSAgICB3aGlsZSAoUHlVbmljb2RlX1JFQURfQ0hBUihw cml2YXRlb2JqLCBpcHJpdikgPT0gJ18nKQotKyAgICB3aGlsZSAoUHlVbmljb2RlX1JFQURfQ0hB Uihwcml2YXRlb2JqLm9iamVjdCgpLCBpcHJpdikgPT0gJ18nKQotICAgICAgICAgaXByaXYrKzsK LSAgICAgaWYgKGlwcml2ID09IHBsZW4pIHsKLSAgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKLUBA IC03ODcsNyArNzg3LDYgQEAKLSAgICAgaWYgKGFtb3VudCA+IGJpZ19zdGFjaykKLSAgICAgICAg IGZyZWUocmVzYnVmKTsKLSAgICAgcmV0dXJuIHJlc3VsdDsKLS0jZW5kaWYgLy8gZWxzZSBQeV9M SU1JVEVEX0FQSQotIH0KLSAKLSAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLWRpZmYgLXVyIGEvc291 cmNlcy9zaGlib2tlbjIvbGlic2hpYm9rZW4vc2Jrc3RyaW5nLmNwcCBiL3NvdXJjZXMvc2hpYm9r ZW4yL2xpYnNoaWJva2VuL3Nia3N0cmluZy5jcHAKLS0tLSBhL3NvdXJjZXMvc2hpYm9rZW4yL2xp YnNoaWJva2VuL3Nia3N0cmluZy5jcHAJMjAyMC0xMS0xMSAwNzo1MTozMC4wMDAwMDAwMDAgLTA1 MDAKLSsrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2xpYnNoaWJva2VuL3Nia3N0cmluZy5jcHAJMjAy MS0wOS0yNiAwODo0NzowMC42MTQxODQ5MjYgLTA0MDAKLUBAIC0yNDcsOCArMjQ3LDE1IEBACi0g ewotICAgICBhdXRvICZzZXQgPSBzdGF0aWNTdHJpbmdzKCk7Ci0gICAgIGZvciAoUHlPYmplY3Qg Km9iIDogc2V0KSB7Ci0rICAgICAgICAvLyBTaW5jZSBQeXRob24gMy4xMCwgaW50ZXJuZWQgc3Ry aW5ncyBhdCBkZWxldGVkIGF0IFB5dGhvbiBleGl0LgotKyNpZiBQWV9WRVJTSU9OX0hFWCA+PSAw eDAzMGEwMDAwCi0rICAgICAgICBQeV9ERUNSRUYob2IpOwotKyAgICAgICAgLy8gY3JlYXRlU3Rh dGljU3RyaW5nKCkgY2FsbHMgUHlfSU5DUkVGKCkKLSsgICAgICAgIFB5X0RFQ1JFRihvYik7Ci0r I2Vsc2UKLSAgICAgICAgIFB5X1JFRkNOVChvYikgPSAxOwotICAgICAgICAgUHlfREVDUkVGKG9i KTsKLSsjZW5kaWYKLSAgICAgfQotICAgICBzZXQuY2xlYXIoKTsKLSB9Ci1kaWZmIC11ciBhL3Nv dXJjZXMvc2hpYm9rZW4yL3NoaWJva2VubW9kdWxlL2ZpbGVzLmRpci9zaGlib2tlbnN1cHBvcnQv c2lnbmF0dXJlL21hcHBpbmcucHkgYi9zb3VyY2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9m aWxlcy5kaXIvc2hpYm9rZW5zdXBwb3J0L3NpZ25hdHVyZS9tYXBwaW5nLnB5Ci0tLS0gYS9zb3Vy Y2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9maWxlcy5kaXIvc2hpYm9rZW5zdXBwb3J0L3Np Z25hdHVyZS9tYXBwaW5nLnB5CTIwMjAtMTEtMTEgMDc6NTE6MzAuMDAwMDAwMDAwIC0wNTAwCi0r KysgYi9zb3VyY2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9maWxlcy5kaXIvc2hpYm9rZW5z dXBwb3J0L3NpZ25hdHVyZS9tYXBwaW5nLnB5CTIwMjEtMDktMjYgMDg6NDc6MDAuNjE0MTg0OTI2 IC0wNDAwCi1AQCAtMzAwLDYgKzMwMCw3IEBACi0gICAgICJ6ZXJvKG9iamVjdCkiOiBOb25lLAot ICAgICAiemVybyhzdHIpIjogIiIsCi0gICAgICJ6ZXJvKHR5cGluZy5BbnkpIjogTm9uZSwKLSsg ICAgInplcm8oQW55KSI6IE5vbmUsCi0gICAgIH0pCi0gCi0gdHlwZV9tYXAudXBkYXRlKHsKLWRp ZmYgLXVyIGEvc291cmNlcy9zaGlib2tlbjIvc2hpYm9rZW5tb2R1bGUvZmlsZXMuZGlyL3NoaWJv a2Vuc3VwcG9ydC9zaWduYXR1cmUvcGFyc2VyLnB5IGIvc291cmNlcy9zaGlib2tlbjIvc2hpYm9r ZW5tb2R1bGUvZmlsZXMuZGlyL3NoaWJva2Vuc3VwcG9ydC9zaWduYXR1cmUvcGFyc2VyLnB5Ci0t LS0gYS9zb3VyY2VzL3NoaWJva2VuMi9zaGlib2tlbm1vZHVsZS9maWxlcy5kaXIvc2hpYm9rZW5z dXBwb3J0L3NpZ25hdHVyZS9wYXJzZXIucHkJMjAyMC0xMS0xMSAwNzo1MTozMC4wMDAwMDAwMDAg LTA1MDAKLSsrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL3NoaWJva2VubW9kdWxlL2ZpbGVzLmRpci9z aGlib2tlbnN1cHBvcnQvc2lnbmF0dXJlL3BhcnNlci5weQkyMDIxLTA5LTI2IDA4OjQ4OjI3Ljc0 MzE3MTU4NyAtMDQwMAotQEAgLTQzLDEwICs0MywxMSBAQAotIGltcG9ydCByZQotIGltcG9ydCB3 YXJuaW5ncwotIGltcG9ydCB0eXBlcwotK2ltcG9ydCB0eXBpbmcKLSBpbXBvcnQga2V5d29yZAot IGltcG9ydCBmdW5jdG9vbHMKLSBmcm9tIHNoaWJva2Vuc3VwcG9ydC5zaWduYXR1cmUubWFwcGlu ZyBpbXBvcnQgKHR5cGVfbWFwLCB1cGRhdGVfbWFwcGluZywKLS0gICAgbmFtZXNwYWNlLCB0eXBp bmcsIF9Ob3RDYWxsZWQsIFJlc3VsdFZhcmlhYmxlLCBBcnJheUxpa2VWYXJpYWJsZSkKLSsgICAg bmFtZXNwYWNlLCBfTm90Q2FsbGVkLCBSZXN1bHRWYXJpYWJsZSwgQXJyYXlMaWtlVmFyaWFibGUp Ci0gZnJvbSBzaGlib2tlbnN1cHBvcnQuc2lnbmF0dXJlLmxpYi50b29sIGltcG9ydCAoU2ltcGxl TmFtZXNwYWNlLAotICAgICBidWlsZF9icmFjZV9wYXR0ZXJuKQotIAotQEAgLTIyMiw3ICsyMjMs NyBAQAotIGRlZiB0b19zdHJpbmcodGhpbmcpOgotICAgICBpZiBpc2luc3RhbmNlKHRoaW5nLCBz dHIpOgotICAgICAgICAgcmV0dXJuIHRoaW5nCi0tICAgIGlmIGhhc2F0dHIodGhpbmcsICJfX25h bWVfXyIpOgotKyAgICBpZiBoYXNhdHRyKHRoaW5nLCAiX19uYW1lX18iKSBhbmQgdGhpbmcuX19t b2R1bGVfXyAhPSAidHlwaW5nIjoKLSAgICAgICAgIGRvdCA9ICIuIiBpbiBzdHIodGhpbmcpCi0g ICAgICAgICBuYW1lID0gZ2V0X25hbWUodGhpbmcpCi0gICAgICAgICByZXR1cm4gdGhpbmcuX19t b2R1bGVfXyArICIuIiArIG5hbWUgaWYgZG90IGVsc2UgbmFtZQpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9zaGlib2tlbjIvcGF0Y2hlcy90ZXN0cy1weXRob24tc3ludGF4LnBhdGNoIGIvc3JjcGtncy9z aGlib2tlbjIvcGF0Y2hlcy90ZXN0cy1weXRob24tc3ludGF4LnBhdGNoCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAzMjc0M2E2Mjk1Y2UuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3NoaWJva2VuMi9wYXRjaGVzL3Rlc3RzLXB5dGhvbi1zeW50YXgucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw5MSArMCwwIEBACi1UaGlzIGNoYW5nZXNldCBpcyBhYm91dCBib3RoIHNoaWJva2Vu MiBhbmQgcHl0aG9uMy1weXNpZGUyCi0odGhhdCBhcmUgc2VwYXJhdGVkIHBhY2thZ2VzKQotdXBz dHJlYW06IHllcwotCi1Gcm9tIGM2MTg0ZTAxZTk5M2RjY2E5Nzk4ZjMwNmZiOGU5Y2IzMjJmZGQw ZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RpYW4gVGlzbWVyIDx0aXNt ZXJAc3RhY2tsZXNzLmNvbT4KLURhdGU6IFRodSwgMyBEZWMgMjAyMCAxMzozODo1OCArMDEwMAot U3ViamVjdDogW1BBVENIXSBmaXggYm90aCBxZmxhZ3NfdGVzdCBhbmQgdGhlIHFmbGFncyBjcHBn ZW5lcmF0b3IgY29kZQotCi1UaGVyZSB3YXMgYSB5ZWFycy1vbGQgcWZsYWdzIHRlc3QgZmFpbGlu ZyBvbiBQeXRob24gMy4KLUl0IHdhcyBibGFja2xpc3RlZCB3aXRoIHRoZSBjb21tZW50Ci0KLSAg ICAiIyAgTmVzdGVkIGV4Y2VwdGlvbiBpbiBQeXRob24gMyIKLQotVGhpcyB3YXMgbm9uc2Vuc2U6 IFRoZSB0ZXN0IHdhcyB3cm9uZyBhbHNvIGZvciBQeXRob24gMi4KLUl0IGp1c3QgaGFwcGVuZWQg dG8gd29yaywgYmVjYXVzZSBQeXRob24gMiBoYWQgc29tZSB3ZWlyZAotZXJyb3JzIGxlYWtpbmcu IFRoZSByZWFsIGJ1ZyB3YXMgaW4gbWlzc2luZyBlcnJvciBoYW5kbGluZwotaW4gY3BwZ2VuZXJh dG9yLmNwcCAuCi0KLVNlZSB0aGUgbWFpbiBkZXNjcmlwdGlvbiBpbiB0aGUgaXNzdWUuCi0KLUNo YW5nZS1JZDogSWEwZjk0NjY2NDBlMGViMzNmMWI4YjI2MTc4ZDMzZjJiZTBiY2IzMmYKLVRhc2st bnVtYmVyOiBQWVNJREUtMTQ0MgotUmV2aWV3ZWQtYnk6IEZyaWVkZW1hbm4gS2xlaW50IDxGcmll ZGVtYW5uLktsZWludEBxdC5pbz4KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDI4OGZhZGI3 OTZlYzRlMTFlOTllMzc1MmQ1MzFhZGE3ZWRmMTVkNzUpCi0tLS0KLSBidWlsZF9oaXN0b3J5L2Js YWNrbGlzdC50eHQgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMgLS0tCi0gc291cmNlcy9w eXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVzdC5weSAgICAgICAgICB8IDEyICsrKysrKyst LS0tLQotIC4uLi9zaGlib2tlbjIvZ2VuZXJhdG9yL3NoaWJva2VuMi9jcHBnZW5lcmF0b3IuY3Bw ICAgfCAgMiArKwotIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGJ1aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dCBidWlsZF9oaXN0 b3J5L2JsYWNrbGlzdC50eHQKLWluZGV4IDliNjNmOTc4NC4uMmEyYTVkNGM0IDEwMDY0NAotLS0t IGEvYnVpbGRfaGlzdG9yeS9ibGFja2xpc3QudHh0Ci0rKysgYi9idWlsZF9oaXN0b3J5L2JsYWNr bGlzdC50eHQKLUBAIC0xOCw5ICsxOCw2IEBACi0gICAgIGRhcndpbiBweTMKLSBbUXRDb3JlOjpx ZmlsZXJlYWRfdGVzdF0KLSAgICAgZGFyd2luCi0tIyAgTmVzdGVkIGV4Y2VwdGlvbiBpbiBQeXRo b24gMwotLVtRdENvcmU6OnFmbGFnc190ZXN0XQotLSAgICBweTMKLSBbUXRDb3JlOjpxb2JqZWN0 X2Nvbm5lY3Rfbm90aWZ5X3Rlc3RdCi0gICAgIGxpbnV4Ci0gICAgIGRhcndpbgotZGlmZiAtLWdp dCBzb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRDb3JlL3FmbGFnc190ZXN0LnB5IHNvdXJjZXMvcHlz aWRlMi90ZXN0cy9RdENvcmUvcWZsYWdzX3Rlc3QucHkKLWluZGV4IDA4YTdjNTViMS4uZTFlOTg5 YzFlIDEwMDY0NAotLS0tIGEvc291cmNlcy9weXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVz dC5weQotKysrIGIvc291cmNlcy9weXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVzdC5weQot QEAgLTMwLDYgKzMwLDcgQEAKLSAKLSAnJydUZXN0IGNhc2VzIGZvciBRRmxhZ3MnJycKLSAKLStp bXBvcnQgb3BlcmF0b3IKLSBpbXBvcnQgb3MKLSBpbXBvcnQgc3lzCi0gaW1wb3J0IHVuaXR0ZXN0 Ci1AQCAtMTE3LDEyICsxMTgsMTMgQEAgY2xhc3MgUUZsYWdzT25RVmFyaWFudCh1bml0dGVzdC5U ZXN0Q2FzZSk6Ci0gY2xhc3MgUUZsYWdzV3JvbmdUeXBlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg ICAgZGVmIHRlc3RXcm9uZ1R5cGUoc2VsZik6Ci0gICAgICAgICAnJydXcm9uZyB0eXBlIHBhc3Nl ZCB0byBRRmxhZ3MgYmluYXJ5IG9wZXJhdG9ycycnJwotKyAgICAgICAgZm9yIG9wIGluIG9wZXJh dG9yLm9yXywgb3BlcmF0b3IuYW5kXywgb3BlcmF0b3IueG9yOgotKyAgICAgICAgICAgIGZvciB4 IGluICc0MycsICdqYWJiYScsIFFPYmplY3QsIG9iamVjdDoKLSsgICAgICAgICAgICAgICAgc2Vs Zi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcCwgUXQuTm9JdGVtRmxhZ3MsIHgpCi0rICAgICAg ICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3AsIHgsIFF0Lk5vSXRlbUZs YWdzKQotKyAgICAgICAgIyBtYWtpbmcgc3VyZSB0aGlzIGFjdHVhbGx5IGRvZXMgbm90IGZhaWwg YWxsIHRoZSB0aW1lCi0rICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLm9yXyhRdC5O b0l0ZW1GbGFncywgNDMpLCA0MykKLSAKLS0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVF cnJvciwgUXQuTm9JdGVtRmxhZ3MgfCAnNDMnKQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo VHlwZUVycm9yLCBRdC5Ob0l0ZW1GbGFncyAmICc0MycpCi0tICAgICAgICBzZWxmLmFzc2VydFJh aXNlcyhUeXBlRXJyb3IsICdqYWJiYScgJiBRdC5Ob0l0ZW1GbGFncykKLS0gICAgICAgIHNlbGYu YXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ2h1dCcgJiBRdC5Ob0l0ZW1GbGFncykKLS0gICAgICAg IHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgUXQuTm9JdGVtRmxhZ3MgJiBRT2JqZWN0KCkp Ci0gCi0gaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAgdW5pdHRlc3QubWFpbigpCi1k aWZmIC0tZ2l0IHNvdXJjZXMvc2hpYm9rZW4yL2dlbmVyYXRvci9zaGlib2tlbjIvY3BwZ2VuZXJh dG9yLmNwcCBzb3VyY2VzL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4yL2NwcGdlbmVyYXRv ci5jcHAKLWluZGV4IGZmNDRkYjk1NS4uODdkZGQ3M2E1IDEwMDY0NAotLS0tIGEvc291cmNlcy9z aGlib2tlbjIvZ2VuZXJhdG9yL3NoaWJva2VuMi9jcHBnZW5lcmF0b3IuY3BwCi0rKysgYi9zb3Vy Y2VzL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4yL2NwcGdlbmVyYXRvci5jcHAKLUBAIC01 MjMwLDYgKzUyMzAsOCBAQCB2b2lkIENwcEdlbmVyYXRvcjo6d3JpdGVGbGFnc0JpbmFyeU9wZXJh dG9yKFFUZXh0U3RyZWFtICZzLCBjb25zdCBBYnN0cmFjdE1ldGFFbgotICAgICBzIDw8IElOREVO VCA8PCAiY3BwQXJnID0gc3RhdGljX2Nhc3Q8IiA8PCBmbGFnc0VudHJ5LT5vcmlnaW5hbE5hbWUo KQotICAgICAgICAgPDwgIj4oaW50KFB5SW50X0FzTG9uZygiIDw8IFBZVEhPTl9BUkcgPDwgIikp KTtcbiI7Ci0gICAgIHMgPDwgIiNlbmRpZlxuXG4iOwotKyAgICBzIDw8IElOREVOVCA8PCAiaWYg KFB5RXJyX09jY3VycmVkKCkpXG4iIDw8IGluZGVudChJTkRFTlQpCi0rICAgICAgICA8PCBJTkRF TlQgPDwgInJldHVybiBudWxscHRyO1xuIiA8PCBvdXRkZW50KElOREVOVCk7Ci0gICAgIHMgPDwg SU5ERU5UIDw8ICJjcHBSZXN1bHQgPSAiIDw8IENQUF9TRUxGX1ZBUiA8PCAiICIgPDwgY3BwT3BO YW1lIDw8ICIgY3BwQXJnO1xuIjsKLSAgICAgcyA8PCBJTkRFTlQgPDwgInJldHVybiAiOwotICAg ICB3cml0ZVRvUHl0aG9uQ29udmVyc2lvbihzLCBmbGFnc1R5cGUsIG51bGxwdHIsIFFMYXRpbjFT dHJpbmcoImNwcFJlc3VsdCIpKTsKLS0tIAotMi4yOS4yCmRpZmYgLS1naXQgYS9zcmNwa2dzL3No aWJva2VuMi90ZW1wbGF0ZSBiL3NyY3BrZ3Mvc2hpYm9rZW4yL3RlbXBsYXRlCmluZGV4IGI1NjYx MzIyOWMxMy4uZDAzMzViMjJiZjUxIDEwMDY0NAotLS0gYS9zcmNwa2dzL3NoaWJva2VuMi90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL3NoaWJva2VuMi90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMg VGVtcGxhdGUgZmlsZSBmb3IgJ3NoaWJva2VuMicKIHBrZ25hbWU9c2hpYm9rZW4yCi12ZXJzaW9u PTUuMTUuMgotcmV2aXNpb249NAordmVyc2lvbj01LjE1LjUKK3JldmlzaW9uPTEKIF9wa2duYW1l PSJweXNpZGUtc2V0dXAtb3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIHdya3NyYz0iJHtfcGtn bmFtZS8lNS4xNC4yLjEvNS4xNC4yfSIKIGJ1aWxkX3dya3NyYz0ic291cmNlcy9zaGlib2tlbjIi CkBAIC0xNSw3ICsxNSw3IEBAIG1haW50YWluZXI9InlvcGl0byA8cGllcnJlLmJvdXJnaW5AZnJl ZS5mcj4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vd2lr aS5xdC5pby9RdF9mb3JfUHl0aG9uL1NoaWJva2VuIgogZGlzdGZpbGVzPSJodHRwczovL2Rvd25s b2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL1F0Rm9yUHl0aG9uL3B5c2lkZTIvUHlTaWRlMi0k e3ZlcnNpb259LXNyYy8ke19wa2duYW1lfS50YXIueHoiCi1jaGVja3N1bT1iMzA2NTA0YjBiODAz NzA3OWE4ZWFiNzcyZWU3NzRiOWU4NzdhMmQ4NGJhYjJkYmVmYmU0ZmE2ZjgzOTQxNDE4CitjaGVj a3N1bT0zOTIwYTRmYjM1MzMwMDI2MGM5YmM0NmZmNzBmMWZiOTc1YzVlN2VmYTIyZTlkNTEyMjI1 ODg5MjhjZTE5YjMzCiAKIHB5dGhvbl92ZXJzaW9uPTMKIGV4cG9ydCBDTEFOR19JTlNUQUxMX0RJ Uj0ke1hCUFNfQ1JPU1NfQkFTRX0vdXNyCgpGcm9tIDVjNDZjNTExOTE0NmFlMjNjOWUwMGI5ZjNh OWI2Mjc2MGZmNzUzYmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IHlvcGl0byA8cGll cnJlLmJvdXJnaW5AZnJlZS5mcj4KRGF0ZTogTW9uLCAyMiBBdWcgMjAyMiAxMzo0MjozNSArMDIw MApTdWJqZWN0OiBbUEFUQ0ggMi82XSBweXRob24zLXB5c2lkZTI6IHVwZGF0ZSB0byA1LjE1LjUK Ci0tLQogLi4uL3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaCAgICAgICAgIHwgMTA2 IC0tLS0tLS0tLS0tLS0tLS0tLQogc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUgICAg ICAgICAgICAgIHwgICA2ICstCiAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMTA5 IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcHl0aG9uMy1weXNpZGUy L3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaCBiL3NyY3Br Z3MvcHl0aG9uMy1weXNpZGUyL3BhdGNoZXMvdGVzdHMtcHl0aG9uLXN5bnRheC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2YzYWIxMTcyZjlmLi4wMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy9weXRob24zLXB5c2lkZTIvcGF0Y2hlcy90ZXN0cy1weXRob24tc3ludGF4LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLVRoaXMgY2hhbmdlc2V0IGlzIGFi b3V0IGJvdGggc2hpYm9rZW4yIGFuZCBweXRob24zLXB5c2lkZTIKLSh0aGF0IGFyZSBzZXBhcmF0 ZWQgcGFja2FnZXMpCi11cHN0cmVhbTogeWVzCi0KLUZyb20gYzYxODRlMDFlOTkzZGNjYTk3OThm MzA2ZmI4ZTljYjMyMmZkZDBkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlz dGlhbiBUaXNtZXIgPHRpc21lckBzdGFja2xlc3MuY29tPgotRGF0ZTogVGh1LCAzIERlYyAyMDIw IDEzOjM4OjU4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGZpeCBib3RoIHFmbGFnc190ZXN0IGFu ZCB0aGUgcWZsYWdzIGNwcGdlbmVyYXRvciBjb2RlCi0KLVRoZXJlIHdhcyBhIHllYXJzLW9sZCBx ZmxhZ3MgdGVzdCBmYWlsaW5nIG9uIFB5dGhvbiAzLgotSXQgd2FzIGJsYWNrbGlzdGVkIHdpdGgg dGhlIGNvbW1lbnQKLQotICAgICIjICBOZXN0ZWQgZXhjZXB0aW9uIGluIFB5dGhvbiAzIgotCi1U aGlzIHdhcyBub25zZW5zZTogVGhlIHRlc3Qgd2FzIHdyb25nIGFsc28gZm9yIFB5dGhvbiAyLgot SXQganVzdCBoYXBwZW5lZCB0byB3b3JrLCBiZWNhdXNlIFB5dGhvbiAyIGhhZCBzb21lIHdlaXJk Ci1lcnJvcnMgbGVha2luZy4gVGhlIHJlYWwgYnVnIHdhcyBpbiBtaXNzaW5nIGVycm9yIGhhbmRs aW5nCi1pbiBjcHBnZW5lcmF0b3IuY3BwIC4KLQotU2VlIHRoZSBtYWluIGRlc2NyaXB0aW9uIGlu IHRoZSBpc3N1ZS4KLQotQ2hhbmdlLUlkOiBJYTBmOTQ2NjY0MGUwZWIzM2YxYjhiMjYxNzhkMzNm MmJlMGJjYjMyZgotVGFzay1udW1iZXI6IFBZU0lERS0xNDQyCi1SZXZpZXdlZC1ieTogRnJpZWRl bWFubiBLbGVpbnQgPEZyaWVkZW1hbm4uS2xlaW50QHF0LmlvPgotKGNoZXJyeSBwaWNrZWQgZnJv bSBjb21taXQgMjg4ZmFkYjc5NmVjNGUxMWU5OWUzNzUyZDUzMWFkYTdlZGYxNWQ3NSkKLS0tLQot IGJ1aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dCAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg MyAtLS0KLSBzb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRDb3JlL3FmbGFnc190ZXN0LnB5ICAgICAg ICAgIHwgMTIgKysrKysrKy0tLS0tCi0gLi4uL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4y L2NwcGdlbmVyYXRvci5jcHAgICB8ICAyICsrCi0gMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlv bnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYnVpbGRfaGlzdG9yeS9ibGFja2xp c3QudHh0IGJ1aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dAotaW5kZXggOWI2M2Y5Nzg0Li4yYTJh NWQ0YzQgMTAwNjQ0Ci0tLS0gYS9idWlsZF9oaXN0b3J5L2JsYWNrbGlzdC50eHQKLSsrKyBiL2J1 aWxkX2hpc3RvcnkvYmxhY2tsaXN0LnR4dAotQEAgLTE4LDkgKzE4LDYgQEAKLSAgICAgZGFyd2lu IHB5MwotIFtRdENvcmU6OnFmaWxlcmVhZF90ZXN0XQotICAgICBkYXJ3aW4KLS0jICBOZXN0ZWQg ZXhjZXB0aW9uIGluIFB5dGhvbiAzCi0tW1F0Q29yZTo6cWZsYWdzX3Rlc3RdCi0tICAgIHB5Mwot IFtRdENvcmU6OnFvYmplY3RfY29ubmVjdF9ub3RpZnlfdGVzdF0KLSAgICAgbGludXgKLSAgICAg ZGFyd2luCi1kaWZmIC0tZ2l0IHNvdXJjZXMvcHlzaWRlMi90ZXN0cy9RdENvcmUvcWZsYWdzX3Rl c3QucHkgc291cmNlcy9weXNpZGUyL3Rlc3RzL1F0Q29yZS9xZmxhZ3NfdGVzdC5weQotaW5kZXgg MDhhN2M1NWIxLi5lMWU5ODljMWUgMTAwNjQ0Ci0tLS0gYS9zb3VyY2VzL3B5c2lkZTIvdGVzdHMv UXRDb3JlL3FmbGFnc190ZXN0LnB5Ci0rKysgYi9zb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRDb3Jl L3FmbGFnc190ZXN0LnB5Ci1AQCAtMzAsNiArMzAsNyBAQAotIAotICcnJ1Rlc3QgY2FzZXMgZm9y IFFGbGFncycnJwotIAotK2ltcG9ydCBvcGVyYXRvcgotIGltcG9ydCBvcwotIGltcG9ydCBzeXMK LSBpbXBvcnQgdW5pdHRlc3QKLUBAIC0xMTcsMTIgKzExOCwxMyBAQCBjbGFzcyBRRmxhZ3NPblFW YXJpYW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSBjbGFzcyBRRmxhZ3NXcm9uZ1R5cGUodW5pdHRl c3QuVGVzdENhc2UpOgotICAgICBkZWYgdGVzdFdyb25nVHlwZShzZWxmKToKLSAgICAgICAgICcn J1dyb25nIHR5cGUgcGFzc2VkIHRvIFFGbGFncyBiaW5hcnkgb3BlcmF0b3JzJycnCi0rICAgICAg ICBmb3Igb3AgaW4gb3BlcmF0b3Iub3JfLCBvcGVyYXRvci5hbmRfLCBvcGVyYXRvci54b3I6Ci0r ICAgICAgICAgICAgZm9yIHggaW4gJzQzJywgJ2phYmJhJywgUU9iamVjdCwgb2JqZWN0OgotKyAg ICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wLCBRdC5Ob0l0ZW1G bGFncywgeCkKLSsgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBv cCwgeCwgUXQuTm9JdGVtRmxhZ3MpCi0rICAgICAgICAjIG1ha2luZyBzdXJlIHRoaXMgYWN0dWFs bHkgZG9lcyBub3QgZmFpbCBhbGwgdGhlIHRpbWUKLSsgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo b3BlcmF0b3Iub3JfKFF0Lk5vSXRlbUZsYWdzLCA0MyksIDQzKQotIAotLSAgICAgICAgc2VsZi5h c3NlcnRSYWlzZXMoVHlwZUVycm9yLCBRdC5Ob0l0ZW1GbGFncyB8ICc0MycpCi0tICAgICAgICBz ZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFF0Lk5vSXRlbUZsYWdzICYgJzQzJykKLS0gICAg ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgJ2phYmJhJyAmIFF0Lk5vSXRlbUZsYWdz KQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCAnaHV0JyAmIFF0Lk5vSXRl bUZsYWdzKQotLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBRdC5Ob0l0ZW1G bGFncyAmIFFPYmplY3QoKSkKLSAKLSBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgICB1 bml0dGVzdC5tYWluKCkKLWRpZmYgLS1naXQgc291cmNlcy9zaGlib2tlbjIvZ2VuZXJhdG9yL3No aWJva2VuMi9jcHBnZW5lcmF0b3IuY3BwIHNvdXJjZXMvc2hpYm9rZW4yL2dlbmVyYXRvci9zaGli b2tlbjIvY3BwZ2VuZXJhdG9yLmNwcAotaW5kZXggZmY0NGRiOTU1Li44N2RkZDczYTUgMTAwNjQ0 Ci0tLS0gYS9zb3VyY2VzL3NoaWJva2VuMi9nZW5lcmF0b3Ivc2hpYm9rZW4yL2NwcGdlbmVyYXRv ci5jcHAKLSsrKyBiL3NvdXJjZXMvc2hpYm9rZW4yL2dlbmVyYXRvci9zaGlib2tlbjIvY3BwZ2Vu ZXJhdG9yLmNwcAotQEAgLTUyMzAsNiArNTIzMCw4IEBAIHZvaWQgQ3BwR2VuZXJhdG9yOjp3cml0 ZUZsYWdzQmluYXJ5T3BlcmF0b3IoUVRleHRTdHJlYW0gJnMsIGNvbnN0IEFic3RyYWN0TWV0YUVu Ci0gICAgIHMgPDwgSU5ERU5UIDw8ICJjcHBBcmcgPSBzdGF0aWNfY2FzdDwiIDw8IGZsYWdzRW50 cnktPm9yaWdpbmFsTmFtZSgpCi0gICAgICAgICA8PCAiPihpbnQoUHlJbnRfQXNMb25nKCIgPDwg UFlUSE9OX0FSRyA8PCAiKSkpO1xuIjsKLSAgICAgcyA8PCAiI2VuZGlmXG5cbiI7Ci0rICAgIHMg PDwgSU5ERU5UIDw8ICJpZiAoUHlFcnJfT2NjdXJyZWQoKSlcbiIgPDwgaW5kZW50KElOREVOVCkK LSsgICAgICAgIDw8IElOREVOVCA8PCAicmV0dXJuIG51bGxwdHI7XG4iIDw8IG91dGRlbnQoSU5E RU5UKTsKLSAgICAgcyA8PCBJTkRFTlQgPDwgImNwcFJlc3VsdCA9ICIgPDwgQ1BQX1NFTEZfVkFS IDw8ICIgIiA8PCBjcHBPcE5hbWUgPDwgIiBjcHBBcmc7XG4iOwotICAgICBzIDw8IElOREVOVCA8 PCAicmV0dXJuICI7Ci0gICAgIHdyaXRlVG9QeXRob25Db252ZXJzaW9uKHMsIGZsYWdzVHlwZSwg bnVsbHB0ciwgUUxhdGluMVN0cmluZygiY3BwUmVzdWx0IikpOwotLS0gCi0yLjI5LjIKLQotRml4 IHB5dGhvbiB3YXJuaW5nIGFib3V0ICdpcyBub3QnIHVzYWdlLgotVGhpcyBkaWZmIGlzIERJU1RJ TkNUIGZyb20gdGhlIHByZXZpb3VzIHBhdGNoCi0KLS0tLSBhL3NvdXJjZXMvcHlzaWRlMi90ZXN0 cy9RdFdpZGdldHMvcXdpZGdldF90ZXN0LnB5CTIwMjAtMTEtMTEgMTM6NTE6MzAuMDAwMDAwMDAw ICswMTAwCi0rKysgYi9zb3VyY2VzL3B5c2lkZTIvdGVzdHMvUXRXaWRnZXRzL3F3aWRnZXRfdGVz dC5weQkyMDIwLTExLTI0IDE0OjI4OjA2LjEwMzA5MzY0OSArMDEwMAotQEAgLTczLDcgKzczLDcg QEAKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3Qgd2lkZ2V0LmlzVmlzaWJsZSgpKQotICAg ICAgICAgd2lkZ2V0LnNldFZpc2libGUoVHJ1ZSkKLSAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3 aWRnZXQuaXNWaXNpYmxlKCkpCi0tICAgICAgICBzZWxmLmFzc2VydFRydWUod2lkZ2V0Lndpbklk KCkgaXMgbm90IDApCi0rICAgICAgICBzZWxmLmFzc2VydFRydWUod2lkZ2V0LndpbklkKCkgIT0g MCkKLSAgICAgICAgICMgc2tpcCB0aGlzIHRlc3Qgb24gbWFjT1Mgc2luY2Ugbm8gbmF0aXZlIGV2 ZW50cyBhcmUgcmVjZWl2ZWQKLSAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoK LSAgICAgICAgICAgICByZXR1cm4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUy L3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLXB5c2lkZTIvdGVtcGxhdGUKaW5kZXggZWRhZDg1 YTUxMTJmLi45NzFiNzdmZTFlZjggMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUy L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1weXNpZGUyL3RlbXBsYXRlCkBAIC0xLDcg KzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1weXNpZGUyJwogcGtnbmFtZT1w eXRob24zLXB5c2lkZTIKLXZlcnNpb249NS4xNS4yCi1yZXZpc2lvbj0yCit2ZXJzaW9uPTUuMTUu NQorcmV2aXNpb249MQogX3BrZ25hbWU9InB5c2lkZS1zZXR1cC1vcGVuc291cmNlLXNyYy0ke3Zl cnNpb259Igogd3Jrc3JjPSIke19wa2duYW1lLyU1LjE0LjIuMS81LjE0LjJ9IgogYnVpbGRfd3Jr c3JjPSJzb3VyY2VzL3B5c2lkZTIiCkBAIC0yNCw3ICsyNCw3IEBAIG1haW50YWluZXI9InlvcGl0 byA8cGllcnJlLmJvdXJnaW5AZnJlZS5mcj4iCiBsaWNlbnNlPSJMR1BMLTMuMC1vci1sYXRlciIK IGhvbWVwYWdlPSJodHRwczovL3dpa2kucXQuaW8vUXRfZm9yX1B5dGhvbiIKIGRpc3RmaWxlcz0i aHR0cHM6Ly9kb3dubG9hZC5xdC5pby9vZmZpY2lhbF9yZWxlYXNlcy9RdEZvclB5dGhvbi9weXNp ZGUyL1B5U2lkZTItJHt2ZXJzaW9ufS1zcmMvJHtfcGtnbmFtZX0udGFyLnh6IgotY2hlY2tzdW09 YjMwNjUwNGIwYjgwMzcwNzlhOGVhYjc3MmVlNzc0YjllODc3YTJkODRiYWIyZGJlZmJlNGZhNmY4 Mzk0MTQxOAorY2hlY2tzdW09MzkyMGE0ZmIzNTMzMDAyNjBjOWJjNDZmZjcwZjFmYjk3NWM1ZTdl ZmEyMmU5ZDUxMjIyNTg4OTI4Y2UxOWIzMwogCiBidWlsZF9vcHRpb25zPSJ3ZWJlbmdpbmUiCiBk ZXNjX29wdGlvbl93ZWJlbmdpbmU9IkJ1aWxkIFF0NSBXZWJFbmdpbmUgYmluZGluZ3MiCgpGcm9t IGY5ZjE4MzkxZjViOTFkOTEwODE2NDMzM2Y1ODJiMWM5ZjUwZDFjOTQgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCkZyb206IHlvcGl0byA8cGllcnJlLmJvdXJnaW5AZnJlZS5mcj4KRGF0ZTogTW9u LCAyMiBBdWcgMjAyMiAxMzo0MjozNiArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMy82XSBweXNpZGUy LXRvb2xzOiB1cGRhdGUgdG8gNS4xNS41CgotLS0KIHNyY3BrZ3MvcHlzaWRlMi10b29scy90ZW1w bGF0ZSB8IDQgKystLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3B5c2lkZTItdG9vbHMvdGVtcGxhdGUgYi9zcmNw a2dzL3B5c2lkZTItdG9vbHMvdGVtcGxhdGUKaW5kZXggMzVkMzUzYWJhOTVkLi4wYWEyZDhlYTll ODMgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHlzaWRlMi10b29scy90ZW1wbGF0ZQorKysgYi9zcmNw a2dzL3B5c2lkZTItdG9vbHMvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdweXNpZGUyLXRvb2xzJwogcGtnbmFtZT1weXNpZGUyLXRvb2xzCi12ZXJzaW9uPTUu MTUuMgordmVyc2lvbj01LjE1LjUKIHJldmlzaW9uPTEKIF9wa2duYW1lPSJweXNpZGUtc2V0dXAt b3BlbnNvdXJjZS1zcmMtJHt2ZXJzaW9ufSIKIHdya3NyYz0iJHtfcGtnbmFtZS8lNS4xNC4yLjEv NS4xNC4yfSIKQEAgLTE1LDcgKzE1LDcgQEAgbWFpbnRhaW5lcj0ieW9waXRvIDxwaWVycmUuYm91 cmdpbkBmcmVlLmZyPiIKIGxpY2Vuc2U9IkxHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0 dHBzOi8vd2lraS5xdC5pby9RdF9mb3JfUHl0aG9uL1NoaWJva2VuIgogZGlzdGZpbGVzPSJodHRw czovL2Rvd25sb2FkLnF0LmlvL29mZmljaWFsX3JlbGVhc2VzL1F0Rm9yUHl0aG9uL3B5c2lkZTIv UHlTaWRlMi0ke3ZlcnNpb259LXNyYy8ke19wa2duYW1lfS50YXIueHoiCi1jaGVja3N1bT1iMzA2 NTA0YjBiODAzNzA3OWE4ZWFiNzcyZWU3NzRiOWU4NzdhMmQ4NGJhYjJkYmVmYmU0ZmE2ZjgzOTQx NDE4CitjaGVja3N1bT0zOTIwYTRmYjM1MzMwMDI2MGM5YmM0NmZmNzBmMWZiOTc1YzVlN2VmYTIy ZTlkNTEyMjI1ODg5MjhjZTE5YjMzCiBweXRob25fdmVyc2lvbj0zCiAKIGlmIFsgJHtDUk9TU19C VUlMRH0gXTsgdGhlbgoKRnJvbSBmZDI5MDAxN2M1ZWVkNjY3YjBlZmRkNGYwMzkyY2I4MDBiNDZk ZTZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiB5b3BpdG8gPHBpZXJyZS5ib3VyZ2lu QGZyZWUuZnI+CkRhdGU6IE1vbiwgMjIgQXVnIDIwMjIgMTM6NDI6MzcgKzAyMDAKU3ViamVjdDog W1BBVENIIDQvNl0gcHl0aG9uMy1RdFB5OiByZWJ1aWxkIHdpdGggcHl0aG9uMy1weXNpZGUyIDUu MTUuNQoKLS0tCiBzcmNwa2dzL3B5dGhvbjMtUXRQeS90ZW1wbGF0ZSB8IDIgKy0KIDEgZmlsZSBj aGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQoKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcHl0aG9uMy1RdFB5L3RlbXBsYXRlIGIvc3JjcGtncy9weXRob24zLVF0UHkvdGVtcGxhdGUK aW5kZXggYjlkZGVmMWFmMTkyLi45MmMwYjUwOWRlYzYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcHl0 aG9uMy1RdFB5L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcHl0aG9uMy1RdFB5L3RlbXBsYXRlCkBA IC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncHl0aG9uMy1RdFB5JwogcGtnbmFt ZT1weXRob24zLVF0UHkKIHZlcnNpb249MS45LjAKLXJldmlzaW9uPTMKK3JldmlzaW9uPTQKIHdy a3NyYz1RdFB5LSR7dmVyc2lvbn0KIGJ1aWxkX3N0eWxlPXB5dGhvbjMtbW9kdWxlCiBob3N0bWFr ZWRlcGVuZHM9InB5dGhvbjMtc2V0dXB0b29scyIKCkZyb20gMjFkYzk1YmUwYmJkMzIyYTI0ODA1 MTAzN2VjMTI0NTVmY2ZiMjZlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogeW9waXRv IDxwaWVycmUuYm91cmdpbkBmcmVlLmZyPgpEYXRlOiBNb24sIDIyIEF1ZyAyMDIyIDEzOjQyOjM4 ICswMjAwClN1YmplY3Q6IFtQQVRDSCA1LzZdIGxpYnNwbmF2OiB1cGRhdGUgdG8gMS4wLCBmaXgg bGljZW5zaW5nCgotLS0KIC4uLi9wYXRjaGVzL09PLk1ha2VmaWxlLmZpeC1saWJsaW5rcy5wYXRj aCAgICAgICB8IDE2IC0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvbGlic3BuYXYvdGVtcGxhdGUg ICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKystLS0KIDIgZmlsZXMgY2hhbmdl ZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9saWJzcG5hdi9wYXRjaGVzL09PLk1ha2VmaWxlLmZpeC1saWJsaW5rcy5wYXRjaAoK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvbGlic3BuYXYvcGF0Y2hlcy9PTy5NYWtlZmlsZS5maXgtbGli bGlua3MucGF0Y2ggYi9zcmNwa2dzL2xpYnNwbmF2L3BhdGNoZXMvT08uTWFrZWZpbGUuZml4LWxp YmxpbmtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTBhYWU1MWZlMDIu LjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL2xpYnNwbmF2L3BhdGNoZXMvT08uTWFrZWZpbGUu Zml4LWxpYmxpbmtzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotRml4IGxp bmsgZ2VuZXJhdGlvbiBvZiAuc28gZmlsZXMKLVNvdXJjZTogaHR0cHM6Ly9naXQuYXJjaGxpbnV4 Lm9yZy9zdm50b2dpdC9wYWNrYWdlcy5naXQvcGxhaW4vdHJ1bmsvTWFrZWZpbGUucGF0Y2g/aD1w YWNrYWdlcy9saWJzcG5hdgotCi0tLS0gYS9NYWtlZmlsZS5pbn4JMjAxNS0wMS0xMCAwOTowODoz NS4wNDM0MTc5NTUgKzAwMDAKLSsrKyBiL01ha2VmaWxlLmluCTIwMTUtMDEtMTAgMDk6MDk6MDAu ODMzMzE1MjY5ICswMDAwCi1AQCAtNTQsOCArNTQsOCBAQAotIAljcCAkKGxpYl9zbykgJChERVNU RElSKSQoUFJFRklYKS8kKGxpYmRpcikvJChsaWJfc28pCi0gCVsgLW4gIiQoc29uYW1lKSIgXSAm JiBcCi0gCQlybSAtZiAkKERFU1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8kKHNvbmFtZSkgJChE RVNURElSKSQoUFJFRklYKS8kKGxpYmRpcikvJChkZXZsaW5rKSAmJiBcCi0tCQlsbiAtcyAkKERF U1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8kKGxpYl9zbykgJChERVNURElSKSQoUFJFRklYKS8k KGxpYmRpcikvJChzb25hbWUpICYmIFwKLS0JCWxuIC1zICQoREVTVERJUikkKFBSRUZJWCkvJChs aWJkaXIpLyQoc29uYW1lKSAkKERFU1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8kKGRldmxpbmsp IHx8IFwKLSsJCWxuIC1zICQobGliX3NvKSAkKERFU1RESVIpJChQUkVGSVgpLyQobGliZGlyKS8k KHNvbmFtZSkgJiYgXAotKwkJbG4gLXMgJChzb25hbWUpICQoREVTVERJUikkKFBSRUZJWCkvJChs aWJkaXIpLyQoZGV2bGluaykgfHwgXAotIAkJdHJ1ZQotIAlmb3IgaCBpbiAkKGhkcik7IGRvIGNw IC1wICQoc3JjZGlyKS8kJGggJChERVNURElSKSQoUFJFRklYKS9pbmNsdWRlLzsgZG9uZQotIApk aWZmIC0tZ2l0IGEvc3JjcGtncy9saWJzcG5hdi90ZW1wbGF0ZSBiL3NyY3BrZ3MvbGlic3BuYXYv dGVtcGxhdGUKaW5kZXggZGYzNTA3MmIyNDA0Li4yZTFiY2NkZjI4NWIgMTAwNjQ0Ci0tLSBhL3Ny Y3BrZ3MvbGlic3BuYXYvdGVtcGxhdGUKKysrIGIvc3JjcGtncy9saWJzcG5hdi90ZW1wbGF0ZQpA QCAtMSwyMSArMSwyNCBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnbGlic3BuYXYnCiBwa2duYW1l PWxpYnNwbmF2Ci12ZXJzaW9uPTAuMi4zCit2ZXJzaW9uPTEuMAogcmV2aXNpb249MQogYnVpbGRf c3R5bGU9Z251LWNvbmZpZ3VyZQogY29uZmlndXJlX2FyZ3M9Ii0tZGlzYWJsZS1vcHQiCiBtYWtl ZGVwZW5kcz0ibGliWDExLWRldmVsIgogc2hvcnRfZGVzYz0iT3BlbiBzb3VyY2UgYWx0ZXJuYXRp dmUgdG8gM0RDb25uZXh0aW9uIGRyaXZlcnMiCiBtYWludGFpbmVyPSJ5b3BpdG8gPHBpZXJyZS5i b3VyZ2luQGZyZWUuZnI+IgotbGljZW5zZT0iR1BMLTMiCitsaWNlbnNlPSJCU0QtMy1DbGF1c2Ui CiBob21lcGFnZT0iaHR0cDovL3NwYWNlbmF2LnNvdXJjZWZvcmdlLm5ldC8iCiBkaXN0ZmlsZXM9 IiR7U09VUkNFRk9SR0VfU0lURX0vc3BhY2VuYXYvJHtwa2duYW1lfS0ke3ZlcnNpb259LnRhci5n eiIKLWNoZWNrc3VtPTdhZTRkN2JiN2Y2YTVkZGEyOGI0ODc4OTFlMDFhY2NjODU2MzExNDQwZjU4 MjI5OTc2MGRhY2U2ZWU1ZjFmOTMKK2NoZWNrc3VtPTg4NDliN2Y3ODI2ZDc1MGY2OTU2Y2Y4ZjRm NTM5MzdmMjM1OWFiNmRhOTdkNmM4MzRjNzFkNWY3NzEyMTJlN2MKIAogZG9fYnVpbGQoKSB7CiAJ bWFrZSBDQz0iJHtDQ30iIEFSPSIke0FSfSIKIH0KIAorcG9zdF9pbnN0YWxsKCkgeworCXZsaWNl bnNlIExJQ0VOU0UKK30KIGxpYnNwbmF2LWRldmVsX3BhY2thZ2UoKSB7CiAJc2hvcnRfZGVzYys9 IiAtIGRldmVsb3BtZW50IGZpbGVzIgogCWRlcGVuZHM9IiR7bWFrZWRlcGVuZHN9ICR7c291cmNl cGtnfT49JHt2ZXJzaW9ufV8ke3JldmlzaW9ufSIKQEAgLTIzLDUgKzI2LDkgQEAgbGlic3BuYXYt ZGV2ZWxfcGFja2FnZSgpIHsKIAkJdm1vdmUgdXNyL2luY2x1ZGUKIAkJdm1vdmUgInVzci9saWIv Ki5hIgogCQl2bW92ZSAidXNyL2xpYi8qLnNvIgorcG9zdF9pbnN0YWxsKCkgeworCXZsaWNlbnNl IExJQ0VOU0UKK30KKwkJdm1vdmUgdXNyL3NoYXJlL3BrZ2NvbmZpZwogCX0KIH0KCkZyb20gNmFl ZGE4OWQzNjRjMTUzMjE5MjFkNzdkYTM5NjI1MmM2NmJmYzg1OSBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKRnJvbTogeW9waXRvIDxwaWVycmUuYm91cmdpbkBmcmVlLmZyPgpEYXRlOiBNb24sIDIy IEF1ZyAyMDIyIDEzOjQyOjM5ICswMjAwClN1YmplY3Q6IFtQQVRDSCA2LzZdIGZyZWVjYWQ6IHVw ZGF0ZSB0byAwLjIwLjEKCi0tLQogc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMDAyLWV4ZWNpbmZv LnBhdGNoICAgIHwgIDMwIC0KIC4uLi9wYXRjaGVzLzAxMC1zYWxvbWVzbWVzaC1leGVjaW5mby5w YXRjaCAgICB8ICAzMCAtCiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTAtdnRrOS5wYXRjaCAg ICAgICAgfCA3OTYgLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8x NTItY21ha2UtdnRrOS5wYXRjaCAgfCAgNTMgLS0KIC4uLi9wYXRjaGVzLzE1My1saW1pdHMuaC1m b3ItbXVzbC5wYXRjaCAgICAgICB8ICAxMyArCiAuLi4vMTU0LXJldmVydC1ndWktdG1wLXJlZGly ZWN0LXN0ZGVyci5wYXRjaCAgfCAgNzMgKysKIHNyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZSAgICAg ICAgICAgICAgICAgICAgICB8ICAgOSArLQogNyBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25z KCspLCA5MTQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9mcmVlY2Fk L3BhdGNoZXMvMDAyLWV4ZWNpbmZvLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9m cmVlY2FkL3BhdGNoZXMvMDEwLXNhbG9tZXNtZXNoLWV4ZWNpbmZvLnBhdGNoCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTUwLXZ0azkucGF0Y2gKIGRlbGV0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTItY21ha2UtdnRrOS5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1My1saW1pdHMuaC1m b3ItbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZnJlZWNhZC9wYXRjaGVz LzE1NC1yZXZlcnQtZ3VpLXRtcC1yZWRpcmVjdC1zdGRlcnIucGF0Y2gKCmRpZmYgLS1naXQgYS9z cmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMDItZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8wMDItZXhlY2luZm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGJjZGNhNzdhNzJhNC4uMDAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvZnJlZWNhZC9wYXRj aGVzLzAwMi1leGVjaW5mby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS0t LSBhL3NyYy9BcHAvQXBwbGljYXRpb24uY3BwCTIwMjAtMDEtMjIgMjM6Mjc6NDIuNzA5MjczMDg3 ICswMTAwCi0rKysgYi9zcmMvQXBwL0FwcGxpY2F0aW9uLmNwcAkyMDIwLTAxLTIyIDIzOjUwOjUz LjkxNTA3NTk1NSArMDEwMAotQEAgLTE0ODUsNyArMTQ4NSw5IEBACi0gI2VuZGlmDQotIA0KLSAj aWYgZGVmaW5lZChGQ19PU19MSU5VWCkNCi0rI2lmZGVmIF9fR0xJQkNfXw0KLSAjaW5jbHVkZSA8 ZXhlY2luZm8uaD4NCi0rI2VuZGlmDQotICNpbmNsdWRlIDxkbGZjbi5oPg0KLSAjaW5jbHVkZSA8 Y3h4YWJpLmg+DQotIA0KLUBAIC0xNDk3LDYgKzE0OTksNyBAQAotIC8vIFRoaXMgZnVuY3Rpb24g cHJvZHVjZXMgYSBzdGFjayBiYWNrdHJhY2Ugd2l0aCBkZW1hbmdsZWQgZnVuY3Rpb24gJiBtZXRo b2QgbmFtZXMuDQotIHZvaWQgcHJpbnRCYWNrdHJhY2Uoc2l6ZV90IHNraXA9MCkNCi0gew0KLSsj aWZkZWYgX19HTElCQ19fDQotICAgICB2b2lkICpjYWxsc3RhY2tbMTI4XTsNCi0gICAgIHNpemVf dCBuTWF4RnJhbWVzID0gc2l6ZW9mKGNhbGxzdGFjaykgLyBzaXplb2YoY2FsbHN0YWNrWzBdKTsN Ci0gICAgIHNpemVfdCBuRnJhbWVzID0gYmFja3RyYWNlKGNhbGxzdGFjaywgbk1heEZyYW1lcyk7 DQotQEAgLTE1MjcsNiArMTUzMCw5IEBACi0gICAgIH0NCi0gDQotICAgICBmcmVlKHN5bWJvbHMp Ow0KLSsjZWxzZQ0KLSsgICAgc3RkOjpjZXJyIDw8ICJzb3JyeSwgbm8gYmFja3RyYWNlIG9uIG11 c2wgbGliYyI7DQotKyNlbmRpZg0KLSB9DQotICNlbmRpZg0KLSANCmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2ggYi9zcmNw a2dzL2ZyZWVjYWQvcGF0Y2hlcy8wMTAtc2Fsb21lc21lc2gtZXhlY2luZm8ucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjNmJkYzlmZjQ4NS4uMDAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzAxMC1zYWxvbWVzbWVzaC1leGVjaW5mby5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVz bWVzaC9zcmMvRHJpdmVyU1RML0Jhc2ljc19VdGlscy5jcHAKLSsrKyBiL3NyYy8zcmRQYXJ0eS9z YWxvbWVzbWVzaC9zcmMvRHJpdmVyU1RML0Jhc2ljc19VdGlscy5jcHAKLUBAIC0yOSw3ICsyOSw5 IEBACi0gI2lmbmRlZiBXSU4zMgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3lz L3N0YXQuaD4KLSsjaWZkZWYgX19HTElCQ19fCi0gI2luY2x1ZGUgPGV4ZWNpbmZvLmg+Ci0rI2Vu ZGlmCi0gI2VuZGlmCi0gCi0gCi1AQCAtMTA5LDYgKzExMSw3IEBACi0gI2lmbmRlZiBXSU4zMgot ICAgdm9pZCBwcmludF90cmFjZWJhY2soKQotICAgewotKyNpZmRlZiBfX0dMSUJDX18KLSAgICAg dm9pZCAqYXJyYXlbNTBdOwotICAgICBzaXplX3Qgc2l6ZTsKLSAgICAgY2hhciAqKnN0cmluZ3M7 Ci1AQCAtMTIzLDYgKzEyNiw5IEBACi0gICAgICAgfQotIAotICAgICBmcmVlIChzdHJpbmdzKTsK LSsjZWxzZSAgICAgCi0rICAgc3RkOjpjZXJyIDw8ICJzb3JyeSwgbm8gYmFja3RyYWNlIG9uIG11 c2wgbGliYyI7Ci0rI2VuZGlmCi0gICB9Ci0gI2Vsc2UKLSAgICNpZiAoX01TQ19WRVIgPj0gMTQw MCkgLy8gVmlzdWFsIFN0dWRpbyAyMDA1CmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvcGF0 Y2hlcy8xNTAtdnRrOS5wYXRjaCBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1MC12dGs5LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjY3M2U3YzliOWYuLjAwMDAwMDAw MDAwMAotLS0gYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTAtdnRrOS5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDc5NiArMCwwIEBACi1UYWtlbiBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS93 d21heWVyL0ZyZWVDQUQvY29tbWl0L2JiOWJjYmQ1MWRmN2MzY2I3NmM1ODIzMDM4ZTRlYTBmN2Uy NWE5ZmYKLWJ1dCByZW1vdmVkIHBhdGNoIG9uIGZpbGUgc3JjL01vZC9GZW0vR3VpL1ZpZXdQcm92 aWRlckZlbVBvc3RPYmplY3QuY3BwIDogYWxyZWFkeSBhcHBsaWVkICgyMDIxLTAxLTIwKQotCi1k aWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19NZXNoRWxlbWVudC5o eHggYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfTWVzaEVsZW1lbnQuaHh4Ci1p bmRleCAxNGE2ZDlhNzYzZi4uMGU5YjllNmM5MDUgMTAwNjQ0Ci0tLS0gYS9zcmMvM3JkUGFydHkv c2Fsb21lc21lc2gvaW5jL1NNRFNfTWVzaEVsZW1lbnQuaHh4Ci0rKysgYi9zcmMvM3JkUGFydHkv c2Fsb21lc21lc2gvaW5jL1NNRFNfTWVzaEVsZW1lbnQuaHh4Ci1AQCAtNDAsMTEgKzQwLDE2IEBA Ci0gCi0gI2luY2x1ZGUgPHZ0a1R5cGUuaD4KLSAjaW5jbHVkZSA8dnRrQ2VsbFR5cGUuaD4KLSsj aW5jbHVkZSA8dnRrQ2VsbEFycmF5Lmg+Ci0gCi0gLy90eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVT aG9ydFR5cGU7Ci0gdHlwZWRlZiBzaG9ydCBTaG9ydFR5cGU7Ci0gdHlwZWRlZiBpbnQgICBMb25n VHlwZTsKLS0KLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSt0eXBlZGVmIGNvbnN0IHZ0a0lk VHlwZSogdnRrSWRUeXBlUHRyOwotKyNlbHNlCi0rdHlwZWRlZiB2dGtJZFR5cGUqIHZ0a0lkVHlw ZVB0cjsKLSsjZW5kaWYKLSBjbGFzcyBTTURTX01lc2hOb2RlOwotIGNsYXNzIFNNRFNfTWVzaEVk Z2U7Ci0gY2xhc3MgU01EU19NZXNoRmFjZTsKLUBAIC0xOTIsNyArMTk3LDcgQEAgcHJvdGVjdGVk OgotICAgLy8hIEVsZW1lbnQgaW5kZXggaW4gdmVjdG9yIFNNRFNfTWVzaDo6bXlOb2RlcyBvciBT TURTX01lc2g6Om15Q2VsbHMKLSAgIGludCBteUlEOwotICAgLy8hIGluZGV4IGluIHZ0a1Vuc3Ry dWN0dXJlZEdyaWQKLS0gIGludCBteVZ0a0lEOwotKyAgdnRrSWRUeXBlIG15VnRrSUQ7Ci0gICAv LyEgU01EU19NZXNoIGlkZW50aWZpY2F0aW9uIGluIFNNRVNICi0gICBTaG9ydFR5cGUgbXlNZXNo SWQ7Ci0gICAvLyEgU3ViU2hhcGUgYW5kIFN1Yk1lc2ggaWRlbnRpZmljYXRpb24gaW4gU01FU0hE UwotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1 cmVkR3JpZC5oeHggYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvaW5jL1NNRFNfVW5zdHJ1Y3R1 cmVkR3JpZC5oeHgKLWluZGV4IDllNGEyM2VkZGZiLi43NzQ2NTgxNDU0MSAxMDA2NDQKLS0tLSBh L3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9pbmMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmh4eAot KysrIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL2luYy9TTURTX1Vuc3RydWN0dXJlZEdyaWQu aHh4Ci1AQCAtOTUsNyArOTUsMTEgQEAgcHVibGljOgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0ZDo6bWFwPGludCwgc3RkOjptYXA8bG9uZyxpbnQ+ID4mIG5vZGVR dWFkRG9tYWlucyk7Ci0gICB2dGtDZWxsTGlua3MqIEdldExpbmtzKCkKLSAgIHsKLSsjaWZkZWYg VlRLX0NFTExfQVJSQVlfVjIKLSsgICAgcmV0dXJuIHN0YXRpY19jYXN0PHZ0a0NlbGxMaW5rcyo+ KEdldENlbGxMaW5rcygpKTsKLSsjZWxzZQotICAgICByZXR1cm4gTGlua3M7Ci0rI2VuZGlmCi0g ICB9Ci0gICBTTURTX0Rvd253YXJkKiBnZXREb3duQXJyYXkodW5zaWduZWQgY2hhciB2dGtUeXBl KQotICAgewotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01E U19CYWxsRWxlbWVudC5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01E U19CYWxsRWxlbWVudC5jcHAKLWluZGV4IDI5OTA5M2M5NGY2Li4yNjgwYzIxNzMwNSAxMDA2NDQK LS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX0JhbGxFbGVtZW50 LmNwcAotKysrIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfQmFsbEVs ZW1lbnQuY3BwCi1AQCAtNjcsMTAgKzY3LDE2IEBAIHZvaWQgU01EU19CYWxsRWxlbWVudDo6U2V0 RGlhbWV0ZXIoZG91YmxlIGRpYW1ldGVyKQotIGJvb2wgU01EU19CYWxsRWxlbWVudDo6Q2hhbmdl Tm9kZSAoY29uc3QgU01EU19NZXNoTm9kZSAqIG5vZGUpCi0gewotICAgdnRrVW5zdHJ1Y3R1cmVk R3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwot KyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgdnRrTmV3PHZ0a0lkTGlzdD4gY2VsbFBvaW50 czsKLSsgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgY2VsbFBvaW50cy5HZXRQb2ludGVy KCkpOwotKyAgY2VsbFBvaW50cy0+U2V0SWQoMCwgbm9kZS0+Z2V0VnRrSWQoKSk7Ci0rI2Vsc2UK LSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLSAgIHZ0a0lkVHlwZSogcHRzID0gMDsKLSAgIGdyaWQt PkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKLSAgIHB0c1swXSA9IG5vZGUtPmdl dFZ0a0lkKCk7Ci0rI2VuZGlmCi0gICBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPnNl dE15TW9kaWZpZWQoKTsKLSAgIHJldHVybiB0cnVlOwotIH0KLUBAIC04Myw3ICs4OSw4IEBAIHZv aWQgU01EU19CYWxsRWxlbWVudDo6UHJpbnQgKHN0ZDo6b3N0cmVhbSAmIE9TKSBjb25zdAotIGNv bnN0IFNNRFNfTWVzaE5vZGUqIFNNRFNfQmFsbEVsZW1lbnQ6OkdldE5vZGUgKGNvbnN0IGludCBp bmQpIGNvbnN0Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6 X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotLSAgdnRrSWRUeXBlIG5wdHMsICpwdHM7 Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7Ci0gICBncmlkLT5HZXRD ZWxsUG9pbnRzKCBteVZ0a0lELCBucHRzLCBwdHMgKTsKLSAgIHJldHVybiBTTURTX01lc2g6Ol9t ZXNoTGlzdFtteU1lc2hJZF0tPkZpbmROb2RlVnRrKCBwdHNbIDAgXSk7Ci0gfQotZGlmZiAtLWdp dCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19Eb3dud2FyZC5jcHAgYi9z cmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19Eb3dud2FyZC5jcHAKLWluZGV4 IGQ2MDQ5YzBiZDE5Li5hNDFmNWMxOGU3OCAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxv bWVzbWVzaC9zcmMvU01EUy9TTURTX0Rvd253YXJkLmNwcAotKysrIGIvc3JjLzNyZFBhcnR5L3Nh bG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfRG93bndhcmQuY3BwCi1AQCAtMzAzLDcgKzMwMyw3IEBA IGludCBTTURTX0Rvd24xRDo6Z2V0Tm9kZVNldChpbnQgY2VsbElkLCBpbnQqIG5vZGVTZXQpCi0g dm9pZCBTTURTX0Rvd24xRDo6c2V0Tm9kZXMoaW50IGNlbGxJZCwgaW50IHZ0a0lkKQotIHsKLSAg IHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVyIHRv IHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0rICB2dGtJZFR5cGVQdHIgcHRzOyAvLyB3aWxs IHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNlCi0gICBfZ3JpZC0+R2V0Q2VsbFBv aW50cyh2dGtJZCwgbnB0cywgcHRzKTsKLSAgIC8vIE1FU1NBR0UodnRrSWQgPDwgIiAiIDw8IG5w dHMgPDwgIiAgIiA8PCBfbmJEb3duQ2VsbHMpOwotICAgLy9BU1NFUlQobnB0cyA9PSBfbmJEb3du Q2VsbHMpOwotQEAgLTM1Nyw3ICszNTcsNyBAQCBpbnQgU01EU19Eb3duMUQ6OmNvbXB1dGVWdGtD ZWxscyhpbnQgKnB0cywgc3RkOjp2ZWN0b3I8aW50PiYgdnRrSWRzKQotICAgICB7Ci0gICAgICAg dnRrSWRUeXBlIHBvaW50ID0gcHRzW2ldOwotICAgICAgIGludCBudW1DZWxscyA9IF9ncmlkLT5H ZXRMaW5rcygpLT5HZXROY2VsbHMocG9pbnQpOwotLSAgICAgIHZ0a0lkVHlwZSAqY2VsbHMgPSBf Z3JpZC0+R2V0TGlua3MoKS0+R2V0Q2VsbHMocG9pbnQpOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBj ZWxscyA9IF9ncmlkLT5HZXRMaW5rcygpLT5HZXRDZWxscyhwb2ludCk7Ci0gICAgICAgZm9yIChp bnQgaiA9IDA7IGogPCBudW1DZWxsczsgaisrKQotICAgICAgICAgewotICAgICAgICAgICBpbnQg dnRrQ2VsbElkID0gY2VsbHNbal07Ci1AQCAtNTMyLDcgKzUzMiw3IEBAIGludCBTTURTX0Rvd24y RDo6Y29tcHV0ZVZvbHVtZUlkcyhpbnQgY2VsbElkLCBpbnQqIGlkcykKLSAgIC8vIC0tLSBmaW5k IHBvaW50IGlkJ3Mgb2YgdGhlIGZhY2UKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0 a0lkVHlwZSAqcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSBmYWNl Ci0rICB2dGtJZFR5cGVQdHIgcHRzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9m IHRoZSBmYWNlCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxsSWQsIG5wdHMsIHB0cyk7Ci0g ICB2ZWN0b3I8aW50PiBub2RlczsKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnB0czsgaSsrKQot QEAgLTU3Nyw3ICs1NzcsNyBAQCBpbnQgU01EU19Eb3duMkQ6OmNvbXB1dGVWb2x1bWVJZHNGcm9t Tm9kZXNGYWNlKGludCogcHRzLCBpbnQgbnB0cywgaW50KiBpZHMpCi0gICAgICAgdnRrSWRUeXBl IHBvaW50ID0gcHRzW2ldOwotICAgICAgIGludCBudW1DZWxscyA9IF9ncmlkLT5HZXRMaW5rcygp LT5HZXROY2VsbHMocG9pbnQpOwotICAgICAgIC8vTUVTU0FHRSgiY2VsbHMgcG91ciAiIDw8IGkg PDwgIiAiIDw8IG51bUNlbGxzKTsKLS0gICAgICB2dGtJZFR5cGUgKmNlbGxzID0gX2dyaWQtPkdl dExpbmtzKCktPkdldENlbGxzKHBvaW50KTsKLSsgICAgICB2dGtJZFR5cGVQdHIgY2VsbHMgPSBf Z3JpZC0+R2V0TGlua3MoKS0+R2V0Q2VsbHMocG9pbnQpOwotICAgICAgIGZvciAoaW50IGogPSAw OyBqIDwgbnVtQ2VsbHM7IGorKykKLSAgICAgICAgIHsKLSAgICAgICAgICAgaW50IHZ0a0NlbGxJ ZCA9IGNlbGxzW2pdOwotQEAgLTYyNyw3ICs2MjcsNyBAQCBpbnQgU01EU19Eb3duMkQ6OmNvbXB1 dGVWb2x1bWVJZHNGcm9tTm9kZXNGYWNlKGludCogcHRzLCBpbnQgbnB0cywgaW50KiBpZHMpCi0g dm9pZCBTTURTX0Rvd24yRDo6c2V0VGVtcE5vZGVzKGludCBjZWxsSWQsIGludCB2dGtJZCkKLSB7 Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKnB0czsgLy8gd2lsbCByZWZl ciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgZmFjZQotKyAgdnRrSWRUeXBlUHRyIHB0czsgLy8g d2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgZmFjZQotICAgX2dyaWQtPkdldENl bGxQb2ludHModnRrSWQsIG5wdHMsIHB0cyk7Ci0gICAvLyBNRVNTQUdFKHZ0a0lkIDw8ICIgIiA8 PCBucHRzIDw8ICIgICIgPDwgX25iTm9kZXMpOwotICAgLy9BU1NFUlQobnB0cyA9PSBfbmJOb2Rl cyk7Ci1AQCAtNzk1LDcgKzc5NSw3IEBAIHZvaWQgU01EU19Eb3duM0Q6OmdldE5vZGVJZHMoaW50 IGNlbGxJZCwgc3RkOjpzZXQ8aW50PiYgbm9kZVNldCkKLSB7Ci0gICBpbnQgdnRrSWQgPSB0aGlz LT5fdnRrQ2VsbElkc1tjZWxsSWRdOwotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRU eXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1l Ci0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mg b2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModnRrSWQsIG5wdHMsIG5vZGVz KTsKLSAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnB0czsgaSsrKQotICAgICBub2RlU2V0Lmluc2Vy dChub2Rlc1tpXSk7Ci1AQCAtMTEyNiw3ICsxMTI2LDcgQEAgdm9pZCBTTURTX0Rvd25UZXRyYTo6 Z2V0T3JkZXJlZE5vZGVzT2ZGYWNlKGludCBjZWxsSWQsIHN0ZDo6dmVjdG9yPHZ0a0lkVHlwZT4m IG8KLSAgIC8vTUVTU0FHRSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBl IG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9p bnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVm ZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2lu dHModGhpcy0+X3Z0a0NlbGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGlu dD4gdG9maW5kOwotQEAgLTExNzgsNyArMTE3OCw3IEBAIHZvaWQgU01EU19Eb3duVGV0cmE6OmNv bXB1dGVGYWNlc1dpdGhOb2RlcyhpbnQgY2VsbElkLCBMaXN0RWxlbUJ5Tm9kZXNUeXBlJiBmYWNl Ci0gICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlw ZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBv aW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJl ZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9p bnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOwotIAotICAgLy8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9y ZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQotQEAgLTEyMzQsNyArMTIzNCw3 IEBAIHZvaWQgU01EU19Eb3duUXVhZFRldHJhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNl bGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRUeXBlCi0gICAvL01FU1NBR0UoImNlbGxJZCA9ICIgPDwg Y2VsbElkKTsKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7 IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRU eXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1 bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF0sIG5w dHMsIG5vZGVzKTsKLSAKLSAgIHNldDxpbnQ+IHRvZmluZDsKLUBAIC0xMjg4LDcgKzEyODgsNyBA QCB2b2lkIFNNRFNfRG93blF1YWRUZXRyYTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxs SWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUmCi0gICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRo ZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7 IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRU eXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1 bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOwotIAotICAg Ly8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2gg ZmFjZQotQEAgLTEzNTcsNyArMTM1Nyw3IEBAIHZvaWQgU01EU19Eb3duUHlyYW1pZDo6Z2V0T3Jk ZXJlZE5vZGVzT2ZGYWNlKGludCBjZWxsSWQsIHN0ZDo6dmVjdG9yPHZ0a0lkVHlwZT4mCi0gICAv L01FU1NBR0UoImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0g MDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mg b2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRo ZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMt Pl92dGtDZWxsSWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAKLSAgIHNldDxpbnQ+IHRvZmlu ZDsKLUBAIC0xNDM1LDcgKzE0MzUsNyBAQCB2b2lkIFNNRFNfRG93blB5cmFtaWQ6OmNvbXB1dGVG YWNlc1dpdGhOb2RlcyhpbnQgY2VsbElkLCBMaXN0RWxlbUJ5Tm9kZXNUeXBlJiBmYQotICAgLy8g LS0tIGZpbmQgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gCi0gICB2dGtJZFR5cGUgbnB0cyA9 IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdz IG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0 aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxs SWQsIG5wdHMsIG5vZGVzKTsKLSAKLSAgIC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBvcmRlcmVkIGxp c3Qgb2Ygbm9kZSBpZCdzIGZvciBlYWNoIGZhY2UKLUBAIC0xNTAwLDcgKzE1MDAsNyBAQCB2b2lk IFNNRFNfRG93blF1YWRQeXJhbWlkOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwg c3RkOjp2ZWN0b3I8dnRrSWRUeQotICAgLy9NRVNTQUdFKCJjZWxsSWQgPSAiIDw8IGNlbGxJZCk7 Ci0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxs IHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBu b2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBf Z3JpZC0+R2V0Q2VsbFBvaW50cyh0aGlzLT5fdnRrQ2VsbElkc1tjZWxsSWRdLCBucHRzLCBub2Rl cyk7Ci0gCi0gICBzZXQ8aW50PiB0b2ZpbmQ7Ci1AQCAtMTU4MCw3ICsxNTgwLDcgQEAgdm9pZCBT TURTX0Rvd25RdWFkUHlyYW1pZDo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExp c3RFbGVtQnlOb2Rlc1R5cGUKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVt ZQotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2ls bCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIg bm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAg X2dyaWQtPkdldENlbGxQb2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0g Y3JlYXRlIGFsbCB0aGUgb3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1A QCAtMTY2MCw3ICsxNjYwLDcgQEAgdm9pZCBTTURTX0Rvd25QZW50YTo6Z2V0T3JkZXJlZE5vZGVz T2ZGYWNlKGludCBjZWxsSWQsIHN0ZDo6dmVjdG9yPHZ0a0lkVHlwZT4mIG8KLSAgIC8vTUVTU0FH RSgiY2VsbElkID0gIiA8PCBjZWxsSWQpOwotIAotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotLSAg dnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUg dm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50 IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQb2ludHModGhpcy0+X3Z0a0Nl bGxJZHNbY2VsbElkXSwgbnB0cywgbm9kZXMpOwotIAotICAgc2V0PGludD4gdG9maW5kOwotQEAg LTE3NDQsNyArMTc0NCw3IEBAIHZvaWQgU01EU19Eb3duUGVudGE6OmNvbXB1dGVGYWNlc1dpdGhO b2RlcyhpbnQgY2VsbElkLCBMaXN0RWxlbUJ5Tm9kZXNUeXBlJiBmYWNlCi0gICAvLyAtLS0gZmlu ZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0g IHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhl IHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2lu dCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0 cywgbm9kZXMpOwotIAotICAgLy8gLS0tIGNyZWF0ZSBhbGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBu b2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQotQEAgLTE4MTAsNyArMTgxMCw3IEBAIHZvaWQgU01EU19E b3duUXVhZFBlbnRhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0 b3I8dnRrSWRUeXBlCi0gICAvL01FU1NBR0UoImNlbGxJZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAg IHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIg dG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAv LyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5H ZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxsSWRzW2NlbGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAK LSAgIHNldDxpbnQ+IHRvZmluZDsKLUBAIC0xODk2LDcgKzE4OTYsNyBAQCB2b2lkIFNNRFNfRG93 blF1YWRQZW50YTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlO b2Rlc1R5cGUmCi0gICAvLyAtLS0gZmluZCBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAKLSAg IHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIg dG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotKyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAv LyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5H ZXRDZWxsUG9pbnRzKGNlbGxJZCwgbnB0cywgbm9kZXMpOwotIAotICAgLy8gLS0tIGNyZWF0ZSBh bGwgdGhlIG9yZGVyZWQgbGlzdCBvZiBub2RlIGlkJ3MgZm9yIGVhY2ggZmFjZQotQEAgLTE5ODEs NyArMTk4MSw3IEBAIHZvaWQgU01EU19Eb3duSGV4YTo6Z2V0T3JkZXJlZE5vZGVzT2ZGYWNlKGlu dCBjZWxsSWQsIHN0ZDo6dmVjdG9yPHZ0a0lkVHlwZT4mIG9yCi0gICAvL01FU1NBR0UoImNlbGxJ ZCA9ICIgPDwgY2VsbElkKTsKLSAKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlw ZSAqbm9kZXM7IC8vIHdpbGwgcmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQot KyAgdnRrSWRUeXBlUHRyIG5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9m IHRoZSB2b2x1bWUKLSAgIF9ncmlkLT5HZXRDZWxsUG9pbnRzKHRoaXMtPl92dGtDZWxsSWRzW2Nl bGxJZF0sIG5wdHMsIG5vZGVzKTsKLSAKLSAgIHNldDxpbnQ+IHRvZmluZDsKLUBAIC0yMDM2LDcg KzIwMzYsNyBAQCB2b2lkIFNNRFNfRG93bkhleGE6OmNvbXB1dGVGYWNlc1dpdGhOb2RlcyhpbnQg Y2VsbElkLCBMaXN0RWxlbUJ5Tm9kZXNUeXBlJiBmYWNlcwotICAgLy8gLS0tIGZpbmQgcG9pbnQg aWQncyBvZiB0aGUgdm9sdW1lCi0gCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5 cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBwb2ludCBpZCdzIG9mIHRoZSB2b2x1bWUK LSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUgcG9pbnQgaWQncyBv ZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBvaW50cyhjZWxsSWQsIG5wdHMsIG5vZGVz KTsKLSAKLSAgIC8vIC0tLSBjcmVhdGUgYWxsIHRoZSBvcmRlcmVkIGxpc3Qgb2Ygbm9kZSBpZCdz IGZvciBlYWNoIGZhY2UKLUBAIC0yMTEyLDcgKzIxMTIsNyBAQCB2b2lkIFNNRFNfRG93blF1YWRI ZXhhOjpnZXRPcmRlcmVkTm9kZXNPZkZhY2UoaW50IGNlbGxJZCwgc3RkOjp2ZWN0b3I8dnRrSWRU eXBlPgotICAgLy9NRVNTQUdFKCJjZWxsSWQgPSAiIDw8IGNlbGxJZCk7Ci0gCi0gICB2dGtJZFR5 cGUgbnB0cyA9IDA7Ci0tICB2dGtJZFR5cGUgKm5vZGVzOyAvLyB3aWxsIHJlZmVyIHRvIHRoZSBw b2ludCBpZCdzIG9mIHRoZSB2b2x1bWUKLSsgIHZ0a0lkVHlwZVB0ciBub2RlczsgLy8gd2lsbCBy ZWZlciB0byB0aGUgcG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0gICBfZ3JpZC0+R2V0Q2VsbFBv aW50cyh0aGlzLT5fdnRrQ2VsbElkc1tjZWxsSWRdLCBucHRzLCBub2Rlcyk7Ci0gCi0gICBzZXQ8 aW50PiB0b2ZpbmQ7Ci1AQCAtMjE2Nyw3ICsyMTY3LDcgQEAgdm9pZCBTTURTX0Rvd25RdWFkSGV4 YTo6Y29tcHV0ZUZhY2VzV2l0aE5vZGVzKGludCBjZWxsSWQsIExpc3RFbGVtQnlOb2Rlc1R5cGUm IGYKLSAgIC8vIC0tLSBmaW5kIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotIAotICAgdnRrSWRU eXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlICpub2RlczsgLy8gd2lsbCByZWZlciB0byB0aGUg cG9pbnQgaWQncyBvZiB0aGUgdm9sdW1lCi0rICB2dGtJZFR5cGVQdHIgbm9kZXM7IC8vIHdpbGwg cmVmZXIgdG8gdGhlIHBvaW50IGlkJ3Mgb2YgdGhlIHZvbHVtZQotICAgX2dyaWQtPkdldENlbGxQ b2ludHMoY2VsbElkLCBucHRzLCBub2Rlcyk7Ci0gCi0gICAvLyAtLS0gY3JlYXRlIGFsbCB0aGUg b3JkZXJlZCBsaXN0IG9mIG5vZGUgaWQncyBmb3IgZWFjaCBmYWNlCi1kaWZmIC0tZ2l0IHNyYy8z cmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2guY3BwIGIvc3JjLzNyZFBhcnR5 L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaC5jcHAKLWluZGV4IDYxYzhlNzUxZDk0Li4x ZWFjMjkwN2QzZCAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01E Uy9TTURTX01lc2guY3BwCi0rKysgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMv U01EU19NZXNoLmNwcAotQEAgLTQ3NjgsNyArNDc2OCwxMSBAQCB2b2lkIFNNRFNfTWVzaDo6ZHVt cEdyaWQoc3RyaW5nIGZpY2R1bXApCi0gICAgICAgICBmaWNjb24gPDwgZW5kbDsKLSAgIH0KLSAg IGZpY2NvbiA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gY29ubmVjdGl2aXR5 ICIgPDwgIG5iUG9pbnRzIDw8IGVuZGw7Ci0tICAgICAgICB2dGtDZWxsTGlua3MgKmxpbmtzID0g bXlHcmlkLT5HZXRDZWxsTGlua3MoKTsKLSsjaWZkZWYgVlRLX0NFTExfQVJSQVlfVjIKLSsgIHZ0 a0NlbGxMaW5rcyAqbGlua3MgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihteUdyaWQtPkdl dENlbGxMaW5rcygpKTsKLSsjZWxzZQotKyAgdnRrQ2VsbExpbmtzICpsaW5rcyA9IG15R3JpZC0+ R2V0Q2VsbExpbmtzKCk7Ci0rI2VuZGlmCi0gICBmb3IgKGludCBpPTA7IGk8bmJQb2ludHM7IGkr KykKLSAgIHsKLSAgICAgICAgIGludCBuY2VsbHMgPSBsaW5rcy0+R2V0TmNlbGxzKGkpOwotZGlm ZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoMERFbGVt ZW50LmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2gwREVs ZW1lbnQuY3BwCi1pbmRleCA5NTQzOGVhYjA2NC4uMGRmMzJlM2I5N2MgMTAwNjQ0Ci0tLS0gYS9z cmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19NZXNoMERFbGVtZW50LmNwcAot KysrIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVzaDBERWxlbWVu dC5jcHAKLUBAIC0xNDYsNiArMTQ2LDE3IEBAIGJvb2wgU01EU19NZXNoMERFbGVtZW50OjpDaGFu Z2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOCi0gICBp ZiAoIG5iTm9kZXMgPT0gMSApCi0gICB7Ci0gICAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQg PSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLSsjaWZkZWYgVlRL X0NFTExfQVJSQVlfVjIKLSsgICAgdnRrTmV3PHZ0a0lkTGlzdD4gY2VsbFBvaW50czsKLSsgICAg Z3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBjZWxsUG9pbnRzLkdldFBvaW50ZXIoKSk7Ci0r ICAgIGlmIChuYk5vZGVzICE9IGNlbGxQb2ludHMtPkdldE51bWJlck9mSWRzKCkpCi0rICAgIHsK LSsgICAgICBNRVNTQUdFKCJDaGFuZ2VOb2RlcyBwcm9ibGVtOiBub3QgdGhlIHNhbWUgbnVtYmVy IG9mIG5vZGVzICIgPDwgY2VsbFBvaW50cy0+R2V0TnVtYmVyT2ZJZHMoKSA8PCAiIC0+ICIgPDwg bmJOb2Rlcyk7Ci0rICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICB9Ci0rICAgIG15Tm9kZSA9IG5v ZGVzWzBdOwotKyAgICBjZWxsUG9pbnRzLT5TZXRJZCgwLCBteU5vZGUtPmdldFZ0a0lkKCkpOwot KyNlbHNlCi0gICAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLSAgICAgdnRrSWRUeXBlKiBwdHMgPSAw OwotICAgICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7Ci1AQCAtMTU2 LDYgKzE2Nyw3IEBAIGJvb2wgU01EU19NZXNoMERFbGVtZW50OjpDaGFuZ2VOb2Rlcyhjb25zdCBT TURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOCi0gICAgIH0KLSAgICAgbXlOb2Rl ID0gbm9kZXNbMF07Ci0gICAgIHB0c1swXSA9IG15Tm9kZS0+Z2V0VnRrSWQoKTsKLSsjZW5kaWYK LSAKLSAgICAgU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7 Ci0gICAgIHJldHVybiB0cnVlOwotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gv c3JjL1NNRFMvU01EU19NZXNoTm9kZS5jcHAgYi9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3Jj L1NNRFMvU01EU19NZXNoTm9kZS5jcHAKLWluZGV4IGY2NDdhNWYxYjhmLi41YjkwM2M4ZmI1NSAx MDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX01lc2hO b2RlLmNwcAotKysrIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfTWVz aE5vZGUuY3BwCi1AQCAtMTkxLDcgKzE5MSw3IEBAIGNsYXNzIFNNRFNfTWVzaE5vZGVfTXlJbnZJ dGVyYXRvcjogcHVibGljIFNNRFNfRWxlbUl0ZXJhdG9yCi0gU01EU19FbGVtSXRlcmF0b3JQdHIg U01EU19NZXNoTm9kZTo6Ci0gR2V0SW52ZXJzZUVsZW1lbnRJdGVyYXRvcihTTURTQWJzX0VsZW1l bnRUeXBlIHR5cGUpIGNvbnN0Ci0gewotLSAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBTTURTX01l c2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKS0+R2V0Q2VsbExpbmtzKCktPkdldExp bmsobXlWdGtJRCk7Ci0rICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRpY19jYXN0PHZ0a0Nl bGxMaW5rcyo+KFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRD ZWxsTGlua3MoKSktPkdldExpbmsobXlWdGtJRCk7Ci0gICAvL01FU1NBR0UoIm15SUQgIiA8PCBt eUlEIDw8ICIgbmNlbGxzICIgPDwgbC5uY2VsbHMpOwotICAgcmV0dXJuIFNNRFNfRWxlbUl0ZXJh dG9yUHRyKG5ldyBTTURTX01lc2hOb2RlX015SW52SXRlcmF0b3IoU01EU19NZXNoOjpfbWVzaExp c3RbbXlNZXNoSWRdLCBsLmNlbGxzLCBsLm5jZWxscywgdHlwZSkpOwotIH0KLUBAIC0yNTEsNyAr MjUxLDcgQEAgZWxlbWVudHNJdGVyYXRvcihTTURTQWJzX0VsZW1lbnRUeXBlIHR5cGUpIGNvbnN0 Ci0gICAgIHJldHVybiBTTURTX01lc2hFbGVtZW50OjplbGVtZW50c0l0ZXJhdG9yKFNNRFNBYnNf Tm9kZSk7Ci0gICBlbHNlCi0gICB7Ci0tICAgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gU01EU19N ZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5rcygpLT5HZXRM aW5rKG15VnRrSUQpOwotKyAgICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IHN0YXRpY19jYXN0PHZ0 a0NlbGxMaW5rcyo+KFNNRFNfTWVzaDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5H ZXRDZWxsTGlua3MoKSktPkdldExpbmsobXlWdGtJRCk7Ci0gICAgIHJldHVybiBTTURTX0VsZW1J dGVyYXRvclB0cihuZXcgU01EU19NZXNoTm9kZV9NeUl0ZXJhdG9yKFNNRFNfTWVzaDo6X21lc2hM aXN0W215TWVzaElkXSwgbC5jZWxscywgbC5uY2VsbHMsIHR5cGUpKTsKLSAgIH0KLSB9Ci1AQCAt MzUwLDcgKzM1MCw3IEBAIHZvaWQgU01EU19NZXNoTm9kZTo6QWRkSW52ZXJzZUVsZW1lbnQoY29u c3QgU01EU19NZXNoRWxlbWVudCogTUUpCi0gICBjb25zdCBTTURTX01lc2hDZWxsICpjZWxsID0g ZHluYW1pY19jYXN0PGNvbnN0IFNNRFNfTWVzaENlbGwqPiAoTUUpOwotICAgYXNzZXJ0KGNlbGwp OwotICAgU01EU19VbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3Rb bXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0tICB2dGtDZWxsTGlua3MgKkxpbmtzID0gZ3JpZC0+R2V0 Q2VsbExpbmtzKCk7Ci0rICB2dGtDZWxsTGlua3MgKkxpbmtzID0gc3RhdGljX2Nhc3Q8dnRrQ2Vs bExpbmtzKj4oZ3JpZC0+R2V0Q2VsbExpbmtzKCkpOwotICAgTGlua3MtPlJlc2l6ZUNlbGxMaXN0 KG15VnRrSUQsIDEpOwotICAgTGlua3MtPkFkZENlbGxSZWZlcmVuY2UoY2VsbC0+Z2V0VnRrSWQo KSwgbXlWdGtJRCk7Ci0gfQotQEAgLTM2Niw3ICszNjYsNyBAQCB2b2lkIFNNRFNfTWVzaE5vZGU6 OkNsZWFySW52ZXJzZUVsZW1lbnRzKCkKLSAKLSBib29sIFNNRFNfTWVzaE5vZGU6OmVtcHR5SW52 ZXJzZUVsZW1lbnRzKCkKLSB7Ci0tICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IFNNRFNfTWVzaDo6 X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpLT5HZXRDZWxsTGlua3MoKS0+R2V0TGluayht eVZ0a0lEKTsKLSsgIHZ0a0NlbGxMaW5rczo6TGluayBsID0gc3RhdGljX2Nhc3Q8dnRrQ2VsbExp bmtzKj4oU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxM aW5rcygpKS0+R2V0TGluayhteVZ0a0lEKTsKLSAgIHJldHVybiAobC5uY2VsbHMgPT0gMCk7Ci0g fQotIAotQEAgLTM3OCw3ICszNzgsNyBAQCBib29sIFNNRFNfTWVzaE5vZGU6OmVtcHR5SW52ZXJz ZUVsZW1lbnRzKCkKLSAKLSBpbnQgU01EU19NZXNoTm9kZTo6TmJJbnZlcnNlRWxlbWVudHMoU01E U0Fic19FbGVtZW50VHlwZSB0eXBlKSBjb25zdAotIHsKLS0gIHZ0a0NlbGxMaW5rczo6TGluayBs ID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlkKCktPkdldENlbGxMaW5r cygpLT5HZXRMaW5rKG15VnRrSUQpOwotKyAgdnRrQ2VsbExpbmtzOjpMaW5rIGwgPSBzdGF0aWNf Y2FzdDx2dGtDZWxsTGlua3MqPihTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdy aWQoKS0+R2V0Q2VsbExpbmtzKCkpLT5HZXRMaW5rKG15VnRrSUQpOwotIAotICAgaWYgKCB0eXBl ID09IFNNRFNBYnNfQWxsICkKLSAgICAgcmV0dXJuIGwubmNlbGxzOwotZGlmZiAtLWdpdCBzcmMv M3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmNwcCBi L3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Vuc3RydWN0dXJlZEdyaWQu Y3BwCi1pbmRleCBmYmQ5MDNiMWU3NC4uZmYyYjgxZTk2OTQgMTAwNjQ0Ci0tLS0gYS9zcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19VbnN0cnVjdHVyZWRHcmlkLmNwcAotKysr IGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVW5zdHJ1Y3R1cmVkR3Jp ZC5jcHAKLUBAIC0xMzksOCArMTM5LDggQEAgaW50IFNNRFNfVW5zdHJ1Y3R1cmVkR3JpZDo6SW5z ZXJ0TmV4dExpbmtlZENlbGwoaW50IHR5cGUsIGludCBucHRzLCB2dGtJZFR5cGUgKnAKLSAgIGZv ciAoOyBpdCAhPSBzZXRPZk5vZGVzLmVuZCgpOyArK2l0KQotICAgICB7Ci0gICAgICAgLy9NRVNT QUdFKCJyZXZlcnNlIGxpbmsgZm9yIG5vZGUgIiA8PCAqaXQgPDwgIiBjZWxsICIgPDwgY2VsbGlk KTsKLS0gICAgICB0aGlzLT5MaW5rcy0+UmVzaXplQ2VsbExpc3QoKml0LCAxKTsKLS0gICAgICB0 aGlzLT5MaW5rcy0+QWRkQ2VsbFJlZmVyZW5jZShjZWxsaWQsICppdCk7Ci0rICAgICAgdGhpcy0+ R2V0TGlua3MoKS0+UmVzaXplQ2VsbExpc3QoKml0LCAxKTsKLSsgICAgICB0aGlzLT5HZXRMaW5r cygpLT5BZGRDZWxsUmVmZXJlbmNlKGNlbGxpZCwgKml0KTsKLSAgICAgfQotIAotICAgcmV0dXJu IGNlbGxpZDsKLUBAIC0zMzIsOSArMzMyLDEzIEBAIHZvaWQgU01EU19VbnN0cnVjdHVyZWRHcmlk Ojpjb3B5QmxvYyh2dGtVbnNpZ25lZENoYXJBcnJheSAqbmV3VHlwZXMsCi0gICAgIHsKLSAgICAg ICBuZXdUeXBlcy0+U2V0VmFsdWUoYWxyZWFkeUNvcGllZCwgdGhpcy0+VHlwZXMtPkdldFZhbHVl KGopKTsKLSAgICAgICBpZENlbGxzT2xkVG9OZXdbal0gPSBhbHJlYWR5Q29waWVkOyAvLyBvbGQg dnRrSWQgLS0+IG5ldyB2dGtJZAotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgICAgIHZ0 a0lkVHlwZSBvbGRMb2MgPSB0aGlzLT5HZXRDZWxsTG9jYXRpb25zQXJyYXkoKS0+R2V0VmFsdWUo aik7Ci0rI2Vsc2UKLSAgICAgICB2dGtJZFR5cGUgb2xkTG9jID0gdGhpcy0+TG9jYXRpb25zLT5H ZXRWYWx1ZShqKTsKLSsjZW5kaWYKLSAgICAgICB2dGtJZFR5cGUgbmJwdHM7Ci0tICAgICAgdnRr SWRUeXBlICpvbGRQdHNDZWxsID0gMDsKLSsgICAgICB2dGtJZFR5cGVQdHIgb2xkUHRzQ2VsbCA9 IDA7Ci0gICAgICAgdGhpcy0+Q29ubmVjdGl2aXR5LT5HZXRDZWxsKG9sZExvYywgbmJwdHMsIG9s ZFB0c0NlbGwpOwotICAgICAgIGFzc2VydChuYnB0cyA8IE5CTUFYTk9ERVNJTkNFTEwpOwotICAg ICAgIC8vTUVTU0FHRShqIDw8ICIgIiA8PCBhbHJlYWR5Q29waWVkIDw8ICIgIiA8PCAoaW50KXRo aXMtPlR5cGVzLT5HZXRWYWx1ZShqKSA8PCAiICIgPDwgb2xkTG9jIDw8ICIgIiA8PCBuYnB0cyAp OwotQEAgLTk1Miw2ICs5NTYsMjEgQEAgdm9pZCBTTURTX1Vuc3RydWN0dXJlZEdyaWQ6OkdldE5v ZGVJZHMoc3RkOjpzZXQ8aW50PiYgbm9kZVNldCwgaW50IGRvd25JZCwgdW5zaWcKLSAgKi8KLSB2 b2lkIFNNRFNfVW5zdHJ1Y3R1cmVkR3JpZDo6TW9kaWZ5Q2VsbE5vZGVzKGludCB2dGtWb2xJZCwg c3RkOjptYXA8aW50LCBpbnQ+IGxvY2FsQ2xvbmVkTm9kZUlkcykKLSB7Ci0rI2lmZGVmIFZUS19D RUxMX0FSUkFZX1YyCi0rICB2dGtOZXc8dnRrSWRMaXN0PiBjZWxsUG9pbnRzOwotKyAgdGhpcy0+ R2V0Q2VsbFBvaW50cyh2dGtWb2xJZCwgY2VsbFBvaW50cy5HZXRQb2ludGVyKCkpOwotKyAgZm9y ICh2dGtJZFR5cGUgaSA9IDA7IGkgPCBjZWxsUG9pbnRzLT5HZXROdW1iZXJPZklkcygpOyBpKysp Ci0rICAgIHsKLSsgICAgICBpZiAobG9jYWxDbG9uZWROb2RlSWRzLmNvdW50KGNlbGxQb2ludHMt PkdldElkKGkpKSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgdnRrSWRUeXBlIG9sZHB0ID0gY2Vs bFBvaW50cy0+R2V0SWQoaSk7Ci0rICAgICAgICAgIGNlbGxQb2ludHMtPlNldElkKGksIGxvY2Fs Q2xvbmVkTm9kZUlkc1tvbGRwdF0pOwotKyAgICAgICAgICAvL01FU1NBR0Uob2xkcHQgPDwgIiAt LT4gIiA8PCBwdHNbaV0pOwotKyAgICAgICAgICAvL3RoaXMtPlJlbW92ZVJlZmVyZW5jZVRvQ2Vs bChvbGRwdCwgdnRrVm9sSWQpOwotKyAgICAgICAgICAvL3RoaXMtPkFkZFJlZmVyZW5jZVRvQ2Vs bChwdHNbaV0sIHZ0a1ZvbElkKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyNlbHNlCi0gICB2dGtJ ZFR5cGUgbnB0cyA9IDA7Ci0gICB2dGtJZFR5cGUgKnB0czsgLy8gd2lsbCByZWZlciB0byB0aGUg cG9pbnQgaWQncyBvZiB0aGUgZmFjZQotICAgdGhpcy0+R2V0Q2VsbFBvaW50cyh2dGtWb2xJZCwg bnB0cywgcHRzKTsKLUBAIC05NjYsNiArOTg1LDcgQEAgdm9pZCBTTURTX1Vuc3RydWN0dXJlZEdy aWQ6Ok1vZGlmeUNlbGxOb2RlcyhpbnQgdnRrVm9sSWQsIHN0ZDo6bWFwPGludCwgaW50PiBsb2MK LSAgICAgICAgICAgLy90aGlzLT5BZGRSZWZlcmVuY2VUb0NlbGwocHRzW2ldLCB2dGtWb2xJZCk7 Ci0gICAgICAgICB9Ci0gICAgIH0KLSsjZW5kaWYKLSB9Ci0gCi0gLyohIHJlb3JkZXIgdGhlIG5v ZGVzIG9mIGEgZmFjZQotQEAgLTk5NSwxMSArMTAxNSwyMCBAQCB2b2lkIFNNRFNfVW5zdHJ1Y3R1 cmVkR3JpZDo6QnVpbGRMaW5rcygpCi0gICAgIHRoaXMtPkxpbmtzLT5VblJlZ2lzdGVyKHRoaXMp OwotICAgICB9Ci0gCi0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICB0aGlzLT5MaW5rcyA9 IFNNRFNfQ2VsbExpbmtzOjpOZXcoKTsKLSsgIEdldExpbmtzKCktPkFsbG9jYXRlKHRoaXMtPkdl dE51bWJlck9mUG9pbnRzKCkpOwotKyAgR2V0TGlua3MoKS0+UmVnaXN0ZXIodGhpcyk7Ci0rLy9G SVhNRTogdnRrOQotKyAgR2V0TGlua3MoKS0+QnVpbGRMaW5rcyh0aGlzKTsKLSsgIEdldExpbmtz KCktPkRlbGV0ZSgpOwotKyNlbHNlCi0gICB0aGlzLT5MaW5rcyA9IFNNRFNfQ2VsbExpbmtzOjpO ZXcoKTsKLSAgIHRoaXMtPkxpbmtzLT5BbGxvY2F0ZSh0aGlzLT5HZXROdW1iZXJPZlBvaW50cygp KTsKLSAgIHRoaXMtPkxpbmtzLT5SZWdpc3Rlcih0aGlzKTsKLSAgIHRoaXMtPkxpbmtzLT5CdWls ZExpbmtzKHRoaXMsIHRoaXMtPkNvbm5lY3Rpdml0eSk7Ci0gICB0aGlzLT5MaW5rcy0+RGVsZXRl KCk7Ci0rI2VuZGlmCi0gfQotIAotIC8qISBDcmVhdGUgYSB2b2x1bWUgKHByaXNtIG9yIGhleGFo ZWRyb24pIGJ5IGR1cGxpY2F0aW9uIG9mIGEgZmFjZS4KLWRpZmYgLS1naXQgc3JjLzNyZFBhcnR5 L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrQ2VsbEl0ZXJhdG9yLmNwcCBiL3NyYy8zcmRQ YXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0NlbGxJdGVyYXRvci5jcHAKLWluZGV4 IGRlYjA1OTg1ZjAwLi42M2I2ZWFiYjcwNCAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQYXJ0eS9zYWxv bWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0NlbGxJdGVyYXRvci5jcHAKLSsrKyBiL3NyYy8zcmRQ YXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0NlbGxJdGVyYXRvci5jcHAKLUBAIC0z Myw3ICszMyw4IEBAIFNNRFNfVnRrQ2VsbEl0ZXJhdG9yOjpTTURTX1Z0a0NlbGxJdGVyYXRvcihT TURTX01lc2gqIG1lc2gsIGludCB2dGtDZWxsSWQsIFNNRFNBCi0gICB9Ci0gICBlbHNlCi0gICB7 Ci0tICAgIHZ0a0lkVHlwZSBucHRzLCAqcHRzOwotKyAgICB2dGtJZFR5cGUgbnB0czsKLSsgICAg dnRrSWRUeXBlUHRyIHB0czsKLSAgICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggX2NlbGxJZCwgbnB0 cywgcHRzICk7Ci0gICAgIF92dGtJZExpc3QtPlNldE51bWJlck9mSWRzKCBfbmJOb2RlcyA9IG5w dHMgKTsKLSAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBfbmJOb2RlczsgaSsrKQotQEAgLTY3LDcg KzY4LDcgQEAgU01EU19WdGtDZWxsSXRlcmF0b3JUb1VOVjo6U01EU19WdGtDZWxsSXRlcmF0b3JU b1VOVihTTURTX01lc2gqIG1lc2gsIGludCB2dGtDZWwKLSAgIC8vTUVTU0FHRSgiU01EU19WdGtD ZWxsSW50ZXJsYWNlZEl0ZXJhdG9yIChVTlYpIiA8PCBfdHlwZSk7Ci0gCi0gICBfdnRrSWRMaXN0 ID0gdnRrSWRMaXN0OjpOZXcoKTsKLS0gIHZ0a0lkVHlwZSogcHRzOwotKyAgdnRrSWRUeXBlUHRy IHB0czsKLSAgIHZ0a0lkVHlwZSBucHRzOwotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9 IF9tZXNoLT5nZXRHcmlkKCk7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKCh2dGtJZFR5cGUpX2Nl bGxJZCwgbnB0cywgcHRzKTsKLUBAIC0xODIsNyArMTgzLDcgQEAgU01EU19WdGtDZWxsSXRlcmF0 b3JQb2x5SDo6U01EU19WdGtDZWxsSXRlcmF0b3JQb2x5SChTTURTX01lc2gqIG1lc2gsIGludCB2 dGtDZWwKLSAgIHsKLSAgICAgLy9NRVNTQUdFKCJTTURTX1Z0a0NlbGxJdGVyYXRvciBQb2x5aGVk cmEiKTsKLSAgICAgdnRrSWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAgIHZ0a0lkVHlwZSogcHRJZHMg PSAwOwotKyAgICB2dGtJZFR5cGVQdHIgcHRJZHMgPSAwOwotICAgICBncmlkLT5HZXRGYWNlU3Ry ZWFtKF9jZWxsSWQsIG5GYWNlcywgcHRJZHMpOwotICAgICBpbnQgaWQgPSAwOwotICAgICBfbmJO b2Rlc0luRmFjZXMgPSAwOwotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3Jj L1NNRFMvU01EU19WdGtFZGdlLmNwcCBiL3NyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01E Uy9TTURTX1Z0a0VkZ2UuY3BwCi1pbmRleCA5Nzg2YWJmOWFhZS4uNmQ3NzJhM2NkNGEgMTAwNjQ0 Ci0tLS0gYS9zcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtFZGdlLmNw cAotKysrIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrRWRnZS5j cHAKLUBAIC02Nyw2ICs2NywxOSBAQCBib29sIFNNRFNfVnRrRWRnZTo6Q2hhbmdlTm9kZXMoY29u c3QgU01EU19NZXNoTm9kZSAqIG5vZGUxLCBjb25zdCBTTURTX01lc2hOb2RlCi0gYm9vbCBTTURT X1Z0a0VkZ2U6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGVzW10sIGNvbnN0 IGludCBuYk5vZGVzKQotIHsKLSAgIHZ0a1Vuc3RydWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01l c2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLSsjaWZkZWYgVlRLX0NFTExfQVJS QVlfVjIKLSsgIHZ0a05ldzx2dGtJZExpc3Q+IGNlbGxQb2ludHM7Ci0rICBncmlkLT5HZXRDZWxs UG9pbnRzKG15VnRrSUQsIGNlbGxQb2ludHMuR2V0UG9pbnRlcigpKTsKLSsgIGlmIChuYk5vZGVz ICE9IGNlbGxQb2ludHMtPkdldE51bWJlck9mSWRzKCkpCi0rICAgIHsKLSsgICAgICBNRVNTQUdF KCJDaGFuZ2VOb2RlcyBwcm9ibGVtOiBub3QgdGhlIHNhbWUgbnVtYmVyIG9mIG5vZGVzICIgPDwg Y2VsbFBvaW50cy0+R2V0TnVtYmVyT2ZJZHMoKSA8PCAiIC0+ICIgPDwgbmJOb2Rlcyk7Ci0rICAg ICAgcmV0dXJuIGZhbHNlOwotKyAgICB9Ci0rICBmb3IgKGludCBpID0gMDsgaSA8IG5iTm9kZXM7 IGkrKykKLSsgICAgewotKyAgICAgIGNlbGxQb2ludHMtPlNldElkKGksIG5vZGVzW2ldLT5nZXRW dGtJZCgpKTsKLSsgICAgfQotKyNlbHNlCi0gICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0gICB2dGtJ ZFR5cGUqIHB0cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0 cyk7Ci1AQCAtNzksNiArOTIsNyBAQCBib29sIFNNRFNfVnRrRWRnZTo6Q2hhbmdlTm9kZXMoY29u c3QgU01EU19NZXNoTm9kZSogbm9kZXNbXSwgY29uc3QgaW50IG5iTm9kZXMpCi0gICAgIHsKLSAg ICAgICBwdHNbaV0gPSBub2Rlc1tpXS0+Z2V0VnRrSWQoKTsKLSAgICAgfQotKyNlbmRpZgotICAg U01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7Ci0gICByZXR1 cm4gdHJ1ZTsKLSB9Ci1AQCAtODcsNyArMTAxLDcgQEAgYm9vbCBTTURTX1Z0a0VkZ2U6OklzTWVk aXVtTm9kZShjb25zdCBTTURTX01lc2hOb2RlKiBub2RlKSBjb25zdAotIHsKLSAgIHZ0a1Vuc3Ry dWN0dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdy aWQoKTsKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLS0gIHZ0a0lkVHlwZSogcHRzID0gMDsKLSsg IHZ0a0lkVHlwZVB0ciBwdHMgPSAwOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBu cHRzLCBwdHMpOwotICAgLy9NRVNTQUdFKCJJc01lZGl1bU5vZGUgIiA8PCBucHRzICA8PCAiICIg PDwgKG5vZGUtPmdldFZ0a0lkKCkgPT0gcHRzW25wdHMtMV0pKTsKLSAgIHJldHVybiAoKG5wdHMg PT0gMykgJiYgKG5vZGUtPmdldFZ0a0lkKCkgPT0gcHRzWzJdKSk7Ci1AQCAtMTM3LDcgKzE1MSw4 IEBAIGNvbnN0IFNNRFNfTWVzaE5vZGUqCi0gU01EU19WdGtFZGdlOjpHZXROb2RlKGNvbnN0IGlu dCBpbmQpIGNvbnN0Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVz aDo6X21lc2hMaXN0W215TWVzaElkXS0+Z2V0R3JpZCgpOwotLSAgdnRrSWRUeXBlIG5wdHMsICpw dHM7Ci0rICB2dGtJZFR5cGUgbnB0czsKLSsgIHZ0a0lkVHlwZVB0ciBwdHM7Ci0gICBncmlkLT5H ZXRDZWxsUG9pbnRzKCB0aGlzLT5teVZ0a0lELCBucHRzLCBwdHMgKTsKLSAgIHJldHVybiBTTURT X01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPkZpbmROb2RlVnRrKCBwdHNbIGluZCBdKTsKLSB9 Ci1kaWZmIC0tZ2l0IHNyYy8zcmRQYXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0Zh Y2UuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrRmFjZS5j cHAKLWluZGV4IDEzODllMGQzNTg1Li5jYjk4MWJmYjE4ZSAxMDA2NDQKLS0tLSBhL3NyYy8zcmRQ YXJ0eS9zYWxvbWVzbWVzaC9zcmMvU01EUy9TTURTX1Z0a0ZhY2UuY3BwCi0rKysgYi9zcmMvM3Jk UGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtGYWNlLmNwcAotQEAgLTEwMSw2ICsx MDEsMTkgQEAgdm9pZCBTTURTX1Z0a0ZhY2U6OmluaXRRdWFkUG9seShjb25zdCBzdGQ6OnZlY3Rv cjx2dGtJZFR5cGU+JiBub2RlSWRzLCBTTURTX01lc2gKLSBib29sIFNNRFNfVnRrRmFjZTo6Q2hh bmdlTm9kZXMoY29uc3QgU01EU19NZXNoTm9kZSogbm9kZXNbXSwgY29uc3QgaW50IG5iTm9kZXMp Ci0gewotICAgdnRrVW5zdHJ1Y3R1cmVkR3JpZCogZ3JpZCA9IFNNRFNfTWVzaDo6X21lc2hMaXN0 W215TWVzaElkXS0+Z2V0R3JpZCgpOwotKyNpZmRlZiBWVEtfQ0VMTF9BUlJBWV9WMgotKyAgdnRr TmV3PHZ0a0lkTGlzdD4gY2VsbFBvaW50czsKLSsgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJ RCwgY2VsbFBvaW50cy5HZXRQb2ludGVyKCkpOwotKyAgaWYgKG5iTm9kZXMgIT0gY2VsbFBvaW50 cy0+R2V0TnVtYmVyT2ZJZHMoKSkKLSsgICAgewotKyAgICAgIE1FU1NBR0UoIkNoYW5nZU5vZGVz IHByb2JsZW06IG5vdCB0aGUgc2FtZSBudW1iZXIgb2Ygbm9kZXMgIiA8PCBjZWxsUG9pbnRzLT5H ZXROdW1iZXJPZklkcygpIDw8ICIgLT4gIiA8PCBuYk5vZGVzKTsKLSsgICAgICByZXR1cm4gZmFs c2U7Ci0rICAgIH0KLSsgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJOb2RlczsgaSsrKQotKyAgICB7 Ci0rICAgICAgY2VsbFBvaW50cy0+U2V0SWQoaSwgbm9kZXNbaV0tPmdldFZ0a0lkKCkpOwotKyAg ICB9Ci0rI2Vsc2UKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLSAgIHZ0a0lkVHlwZSogcHRzID0g MDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKLUBAIC0xMTMs NiArMTI2LDcgQEAgYm9vbCBTTURTX1Z0a0ZhY2U6OkNoYW5nZU5vZGVzKGNvbnN0IFNNRFNfTWVz aE5vZGUqIG5vZGVzW10sIGNvbnN0IGludCBuYk5vZGVzKQotICAgICB7Ci0gICAgICAgcHRzW2ld ID0gbm9kZXNbaV0tPmdldFZ0a0lkKCk7Ci0gICAgIH0KLSsjZW5kaWYKLSAgIFNNRFNfTWVzaDo6 X21lc2hMaXN0W215TWVzaElkXS0+c2V0TXlNb2RpZmllZCgpOwotICAgcmV0dXJuIHRydWU7Ci0g fQotQEAgLTE3Myw3ICsxODcsOCBAQCBjb25zdCBTTURTX01lc2hOb2RlKgotIFNNRFNfVnRrRmFj ZTo6R2V0Tm9kZShjb25zdCBpbnQgaW5kKSBjb25zdAotIHsKLSAgIHZ0a1Vuc3RydWN0dXJlZEdy aWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQoKTsKLS0g IHZ0a0lkVHlwZSBucHRzLCAqcHRzOwotKyAgdnRrSWRUeXBlIG5wdHM7Ci0rICB2dGtJZFR5cGVQ dHIgcHRzOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggdGhpcy0+bXlWdGtJRCwgbnB0cywgcHRz ICk7Ci0gICByZXR1cm4gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5GaW5kTm9kZVZ0 ayggcHRzWyBpbmQgXSk7Ci0gfQotQEAgLTE4Niw3ICsyMDEsOCBAQCBTTURTX1Z0a0ZhY2U6Okdl dE5vZGUoY29uc3QgaW50IGluZCkgY29uc3QKLSBpbnQgU01EU19WdGtGYWNlOjpHZXROb2RlSW5k ZXgoIGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUgKSBjb25zdAotIHsKLSAgIHZ0a1Vuc3RydWN0 dXJlZEdyaWQqIGdyaWQgPSBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1lc2hJZF0tPmdldEdyaWQo KTsKLS0gIHZ0a0lkVHlwZSBucHRzLCAqcHRzOwotKyAgdnRrSWRUeXBlIG5wdHM7Ci0rICB2dGtJ ZFR5cGVQdHIgcHRzOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggdGhpcy0+bXlWdGtJRCwgbnB0 cywgcHRzICk7Ci0gICBmb3IgKCB2dGtJZFR5cGUgaSA9IDA7IGkgPCBucHRzOyArK2kgKQotICAg ICBpZiAoIHB0c1tpXSA9PSBub2RlLT5nZXRWdGtJZCgpICkKLUBAIC0yNTEsNyArMjY3LDcgQEAg Ym9vbCBTTURTX1Z0a0ZhY2U6OklzTWVkaXVtTm9kZShjb25zdCBTTURTX01lc2hOb2RlKiBub2Rl KSBjb25zdAotICAgICByZXR1cm4gZmFsc2U7Ci0gICB9Ci0gICB2dGtJZFR5cGUgbnB0cyA9IDA7 Ci0tICB2dGtJZFR5cGUqIHB0cyA9IDA7Ci0rICB2dGtJZFR5cGVQdHIgcHRzID0gMDsKLSAgIGdy aWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKLSAgIHZ0a0lkVHlwZSBub2Rl SWQgPSBub2RlLT5nZXRWdGtJZCgpOwotICAgZm9yIChpbnQgcmFuayA9IDA7IHJhbmsgPCBucHRz OyByYW5rKyspCi1AQCAtMzU2LDExICszNzIsMTggQEAgU01EU19Ob2RlSXRlcmF0b3JQdHIgU01E U19WdGtGYWNlOjppbnRlcmxhY2VkTm9kZXNJdGVyYXRvcigpIGNvbnN0Ci0gdm9pZCBTTURTX1Z0 a0ZhY2U6OkNoYW5nZUFwZXgoU01EU19NZXNoTm9kZSogbm9kZSkKLSB7Ci0gICB2dGtVbnN0cnVj dHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5nZXRHcmlk KCk7Ci0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICB2dGtOZXc8dnRrSWRMaXN0PiBjZWxs UG9pbnRzOwotKyAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBjZWxsUG9pbnRzLkdldFBv aW50ZXIoKSk7Ci0rICBncmlkLT5SZW1vdmVSZWZlcmVuY2VUb0NlbGwoY2VsbFBvaW50cy0+R2V0 SWQoMCksIG15VnRrSUQpOwotKyAgY2VsbFBvaW50cy0+U2V0SWQoMCwgbm9kZS0+Z2V0VnRrSWQo KSk7Ci0rI2Vsc2UKLSAgIHZ0a0lkVHlwZSBucHRzID0gMDsKLSAgIHZ0a0lkVHlwZSogcHRzID0g MDsKLSAgIGdyaWQtPkdldENlbGxQb2ludHMobXlWdGtJRCwgbnB0cywgcHRzKTsKLSAgIGdyaWQt PlJlbW92ZVJlZmVyZW5jZVRvQ2VsbChwdHNbMF0sIG15VnRrSUQpOwotICAgcHRzWzBdID0gbm9k ZS0+Z2V0VnRrSWQoKTsKLSsjZW5kaWYKLSAgIG5vZGUtPkFkZEludmVyc2VFbGVtZW50KHRoaXMp LAotICAgU01EU19NZXNoOjpfbWVzaExpc3RbbXlNZXNoSWRdLT5zZXRNeU1vZGlmaWVkKCk7Ci0g fQotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21lc2gvc3JjL1NNRFMvU01EU19WdGtW b2x1bWUuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrVm9s dW1lLmNwcAotaW5kZXggMDE1ZWRmNzVmZDIuLjE5ZWJkMDc0NmM4IDEwMDY0NAotLS0tIGEvc3Jj LzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrVm9sdW1lLmNwcAotKysrIGIv c3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTURTL1NNRFNfVnRrVm9sdW1lLmNwcAotQEAg LTEzMyw2ICsxMzMsMTkgQEAgdm9pZCBTTURTX1Z0a1ZvbHVtZTo6aW5pdFBvbHkoY29uc3Qgc3Rk Ojp2ZWN0b3I8dnRrSWRUeXBlPiYgbm9kZUlkcywKLSBib29sIFNNRFNfVnRrVm9sdW1lOjpDaGFu Z2VOb2Rlcyhjb25zdCBTTURTX01lc2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcykK LSB7Ci0gICB2dGtVbnN0cnVjdHVyZWRHcmlkKiBncmlkID0gU01EU19NZXNoOjpfbWVzaExpc3Rb bXlNZXNoSWRdLT5nZXRHcmlkKCk7Ci0rI2lmZGVmIFZUS19DRUxMX0FSUkFZX1YyCi0rICB2dGtO ZXc8dnRrSWRMaXN0PiBjZWxsUG9pbnRzOwotKyAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lE LCBjZWxsUG9pbnRzLkdldFBvaW50ZXIoKSk7Ci0rICBpZiAobmJOb2RlcyAhPSBjZWxsUG9pbnRz LT5HZXROdW1iZXJPZklkcygpKQotKyAgICB7Ci0rICAgICAgTUVTU0FHRSgiQ2hhbmdlTm9kZXMg cHJvYmxlbTogbm90IHRoZSBzYW1lIG51bWJlciBvZiBub2RlcyAiIDw8IGNlbGxQb2ludHMtPkdl dE51bWJlck9mSWRzKCkgPDwgIiAtPiAiIDw8IG5iTm9kZXMpOwotKyAgICAgIHJldHVybiBmYWxz ZTsKLSsgICAgfQotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuYk5vZGVzOyBpKyspCi0rICAgIHsK LSsgICAgICBjZWxsUG9pbnRzLT5TZXRJZChpLCBub2Rlc1tpXS0+Z2V0VnRrSWQoKSk7Ci0rICAg IH0KLSsjZWxzZQotICAgdnRrSWRUeXBlIG5wdHMgPSAwOwotICAgdnRrSWRUeXBlKiBwdHMgPSAw OwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyhteVZ0a0lELCBucHRzLCBwdHMpOwotQEAgLTE0NSw2 ICsxNTgsNyBAQCBib29sIFNNRFNfVnRrVm9sdW1lOjpDaGFuZ2VOb2Rlcyhjb25zdCBTTURTX01l c2hOb2RlKiBub2Rlc1tdLCBjb25zdCBpbnQgbmJOb2RlcwotICAgICB7Ci0gICAgICAgcHRzW2ld ID0gbm9kZXNbaV0tPmdldFZ0a0lkKCk7Ci0gICAgIH0KLSsjZW5kaWYKLSAgIFNNRFNfTWVzaDo6 X21lc2hMaXN0W215TWVzaElkXS0+c2V0TXlNb2RpZmllZCgpOwotICAgcmV0dXJuIHRydWU7Ci0g fQotQEAgLTIwNyw3ICsyMjEsNyBAQCBpbnQgU01EU19WdGtWb2x1bWU6Ok5iRmFjZXMoKSBjb25z dAotICAgICBjYXNlIFZUS19QT0xZSEVEUk9OOgotICAgICAgIHsKLSAgICAgICAgIHZ0a0lkVHlw ZSBuRmFjZXMgPSAwOwotLSAgICAgICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgICAgICB2 dGtJZFR5cGVQdHIgcHRJZHMgPSAwOwotICAgICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlz LT5teVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgICAgIG5iRmFjZXMgPSBuRmFjZXM7Ci0g ICAgICAgICBicmVhazsKLUBAIC0yMzYsNyArMjUwLDcgQEAgaW50IFNNRFNfVnRrVm9sdW1lOjpO Yk5vZGVzKCkgY29uc3QKLSAgIGVsc2UKLSAgICAgewotICAgICAgIHZ0a0lkVHlwZSBuRmFjZXMg PSAwOwotLSAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAgIHZ0a0lkVHlwZVB0ciBw dElkcyA9IDA7Ci0gICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFj ZXMsIHB0SWRzKTsKLSAgICAgICBpbnQgaWQgPSAwOwotICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgbkZhY2VzOyBpKyspCi1AQCAtMjc2LDcgKzI5MCw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6 TmJFZGdlcygpIGNvbnN0Ci0gICAgIGNhc2UgVlRLX1BPTFlIRURST046Ci0gICAgICAgewotICAg ICAgICAgdnRrSWRUeXBlIG5GYWNlcyA9IDA7Ci0tICAgICAgICB2dGtJZFR5cGUqIHB0SWRzID0g MDsKLSsgICAgICAgIHZ0a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgICBncmlkLT5HZXRG YWNlU3RyZWFtKHRoaXMtPm15VnRrSUQsIG5GYWNlcywgcHRJZHMpOwotICAgICAgICAgbmJFZGdl cyA9IDA7Ci0gICAgICAgICBpbnQgaWQgPSAwOwotQEAgLTMxMiw3ICszMjYsNyBAQCBpbnQgU01E U19WdGtWb2x1bWU6Ok5iRmFjZU5vZGVzKGNvbnN0IGludCBmYWNlX2luZCkgY29uc3QKLSAgIGlm IChhVnRrVHlwZSA9PSBWVEtfUE9MWUhFRFJPTikKLSAgICAgewotICAgICAgIHZ0a0lkVHlwZSBu RmFjZXMgPSAwOwotLSAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAgIHZ0a0lkVHlw ZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lE LCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgICBpbnQgaWQgPSAwOwotICAgICAgIGZvciAoaW50IGkg PSAwOyBpIDwgbkZhY2VzOyBpKyspCi1AQCAtMzQyLDcgKzM1Niw3IEBAIGNvbnN0IFNNRFNfTWVz aE5vZGUqIFNNRFNfVnRrVm9sdW1lOjpHZXRGYWNlTm9kZShjb25zdCBpbnQgZmFjZV9pbmQsIGNv bnN0IGludCBuCi0gICBpZiAoYVZ0a1R5cGUgPT0gVlRLX1BPTFlIRURST04pCi0gICAgIHsKLSAg ICAgICB2dGtJZFR5cGUgbkZhY2VzID0gMDsKLS0gICAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsK LSsgICAgICB2dGtJZFR5cGVQdHIgcHRJZHMgPSAwOwotICAgICAgIGdyaWQtPkdldEZhY2VTdHJl YW0odGhpcy0+bXlWdGtJRCwgbkZhY2VzLCBwdElkcyk7Ci0gICAgICAgaW50IGlkID0gMDsKLSAg ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5GYWNlczsgaSsrKQotQEAgLTM3Miw3ICszODYsNyBA QCBzdGQ6OnZlY3RvcjxpbnQ+IFNNRFNfVnRrVm9sdW1lOjpHZXRRdWFudGl0aWVzKCkgY29uc3QK LSAgIGlmIChhVnRrVHlwZSA9PSBWVEtfUE9MWUhFRFJPTikKLSAgICAgewotICAgICAgIHZ0a0lk VHlwZSBuRmFjZXMgPSAwOwotLSAgICAgIHZ0a0lkVHlwZSogcHRJZHMgPSAwOwotKyAgICAgIHZ0 a0lkVHlwZVB0ciBwdElkcyA9IDA7Ci0gICAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5t eVZ0a0lELCBuRmFjZXMsIHB0SWRzKTsKLSAgICAgICBpbnQgaWQgPSAwOwotICAgICAgIGZvciAo aW50IGkgPSAwOyBpIDwgbkZhY2VzOyBpKyspCi1AQCAtNDMwLDcgKzQ0NCw3IEBAIGNvbnN0IFNN RFNfTWVzaE5vZGUqIFNNRFNfVnRrVm9sdW1lOjpHZXROb2RlKGNvbnN0IGludCBpbmQpIGNvbnN0 Ci0gICBpZiAoIGFWdGtUeXBlID09IFZUS19QT0xZSEVEUk9OKQotICAgewotICAgICB2dGtJZFR5 cGUgbkZhY2VzID0gMDsKLS0gICAgdnRrSWRUeXBlKiBwdElkcyA9IDA7Ci0rICAgIHZ0a0lkVHlw ZVB0ciBwdElkcyA9IDA7Ci0gICAgIGdyaWQtPkdldEZhY2VTdHJlYW0odGhpcy0+bXlWdGtJRCwg bkZhY2VzLCBwdElkcyk7Ci0gICAgIGludCBpZCA9IDAsIG5iUG9pbnRzID0gMDsKLSAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBuRmFjZXM7IGkrKykKLUBAIC00NDMsNyArNDU3LDggQEAgY29uc3Qg U01EU19NZXNoTm9kZSogU01EU19WdGtWb2x1bWU6OkdldE5vZGUoY29uc3QgaW50IGluZCkgY29u c3QKLSAgICAgfQotICAgICByZXR1cm4gMDsKLSAgIH0KLS0gIHZ0a0lkVHlwZSBucHRzLCAqcHRz OwotKyAgdnRrSWRUeXBlIG5wdHM7Ci0rICB2dGtJZFR5cGVQdHIgcHRzOwotICAgZ3JpZC0+R2V0 Q2VsbFBvaW50cyggdGhpcy0+bXlWdGtJRCwgbnB0cywgcHRzICk7Ci0gICBjb25zdCBzdGQ6OnZl Y3RvcjxpbnQ+JiBpbnRlcmxhY2UgPSBTTURTX01lc2hDZWxsOjpmcm9tVnRrT3JkZXIoIFZUS0Nl bGxUeXBlKCBhVnRrVHlwZSApKTsKLSAgIHJldHVybiBTTURTX01lc2g6Ol9tZXNoTGlzdFtteU1l c2hJZF0tPkZpbmROb2RlVnRrKCBwdHNbIGludGVybGFjZS5lbXB0eSgpID8gaW5kIDogaW50ZXJs YWNlW2luZF1dICk7Ci1AQCAtNDYwLDcgKzQ3NSw3IEBAIGludCBTTURTX1Z0a1ZvbHVtZTo6R2V0 Tm9kZUluZGV4KCBjb25zdCBTTURTX01lc2hOb2RlKiBub2RlICkgY29uc3QKLSAgIGlmICggYVZ0 a1R5cGUgPT0gVlRLX1BPTFlIRURST04pCi0gICB7Ci0gICAgIHZ0a0lkVHlwZSBuRmFjZXMgPSAw OwotLSAgICB2dGtJZFR5cGUqIHB0SWRzID0gMDsKLSsgICAgdnRrSWRUeXBlUHRyIHB0SWRzID0g MDsKLSAgICAgZ3JpZC0+R2V0RmFjZVN0cmVhbSh0aGlzLT5teVZ0a0lELCBuRmFjZXMsIHB0SWRz KTsKLSAgICAgaW50IGlkID0gMDsKLSAgICAgZm9yIChpbnQgaUYgPSAwOyBpRiA8IG5GYWNlczsg aUYrKykKLUBAIC00NzMsNyArNDg4LDggQEAgaW50IFNNRFNfVnRrVm9sdW1lOjpHZXROb2RlSW5k ZXgoIGNvbnN0IFNNRFNfTWVzaE5vZGUqIG5vZGUgKSBjb25zdAotICAgICB9Ci0gICAgIHJldHVy biAtMTsKLSAgIH0KLS0gIHZ0a0lkVHlwZSBucHRzLCAqcHRzOwotKyAgdnRrSWRUeXBlIG5wdHM7 Ci0rICB2dGtJZFR5cGVQdHIgcHRzOwotICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyggdGhpcy0+bXlW dGtJRCwgbnB0cywgcHRzICk7Ci0gICBmb3IgKCB2dGtJZFR5cGUgaSA9IDA7IGkgPCBucHRzOyAr K2kgKQotICAgICBpZiAoIHB0c1tpXSA9PSBub2RlLT5nZXRWdGtJZCgpICkKLUBAIC01MzQsNyAr NTUwLDcgQEAgYm9vbCBTTURTX1Z0a1ZvbHVtZTo6SXNNZWRpdW1Ob2RlKGNvbnN0IFNNRFNfTWVz aE5vZGUqIG5vZGUpIGNvbnN0Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotICAgdnRrSWRU eXBlIG5wdHMgPSAwOwotLSAgdnRrSWRUeXBlKiBwdHMgPSAwOwotKyAgdnRrSWRUeXBlUHRyIHB0 cyA9IDA7Ci0gICBncmlkLT5HZXRDZWxsUG9pbnRzKG15VnRrSUQsIG5wdHMsIHB0cyk7Ci0gICB2 dGtJZFR5cGUgbm9kZUlkID0gbm9kZS0+Z2V0VnRrSWQoKTsKLSAgIGZvciAoaW50IHJhbmsgPSAw OyByYW5rIDwgbnB0czsgcmFuaysrKQotZGlmZiAtLWdpdCBzcmMvM3JkUGFydHkvc2Fsb21lc21l c2gvc3JjL1NNRVNIL1NNRVNIX01lc2hFZGl0b3IuY3BwIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNt ZXNoL3NyYy9TTUVTSC9TTUVTSF9NZXNoRWRpdG9yLmNwcAotaW5kZXggZmNkMDQ0YjAwZjIuLmY1 NGMyNGY4NjE4IDEwMDY0NAotLS0tIGEvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3NyYy9TTUVT SC9TTUVTSF9NZXNoRWRpdG9yLmNwcAotKysrIGIvc3JjLzNyZFBhcnR5L3NhbG9tZXNtZXNoL3Ny Yy9TTUVTSC9TTUVTSF9NZXNoRWRpdG9yLmNwcAotQEAgLTExMzQ4LDcgKzExMzQ4LDcgQEAgYm9v bCBTTUVTSF9NZXNoRWRpdG9yOjpEb3VibGVOb2Rlc09uR3JvdXBCb3VuZGFyaWVzKCBjb25zdCBz dGQ6OnZlY3RvcjxUSURTb3J0ZWQKLSAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICBpbnQg b2xkSWQgPSAqaXRuOwotICAgICAgICAgICAgICAgLy9NRVNTQUdFKCIgICAgIG5vZGUgIiA8PCBv bGRJZCk7Ci0tICAgICAgICAgICAgICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9IGdyaWQtPkdldENl bGxMaW5rcygpLT5HZXRMaW5rKG9sZElkKTsKLSsgICAgICAgICAgICAgIHZ0a0NlbGxMaW5rczo6 TGluayBsID0gc3RhdGljX2Nhc3Q8dnRrQ2VsbExpbmtzKj4oZ3JpZC0+R2V0Q2VsbExpbmtzKCkp LT5HZXRMaW5rKG9sZElkKTsKLSAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxsLm5jZWxs czsgaSsrKQotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgaW50IHZ0a0lk ID0gbC5jZWxsc1tpXTsKLUBAIC0xMTUyNyw3ICsxMTUyNyw3IEBAIGJvb2wgU01FU0hfTWVzaEVk aXRvcjo6RG91YmxlTm9kZXNPbkdyb3VwQm91bmRhcmllcyggY29uc3Qgc3RkOjp2ZWN0b3I8VElE U29ydGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9NRVNT QUdFKCIgIGRvbWFpbiAiIDw8IGlkb20gPDwgIiB2b2x1bWUgIiA8PCBlbGVtLT5HZXRJRCgpKTsK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdmFsdWVz WzNdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ0a0lkVHlw ZSBucHRzID0gMDsKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 dGtJZFR5cGUqIHB0cyA9IDA7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3JpZC0+R2V0Q2VsbFBvaW50cyh2dGtWb2xJZHNbaXZvbF0sIG5wdHMs IHB0cyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU01EU19W dGtWb2x1bWU6OmdyYXZpdHlDZW50ZXIoZ3JpZCwgcHRzLCBucHRzLCB2YWx1ZXMpOwotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZCA9PTApCi1AQCAtMTE3 MDgsNyArMTE3MDgsNyBAQCBib29sIFNNRVNIX01lc2hFZGl0b3I6OkRvdWJsZU5vZGVzT25Hcm91 cEJvdW5kYXJpZXMoIGNvbnN0IHN0ZDo6dmVjdG9yPFRJRFNvcnRlZAotICAgICAgICAgewotICAg ICAgICAgICBpbnQgb2xkSWQgPSBpdG5vZC0+Zmlyc3Q7Ci0gICAgICAgICAgIC8vTUVTU0FHRSgi ICAgICBub2RlICIgPDwgb2xkSWQpOwotLSAgICAgICAgICB2dGtDZWxsTGlua3M6OkxpbmsgbCA9 IGdyaWQtPkdldENlbGxMaW5rcygpLT5HZXRMaW5rKG9sZElkKTsKLSsgICAgICAgICAgdnRrQ2Vs bExpbmtzOjpMaW5rIGwgPSBzdGF0aWNfY2FzdDx2dGtDZWxsTGlua3MqPihncmlkLT5HZXRDZWxs TGlua3MoKSktPkdldExpbmsob2xkSWQpOwotICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8 IGwubmNlbGxzOyBpKyspCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgaW50IHZ0a0lk ID0gbC5jZWxsc1tpXTsKLUBAIC0xMjE2NSw3ICsxMjE2NSw3IEBAIHZvaWQgU01FU0hfTWVzaEVk aXRvcjo6Q3JlYXRlSG9sZVNraW4oZG91YmxlIHJhZGl1cywKLSAgICAgICAgICAgTUVTU0FHRSgi dm9sdW1lIHRvIGNoZWNrLCAgdnRrSWQgIiA8PCB2dGtJZCA8PCAiIHNtZHNJZCAiIDw8IG1lc2hE Uy0+ZnJvbVZ0a1RvU21kcyh2dGtJZCkpOwotICAgICAgICAgICBib29sIHZvbEluc2lkZSA9IGZh bHNlOwotICAgICAgICAgICB2dGtJZFR5cGUgbnB0cyA9IDA7Ci0tICAgICAgICAgIHZ0a0lkVHlw ZSogcHRzID0gMDsKLSsgICAgICAgICAgdnRrSWRUeXBlUHRyIHB0cyA9IDA7Ci0gICAgICAgICAg IGdyaWQtPkdldENlbGxQb2ludHModnRrSWQsIG5wdHMsIHB0cyk7Ci0gICAgICAgICAgIGZvciAo aW50IGk9MDsgaTxucHRzOyBpKyspCi0gICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9mcmVlY2FkL3BhdGNoZXMvMTUyLWNtYWtlLXZ0azkucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQv cGF0Y2hlcy8xNTItY21ha2UtdnRrOS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggN2FiZmZjZjU3ZTg0Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3BhdGNo ZXMvMTUyLWNtYWtlLXZ0azkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0t LS0gYS9jTWFrZS9GcmVlQ0FEX0hlbHBlcnMvU2V0dXBTYWxvbWVTTUVTSC5jbWFrZQkyMDIwLTEx LTI2IDE1OjU5OjI3LjAwMDAwMDAwMCArMDEwMAotKysrIGIvY01ha2UvRnJlZUNBRF9IZWxwZXJz L1NldHVwU2Fsb21lU01FU0guY21ha2UJMjAyMC0xMS0yNiAyMzowOToxMi43NzgyNjI2MzYgKzAx MDAKLUBAIC0xMSw2ICsxMSw4IEBACi0gICAgICAgICBzZXQoU01FU0hfVkVSU0lPTl9UV0VBSyAw KQotIAotICAgICAgICAgI2lmIHdlIHVzZSBzbWVzaCB3ZSBkZWZpbml0ZWx5IGFsc28gbmVlZCB2 dGssIG5vIG1hdHRlciBvZiBleHRlcm5hbCBvciBpbnRlcm5hbCBzbWVzaAotKyAgICAgICAgZmlu ZF9wYWNrYWdlKFZUSyBSRVFVSVJFRCBOT19NT0RVTEUpCi0rICAgICAgICBpZigke1ZUS19NQUpP Ul9WRVJTSU9OfSBMRVNTIDkpCi0gICAgICAgICBzZXQgKFZUS19DT01QT05FTlRTCi0gICAgICAg ICAgICAgdnRrQ29tbW9uQ29yZQotICAgICAgICAgICAgIHZ0a0NvbW1vbkRhdGFNb2RlbAotQEAg LTIzLDE4ICsyNSwzNyBAQAotICAgICAgICAgICAgIHZ0a0ZpbHRlcnNTb3VyY2VzCi0gICAgICAg ICAgICAgdnRrRmlsdGVyc0dlb21ldHJ5Ci0gICAgICAgICApCi0tCi0tICAgICAgICAjIGNoZWNr IHdoaWNoIG1vZHVsZXMgYXJlIGF2YWlsYWJsZQotLSAgICAgICAgaWYoVU5JWCBPUiBXSU4zMikK LSAgICAgICAgICAgICBmaW5kX3BhY2thZ2UoVlRLIENPTVBPTkVOVFMgdnRrQ29tbW9uQ29yZSBS RVFVSVJFRCBOT19NT0RVTEUpCi0gICAgICAgICAgICAgbGlzdChBUFBFTkQgVlRLX0NPTVBPTkVO VFMgdnRrSU9NUElQYXJhbGxlbCB2dGtQYXJhbGxlbE1QSSB2dGtoZGY1IHZ0a0ZpbHRlcnNQYXJh bGxlbERJWTIgdnRrUmVuZGVyaW5nQ29yZSB2dGtJbnRlcmFjdGlvblN0eWxlIHZ0a1JlbmRlcmlu Z0ZyZWVUeXBlIHZ0a1JlbmRlcmluZ09wZW5HTDIpCi0rICAgICAgICBlbHNlKCkKLSsgICAgICAg ICAgICAjIFZUSyA5IGNoYW5nZWQgaXRzIGNvbXBvbmVudCBuYW1lcwotKyAgICAgICAgICAgIHNl dCAoVlRLX0NPTVBPTkVOVFMKLSsgICAgICAgICAgICAgICAgQ29tbW9uQ29yZQotKyAgICAgICAg ICAgICAgICBDb21tb25EYXRhTW9kZWwKLSsgICAgICAgICAgICAgICAgRmlsdGVyc1ZlcmRpY3QK LSsgICAgICAgICAgICAgICAgSU9YTUwKLSsgICAgICAgICAgICAgICAgRmlsdGVyc0NvcmUKLSsg ICAgICAgICAgICAgICAgRmlsdGVyc0dlbmVyYWwKLSsgICAgICAgICAgICAgICAgSU9MZWdhY3kK LSsgICAgICAgICAgICAgICAgRmlsdGVyc0V4dHJhY3Rpb24KLSsgICAgICAgICAgICAgICAgRmls dGVyc1NvdXJjZXMKLSsgICAgICAgICAgICAgICAgRmlsdGVyc0dlb21ldHJ5Ci0rICAgICAgICAg ICAgKQotKyAgICAgICAgICAgIGZpbmRfcGFja2FnZShWVEsgQ09NUE9ORU5UUyBDb21tb25Db3Jl IFJFUVVJUkVEIE5PX01PRFVMRSkKLSsgICAgICAgICAgICBsaXN0KEFQUEVORCBWVEtfQ09NUE9O RU5UUyBJT01QSVBhcmFsbGVsIFBhcmFsbGVsTVBJIGhkZjUgRmlsdGVyc1BhcmFsbGVsRElZMiBS ZW5kZXJpbmdDb3JlIEludGVyYWN0aW9uU3R5bGUgUmVuZGVyaW5nRnJlZVR5cGUgUmVuZGVyaW5n T3BlbkdMMikKLSsgICAgICAgIGVuZGlmKCkKLSsKLSsgICAgICAgICMgY2hlY2sgd2hpY2ggbW9k dWxlcyBhcmUgYXZhaWxhYmxlCi0gICAgICAgICAgICAgZm9yZWFjaChfbW9kdWxlICR7VlRLX0NP TVBPTkVOVFN9KQotKyAgICAgICAgICAgIGlmKCR7VlRLX01BSk9SX1ZFUlNJT059IExFU1MgOSkK LSAgICAgICAgICAgICAgICAgbGlzdCAoRklORCBWVEtfTU9EVUxFU19FTkFCTEVEICR7X21vZHVs ZX0gX2luZGV4KQotKyAgICAgICAgICAgIGVsc2UoKQotKyAgICAgICAgICAgICAgICBsaXN0IChG SU5EIFZUS19BVkFJTEFCTEVfQ09NUE9ORU5UUyAke19tb2R1bGV9IF9pbmRleCkKLSsgICAgICAg ICAgICBlbmRpZigpCi0gICAgICAgICAgICAgICAgIGlmICgke19pbmRleH0gR1JFQVRFUiAtMSkK LSAgICAgICAgICAgICAgICAgICAgIGxpc3QoQVBQRU5EIEFWQUlMQUJMRV9WVEtfQ09NUE9ORU5U UyAke19tb2R1bGV9KQotICAgICAgICAgICAgICAgICBlbmRpZigpCi0gICAgICAgICAgICAgZW5k Zm9yZWFjaCgpCi0tICAgICAgICBlbmRpZigpCi0gCi0gICAgICAgICAjIGRvbid0IGNoZWNrIFZF UlNJT04gNiBhcyB0aGlzIHdvdWxkIGV4Y2x1ZGUgVkVSU0lPTiA3Ci0gICAgICAgICBpZihBVkFJ TEFCTEVfVlRLX0NPTVBPTkVOVFMpCmRpZmYgLS1naXQgYS9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hl cy8xNTMtbGltaXRzLmgtZm9yLW11c2wucGF0Y2ggYi9zcmNwa2dzL2ZyZWVjYWQvcGF0Y2hlcy8x NTMtbGltaXRzLmgtZm9yLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi41OWIwZmYxNzhlZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2ZyZWVj YWQvcGF0Y2hlcy8xNTMtbGltaXRzLmgtZm9yLW11c2wucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAor LS0tIGEvc3JjL0ZDQ29uZmlnLmguT1JJRworKysrIGIvc3JjL0ZDQ29uZmlnLmgKK0BAIC0zMjEs NCArMzIxLDEwIEBACisgLy8jCWRlZmluZSBfUHJlQ29tcF8gICAgICAgICAgICAgICAgICAvLyB1 c2UgcHJlY29tcGlsZWQgaGVhZGVyDQorICNlbmRpZg0KKyANCisrI2lmIGRlZmluZWQoRkNfT1Nf TElOVVgpIHx8IGRlZmluZWQoRkNfT1NfTUFDT1NYKSB8fCBkZWZpbmVkKEZDX09TX0JTRCkNCisr I2lmICghZGVmaW5lZChQQVRIX01BWCkpDQorKyNpbmNsdWRlIDxsaW1pdHMuaD4NCisrI2VuZGlm DQorKyNlbmRpZg0KKysNCisgI2VuZGlmIC8vRkNfQ09ORklHX0gNCmRpZmYgLS1naXQgYS9zcmNw a2dzL2ZyZWVjYWQvcGF0Y2hlcy8xNTQtcmV2ZXJ0LWd1aS10bXAtcmVkaXJlY3Qtc3RkZXJyLnBh dGNoIGIvc3JjcGtncy9mcmVlY2FkL3BhdGNoZXMvMTU0LXJldmVydC1ndWktdG1wLXJlZGlyZWN0 LXN0ZGVyci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI4 NzE3OWEyM2MzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZnJlZWNhZC9wYXRjaGVzLzE1 NC1yZXZlcnQtZ3VpLXRtcC1yZWRpcmVjdC1zdGRlcnIucGF0Y2gKQEAgLTAsMCArMSw3MyBAQAor c2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9GcmVlQ0FEL0ZyZWVDQUQvY29tbWl0L2NmZTk0YjAwZDM0 MzRmM2UyYzhiNTExNGQyOTA5ZjYyOGMzMzBmYTgjY29tbWl0Y29tbWVudC03MTQxMzQwNworCit1 cHN0cmVhbTogeWVzCisKK0Zyb20gN2IzNzdhMjE2YjkxODU5NjBlNGNlZTk4MGE2NTA0ZGMxYTc1 NWY1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHdtYXllciA8d21heWVyQHVzZXJz LnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6IFdlZCwgMjkgSnVuIDIwMjIgMTU6MTk6MTggKzAyMDAK K1N1YmplY3Q6IFtQQVRDSF0gR3VpOiByZW1vdmUgd29ya2Fyb3VuZCBmb3Igc3BuYXYgMC4yMyBk dWUgdG8gYnVpbGQgZmFpbHVyZQorIHdpdGggbXVzbCBsaWJjCisKKy0tLQorIHNyYy9HdWkvM0Rj b25uZXhpb24vR3VpTmF0aXZlRXZlbnRMaW51eC5jcHAgfCAyNyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAxIGZpbGUgY2hhbmdlZCwgMjcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMv R3VpLzNEY29ubmV4aW9uL0d1aU5hdGl2ZUV2ZW50TGludXguY3BwIGIvc3JjL0d1aS8zRGNvbm5l eGlvbi9HdWlOYXRpdmVFdmVudExpbnV4LmNwcAoraW5kZXggN2YwZGRkNzVkLi40NTVlY2UwYjMg MTAwNjQ0CistLS0gYS9zcmMvR3VpLzNEY29ubmV4aW9uL0d1aU5hdGl2ZUV2ZW50TGludXguY3Bw CisrKysgYi9zcmMvR3VpLzNEY29ubmV4aW9uL0d1aU5hdGl2ZUV2ZW50TGludXguY3BwCitAQCAt MjEsNDIgKzIxLDE3IEBACisgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKyAjaW5jbHVkZSA8RkND b25maWcuaD4KKy0jaW5jbHVkZSA8Y3N0ZGlvPgorIAorICNpbmNsdWRlICJHdWlOYXRpdmVFdmVu dExpbnV4LmgiCisgCisgI2luY2x1ZGUgIkd1aUFwcGxpY2F0aW9uTmF0aXZlRXZlbnRBd2FyZS5o IgorICNpbmNsdWRlIDxCYXNlL0NvbnNvbGUuaD4KKy0jaW5jbHVkZSA8QmFzZS9GaWxlSW5mby5o PgorICNpbmNsdWRlIDxRTWFpbldpbmRvdz4KKyAKKyAjaW5jbHVkZSA8UVNvY2tldE5vdGlmaWVy PgorIAorICNpbmNsdWRlIDxzcG5hdi5oPgorIAorLW5hbWVzcGFjZSB7CistY2xhc3MgUmVkaXJl Y3RTdGRFcnIKKy17CistcHVibGljOgorLSAgICBSZWRpcmVjdFN0ZEVycigpCistICAgICAgICA6 IGZpKEJhc2U6OkZpbGVJbmZvOjpnZXRUZW1wRmlsZU5hbWUoKSkKKy0gICAgICAgICwgZmlsZShz dGRlcnIpCistICAgIHsKKy0gICAgICAgIHN0ZGVyciA9IGZvcGVuKGZpLmZpbGVQYXRoKCkuY19z dHIoKSwgInciKTsKKy0gICAgfQorLSAgICB+UmVkaXJlY3RTdGRFcnIoKQorLSAgICB7CistICAg ICAgICBmY2xvc2Uoc3RkZXJyKTsKKy0gICAgICAgIGZpLmRlbGV0ZUZpbGUoKTsKKy0gICAgICAg IHN0ZGVyciA9IGZpbGU7CistICAgIH0KKy0KKy1wcml2YXRlOgorLSAgICBCYXNlOjpGaWxlSW5m byBmaTsKKy0gICAgRklMRSogZmlsZTsKKy19OworLX0KKy0KKyBHdWk6Okd1aU5hdGl2ZUV2ZW50 OjpHdWlOYXRpdmVFdmVudChHdWk6OkdVSUFwcGxpY2F0aW9uTmF0aXZlRXZlbnRBd2FyZSAqYXBw KQorIDogR3VpQWJzdHJhY3ROYXRpdmVFdmVudChhcHApCisgeworQEAgLTcyLDggKzQ3LDYgQEAg R3VpOjpHdWlOYXRpdmVFdmVudDo6fkd1aU5hdGl2ZUV2ZW50KCkKKyAKKyB2b2lkIEd1aTo6R3Vp TmF0aXZlRXZlbnQ6OmluaXRTcGFjZWJhbGwoUU1haW5XaW5kb3cgKndpbmRvdykKKyB7CistICAg IC8vIHRtcC4gcmVkaXJlY3Qgc3RkZXJyIHRvIGEgZmlsZSB0byBzdXBwcmVzcyBhbiBlcnJvciBt ZXNzYWdlIGZyb20gc3BuYXZfb3BlbigpCistICAgIFJlZGlyZWN0U3RkRXJyIGVycjsKKyAgICAg UV9VTlVTRUQod2luZG93KQorICAgICBpZiAoc3BuYXZfb3BlbigpID09IC0xKSB7CisgICAgICAg ICBCYXNlOjpDb25zb2xlKCkuTG9nKCJDb3VsZG4ndCBjb25uZWN0IHRvIHNwYWNlbmF2IGRhZW1v bi4gUGxlYXNlIGlnbm9yZSBpZiB5b3UgZG9uJ3QgaGF2ZSBhIHNwYWNlbW91c2UuXG4iKTsKKy0t IAorMi4zNy4xCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZnJlZWNhZC90ZW1wbGF0ZSBiL3NyY3Br Z3MvZnJlZWNhZC90ZW1wbGF0ZQppbmRleCAxZTJhZWMwMjRmZDcuLmU5YzY5N2FkYmUxYSAxMDA2 NDQKLS0tIGEvc3JjcGtncy9mcmVlY2FkL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZnJlZWNhZC90 ZW1wbGF0ZQpAQCAtMSw2ICsxLDYgQEAKICMgVGVtcGxhdGUgZmlsZSBmb3IgJ2ZyZWVjYWQnCiBw a2duYW1lPWZyZWVjYWQKLXZlcnNpb249MC4xOS40Cit2ZXJzaW9uPTAuMjAuMQogcmV2aXNpb249 MQogd3Jrc3JjPSJGcmVlQ0FELSR7dmVyc2lvbn0iCiBidWlsZF9zdHlsZT1jbWFrZQpAQCAtMjMs MTAgKzIzLDkgQEAgbWFrZWRlcGVuZHM9InB5dGhvbjMtZGV2ZWwgYm9vc3QtZGV2ZWwgbGlieGVy Y2VzLWMtZGV2ZWwgemxpYi1kZXZlbCBvY2N0LWRldmVsCiAgY29pbjMtZGV2ZWwgbGlic2hpYm9r ZW4yLWRldmVsIGxpYnNwbmF2LWRldmVsIHB5c2lkZTItdG9vbHMKICBsaWJsejQtZGV2ZWwgbGli cHlzaWRlMi1weXRob24zLWRldmVsIHB5dGhvbjMtbWF0cGxvdGxpYiBuZXRjZGYtZGV2ZWwKICBq c29uY3BwLWRldmVsIHF0NS1kZXZlbCBxdDUtc3ZnLWRldmVsIHF0NS10b29scy1kZXZlbCBxdDUt d2Via2l0LWRldmVsCi0gcXQ1LXhtbHBhdHRlcm5zLWRldmVsIGNvaW4zLWRvYyBnbGV3LWRldmVs IgorIHF0NS14bWxwYXR0ZXJucy1kZXZlbCBjb2luMy1kb2MgZ2xldy1kZXZlbCBweXRob24zLXBp dnkiCiAKLSMgRnJlZUNBRCBoZWxwOiBxdDUvYXNzaXN0YW50IHdpdGggU1FMaXRlIHN0b3JhZ2UK LWRlcGVuZHM9InB5dGhvbjMtbWF0cGxvdGxpYiBweXRob24zLXB5c2lkZTIgcXQ1LXBsdWdpbi1z cWxpdGUgcHl0aG9uMy1waXZ5IgorZGVwZW5kcz0icHl0aG9uMy1tYXRwbG90bGliIHB5dGhvbjMt cHlzaWRlMi13ZWJlbmdpbmUgcHl0aG9uMy1waXZ5IgogCiBweXRob25fdmVyc2lvbj0zCiBweWNv bXBpbGVfZGlycz0idXNyL2xpYi8ke3BrZ25hbWV9L01vZCIKQEAgLTM2LDcgKzM1LDcgQEAgbWFp bnRhaW5lcj0ieW9waXRvIDxwaWVycmUuYm91cmdpbkBmcmVlLmZyPiIKIGxpY2Vuc2U9IkxHUEwt Mi4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vZnJlZWNhZHdlYi5vcmcvIgogZGlzdGZp bGVzPSJodHRwczovL2dpdGh1Yi5jb20vRnJlZUNBRC9GcmVlQ0FEL2FyY2hpdmUvJHt2ZXJzaW9u fS50YXIuZ3oiCi1jaGVja3N1bT1lNDBhMWMzNDM5NTZlMTNjNTZjYzg1NzhkMDI1YWU4M2Q2OGQ5 ZDIwYWNkYTE3MzI5NTNiYzhhMzg4M2U5NzIyCitjaGVja3N1bT03MGMxNWY3YzFjNjc2ZTMzNzZj ZGMyYTY2YzEzNjAzMGM1NTAyZjk4MDI5MzVlNWI2MjZjYThjZTNmODgxMmVkCiAKIGlmIFsgIiRY QlBTX1RBUkdFVF9MSUJDIiA9IG11c2wgXTsgdGhlbgogCW1ha2VkZXBlbmRzKz0iIGxpYmV4ZWNp bmZvLWRldmVsIgo= --===============3582828229128987507==--