From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from inbox.vuxu.org (localhost [IPv6:::1]) by inbox.vuxu.org (OpenSMTPD) with ESMTP id 88e1c8ff for ; Mon, 11 Nov 2019 19:23:28 +0000 (UTC) Content-Type: multipart/mixed; boundary="===============5920027440691467542==" MIME-Version: 1.0 Subject: Re: [PR PATCH] [Updated] [WIP] qt5 update to 5.14.0 To: ml@inbox.vuxu.org From: voidlinux-github@inbox.vuxu.org Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Mon, 11 Nov 2019 20:23:28 +0100 Message-ID: <20191111192328.3kAkuN4i9Y8x1ZbZoJzdE7rgE__FH_9NMKE3sgci16o@z> GitHub notification mails are now in MIME to allow UTF8. --===============5920027440691467542== MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgcXQ1LjE0Cmh0dHBzOi8vZ2l0aHViLmNvbS92b2lk LWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8xNTMxMAoKW1dJUF0gcXQ1IHVwZGF0ZSB0byA1LjE0 LjAKIyBUZXN0ZWQgb24NCi0gW3hdIHg4Nl82NCAoY29tcGlsZWQgYW5kIHJ1bnRpbWUpDQotIFt4 XSB4ODZfNjQtbXVzbCAoY29tcGlsZWQgd2l0aG91dCB3ZWJlbmdpbmUpDQotIFt4XSBpNjg2IChj b21waWxlZCkNCi0gWyBdIGFybXY3bC1tdXNsDQotIFsgXSBhcm12N2wgDQotIFsgXSBhcm12Nmwt bXVzbA0KLSBbeF0gYXJtdjZsIChjb21waWxlZCB3aXRob3V0IHdlYmVuZ2luZSkNCi0gW3hdIGFh cmNoNjQtbXVzbCAoY29tcGlsZWQgd2l0aG91dCB3ZWJlbmdpbmUpDQotIFsgXSBhYXJjaDY0DQot IFsgXSBwcGM2NGxlDQotIFsgXSBwcGM2NGxlLW11c2wNCi0gWyBdIHBwYzY0DQotIFsgXSBwcGM2 NC1tdXNsDQotIFsgXSBwcGMNCi0gWyBdIHBwYy1tdXNsDQojIFRPRE86DQoNCi0gZml4IGNyb3Nz DQotIHNwbGl0IHF0NS13ZWJlbmdpbmUNCi0gcmViYXNlIHdlYmVuZ2luZSBwcGMgcGF0Y2hlcyBA cTY2IA0KLSBtdXNsIHRoaW5ncyAoPykNCi0gbW9yZSB0aGluZ3MNCi0gYC1uby1mZWF0dXJlLXFk b2NgIGluc3RlYWQgb2YgY3VzdG9tIGBxdHRvb2xzL3NyYy9zcmMucHJvYCA/DQotIHZpc3VhbCBi dWdzIHdpdGggS0RFIFBsYXNtYSAoZS5nLiBsb2dvdXQvc2h1dGRvd24gc2NyZWVuIGJvcmtlZCkN Ci0gZm9yY2UgYnVpbGQgcXQ1LWRlc2lnbmVyIGZvciBjcm9zcyBhZ2FpbgoKQSBwYXRjaCBmaWxl IGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzE1 MzEwLnBhdGNoIGlzIGF0dGFjaGVk --===============5920027440691467542== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5.14-15310.patch" RnJvbSA3NTg1NjM1ZjY3NDk1ZGI4MzE2ZDM0YTUxYWJlMmM0NjU4NWVjNzE4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBGcmksIDEx IE9jdCAyMDE5IDAwOjU5OjE4ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwMS8xMV0gcXQ1OiB1cGRh dGUgdG8gNS4xNC4wYmV0YTEuCgotLS0KIGNvbW1vbi9zaGxpYnMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgIDMgKwogLi4uL3F0NS9wYXRjaGVzLzAwMjctcmVtb3ZlLWdsaWJj LWNoZWNrLnBhdGNoIHwgICAxMyAtCiAuLi4vMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9pZC5w YXRjaCAgICAgICAgfCAgIDE4ICstCiAuLi4vcXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNp bmZvLnBhdGNoICAgfCAgIDEzIC0KIC4uLi9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2 NC5wYXRjaCAgICB8ICAgMjAgLQogLi4uL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21pdW0tcHBjNjRs ZS5wYXRjaCAgIHwgNDI2NyAtLS0tLS0tLS0tLS0tLS0tLQogLi4uL3BhdGNoZXMvMDA5MS1jaHJv bWl1bS1wcGM2NC1tdXNsLnBhdGNoICAgIHwgIDE0MSAtCiAuLi4vcXQ1L3BhdGNoZXMvMDA5Mi1j aHJvbWl1bS1wcGM2NC1iZS5wYXRjaCAgfCAyOTcwIC0tLS0tLS0tLS0tLQogLi4uL3F0NS9wYXRj aGVzLzAwOTMtY2hyb21pdW0tdjgtZWxmdjIucGF0Y2ggIHwgICA0MyAtCiAuLi4vMDA5NC1iaWct ZW5kaWFuLXNraWEtcG9ydGFibGUucGF0Y2ggICAgICAgfCAgIDE3IC0KIC4uLi8wMTAwLXF0NS13 ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoICAgICAgICB8ICAgNDIgKwogLi4uLzAxMDEtcXQ1LXdl YmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoICAgICAgIHwgICAzMiArCiBzcmNwa2dzL3F0NS90ZW1w bGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICA5ICstCiAxMyBmaWxlcyBjaGFuZ2Vk LCA5NiBpbnNlcnRpb25zKCspLCA3NDkyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNy1yZW1vdmUtZ2xpYmMtY2hlY2sucGF0Y2gKIGRlbGV0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwODktd2ViZW5naW5lLXBwYzY0LnBh dGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkwLWNocm9taXVt LXBwYzY0bGUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAw OTEtY2hyb21pdW0tcHBjNjQtbXVzbC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDA5Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5My1jaHJvbWl1bS12OC1lbGZ2Mi5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEt cG9ydGFibGUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAx MDAtcXQ1LXdlYmVuZ2luZS1saW51eC01LjIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3F0NS9wYXRjaGVzLzAxMDEtcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoCgpkaWZm IC0tZ2l0IGEvY29tbW9uL3NobGlicyBiL2NvbW1vbi9zaGxpYnMKaW5kZXggNzVlNTQxOGI2ODcu LjY2YTJlOWIzOWQ1IDEwMDY0NAotLS0gYS9jb21tb24vc2hsaWJzCisrKyBiL2NvbW1vbi9zaGxp YnMKQEAgLTE4NTgsNiArMTg1OCw3IEBAIGxpYlF0NTNEUXVpY2tTY2VuZTJELnNvLjUgcXQ1LTNk LTUuMTAuMV8xCiBsaWJRdDUzREV4dHJhcy5zby41IHF0NS0zZC01LjYuMF8xCiBsaWJRdDUzRFF1 aWNrRXh0cmFzLnNvLjUgcXQ1LTNkLTUuNi4wXzEKIGxpYlF0NTNEUXVpY2tBbmltYXRpb24uc28u NSBxdDUtM2QtNS4xMC4xXzEKK2xpYlF0NTNEUXVpY2tJbnB1dC5zby41IHF0NS0zZC01LjEzLjBf MQogbGliUXQ1Q2hhcnRzLnNvLjUgcXQ1LWNoYXJ0cy01LjcuMV8xCiBsaWJRdDVEYXRhVmlzdWFs aXphdGlvbi5zby41IHF0NS1kYXRhdmlzM2QtNS43LjFfMQogbGliUXQ1R2FtZXBhZC5zby41IHF0 NS1nYW1lcGFkLTUuNy4xXzEKQEAgLTE4NzAsNiArMTg3MSw4IEBAIGxpYlF0NVF1aWNrVGVzdC5z by41IHF0NS1kZWNsYXJhdGl2ZS01LjYuMF8xCiBsaWJRdDVRdWlja1dpZGdldHMuc28uNSBxdDUt ZGVjbGFyYXRpdmUtNS42LjBfMQogbGliUXQ1UXVpY2tQYXJ0aWNsZXMuc28uNSBxdDUtZGVjbGFy YXRpdmUtNS42LjBfMQogbGliUXQ1UXVpY2tTaGFwZXMuc28uNSBxdDUtZGVjbGFyYXRpdmUtNS4x Mi4xXzEKK2xpYlF0NVFtbE1vZGVscy5zby41IHF0NS1kZWNsYXJhdGl2ZS01LjE0LjBfMQorbGli UXQ1UW1sV29ya2VyU2NyaXB0LnNvLjUgcXQ1LWRlY2xhcmF0aXZlLTUuMTQuMF8xCiBsaWJRdDVR dWlja0NvbnRyb2xzMi5zby41IHF0NS1xdWlja2NvbnRyb2xzMi01LjcuMV8xCiBsaWJRdDVRdWlj a1RlbXBsYXRlczIuc28uNSBxdDUtcXVpY2tjb250cm9sczItNS43LjFfMQogbGliUXQ1UG9zaXRp b25pbmcuc28uNSBxdDUtbG9jYXRpb24tNS42LjBfMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDI3LXJlbW92ZS1nbGliYy1jaGVjay5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAyNy1yZW1vdmUtZ2xpYmMtY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGZkMGFiODQ5YzAxLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAwMjctcmVtb3ZlLWdsaWJjLWNoZWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAs MCBAQAotLS0tIHF0d2ViZW5naW5lL2NvbmZpZy50ZXN0cy9nbGliYy9nbGliYy5jcHAKLSsrKyBx dHdlYmVuZ2luZS9jb25maWcudGVzdHMvZ2xpYmMvZ2xpYmMuY3BwCi1AQCAtMjgsMTAgKzI4LDYg QEAKLSAKLSAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLSAKLS0jaWYgX19HTElCQ19fIDwgMiB8fCBf X0dMSUJDX01JTk9SX18gPCAxNwotLSNlcnJvciBnbGliYyB2ZXJzaW9ucyBiZWxvdyAyLjE3IGFy ZSBub3Qgc3VwcG9ydGVkCi0tI2VuZGlmCi0tCi0gaW50IG1haW4oaW50ICwgY2hhciAqKikgewot ICAgcmV0dXJuIDA7Ci0gfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFy bS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFy bS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNoCmluZGV4IGIxMzI5MGQzY2NkLi43NmRlM2RkNTgz MiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1h bmRyb2lkLnBhdGNoCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Mi1hcm0tdm9pZC1pcy1u b3QtYW5kcm9pZC5wYXRjaApAQCAtMSwxMyArMSwyMyBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRfcGFydHkvb3Blbm1heF9kbC9kbC9CVUlMRC5nbgkyMDE5 LTA0LTA5IDA5OjMxOjE2LjAwMDAwMDAwMCArMDIwMAotKysrIC0JMjAxOS0wNS0wNiAyMzowODow OS41MzczNDY1NDYgKzAyMDAKLUBAIC0yMDYsMTggKzIwNiw2IEBACistLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L29wZW5tYXhfZGwvZGwvQlVJTEQuZ24J MjAxOS0wOS0yMyAxNDoyNDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMTAtMTAgMTg6 MTY6MDUuOTEwNjkwMDU2ICswMjAwCitAQCAtMTYsOSArMTYsNiBAQAorICAgICBpZiAoYXJtX3Vz ZV9uZW9uKSB7CisgICAgICAgIyBFbmFibGUgYnVpbGQtdGltZSBORU9OIHNlbGVjdGlvbi4KKyAg ICAgICBkZWZpbmVzID0gWyAiRExfQVJNX05FT04iIF0KKy0gICAgfSBlbHNlIGlmIChhcm1fb3B0 aW9uYWxseV91c2VfbmVvbikgeworLSAgICAgICMgRW5hYmxlIHJ1bi10aW1lIE5FT04gc2VsZWN0 aW9uLgorLSAgICAgIGRlZmluZXMgPSBbICJETF9BUk1fTkVPTl9PUFRJT05BTCIgXQorICAgICB9 CisgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgIyBFbmFibGUg YnVpbGQtdGltZSBORU9OIHNlbGVjdGlvbi4KK0BAIC0yMDYsMTggKzIwMyw2IEBACiAgICAgICAg InNwL3NyYy9hcm0vYXJtdjcvb214U1BfRkZURndkX1JUb0NDU19GMzJfU2ZzX3MuUyIsCiAgICAg ICAgInNwL3NyYy9hcm0vYXJtdjcvb214U1BfRkZUSW52X0NDU1RvUl9GMzJfU2ZzX3MuUyIsCiAg ICAgIF0KIC0gICAgaWYgKGFybV9vcHRpb25hbGx5X3VzZV9uZW9uKSB7CiAtICAgICAgIyBSdW4t dGltZSBORU9OIGRldGVjdGlvbi4KIC0gICAgICBkZXBzID0gWwotLSAgICAgICAgIi8vdGhpcmRf cGFydHkvYW5kcm9pZF90b29sczpjcHVfZmVhdHVyZXMiLAorLSAgICAgICAgIi8vdGhpcmRfcGFy dHkvYW5kcm9pZF9zZGs6Y3B1X2ZlYXR1cmVzIiwKIC0gICAgICBdCiAtCiAtICAgICAgIyBUbyBn ZXQgdGhlIF9fYW5kcm9pZF9sb2dfcHJpbnQgcm91dGluZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDQ0LXF0LW11c2wtZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRj aGVzLzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaAppbmRleCA5OGYzYTM4NzQ1YS4uYzFjZGI1 MzcyMTIgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNp bmZvLnBhdGNoCisrKyBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZv LnBhdGNoCkBAIC05MiwxNiArOTIsMyBAQAogICAgICAhZGVmaW5lZChPU19BSVgpCiAgICBpZiAo c2V2ZXJpdHlfID09IExPR19GQVRBTCAmJiAhYmFzZTo6ZGVidWc6OkJlaW5nRGVidWdnZWQoKSkg ewogICAgICAvLyBJbmNsdWRlIGEgc3RhY2sgdHJhY2Ugb24gYSBmYXRhbCwgdW5sZXNzIGEgZGVi dWdnZXIgaXMgYXR0YWNoZWQuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9hc3NlcnRpb25zLmNjCTIw MTktMDQtMDkgMDk6MzE6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgLQkyMDE5LTA1LTA2IDIzOjEy OjA3LjA0MDk3NzI1OCArMDIwMAotQEAgLTUxLDggKzUxLDEwIEBACi0gI2lmIGRlZmluZWQoT1Nf TUFDT1NYKSB8fCAoZGVmaW5lZChPU19MSU5VWCkgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykpCi0g I2luY2x1ZGUgPGN4eGFiaS5oPgotICNpbmNsdWRlIDxkbGZjbi5oPgotKyNpZiBkZWZpbmVkKF9f R0xJQkNfXykKLSAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KLSAjZW5kaWYKLSsjZW5kaWYKLSAKLSAj aWYgZGVmaW5lZChPU19BTkRST0lEKQotICNpbmNsdWRlIDxhbmRyb2lkL2xvZy5oPgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDg5LXdlYmVuZ2luZS1wcGM2NC5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDA4OS13ZWJlbmdpbmUtcHBjNjQucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDQwMmQ3ZTJkNjIyLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwODktd2ViZW5naW5lLXBwYzY0LnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsMjAgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25z LnByZgotKysrIHF0d2ViZW5naW5lL21rc3BlY3MvZmVhdHVyZXMvZnVuY3Rpb25zLnByZgotQEAg LTk1LDYgKzk1LDcgQEAKLSAgICAgY29udGFpbnMocXRBcmNoLCAiYXJtNjQiKTogcmV0dXJuKGFy bTY0KQotICAgICBjb250YWlucyhxdEFyY2gsICJtaXBzIik6IHJldHVybihtaXBzZWwpCi0gICAg IGNvbnRhaW5zKHF0QXJjaCwgIm1pcHM2NCIpOiByZXR1cm4obWlwczY0ZWwpCi0rICAgIGNvbnRh aW5zKHF0QXJjaCwgInBvd2VyNjQiKTogcmV0dXJuKHBwYzY0KQotICAgICByZXR1cm4odW5rbm93 bikKLSB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvbWtzcGVjcy9mZWF0dXJlcy9wbGF0Zm9ybS5wcmYK LSsrKyBxdHdlYmVuZ2luZS9ta3NwZWNzL2ZlYXR1cmVzL3BsYXRmb3JtLnByZgotQEAgLTgyLDYg KzgyLDcgQEAKLSAgICAgY29udGFpbnMoUVRfQVJDSCwgImFybSIpfGNvbnRhaW5zKFFUX0FSQ0gs ICJhcm02NCIpOiByZXR1cm4odHJ1ZSkKLSAgICAgY29udGFpbnMoUVRfQVJDSCwgIm1pcHMiKTog cmV0dXJuKHRydWUpCi0gIyAgICAgY29udGFpbnMoUVRfQVJDSCwgIm1pcHM2NCIpOiByZXR1cm4o dHJ1ZSkKLSsgICAgY29udGFpbnMoUVRfQVJDSCwgInBvd2VyNjQiKTogcmV0dXJuKHRydWUpCi0g Ci0gICAgIHNraXBCdWlsZCgiUXRXZWJFbmdpbmUgY2FuIG9ubHkgYmUgYnVpbHQgZm9yIHg4Niwg eDg2LTY0LCBBUk0sIEFhcmNoNjQsIGFuZCBNSVBTZWwgYXJjaGl0ZWN0dXJlcy4iKQotICAgICBy ZXR1cm4oZmFsc2UpCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTAtY2hyb21p dW0tcHBjNjRsZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MC1jaHJvbWl1bS1wcGM2 NGxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGQ4ZDNlZmFhYy4uMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkwLWNocm9taXVtLXBwYzY0bGUu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MjY3ICswLDAgQEAKLVRoaXMgaXMgYSBiYXNlIHBh dGNoIHRoYXQgYWRkcyBzdXBwb3J0IGZvciBwcGM2NGxlIGdsaWJjLiBCaWcgZW5kaWFuIGFuZCBt dXNsCi1zdXBwb3J0IGlzIGFkZGVkIGluIGV4dHJhIHBhdGNoZXMgYWZ0ZXJ3YXJkcy4KLQotUGlu ZyBxNjYgaWYgeW91J3JlIHVwZGF0aW5nIHF0NSBhbmQgdGhlIHBhdGNoIGRvZXMgbm90IGFwcGx5 IGFueW1vcmUuCi0KLVNvdXJjZTogaHR0cHM6Ly93aWtpLnJhcHRvcmNzLmNvbS93L2luZGV4LnBo cD90aXRsZT1Qb3J0aW5nL0Nocm9taXVtCi1VcHN0cmVhbTogQ3VycmVudGx5IGJlaW5nIHN1Ym1p dHRlZAotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2Nh dG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFnZV9hbGxvY2F0b3JfY29uc3RhbnRzLmgKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9wYWdlX2FsbG9jYXRvcl9jb25zdGFudHMuaAotQEAgLTEwLDcgKzEwLDcgQEAK LSAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2Ugewot LSNpZiBkZWZpbmVkKE9TX1dJTikKLSsjaWYgZGVmaW5lZChPU19XSU4pIHx8IGRlZmluZWQoQVJD SF9DUFVfUFBDNjQpCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3Jh bnVsYXJpdHlTaGlmdCA9IDE2OyAgLy8gNjRLQgotICNlbGlmIGRlZmluZWQoX01JUFNfQVJDSF9M T09OR1NPTikKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrUGFnZUFsbG9jYXRpb25HcmFudWxh cml0eVNoaWZ0ID0gMTQ7ICAvLyAxNktCCi1AQCAtMjYsNiArMjYsMTAgQEAgc3RhdGljIGNvbnN0 ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlCYXNlTWFzayA9Ci0gCi0gI2lm IGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBr U3lzdGVtUGFnZVNpemUgPSAxNjM4NDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQot Ky8vIFRPRE86IG1vZGVybiBwcGM2NCBjYW4gZG8gNGsgYW5kIDY0ayBwYWdlIHNpemVzCi0rLy8g Zm9yIG5vdywgNjRrIGlzIGFzc3VtZWQKLStzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVt UGFnZVNpemUgPSA2NTUzNjsKLSAjZWxzZQotIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtTeXN0 ZW1QYWdlU2l6ZSA9IDQwOTY7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2Fs bG9jX2NvbnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50 cy5oCi1AQCAtMzUsNiArMzUsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRTaGlmdCA9 IChrQWxsb2NhdGlvbkdyYW51bGFyaXR5ID09IDgpID8gMyA6IDI7Ci0gCi0gI2lmIGRlZmluZWQo X01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdl U2hpZnQgPSAxNjsgIC8vIDY0IEtpQgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0r c3RhdGljIGNvbnN0IHNpemVfdCBrUGFydGl0aW9uUGFnZVNoaWZ0ID0gMTg7ICAvLyAyNTYgS2lC Ci0gI2Vsc2UKLSBzdGF0aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNDsg IC8vIDE2IEtpQgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9idWlsZC9kb3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5Ci1AQCAt MTEsNiArMTEsMTAgQEAgaW1wb3J0IHN5cwotIAotIAotIGRlZiBNYWluKGFyZ3MpOgotKyAgIyBJ ZiBgZGlzYWJsZV9uYWNsPTFgIGlzIGluIEdZUF9ERUZJTkVTLCBleGl0Ci0rICBpZiAnZGlzYWJs ZV9uYWNsPTEnIGluIG9zLmVudmlyb24uZ2V0KCdHWVBfREVGSU5FUycsICcnKToKLSsgICAgcmV0 dXJuIDAKLSsKLSAgIHNjcmlwdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRo KF9fZmlsZV9fKSkKLSAgIHNyY19kaXIgPSBvcy5wYXRoLmRpcm5hbWUoc2NyaXB0X2RpcikKLSAg IG5hY2xfZGlyID0gb3MucGF0aC5qb2luKHNyY19kaXIsICduYXRpdmVfY2xpZW50JykKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYnVpbGQvdG9vbGNoYWluL2xpbnV4L0JV SUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL3Rvb2xj aGFpbi9saW51eC9CVUlMRC5nbgotQEAgLTUsNiArNSwxNCBAQAotIGltcG9ydCgiLy9idWlsZC9j b25maWcvc3lzcm9vdC5nbmkiKQotIGltcG9ydCgiLy9idWlsZC90b29sY2hhaW4vZ2NjX3Rvb2xj aGFpbi5nbmkiKQotIAotK2NsYW5nX3Rvb2xjaGFpbigiY2xhbmdfcHBjNjQiKSB7Ci0rICBlbmFi bGVfbGlua2VyX21hcCA9IHRydWUKLSsgIHRvb2xjaGFpbl9hcmdzID0gewotKyAgICBjdXJyZW50 X2NwdSA9ICJwcGM2NCIKLSsgICAgY3VycmVudF9vcyA9ICJsaW51eCIKLSsgIH0KLSt9Ci0rCi0g Y2xhbmdfdG9vbGNoYWluKCJjbGFuZ19hcm0iKSB7Ci0gICB0b29scHJlZml4ID0gImFybS1saW51 eC1nbnVlYWJpaGYtIgotICAgdG9vbGNoYWluX2FyZ3MgPSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlf cGFyYW1zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVu dHMvdXBkYXRlX2NsaWVudC91cGRhdGVfcXVlcnlfcGFyYW1zLmNjCi1AQCAtNTUsNiArNTUsOCBA QCBjb25zdCBjaGFyIGtBcmNoW10gPQotICAgICAibWlwczY0ZWwiOwotICNlbGlmIGRlZmluZWQo X19taXBzX18pCi0gICAgICJtaXBzZWwiOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSsgICAgInBwYzY0IjsKLSAjZWxzZQotICNlcnJvciAidW5rbm93biBhcmNoIgotICNlbmRpZgot QEAgLTEyNyw2ICsxMjksOCBAQCBjb25zdCBjaGFyKiBVcGRhdGVRdWVyeVBhcmFtczo6R2V0TmFj bEFyY2goKSB7Ci0gICByZXR1cm4gIm1pcHMzMiI7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9N SVBTNjRFTCkKLSAgIHJldHVybiAibWlwczY0IjsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0KQotKyAgcmV0dXJuICJwcGM2NCI7Ci0gI2Vsc2UKLSAvLyBOT1RFOiB3aGVuIGFkZGluZyBu ZXcgdmFsdWVzIGhlcmUsIHBsZWFzZSByZW1lbWJlciB0byB1cGRhdGUgdGhlCi0gLy8gY29tbWVu dCBpbiB0aGUgLmggZmlsZSBhYm91dCBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGZyb20gdGhpcyBm dW5jdGlvbi4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50 cy91cGRhdGVfY2xpZW50L3VwZGF0ZV9xdWVyeV9wYXJhbXMuaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3VwZGF0ZV9jbGllbnQvdXBkYXRlX3F1ZXJ5 X3BhcmFtcy5oCi1AQCAtNDUsNyArNDUsNyBAQCBjbGFzcyBVcGRhdGVRdWVyeVBhcmFtcyB7Ci0g ICAvLyBSZXR1cm5zIHRoZSB2YWx1ZSB3ZSB1c2UgZm9yIHRoZSAibmFjbF9hcmNoIiBwYXJhbWV0 ZXIuIE5vdGUgdGhhdCB0aGlzIG1heQotICAgLy8gYmUgZGlmZmVyZW50IGZyb20gdGhlICJhcmNo IiBwYXJhbWV0ZXIgYWJvdmUgKGUuZy4gb25lIG1heSBiZSAzMi1iaXQgYW5kCi0gICAvLyB0aGUg b3RoZXIgNjQtYml0KS4gUG9zc2libGUgcmV0dXJuIHZhbHVlcyBpbmNsdWRlOiAieDg2LTMyIiwg Ing4Ni02NCIsCi0tICAvLyAiYXJtIiwgYW5kICJtaXBzMzIiLgotKyAgLy8gImFybSIsICJtaXBz MzIiLCBhbmQgInBwYzY0Ii4KLSAgIHN0YXRpYyBjb25zdCBjaGFyKiBHZXROYWNsQXJjaCgpOwot IAotICAgLy8gUmV0dXJucyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIENocm9tZS9DaHJvbWl1bS4K LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJlcy5n bmkKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9mZWF0dXJl cy5nbmkKLUBAIC0xMiw2ICsxMiw2IEBAIHVzZV9zZWNjb21wX2JwZiA9Ci0gICAgIChpc19saW51 eCB8fCBpc19hbmRyb2lkKSAmJgotICAgICAoY3VycmVudF9jcHUgPT0gIng4NiIgfHwgY3VycmVu dF9jcHUgPT0gIng2NCIgfHwgY3VycmVudF9jcHUgPT0gImFybSIgfHwKLSAgICAgIGN1cnJlbnRf Y3B1ID09ICJhcm02NCIgfHwgY3VycmVudF9jcHUgPT0gIm1pcHNlbCIgfHwKLS0gICAgIGN1cnJl bnRfY3B1ID09ICJtaXBzNjRlbCIpCi0rICAgICBjdXJyZW50X2NwdSA9PSAibWlwczY0ZWwiIHx8 IGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpCi0gCi0gdXNlX3NlY2NvbXBfYnBmID0gdXNlX3NlY2Nv bXBfYnBmIHx8IGlzX25hY2xfbm9uc2ZpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9CVUlMRC5nbgotQEAgLTQxNiw2ICs0MTYsOCBAQCBj b21wb25lbnQoInNhbmRib3hfc2VydmljZXMiKSB7Ci0gCi0gc291cmNlX3NldCgic2FuZGJveF9z ZXJ2aWNlc19oZWFkZXJzIikgewotICAgc291cmNlcyA9IFsKLSsgICAgInN5c3RlbV9oZWFkZXJz L3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiLAotKyAgICAic3lzdGVtX2hlYWRlcnMvcHBjNjRfbGlu dXhfdWNvbnRleHQuaCIsCi0gICAgICJzeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxs cy5oIiwKLSAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oIiwKLSAgICAg InN5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIiwKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxf cmFuZ2VzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKLUBAIC01NSw2ICs1NSwxMyBAQAot ICNkZWZpbmUgTUFYX1BVQkxJQ19TWVNDQUxMIDI3OXUKLSAjZGVmaW5lIE1BWF9TWVNDQUxMIE1B WF9QVUJMSUNfU1lTQ0FMTAotIAotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsKLSsj aW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotKyNkZWZpbmUgTUlOX1NZU0NBTEwgMHUKLSsjZGVmaW5l IE1BWF9QVUJMSUNfU1lTQ0FMTCAzODZ1Ci0rI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElD X1NZU0NBTEwKLSsKLSAjZWxzZQotICNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgot ICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAotQEAgLTE2 LDYgKzE2LDkgQEAKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAvLyBzeXMvdXNlci5oIGluIGVn bGliYyBtaXNzZXMgc2l6ZV90IGRlZmluaXRpb24KLSAjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKy8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qgb24g cHBjNjQKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlmCi0gI2Vu ZGlmCi0gCi1AQCAtMzQ2LDYgKzM0OSw1MSBAQCBzdHJ1Y3QgcmVnc19zdHJ1Y3QgewotICNkZWZp bmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5yZWdzWzNdCi0gI2RlZmluZSBTRUND T01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNF0KLSAjZGVmaW5lIFNFQ0NPTVBfUFRf UEFSTTYoX3JlZ3MpIChfcmVncykucmVnc1s1XQotKwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotK3R5cGVkZWYgc3RydWN0IHB0X3Jl Z3MgcmVnc19zdHJ1Y3Q7Ci0rCi0rI2lmZGVmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4KLSsjZGVm aW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0TEUKLSsjZWxzZQotKyNkZWZpbmUgU0VD Q09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjQKLSsjZW5kaWYKLSsKLSsjZGVmaW5lIFNFQ0NPTVBf UkVHKF9jdHgsIF9yZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVnXSkKLSsK LSsjZGVmaW5lIFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0rI2Rl ZmluZSBTRUNDT01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKLSsjZGVmaW5l IFNFQ0NPTVBfSVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKLSsjZGVmaW5l IFNFQ0NPTVBfUEFSTTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKLSsjZGVmaW5lIFNFQ0NP TVBfUEFSTTIoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKLSsjZGVmaW5lIFNFQ0NPTVBfUEFS TTMoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNSkKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTQoX2N0 eCkgU0VDQ09NUF9SRUcoX2N0eCwgNikKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTUoX2N0eCkgU0VD Q09NUF9SRUcoX2N0eCwgNykKLSsjZGVmaW5lIFNFQ0NPTVBfUEFSTTYoX2N0eCkgU0VDQ09NUF9S RUcoX2N0eCwgOCkKLSsKLSsjZGVmaW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihzdHJ1Y3Qg YXJjaF9zZWNjb21wX2RhdGEsIG5yKSkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFggKG9mZnNl dG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCi0rI2RlZmluZSBTRUNDT01QX0lQ X01TQl9JRFggXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1 Y3Rpb25fcG9pbnRlcikgKyA0KQotKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwKLSsgIChv ZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsg MCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwKLSsgIChvZmZzZXRvZihzdHJ1 Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQotKyNkZWZpbmUgU0VD Q09NUF9BUkdfTFNCX0lEWChucikgXAotKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBf ZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCi0rCi0rI2RlZmluZSBTRUNDT01QX1BUX1JFU1VM VChfcmVncykgKF9yZWdzKS5ncHJbM10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfU1lTQ0FMTChfcmVn cykgKF9yZWdzKS5ncHJbMF0KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfSVAoX3JlZ3MpIChfcmVncyku bmlwCi0rI2RlZmluZSBTRUNDT01QX1BUX1BBUk0xKF9yZWdzKSAoX3JlZ3MpLmdwclszXQotKyNk ZWZpbmUgU0VDQ09NUF9QVF9QQVJNMihfcmVncykgKF9yZWdzKS5ncHJbNF0KLSsjZGVmaW5lIFNF Q0NPTVBfUFRfUEFSTTMoX3JlZ3MpIChfcmVncykuZ3ByWzVdCi0rI2RlZmluZSBTRUNDT01QX1BU X1BBUk00KF9yZWdzKSAoX3JlZ3MpLmdwcls2XQotKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShf cmVncykgKF9yZWdzKS5ncHJbN10KLSsjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3MpIChf cmVncykuZ3ByWzhdCi0rCi0gI2Vsc2UKLSAjZXJyb3IgVW5zdXBwb3J0ZWQgdGFyZ2V0IHBsYXRm b3JtCi0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L2Jhc2VsaW5lX3BvbGljeS5jYwotQEAgLTg3LDcgKzg3LDggQEAgYm9vbCBJc0Jhc2VsaW5lUG9s aWN5V2F0Y2hlZChpbnQgc3lzbm8pIHsKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcmN0bChz eXNubykgfHwKLSAgICAgICAgICBTeXNjYWxsU2V0czo6SXNQcm9jZXNzR3JvdXBPclNlc3Npb24o c3lzbm8pIHx8Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChk ZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMp KSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgICAgICBTeXNjYWxsU2V0 czo6SXNTb2NrZXRDYWxsKHN5c25vKSB8fAotICNlbmRpZgotICNpZiBkZWZpbmVkKF9fYXJtX18p Ci1AQCAtMTkwLDcgKzE5MSw3IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQg ZnNfZGVuaWVkX2Vycm5vLAotICAgfQotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChf X2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotICAgaWYgKHN5c25vID09IF9fTlJfbW1hcCkKLSAgICAgcmV0dXJuIFJlc3RyaWN0 TW1hcEZsYWdzKCk7Ci0gI2VuZGlmCi1AQCAtMjA4LDcgKzIwOSw3IEBAIFJlc3VsdEV4cHIgRXZh bHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAotICAgICByZXR1cm4gUmVzdHJp Y3RQcmN0bCgpOwotIAotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1f XykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQot KyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBp ZiAoc3lzbm8gPT0gX19OUl9zb2NrZXRwYWlyKSB7Ci0gICAgIC8vIE9ubHkgYWxsb3cgQUZfVU5J WCwgUEZfVU5JWC4gQ3Jhc2ggaWYgYW55dGhpbmcgZWxzZSBpcyBzZWVuLgotICAgICBzdGF0aWNf YXNzZXJ0KEFGX1VOSVggPT0gUEZfVU5JWCwKLUBAIC0yNDgsNyArMjQ5LDggQEAgUmVzdWx0RXhw ciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJybm8sCi0gICB9Ci0gCi0gI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIGlmIChTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKHN5 c25vKSkKLSAgICAgcmV0dXJuIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKLSAjZW5kaWYK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBl cnMvYmFzZWxpbmVfcG9saWN5X3VuaXR0ZXN0LmNjCi1AQCAtMjU3LDcgKzI1Nyw3IEBAIFRFU1Rf QkFTRUxJTkVfU0lHU1lTKF9fTlJfc3lzaW5mbyk7Ci0gVEVTVF9CQVNFTElORV9TSUdTWVMoX19O Ul9zeXNsb2cpOwotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdGltZXJfY3JlYXRlKTsKLSAK LS0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi0rI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAm JiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfZXZl bnRmZCk7Ci0gVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl9pbm90aWZ5X2luaXQpOwotIFRFU1Rf QkFTRUxJTkVfU0lHU1lTKF9fTlJfdnNlcnZlcik7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3Bh cmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRl cnNfcmVzdHJpY3Rpb25zLmNjCi1AQCAtMzUsNyArMzUsOCBAQAotICNpbmNsdWRlIDxzeXMvaW9j dGwuaD4KLSAjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgotICNpZiBkZWZpbmVkKE9TX0xJTlVYKSAm JiAhZGVmaW5lZChPU19DSFJPTUVPUykgJiYgIWRlZmluZWQoX19hcm1fXykgJiYgXAotLSAgICAh ZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkK LSsgICAgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYm IFwKLSsgICAgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkKLSAvLyBBbHNvIGluY2x1 ZGUgYXNtL3B0cmFjZS1hYmkuaCBzaW5jZSBwdHJhY2UuaCBpbiBvbGRlciBsaWJjIChmb3IgaW5z dGFuY2UKLSAvLyB0aGUgb25lIGluIFVidW50dSAxNi4wNCBMVFMpIGlzIG1pc3NpbmcgUFRSQUNF X0dFVF9USFJFQURfQVJFQS4KLSAvLyBhc20vcHRyYWNlLWFiaS5oIGRvZXNuJ3QgZXhpc3Qgb24g YXJtMzIgYW5kIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgaXNuJ3QKLUBAIC00NCw2ICs0NCwxMSBA QAotICNlbmRpZgotICNlbmRpZiAgLy8gIU9TX05BQ0xfTk9OU0ZJCi0gCi0rLy8gT24gUFBDNjQs IFRDR0VUUyBpcyBkZWZpbmVkIGluIHRlcm1zIG9mIHN0cnVjdCB0ZXJtaW9zLCBzbyB3ZSBtdXN0 IGluY2x1ZGUgdGVybWlvcy5oCi0rI2lmZGVmIF9fcG93ZXJwYzY0X18KLSsjaW5jbHVkZSA8dGVy bWlvcy5oPgotKyNlbmRpZgotKwotICNpZiBkZWZpbmVkKE9TX0FORFJPSUQpCi0gCi0gI2lmICFk ZWZpbmVkKEZfRFVQRkRfQ0xPRVhFQykKLUBAIC0xMDYsNiArMTExLDE1IEBAIGlubGluZSBib29s IElzQXJjaGl0ZWN0dXJlTWlwcygpIHsKLSAjZW5kaWYKLSB9Ci0gCi0raW5saW5lIGJvb2wgSXNB cmNoaXRlY3R1cmVQUEM2NCgpIHsKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgcmV0 dXJuIHRydWU7Ci0rI2Vsc2UKLSsgIHJldHVybiBmYWxzZTsKLSsjZW5kaWYKLSt9Ci0rCi0rCi0g Ly8gVWJ1bnR1J3MgdmVyc2lvbiBvZiBnbGliYyBoYXMgYSByYWNlIGNvbmRpdGlvbiBpbiBzZW1f cG9zdCB0aGF0IGNhbiBjYXVzZQotIC8vIGl0IHRvIGNhbGwgZnV0ZXgoMikgd2l0aCBib2d1cyBv cCBhcmd1bWVudHMuIFRvIHdvcmthcm91bmQgdGhpcywgd2UgbmVlZAotIC8vIHRvIGFsbG93IHRo b3NlIGZ1dGV4KDIpIGNhbGxzIHRvIGZhaWwgd2l0aCBFSU5WQUwsIGluc3RlYWQgb2YgY3Jhc2hp bmcgdGhlCi1AQCAtMjQ3LDcgKzI2MSw4IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1h bmRzKCkgewotICAgLy8gb3BlcmF0b3IuCi0gICAvLyBHbGliYyBvdmVycmlkZXMgdGhlIGtlcm5l bCdzIE9fTEFSR0VGSUxFIHZhbHVlLiBBY2NvdW50IGZvciB0aGlzLgotICAgdWludDY0X3Qga09M YXJnZUZpbGVGbGFnID0gT19MQVJHRUZJTEU7Ci0tICBpZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQo KSB8fCBJc0FyY2hpdGVjdHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSkKLSsgIGlm IChJc0FyY2hpdGVjdHVyZVg4Nl82NCgpIHx8IElzQXJjaGl0ZWN0dXJlSTM4NigpIHx8IElzQXJj aGl0ZWN0dXJlTWlwcygpIFwKLSsgICAgICB8fCBJc0FyY2hpdGVjdHVyZVBQQzY0KCkpCi0gICAg IGtPTGFyZ2VGaWxlRmxhZyA9IDAxMDAwMDA7Ci0gCi0gICBjb25zdCBBcmc8aW50PiBjbWQoMSk7 Ci1AQCAtMjcwLDcgKzI4NSw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCkg ewotICAgICAgIC5EZWZhdWx0KENyYXNoU0lHU1lTKCkpOwotIH0KLSAKLS0jaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIFJlc3VsdEV4cHIg UmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpIHsKLSAgIC8vIFVuZm9ydHVuYXRlbHksIHdlIGFy ZSB1bmFibGUgdG8gcmVzdHJpY3QgdGhlIGZpcnN0IHBhcmFtZXRlciB0bwotICAgLy8gc29ja2V0 cGFpcigyKS4gV2hpbHN0IGluaXRpYWxseSBzb3VuZGluZyBiYWQsIGl0J3Mgbm90ZXdvcnRoeSB0 aGF0IHZlcnkKLUBAIC00MjEsNyArNDIyLDcgQEAgUmVzdWx0RXhwciBSZXN0cmljdFBybGltaXQo cGlkX3QgdGFyZ2V0X3BpZCkgewotIFJlc3VsdEV4cHIgUmVzdHJpY3RQdHJhY2UoKSB7Ci0gICBj b25zdCBBcmc8aW50PiByZXF1ZXN0KDApOwotICAgcmV0dXJuIFN3aXRjaChyZXF1ZXN0KS5DQVNF UygoCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRf XykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgICAgIFBUUkFDRV9HRVRSRUdTLAot ICAgICAgICAgUFRSQUNFX0dFVEZQUkVHUywKLSAgICAgICAgIFBUUkFDRV9HRVRfVEhSRUFEX0FS RUEsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAotQEAgLTQ4LDcg KzQ4LDcgQEAgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXN0cmljdE1wcm90 ZWN0RmxhZ3MoKTsKLSAvLyBPX05PTkJMT0NLIHwgT19TWU5DIHwgT19MQVJHRUZJTEUgfCBPX0NM T0VYRUMgfCBPX05PQVRJTUUuCi0gU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBS ZXN0cmljdEZjbnRsQ29tbWFuZHMoKTsKLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotIC8vIFJlc3RyaWN0IHNvY2tldGNhbGwoMikg dG8gb25seSBhbGxvdyBzb2NrZXRwYWlyKDIpLCBzZW5kKDIpLCByZWN2KDIpLAotIC8vIHNlbmR0 bygyKSwgcmVjdmZyb20oMiksIHNodXRkb3duKDIpLCBzZW5kbXNnKDIpIGFuZCByZWN2bXNnKDIp LgotIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxs Q29tbWFuZCgpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVy cy9zeXNjYWxsX3NldHMuY2MKLUBAIC0yOSw3ICsyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz QWxsb3dlZEdldHRpbWUoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7Ci0gICAgIGNh c2UgX19OUl9nZXR0aW1lb2ZkYXk6Ci0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdGltZToKLSAjZW5kaWYKLSAgICAgICByZXR1 cm4gdHJ1ZTsKLUBAIC00NSw3ICs0Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdl dHRpbWUoaW50IHN5c25vKSB7Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19OUl9zZXR0aW1lb2ZkYXk6 ICAvLyBQcml2aWxlZ2VkLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQot KyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul9zdGltZToKLSAjZW5kaWYKLSAgICAgZGVmYXVsdDoKLUBAIC0xMTEsNyArMTEzLDcgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJf ZmFjY2Vzc2F0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gICAgIGNhc2UgX19OUl9m Y2htb2RhdDoKLSAgICAgY2FzZSBfX05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNhbGxlZCBj aG93bmF0ID8KLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9f KQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAvLyBmc3Rh dGF0KCkuIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotICNlbGlmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLUBAIC0xMzAsNyArMTMyLDcgQEAg Ym9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9f TlJfbWVtZmRfY3JlYXRlOgotICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKLSAgICAgY2FzZSBfX05S X21rbm9kYXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX29sZGxzdGF0OgotICAg ICBjYXNlIF9fTlJfb2xkc3RhdDoKLSAjZW5kaWYKLUBAIC0xNTQsNyArMTU2LDggQEAgYm9vbCBT eXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfdHJ1 bmNhdGU2NDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3VubGlua2F0OgotLSNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0r I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul91dGltZToKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3V0aW1lbnNhdDogIC8vIE5ldy4KLUBA IC0xNzMsNyArMTc2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkRmlsZVN5c3RlbUFj Y2Vzc1ZpYUZkKGludCBzeXNubykgewotICNlbmRpZgotICAgICAgIHJldHVybiB0cnVlOwotIC8v IFRPRE8oamxuKTogdGhlc2Ugc2hvdWxkIGJlIGRlbmllZCBncmFjZWZ1bGx5IGFzIHdlbGwgKG1v dmVkIGJlbG93KS4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfZmFkdmlzZTY0OiAgLy8gRVBFUk0gbm90IGEgdmFs aWQgZXJybm8uCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19pMzg2X18pCi1AQCAtMTg2LDcgKzE5 MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChp bnQgc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2Zsb2NrOiAgICAgIC8vIEVQRVJNIG5vdCBhIHZh bGlkIGVycm5vLgotICAgICBjYXNlIF9fTlJfZnN0YXRmczogICAgLy8gR2l2ZSBpbmZvcm1hdGlv biBhYm91dCB0aGUgd2hvbGUgZmlsZXN5c3RlbS4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9mc3RhdGZzNjQ6Ci0gI2VuZGlmCi0g ICAgIGNhc2UgX19OUl9mc3luYzogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgotQEAgLTE5 OCw2ICsyMDMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjZXNz VmlhRmQoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2U6ICAvLyBF UEVSTSBub3QgYSB2YWxpZCBlcnJuby4KLSAjZWxpZiBkZWZpbmVkKF9fYXJtX18pCi0gICAgIGNh c2UgX19OUl9hcm1fc3luY19maWxlX3JhbmdlOiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8u Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBjYXNlIF9fTlJfc3luY19maWxl X3JhbmdlMjogLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCi0gI2VuZGlmCi0gICAgIGRlZmF1 bHQ6Ci0gICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTIyMyw3ICsyMzAsOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0RlbmllZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKLSAjZW5k aWYKLSAgICAgY2FzZSBfX05SX2dldGRlbnRzNjQ6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJu by4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfcmVhZGRpcjoKLSAj ZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLUBAIC0yNjQsNyArMjcyLDcgQEAgYm9vbCBTeXNj YWxsU2V0czo6SXNHZXRTaW1wbGVJZChpbnQgc3lzbm8pIHsKLSBib29sIFN5c2NhbGxTZXRzOjpJ c1Byb2Nlc3NQcml2aWxlZ2VDaGFuZ2UoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5c25vKSB7 Ci0gICAgIGNhc2UgX19OUl9jYXBzZXQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9pb3Blcm06ICAv LyBJbnRlbCBwcml2aWxlZ2UuCi0gICAgIGNhc2UgX19OUl9pb3BsOiAgICAvLyBJbnRlbCBwcml2 aWxlZ2UuCi0gI2VuZGlmCi1AQCAtMzE0LDcgKzMyMiw4IEBAIGJvb2wgU3lzY2FsbFNldHM6Oklz QWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfcnRfc2ln cHJvY21hc2s6Ci0gICAgIGNhc2UgX19OUl9ydF9zaWdyZXR1cm46Ci0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9N SVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwK LSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2lnYWN0aW9uOgot ICAgICBjYXNlIF9fTlJfc2lncHJvY21hc2s6Ci0gICAgIGNhc2UgX19OUl9zaWdyZXR1cm46Ci1A QCAtMzMxLDcgKzM0MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhhbmRs aW5nKGludCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfc2lnbmFsZmQ0OgotICNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0r ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05S X3NpZ3BlbmRpbmc6Ci0gICAgIGNhc2UgX19OUl9zaWdzdXNwZW5kOgotICNlbmRpZgotQEAgLTM1 NSw3ICszNjUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRPcGVyYXRpb25PbkZkKGlu dCBzeXNubykgewotICNlbmRpZgotICAgICBjYXNlIF9fTlJfZHVwMzoKLSAjaWYgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwK LS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2h1dGRvd246Ci0gI2VuZGlm Ci0gICAgICAgcmV0dXJuIHRydWU7Ci1AQCAtMzg5LDcgKzM5OSw3IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7Ci0gICAgIGNhc2Ug X19OUl9tZW1iYXJyaWVyOgotICAgICBjYXNlIF9fTlJfd2FpdDQ6Ci0gICAgIGNhc2UgX19OUl93 YWl0aWQ6Ci0tI2lmIGRlZmluZWQoX19pMzg2X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3dhaXRwaWQ6Ci0gI2VuZGlm Ci0gI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLUBAIC00MTEsNyArNDIxLDcgQEAgYm9vbCBTeXNj YWxsU2V0czo6SXNBbGxvd2VkUHJvY2Vzc1N0YXJ0T3JEZWF0aChpbnQgc3lzbm8pIHsKLSAgICAg Y2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05SX3Vuc2hh cmU6Ci0tI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKLSsj aWYgIWRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl92Zm9yazoKLSAjZW5kaWYKLSAgICAgZGVm YXVsdDoKLUBAIC00NjAsNyArNDcwLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0 T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7Ci0gICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIGRl ZmF1bHQ6Ci0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBk ZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBf X05SX3NvY2tldHBhaXI6ICAvLyBXZSB3aWxsIHdhbnQgdG8gaW5zcGVjdCBpdHMgYXJndW1lbnQu Ci0gI2VuZGlmCi0gICAgICAgcmV0dXJuIGZhbHNlOwotQEAgLTQ3MCw3ICs0ODAsNyBAQCBib29s IFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSBi b29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykgewot ICAgc3dpdGNoIChzeXNubykgewotICNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2 NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0gICAgIGNhc2UgX19OUl9hY2NlcHQ6Ci0gICAgIGNhc2UgX19OUl9hY2NlcHQ0OgotICAgICBj YXNlIF9fTlJfYmluZDoKLUBAIC00ODUsNyArNDk1LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNE ZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKLSB9Ci0gCi0gI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRz LgotIGJvb2wgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8pIHsKLSAgIHN3aXRj aCAoc3lzbm8pIHsKLUBAIC00OTksNyArNTEwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTb2Nr ZXRDYWxsKGludCBzeXNubykgewotIH0KLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBib29sIFN5c2NhbGxTZXRzOjpJc05l dHdvcmtTb2NrZXRJbmZvcm1hdGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsK LSAgICAgY2FzZSBfX05SX2dldHBlZXJuYW1lOgotQEAgLTUyNyw3ICs1MzksNyBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc0FsbG93ZWRBZGRyZXNzU3BhY2VBY2Nlc3MoaW50IHN5c25vKSB7Ci0gICAg IGNhc2UgX19OUl9taW5jb3JlOgotICAgICBjYXNlIF9fTlJfbWxvY2thbGw6Ci0gI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAotLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9tbWFwOgotICNlbmRp ZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLUBAIC01 NTksNyArNTcxLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBz eXNubykgewotICAgc3dpdGNoIChzeXNubykgewotICAgICBjYXNlIF9fTlJfbHNlZWs6Ci0gI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAotLSAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsg ICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJf QklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJf X2xsc2VlazoKLSAjZW5kaWYKLSAjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCi1AQCAtNTcxLDI2 ICs1ODQsMjggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2VuZXJhbElvKGludCBzeXNu bykgewotICAgICBjYXNlIF9fTlJfcmVhZHY6Ci0gICAgIGNhc2UgX19OUl9wcmVhZDY0OgotICNp ZiBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlY3Y6Ci0gI2VuZGlmCi0gI2lm IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlw c19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJj aDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX3JlY3Zmcm9t OiAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCi0gICAgIGNhc2UgX19OUl9yZWN2bXNnOiAgIC8v IENvdWxkIHNwZWNpZnkgc291cmNlLgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBkZWZpbmVkKF9feDg2XzY0X18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfc2Vs ZWN0OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot ICAgICBjYXNlIF9fTlJfX25ld3NlbGVjdDoKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FybV9f KSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAgIGNhc2UgX19OUl9zZW5kOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotLSAgICBk ZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9zZW5kbXNnOiAgLy8gQ291bGQgc3BlY2lm eSBkZXN0aW5hdGlvbi4KLSAgICAgY2FzZSBfX05SX3NlbmR0bzogICAvLyBDb3VsZCBzcGVjaWZ5 IGRlc3RpbmF0aW9uLgotICNlbmRpZgotQEAgLTY0Nyw3ICs2NjIsOCBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlcihpbnQgc3lzbm8pIHsKLSAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgY2FzZSBfX05SX2dldHByaW9yaXR5OgotICNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgICAgY2FzZSBfX05SX25pY2U6Ci0gI2VuZGlmCi0g ICAgIGNhc2UgX19OUl9zZXRwcmlvcml0eToKLUBAIC02NTksNyArNjc1LDggQEAgYm9vbCBTeXNj YWxsU2V0czo6SXNBbGxvd2VkQmFzaWNTY2hlZHVsZXIoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNj YWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8p IHsKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNh c2UgX19OUl9iZGZsdXNoOgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfa2V4ZWNfbG9hZDoKLUBA IC02NzUsNyArNjkyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBZG1pbk9wZXJhdGlvbihpbnQg c3lzbm8pIHsKLSAKLSBib29sIFN5c2NhbGxTZXRzOjpJc0tlcm5lbE1vZHVsZShpbnQgc3lzbm8p IHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfY3JlYXRlX21vZHVsZToKLSAg ICAgY2FzZSBfX05SX2dldF9rZXJuZWxfc3ltczogIC8vIFNob3VsZCBFTk9TWVMuCi0gICAgIGNh c2UgX19OUl9xdWVyeV9tb2R1bGU6Ci1AQCAtNzA4LDcgKzcyNiw4IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzRnNDb250cm9sKGludCBzeXNubykgewotICAgICBjYXNlIF9fTlJfc3dhcG9mZjoKLSAg ICAgY2FzZSBfX05SX3N3YXBvbjoKLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNl IF9fTlJfdW1vdW50OgotICNlbmRpZgotICAgICBjYXNlIF9fTlJfdW1vdW50MjoKLUBAIC03MjQs NyArNzQzLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNOdW1hKGludCBzeXNubykgewotICAgICBj YXNlIF9fTlJfZ2V0Y3B1OgotICAgICBjYXNlIF9fTlJfbWJpbmQ6Ci0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAot LSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQotKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9taWdyYXRlX3BhZ2VzOgotICNl bmRpZgotICAgICBjYXNlIF9fTlJfbW92ZV9wYWdlczoKLUBAIC03NTMsMTQgKzc3MiwxNSBAQCBi b29sIFN5c2NhbGxTZXRzOjpJc0dsb2JhbFByb2Nlc3NFbnZpcm9ubWVudChpbnQgc3lzbm8pIHsK LSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05SX2FjY3Q6ICAvLyBQcml2aWxlZ2Vk LgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IFwKLS0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsgICAgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJf Z2V0cmxpbWl0OgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f YXJtX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdWdldHJsaW1pdDoKLSAjZW5kaWYK LSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfdWxpbWl0OgotICNlbmRp ZgotICAgICBjYXNlIF9fTlJfZ2V0cnVzYWdlOgotQEAgLTc5NCw3ICs4MTQsNyBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc0dsb2JhbFN5c3RlbVN0YXR1cyhpbnQgc3lzbm8pIHsKLSAjZW5kaWYKLSAg ICAgY2FzZSBfX05SX3N5c2luZm86Ci0gICAgIGNhc2UgX19OUl91bmFtZToKLS0jaWYgZGVmaW5l ZChfX2kzODZfXykKLSsjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfb2xkdW5hbWU6Ci0gICAgIGNhc2UgX19OUl9vbGRvbGR1bmFt ZToKLSAjZW5kaWYKLUBAIC04ODgsNyArOTA4LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTeXN0 ZW1WTWVzc2FnZVF1ZXVlKGludCBzeXNubykgewotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCi0gLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbC4KLSBi b29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZJcGMoaW50IHN5c25vKSB7Ci0gICBzd2l0Y2ggKHN5 c25vKSB7Ci1AQCAtOTA4LDcgKzkyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQW55U3lzdGVt VihpbnQgc3lzbm8pIHsKLSAgIHJldHVybiBJc1N5c3RlbVZNZXNzYWdlUXVldWUoc3lzbm8pIHx8 IElzU3lzdGVtVlNlbWFwaG9yZXMoc3lzbm8pIHx8Ci0gICAgICAgICAgSXNTeXN0ZW1WU2hhcmVk TWVtb3J5KHN5c25vKTsKLSAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQot KyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICByZXR1cm4gSXNT eXN0ZW1WSXBjKHN5c25vKTsKLSAjZW5kaWYKLSB9Ci1AQCAtOTYxLDcgKzk4Myw4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzRmFOb3RpZnkoaW50IHN5c25vKSB7Ci0gYm9vbCBTeXNjYWxsU2V0czo6 SXNUaW1lcihpbnQgc3lzbm8pIHsKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2FzZSBfX05S X2dldGl0aW1lcjoKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQotICAgICBjYXNlIF9fTlJfYWxhcm06Ci0gI2VuZGlmCi0gICAgIGNhc2UgX19O Ul9zZXRpdGltZXI6Ci1AQCAtMTAyMCwxOCArMTA0MywyMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c01pc2MoaW50IHN5c25vKSB7Ci0gICAgIGNhc2UgX19OUl9zeW5jZnM6Ci0gICAgIGNhc2UgX19O Ul92aGFuZ3VwOgotIC8vIFRoZSBzeXN0ZW0gY2FsbHMgYmVsb3cgYXJlIG5vdCBpbXBsZW1lbnRl ZC4KLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotICAgICBjYXNlIF9fTlJfYWZzX3N5c2NhbGw6Ci0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKLS0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCi0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSAgICAgY2FzZSBfX05SX2JyZWFrOgotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCi0rI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21p cHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19OUl9n ZXRwbXNnOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQot KyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2UgX19O Ul9ndHR5OgotICAgICBjYXNlIF9fTlJfaWRsZToKLSAgICAgY2FzZSBfX05SX2xvY2s6Ci1AQCAt MTAzOSwyMCArMTA2NiwyMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5c25vKSB7 Ci0gICAgIGNhc2UgX19OUl9wcm9mOgotICAgICBjYXNlIF9fTlJfcHJvZmlsOgotICNlbmRpZgot LSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19taXBzX18pCi0rI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0g ICAgIGNhc2UgX19OUl9wdXRwbXNnOgotICNlbmRpZgotICNpZiBkZWZpbmVkKF9feDg2XzY0X18p Ci0gICAgIGNhc2UgX19OUl9zZWN1cml0eToKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgXAotLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkKLSsgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKLSsgICAgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQotICAgICBjYXNlIF9fTlJfc3R0eToKLSAjZW5kaWYKLS0jaWYgZGVmaW5lZChfX3g4Nl82 NF9fKQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgICAgY2FzZSBfX05SX3R1eGNhbGw6Ci0gI2VuZGlmCi0tI2lmICFkZWZpbmVkKF9fYWFyY2g2 NF9fKQotKyNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRf XykKLSAgICAgY2FzZSBfX05SX3ZzZXJ2ZXI6Ci0gI2VuZGlmCi0gICAgICAgcmV0dXJuIHRydWU7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2Vj Y29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9z ZXRzLmgKLUBAIC00MywxMyArNDMsMTQgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNl dHMgewotICAgc3RhdGljIGJvb2wgSXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8p OwotIAotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCi0tICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQotKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAotKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5 c3RlbSBjYWxsIGZvciBzb2NrZXRzLgotICAgc3RhdGljIGJvb2wgSXNTb2NrZXRDYWxsKGludCBz eXNubyk7Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCi0tICAgIGRlZmluZWQoX19hYXJjaDY0 X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgIHN0YXRpYyBib29sIElzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubyk7Ci0g I2VuZGlmCi0gCi1AQCAtODcsNyArODgsOCBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxs U2V0cyB7Ci0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKLS0gICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp Ci0rICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKSB8fCBcCi0rICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSAgIC8vIEJpZyBz eXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwuCi0gICBzdGF0aWMgYm9vbCBJc1N5c3Rl bVZJcGMoaW50IHN5c25vKTsKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lz Y2FsbC5jYwotQEAgLTE2LDcgKzE2LDcgQEAgbmFtZXNwYWNlIHNhbmRib3ggewotIG5hbWVzcGFj ZSB7Ci0gCi0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNI X0NQVV9BUk1fRkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp Ci0rICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQgKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKLSAvLyBOdW1iZXIgdGhhdCdzIG5vdCBjdXJyZW50bHkgdXNlZCBieSBh bnkgTGludXgga2VybmVsIEFCSXMuCi0gY29uc3QgaW50IGtJbnZhbGlkU3lzY2FsbE51bWJlciA9 IDB4MzUxZDM7Ci0gI2Vsc2UKLUBAIC0zMDgsMTIgKzMwOCw1NiBAQCBhc20oLy8gV2UgbmVlZCB0 byBiZSBhYmxlIHRvIHRlbGwgdGhlIGtlcm5lbCBleGFjdGx5IHdoZXJlIHdlIG1hZGUgYQotICAg ICAvLyBFbnRlciB0aGUga2VybmVsCi0gICAgICJzdmMgMFxuIgotICAgICAiMjpyZXRcbiIKLSsg ICAgIi5jZmlfZW5kcHJvY1xuIgotKyAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNt XG4iCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAiLnRleHRcbiIKLSsgICAg Ii5hbGlnbiA0XG4iCi0rICAgICIudHlwZSBTeXNjYWxsQXNtIEBmdW5jdGlvblxuIgotKyAgICAi U3lzY2FsbEFzbTpcbiIKLSsgICAgIi5jZmlfc3RhcnRwcm9jXG4iCi0rCi0rICAgIC8vIENoZWNr IGlmIHIzIGlzIG5lZ2F0aXZlCi0rICAgICJjbXBkaSAzLCAwXG4iCi0rICAgICJiZ3QgMmZcbiIK LSsKLSsgICAgLy8gTG9hZCBhZGRyZXNzIG9mIDNmIGludG8gcjMgYW5kIHJldHVybgotKyAgICAi bWZsciAxMFxuIgotKyAgICAiYmwgMWZcbiIKLSsgICAgIjE6IG1mbHIgM1xuIgotKyAgICAibXRs ciAxMFxuIgotKyAgICAiYWRkaSAzLCAzLCA0KjEzXG4iCi0rICAgICJibHJcbiIKLSsKLSsgICAg Ly8gTG9hZCBhcmd1bWVudHMgZnJvbSBhcnJheSBpbnRvIHIzLTgKLSsgICAgLy8gc2F2ZSBwYXJh bSAzIGluIHIxMAotKyAgICAiMjpcbiIKLSsgICAgIm1yIDAsIDNcbiIKLSsgICAgImxkIDMsIDAo NClcbiIKLSsgICAgImxkIDUsIDE2KDQpXG4iCi0rICAgICJsZCA2LCAyNCg0KVxuIgotKyAgICAi bGQgNywgMzIoNClcbiIKLSsgICAgImxkIDgsIDQwKDQpXG4iCi0rICAgICJsZCA0LCA4KDQpXG4i Ci0rICAgICJsaSA5LCAwXG4iCi0rCi0rICAgIC8vIEVudGVyIGtlcm5lbAotKyAgICAic2NcbiIK LSsKLSsgICAgLy8gTWFnaWMgcmV0dXJuIGFkZHJlc3MKLSsgICAgIjM6XG4iCi0rICAgIC8vIExp a2UgTUlQUywgcHBjNjQgcmV0dXJuIHZhbHVlcyBhcmUgYWx3YXlzIHBvc2l0aXZlLgotKyAgICAv LyBDaGVjayBmb3IgZXJyb3IgaW4gY3IwLlNPIGFuZCBuZWdhdGUgdXBvbiBlcnJvcgotKyAgICAi YmMgNCwgMywgNGZcbiIKLSsgICAgIm5lZyAzLCAzXG4iCi0rICAgICI0OiBibHJcbiIKLSsKLSAg ICAgIi5jZmlfZW5kcHJvY1xuIgotICAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNt XG4iCi0gI2VuZGlmCi0gICAgICk7ICAvLyBhc20KLSAKLS0jaWYgZGVmaW5lZChfX3g4Nl82NF9f KQotKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSBl eHRlcm4gIkMiIHsKLSBpbnRwdHJfdCBTeXNjYWxsQXNtKGludHB0cl90IG5yLCBjb25zdCBpbnRw dHJfdCBhcmdzWzZdKTsKLSB9Ci1AQCAtNDI3LDYgKzQ3MSw4IEBAIGludHB0cl90IFN5c2NhbGw6 OkNhbGwoaW50IG5yLAotICAgICByZXQgPSBpbm91dDsKLSAgIH0KLSAKLSsjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICBpbnRwdHJfdCByZXQgPSBTeXNjYWxsQXNtKG5yLCBhcmdzKTsK LSAjZWxzZQotICNlcnJvciAiVW5pbXBsZW1lbnRlZCBhcmNoaXRlY3R1cmUiCi0gI2VuZGlmCi1A QCAtNDQzLDggKzQ4OSwxOCBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4dChpbnRw dHJfdCByZXRfdmFsLCB1Y29udGV4dF90KiBjdHgpIHsKLSAgICAgLy8gbmVlZHMgdG8gYmUgY2hh bmdlZCBiYWNrLgotICAgICByZXRfdmFsID0gLXJldF92YWw7Ci0gICAgIFNFQ0NPTVBfUEFSTTQo Y3R4KSA9IDE7Ci0tICB9IGVsc2UKLSsgIH0gZWxzZSB7Ci0gICAgIFNFQ0NPTVBfUEFSTTQoY3R4 KSA9IDA7Ci0rICB9Ci0rI2VuZGlmCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIC8v IFNhbWUgYXMgTUlQUywgbmVlZCB0byBpbnZlcnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIg KGNyMC5TTykKLSsgIGlmIChyZXRfdmFsIDw9IC0xICYmIHJldF92YWwgPj0gLTQwOTUpIHsKLSsg ICAgcmV0X3ZhbCA9IC1yZXRfdmFsOwotKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciB8 PSAoMSA8PCAyOCk7Ci0rICB9IGVsc2UgewotKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNj ciAmPSB+KDEgPDwgMjgpOwotKyAgfQotICNlbmRpZgotICAgU0VDQ09NUF9SRVNVTFQoY3R4KSA9 IHN0YXRpY19jYXN0PGdyZWdfdD4ocmV0X3ZhbCk7Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi90cmFwLmNjCi1AQCAtMjMwLDYgKzIzMCwyMCBAQCB2b2lkIFRyYXA6OlNpZ1N5cyhpbnQgbnIs IExpbnV4U2lnSW5mbyogaW5mbywgdWNvbnRleHRfdCogY3R4KSB7Ci0gICAgICAgU2V0SXNJblNp Z0hhbmRsZXIoKTsKLSAgICAgfQotIAotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAg IC8vIE9uIHBwYzY0K2dsaWJjLCBzb21lIHN5c2NhbGxzIHNlZW0gdG8gYWNjaWRlbnRhbGx5IG5l Z2F0ZSB0aGUgZmlyc3QKLSsgICAgLy8gcGFyYW1ldGVyIHdoaWNoIGNhdXNlcyBjaGVja3MgYWdh aW5zdCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQotKyAgICAvLyBuZWdhdGUgdGhlbSBi YWNrLgotKyAgICAvLyBUT0RPKHNoYXduQGFuYXN0YXMuaW8pOiBpbnZlc3RpZ2F0ZSB0aGlzIGlz c3VlIGZ1cnRoZXIKLSsgICAgYXV0byBuciA9IFNFQ0NPTVBfU1lTQ0FMTChjdHgpOwotKyAgICBp ZiAobnIgPT0gX19OUl9vcGVuYXQgfHwgbnIgPT0gX19OUl9ta2RpcmF0IHx8IG5yID09IF9fTlJf ZmFjY2Vzc2F0IHx8IG5yID09IF9fTlJfcmVhZGxpbmthdCB8fAotKyAgICAgICAgbnIgPT0gX19O Ul9yZW5hbWVhdCB8fCBuciA9PSBfX05SX3JlbmFtZWF0MiB8fCBuciA9PSBfX05SX25ld2ZzdGF0 YXQgfHwgbnIgPT0gX19OUl91bmxpbmthdCkgewotKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGlu dD4oU0VDQ09NUF9QQVJNMShjdHgpKSA+IDApIHsKLSsgICAgICAgICAgICBTRUNDT01QX1BBUk0x KGN0eCkgPSAtU0VDQ09NUF9QQVJNMShjdHgpOwotKyAgICAgICAgfQotKyAgICB9Ci0rI2VuZGlm Ci0rCi0gICAgIC8vIENvcHkgdGhlIHNlY2NvbXAtc3BlY2lmaWMgZGF0YSBpbnRvIGEgYXJjaF9z ZWNjb21wX2RhdGEgc3RydWN0dXJlLiBUaGlzCi0gICAgIC8vIGlzIHdoYXQgd2UgYXJlIHNob3dp bmcgdG8gVHJhcEZuYyBjYWxsYmFja3MgdGhhdCB0aGUgc3lzdGVtIGNhbGwKLSAgICAgLy8gZXZh bHVhdG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJveC4KLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlcnZp Y2VzL2NyZWRlbnRpYWxzLmNjCi1AQCAtNzksNyArNzksNyBAQCBib29sIENocm9vdFRvU2FmZUVt cHR5RGlyKCkgewotICAgcGlkX3QgcGlkID0gLTE7Ci0gICBhbGlnbmFzKDE2KSBjaGFyIHN0YWNr X2J1ZltQVEhSRUFEX1NUQUNLX01JTl07Ci0gI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlM WSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCi0tICAgIGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpCi0rICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8 IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotICAgLy8gVGhlIHN0YWNrIGdyb3dzIGRv d253YXJkLgotICAgdm9pZCogc3RhY2sgPSBzdGFja19idWYgKyBzaXplb2Yoc3RhY2tfYnVmKTsK LSAjZWxzZQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX3By b2Nlc3MuY2MKLUBAIC0xNTEsNyArMTUxLDcgQEAgYm9vbCBCcm9rZXJQcm9jZXNzOjpJc1N5c2Nh bGxBbGxvd2VkKGludCBzeXNubykgY29uc3QgewotICNpZiBkZWZpbmVkKF9fTlJfZnN0YXRhdCkK LSAgICAgY2FzZSBfX05SX2ZzdGF0YXQ6Ci0gI2VuZGlmCi0tI2lmIGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKLSsjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICAgIGNhc2Ug X19OUl9uZXdmc3RhdGF0OgotICNlbmRpZgotICAgICAgIHJldHVybiAhZmFzdF9jaGVja19pbl9j bGllbnRfIHx8IGFsbG93ZWRfY29tbWFuZF9zZXRfLnRlc3QoQ09NTUFORF9TVEFUKTsKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVh ZGVycy9saW51eF9zZWNjb21wLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKLUBAIC0yOSw2 ICsyOSw5IEBACi0gI2lmbmRlZiBFTV9BQVJDSDY0Ci0gI2RlZmluZSBFTV9BQVJDSDY0IDE4Mwot ICNlbmRpZgotKyNpZm5kZWYgRU1fUFBDNjQKLSsjZGVmaW5lIEVNX1BQQzY0IDIxCi0rI2VuZGlm Ci0gCi0gI2lmbmRlZiBfX0FVRElUX0FSQ0hfNjRCSVQKLSAjZGVmaW5lIF9fQVVESVRfQVJDSF82 NEJJVCAweDgwMDAwMDAwCi1AQCAtNTQsNiArNTcsMTIgQEAKLSAjaWZuZGVmIEFVRElUX0FSQ0hf QUFSQ0g2NAotICNkZWZpbmUgQVVESVRfQVJDSF9BQVJDSDY0IChFTV9BQVJDSDY0IHwgX19BVURJ VF9BUkNIXzY0QklUIHwgX19BVURJVF9BUkNIX0xFKQotICNlbmRpZgotKyNpZm5kZWYgQVVESVRf QVJDSF9QUEM2NAotKyNkZWZpbmUgQVVESVRfQVJDSF9QUEM2NCAoRU1fUFBDNjQgfCBfX0FVRElU X0FSQ0hfNjRCSVQpCi0rI2VuZGlmCi0rI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0TEUKLSsjZGVm aW5lIEFVRElUX0FSQ0hfUFBDNjRMRSAoRU1fUFBDNjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQgfCBf X0FVRElUX0FSQ0hfTEUpCi0rI2VuZGlmCi0gCi0gLy8gRm9yIHByY3RsLmgKLSAjaWZuZGVmIFBS X1NFVF9TRUNDT01QCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRi b3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9z aWduYWwuaAotQEAgLTEzLDcgKzEzLDcgQEAKLSAvLyAobm90IHVuZGVmaW5lZCwgYnV0IGRlZmlu ZWQgZGlmZmVyZW50IHZhbHVlcyBhbmQgaW4gZGlmZmVyZW50IG1lbW9yeQotIC8vIGxheW91dHMp LiBTbywgZmlsbCB0aGUgZ2FwIGhlcmUuCi0gI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCi0tICAgIGRlZmluZWQoX19h YXJjaDY0X18pCi0rICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSAKLSAjZGVmaW5lIExJTlVYX1NJR0hVUCAxCi0gI2RlZmluZSBMSU5VWF9TSUdJTlQg MgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5o Ci1AQCAtMzUsNSArMzUsOSBAQAotICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFk ZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgiCi0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2 NF9saW51eF9zeXNjYWxscy5oIgotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FOREJPWF9MSU5V WF9TWVNURU1fSEVBREVSU19MSU5VWF9TWVNDQUxMU19IXwotIAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3Vj b250ZXh0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9s aW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91Y29udGV4dC5oCi1AQCAtMTEsNiArMTEsOCBAQAot ICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4 dC5oIgotICNlbGlmIGRlZmluZWQoX19pMzg2X18pCi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvaTM4Nl9saW51eF91Y29udGV4dC5oIgotKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKLSsjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2 NF9saW51eF91Y29udGV4dC5oIgotICNlbHNlCi0gI2Vycm9yICJObyBzdXBwb3J0IGZvciB5b3Vy IGFyY2hpdGVjdHVyZSBpbiBQTmFDbCBoZWFkZXIiCi0gI2VuZGlmCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgKLUBA IC0wLDAgKzEsMTIgQEAKLSsvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4g QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zl cm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhl IExJQ0VOU0UgZmlsZS4KLSsKLSsjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNf UFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KLSsjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hF QURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KLSsKLSsjaW5jbHVkZSA8YXNtL3VuaXN0ZC5o PgotKwotKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHN5c2NhbGwgbnVtYmVy cyBmb3IgUFBDNjQ/Ci0rCi0rI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJT X1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYv bnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgKLUBAIC0wLDAgKzEsMTIgQEAK LSsvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNl cnZlZC4KLSsvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1z dHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCi0rLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4K LSsKLSsjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfVUNP TlRFWFRfSF8KLSsjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElO VVhfVUNPTlRFWFRfSF8KLSsKLSsjaW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+Ci0rCi0rLy9UT0RP OiBpcyBpdCBuZWNlc3NhcnkgdG8gcmVkZWZpbmUgdWNvbnRleHQgb24gUFBDNjQ/Ci0rCi0rI2Vu ZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhU X0hfCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NlcnZpY2VzL3NlcnZp Y2VfbWFuYWdlci9zYW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2VydmljZXMvc2VydmljZV9tYW5h Z2VyL3NhbmRib3gvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwotQEAgLTE1LDYg KzE1LDExIEBACi0gI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhf c3lzY2FsbHMuaCIKLSAjaW5jbHVkZSAic2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gv bGludXgvc2FuZGJveF9saW51eC5oIgotIAotKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5l ZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3Mu aAotKyNpZmRlZiBfX3Bvd2VycGM2NF9fCi0rI2luY2x1ZGUgPHRlcm1pb3MuaD4KLSsjZW5kaWYK LSsKLSAvLyBUT0RPKHZpZ25hdHRpKTogcmVwbGFjZSB0aGUgbG9jYWwgZGVmaW5pdGlvbnMgYmVs b3cgd2l0aCAjaW5jbHVkZQotIC8vIDxsaW51eC9kbWEtYnVmLmg+IG9uY2Uga2VybmVsIHZlcnNp b24gNC42IGJlY29tZXMgd2lkZWx5IHVzZWQuCi0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2FuZ2xlL3Ny Yy9saWJBTkdMRS9Db25zdGFudHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKLUBAIC05LDYg KzksNyBAQAotICNpZm5kZWYgTElCQU5HTEVfQ09OU1RBTlRTX0hfCi0gI2RlZmluZSBMSUJBTkdM RV9DT05TVEFOVFNfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0ZGRlZj4KLSAjaW5jbHVkZSAiY29tbW9u L3BsYXRmb3JtLmgiCi0gCi0gbmFtZXNwYWNlIGdsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvYXNt L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvYXNtL0JVSUxELmduCi1AQCAtNDYsNiAr NDYsMTAgQEAgaWYgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4NjQi KSB7Ci0gICAgICAgc291cmNlcyA9IFsKLSAgICAgICAgICJTYXZlUmVnaXN0ZXJzX21pcHM2NC5T IiwKLSAgICAgICBdCi0rICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0Iikgewot KyAgICAgIHNvdXJjZXMgPSBbCi0rICAgICAgICAiU2F2ZVJlZ2lzdGVyc19wcGM2NC5TIiwKLSsg ICAgICBdCi0gICAgIH0KLSAKLSAgICAgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm0iKSB7Ci1uZXcg ZmlsZSBtb2RlIDEwMDY0NAotLS0tIC9kZXYvbnVsbAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2Fz bS9TYXZlUmVnaXN0ZXJzX3BwYzY0LlMKLUBAIC0wLDAgKzEsNjAgQEAKLSsvKgotKyAqIHR5cGVk ZWYgdm9pZCAoKlB1c2hBbGxSZWdpc3RlcnNDYWxsYmFjaykoU2FmZVBvaW50QmFycmllciosIFRo cmVhZFN0YXRlKiwgaW50cHRyX3QqKTsKLSsgKiBleHRlcm4gIkMiIHZvaWQgUHVzaEFsbFJlZ2lz dGVycyhTYWZlUG9pbnRCYXJyaWVyKiwgVGhyZWFkU3RhdGUqLCBQdXNoQWxsUmVnaXN0ZXJzQ2Fs bGJhY2spCi0rICovCi0rCi0rLnR5cGUgUHVzaEFsbFJlZ2lzdGVycywgJWZ1bmN0aW9uCi0rLmds b2JhbCBQdXNoQWxsUmVnaXN0ZXJzCi0rLmhpZGRlbiBQdXNoQWxsUmVnaXN0ZXJzCi0rUHVzaEFs bFJlZ2lzdGVyczoKLSsgICAgICAgIC8vIFB1c2ggYWxsIGNhbGxlZS1zYXZlcyByZWdpc3RlcnMg dG8gZ2V0IHRoZW0KLSsgICAgICAgIC8vIG9uIHRoZSBzdGFjayBmb3IgY29uc2VydmF0aXZlIHN0 YWNrIHNjYW5uaW5nLgotKyAgICAgICAgLy8gUmVzZXJ2ZSBzcGFjZSBmb3IgY2FsbGVlLXNhdmVk IHJlZ2lzdGVycyBhbmQgbWluaW1hbCBzdGFjayBmcmFtZS4KLSsgICAgICAgIG1mbHIgMCAgICAg ICAgICMgcjAgPSBMUgotKyAgICAgICAgc3RkIDAsMTYoMSkgICAgIyBzdG9yZSBMUiBhdCBhZGRy IHNwKzE2Ci0rICAgICAgICBzdGR1IDEsLTE3NigxKSAjIGdyb3cgc3RhY2sgYnkgMTc2IGJ5dGVz IGFuZCBzdG9yZSBuZXcgc3RhY2sgdG9wIHB0ciB0byByMQotKyAgICAgICAgICAgICMgMzIxOCo4 ID0gbWluIHN0YWNrICBub24tdm9sYXRpbGUgcmVnaXN0ZXJzCi0rCi0rICAgICAgICAvLyBTYXZl IHRoZSBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXJzCi0rICAgICAgICBzdGQgMzEsMTY4KDEpICAjIHN0 b3JlIHIzMSB0byBhZGRyIHNwKzE2OCAKLSsgICAgICAgIHN0ZCAzMCwxNjAoMSkgICMgZXRjLi4u Ci0rICAgICAgICBzdGQgMjksMTUyKDEpCi0rICAgICAgICBzdGQgMjgsMTQ0KDEpCi0rICAgICAg ICBzdGQgMjcsMTM2KDEpCi0rICAgICAgICBzdGQgMjYsMTI4KDEpCi0rICAgICAgICBzdGQgMjUs MTIwKDEpCi0rICAgICAgICBzdGQgMjQsMTEyKDEpCi0rICAgICAgICBzdGQgMjMsMTA0KDEpCi0r ICAgICAgICBzdGQgMjIsOTYoMSkKLSsgICAgICAgIHN0ZCAyMSw4OCgxKQotKyAgICAgICAgc3Rk IDIwLDgwKDEpCi0rICAgICAgICBzdGQgMTksNzIoMSkKLSsgICAgICAgIHN0ZCAxOCw2NCgxKQot KyAgICAgICAgc3RkIDE3LDU2KDEpCi0rICAgICAgICBzdGQgMTYsNDgoMSkKLSsgICAgICAgIHN0 ZCAxNSw0MCgxKQotKyAgICAgICAgc3RkIDE0LDMyKDEpCi0rICAgICAgICAKLSsgICAgICAgIC8v IE5vdGU6IHRoZSBjYWxsZWUtc2F2ZWQgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIGRvIG5vdCBu ZWVkIHRvIGJlCi0rICAgICAgICAvLyBjb3BpZWQgdG8gdGhlIHN0YWNrLCBiZWNhdXNlIGZwIHJl Z2lzdGVycyBuZXZlciBob2xkIGhlYXAgcG9pbnRlcnMKLSsgICAgICAgIC8vIGFuZCBzbyBkbyBu b3QgbmVlZCB0byBiZSBrZXB0IHZpc2libGUgdG8gdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotKyAg ICAgICAgCi0rICAgICAgICAvLyBQYXNzIHRoZSB0d28gZmlyc3QgYXJndW1lbnRzIHVudG91Y2hl ZCBpbiByMyBhbmQgcjQgYW5kIHRoZQotKyAgICAgICAgLy8gc3RhY2sgcG9pbnRlciB0byB0aGUg Y2FsbGJhY2suCi0rCi0rICAgICAgICBzdGQgMiwgMjQoMSkgICAjIHNhdmUgcjIgdG8gc3ArMjQg YWRkcgotKyAgICAgICAgbXRjdHIgNSAgICAgICAgIyBjb3B5IDNyZCBmdW5jdGlvbiBhcmcgKGNh bGxiYWNrIGZuIHBvaW50ZXIpIHRvIENUUgotKyAgICAgICAgbXIgMTIsIDUgICAgICAgIyByMTIg bXVzdCBob2xkIGFkZHJlc3Mgb2YgY2FsbGJhY2sgd2UgYXJlIGdvaW5nIHRvIGNhbGwgCi0rICAg ICAgICAgICAgICAgICAgICAgICAjICBmb3IgcG9zaXRpb24taWRlcGVuZGVudCBmdW5jdGlvbnMg aW5zaWRlIHRoZSBjYWxsYmFjayB0byB3b3JrCi0rICAgICAgICBtciA1LCAxICAgICAgICAjIHNl dCBjdXJyZW50IHNwIChzdGFjayB0b3ApIGFzIDNyZCBhcmd1bWVudCBmb3IgdGhlIGNhbGxiYWNr Ci0rICAgICAgICBiY3RybCAgICAgICAgICAjIHNldCBMUiB0byBQQys0IGFuZCBjYWxsIHRoZSBj YWxsYmFjawotKyAgICAgICAgbGQgMiwgMjQoMSkgICAgIyByZXN0b3JlIHIyIGZyb20gc3ArMjQg YWRkcgotKwotKyAgICAgICAgLy8gQWRqdXN0IHN0YWNrLCByZXN0b3JlIHJldHVybiBhZGRyZXNz IGFuZCByZXR1cm4uCi0rICAgICAgICAvLyBOb3RlOiB0aGUgY29waWVkIHJlZ2lzdGVycyBkbyBu b3QgbmVlZCB0byBiZSByZWxvYWRlZCBoZXJlLAotKyAgICAgICAgLy8gYmVjYXVzZSB0aGV5IHdl cmUgcHJlc2VydmVkIGJ5IHRoZSBjYWxsZWQgcm91dGluZS4KLSsgICAgICAgIGFkZGkgMSwxLDE3 NiAgICMgcmVzdG9yZSBvcmlnaW5hbCBTUCBieSBkb2luZyBzcCArPSAxNzYKLSsgICAgICAgIGxk IDAsMTYoMSkgICAgICMgcmVzdG9yZSBvcmlnaW5hbCBMUiBmcm9tIGFkZHIgc3ArMTYKLSsgICAg ICAgIG10bHIgMCAgICAgICAgICMgLi4uIGNvcHkgaXQgdG8gdGhlIGFjdHVhbCBMUgotKyAgICAg ICAgYmxyICAgICAgICAgICAgIyByZXR1cm4gdG8gTFIgYWRkcgotKwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9y bS9oZWFwL2hlYXBfcGFnZS5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2hlYXAvaGVhcF9wYWdlLmgKLUBA IC02NywxMSArNjcsMTIgQEAgY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdlQmFzZU1hc2sgPSB+ a0JsaW5rUGFnZU9mZnNldE1hc2s7Ci0gY29uc3RleHByIHNpemVfdCBrQmxpbmtQYWdlc1BlclJl Z2lvbiA9IDEwOwotIAotIC8vIFRPRE8obnlhKTogUmVwbGFjZSB0aGlzIHdpdGggc29tZXRoaW5n IGxpa2UgI2lmIEVOQUJMRV9OQUNMLgotLSNpZiAwCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCi0gLy8gTmFDbCdzIHN5c3RlbSBwYWdlIHNpemUgaXMgNjQgS2lCLiBUaGlzIGNhdXNlcyBh IHByb2JsZW0gaW4gT2lscGFuJ3MgaGVhcAotIC8vIGxheW91dCBiZWNhdXNlIE9pbHBhbiBhbGxv Y2F0ZXMgdHdvIGd1YXJkIHBhZ2VzIGZvciBlYWNoIEJsaW5rIHBhZ2UgKHdob3NlCi0gLy8gc2l6 ZSBpcyBrQmxpbmtQYWdlU2l6ZSA9IDJeMTcgPSAxMjggS2lCKS4gU28gd2UgZG9uJ3QgdXNlIGd1 YXJkIHBhZ2VzIGluCi0gLy8gTmFDbC4KLSsvLyBUaGUgc2FtZSBpc3N1ZSBob2xkcyBmb3IgcHBj NjQgc3lzdGVtcywgd2hpY2ggdXNlIGEgNjRrIHBhZ2Ugc2l6ZS4KLSBjb25zdGV4cHIgc2l6ZV90 IGtCbGlua0d1YXJkUGFnZVNpemUgPSAwOwotICNlbHNlCi0gY29uc3RleHByIHNpemVfdCBrQmxp bmtHdWFyZFBhZ2VTaXplID0gYmFzZTo6a1N5c3RlbVBhZ2VTaXplOwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9y bS93dGYvZHRvYS91dGlscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9kdG9hL3V0aWxzLmgKLUBA IC00NSw3ICs0NSw3IEBACi0gLy8gZGlzYWJsZWQuKQotIC8vIE9uIExpbnV4LHg4NiA4OTI1NWUt MjIgIT0gRGl2X2RvdWJsZSg4OTI1NS4wLzFlMjIpCi0gI2lmIGRlZmluZWQoX01fWDY0KSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19BUk1FTF9fKSB8fCBcCi0tICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19NSVBTRUxfXykKLSsgICAgZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgZGVmaW5lZChfX01JUFNFTF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p Ci0gI2RlZmluZSBET1VCTEVfQ09OVkVSU0lPTl9DT1JSRUNUX0RPVUJMRV9PUEVSQVRJT05TIDEK LSAjZWxpZiBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX19pMzg2X18pCi0gI2lmIGRlZmlu ZWQoX1dJTjMyKQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCi1AQCAtMTAwLDYgKzEwMCwxMyBA QCBpZiAoaXNfd2luICYmICFpc19tc2FuICYmIGN1cnJlbnRfY3B1ICE9ICJhcm02NCIpIHsKLSAg ICAgICB9IGVsc2UgewotICAgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZp ZyIgXQotICAgICAgIH0KLSsgICAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7 Ci0rICAgICAgaWYgKGlzX2xpbnV4KSB7Ci0rICAgICAgICAjIFRPRE86IHBwYzY0IChiZSkgY2hl Y2sKLSsgICAgICAgIHNvdXJjZXMgKz0gY3J5cHRvX3NvdXJjZXNfbGludXhfcHBjNjRsZQotKyAg ICAgIH0gZWxzZSB7Ci0rICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29uZmln IiBdCi0rICAgICAgfQotICAgICB9IGVsc2UgewotICAgICAgIHB1YmxpY19jb25maWdzID0gWyAi Om5vX2FzbV9jb25maWciIF0KLSAgICAgfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaAotQEAgLTQ0LDYgKzQ0 LDggQEAgdHlwZWRlZiBNRFJhd0NvbnRleHRBUk0gUmF3Q29udGV4dENQVTsKLSB0eXBlZGVmIE1E UmF3Q29udGV4dEFSTTY0X09sZCBSYXdDb250ZXh0Q1BVOwotICNlbGlmIGRlZmluZWQoX19taXBz X18pCi0gdHlwZWRlZiBNRFJhd0NvbnRleHRNSVBTIFJhd0NvbnRleHRDUFU7Ci0rI2VsaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgTURSYXdDb250ZXh0UFBDNjQgUmF3Q29udGV4 dENQVTsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8g eW91ciBwbGF0Zm9ybSB5ZXQuIgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYwotQEAgLTI3MCw3ICsyNzAs NDIgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQp IGNvbnN0IHsKLSAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4dC5mcGNfZWlyOwotICNl bmRpZgotIH0KLS0jZW5kaWYgIC8vIF9fbWlwc19fCi0rCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQotKwotK3VpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIo KSBjb25zdCB7Ci0rICAgIHJldHVybiBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rfQotKwot K3ZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25z dCB7Ci0rICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVMTDsKLSsg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQot KyAgICAgICAgb3V0LT5ncHJbaV0gPSBtY29udGV4dC5ncF9yZWdzW2ldOwotKwotKyAgICBvdXQt PmxyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9MTktdOwotKyAgICBvdXQtPnNycjAgPSBtY29udGV4 dC5ncF9yZWdzW1BUX05JUF07Ci0rICAgIG91dC0+c3JyMSA9IG1jb250ZXh0LmdwX3JlZ3NbUFRf TVNSXTsKLSsgICAgb3V0LT5jciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsKLSsgICAgb3V0 LT54ZXIgPSBtY29udGV4dC5ncF9yZWdzW1BUX1hFUl07Ci0rICAgIG91dC0+Y3RyID0gbWNvbnRl eHQuZ3BfcmVnc1tQVF9DVFJdOwotKyAgICAKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9G TE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKLSsgICAgICAgIG91dC0+ZmxvYXRf c2F2ZS5mcHJlZ3NbaV0gPSBtY29udGV4dC5mcF9yZWdzW2ldOwotKwotKyAgICBvdXQtPmZsb2F0 X3NhdmUuZnBzY3IgPSBtY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKLSsKLSsgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykKLSsgICAg ICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKLSsgICAgICAgICAgICB7KCgodWlu dDY0X3QpdnJlZ3MudnJyZWdzW2ldWzBdKSA8PCAzMikgCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICB8IHZyZWdzLnZycmVnc1tpXVsxXSwgCi0rICAgICAgICAgICAgKCgodWludDY0X3QpdnJl Z3MudnJyZWdzW2ldWzJdKSA8PCAzMikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVn cy52cnJlZ3NbaV1bM119OwotKwotKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLnZyc2F2ZTsKLSsg ICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MudnNjci52c2NyX3dvcmR9 OwotKyAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7IAotK30K LSsjZW5kaWYgIC8vIF9fcG93ZXJwYzY0X18KLSAKLSB2b2lkIFRocmVhZEluZm86OkdldEdlbmVy YWxQdXJwb3NlUmVnaXN0ZXJzKHZvaWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgIGFz c2VydChncF9yZWdzIHx8IHNpemUpOwotQEAgLTI3OSw2ICszMTQsMTEgQEAgdm9pZCBUaHJlYWRJ bmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6ZV90KiBz aXplKSB7Ci0gICAgICpncF9yZWdzID0gbWNvbnRleHQuZ3JlZ3M7Ci0gICBpZiAoc2l6ZSkKLSAg ICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3JlZ3MpOwotKyNlbGlmIGRlZmluZWQoX19wb3dl cnBjNjRfXykKLSsgIGlmIChncF9yZWdzKQotKyAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdwX3Jl Z3M7Ci0rICBpZiAoc2l6ZSkKLSsgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3BfcmVncyk7 Ci0gI2Vsc2UKLSAgIGlmIChncF9yZWdzKQotICAgICAqZ3BfcmVncyA9ICZyZWdzOwotQEAgLTI5 NCw2ICszMzQsMTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJz KHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKLSAgICAgKmZwX3JlZ3MgPSAmbWNvbnRl eHQuZnByZWdzOwotICAgaWYgKHNpemUpCi0gICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZw cmVncyk7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgaWYgKGZwX3JlZ3MpCi0r ICAgICpmcF9yZWdzID0gJm1jb250ZXh0LmZwX3JlZ3M7Ci0rICBpZiAoc2l6ZSkKLSsgICAgKnNp emUgPSBzaXplb2YobWNvbnRleHQuZnBfcmVncyk7Ci0gI2Vsc2UKLSAgIGlmIChmcF9yZWdzKQot ICAgICAqZnBfcmVncyA9ICZmcHJlZ3M7Ci1AQCAtMzAyLDQgKzM0NywxMyBAQCB2b2lkIFRocmVh ZEluZm86OkdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCog c2l6ZSkgewotICNlbmRpZgotIH0KLSAKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3Zv aWQgVGhyZWFkSW5mbzo6R2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVfdCog c2l6ZSkgewotKyAgICBpZiAodl9yZWdzKQotKyAgICAgICAgKnZfcmVncyA9ICZ2cmVnczsKLSsg ICAgaWYgKHNpemUpCi0rICAgICAgICAqc2l6ZSA9IHNpemVvZih2cmVncyk7Ci0rfQotKyNlbmRp ZgotKwotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uaAotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCi1AQCAtNjgs NiArNjgsMTAgQEAgc3RydWN0IFRocmVhZEluZm8gewotICAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmVz IGRlZmluZWQgaW4gPHN5cy91c2VyLmg+Ci0gICBzdHJ1Y3QgdXNlcl9yZWdzX3N0cnVjdCByZWdz OwotICAgc3RydWN0IHVzZXJfZnBzaW1kX3N0cnVjdCBmcHJlZ3M7Ci0rI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQotKyAgLy8gVXNlIHRoZSBzdHJ1Y3R1cmVzIGRlZmluZWQgaW4gPHN5cy91 Y29udGV4dC5oPi4KLSsgIG1jb250ZXh0X3QgbWNvbnRleHQ7Ci0rICB2cnJlZ3NldF90IHZyZWdz OwotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gICAvLyBVc2UgdGhlIHN0cnVjdHVyZSBkZWZp bmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCi0gICBtY29udGV4dF90IG1jb250ZXh0OwotQEAgLTg0 LDYgKzg4LDExIEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAKLSAgIC8vIFJldHVybnMgdGhlIHBv aW50ZXIgYW5kIHNpemUgb2YgZmxvYXQgcG9pbnQgcmVnaXN0ZXIgYXJlYS4KLSAgIHZvaWQgR2V0 RmxvYXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKTsKLSsK LSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gUmV0dXJucyB0aGUgcG9pbnRlciBh bmQgc2l6ZSBvZiB0aGUgdmVjdG9yIHJlZ2lzdGVyIGFyZWEuIChQUEM2NCBvbmx5KQotKyAgdm9p ZCBHZXRWZWN0b3JSZWdpc3RlcnModm9pZCoqIHZfcmVncywgc2l6ZV90KiBzaXplKTsKLSsjZW5k aWYKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3Jl YWRlci5jYwotQEAgLTI1NCw2ICsyNTQsNDggQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQ VUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YykgewotICAg b3V0LT5mbG9hdF9zYXZlLmZpciA9IHVjLT51Y19tY29udGV4dC5mcGNfZWlyOyAgLy8gVW51c2Vk LgotICNlbmRpZgotIH0KLSsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rCi0rdWlu dHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCog dWMpIHsKLSsgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBD NjRfUkVHX1NQXTsKLSt9Ci0rCi0rdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVj dGlvblBvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKLSsgICAgcmV0dXJuIHVjLT51Y19t Y29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rfQotKwotK3ZvaWQgVUNvbnRleHRSZWFkZXI6OkZp bGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMsCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCogdnJl Z3MpIHsKLSsgICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9QUEM2NF9GVUxMOwot KwotKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBp KyspCi0rICAgICAgICBvdXQtPmdwcltpXSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW2ldOwot KwotKyAgICBvdXQtPmxyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsgICAgCi0r ICAgIG91dC0+c3JyMCA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07Ci0rICAgIG91 dC0+c3JyMSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl07Ci0rICAgIG91dC0+Y3Ig PSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdOwotKyAgICBvdXQtPnhlciA9IHVjLT51 Y19tY29udGV4dC5ncF9yZWdzW1BUX1hFUl07Ci0rICAgIG91dC0+Y3RyID0gdWMtPnVjX21jb250 ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSsgICAgCi0rICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURf RkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0rICAgICAgICBvdXQtPmZsb2F0 X3NhdmUuZnByZWdzW2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbaV07Ci0rCi0rICAgIG91 dC0+ZmxvYXRfc2F2ZS5mcHNjciA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsK LSsKLSsgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09V TlQ7IGkrKykKLSsgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9Ci0rICAgICAg ICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMF0pIDw8IDMyKSAKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzFdLCAKLSsgICAgICAgICAgICAg KCgodWludDY0X3QpdnJlZ3MtPnZycmVnc1tpXVsyXSkgPDwgMzIpCi0rICAgICAgICAgICAgICAg ICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tpXVszXX07Ci0rCi0rICAgIG91dC0+dnJzYXZlID0g dnJlZ3MtPnZyc2F2ZTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJl Z3MtPnZzY3IudnNjcl93b3JkfTsKLSsgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQg PSAweEZGRkZGRkZGOyAKLSt9Ci0rCi0gI2VuZGlmCi0gCi0gfSAgLy8gbmFtZXNwYWNlIGdvb2ds ZV9icmVha3BhZAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1v bi91Y29udGV4dF9yZWFkZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3Jp dGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAotQEAgLTU0LDYgKzU0LDkgQEAgc3RydWN0IFVD b250ZXh0UmVhZGVyIHsKLSAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgc3RhdGljIHZv aWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1 YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRfY29u dGV4dCogZnByZWdzKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBzdGF0aWMg dm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3Qg KnVjLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCogdnJl Z3MpOwotICNlbHNlCi0gICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BV ICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKTsKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwotQEAgLTQ2Nyw5ICs0Njcs MTYgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwoaW50IC8qc2lnKi8sIHNp Z2luZm9fdCogaW5mbywgdm9pZCogdWMpIHsKLSAgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRf LmZsb2F0X3N0YXRlLCBmcF9wdHIsCi0gICAgICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250ZXh0 Xy5mbG9hdF9zdGF0ZSkpOwotICAgfQotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg IC8vIE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKLSsgIHVjb250ZXh0X3QqIHVjX3B0 ciA9ICh1Y29udGV4dF90Kil1YzsKLSsgIGlmICh1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncykg ewotKyAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlLCB1Y19wdHItPnVj X21jb250ZXh0LnZfcmVncywKLSsgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRfLnZl Y3Rvcl9zdGF0ZSkpOwotKyAgfQotICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRl ZmluZWQoX19taXBzX18pCi0gICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBv biBBUk0gTGludXguCi0tICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxy ZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSsgIC8vIEluIGNhc2Ugb2YgTUlQUywgTGludXggRlAg c3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKLSAgIC8vIGFuZCAnZmxvYXRfc3Rh dGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCi0gICB1Y29udGV4dF90KiB1Y19w dHIgPSAodWNvbnRleHRfdCopdWM7Ci0gICBpZiAodWNfcHRyLT51Y19tY29udGV4dC5mcHJlZ3Mp IHsKLUBAIC03MDcsMTEgKzcxNCwxOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWlu aWR1bXAoKSB7Ci0gICB9Ci0gI2VuZGlmCi0gCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykg JiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiAhZGVm aW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChf X21pcHNfXykgXAotKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotICAgLy8gRlBVIHN0 YXRlIGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCi0gICBtZW1jcHkoJmNvbnRl eHQuZmxvYXRfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4dC5mcHJlZ3MsCi0gICAg ICAgICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKLSAjZW5kaWYKLSsKLSsjaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQotKyAgLy8gVmVjdG9yIHJlZ2lzdGVycyBtdXN0IGJlIGNvcGll ZCBvbiBQUEM2NAotKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0ZSwgY29udGV4dC5jb250 ZXh0LnVjX21jb250ZXh0LnZfcmVncywKLSsgICAgICAgICBzaXplb2YoY29udGV4dC52ZWN0b3Jf c3RhdGUpKTsKLSsjZW5kaWYKLSsKLSAgIGNvbnRleHQudGlkID0gc3lzX2dldHRpZCgpOwotIAot ICAgLy8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlkdW1wIGZvciBiZXR0ZXIg cmVwb3J0aW5nLgotQEAgLTczMiw2ICs3NDcsOSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6Oldy aXRlTWluaWR1bXAoKSB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnRleHQuc2ln aW5mby5zaV9hZGRyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNv bnRleHQudWNfbWNvbnRleHQucGMpOwotKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsg IGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KLSsgICAgICByZWludGVycHJldF9jYXN0PHZvaWQq Pihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdKTsKLSAjZWxzZQot ICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5 ZXQuIgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0 aW9uX2hhbmRsZXIuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0 aW9uX2hhbmRsZXIuaAotQEAgLTE5Miw3ICsxOTIsMTEgQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxl ciB7Ci0gICAgIHNpZ2luZm9fdCBzaWdpbmZvOwotICAgICBwaWRfdCB0aWQ7ICAvLyB0aGUgY3Jh c2hpbmcgdGhyZWFkLgotICAgICB1Y29udGV4dF90IGNvbnRleHQ7Ci0tI2lmICFkZWZpbmVkKF9f QVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBj NjRfXykKLSsgICAgLy8gUFBDNjQncyBGUCBzdGF0ZSBpcyBhIHBhcnQgb2YgdWNvbnRleHRfdCBs aWtlIE1JUFMgYnV0IHRoZSB2ZWN0b3IKLSsgICAgLy8gc3RhdGUgaXMgbm90LCBzbyBhIHN0cnVj dCBpcyBuZWVkZWQuCi0rICAgIHZzdGF0ZV90IHZlY3Rvcl9zdGF0ZTsKLSsjZWxpZiAhZGVmaW5l ZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAvLyAjaWZkZWYgdGhp cyBvdXQgYmVjYXVzZSBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBmb3IgTGludXgg QVJNLgotICAgICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBw YXJ0IG9mIHVjb250ZXh0X3Qgc28KLSAgICAgLy8gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVxdWly ZWQuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxl cl91bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0 aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKLUBAIC0zMDcsNyArMzA3LDcgQEAgVEVTVChFeGNlcHRp b25IYW5kbGVyVGVzdCwgUGFyYWxsZWxDaGlsZENyYXNoZXNEb250SGFuZykgewotICAgfQotIAot ICAgLy8gV2FpdCBhIHdoaWxlIHVudGlsIHRoZSBjaGlsZCBzaG91bGQgaGF2ZSBjcmFzaGVkLgot LSAgdXNsZWVwKDEwMDAwMDApOwotKyAgdXNsZWVwKDIwMDAwMDApOwotICAgLy8gS2lsbCB0aGUg Y2hpbGQgaWYgaXQgaXMgc3RpbGwgcnVubmluZy4KLSAgIGtpbGwoY2hpbGQsIFNJR0tJTEwpOwot IAotQEAgLTU3Niw2ICs1NzYsOCBAQCBjb25zdCB1bnNpZ25lZCBjaGFyIGtJbGxlZ2FsSW5zdHJ1 Y3Rpb25bXSA9IHsKLSAjaWYgZGVmaW5lZChfX21pcHNfXykKLSAgIC8vIG1mYzIgemVybyxJbXBs IC0gdXN1YWxseSBpbGxlZ2FsIGluIHVzZXJzcGFjZS4KLSAgIDB4NDgsIDB4MDAsIDB4MDAsIDB4 NDgKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAweDAxLCAweDAxLCAweDAxLCAw eDAxIC8vIENyYXNoZXMgb24gYSB0ZXN0ZWQgUE9XRVI5IGNwdQotICNlbHNlCi0gICAvLyBUaGlz IGNyYXNoZXMgd2l0aCBTSUdJTEwgb24geDg2L3g4Ni02NC9hcm0uCi0gICAweGZmLCAweGZmLCAw eGZmLCAweGZmCi1AQCAtNzcxLDEwICs3NzMsMTAgQEAgVEVTVChFeGNlcHRpb25IYW5kbGVyVGVz dCwgSW5zdHJ1Y3Rpb25Qb2ludGVyTWVtb3J5TWF4Qm91bmQpIHsKLSAKLSAgIC8vIFRoZXNlIGFy ZSBkZWZpbmVkIGhlcmUgc28gdGhlIHBhcmVudCBjYW4gdXNlIHRoZW0gdG8gY2hlY2sgdGhlCi0g ICAvLyBkYXRhIGZyb20gdGhlIG1pbmlkdW1wIGFmdGVyd2FyZHMuCi0tICAvLyBVc2UgNGsgaGVy ZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2luZ2xlIHBhZ2UgZXZlbgotKyAgLy8g VXNlIHRoZSBwYWdlIHNpemUgaGVyZSBiZWNhdXNlIHRoZSBPUyB3aWxsIGhhbmQgb3V0IGEgc2lu Z2xlIHBhZ2UgZXZlbgotICAgLy8gaWYgYSBzbWFsbGVyIHNpemUgaXMgcmVxdWVzdGVkLCBhbmQg dGhpcyB0ZXN0IHdhbnRzIHRvCi0gICAvLyB0ZXN0IHRoZSB1cHBlciBib3VuZCBvZiB0aGUgbWVt b3J5IHJhbmdlLgotLSAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSA0MDk2OyAgLy8gYnl0 ZXMKLSsgIGNvbnN0IHVpbnQzMl90IGtNZW1vcnlTaXplID0gZ2V0cGFnZXNpemUoKTsgIC8vIGJ5 dGVzCi0gICBjb25zdCBpbnQga09mZnNldCA9IGtNZW1vcnlTaXplIC0gc2l6ZW9mKGtJbGxlZ2Fs SW5zdHJ1Y3Rpb24pOwotIAotICAgY29uc3QgcGlkX3QgY2hpbGQgPSBmb3JrKCk7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBf d3JpdGVyLmNjCi1AQCAtMTM4LDcgKzEzOCw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0g ICAgICAgICAgICAgICAgICAgY29uc3QgTWljcm9kdW1wRXh0cmFJbmZvJiBtaWNyb2R1bXBfZXh0 cmFfaW5mbywKLSAgICAgICAgICAgICAgICAgICBMaW51eER1bXBlciogZHVtcGVyKQotICAgICAg IDogdWNvbnRleHRfKGNvbnRleHQgPyAmY29udGV4dC0+Y29udGV4dCA6IE5VTEwpLAotLSNpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0rICAgICAgICB2ZWN0b3Jfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4 dC0+dmVjdG9yX3N0YXRlIDogTlVMTCksCi0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAm JiAhZGVmaW5lZChfX21pcHNfXykKLSAgICAgICAgIGZsb2F0X3N0YXRlXyhjb250ZXh0ID8gJmNv bnRleHQtPmZsb2F0X3N0YXRlIDogTlVMTCksCi0gI2VuZGlmCi0gICAgICAgICBkdW1wZXJfKGR1 bXBlciksCi1AQCAtMzM3LDYgKzMzOSw4IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7Ci0gIyBl bHNlCi0gIyAgZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQg KG4zMikiCi0gI2VuZGlmCi0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICBjb25z dCBjaGFyIGtBcmNoW10gPSAicHBjNjQiOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFz IG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKLSAjZW5kaWYKLUBAIC00MDks NyArNDEzLDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKLSAgIHZvaWQgRHVtcENQVVN0YXRl KCkgewotICAgICBSYXdDb250ZXh0Q1BVIGNwdTsKLSAgICAgbXlfbWVtc2V0KCZjcHUsIDAsIHNp emVvZihSYXdDb250ZXh0Q1BVKSk7Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRl ZmluZWQoX19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgVUNvbnRl eHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgdmVjdG9yX3N0YXRlXyk7 Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAg ICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KCZjcHUsIHVjb250ZXh0XywgZmxvYXRf c3RhdGVfKTsKLSAjZWxzZQotICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoJmNw dSwgdWNvbnRleHRfKTsKLUBAIC02MDUsNyArNjExLDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVy IHsKLSAgIHZvaWQqIEFsbG9jKHVuc2lnbmVkIGJ5dGVzKSB7IHJldHVybiBkdW1wZXJfLT5hbGxv Y2F0b3IoKS0+QWxsb2MoYnl0ZXMpOyB9Ci0gCi0gICBjb25zdCB1Y29udGV4dF90KiBjb25zdCB1 Y29udGV4dF87Ci0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBz X18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgIGNvbnN0IGdvb2dsZV9icmVha3Bh ZDo6dnN0YXRlX3QqIGNvbnN0IHZlY3Rvcl9zdGF0ZV87Ci0rI2VsaWYgIWRlZmluZWQoX19BUk1f RUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSAgIGNvbnN0IGdvb2dsZV9icmVha3BhZDo6 ZnBzdGF0ZV90KiBjb25zdCBmbG9hdF9zdGF0ZV87Ci0gI2VuZGlmCi0gICBMaW51eER1bXBlciog ZHVtcGVyXzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21p Y3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKLUBAIC0yNzgsMTAg KzI3OCwxOSBAQCBURVNUKE1pY3JvZHVtcFdyaXRlclRlc3QsIEJhc2ljV2l0aE1hcHBpbmdzKSB7 Ci0gICBDcmFzaEFuZEdldE1pY3JvZHVtcChtYXBwaW5ncywgTWljcm9kdW1wRXh0cmFJbmZvKCks ICZidWYpOwotICAgQVNTRVJUX1RSVUUoQ29udGFpbnNNaWNyb2R1bXAoYnVmKSk7Ci0gCi0rICBp bnQgcGFnZV9zaXplID0gZ2V0cGFnZXNpemUoKTsKLSAjaWZkZWYgX19MUDY0X18KLS0gIEFTU0VS VF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLS0gICAgICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAw MDAwMDAxMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCi0tICAgICAgICAg ICAgICAgICAgICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28i KSk7Ci0rICAvLyBUaGlzIHRlc3QgaXMgb25seSBhdmFpbGFibGUgZm9yIHRoZSBmb2xsb3dpbmcg cGFnZSBzaXplcwotKyAgQVNTRVJUX1RSVUUoKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB8fCAocGFnZV9z aXplID09IDY1NTM2KSk7Ci0rICBpZiAocGFnZV9zaXplID09IDQwOTYpIHsgCi0rICAgIEFTU0VS VF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLSsgICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAw MDAwMDAwMDEwMDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDAxMDAwICIKLSsgICAgICAg ICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9v LnNvIikpOwotKyAgfSBlbHNlIHsKLSsgICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9zLAot KyAgICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAxMDAwMCAwMDAwMDAwMDAwMDAw MDJBIDAwMDAwMDAwMDAwMTAwMDAgIgotKyAgICAgICAgICAgICAgICAgICAgICAgIjMzMjIxMTAw NTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7Ci0rICB9Ci0gI2Vsc2UKLSAg IEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6bnBvcywKLSAgICAgICAgICAgICBidWYuZmluZCgiTSAw MDAwMTAwMCAwMDAwMDAyQSAwMDAwMTAwMCAiCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv bWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCi1AQCAtMTE2LDYg KzExNiw5IEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpHZXRUaHJlYWRJbmZvQnlJbmRleChzaXpl X3QgaW5kZXgsIFRocmVhZEluZm8qIGluZm8pIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQot ICAgc3RhY2tfcG9pbnRlciA9Ci0gICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5m by0+bWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JFR19TUF0pOwotKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKLSsgIHN0YWNrX3BvaW50ZXIgPQotKyAgICAgIHJlaW50ZXJwcmV0 X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9S RUdfU1BdKTsKLSAjZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhc24ndCBiZWVuIHBvcnRlZCB0 byB5b3VyIHBsYXRmb3JtIHlldC4iCi0gI2VuZGlmCi1AQCAtMjAwLDcgKzIwMywxMCBAQCBib29s IExpbnV4Q29yZUR1bXBlcjo6RW51bWVyYXRlVGhyZWFkcygpIHsKLSAgICAgICAgIG1lbXNldCgm aW5mbywgMCwgc2l6ZW9mKFRocmVhZEluZm8pKTsKLSAgICAgICAgIGluZm8udGdpZCA9IHN0YXR1 cy0+cHJfcGdycDsKLSAgICAgICAgIGluZm8ucHBpZCA9IHN0YXR1cy0+cHJfcHBpZDsKLS0jaWYg ZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAg Zm9yIChpbnQgaSA9IDA7IGkgPCAzMTsgaSsrKQotKyAgICAgICAgICAgIGluZm8ubWNvbnRleHQu Z3BfcmVnc1tpXSA9IHN0YXR1cy0+cHJfcmVnW2ldOwotKyNlbGlmIGRlZmluZWQoX19taXBzX18p Ci0gI2lmIGRlZmluZWQoX19BTkRST0lEX18pCi0gICAgICAgICBmb3IgKGludCBpID0gRUZfUjA7 IGkgPD0gRUZfUjMxOyBpKyspCi0gICAgICAgICAgIGluZm8ubWNvbnRleHQuZ3JlZ3NbaSAtIEVG X1IwXSA9IHN0YXR1cy0+cHJfcmVnW2ldOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21p bmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCi1AQCAtNzk4LDcgKzc5OCw5IEBAIGJv b2wgTGludXhEdW1wZXI6OkdldFN0YWNrSW5mbyhjb25zdCB2b2lkKiogc3RhY2ssIHNpemVfdCog c3RhY2tfbGVuLAotICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGludF9zdGFja19w b2ludGVyICYgfihwYWdlX3NpemUgLSAxKSk7Ci0gCi0gICAvLyBUaGUgbnVtYmVyIG9mIGJ5dGVz IG9mIHN0YWNrIHdoaWNoIHdlIHRyeSB0byBjYXB0dXJlLgotLSAgc3RhdGljIGNvbnN0IHB0cmRp ZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSAzMiAqIDEwMjQ7Ci0rICAvLyBUaGlzIG5vdyBkZXBlbmRz IG9uIHBhZ2Vfc2l6ZSB0byBhdm9pZCBtaXNzaW5nIGRhdGEKLSsgIC8vIG9uIHN5c3RlbXMgd2l0 aCBsYXJnZXIgcGFnZSBzaXplcy4KLSsgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0YWNrVG9D YXB0dXJlID0gOCAqIHBhZ2Vfc2l6ZTsKLSAKLSAgIGNvbnN0IE1hcHBpbmdJbmZvKiBtYXBwaW5n ID0gRmluZE1hcHBpbmcoc3RhY2tfcG9pbnRlcik7Ci0gICBpZiAoIW1hcHBpbmcpCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCi0rKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCi1A QCAtNjAsNyArNjAsOCBAQCBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKLSAgKGRlZmluZWQo X19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJTzMyKQotIHR5cGVkZWYgRWxmMzJfYXV4dl90 IGVsZl9hdXhfZW50cnk7Ci0gI2VsaWYgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgXAotLSAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBf QUJJTzMyKQotKyAgICAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJTzMy KSB8fCBcCi0rICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gdHlwZWRlZiBFbGY2NF9hdXh2 X3QgZWxmX2F1eF9lbnRyeTsKLSAjZW5kaWYKLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRl c3RfaGVscGVyLmNjCi1AQCAtNTEsNiArNTEsOCBAQAotICNkZWZpbmUgVElEX1BUUl9SRUdJU1RF UiAicmN4IgotICNlbGlmIGRlZmluZWQoX19taXBzX18pCi0gI2RlZmluZSBUSURfUFRSX1JFR0lT VEVSICIkMSIKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rI2RlZmluZSBUSURfUFRS X1JFR0lTVEVSICJyOCIKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFzIG5vdCBiZWVuIHBv cnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MKLUBA IC0xNTQsMTkgKzE1NCwyNyBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpDb3B5RnJvbVByb2Nl c3Modm9pZCogZGVzdCwgcGlkX3QgY2hpbGQsCi0gICByZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0tYm9v bCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8sIHBp ZF90IHRpZCkKLS17Ci0rYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRo cmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkgewotICNpZmRlZiBQVFJBQ0VfR0VUUkVHU0VUCi0g ICBzdHJ1Y3QgaW92ZWMgaW87Ci0gICBpbmZvLT5HZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycygm aW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKLS0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRS RUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAg aWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZv aWQqKSZpbykgPT0gLTEpIHsKLSAgICAgcmV0dXJuIGZhbHNlOwotICAgfQotIAotICAgaW5mby0+ R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKLS0g IGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VU LCAodm9pZCopJmlvKSA9PSAtMSkgewotKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0 aWQsICh2b2lkKilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKLSAgICAgcmV0dXJu IGZhbHNlOwotICAgfQotKwotKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBHcmFi IHRoZSB2ZWN0b3IgcmVnaXN0ZXJzIG9uIFBQQzY0IHRvbwotKyAgaW5mby0+R2V0VmVjdG9yUmVn aXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOwotKyAgaWYgKHB0cmFjZShQVFJBQ0Vf R0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUENfVk1YLCAodm9pZCopJmlvKSA9PSAtMSkgewot KyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rI2VuZGlmIC8vIGRlZmluZWQoX19wb3dlcnBjNjRf XykKLSsKLSAgIHJldHVybiB0cnVlOwotICNlbHNlCi0gICByZXR1cm4gZmFsc2U7Ci1AQCAtMzAz LDYgKzMxMSw5IEBAIGJvb2wgTGludXhQdHJhY2VEdW1wZXI6OkdldFRocmVhZEluZm9CeUluZGV4 KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyogaW5mbykgewotICNlbGlmIGRlZmluZWQoX19taXBz X18pCi0gICBzdGFja19wb2ludGVyID0KLSAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3Qq PihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSk7Ci0rI2VsaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgc3RhY2tfcG9pbnRlciA9Ci0rICAgICAgcmVpbnRl cnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQ QzY0X1JFR19TUF0pOwotICNlbHNlCi0gI2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJlZW4gcG9y dGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2Vf ZHVtcGVyX3VuaXR0ZXN0LmNjCi1AQCAtNDU3LDYgKzQ1Nyw5IEBAIFRFU1QoTGludXhQdHJhY2VE dW1wZXJUZXN0LCBWZXJpZnlTdGFja1JlYWRXaXRoTXVsdGlwbGVUaHJlYWRzKSB7Ci0gI2VsaWYg ZGVmaW5lZChfX21pcHNfXykKLSAgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9uID0KLSAg ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0LmdyZWdz WzFdKTsKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAgIHBpZF90KiBwcm9jZXNz X3RpZF9sb2NhdGlvbiA9Ci0rICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3Ro cmVhZC5tY29udGV4dC5ncF9yZWdzWzhdKTsKLSAjZWxzZQotICNlcnJvciBUaGlzIHRlc3QgaGFz IG5vdCBiZWVuIHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgotICNlbmRpZgotQEAgLTU1Myw2ICs1 NTYsOCBAQCBURVNUX0YoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBTYW5pdGl6ZVN0YWNrQ29weSkg ewotICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4OwotICNlbGlm IGRlZmluZWQoX19taXBzX18pCi0gICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFkX2luZm8u bWNvbnRleHQuZ3JlZ3NbMV07Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgdWlu dHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3NbOF07Ci0gI2Vs c2UKLSAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9y bS4KLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIv bWluaWR1bXBfd3JpdGVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBf d3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYwotQEAgLTEzNiw3ICsxMzYsOSBAQCBjbGFzcyBNaW5p ZHVtcFdyaXRlciB7Ci0gICAgICAgOiBmZF8obWluaWR1bXBfZmQpLAotICAgICAgICAgcGF0aF8o bWluaWR1bXBfcGF0aCksCi0gICAgICAgICB1Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0LT5j b250ZXh0IDogTlVMTCksCi0tI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQo X19taXBzX18pCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsgICAgICAgIHZlY3Rvcl9z dGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKLSsjZWxpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgICAgICAgZmxv YXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKLSAjZW5k aWYKLSAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKLUBAIC00NjgsNyArNDcwLDkgQEAgY2xhc3Mg TWluaWR1bXBXcml0ZXIgewotICAgICAgICAgaWYgKCFjcHUuQWxsb2NhdGUoKSkKLSAgICAgICAg ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgbXlfbWVtc2V0KGNwdS5nZXQoKSwgMCwgc2l6ZW9m KFJhd0NvbnRleHRDUFUpKTsKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5l ZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgICAgICAgVUNvbnRl eHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3Rh dGVfKTsKLSsjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19f KQotICAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNv bnRleHRfLCBmbG9hdF9zdGF0ZV8pOwotICNlbHNlCi0gICAgICAgICBVQ29udGV4dFJlYWRlcjo6 RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8pOwotQEAgLTg5MSw3ICs4OTUsNyBA QCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7Ci0gICAgIGRpcmVudC0+bG9jYXRpb24ucnZhID0gMDsK LSAgIH0KLSAKLS0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKQotKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK LSAgIGJvb2wgV3JpdGVDUFVJbmZvcm1hdGlvbihNRFJhd1N5c3RlbUluZm8qIHN5c19pbmZvKSB7 Ci0gICAgIGNoYXIgdmVuZG9yX2lkW3NpemVvZihzeXNfaW5mby0+Y3B1Lng4Nl9jcHVfaW5mby52 ZW5kb3JfaWQpICsgMV0gPSB7MH07Ci0gICAgIHN0YXRpYyBjb25zdCBjaGFyIHZlbmRvcl9pZF9u YW1lW10gPSAidmVuZG9yX2lkIjsKLUBAIC05MTEsNyArOTE1LDkgQEAgY2xhc3MgTWluaWR1bXBX cml0ZXIgewotIAotICAgICAvLyBwcm9jZXNzb3JfYXJjaGl0ZWN0dXJlIHNob3VsZCBhbHdheXMg YmUgc2V0LCBkbyB0aGlzIGZpcnN0Ci0gICAgIHN5c19pbmZvLT5wcm9jZXNzb3JfYXJjaGl0ZWN0 dXJlID0KLS0jaWYgZGVmaW5lZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQotKyAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NDsKLSsjZWxpZiBkZWZpbmVkKF9f bWlwc19fKQotICMgaWYgX01JUFNfU0lNID09IF9BQklPMzIKLSAgICAgICAgIE1EX0NQVV9BUkNI SVRFQ1RVUkVfTUlQUzsKLSAjIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAotQEAgLTEzMjcsNyAr MTMzMyw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKLSAgIGNvbnN0IGNoYXIqIHBhdGhfOyAg Ly8gUGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRlbi4K LSAKLSAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsgIC8vIGFsc28gZnJvbSB0 aGUgc2lnbmFsIGhhbmRsZXIKLS0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5l ZChfX21pcHNfXykKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotKyAgY29uc3QgZ29vZ2xl X2JyZWFrcGFkOjp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRlXzsKLSsjZWxpZiAhZGVmaW5l ZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQotICAgY29uc3QgZ29vZ2xlX2Jy ZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsgIC8vIGRpdHRvCi0gI2VuZGlm Ci0gICBMaW51eER1bXBlciogZHVtcGVyXzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKLUBAIC00Nyw2ICs0Nyw4IEBA IGNsYXNzIEV4Y2VwdGlvbkhhbmRsZXI7Ci0gCi0gI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCi0g dHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OwotKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKLSt0eXBlZGVmIHZycmVnc2V0X3QgdnN0YXRlX3Q7Ci0gI2VsaWYgIWRl ZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKLSB0eXBlZGVmIHN0cnVj dCBfZnBzdGF0ZSBmcHN0YXRlX3Q7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRl c3QuY2MKLUBAIC03MTAsNiArNzEwLDkgQEAgVEVTVChNaW5pZHVtcFdyaXRlclRlc3QsIEludmFs aWRTdGFja1BvaW50ZXIpIHsKLSAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQotICAgY29udGV4dC5j b250ZXh0LnVjX21jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdID0KLSAgICAg ICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9S RUdfU1BdID0KLSsgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7Ci0gI2Vsc2UKLSAjIGVycm9y ICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCi0g I2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCi1AQCAt NjUsOCArNjUsNyBAQCBib29sIE1lbW9yeU1hcHBlZEZpbGU6Ok1hcChjb25zdCBjaGFyKiBwYXRo LCBzaXplX3Qgb2Zmc2V0KSB7Ci0gICB9Ci0gCi0gI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAotLSAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQ U19TSU0gPT0gX0FCSTY0KQotLQotKyAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0g PT0gX0FCSTY0KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gICBzdHJ1Y3Qga2VybmVsX3N0 YXQgc3Q7Ci0gICBpZiAoc3lzX2ZzdGF0KGZkLCAmc3QpID09IC0xIHx8IHN0LnN0X3NpemUgPCAw KSB7Ci0gI2Vsc2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2Zp bGVfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVk X2ZpbGVfdW5pdHRlc3QuY2MKLUBAIC0xNzYsOSArMTc2LDEwIEBAIFRFU1RfRihNZW1vcnlNYXBw ZWRGaWxlVGVzdCwgUmVtYXBBZnRlck1hcCkgewotIFRFU1RfRihNZW1vcnlNYXBwZWRGaWxlVGVz dCwgTWFwV2l0aE9mZnNldCkgewotICAgLy8gUHV0IG1vcmUgZGF0YSBpbiB0aGUgdGVzdCBmaWxl IHRoaXMgdGltZS4gT2Zmc2V0cyBjYW4gb25seSBiZQotICAgLy8gZG9uZSBvbiBwYWdlIGJvdW5k YXJpZXMsIHNvIHdlIG5lZWQgYSB0d28gcGFnZSBmaWxlIHRvIHRlc3QgdGhpcy4KLS0gIGNvbnN0 IGludCBwYWdlX3NpemUgPSA0MDk2OwotLSAgY2hhciBkYXRhMVsyICogcGFnZV9zaXplXTsKLS0g IHNpemVfdCBkYXRhMV9zaXplID0gc2l6ZW9mKGRhdGExKTsKLSsgIGNvbnN0IGludCBwYWdlX3Np emUgPSBnZXRwYWdlc2l6ZSgpOwotKyAgY2hhciAqZGF0YTEgPSBzdGF0aWNfY2FzdDxjaGFyKj4o bWFsbG9jKDIgKiBwYWdlX3NpemUpKTsKLSsgIEVYUEVDVF9UUlVFKGRhdGExICE9IE5VTEwpOwot KyAgc2l6ZV90IGRhdGExX3NpemUgPSAoMiAqIHBhZ2Vfc2l6ZSk7Ci0gICBmb3IgKHNpemVfdCBp ID0gMDsgaSA8IGRhdGExX3NpemU7ICsraSkgewotICAgICBkYXRhMVtpXSA9IGkgJiAweDdmOwot ICAgfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCi1AQCAt NTcsOCArNTcsOSBAQCBURVNUKFBhZ2VBbGxvY2F0b3JUZXN0LCBMYXJnZU9iamVjdCkgewotIAot ICAgRVhQRUNUX0VRKDBVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOwotICAgdWludDhf dCAqcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYygxMDAwMCkp OwotKyAgdWludDY0X3QgZXhwZWN0ZWRfcGFnZXMgPSAxICsgKCgxMDAwMCAtIDEpIC8gZ2V0cGFn ZXNpemUoKSk7Ci0gICBBU1NFUlRfRkFMU0UocCA9PSBOVUxMKTsKLS0gIEVYUEVDVF9FUSgzVSwg YWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSsgIEVYUEVDVF9FUShleHBlY3RlZF9wYWdl cywgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKLSAgIGZvciAodW5zaWduZWQgaSA9IDE7 IGkgPCAxMDsgKytpKSB7Ci0gICAgIHVpbnQ4X3QgKnAgPSByZWludGVycHJldF9jYXN0PHVpbnQ4 X3QqPihhbGxvY2F0b3IuQWxsb2MoaSkpOwotICAgICBBU1NFUlRfRkFMU0UocCA9PSBOVUxMKTsK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV9saW51eC5jYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjCi1AQCAtMjAyLDEyICsy MDIsMTQgQEAgYm9vbCBFeHBsb2l0YWJpbGl0eUxpbnV4OjpFbmRlZE9uSWxsZWdhbFdyaXRlKHVp bnQ2NF90IGluc3RydWN0aW9uX3B0cikgewotICAgLy8gQ2hlY2sgYXJjaGl0ZWN0dXJlIGFuZCBz ZXQgYXJjaGl0ZWN0dXJlIHZhcmlhYmxlIHRvIGNvcnJlc3BvbmRpbmcgZmxhZwotICAgLy8gaW4g b2JqZHVtcC4KLSAgIHN3aXRjaCAoY29udGV4dC0+R2V0Q29udGV4dENQVSgpKSB7Ci0rI2lmIGRl ZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQotICAgICBjYXNlIE1EX0NPTlRFWFRf WDg2OgotICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2IjsKLSAgICAgICBicmVhazsKLSAgICAg Y2FzZSBNRF9DT05URVhUX0FNRDY0OgotICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2Ong4Ni02 NCI7Ci0gICAgICAgYnJlYWs7Ci0rI2VuZGlmCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgLy8gVW5z dXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLiBOb3RlIHRoYXQgQVJNIGFyY2hpdGVjdHVyZXMgYXJlIG5v dAotICAgICAgIC8vIHN1cHBvcnRlZCBiZWNhdXNlIG9iamR1bXAgZG9lcyBub3Qgc3VwcG9ydCBB Uk0uCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYwotQEAg LTEwNCw2ICsxMDQsOCBAQCBFeHBsb2l0YWJpbGl0eUZvcihjb25zdCBzdHJpbmcmIGZpbGVuYW1l KSB7Ci0gfQotIAotIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2luZSkg ewotKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4ODYt Y2xhc3MgbGludXggbWFjaGluZS4KLSsjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChf X2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3Bh ZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigi YXNjaWlfcmVhZF9hdi5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBM T0lUQUJJTElUWV9ISUdILAotQEAgLTEzNiw5ICsxMzgsMTIgQEAgVEVTVChFeHBsb2l0YWJpbGl0 eVRlc3QsIFRlc3RXaW5kb3dzRW5naW5lKSB7Ci0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlG b3IoInJlYWRfYXZfY2xvYmJlcl93cml0ZS5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2Jy ZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9MT1csCi0gICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlG b3IoInJlYWRfYXZfY29uZGl0aW9uYWwuZG1wIikpOwotKyNlbmRpZgotIH0KLSAKLSBURVNUKEV4 cGxvaXRhYmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7Ci0rLy8gVGhlIGZvbGxvd2luZyB0 ZXN0cyBhcmUgb25seSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBtYWNoaW5lLgot KyNpZiBkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKLSAgIEFTU0VSVF9FUShn b29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNUSU5HLAotICAgICAgICAgICAg IEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9udWxsX3JlYWRfYXYuZG1wIikpOwotICAgQVNTRVJU X0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLUBAIC0xNzEsNyArMTc2 LDggQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgewotICAgICAg ICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9leGVjdXRhYmxlX2hlYXAuZG1wIikpOwot ICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAg ICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfam1wX3RvX21vZHVsZV9ub3RfZXhlX3Jl Z2lvbi5kbXAiKSk7Ci0tI2lmbmRlZiBfV0lOMzIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQoX1dJ TjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotICAgQVNTRVJU X0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKLSAgICAgICAgICAgICBF eHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fbm9ud3JpdGFibGVfbW9kdWxlLmRtcCIp KTsKLSAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCi1A QCAtMTgyLDEwICsxODgsMTAgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVu Z2luZSkgewotICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b19v dXRzaWRlX21vZHVsZV92aWFfbWF0aC5kbXAiKSk7Ci0gICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFr cGFkOjpFWFBMT0lUQUJJTElUWV9JTlRFUkVTVElORywKLSAgICAgICAgICAgICBFeHBsb2l0YWJp bGl0eUZvcigibGludXhfd3JpdGVfdG9fdW5kZXJfNGsuZG1wIikpOwotLSNlbmRpZiAgLy8gX1dJ TjMyCi0rI2VuZGlmICAvLyAhZGVmaW5lZChfV0lOMzIpICYmICghZGVmaW5lZChfX2kzODYpICYm ICFkZWZpbmVkKF9feDg2XzY0KSkKLSB9Ci0gCi0tI2lmbmRlZiBfV0lOMzIKLSsjaWYgIWRlZmlu ZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQotIFRF U1QoRXhwbG9pdGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgRGlzYXNzZW1ibGVCeXRlc1Rlc3QpIHsK LSAgIEFTU0VSVF9GQUxTRShFeHBsb2l0YWJpbGl0eUxpbnV4VGVzdDo6RGlzYXNzZW1ibGVCeXRl cygiIiwgTlVMTCwgNSwgTlVMTCkpOwotICAgdWludDhfdCBieXRlc1s2XSA9IHsweGM3LCAweDAs IDB4NSwgMHgwLCAweDAsIDB4MH07Ci1AQCAtMzAxLDYgKzMwNyw3IEBAIFRFU1QoRXhwbG9pdGFi aWxpdHlMaW51eFV0aWxzVGVzdCwgQ2FsY3VsYXRlQWRkcmVzc1Rlc3QpIHsKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZ3cml0ZV9hZGRyZXNzKSk7Ci0gfQotLSNlbmRpZiAgLy8gX1dJTjMyCi0rI2VuZGlmICAvLyAh ZGVmaW5lZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkp Ci0rCi0gCi0gfSAgLy8gbmFtZXNwYWNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJj b3JlL21pbmlkdW1wLTItY29yZS5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29y ZS9taW5pZHVtcC0yLWNvcmUuY2MKLUBAIC03Niw2ICs3Niw4IEBACi0gICAjZGVmaW5lIEVMRl9B UkNIICBFTV9NSVBTCi0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICNkZWZpbmUgRUxG X0FSQ0ggIEVNX0FBUkNINjQKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAjZGVm aW5lIEVMRl9BUkNIICBFTV9QUEM2NAotICNlbmRpZgotIAotICNpZiBkZWZpbmVkKF9fYXJtX18p Ci1AQCAtODYsNiArODgsOCBAQCB0eXBlZGVmIHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3RydWN0Owot ICNlbGlmIGRlZmluZWQgKF9fbWlwc19fKQotIC8vIFRoaXMgZmlsZS1sb2NhbCB0eXBlZGVmIHNp bXBsaWZpZXMgdGhlIHNvdXJjZSBjb2RlLgotIHR5cGVkZWYgZ3JlZ3NldF90IHVzZXJfcmVnc19z dHJ1Y3Q7Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3R5cGVkZWYgc3RydWN0IHB0 X3JlZ3MgdXNlcl9yZWdzX3N0cnVjdDsKLSAjZW5kaWYKLSAKLSB1c2luZyBnb29nbGVfYnJlYWtw YWQ6Ok1EVHlwZUhlbHBlcjsKLUBAIC0zMjAsNiArMzI0LDkgQEAgc3RydWN0IENyYXNoZWRQcm9j ZXNzIHsKLSAjZW5kaWYKLSAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSAgICAgdXNlcl9mcHNp bWRfc3RydWN0IGZwcmVnczsKLSsjZW5kaWYKLSsjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQot KyAgICBtY29udGV4dF90IG1jb250ZXh0OwotICNlbmRpZgotICAgICB1aW50cHRyX3Qgc3RhY2tf YWRkcjsKLSAgICAgY29uc3QgdWludDhfdCogc3RhY2s7Ci1AQCAtNTM0LDYgKzU0MSwzOCBAQCBQ YXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCi0gICB0 aHJlYWQtPm1jb250ZXh0LmZwY19laXIgPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZpcjsKLSAjZW5k aWYKLSB9Ci0rI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQotK3N0YXRpYyB2b2lkCi0rUGFy c2VUaHJlYWRSZWdpc3RlcnMoQ3Jhc2hlZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAotKyAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IE1pbmlkdW1wTWVtb3J5UmFuZ2UmIHJhbmdlKSB7Ci0rICBj b25zdCBNRFJhd0NvbnRleHRQUEM2NCogcmF3cmVncyA9IHJhbmdlLkdldERhdGE8TURSYXdDb250 ZXh0UFBDNjQ+KDApOwotKwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0 X0dQUl9DT1VOVDsgaSsrKQotKyAgICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbaV0gPSByYXdy ZWdzLT5ncHJbaV07Ci0rCi0rICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXSA9IHJh d3JlZ3MtPmxyOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX05JUF0gPSByYXdyZWdz LT5zcnIwOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX01TUl0gPSByYXdyZWdzLT5z cnIxOwotKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0gPSByYXdyZWdzLT5jcjsK LSsgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdID0gcmF3cmVncy0+eGVyOwotKyAg dGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NUUl0gPSByYXdyZWdzLT5jdHI7Ci0rICB0aHJl YWQtPm1jb250ZXh0LnZfcmVncy0+dnJzYXZlID0gcmF3cmVncy0+dnJzYXZlOwotKwotKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykK LSsgICAgICB0aHJlYWQtPm1jb250ZXh0LmZwX3JlZ3NbaV0gPSByYXdyZWdzLT5mbG9hdF9zYXZl LmZwcmVnc1tpXTsKLSsKLSsgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV0gPSBy YXdyZWdzLT5mbG9hdF9zYXZlLmZwc2NyOwotKwotKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9W RUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykgewotKyAgICAgIHRocmVhZC0+bWNvbnRl eHQudl9yZWdzLT52cnJlZ3NbaV1bMF0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ld LmhpZ2ggPj4gMzI7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVsx XSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGlnaDsKLSsgICAgICB0aHJlYWQt Pm1jb250ZXh0LnZfcmVncy0+dnJyZWdzW2ldWzJdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2 ZV92cltpXS5sb3cgPj4gMzI7Ci0rICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVn c1tpXVszXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0ubG93OwotKyAgfQotKwot KyAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZzY3IudnNjcl93b3JkID0gcmF3cmVncy0+dmVj dG9yX3NhdmUuc2F2ZV92c2NyLmxvdyAmIDB4RkZGRkZGRkY7Ci0rfQotKwotICNlbHNlCi0gI2Vy cm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIK LSAjZW5kaWYKLUBAIC02MjIsNiArNjYxLDEyIEBAIFBhcnNlU3lzdGVtSW5mbyhjb25zdCBPcHRp b25zJiBvcHRpb25zLCBDcmFzaGVkUHJvY2VzcyogY3Jhc2hpbmZvLAotICMgZWxzZQotICMgIGVy cm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgotICMg ZW5kaWYKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICBpZiAoc3lzaW5mby0+cHJv Y2Vzc29yX2FyY2hpdGVjdHVyZSAhPSBNRF9DUFVfQVJDSElURUNUVVJFX1BQQzY0KSB7Ci0rICAg IGZwcmludGYoc3RkZXJyLAotKyAgICAgICAgICAgICJUaGlzIHZlcnNpb24gb2YgbWluaWR1bXAt Mi1jb3JlIG9ubHkgc3VwcG9ydHMgUFBDNjQuXG4iKTsKLSsgICAgZXhpdCgxKTsKLSsgIH0KLSAj ZWxzZQotICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0 Zm9ybSB5ZXQiCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9D T05UUklCVVRPUlMKLUBAIC0xMywzICsxMyw0IEBAIE1hcmsgTWVudG92YWkgPG1hcmtAY2hyb21p dW0ub3JnPgotIFJvYmVydCBTZXNlayA8cnNlc2VrQGNocm9taXVtLm9yZz4KLSBTY290dCBHcmFo YW0gPHNjb3R0bWdAY2hyb21pdW0ub3JnPgotIEpvc2h1YSBQZXJhemEgPGpwZXJhemFAY2hyb21p dW0ub3JnPgotK1NoYXduIEFuYXN0YXNpbyA8c2hhd25AYW5hc3Rhcy5pbz4KLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv Y29tcGF0L2xpbnV4L3N5cy91c2VyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy91c2Vy LmgKLUBAIC0xNSw2ICsxNSw3IEBACi0gI2lmbmRlZiBDUkFTSFBBRF9DT01QQVRfTElOVVhfU1lT X1VTRVJfSF8KLSAjZGVmaW5lIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9IXwotIAot KyNpbmNsdWRlIDxjc3RkZGVmPgotICNpbmNsdWRlX25leHQgPHN5cy91c2VyLmg+Ci0gCi0gI2lu Y2x1ZGUgPGZlYXR1cmVzLmg+Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHQu aAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0LmgKLUBAIC01OTIsNiArNTky LDcwIEBAIHN0cnVjdCBNaW5pZHVtcENvbnRleHRNSVBTNjQgewotICAgdWludDY0X3QgZmlyOwot IH07Ci0gCi0rLy8hIFxicmllZiBwcGM2NC1zcGVjaWZpYyBmbGFncyBmb3IgTWluaWR1bXBQUEM2 NDo6Y29udGV4dF9mbGFncwotKy8vISBCYXNlZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQuaCBmcm9t IGJyZWFrcGFkCi0rZW51bSBNaW5pZHVtcENvbnRleHRQUEM2NEZsYWdzIDogdWludDMyX3Qgewot KyAgLy8hIFxicmllZiBJZGVudGlmaWVzIHRoZSBjb250ZXh0IGFzIFBQQzY0LgotKyAga01pbmlk dW1wQ29udGV4dFBQQzY0ID0gMHgwMTAwMDAwMCwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNhdGVz IHRoZSB2YWxpZGl0eSBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgotKyAgLy8hCi0rICAv LyEgUmVnaXN0ZXJzIGByMGAtYHIzMWAsIGBuaXBgLCBgbXNyYCwgYGxyYCwgZXRjLiBhcmUgdmFs aWQuCi0rICBrTWluaWR1bXBDb250ZXh0UFBDNjRCYXNlID0ga01pbmlkdW1wQ29udGV4dFBQQzY0 IHwgMHgwMDAwMDAwMSwKLSsKLSsgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBv ZiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuCi0rICAvLyEKLSsgIC8vISBSZWdpc3RlcnMgYGZw MGAtYGZwMzFgLCBgZnBzY3JgIGFyZSB2YWxpZC4KLSsgIGtNaW5pZHVtcENvbnRleHRQUEM2NEZs b2F0aW5nID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAwOCwKLSsKLSsgIC8vISBc YnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBBbHRpdmVjL1ZNWCByZWdpc3RlcnMuCi0r ICAvLyEKLSsgIC8vISBSZWdpc3RlcnMgYHYwYC1gdjMxYCwgYHZzY3JgLCBgdnJzYXZlYC4KLSsg IGtNaW5pZHVtcENvbnRleHRQUEM2NFZlY3RvciA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4 MDAwMDAwMjAsCi0rCi0rICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgYWxs IHJlZ2lzdGVycwotKyAga01pbmlkdW1wQ29udGV4dFBQQzY0QWxsID0ga01pbmlkdW1wQ29udGV4 dFBQQzY0QmFzZSAgICAgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01pbmlkdW1w Q29udGV4dFBQQzY0RmxvYXRpbmcgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga01p bmlkdW1wQ29udGV4dFBQQzY0VmVjdG9yCi0rfTsKLSsKLSsvLyEgXGJyaWVmIEEgUFBDNjQgQ1BV IGNvbnRleHQgY2FycmllZCBpbiBhIG1pbmlkdW1wIGZpbGUuCi0rLy8hIEJhc2VkIG9uIG1pbmlk dW1wX2NwdV9wcGM2NC5oIGZyb20gYnJlYWtwYWQuCi0rc3RydWN0IE1pbmlkdW1wQ29udGV4dFBQ QzY0IHsKLSsgIHVpbnQ2NF90IGNvbnRleHRfZmxhZ3M7Ci0rCi0rICAvLyEgXGJyaWVmIEdlbmVy YWwgcHVycG9zZSByZWdpc3RlcnMuCi0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50NjRfdCBtc3I7 Ci0rICB1aW50NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IGNjcjsKLSsgIHVpbnQ2NF90IHhl cjsKLSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IGN0cjsKLSsKLSsgIC8vISBcYnJpZWYg RmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgotKyAgZG91YmxlIGZwcmVnc1szMl07Ci0rCi0rICAv LyEgXGJyaWVmIEZQVSBzdGF0dXMgcmVnaXN0ZXIuCi0rICBkb3VibGUgZnBzY3I7Ci0rCi0rICAv LyEgXGJyaWVmIEFsdGl2ZWMvVk1YIHZlY3RvciByZWdpc3RlcnMuCi0rICBzdHJ1Y3QgewotKyAg ICAgIC8vISBcYnJpZWYgVmVjdG9yIHJlZ2lzdGVycyBhcmUgMTI4Yml0cy4KLSsgICAgICB1aW50 MTI4X3N0cnVjdCBzYXZlX3ZyWzMyXTsKLSsgICAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZzY3I7 Ci0rCi0rICAgICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3BhZCBjb21w YXRpYmlsdGl5LgotKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNVs0XTsKLSsKLSsgICAgICAvLyEg XGJyaWVmIFZSU0FWRSByZWdpc3Rlci4KLSsgICAgICB1aW50MzJfdCBzYXZlX3Zyc2F2ZTsKLSsK LSsgICAgICAvLyEgXGJyaWVmIFBhZGRpbmcgaW5jbHVkZWQgZm9yIGJyZWFrcGFkIGNvbXBhdGli aWx0aXkuCi0rICAgICAgdWludDMyX3Qgc2F2ZV9wYWQ2WzddOwotKyAgfSB2cmVnczsKLSt9Owot KwotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotIAotICNlbmRpZiAgLy8gQ1JBU0hQQURfTUlO SURVTVBfTUlOSURVTVBfQ09OVEVYVF9IXwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9j b250ZXh0X3dyaXRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dy aXRlci5jYwotQEAgLTEwMSw2ICsxMDEsMTMgQEAgTWluaWR1bXBDb250ZXh0V3JpdGVyOjpDcmVh dGVGcm9tU25hcHNob3QoY29uc3QgQ1BVQ29udGV4dCogY29udGV4dF9zbmFwc2hvdCkgewotICAg ICAgIGJyZWFrOwotICAgICB9Ci0gCi0rICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVBQQzY0OiB7 Ci0rICAgICAgY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8TWluaWR1bXBDb250ZXh0UFBDNjRX cml0ZXI+KCk7Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdy aXRlcio+KGNvbnRleHQuZ2V0KCkpCi0rICAgICAgICAgIC0+SW5pdGFsaXplRnJvbVNuYXBzaG90 KGNvbnRleHRfc25hcHNob3QtPnBwYzY0KTsKLSsgICAgICBicmVhazsKLSsgICAgfQotKwotICAg ICBkZWZhdWx0OiB7Ci0gICAgICAgTE9HKEVSUk9SKSA8PCAidW5rbm93biBjb250ZXh0IGFyY2hp dGVjdHVyZSAiCi0gICAgICAgICAgICAgICAgICA8PCBjb250ZXh0X3NuYXBzaG90LT5hcmNoaXRl Y3R1cmU7Ci1AQCAtNDUzLDQgKzQ2MCw0NyBAQCBzaXplX3QgTWluaWR1bXBDb250ZXh0TUlQUzY0 V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNvbnN0IHsKLSAgIHJldHVybiBzaXplb2YoY29udGV4dF8p OwotIH0KLSAKLStNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6TWluaWR1bXBDb250ZXh0UFBD NjRXcml0ZXIoKQotKyAgOiBNaW5pZHVtcENvbnRleHRXcml0ZXIoKSwgY29udGV4dF8oKSB7Ci0r ICAgIGNvbnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQ7Ci0rfQot KwotK01pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjp+TWluaWR1bXBDb250ZXh0UFBDNjRXcml0 ZXIoKSA9IGRlZmF1bHQ7Ci0rCi0rdm9pZCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6SW5p dGFsaXplRnJvbVNuYXBzaG90KAotKyAgICBjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNvbnRleHRf c25hcHNob3QpIHsKLSsgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVNdXRhYmxlKTsKLSsgIERD SEVDS19FUShjb250ZXh0Xy5jb250ZXh0X2ZsYWdzLCBrTWluaWR1bXBDb250ZXh0UFBDNjQpOwot KwotKyAgY29udGV4dF8uY29udGV4dF9mbGFncyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NEFsbDsK LSsKLSsgIG1lbWNweShjb250ZXh0Xy5yZWdzLCBjb250ZXh0X3NuYXBzaG90LT5yZWdzLCBzaXpl b2YoY29udGV4dF8ucmVncykpOwotKyAgY29udGV4dF8ubmlwID0gY29udGV4dF9zbmFwc2hvdC0+ bmlwOwotKyAgY29udGV4dF8ubXNyID0gY29udGV4dF9zbmFwc2hvdC0+bXNyOwotKyAgY29udGV4 dF8uY2NyID0gY29udGV4dF9zbmFwc2hvdC0+Y2NyOwotKyAgY29udGV4dF8ueGVyID0gY29udGV4 dF9zbmFwc2hvdC0+eGVyOwotKyAgY29udGV4dF8ubG5rID0gY29udGV4dF9zbmFwc2hvdC0+bG5r OwotKyAgY29udGV4dF8uY3RyID0gY29udGV4dF9zbmFwc2hvdC0+Y3RyOwotKwotKyAgbWVtY3B5 KGNvbnRleHRfLmZwcmVncywgY29udGV4dF9zbmFwc2hvdC0+ZnByZWdzLCBzaXplb2YoY29udGV4 dF8uZnByZWdzKSk7Ci0rICBjb250ZXh0Xy5mcHNjciA9IGNvbnRleHRfc25hcHNob3QtPmZwc2Ny OwotKwotKyAgbWVtY3B5KGNvbnRleHRfLnZyZWdzLnNhdmVfdnIsIGNvbnRleHRfc25hcHNob3Qt PnZyZWdzLnNhdmVfdnIsCi0rICAgICAgICAgc2l6ZW9mKGNvbnRleHRfLnZyZWdzLnNhdmVfdnIp KTsKLSsgIG1lbWNweSgmY29udGV4dF8udnJlZ3Muc2F2ZV92c2NyLCAmY29udGV4dF9zbmFwc2hv dC0+dnJlZ3Muc2F2ZV92c2NyLAotKyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVncy5zYXZl X3ZzY3IpKTsKLSsgIGNvbnRleHRfLnZyZWdzLnNhdmVfdnJzYXZlID0gY29udGV4dF9zbmFwc2hv dC0+dnJlZ3Muc2F2ZV92cnNhdmU7Ci0rfQotKwotK2Jvb2wgTWluaWR1bXBDb250ZXh0UFBDNjRX cml0ZXI6OldyaXRlT2JqZWN0KAotKyAgICBGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxlX3dyaXRl cikgewotKyAgRENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZVdyaXRhYmxlKTsKLSsgIHJldHVybiBm aWxlX3dyaXRlci0+V3JpdGUoJmNvbnRleHRfLCBzaXplb2YoY29udGV4dF8pKTsKLSt9Ci0rCi0r c2l6ZV90IE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNvbnN0IHsK LSsgIERDSEVDS19HRShzdGF0ZSgpLCBrU3RhdGVGcm96ZW4pOwotKyAgcmV0dXJuIHNpemVvZihj b250ZXh0Xyk7Ci0rfQotKwotIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9t aW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21p bmlkdW1wX2NvbnRleHRfd3JpdGVyLmgKLUBAIC0zMTUsNiArMzE1LDQ1IEBAIGNsYXNzIE1pbmlk dW1wQ29udGV4dE1JUFM2NFdyaXRlciBmaW5hbCA6IHB1YmxpYyBNaW5pZHVtcENvbnRleHRXcml0 ZXIgewotICAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1pbmlkdW1wQ29udGV4dE1JUFM2NFdy aXRlcik7Ci0gfTsKLSAKLStjbGFzcyBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciBmaW5hbCA6 IHB1YmxpYyBNaW5pZHVtcENvbnRleHRXcml0ZXIgewotKyBwdWJsaWM6Ci0rICBNaW5pZHVtcENv bnRleHRQUEM2NFdyaXRlcigpOwotKyAgfk1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCkgb3Zl cnJpZGU7Ci0rCi0rICAvLyEgXGJyaWVmIEluaXRhbGl6ZXMgdGhlIE1pbmlkdW1wQ29udGV4dFBQ QzY0IGJhc2VkIG9uIFxhIGNvbnRleHRfc25hcHNob3QuCi0rICAvLyEKLSsgIC8vISBccGFyYW1b aW5dIGNvbnRleHRfc25hcHNob3QgVGhlIGNvbnRleHQgc25hcHNob3QgdG8gdXNlIGFzIHNvdXJj ZSBkYXRhLgotKyAgLy8hCi0rICAvLyEgXG5vdGUgVmFsaWQgaW4gI2tTdGF0ZU11dGFibGUuIE5v IG11dGF0aW9uIG9mIGNvbnRleHQoKSBtYXkgYmUgZG9uZSBiZWZvcmUKLSsgIC8vISAgICAgY2Fs bGluZyB0aGlzIG1ldGhvZCwgYW5kIGl0IGlzIG5vdCBub3JtYWxseSBuZWNlc3NhcnkgdG8gYWx0 ZXIKLSsgIC8vISAgICAgY29udGV4dCgpIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QuCi0rICB2 b2lkIEluaXRhbGl6ZUZyb21TbmFwc2hvdChjb25zdCBDUFVDb250ZXh0UFBDNjQqIGNvbnRleHRf c25hcHNob3QpOwotKwotKyAgLy8hIFxicmllZiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgY29u dGV4dCBzdHJ1Y3R1cmUgdGhhdCB0aGlzIG9iamVjdCB3aWxsCi0rICAvLyEgICAgIHdyaXRlLgot KyAgLy8hCi0rICAvLyEgXGF0dGVudGlvbiBUaGlzIHJldHVybnMgYSBub24tYGNvbnN0YCBwb2lu dGVyIHRvIHRoaXMgb2JqZWN04oCZcyBwcml2YXRlCi0rICAvLyEgICAgIGRhdGEgc28gdGhhdCBh IGNhbGxlciBjYW4gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0dXJlIGRpcmVjdGx5LgotKyAg Ly8hICAgICBUaGlzIGlzIGRvbmUgYmVjYXVzZSBwcm92aWRpbmcgc2V0dGVyIGludGVyZmFjZXMg dG8gZWFjaCBmaWVsZCBpbiB0aGUKLSsgIC8vISAgICAgY29udGV4dCBzdHJ1Y3R1cmUgd291bGQg YmUgdW53aWVsZHkgYW5kIGN1bWJlcnNvbWUuIENhcmUgbXVzdCBiZSB0YWtlbgotKyAgLy8hICAg ICB0byBwb3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgY29ycmVjdGx5LiBUaGUgY29udGV4 dCBzdHJ1Y3R1cmUKLSsgIC8vISAgICAgbXVzdCBvbmx5IGJlIG1vZGlmaWVkIHdoaWxlIHRoaXMg b2JqZWN0IGlzIGluIHRoZSAja1N0YXRlTXV0YWJsZQotKyAgLy8hICAgICBzdGF0ZS4KLSsgIE1p bmlkdW1wQ29udGV4dFBQQzY0KiBjb250ZXh0KCkgeyByZXR1cm4gJmNvbnRleHRfOyB9Ci0rCi0r IHByb3RlY3RlZDoKLSsgIC8vIE1pbmlkdW1wV3JpdGFibGU6Ci0rICBib29sIFdyaXRlT2JqZWN0 KEZpbGVXcml0ZXJJbnRlcmZhY2UqIGZpbGVfd3JpdGVyKSBvdmVycmlkZTsKLSsKLSsgIC8vIE1p bmlkdW1wQ29udGV4dFdyaXRlcjoKLSsgIHNpemVfdCBDb250ZXh0U2l6ZSgpIGNvbnN0IG92ZXJy aWRlOwotKwotKyBwcml2YXRlOgotKyAgTWluaWR1bXBDb250ZXh0UFBDNjQgY29udGV4dF87Ci0r Ci0rICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIp OwotK307Ci0rCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0gCi0gI2VuZGlmICAvLyBDUkFT SFBBRF9NSU5JRFVNUF9NSU5JRFVNUF9DT05URVhUX1dSSVRFUl9IXwotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5p ZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1w L21pbmlkdW1wX2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MKLUBAIC0yMTMsNiArMjEzLDIxIEBAIFRF U1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBNSVBTNjRfRnJvbVNuYXBzaG90KSB7Ci0gICAgICAg Y29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0TUlQUzY0LCBrU2VlZCk7Ci0gfQotIAotK1RF U1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9aZXJvcykgewotKyAgRW1wdHlDb250ZXh0 VGVzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0UFBDNjQ+KAot KyAgICBFeHBlY3RNaW5pZHVtcENvbnRleHRQUEM2NCk7Ci0rfQotKwotK1RFU1QoTWluaWR1bXBD b250ZXh0V3JpdGVyLCBQUEM2NF9Gcm9tU25hcHNob3QpIHsKLSsgIGNvbnN0ZXhwciB1aW50MzJf dCBrU2VlZCA9IDY0OwotKyAgQ1BVQ29udGV4dFBQQzY0IGNvbnRleHRfcHBjNjQ7Ci0rICBDUFVD b250ZXh0IGNvbnRleHQ7Ci0rICBjb250ZXh0LnBwYzY0ID0gJmNvbnRleHRfcHBjNjQ7Ci0rICBJ bml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KCZjb250ZXh0LCBrU2VlZCk7Ci0rICBGcm9tU25hcHNo b3RUZXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRleHRQUEM2ND4o Ci0rICAgICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQsIGtTZWVkKTsKLSt9 Ci0rCi0gfSAgLy8gbmFtZXNwYWNlCi0gfSAgLy8gbmFtZXNwYWNlIHRlc3QKLSB9ICAvLyBuYW1l c3BhY2UgY3Jhc2hwYWQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dy aXRlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNj Ci1AQCAtMTI2LDYgKzEyNiw4IEBAIHN0ZDo6c3RyaW5nIE1pbmlkdW1wTWlzY0luZm9EZWJ1Z0J1 aWxkU3RyaW5nKCkgewotICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJtaXBzIjsK LSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVMKQotICAgc3RhdGljIGNvbnN0ZXhwciBj aGFyIGtDUFVbXSA9ICJtaXBzNjQiOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0r ICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0gInBwYzY0IjsKLSAjZWxzZQotICNlcnJv ciBkZWZpbmUga0NQVSBmb3IgdGhpcyBDUFUKLSAjZW5kaWYKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv Y2FwdHVyZV9tZW1vcnkuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9tZW1vcnkuY2MK LUBAIC0xMTEsNiArMTExLDExIEBAIHZvaWQgQ2FwdHVyZU1lbW9yeTo6UG9pbnRlZFRvQnlDb250 ZXh0KGNvbnN0IENQVUNvbnRleHQmIGNvbnRleHQsCi0gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8 IGJhc2U6OnNpemUoY29udGV4dC5taXBzZWwtPnJlZ3MpOyArK2kpIHsKLSAgICAgTWF5YmVDYXB0 dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0Lm1pcHNlbC0+cmVnc1tpXSk7Ci0gICB9 Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICBNYXliZUNhcHR1cmVN ZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPm5pcCk7Ci0rICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IGJhc2U6OnNpemUoY29udGV4dC5wcGM2NC0+cmVncyk7ICsraSkgewotKyAg ICBNYXliZUNhcHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPnJlZ3Nb aV0pOwotKyAgfQotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0 ZWN0dXJlLmgKLUBAIC00Myw3ICs0MywxMCBAQCBlbnVtIENQVUFyY2hpdGVjdHVyZSB7Ci0gICBr Q1BVQXJjaGl0ZWN0dXJlTUlQU0VMLAotIAotICAgLy8hIFxicmllZiA2NC1iaXQgTUlQU0VMLgot LSAga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMCi0rICBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUws Ci0rCi0rICAvLyEgXGJyaWVmIDY0LWJpdCBQUEM2NC4KLSsgIGtDUFVBcmNoaXRlY3R1cmVQUEM2 NAotIH07Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0tLS0gcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2NwdV9jb250ZXh0LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCi1AQCAt MTY5LDYgKzE2OSw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6Okluc3RydWN0aW9uUG9pbnRlcigp IGNvbnN0IHsKLSAgICAgICByZXR1cm4gYXJtLT5wYzsKLSAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0 dXJlQVJNNjQ6Ci0gICAgICAgcmV0dXJuIGFybTY0LT5wYzsKLSsgICAgY2FzZSBrQ1BVQXJjaGl0 ZWN0dXJlUFBDNjQ6Ci0rICAgICAgcmV0dXJuIHBwYzY0LT5uaXA7Ci0gICAgIGRlZmF1bHQ6Ci0g ICAgICAgTk9UUkVBQ0hFRCgpOwotICAgICAgIHJldHVybiB+MHVsbDsKLUBAIC0xODUsNiArMTg3 LDggQEAgdWludDY0X3QgQ1BVQ29udGV4dDo6U3RhY2tQb2ludGVyKCkgY29uc3QgewotICAgICAg IHJldHVybiBhcm0tPnNwOwotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKLSAgICAg ICByZXR1cm4gYXJtNjQtPnNwOwotKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoKLSsg ICAgICByZXR1cm4gcHBjNjQtPnJlZ3NbMV07Ci0gICAgIGRlZmF1bHQ6Ci0gICAgICAgTk9UUkVB Q0hFRCgpOwotICAgICAgIHJldHVybiB+MHVsbDsKLUBAIC0xOTYsNiArMjAwLDcgQEAgYm9vbCBD UFVDb250ZXh0OjpJczY0Qml0KCkgY29uc3QgewotICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVY ODZfNjQ6Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgotICAgICBjYXNlIGtDUFVB cmNoaXRlY3R1cmVNSVBTNjRFTDoKLSsgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6Ci0g ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4NjoKLSAgICAg Y2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNOgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4 dC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKLUBAIC0zNTIsNiArMzUyLDI0 IEBAIHN0cnVjdCBDUFVDb250ZXh0TUlQUzY0IHsKLSAgIHVpbnQ2NF90IGZpcjsKLSB9OwotIAot Ky8vISBcYnJpZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXJyeWluZyBQUEM2NCBDUFUgc3RhdGUu Ci0rc3RydWN0IENQVUNvbnRleHRQUEM2NCB7Ci0rICB1aW50NjRfdCBuaXA7Ci0rICB1aW50NjRf dCBtc3I7Ci0rICB1aW50NjRfdCByZWdzWzMyXTsKLSsgIHVpbnQ2NF90IGNjcjsKLSsgIHVpbnQ2 NF90IHhlcjsKLSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IGN0cjsKLSsgIGRvdWJsZSBm cHJlZ3NbMzJdOwotKyAgZG91YmxlIGZwc2NyOwotKyAgc3RydWN0IHsKLSsgICAgdWludDEyOF9z dHJ1Y3Qgc2F2ZV92clszMl07Ci0rICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnNjcjsKLSsgICAg dWludDMyX3Qgc2F2ZV92cnNhdmU7Ci0rICB9IHZyZWdzOwotK307Ci0rCi0gLy8hIFxicmllZiBB IGNvbnRleHQgc3RydWN0dXJlIGNhcGFibGUgb2YgY2FycnlpbmcgdGhlIGNvbnRleHQgb2YgYW55 IHN1cHBvcnRlZAotIC8vISAgICAgQ1BVIGFyY2hpdGVjdHVyZS4KLSBzdHJ1Y3QgQ1BVQ29udGV4 dCB7Ci1AQCAtMzgyLDYgKzQwMCw3IEBAIHN0cnVjdCBDUFVDb250ZXh0IHsKLSAgICAgQ1BVQ29u dGV4dEFSTTY0KiBhcm02NDsKLSAgICAgQ1BVQ29udGV4dE1JUFMqIG1pcHNlbDsKLSAgICAgQ1BV Q29udGV4dE1JUFM2NCogbWlwczY0OwotKyAgICBDUFVDb250ZXh0UFBDNjQqIHBwYzY0OwotICAg fTsKLSB9OwotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKLUBAIC0xNSw2 ICsxNSw3IEBACi0gI2lmbmRlZiBDUkFTSFBBRF9TTkFQU0hPVF9MSU5VWF9DUFVfQ09OVEVYVF9M SU5VWF9IXwotICNkZWZpbmUgQ1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BVX0NPTlRFWFRfTElO VVhfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0cmluZz4KLSAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29u ZmlnLmgiCi0gI2luY2x1ZGUgInNuYXBzaG90L2NwdV9jb250ZXh0LmgiCi0gI2luY2x1ZGUgInNu YXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgiCi1AQCAtMTc0LDYgKzE3NSw3OCBAQCB2b2lk IEluaXRpYWxpemVDUFVDb250ZXh0TUlQUygKLSAKLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX01JUFNf RkFNSUxZIHx8IERPWFlHRU4KLSAKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp IHx8IERPWFlHRU4KLSsKLSsvLyEgXGJyaWVmIEluaXRhbGl6ZXMgYSBDUFVDb250ZXh0UFBDNjQg c3RydWN0dXJlIGZyb20gbmF0aXZlIGNvbnRleHQKLSsvLyEgICAgIHN0cnVjdHVyZXMgb24gTGlu dXguCi0rLy8hCi0rLy8hIFxwYXJhbVtpbl0gdGhyZWFkX2NvbnRleHQgVGhlIG5hdGl2ZSB0aHJl YWQgY29udGV4dC4KLSsvLyEgXHBhcmFtW2luXSBmbG9hdF9jb250ZXh0IFRoZSBuYXRpdmUgZmxv YXQgY29udGV4dC4KLSsvLyEgXHBhcmFtW2luXSB2ZWN0b3JfY29udGV4dCBUaGUgbmF0aXZlIHZl Y3RvciBjb250ZXh0LgotKy8vISBccGFyYW1bb3V0XSBjb250ZXh0IFRoZSBDUFVDb250ZXh0UFBD NjQgc3RydWN0dXJlIHRvIGluaXRhbGl6ZS4KLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgot K3ZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKLSsgICAgY29uc3QgVGhyZWFkQ29udGV4 dDo6dDY0X3QmIHRocmVhZF9jb250ZXh0LAotKyAgICBjb25zdCBGbG9hdENvbnRleHQ6OmY2NF90 JiBmbG9hdF9jb250ZXh0LAotKyAgICBjb25zdCBWZWN0b3JDb250ZXh0Ojp2NjRfdCYgdmVjdG9y X2NvbnRleHQsCi0rICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4dCogY29udGV4dCkgewot KwotKyAgbWVtY3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9jb250ZXh0Lmdwciwgc2l6ZW9mKGNv bnRleHQtPnJlZ3MpKTsKLSsgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9jb250ZXh0Lm5pcDsKLSsg IGNvbnRleHQtPm1zciA9IHRocmVhZF9jb250ZXh0Lm1zcjsKLSsgIGNvbnRleHQtPmNjciA9IHRo cmVhZF9jb250ZXh0LmNjcjsKLSsgIGNvbnRleHQtPnhlciA9IHRocmVhZF9jb250ZXh0LnhlcjsK LSsgIGNvbnRleHQtPmxuayA9IHRocmVhZF9jb250ZXh0LmxuazsKLSsgIGNvbnRleHQtPmN0ciA9 IHRocmVhZF9jb250ZXh0LmN0cjsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5mcHJlZ3MsIGZsb2F0 X2NvbnRleHQuZnByZWdzLCBzaXplb2YoY29udGV4dC0+ZnByZWdzKSk7Ci0rICBjb250ZXh0LT5m cHNjciA9IGZsb2F0X2NvbnRleHQuZnBzY3I7Ci0rCi0rICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkg PCAzMjsgaSsrKSB7Ci0rICAgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJbaV0gPSB7Ci0rICAgICAg KCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzBdKSA8PCAzMikgfAotKyAgICAg ICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzFdLAotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rv cl9jb250ZXh0LnZycmVnc1tpXVsyXSkgPDwgMzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0 LnZycmVnc1tpXVszXQotKyAgICB9OwotKyAgfQotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cnNh dmUgPSB2ZWN0b3JfY29udGV4dC52cnNhdmU7Ci0rICBjb250ZXh0LT52cmVncy5zYXZlX3ZzY3Ig PSB7MCwgKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZzY3IudnNjcl93b3JkfTsKLSt9Ci0rCi0r dGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KLSt2b2lkIEluaXRpYWxpemVDUFVDb250ZXh0UFBD NjQoCi0rICAgIGNvbnN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCAmdGhyZWFkX2NvbnRleHQsCi0r ICAgIGNvbnN0IFNpZ25hbEZsb2F0Q29udGV4dDY0ICZmbG9hdF9jb250ZXh0LAotKyAgICBjb25z dCBTaWduYWxWZWN0b3JDb250ZXh0NjQgJnZlY3Rvcl9jb250ZXh0LAotKyAgICB0eXBlbmFtZSBU cmFpdHM6OkNQVUNvbnRleHQqIGNvbnRleHQpIHsKLSsKLSsgIG1lbWNweShjb250ZXh0LT5yZWdz LCB0aHJlYWRfY29udGV4dC5yZWdzLCBzaXplb2YoY29udGV4dC0+cmVncykpOwotKyAgY29udGV4 dC0+bmlwID0gdGhyZWFkX2NvbnRleHQubmlwOwotKyAgY29udGV4dC0+bXNyID0gdGhyZWFkX2Nv bnRleHQubXNyOwotKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRleHQuY2NyOwotKyAgY29u dGV4dC0+eGVyID0gdGhyZWFkX2NvbnRleHQueGVyOwotKyAgY29udGV4dC0+bG5rID0gdGhyZWFk X2NvbnRleHQubG5rOwotKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2NvbnRleHQuY3RyOwotKwot KyAgbWVtY3B5KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5yZWdzLCBzaXplb2YoY29u dGV4dC0+ZnByZWdzKSk7Ci0rICBjb250ZXh0LT5mcHNjciA9IGZsb2F0X2NvbnRleHQuZnBzY3I7 Ci0rCi0rICBmb3IgKHVpbnQ4X3QgaSA9IDA7IGkgPCAzMjsgaSsrKSB7Ci0rICAgIGNvbnRleHQt PnZyZWdzLnNhdmVfdnJbaV0gPSB7Ci0rICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQu dnJyZWdzW2ldWzBdKSA8PCAzMikgfAotKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ld WzFdLAotKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsyXSkgPDwg MzIpIHwKLSsgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVszXQotKyAgICB9OwotKyAg fQotKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cnNhdmUgPSB2ZWN0b3JfY29udGV4dC52cnNhdmU7 Ci0rICBjb250ZXh0LT52cmVncy5zYXZlX3ZzY3IgPSB7MCwgKHVpbnQ2NF90KXZlY3Rvcl9jb250 ZXh0LnZzY3IudnNjcl93b3JkfTsKLSt9Ci0rCi0rCi0rI2VuZGlmCi0rCi0gfSAgLy8gbmFtZXNw YWNlIGludGVybmFsCi0gfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCi0gCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MKLUBAIC0xNTksOSArMTU5LDExIEBAIHZv aWQgVGVzdEFnYWluc3RUYXJnZXQoUHRyYWNlQ29ubmVjdGlvbiogY29ubmVjdGlvbikgewotICAg ICAgICAgICBjb25zdCBib29sIGlzX3Zkc29fbWFwcGluZyA9Ci0gICAgICAgICAgICAgICBkZXZp Y2UgPT0gMCAmJiBpbm9kZSA9PSAwICYmIG1hcHBpbmdfbmFtZSA9PSAiW3Zkc29dIjsKLSAgICAg ICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtQcmVmaXhbXSA9ICJsaW51eC12ZHNvLnNvLiI7 Ci0rICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4NjRbXSA9ICJsaW51eC12 ZHNvNjQuc28uIjsKLSAgICAgICAgICAgcmV0dXJuIGlzX3Zkc29fbWFwcGluZyA9PQotICAgICAg ICAgICAgICAgICAgKG1vZHVsZV9uYW1lLmVtcHR5KCkgfHwKLS0gICAgICAgICAgICAgICAgICBt b2R1bGVfbmFtZS5jb21wYXJlKDAsIHN0cmxlbihrUHJlZml4KSwga1ByZWZpeCkgPT0gMCk7Ci0r ICAgICAgICAgICAgICAgICAgbW9kdWxlX25hbWUuY29tcGFyZSgwLCBzdHJsZW4oa1ByZWZpeCks IGtQcmVmaXgpID09IDAgfHwKLSsgICAgICAgICAgICAgICAgICBtb2R1bGVfbmFtZS5jb21wYXJl KDAsIHN0cmxlbihrUHJlZml4NjQpLCBrUHJlZml4NjQpID09IDApOwotICAgICAgICAgfSwKLSAg ICAgICAgIG1vZHVsZV9tYXBwaW5nLT5uYW1lLAotICAgICAgICAgbW9kdWxlX21hcHBpbmctPmRl dmljZSwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4 LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5j YwotQEAgLTMyMyw2ICszMjMsNjkgQEAgYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFk Q29udGV4dDxDb250ZXh0VHJhaXRzNjQ+KAotICAgICAgIHJlYWRlciwgY29udGV4dF9hZGRyZXNz LCBjb250ZXh0Xy5taXBzNjQpOwotIH0KLSAKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 X0ZBTUlMWSkKLSsKLSt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgotK3N0YXRpYyBib29sIFJl YWRDb250ZXh0KFByb2Nlc3NSZWFkZXJMaW51eCogcmVhZGVyLAotKyAgICAgICAgICAgICAgICAg ICAgICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcywKLSsgICAgICAgICAgICAgICAg ICAgICAgICB0eXBlbmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGRlc3RfY29udGV4dCkgewotKyAg Y29uc3QgUHJvY2Vzc01lbW9yeSogbWVtb3J5ID0gcmVhZGVyLT5NZW1vcnkoKTsKLSsKLSsgIExp bnV4Vk1BZGRyZXNzIGdwX3JlZ3NfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVzcyArCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQp ICsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1l IFRyYWl0czo6TUNvbnRleHQsIGdwX3JlZ3MpOwotKwotKyAgdHlwZW5hbWUgVHJhaXRzOjpTaWdu YWxUaHJlYWRDb250ZXh0IHRocmVhZF9jb250ZXh0OwotKyAgaWYgKCFtZW1vcnktPlJlYWQoZ3Bf cmVnc19hZGRyZXNzLCBzaXplb2YodGhyZWFkX2NvbnRleHQpLCAmdGhyZWFkX2NvbnRleHQpKSB7 Ci0rICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZ3BfcmVncyEiOwotKyAgICByZXR1 cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBMaW51eFZNQWRkcmVzcyBmcF9yZWdzX2FkZHJlc3MgPSBj b250ZXh0X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zm c2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBmcF9yZWdzKTsKLSsK LSsgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsRmxvYXRDb250ZXh0IGZwX2NvbnRleHQ7Ci0rICBp ZiAoIW1lbW9yeS0+UmVhZChmcF9yZWdzX2FkZHJlc3MsIHNpemVvZihmcF9jb250ZXh0KSwgJmZw X2NvbnRleHQpKSB7Ci0rICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZnBfcmVncyEi OwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBMaW51eFZNQWRkcmVzcyB2X3JlZ3Nf cHRyX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3MgKwotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwg dm14X3Jlc2VydmUpICsgODsKLSsKLSsgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVmVjdG9yQ29u dGV4dCB2X2NvbnRleHQ7Ci0rICBpZiAoIW1lbW9yeS0+UmVhZCh2X3JlZ3NfcHRyX2FkZHJlc3Ms IHNpemVvZih2X2NvbnRleHQpLCAmdl9jb250ZXh0KSkgewotKyAgICBMT0coRVJST1IpIDw8ICJD b3VsZG4ndCByZWFkIHZfcmVncyEiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBJ bml0aWFsaXplQ1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2ND4odGhyZWFkX2NvbnRleHQs IGZwX2NvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udGV4dCwgZGVz dF9jb250ZXh0KTsKLSsKLSsgIHJldHVybiB0cnVlOwotK30KLSsKLSt0ZW1wbGF0ZTw+Ci0rYm9v bCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+KAot KyAgICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKLSsgICAgTGludXhWTUFkZHJlc3MgY29u dGV4dF9hZGRyZXNzKSB7Ci0rICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0ZWN0 dXJlUFBDNjQ7Ci0rICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsKLSsK LSsgIHJldHVybiBpbnRlcm5hbDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKLSsgICAg ICByZWFkZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ucHBjNjQpOwotK30KLSsKLSt0ZW1w bGF0ZTw+Ci0rYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0 VHJhaXRzMzI+KAotKyAgICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKLSsgICAgTGludXhW TUFkZHJlc3MgY29udGV4dF9hZGRyZXNzKSB7Ci0rICAvLyBQUEM2NCBpcyA2NC1iaXQKLSsgIHJl dHVybiBmYWxzZTsKLSt9Ci0rCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi0gCi0g Ym9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFkZXJMaW51 eCogcHJvY2Vzc19yZWFkZXIsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9z bmFwc2hvdF9saW51eC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFw c2hvdF9saW51eC5oCi1AQCAtODQsNiArODQsOCBAQCBjbGFzcyBFeGNlcHRpb25TbmFwc2hvdExp bnV4IGZpbmFsIDogcHVibGljIEV4Y2VwdGlvblNuYXBzaG90IHsKLSAjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKQotICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7Ci0gICAgIENQ VUNvbnRleHRNSVBTNjQgbWlwczY0OwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFN SUxZKQotKyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7Ci0gI2VuZGlmCi0gICB9IGNvbnRleHRf dW5pb25fOwotICAgQ1BVQ29udGV4dCBjb250ZXh0XzsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGlu dXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv bGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKLUBAIC0yOTYsNyArMjk2LDI4 IEBAIHZvaWQgRXhwZWN0Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBhY3R1YWwsIGNvbnN0IE5h dGl2ZUNQVUNvbnRleHQmIGV4cGVjdGVkKSB7Ci0gICAgICAgICAgICAgMCk7Ci0gI3VuZGVmIENQ VV9BUkNIX05BTUUKLSB9Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0r dXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7Ci0rCi0rdm9pZCBJbml0aWFsaXpl Q29udGV4dChOYXRpdmVDUFVDb250ZXh0KiBjb250ZXh0KSB7Ci0rICBmb3IgKHNpemVfdCByZWcg PSAwOyByZWcgPCAzMjsgKytyZWcpIHsKLSsgICAgY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVn c1tyZWddID0gcmVnOwotKyAgfQotKwotKyAgbWVtc2V0KCZjb250ZXh0LT51Y19tY29udGV4dC5m cF9yZWdzLCA0NCwKLSsgICAgICBzaXplb2YoY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVncykp OwotK30KLSAKLSt2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0dWFsLCBj b25zdCBOYXRpdmVDUFVDb250ZXh0JiBleHBlY3RlZCkgewotKyAgRVhQRUNUX0VRKGFjdHVhbC5h cmNoaXRlY3R1cmUsIGtDUFVBcmNoaXRlY3R1cmVQUEM2NCk7Ci0rCi0rICBmb3IgKHNpemVfdCBy ZWcgPSAwOyByZWcgPCAzMjsgKytyZWcpIHsKLSsgICAgRVhQRUNUX0VRKGFjdHVhbC5wcGM2NC0+ cmVnc1tyZWddLCBleHBlY3RlZC51Y19tY29udGV4dC5ncF9yZWdzW3JlZ10pOwotKyAgfQotKwot KyAgRVhQRUNUX0VRKG1lbWNtcChhY3R1YWwucHBjNjQtPmZwcmVncywgZXhwZWN0ZWQudWNfbWNv bnRleHQuZnBfcmVncywKLSsgICAgICAgICAgICBzaXplb2YoYWN0dWFsLnBwYzY0LT5mcHJlZ3Mp KSwgMCk7Ci0rfQotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCi1AQCAtMTA4LDYgKzEwOCw4IEBAIHZvaWQg UHJvY2Vzc1JlYWRlckxpbnV4OjpUaHJlYWQ6OkluaXRpYWxpemVTdGFjayhQcm9jZXNzUmVhZGVy TGludXgqIHJlYWRlcikgewotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0g ICBzdGFja19wb2ludGVyID0gcmVhZGVyLT5JczY0Qml0KCkgPyB0aHJlYWRfaW5mby50aHJlYWRf Y29udGV4dC50NjQucmVnc1syOV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQzMi5yZWdzWzI5XTsKLSsjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHN0YWNrX3BvaW50ZXIgPSB0aHJlYWRfaW5m by50aHJlYWRfY29udGV4dC50NjQuZ3ByWzFdOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2Vu ZGlmCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4X3Rlc3Qu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXhfdGVzdC5j YwotQEAgLTU5MSw2ICs1OTEsOCBAQCBib29sIFdyaXRlVGVzdE1vZHVsZShjb25zdCBiYXNlOjpG aWxlUGF0aCYgbW9kdWxlX3BhdGgpIHsKLSAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX0FB UkNINjQ7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTRUwpIHx8IGRlZmluZWQoQVJDSF9D UFVfTUlQUzY0RUwpCi0gICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9NSVBTOwotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0rICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9Q UEM2NDsKLSAjZW5kaWYKLSAKLSAgIG1vZHVsZS5laGRyLmVfdmVyc2lvbiA9IEVWX0NVUlJFTlQ7 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAotQEAgLTQyMiw2ICs0MjIsODkgQEAgc3Rh dGljX2Fzc2VydChvZmZzZXRvZihVQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+LCBtY29udGV4dC5m cHJlZ3MpID09Ci0gICAgICAgICAgICAgICAiY29udGV4dCBvZmZzZXQgbWlzbWF0Y2giKTsKLSAj ZW5kaWYKLSAKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsKLStzdHJ1 Y3QgU2lnbmFsVGhyZWFkQ29udGV4dDY0IHsKLSsgIHVpbnQ2NF90IHJlZ3NbMzJdOwotKyAgdWlu dDY0X3QgbmlwOwotKyAgdWludDY0X3QgbXNyOwotKyAgdWludDY0X3Qgb3JpZ19yMzsKLSsgIHVp bnQ2NF90IGN0cjsKLSsgIHVpbnQ2NF90IGxuazsKLSsgIHVpbnQ2NF90IHhlcjsKLSsgIHVpbnQ2 NF90IGNjcjsKLSsgIHVpbnQ2NF90IHNvZnRlOwotKyAgdWludDY0X3QgdHJhcDsKLSsgIHVpbnQ2 NF90IGRhcjsKLSsgIHVpbnQ2NF90IGRzaXNyOwotKyAgdWludDY0X3QgcmVzdWx0OwotKyAgdWlu dDY0X3QgZHNjcjsKLSsgIHVpbnQ2NF90IGZwcjBbM107Ci0rfTsKLSsKLStzdHJ1Y3QgU2lnbmFs RmxvYXRDb250ZXh0NjQgewotKyAgZG91YmxlIHJlZ3NbMzJdOwotKyAgZG91YmxlIGZwc2NyOwot K307Ci0rCi0rc3RydWN0IFNpZ25hbFZlY3RvckNvbnRleHQ2NCB7Ci0rICBpbnQzMl90IHZycmVn c1szMl1bNF07Ci0rICBzdHJ1Y3QgewotKyAgICBpbnQzMl90IF9fcGFkWzNdOwotKyAgICBpbnQz Ml90IHZzY3Jfd29yZDsKLSsgIH0gdnNjcjsKLSsgIGludDMyX3QgdnJzYXZlOwotKyAgaW50MzJf dCBfX3BhZFszXTsKLSt9IF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpOwotKwotKwot KyNwcmFnbWEgcGFjayhwb3ApCi0rc3RydWN0IE1Db250ZXh0NjQgewotKyAgdWludDY0X3QgcmVz ZXJ2ZWRbNF07Ci0rICBpbnQzMl90IHNpZ25hbDsKLSsgIGludDMyX3QgX19wYWQwOwotKyAgdWlu dDY0X3QgaGFuZGxlcjsKLSsgIHVpbnQ2NF90IG9sZG1hc2s7Ci0rICB1aW50NjRfdCBwdF9yZWdz X3B0cjsKLSsgIFNpZ25hbFRocmVhZENvbnRleHQ2NCBncF9yZWdzOwotKyAgU2lnbmFsRmxvYXRD b250ZXh0NjQgIGZwX3JlZ3M7Ci0rICBTaWduYWxWZWN0b3JDb250ZXh0NjQgKnZfcmVnczsKLSsg IGludDY0X3Qgdm14X3Jlc2VydmVbNjldOwotK307Ci0rCi0rc3RydWN0IENvbnRleHRUcmFpdHM2 NCA6IHB1YmxpYyBUcmFpdHM2NCB7Ci0rICB1c2luZyBNQ29udGV4dCA9IE1Db250ZXh0NjQ7Ci0r ICB1c2luZyBTaWduYWxUaHJlYWRDb250ZXh0ID0gU2lnbmFsVGhyZWFkQ29udGV4dDY0OwotKyAg dXNpbmcgU2lnbmFsRmxvYXRDb250ZXh0ID0gU2lnbmFsRmxvYXRDb250ZXh0NjQ7Ci0rICB1c2lu ZyBTaWduYWxWZWN0b3JDb250ZXh0ID0gU2lnbmFsVmVjdG9yQ29udGV4dDY0OwotKyAgdXNpbmcg Q1BVQ29udGV4dCA9IENQVUNvbnRleHRQUEM2NDsKLSt9OwotKwotK3N0cnVjdCBDb250ZXh0VHJh aXRzMzIgOiBwdWJsaWMgVHJhaXRzMzIge307Ci0rCi0rc3RydWN0IFVDb250ZXh0IHsKLSsgIHVp bnQ2NF90IGZsYWdzOwotKyAgdWludDY0X3QgbGluazsKLSsgIFNpZ25hbFN0YWNrPENvbnRleHRU cmFpdHM2ND4gc3RhY2s7Ci0rICBTaWdzZXQ8Q29udGV4dFRyYWl0czY0PiBzaWdtYXNrOwotKyAg TUNvbnRleHQ2NCBtY29udGV4dDsKLSt9OwotKyNwcmFnbWEgcGFjayhwdXNoLCAxKQotKwotK3N0 YXRpY19hc3NlcnQoc2l6ZW9mKFVDb250ZXh0KSA9PSBzaXplb2YodWNvbnRleHRfdCksCi0rICAg ICAgICAgICAgICAidWNvbnRleHRfdCBzaXplIG1pc21hdGNoIik7Ci0rc3RhdGljX2Fzc2VydChz aXplb2YoTUNvbnRleHQ2NCkgPT0gc2l6ZW9mKG1jb250ZXh0X3QpLAotKyAgICAgICAgICAgICAg Im1jb250ZXh0X3Qgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25h bFRocmVhZENvbnRleHQ2NCkgPT0gc2l6ZW9mKGdyZWdzZXRfdCksCi0rICAgICAgICAgICAgICAi Z3JlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKLStzdGF0aWNfYXNzZXJ0KHNpemVvZihTaWduYWxG bG9hdENvbnRleHQ2NCkgPT0gc2l6ZW9mKGZwcmVnc2V0X3QpLAotKyAgICAgICAgICAgICAgImZw cmVnc2V0X3Qgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25hbFZl Y3RvckNvbnRleHQ2NCkgPT0gc2l6ZW9mKF9saWJjX3Zyc3RhdGUpLAotKyAgICAgICAgICAgICAg InZyc3RhdGUgc2l6ZSBtaXNtYXRjaCIpOwotK3N0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRl eHQsIG1jb250ZXh0KSA9PQotKyAgICAgICAgICAgICAgb2Zmc2V0b2YodWNvbnRleHRfdCwgdWNf bWNvbnRleHQpLCAibWNvbnRleHQgb2Zmc2V0IG1pc21hdGNoIik7Ci0rc3RhdGljX2Fzc2VydChv ZmZzZXRvZihNQ29udGV4dDY0LCBncF9yZWdzKSA9PQotKyAgICAgICAgICAgICAgb2Zmc2V0b2Yo bWNvbnRleHRfdCwgZ3BfcmVncyksICJncF9yZWdzIG9mZnNldCBtaXNtYXRjaCIpOwotICNlbHNl Ci0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKLUBAIC0yMDMsNiArMjAzLDgg QEAgQ1BVQXJjaGl0ZWN0dXJlIFN5c3RlbVNuYXBzaG90TGludXg6OkdldENQVUFyY2hpdGVjdHVy ZSgpIGNvbnN0IHsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAgcmV0 dXJuIHByb2Nlc3NfcmVhZGVyXy0+SXM2NEJpdCgpID8ga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVM Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBrQ1BVQXJjaGl0ZWN0dXJl TUlQU0VMOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgcmV0dXJu IGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKLSAjZWxzZQotICNlcnJvciBwb3J0IHRvIHlvdXIgYXJj aGl0ZWN0dXJlCi0gI2VuZGlmCi1AQCAtMjE4LDYgKzIyMCw5IEBAIHVpbnQzMl90IFN5c3RlbVNu YXBzaG90TGludXg6OkNQVVJldmlzaW9uKCkgY29uc3QgewotICNlbGlmIGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpCi0gICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCi0gICByZXR1 cm4gMDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5vdCB5 ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKLSsgIHJldHVybiAwOwotICNlbHNlCi0gI2Vycm9yIHBv cnQgdG8geW91ciBhcmNoaXRlY3R1cmUKLSAjZW5kaWYKLUBAIC0yMzgsNiArMjQzLDkgQEAgc3Rk OjpzdHJpbmcgU3lzdGVtU25hcHNob3RMaW51eDo6Q1BVVmVuZG9yKCkgY29uc3QgewotICNlbGlm IGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICAvLyBOb3QgaW1wbGVtZW50YWJsZSBv biBNSVBTCi0gICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKLSsgIHJl dHVybiBzdGQ6OnN0cmluZygpOwotICNlbHNlCi0gI2Vycm9yIHBvcnQgdG8geW91ciBhcmNoaXRl Y3R1cmUKLSAjZW5kaWYKLUBAIC0zNzEsNiArMzc5LDkgQEAgYm9vbCBTeXN0ZW1TbmFwc2hvdExp bnV4OjpOWEVuYWJsZWQoKSBjb25zdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkKLSAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKLSAgIHJldHVybiBmYWxzZTsK LSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIC8vIE5vdCB5ZXQgaW1w bGVtZW50ZWQgb24gUFBDNjQKLSsgIHJldHVybiBmYWxzZTsKLSAjZWxzZQotICNlcnJvciBQb3J0 LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC90aHJlYWRfc25hcHNob3RfbGludXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv dGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCi1AQCAtMTg2LDYgKzE4NiwxNCBAQCBib29sIFRocmVh ZFNuYXBzaG90TGludXg6OkluaXRpYWxpemUoUHJvY2Vzc1JlYWRlckxpbnV4KiBwcm9jZXNzX3Jl YWRlciwKLSAgICAgICAgIHRocmVhZC50aHJlYWRfaW5mby5mbG9hdF9jb250ZXh0LmYzMiwKLSAg ICAgICAgIGNvbnRleHRfLm1pcHNlbCk7Ci0gICB9Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9Q UEM2NF9GQU1JTFkpCi0rICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0ZWN0dXJl UFBDNjQ7Ci0rICBjb250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsKLSsgIElu aXRpYWxpemVDUFVDb250ZXh0UFBDNjQ8Q29udGV4dFRyYWl0czY0PigKLSsgICAgICB0aHJlYWQu dGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0LAotKyAgICAgIHRocmVhZC50aHJlYWRfaW5m by5mbG9hdF9jb250ZXh0LmY2NCwKLSsgICAgICB0aHJlYWQudGhyZWFkX2luZm8udmVjdG9yX2Nv bnRleHQudjY0LAotKyAgICAgIGNvbnRleHRfLnBwYzY0KTsKLSAjZWxzZQotICNlcnJvciBQb3J0 LgotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGlu dXguaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguaAot QEAgLTY4LDYgKzY4LDggQEAgY2xhc3MgVGhyZWFkU25hcHNob3RMaW51eCBmaW5hbCA6IHB1Ymxp YyBUaHJlYWRTbmFwc2hvdCB7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkK LSAgICAgQ1BVQ29udGV4dE1JUFMgbWlwc2VsOwotICAgICBDUFVDb250ZXh0TUlQUzY0IG1pcHM2 NDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgQ1BVQ29udGV4 dFBQQzY0IHBwYzY0OwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQ VV9YODZfRkFNSUxZCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5jYwot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKLUBAIC01Niw2ICs1Niwx MSBAQCBib29sIEF1eGlsaWFyeVZlY3Rvcjo6UmVhZChQdHJhY2VDb25uZWN0aW9uKiBjb25uZWN0 aW9uKSB7Ci0gICAgIGlmICh0eXBlID09IEFUX0lHTk9SRSkgewotICAgICAgIGNvbnRpbnVlOwot ICAgICB9Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICBpZiAodHlw ZSA9PSBBVF9JR05PUkVQUEMpIHsKLSsgICAgICBjb250aW51ZTsKLSsgICAgfQotKyNlbmRpZgot ICAgICBpZiAoIU1hcEluc2VydE9yUmVwbGFjZSgmdmFsdWVzXywgdHlwZSwgdmFsdWUsIG51bGxw dHIpKSB7Ci0gICAgICAgTE9HKEVSUk9SKSA8PCAiZHVwbGljYXRlIGF1eHYgZW50cnkiOwotICAg ICAgIHJldHVybiBmYWxzZTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VfYnJva2VyLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbGludXgvcHRyYWNlX2Jyb2tlci5jYwotQEAgLTkzLDggKzkzLDgg QEAgaW50IFB0cmFjZUJyb2tlcjo6UnVuKCkgewotIH0KLSAKLSBib29sIFB0cmFjZUJyb2tlcjo6 QWxsb2NhdGVBdHRhY2htZW50cygpIHsKLS0gIGNvbnN0ZXhwciBzaXplX3QgcGFnZV9zaXplID0g NDA5NjsKLS0gIGNvbnN0ZXhwciBzaXplX3QgYWxsb2Nfc2l6ZSA9Ci0rICBzdGF0aWMgc2l6ZV90 IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7Ci0rICBzaXplX3QgYWxsb2Nfc2l6ZSA9Ci0gICAg ICAgKHNpemVvZihTY29wZWRQdHJhY2VBdHRhY2gpICsgcGFnZV9zaXplIC0gMSkgJiB+KHBhZ2Vf c2l6ZSAtIDEpOwotICAgdm9pZCogYWxsb2MgPSBzYnJrKGFsbG9jX3NpemUpOwotICAgaWYgKHJl aW50ZXJwcmV0X2Nhc3Q8aW50cHRyX3Q+KGFsbG9jKSA9PSAtMSkgewotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGls L2xpbnV4L3B0cmFjZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCi1AQCAt Mzk0LDYgKzM5NCw2NCBAQCBib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0aWQsCi0gICByZXR1 cm4gdHJ1ZTsKLSB9Ci0gCi0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0r Ly8gUFBDNjQgaGFzIGhhZCBIQVZFX0FSQ0hfVFJBQ0VIT09LIHNldCBzaW5jZSAyLjYuMjcgKGV2 ZW4gYmVmb3JlIHg4NiBoYWQgaXQpLgotKy8vIFRoYXQgbWVhbnMgd2UgY2FuIHNpbXBseSB1c2Ug UFRSQUNFX0dFVFJFR0VTRVQuCi0rCi0rdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RpbmF0aW9uPgot K2Jvb2wgR2V0UmVnaXN0ZXJTZXQocGlkX3QgdGlkLCBpbnQgc2V0LCBEZXN0aW5hdGlvbiogZGVz dCwgYm9vbCBjYW5fbG9nKSB7Ci0rICBpb3ZlYyBpb3Y7Ci0rICBpb3YuaW92X2Jhc2UgPSByZWlu dGVycHJldF9jYXN0PHZvaWQqPihkZXN0KTsKLSsgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mKCpkZXN0 KTsKLSsgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCByZWludGVycHJldF9jYXN0 PHZvaWQqPihzZXQpLCAmaW92KSAhPSAwKSB7Ci0rICAgIFBMT0dfSUYoRVJST1IsIGNhbl9sb2cp IDw8ICJwdHJhY2UiOwotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rICBpZiAoaW92Lmlvdl9s ZW4gIT0gc2l6ZW9mKCpkZXN0KSkgewotKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8ICJV bmV4cGVjdGVkIHJlZ2lzdGVycyBzaXplIjsKLSsgICAgcmV0dXJuIGZhbHNlOwotKyAgfQotKyAg cmV0dXJuIHRydWU7Ci0rfQotKwotK2Jvb2wgR2V0VmVjdG9yUmVnaXN0ZXJzNjQocGlkX3QgdGlk LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yQ29udGV4dCogY29udGV4dCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgewotKyAgcmV0dXJuIEdldFJl Z2lzdGVyU2V0KHRpZCwgTlRfUFBDX1ZNWCwgJmNvbnRleHQtPnY2NCwgY2FuX2xvZyk7Ci0rfQot KwotK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHBpZF90IHRpZCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7Ci0rICByZXR1cm4gR2V0 UmVnaXN0ZXJTZXQodGlkLCBOVF9QUkZQUkVHLCAmY29udGV4dC0+ZjY0LCBjYW5fbG9nKTsKLSt9 Ci0rCi0rYm9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAotKyAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IFRocmVhZENvbnRleHQmIGNvbnRleHQsCi0rICAgICAgICAgICAgICAgICAgICAg TGludXhWTUFkZHJlc3MqIGFkZHJlc3MsCi0rICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5f bG9nKSB7Ci0rICAvLyBQUEM2NCBkb2Vzbid0IGhhdmUgUFRSQUNFX0dFVF9USFJFQURfQVJFQSBz aW5jZSB0aGUgdGhyZWFkIHBvaW50ZXIKLSsgIC8vIGlzIHN0b3JlZCBpbiBHUFIgMTMuCi0rICBU aHJlYWRDb250ZXh0Ojp0NjRfdCB0YzsKLSsgIGlmICghR2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9Q UlNUQVRVUywgJnRjLCBjYW5fbG9nKSkgewotKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8 ICJVbmFibGUgdG8gZ2V0IHRocmVhZCBwb2ludGVyISI7Ci0rICAgIHJldHVybiBmYWxzZTsKLSsg IH0KLSsKLSsgICphZGRyZXNzID0gdGMuZ3ByWzEzXTsKLSsKLSsgIHJldHVybiB0cnVlOwotK30K LSsKLSsvLyBTdHVicyBmb3IgMzItYml0IGZ1bmN0aW9ucyBub3QgYXBwbGljYWJsZSBvbiBQUEM2 NAotK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczMyKHBpZF90IHRpZCwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBmYWxzZTsg fQotK2Jvb2wgR2V0VGhyZWFkQXJlYTMyKHBpZF90IHRpZCwKLSsgICAgICAgICAgICAgICAgICAg ICBjb25zdCBUaHJlYWRDb250ZXh0ICZjb250ZXh0LAotKyAgICAgICAgICAgICAgICAgICAgIExp bnV4Vk1BZGRyZXNzICphZGRyZXNzLAotKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xv ZykgeyByZXR1cm4gZmFsc2U7IH0KLSsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAg Ly8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTQ4Niw2ICs1NDQsOSBAQCBib29sIFB0cmFjZXI6 OkdldFRocmVhZEluZm8ocGlkX3QgdGlkLCBUaHJlYWRJbmZvKiBpbmZvKSB7Ci0gICBpZiAoaXNf NjRfYml0XykgewotICAgICByZXR1cm4gR2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnM2NCh0aWQs ICZpbmZvLT50aHJlYWRfY29udGV4dCwgY2FuX2xvZ18pICYmCi0gICAgICAgICAgICBHZXRGbG9h dGluZ1BvaW50UmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+ZmxvYXRfY29udGV4dCwgY2FuX2xvZ18p ICYmCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAgICAgICAgR2V0 VmVjdG9yUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dmVjdG9yX2NvbnRleHQsIGNhbl9sb2dfKSAm JgotKyNlbmRpZgotICAgICAgICAgICAgR2V0VGhyZWFkQXJlYTY0KHRpZCwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmZvLT50aHJlYWRfY29udGV4dCwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAmaW5mby0+dGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVzcywKLS0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFk X2luZm8uaAotQEAgLTI4LDYgKzI4LDEwIEBACi0gI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVs Lmg+Ci0gI2VuZGlmCi0gCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyNp bmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2UgY3Jhc2hwYWQg ewotIAotIC8vISBcYnJpZWYgVGhlIHNldCBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzIGZv ciBhbiBhcmNoaXRlY3R1cmUgZmFtaWx5LgotQEAgLTc5LDYgKzgzLDggQEAgdW5pb24gVGhyZWFk Q29udGV4dCB7Ci0gICAgIHVpbnQzMl90IGNwMF9zdGF0dXM7Ci0gICAgIHVpbnQzMl90IGNwMF9j YXVzZTsKLSAgICAgdWludDMyX3QgcGFkZGluZzFfOwotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQotKyAgICAvLyBQUEM2NCBpcyA2NC1iaXQKLSAjZWxzZQotICNlcnJvciBQ b3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTEzMiw2ICsxMzgsMjEg QEAgdW5pb24gVGhyZWFkQ29udGV4dCB7Ci0gICAgIHVpbnQ2NF90IGNwMF9iYWR2YWRkcjsKLSAg ICAgdWludDY0X3QgY3AwX3N0YXR1czsKLSAgICAgdWludDY0X3QgY3AwX2NhdXNlOwotKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgICAvLyBSZWZsZWN0cyBzdHJ1Y3Qg cHRfcmVncyBpbiBhc20vcHRyYWNlLmguCi0rICAgIHVpbnQ2NF90IGdwclszMl07Ci0rICAgIHVp bnQ2NF90IG5pcDsKLSsgICAgdWludDY0X3QgbXNyOwotKyAgICB1aW50NjRfdCBvcmlnX2dwcjM7 Ci0rICAgIHVpbnQ2NF90IGN0cjsKLSsgICAgdWludDY0X3QgbG5rOwotKyAgICB1aW50NjRfdCB4 ZXI7Ci0rICAgIHVpbnQ2NF90IGNjcjsKLSsgICAgdWludDY0X3Qgc29mdGU7Ci0rICAgIHVpbnQ2 NF90IHRyYXA7Ci0rICAgIHVpbnQ2NF90IGRhcjsKLSsgICAgdWludDY0X3QgZHNpc3I7Ci0rICAg IHVpbnQ2NF90IHJlc3VsdDsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJD SF9DUFVfWDg2X0ZBTUlMWQotQEAgLTE0Myw2ICsxNjQsOCBAQCB1bmlvbiBUaHJlYWRDb250ZXh0 IHsKLSAgIHVzaW5nIE5hdGl2ZVRocmVhZENvbnRleHQgPSB1c2VyX3JlZ3M7Ci0gI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAvLyBObyBhcHByb3ByaWF0ZSBOYXRpdmVUaHJl YWRzQ29udGV4dCB0eXBlIGF2YWlsYWJsZSBmb3IgTUlQUwotKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQotKyAgdXNpbmcgTmF0aXZlVGhyZWFkQ29udGV4dCA9IHN0cnVjdCBw dF9yZWdzOwotICNlbHNlCi0gI2Vycm9yIFBvcnQuCi0gI2VuZGlmICAvLyBBUkNIX0NQVV9YODZf RkFNSUxZIHx8IEFSQ0hfQ1BVX0FSTTY0Ci1AQCAtMjE4LDYgKzI0MSw5IEBAIHVuaW9uIEZsb2F0 Q29udGV4dCB7Ci0gICAgIH0gZnByZWdzWzMyXTsKLSAgICAgdWludDMyX3QgZnBjc3I7Ci0gICAg IHVpbnQzMl90IGZwdV9pZDsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK LSsgICAgLy8gQ3Jhc2hwYWQncyBQUEMgc3VwcG9ydCBpcyA2NC1iaXQgb25seSwgc28gdGhpcwot KyAgICAvLyAzMmJpdC1vbmx5IHN0cnVjdCBpcyBkZWNsYXJlZCBhcyBlbXB0eS4KLSAjZWxzZQot ICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQotQEAgLTI1Miw2 ICsyNzgsMTAgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSAgICAgZG91YmxlIGZwcmVnc1szMl07 Ci0gICAgIHVpbnQzMl90IGZwY3NyOwotICAgICB1aW50MzJfdCBmcHVfaWQ7Ci0rI2VsaWYgZGVm aW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCi0rICAgIC8vIFJlZmxlY3RzIGZwcmVnc2V0X3Qg aW4gc3lzL3Vjb250ZXh0LmgKLSsgICAgZG91YmxlIGZwcmVnc1szMl07Ci0rICAgIGRvdWJsZSBm cHNjcjsKLSAjZWxzZQotICNlcnJvciBQb3J0LgotICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZB TUlMWQotQEAgLTI4MCw2ICszMTAsOCBAQCB1bmlvbiBGbG9hdENvbnRleHQgewotICAgc3RhdGlj X2Fzc2VydChzaXplb2YoZjY0KSA9PSBzaXplb2YodXNlcl9mcHNpbWRfc3RydWN0KSwgIlNpemUg bWlzbWF0Y2giKTsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotIC8vIE5v IGFwcHJvcHJpYXRlIGZsb2F0aW5nIHBvaW50IGNvbnRleHQgbmF0aXZlIHR5cGUgZm9yIGF2YWls YWJsZSBNSVBTLgotKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQotKyAgc3Rh dGljX2Fzc2VydChzaXplb2YoZjY0KSA9PSBzaXplb2YoZnByZWdzZXRfdCksICJTaXplIG1pc21h dGNoIik7Ci0gI2Vsc2UKLSAjZXJyb3IgUG9ydC4KLSAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Ngot QEAgLTI4Nyw2ICszMTksMjYgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKLSBzdGF0aWNfYXNzZXJ0 KHN0ZDo6aXNfc3RhbmRhcmRfbGF5b3V0PEZsb2F0Q29udGV4dD46OnZhbHVlLAotICAgICAgICAg ICAgICAgIk5vdCBzdGFuZGFyZCBsYXlvdXQiKTsKLSAKLSsvLyEgXGJyaWVmIFRoZSB2ZWN0b3Ig cmVnaXN0ZXJzIHVzZWQgZm9yIGFuIGFyY2hpdGVjdHVyZSBmYW1pbHkKLSt1bmlvbiBWZWN0b3JD b250ZXh0IHsKLSsgIHN0cnVjdCB2MzJfdCB7fSB2MzI7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQotKyAgX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSkgLy8gVmVj dG9yIGNvbnRleHQgbXVzdCBiZSBkb3VibGV3b3JkIGFsaWduZWQuCi0rI2VuZGlmCi0rICBzdHJ1 Y3QgdjY0X3QgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgICAgLy8g UmVmbGVjdHMgdnJyZWdzZXRfdCBpbiBzeXMvdWNvbnRleHQuaAotKyAgICB1aW50MzJfdCB2cnJl Z3NbMzJdWzRdOwotKyAgICBzdHJ1Y3QgewotKyAgICAgIHVpbnQzMl90IF9fcGFkWzNdOwotKyAg ICAgIHVpbnQzMl90IHZzY3Jfd29yZDsKLSsgICAgfSB2c2NyOwotKyAgICB1aW50MzJfdCB2cnNh dmU7Ci0rICAgIHVpbnQzMl90IF9fcGFkWzNdOwotKyNlbmRpZgotKyAgfSB2NjQ7Ci0rfTsKLSsK LSAvLyEgXGJyaWVmIEEgY29sbGVjdGlvbiBvZiBgcHRyYWNlYC1hYmxlIGluZm9ybWF0aW9uIGFi b3V0IGEgdGhyZWFkLgotIHN0cnVjdCBUaHJlYWRJbmZvIHsKLSAgIFRocmVhZEluZm8oKTsKLUBA IC0yOTgsNiArMzUwLDkgQEAgc3RydWN0IFRocmVhZEluZm8gewotICAgLy8hIFxicmllZiBUaGUg ZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzIGZvciB0aGUgdGhyZWFkLgotICAgRmxvYXRDb250ZXh0 IGZsb2F0X2NvbnRleHQ7Ci0gCi0rICAvLyEgXGJyaWVmIChPcHRpb25hbCkgVGhlIHZlY3RvciBy ZWdpc3RlcnMgdXNlZCBmb3IgdGhlIHRocmVhZC4KLSsgIFZlY3RvckNvbnRleHQgdmVjdG9yX2Nv bnRleHQ7Ci0rCi0gICAvLyEgXGJyaWVmIFRoZSB0aHJlYWQtbG9jYWwgc3RvcmFnZSBhZGRyZXNz IGZvciB0aGUgdGhyZWFkLgotICAgTGludXhWTUFkZHJlc3MgdGhyZWFkX3NwZWNpZmljX2RhdGFf YWRkcmVzczsKLSB9OwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0LmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oCi1AQCAtNjYsNiArNjYsNyBAQCB1 c2luZyBOYXRpdmVDUFVDb250ZXh0ID0gdWNvbnRleHRfdDsKLSAvLyEgICAgIG1hY09TL0xpbnV4 L0Z1Y2hzaWEgfCB4ODZfNjQgICAgICAgfCBgJSVyZGlgCi0gLy8hICAgICBMaW51eCAgICAgICAg ICAgICAgIHwgQVJNL0FSTTY0ICAgIHwgYHIwYC9geDBgCi0gLy8hICAgICBMaW51eCAgICAgICAg ICAgICAgIHwgTUlQUy9NSVBTNjQgIHwgYCRhMGAKLSsvLyEgICAgIExpbnV4ICAgICAgICAgICAg ICAgfCBQUEM2NCAgICAgICAgfCBgcjNgCi0gLy8hCi0gLy8hICAgICBBZGRpdGlvbmFsbHksIHRo ZSB2YWx1ZSBgTFJgIG9uIEFSTS9BUk02NCB3aWxsIGJlIHRoZSByZXR1cm4gYWRkcmVzcyBvZgot IC8vISAgICAgdGhpcyBmdW5jdGlvbi4KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29u dGV4dF9saW51eC5TCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGludXgu UwotQEAgLTI4LDcgKzI4LDcgQEAKLSAgIC5nbG9ibCBDQVBUVVJFQ09OVEVYVF9TWU1CT0wyCi0g I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKLSAgIC5iYWxpZ24g MTYsIDB4OTAKLS0jZWxpZiBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19taXBzX18pCi0rI2VsaWYgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCi0gICAuYmFsaWduIDQsIDB4MAotICNlbmRpZgotIAotQEAgLTQxOSw0ICs0MTksMjE0IEBA IENBUFRVUkVDT05URVhUX1NZTUJPTDI6Ci0gICBqciAkcmEKLSAKLSAgIC5zZXQgYXQKLSsjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0rICAvLyBTdG9yZSByMC1yMzEKLSsgIHN0ZCAwLCAw eGU4KDMpICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1swXQotKyAgc3RkIDEsIDB4 ZjAoMykgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzFdCi0rICBzdGQgMiwgMHhm OCgzKSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMl0KLSsgIC8vIG5vdGUgdGhh dCByMydzIG9yaWdpbmFsIHZhbHVlIHdhcyBsb3N0Ci0rICBzdGQgMywgMHgxMDAoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbM10KLSsgIHN0ZCA0LCAweDEwOCgzKSAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s0XQotKyAgc3RkIDUsIDB4MTEwKDMpICAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzVdCi0rICBzdGQgNiwgMHgxMTgoMykgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbNl0KLSsgIHN0ZCA3LCAweDEyMCgzKSAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s3XQotKyAgc3RkIDgsIDB4MTI4KDMpICAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzWzhdCi0rICBzdGQgOSwgMHgxMzAoMykgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmdwX3JlZ3NbOV0KLSsgIHN0ZCAxMCwgMHgxMzgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxMF0KLSsgIHN0ZCAxMSwgMHgxNDAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxMV0KLSsgIHN0ZCAxMiwgMHgxNDgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxMl0KLSsgIHN0ZCAxMywgMHgxNTAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxM10KLSsgIHN0ZCAxNCwgMHgxNTgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxNF0KLSsgIHN0ZCAxNSwgMHgxNjAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxNV0KLSsgIHN0ZCAxNiwgMHgxNjgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxNl0KLSsgIHN0ZCAxNywgMHgxNzAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxN10KLSsgIHN0ZCAxOCwgMHgxNzgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxOF0KLSsgIHN0ZCAxOSwgMHgxODAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1sxOV0KLSsgIHN0ZCAyMCwgMHgxODgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syMF0KLSsgIHN0ZCAyMSwgMHgxOTAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syMV0KLSsgIHN0ZCAyMiwgMHgxOTgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syMl0KLSsgIHN0ZCAyMywgMHgxYTAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syM10KLSsgIHN0ZCAyNCwgMHgxYTgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syNF0KLSsgIHN0ZCAyNSwgMHgxYjAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syNV0KLSsgIHN0ZCAyNiwgMHgxYjgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syNl0KLSsgIHN0ZCAyNywgMHgxYzAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syN10KLSsgIHN0ZCAyOCwgMHgxYzgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syOF0KLSsgIHN0ZCAyOSwgMHgxZDAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1syOV0KLSsgIHN0ZCAzMCwgMHgxZDgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1szMF0KLSsgIHN0ZCAzMSwgMHgxZTAoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1szMV0KLSsKLSsgIC8vIEZvciBOSVAsIHdlIGNhbiB1c2UgdGhl IHZhbHVlIGluIHRoZSBsaW5rIHJlZ2lzdGVyCi0rICBtZmxyIDAKLSsgIHN0ZCAwLCAweDFlOCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF0KLSsKLSsgIC8vIENUUgot KyAgbWZjdHIgMAotKyAgc3RkIDAsIDB4MjAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfQ1RSXQotKwotKyAgLy8gRm9yIExOSywgd2UnbGwgdXNlIHRoZSBjYWxsZXIncyBM UiBzYXZlIGFyZWEgKDIgc3RhY2sgZnJhbWVzIHVwKS4KLSsgIC8vIHI0IGNhbiBiZSB1c2VkIGFz IGEgc2NyYXRjaCByZWdpc3RlciBzaW5jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLgotKyAg bGQgNCwgMCgxKQotKyAgbGQgNCwgMTYoNCkKLSsgIHN0ZCA0LCAweDIwOCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0xOS10KLSsKLSsgIC8vIFhFUgotKyAgbWZ4ZXIgMAot KyAgc3RkIDAsIDB4MjEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfWEVS XQotKwotKyAgLy8gQ0NSCi0rICBtZmNyIDAKLSsgIHN0ZCAwLCAweDIxOCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0KLSsKLSsgIC8vIE1TUiwgb3JpZ19yMywgTVEs IFRSQVAsIERBUiwgRFNJU1IsIFJFU1VMVCwgRFNDUiwKLSsgIC8vIG5vdCB1c2VkIG9yIG5vdCBy ZWxldmFudCwgIHplcm8gdGhlbSBvdXQuCi0rICBsaSA0LCAwCi0rICBzdGQgNCwgMHgxZjAoMykg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdCi0rICBzdGQgNCwgMHgxZjgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9PUklHX1IzXQotKyAgc3RkIDQs IDB4MjIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVFdCi0rICBzdGQg NCwgMHgyMjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9UUkFQXQotKyAg c3RkIDQsIDB4MjMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfREFSXQot KyAgc3RkIDQsIDB4MjM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNJ U1JdCi0rICBzdGQgNCwgMHgyNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQ VF9SRVNVTFRdCi0rICBzdGQgNCwgMHgyNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tQVF9EU0NSXQotKwotKyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0LnJlZ3Mg dG8gcG9pbnQgdG8gZ3BfcmVncwotKyAgYWRkaSAwLCAzLCAweGU4Ci0rICBzdGQgMCwgMHhlMCgz KQotKwotKyAgLy8gU2F2ZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgMC0zMQotKyAgc3RmZCAw LCAweDI2OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1swXQotKyAgc3RmZCAx LCAweDI3MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxXQotKyAgc3RmZCAy LCAweDI3OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syXQotKyAgc3RmZCAz LCAweDI4MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szXQotKyAgc3RmZCA0 LCAweDI4OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s0XQotKyAgc3RmZCA1 LCAweDI5MCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s1XQotKyAgc3RmZCA2 LCAweDI5OCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s2XQotKyAgc3RmZCA3 LCAweDJhMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s3XQotKyAgc3RmZCA4 LCAweDJhOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s4XQotKyAgc3RmZCA5 LCAweDJiMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s5XQotKyAgc3RmZCAx MCwgMHgyYjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMF0KLSsgIHN0ZmQg MTEsIDB4MmMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTFdCi0rICBzdGZk IDEyLCAweDJjOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEyXQotKyAgc3Rm ZCAxMywgMHgyZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxM10KLSsgIHN0 ZmQgMTQsIDB4MmQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTRdCi0rICBz dGZkIDE1LCAweDJlMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE1XQotKyAg c3RmZCAxNiwgMHgyZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNl0KLSsg IHN0ZmQgMTcsIDB4MmYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTddCi0r ICBzdGZkIDE4LCAweDJmOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE4XQot KyAgc3RmZCAxOSwgMHgzMDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxOV0K LSsgIHN0ZmQgMjAsIDB4MzA4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjBd Ci0rICBzdGZkIDIxLCAweDMxMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIx XQotKyAgc3RmZCAyMiwgMHgzMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sy Ml0KLSsgIHN0ZmQgMjMsIDB4MzIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3Nb MjNdCi0rICBzdGZkIDI0LCAweDMyOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdz WzI0XQotKyAgc3RmZCAyNSwgMHgzMzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVn c1syNV0KLSsgIHN0ZmQgMjYsIDB4MzM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3Jl Z3NbMjZdCi0rICBzdGZkIDI3LCAweDM0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9y ZWdzWzI3XQotKyAgc3RmZCAyOCwgMHgzNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBf cmVnc1syOF0KLSsgIHN0ZmQgMjksIDB4MzUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMjldCi0rICBzdGZkIDMwLCAweDM1OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5m cF9yZWdzWzMwXQotKyAgc3RmZCAzMSwgMHgzNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu ZnBfcmVnc1szMV0KLSsKLSsgIC8vIEZQU0NSCi0rICBtZmZzIDAKLSsgIHN0ZmQgMCwgMHgzNjgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMl0KLSsKLSsgIC8vIFNhdmUgVk1Y IFZlY3RvciByZWdpc3RlcnMKLSsgIC8vIFVwZGF0ZSByNCB0byBjb250YWluIHRoZSBiYXNlIGFk ZHJlc3Mgb2Ygdm14X3Jlc2VydmUKLSsgIGFkZGkgNCwgMywgMHgzNzgKLSsgIC8vIEVuc3VyZSB0 aGF0IGl0IGlzIHF1YWR3b3JkIGFsaWduZWQKLSsgIGFuZGkuIDUsIDQsIDB4RgotKyAgYmVxIDFm IC8vIE5vIGFsaWdubWVudCBpcyBuZWNlc3NhcnkKLSsgIC8vIEFkZHJlc3MgaXMgZG91Ymxld29y ZCBhbGlnbmVkIGFuZCBub3QgcXVhZHdvcmQgYWxpZ25lZCwgYWRkIDgKLSsgIGFkZGkgNCwgNCwg OAotKwotKzE6Ci0rICAvLyBTdG9yZSBWTVggcmVnaXN0ZXJzIDAtMzEKLSsgIC8vIHI0IHdpbGwg Y29udGFpbiB0aGUgYmFzZSBhZGRyZXNzCi0rICAvLyByNSB3aWxsIGNvbnRhaW4gdGhlIGluZGV4 Ci0rICBsaSA1LCAwCi0rICBzdHZ4IDAsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52 bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMSwgNCwg NSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxXQotKyAg YWRkaSA1LCA1LCAxNgotKyAgc3R2eCAyLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu dm14X3Jlc2VydmVbKGFsaWduKSArIDJdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDMsIDQs IDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgM10KLSsg IGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggNCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnZteF9yZXNlcnZlWyhhbGlnbikgKyA0XQotKyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA1LCA0 LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDVdCi0r ICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDYsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4 dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgNl0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggNywg NCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA3XQot KyAgYWRkaSA1LCA1LCAxNgotKyAgc3R2eCA4LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQudm14X3Jlc2VydmVbKGFsaWduKSArIDhdCi0rICBhZGRpIDUsIDUsIDE2Ci0rICBzdHZ4IDks IDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgOV0K LSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dngg MTEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAx MV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTIsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMl0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0 dnggMTMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAxM10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTQsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsg IHN0dnggMTUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAxNV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTYsIDQsIDUgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNl0KLSsgIGFkZGkgNSwgNSwgMTYK LSsgIHN0dnggMTcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAxN10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMTgsIDQsIDUgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxOF0KLSsgIGFkZGkgNSwgNSwg MTYKLSsgIHN0dnggMTksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyAxOV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjAsIDQsIDUgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMF0KLSsgIGFkZGkgNSwg NSwgMTYKLSsgIHN0dnggMjEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyAyMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjIsIDQsIDUgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMl0KLSsgIGFkZGkg NSwgNSwgMTYKLSsgIHN0dnggMjMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAyM10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjQsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNF0KLSsgIGFk ZGkgNSwgNSwgMTYKLSsgIHN0dnggMjUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAyNV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjYsIDQs IDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNl0KLSsg IGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyN10KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjgs IDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyOF0K LSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMjksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyOV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dngg MzAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAz MF0KLSsgIGFkZGkgNSwgNSwgMTYKLSsgIHN0dnggMzEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAzMV0KLSsgIGFkZGkgNSwgNSwgMTYKLSsKLSsg IC8vIFZTQ1IKLSsgIG1mdnNjciAwCi0rICBzdHZ4IDAsIDQsIDUKLSsgIGFkZGkgNSwgNSwgMTYK LSsKLSsgIC8vIFZSU0FWRQotKyAgbWZ2cnNhdmUgMAotKyAgc3R3eCAwLCA0LCA1Ci0rCi0rICAv LyBVcGRhdGUgY29udGV4dC0+dWNfbWNvbnRleHQudl9yZWdzIHRvIHBvaW50IHRvIHZteF9yZXNl cnZlICsgYWxpZ25tZW50LgotKyAgc3RkIDQsIDB4MzcwKDMpCi0rCi0rICAvLyBaZXJvIG91dCBh bGwgdW51c2VkIGZpZWxkcwotKyAgbGkgNCwgMAotKyAgc3RkIDQsIDB4YzgoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuc2lnbmFsCi0rICBzdGQgNCwgMHhkMCgzKSAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5oYW5kbGVyCi0rICBzdGQgNCwgMHhkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5vbGRtYXNrCi0rCi0rICBibHIKLSAjZW5kaWYgIC8vIF9faTM4Nl9fCi0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0 aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2Fw dHVyZV9jb250ZXh0X3Rlc3QuY2MKLUBAIC00OSw3ICs0OSw4IEBAIHZvaWQgVGVzdENhcHR1cmVD b250ZXh0KCkgewotICAgLy8gcmVmZXJlbmNlIHByb2dyYW0gY291bnRlci4KLSAgIHVpbnRwdHJf dCBwYyA9IFByb2dyYW1Db3VudGVyRnJvbUNvbnRleHQoY29udGV4dF8xKTsKLSAKLS0jaWYgIWRl ZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQotKyNpZiAhZGVmaW5lZChBRERSRVNTX1NBTklUSVpFUikgJiYgIWRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIFwKLSsgICAgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQot ICAgLy8gQWRkcmVzc1Nhbml0aXplciBjYW4gY2F1c2UgZW5vdWdoIGNvZGUgYmxvYXQgdGhhdCB0 aGUg4oCcbmVhcmJ54oCdIGNoZWNrIHdvdWxkCi0gICAvLyBsaWtlbHkgZmFpbC4KLSAgIGNvbnN0 IHVpbnRwdHJfdCBrUmVmZXJlbmNlUEMgPQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9j b250ZXh0X3Rlc3RfdXRpbF9saW51eC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9j b250ZXh0X3Rlc3RfdXRpbF9saW51eC5jYwotQEAgLTM2LDYgKzM2LDggQEAgdm9pZCBTYW5pdHlD aGVja0NvbnRleHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgewotICAgRVhQRUNU X0VRKGNvbnRleHQudWNfbWNvbnRleHQucmVnc1swXSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJf dD4oJmNvbnRleHQpKTsKLSAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQotICAg RVhQRUNUX0VRKGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbNF0sIEZyb21Qb2ludGVyQ2FzdDx1 aW50cHRyX3Q+KCZjb250ZXh0KSk7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCi0rICBFWFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzWzNdLCBGcm9tUG9p bnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOwotICNlbmRpZgotIH0KLSAKLUBAIC01MCw2 ICs1Miw4IEBAIHVpbnRwdHJfdCBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnN0IE5hdGl2 ZUNQVUNvbnRleHQmIGNvbnRleHQpIHsKLSAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LnBj OwotICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCi0gICByZXR1cm4gY29udGV4 dC51Y19tY29udGV4dC5wYzsKLSsjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK LSsgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXTsKLSAjZW5kaWYK LSB9Ci0gCi1AQCAtNjQsNiArNjgsOCBAQCB1aW50cHRyX3QgU3RhY2tQb2ludGVyRnJvbUNvbnRl eHQoY29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgewotICAgcmV0dXJuIGNvbnRleHQu dWNfbWNvbnRleHQuc3A7Ci0gI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKLSAg IHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdyZWdzWzI5XTsKLSsjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKLSsgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LmdwX3Jl Z3NbMV07Ci0gI2VuZGlmCi0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVz dC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYwotQEAgLTQ2LDEyICs0 NiwxMiBAQCBib29sIENhbkNhdXNlU2lnbmFsKGludCBzaWcpIHsKLSAgIHJldHVybiBzaWcgPT0g U0lHQUJSVCB8fAotICAgICAgICAgIHNpZyA9PSBTSUdBTFJNIHx8Ci0gICAgICAgICAgc2lnID09 IFNJR0JVUyB8fAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKLSsjaWYgIWRlZmluZWQo QVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotICAgICAgICAgIHNp ZyA9PSBTSUdGUEUgfHwKLS0jZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQotKyNl bmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQ QzY0KQotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9D UFVfQVJNRUwpCi0gICAgICAgICAgc2lnID09IFNJR0lMTCB8fAotLSNlbmRpZiAgLy8gZGVmaW5l ZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMCi0rI2VuZGlm ICAvLyBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJN RUwpCi0gICAgICAgICAgc2lnID09IFNJR1BJUEUgfHwKLSAgICAgICAgICBzaWcgPT0gU0lHU0VH ViB8fAotICNpZiBkZWZpbmVkKE9TX01BQ09TWCkKLUBAIC0xMTcsOSArMTE3LDExIEBAIHZvaWQg Q2F1c2VTaWduYWwoaW50IHNpZykgewotICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0tI2lmICFk ZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQotKyNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYg IWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCi0gICAgIC8vIEFSTTY0IGhhcyBoYXJkd2FyZSBpbnRl Z2VyIGRpdmlzaW9uIGluc3RydWN0aW9ucyB0aGF0IGRvbuKAmXQgZ2VuZXJhdGUgYQotICAgICAv LyB0cmFwIGZvciBkaXZpZGUtYnktemVybywgc28gdGhpcyBkb2VzbuKAmXQgcHJvZHVjZSBTSUdG UEUuCi0rICAgIC8vCi0rICAgIC8vIFBQQzY0IGZpeGVkLXBvaW50IGRpdmlzaW9uIGJ5IHplcm8g YWxzbyBkb2Vzbid0IHByb2R1Y2UgYSBTSUdGUEUuCi0gICAgIGNhc2UgU0lHRlBFOiB7Ci0gICAg ICAgLy8gT3B0aW1pemF0aW9uIG1ha2VzIHRoaXMgdHJpY2t5LCBzbyBnZXQgemVybyBmcm9tIGEg c3lzdGVtIGNhbGwgbGlrZWx5Ci0gICAgICAgLy8gdG8gc3VjY2VlZCwgYW5kIHRyeSB0byBkbyBz b21ldGhpbmcgd2l0aCB0aGUgcmVzdWx0LgotQEAgLTEzNyw3ICsxMzksNyBAQCB2b2lkIENhdXNl U2lnbmFsKGludCBzaWcpIHsKLSAgICAgICBmc3RhdChxdW90aWVudCwgJnN0YXRfYnVmKTsKLSAg ICAgICBicmVhazsKLSAgICAgfQotLSNlbmRpZiAgLy8gQVJDSF9DUFVfQVJNNjQKLSsjZW5kaWYg IC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkK LSAKLSAjaWYgZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BV X0FSTUVMKQotICAgICBjYXNlIFNJR0lMTDogewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9saWJwbmcvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL0JVSUxELmduCi1AQCAtOTMs NiArOTMsMTEgQEAgc291cmNlX3NldCgibGlicG5nX3NvdXJjZXMiKSB7Ci0gICAgICAgIm1pcHMv ZmlsdGVyX21zYV9pbnRyaW5zaWNzLmMiLAotICAgICAgICJtaXBzL21pcHNfaW5pdC5jIiwKLSAg ICAgXQotKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Ci0rICAgIHNvdXJj ZXMgKz0gWwotKyAgICAgICJwb3dlcnBjL2ZpbHRlcl92c3hfaW50cmluc2ljcy5jIiwKLSsgICAg ICAicG93ZXJwYy9wb3dlcnBjX2luaXQuYyIsCi0rICAgIF0KLSAgIH0KLSAKLSAgIGNvbmZpZ3Mg LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLS0tLSAvZGV2L251bGwKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvbGlicG5nL3Bvd2VycGMvZmlsdGVyX3ZzeF9pbnRyaW5zaWNz LmMKLUBAIC0wLDAgKzEsNzY3IEBACi0rLyogZmlsdGVyX3ZzeF9pbnRyaW5zaWNzLmMgLSBQb3dl clBDIG9wdGltaXNlZCBmaWx0ZXIgZnVuY3Rpb25zCi0rICoKLSsgKiBDb3B5cmlnaHQgKGMpIDIw MTcgR2xlbm4gUmFuZGVycy1QZWhyc29uCi0rICogV3JpdHRlbiBieSBWYWRpbSBCYXJrb3YsIDIw MTcuCi0rICogTGFzdCBjaGFuZ2VkIGluIGxpYnBuZyAxLjYuMjkgW01hcmNoIDE2LCAyMDE3XQot KyAqCi0rICogVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBsaWJwbmcgbGljZW5zZS4K LSsgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIHRoZSBkaXNj bGFpbWVyCi0rICogYW5kIGxpY2Vuc2UgaW4gcG5nLmgKLSsgKi8KLSsjaW5jbHVkZSA8c3RkaW8u aD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2luY2x1ZGUgIi4uL3BuZ3ByaXYuaCIKLSsKLSsj aWZkZWYgUE5HX1JFQURfU1VQUE9SVEVECi0rCi0rLyogVGhpcyBjb2RlIHJlcXVpcmVzIC1tYWx0 aXZlYyBhbmQgLW12c3ggb24gdGhlIGNvbW1hbmQgbGluZTogKi8KLSsjaWYgUE5HX1BPV0VSUENf VlNYX0lNUExFTUVOVEFUSU9OID09IDEgLyogaW50cmluc2ljcyBjb2RlIGZyb20gcG5ncHJpdi5o ICovCi0rCi0rI2luY2x1ZGUgPGFsdGl2ZWMuaD4KLSsKLSsjaWYgUE5HX1BPV0VSUENfVlNYX09Q VCA+IDAKLSsKLSsjaWZuZGVmIF9fVlNYX18KLSsjICBlcnJvciAiVGhpcyBjb2RlIHJlcXVpcmVz IFZTWCBzdXBwb3J0IChQT1dFUjcgYW5kIGxhdGVyKS4gUGxlYXNlIHByb3ZpZGUgLW12c3ggY29t cGlsZXIgZmxhZy4iCi0rI2VuZGlmCi0rCi0rI2RlZmluZSB2ZWNfbGRfdW5hbGlnbmVkKHZlYyxk YXRhKSB2ZWMgPSB2ZWNfdnN4X2xkKDAsZGF0YSkKLSsjZGVmaW5lIHZlY19zdF91bmFsaWduZWQo dmVjLGRhdGEpIHZlY192c3hfc3QodmVjLDAsZGF0YSkKLSsKLSsKLSsvKiBGdW5jdGlvbnMgaW4g dGhpcyBmaWxlIGxvb2sgYXQgbW9zdCAzIHBpeGVscyAoYSxiLGMpIHRvIHByZWRpY3QgdGhlIDR0 aCAoZCkuCi0rICogVGhleSdyZSBwb3NpdGlvbmVkIGxpa2UgdGhpczoKLSsgKiAgICBwcmV2OiAg YyBiCi0rICogICAgcm93OiAgIGEgZAotKyAqIFRoZSBTdWIgZmlsdGVyIHByZWRpY3RzIGQ9YSwg QXZnIGQ9KGErYikvMiwgYW5kIFBhZXRoIHByZWRpY3RzIGQgdG8gYmUKLSsgKiB3aGljaGV2ZXIg b2YgYSwgYiwgb3IgYyBpcyBjbG9zZXN0IHRvIHA9YStiLWMuCi0rICogKCB0aGlzIGlzIHRha2Vu IGZyb20gLi4vaW50ZWwvZmlsdGVyX3NzZTJfaW50cmluc2ljcy5jICkKLSsgKi8KLSsKLSsjZGVm aW5lIHZzeF9kZWNsYXJlX2NvbW1vbl92YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxvZmZzZXQp IFwKLSsgICBwbmdfYnl0ZSBpO1wKLSsgICBwbmdfYnl0ZXAgcnAgPSByb3cgKyBvZmZzZXQ7XAot KyAgIHBuZ19jb25zdF9ieXRlcCBwcCA9IHByZXZfcm93O1wKLSsgICBwbmdfc2l6ZV90IHVuYWxp Z25lZF90b3AgPSAxNiAtICgoKHBuZ19zaXplX3QpcnAgJSAxNikpO1wKLSsgICBwbmdfc2l6ZV90 IGlzdG9wO1wKLSsgICBpZih1bmFsaWduZWRfdG9wID09IDE2KVwKLSsgICAgICB1bmFsaWduZWRf dG9wID0gMDtcCi0rICAgaXN0b3AgPSByb3dfaW5mby0+cm93Ynl0ZXM7XAotKyAgIGlmKCh1bmFs aWduZWRfdG9wIDwgaXN0b3ApKVwKLSsgICAgICBpc3RvcCAtPSB1bmFsaWduZWRfdG9wO1wKLSsg ICBlbHNle1wKLSsgICAgICB1bmFsaWduZWRfdG9wID0gaXN0b3A7XAotKyAgICAgIGlzdG9wID0g MDtcCi0rICAgfQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3gocG5nX3Jvd19p bmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgdmVjdG9yIHVuc2lnbmVk IGNoYXIgcnBfdmVjOwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKLSsgICB2c3hf ZGVjbGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csMCkKLSsKLSsgICAvKiBB bHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICAqIGJ1 dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFsaWdu ZWQgcGFydCBhcyB1c3VhbC4KLSsgICAgKi8KLSsgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVk X3RvcDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsg KGludCkoKnBwKyspKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7Ci0rICAgfQotKwotKyAgIC8qIFVz aW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICAgd2hpbGUoIGlzdG9wID49IDE2ICkKLSsgICB7 Ci0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgIHZlY19sZF91bmFsaWduZWQo cHBfdmVjLHBwKTsKLSsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwcF92ZWMpOwot KwotKyAgICAgIHZlY19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICAgcHAgKz0gMTY7Ci0rICAg ICAgcnAgKz0gMTY7Ci0rICAgICAgaXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlmKGlzdG9w ID4gMCkKLSsgICB7Ci0rICAgICAgLyogSWYgYnl0ZSBjb3VudCBvZiByb3cgaXMgbm90IGRpdmlz aWJsZSBieSAxNgotKyAgICAgICAqIHdlIHdpbGwgcHJvY2VzcyByZW1haW5pbmcgcGFydCBhcyB1 c3VhbAotKyAgICAgICAqLwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcDsgaSsrKQotKyAg ICAgIHsKLSsgICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKnBw KyspKSAmIDB4ZmYpOwotKyAgICAgICAgIHJwKys7Ci0rICAgICAgfQotK30KLSsKLSt9Ci0rCi0r c3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFfNCA9IHsx NiwxNiwxNiwxNiwgMCwgMSwgMiwgMywxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDJfNCA9IHsxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDNfNCA9IHsxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMX07Ci0rCi0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDFfMyA9IHsxNiwxNiwxNiwgMCwgMSwg MiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDJfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgMywg NCwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25l ZCBjaGFyIFZTWF9MRUZUU0hJRlRFRDNfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwg NiwgNywgOCwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFy IFZTWF9MRUZUU0hJRlRFRDRfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwgOSwxMCwxMSwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZT WF9OT1RfU0hJRlRFRDFfNCA9IHsxNiwxNiwxNiwxNiwgNCwgNSwgNiwgNywxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1Rf U0hJRlRFRDJfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwgOCwgOSwxMCwxMSwxNiwxNiwx NiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRF RDNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxMiwxMywxNCwxNX07 Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDFf MyA9IHsxNiwxNiwxNiwgMywgNCwgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0r c3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDJfMyA9IHsx NiwxNiwxNiwxNiwxNiwxNiwgNiwgNywgOCwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3RhdGlj IGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDNfMyA9IHsxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwgOSwxMCwxMSwxNiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9OT1RfU0hJRlRFRDRfMyA9IHsxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxMiwxMywxNCwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZl Y3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1pFUk8gPSB7MCwwLDAsMCwwLDAsMCwwLDAsMCww LDAsMCwwLDAsMH07Ci0rI2lmZGVmIF9fTElUVExFX0VORElBTl9fCi0rCi0rc3RhdGljIGNvbnN0 IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0geyA0LDE2LCA1LDE2 LCA2LDE2LCA3LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVj dG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7IDgsMTYsIDksMTYsMTAs MTYsMTEsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3Ig dW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfNCA9IHsxMiwxNiwxMywxNiwxNCwxNiwx NSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAwLCAyLCA0 LCA2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs IDAsIDIsIDQsIDYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfU0hPUlRfVE9fQ0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwgMCwgMiwgNCwgNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9DSEFSX1RPX1NIT1JUMV8zID0geyAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX0NIQVJfVE9fU0hPUlQyXzMgPSB7IDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf Q0hBUl9UT19TSE9SVDNfMyA9IHsgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx NiwxNiwxNiwxNn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFS X1RPX1NIT1JUNF8zID0gezEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2fTsKLSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JU X1RPX0NIQVIxXzMgPSB7MTYsMTYsMTYsIDAsIDIsIDQsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9f Q0hBUjJfMyA9IHsxNiwxNiwxNiwxNiwxNiwxNiwgMCwgMiwgNCwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFS M18zID0gezE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAwLCAyLCA0LDE2LDE2LDE2LDE2fTsK LStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVI0XzMg PSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDAsIDIsIDQsMTZ9OwotKwot KyNlbGlmIGRlZmluZWQoX19CSUdfRU5ESUFOX18pCi0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1 bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JUMV80ID0gezE2LCA0LDE2LCA1LDE2LCA2LDE2 LCA3LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2ln bmVkIGNoYXIgVlNYX0NIQVJfVE9fU0hPUlQyXzQgPSB7MTYsIDgsMTYsIDksMTYsMTAsMTYsMTEs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQg Y2hhciBWU1hfQ0hBUl9UT19TSE9SVDNfNCA9IHsxNiwxMiwxNiwxMywxNiwxNCwxNiwxNSwxNiwx NiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBj aGFyIFZTWF9TSE9SVF9UT19DSEFSMV80ID0gezE2LDE2LDE2LDE2LCAxLCAzLCA1LCA3LDE2LDE2 LDE2LDE2LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIg VlNYX1NIT1JUX1RPX0NIQVIyXzQgPSB7MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUs IDcsMTYsMTYsMTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hf U0hPUlRfVE9fQ0hBUjNfNCA9IHsxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwg MSwgMywgNSwgN307Ci0rCi0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9D SEFSX1RPX1NIT1JUMV8zID0gezE2LCAzLDE2LCA0LDE2LCA1LDE2LDE2LDE2LDE2LDE2LDE2LDE2 LDE2LDE2LDE2fTsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX0NIQVJf VE9fU0hPUlQyXzMgPSB7MTYsIDYsMTYsIDcsMTYsIDgsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYs MTYsMTZ9OwotK3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfQ0hBUl9UT19T SE9SVDNfMyA9IHsxNiwgOSwxNiwxMCwxNiwxMSwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwxNiwx Nn07Ci0rc3RhdGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9DSEFSX1RPX1NIT1JU NF8zID0gezE2LDEyLDE2LDEzLDE2LDE0LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2fTsK LSsKLStzdGF0aWMgY29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVIx XzMgPSB7MTYsMTYsMTYsIDEsIDMsIDUsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTZ9Owot K3N0YXRpYyBjb25zdCB2ZWN0b3IgdW5zaWduZWQgY2hhciBWU1hfU0hPUlRfVE9fQ0hBUjJfMyA9 IHsxNiwxNiwxNiwxNiwxNiwxNiwgMSwgMywgNSwxNiwxNiwxNiwxNiwxNiwxNiwxNn07Ci0rc3Rh dGljIGNvbnN0IHZlY3RvciB1bnNpZ25lZCBjaGFyIFZTWF9TSE9SVF9UT19DSEFSM18zID0gezE2 LDE2LDE2LDE2LDE2LDE2LDE2LDE2LDE2LCAxLCAzLCA1LDE2LDE2LDE2LDE2fTsKLStzdGF0aWMg Y29uc3QgdmVjdG9yIHVuc2lnbmVkIGNoYXIgVlNYX1NIT1JUX1RPX0NIQVI0XzMgPSB7MTYsMTYs MTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsMTYsIDEsIDMsIDUsMTZ9OwotKwotKyNlbmRpZgot KwotKyNkZWZpbmUgdnN4X2NoYXJfdG9fc2hvcnQodmVjLG9mZnNldCxicHApICh2ZWN0b3IgdW5z aWduZWQgc2hvcnQpdmVjX3Blcm0oKHZlYyksVlNYX0NIQVJfWkVSTyxWU1hfQ0hBUl9UT19TSE9S VCMjb2Zmc2V0IyNfIyNicHApCi0rI2RlZmluZSB2c3hfc2hvcnRfdG9fY2hhcih2ZWMsb2Zmc2V0 LGJwcCkgdmVjX3Blcm0oKCh2ZWN0b3IgdW5zaWduZWQgY2hhcikodmVjKSksVlNYX0NIQVJfWkVS TyxWU1hfU0hPUlRfVE9fQ0hBUiMjb2Zmc2V0IyNfIyNicHApCi0rCi0rI2lmZGVmIFBOR19VU0Vf QUJTCi0rIyAgZGVmaW5lIHZzeF9hYnMobnVtYmVyKSBhYnMobnVtYmVyKQotKyNlbHNlCi0rIyAg ZGVmaW5lIHZzeF9hYnMobnVtYmVyKSAobnVtYmVyID4gMCkgPyAobnVtYmVyKSA6IC0obnVtYmVy KQotKyNlbmRpZgotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19zdWI0X3ZzeChwbmdfcm93 X2luZm9wIHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgIGNvbnN0IHBuZ19i eXRlIGJwcCA9IDQ7Ci0rCi0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwotKyAgIHZl Y3RvciB1bnNpZ25lZCBjaGFyIHBhcnRfdmVjOwotKwotKyAgIHZzeF9kZWNsYXJlX2NvbW1vbl92 YXJzKHJvd19pbmZvLHJvdyxwcmV2X3JvdyxicHApCi0rCi0rICAgUE5HX1VOVVNFRChwcCkKLSsK LSsgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQot KyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVkLiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAg KiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KLSsgICAgKi8KLSsgICBmb3IgKGkgPSAwOyBpIDwg dW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50 KSgqcnApICsgKGludCkoKihycC1icHApKSkgJiAweGZmKTsKLSsgICAgICBycCsrOwotKyAgIH0K LSsKLSsgICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBpc3RvcCA+ PSAxNiApCi0rICAgewotKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0r ICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkp ICYgMHhmZik7Ci0rICAgICAgICAgcnArKzsKLSsgICAgICB9Ci0rICAgICAgcnAgLT0gYnBwOwot KwotKyAgICAgIHJwX3ZlYyA9IHZlY19sZCgwLHJwKTsKLSsgICAgICBwYXJ0X3ZlYyA9IHZlY19w ZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDFfNCk7Ci0rICAgICAgcnBf dmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVjID0gdmVj X3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMl80KTsKLSsgICAgICBy cF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgcGFydF92ZWMgPSB2 ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQzXzQpOwotKyAgICAg IHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICB2ZWNfc3QocnBf dmVjLDAscnApOwotKwotKyAgICAgIHJwICs9IDE2OwotKyAgICAgIGlzdG9wIC09IDE2OwotKyAg IH0KLSsKLSsgICBpZihpc3RvcCA+IDApCi0rICAgICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUg MTY7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJw KSArIChpbnQpKCoocnAgLSBicHApKSkgJiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAgICAg IH0KLSsKLSt9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4KHBuZ19yb3df aW5mb3Agcm93X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBuZ19jb25zdF9ieXRlcCBwcmV2X3JvdykKLSt7Ci0rICAgY29uc3QgcG5nX2J5 dGUgYnBwID0gMzsKLSsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBycF92ZWM7Ci0rICAgdmVj dG9yIHVuc2lnbmVkIGNoYXIgcGFydF92ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVfY29tbW9uX3Zh cnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKLSsKLSsgICBQTkdfVU5VU0VEKHBwKQotKwot KyAgIC8qIEFsdGl2ZWMgb3BlcmF0aW9ucyByZXF1aXJlIDE2LWJ5dGUgYWxpZ25lZCBkYXRhCi0r ICAgICogYnV0IGlucHV0IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQotKyAgICAq IHVuYWxpZ25lZCBwYXJ0IGFzIHVzdWFsLgotKyAgICAqLwotKyAgIGZvciAoaSA9IDA7IGkgPCB1 bmFsaWduZWRfdG9wOyBpKyspCi0rICAgewotKyAgICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQp KCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAgICAgIHJwKys7Ci0rICAgfQot KwotKyAgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICAgd2hpbGUoIGlzdG9wID49 IDE2ICkKLSsgICB7Ci0rICAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQotKyAgICAgIHsKLSsg ICAgICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsgKGludCkoKihycC1icHApKSkg JiAweGZmKTsKLSsgICAgICAgICBycCsrOwotKyAgICAgIH0KLSsgICAgICBycCAtPSBicHA7Ci0r Ci0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgIHBhcnRfdmVjID0gdmVjX3Bl cm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVEMV8zKTsKLSsgICAgICBycF92 ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgcGFydF92ZWMgPSB2ZWNf cGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVGVFNISUZURUQyXzMpOwotKyAgICAgIHJw X3ZlYyA9IHZlY19hZGQocnBfdmVjLHBhcnRfdmVjKTsKLSsKLSsgICAgICBwYXJ0X3ZlYyA9IHZl Y19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7Ci0rICAgICAg cnBfdmVjID0gdmVjX2FkZChycF92ZWMscGFydF92ZWMpOwotKwotKyAgICAgIHBhcnRfdmVjID0g dmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNYX0xFRlRTSElGVEVENF8zKTsKLSsgICAg ICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxwYXJ0X3ZlYyk7Ci0rCi0rICAgICAgdmVjX3N0KHJw X3ZlYywwLHJwKTsKLSsgICAgICBycCArPSAxNTsKLSsgICAgICBpc3RvcCAtPSAxNjsKLSsKLSsg ICAgICAvKiBTaW5jZSAxNiAlIGJwcCA9IDE2ICUgMyA9IDEsIGxhc3QgZWxlbWVudCBvZiBhcnJh eSBtdXN0Ci0rICAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5Ci0rICAgICAgICovCi0rICAg ICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArIChpbnQpKCoocnAtYnBwKSkpICYgMHhm Zik7Ci0rICAgICAgcnArKzsKLSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAgICAgIGZv ciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAgICpycCA9 IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKyAoaW50KSgqKHJwLWJwcCkpKSAmIDB4ZmYpOwotKyAg ICAgICAgIHJwKys7Ci0rICAgICAgfQotK30KLSsKLSt2b2lkIHBuZ19yZWFkX2ZpbHRlcl9yb3df YXZnNF92c3gocG5nX3Jvd19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQotK3sK LSsgICBjb25zdCBwbmdfYnl0ZSBicHAgPSA0OwotKwotKyAgIHZlY3RvciB1bnNpZ25lZCBjaGFy IHJwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgY2hhciBwcF92ZWM7Ci0rICAgdmVjdG9yIHVu c2lnbmVkIGNoYXIgcHBfcGFydF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfcGFy dF92ZWM7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgYXZnX3ZlYzsKLSsKLSsgICB2c3hfZGVj bGFyZV9jb21tb25fdmFycyhyb3dfaW5mbyxyb3cscHJldl9yb3csYnBwKQotKyAgIHJwIC09IGJw cDsKLSsgICBpZihpc3RvcCA+PSBicHApCi0rICAgICAgaXN0b3AgLT0gYnBwOwotKwotKyAgIGZv ciAoaSA9IDA7IGkgPCBicHA7IGkrKykKLSsgICB7Ci0rICAgICAgKnJwID0gKHBuZ19ieXRlKSgo KGludCkoKnJwKSArCi0rICAgICAgICAgKChpbnQpKCpwcCsrKSAvIDIgKSkgJiAweGZmKTsKLSsK LSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsgICAvKiBBbHRpdmVjIG9wZXJhdGlvbnMgcmVxdWly ZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICAqIGJ1dCBpbnB1dCBjYW4gYmUgdW5hbGlnbmVk LiBTbyB3ZSBjYWxjdWxhdGUKLSsgICAgKiB1bmFsaWduZWQgcGFydCBhcyB1c3VhbC4KLSsgICAg Ki8KLSsgICBmb3IgKGkgPSAwOyBpIDwgdW5hbGlnbmVkX3RvcDsgaSsrKQotKyAgIHsKLSsgICAg ICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICAoaW50KSgqcHArKyAr ICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsgICAgICBycCsrOwotKyAgIH0KLSsKLSsg ICAvKiBVc2luZyBTSU1EIHdoaWxlIHdlIGNhbiAqLwotKyAgIHdoaWxlKCBpc3RvcCA+PSAxNiAp Ci0rICAgewotKyAgICAgIGZvcihpPTA7aSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAgICAg ICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAgKGludCkoKnBw KysgKyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAgICAgcnArKzsKLSsgICAg ICB9Ci0rICAgICAgcnAgLT0gYnBwOwotKyAgICAgIHBwIC09IGJwcDsKLSsKLSsgICAgICB2ZWNf bGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwot KwotKyAgICAgIHJwX3BhcnRfdmVjID0gdmVjX3Blcm0ocnBfdmVjLFZTWF9DSEFSX1pFUk8sVlNY X0xFRlRTSElGVEVEMV80KTsKLSsgICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxW U1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDFfNCk7Ci0rICAgICAgYXZnX3ZlYyA9IHZlY19h dmcocnBfcGFydF92ZWMscHBfcGFydF92ZWMpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfc3ViKGF2 Z192ZWMsIHZlY19hbmQodmVjX3hvcihycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyksdmVjX3NwbGF0 X3U4KDEpKSk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0r ICAgICAgcnBfcGFydF92ZWMgPSB2ZWNfcGVybShycF92ZWMsVlNYX0NIQVJfWkVSTyxWU1hfTEVG VFNISUZURUQyXzQpOwotKyAgICAgIHBwX3BhcnRfdmVjID0gdmVjX3Blcm0ocHBfdmVjLFZTWF9D SEFSX1pFUk8sVlNYX05PVF9TSElGVEVEMl80KTsKLSsgICAgICBhdmdfdmVjID0gdmVjX2F2Zyhy cF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICAgYXZnX3ZlYyA9IHZlY19zdWIoYXZnX3Zl YywgdmVjX2FuZCh2ZWNfeG9yKHJwX3BhcnRfdmVjLHBwX3BhcnRfdmVjKSx2ZWNfc3BsYXRfdTgo MSkpKTsKLSsgICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYyxhdmdfdmVjKTsKLSsKLSsgICAg ICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJ RlRFRDNfNCk7Ci0rICAgICAgcHBfcGFydF92ZWMgPSB2ZWNfcGVybShwcF92ZWMsVlNYX0NIQVJf WkVSTyxWU1hfTk9UX1NISUZURUQzXzQpOwotKyAgICAgIGF2Z192ZWMgPSB2ZWNfYXZnKHJwX3Bh cnRfdmVjLHBwX3BhcnRfdmVjKTsKLSsgICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2 ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkp OwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBfdmVjLGF2Z192ZWMpOwotKwotKyAgICAgIHZl Y19zdChycF92ZWMsMCxycCk7Ci0rCi0rICAgICAgcnAgKz0gMTY7Ci0rICAgICAgcHAgKz0gMTY7 Ci0rICAgICAgaXN0b3AgLT0gMTY7Ci0rICAgfQotKwotKyAgIGlmKGlzdG9wICA+IDApCi0rICAg ICAgZm9yIChpID0gMDsgaSA8IGlzdG9wICUgMTY7IGkrKykKLSsgICAgICB7Ci0rICAgICAgICAg KnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAgKGludCkoKnBwKysg KyAqKHJwLWJwcCkpIC8gMiApICYgMHhmZik7Ci0rCi0rICAgICAgICAgcnArKzsKLSsgICAgICB9 Ci0rfQotKwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19hdmczX3ZzeChwbmdfcm93X2luZm9w IHJvd19pbmZvLCBwbmdfYnl0ZXAgcm93LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwbmdfY29uc3RfYnl0ZXAgcHJldl9yb3cpCi0rewotKyAgY29uc3QgcG5nX2J5dGUgYnBw ID0gMzsKLSsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgIHZlY3RvciB1bnNp Z25lZCBjaGFyIHBwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3BhcnRfdmVjOwot KyAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfcGFydF92ZWM7Ci0rICB2ZWN0b3IgdW5zaWduZWQg Y2hhciBhdmdfdmVjOwotKwotKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8scm93 LHByZXZfcm93LGJwcCkKLSsgIHJwIC09IGJwcDsKLSsgIGlmKGlzdG9wID49IGJwcCkKLSsgICAg IGlzdG9wIC09IGJwcDsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCBicHA7IGkrKykKLSsgIHsKLSsg ICAgICpycCA9IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgKChpbnQpKCpwcCsr KSAvIDIgKSkgJiAweGZmKTsKLSsKLSsgICAgIHJwKys7Ci0rICB9Ci0rCi0rICAvKiBBbHRpdmVj IG9wZXJhdGlvbnMgcmVxdWlyZSAxNi1ieXRlIGFsaWduZWQgZGF0YQotKyAgICogYnV0IGlucHV0 IGNhbiBiZSB1bmFsaWduZWQuIFNvIHdlIGNhbGN1bGF0ZQotKyAgICogdW5hbGlnbmVkIHBhcnQg YXMgdXN1YWwuCi0rICAgKi8KLSsgIGZvciAoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wOyBpKysp Ci0rICB7Ci0rICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgIChp bnQpKCpwcCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAgICAgcnArKzsKLSsg IH0KLSsKLSsgIC8qIFVzaW5nIFNJTUQgd2hpbGUgd2UgY2FuICovCi0rICB3aGlsZSggaXN0b3Ag Pj0gMTYgKQotKyAgewotKyAgICAgZm9yKGk9MDtpIDwgYnBwIDsgaSsrKQotKyAgICAgewotKyAg ICAgICAgKnJwID0gKHBuZ19ieXRlKSgoKGludCkoKnJwKSArCi0rICAgICAgICAgICAoaW50KSgq cHArKyArICoocnAtYnBwKSkgLyAyICkgJiAweGZmKTsKLSsKLSsgICAgICAgIHJwKys7Ci0rICAg ICB9Ci0rICAgICBycCAtPSBicHA7Ci0rICAgICBwcCAtPSBicHA7Ci0rCi0rICAgICB2ZWNfbGRf dW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rICAgICBycF92ZWMgPSB2ZWNfbGQoMCxycCk7Ci0rCi0r ICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZU U0hJRlRFRDFfMyk7Ci0rICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hB Ul9aRVJPLFZTWF9OT1RfU0hJRlRFRDFfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9w YXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2 ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkp OwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9w YXJ0X3ZlYyA9IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDJf Myk7Ci0rICAgICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZT WF9OT1RfU0hJRlRFRDJfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxw cF9wYXJ0X3ZlYyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZl Y194b3IocnBfcGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAg cnBfdmVjID0gdmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9wYXJ0X3ZlYyA9 IHZlY19wZXJtKHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDNfMyk7Ci0rICAg ICBwcF9wYXJ0X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJ RlRFRDNfMyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3Zl Yyk7Ci0rICAgICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBf cGFydF92ZWMscHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgcnBfdmVjID0g dmVjX2FkZChycF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICBycF9wYXJ0X3ZlYyA9IHZlY19wZXJt KHJwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9MRUZUU0hJRlRFRDRfMyk7Ci0rICAgICBwcF9wYXJ0 X3ZlYyA9IHZlY19wZXJtKHBwX3ZlYyxWU1hfQ0hBUl9aRVJPLFZTWF9OT1RfU0hJRlRFRDRfMyk7 Ci0rICAgICBhdmdfdmVjID0gdmVjX2F2ZyhycF9wYXJ0X3ZlYyxwcF9wYXJ0X3ZlYyk7Ci0rICAg ICBhdmdfdmVjID0gdmVjX3N1YihhdmdfdmVjLCB2ZWNfYW5kKHZlY194b3IocnBfcGFydF92ZWMs cHBfcGFydF92ZWMpLHZlY19zcGxhdF91OCgxKSkpOwotKyAgICAgcnBfdmVjID0gdmVjX2FkZChy cF92ZWMsYXZnX3ZlYyk7Ci0rCi0rICAgICB2ZWNfc3QocnBfdmVjLDAscnApOwotKwotKyAgICAg cnAgKz0gMTU7Ci0rICAgICBwcCArPSAxNTsKLSsgICAgIGlzdG9wIC09IDE2OwotKwotKyAgICAg LyogU2luY2UgMTYgJSBicHAgPSAxNiAlIDMgPSAxLCBsYXN0IGVsZW1lbnQgb2YgYXJyYXkgbXVz dAotKyAgICAgICogYmUgcHJvY2VlZGVkIG1hbnVhbGx5Ci0rICAgICAgKi8KLSsgICAgICpycCA9 IChwbmdfYnl0ZSkoKChpbnQpKCpycCkgKwotKyAgICAgICAgKGludCkoKnBwKysgKyAqKHJwLWJw cCkpIC8gMiApICYgMHhmZik7Ci0rICAgICBycCsrOwotKyAgfQotKwotKyAgaWYoaXN0b3AgID4g MCkKLSsgICAgIGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICB7Ci0rICAg ICAgICAqcnAgPSAocG5nX2J5dGUpKCgoaW50KSgqcnApICsKLSsgICAgICAgICAgIChpbnQpKCpw cCsrICsgKihycC1icHApKSAvIDIgKSAmIDB4ZmYpOwotKwotKyAgICAgICAgcnArKzsKLSsgICAg IH0KLSt9Ci0rCi0rLyogQnl0ZXdpc2UgYyA/IHQgOiBlLiAqLwotKyNkZWZpbmUgaWZfdGhlbl9l bHNlKGMsdCxlKSB2ZWNfc2VsKGUsdCxjKQotKwotKyNkZWZpbmUgdnN4X3BhZXRoX3Byb2Nlc3Mo cnAscHAsYSxiLGMscGEscGIscGMsYnBwKSB7XAotKyAgICAgIGMgPSAqKHBwIC0gYnBwKTtcCi0r ICAgICAgYSA9ICoocnAgLSBicHApO1wKLSsgICAgICBiID0gKnBwKys7XAotKyAgICAgIHAgPSBi IC0gYztcCi0rICAgICAgcGMgPSBhIC0gYztcCi0rICAgICAgcGEgPSB2c3hfYWJzKHApO1wKLSsg ICAgICBwYiA9IHZzeF9hYnMocGMpO1wKLSsgICAgICBwYyA9IHZzeF9hYnMocCArIHBjKTtcCi0r ICAgICAgaWYgKHBiIDwgcGEpIHBhID0gcGIsIGEgPSBiO1wKLSsgICAgICBpZiAocGMgPCBwYSkg YSA9IGM7XAotKyAgICAgIGEgKz0gKnJwO1wKLSsgICAgICAqcnArKyA9IChwbmdfYnl0ZSlhO1wK LSsgICAgICB9Ci0rCi0rdm9pZCBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3gocG5nX3Jv d19pbmZvcCByb3dfaW5mbywgcG5nX2J5dGVwIHJvdywKLSsgICBwbmdfY29uc3RfYnl0ZXAgcHJl dl9yb3cpCi0rewotKyAgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDQ7Ci0rCi0rICAgaW50IGEsIGIs IGMsIHBhLCBwYiwgcGMsIHA7Ci0rICAgdmVjdG9yIHVuc2lnbmVkIGNoYXIgcnBfdmVjOwotKyAg IHZlY3RvciB1bnNpZ25lZCBjaGFyIHBwX3ZlYzsKLSsgICB2ZWN0b3IgdW5zaWduZWQgc2hvcnQg YV92ZWMsYl92ZWMsY192ZWMsbmVhcmVzdF92ZWM7Ci0rICAgdmVjdG9yIHNpZ25lZCBzaG9ydCBw YV92ZWMscGJfdmVjLHBjX3ZlYyxzbWFsbGVzdF92ZWM7Ci0rCi0rICAgdnN4X2RlY2xhcmVfY29t bW9uX3ZhcnMocm93X2luZm8scm93LHByZXZfcm93LGJwcCkKLSsgICBycCAtPSBicHA7Ci0rICAg aWYoaXN0b3AgPj0gYnBwKQotKyAgICAgIGlzdG9wIC09IGJwcDsKLSsKLSsgICAvKiBQcm9jZXNz IHRoZSBmaXJzdCBwaXhlbCBpbiB0aGUgcm93IGNvbXBsZXRlbHkgKHRoaXMgaXMgdGhlIHNhbWUg YXMgJ3VwJwotKyAgICAqIGJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgY2FuZGlkYXRlIHByZWRp Y3RvciBmb3IgdGhlIGZpcnN0IHJvdykuCi0rICAgICovCi0rICAgZm9yKGkgPSAwOyBpIDwgYnBw IDsgaSsrKQotKyAgIHsKLSsgICAgICAqcnAgPSAocG5nX2J5dGUpKCAqcnAgKyAqcHApOwotKyAg ICAgIHJwKys7Ci0rICAgICAgcHArKzsKLSsgICB9Ci0rCi0rICAgZm9yKGkgPSAwOyBpIDwgdW5h bGlnbmVkX3RvcCA7IGkrKykKLSsgICB7Ci0rICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAs YSxiLGMscGEscGIscGMsYnBwKQotKyAgIH0KLSsKLSsgICB3aGlsZSggaXN0b3AgPj0gMTYpCi0r ICAgewotKyAgICAgIGZvcihpID0gMDsgaSA8IGJwcCA7IGkrKykKLSsgICAgICB7Ci0rICAgICAg ICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgICAgIH0K LSsKLSsgICAgICBycCAtPSBicHA7Ci0rICAgICAgcHAgLT0gYnBwOwotKyAgICAgIHJwX3ZlYyA9 IHZlY19sZCgwLHJwKTsKLSsgICAgICB2ZWNfbGRfdW5hbGlnbmVkKHBwX3ZlYyxwcCk7Ci0rCi0r ICAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hB Ul9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV80KSwxLDQpOwotKyAgICAgIGJfdmVjID0gdnN4X2No YXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9OT1RfU0hJ RlRFRDFfNCksMSw0KTsKLSsgICAgICBjX3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJt KHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZURUQxXzQpLDEsNCk7Ci0rICAg ICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwot KyAgICAgIHBiX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGFfdmVjICwgY192 ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZlY19hZGQocGFfdmVjLHBiX3ZlYyk7Ci0rICAgICAgcGFf dmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgIHBiX3ZlYyA9IHZlY19hYnMocGJfdmVjKTsK LSsgICAgICBwY192ZWMgPSB2ZWNfYWJzKHBjX3ZlYyk7Ci0rICAgICAgc21hbGxlc3RfdmVjID0g dmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgIG5lYXJlc3Rf dmVjID0gIGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICB2ZWNfY21wZXEocGFfdmVjLHNtYWxs ZXN0X3ZlYyksCi0rICAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICAgaWZfdGhlbl9lbHNl KAotKyAgICAgICAgICAgICAgdmVjX2NtcGVxKHBiX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAg ICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgICBjX3ZlYwotKyAgICAgICAgICAgICAgKQot KyAgICAgICAgICAgICk7Ci0rICAgICAgcnBfdmVjID0gdmVjX2FkZChycF92ZWMsKHZzeF9zaG9y dF90b19jaGFyKG5lYXJlc3RfdmVjLDEsNCkpKTsKLSsKLSsgICAgICBhX3ZlYyA9IHZzeF9jaGFy X3RvX3Nob3J0KHZlY19wZXJtKHJwX3ZlYyAsIFZTWF9DSEFSX1pFUk8gLCBWU1hfTEVGVFNISUZU RUQyXzQpLDIsNCk7Ci0rICAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShw cF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMl80KSwyLDQpOwotKyAgICAg IGNfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocHBfdmVjICwgVlNYX0NIQVJfWkVS TyAsIFZTWF9MRUZUU0hJRlRFRDJfNCksMiw0KTsKLSsgICAgICBwYV92ZWMgPSAodmVjdG9yIHNp Z25lZCBzaG9ydCkgdmVjX3N1YihiX3ZlYyxjX3ZlYyk7Ci0rICAgICAgcGJfdmVjID0gKHZlY3Rv ciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0g dmVjX2FkZChwYV92ZWMscGJfdmVjKTsKLSsgICAgICBwYV92ZWMgPSB2ZWNfYWJzKHBhX3ZlYyk7 Ci0rICAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgIHBjX3ZlYyA9IHZlY19h YnMocGNfdmVjKTsKLSsgICAgICBzbWFsbGVzdF92ZWMgPSB2ZWNfbWluKHBjX3ZlYywgdmVjX21p bihwYV92ZWMscGJfdmVjKSk7Ci0rICAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAot KyAgICAgICAgICAgIHZlY19jbXBlcShwYV92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAg ICBhX3ZlYywKLSsgICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgICB2ZWNf Y21wZXEocGJfdmVjLHNtYWxsZXN0X3ZlYyksCi0rICAgICAgICAgICAgICBiX3ZlYywKLSsgICAg ICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICApCi0rICAgICAgICAgICAgKTsKLSsgICAg ICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMs Miw0KSkpOwotKwotKyAgICAgIGFfdmVjID0gdnN4X2NoYXJfdG9fc2hvcnQodmVjX3Blcm0ocnBf dmVjICwgVlNYX0NIQVJfWkVSTyAsIFZTWF9MRUZUU0hJRlRFRDNfNCksMyw0KTsKLSsgICAgICBi X3ZlYyA9IHZzeF9jaGFyX3RvX3Nob3J0KHZlY19wZXJtKHBwX3ZlYyAsIFZTWF9DSEFSX1pFUk8g LCBWU1hfTk9UX1NISUZURUQzXzQpLDMsNCk7Ci0rICAgICAgY192ZWMgPSB2c3hfY2hhcl90b19z aG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEM180 KSwzLDQpOwotKyAgICAgIHBhX3ZlYyA9ICh2ZWN0b3Igc2lnbmVkIHNob3J0KSB2ZWNfc3ViKGJf dmVjLGNfdmVjKTsKLSsgICAgICBwYl92ZWMgPSAodmVjdG9yIHNpZ25lZCBzaG9ydCkgdmVjX3N1 YihhX3ZlYyAsIGNfdmVjKTsKLSsgICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMp OwotKyAgICAgIHBhX3ZlYyA9IHZlY19hYnMocGFfdmVjKTsKLSsgICAgICBwYl92ZWMgPSB2ZWNf YWJzKHBiX3ZlYyk7Ci0rICAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgIHNt YWxsZXN0X3ZlYyA9IHZlY19taW4ocGNfdmVjLCB2ZWNfbWluKHBhX3ZlYyxwYl92ZWMpKTsKLSsg ICAgICBuZWFyZXN0X3ZlYyA9ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgdmVjX2NtcGVx KHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgIGFfdmVjLAotKyAgICAgICAgICAg IGlmX3RoZW5fZWxzZSgKLSsgICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3Rf dmVjKSwKLSsgICAgICAgICAgICAgIGJfdmVjLAotKyAgICAgICAgICAgICAgY192ZWMKLSsgICAg ICAgICAgICAgICkKLSsgICAgICAgICAgICApOwotKyAgICAgIHJwX3ZlYyA9IHZlY19hZGQocnBf dmVjLCh2c3hfc2hvcnRfdG9fY2hhcihuZWFyZXN0X3ZlYywzLDQpKSk7Ci0rCi0rICAgICAgdmVj X3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgICBycCArPSAxNjsKLSsgICAgICBwcCArPSAxNjsK LSsgICAgICBpc3RvcCAtPSAxNjsKLSsgICB9Ci0rCi0rICAgaWYoaXN0b3AgPiAwKQotKyAgICAg IGZvciAoaSA9IDA7IGkgPCBpc3RvcCAlIDE2OyBpKyspCi0rICAgICAgewotKyAgICAgICAgIHZz eF9wYWV0aF9wcm9jZXNzKHJwLHBwLGEsYixjLHBhLHBiLHBjLGJwcCkKLSsgICAgICB9Ci0rfQot KwotK3ZvaWQgcG5nX3JlYWRfZmlsdGVyX3Jvd19wYWV0aDNfdnN4KHBuZ19yb3dfaW5mb3Agcm93 X2luZm8sIHBuZ19ieXRlcCByb3csCi0rICAgcG5nX2NvbnN0X2J5dGVwIHByZXZfcm93KQotK3sK LSsgIGNvbnN0IHBuZ19ieXRlIGJwcCA9IDM7Ci0rCi0rICBpbnQgYSwgYiwgYywgcGEsIHBiLCBw YywgcDsKLSsgIHZlY3RvciB1bnNpZ25lZCBjaGFyIHJwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25l ZCBjaGFyIHBwX3ZlYzsKLSsgIHZlY3RvciB1bnNpZ25lZCBzaG9ydCBhX3ZlYyxiX3ZlYyxjX3Zl YyxuZWFyZXN0X3ZlYzsKLSsgIHZlY3RvciBzaWduZWQgc2hvcnQgcGFfdmVjLHBiX3ZlYyxwY192 ZWMsc21hbGxlc3RfdmVjOwotKwotKyAgdnN4X2RlY2xhcmVfY29tbW9uX3ZhcnMocm93X2luZm8s cm93LHByZXZfcm93LGJwcCkKLSsgIHJwIC09IGJwcDsKLSsgIGlmKGlzdG9wID49IGJwcCkKLSsg ICAgIGlzdG9wIC09IGJwcDsKLSsKLSsgIC8qIFByb2Nlc3MgdGhlIGZpcnN0IHBpeGVsIGluIHRo ZSByb3cgY29tcGxldGVseSAodGhpcyBpcyB0aGUgc2FtZSBhcyAndXAnCi0rICAgKiBiZWNhdXNl IHRoZXJlIGlzIG9ubHkgb25lIGNhbmRpZGF0ZSBwcmVkaWN0b3IgZm9yIHRoZSBmaXJzdCByb3cp LgotKyAgICovCi0rICBmb3IoaSA9IDA7IGkgPCBicHAgOyBpKyspCi0rICB7Ci0rICAgICAqcnAg PSAocG5nX2J5dGUpKCAqcnAgKyAqcHApOwotKyAgICAgcnArKzsKLSsgICAgIHBwKys7Ci0rICB9 Ci0rCi0rICBmb3IoaSA9IDA7IGkgPCB1bmFsaWduZWRfdG9wIDsgaSsrKQotKyAgewotKyAgICAg dnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgfQotKwotKyAg d2hpbGUoIGlzdG9wID49IDE2KQotKyAgewotKyAgICAgZm9yKGkgPSAwOyBpIDwgYnBwIDsgaSsr KQotKyAgICAgewotKyAgICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIs cGMsYnBwKQotKyAgICAgfQotKwotKyAgICAgcnAgLT0gYnBwOwotKyAgICAgcHAgLT0gYnBwOwot KyAgICAgcnBfdmVjID0gdmVjX2xkKDAscnApOwotKyAgICAgdmVjX2xkX3VuYWxpZ25lZChwcF92 ZWMscHApOwotKwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92 ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV8zKSwxLDMpOwotKyAgICAgYl92 ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwg VlNYX05PVF9TSElGVEVEMV8zKSwxLDMpOwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9y dCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMV8zKSwx LDMpOwotKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMs Y192ZWMpOwotKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92 ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAg ICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92 ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgc21hbGxlc3RfdmVj ID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVhcmVz dF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFs bGVzdF92ZWMpLAotKyAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vsc2Uo Ci0rICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAg ICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICkKLSsgICAg ICAgICAgICk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2No YXIobmVhcmVzdF92ZWMsMSwzKSkpOwotKwotKyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9y dCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVEMl8zKSwy LDMpOwotKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBW U1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEMl8zKSwyLDMpOwotKyAgICAgY192ZWMgPSB2 c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xF RlRTSElGVEVEMl8zKSwyLDMpOwotKyAgICAgcGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQp IHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hv cnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3Zl YyxwYl92ZWMpOwotKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJfdmVj ID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAg ICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykp OwotKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVjX2Nt cGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAg ICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3Rf dmVjKSwKLSsgICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAgIGNfdmVjCi0rICAgICAg ICAgICAgICkKLSsgICAgICAgICAgICk7Ci0rICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywo dnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMiwzKSkpOwotKwotKyAgICAgYV92ZWMgPSB2 c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xF RlRTSElGVEVEM18zKSwzLDMpOwotKyAgICAgYl92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNf cGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElGVEVEM18zKSwzLDMpOwot KyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hB Ul9aRVJPICwgVlNYX0xFRlRTSElGVEVEM18zKSwzLDMpOwotKyAgICAgcGFfdmVjID0gKHZlY3Rv ciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAgICAgcGJfdmVjID0gKHZl Y3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7Ci0rICAgICBwY192ZWMg PSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVjID0gdmVjX2FicyhwYV92ZWMp OwotKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAgcGNfdmVjID0gdmVjX2Fi cyhwY192ZWMpOwotKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihwY192ZWMsIHZlY19taW4o cGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZfdGhlbl9lbHNlKAotKyAg ICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAotKyAgICAgICAgICAgYV92 ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAgICAgIHZlY19jbXBlcShw Yl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92ZWMsCi0rICAgICAgICAgICAg IGNfdmVjCi0rICAgICAgICAgICAgICkKLSsgICAgICAgICAgICk7Ci0rICAgICBycF92ZWMgPSB2 ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92ZWMsMywzKSkpOwotKwot KyAgICAgYV92ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShycF92ZWMgLCBWU1hfQ0hB Ul9aRVJPICwgVlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOwotKyAgICAgYl92ZWMgPSB2c3hfY2hh cl90b19zaG9ydCh2ZWNfcGVybShwcF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX05PVF9TSElG VEVENF8zKSw0LDMpOwotKyAgICAgY192ZWMgPSB2c3hfY2hhcl90b19zaG9ydCh2ZWNfcGVybShw cF92ZWMgLCBWU1hfQ0hBUl9aRVJPICwgVlNYX0xFRlRTSElGVEVENF8zKSw0LDMpOwotKyAgICAg cGFfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYl92ZWMsY192ZWMpOwotKyAg ICAgcGJfdmVjID0gKHZlY3RvciBzaWduZWQgc2hvcnQpIHZlY19zdWIoYV92ZWMgLCBjX3ZlYyk7 Ci0rICAgICBwY192ZWMgPSB2ZWNfYWRkKHBhX3ZlYyxwYl92ZWMpOwotKyAgICAgcGFfdmVjID0g dmVjX2FicyhwYV92ZWMpOwotKyAgICAgcGJfdmVjID0gdmVjX2FicyhwYl92ZWMpOwotKyAgICAg cGNfdmVjID0gdmVjX2FicyhwY192ZWMpOwotKyAgICAgc21hbGxlc3RfdmVjID0gdmVjX21pbihw Y192ZWMsIHZlY19taW4ocGFfdmVjLHBiX3ZlYykpOwotKyAgICAgbmVhcmVzdF92ZWMgPSAgaWZf dGhlbl9lbHNlKAotKyAgICAgICAgICAgdmVjX2NtcGVxKHBhX3ZlYyxzbWFsbGVzdF92ZWMpLAot KyAgICAgICAgICAgYV92ZWMsCi0rICAgICAgICAgICBpZl90aGVuX2Vsc2UoCi0rICAgICAgICAg ICAgIHZlY19jbXBlcShwYl92ZWMsc21hbGxlc3RfdmVjKSwKLSsgICAgICAgICAgICAgYl92ZWMs Ci0rICAgICAgICAgICAgIGNfdmVjCi0rICAgICAgICAgICAgICkKLSsgICAgICAgICAgICk7Ci0r ICAgICBycF92ZWMgPSB2ZWNfYWRkKHJwX3ZlYywodnN4X3Nob3J0X3RvX2NoYXIobmVhcmVzdF92 ZWMsNCwzKSkpOwotKwotKyAgICAgdmVjX3N0KHJwX3ZlYywwLHJwKTsKLSsKLSsgICAgIHJwICs9 IDE1OwotKyAgICAgcHAgKz0gMTU7Ci0rICAgICBpc3RvcCAtPSAxNjsKLSsKLSsgICAgIC8qIFNp bmNlIDE2ICUgYnBwID0gMTYgJSAzID0gMSwgbGFzdCBlbGVtZW50IG9mIGFycmF5IG11c3QKLSsg ICAgICAqIGJlIHByb2NlZWRlZCBtYW51YWxseQotKyAgICAgICovCi0rICAgICB2c3hfcGFldGhf cHJvY2VzcyhycCxwcCxhLGIsYyxwYSxwYixwYyxicHApCi0rICB9Ci0rCi0rICBpZihpc3RvcCA+ IDApCi0rICAgICBmb3IgKGkgPSAwOyBpIDwgaXN0b3AgJSAxNjsgaSsrKQotKyAgICAgewotKyAg ICAgICAgdnN4X3BhZXRoX3Byb2Nlc3MocnAscHAsYSxiLGMscGEscGIscGMsYnBwKQotKyAgICAg fQotK30KLSsKLSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX09QVCA+IDAgKi8KLSsjZW5kaWYg LyogUE5HX1BPV0VSUENfVlNYX0lNUExFTUVOVEFUSU9OID09IDEgKGludHJpbnNpY3MpICovCi0r I2VuZGlmIC8qIFJFQUQgKi8KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0tLS0gL2Rldi9udWxsCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xpYnBuZy9w b3dlcnBjL3Bvd2VycGNfaW5pdC5jCi1AQCAtMCwwICsxLDEyNSBAQAotKwotKy8qIHBvd2VycGNf aW5pdC5jIC0gUE9XRVJQQyBvcHRpbWlzZWQgZmlsdGVyIGZ1bmN0aW9ucwotKyAqCi0rICogQ29w eXJpZ2h0IChjKSAyMDE3IEdsZW5uIFJhbmRlcnMtUGVocnNvbgotKyAqIFdyaXR0ZW4gYnkgVmFk aW0gQmFya292LCAyMDE3LgotKyAqIExhc3QgY2hhbmdlZCBpbiBsaWJwbmcgMS42LjI5IFtNYXJj aCAxNiwgMjAxN10KLSsgKgotKyAqIFRoaXMgY29kZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgbGli cG5nIGxpY2Vuc2UuCi0rICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2Us IHNlZSB0aGUgZGlzY2xhaW1lcgotKyAqIGFuZCBsaWNlbnNlIGluIHBuZy5oCi0rICovCi0rLyog QmVsb3csIGFmdGVyIGNoZWNraW5nIF9fbGludXhfXywgdmFyaW91cyBub24tQzkwIFBPU0lYIDEw MDMuMSBmdW5jdGlvbnMgYXJlCi0rICogY2FsbGVkLgotKyAqLwotKyNkZWZpbmUgX1BPU0lYX1NP VVJDRSAxCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgIi4uL3BuZ3ByaXYuaCIK LSsKLSsjaWZkZWYgUE5HX1JFQURfU1VQUE9SVEVECi0rCi0rI2lmIFBOR19QT1dFUlBDX1ZTWF9P UFQgPiAwCi0rI2lmZGVmIFBOR19QT1dFUlBDX1ZTWF9DSEVDS19TVVBQT1JURUQgLyogRG8gcnVu LXRpbWUgY2hlY2tzICovCi0rLyogV0FSTklORzogaXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQg dGhhdCB5b3UgZG8gbm90IGJ1aWxkIGxpYnBuZyB3aXRoCi0rICogcnVuLXRpbWUgY2hlY2tzIGZv ciBDUFUgZmVhdHVyZXMgaWYgYXQgYWxsIHBvc3NpYmxlLiAgSW4gdGhlIGNhc2Ugb2YgdGhlIFBv d2VyUEMKLSsgKiBWU1ggaW5zdHJ1Y3Rpb25zIHRoZXJlIGlzIG5vIHByb2Nlc3Nvci1zcGVjaWZp YyB3YXkgb2YgZGV0ZWN0aW5nIHRoZQotKyAqIHByZXNlbmNlIG9mIHRoZSByZXF1aXJlZCBzdXBw b3J0LCB0aGVyZWZvcmUgcnVuLXRpbWUgZGV0ZWN0aW9uIGlzIGV4dHJlbWVseQotKyAqIE9TIHNw ZWNpZmljLgotKyAqCi0rICogWW91IG1heSBzZXQgdGhlIG1hY3JvIFBOR19QT1dFUlBDX1ZTWF9G SUxFIHRvIHRoZSBmaWxlIG5hbWUgb2YgZmlsZSBjb250YWluaW5nCi0rICogYSBmcmFnbWVudCBv ZiBDIHNvdXJjZSBjb2RlIHdoaWNoIGRlZmluZXMgdGhlIHBuZ19oYXZlX3ZzeCBmdW5jdGlvbi4g IFRoZXJlCi0rICogYXJlIGEgbnVtYmVyIG9mIGltcGxlbWVudGF0aW9ucyBpbiBjb250cmliL3Bv d2VycGMtdnN4LCBidXQgdGhlIG9ubHkgb25lIHRoYXQKLSsgKiBoYXMgcGFydGlhbCBzdXBwb3J0 IGlzIGNvbnRyaWIvcG93ZXJwYy12c3gvbGludXguYyAtIGEgZ2VuZXJpYyBMaW51eAotKyAqIGlt cGxlbWVudGF0aW9uIHdoaWNoIHJlYWRzIC9wcm9jL2NwdWZpbm8uCi0rICovCi0rI2lmbmRlZiBQ TkdfUE9XRVJQQ19WU1hfRklMRQotKyMgIGlmZGVmIF9fbGludXhfXwotKyMgICAgIGRlZmluZSAg UE5HX1BPV0VSUENfVlNYX0ZJTEUgImNvbnRyaWIvcG93ZXJwYy12c3gvbGludXhfYXV4LmMiCi0r IyAgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0ZJTEUKLSsKLSsj aW5jbHVkZSA8c2lnbmFsLmg+IC8qIGZvciBzaWdfYXRvbWljX3QgKi8KLStzdGF0aWMgaW50IHBu Z19oYXZlX3ZzeChwbmdfc3RydWN0cCBwbmdfcHRyKTsKLSsjaW5jbHVkZSBQTkdfUE9XRVJQQ19W U1hfRklMRQotKwotKyNlbHNlICAvKiBQTkdfUE9XRVJQQ19WU1hfRklMRSAqLwotKyMgIGVycm9y ICJQTkdfUE9XRVJQQ19WU1hfRklMRSB1bmRlZmluZWQ6IG5vIHN1cHBvcnQgZm9yIHJ1bi10aW1l IFBPV0VSUEMgVlNYIGNoZWNrcyIKLSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0ZJTEUgKi8K LSsjZW5kaWYgLyogUE5HX1BPV0VSUENfVlNYX0NIRUNLX1NVUFBPUlRFRCAqLwotKwotK3ZvaWQK LStwbmdfaW5pdF9maWx0ZXJfZnVuY3Rpb25zX3ZzeChwbmdfc3RydWN0cCBwcCwgdW5zaWduZWQg aW50IGJwcCkKLSt7Ci0rICAgLyogVGhlIHN3aXRjaCBzdGF0ZW1lbnQgaXMgY29tcGlsZWQgaW4g Zm9yIFBPV0VSUENfVlNYX0FQSSwgdGhlIGNhbGwgdG8KLSsgICAgKiBwbmdfaGF2ZV92c3ggaXMg Y29tcGlsZWQgaW4gZm9yIFBPV0VSUENfVlNYX0NIRUNLLiBJZiBib3RoIGFyZSBkZWZpbmVkCi0r ICAgICogdGhlIGNoZWNrIGlzIG9ubHkgcGVyZm9ybWVkIGlmIHRoZSBBUEkgaGFzIG5vdCBzZXQg dGhlIFBvd2VyUEMgb3B0aW9uIG9uCi0rICAgICogb3Igb2ZmIGV4cGxpY2l0bHkuIEluIHRoaXMg Y2FzZSB0aGUgY2hlY2sgY29udHJvbHMgd2hhdCBoYXBwZW5zLgotKyAgICAqLwotKwotKyNpZmRl ZiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NVUFBPUlRFRAotKyAgIHN3aXRjaCAoKHBwLT5vcHRpb25z ID4+IFBOR19QT1dFUlBDX1ZTWCkgJiAzKQotKyAgIHsKLSsgICAgICBjYXNlIFBOR19PUFRJT05f VU5TRVQ6Ci0rICAgICAgICAgLyogQWxsb3cgdGhlIHJ1bi10aW1lIGNoZWNrIHRvIGV4ZWN1dGUg aWYgaXQgaGFzIGJlZW4gZW5hYmxlZCAtCi0rICAgICAgICAgICogdGh1cyBib3RoIEFQSSBhbmQg Q0hFQ0sgY2FuIGJlIHR1cm5lZCBvbi4gIElmIGl0IGlzbid0IHN1cHBvcnRlZAotKyAgICAgICAg ICAqIHRoaXMgY2FzZSB3aWxsIGZhbGwgdGhyb3VnaCB0byB0aGUgJ2RlZmF1bHQnIGJlbG93LCB3 aGljaCBqdXN0Ci0rICAgICAgICAgICogcmV0dXJucy4KLSsgICAgICAgICAgKi8KLSsjZW5kaWYg LyogUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQT1JURUQgKi8KLSsjaWZkZWYgUE5HX1BPV0VSUENf VlNYX0NIRUNLX1NVUFBPUlRFRAotKyAgICAgICAgIHsKLSsgICAgICAgICAgICBzdGF0aWMgdm9s YXRpbGUgc2lnX2F0b21pY190IG5vX3ZzeCA9IC0xOyAvKiBub3QgY2hlY2tlZCAqLwotKwotKyAg ICAgICAgICAgIGlmIChub192c3ggPCAwKQotKyAgICAgICAgICAgICAgIG5vX3ZzeCA9ICFwbmdf aGF2ZV92c3gocHApOwotKwotKyAgICAgICAgICAgIGlmIChub192c3gpCi0rICAgICAgICAgICAg ICAgcmV0dXJuOwotKyAgICAgICAgIH0KLSsjaWZkZWYgUE5HX1BPV0VSUENfVlNYX0FQSV9TVVBQ T1JURUQKLSsgICAgICAgICBicmVhazsKLSsjZW5kaWYKLSsjZW5kaWYgLyogUE5HX1BPV0VSUENf VlNYX0NIRUNLX1NVUFBPUlRFRCAqLwotKwotKyNpZmRlZiBQTkdfUE9XRVJQQ19WU1hfQVBJX1NV UFBPUlRFRAotKyAgICAgIGRlZmF1bHQ6IC8qIE9GRiBvciBJTlZBTElEICovCi0rICAgICAgICAg cmV0dXJuOwotKwotKyAgICAgIGNhc2UgUE5HX09QVElPTl9PTjoKLSsgICAgICAgICAvKiBPcHRp b24gdHVybmVkIG9uICovCi0rICAgICAgICAgYnJlYWs7Ci0rICAgfQotKyNlbmRpZgotKwotKyAg IC8qIElNUE9SVEFOVDogYW55IG5ldyBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCBoZXJlIG11c3Qg YmUgZGVjbGFyZWQgdXNpbmcKLSsgICAgKiBQTkdfSU5URVJOQUxfRlVOQ1RJT04gaW4gLi4vcG5n cHJpdi5oLiAgVGhpcyBpcyByZXF1aXJlZCBzbyB0aGF0IHRoZQotKyAgICAqICdwcmVmaXgnIG9w dGlvbiB0byBjb25maWd1cmUgd29ya3M6Ci0rICAgICoKLSsgICAgKiAgICAuL2NvbmZpZ3VyZSAt LXdpdGgtbGlicG5nLXByZWZpeD1mb29iYXJfCi0rICAgICoKLSsgICAgKiBWZXJpZnkgeW91IGhh dmUgZ290IHRoaXMgcmlnaHQgYnkgcnVubmluZyB0aGUgYWJvdmUgY29tbWFuZCwgZG9pbmcgYSBi dWlsZAotKyAgICAqIGFuZCBleGFtaW5pbmcgcG5ncHJlZml4Lmg7IGl0IG11c3QgY29udGFpbiBh ICNkZWZpbmUgZm9yIGV2ZXJ5IGV4dGVybmFsCi0rICAgICogZnVuY3Rpb24geW91IGFkZC4gIChO b3RpY2UgdGhhdCB0aGlzIGhhcHBlbnMgYXV0b21hdGljYWxseSBmb3IgdGhlCi0rICAgICogaW5p dGlhbGl6YXRpb24gZnVuY3Rpb24uKQotKyAgICAqLwotKyAgIHBwLT5yZWFkX2ZpbHRlcltQTkdf RklMVEVSX1ZBTFVFX1VQLTFdID0gcG5nX3JlYWRfZmlsdGVyX3Jvd191cF92c3g7Ci0rCi0rICAg aWYgKGJwcCA9PSAzKQotKyAgIHsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9W QUxVRV9TVUItMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjNfdnN4OwotKyAgICAgIHBwLT5y ZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3df YXZnM192c3g7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfUEFFVEgt MV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoM192c3g7Ci0rICAgfQotKwotKyAgIGVsc2Ug aWYgKGJwcCA9PSA0KQotKyAgIHsKLSsgICAgICBwcC0+cmVhZF9maWx0ZXJbUE5HX0ZJTFRFUl9W QUxVRV9TVUItMV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3N1YjRfdnN4OwotKyAgICAgIHBwLT5y ZWFkX2ZpbHRlcltQTkdfRklMVEVSX1ZBTFVFX0FWRy0xXSA9IHBuZ19yZWFkX2ZpbHRlcl9yb3df YXZnNF92c3g7Ci0rICAgICAgcHAtPnJlYWRfZmlsdGVyW1BOR19GSUxURVJfVkFMVUVfUEFFVEgt MV0gPSBwbmdfcmVhZF9maWx0ZXJfcm93X3BhZXRoNF92c3g7Ci0rICAgfQotK30KLSsjZW5kaWYg LyogUE5HX1BPV0VSUENfVlNYX09QVCA+IDAgKi8KLSsjZW5kaWYgLyogUkVBRCAqLwotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lz Y2FsbF9zdXBwb3J0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCi1AQCAtMzkxNCw3ICszOTE0LDcg QEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgewotICAgICAgIExTU19SRUcoMiwgYnVmKTsKLSAgICAg ICBMU1NfQk9EWSh2b2lkKiwgbW1hcDIsICIwIihfX3IyKSk7Ci0gICAgIH0KLS0jZWxzZQotKyNl bGlmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pIC8qIHBwYzY0IGRvZXNuJ3QgaGF2ZSBtbWFwMiAq LwotICAgICAjZGVmaW5lIF9fTlJfX21tYXAyIF9fTlJfbW1hcDIKLSAgICAgTFNTX0lOTElORSBf c3lzY2FsbDYodm9pZCosIF9tbWFwMiwgICAgICAgICAgICB2b2lkKiwgcywKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgc2l6ZV90LCAgICAgICAgICAgICAgICAgICBsLCBpbnQsICAgICAgICAg ICAgICAgcCwKLUBAIC00MDQ1LDcgKzQwNDUsNyBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7Ci0g ICAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIGRlZmluZWQoX19BUk1fQVJDSF8zX18pIHx8 IGRlZmluZWQoX19BUk1fRUFCSV9fKSB8fCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIChk ZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyKSB8fCAgICAg ICAgICAgICAgICAgICBcCi0tICAgICAgZGVmaW5lZChfX1BQQ19fKSB8fCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgKGRlZmluZWQo X19QUENfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykpIHx8ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAoZGVmaW5lZChfX3Mz OTBfXykgJiYgIWRlZmluZWQoX19zMzkweF9fKSkKLSAgICAgLyogT24gdGhlc2UgYXJjaGl0ZWN0 dXJlcywgaW1wbGVtZW50IG1tYXAoKSB3aXRoIG1tYXAyKCkuICovCi0gICAgIExTU19JTkxJTkUg dm9pZCogTFNTX05BTUUobW1hcCkodm9pZCAqcywgc2l6ZV90IGwsIGludCBwLCBpbnQgZiwgaW50 IGQsCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L25v ZGUvbm9kZS5weQotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ub2RlL25vZGUucHkKLUBAIC0xMCwxMSArMTAsMTIgQEAgaW1wb3J0IHN5cwotIAotIAot IGRlZiBHZXRCaW5hcnlQYXRoKCk6Ci0tICByZXR1cm4gb3NfcGF0aC5qb2luKG9zX3BhdGguZGly bmFtZShfX2ZpbGVfXyksICp7Ci0tICAgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRhcndpbi14 NjQnLCAnYmluJywgJ25vZGUnKSwKLS0gICAgJ0xpbnV4JzogKCdsaW51eCcsICdub2RlLWxpbnV4 LXg2NCcsICdiaW4nLCAnbm9kZScpLAotLSAgICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUuZXhl JyksCi0tICB9W3BsYXRmb3JtLnN5c3RlbSgpXSkKLSsgIHJldHVybiAiL3Vzci9iaW4vbm9kZSIK LSsgICNyZXR1cm4gb3NfcGF0aC5qb2luKG9zX3BhdGguZGlybmFtZShfX2ZpbGVfXyksICp7Ci0r ICAjICAnRGFyd2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdub2RlJyks Ci0rICAjICAnTGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0JywgJ2JpbicsICdub2Rl JyksCi0rICAjICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUuZXhlJyksCi0rICAjfVtwbGF0Zm9y bS5zeXN0ZW0oKV0pCi0gCi0gCi0gZGVmIFJ1bk5vZGUoY21kX3BhcnRzLCBzdGRvdXQ9Tm9uZSk6 Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BkZml1 bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhZ2VfYWxs b2NhdG9yX2NvbnN0YW50cy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2NhdG9yL3BhZ2VfYWxsb2NhdG9yX2NvbnN0YW50cy5oCi1AQCAtMTEsNyArMTEsNyBAQAot IAotIG5hbWVzcGFjZSBwZGZpdW0gewotIG5hbWVzcGFjZSBiYXNlIHsKLS0jaWYgZGVmaW5lZChP U19XSU4pCi0rI2lmIGRlZmluZWQoT1NfV0lOKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQot IHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQYWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5U2hpZnQg PSAxNjsgIC8vIDY0S0IKLSAjZWxpZiBkZWZpbmVkKF9NSVBTX0FSQ0hfTE9PTkdTT04pCi0gc3Rh dGljIGNvbnN0ZXhwciBzaXplX3Qga1BhZ2VBbGxvY2F0aW9uR3JhbnVsYXJpdHlTaGlmdCA9IDE0 OyAgLy8gMTZLQgotQEAgLTI3LDYgKzI3LDEwIEBAIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IGtQ YWdlQWxsb2NhdGlvbkdyYW51bGFyaXR5QmFzZU1hc2sgPQotIAotICNpZiBkZWZpbmVkKF9NSVBT X0FSQ0hfTE9PTkdTT04pCi0gc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXpl ID0gMTYzODQ7Ci0rI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKLSsvLyBUT0RPOiBtb2Rl cm4gcHBjNjQgY2FuIGRvIDRrIGFuZCA2NGsgcGFnZSBzaXplcwotKy8vIGZvciBub3csIDY0ayBp cyBhc3N1bWVkCi0rc3RhdGljIGNvbnN0ZXhwciBzaXplX3Qga1N5c3RlbVBhZ2VTaXplID0gNjU1 MzY7Ci0gI2Vsc2UKLSBzdGF0aWMgY29uc3RleHByIHNpemVfdCBrU3lzdGVtUGFnZVNpemUgPSA0 MDk2OwotICNlbmRpZgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9j YXRvci9wYXJ0aXRpb25fYWxsb2NfY29uc3RhbnRzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvcGRmaXVtL3RoaXJkX3BhcnR5L2Jhc2UvYWxsb2Nh dG9yL3BhcnRpdGlvbl9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jX2NvbnN0YW50cy5oCi1AQCAt MzMsNiArMzMsOCBAQCBzdGF0aWMgY29uc3Qgc2l6ZV90IGtCdWNrZXRTaGlmdCA9IChrQWxsb2Nh dGlvbkdyYW51bGFyaXR5ID09IDgpID8gMyA6IDI7Ci0gLy8gdXAgYWdhaW5zdCB0aGUgZW5kIG9m IGEgc3lzdGVtIHBhZ2UuCi0gI2lmIGRlZmluZWQoX01JUFNfQVJDSF9MT09OR1NPTikKLSBzdGF0 aWMgY29uc3Qgc2l6ZV90IGtQYXJ0aXRpb25QYWdlU2hpZnQgPSAxNjsgIC8vIDY0S0IKLSsjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQotK3N0YXRpYyBjb25zdCBzaXplX3Qga1BhcnRpdGlv blBhZ2VTaGlmdCA9IDE4OyAgLy8gMjU2S0IKLSAjZWxzZQotIHN0YXRpYyBjb25zdCBzaXplX3Qg a1BhcnRpdGlvblBhZ2VTaGlmdCA9IDE0OyAgLy8gMTZLQgotICNlbmRpZgotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9u L3NxbGl0ZTMuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9zcWxpdGUvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYwotQEAgLTEzOTM3LDcgKzEzOTM3LDgg QEAgdHlwZWRlZiBJTlQxNl9UWVBFIExvZ0VzdDsKLSAjIGlmIGRlZmluZWQoaTM4NikgICAgIHx8 IGRlZmluZWQoX19pMzg2X18pICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCi0gICAgICBk ZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX01fWDY0 KSAgfHwgICAgXAotICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0pICAg ICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKLS0gICAgIGRlZmluZWQoX19hcm1fXykgIHx8 IGRlZmluZWQoX01fQVJNNjQpCi0rICAgICBkZWZpbmVkKF9fYXJtX18pICB8fCBkZWZpbmVkKF9N X0FSTTY0KSAgIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgXAotKyAgICAgKF9fQllURV9P UkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQotICMgICBkZWZpbmUgU1FMSVRFX0JZ VEVPUkRFUiAgICAxMjM0Ci0gIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRlZmluZWQoX19w cGNfXykKLSAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMyMQotLS0tIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxp dGVJbnQuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaAotQEAgLTgzMyw3ICs4MzMsOCBAQCB0eXBlZGVm IElOVDE2X1RZUEUgTG9nRXN0OwotICMgaWYgZGVmaW5lZChpMzg2KSAgICAgfHwgZGVmaW5lZChf X2kzODZfXykgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKLSAgICAgIGRlZmluZWQoX194 ODZfNjQpIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAgICBc Ci0gICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8fCBkZWZpbmVkKF9NX0FSTSkgICAgIHx8IGRlZmlu ZWQoX194ODYpICAgfHwgICAgXAotLSAgICAgZGVmaW5lZChfX2FybV9fKSAgfHwgZGVmaW5lZChf TV9BUk02NCkKLSsgICAgIGRlZmluZWQoX19hcm1fXykgIHx8IGRlZmluZWQoX01fQVJNNjQpICAg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBcCi0rICAgICAoX19CWVRFX09SREVSX18gPT0g X19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCi0gIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAg IDEyMzQKLSAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgfHwgZGVmaW5lZChfX3BwY19fKQotICMg ICBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICA0MzIxCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy ZS9kaWZmZXJfYmxvY2suY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9ibG9jay5j YwotQEAgLTMwLDExICszMCw3IEBAIGJvb2wgVmVjdG9yRGlmZmVyZW5jZShjb25zdCB1aW50OF90 KiBpbWFnZTEsIGNvbnN0IHVpbnQ4X3QqIGltYWdlMikgewotICAgc3RhdGljIGJvb2wgKCpkaWZm X3Byb2MpKGNvbnN0IHVpbnQ4X3QqLCBjb25zdCB1aW50OF90KikgPSBudWxscHRyOwotIAotICAg aWYgKCFkaWZmX3Byb2MpIHsKLS0jaWYgZGVmaW5lZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKSB8 fCBkZWZpbmVkKFdFQlJUQ19BUkNIX01JUFNfRkFNSUxZKQotLSAgICAvLyBGb3IgQVJNIGFuZCBN SVBTIHByb2Nlc3NvcnMsIGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgotLSAgICAvLyBUT0RPKGhjbGFt KTogSW1wbGVtZW50IGEgTkVPTiB2ZXJzaW9uLgotLSAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlm ZmVyZW5jZV9DOwotLSNlbHNlCi0rI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkK LSAgICAgYm9vbCBoYXZlX3NzZTIgPSBXZWJSdGNfR2V0Q1BVSW5mbyhrU1NFMikgIT0gMDsKLSAg ICAgLy8gRm9yIHg4NiBwcm9jZXNzb3JzLCBjaGVjayBpZiBTU0UyIGlzIHN1cHBvcnRlZC4KLSAg ICAgaWYgKGhhdmVfc3NlMiAmJiBrQmxvY2tTaXplID09IDMyKSB7Ci1AQCAtNDQsNiArNDAsMTAg QEAgYm9vbCBWZWN0b3JEaWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGltYWdlMSwgY29uc3QgdWlu dDhfdCogaW1hZ2UyKSB7Ci0gICAgIH0gZWxzZSB7Ci0gICAgICAgZGlmZl9wcm9jID0gJlZlY3Rv ckRpZmZlcmVuY2VfQzsKLSAgICAgfQotKyNlbHNlCi0rICAgIC8vIEZvciBvdGhlciBwcm9jZXNz b3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KLSsgICAgLy8gVE9ETyhoY2xhbSk6IEltcGxlbWVu dCBhIE5FT04gdmVyc2lvbi4KLSsgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsK LSAjZW5kaWYKLSAgIH0KLSAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3Rl bS9hcmNoLmgKLUBAIC00Nyw2ICs0NywxOCBAQAotICNlbGlmIGRlZmluZWQoX19wbmFjbF9fKQot ICNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUwotICNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExF X0VORElBTgotKyNlbGlmIGRlZmluZWQoX19QUENfXykKLSsjZGVmaW5lIFdFQlJUQ19BUkNIX1BQ Q19GQU1JTFkKLSsjaWYgX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18K LSsjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KLSsjZWxzZQotKyNkZWZpbmUgV0VC UlRDX0FSQ0hfQklHX0VORElBTgotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fTFA2NF9fKQotKyNk ZWZpbmUgV0VCUlRDX0FSQ0hfNjRfQklUUwotKyNlbHNlCi0rI2RlZmluZSBXRUJSVENfQVJDSF8z Ml9CSVRTCi0rI2VuZGlmCi0gI2Vsc2UKLSAjZXJyb3IgUGxlYXNlIGFkZCBzdXBwb3J0IGZvciB5 b3VyIGFyY2hpdGVjdHVyZSBpbiB0eXBlZGVmcy5oCi0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Y4L0JVSUxELmduCi1AQCAtNTQ0LDYgKzU0NCwxMiBAQCBjb25maWco InRvb2xjaGFpbiIpIHsKLSAgICAgfQotICAgICBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImxpdHRs ZSIpIHsKLSAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19MRSIgXQotKyAg ICAgICAgY2ZsYWdzICs9IFsKLSsgICAgICAgICMgRW5hYmxlIHVzYWdlIG9mIEFsdGlWZWMsIFZT WCwgYW5kIG90aGVyIFBPV0VSOCBhbmQgaGlnaGVyIGZlYXR1cmVzCi0rICAgICAgICAiLW1jcHU9 cG93ZXI4IiwKLSsgICAgICAgICItbWFsdGl2ZWMiLAotKyAgICAgICAgIi1tdnN4IiwKLSsgICAg ICBdCi0gICAgIH0gZWxzZSBpZiAoaG9zdF9ieXRlb3JkZXIgPT0gImJpZyIpIHsKLSAgICAgICBk ZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19CRSIgXQotICAgICAgIGlmIChjdXJyZW50 X29zID09ICJhaXgiKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4 L3Rlc3QvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgv dGVzdC9CVUlMRC5nbgotQEAgLTMxLDcgKzMxLDcgQEAgZ3JvdXAoImduX2FsbCIpIHsKLSAgICAg ZGVwcyArPSBbCi0gICAgICAgImNjdGVzdDpjY3Rlc3QiLAotICAgICAgICJjY3Rlc3Q6Z2VuZXJh dGUtYnl0ZWNvZGUtZXhwZWN0YXRpb25zIiwKLS0gICAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIs Ci0rICAgICAgIyJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKLSAgICAgXQotICAgfQotIH0KLUBAIC04 MCw5ICs4MCw5IEBAIGdyb3VwKCJ2OF9ib3RfZGVmYXVsdCIpIHsKLSAgICAgIm1qc3VuaXQ6djhf bWpzdW5pdCIsCi0gICAgICJta2dyb2tkdW1wOm1rZ3Jva2R1bXAiLAotICAgICAicHJlcGFyc2Vy OnY4X3ByZXBhcnNlciIsCi0tICAgICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKLSsgICAgIyJ1bml0 dGVzdHM6dW5pdHRlc3RzIiwKLSAgICAgIndhc20tanM6djhfd2FzbV9qcyIsCi0tICAgICJ3YXNt LXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSsgICAgIyJ3YXNtLXNwZWMtdGVzdHM6 djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSAgICAgIndlYmtpdDp2OF93ZWJraXQiLAotICAgXQotIH0K LUBAIC0xMDAsOSArMTAwLDkgQEAgZ3JvdXAoInY4X2RlZmF1bHQiKSB7Ci0gICAgICJtanN1bml0 OnY4X21qc3VuaXQiLAotICAgICAibWtncm9rZHVtcDpta2dyb2tkdW1wIiwKLSAgICAgInByZXBh cnNlcjp2OF9wcmVwYXJzZXIiLAotLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0tICAgICJ3 YXNtLWpzOnY4X3dhc21fanMiLAotLSAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190 ZXN0cyIsCi0rICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCi0rICAgICMid2FzbS1qczp2OF93 YXNtX2pzIiwKLSsgICAgIyJ3YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rlc3RzIiwKLSAg IF0KLSB9Ci0gCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTEtY2hyb21pdW0t cHBjNjQtbXVzbC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5MS1jaHJvbWl1bS1wcGM2 NC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjAxNGQ4YjU5OC4u MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDkxLWNocm9taXVtLXBwYzY0 LW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotVGhpcyBpbmNsdWRl cyBhZGRpdGlvbmFsIGJ1aWxkIGZpeGVzIGZvciB0aGUgbXVzbCBsaWJjLgotCi0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21w X21hY3Jvcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi1AQCAtMTEsMTIgKzExLDE0IEBACi0gLy8g QWxsIHg4Nl82NCBidWlsZHMgdXNlIGEgbmV3IGVub3VnaCBiaW9uaWMgdG8gaGF2ZSBzeXMvdXNl ci5oLgotICNpZiAhZGVmaW5lZChfX0JJT05JQ19fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCi0g I2lmICFkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9ub25zZmlfXykKLSsjaWYgIWRlZmluZWQoX19w b3dlcnBjNjRfXykgfHwgZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy91c2VyLmg+ Ci0gI2VuZGlmCi0rI2VuZGlmCi0gI2lmIGRlZmluZWQoX19taXBzX18pCi0gLy8gc3lzL3VzZXIu aCBpbiBlZ2xpYmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCi0gI2luY2x1ZGUgPHN0ZGRlZi5o PgotLSNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjZWxpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pICYmIGRlZmluZWQoX19HTElCQ19fKQotIC8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qg b24gcHBjNjQKLSB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7Ci0gI2VuZGlmCi1A QCAtMzYxLDExICszNjMsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsK LSAjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0Ci0gI2VuZGlmCi0gCi0tI2Rl ZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5n cHJbX3JlZ10pCi0rI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKChzdHJ1Y3QgcHRf cmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPmdwcltfcmVnXSkKLSAKLSAjZGVmaW5l IFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCi0gI2RlZmluZSBTRUND T01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKLS0jZGVmaW5lIFNFQ0NPTVBf SVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKLSsjZGVmaW5lIFNFQ0NPTVBf SVAoX2N0eCkgKChzdHJ1Y3QgcHRfcmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPm5p cAotICNkZWZpbmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQotICNk ZWZpbmUgU0VDQ09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0KQotICNkZWZpbmUg U0VDQ09NUF9QQVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA1KQotLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwu Y2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi9zeXNjYWxsLmNjCi1AQCAtNDk3LDkgKzQ5Nyw5IEBAIHZvaWQgU3lzY2FsbDo6 UHV0VmFsdWVJblVjb250ZXh0KGludHB0cl90IHJldF92YWwsIHVjb250ZXh0X3QqIGN0eCkgewot ICAgLy8gU2FtZSBhcyBNSVBTLCBuZWVkIHRvIGludmVydCByZXQgYW5kIHNldCBlcnJvciByZWdp c3RlciAoY3IwLlNPKQotICAgaWYgKHJldF92YWwgPD0gLTEgJiYgcmV0X3ZhbCA+PSAtNDA5NSkg ewotICAgICByZXRfdmFsID0gLXJldF92YWw7Ci0tICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+ Y2NyIHw9ICgxIDw8IDI4KTsKLSsgICAgKChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNvbnRl eHQucmVncyktPmNjciB8PSAoMSA8PCAyOCk7Ci0gICB9IGVsc2UgewotLSAgICBjdHgtPnVjX21j b250ZXh0LnJlZ3MtPmNjciAmPSB+KDEgPDwgMjgpOwotKyAgICAoKHN0cnVjdCBwdF9yZWdzICop Y3R4LT51Y19tY29udGV4dC5yZWdzKS0+Y2NyICY9IH4oMSA8PCAyOCk7Ci0gICB9Ci0gI2VuZGlm Ci0gICBTRUNDT01QX1JFU1VMVChjdHgpID0gc3RhdGljX2Nhc3Q8Z3JlZ190PihyZXRfdmFsKTsK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYWJzZWls LWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmNjCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9i YXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5jYwotQEAgLTIwLDcgKzIwLDcgQEAKLSAj aW5jbHVkZSA8aW50cmluLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIGRlZmluZWQoX19wb3dlcnBjX18p IHx8IGRlZmluZWQoX19wcGNfXykKLSsjaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmlu ZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxzeXMvcGxhdGZv cm0vcHBjLmg+Ci0gI2VuZGlmCi0gCi1AQCAtNTMsNyArNTMsNyBAQCBkb3VibGUgVW5zY2FsZWRD eWNsZUNsb2NrOjpGcmVxdWVuY3koKSB7Ci0gICByZXR1cm4gYmFzZV9pbnRlcm5hbDo6Tm9taW5h bENQVUZyZXF1ZW5jeSgpOwotIH0KLSAKLS0jZWxpZiBkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBk ZWZpbmVkKF9fcHBjX18pCi0rI2VsaWYgKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQo X19wcGNfXykpICYmIGRlZmluZWQoX19HTElCQ19fKQotIAotIGludDY0X3QgVW5zY2FsZWRDeWNs ZUNsb2NrOjpOb3coKSB7Ci0gICByZXR1cm4gX19wcGNfZ2V0X3RpbWViYXNlKCk7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJz bC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVy bmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCi1AQCAtNDYsNyArNDYsNyBAQAotIAotIC8vIFRoZSBm b2xsb3dpbmcgcGxhdGZvcm1zIGhhdmUgYW4gaW1wbGVtZW50YXRpb24gb2YgYSBoYXJkd2FyZSBj b3VudGVyLgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKLS0gIGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRl ZmluZWQoX19wcGNfXykgfHwgXAotKyAgKChkZWZpbmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVk KF9fcHBjX18pKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykpIHx8IFwKLSAgIGRlZmluZWQoX01fSVg4 NikgfHwgZGVmaW5lZChfTV9YNjQpCi0gI2RlZmluZSBBQlNMX0hBVkVfVU5TQ0FMRURfQ1lDTEVD TE9DS19JTVBMRU1FTlRBVElPTiAxCi0gI2Vsc2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKLUBAIC0yNzMsNiArMjcz LDkgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQp IGNvbnN0IHsKLSAKLSAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCi0gCi0rI2luY2x1ZGUg PGFzbS9lbGYuaD4KLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotIHVpbnRwdHJfdCBUaHJl YWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7Ci0gICAgIHJldHVybiBtY29u dGV4dC5ncF9yZWdzW1BUX05JUF07Ci0gfQotQEAgLTI5MCw5ICsyOTMsOSBAQCB2b2lkIFRocmVh ZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgewotICAgICBv dXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKLSAgICAgCi0gICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCi0tICAg ICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsKLSsg ICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJm1jb250ZXh0 LmZwX3JlZ3MpW2ldOwotIAotLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSBtY29udGV4dC5m cF9yZWdzW05GUFJFRy0xXTsKLSsgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gKCh1aW50NjRf dCAqKSZtY29udGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOwotIAotICAgICBmb3IgKGludCBp ID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQotICAgICAgICAg b3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCi1AQCAt MjU3LDYgKzI1Nyw5IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0Nv bnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMpIHsKLSAKLSAjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCi0gCi0rI2luY2x1ZGUgPGFzbS9lbGYuaD4KLSsjaW5jbHVkZSA8YXNt L3B0cmFjZS5oPgotKwotIHVpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVy KGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7Ci0gICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07Ci0gfQotQEAgLTI4MCw5ICsyODMsOSBAQCB2 b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNv bnN0IHVjb250ZXh0X3QqIHVjLAotICAgICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9y ZWdzW1BUX0NUUl07Ci0gICAgIAotICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5H U0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsrKQotLSAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZw cmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW2ldOwotKyAgICAgICAgb3V0LT5mbG9h dF9zYXZlLmZwcmVnc1tpXSA9ICgodWludDY0X3QgKikmdWMtPnVjX21jb250ZXh0LmZwX3JlZ3Mp W2ldOwotIAotLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRleHQuZnBf cmVnc1tORlBSRUctMV07Ci0rICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9ICgodWludDY0X3Qg KikmdWMtPnVjX21jb250ZXh0LmZwX3JlZ3MpW0VMRl9ORlBSRUctMV07Ci0gCi0gICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCi0gICAg ICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPQotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCi1AQCAtMTA1LDYgKzEwNSwxMSBA QAotICNkZWZpbmUgUFJfU0VUX1BUUkFDRVIgMHg1OTYxNmQ2MQotICNlbmRpZgotIAotKy8qIG11 c2wgaGFjaywgY2FuJ3QgaW5jbHVkZSBhc20vcHRyYWNlLmggYXMgdGhhdCBjYXVzZXMgY29uZmxp Y3RzICovCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgIWRlZmluZWQoUFRfTklQKQot KyNkZWZpbmUgUFRfTklQIDMyCi0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIGdvb2dsZV9icmVha3Bh ZCB7Ci0gCi0gbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5 Mi1jaHJvbWl1bS1wcGM2NC1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJv bWl1bS1wcGM2NC1iZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U4MzEx YzliYTIuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5Mi1jaHJvbWl1 bS1wcGM2NC1iZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5NzAgKzAsMCBAQAotVGhpcyBh ZGRzIGJpZyBlbmRpYW4gc3VwcG9ydC9maXhlcyBpbiBhZGRpdGlvbiB0byB0aGUgYmFzZSBwcGM2 NGxlIHBhdGNoLgotCi1QaW5nIHE2NiBpZiB5b3UncmUgdXBkYXRpbmcgcXQ1IGFuZCB0aGUgcGF0 Y2ggZG9lcyBub3QgYXBwbHkgYW55bW9yZS4KLQotU291cmNlOiBodHRwczovL3dpa2kucmFwdG9y Y3MuY29tL3cvaW5kZXgucGhwP3RpdGxlPVBvcnRpbmcvQ2hyb21pdW0vQkUKLQotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxs b2NhdG9yL3BhcnRpdGlvbl9hbGxvYy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxv Yy5jYwotQEAgLTQ0MCw3ICs0NDAsNyBAQCBzdGF0aWMgc2l6ZV90IFBhcnRpdGlvblB1cmdlUGFn ZShpbnRlcm5hbDo6UGFydGl0aW9uUGFnZSogcGFnZSwgYm9vbCBkaXNjYXJkKSB7Ci0gI2VuZGlm Ci0gICAgICAgfQotICAgICAgIC8vIFRlcm1pbmF0ZSB0aGUgZnJlZWxpc3QgY2hhaW4uCi0tICAg ICAgKmVudHJ5X3B0ciA9IG51bGxwdHI7Ci0rICAgICAgKmVudHJ5X3B0ciA9IGludGVybmFsOjpQ YXJ0aXRpb25GcmVlbGlzdEVudHJ5OjpUcmFuc2Zvcm0obnVsbHB0cik7Ci0gICAgICAgLy8gVGhl IGZyZWVsaXN0IGhlYWQgaXMgc3RvcmVkIHVubWFza2VkLgotICAgICAgIHBhZ2UtPmZyZWVsaXN0 X2hlYWQgPQotICAgICAgICAgICBpbnRlcm5hbDo6UGFydGl0aW9uRnJlZWxpc3RFbnRyeTo6VHJh bnNmb3JtKHBhZ2UtPmZyZWVsaXN0X2hlYWQpOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9iYXNlL2kxOG4vaWN1X3V0aWwuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vYmFzZS9pMThuL2ljdV91dGlsLmNjCi1AQCAtNzUsNyArNzUsMTEgQEAg d2NoYXJfdCBnX2RlYnVnX2ljdV9wZl9maWxlbmFtZVtfTUFYX1BBVEhdOwotIC8vIE5vIG5lZWQg dG8gY2hhbmdlIHRoZSBmaWxlbmFtZSBpbiBtdWx0aXBsZSBwbGFjZXMgKGd5cCBmaWxlcywgd2lu ZG93cwotIC8vIGJ1aWxkIHBrZyBjb25maWd1cmF0aW9ucywgZXRjKS4gJ2wnIHN0YW5kcyBmb3Ig TGl0dGxlIEVuZGlhbi4KLSAvLyBUaGlzIHZhcmlhYmxlIGlzIGV4cG9ydGVkIHRocm91Z2ggdGhl IGhlYWRlciBmaWxlLgotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gY29u c3QgY2hhciBrSWN1RGF0YUZpbGVOYW1lW10gPSAiaWN1ZHRsLmRhdCI7Ci0rI2Vsc2UKLStjb25z dCBjaGFyIGtJY3VEYXRhRmlsZU5hbWVbXSA9ICJpY3VkdGIuZGF0IjsKLSsjZW5kaWYKLSAjaWYg ZGVmaW5lZChPU19BTkRST0lEKQotIGNvbnN0IGNoYXIga0FuZHJvaWRBc3NldHNJY3VEYXRhRmls ZU5hbWVbXSA9ICJhc3NldHMvaWN1ZHRsLmRhdCI7Ci0gI2VuZGlmCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvbWVtb3J5L3NoYXJlZF9tZW1vcnlfbWFwcGluZ191 bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21l bW9yeS9zaGFyZWRfbWVtb3J5X21hcHBpbmdfdW5pdHRlc3QuY2MKLUBAIC0xMiw2ICsxMiw3IEBA Ci0gI2luY2x1ZGUgImJhc2UvY29udGFpbmVycy9zcGFuLmgiCi0gI2luY2x1ZGUgImJhc2UvbWVt b3J5L3JlYWRfb25seV9zaGFyZWRfbWVtb3J5X3JlZ2lvbi5oIgotICNpbmNsdWRlICJ0ZXN0aW5n L2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9y ZGVyLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2UgewotIAotQEAgLTY5LDggKzcwLDggQEAgVEVTVF9G KFNoYXJlZE1lbW9yeU1hcHBpbmdUZXN0LCBTcGFuV2l0aEF1dG9EZWR1Y2VkRWxlbWVudENvdW50 KSB7Ci0gCi0gICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdyaXRlX3NwYW4uc2l6ZSgpOyArK2kp Ci0gICAgIHdyaXRlX3NwYW5baV0gPSBpICsgMTsKLS0gIEVYUEVDVF9FUSgweDA0MDMwMjAxdSwg cmVhZF9zcGFuWzBdKTsKLS0gIEVYUEVDVF9FUSgweDA4MDcwNjA1dSwgcmVhZF9zcGFuWzFdKTsK LSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDAxMDIwMzA0dSksIHJlYWRfc3BhblswXSk7Ci0r ICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0pOwotIH0K LSAKLSBURVNUX0YoU2hhcmVkTWVtb3J5TWFwcGluZ1Rlc3QsIFNwYW5XaXRoRXhwbGljaXRFbGVt ZW50Q291bnQpIHsKLUBAIC05NSwxMyArOTYsMTMgQEAgVEVTVF9GKFNoYXJlZE1lbW9yeU1hcHBp bmdUZXN0LCBTcGFuV2l0aEV4cGxpY2l0RWxlbWVudENvdW50KSB7Ci0gCi0gICBmb3IgKHNpemVf dCBpID0gMDsgaSA8IHdyaXRlX3NwYW4uc2l6ZSgpOyArK2kpCi0gICAgIHdyaXRlX3NwYW5baV0g PSBpICsgMTsKLS0gIEVYUEVDVF9FUSgweDA0MDMwMjAxdSwgcmVhZF9zcGFuWzBdKTsKLS0gIEVY UEVDVF9FUSgweDA4MDcwNjA1dSwgcmVhZF9zcGFuWzFdKTsKLS0gIEVYUEVDVF9FUSgweDA0MDMw MjAxdSwgcmVhZF9zcGFuXzJbMF0pOwotKyAgRVhQRUNUX0VRKEhvc3RUb05ldDMyKDB4MDEwMjAz MDR1KSwgcmVhZF9zcGFuWzBdKTsKLSsgIEVYUEVDVF9FUShIb3N0VG9OZXQzMigweDA1MDYwNzA4 dSksIHJlYWRfc3BhblsxXSk7Ci0rICBFWFBFQ1RfRVEoSG9zdFRvTmV0MzIoMHgwMTAyMDMwNHUp LCByZWFkX3NwYW5fMlswXSk7Ci0gCi0gICBzdGQ6OmZpbGwod3JpdGVfc3Bhbl8yLmJlZ2luKCks IHdyaXRlX3NwYW5fMi5lbmQoKSwgMCk7Ci0gICBFWFBFQ1RfRVEoMHUsIHJlYWRfc3BhblswXSk7 Ci0tICBFWFBFQ1RfRVEoMHgwODA3MDYwNXUsIHJlYWRfc3BhblsxXSk7Ci0rICBFWFBFQ1RfRVEo SG9zdFRvTmV0MzIoMHgwNTA2MDcwOHUpLCByZWFkX3NwYW5bMV0pOwotICAgRVhQRUNUX0VRKDB1 LCByZWFkX3NwYW5fMlswXSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9iYXNlL21ldHJpY3MvYnVja2V0X3Jhbmdlc191bml0dGVzdC5jYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL21ldHJpY3MvYnVja2V0X3Jhbmdlc191 bml0dGVzdC5jYwotQEAgLTcsNiArNyw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotIAotICNp bmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSsjaW5jbHVkZSAi YmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0gCi0gbmFtZXNwYWNlIGJhc2UgewotIG5hbWVzcGFjZSB7 Ci1AQCAtNjQsMTMgKzY1LDIxIEBAIFRFU1QoQnVja2V0UmFuZ2VzVGVzdCwgQ2hlY2tzdW0pIHsK LSAgIHJhbmdlcy5zZXRfcmFuZ2UoMiwgMik7Ci0gCi0gICByYW5nZXMuUmVzZXRDaGVja3N1bSgp OwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBFWFBFQ1RfRVEoMjg5 MjE3MjUzdSwgcmFuZ2VzLmNoZWNrc3VtKCkpOwotKyNlbHNlCi0rICBFWFBFQ1RfRVEoMjc2NzIz MTU5NnUsIHJhbmdlcy5jaGVja3N1bSgpKTsKLSsjZW5kaWYKLSAKLSAgIHJhbmdlcy5zZXRfcmFu Z2UoMiwgMyk7Ci0gICBFWFBFQ1RfRkFMU0UocmFuZ2VzLkhhc1ZhbGlkQ2hlY2tzdW0oKSk7Ci0g Ci0gICByYW5nZXMuUmVzZXRDaGVja3N1bSgpOwotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRM RV9FTkRJQU4pCi0gICBFWFBFQ1RfRVEoMjg0MzgzNTc3NnUsIHJhbmdlcy5jaGVja3N1bSgpKTsK LSsjZWxzZQotKyAgRVhQRUNUX0VRKDM1NTYyMjM3Mzh1LCByYW5nZXMuY2hlY2tzdW0oKSk7Ci0r I2VuZGlmCi0gICBFWFBFQ1RfVFJVRShyYW5nZXMuSGFzVmFsaWRDaGVja3N1bSgpKTsKLSB9Ci0g Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcGlja2xlLmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcGlja2xlLmNjCi1AQCAt ODIsNyArODIsMTIgQEAgaW5saW5lIGNvbnN0IGNoYXIqIFBpY2tsZUl0ZXJhdG9yOjpHZXRSZWFk UG9pbnRlckFuZEFkdmFuY2UoCi0gfQotIAotIGJvb2wgUGlja2xlSXRlcmF0b3I6OlJlYWRCb29s KGJvb2wqIHJlc3VsdCkgewotLSAgcmV0dXJuIFJlYWRCdWlsdGluVHlwZShyZXN1bHQpOwotKyAg aW50IGludF9yZXN1bHQ7Ci0rICBpZiAoUmVhZEJ1aWx0aW5UeXBlKCZpbnRfcmVzdWx0KSkgewot KyAgICAqcmVzdWx0ID0gc3RhdGljX2Nhc3Q8Ym9vbD4oaW50X3Jlc3VsdCk7Ci0rICAgIHJldHVy biB0cnVlOwotKyAgfSBlbHNlCi0rICAgIHJldHVybiBmYWxzZTsKLSB9Ci0gCi0gYm9vbCBQaWNr bGVJdGVyYXRvcjo6UmVhZEludChpbnQqIHJlc3VsdCkgewotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3NoYTEuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS9zaGExLmNjCi1AQCAtMTEwLDggKzExMCwxMCBAQCB2b2lkIFNlY3Vy ZUhhc2hBbGdvcml0aG06OkZpbmFsKCkgewotICAgUGFkKCk7Ci0gICBQcm9jZXNzKCk7Ci0gCi0r I2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSAgIGZvciAoYXV0byYgdCA6IEgp Ci0gICAgIHQgPSBCeXRlU3dhcCh0KTsKLSsjZW5kaWYKLSB9Ci0gCi0gdm9pZCBTZWN1cmVIYXNo QWxnb3JpdGhtOjpVcGRhdGUoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IG5ieXRlcykgewotQEAg LTE1Nyw4ICsxNTksMTAgQEAgdm9pZCBTZWN1cmVIYXNoQWxnb3JpdGhtOjpQcm9jZXNzKCkgewot ICAgLy8KLSAgIC8vIFcgYW5kIE0gYXJlIGluIGEgdW5pb24sIHNvIG5vIG5lZWQgdG8gbWVtY3B5 LgotICAgLy8gbWVtY3B5KFcsIE0sIHNpemVvZihNKSk7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVf TElUVExFX0VORElBTikKLSAgIGZvciAodCA9IDA7IHQgPCAxNjsgKyt0KQotICAgICBXW3RdID0g Qnl0ZVN3YXAoV1t0XSk7Ci0rI2VuZGlmCi0gCi0gICAvLyBiLgotICAgZm9yICh0ID0gMTY7IHQg PCA4MDsgKyt0KQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3N0 cmluZ3Mvc3RyaW5nX251bWJlcl9jb252ZXJzaW9uc191bml0dGVzdC5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3N0cmluZ3Mvc3RyaW5nX251bWJlcl9jb252 ZXJzaW9uc191bml0dGVzdC5jYwotQEAgLTgyOSwxMiArODI5LDIxIEBAIFRFU1QoU3RyaW5nTnVt YmVyQ29udmVyc2lvbnNUZXN0LCBEb3VibGVUb1N0cmluZykgewotICAgfQotIAotICAgLy8gVGhl IGZvbGxvd2luZyB0d28gdmFsdWVzIHdlcmUgc2VlbiBpbiBjcmFzaGVzIGluIHRoZSB3aWxkLgot KyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0gICBjb25zdCBjaGFyIGlucHV0 X2J5dGVzWzhdID0gezAsIDAsIDAsIDAsICdceGVlJywgJ1x4NmQnLCAnXHg3MycsICdceDQyJ307 Ci0rI2Vsc2UKLSsgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXNbOF0gPSB7J1x4NDInLCAnXHg3Mycs ICdceDZkJywgJ1x4ZWUnLCAwLCAwLCAwLCAwfTsKLSsjZW5kaWYKLSAgIGRvdWJsZSBpbnB1dCA9 IDA7Ci0gICBtZW1jcHkoJmlucHV0LCBpbnB1dF9ieXRlcywgYmFzZTo6c2l6ZShpbnB1dF9ieXRl cykpOwotICAgRVhQRUNUX0VRKCIxMzM1MTc5MDgzNzc2IiwgTnVtYmVyVG9TdHJpbmcoaW5wdXQp KTsKLSsjaWYgZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotICAgY29uc3QgY2hhciBp bnB1dF9ieXRlczJbOF0gPQotICAgICAgIHswLCAwLCAwLCAnXHhhMCcsICdceGRhJywgJ1x4NmMn LCAnXHg3MycsICdceDQyJ307Ci0rI2Vsc2UKLSsgIGNvbnN0IGNoYXIgaW5wdXRfYnl0ZXMyWzhd ID0KLSsgICAgICB7J1x4NDInLCAnXHg3MycsICdceDZjJywgJ1x4ZGEnLCAnXHhhMCcsIDAsIDAs IDB9OwotKyNlbmRpZgotICAgaW5wdXQgPSAwOwotICAgbWVtY3B5KCZpbnB1dCwgaW5wdXRfYnl0 ZXMyLCBiYXNlOjpzaXplKGlucHV0X2J5dGVzMikpOwotICAgRVhQRUNUX0VRKCIxMzM0ODkwMzMy MTYwIiwgTnVtYmVyVG9TdHJpbmcoaW5wdXQpKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vYmFzZS90aGlyZF9wYXJ0eS9kbWdfZnAvZHRvYS5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RoaXJkX3BhcnR5L2RtZ19mcC9kdG9hLmNj Ci1AQCAtMTg2LDcgKzE4NiwxMSBAQAotICAqCXVzZWQgZm9yIGlucHV0IG1vcmUgdGhhbiBTVFJU T0RfRElHTElNIGRpZ2l0cyBsb25nIChkZWZhdWx0IDQwKS4KLSAgKi8KLSAKLSsjaWZkZWYgX19C SUdfRU5ESUFOX18KLSsjZGVmaW5lIElFRUVfTUM2OGsKLSsjZWxzZQotICNkZWZpbmUgSUVFRV84 MDg3Ci0rI2VuZGlmCi0gI2RlZmluZSBOT19IRVhfRlAKLSAKLSAjaWZuZGVmIExvbmcKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5n L2RiL3V0aWxfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vY29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3V0aWxfdW5pdHRlc3QuY2MKLUBAIC0xMiw2 ICsxMiwxMiBAQAotICNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3Qu aCIKLSAjaW5jbHVkZSAidXJsL2d1cmwuaCIKLSAKLSsjaWYgZGVmaW5lZChPU19XSU4pCi0rI2lu Y2x1ZGUgPHdpbnNvY2syLmg+Ci0rI2VsaWYgZGVmaW5lZChPU19QT1NJWCkKLSsjaW5jbHVkZSA8 YXJwYS9pbmV0Lmg+Ci0rI2VuZGlmCi0rCi0gbmFtZXNwYWNlIHNhZmVfYnJvd3NpbmcgewotIAot IFRFU1QoU2FmZUJyb3dzaW5nRGJVdGlsVGVzdCwgVXJsVG9GdWxsSGFzaGVzKSB7Ci1AQCAtODMs NyArODksNyBAQCBURVNUKFNhZmVCcm93c2luZ0RiVXRpbFRlc3QsIFN0cmluZ1RvU0JGdWxsSGFz aEFuZFNCRnVsbEhhc2hUb1N0cmluZykgewotICAgLy8gMzEgY2hhcnMgcGx1cyB0aGUgbGFzdCBc MCBhcyBmdWxsX2hhc2guCi0gICBjb25zdCBzdGQ6OnN0cmluZyBoYXNoX2luID0gIjEyMzQ1Njc4 OTAyMjM0NTY3ODkwMzIzNDU2Nzg5MDEyIjsKLSAgIFNCRnVsbEhhc2ggaGFzaF9vdXQgPSBTdHJp bmdUb1NCRnVsbEhhc2goaGFzaF9pbik7Ci0tICBFWFBFQ1RfRVEoMHgzNDMzMzIzMVUsIGhhc2hf b3V0LnByZWZpeCk7Ci0rICBFWFBFQ1RfRVEoaHRvbmwoMHgzMTMyMzMzNFUpLCBoYXNoX291dC5w cmVmaXgpOwotICAgRVhQRUNUX0VRKDAsIG1lbWNtcChoYXNoX2luLmRhdGEoKSwgaGFzaF9vdXQu ZnVsbF9oYXNoLCBzaXplb2YoU0JGdWxsSGFzaCkpKTsKLSAKLSAgIHN0ZDo6c3RyaW5nIGhhc2hf ZmluYWwgPSBTQkZ1bGxIYXNoVG9TdHJpbmcoaGFzaF9vdXQpOwotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVfYnJvd3NpbmcvZGIvdjRfcmljZS5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9jb21wb25lbnRzL3NhZmVf YnJvd3NpbmcvZGIvdjRfcmljZS5jYwotQEAgLTgsNiArOCw3IEBACi0gI2luY2x1ZGUgImJhc2Uv bG9nZ2luZy5oIgotICNpbmNsdWRlICJiYXNlL251bWVyaWNzL3NhZmVfbWF0aC5oIgotICNpbmNs dWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5ncHJpbnRmLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5 dGVvcmRlci5oIgotICNpbmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKLSAjaW5jbHVkZSAi Y29tcG9uZW50cy9zYWZlX2Jyb3dzaW5nL2RiL3Y0X3JpY2UuaCIKLSAKLUBAIC0yMSwxMCArMjIs NiBAQCB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6OlJlcGVhdGVkRmllbGQ7Ci0gdXNpbmcgOjpn b29nbGU6OnByb3RvYnVmOjppbnQzMjsKLSB1c2luZyA6Omdvb2dsZTo6cHJvdG9idWY6OmludDY0 OwotIAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKSB8fCAoQVJDSF9DUFVf TElUVExFX0VORElBTiAhPSAxKQotLSNlcnJvciBUaGUgY29kZSBiZWxvdyBhc3N1bWVzIGxpdHRs ZS1lbmRpYW5uZXNzLgotLSNlbmRpZgotLQotIG5hbWVzcGFjZSBzYWZlX2Jyb3dzaW5nIHsKLSAK LSBuYW1lc3BhY2UgewotQEAgLTExNyw3ICsxMTQsNyBAQCBWNERlY29kZVJlc3VsdCBWNFJpY2VE ZWNvZGVyOjpEZWNvZGVQcmVmaXhlcyhjb25zdCBpbnQ2NCBmaXJzdF92YWx1ZSwKLSAgIG91dC0+ cmVzZXJ2ZSgobnVtX2VudHJpZXMgKyAxKSk7Ci0gCi0gICBiYXNlOjpDaGVja2VkTnVtZXJpYzx1 aW50MzJfdD4gbGFzdF92YWx1ZShmaXJzdF92YWx1ZSk7Ci0tICBvdXQtPnB1c2hfYmFjayhodG9u bChsYXN0X3ZhbHVlLlZhbHVlT3JEaWUoKSkpOwotKyAgb3V0LT5wdXNoX2JhY2soYmFzZTo6Qnl0 ZVN3YXAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSkpOwot IAotICAgaWYgKG51bV9lbnRyaWVzID4gMCkgewotICAgICBWNFJpY2VEZWNvZGVyIGRlY29kZXIo cmljZV9wYXJhbWV0ZXIsIG51bV9lbnRyaWVzLCBlbmNvZGVkX2RhdGEpOwotQEAgLTEzNiw3ICsx MzMsNyBAQCBWNERlY29kZVJlc3VsdCBWNFJpY2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcyhjb25z dCBpbnQ2NCBmaXJzdF92YWx1ZSwKLSAKLSAgICAgICAvLyBUaGlzIGZsaXBwaW5nIGlzIGRvbmUg c28gdGhhdCB0aGUgZGVjb2RlZCB1aW50MzIgaXMgaW50ZXJwcmV0ZWQKLSAgICAgICAvLyBjb3Jy ZWNseSBhcyBhIHN0cmluZyBvZiA0IGJ5dGVzLgotLSAgICAgIG91dC0+cHVzaF9iYWNrKGh0b25s KGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSk7Ci0rICAgICAgb3V0LT5wdXNoX2JhY2soYmFzZTo6 Qnl0ZVN3YXAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGxhc3RfdmFsdWUuVmFsdWVPckRpZSgpKSkp OwotICAgICB9Ci0gICB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9kYi92NF9yaWNlX3VuaXR0ZXN0LmNjCi0rKysgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2NvbXBvbmVudHMvc2FmZV9icm93c2luZy9k Yi92NF9yaWNlX3VuaXR0ZXN0LmNjCi1AQCAtNiw2ICs2LDEyIEBACi0gI2luY2x1ZGUgImJhc2Uv bG9nZ2luZy5oIgotICNpbmNsdWRlICJ0ZXN0aW5nL3BsYXRmb3JtX3Rlc3QuaCIKLSAKLSsjaWYg ZGVmaW5lZChPU19XSU4pCi0rI2luY2x1ZGUgPHdpbnNvY2syLmg+Ci0rI2VsaWYgZGVmaW5lZChP U19QT1NJWCkKLSsjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0rI2VuZGlmCi0rCi0gdXNpbmcgOjpn b29nbGU6OnByb3RvYnVmOjpSZXBlYXRlZEZpZWxkOwotIHVzaW5nIDo6Z29vZ2xlOjpwcm90b2J1 Zjo6aW50MzI7Ci0gCi1AQCAtMjQ3LDcgKzI1Myw3IEBAIFRFU1RfRihWNFJpY2VUZXN0LCBUZXN0 RGVjb2RlclByZWZpeGVzV2l0aE9uZVZhbHVlKSB7Ci0gICBFWFBFQ1RfRVEoREVDT0RFX1NVQ0NF U1MsCi0gICAgICAgICAgICAgVjRSaWNlRGVjb2Rlcjo6RGVjb2RlUHJlZml4ZXMoMHg2OUY2N0Y1 MXUsIDIsIDAsICIiLCAmb3V0KSk7Ci0gICBFWFBFQ1RfRVEoMXUsIG91dC5zaXplKCkpOwotLSAg RVhQRUNUX0VRKDB4NjlGNjdGNTF1LCBvdXRbMF0pOwotKyAgRVhQRUNUX0VRKGh0b25sKDB4NTE3 RkY2Njl1KSwgb3V0WzBdKTsKLSB9Ci0gCi0gVEVTVF9GKFY0UmljZVRlc3QsIFRlc3REZWNvZGVy UHJlZml4ZXNXaXRoTXVsdGlwbGVWYWx1ZXMpIHsKLUBAIC0yNTYsNyArMjYyLDcgQEAgVEVTVF9G KFY0UmljZVRlc3QsIFRlc3REZWNvZGVyUHJlZml4ZXNXaXRoTXVsdGlwbGVWYWx1ZXMpIHsKLSAg ICAgICAgICAgICBWNFJpY2VEZWNvZGVyOjpEZWNvZGVQcmVmaXhlcygKLSAgICAgICAgICAgICAg ICAgNSwgMjgsIDMsICJceGJmXHhhOFx4M2ZceGZiXHhmXHhmXHg1ZVx4MjdceGU2XHhjM1x4MWRc eGM2XHgzOCIsCi0gICAgICAgICAgICAgICAgICZvdXQpKTsKLS0gIHN0ZDo6dmVjdG9yPHVpbnQz Ml90PiBleHBlY3RlZCA9IHs1LCAweGFkOTM0YzBjdSwgMHg2ZmY2N2Y1NnUsIDB4ODEzMTZmY2V1 fTsKLSsgIHN0ZDo6dmVjdG9yPHVpbnQzMl90PiBleHBlY3RlZCA9IHtodG9ubCgweDA1MDAwMDAw KSwgaHRvbmwoMHgwYzRjOTNhZHUpLCBodG9ubCgweDU2N2ZmNjZmdSksIGh0b25sKDB4Y2U2ZjMx ODF1KX07Ci0gICBFWFBFQ1RfRVEoZXhwZWN0ZWQuc2l6ZSgpLCBvdXQuc2l6ZSgpKTsKLSAgIGZv ciAodW5zaWduZWQgaSA9IDA7IGkgPCBleHBlY3RlZC5zaXplKCk7IGkrKykgewotICAgICBFWFBF Q1RfRVEoZXhwZWN0ZWRbaV0sIG91dFtpXSk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2ZmbXBlZy9mZm1wZWdfY29tbW9uLmNjCi1AQCAt Njg2LDEwICs2ODYsNiBAQCBDaGFubmVsTGF5b3V0IENoYW5uZWxMYXlvdXRUb0Nocm9tZUNoYW5u ZWxMYXlvdXQoaW50NjRfdCBsYXlvdXQsIGludCBjaGFubmVscykgewotICAgfQotIH0KLSAKLS0j aWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLS0jZXJyb3IgVGhlIGNvZGUgYmVs b3cgYXNzdW1lcyBsaXR0bGUtZW5kaWFubmVzcy4KLS0jZW5kaWYKLS0KLSBWaWRlb1BpeGVsRm9y bWF0IEFWUGl4ZWxGb3JtYXRUb1ZpZGVvUGl4ZWxGb3JtYXQoQVZQaXhlbEZvcm1hdCBwaXhlbF9m b3JtYXQpIHsKLSAgIC8vIFRoZSBZVVZKIGFsdGVybmF0aXZlcyBhcmUgRkZtcGVnJ3MgKGRlcHJl Y2F0ZWQsIGJ1dCBzdGlsbCBpbiB1c2UpIHdheSB0bwotICAgLy8gc3BlY2lmeSBhIHBpeGVsIGZv cm1hdCBhbmQgZnVsbCByYW5nZSBjb2xvciBjb21iaW5hdGlvbi4KLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvZm9ybWF0cy9tcDQvYm94X2RlZmluaXRpb25zLmNj Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL21lZGlhL2Zvcm1hdHMvbXA0 L2JveF9kZWZpbml0aW9ucy5jYwotQEAgLTExMDcsMTUgKzExMDcsMTQgQEAgYm9vbCBPcHVzU3Bl Y2lmaWNCb3g6OlBhcnNlKEJveFJlYWRlciogcmVhZGVyKSB7Ci0gICBSQ0hFQ0socmVhZGVyLT5S ZWFkNCgmc2FtcGxlX3JhdGUpKTsKLSAgIFJDSEVDSyhyZWFkZXItPlJlYWQycygmZ2Fpbl9kYikp OwotIAotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVfRU5ESUFOKQotLSNlcnJvciBUaGUg Y29kZSBiZWxvdyBhc3N1bWVzIGxpdHRsZS1lbmRpYW5uZXNzLgotLSNlbmRpZgotLQotLSAgbWVt Y3B5KCZleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0tJUF9TQU1QTEVTX09GRlNFVF0sICZjb2Rl Y19kZWxheV9pbl9mcmFtZXMsCi0tICAgICAgICAgc2l6ZW9mKGNvZGVjX2RlbGF5X2luX2ZyYW1l cykpOwotLSAgbWVtY3B5KCZleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfU0FNUExFX1JBVEVfT0ZG U0VUXSwgJnNhbXBsZV9yYXRlLAotLSAgICAgICAgIHNpemVvZihzYW1wbGVfcmF0ZSkpOwotLSAg bWVtY3B5KCZleHRyYWRhdGFbT1BVU19FWFRSQURBVEFfR0FJTl9PRkZTRVRdLCAmZ2Fpbl9kYiwg c2l6ZW9mKGdhaW5fZGIpKTsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9TS0lQX1NBTVBM RVNfT0ZGU0VUXSA9IChjb2RlY19kZWxheV9pbl9mcmFtZXMgPj4gMCkgJiAweGZmOwotKyAgZXh0 cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NLSVBfU0FNUExFU19PRkZTRVQrMV0gPSAoY29kZWNfZGVs YXlfaW5fZnJhbWVzID4+IDgpICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9T QU1QTEVfUkFURV9PRkZTRVRdID0gKHNhbXBsZV9yYXRlID4+IDApICYgMHhmZjsKLSsgIGV4dHJh ZGF0YVtPUFVTX0VYVFJBREFUQV9TQU1QTEVfUkFURV9PRkZTRVQrMV0gPSAoc2FtcGxlX3JhdGUg Pj4gOCkgJiAweGZmOwotKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX1NBTVBMRV9SQVRFX09G RlNFVCsyXSA9IChzYW1wbGVfcmF0ZSA+PiAxNikgJiAweGZmOwotKyAgZXh0cmFkYXRhW09QVVNf RVhUUkFEQVRBX1NBTVBMRV9SQVRFX09GRlNFVCszXSA9IChzYW1wbGVfcmF0ZSA+PiAyNCkgJiAw eGZmOwotKyAgZXh0cmFkYXRhW09QVVNfRVhUUkFEQVRBX0dBSU5fT0ZGU0VUXSA9IChnYWluX2Ri ID4+IDApICYgMHhmZjsKLSsgIGV4dHJhZGF0YVtPUFVTX0VYVFJBREFUQV9HQUlOX09GRlNFVCsx XSA9IChnYWluX2RiID4+IDgpICYgMHhmZjsKLSAKLSAgIGNoYW5uZWxfY291bnQgPSBleHRyYWRh dGFbT1BVU19FWFRSQURBVEFfQ0hBTk5FTFNfT0ZGU0VUXTsKLSAKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vbWVkaWEvcmVuZGVyZXJzL3BhaW50X2NhbnZhc192aWRlb19y ZW5kZXJlci5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9tZWRpYS9y ZW5kZXJlcnMvcGFpbnRfY2FudmFzX3ZpZGVvX3JlbmRlcmVyLmNjCi1AQCAtMzEsOCArMzEsNyBA QAotIAotIC8vIFNraWEgaW50ZXJuYWwgZm9ybWF0IGRlcGVuZHMgb24gYSBwbGF0Zm9ybS4gT24g QW5kcm9pZCBpdCBpcyBBQkdSLCBvbiBvdGhlcnMKLSAvLyBpdCBpcyBBUkdCLgotLSNpZiBTS19C MzJfU0hJRlQgPT0gMCAmJiBTS19HMzJfU0hJRlQgPT0gOCAmJiBTS19SMzJfU0hJRlQgPT0gMTYg JiYgXAotLSAgICBTS19BMzJfU0hJRlQgPT0gMjQKLSsjaWYgU0tfUE1DT0xPUl9CWVRFX09SREVS KEIsRyxSLEEpCi0gI2RlZmluZSBMSUJZVVZfSTQyMF9UT19BUkdCIGxpYnl1djo6STQyMFRvQVJH QgotICNkZWZpbmUgTElCWVVWX0k0MjJfVE9fQVJHQiBsaWJ5dXY6Okk0MjJUb0FSR0IKLSAjZGVm aW5lIExJQllVVl9JNDQ0X1RPX0FSR0IgbGlieXV2OjpJNDQ0VG9BUkdCCi1AQCAtNDIsOCArNDEs NyBAQAotICNkZWZpbmUgTElCWVVWX0kwMTBfVE9fQVJHQiBsaWJ5dXY6OkkwMTBUb0FSR0IKLSAj ZGVmaW5lIExJQllVVl9IMDEwX1RPX0FSR0IgbGlieXV2OjpIMDEwVG9BUkdCCi0gI2RlZmluZSBM SUJZVVZfTlYxMl9UT19BUkdCIGxpYnl1djo6TlYxMlRvQVJHQgotLSNlbGlmIFNLX1IzMl9TSElG VCA9PSAwICYmIFNLX0czMl9TSElGVCA9PSA4ICYmIFNLX0IzMl9TSElGVCA9PSAxNiAmJiBcCi0t ICAgIFNLX0EzMl9TSElGVCA9PSAyNAotKyNlbGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihSLEcs QixBKQotICNkZWZpbmUgTElCWVVWX0k0MjBfVE9fQVJHQiBsaWJ5dXY6Okk0MjBUb0FCR1IKLSAj ZGVmaW5lIExJQllVVl9JNDIyX1RPX0FSR0IgbGlieXV2OjpJNDIyVG9BQkdSCi0gI2RlZmluZSBM SUJZVVZfSTQ0NF9UT19BUkdCIGxpYnl1djo6STQ0NFRvQUJHUgotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS9uZXQvY2VydC9jcmxfc2V0LmNjCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9jZXJ0L2NybF9zZXQuY2MKLUBAIC02LDYgKzYsNyBA QAotIAotICNpbmNsdWRlICJiYXNlL2Jhc2U2NC5oIgotICNpbmNsdWRlICJiYXNlL2pzb24vanNv bl9yZWFkZXIuaCIKLSsjaW5jbHVkZSAiYmFzZS9zeXNfYnl0ZW9yZGVyLmgiCi0gI2luY2x1ZGUg ImJhc2UvdGltZS90aW1lLmgiCi0gI2luY2x1ZGUgImJhc2UvdHJhY2VfZXZlbnQvdHJhY2VfZXZl bnQuaCIKLSAjaW5jbHVkZSAiYmFzZS92YWx1ZXMuaCIKLUBAIC00NCw5ICs0NSw5IEBAIGJhc2U6 OkRpY3Rpb25hcnlWYWx1ZSogUmVhZEhlYWRlcihiYXNlOjpTdHJpbmdQaWVjZSogZGF0YSkgewot ICAgdWludDE2X3QgaGVhZGVyX2xlbjsKLSAgIGlmIChkYXRhLT5zaXplKCkgPCBzaXplb2YoaGVh ZGVyX2xlbikpCi0gICAgIHJldHVybiBudWxscHRyOwotLSAgLy8gQXNzdW1lcyBsaXR0bGUtZW5k aWFuLgotICAgbWVtY3B5KCZoZWFkZXJfbGVuLCBkYXRhLT5kYXRhKCksIHNpemVvZihoZWFkZXJf bGVuKSk7Ci0gICBkYXRhLT5yZW1vdmVfcHJlZml4KHNpemVvZihoZWFkZXJfbGVuKSk7Ci0rICBo ZWFkZXJfbGVuID0gYmFzZTo6Qnl0ZVN3YXBUb0xFMTYoaGVhZGVyX2xlbik7Ci0gCi0gICBpZiAo ZGF0YS0+c2l6ZSgpIDwgaGVhZGVyX2xlbikKLSAgICAgcmV0dXJuIG51bGxwdHI7Ci1AQCAtNzks OSArODAsOSBAQCBib29sIFJlYWRDUkwoYmFzZTo6U3RyaW5nUGllY2UqIGRhdGEsCi0gICB1aW50 MzJfdCBudW1fc2VyaWFsczsKLSAgIGlmIChkYXRhLT5zaXplKCkgPCBzaXplb2YobnVtX3Nlcmlh bHMpKQotICAgICByZXR1cm4gZmFsc2U7Ci0tICAvLyBBc3N1bWVzIGxpdHRsZSBlbmRpYW4uCi0g ICBtZW1jcHkoJm51bV9zZXJpYWxzLCBkYXRhLT5kYXRhKCksIHNpemVvZihudW1fc2VyaWFscykp OwotICAgZGF0YS0+cmVtb3ZlX3ByZWZpeChzaXplb2YobnVtX3NlcmlhbHMpKTsKLSsgIG51bV9z ZXJpYWxzID0gYmFzZTo6Qnl0ZVN3YXBUb0xFMzIobnVtX3NlcmlhbHMpOwotIAotICAgaWYgKG51 bV9zZXJpYWxzID4gMzIgKiAxMDI0ICogMTAyNCkgIC8vIFNhbml0eSBjaGVjay4KLSAgICAgcmV0 dXJuIGZhbHNlOwotQEAgLTE5MiwxNSArMTkzLDYgQEAgQ1JMU2V0Ojp+Q1JMU2V0KCkgPSBkZWZh dWx0OwotIC8vIHN0YXRpYwotIGJvb2wgQ1JMU2V0OjpQYXJzZShiYXNlOjpTdHJpbmdQaWVjZSBk YXRhLCBzY29wZWRfcmVmcHRyPENSTFNldD4qIG91dF9jcmxfc2V0KSB7Ci0gICBUUkFDRV9FVkVO VDAoTmV0VHJhY2luZ0NhdGVnb3J5KCksICJDUkxTZXQ6OlBhcnNlIik7Ci0tLy8gT3RoZXIgcGFy dHMgb2YgQ2hyb21lIGFzc3VtZSB0aGF0IHdlJ3JlIGxpdHRsZSBlbmRpYW4sIHNvIHdlIGRvbid0 IGxvc2UKLS0vLyBhbnl0aGluZyBieSBkb2luZyB0aGlzLgotLSNpZiBkZWZpbmVkKF9fQllURV9P UkRFUikKLS0gIC8vIExpbnV4IGNoZWNrCi0tICBzdGF0aWNfYXNzZXJ0KF9fQllURV9PUkRFUiA9 PSBfX0xJVFRMRV9FTkRJQU4sICJhc3N1bWVzIGxpdHRsZSBlbmRpYW4iKTsKLS0jZWxpZiBkZWZp bmVkKF9fQklHX0VORElBTl9fKQotLS8vIE1hYyBjaGVjawotLSNlcnJvciBhc3N1bWVzIGxpdHRs ZSBlbmRpYW4KLS0jZW5kaWYKLSAKLSAgIHN0ZDo6dW5pcXVlX3B0cjxiYXNlOjpEaWN0aW9uYXJ5 VmFsdWU+IGhlYWRlcl9kaWN0KFJlYWRIZWFkZXIoJmRhdGEpKTsKLSAgIGlmICghaGVhZGVyX2Rp Y3QuZ2V0KCkpCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gv bGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCi1AQCAt Mzc3LDYgKzM3Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7Ci0gCi0g I2RlZmluZSBTRUNDT01QX05SX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRh LCBucikpCi0gI2RlZmluZSBTRUNDT01QX0FSQ0hfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9z ZWNjb21wX2RhdGEsIGFyY2gpKQotKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRM RV9FTkRJQU5fXwotICNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKLSAgIChvZmZzZXRvZihz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgNCkKLSAjZGVm aW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCi1AQCAtMzg1LDYgKzM4NiwxNiBAQCB0eXBlZGVmIHN0 cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0OwotICAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2Nv bXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDQpCi0gI2RlZmluZSBTRUNDT01QX0FSR19MU0Jf SURYKG5yKSBcCi0gICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBhcmdzKSAr IDggKiAobnIpICsgMCkKLSsjZWxzZQotKyNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKLSsg IChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIp ICsgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCi0rICAob2Zmc2V0b2Yoc3RydWN0 IGFyY2hfc2VjY29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDQpCi0rI2RlZmluZSBT RUNDT01QX0FSR19NU0JfSURYKG5yKSBcCi0rICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29t cF9kYXRhLCBhcmdzKSArIDggKiAobnIpICsgMCkKLSsjZGVmaW5lIFNFQ0NPTVBfQVJHX0xTQl9J RFgobnIpIFwKLSsgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsg OCAqIChucikgKyA0KQotKyNlbmRpZgotIAotICNkZWZpbmUgU0VDQ09NUF9QVF9SRVNVTFQoX3Jl Z3MpIChfcmVncykuZ3ByWzNdCi0gI2RlZmluZSBTRUNDT01QX1BUX1NZU0NBTEwoX3JlZ3MpIChf cmVncykuZ3ByWzBdCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NraWEv Y29uZmlnL1NrVXNlckNvbmZpZy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3NraWEvY29uZmlnL1NrVXNlckNvbmZpZy5oCi1AQCAtOTAsMTEgKzkwLDE4IEBAIFNLX0FQ SSB2b2lkIFNrRGVidWdmX0ZpbGVMaW5lKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBib29s IGZhdGFsLAotICAgICBfX0ZJTEVfXywgX19MSU5FX18sICNjb25kKTsgfSB9IHdoaWxlIChmYWxz ZSkKLSAKLSAjaWYgIWRlZmluZWQoQU5EUk9JRCkgICAvLyBPbiBBbmRyb2lkLCB3ZSB1c2UgdGhl IHNraWEgZGVmYXVsdCBzZXR0aW5ncy4KLSsjaWYgZGVmaW5lZChTS19DUFVfQkVORElBTikKLSsj ZGVmaW5lIFNLX0EzMl9TSElGVCAgICAwCi0rI2RlZmluZSBTS19SMzJfU0hJRlQgICAgOAotKyNk ZWZpbmUgU0tfRzMyX1NISUZUICAgIDE2Ci0rI2RlZmluZSBTS19CMzJfU0hJRlQgICAgMjQKLSsj ZWxzZQotICNkZWZpbmUgU0tfQTMyX1NISUZUICAgIDI0Ci0gI2RlZmluZSBTS19SMzJfU0hJRlQg ICAgMTYKLSAjZGVmaW5lIFNLX0czMl9TSElGVCAgICA4Ci0gI2RlZmluZSBTS19CMzJfU0hJRlQg ICAgMAotICNlbmRpZgotKyNlbmRpZgotIAotICNpZiBkZWZpbmVkKFNLX0JVSUxEX0ZPUl9NQUMp Ci0gCi1AQCAtMTA4LDE3ICsxMTUsNiBAQCBTS19BUEkgdm9pZCBTa0RlYnVnZl9GaWxlTGluZShj b25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgYm9vbCBmYXRhbCwKLSAvLyB3ZSBzaG91bGQgcmV2 aXNpdCB0aGlzIGNob2ljZS4uLgotICNkZWZpbmUgU0tfVVNFX0ZSRUVUWVBFX0VNQk9MREVOCi0g Ci0tI2lmIGRlZmluZWQoU0tfQlVJTERfRk9SX1VOSVgpICYmIGRlZmluZWQoU0tfQ1BVX0JFTkRJ QU4pCi0tLy8gQWJvdmUgd2Ugc2V0IHRoZSBvcmRlciBmb3IgQVJHQiBjaGFubmVscyBpbiByZWdp c3RlcnMuIEkgc3VzcGVjdCB0aGF0LCBvbgotLS8vIGJpZyBlbmRpYW4gbWFjaGluZXMsIHlvdSBj YW4ga2VlcCB0aGlzIHRoZSBzYW1lIGFuZCBldmVyeXRoaW5nIHdpbGwgd29yay4KLS0vLyBUaGUg aW4tbWVtb3J5IG9yZGVyIHdpbGwgYmUgZGlmZmVyZW50LCBvZiBjb3Vyc2UsIGJ1dCBhcyBsb25n IGFzIGV2ZXJ5dGhpbmcKLS0vLyBpcyByZWFkaW5nIG1lbW9yeSBhcyB3b3JkcyByYXRoZXIgdGhh biBieXRlcywgaXQgd2lsbCBhbGwgd29yay4gSG93ZXZlciwgaWYKLS0vLyB5b3UgZmluZCB0aGF0 IGNvbG91cnMgYXJlIG1lc3NlZCB1cCBJIHRob3VnaHQgdGhhdCBJIHdvdWxkIGxlYXZlIGEgaGVs cGZ1bAotLS8vIGxvY2F0b3IgZm9yIHlvdS4gQWxzbyBzZWUgdGhlIGNvbW1lbnRzIGluCi0tLy8g YmFzZS9nZngvYml0bWFwX3BsYXRmb3JtX2RldmljZV9saW51eC5oCi0tI2Vycm9yIFJlYWQgdGhl IGNvbW1lbnQgYXQgdGhpcyBsb2NhdGlvbgotLSNlbmRpZgotLQotICNlbmRpZgotIAotIC8vIFRo ZSBkZWZhdWx0IGNyYXNoIG1hY3JvIHdyaXRlcyB0byBiYWRiZWVmIHdoaWNoIGNhbiBjYXVzZSBz b21lIHN0cmFuZ2UKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2tpYS9l eHQvaW1hZ2Vfb3BlcmF0aW9uc191bml0dGVzdC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9za2lhL2V4dC9pbWFnZV9vcGVyYXRpb25zX3VuaXR0ZXN0LmNjCi1AQCAt MTgsOSArMTgsMTEgQEAKLSAjaW5jbHVkZSAic2tpYS9leHQvaW1hZ2Vfb3BlcmF0aW9ucy5oIgot ICNpbmNsdWRlICJ0ZXN0aW5nL2d0ZXN0L2luY2x1ZGUvZ3Rlc3QvZ3Rlc3QuaCIKLSAjaW5jbHVk ZSAidGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tCaXRtYXAuaCIKLSsjaW5jbHVkZSAi dGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvclByaXYuaCIKLSAjaW5jbHVkZSAi dGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tDb2xvclNwYWNlLmgiCi0gI2luY2x1ZGUg InRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrSW1hZ2VJbmZvLmgiCi0gI2luY2x1ZGUg InRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrUmVjdC5oIgotKyNpbmNsdWRlICJ0aGly ZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1VuUHJlTXVsdGlwbHkuaCIKLSAjaW5jbHVkZSAi dWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5oIgotICNpbmNsdWRlICJ1aS9nZngvZ2VvbWV0cnkvc2l6 ZS5oIgotIAotQEAgLTE1MSw3ICsxNTMsNyBAQCB2b2lkIERyYXdDaGVja2VyVG9CaXRtYXAoaW50 IHcsIGludCBoLAotIAotICAgICAgIGJvb2wgdXNlX2NvbG9yMiA9ICh4X2JpdCAhPSB5X2JpdCk7 ICAvLyB4b3IKLSAKLS0gICAgICAqYm1wLT5nZXRBZGRyMzIoeCwgeSkgPSAodXNlX2NvbG9yMiA/ IGNvbG9yMiA6IGNvbG9yMSk7Ci0rICAgICAgKmJtcC0+Z2V0QWRkcjMyKHgsIHkpID0gU2tQcmVN dWx0aXBseUNvbG9yKHVzZV9jb2xvcjIgPyBjb2xvcjIgOiBjb2xvcjEpOwotICAgICB9Ci0gICB9 Ci0gfQotQEAgLTI3Myw3ICsyNzUsNyBAQCB2b2lkIENoZWNrUmVzaXplTWV0aG9kU2hvdWxkQXZl cmFnZUdyaWQoCi0gICAgICAgICBzdGQ6Om1heCh0ZXN0ZWRfcGl4ZWwubWF4X2NvbG9yX2Rpc3Rh bmNlLAotICAgICAgICAgICAgICAgICAgdGVzdGVkX21ldGhvZC5tYXhfY29sb3JfZGlzdGFuY2Vf b3ZlcnJpZGUpOwotIAotLSAgICBjb25zdCBTa0NvbG9yIGFjdHVhbF9jb2xvciA9ICpkZXN0Lmdl dEFkZHIzMih4LCB5KTsKLSsgICAgY29uc3QgU2tDb2xvciBhY3R1YWxfY29sb3IgPSBTa1VuUHJl TXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKCpkZXN0LmdldEFkZHIzMih4LCB5KSk7Ci0gCi0gICAg IC8vIENoZWNrIHRoYXQgdGhlIHBpeGVscyBhd2F5IGZyb20gdGhlIGJvcmRlciByZWdpb24gYXJl IHZlcnkgY2xvc2UKLSAgICAgLy8gdG8gdGhlIGV4cGVjdGVkIGF2ZXJhZ2UgY29sb3IKLUBAIC01 MjgsNyArNTMwLDcgQEAgVEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxlVXApIHsKLSAgIGZvciAo aW50IHNyY195ID0gMDsgc3JjX3kgPCBzcmNfaDsgKytzcmNfeSkgewotICAgICBmb3IgKGludCBz cmNfeCA9IDA7IHNyY194IDwgc3JjX3c7ICsrc3JjX3gpIHsKLSAgICAgICAqc3JjLmdldEFkZHIz MihzcmNfeCwgc3JjX3kpID0KLS0gICAgICAgICAgU2tDb2xvclNldEFSR0IoMjU1LCAxMCArIHNy Y194ICogMTAwLCAxMCArIHNyY195ICogMTAwLCAwKTsKLSsgICAgICAgICAgU2tQYWNrQVJHQjMy KDI1NSwgMTAgKyBzcmNfeCAqIDEwMCwgMTAgKyBzcmNfeSAqIDEwMCwgMCk7Ci0gICAgIH0KLSAg IH0KLSAKLUBAIC01NTIsNyArNTU0LDcgQEAgVEVTVChJbWFnZU9wZXJhdGlvbnMsIFNjYWxlVXAp IHsKLSAgICAgICAgICAgICAgIGxhbmN6b3MzKHNyY194ICsgMC41IC0gZHN0X3hfaW5fc3JjKSAq Ci0gICAgICAgICAgICAgICBsYW5jem9zMyhzcmNfeSArIDAuNSAtIGRzdF95X2luX3NyYyk7Ci0g ICAgICAgICAgIHN1bSArPSBjb2VmZjsKLS0gICAgICAgICAgU2tDb2xvciB0bXAgPSAqc3JjLmdl dEFkZHIzMihzcmNfeCwgc3JjX3kpOwotKyAgICAgICAgICBTa0NvbG9yIHRtcCA9IFNrVW5QcmVN dWx0aXBseTo6UE1Db2xvclRvQ29sb3IoKnNyYy5nZXRBZGRyMzIoc3JjX3gsIHNyY195KSk7Ci0g ICAgICAgICAgIGEgKz0gY29lZmYgKiBTa0NvbG9yR2V0QSh0bXApOwotICAgICAgICAgICByICs9 IGNvZWZmICogU2tDb2xvckdldFIodG1wKTsKLSAgICAgICAgICAgZyArPSBjb2VmZiAqIFNrQ29s b3JHZXRHKHRtcCk7Ci1AQCAtNTcxLDcgKzU3Myw3IEBAIFRFU1QoSW1hZ2VPcGVyYXRpb25zLCBT Y2FsZVVwKSB7Ci0gICAgICAgaWYgKHIgPiAyNTUuMGYpIHIgPSAyNTUuMGY7Ci0gICAgICAgaWYg KGcgPiAyNTUuMGYpIGcgPSAyNTUuMGY7Ci0gICAgICAgaWYgKGIgPiAyNTUuMGYpIGIgPSAyNTUu MGY7Ci0tICAgICAgU2tDb2xvciBkc3RfY29sb3IgPSAqZHN0LmdldEFkZHIzMihkc3RfeCwgZHN0 X3kpOwotKyAgICAgIFNrQ29sb3IgZHN0X2NvbG9yID0gU2tVblByZU11bHRpcGx5OjpQTUNvbG9y VG9Db2xvcigqZHN0LmdldEFkZHIzMihkc3RfeCwgZHN0X3kpKTsKLSAgICAgICBFWFBFQ1RfTEUo ZmFicyhTa0NvbG9yR2V0QShkc3RfY29sb3IpIC0gYSksIDEuNWYpOwotICAgICAgIEVYUEVDVF9M RShmYWJzKFNrQ29sb3JHZXRSKGRzdF9jb2xvcikgLSByKSwgMS41Zik7Ci0gICAgICAgRVhQRUNU X0xFKGZhYnMoU2tDb2xvckdldEcoZHN0X2NvbG9yKSAtIGcpLCAxLjVmKTsKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vZ3JhcGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb24uY2MKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vZ3JhcGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb24uY2MKLUBAIC00NTYsOCAr NDU2LDggQEAgdm9pZCBVbnBhY2s8V2ViR0xJbWFnZUNvbnZlcnNpb246OmtEYXRhRm9ybWF0QkdS QTgsIHVpbnQ4X3QsIHVpbnQ4X3Q+KAotICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHBpeGVs c19wZXJfcm93OyArK2kpIHsKLSAgICAgdWludDMyX3QgYmdyYSA9IHNvdXJjZTMyW2ldOwotICNp ZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4pCi0tICAgIHVpbnQzMl90IGJyTWFzayA9IDB4 ZmYwMGZmMDA7Ci0tICAgIHVpbnQzMl90IGdhTWFzayA9IDB4MDBmZjAwZmY7Ci0rICAgIHVpbnQz Ml90IGJyX21hc2sgPSAweGZmMDBmZjAwOwotKyAgICB1aW50MzJfdCBnYV9tYXNrID0gMHgwMGZm MDBmZjsKLSAjZWxzZQotICAgICB1aW50MzJfdCBicl9tYXNrID0gMHgwMGZmMDBmZjsKLSAgICAg dWludDMyX3QgZ2FfbWFzayA9IDB4ZmYwMGZmMDA7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNz L2dwdS93ZWJnbF9pbWFnZV9jb252ZXJzaW9uX3Rlc3QuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3Jh cGhpY3MvZ3B1L3dlYmdsX2ltYWdlX2NvbnZlcnNpb25fdGVzdC5jYwotQEAgLTc2LDkgKzc2LDkg QEAgVEVTVF9GKFdlYkdMSW1hZ2VDb252ZXJzaW9uVGVzdCwgY29udmVydEJHUkE4dG9SR0JBOCkg ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzNDU2Nzg4OCwgMHgxMjM0NTY3OCwg MHgzNDU2Nzg4OCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTIzNDU2NzgsIDB4 MzQ1Njc4ODgsIDB4MTIzNDU2Nzh9OwotICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0JJR19FTkRJQU4p Ci0tICB1aW50MzJfdCBleHBlY3RlZERhdGFbOV0gPSB7MHg1NjM0MTI3OCwgMHg3ODU2MzQ4OCwg MHg1NjM0MTI3OCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDc4NTYzNDg4LCAw eDU2MzQxMjc4LCAweDc4NTYzNDg4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 NTYzNDEyNzgsIDB4Nzg1NjM0ODgsIDB4NTYzNDEyNzh9OwotKyAgdWludDMyX3QgZXhwZWN0ZWRf ZGF0YVs5XSA9IHsweDU2MzQxMjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4LAotKwkJCSAgICAg ICAweDc4NTYzNDg4LCAweDU2MzQxMjc4LCAweDc4NTYzNDg4LAotKwkJCSAgICAgICAweDU2MzQx Mjc4LCAweDc4NTYzNDg4LCAweDU2MzQxMjc4fTsKLSAjZWxzZQotICAgdWludDMyX3QgZXhwZWN0 ZWRfZGF0YVs5XSA9IHsweDEyNzg1NjM0LCAweDM0ODg3ODU2LCAweDEyNzg1NjM0LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAweDM0ODg3ODU2LCAweDEyNzg1NjM0LCAweDM0ODg3 ODU2LAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9ncmFwaGljc19jb250ZXh0X3Rlc3QuY2MK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvZ3JhcGhpY3NfY29udGV4dF90ZXN0LmNjCi1AQCAt NTIsNyArNTIsNyBAQCBuYW1lc3BhY2UgYmxpbmsgewotICAgeyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICBmb3IgKGlu dCB5ID0gb3BhcXVlUmVjdC5ZKCk7IHkgPCBvcGFxdWVSZWN0Lk1heFkoKTsgKyt5KSAgICAgXAot ICAgICAgIGZvciAoaW50IHggPSBvcGFxdWVSZWN0LlgoKTsgeCA8IG9wYXF1ZVJlY3QuTWF4WCgp OyArK3gpIHsgXAotLSAgICAgICAgaW50IGFscGhhID0gKmJpdG1hcC5nZXRBZGRyMzIoeCwgeSkg Pj4gMjQ7ICAgICAgICAgICAgICAgXAotKyAgICAgICAgaW50IGFscGhhID0gU2tHZXRQYWNrZWRB MzIoKmJpdG1hcC5nZXRBZGRyMzIoeCwgeSkpOwkgXAotICAgICAgICAgRVhQRUNUX0VRKDI1NSwg YWxwaGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgIH0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAot ICAgfQotQEAgLTYxLDEyICs2MSwxNiBAQCBuYW1lc3BhY2UgYmxpbmsgewotICAgeyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg ICBmb3IgKGludCB5ID0gMDsgeSA8IGJpdG1hcC5oZWlnaHQoKTsgKyt5KSAgICAgICAgICAgICAg ICAgXAotICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgYml0bWFwLndpZHRoKCk7ICsreCkgeyAg ICAgICAgICAgICAgXAotLSAgICAgICAgaW50IGFscGhhID0gKmJpdG1hcC5nZXRBZGRyMzIoeCwg eSkgPj4gMjQ7ICAgICAgICAgICAgXAotKyAgICAgICAgaW50IGFscGhhID0gU2tHZXRQYWNrZWRB MzIoKmJpdG1hcC5nZXRBZGRyMzIoeCwgeSkpOyAgXAotICAgICAgICAgYm9vbCBvcGFxdWUgPSBv cGFxdWVSZWN0LkNvbnRhaW5zKHgsIHkpOyAgICAgICAgICAgICAgXAotICAgICAgICAgRVhQRUNU X0VRKG9wYXF1ZSwgYWxwaGEgPT0gMjU1KTsgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAg IH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAotICAgfQotIAotK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgUGFja0FSR0IzMih1aW50MzJfdCBh cmdiKSB7Ci0rICByZXR1cm4gU2tQYWNrQVJHQjMyTm9DaGVjayhhcmdiPj4yNCwgKGFyZ2I8PDgp Pj4yNCwgKGFyZ2I8PDE2KT4+MjQsIChhcmdiPDwyNCk+PjI0KTsKLSt9Ci0rCi0gVEVTVChHcmFw aGljc0NvbnRleHRUZXN0LCBSZWNvcmRpbmcpIHsKLSAgIFNrQml0bWFwIGJpdG1hcDsKLSAgIGJp dG1hcC5hbGxvY04zMlBpeGVscygxMDAsIDEwMCk7Ci1AQCAtMTg0LDEwICsxODgsMTAgQEAgY2xh c3MgR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVz dCB7Ci0gVEVTVF9GKEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9Ob0hp Z2hDb250cmFzdCkgewotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgpOwotIAotLSAgRVhQRUNUX0VR KDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhm ZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZmYw MDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmY4MDgwODAs ICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZm MDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJH QjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotKyAgRVhQRUNUX0VR KFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0rICBF WFBFQ1RfRVEoUGFja0FSR0IzMigweGZmODA4MDgwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDAp KTsKLSB9Ci0gCi0gLy8gVE9ETyhjcmJ1Zy5jb20vODUwNzgyKTogUmVlbmFibGUgdGhpcy4KLUBA IC0yMDUsMTAgKzIwOSwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFzdFRl c3QsIE1BWUJFX0hpZ2hDb250cmFzdE9mZikgewotIAotICAgRHJhd0NvbG9yc1RvQ29udGV4dCgp OwotIAotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7 Ci0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDEsIDApKTsKLS0g IEVYUEVDVF9FUSgweGZmZmYwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotLSAgRVhQ RUNUX0VRKDB4ZmY4MDgwODAsICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0rICBFWFBFQ1Rf RVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLSsg IEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwg MCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmMDAwMCksICpiaXRtYXBfLmdldEFk ZHIzMigyLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmODA4MDgwKSwgKmJpdG1h cF8uZ2V0QWRkcjMyKDMsIDApKTsKLSB9Ci0gCi0gLy8gU2ltcGxlIGludmVydCBmb3IgdGVzdGlu Zy4gRWFjaCBjb2xvciBjb21wb25lbnQgfGN8Ci1AQCAtMjI4LDEwICsyMzIsMTAgQEAgVEVTVF9G KEdyYXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9TaW1wbGVJbnZlcnRGb3JU ZXN0aW5nKSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEo MHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZm MDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMGZm ZmYsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZjdmN2Y3Ziwg KmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZm ZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdC MzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEo UGFja0FSR0IzMigweGZmMDBmZmZmKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVY UEVDVF9FUShQYWNrQVJHQjMyKDB4ZmY3ZjdmN2YpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkp OwotIH0KLSAKLSAvLyBJbnZlcnQgYnJpZ2h0bmVzcyAod2l0aCBnYW1tYSBjb3JyZWN0aW9uKS4K LUBAIC0yNTAsMTAgKzI1NCwxMCBAQCBURVNUX0YoR3JhcGhpY3NDb250ZXh0SGlnaENvbnN0cmFz dFRlc3QsIE1BWUJFX0ludmVydEJyaWdodG5lc3MpIHsKLSAKLSAgIERyYXdDb2xvcnNUb0NvbnRl eHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwg MCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7 Ci0tICBFWFBFQ1RfRVEoMHhmZjAwZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLS0g IEVYUEVDVF9FUSgweGZmZGRkZGRkLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotKyAgRVhQ RUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFkZHIzMigwLCAwKSk7 Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1hcF8uZ2V0QWRkcjMy KDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmYwMGZmZmYpLCAqYml0bWFwXy5n ZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmRkZGRkZCksICpi aXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIEludmVydCBsaWdodG5lc3MgKGlu IEhTTCBzcGFjZSkuCi1AQCAtMjcyLDEwICsyNzYsMTAgQEAgVEVTVF9GKEdyYXBoaWNzQ29udGV4 dEhpZ2hDb25zdHJhc3RUZXN0LCBNQVlCRV9JbnZlcnRMaWdodG5lc3MpIHsKLSAKLSAgIERyYXdD b2xvcnNUb0NvbnRleHQoKTsKLSAKLS0gIEVYUEVDVF9FUSgweGZmZmZmZmZmLCAqYml0bWFwXy5n ZXRBZGRyMzIoMCwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmYwMDAwMDAsICpiaXRtYXBfLmdldEFk ZHIzMigxLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmZmMDAwMCwgKmJpdG1hcF8uZ2V0QWRkcjMy KDIsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmZGRkZGRkLCAqYml0bWFwXy5nZXRBZGRyMzIoMywg MCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZmZmZmZmZiksICpiaXRtYXBfLmdldEFk ZHIzMigwLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmMDAwMDAwKSwgKmJpdG1h cF8uZ2V0QWRkcjMyKDEsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZjAwMDAp LCAqYml0bWFwXy5nZXRBZGRyMzIoMiwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhm ZmRkZGRkZCksICpiaXRtYXBfLmdldEFkZHIzMigzLCAwKSk7Ci0gfQotIAotIC8vIEludmVydCBs aWdodG5lc3MgcGx1cyBncmF5c2NhbGUuCi1AQCAtMjg4LDEwICsyOTIsMTAgQEAgVEVTVF9GKEdy YXBoaWNzQ29udGV4dEhpZ2hDb25zdHJhc3RUZXN0LCBJbnZlcnRMaWdodG5lc3NQbHVzR3JheXNj YWxlKSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9Db250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhm ZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMyKDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDAw MDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwgMCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZlMmUyZTIs ICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7Ci0tICBFWFBFQ1RfRVEoMHhmZmRkZGRkZCwgKmJp dG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZm ZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwgMCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIo MHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFkZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFj a0FSR0IzMigweGZmZTJlMmUyKSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVD VF9FUShQYWNrQVJHQjMyKDB4ZmZkZGRkZGQpLCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwot IH0KLSAKLSAvLyBUT0RPKGNyYnVnLmNvbS84NTA3ODIpOiBSZWVuYWJsZSB0aGlzLgotQEAgLTMw OSwxMCArMzEzLDEwIEBAIFRFU1RfRihHcmFwaGljc0NvbnRleHRIaWdoQ29uc3RyYXN0VGVzdCwg TUFZQkVfSW52ZXJ0TGlnaHRuZXNzUGx1c0NvbnRyYXN0KSB7Ci0gCi0gICBEcmF3Q29sb3JzVG9D b250ZXh0KCk7Ci0gCi0tICBFWFBFQ1RfRVEoMHhmZmZmZmZmZiwgKmJpdG1hcF8uZ2V0QWRkcjMy KDAsIDApKTsKLS0gIEVYUEVDVF9FUSgweGZmMDAwMDAwLCAqYml0bWFwXy5nZXRBZGRyMzIoMSwg MCkpOwotLSAgRVhQRUNUX0VRKDB4ZmZmZjAwMDAsICpiaXRtYXBfLmdldEFkZHIzMigyLCAwKSk7 Ci0tICBFWFBFQ1RfRVEoMHhmZmVlZWVlZSwgKmJpdG1hcF8uZ2V0QWRkcjMyKDMsIDApKTsKLSsg IEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZmZmZmZmYpLCAqYml0bWFwXy5nZXRBZGRyMzIoMCwg MCkpOwotKyAgRVhQRUNUX0VRKFBhY2tBUkdCMzIoMHhmZjAwMDAwMCksICpiaXRtYXBfLmdldEFk ZHIzMigxLCAwKSk7Ci0rICBFWFBFQ1RfRVEoUGFja0FSR0IzMigweGZmZmYwMDAwKSwgKmJpdG1h cF8uZ2V0QWRkcjMyKDIsIDApKTsKLSsgIEVYUEVDVF9FUShQYWNrQVJHQjMyKDB4ZmZlZWVlZWUp LCAqYml0bWFwXy5nZXRBZGRyMzIoMywgMCkpOwotIH0KLSAKLSB9ICAvLyBuYW1lc3BhY2UgYmxp bmsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvaGlnaGNvbnRyYXN0L2hpZ2hjb250cmFzdF9j bGFzc2lmaWVyLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL2hpZ2hjb250cmFzdC9oaWdo Y29udHJhc3RfY2xhc3NpZmllci5jYwotQEAgLTEwNjAsNTUgKzEwNjAsNDcgQEAgdm9pZCBEZXF1 YW50aXplTWluRmlyc3QoY29uc3QgaW50MzJfdCByYW5rLAotIAotIC8vIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCi0gLy8gQ09OU1RBTlRTCi0tLy8gTm90ZSB0aGF0IGZvciBub3csIGVuZGlhbm5lc3Mg b2YgdGhlIHRhcmdldCBtYWNoaW5lIG5lZWRzIHRvIG1hdGNoIHRoYXQgb2YKLS0vLyB0aGUgb25l IHRyYWluaW5nIHdhcyBwZXJmb3JtZWQgb24uCi0gLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBj b25zdCBpbnQzMl90IGRubl9oaWRkZW5sYXllcl8wX3dlaWdodHNfcGFydF8wX3NoYXBlWzJdID0g ezQsIDEwfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzE2MF07Ci0gICBmbG9h dCB2YWx1ZXNbNDBdOwotIH0gZG5uX2hpZGRlbmxheWVyXzBfd2VpZ2h0c19wYXJ0XzAgPSB7ewot LSAgICAweGJjLCAweDIyLCAweDBhLCAweGJmLCAweGI0LCAweDQ2LCAweDhjLCAweDNmLCAweGJh LCAweDMxLCAweDM0LCAweGJlLAotLSAgICAweDRjLCAweDY1LCAweGRiLCAweGJlLCAweGYwLCAw eDU0LCAweDVlLCAweGJlLCAweGMxLCAweDVkLCAweGIzLCAweDNmLAotLSAgICAweGY0LCAweGU2 LCAweDE1LCAweGJmLCAweDA1LCAweGM2LCAweDM0LCAweGJmLCAweGMwLCAweDM3LCAweDdlLCAw eGJkLAotLSAgICAweDZjLCAweDM1LCAweDBiLCAweGJmLCAweGNhLCAweDUzLCAweDI2LCAweGJm LCAweDU4LCAweGI0LCAweDg3LCAweDNmLAotLSAgICAweDM3LCAweGVlLCAweDM5LCAweGJmLCAw eGRhLCAweGZhLCAweGY5LCAweGJlLCAweDk3LCAweGMxLCAweDA2LCAweGJmLAotLSAgICAweGY5 LCAweDRlLCAweDgxLCAweDNmLCAweGIyLCAweDQ0LCAweDg1LCAweGJmLCAweDdmLCAweDk4LCAw eDdjLCAweDNkLAotLSAgICAweDE1LCAweDI2LCAweGJjLCAweGJlLCAweDVjLCAweDQ4LCAweDA1 LCAweDNmLCAweGM4LCAweGFhLCAweGExLCAweGJkLAotLSAgICAweDM1LCAweGIzLCAweDQzLCAw eGJlLCAweGViLCAweDQ2LCAweDkxLCAweDNmLCAweDgwLCAweDcxLCAweGUzLCAweDNjLAotLSAg ICAweGQxLCAweDk4LCAweDc5LCAweDNmLCAweDNjLCAweGQwLCAweDBkLCAweGJmLCAweDFlLCAw eDAyLCAweGQzLCAweDNlLAotLSAgICAweDVkLCAweDRiLCAweGEyLCAweGJmLCAweDY4LCAweGFj LCAweGFhLCAweGJkLCAweGY4LCAweGUxLCAweDc1LCAweDNlLAotLSAgICAweDRhLCAweDljLCAw eDI3LCAweGJlLCAweGY4LCAweGFlLCAweGIyLCAweGJlLCAweDdmLCAweDlkLCAweDkxLCAweDNm LAotLSAgICAweDFlLCAweDhiLCAweGE4LCAweGJlLCAweDM1LCAweDdlLCAweGIyLCAweDNmLCAw eGJlLCAweDhjLCAweGQzLCAweGJlLAotLSAgICAweGY5LCAweGNkLCAweGI1LCAweDNmLCAweGEx LCAweDUwLCAweGFhLCAweDNmLCAweGU0LCAweDZkLCAweGRkLCAweGJlLAotLSAgICAweDBkLCAw eGNlLCAweGQzLCAweGJlLAotKyAgICAgLTAuNTM5NTkyNTA0NTAxMzQzLCAgIDEuMDk1OTA3Njg4 MTQwODcsIC0wLjE3NTk3MDk0MTc4MTk5OCwgLTAuNDI4NTA3MjA4ODI0MTU4LAotKyAgICAgLTAu MjE3MTIwODg1ODQ4OTk5LCAgIDEuNDAxMjk4NjQyMTU4NTEsICAgLTAuNTg1NTU1MzE1MDE3Nywg LTAuNzA2MTQ2NTM4MjU3NTk5LAotKyAgICAtMC4wNjIwNjQ4ODYwOTMxMzk2LCAtMC41NDM3ODM5 MDMxMjE5NDgsIC0wLjY0OTcxNjAxOTYzMDQzMiwgICAxLjA2MDE5MTE1NDQ3OTk4LAotKyAgICAg LTAuNzI2MjkxMTIwMDUyMzM4LCAtMC40ODgyNDE5NzA1MzkwOTMsIC0wLjUyNjM5MTQ0NjU5MDQy NCwgICAxLjAxMDIyMjU1NDIwNjg1LAotKyAgICAgIC0xLjA0MTE1ODkxNDU2NjA0LCAwLjA2MTY2 ODg2OTEwNzk2MTcsIC0wLjM2NzQ3ODA0Mjg0MDk1OCwgIDAuNTIwNjM1MzY2NDM5ODE5LAotKyAg ICAtMC4wNzg5MzkwMjA2MzM2OTc1LCAgLTAuMTkxMTEzMzA4MDcyMDksICAgMS4xMzQ5NzY3NDQ2 NTE3OSwgMC4wMjc3NjQwODE5NTQ5NTYxLAotKyAgICAgIDAuOTc0OTg4MDQzMzA4MjU4LCAtMC41 NTM5NTg2NTQ0MDM2ODcsICAwLjQxMjEyNTUyNzg1ODczNCwgICAtMS4yNjc5MjQ5MDQ4MjMzLAot KyAgICAtMC4wODMzMzY2NTEzMjUyMjU4LCAgMC4yNDAxMTk4MTQ4NzI3NDIsIC0wLjE2MzY4MjEz Mjk1OTM2NiwgIC0wLjM0ODk5MTE1NTYyNDM5LAotKyAgICAgICAgMS4xMzc2MTg4OTkzNDU0LCAt MC4zMjkxODYzNzk5MDk1MTUsICAgIDEuMzk0NDc2NTMyOTM2MSwgLTAuNDEzMTgzMTUyNjc1NjI5 LAotKyAgICAgICAxLjQyMDM0ODI4NjYyODcyLCAgIDEuMzMwNTg1NTk4OTQ1NjIsIC0wLjQzMjQ3 OTAyMzkzMzQxMSwgLTAuNDEzNjgxNDE3NzAzNjI5Ci0gfX07Ci0gY29uc3QgaW50MzJfdCBkbm5f aGlkZGVubGF5ZXJfMF9iaWFzZXNfcGFydF8wX3NoYXBlWzFdID0gezEwfTsKLSBjb25zdCB1bmlv biB7Ci0tICB1aW50OF90IGJ5dGVzWzQwXTsKLSAgIGZsb2F0IHZhbHVlc1sxMF07Ci0gfSBkbm5f aGlkZGVubGF5ZXJfMF9iaWFzZXNfcGFydF8wID0ge3sKLS0gICAgMHgwMCwgMHgwMCwgMHgwMCwg MHgwMCwgMHhiZiwgMHg2YSwgMHg1MywgMHgzZSwgMHhkMywgMHhjMSwKLS0gICAgMHhkMCwgMHgz ZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHhkOCwgMHhjMCwgMHgzZSwKLS0gICAg MHhjYSwgMHhlNywgMHgzNSwgMHgzZSwgMHgyMywgMHhhNSwgMHg0NCwgMHgzZiwgMHg2MSwgMHhm ZCwKLS0gICAgMHhkMiwgMHgzZSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHhiNiwgMHhlMCwg MHg0MywgMHgzYywKLSsgICAgICAgICAgICAgICAgICAgIDAuMCwgIDAuMjA2NDYxODkxNTMxOTQ0 LAotKyAgICAgIDAuNDA3NzI4NzYxNDM0NTU1LCAgICAgICAgICAgICAgICAwLjAsCi0rICAgICAg MC4zNzY2NTMzNzMyNDE0MjUsICAwLjE3NzY0MjAxNzYwMjkyMSwKLSsgICAgICAgMC43NjgxNDQ3 ODYzNTc4OCwgIDAuNDEyMDg5Mzc3NjQxNjc4LAotKyAgICAgICAgICAgICAgICAgICAgMC4wLCAw LjAxMTk1NTQzMDczMTE3NzMKLSB9fTsKLSBjb25zdCBpbnQzMl90IGRubl9sb2dpdHNfYmlhc2Vz X3BhcnRfMF9zaGFwZVsxXSA9IHsxfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVz WzRdOwotICAgZmxvYXQgdmFsdWVzWzFdOwotIH0gZG5uX2xvZ2l0c19iaWFzZXNfcGFydF8wID0g e3sKLS0gICAgMHg3NSwgMHhjYSwgMHhkNywgMHhiZSwKLSsgICAgLTAuNDIxNDY2NDk5NTY3MDMy Ci0gfX07Ci0gY29uc3QgaW50MzJfdCBkbm5fbG9naXRzX3dlaWdodHNfcGFydF8wX3NoYXBlWzJd ID0gezEwLCAxfTsKLSBjb25zdCB1bmlvbiB7Ci0tICB1aW50OF90IGJ5dGVzWzQwXTsKLSAgIGZs b2F0IHZhbHVlc1sxMF07Ci0gfSBkbm5fbG9naXRzX3dlaWdodHNfcGFydF8wID0ge3sKLS0gICAg MHgxMywgMHgxMiwgMHgzOSwgMHgzZiwgMHhmMywgMHhhNSwgMHhjMiwgMHhiZiwgMHg4MSwgMHg3 ZiwKLS0gICAgMHhiZSwgMHgzZiwgMHhmOCwgMHgxNywgMHgyNiwgMHgzZSwgMHhhNCwgMHgxOSwg MHhhNiwgMHgzZiwKLS0gICAgMHhmMCwgMHhjOSwgMHhiNywgMHhiZiwgMHg2YSwgMHg5OSwgMHhk MiwgMHgzZiwgMHg4YSwgMHg3ZCwKLS0gICAgMHhlOSwgMHgzZiwgMHg4MywgMHg5YSwgMHgzYSwg MHhiZiwgMHhmMSwgMHg2YywgMHgwOCwgMHgzZSwKLSsgICAgICAwLjcyMjkzMjA0MDY5MTM3Niwg IC0xLjUyMDY4OTM2ODI0Nzk5LAotKyAgICAgICAxLjQ4ODI2NjExMDQyMDIzLCAgMC4xNjIyMDA4 MDg1MjUwODUsCi0rICAgICAgIDEuMjk3NjU3NDg5Nzc2NjEsICAtMS40MzU4NTAxNDM0MzI2MiwK LSsgICAgICAgMS42NDUzMDY4MjU2Mzc4MiwgICAxLjgyNDE0MzY0ODE0NzU4LAotKyAgICAgLTAu NzI4OTIwMTYxNzI0MDkxLCAgMC4xMzMyMjgwNzg0ODQ1MzUKLSB9fTsKLSAKLSB9ICAvLyBhbm9u eW1vdXMgbmFtZXNwYWNlCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL2JtcC9ibXBf aW1hZ2VfcmVhZGVyLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvYm1wL2JtcF9p bWFnZV9yZWFkZXIuaAotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2FsbG9jYXRvci5oIgotICNpbmNsdWRlICJ0aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvY3B1LmgiCi0gI2luY2x1ZGUgInRo aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9ub25jb3B5YWJsZS5oIgotKyNp bmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAKLSBuYW1lc3BhY2UgYmxpbmsgewotIAot QEAgLTUwLDExICs1MSwxMSBAQCBjbGFzcyBQTEFURk9STV9FWFBPUlQgQk1QSW1hZ2VSZWFkZXIg ZmluYWwgewotICAgLy8gUmVhZCBhIHZhbHVlIGZyb20gfGJ1ZmZlcnwsIGNvbnZlcnRpbmcgdG8g YW4gaW50IGFzc3VtaW5nIGxpdHRsZQotICAgLy8gZW5kaWFubmVzcwotICAgc3RhdGljIGlubGlu ZSB1aW50MTZfdCBSZWFkVWludDE2KGNvbnN0IGNoYXIqIGJ1ZmZlcikgewotLSAgICByZXR1cm4g KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihidWZmZXIpOwotKyAgICByZXR1cm4g YmFzZTo6Qnl0ZVN3YXBUb0xFMTYoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPihi dWZmZXIpKTsKLSAgIH0KLSAKLSAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgUmVhZFVpbnQzMihj b25zdCBjaGFyKiBidWZmZXIpIHsKLS0gICAgcmV0dXJuICpyZWludGVycHJldF9jYXN0PGNvbnN0 IHVpbnQzMl90Kj4oYnVmZmVyKTsKLSsgICAgcmV0dXJuIGJhc2U6OkJ5dGVTd2FwVG9MRTMyKCpy ZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oYnVmZmVyKSk7Ci0gICB9Ci0gCi0gICAv LyB8cGFyZW50fCBpcyB0aGUgZGVjb2RlciB0aGF0IG93bnMgdXMuCi0tLS0gcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3Jt L2ltYWdlLWRlY29kZXJzL2pwZWcvanBlZ19pbWFnZV9kZWNvZGVyLmNjCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL2ltYWdlLWRlY29kZXJzL2pwZWcvanBlZ19pbWFnZV9kZWNvZGVyLmNjCi1AQCAtNDksMjMg KzQ5LDMwIEBAIGV4dGVybiAiQyIgewotICNpbmNsdWRlIDxzZXRqbXAuaD4KLSB9Ci0gCi0tI2lm IGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikKLS0jZXJyb3IgQmxpbmsgYXNzdW1lcyBhIGxp dHRsZS1lbmRpYW4gdGFyZ2V0LgotLSNlbmRpZgotLQotICNpZiBkZWZpbmVkKEpDU19BTFBIQV9F WFRFTlNJT05TKQotICNkZWZpbmUgVFVSQk9fSlBFR19SR0JfU1dJWlpMRQotLSNpZiBTS19CMzJf U0hJRlQgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIFJHQkEgcGl4ZWxzIChBbmRyb2lkKS4KLSsj aWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpCi0gaW5saW5lIEpfQ09MT1JfU1BB Q0UgcmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKLSAgIHJldHVybiBKQ1NfRVhUX1JHQkE7Ci0gfQot LSNlbHNlICAvLyBPdXRwdXQgbGl0dGxlLWVuZGlhbiBCR1JBIHBpeGVscy4KLSsjZWxpZiBTS19Q TUNPTE9SX0JZVEVfT1JERVIoQiwgRywgUiwgQSkKLSBpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JP dXRwdXRDb2xvclNwYWNlKCkgewotICAgcmV0dXJuIEpDU19FWFRfQkdSQTsKLSB9Ci0rI2VsaWYg U0tfUE1DT0xPUl9CWVRFX09SREVSKEEsIFIsIEcsIEIpCi0raW5saW5lIEpfQ09MT1JfU1BBQ0Ug cmdiT3V0cHV0Q29sb3JTcGFjZSgpIHsKLSsgIHJldHVybiBKQ1NfRVhUX0FSR0I7Ci0rfQotKyNl bGlmIFNLX1BNQ09MT1JfQllURV9PUkRFUihBLCBCLCBHLCBSKQotK2lubGluZSBKX0NPTE9SX1NQ QUNFIHJnYk91dHB1dENvbG9yU3BhY2UoKSB7Ci0rICByZXR1cm4gSkNTX0VYVF9BQkdSOwotK30K LSsjZWxzZQotKyNlcnJvciBDb21wb25lbnQgb3JkZXIgbm90IHN1cHBvcnRlZCBieSBsaWJqcGVn X3R1cmJvCi0gI2VuZGlmCi0gaW5saW5lIGJvb2wgdHVyYm9Td2l6emxlZChKX0NPTE9SX1NQQUNF IGNvbG9yU3BhY2UpIHsKLS0gIHJldHVybiBjb2xvclNwYWNlID09IEpDU19FWFRfUkdCQSB8fCBj b2xvclNwYWNlID09IEpDU19FWFRfQkdSQTsKLSsgIHJldHVybiBjb2xvclNwYWNlID09IEpDU19F WFRfUkdCQSB8fCBjb2xvclNwYWNlID09IEpDU19FWFRfQkdSQSB8fAotKyAgICBjb2xvclNwYWNl ID09IEpDU19FWFRfQUJHUiB8fCBjb2xvclNwYWNlID09IEpDU19FWFRfQVJHQjsKLSB9Ci0gI2Vs c2UKLSBpbmxpbmUgSl9DT0xPUl9TUEFDRSByZ2JPdXRwdXRDb2xvclNwYWNlKCkgewotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL3dlYnBfaW1hZ2VfZGVjb2Rlci5jYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy93ZWJwL3dlYnBfaW1hZ2VfZGVjb2Rlci5jYwot QEAgLTMyLDE4ICszMiwyMCBAQAotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9wbGF0Zm9ybS9oaXN0b2dyYW0uaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvc2tpYS9pbmNs dWRlL2NvcmUvU2tEYXRhLmgiCi0gCi0tI2lmIGRlZmluZWQoQVJDSF9DUFVfQklHX0VORElBTikK LS0jZXJyb3IgQmxpbmsgYXNzdW1lcyBhIGxpdHRsZS1lbmRpYW4gdGFyZ2V0LgotLSNlbmRpZgot LQotLSNpZiBTS19CMzJfU0hJRlQgIC8vIE91dHB1dCBsaXR0bGUtZW5kaWFuIFJHQkEgcGl4ZWxz IChBbmRyb2lkKS4KLSsjaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpCi0gaW5s aW5lIFdFQlBfQ1NQX01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0gICByZXR1cm4g aGFzQWxwaGEgPyBNT0RFX3JnYkEgOiBNT0RFX1JHQkE7Ci0gfQotLSNlbHNlICAvLyBPdXRwdXQg bGl0dGxlLWVuZGlhbiBCR1JBIHBpeGVscy4KLSsjZWxpZiBTS19QTUNPTE9SX0JZVEVfT1JERVIo QiwgRywgUiwgQSkKLSBpbmxpbmUgV0VCUF9DU1BfTU9ERSBvdXRwdXRNb2RlKGJvb2wgaGFzQWxw aGEpIHsKLSAgIHJldHVybiBoYXNBbHBoYSA/IE1PREVfYmdyQSA6IE1PREVfQkdSQTsKLSB9Ci0r I2VsaWYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEEsIFIsIEcsIEIpCi0raW5saW5lIFdFQlBfQ1NQ X01PREUgb3V0cHV0TW9kZShib29sIGhhc0FscGhhKSB7Ci0rICByZXR1cm4gaGFzQWxwaGEgPyBN T0RFX0FyZ2IgOiBNT0RFX0FSR0I7Ci0rfQotKyNlbHNlCi0rI2Vycm9yIENvbXBvbmVudCBvcmRl ciBub3Qgc3VwcG9ydGVkIGJ5IGxpYndlYnAKLSAjZW5kaWYKLSAKLSBuYW1lc3BhY2UgewotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL2NyeXB0by9hc24xL2FfaW50LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vYXNuMS9hX2ludC5jCi1AQCAt MzY5LDcgKzM2OSw5IEBAIGludCBBU04xX0lOVEVHRVJfc2V0X3VpbnQ2NChBU04xX0lOVEVHRVIg Km91dCwgdWludDY0X3QgdikKLSAKLSAgICAgT1BFTlNTTF9mcmVlKG91dC0+ZGF0YSk7Ci0gICAg IG91dC0+ZGF0YSA9IG5ld2RhdGE7Ci0rI2lmbmRlZiBPUEVOU1NMX0JJR0VORElBTgotICAgICB2 ID0gQ1JZUFRPX2Jzd2FwOCh2KTsKLSsjZW5kaWYKLSAgICAgbWVtY3B5KG91dC0+ZGF0YSwgJnYs IHNpemVvZih2KSk7Ci0gCi0gICAgIG91dC0+dHlwZSA9IFZfQVNOMV9JTlRFR0VSOwotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3Jj L2NyeXB0by9jaGFjaGEvY2hhY2hhLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vY2hhY2hhL2NoYWNoYS5jCi1A QCAtMjksNiArMjksMTQgQEAKLSAgICgoKHVpbnQzMl90KSgocClbMF0pKSB8ICgodWludDMyX3Qp KChwKVsxXSkgPDwgOCkgfCBcCi0gICAgKCh1aW50MzJfdCkoKHApWzJdKSA8PCAxNikgfCAoKHVp bnQzMl90KSgocClbM10pIDw8IDI0KSkKLSAKLSsjZGVmaW5lIFUzMlRPOF9MSVRUTEUocCwgdikg ICAgXAotKyAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgIChwKVswXSA9ICh2 ID4+IDApICYgMHhmZjsgIFwKLSsgICAgKHApWzFdID0gKHYgPj4gOCkgJiAweGZmOyAgXAotKyAg ICAocClbMl0gPSAodiA+PiAxNikgJiAweGZmOyBcCi0rICAgIChwKVszXSA9ICh2ID4+IDI0KSAm IDB4ZmY7IFwKLSsgIH0KLSsKLSAvLyBzaWdtYSBjb250YWlucyB0aGUgQ2hhQ2hhIGNvbnN0YW50 cywgd2hpY2ggaGFwcGVuIHRvIGJlIGFuIEFTQ0lJIHN0cmluZy4KLSBzdGF0aWMgY29uc3QgdWlu dDhfdCBzaWdtYVsxNl0gPSB7ICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICcgJywgJzMn LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzInLCAnLScsICdiJywgJ3kn LCAndCcsICdlJywgJyAnLCAnaycgfTsKLUBAIC00NSw5ICs1MywyNyBAQCBzdGF0aWMgY29uc3Qg dWludDhfdCBzaWdtYVsxNl0gPSB7ICdlJywgJ3gnLCAncCcsICdhJywgJ24nLCAnZCcsICcgJywg JzMnLAotIHZvaWQgQ1JZUFRPX2hjaGFjaGEyMCh1aW50OF90IG91dFszMl0sIGNvbnN0IHVpbnQ4 X3Qga2V5WzMyXSwKLSAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdWludDhfdCBub25jZVsx Nl0pIHsKLSAgIHVpbnQzMl90IHhbMTZdOwotLSAgT1BFTlNTTF9tZW1jcHkoeCwgc2lnbWEsIHNp emVvZihzaWdtYSkpOwotLSAgT1BFTlNTTF9tZW1jcHkoJnhbNF0sIGtleSwgMzIpOwotLSAgT1BF TlNTTF9tZW1jcHkoJnhbMTJdLCBub25jZSwgMTYpOwotKyAgaW50IGk7Ci0rCi0rICB4WzBdID0g VThUTzMyX0xJVFRMRShzaWdtYSArIDApOwotKyAgeFsxXSA9IFU4VE8zMl9MSVRUTEUoc2lnbWEg KyA0KTsKLSsgIHhbMl0gPSBVOFRPMzJfTElUVExFKHNpZ21hICsgOCk7Ci0rICB4WzNdID0gVThU TzMyX0xJVFRMRShzaWdtYSArIDEyKTsKLSsKLSsgIHhbNF0gPSBVOFRPMzJfTElUVExFKGtleSAr IDApOwotKyAgeFs1XSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgNCk7Ci0rICB4WzZdID0gVThUTzMy X0xJVFRMRShrZXkgKyA4KTsKLSsgIHhbN10gPSBVOFRPMzJfTElUVExFKGtleSArIDEyKTsKLSsK LSsgIHhbOF0gPSBVOFRPMzJfTElUVExFKGtleSArIDE2KTsKLSsgIHhbOV0gPSBVOFRPMzJfTElU VExFKGtleSArIDIwKTsKLSsgIHhbMTBdID0gVThUTzMyX0xJVFRMRShrZXkgKyAyNCk7Ci0rICB4 WzExXSA9IFU4VE8zMl9MSVRUTEUoa2V5ICsgMjgpOwotKwotKyAgeFsxMl0gPSBVOFRPMzJfTElU VExFKG5vbmNlICsgMCk7Ci0rICB4WzEzXSA9IFU4VE8zMl9MSVRUTEUobm9uY2UgKyA0KTsKLSsg IHhbMTRdID0gVThUTzMyX0xJVFRMRShub25jZSArIDgpOwotKyAgeFsxNV0gPSBVOFRPMzJfTElU VExFKG5vbmNlICsgMTIpOwotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAyMDsgaSArPSAy KSB7Ci0gICAgIFFVQVJURVJST1VORCgwLCA0LCA4LCAxMikKLUBAIC02MCw4ICs4NiwxMCBAQCB2 b2lkIENSWVBUT19oY2hhY2hhMjAodWludDhfdCBvdXRbMzJdLCBjb25zdCB1aW50OF90IGtleVsz Ml0sCi0gICAgIFFVQVJURVJST1VORCgzLCA0LCA5LCAxNCkKLSAgIH0KLSAKLS0gIE9QRU5TU0xf bWVtY3B5KG91dCwgJnhbMF0sIHNpemVvZih1aW50MzJfdCkgKiA0KTsKLS0gIE9QRU5TU0xfbWVt Y3B5KCZvdXRbMTZdLCAmeFsxMl0sIHNpemVvZih1aW50MzJfdCkgKiA0KTsKLSsgIGZvciAoaSA9 IDA7IGkgPCA0OyArK2kpIHsKLSsgICAgVTMyVE84X0xJVFRMRShvdXQgKyA0ICogaSwgeFtpXSk7 Ci0rICAgIFUzMlRPOF9MSVRUTEUoJm91dFsxNl0gKyA0ICogaSwgeFsxMitpXSk7Ci0rICB9Ci0g fQotIAotICNpZiAhZGVmaW5lZChPUEVOU1NMX05PX0FTTSkgJiYgICAgICAgICAgICAgICAgICAg ICAgICAgXAotQEAgLTEwNSwxNCArMTMzLDYgQEAgdm9pZCBDUllQVE9fY2hhY2hhXzIwKHVpbnQ4 X3QgKm91dCwgY29uc3QgdWludDhfdCAqaW4sIHNpemVfdCBpbl9sZW4sCi0gCi0gI2Vsc2UKLSAK LS0jZGVmaW5lIFUzMlRPOF9MSVRUTEUocCwgdikgICAgXAotLSAgeyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcCi0tICAgIChwKVswXSA9ICh2ID4+IDApICYgMHhmZjsgIFwKLS0gICAgKHAp WzFdID0gKHYgPj4gOCkgJiAweGZmOyAgXAotLSAgICAocClbMl0gPSAodiA+PiAxNikgJiAweGZm OyBcCi0tICAgIChwKVszXSA9ICh2ID4+IDI0KSAmIDB4ZmY7IFwKLS0gIH0KLS0KLSAvLyBjaGFj aGFfY29yZSBwZXJmb3JtcyAyMCByb3VuZHMgb2YgQ2hhQ2hhIG9uIHRoZSBpbnB1dCB3b3JkcyBp bgotIC8vIHxpbnB1dHwgYW5kIHdyaXRlcyB0aGUgNjQgb3V0cHV0IGJ5dGVzIHRvIHxvdXRwdXR8 LgotIHN0YXRpYyB2b2lkIGNoYWNoYV9jb3JlKHVpbnQ4X3Qgb3V0cHV0WzY0XSwgY29uc3QgdWlu dDMyX3QgaW5wdXRbMTZdKSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NpcGhlcl9leHRyYS9lX2Flc2djbXNp di5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jv cmluZ3NzbC9zcmMvY3J5cHRvL2NpcGhlcl9leHRyYS9lX2Flc2djbXNpdi5jCi1AQCAtNjI1LDcg KzYyNSwxMSBAQCBzdGF0aWMgdm9pZCBnY21fc2l2X2NyeXB0KHVpbnQ4X3QgKm91dCwgY29uc3Qg dWludDhfdCAqaW4sIHNpemVfdCBpbl9sZW4sCi0gICBmb3IgKHNpemVfdCBkb25lID0gMDsgZG9u ZSA8IGluX2xlbjspIHsKLSAgICAgdWludDhfdCBrZXlzdHJlYW1bQUVTX0JMT0NLX1NJWkVdOwot ICAgICBlbmNfYmxvY2soY291bnRlci5jLCBrZXlzdHJlYW0sIGtleSk7Ci0rI2lmZGVmIE9QRU5T U0xfQklHRU5ESUFOCi0rICAgIGNvdW50ZXIud1swXSA9IENSWVBUT19ic3dhcDQoQ1JZUFRPX2Jz d2FwNChjb3VudGVyLndbMF0pICsgMSk7Ci0rI2Vsc2UKLSAgICAgY291bnRlci53WzBdKys7Ci0r I2VuZGlmCi0gCi0gICAgIHNpemVfdCB0b2RvID0gQUVTX0JMT0NLX1NJWkU7Ci0gICAgIGlmIChp bl9sZW4gLSBkb25lIDwgdG9kbykgewotQEAgLTY3Myw4ICs2NzcsMTMgQEAgc3RhdGljIHZvaWQg Z2NtX3Npdl9wb2x5dmFsKAotICAgICB9IGJpdGxlbnM7Ci0gICB9IGxlbmd0aF9ibG9jazsKLSAK LSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmFkID0g Q1JZUFRPX2Jzd2FwOChhZF9sZW4gKiA4KTsKLSsgIGxlbmd0aF9ibG9jay5iaXRsZW5zLmluID0g Q1JZUFRPX2Jzd2FwOChpbl9sZW4gKiA4KTsKLSsjZWxzZQotICAgbGVuZ3RoX2Jsb2NrLmJpdGxl bnMuYWQgPSBhZF9sZW4gKiA4OwotICAgbGVuZ3RoX2Jsb2NrLmJpdGxlbnMuaW4gPSBpbl9sZW4g KiA4OwotKyNlbmRpZgotICAgQ1JZUFRPX1BPTFlWQUxfdXBkYXRlX2Jsb2NrcygmcG9seXZhbF9j dHgsIGxlbmd0aF9ibG9jay5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl b2YobGVuZ3RoX2Jsb2NrKSk7Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2NvbXBpbGVyX3Rlc3QuY2MKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3Ns L3NyYy9jcnlwdG8vY29tcGlsZXJfdGVzdC5jYwotQEAgLTQwLDkgKzQwLDEzIEBAIHN0YXRpYyB2 b2lkIENoZWNrUmVwcmVzZW50YXRpb24oVCB2YWx1ZSkgewotICAgVW5zaWduZWRUIHZhbHVlX3Ug PSBzdGF0aWNfY2FzdDxVbnNpZ25lZFQ+KHZhbHVlKTsKLSAgIEVYUEVDVF9FUShzaXplb2YoVW5z aWduZWRUKSwgc2l6ZW9mKFQpKTsKLSAKLS0gIC8vIEludGVnZXJzIG11c3QgYmUgbGl0dGxlLWVu ZGlhbi4KLSsgIC8vIEludGVnZXJzIG11c3QgYmUgZWl0aGVyIGJpZy1lbmRpYW4gb3IgbGl0dGxl LWVuZGlhbi4KLSAgIHVpbnQ4X3QgZXhwZWN0ZWRbc2l6ZW9mKFVuc2lnbmVkVCldOwotKyNpZmRl ZiBPUEVOU1NMX0JJR0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IHNpemVvZihVbnNpZ25lZFQp OyBpLS0gPiAwOyApIHsKLSsjZWxzZQotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplb2Yo VW5zaWduZWRUKTsgaSsrKSB7Ci0rI2VuZGlmCi0gICAgIGV4cGVjdGVkW2ldID0gc3RhdGljX2Nh c3Q8dWludDhfdD4odmFsdWVfdSk7Ci0gICAgIC8vIERpdmlkZSBpbnN0ZWFkIG9mIHJpZ2h0LXNo aWZ0IHRvIGFwcGVhc2UgY29tcGlsZXJzIHRoYXQgd2FybiBpZiB8VHwgaXMgYQotICAgICAvLyBj aGFyLiBUaGUgZXhwbGljaXQgY2FzdCBpcyBhbHNvIG5lZWRlZCB0byBhcHBlYXNlIE1TVkMgaWYg aW50ZWdlcgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9jdXJ2ZTI1NTE5L3NwYWtlMjU1MTkuYwotKysrIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2Ny eXB0by9jdXJ2ZTI1NTE5L3NwYWtlMjU1MTkuYwotQEAgLTMzOSw4ICszMzksMTcgQEAgc3RhdGlj IHZvaWQgc2NhbGFyX2RvdWJsZShzY2FsYXIgKnMpIHsKLSAgIHVpbnQzMl90IGNhcnJ5ID0gMDsK LSAKLSAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgODsgaSsrKSB7Ci0tICAgIGNvbnN0IHVpbnQz Ml90IGNhcnJ5X291dCA9IHMtPndvcmRzW2ldID4+IDMxOwotLSAgICBzLT53b3Jkc1tpXSA9IChz LT53b3Jkc1tpXSA8PCAxKSB8IGNhcnJ5OwotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAg ICBjb25zdCB1aW50MzJfdCBzaSA9IENSWVBUT19ic3dhcDQocy0+d29yZHNbaV0pOwotKyNlbHNl Ci0rICAgIGNvbnN0IHVpbnQzMl90IHNpID0gcy0+d29yZHNbaV07Ci0rI2VuZGlmCi0rICAgIGNv bnN0IHVpbnQzMl90IGNhcnJ5X291dCA9IHNpID4+IDMxOwotKyNpZmRlZiBPUEVOU1NMX0JJR0VO RElBTgotKyAgICBzLT53b3Jkc1tpXSA9IENSWVBUT19ic3dhcDQoKHNpIDw8IDEpIHwgY2Fycnkp OwotKyNlbHNlCi0rICAgIHMtPndvcmRzW2ldID0gKHNpIDw8IDEpIHwgY2Fycnk7Ci0rI2VuZGlm Ci0gICAgIGNhcnJ5ID0gY2Fycnlfb3V0OwotICAgfQotIH0KLUBAIC0zNTAsOCArMzU5LDEzIEBA IHN0YXRpYyB2b2lkIHNjYWxhcl9hZGQoc2NhbGFyICpkZXN0LCBjb25zdCBzY2FsYXIgKnNyYykg ewotICAgdWludDMyX3QgY2FycnkgPSAwOwotIAotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCA4 OyBpKyspIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgdWludDY0X3QgdG1wID0g KCh1aW50NjRfdClDUllQVE9fYnN3YXA0KGRlc3QtPndvcmRzW2ldKSArIENSWVBUT19ic3dhcDQo c3JjLT53b3Jkc1tpXSkpICsgY2Fycnk7Ci0rICAgIGRlc3QtPndvcmRzW2ldID0gQ1JZUFRPX2Jz d2FwNCgodWludDMyX3QpdG1wKTsKLSsjZWxzZQotICAgICB1aW50NjRfdCB0bXAgPSAoKHVpbnQ2 NF90KWRlc3QtPndvcmRzW2ldICsgc3JjLT53b3Jkc1tpXSkgKyBjYXJyeTsKLSAgICAgZGVzdC0+ d29yZHNbaV0gPSAodWludDMyX3QpdG1wOwotKyNlbmRpZgotICAgICBjYXJyeSA9ICh1aW50MzJf dCkodG1wID4+IDMyKTsKLSAgIH0KLSB9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2V2cC9zY3J5cHQuYwotKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wv c3JjL2NyeXB0by9ldnAvc2NyeXB0LmMKLUBAIC0xOTYsMTAgKzE5NiwyOCBAQCBpbnQgRVZQX1BC RV9zY3J5cHQoY29uc3QgY2hhciAqcGFzc3dvcmQsIHNpemVfdCBwYXNzd29yZF9sZW4sCi0gICAg IGdvdG8gZXJyOwotICAgfQotIAotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWludDMy X3QgKkIzMiA9IEItPndvcmRzOwotKyAgc2l6ZV90IEJfd29yZHMgPSBCX2J5dGVzID4+IDI7Ci0r ICBkbyB7Ci0rICAgICpCMzIgPSBDUllQVE9fYnN3YXA0KCpCMzIpOwotKyAgICBCMzIrKzsKLSsg IH0gd2hpbGUoLS1CX3dvcmRzKTsKLSsjZW5kaWYKLSsKLSAgIGZvciAodWludDY0X3QgaSA9IDA7 IGkgPCBwOyBpKyspIHsKLSAgICAgc2NyeXB0Uk9NaXgoQiArIDIgKiByICogaSwgciwgTiwgVCwg Vik7Ci0gICB9Ci0gCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0rICBCMzIgPSBCLT53b3Jk czsKLSsgIEJfd29yZHMgPSBCX2J5dGVzID4+IDI7Ci0rICBkbyB7Ci0rICAgICpCMzIgPSBDUllQ VE9fYnN3YXA0KCpCMzIpOwotKyAgICBCMzIrKzsKLSsgIH0gd2hpbGUoLS1CX3dvcmRzKTsKLSsj ZW5kaWYKLSsKLSAgIGlmICghUEtDUzVfUEJLREYyX0hNQUMocGFzc3dvcmQsIHBhc3N3b3JkX2xl biwgKGNvbnN0IHVpbnQ4X3QgKilCLCBCX2J5dGVzLCAxLAotICAgICAgICAgICAgICAgICAgICAg ICAgICBFVlBfc2hhMjU2KCksIGtleV9sZW4sIG91dF9rZXkpKSB7Ci0gICAgIGdvdG8gZXJyOwot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdz c2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL2JuL2J5dGVzLmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21v ZHVsZS9ibi9ieXRlcy5jCi1AQCAtMTM2LDkgKzEzNiwxMyBAQCBCSUdOVU0gKkJOX2xlMmJuKGNv bnN0IHVpbnQ4X3QgKmluLCBzaXplX3QgbGVuLCBCSUdOVU0gKnJldCkgewotICAgLy8gTWFrZSBz dXJlIHRoZSB0b3AgYnl0ZXMgd2lsbCBiZSB6ZXJvZWQuCi0gICByZXQtPmRbbnVtX3dvcmRzIC0g MV0gPSAwOwotIAotLSAgLy8gV2Ugb25seSBzdXBwb3J0IGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1z LCBzbyB3ZSBjYW4gc2ltcGx5IG1lbWNweSB0aGUKLS0gIC8vIGludGVybmFsIHJlcHJlc2VudGF0 aW9uLgotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWludDhfdCAqb3V0ID0gKHVpbnQ4 X3QgKilyZXQtPmQ7Ci0rICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbjsgaSsrKQotKyAgICBv dXRbaSBeIChCTl9CWVRFUy0xKV0gPSBpbltpXTsKLSsjZWxzZQotICAgT1BFTlNTTF9tZW1jcHko cmV0LT5kLCBpbiwgbGVuKTsKLSsjZW5kaWYKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotQEAgLTE1 Nyw3ICsxNjEsMTEgQEAgc2l6ZV90IEJOX2JuMmJpbihjb25zdCBCSUdOVU0gKmluLCB1aW50OF90 ICpvdXQpIHsKLSBzdGF0aWMgaW50IGZpdHNfaW5fYnl0ZXMoY29uc3QgdWludDhfdCAqYnl0ZXMs IHNpemVfdCBudW1fYnl0ZXMsIHNpemVfdCBsZW4pIHsKLSAgIHVpbnQ4X3QgbWFzayA9IDA7Ci0g ICBmb3IgKHNpemVfdCBpID0gbGVuOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKLSsjaWZkZWYgT1BF TlNTTF9CSUdFTkRJQU4KLSsgICAgbWFzayB8PSBieXRlc1tpIF4gKEJOX0JZVEVTLTEpXTsKLSsj ZWxzZQotICAgICBtYXNrIHw9IGJ5dGVzW2ldOwotKyNlbmRpZgotICAgfQotICAgcmV0dXJuIG1h c2sgPT0gMDsKLSB9Ci1AQCAtMTcyLDkgKzE4MCwxMyBAQCBpbnQgQk5fYm4ybGVfcGFkZGVkKHVp bnQ4X3QgKm91dCwgc2l6ZV90IGxlbiwgY29uc3QgQklHTlVNICppbikgewotICAgICBudW1fYnl0 ZXMgPSBsZW47Ci0gICB9Ci0gCi0tICAvLyBXZSBvbmx5IHN1cHBvcnQgbGl0dGxlLWVuZGlhbiBw bGF0Zm9ybXMsIHNvIHdlIGNhbiBzaW1wbHkgbWVtY3B5IGludG8gdGhlCi0tICAvLyBpbnRlcm5h bCByZXByZXNlbnRhdGlvbi4KLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgbnVtX2J5dGVzOyBpKyspIHsKLSsgICAgb3V0W2ldID0gYnl0ZXNbaSBe IChCTl9CWVRFUy0xKV07Ci0rICB9Ci0rI2Vsc2UKLSAgIE9QRU5TU0xfbWVtY3B5KG91dCwgYnl0 ZXMsIG51bV9ieXRlcyk7Ci0rI2VuZGlmCi0gICAvLyBQYWQgb3V0IHRoZSByZXN0IG9mIHRoZSBi dWZmZXIgd2l0aCB6ZXJvZXMuCi0gICBPUEVOU1NMX21lbXNldChvdXQgKyBudW1fYnl0ZXMsIDAs IGxlbiAtIG51bV9ieXRlcyk7Ci0gICByZXR1cm4gMTsKLUBAIC0xOTAsMTEgKzIwMiwxNSBAQCBp bnQgQk5fYm4yYmluX3BhZGRlZCh1aW50OF90ICpvdXQsIHNpemVfdCBsZW4sIGNvbnN0IEJJR05V TSAqaW4pIHsKLSAgICAgbnVtX2J5dGVzID0gbGVuOwotICAgfQotIAotLSAgLy8gV2Ugb25seSBz dXBwb3J0IGxpdHRsZS1lbmRpYW4gcGxhdGZvcm1zLCBzbyB3ZSBjYW4gc2ltcGx5IHdyaXRlIHRo ZSBidWZmZXIKLS0gIC8vIGluIHJldmVyc2UuCi0rI2lmZGVmIE9QRU5TU0xfQklHRU5ESUFOCi0r ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bV9ieXRlczsgaSsrKSB7Ci0rICAgIG91dFtsZW4g LSBpIC0gMV0gPSBieXRlc1tpIF4gKEJOX0JZVEVTLTEpXTsKLSsgIH0KLSsjZWxzZQotICAgZm9y IChzaXplX3QgaSA9IDA7IGkgPCBudW1fYnl0ZXM7IGkrKykgewotICAgICBvdXRbbGVuIC0gaSAt IDFdID0gYnl0ZXNbaV07Ci0gICB9Ci0rI2VuZGlmCi0gICAvLyBQYWQgb3V0IHRoZSByZXN0IG9m IHRoZSBidWZmZXIgd2l0aCB6ZXJvZXMuCi0gICBPUEVOU1NMX21lbXNldChvdXQsIDAsIGxlbiAt IG51bV9ieXRlcyk7Ci0gICByZXR1cm4gMTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9lY2Rz YS9lY2RzYS5jCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvZWNkc2EvZWNkc2EuYwotQEAgLTgw LDcgKzgwLDExIEBAIHN0YXRpYyB2b2lkIGRpZ2VzdF90b19zY2FsYXIoY29uc3QgRUNfR1JPVVAg Kmdyb3VwLCBFQ19TQ0FMQVIgKm91dCwKLSAgIH0KLSAgIE9QRU5TU0xfbWVtc2V0KG91dCwgMCwg c2l6ZW9mKEVDX1NDQUxBUikpOwotICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaWdlc3RfbGVu OyBpKyspIHsKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgICAgb3V0LT5ieXRlc1tpIF4g KEJOX0JZVEVTLTEpXSA9IGRpZ2VzdFtkaWdlc3RfbGVuIC0gMSAtIGldOwotKyNlbHNlCi0gICAg IG91dC0+Ynl0ZXNbaV0gPSBkaWdlc3RbZGlnZXN0X2xlbiAtIDEgLSBpXTsKLSsjZW5kaWYKLSAg IH0KLSAKLSAgIC8vIElmIGl0IGlzIHN0aWxsIHRvbyBsb25nLCB0cnVuY2F0ZSByZW1haW5pbmcg Yml0cyB3aXRoIGEgc2hpZnQuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvbW9kZXMvZ2NtLmMK LSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5n c3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9nY20uYwotQEAgLTc4LDYgKzc4LDE0IEBA Ci0gICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwKLSAgIH0gd2hpbGUgKDApCi0gCi0rI2lmZGVmIE9QRU5TU0xfQklH RU5ESUFOCi0rI2RlZmluZSBHQ01fYnN3YXA0KHgpICh4KQotKyNkZWZpbmUgR0NNX2Jzd2FwOCh4 KSAoeCkKLSsjZWxzZQotKyNkZWZpbmUgR0NNX2Jzd2FwNCBDUllQVE9fYnN3YXA0Ci0rI2RlZmlu ZSBHQ01fYnN3YXA4IENSWVBUT19ic3dhcDgKLSsjZW5kaWYKLSsKLSAvLyBrU2l6ZVRXaXRob3V0 TG93ZXI0Qml0cyBpcyBhIG1hc2sgdGhhdCBjYW4gYmUgdXNlZCB0byB6ZXJvIHRoZSBsb3dlciBm b3VyCi0gLy8gYml0cyBvZiBhIHxzaXplX3R8LgotIHN0YXRpYyBjb25zdCBzaXplX3Qga1NpemVU V2l0aG91dExvd2VyNEJpdHMgPSAoc2l6ZV90KSAtMTY7Ci1AQCAtMTczLDggKzE4MSw4IEBAIHN0 YXRpYyB2b2lkIGdjbV9nbXVsdF80Yml0KHVpbnQ2NF90IFhpWzJdLCBjb25zdCB1MTI4IEh0YWJs ZVsxNl0pIHsKLSAgICAgWi5sbyBePSBIdGFibGVbbmxvXS5sbzsKLSAgIH0KLSAKLS0gIFhpWzBd ID0gQ1JZUFRPX2Jzd2FwOChaLmhpKTsKLS0gIFhpWzFdID0gQ1JZUFRPX2Jzd2FwOChaLmxvKTsK LSsgIFhpWzBdID0gR0NNX2Jzd2FwOChaLmhpKTsKLSsgIFhpWzFdID0gR0NNX2Jzd2FwOChaLmxv KTsKLSB9Ci0gCi0gLy8gU3RyZWFtZWQgZ2NtX211bHRfNGJpdCwgc2VlIENSWVBUT19nY20xMjhf W2VufGRlXWNyeXB0IGZvcgotQEAgLTIzMyw4ICsyNDEsOCBAQCBzdGF0aWMgdm9pZCBnY21fZ2hh c2hfNGJpdCh1aW50NjRfdCBYaVsyXSwgY29uc3QgdTEyOCBIdGFibGVbMTZdLAotICAgICAgIFou bG8gXj0gSHRhYmxlW25sb10ubG87Ci0gICAgIH0KLSAKLS0gICAgWGlbMF0gPSBDUllQVE9fYnN3 YXA4KFouaGkpOwotLSAgICBYaVsxXSA9IENSWVBUT19ic3dhcDgoWi5sbyk7Ci0rICAgIFhpWzBd ID0gR0NNX2Jzd2FwOChaLmhpKTsKLSsgICAgWGlbMV0gPSBHQ01fYnN3YXA4KFoubG8pOwotICAg fSB3aGlsZSAoaW5wICs9IDE2LCBsZW4gLT0gMTYpOwotIH0KLSAjZWxzZSAgLy8gR0hBU0hfQVNN Ci1AQCAtMzYwLDggKzM2OCw4IEBAIHZvaWQgQ1JZUFRPX2doYXNoX2luaXQoZ211bHRfZnVuYyAq b3V0X211bHQsIGdoYXNoX2Z1bmMgKm91dF9oYXNoLAotICAgT1BFTlNTTF9tZW1jcHkoSC5jLCBn Y21fa2V5LCAxNik7Ci0gCi0gICAvLyBIIGlzIHN0b3JlZCBpbiBob3N0IGJ5dGUgb3JkZXIKLS0g IEgudVswXSA9IENSWVBUT19ic3dhcDgoSC51WzBdKTsKLS0gIEgudVsxXSA9IENSWVBUT19ic3dh cDgoSC51WzFdKTsKLSsgIEgudVswXSA9IEdDTV9ic3dhcDgoSC51WzBdKTsKLSsgIEgudVsxXSA9 IEdDTV9ic3dhcDgoSC51WzFdKTsKLSAKLSAgIE9QRU5TU0xfbWVtY3B5KG91dF9rZXksIEguYywg MTYpOwotIAotQEAgLTQ3NCwxNSArNDgyLDE1IEBAIHZvaWQgQ1JZUFRPX2djbTEyOF9zZXRpdihH Q00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICAgICAgR0NNX01VTChj dHgsIFlpKTsKLSAgICAgfQotICAgICBsZW4wIDw8PSAzOwotLSAgICBjdHgtPllpLnVbMV0gXj0g Q1JZUFRPX2Jzd2FwOChsZW4wKTsKLSsgICAgY3R4LT5ZaS51WzFdIF49IEdDTV9ic3dhcDgobGVu MCk7Ci0gCi0gICAgIEdDTV9NVUwoY3R4LCBZaSk7Ci0tICAgIGN0ciA9IENSWVBUT19ic3dhcDQo Y3R4LT5ZaS5kWzNdKTsKLSsgICAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRbM10pOwotICAg fQotIAotICAgKCpjdHgtPmdjbV9rZXkuYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FSzAuYywga2V5 KTsKLSAgICsrY3RyOwotLSAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAg Y3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotIH0KLSAKLSBpbnQgQ1JZUFRPX2djbTEy OF9hYWQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgdWludDhfdCAqYWFkLCBzaXplX3QgbGVu KSB7Ci1AQCAtNTgwLDcgKzU4OCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4 X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICBjdHgtPmFyZXMgPSAwOwot ICAgfQotIAotLSAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0g R0NNX2Jzd2FwNChjdHgtPllpLmRbM10pOwotIAotICAgbiA9IGN0eC0+bXJlczsKLSAgIGlmIChu KSB7Ci1AQCAtNjAyLDcgKzYxMCw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHQoR0NNMTI4 X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICAgIGlmIChuID09IDApIHsK LSAgICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgICAg ICsrY3RyOwotLSAgICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAg ICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIH0KLSAgICAgICBj dHgtPlhpLmNbbl0gXj0gb3V0W2ldID0gaW5baV0gXiBjdHgtPkVLaS5jW25dOwotICAgICAgIG4g PSAobiArIDEpICUgMTY7Ci1AQCAtNjIxLDcgKzYyOSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2Vu Y3J5cHQoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgICB3aGls ZSAoaikgewotICAgICAgICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAg ICAgICArK2N0cjsKLS0gICAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0r ICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jzd2FwNChjdHIpOwotICAgICAgIGZvciAoc2l6ZV90 IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICAgIHN0b3JlX3dv cmRfbGUob3V0ICsgaSwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9hZF93b3JkX2xlKGluICsg aSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV0pOwotQEAgLTYzOCw3ICs2NDYsNyBA QCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFF U19LRVkgKmtleSwKLSAgICAgd2hpbGUgKGxlbiA+PSAxNikgewotICAgICAgICgqYmxvY2spKGN0 eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgICArK2N0cjsKLS0gICAgICBjdHgtPllp LmRbM10gPSBDUllQVE9fYnN3YXA0KGN0cik7Ci0rICAgICAgY3R4LT5ZaS5kWzNdID0gR0NNX2Jz d2FwNChjdHIpOwotICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7IGkgKz0gc2l6ZW9m KHNpemVfdCkpIHsKLSAgICAgICAgIHN0b3JlX3dvcmRfbGUob3V0ICsgaSwKLSAgICAgICAgICAg ICAgICAgICAgICAgbG9hZF93b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yo c2l6ZV90KV0pOwotQEAgLTY1Myw3ICs2NjEsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9lbmNyeXB0 KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIHdoaWxlIChsZW4g Pj0gMTYpIHsKLSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAg ICArK2N0cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBj dHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp IDwgMTY7IGkgKz0gc2l6ZW9mKHNpemVfdCkpIHsKLSAgICAgICBzaXplX3QgdG1wID0gbG9hZF93 b3JkX2xlKGluICsgaSkgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yoc2l6ZV90KV07Ci0gICAgICAg c3RvcmVfd29yZF9sZShvdXQgKyBpLCB0bXApOwotQEAgLTY2OCw3ICs2NzYsNyBAQCBpbnQgQ1JZ UFRPX2djbTEyOF9lbmNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtl eSwKLSAgIGlmIChsZW4pIHsKLSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBr ZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIp OwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4t LSkgewotICAgICAgIGN0eC0+WGkuY1tuXSBePSBvdXRbbl0gPSBpbltuXSBeIGN0eC0+RUtpLmNb bl07Ci0gICAgICAgKytuOwotQEAgLTcwNyw3ICs3MTUsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9k ZWNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgY3R4 LT5hcmVzID0gMDsKLSAgIH0KLSAKLS0gIGN0ciA9IENSWVBUT19ic3dhcDQoY3R4LT5ZaS5kWzNd KTsKLSsgIGN0ciA9IEdDTV9ic3dhcDQoY3R4LT5ZaS5kWzNdKTsKLSAKLSAgIG4gPSBjdHgtPm1y ZXM7Ci0gICBpZiAobikgewotQEAgLTczMiw3ICs3NDAsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9k ZWNyeXB0KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgICBp ZiAobiA9PSAwKSB7Ci0gICAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtl eSk7Ci0gICAgICAgICArK2N0cjsKLS0gICAgICAgIGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dh cDQoY3RyKTsKLSsgICAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAg ICB9Ci0gICAgICAgYyA9IGluW2ldOwotICAgICAgIG91dFtpXSA9IGMgXiBjdHgtPkVLaS5jW25d OwotQEAgLTc1NCw3ICs3NjIsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0KEdDTTEyOF9D T05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgICAgd2hpbGUgKGopIHsKLSAgICAg ICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+RUtpLmMsIGtleSk7Ci0gICAgICAgKytjdHI7Ci0t ICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICAgIGN0eC0+WWku ZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2 OyBpICs9IHNpemVvZihzaXplX3QpKSB7Ci0gICAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGks Ci0gICAgICAgICAgICAgICAgICAgICAgIGxvYWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2ku dFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBAIC03NzEsNyArNzc5LDcgQEAgaW50IENSWVBUT19n Y20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0g ICAgIHdoaWxlIChsZW4gPj0gMTYpIHsKLSAgICAgICAoKmJsb2NrKShjdHgtPllpLmMsIGN0eC0+ RUtpLmMsIGtleSk7Ci0gICAgICAgKytjdHI7Ci0tICAgICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRP X2Jzd2FwNChjdHIpOwotKyAgICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAg ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNpemVvZihzaXplX3QpKSB7Ci0g ICAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksCi0gICAgICAgICAgICAgICAgICAgICAgIGxv YWRfd29yZF9sZShpbiArIGkpIF4gY3R4LT5FS2kudFtpIC8gc2l6ZW9mKHNpemVfdCldKTsKLUBA IC03ODUsNyArNzkzLDcgQEAgaW50IENSWVBUT19nY20xMjhfZGVjcnlwdChHQ00xMjhfQ09OVEVY VCAqY3R4LCBjb25zdCBBRVNfS0VZICprZXksCi0gICB3aGlsZSAobGVuID49IDE2KSB7Ci0gICAg ICgqYmxvY2spKGN0eC0+WWkuYywgY3R4LT5FS2kuYywga2V5KTsKLSAgICAgKytjdHI7Ci0tICAg IGN0eC0+WWkuZFszXSA9IENSWVBUT19ic3dhcDQoY3RyKTsKLSsgICAgY3R4LT5ZaS5kWzNdID0g R0NNX2Jzd2FwNChjdHIpOwotICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IDE2OyBpICs9IHNp emVvZihzaXplX3QpKSB7Ci0gICAgICAgc2l6ZV90IGMgPSBsb2FkX3dvcmRfbGUoaW4gKyBpKTsK LSAgICAgICBzdG9yZV93b3JkX2xlKG91dCArIGksIGMgXiBjdHgtPkVLaS50W2kgLyBzaXplb2Yo c2l6ZV90KV0pOwotQEAgLTgwMCw3ICs4MDgsNyBAQCBpbnQgQ1JZUFRPX2djbTEyOF9kZWNyeXB0 KEdDTTEyOF9DT05URVhUICpjdHgsIGNvbnN0IEFFU19LRVkgKmtleSwKLSAgIGlmIChsZW4pIHsK LSAgICAgKCpibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsK LS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRb M10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIHVpbnQ4 X3QgYyA9IGluW25dOwotICAgICAgIGN0eC0+WGkuY1tuXSBePSBjOwotQEAgLTg2NiwxMyArODc0 LDEzIEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0 eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgfQotICNlbmRpZgotIAotLSAgY3RyID0gQ1JZUFRP X2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jzd2FwNChjdHgtPllpLmRbM10p OwotIAotICNpZiBkZWZpbmVkKEdIQVNIKQotICAgd2hpbGUgKGxlbiA+PSBHSEFTSF9DSFVOSykg ewotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgR0hBU0hfQ0hVTksgLyAxNiwga2V5LCBjdHgtPllp LmMpOwotICAgICBjdHIgKz0gR0hBU0hfQ0hVTksgLyAxNjsKLS0gICAgY3R4LT5ZaS5kWzNdID0g Q1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3YXA0KGN0cik7 Ci0gICAgIEdIQVNIKGN0eCwgb3V0LCBHSEFTSF9DSFVOSyk7Ci0gICAgIG91dCArPSBHSEFTSF9D SFVOSzsKLSAgICAgaW4gKz0gR0hBU0hfQ0hVTks7Ci1AQCAtODg1LDcgKzg5Myw3IEBAIGludCBD UllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVT X0tFWSAqa2V5LAotIAotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgaiwga2V5LCBjdHgtPllpLmMp OwotICAgICBjdHIgKz0gKHVuc2lnbmVkIGludClqOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQ VE9fYnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAg ICAgaW4gKz0gaTsKLSAgICAgbGVuIC09IGk7Ci0gI2lmIGRlZmluZWQoR0hBU0gpCi1AQCAtOTA0 LDcgKzkxMiw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2VuY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRF WFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmN0eC0+ Z2NtX2tleS5ibG9jaykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsK LS0gICAgY3R4LT5ZaS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRb M10gPSBHQ01fYnN3YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIGN0eC0+ WGkuY1tuXSBePSBvdXRbbl0gPSBpbltuXSBeIGN0eC0+RUtpLmNbbl07Ci0gICAgICAgKytuOwot QEAgLTk3MCwxNCArOTc4LDE0IEBAIGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzIoR0NN MTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICAgfQotICNlbmRpZgotIAot LSAgY3RyID0gQ1JZUFRPX2Jzd2FwNChjdHgtPllpLmRbM10pOwotKyAgY3RyID0gR0NNX2Jzd2Fw NChjdHgtPllpLmRbM10pOwotIAotICNpZiBkZWZpbmVkKEdIQVNIKQotICAgd2hpbGUgKGxlbiA+ PSBHSEFTSF9DSFVOSykgewotICAgICBHSEFTSChjdHgsIGluLCBHSEFTSF9DSFVOSyk7Ci0gICAg ICgqc3RyZWFtKShpbiwgb3V0LCBHSEFTSF9DSFVOSyAvIDE2LCBrZXksIGN0eC0+WWkuYyk7Ci0g ICAgIGN0ciArPSBHSEFTSF9DSFVOSyAvIDE2OwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9f YnN3YXA0KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAg b3V0ICs9IEdIQVNIX0NIVU5LOwotICAgICBpbiArPSBHSEFTSF9DSFVOSzsKLSAgICAgbGVuIC09 IEdIQVNIX0NIVU5LOwotQEAgLTEwMDMsNyArMTAxMSw3IEBAIGludCBDUllQVE9fZ2NtMTI4X2Rl Y3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29uc3QgQUVTX0tFWSAqa2V5LAotICNl bmRpZgotICAgICAoKnN0cmVhbSkoaW4sIG91dCwgaiwga2V5LCBjdHgtPllpLmMpOwotICAgICBj dHIgKz0gKHVuc2lnbmVkIGludClqOwotLSAgICBjdHgtPllpLmRbM10gPSBDUllQVE9fYnN3YXA0 KGN0cik7Ci0rICAgIGN0eC0+WWkuZFszXSA9IEdDTV9ic3dhcDQoY3RyKTsKLSAgICAgb3V0ICs9 IGk7Ci0gICAgIGluICs9IGk7Ci0gICAgIGxlbiAtPSBpOwotQEAgLTEwMTEsNyArMTAxOSw3IEBA IGludCBDUllQVE9fZ2NtMTI4X2RlY3J5cHRfY3RyMzIoR0NNMTI4X0NPTlRFWFQgKmN0eCwgY29u c3QgQUVTX0tFWSAqa2V5LAotICAgaWYgKGxlbikgewotICAgICAoKmN0eC0+Z2NtX2tleS5ibG9j aykoY3R4LT5ZaS5jLCBjdHgtPkVLaS5jLCBrZXkpOwotICAgICArK2N0cjsKLS0gICAgY3R4LT5Z aS5kWzNdID0gQ1JZUFRPX2Jzd2FwNChjdHIpOwotKyAgICBjdHgtPllpLmRbM10gPSBHQ01fYnN3 YXA0KGN0cik7Ci0gICAgIHdoaWxlIChsZW4tLSkgewotICAgICAgIHVpbnQ4X3QgYyA9IGluW25d OwotICAgICAgIGN0eC0+WGkuY1tuXSBePSBjOwotQEAgLTEwMzYsOCArMTA0NCw4IEBAIGludCBD UllQVE9fZ2NtMTI4X2ZpbmlzaChHQ00xMjhfQ09OVEVYVCAqY3R4LCBjb25zdCB1aW50OF90ICp0 YWcsIHNpemVfdCBsZW4pIHsKLSAgICAgR0NNX01VTChjdHgsIFhpKTsKLSAgIH0KLSAKLS0gIGFs ZW4gPSBDUllQVE9fYnN3YXA4KGFsZW4pOwotLSAgY2xlbiA9IENSWVBUT19ic3dhcDgoY2xlbik7 Ci0rICBhbGVuID0gR0NNX2Jzd2FwOChhbGVuKTsKLSsgIGNsZW4gPSBHQ01fYnN3YXA4KGNsZW4p OwotIAotICAgY3R4LT5YaS51WzBdIF49IGFsZW47Ci0gICBjdHgtPlhpLnVbMV0gXj0gY2xlbjsK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5n c3NsL3NyYy9jcnlwdG8vZmlwc21vZHVsZS9tb2Rlcy9pbnRlcm5hbC5oCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvY3J5cHRv L2ZpcHNtb2R1bGUvbW9kZXMvaW50ZXJuYWwuaAotQEAgLTcwLDExICs3MCwxNyBAQCBleHRlcm4g IkMiIHsKLSBzdGF0aWMgaW5saW5lIHVpbnQzMl90IEdFVFUzMihjb25zdCB2b2lkICppbikgewot ICAgdWludDMyX3QgdjsKLSAgIE9QRU5TU0xfbWVtY3B5KCZ2LCBpbiwgc2l6ZW9mKHYpKTsKLSsj aWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHJldHVybiB2OwotKyNlbHNlCi0gICByZXR1cm4g Q1JZUFRPX2Jzd2FwNCh2KTsKLSsjZW5kaWYKLSB9Ci0gCi0gc3RhdGljIGlubGluZSB2b2lkIFBV VFUzMih2b2lkICpvdXQsIHVpbnQzMl90IHYpIHsKLSsjaWZuZGVmIE9QRU5TU0xfQklHRU5ESUFO Ci0gICB2ID0gQ1JZUFRPX2Jzd2FwNCh2KTsKLSsjZW5kaWYKLSAgIE9QRU5TU0xfbWVtY3B5KG91 dCwgJnYsIHNpemVvZih2KSk7Ci0gfQotIAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVz L3BvbHl2YWwuYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9ib3Jpbmdzc2wvc3JjL2NyeXB0by9maXBzbW9kdWxlL21vZGVzL3BvbHl2YWwuYwotQEAg LTMyLDE2ICszMiwyNiBAQCBzdGF0aWMgdm9pZCBieXRlX3JldmVyc2UocG9seXZhbF9ibG9jayAq YikgewotIC8vIHRoZSBHSEFTSCBmaWVsZCwgbXVsdGlwbGllcyB0aGF0IGJ5ICd4JyBhbmQgc2Vy aWFsaXNlcyB0aGUgcmVzdWx0IGJhY2sgaW50bwotIC8vIHxifCwgYnV0IHdpdGggR0hBU0gncyBi YWNrd2FyZHMgYml0IG9yZGVyaW5nLgotIHN0YXRpYyB2b2lkIHJldmVyc2VfYW5kX211bFhfZ2hh c2gocG9seXZhbF9ibG9jayAqYikgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdWlu dDY0X3QgaGkgPSBDUllQVE9fYnN3YXA4KGItPnVbMF0pOwotKyAgdWludDY0X3QgbG8gPSBDUllQ VE9fYnN3YXA4KGItPnVbMV0pOwotKyNlbHNlCi0gICB1aW50NjRfdCBoaSA9IGItPnVbMF07Ci0g ICB1aW50NjRfdCBsbyA9IGItPnVbMV07Ci0rI2VuZGlmCi0gICBjb25zdCBjcnlwdG9fd29yZF90 IGNhcnJ5ID0gY29uc3RhbnRfdGltZV9lcV93KGhpICYgMSwgMSk7Ci0gICBoaSA+Pj0gMTsKLSAg IGhpIHw9IGxvIDw8IDYzOwotICAgbG8gPj49IDE7Ci0gICBsbyBePSAoKHVpbnQ2NF90KSBjb25z dGFudF90aW1lX3NlbGVjdF93KGNhcnJ5LCAweGUxLCAwKSkgPDwgNTY7Ci0gCi0rI2lmZGVmIE9Q RU5TU0xfQklHRU5ESUFOCi0rICBiLT51WzBdID0gbG87Ci0rICBiLT51WzFdID0gaGk7Ci0rI2Vs c2UKLSAgIGItPnVbMF0gPSBDUllQVE9fYnN3YXA4KGxvKTsKLSAgIGItPnVbMV0gPSBDUllQVE9f YnN3YXA4KGhpKTsKLSsjZW5kaWYKLSB9Ci0gCi0gLy8gUE9MWVZBTChILCBYXzEsIC4uLiwgWF9u KSA9Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jv cmluZ3NzbC9zcmMvY3J5cHRvL2ZpcHNtb2R1bGUvcmFuZC9jdHJkcmJnLmMKLSsrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlw dG8vZmlwc21vZHVsZS9yYW5kL2N0cmRyYmcuYwotQEAgLTcwLDggKzcwLDEyIEBAIE9QRU5TU0xf U1RBVElDX0FTU0VSVChDVFJfRFJCR19FTlRST1BZX0xFTiAlIEFFU19CTE9DS19TSVpFID09IDAs Ci0gLy8gY3RyX2luYyBhZGRzIHxufCB0byB0aGUgbGFzdCBmb3VyIGJ5dGVzIG9mIHxkcmJnLT5j b3VudGVyfCwgdHJlYXRlZCBhcyBhCi0gLy8gYmlnLWVuZGlhbiBudW1iZXIuCi0gc3RhdGljIHZv aWQgY3RyMzJfYWRkKENUUl9EUkJHX1NUQVRFICpkcmJnLCB1aW50MzJfdCBuKSB7Ci0rI2lmZGVm IE9QRU5TU0xfQklHRU5ESUFOCi0rICBkcmJnLT5jb3VudGVyLndvcmRzWzNdICs9IG47Ci0rI2Vs c2UKLSAgIGRyYmctPmNvdW50ZXIud29yZHNbM10gPQotICAgICAgIENSWVBUT19ic3dhcDQoQ1JZ UFRPX2Jzd2FwNChkcmJnLT5jb3VudGVyLndvcmRzWzNdKSArIG4pOwotKyNlbmRpZgotIH0KLSAK LSBzdGF0aWMgaW50IGN0cl9kcmJnX3VwZGF0ZShDVFJfRFJCR19TVEFURSAqZHJiZywgY29uc3Qg dWludDhfdCAqZGF0YSwKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9jcnlwdG8vcG9seTEzMDUvcG9seTEzMDUuYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3Jj L2NyeXB0by9wb2x5MTMwNS9wb2x5MTMwNS5jCi1AQCAtMzIsMTAgKzMyLDE2IEBACi0gc3RhdGlj IHVpbnQzMl90IFU4VE8zMl9MRShjb25zdCB1aW50OF90ICptKSB7Ci0gICB1aW50MzJfdCByOwot ICAgT1BFTlNTTF9tZW1jcHkoJnIsIG0sIHNpemVvZihyKSk7Ci0rI2lmZGVmIE9QRU5TU0xfQklH RU5ESUFOCi0rICByID0gQ1JZUFRPX2Jzd2FwNChyKTsKLSsjZW5kaWYKLSAgIHJldHVybiByOwot IH0KLSAKLSBzdGF0aWMgdm9pZCBVMzJUTzhfTEUodWludDhfdCAqbSwgdWludDMyX3Qgdikgewot KyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgdiA9IENSWVBUT19ic3dhcDQodik7Ci0rI2Vu ZGlmCi0gICBPUEVOU1NMX21lbWNweShtLCAmdiwgc2l6ZW9mKHYpKTsKLSB9Ci0gCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv aW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKLUBA IC05OSw2ICs5OSwxMCBAQCBleHRlcm4gIkMiIHsKLSAjZWxpZiAoZGVmaW5lZChfX1BQQzY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykpICYmIGRlZmluZWQoX0xJVFRMRV9FTkRJQU4pCi0g I2RlZmluZSBPUEVOU1NMXzY0X0JJVAotICNkZWZpbmUgT1BFTlNTTF9QUEM2NExFCi0rI2VsaWYg KGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pKQotKyNkZWZpbmUg T1BFTlNTTF82NF9CSVQKLSsjZGVmaW5lIE9QRU5TU0xfUFBDNjQKLSsjZGVmaW5lIE9QRU5TU0xf QklHRU5ESUFOCi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19MUDY0X18p Ci0gI2RlZmluZSBPUEVOU1NMXzMyX0JJVAotICNkZWZpbmUgT1BFTlNTTF9NSVBTCi0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv dGhpcmRfcGFydHkvZmlhdC9jdXJ2ZTI1NTE5LmMKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0L2N1 cnZlMjU1MTkuYwotQEAgLTMwMzIsOSArMzAzMiwxNCBAQCBpbnQgRUQyNTUxOV92ZXJpZnkoY29u c3QgdWludDhfdCAqbWVzc2FnZSwgc2l6ZV90IG1lc3NhZ2VfbGVuLAotICAgICBVSU5UNjRfQygw eDEwMDAwMDAwMDAwMDAwMDApLAotICAgfTsKLSAgIGZvciAoc2l6ZV90IGkgPSAzOzsgaS0tKSB7 Ci0tICAgIGlmIChzY29weS51NjRbaV0gPiBrT3JkZXJbaV0pIHsKLSsjaWZkZWYgT1BFTlNTTF9C SUdFTkRJQU4KLSsgICAgY29uc3QgdWludDY0X3QgbiA9IENSWVBUT19ic3dhcDgoc2NvcHkudTY0 W2ldKTsKLSsjZWxzZQotKyAgICBjb25zdCB1aW50NjRfdCBuID0gc2NvcHkudTY0W2ldOwotKyNl bmRpZgotKyAgICBpZiAobiA+IGtPcmRlcltpXSkgewotICAgICAgIHJldHVybiAwOwotLSAgICB9 IGVsc2UgaWYgKHNjb3B5LnU2NFtpXSA8IGtPcmRlcltpXSkgewotKyAgICB9IGVsc2UgaWYgKG4g PCBrT3JkZXJbaV0pIHsKLSAgICAgICBicmVhazsKLSAgICAgfSBlbHNlIGlmIChpID09IDApIHsK LSAgICAgICByZXR1cm4gMDsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy90aGlyZF9wYXJ0eS9maWF0L3AyNTYuYwotKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3Jj L3RoaXJkX3BhcnR5L2ZpYXQvcDI1Ni5jCi1AQCAtODgyLDEyICs4ODIsMjQgQEAgc3RhdGljIHZv aWQgZmVfdG9ieXRlcyh1aW50OF90IG91dFtOQllURVNdLCBjb25zdCBmZSBpbikgewotICAgfQot IH0KLSAKLSsjaWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLStzdGF0aWMgdm9pZCBmZV90b2J5dGVz X2JlKHVpbnQ4X3Qgb3V0W05CWVRFU10sIGNvbnN0IGZlIGluKSB7Ci0rICBmb3IgKGludCBpID0g MDsgaTxOQllURVM7IGkrKykgewotKyAgICBvdXRbaSBeIChCTl9CWVRFUy0xKV0gPSAodWludDhf dCkoaW5baS9zaXplb2YoaW5bMF0pXSA+PiAoOCooaSVzaXplb2YoaW5bMF0pKSkpOwotKyAgfQot K30KLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZCBmZV9mcm9tYnl0ZXMoZmUgb3V0LCBjb25zdCB1 aW50OF90IGluW05CWVRFU10pIHsKLSAgIGZvciAoaW50IGkgPSAwOyBpPE5MSU1CUzsgaSsrKSB7 Ci0gICAgIG91dFtpXSA9IDA7Ci0gICB9Ci0gICBmb3IgKGludCBpID0gMDsgaTxOQllURVM7IGkr KykgewotKyNpZmRlZiBPUEVOU1NMX0JJR0VORElBTgotKyAgICBvdXRbaS9zaXplb2Yob3V0WzBd KV0gfD0gKChsaW1iX3QpaW5baSBeIChCTl9CWVRFUy0xKV0pIDw8ICg4KihpJXNpemVvZihvdXRb MF0pKSk7Ci0rI2Vsc2UKLSAgICAgb3V0W2kvc2l6ZW9mKG91dFswXSldIHw9ICgobGltYl90KWlu W2ldKSA8PCAoOCooaSVzaXplb2Yob3V0WzBdKSkpOwotKyNlbmRpZgotICAgfQotIH0KLSAKLUBA IC05MDYsNyArOTE4LDExIEBAIHN0YXRpYyB2b2lkIGZlX3RvX2dlbmVyaWMoRUNfRkVMRU0gKm91 dCwgY29uc3QgZmUgaW4pIHsKLSAgIE9QRU5TU0xfU1RBVElDX0FTU0VSVCgKLSAgICAgICAyNTYg LyA4ID09IHNpemVvZihCTl9VTE9ORykgKiAoKDI1NiArIEJOX0JJVFMyIC0gMSkgLyBCTl9CSVRT MiksCi0gICAgICAgImZlX3RvYnl0ZXMgbGVhdmVzIGJ5dGVzIHVuaW5pdGlhbGl6ZWQiKTsKLSsj aWZkZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIGZlX3RvYnl0ZXNfYmUob3V0LT5ieXRlcywgaW4p OwotKyNlbHNlCi0gICBmZV90b2J5dGVzKG91dC0+Ynl0ZXMsIGluKTsKLSsjZW5kaWYKLSB9Ci0g Ci0gLy8gZmVfaW52IGNhbGN1bGF0ZXMgfG91dHwgPSB8aW58XnstMX0KLUBAIC0xNTI0LDcgKzE1 NDAsMTEgQEAgc3RhdGljIGNoYXIgZ2V0X2JpdChjb25zdCB1aW50OF90ICppbiwgaW50IGkpIHsK LSAgIGlmIChpIDwgMCB8fCBpID49IDI1NikgewotICAgICByZXR1cm4gMDsKLSAgIH0KLSsjaWZk ZWYgT1BFTlNTTF9CSUdFTkRJQU4KLSsgIHJldHVybiAoaW5bKGkgPj4gMykgXiAoc2l6ZW9mKEJO X1VMT05HKS0xKV0gPj4gKGkgJiA3KSkgJiAxOwotKyNlbHNlCi0gICByZXR1cm4gKGluW2kgPj4g M10gPj4gKGkgJiA3KSkgJiAxOwotKyNlbmRpZgotIH0KLSAKLSAvLyBJbnRlcmxlYXZlZCBwb2lu dCBtdWx0aXBsaWNhdGlvbiB1c2luZyBwcmVjb21wdXRlZCBwb2ludCBtdWx0aXBsZXM6IFRoZQot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9jcmMzMmMv QlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvY3JjMzJjL0JVSUxELmduCi1AQCAtMTUsMTMgKzE1LDEwIEBAIGNvbmZpZygiY3JjMzJjX2Nv bmZpZyIpIHsKLSAgIF0KLSAKLSAgIGRlZmluZXMgPSBbCi0tICAgICJCWVRFX09SREVSX0JJR19F TkRJQU49MCIsCi0rICAgICJCWVRFX09SREVSX0JJR19FTkRJQU49X19CWVRFX09SREVSX189PV9f T1JERVJfQklHX0VORElBTl9fIiwKLSAgICAgIkNSQzMyQ19URVNUU19CVUlMVF9XSVRIX0dMT0c9 MCIsCi0gICBdCi0gCi0tICAjIElmIHdlIGV2ZXIgc3VwcG9ydCBiaWctZW5kaWFuIGJ1aWxkcywg YWRkIGxvZ2ljIHRvIGNvbmRpdGlvbmFsbHkgZW5hYmxlCi0tICAjIEJZVEVfT1JERVJfQklHX0VO RElBTi4KLS0KLSAgIGlmICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8IHRhcmdldF9jcHUgPT0gIng2 NCIpIHsKLSAgICAgZGVmaW5lcyArPSBbCi0gICAgICAgIkhBVkVfTU1fUFJFRkVUQ0g9MSIsCi0t LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZm ZXJzL3NyYy9pbmNsdWRlL2ZsYXRidWZmZXJzL2Jhc2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9mbGF0YnVmZmVycy9zcmMvaW5jbHVkZS9mbGF0 YnVmZmVycy9iYXNlLmgKLUBAIC0yMjAsMTggKzIyMCwxNSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBU PiBUIEVuZGlhblN3YXAoVCB0KSB7Ci0gICBpZiAoc2l6ZW9mKFQpID09IDEpIHsgICAvLyBDb21w aWxlLXRpbWUgaWYtdGhlbidzLgotICAgICByZXR1cm4gdDsKLSAgIH0gZWxzZSBpZiAoc2l6ZW9m KFQpID09IDIpIHsKLS0gICAgdW5pb24geyBUIHQ7IHVpbnQxNl90IGk7IH0gdTsKLS0gICAgdS50 ID0gdDsKLSsgICAgdW5pb24gVSB7IFQgdDsgdWludDE2X3QgaTsgVShjb25zdCBUJiB0XykgOiB0 KHRfKSB7fX0gdSh0KTsKLSAgICAgdS5pID0gRkxBVEJVRkZFUlNfQllURVNXQVAxNih1LmkpOwot ICAgICByZXR1cm4gdS50OwotICAgfSBlbHNlIGlmIChzaXplb2YoVCkgPT0gNCkgewotLSAgICB1 bmlvbiB7IFQgdDsgdWludDMyX3QgaTsgfSB1OwotLSAgICB1LnQgPSB0OwotKyAgICB1bmlvbiBV IHsgVCB0OyB1aW50MzJfdCBpOyBVKGNvbnN0IFQmIHRfKSA6IHQodF8pIHt9fSB1KHQpOwotICAg ICB1LmkgPSBGTEFUQlVGRkVSU19CWVRFU1dBUDMyKHUuaSk7Ci0gICAgIHJldHVybiB1LnQ7Ci0g ICB9IGVsc2UgaWYgKHNpemVvZihUKSA9PSA4KSB7Ci0tICAgIHVuaW9uIHsgVCB0OyB1aW50NjRf dCBpOyB9IHU7Ci0tICAgIHUudCA9IHQ7Ci0rICAgIHVuaW9uIFUgeyBUIHQ7IHVpbnQ2NF90IGk7 IFUoY29uc3QgVCYgdF8pIDogdCh0Xykge319IHUodCk7Ci0gICAgIHUuaSA9IEZMQVRCVUZGRVJT X0JZVEVTV0FQNjQodS5pKTsKLSAgICAgcmV0dXJuIHUudDsKLSAgIH0gZWxzZSB7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ZsYXRidWZmZXJzL3Ny Yy9pbmNsdWRlL2ZsYXRidWZmZXJzL21pbmlyZWZsZWN0LmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvZmxhdGJ1ZmZlcnMvc3JjL2luY2x1ZGUvZmxh dGJ1ZmZlcnMvbWluaXJlZmxlY3QuaAotQEAgLTEyMiw1OCArMTIyLDU4IEBAIGlubGluZSB2b2lk IEl0ZXJhdGVWYWx1ZShFbGVtZW50YXJ5VHlwZSB0eXBlLCBjb25zdCB1aW50OF90ICp2YWwsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgIHNvZmZzZXRfdCB2ZWN0b3JfaW5kZXgsIEl0ZXJhdGlv blZpc2l0b3IgKnZpc2l0b3IpIHsKLSAgIHN3aXRjaCAodHlwZSkgewotICAgICBjYXNlIEVUX1VU WVBFOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhf dCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJlYWRTY2FsYXI8dWludDhfdD4odmFsKTsK LSAgICAgICB2aXNpdG9yLT5VVHlwZSh0dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7 Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9CT09MOiB7Ci0tICAgICAgdmlz aXRvci0+Qm9vbCgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90ICo+KHZhbCkgIT0gMCk7 Ci0rICAgICAgdmlzaXRvci0+Qm9vbChSZWFkU2NhbGFyPHVpbnQ4X3Q+KHZhbCkgIT0gMCk7Ci0g ICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9DSEFSOiB7Ci0tICAgICAgYXV0byB0 dmFsID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50OF90ICo+KHZhbCk7Ci0rICAgICAgYXV0 byB0dmFsID0gUmVhZFNjYWxhcjxpbnQ4X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+Q2hhcih0 dmFsLCBFbnVtTmFtZSh0dmFsLCB0eXBlX3RhYmxlKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0K LSAgICAgY2FzZSBFVF9VQ0hBUjogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9j YXN0PGNvbnN0IHVpbnQ4X3QgKj4odmFsKTsKLSsgICAgICBhdXRvIHR2YWwgPSBSZWFkU2NhbGFy PHVpbnQ4X3Q+KHZhbCk7Ci0gICAgICAgdmlzaXRvci0+VUNoYXIodHZhbCwgRW51bU5hbWUodHZh bCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfU0hP UlQ6IHsKLS0gICAgICBhdXRvIHR2YWwgPSAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQxNl90 ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjxpbnQxNl90Pih2YWwpOwot ICAgICAgIHZpc2l0b3ItPlNob3J0KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFibGUpKTsK LSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX1VTSE9SVDogewotLSAgICAgIGF1 dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90ICo+KHZhbCk7Ci0rICAg ICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1aW50MTZfdD4odmFsKTsKLSAgICAgICB2aXNpdG9y LT5VU2hvcnQodHZhbCwgRW51bU5hbWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFr OwotICAgICB9Ci0gICAgIGNhc2UgRVRfSU5UOiB7Ci0tICAgICAgYXV0byB0dmFsID0gKnJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgaW50MzJfdCAqPih2YWwpOwotKyAgICAgIGF1dG8gdHZhbCA9IFJl YWRTY2FsYXI8aW50MzJfdD4odmFsKTsKLSAgICAgICB2aXNpdG9yLT5JbnQodHZhbCwgRW51bU5h bWUodHZhbCwgdHlwZV90YWJsZSkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2Ug RVRfVUlOVDogewotLSAgICAgIGF1dG8gdHZhbCA9ICpyZWludGVycHJldF9jYXN0PGNvbnN0IHVp bnQzMl90ICo+KHZhbCk7Ci0rICAgICAgYXV0byB0dmFsID0gUmVhZFNjYWxhcjx1aW50MzJfdD4o dmFsKTsKLSAgICAgICB2aXNpdG9yLT5VSW50KHR2YWwsIEVudW1OYW1lKHR2YWwsIHR5cGVfdGFi bGUpKTsKLSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIEVUX0xPTkc6IHsKLS0gICAg ICB2aXNpdG9yLT5Mb25nKCpyZWludGVycHJldF9jYXN0PGNvbnN0IGludDY0X3QgKj4odmFsKSk7 Ci0rICAgICAgdmlzaXRvci0+TG9uZyhSZWFkU2NhbGFyPGludDY0X3Q+KHZhbCkpOwotICAgICAg IGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2UgRVRfVUxPTkc6IHsKLS0gICAgICB2aXNpdG9yLT5V TG9uZygqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50NjRfdCAqPih2YWwpKTsKLSsgICAgICB2 aXNpdG9yLT5VTG9uZyhSZWFkU2NhbGFyPHVpbnQ2NF90Pih2YWwpKTsKLSAgICAgICBicmVhazsK LSAgICAgfQotICAgICBjYXNlIEVUX0ZMT0FUOiB7Ci0tICAgICAgdmlzaXRvci0+RmxvYXQoKnJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZmxvYXQgKj4odmFsKSk7Ci0rICAgICAgdmlzaXRvci0+Rmxv YXQoUmVhZFNjYWxhcjxmbG9hdD4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAg Y2FzZSBFVF9ET1VCTEU6IHsKLS0gICAgICB2aXNpdG9yLT5Eb3VibGUoKnJlaW50ZXJwcmV0X2Nh c3Q8Y29uc3QgZG91YmxlICo+KHZhbCkpOwotKyAgICAgIHZpc2l0b3ItPkRvdWJsZShSZWFkU2Nh bGFyPGRvdWJsZT4odmFsKSk7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSAgICAgY2FzZSBFVF9T VFJJTkc6IHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvbGV2ZWxkYXRhYmFzZS9wb3J0L3BvcnRfY2hyb21pdW0uaAotKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9sZXZlbGRhdGFiYXNlL3BvcnQvcG9ydF9j aHJvbWl1bS5oCi1AQCAtMjMsOCArMjMsMTEgQEAKLSBuYW1lc3BhY2UgbGV2ZWxkYiB7Ci0gbmFt ZXNwYWNlIHBvcnQgewotIAotLS8vIENocm9taXVtIG9ubHkgc3VwcG9ydHMgbGl0dGxlIGVuZGlh bi4KLSsjaWYgQVJDSF9DUFVfTElUVExFX0VORElBTgotIHN0YXRpYyBjb25zdCBib29sIGtMaXR0 bGVFbmRpYW4gPSB0cnVlOwotKyNlbHNlCi0rc3RhdGljIGNvbnN0IGJvb2wga0xpdHRsZUVuZGlh biA9IGZhbHNlOwotKyNlbmRpZgotIAotIGNsYXNzIExPQ0tBQkxFIE11dGV4IHsKLSAgcHVibGlj OgotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9tb2Rw X2I2NC9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9tb2RwX2I2NC9CVUlMRC5nbgotQEAgLTIsMTAgKzIsMTYgQEAKLSAjIFVzZSBvZiB0 aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBj YW4gYmUKLSAjIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCi0gCi0raW1wb3J0KCIvL2J1aWxk L2NvbmZpZy9ob3N0X2J5dGVvcmRlci5nbmkiKQotKwotIHN0YXRpY19saWJyYXJ5KCJtb2RwX2I2 NCIpIHsKLSAgIHNvdXJjZXMgPSBbCi0gICAgICJtb2RwX2I2NC5jYyIsCi0gICAgICJtb2RwX2I2 NC5oIiwKLSAgICAgIm1vZHBfYjY0X2RhdGEuaCIsCi0gICBdCi0rCi0rICBpZiAoaG9zdF9ieXRl b3JkZXIgPT0gImJpZyIpIHsKLSsgICAgZGVmaW5lcyA9IFsgIldPUkRTX0JJR0VORElBTj0xIiBd Ci0rICB9Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9tb2RwX2I2NC9tb2RwX2I2NC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9tb2RwX2I2NC9tb2RwX2I2NC5jYwotQEAgLTExOCw3ICsxMTgs NyBAQCBzaXplX3QgbW9kcF9iNjRfZW5jb2RlKGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHN0ciwg c2l6ZV90IGxlbikKLSB9Ci0gCi0gI2lmZGVmIFdPUkRTX0JJR0VORElBTiAgIC8qIEJJRyBFTkRJ QU4gLS0gU1VOIC8gSUJNIC8gTU9UT1JPTEEgKi8KLS1pbnQgbW9kcF9iNjRfZGVjb2RlKGNoYXIq IGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgaW50IGxlbikKLStzaXplX3QgbW9kcF9iNjRfZGVjb2Rl KGNoYXIqIGRlc3QsIGNvbnN0IGNoYXIqIHNyYywgc2l6ZV90IGxlbikKLSB7Ci0gICAgIGlmIChs ZW4gPT0gMCkgcmV0dXJuIDA7Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUvcGVyZmV0dG8vYmFzZS91dGlscy5oCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRv L2luY2x1ZGUvcGVyZmV0dG8vYmFzZS91dGlscy5oCi1AQCAtMjIsNiArMjIsNyBAQAotICNpbmNs dWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+ Ci0rI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotICNpZiAhUEVSRkVUVE9fQlVJTERGTEFHKFBFUkZF VFRPX09TX1dJTikKLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2VuZGlmCi1AQCAtOTEsNyAr OTIsNyBAQCBzdHJ1Y3QgRnJlZURlbGV0ZXIgewotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot IGNvbnN0ZXhwciBUIEFzc3VtZUxpdHRsZUVuZGlhbihUIHZhbHVlKSB7Ci0tICBzdGF0aWNfYXNz ZXJ0KF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fLAotKyAgc3RhdGlj X2Fzc2VydChzdGQ6OmlzX3NhbWU8VCxUPjo6dmFsdWUgJiYgX19CWVRFX09SREVSX18gPT0gX19P UkRFUl9MSVRUTEVfRU5ESUFOX18sCi0gICAgICAgICAgICAgICAgICJVbmltcGxlbWVudGVkIG9u IGJpZy1lbmRpYW4gYXJjaHMiKTsKLSAgIHJldHVybiB2YWx1ZTsKLSB9Ci0tLS0gcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1ZGUvcGVy ZmV0dG8vcHJvdG96ZXJvL21lc3NhZ2UuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9pbmNsdWRlL3BlcmZldHRvL3Byb3RvemVyby9t ZXNzYWdlLmgKLUBAIC0xMzgsNiArMTM4LDEzIEBAIGNsYXNzIFBFUkZFVFRPX0VYUE9SVCBNZXNz YWdlIHsKLSAKLSAgICAgcG9zID0gcHJvdG9fdXRpbHM6OldyaXRlVmFySW50KHByb3RvX3V0aWxz OjpNYWtlVGFnRml4ZWQ8VD4oZmllbGRfaWQpLCBwb3MpOwotICAgICBtZW1jcHkocG9zLCAmdmFs dWUsIHNpemVvZihUKSk7Ci0rI2lmIF9fQllURV9PUkRFUl9fICE9IF9fT1JERVJfTElUVExFX0VO RElBTl9fCi0rICAgIGZvciAoc2l6ZV90IGkgPSBzaXplb2YoVCkvMjsgaS0tOyApIHsKLSsgICAg ICB1aW50OF90IHRtcCA9IHBvc1tpXTsKLSsgICAgICBwb3NbaV0gPSBwb3Nbc2l6ZW9mKFQpLTEt aV07Ci0rICAgICAgcG9zW3NpemVvZihUKS0xLWldID0gdG1wOwotKyAgICB9Ci0rI2VuZGlmCi0g ICAgIHBvcyArPSBzaXplb2YoVCk7Ci0gICAgIC8vIFRPRE86IE9wdGltaXplIG1lbWNweSBwZXJm b3JtYW5jZSwgc2VlIGh0dHA6Ly9jcmJ1Zy5jb20vNjI0MzExIC4KLSAgICAgV3JpdGVUb1N0cmVh bShidWZmZXIsIHBvcyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3BlcmZldHRvL3NyYy9wcm90b3plcm8vbWVzc2FnZS5jYwotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96 ZXJvL21lc3NhZ2UuY2MKLUBAIC0yMSwxMiArMjEsNiBAQAotICNpbmNsdWRlICJwZXJmZXR0by9i YXNlL2xvZ2dpbmcuaCIKLSAjaW5jbHVkZSAicGVyZmV0dG8vcHJvdG96ZXJvL21lc3NhZ2VfaGFu ZGxlLmgiCi0gCi0tI2lmIF9fQllURV9PUkRFUl9fICE9IF9fT1JERVJfTElUVExFX0VORElBTl9f Ci0tLy8gVGhlIG1lbWNweSgpIGZvciBmbG9hdCBhbmQgZG91YmxlIGJlbG93IG5lZWRzIHRvIGJl IGFkanVzdGVkIGlmIHdlIHdhbnQgdG8KLS0vLyBzdXBwb3J0IGJpZyBlbmRpYW4gQ1BVcy4gVGhl cmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgY29tcGVsbGluZyBuZWVkIHRvZGF5LgotLSNlcnJvciBV bmltcGxlbWVudGVkIGZvciBiaWcgZW5kaWFuIGFyY2hzLgotLSNlbmRpZgotLQotIG5hbWVzcGFj ZSBwcm90b3plcm8gewotIAotIC8vIHN0YXRpYwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvcHJvdG96ZXJvL3Byb3RvX2RlY29k ZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv cGVyZmV0dG8vc3JjL3Byb3RvemVyby9wcm90b19kZWNvZGVyLmNjCi1AQCAtMjksNyArMjksOCBA QCB1c2luZyBuYW1lc3BhY2UgcHJvdG9fdXRpbHM7Ci0gI2RlZmluZSBCWVRFX1NXQVBfVE9fTEUz Mih4KSAoeCkKLSAjZGVmaW5lIEJZVEVfU1dBUF9UT19MRTY0KHgpICh4KQotICNlbHNlCi0tI2Vy cm9yIFVuaW1wbGVtZW50ZWQgZm9yIGJpZyBlbmRpYW4gYXJjaHMuCi0rI2RlZmluZSBCWVRFX1NX QVBfVE9fTEUzMih4KSBfX2J1aWx0aW5fYnN3YXAzMih4KQotKyNkZWZpbmUgQllURV9TV0FQX1RP X0xFNjQoeCkgX19idWlsdGluX2Jzd2FwNjQoeCkKLSAjZW5kaWYKLSAKLSBQcm90b0RlY29kZXI6 OkZpZWxkIFByb3RvRGVjb2Rlcjo6UmVhZEZpZWxkKCkgewotLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1Bvc3RDb25m aWcuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9z a2lhL2luY2x1ZGUvY29yZS9Ta1Bvc3RDb25maWcuaAotQEAgLTQwLDEyICs0MCw2IEBACi0gIyAg ZXJyb3IgIm11c3QgZGVmaW5lIGVpdGhlciBTS19DUFVfTEVORElBTiBvciBTS19DUFVfQkVORElB TiIKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZChTS19DUFVfQkVORElBTikgJiYgIWRlZmluZWQo SV9BQ0tOT1dMRURHRV9TS0lBX0RPRVNfTk9UX1NVUFBPUlRfQklHX0VORElBTikKLS0gICAgI2Vy cm9yICJUaGUgU2tpYSB0ZWFtIGlzIG5vdCBlbmRpYW4tc2F2dnkgZW5vdWdoIHRvIHN1cHBvcnQg YmlnLWVuZGlhbiBDUFVzLiIKLS0gICAgI2Vycm9yICJJZiB5b3Ugc3RpbGwgd2FudCB0byB1c2Ug U2tpYSwiCi0tICAgICNlcnJvciAicGxlYXNlIGRlZmluZSBJX0FDS05PV0xFREdFX1NLSUFfRE9F U19OT1RfU1VQUE9SVF9CSUdfRU5ESUFOLiIKLS0jZW5kaWYKLS0KLSAvKioKLSAgKiBFbnN1cmUg dGhlIHBvcnQgaGFzIGRlZmluZWQgYWxsIG9mIFNLX1gzMl9TSElGVCwgb3Igbm9uZSBvZiB0aGVt LgotICAqLwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9za2lhL2luY2x1ZGUvcHJpdmF0ZS9HclR5cGVzUHJpdi5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9wcml2YXRlL0dyVHlw ZXNQcml2LmgKLUBAIC02NSw5ICs2NSw2IEBAIGVudW0gR3JQaXhlbENvbmZpZyB7Ci0gc3RhdGlj IGNvbnN0IGludCBrR3JQaXhlbENvbmZpZ0NudCA9IGtMYXN0X0dyUGl4ZWxDb25maWcgKyAxOwot IAotIC8vIEFsaWFzZXMgZm9yIHBpeGVsIGNvbmZpZ3MgdGhhdCBtYXRjaCBza2lhJ3MgYnl0ZSBv cmRlci4KLS0jaWZuZGVmIFNLX0NQVV9MRU5ESUFOCi0tI2Vycm9yICJTa2lhIGdwdSBjdXJyZW50 bHkgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgotLSNlbmRpZgotICNpZiBTS19QTUNPTE9SX0JZVEVf T1JERVIoQixHLFIsQSkKLSBzdGF0aWMgY29uc3QgR3JQaXhlbENvbmZpZyBrU2tpYTg4ODhfR3JQ aXhlbENvbmZpZyA9IGtCR1JBXzg4ODhfR3JQaXhlbENvbmZpZzsKLSAjZWxpZiBTS19QTUNPTE9S X0JZVEVfT1JERVIoUixHLEIsQSkKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29kZWMvU2tDb2RlY1ByaXYuaAotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb2RlYy9Ta0Nv ZGVjUHJpdi5oCi1AQCAtMTQsNiArMTQsNyBAQAotICNpbmNsdWRlICJTa0VuY29kZWRPcmlnaW4u aCIKLSAjaW5jbHVkZSAiU2tJbWFnZUluZm8uaCIKLSAjaW5jbHVkZSAiU2tUeXBlcy5oIgotKyNp bmNsdWRlICJTa0VuZGlhbi5oIgotIAotICNpZmRlZiBTS19QUklOVF9DT0RFQ19NRVNTQUdFUwot ICAgICAjZGVmaW5lIFNrQ29kZWNQcmludGYgU2tEZWJ1Z2YKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0NvbG9yLmNwcAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3Ny Yy9jb3JlL1NrQ29sb3IuY3BwCi1AQCAtMTA4LDEzICsxMDgsMjkgQEAgU2tDb2xvciBTa0hTVlRv Q29sb3IoVThDUFUgYSwgY29uc3QgU2tTY2FsYXIgaHN2WzNdKSB7Ci0gdGVtcGxhdGUgPD4KLSBT a0NvbG9yNGYgU2tDb2xvcjRmOjpGcm9tQ29sb3IoU2tDb2xvciBiZ3JhKSB7Ci0gICAgIFNrQ29s b3I0ZiByZ2JhOwotLSAgICBzd2l6emxlX3JiKFNrNGZfZnJvbUwzMihiZ3JhKSkuc3RvcmUocmdi YS52ZWMoKSk7Ci0rICAgIFNrNGYgYzRmID0gU2s0Zl9mcm9tTDMyKGJncmEpOwotKyNpZmRlZiBT S19DUFVfQkVORElBTgotKyAgICAvLyBBUkdCIC0+IFJHQkEKLSsgICAgYzRmID0gU2tOeF9zaHVm ZmxlPDEsIDIsIDMsIDA+KGM0Zik7Ci0rI2Vsc2UKLSsgICAgLy8gQkdSQSAtPiBSR0JBCi0rICAg IGM0ZiA9IHN3aXp6bGVfcmIoYzRmKTsKLSsjZW5kaWYKLSsgICAgYzRmLnN0b3JlKHJnYmEudmVj KCkpOwotICAgICByZXR1cm4gcmdiYTsKLSB9Ci0gCi0gdGVtcGxhdGUgPD4KLSBTa0NvbG9yIFNr Q29sb3I0Zjo6dG9Ta0NvbG9yKCkgY29uc3QgewotLSAgICByZXR1cm4gU2s0Zl90b0wzMihzd2l6 emxlX3JiKFNrNGY6OkxvYWQodGhpcy0+dmVjKCkpKSk7Ci0rICAgIFNrNGYgYzRmID0gU2s0Zjo6 TG9hZCh0aGlzLT52ZWMoKSk7Ci0rI2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgIC8vIFJHQkEg LT4gQVJHQgotKyAgICBjNGYgPSBTa054X3NodWZmbGU8MywgMCwgMSwgMj4oYzRmKTsKLSsjZWxz ZQotKyAgICAvLyBSR0JBIC0+IEJHUkEKLSsgICAgYzRmID0gc3dpenpsZV9yYihjNGYpOwotKyNl bmRpZgotKyAgICByZXR1cm4gU2s0Zl90b0wzMihjNGYpOwotIH0KLSAKLSB0ZW1wbGF0ZSA8Pgot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3Ny Yy9jb3JlL1NrUGl4bWFwLmNwcAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrUGl4bWFwLmNwcAotQEAgLTI0Niw3ICsyNDYs OCBAQCBTa0NvbG9yIFNrUGl4bWFwOjpnZXRDb2xvcihpbnQgeCwgaW50IHkpIGNvbnN0IHsKLSAg ICAgY29uc3QgYm9vbCBuZWVkc1VucHJlbXVsID0gKGtQcmVtdWxfU2tBbHBoYVR5cGUgPT0gZklu Zm8uYWxwaGFUeXBlKCkpOwotICAgICBhdXRvIHRvQ29sb3IgPSBbbmVlZHNVbnByZW11bF0odWlu dDMyX3QgbWF5YmVQcmVtdWxDb2xvcikgewotICAgICAgICAgcmV0dXJuIG5lZWRzVW5wcmVtdWwg PyBTa1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKG1heWJlUHJlbXVsQ29sb3IpCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNrU3dpenpsZV9CR1JBX3RvX1BNQ29sb3IobWF5 YmVQcmVtdWxDb2xvcik7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFNrQ29sb3JT ZXRBUkdCKFNrR2V0UGFja2VkQTMyKG1heWJlUHJlbXVsQ29sb3IpLCBTa0dldFBhY2tlZFIzMiht YXliZVByZW11bENvbG9yKSwKLSsJCQkJCSAgICAgIFNrR2V0UGFja2VkRzMyKG1heWJlUHJlbXVs Q29sb3IpLCBTa0dldFBhY2tlZEIzMihtYXliZVByZW11bENvbG9yKSk7Ci0gICAgIH07Ci0gCi0g ICAgIHN3aXRjaCAodGhpcy0+Y29sb3JUeXBlKCkpIHsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9TazRweF9ub25lLmgKLSsr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMv b3B0cy9TazRweF9ub25lLmgKLUBAIC0zNSw3ICszNSw2IEBAIGlubGluZSBTazRweCBTazRweDo6 V2lkZTo6ZGl2MjU1KCkgY29uc3QgewotIH0KLSAKLSBpbmxpbmUgU2s0cHggU2s0cHg6OmFscGhh cygpIGNvbnN0IHsKLS0gICAgc3RhdGljX2Fzc2VydChTS19BMzJfU0hJRlQgPT0gMjQsICJUaGlz IG1ldGhvZCBhc3N1bWVzIGxpdHRsZS1lbmRpYW4uIik7Ci0gICAgIHJldHVybiBTazE2YigoKnRo aXMpWyAzXSwgKCp0aGlzKVsgM10sICgqdGhpcylbIDNdLCAoKnRoaXMpWyAzXSwKLSAgICAgICAg ICAgICAgICAgICgqdGhpcylbIDddLCAoKnRoaXMpWyA3XSwgKCp0aGlzKVsgN10sICgqdGhpcylb IDddLAotICAgICAgICAgICAgICAgICAgKCp0aGlzKVsxMV0sICgqdGhpcylbMTFdLCAoKnRoaXMp WzExXSwgKCp0aGlzKVsxMV0sCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tCbGl0Um93X29wdHMuaAotKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrQmxp dFJvd19vcHRzLmgKLUBAIC0yMzcsOCArMjM3LDggQEAgdm9pZCBibGl0X3Jvd19zMzJhX29wYXF1 ZShTa1BNQ29sb3IqIGRzdCwgY29uc3QgU2tQTUNvbG9yKiBzcmMsIGludCBsZW4sIFU4Q1BVIGEK LSAgICAgICAgIC8vIHdpdGggY2hyb21pdW06NjExMDAyIHdlIG5lZWQgdG8ga2VlcCBpdCB1bnRp bCB3ZSBmaWd1cmUgb3V0IHdoZXJlCi0gICAgICAgICAvLyB0aGUgbm9uLXByZW11bHRpcGxpZWQg c3JjIHZhbHVlcyAobGlrZSAweDAwRkZGRkZGKSBhcmUgY29taW5nIGZyb20uCi0gICAgICAgICAv LyBUT0RPKG10a2xlaW4pOiBzb3J0IHRoaXMgb3V0IGFuZCBhc3NlcnQgKnNyYyBpcyBwcmVtdWwg aGVyZS4KLS0gICAgICAgIGlmICgqc3JjICYgMHhGRjAwMDAwMCkgewotLSAgICAgICAgICAgICpk c3QgPSAoKnNyYyA+PSAweEZGMDAwMDAwKSA/ICpzcmMgOiBTa1BNU3JjT3Zlcigqc3JjLCAqZHN0 KTsKLSsgICAgICAgIGlmICgqc3JjICYgKDB4RkYgPDwgU0tfQTMyX1NISUZUKSkgewotKyAgICAg ICAgICAgICpkc3QgPSAoKCpzcmMgPDwgKDI0IC0gU0tfQTMyX1NISUZUKSkgPj0gMHhGRjAwMDAw MCkgPyAqc3JjIDogU2tQTVNyY092ZXIoKnNyYywgKmRzdCk7Ci0gICAgICAgICB9Ci0gICAgICAg ICBzcmMrKzsKLSAgICAgICAgIGRzdCsrOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFzdGVyUGlwZWxpbmVfb3B0cy5o Ci0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEv c3JjL29wdHMvU2tSYXN0ZXJQaXBlbGluZV9vcHRzLmgKLUBAIC05NDgsMTAgKzk0OCwxNyBAQCBT SSB2b2lkIGZyb21fNDQ0NChVMTYgXzQ0NDQsIEYqIHIsIEYqIGcsIEYqIGIsIEYqIGEpIHsKLSAg ICAgKmEgPSBjYXN0KHdpZGUgJiAoMTU8PCAwKSkgKiAoMS4wZiAvICgxNTw8IDApKTsKLSB9Ci0g U0kgdm9pZCBmcm9tXzg4ODgoVTMyIF84ODg4LCBGKiByLCBGKiBnLCBGKiBiLCBGKiBhKSB7Ci0r I2lmZGVmIFNLX0NQVV9CRU5ESUFOCi0rICAgICpyID0gY2FzdCgoXzg4ODggPj4gMjQpICAgICAg ICkgKiAoMS8yNTUuMGYpOwotKyAgICAqZyA9IGNhc3QoKF84ODg4ID4+IDE2KSAmIDB4ZmYpICog KDEvMjU1LjBmKTsKLSsgICAgKmIgPSBjYXN0KChfODg4OCA+PiAgOCkgJiAweGZmKSAqICgxLzI1 NS4wZik7Ci0rICAgICphID0gY2FzdCgoXzg4ODggICAgICApICYgMHhmZikgKiAoMS8yNTUuMGYp OwotKyNlbHNlCi0gICAgICpyID0gY2FzdCgoXzg4ODggICAgICApICYgMHhmZikgKiAoMS8yNTUu MGYpOwotICAgICAqZyA9IGNhc3QoKF84ODg4ID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsK LSAgICAgKmIgPSBjYXN0KChfODg4OCA+PiAxNikgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAg ICphID0gY2FzdCgoXzg4ODggPj4gMjQpICAgICAgICkgKiAoMS8yNTUuMGYpOwotKyNlbmRpZgot IH0KLSBTSSB2b2lkIGZyb21fMTAxMDEwMihVMzIgcmdiYSwgRiogciwgRiogZywgRiogYiwgRiog YSkgewotICAgICAqciA9IGNhc3QoKHJnYmEgICAgICApICYgMHgzZmYpICogKDEvMTAyMy4wZik7 Ci1AQCAtMTI3OCwxMCArMTI4NSwxNyBAQCBTVEFHRShzcmNvdmVyX3JnYmFfODg4OCwgY29uc3Qg U2tSYXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgqIGN0eCkgewotICAgICBhdXRvIHB0ciA9IHB0cl9h dF94eTx1aW50MzJfdD4oY3R4LCBkeCxkeSk7Ci0gCi0gICAgIFUzMiBkc3QgPSBsb2FkPFUzMj4o cHRyLCB0YWlsKTsKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgZHIgPSBjYXN0KChkc3Qg Pj4gMjQpICAgICAgICk7Ci0rICAgIGRnID0gY2FzdCgoZHN0ID4+IDE2KSAmIDB4ZmYpOwotKyAg ICBkYiA9IGNhc3QoKGRzdCA+PiAgOCkgJiAweGZmKTsKLSsgICAgZGEgPSBjYXN0KChkc3QgICAg ICApICYgMHhmZik7Ci0rI2Vsc2UKLSAgICAgZHIgPSBjYXN0KChkc3QgICAgICApICYgMHhmZik7 Ci0gICAgIGRnID0gY2FzdCgoZHN0ID4+ICA4KSAmIDB4ZmYpOwotICAgICBkYiA9IGNhc3QoKGRz dCA+PiAxNikgJiAweGZmKTsKLSAgICAgZGEgPSBjYXN0KChkc3QgPj4gMjQpICAgICAgICk7Ci0r I2VuZGlmCi0gICAgIC8vIHtkcixkZyxkYixkYX0gYXJlIGluIFswLDI1NV0KLSAgICAgLy8geyBy LCBnLCBiLCBhfSBhcmUgaW4gWzAsICAxXSAoYnV0IG1heSBiZSBvdXQgb2YgZ2FtdXQpCi0gCi1A QCAtMTI5MiwxMCArMTMwNiwxNyBAQCBTVEFHRShzcmNvdmVyX3JnYmFfODg4OCwgY29uc3QgU2tS YXN0ZXJQaXBlbGluZV9NZW1vcnlDdHgqIGN0eCkgewotICAgICAvLyB7IHIsIGcsIGIsIGF9IGFy ZSBub3cgaW4gWzAsMjU1XSAgKGJ1dCBtYXkgYmUgb3V0IG9mIGdhbXV0KQotIAotICAgICAvLyB0 b191bm9ybSgpIGNsYW1wcyBiYWNrIHRvIGdhbXV0LiAgU2NhbGluZyBieSAxIHNpbmNlIHdlJ3Jl IGFscmVhZHkgMjU1LWJpYXNlZC4KLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgZHN0ID0g dG9fdW5vcm0ociwgMSwgMjU1KSA8PCAyNAotKyAgICAgICAgfCB0b191bm9ybShnLCAxLCAyNTUp IDw8IDE2Ci0rICAgICAgICB8IHRvX3Vub3JtKGIsIDEsIDI1NSkgPDwgIDgKLSsgICAgICAgIHwg dG9fdW5vcm0oYSwgMSwgMjU1KTsKLSsjZWxzZQotICAgICBkc3QgPSB0b191bm9ybShyLCAxLCAy NTUpCi0gICAgICAgICB8IHRvX3Vub3JtKGcsIDEsIDI1NSkgPDwgIDgKLSAgICAgICAgIHwgdG9f dW5vcm0oYiwgMSwgMjU1KSA8PCAxNgotICAgICAgICAgfCB0b191bm9ybShhLCAxLCAyNTUpIDw8 IDI0OwotKyNlbmRpZgotICAgICBzdG9yZShwdHIsIGRzdCwgdGFpbCk7Ci0gfQotIAotQEAgLTE2 OTQsMTAgKzE3MTUsMTcgQEAgU1RBR0UoZ2F0aGVyXzg4ODgsIGNvbnN0IFNrUmFzdGVyUGlwZWxp bmVfR2F0aGVyQ3R4KiBjdHgpIHsKLSBTVEFHRShzdG9yZV84ODg4LCBjb25zdCBTa1Jhc3RlclBp cGVsaW5lX01lbW9yeUN0eCogY3R4KSB7Ci0gICAgIGF1dG8gcHRyID0gcHRyX2F0X3h5PHVpbnQz Ml90PihjdHgsIGR4LGR5KTsKLSAKLSsjaWZkZWYgU0tfQ1BVX0JFTkRJQU4KLSsgICAgVTMyIHB4 ID0gdG9fdW5vcm0ociwgMjU1KSA8PCAyNAotKyAgICAgICAgICAgfCB0b191bm9ybShnLCAyNTUp IDw8IDE2Ci0rICAgICAgICAgICB8IHRvX3Vub3JtKGIsIDI1NSkgPDwgIDgKLSsgICAgICAgICAg IHwgdG9fdW5vcm0oYSwgMjU1KTsKLSsjZWxzZQotICAgICBVMzIgcHggPSB0b191bm9ybShyLCAy NTUpCi0gICAgICAgICAgICB8IHRvX3Vub3JtKGcsIDI1NSkgPDwgIDgKLSAgICAgICAgICAgIHwg dG9fdW5vcm0oYiwgMjU1KSA8PCAxNgotICAgICAgICAgICAgfCB0b191bm9ybShhLCAyNTUpIDw8 IDI0OwotKyNlbmRpZgotICAgICBzdG9yZShwdHIsIHB4LCB0YWlsKTsKLSB9Ci0gCi1AQCAtMjg1 MiwxMCArMjg4MCwxNyBAQCBTSSB2b2lkIGZyb21fODg4OChVMzIgcmdiYSwgVTE2KiByLCBVMTYq IGcsIFUxNiogYiwgVTE2KiBhKSB7Ci0gICAgICAgICByZXR1cm4gY2FzdDxVMTY+KHYpOwotICAg ICB9OwotICNlbmRpZgotKyNpZmRlZiBTS19DUFVfQkVORElBTgotKyAgICAqciA9IGNhc3RfVTE2 KHJnYmEgPj4gICAxNikgPj4gIDg7Ci0rICAgICpnID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2KSAm IDI1NTsKLSsgICAgKmIgPSBjYXN0X1UxNihyZ2JhICYgNjU1MzUpID4+ICA4OwotKyAgICAqYSA9 IGNhc3RfVTE2KHJnYmEgJiA2NTUzNSkgJiAyNTU7Ci0rI2Vsc2UKLSAgICAgKnIgPSBjYXN0X1Ux NihyZ2JhICYgNjU1MzUpICYgMjU1OwotICAgICAqZyA9IGNhc3RfVTE2KHJnYmEgJiA2NTUzNSkg Pj4gIDg7Ci0gICAgICpiID0gY2FzdF9VMTYocmdiYSA+PiAgIDE2KSAmIDI1NTsKLSAgICAgKmEg PSBjYXN0X1UxNihyZ2JhID4+ICAgMTYpID4+ICA4OwotKyNlbmRpZgotIH0KLSAKLSBTSSB2b2lk IGxvYWRfODg4OF8oY29uc3QgdWludDMyX3QqIHB0ciwgc2l6ZV90IHRhaWwsIFUxNiogciwgVTE2 KiBnLCBVMTYqIGIsIFUxNiogYSkgewotQEAgLTI4OTcsMTAgKzI5MzIsMTUgQEAgU0kgdm9pZCBz dG9yZV84ODg4Xyh1aW50MzJfdCogcHRyLCBzaXplX3QgdGFpbCwgVTE2IHIsIFUxNiBnLCBVMTYg YiwgVTE2IGEpIHsKLSAgICAgICAgIGNhc2UgMjogdnN0NF9sYW5lX3U4KCh1aW50OF90KikocHRy KzEpLCByZ2JhLCAxKTsKLSAgICAgICAgIGNhc2UgMTogdnN0NF9sYW5lX3U4KCh1aW50OF90Kiko cHRyKzApLCByZ2JhLCAwKTsKLSAgICAgfQotKyNlbHNlCi0rI2lmZGVmIFNLX0NQVV9CRU5ESUFO Ci0rICAgIHN0b3JlKHB0ciwgdGFpbCwgY2FzdDxVMzI+KChyPDw4KSB8IGcpIDw8IDE2Ci0rICAg ICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+KChiPDw4KSB8IGEpIDw8IDApOwotICNlbHNlCi0g ICAgIHN0b3JlKHB0ciwgdGFpbCwgY2FzdDxVMzI+KHIgfCAoZzw8OCkpIDw8ICAwCi0gICAgICAg ICAgICAgICAgICAgIHwgY2FzdDxVMzI+KGIgfCAoYTw8OCkpIDw8IDE2KTsKLSAjZW5kaWYKLSsj ZW5kaWYKLSB9Ci0gCi0gU1RBR0VfUFAobG9hZF84ODg4LCBjb25zdCBTa1Jhc3RlclBpcGVsaW5l X01lbW9yeUN0eCogY3R4KSB7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L3NraWEvc3JjL3V0aWxzL1NrSlNPTi5jcHAKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09OLmNw cAotQEAgLTM0LDYgKzM0LDEwIEBAIHZvaWQgVmFsdWU6OmluaXRfdGFnZ2VkKFRhZyB0KSB7Ci0g Ci0gLy8gUG9pbnRlciB2YWx1ZXMgc3RvcmUgYSB0eXBlIChpbiB0aGUgdXBwZXIga1RhZ0JpdHMg Yml0cykgYW5kIGEgcG9pbnRlci4KLSB2b2lkIFZhbHVlOjppbml0X3RhZ2dlZF9wb2ludGVyKFRh ZyB0LCB2b2lkKiBwKSB7Ci0rI2lmICFkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotKyAgICAvLyBD aGVjayB0aGF0IGtSZWNBbGlnbiBpcyBsYXJnZSBlbm91Z2ggdG8gbGVhdmUgcm9vbSBmb3IgdGhl IHRhZwotKyAgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihWYWx1ZSkgPiBzaXplb2YodWludHB0cl90 KSB8fCAhKGtSZWNBbGlnbiAmIFZhbHVlOjprVGFnTWFzayksICJrUmVjQWxpZ24gaXMgbm90IGEg bXVsdGlwbGUgb2Yga1RhZ01hc2srMSIpOwotKyNlbmRpZgotICAgICAqdGhpcy0+Y2FzdDx1aW50 cHRyX3Q+KCkgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4ocCk7Ci0gCi0gICAgIGlmIChz aXplb2YoVmFsdWUpID09IHNpemVvZih1aW50cHRyX3QpKSB7Ci1AQCAtMTY5LDcgKzE3Myw3IEBA IHByaXZhdGU6Ci0gI2lmIGRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCi0gICAgICAgICAqczY0ICY9 IDB4MDBmZmZmZmZmZmZmZmZmZlVMTCA+PiAoKGtNYXhJbmxpbmVTdHJpbmdTaXplIC0gc2l6ZSkg KiA4KTsKLSAjZWxzZQotLSAgICAgICAgc3RhdGljX2Fzc2VydChmYWxzZSwgIkJpZy1lbmRpYW4g YnVpbGRzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4iKTsKLSsgICAgICAgICpzNjQg Jj0gMHhmZmZmZmZmZmZmZmZmZjAwVUxMIDw8ICgoa01heElubGluZVN0cmluZ1NpemUgLSBzaXpl KSAqIDgpOwotICNlbmRpZgotICAgICB9Ci0gfTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMvU2tKU09OLmgKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS9zcmMvdXRpbHMv U2tKU09OLmgKLUBAIC0xMjAsNiArMTIwLDcgQEAgcHJvdGVjdGVkOgotICAgICAgICAgIC0tIGhp Z2hlc3QgMyBiaXRzIHJlc2VydmVkIGZvciB0eXBlIHN0b3JhZ2UKLSAKLSAgICAgICovCi0rI2lm IGRlZmluZWQoU0tfQ1BVX0xFTkRJQU4pCi0gICAgIGVudW0gY2xhc3MgVGFnIDogdWludDhfdCB7 Ci0gICAgICAgICAvLyBXZSBwaWNrZWQga1Nob3J0U3RyaW5nID09IDAgc28gdGhhdCB0YWcgMHgw MCBhbmQgc3RvcmVkIG1heF9zaXplLXNpemUgKDctNz0wKQotICAgICAgICAgLy8gY29udmVuaWVu dGx5IG92ZXJsYXAgdGhlICdcMCcgdGVybWluYXRvciwgYWxsb3dpbmcgdXMgdG8gc3RvcmUgYSA3 IGNoYXJhY3RlcgotQEAgLTEzNCw2ICsxMzUsMjIgQEAgcHJvdGVjdGVkOgotICAgICAgICAga09i amVjdCAgICAgICAgICAgICAgICAgICAgICAgPSAwYjExMTAwMDAwLCAgLy8gcHRyIHRvIGV4dGVy bmFsIHN0b3JhZ2UKLSAgICAgfTsKLSAgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50OF90IGtUYWdN YXNrID0gMGIxMTEwMDAwMDsKLSsjZWxzZQotKyAgICBlbnVtIGNsYXNzIFRhZyA6IHVpbnQ4X3Qg ewotKyAgICAgICAgLy8gV2UgcGlja2VkIGtTaG9ydFN0cmluZyA9PSAwIHNvIHRoYXQgdGFnIDB4 MDAgYW5kIHN0b3JlZCBtYXhfc2l6ZS1zaXplICg3LTc9MCkKLSsgICAgICAgIC8vIGNvbnZlbmll bnRseSBvdmVybGFwIHRoZSAnXDAnIHRlcm1pbmF0b3IsIGFsbG93aW5nIHVzIHRvIHN0b3JlIGEg NyBjaGFyYWN0ZXIKLSsgICAgICAgIC8vIEMgc3RyaW5nIGlubGluZS4KLSsgICAgICAgIGtTaG9y dFN0cmluZyAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDAwMCwgIC8vIGlubGluZSBwYXlsb2Fk Ci0rICAgICAgICBrTnVsbCAgICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAwMDEsICAv LyBubyBwYXlsb2FkCi0rICAgICAgICBrQm9vbCAgICAgICAgICAgICAgICAgICAgICAgICA9IDBi MDAwMDAwMTAsICAvLyBpbmxpbmUgcGF5bG9hZAotKyAgICAgICAga0ludCAgICAgICAgICAgICAg ICAgICAgICAgICAgPSAwYjAwMDAwMDExLCAgLy8gaW5saW5lIHBheWxvYWQKLSsgICAgICAgIGtG bG9hdCAgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDEwMCwgIC8vIGlubGluZSBwYXls b2FkCi0rICAgICAgICBrU3RyaW5nICAgICAgICAgICAgICAgICAgICAgICA9IDBiMDAwMDAxMDEs ICAvLyBwdHIgdG8gZXh0ZXJuYWwgc3RvcmFnZQotKyAgICAgICAga0FycmF5ICAgICAgICAgICAg ICAgICAgICAgICAgPSAwYjAwMDAwMTEwLCAgLy8gcHRyIHRvIGV4dGVybmFsIHN0b3JhZ2UKLSsg ICAgICAgIGtPYmplY3QgICAgICAgICAgICAgICAgICAgICAgID0gMGIwMDAwMDExMSwgIC8vIHB0 ciB0byBleHRlcm5hbCBzdG9yYWdlCi0rICAgIH07Ci0rICAgIHN0YXRpYyBjb25zdGV4cHIgdWlu dDhfdCBrVGFnTWFzayA9IDBiMDAwMDAxMTE7Ci0rI2VuZGlmCi0gCi0gICAgIHZvaWQgaW5pdF90 YWdnZWQoVGFnKTsKLSAgICAgdm9pZCBpbml0X3RhZ2dlZF9wb2ludGVyKFRhZywgdm9pZCopOwot QEAgLTE5MiwxNCArMjA5LDE0IEBAIHByaXZhdGU6Ci0gCi0gICAgIHVpbnQ4X3QgZkRhdGE4W2tW YWx1ZVNpemVdOwotIAotLSNpZiBkZWZpbmVkKFNLX0NQVV9MRU5ESUFOKQotICAgICBzdGF0aWMg Y29uc3RleHByIHNpemVfdCBrVGFnT2Zmc2V0ID0ga1ZhbHVlU2l6ZSAtIDE7Ci0gCi0rI2lmIGRl ZmluZWQoU0tfQ1BVX0xFTkRJQU4pCi0gICAgIHN0YXRpYyBjb25zdGV4cHIgdWludHB0cl90IGtU YWdQb2ludGVyTWFzayA9Ci0gICAgICAgICAgICAgfihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtU YWdNYXNrKSA8PCAoKHNpemVvZih1aW50cHRyX3QpIC0gMSkgKiA4KSk7Ci0gI2Vsc2UKLS0gICAg Ly8gVGhlIGN1cnJlbnQgdmFsdWUgbGF5b3V0IGFzc3VtZXMgTEUgYW5kIHdpbGwgdGFrZSBzb21l IHR3ZWFraW5nIGZvciBCRS4KLS0gICAgc3RhdGljX2Fzc2VydChmYWxzZSwgIkJpZy1lbmRpYW4g YnVpbGRzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoaXMgdGltZS4iKTsKLSsgICAgc3RhdGljIGNv bnN0ZXhwciB1aW50cHRyX3Qga1RhZ1BvaW50ZXJNYXNrID0KLSsgICAgICAgICAgICB+c3RhdGlj X2Nhc3Q8dWludHB0cl90PihrVGFnTWFzayk7Ci0gI2VuZGlmCi0gfTsKLSAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvc2tpYS90aGlyZF9wYXJ0eS9z a2Ntcy9za2Ntcy5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NrY21zLmNjCi1AQCAtNjYsMTAgKzY2LDE1 IEBAIHN0YXRpYyBmbG9hdCBldmFsX2N1cnZlKGNvbnN0IHNrY21zX0N1cnZlKiBjdXJ2ZSwgZmxv YXQgeCkgewotICAgICAgICAgdWludDE2X3QgYmVfbCwgYmVfaDsKLSAgICAgICAgIG1lbWNweSgm YmVfbCwgY3VydmUtPnRhYmxlXzE2ICsgMipsbywgMik7Ci0gICAgICAgICBtZW1jcHkoJmJlX2gs IGN1cnZlLT50YWJsZV8xNiArIDIqaGksIDIpOwotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAg ICAgbCA9IGJlX2wgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICBoID0gYmVfaCAqICgxLzY1NTM1 LjBmKTsKLSsjZWxzZQotICAgICAgICAgdWludDE2X3QgbGVfbCA9ICgoYmVfbCA8PCA4KSB8IChi ZV9sID4+IDgpKSAmIDB4ZmZmZjsKLSAgICAgICAgIHVpbnQxNl90IGxlX2ggPSAoKGJlX2ggPDwg OCkgfCAoYmVfaCA+PiA4KSkgJiAweGZmZmY7Ci0gICAgICAgICBsID0gbGVfbCAqICgxLzY1NTM1 LjBmKTsKLSAgICAgICAgIGggPSBsZV9oICogKDEvNjU1MzUuMGYpOwotKyNlbmRpZgotICAgICB9 Ci0gICAgIHJldHVybiBsICsgKGgtbCkqdDsKLSB9Ci1AQCAtMTI0LDIxICsxMjksMjkgQEAgZW51 bSB7Ci0gc3RhdGljIHVpbnQxNl90IHJlYWRfYmlnX3UxNihjb25zdCB1aW50OF90KiBwdHIpIHsK LSAgICAgdWludDE2X3QgYmU7Ci0gICAgIG1lbWNweSgmYmUsIHB0ciwgc2l6ZW9mKGJlKSk7Ci0r I2lmIF9fQklHX0VORElBTl9fCi0rICAgIHJldHVybiBiZTsKLSsjZWxzZQotICNpZiBkZWZpbmVk KF9NU0NfVkVSKQotICAgICByZXR1cm4gX2J5dGVzd2FwX3VzaG9ydChiZSk7Ci0gI2Vsc2UKLSAg ICAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDE2KGJlKTsKLSAjZW5kaWYKLSsjZW5kaWYKLSB9Ci0g Ci0gc3RhdGljIHVpbnQzMl90IHJlYWRfYmlnX3UzMihjb25zdCB1aW50OF90KiBwdHIpIHsKLSAg ICAgdWludDMyX3QgYmU7Ci0gICAgIG1lbWNweSgmYmUsIHB0ciwgc2l6ZW9mKGJlKSk7Ci0rI2lm IF9fQklHX0VORElBTl9fCi0rICAgIHJldHVybiBiZTsKLSsjZWxzZQotICNpZiBkZWZpbmVkKF9N U0NfVkVSKQotICAgICByZXR1cm4gX2J5dGVzd2FwX3Vsb25nKGJlKTsKLSAjZWxzZQotICAgICBy ZXR1cm4gX19idWlsdGluX2Jzd2FwMzIoYmUpOwotICNlbmRpZgotKyNlbmRpZgotIH0KLSAKLSBz dGF0aWMgaW50MzJfdCByZWFkX2JpZ19pMzIoY29uc3QgdWludDhfdCogcHRyKSB7Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3NraWEvdGhpcmRfcGFy dHkvc2tjbXMvc3JjL1RyYW5zZm9ybV9pbmwuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3NyYy9UcmFuc2Zv cm1faW5sLmgKLUBAIC0zOTIsOSArMzkyLDExIEBAIFNJIFUzMiBnYXRoZXJfMzIoY29uc3QgdWlu dDhfdCogcCwgSTMyIGl4KSB7Ci0gfQotIAotIFNJIFUzMiBnYXRoZXJfMjQoY29uc3QgdWludDhf dCogcCwgSTMyIGl4KSB7Ci0rI2lmICFfX0JJR19FTkRJQU5fXwotICAgICAvLyBGaXJzdCwgYmFj ayB1cCBhIGJ5dGUuICBBbnkgcGxhY2Ugd2UncmUgZ2F0aGVyaW5nIGZyb20gaGFzIGEgc2FmZSBq dW5rIGJ5dGUgdG8gcmVhZAotICAgICAvLyBpbiBmcm9udCBvZiBpdCwgZWl0aGVyIGEgcHJldmlv dXMgdGFibGUgdmFsdWUsIG9yIHNvbWUgdGFnIG1ldGFkYXRhLgotICAgICBwIC09IDE7Ci0rI2Vu ZGlmCi0gCi0gICAgIC8vIExvYWQgdGhlIGkndGggMjQtYml0IHZhbHVlIGZyb20gcCwgYW5kIDEg ZXh0cmEgYnl0ZS4KLSAgICAgYXV0byBsb2FkXzI0XzMyID0gW3BdKGludCBpKSB7Ci1AQCAtNDM1 LDggKzQzNywxMCBAQCBTSSBVMzIgZ2F0aGVyXzI0KGNvbnN0IHVpbnQ4X3QqIHAsIEkzMiBpeCkg ewotIAotICNpZiAhZGVmaW5lZChfX2FybV9fKQotICAgICBTSSB2b2lkIGdhdGhlcl80OChjb25z dCB1aW50OF90KiBwLCBJMzIgaXgsIFU2NCogdikgewotKyNpZiAhX19CSUdfRU5ESUFOX18KLSAg ICAgICAgIC8vIEFzIGluIGdhdGhlcl8yNCgpLCB3aXRoIGV2ZXJ5dGhpbmcgZG91YmxlZC4KLSAg ICAgICAgIHAgLT0gMjsKLSsjZW5kaWYKLSAKLSAgICAgICAgIC8vIExvYWQgdGhlIGkndGggNDgt Yml0IHZhbHVlIGZyb20gcCwgYW5kIDIgZXh0cmEgYnl0ZXMuCi0gICAgICAgICBhdXRvIGxvYWRf NDhfNjQgPSBbcF0oaW50IGkpIHsKLUBAIC00OTksNyArNTAzLDkgQEAgU0kgRiBGX2Zyb21fVTgo VTggdikgewotIFNJIEYgRl9mcm9tX1UxNl9CRShVMTYgdikgewotICAgICAvLyBBbGwgMTYtYml0 IElDQyB2YWx1ZXMgYXJlIGJpZy1lbmRpYW4sIHNvIHdlIGJ5dGUgc3dhcCBiZWZvcmUgY29udmVy dGluZyB0byBmbG9hdC4KLSAgICAgLy8gTVNWQyBjYXRjaGVzIHRoZSAibG9zcyIgb2YgZGF0YSBo ZXJlIGluIHRoZSBwb3J0YWJsZSBwYXRoLCBzbyB3ZSBhbHNvIG1ha2Ugc3VyZSB0byBtYXNrLgot KyNpZiAhX19CSUdfRU5ESUFOX18KLSAgICAgdiA9IFUxNiggMCB8ICgodiAmIDB4MDBmZikgPDwg OCkgfCAoKHYgJiAweGZmMDApID4+IDgpICk7Ci0rI2VuZGlmCi0gICAgIHJldHVybiBjYXN0PEY+ KHYpICogKDEvNjU1MzUuMGYpOwotIH0KLSAKLUBAIC01MzQsOSArNTQwLDE1IEBAIFNJIEYgdGFi bGUoY29uc3Qgc2tjbXNfQ3VydmUqIGN1cnZlLCBGIHYpIHsKLSBTSSB2b2lkIHNhbXBsZV9jbHV0 XzgoY29uc3Qgc2tjbXNfQTJCKiBhMmIsIEkzMiBpeCwgRiogciwgRiogZywgRiogYikgewotICAg ICBVMzIgcmdiID0gZ2F0aGVyXzI0KGEyYi0+Z3JpZF84LCBpeCk7Ci0gCi0rI2lmIF9fQklHX0VO RElBTl9fCi0rICAgICpyID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBm KTsKLSsgICAgKmcgPSBjYXN0PEY+KChyZ2IgPj4gIDgpICYgMHhmZikgKiAoMS8yNTUuMGYpOwot KyAgICAqYiA9IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0rI2Vs c2UKLSAgICAgKnIgPSBjYXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZikgKiAoMS8yNTUuMGYpOwot ICAgICAqZyA9IGNhc3Q8Rj4oKHJnYiA+PiAgOCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAg ICpiID0gY2FzdDxGPigocmdiID4+IDE2KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZW5kaWYK LSB9Ci0gCi0gU0kgdm9pZCBzYW1wbGVfY2x1dF8xNihjb25zdCBza2Ntc19BMkIqIGEyYiwgSTMy IGl4LCBGKiByLCBGKiBnLCBGKiBiKSB7Ci1AQCAtNTQ5LDEyICs1NjEsMTggQEAgU0kgdm9pZCBz YW1wbGVfY2x1dF8xNihjb25zdCBza2Ntc19BMkIqIGEyYiwgSTMyIGl4LCBGKiByLCBGKiBnLCBG KiBiKSB7Ci0gICAgIC8vIFRoaXMgc3RyYXRlZ3kgaXMgbXVjaCBmYXN0ZXIgZm9yIDY0LWJpdCBi dWlsZHMsIGFuZCBmaW5lIGZvciAzMi1iaXQgeDg2IHRvby4KLSAgICAgVTY0IHJnYjsKLSAgICAg Z2F0aGVyXzQ4KGEyYi0+Z3JpZF8xNiwgaXgsICZyZ2IpOwotKyNpZiBfX0JJR19FTkRJQU5fXwot KyAgICAqciA9IGNhc3Q8Rj4oKHJnYiA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwot KyAgICAqZyA9IGNhc3Q8Rj4oKHJnYiA+PiAxNikgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwot KyAgICAqYiA9IGNhc3Q8Rj4oKHJnYiA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwot KyNlbHNlCi0gICAgIHJnYiA9IHN3YXBfZW5kaWFuXzE2eDQocmdiKTsKLSAKLSAgICAgKnIgPSBj YXN0PEY+KChyZ2IgPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgKmcgPSBj YXN0PEY+KChyZ2IgPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgKmIgPSBj YXN0PEY+KChyZ2IgPj4gMzIpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAjZW5kaWYKLSsj ZW5kaWYKLSB9Ci0gCi0gLy8gR0NDIDcuMi4wIGhpdHMgYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJy b3Igd2l0aCAtZmlubGluZS1mdW5jdGlvbnMgKG9yIC1PMykKLUBAIC02OTUsMTAgKzcxMywxNyBA QCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywK LSAgICAgICAgICAgICBjYXNlIE9wX2xvYWRfODg4ODp7Ci0gICAgICAgICAgICAgICAgIFUzMiBy Z2JhID0gbG9hZDxVMzI+KHNyYyArIDQqaSk7Ci0gCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAg ICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChyZ2JhID4+IDI0KSAmIDB4ZmYpICogKDEvMjU1LjBm KTsKLSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHJnYmEgPj4gMTYpICYgMHhmZikgKiAo MS8yNTUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocmdiYSA+PiAgOCkgJiAw eGZmKSAqICgxLzI1NS4wZik7Ci0rICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChyZ2JhID4+ ICAwKSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICByID0g Y2FzdDxGPigocmdiYSA+PiAgMCkgJiAweGZmKSAqICgxLzI1NS4wZik7Ci0gICAgICAgICAgICAg ICAgIGcgPSBjYXN0PEY+KChyZ2JhID4+ICA4KSAmIDB4ZmYpICogKDEvMjU1LjBmKTsKLSAgICAg ICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKHJnYmEgPj4gMTYpICYgMHhmZikgKiAoMS8yNTUuMGYp OwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocmdiYSA+PiAyNCkgJiAweGZmKSAqICgx LzI1NS4wZik7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLSAgICAgICAgICAg ICBjYXNlIE9wX2xvYWRfODg4OF9wYWxldHRlODp7Ci1AQCAtNzI3LDEzICs3NTIsMjkgQEAgc3Rh dGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAg ICAgICAgICAgICAgIGNvbnN0IHVpbnQxNl90KiByZ2IgPSAoY29uc3QgdWludDE2X3QqKXB0cjsg Ly8gY2FzdCB0byBjb25zdCB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYg ZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHZs ZDNfdTE2KHJnYik7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHIgPSBj YXN0PEY+KHN3YXBfZW5kaWFuXzE2KChVMTYpdi52YWxbMF0pKSAqICgxLzY1NTM1LjBmKTsKLSsg ICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsxXSkp ICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPihzd2FwX2VuZGlh bl8xNigoVTE2KXYudmFsWzJdKSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAg ICAgICAgciA9IGNhc3Q8Rj4oKFUxNil2LnZhbFswXSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAg ICAgICAgICAgIGcgPSBjYXN0PEY+KChVMTYpdi52YWxbMV0pICogKDEvNjU1MzUuMGYpOwotICAg ICAgICAgICAgICAgICBiID0gY2FzdDxGPigoVTE2KXYudmFsWzJdKSAqICgxLzY1NTM1LjBmKTsK LSsjZW5kaWYKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAg ICAgICAgICAgICBVMzIgUiA9IGxvYWRfMzxVMzI+KHJnYiswKSwKLSsgICAgICAgICAgICAgICAg ICAgIEcgPSBsb2FkXzM8VTMyPihyZ2IrMSksCi0rICAgICAgICAgICAgICAgICAgICBCID0gbG9h ZF8zPFUzMj4ocmdiKzIpOwotKyAgICAgICAgICAgICAgICAvLyBSLEcsQiBhcmUgbGl0dGxlLWVu ZGlhbiAxNi1iaXQsIHNvIGJ5dGUgc3dhcCB0aGVtIGJlZm9yZSBjb252ZXJ0aW5nIHRvIGZsb2F0 LgotKyAgICAgICAgICAgICAgICByID0gY2FzdDxGPigoUiAmIDB4MDBmZik8PDggfCAoUiAmIDB4 ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigo RyAmIDB4MDBmZik8PDggfCAoRyAmIDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotKyAgICAg ICAgICAgICAgICBiID0gY2FzdDxGPigoQiAmIDB4MDBmZik8PDggfCAoQiAmIDB4ZmYwMCk+Pjgp ICogKDEvNjU1MzUuMGYpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KGxv YWRfMzxVMzI+KHJnYiswKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBj YXN0PEY+KGxvYWRfMzxVMzI+KHJnYisxKSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAg ICAgIGIgPSBjYXN0PEY+KGxvYWRfMzxVMzI+KHJnYisyKSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vu ZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gICAgICAgICAgICAgfSBicmVhazsKLSAKLUBAIC03 NDMsMTcgKzc4NCwzMyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25zdCBPcCogb3BzLCBjb25z dCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICAgICAgY29uc3QgdWludDE2X3QqIHJnYmEgPSAo Y29uc3QgdWludDE2X3QqKXB0cjsgLy8gY2FzdCB0byBjb25zdCB1aW50MTZfdCogdG8gYmUgc2Fm ZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAg ICB1aW50MTZ4NHg0X3QgdiA9IHZsZDRfdTE2KHJnYmEpOwotKyNpZiBfX0JJR19FTkRJQU5fXwot KyAgICAgICAgICAgICAgICByID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzBd KSkgKiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KHN3YXBfZW5k aWFuXzE2KChVMTYpdi52YWxbMV0pKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAg YiA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFsyXSkpICogKDEvNjU1MzUuMGYp OwotKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFs WzNdKSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9IGNhc3Q8 Rj4oKFUxNil2LnZhbFswXSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGcgPSBj YXN0PEY+KChVMTYpdi52YWxbMV0pICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBi ID0gY2FzdDxGPigoVTE2KXYudmFsWzJdKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAg ICAgYSA9IGNhc3Q8Rj4oKFUxNil2LnZhbFszXSkgKiAoMS82NTUzNS4wZik7Ci0rI2VuZGlmCi0g ICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAg VTY0IHB4ID0gc3dhcF9lbmRpYW5fMTZ4NChsb2FkPFU2ND4ocmdiYSkpOwotKwotKyAgICAgICAg ICAgICAgICByID0gY2FzdDxGPigocHggPj4gNDgpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsK LSsgICAgICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82 NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAxNikgJiAweGZm ZmYpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4g IDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBV NjQgcHggPSBsb2FkPFU2ND4ocmdiYSk7Ci0gCi0gICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+ KChweCA+PiAgMCkgJiAweGZmZmYpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBn ID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAg ICAgICAgICAgYiA9IGNhc3Q8Rj4oKHB4ID4+IDMyKSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7 Ci0gICAgICAgICAgICAgICAgIGEgPSBjYXN0PEY+KChweCA+PiA0OCkgJiAweGZmZmYpICogKDEv NjU1MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0g YnJlYWs7Ci0gCi1AQCAtNzYzLDEwICs4MjAsMjEgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29u c3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHVp bnQxNl90KiByZ2IgPSAoY29uc3QgdWludDE2X3QqKXB0cjsgLy8gY2FzdCB0byBjb25zdCB1aW50 MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQot ICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHZsZDNfdTE2KHJnYik7Ci0rI2lmIF9f QklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgIHIgPSBjYXN0PEY+KChVMTYpdi52YWxbMF0p ICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoVTE2KXYudmFs WzFdKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYiA9IGNhc3Q8Rj4oKFUxNil2 LnZhbFsyXSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9IGNh c3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYpOwotICAg ICAgICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzFdKSkg KiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBfZW5kaWFu XzE2KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAg ICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5fXwotKyAgICAgICAgICAgICAgICByID0gY2FzdDxG Pihsb2FkXzM8VTMyPihyZ2IrMCkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBn ID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMSkpICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAg ICAgICAgICBiID0gY2FzdDxGPihsb2FkXzM8VTMyPihyZ2IrMikpICogKDEvNjU1MzUuMGYpOwot KyNlbHNlCi0gICAgICAgICAgICAgICAgIFUzMiBSID0gbG9hZF8zPFUzMj4ocmdiKzApLAotICAg ICAgICAgICAgICAgICAgICAgRyA9IGxvYWRfMzxVMzI+KHJnYisxKSwKLSAgICAgICAgICAgICAg ICAgICAgIEIgPSBsb2FkXzM8VTMyPihyZ2IrMik7Ci1AQCAtNzc0LDYgKzg0Miw3IEBAIHN0YXRp YyB2b2lkIGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAg ICAgICAgICAgICByID0gY2FzdDxGPigoUiAmIDB4MDBmZik8PDggfCAoUiAmIDB4ZmYwMCk+Pjgp ICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPigoRyAmIDB4MDBm Zik8PDggfCAoRyAmIDB4ZmYwMCk+PjgpICogKDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAg ICBiID0gY2FzdDxGPigoQiAmIDB4MDBmZik8PDggfCAoQiAmIDB4ZmYwMCk+PjgpICogKDEvNjU1 MzUuMGYpOwotKyNlbmRpZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0gYnJl YWs7Ci0gCi1AQCAtNzgzLDE3ICs4NTIsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3Qg T3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQx Nl90KiByZ2JhID0gKGNvbnN0IHVpbnQxNl90KilwdHI7IC8vIGNhc3QgdG8gY29uc3QgdWludDE2 X3QqIHRvIGJlIHNhZmUuCi0gICAgICAgICAgICAgI2lmIGRlZmluZWQoVVNJTkdfTkVPTikKLSAg ICAgICAgICAgICAgICAgdWludDE2eDR4NF90IHYgPSB2bGQ0X3UxNihyZ2JhKTsKLSsjaWYgX19C SUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgciA9IGNhc3Q8Rj4oKFUxNil2LnZhbFswXSkg KiAoMS82NTUzNS4wZik7Ci0rICAgICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChVMTYpdi52YWxb MV0pICogKDEvNjU1MzUuMGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigoVTE2KXYu dmFsWzJdKSAqICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKFUx Nil2LnZhbFszXSkgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgciA9 IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFswXSkpICogKDEvNjU1MzUuMGYpOwot ICAgICAgICAgICAgICAgICBnID0gY2FzdDxGPihzd2FwX2VuZGlhbl8xNigoVTE2KXYudmFsWzFd KSkgKiAoMS82NTUzNS4wZik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KHN3YXBfZW5k aWFuXzE2KChVMTYpdi52YWxbMl0pKSAqICgxLzY1NTM1LjBmKTsKLSAgICAgICAgICAgICAgICAg YSA9IGNhc3Q8Rj4oc3dhcF9lbmRpYW5fMTYoKFUxNil2LnZhbFszXSkpICogKDEvNjU1MzUuMGYp OwotKyNlbmRpZgotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAg ICAgICAgICAgICAgIFU2NCBweCA9IGxvYWQ8VTY0PihyZ2JhKTsKLSsKLSsgICAgICAgICAgICAg ICAgciA9IGNhc3Q8Rj4oKHB4ID4+IDQ4KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rICAg ICAgICAgICAgICAgIGcgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICogKDEvNjU1MzUu MGYpOwotKyAgICAgICAgICAgICAgICBiID0gY2FzdDxGPigocHggPj4gMTYpICYgMHhmZmZmKSAq ICgxLzY1NTM1LjBmKTsKLSsgICAgICAgICAgICAgICAgYSA9IGNhc3Q8Rj4oKHB4ID4+ICAwKSAm IDB4ZmZmZikgKiAoMS82NTUzNS4wZik7Ci0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgVTY0IHB4 ID0gc3dhcF9lbmRpYW5fMTZ4NChsb2FkPFU2ND4ocmdiYSkpOwotIAotICAgICAgICAgICAgICAg ICByID0gY2FzdDxGPigocHggPj4gIDApICYgMHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSAgICAg ICAgICAgICAgICAgZyA9IGNhc3Q8Rj4oKHB4ID4+IDE2KSAmIDB4ZmZmZikgKiAoMS82NTUzNS4w Zik7Ci0gICAgICAgICAgICAgICAgIGIgPSBjYXN0PEY+KChweCA+PiAzMikgJiAweGZmZmYpICog KDEvNjU1MzUuMGYpOwotICAgICAgICAgICAgICAgICBhID0gY2FzdDxGPigocHggPj4gNDgpICYg MHhmZmZmKSAqICgxLzY1NTM1LjBmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAg ICAgICAgICAgICB9IGJyZWFrOwotIAotQEAgLTgyOCwxMCArOTEzLDE3IEBAIHN0YXRpYyB2b2lk IGV4ZWNfb3BzKGNvbnN0IE9wKiBvcHMsIGNvbnN0IHZvaWQqKiBhcmdzLAotICAgICAgICAgICAg ICAgICAgICAgQSA9IChVMTYpdi52YWxbM107Ci0gICAgICAgICAgICAgI2Vsc2UKLSAgICAgICAg ICAgICAgICAgVTY0IHB4ID0gbG9hZDxVNjQ+KHJnYmEpOwotKyNpZiBfX0JJR19FTkRJQU5fXwot KyAgICAgICAgICAgICAgICBVMTYgUiA9IGNhc3Q8VTE2PigocHggPj4gNDgpICYgMHhmZmZmKSwK LSsgICAgICAgICAgICAgICAgICAgIEcgPSBjYXN0PFUxNj4oKHB4ID4+IDMyKSAmIDB4ZmZmZiks Ci0rICAgICAgICAgICAgICAgICAgICBCID0gY2FzdDxVMTY+KChweCA+PiAxNikgJiAweGZmZmYp LAotKyAgICAgICAgICAgICAgICAgICAgQSA9IGNhc3Q8VTE2PigocHggPj4gIDApICYgMHhmZmZm KTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBVMTYgUiA9IGNhc3Q8VTE2PigocHggPj4gIDAp ICYgMHhmZmZmKSwKLSAgICAgICAgICAgICAgICAgICAgIEcgPSBjYXN0PFUxNj4oKHB4ID4+IDE2 KSAmIDB4ZmZmZiksCi0gICAgICAgICAgICAgICAgICAgICBCID0gY2FzdDxVMTY+KChweCA+PiAz MikgJiAweGZmZmYpLAotICAgICAgICAgICAgICAgICAgICAgQSA9IGNhc3Q8VTE2PigocHggPj4g NDgpICYgMHhmZmZmKTsKLSsjZW5kaWYKLSAgICAgICAgICAgICAjZW5kaWYKLSAgICAgICAgICAg ICAgICAgciA9IEZfZnJvbV9IYWxmKFIpOwotICAgICAgICAgICAgICAgICBnID0gRl9mcm9tX0hh bGYoRyk7Ci1AQCAtMTAyNCwxMCArMTExNiwxNyBAQCBzdGF0aWMgdm9pZCBleGVjX29wcyhjb25z dCBPcCogb3BzLCBjb25zdCB2b2lkKiogYXJncywKLSAgICAgICAgICAgICB9IHJldHVybjsKLSAK LSAgICAgICAgICAgICBjYXNlIE9wX3N0b3JlXzg4ODg6IHsKLSsjaWYgX19CSUdfRU5ESUFOX18K LSsgICAgICAgICAgICAgICAgc3RvcmUoZHN0ICsgNCppLCBjYXN0PFUzMj4odG9fZml4ZWQociAq IDI1NSkgPDwgMjQpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVMzI+ KHRvX2ZpeGVkKGcgKiAyNTUpIDw8IDE2KQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB8IGNhc3Q8VTMyPih0b19maXhlZChiICogMjU1KSA8PCAgOCkKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCBjYXN0PFUzMj4odG9fZml4ZWQoYSAqIDI1NSkgPDwgIDApKTsKLSsj ZWxzZQotICAgICAgICAgICAgICAgICBzdG9yZShkc3QgKyA0KmksIGNhc3Q8VTMyPih0b19maXhl ZChyICogMjU1KSA8PCAgMCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0 PFUzMj4odG9fZml4ZWQoZyAqIDI1NSkgPDwgIDgpCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgY2FzdDxVMzI+KHRvX2ZpeGVkKGIgKiAyNTUpIDw8IDE2KQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTMyPih0b19maXhlZChhICogMjU1KSA8PCAyNCkp OwotKyNlbmRpZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotICAgICAgICAgICAgIGNhc2Ug T3Bfc3RvcmVfMTAxMDEwMjogewotQEAgLTEwNDMsMTUgKzExNDIsMzAgQEAgc3RhdGljIHZvaWQg ZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAg ICAgIHVpbnQxNl90KiByZ2IgPSAodWludDE2X3QqKXB0cjsgICAgICAgICAgLy8gZm9yIHRoaXMg Y2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAgICAjaWYgZGVmaW5lZChV U0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3QgdiA9IHt7Ci0rI2lmIF9f QklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlh bl8xNihjYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAg ICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUz NSkpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNh c3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAgICAg ICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSAgICAgICAg ICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSwK LSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChiICog NjU1MzUpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAgICAg IHZzdDNfdTE2KHJnYiwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UKLSsjaWYgX19CSUdfRU5ESUFO X18KLSsgICAgICAgICAgICAgICAgSTMyIFIgPSB0b19maXhlZChyICogNjU1MzUpLAotKyAgICAg ICAgICAgICAgICAgICAgRyA9IHRvX2ZpeGVkKGcgKiA2NTUzNSksCi0rICAgICAgICAgICAgICAg ICAgICBCID0gdG9fZml4ZWQoYiAqIDY1NTM1KTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhy Z2IrMCwgY2FzdDxVMTY+KChSICYgMHgwMGZmKSA8PCA4IHwgKFIgJiAweGZmMDApID4+IDgpICk7 Ci0rICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzEsIGNhc3Q8VTE2PigoRyAmIDB4MDBmZikg PDwgOCB8IChHICYgMHhmZjAwKSA+PiA4KSApOwotKyAgICAgICAgICAgICAgICBzdG9yZV8zKHJn YisyLCBjYXN0PFUxNj4oKEIgJiAweDAwZmYpIDw8IDggfCAoQiAmIDB4ZmYwMCkgPj4gOCkgKTsK LSsjZWxzZQotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYiswLCBjYXN0PFUxNj4odG9fZml4 ZWQociAqIDY1NTM1KSkpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisxLCBjYXN0PFUx Nj4odG9fZml4ZWQoZyAqIDY1NTM1KSkpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYisy LCBjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpOwotKyNlbmRpZgotICAgICAgICAgICAg ICNlbmRpZgotIAotICAgICAgICAgICAgIH0gcmV0dXJuOwotQEAgLTEwNjIsMTggKzExNzYsMzMg QEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3Ms Ci0gICAgICAgICAgICAgICAgIHVpbnQxNl90KiByZ2JhID0gKHVpbnQxNl90KilwdHI7ICAgICAg ICAvLyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBzYWZlLgotICAgICAgICAgICAg ICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAgIHVpbnQxNng0eDRfdCB2 ID0ge3sKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4 NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCi0rICAg ICAgICAgICAgICAgICAgICAodWludDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9f Zml4ZWQoZyAqIDY1NTM1KSkpLAotKyAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dh cF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKLSsgICAgICAgICAg ICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0b19maXhlZChh ICogNjU1MzUpKSksCi0rI2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNh c3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSAgICAgICAgICAgICAgICAgICAgICh1aW50 MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUpKSwKLSAgICAgICAgICAgICAgICAg ICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChiICogNjU1MzUpKSwKLSAgICAgICAg ICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChhICogNjU1MzUpKSwK LSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAgICAgICAgIHZzdDRfdTE2 KHJnYmEsIHYpOwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklHX0VORElBTl9fCi0rICAg ICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0b19maXhlZChyICogNjU1MzUpKSA8PCA0 OAotKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoZyAqIDY1NTM1 KSkgPDwgMzIKLSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGIg KiA2NTUzNSkpIDw8IDE2Ci0rICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19m aXhlZChhICogNjU1MzUpKSA8PCAgMDsKLSsgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgc3dh cF9lbmRpYW5fMTZ4NChweCkpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IGNh c3Q8VTY0Pih0b19maXhlZChyICogNjU1MzUpKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAg ICAgfCBjYXN0PFU2ND4odG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMTYKLSAgICAgICAgICAgICAg ICAgICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDMyCi0gICAgICAg ICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCA0ODsK LSAgICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgcHgpOwotKyNlbmRpZgotICAgICAgICAgICAg ICNlbmRpZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotQEAgLTEwODMsMTggKzEyMTIsMzAg QEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29uc3Qgdm9pZCoqIGFyZ3Ms Ci0gICAgICAgICAgICAgICAgIHVpbnQxNl90KiByZ2IgPSAodWludDE2X3QqKXB0cjsgICAgICAg ICAgLy8gZm9yIHRoaXMgY2FzdCB0byB1aW50MTZfdCogdG8gYmUgc2FmZS4KLSAgICAgICAgICAg ICAjaWYgZGVmaW5lZChVU0lOR19ORU9OKQotICAgICAgICAgICAgICAgICB1aW50MTZ4NHgzX3Qg diA9IHt7Ci0rI2lmIF9fQklHX0VORElBTl9fCi0rICAgICAgICAgICAgICAgICAgICAodWludDE2 eDRfdCljYXN0PFUxNj4odG9fZml4ZWQociAqIDY1NTM1KSksCi0rICAgICAgICAgICAgICAgICAg ICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSksCi0rICAgICAgICAg ICAgICAgICAgICAodWludDE2eDRfdCljYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSksCi0r I2Vsc2UKLSAgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNh c3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWlu dDE2eDRfdClzd2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoZyAqIDY1NTM1KSkpLAot ICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+ KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0g ICAgICAgICAgICAgICAgIHZzdDNfdTE2KHJnYiwgdik7Ci0gICAgICAgICAgICAgI2Vsc2UKLSsj aWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMCwgY2FzdDxV MTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKTsKLSsgICAgICAgICAgICAgICAgc3RvcmVfMyhyZ2Ir MSwgY2FzdDxVMTY+KHRvX2ZpeGVkKGcgKiA2NTUzNSkpKTsKLSsgICAgICAgICAgICAgICAgc3Rv cmVfMyhyZ2IrMiwgY2FzdDxVMTY+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpKTsKLSsjZWxzZQotICAg ICAgICAgICAgICAgICBJMzIgUiA9IHRvX2ZpeGVkKHIgKiA2NTUzNSksCi0gICAgICAgICAgICAg ICAgICAgICBHID0gdG9fZml4ZWQoZyAqIDY1NTM1KSwKLSAgICAgICAgICAgICAgICAgICAgIEIg PSB0b19maXhlZChiICogNjU1MzUpOwotICAgICAgICAgICAgICAgICBzdG9yZV8zKHJnYiswLCBj YXN0PFUxNj4oKFIgJiAweDAwZmYpIDw8IDggfCAoUiAmIDB4ZmYwMCkgPj4gOCkgKTsKLSAgICAg ICAgICAgICAgICAgc3RvcmVfMyhyZ2IrMSwgY2FzdDxVMTY+KChHICYgMHgwMGZmKSA8PCA4IHwg KEcgJiAweGZmMDApID4+IDgpICk7Ci0gICAgICAgICAgICAgICAgIHN0b3JlXzMocmdiKzIsIGNh c3Q8VTE2PigoQiAmIDB4MDBmZikgPDwgOCB8IChCICYgMHhmZjAwKSA+PiA4KSApOwotKyNlbmRp ZgotICAgICAgICAgICAgICNlbmRpZgotIAotICAgICAgICAgICAgIH0gcmV0dXJuOwotQEAgLTEx MDUsMTggKzEyNDYsMzMgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29u c3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIHVpbnQxNl90KiByZ2JhID0gKHVpbnQx Nl90KilwdHI7ICAgICAgICAvLyBmb3IgdGhpcyBjYXN0IHRvIHVpbnQxNl90KiB0byBiZSBzYWZl LgotICAgICAgICAgICAgICNpZiBkZWZpbmVkKFVTSU5HX05FT04pCi0gICAgICAgICAgICAgICAg IHVpbnQxNng0eDRfdCB2ID0ge3sKLSsjaWYgX19CSUdfRU5ESUFOX18KLSsgICAgICAgICAgICAg ICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChyICogNjU1MzUpKSwKLSsgICAg ICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChnICogNjU1MzUp KSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0b19maXhlZChi ICogNjU1MzUpKSwKLSsgICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KWNhc3Q8VTE2Pih0 b19maXhlZChhICogNjU1MzUpKSwKLSsjZWxzZQotICAgICAgICAgICAgICAgICAgICAgKHVpbnQx Nng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVkKHIgKiA2NTUzNSkpKSwKLSAg ICAgICAgICAgICAgICAgICAgICh1aW50MTZ4NF90KXN3YXBfZW5kaWFuXzE2KGNhc3Q8VTE2Pih0 b19maXhlZChnICogNjU1MzUpKSksCi0gICAgICAgICAgICAgICAgICAgICAodWludDE2eDRfdClz d2FwX2VuZGlhbl8xNihjYXN0PFUxNj4odG9fZml4ZWQoYiAqIDY1NTM1KSkpLAotICAgICAgICAg ICAgICAgICAgICAgKHVpbnQxNng0X3Qpc3dhcF9lbmRpYW5fMTYoY2FzdDxVMTY+KHRvX2ZpeGVk KGEgKiA2NTUzNSkpKSwKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgfX07Ci0gICAgICAgICAg ICAgICAgIHZzdDRfdTE2KHJnYmEsIHYpOwotICAgICAgICAgICAgICNlbHNlCi0rI2lmIF9fQklH X0VORElBTl9fCi0rICAgICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8VTY0Pih0b19maXhlZChy ICogNjU1MzUpKSA8PCA0OAotKyAgICAgICAgICAgICAgICAgICAgICAgfCBjYXN0PFU2ND4odG9f Zml4ZWQoZyAqIDY1NTM1KSkgPDwgMzIKLSsgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxV NjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDE2Ci0rICAgICAgICAgICAgICAgICAgICAgICB8 IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCAgMDsKLSsgICAgICAgICAgICAgICAg c3RvcmUocmdiYSwgcHgpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIFU2NCBweCA9IGNhc3Q8 VTY0Pih0b19maXhlZChyICogNjU1MzUpKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAgICAg fCBjYXN0PFU2ND4odG9fZml4ZWQoZyAqIDY1NTM1KSkgPDwgMTYKLSAgICAgICAgICAgICAgICAg ICAgICAgIHwgY2FzdDxVNjQ+KHRvX2ZpeGVkKGIgKiA2NTUzNSkpIDw8IDMyCi0gICAgICAgICAg ICAgICAgICAgICAgICB8IGNhc3Q8VTY0Pih0b19maXhlZChhICogNjU1MzUpKSA8PCA0ODsKLSAg ICAgICAgICAgICAgICAgc3RvcmUocmdiYSwgc3dhcF9lbmRpYW5fMTZ4NChweCkpOwotKyNlbmRp ZgotICAgICAgICAgICAgICNlbmRpZgotICAgICAgICAgICAgIH0gcmV0dXJuOwotIAotQEAgLTEx NjAsMTAgKzEzMTYsMTcgQEAgc3RhdGljIHZvaWQgZXhlY19vcHMoY29uc3QgT3AqIG9wcywgY29u c3Qgdm9pZCoqIGFyZ3MsCi0gICAgICAgICAgICAgICAgIH19OwotICAgICAgICAgICAgICAgICB2 c3Q0X3UxNihyZ2JhLCB2KTsKLSAgICAgICAgICAgICAjZWxzZQotKyNpZiBfX0JJR19FTkRJQU5f XwotKyAgICAgICAgICAgICAgICBzdG9yZShyZ2JhLCBjYXN0PFU2ND4oUikgPDwgNDgKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxVNjQ+KEcpIDw8IDMyCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihCKSA8PCAxNgotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgfCBjYXN0PFU2ND4oQSkgPDwgIDApOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIHN0 b3JlKHJnYmEsIGNhc3Q8VTY0PihSKSA8PCAgMAotICAgICAgICAgICAgICAgICAgICAgICAgICAg fCBjYXN0PFU2ND4oRykgPDwgMTYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FzdDxV NjQ+KEIpIDw8IDMyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhc3Q8VTY0PihBKSA8 PCA0OCk7Ci0rI2VuZGlmCi0gICAgICAgICAgICAgI2VuZGlmCi0gCi0gICAgICAgICAgICAgfSBy ZXR1cm47Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3dlYnJ0Yy9jb21tb25fYXVkaW8vd2F2X2ZpbGUuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfZmlsZS5j YwotQEAgLTkzLDEzICs5MywxNSBAQCBzaXplX3QgV2F2UmVhZGVyOjpudW1fc2FtcGxlcygpIGNv bnN0IHsKLSB9Ci0gCi0gc2l6ZV90IFdhdlJlYWRlcjo6UmVhZFNhbXBsZXMoc2l6ZV90IG51bV9z YW1wbGVzLCBpbnQxNl90KiBzYW1wbGVzKSB7Ci0tI2lmbmRlZiBXRUJSVENfQVJDSF9MSVRUTEVf RU5ESUFOCi0tI2Vycm9yICJOZWVkIHRvIGNvbnZlcnQgc2FtcGxlcyB0byBiaWctZW5kaWFuIHdo ZW4gcmVhZGluZyBmcm9tIFdBViBmaWxlIgotLSNlbmRpZgotICAgLy8gVGhlcmUgY291bGQgYmUg bWV0YWRhdGEgYWZ0ZXIgdGhlIGF1ZGlvOyBlbnN1cmUgd2UgZG9uJ3QgcmVhZCBpdC4KLSAgIG51 bV9zYW1wbGVzID0gc3RkOjptaW4obnVtX3NhbXBsZXMsIG51bV9zYW1wbGVzX3JlbWFpbmluZ18p OwotICAgY29uc3Qgc2l6ZV90IHJlYWQgPQotICAgICAgIGZyZWFkKHNhbXBsZXMsIHNpemVvZigq c2FtcGxlcyksIG51bV9zYW1wbGVzLCBmaWxlX2hhbmRsZV8pOwotKyNpZm5kZWYgV0VCUlRDX0FS Q0hfTElUVExFX0VORElBTgotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZWFkOyBpKyspIHsK LSsgICAgICBzYW1wbGVzW2ldID0gX19idWlsdGluX2Jzd2FwMTYoc2FtcGxlc1tpXSk7Ci0rICB9 Ci0rI2VuZGlmCi0gICAvLyBJZiB3ZSBkaWRuJ3QgcmVhZCB3aGF0IHdhcyByZXF1ZXN0ZWQsIGVu c3VyZSB3ZSd2ZSByZWFjaGVkIHRoZSBFT0YuCi0gICBSVENfQ0hFQ0socmVhZCA9PSBudW1fc2Ft cGxlcyB8fCBmZW9mKGZpbGVfaGFuZGxlXykpOwotICAgUlRDX0NIRUNLX0xFKHJlYWQsIG51bV9z YW1wbGVzX3JlbWFpbmluZ18pOwotQEAgLTE3OCwxMyArMTgwLDI2IEBAIHNpemVfdCBXYXZXcml0 ZXI6Om51bV9zYW1wbGVzKCkgY29uc3QgewotIAotIHZvaWQgV2F2V3JpdGVyOjpXcml0ZVNhbXBs ZXMoY29uc3QgaW50MTZfdCogc2FtcGxlcywgc2l6ZV90IG51bV9zYW1wbGVzKSB7Ci0gI2lmbmRl ZiBXRUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCi0tI2Vycm9yICJOZWVkIHRvIGNvbnZlcnQgc2Ft cGxlcyB0byBsaXR0bGUtZW5kaWFuIHdoZW4gd3JpdGluZyB0byBXQVYgZmlsZSIKLS0jZW5kaWYK LSsgIHN0YXRpYyBjb25zdCBzaXplX3Qga0NodW5rc2l6ZSA9IDQwOTYgLyBzaXplb2YodWludDE2 X3QpOwotKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1fc2FtcGxlczsgaSArPSBrQ2h1bmtz aXplKSB7Ci0rICAgIGludDE2X3QgaXNhbXBsZXNba0NodW5rc2l6ZV07Ci0rICAgIGNvbnN0IHNp emVfdCBjaHVuayA9IHN0ZDo6bWluKGtDaHVua3NpemUsIG51bV9zYW1wbGVzIC0gaSk7Ci0rICAg IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgY2h1bms7IGorKykgewotKyAgICAgIGlzYW1wbGVzW2pd ID0gX19idWlsdGluX2Jzd2FwMTYoc2FtcGxlc1tpICsgal0pOwotKyAgICB9Ci0rICAgIGNvbnN0 IHNpemVfdCB3cml0dGVuID0KLSsgICAgICAgIGZ3cml0ZShpc2FtcGxlcywgc2l6ZW9mKCppc2Ft cGxlcyksIGNodW5rLCBmaWxlX2hhbmRsZV8pOwotKyAgICBSVENfQ0hFQ0tfRVEoY2h1bmssIHdy aXR0ZW4pOwotKyAgICBudW1fc2FtcGxlc18gKz0gd3JpdHRlbjsKLSsgICAgUlRDX0NIRUNLKG51 bV9zYW1wbGVzXyA+PSB3cml0dGVuKTsgIC8vIGRldGVjdCBzaXplX3Qgb3ZlcmZsb3cKLSsgIH0K LSsjZWxzZQotICAgY29uc3Qgc2l6ZV90IHdyaXR0ZW4gPQotICAgICAgIGZ3cml0ZShzYW1wbGVz LCBzaXplb2YoKnNhbXBsZXMpLCBudW1fc2FtcGxlcywgZmlsZV9oYW5kbGVfKTsKLSAgIFJUQ19D SEVDS19FUShudW1fc2FtcGxlcywgd3JpdHRlbik7Ci0gICBudW1fc2FtcGxlc18gKz0gd3JpdHRl bjsKLSAgIFJUQ19DSEVDSyhudW1fc2FtcGxlc18gPj0gd3JpdHRlbik7ICAvLyBkZXRlY3Qgc2l6 ZV90IG92ZXJmbG93Ci0rI2VuZGlmCi0gfQotIAotIHZvaWQgV2F2V3JpdGVyOjpXcml0ZVNhbXBs ZXMoY29uc3QgZmxvYXQqIHNhbXBsZXMsIHNpemVfdCBudW1fc2FtcGxlcykgewotLS0tIHF0d2Vi ZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvY29tbW9uX2F1 ZGlvL3dhdl9oZWFkZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvd2VicnRjL2NvbW1vbl9hdWRpby93YXZfaGVhZGVyLmNjCi1AQCAtODYsNyAr ODYsMjYgQEAgc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91ckNDKHVpbnQzMl90IHgp IHsKLSAgIHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNoYXIqPigmeCksIDQp OwotIH0KLSAjZWxzZQotLSNlcnJvciAiV3JpdGUgYmUtdG8tbGUgY29udmVyc2lvbiBmdW5jdGlv bnMiCi0rc3RhdGljIGlubGluZSB2b2lkIFdyaXRlTEUxNih1aW50MTZfdCogZiwgdWludDE2X3Qg eCkgewotKyAgKmYgPSBfX2J1aWx0aW5fYnN3YXAxNih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSB2 b2lkIFdyaXRlTEUzMih1aW50MzJfdCogZiwgdWludDMyX3QgeCkgewotKyAgKmYgPSBfX2J1aWx0 aW5fYnN3YXAzMih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSB2b2lkIFdyaXRlRm91ckNDKHVpbnQz Ml90KiBmLCBjaGFyIGEsIGNoYXIgYiwgY2hhciBjLCBjaGFyIGQpIHsKLSsgICpmID0gc3RhdGlj X2Nhc3Q8dWludDMyX3Q+KGQpIHwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGMpIDw8IDggfAotKyAg ICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4oYikgPDwgMTYgfCBzdGF0aWNfY2FzdDx1aW50MzJf dD4oYSkgPDwgMjQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdWludDE2X3QgUmVhZExFMTYodWlu dDE2X3QgeCkgewotKyAgcmV0dXJuIF9fYnVpbHRpbl9ic3dhcDE2KHgpOwotK30KLStzdGF0aWMg aW5saW5lIHVpbnQzMl90IFJlYWRMRTMyKHVpbnQzMl90IHgpIHsKLSsgIHJldHVybiBfX2J1aWx0 aW5fYnN3YXAzMih4KTsKLSt9Ci0rc3RhdGljIGlubGluZSBzdGQ6OnN0cmluZyBSZWFkRm91ckND KHVpbnQzMl90IHgpIHsKLSsgIHJldHVybiBzdGQ6OnN0cmluZyhyZWludGVycHJldF9jYXN0PGNo YXIqPigmeCksIDQpOwotK30KLSAjZW5kaWYKLSAKLSBzdGF0aWMgaW5saW5lIHVpbnQzMl90IFJp ZmZDaHVua1NpemUoc2l6ZV90IGJ5dGVzX2luX3BheWxvYWQpIHsKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYXVyYS9tdXMvb3NfZXhjaGFuZ2VfZGF0YV9wcm92aWRl cl9tdXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYXVyYS9t dXMvb3NfZXhjaGFuZ2VfZGF0YV9wcm92aWRlcl9tdXMuY2MKLUBAIC0xNCw2ICsxNCw3IEBACi0g I2luY2x1ZGUgImJhc2Uvc3RyaW5ncy9zdHJpbmdfc3BsaXQuaCIKLSAjaW5jbHVkZSAiYmFzZS9z dHJpbmdzL3N0cmluZ191dGlsLmgiCi0gI2luY2x1ZGUgImJhc2Uvc3RyaW5ncy91dGZfc3RyaW5n X2NvbnZlcnNpb25zLmgiCi0rI2luY2x1ZGUgImJhc2Uvc3lzX2J5dGVvcmRlci5oIgotICNpbmNs dWRlICJuZXQvYmFzZS9maWxlbmFtZV91dGlsLmgiCi0gI2luY2x1ZGUgInVpL2Jhc2UvY2xpcGJv YXJkL2NsaXBib2FyZF9jb25zdGFudHMuaCIKLSAjaW5jbHVkZSAidWkvYmFzZS9jbGlwYm9hcmQv Y2xpcGJvYXJkX2Zvcm1hdF90eXBlLmgiCi1AQCAtMjc5LDggKzI4MCwxMyBAQCB2b2lkIE9TRXhj aGFuZ2VEYXRhUHJvdmlkZXJNdXM6OlNldEh0bWwoY29uc3QgYmFzZTo6c3RyaW5nMTYmIGh0bWws Ci0gICBzdGQ6OnZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBieXRlczsKLSAgIC8vIE1hbnVhbGx5IGph bSBhIFVURjE2IEJPTSBpbnRvIGJ5dGVzIGJlY2F1c2Ugb3RoZXJ3aXNlLCBvdGhlciBwcm9ncmFt cyB3aWxsCi0gICAvLyBhc3N1bWUgVVRGLTguCi0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExF X0VORElBTikKLSAgIGJ5dGVzLnB1c2hfYmFjaygweEZGKTsKLSAgIGJ5dGVzLnB1c2hfYmFjaygw eEZFKTsKLSsjZWxzZQotKyAgYnl0ZXMucHVzaF9iYWNrKDB4RkUpOwotKyAgYnl0ZXMucHVzaF9i YWNrKDB4RkYpOwotKyNlbmRpZgotICAgQWRkU3RyaW5nMTZUb1ZlY3RvcihodG1sLCAmYnl0ZXMp OwotICAgbWltZV9kYXRhX1t1aTo6a01pbWVUeXBlSFRNTF0gPSBieXRlczsKLSB9Ci0tLS0gcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNr LmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3Vy Y2UvZGF0YV9wYWNrLmNjCi1AQCAtMTU0LDE2ICsxNTQsNDIgQEAgY2xhc3MgU2NvcGVkRmlsZVdy aXRlciB7Ci0gICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU2NvcGVkRmlsZVdyaXRlcik7Ci0g fTsKLSAKLStzdGF0aWMgaW5saW5lIHVpbnQxNl90IGJ5dGVzd2FwKHVpbnQxNl90IHYpIHsgcmV0 dXJuIF9fYnVpbHRpbl9ic3dhcDE2KHYpOyB9Ci0rc3RhdGljIGlubGluZSB1aW50MzJfdCBieXRl c3dhcCh1aW50MzJfdCB2KSB7IHJldHVybiBfX2J1aWx0aW5fYnN3YXAzMih2KTsgfQotKwotK3Rl bXBsYXRlPGNsYXNzIFQ+IGNsYXNzIGJ5dGVzd2FwcGVkX3QgewotK3ByaXZhdGU6Ci0rICBUIHZh bHVlOwotK3B1YmxpYzoKLSsgIGlubGluZSBieXRlc3dhcHBlZF90KFQgdikgOiB2YWx1ZShieXRl c3dhcCh2KSkgeyB9Ci0rICBpbmxpbmUgVCBvcGVyYXRvcj0oVCB2KSB7IHZhbHVlID0gYnl0ZXN3 YXAodik7IHJldHVybiB2OyB9Ci0rICBpbmxpbmUgVCBvcGVyYXRvcis9KFQgdikgeyB2ICs9IGJ5 dGVzd2FwKHZhbHVlKTsgdmFsdWUgPSBieXRlc3dhcCh2KTsgcmV0dXJuIHY7IH0KLSsgIGlubGlu ZSBvcGVyYXRvciBUKCkgY29uc3QgeyByZXR1cm4gYnl0ZXN3YXAodmFsdWUpOyB9Ci0rfTsKLSsK LSsjaWYgIWRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElBTikKLSsKLSt0eXBlZGVmIGJ5dGVz d2FwcGVkX3Q8dWludDE2X3Q+IHVpbnQxNmxlX3Q7Ci0rdHlwZWRlZiBieXRlc3dhcHBlZF90PHVp bnQzMl90PiB1aW50MzJsZV90OwotKwotKyNlbHNlCi0rCi0rdHlwZWRlZiB1aW50MTZfdCB1aW50 MTZsZV90OwotK3R5cGVkZWYgdWludDMyX3QgdWludDMybGVfdDsKLSsKLSsjZW5kaWYKLSsKLSB9 ICAvLyBuYW1lc3BhY2UKLSAKLSBuYW1lc3BhY2UgdWkgewotIAotICNwcmFnbWEgcGFjayhwdXNo LCAyKQotIHN0cnVjdCBEYXRhUGFjazo6RW50cnkgewotLSAgdWludDE2X3QgcmVzb3VyY2VfaWQ7 Ci0tICB1aW50MzJfdCBmaWxlX29mZnNldDsKLSsgIHVpbnQxNmxlX3QgcmVzb3VyY2VfaWQ7Ci0r ICB1aW50MzJsZV90IGZpbGVfb2Zmc2V0OwotIAotICAgc3RhdGljIGludCBDb21wYXJlQnlJZChj b25zdCB2b2lkKiB2b2lkX2tleSwgY29uc3Qgdm9pZCogdm9pZF9lbnRyeSkgewotKyAgICAvLyBL ZXkgaXMgaG9zdCBlbmRpYW4KLSAgICAgdWludDE2X3Qga2V5ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8 Y29uc3QgdWludDE2X3QqPih2b2lkX2tleSk7Ci0gICAgIGNvbnN0IEVudHJ5KiBlbnRyeSA9IHJl aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgRW50cnkqPih2b2lkX2VudHJ5KTsKLSAgICAgcmV0dXJuIGtl eSAtIGVudHJ5LT5yZXNvdXJjZV9pZDsKLUBAIC0xNzEsMTAgKzE5NywxMSBAQCBzdHJ1Y3QgRGF0 YVBhY2s6OkVudHJ5IHsKLSB9OwotIAotIHN0cnVjdCBEYXRhUGFjazo6QWxpYXMgewotLSAgdWlu dDE2X3QgcmVzb3VyY2VfaWQ7Ci0tICB1aW50MTZfdCBlbnRyeV9pbmRleDsKLSsgIHVpbnQxNmxl X3QgcmVzb3VyY2VfaWQ7Ci0rICB1aW50MTZsZV90IGVudHJ5X2luZGV4OwotIAotICAgc3RhdGlj IGludCBDb21wYXJlQnlJZChjb25zdCB2b2lkKiB2b2lkX2tleSwgY29uc3Qgdm9pZCogdm9pZF9l bnRyeSkgewotKyAgICAvLyBLZXkgaXMgaG9zdCBlbmRpYW4KLSAgICAgdWludDE2X3Qga2V5ID0g KnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2X3QqPih2b2lkX2tleSk7Ci0gICAgIGNvbnN0 IEFsaWFzKiBlbnRyeSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgQWxpYXMqPih2b2lkX2VudHJ5 KTsKLSAgICAgcmV0dXJuIGtleSAtIGVudHJ5LT5yZXNvdXJjZV9pZDsKLUBAIC0yODQsNyArMzEx LDcgQEAgYm9vbCBEYXRhUGFjazo6TG9hZEltcGwoc3RkOjp1bmlxdWVfcHRyPERhdGFQYWNrOjpE YXRhU291cmNlPiBkYXRhX3NvdXJjZSkgewotICAgLy8gUGFyc2UgdGhlIHZlcnNpb24gYW5kIGNo ZWNrIGZvciB0cnVuY2F0ZWQgaGVhZGVyLgotICAgdWludDMyX3QgdmVyc2lvbiA9IDA7Ci0gICBp ZiAoZGF0YV9sZW5ndGggPiBzaXplb2YodmVyc2lvbikpCi0tICAgIHZlcnNpb24gPSByZWludGVy cHJldF9jYXN0PGNvbnN0IHVpbnQzMl90Kj4oZGF0YSlbMF07Ci0rICAgIHZlcnNpb24gPSByZWlu dGVycHJldF9jYXN0PGNvbnN0IHVpbnQzMmxlX3QqPihkYXRhKVswXTsKLSAgIHNpemVfdCBoZWFk ZXJfbGVuZ3RoID0KLSAgICAgICB2ZXJzaW9uID09IGtGaWxlRm9ybWF0VjQgPyBrSGVhZGVyTGVu Z3RoVjQgOiBrSGVhZGVyTGVuZ3RoVjU7Ci0gICBpZiAodmVyc2lvbiA9PSAwIHx8IGRhdGFfbGVu Z3RoIDwgaGVhZGVyX2xlbmd0aCkgewotQEAgLTI5NSwxNCArMzIyLDE0IEBAIGJvb2wgRGF0YVBh Y2s6OkxvYWRJbXBsKHN0ZDo6dW5pcXVlX3B0cjxEYXRhUGFjazo6RGF0YVNvdXJjZT4gZGF0YV9z b3VyY2UpIHsKLSAKLSAgIC8vIFBhcnNlIHRoZSBoZWFkZXIgb2YgdGhlIGZpbGUuCi0gICBpZiAo dmVyc2lvbiA9PSBrRmlsZUZvcm1hdFY0KSB7Ci0tICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50 ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDMyX3QqPihkYXRhKVsxXTsKLSsgICAgcmVzb3VyY2VfY291 bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MzJsZV90Kj4oZGF0YSlbMV07Ci0gICAg IGFsaWFzX2NvdW50XyA9IDA7Ci0gICAgIHRleHRfZW5jb2RpbmdfdHlwZV8gPSBzdGF0aWNfY2Fz dDxUZXh0RW5jb2RpbmdUeXBlPihkYXRhWzhdKTsKLSAgIH0gZWxzZSBpZiAodmVyc2lvbiA9PSBr RmlsZUZvcm1hdFY1KSB7Ci0gICAgIC8vIFZlcnNpb24gNSBhZGRlZCB0aGUgYWxpYXMgdGFibGUg YW5kIGNoYW5nZWQgdGhlIGhlYWRlciBmb3JtYXQuCi0gICAgIHRleHRfZW5jb2RpbmdfdHlwZV8g PSBzdGF0aWNfY2FzdDxUZXh0RW5jb2RpbmdUeXBlPihkYXRhWzRdKTsKLS0gICAgcmVzb3VyY2Vf Y291bnRfID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KGRhdGEpWzRdOwotLSAg ICBhbGlhc19jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQxNl90Kj4oZGF0YSlb NV07Ci0rICAgIHJlc291cmNlX2NvdW50XyA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDE2 bGVfdCo+KGRhdGEpWzRdOwotKyAgICBhbGlhc19jb3VudF8gPSByZWludGVycHJldF9jYXN0PGNv bnN0IHVpbnQxNmxlX3QqPihkYXRhKVs1XTsKLSAgIH0gZWxzZSB7Ci0gICAgIExPRyhFUlJPUikg PDwgIkJhZCBkYXRhIHBhY2sgdmVyc2lvbjogZ290ICIgPDwgdmVyc2lvbiA8PCAiLCBleHBlY3Rl ZCAiCi0gICAgICAgICAgICAgICAgPDwga0ZpbGVGb3JtYXRWNCA8PCAiIG9yICIgPDwga0ZpbGVG b3JtYXRWNTsKLUBAIC00NDcsOSArNDc0LDYgQEAgdm9pZCBEYXRhUGFjazo6Q2hlY2tGb3JEdXBs aWNhdGVSZXNvdXJjZXMoCi0gYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJhc2U6OkZp bGVQYXRoJiBwYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6Om1hcDx1 aW50MTZfdCwgYmFzZTo6U3RyaW5nUGllY2U+JiByZXNvdXJjZXMsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgIFRleHRFbmNvZGluZ1R5cGUgdGV4dF9lbmNvZGluZ190eXBlKSB7Ci0tI2lmICFk ZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCi0tI2Vycm9yICJkYXRhcGFjayBhc3N1bWVz IGxpdHRsZSBlbmRpYW4iCi0tI2VuZGlmCi0gICBpZiAodGV4dF9lbmNvZGluZ190eXBlICE9IFVU RjggJiYgdGV4dF9lbmNvZGluZ190eXBlICE9IFVURjE2ICYmCi0gICAgICAgdGV4dF9lbmNvZGlu Z190eXBlICE9IEJJTkFSWSkgewotICAgICBMT0coRVJST1IpIDw8ICJJbnZhbGlkIHRleHQgZW5j b2RpbmcgdHlwZSwgZ290ICIgPDwgdGV4dF9lbmNvZGluZ190eXBlCi1AQCAtNDY3LDcgKzQ5MSw3 IEBAIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwK LSAgIGlmICghZmlsZS52YWxpZCgpKQotICAgICByZXR1cm4gZmFsc2U7Ci0gCi0tICB1aW50MzJf dCBlbmNvZGluZyA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0ZXh0X2VuY29kaW5nX3R5cGUpOwot KyAgdWludDMybGVfdCBlbmNvZGluZyA9IHN0YXRpY19jYXN0PHVpbnQzMmxlX3Q+KHRleHRfZW5j b2RpbmdfdHlwZSk7Ci0gCi0gICAvLyBCdWlsZCBhIGxpc3Qgb2YgZmluYWwgcmVzb3VyY2UgYWxp YXNlcywgYW5kIGFuIGFsaWFzIG1hcCBhdCB0aGUgc2FtZSB0aW1lLgotICAgc3RkOjp2ZWN0b3I8 dWludDE2X3Q+IHJlc291cmNlX2lkczsKLUBAIC00OTQsMTMgKzUxOCwxNCBAQCBib29sIERhdGFQ YWNrOjpXcml0ZVBhY2soY29uc3QgYmFzZTo6RmlsZVBhdGgmIHBhdGgsCi0gCi0gICAvLyBUaGVz ZSB2YWx1ZXMgYXJlIGd1YXJhbnRlZWQgdG8gZml0IGluIGEgdWludDE2X3QgZHVlIHRvIHRoZSBl YXJsaWVyCi0gICAvLyBjaGVjayBvZiB8cmVzb3VyY2VzX2NvdW50fC4KLS0gIGNvbnN0IHVpbnQx Nl90IGFsaWFzX2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KGFsaWFzZXMuc2l6ZSgpKTsK LS0gIGNvbnN0IHVpbnQxNl90IGVudHJ5X2NvdW50ID0gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHJl c291cmNlX2lkcy5zaXplKCkpOwotKyAgY29uc3QgdWludDE2bGVfdCBhbGlhc19jb3VudCA9IHN0 YXRpY19jYXN0PHVpbnQxNmxlX3Q+KGFsaWFzZXMuc2l6ZSgpKTsKLSsgIGNvbnN0IHVpbnQxNmxl X3QgZW50cnlfY291bnQgPSBzdGF0aWNfY2FzdDx1aW50MTZsZV90PihyZXNvdXJjZV9pZHMuc2l6 ZSgpKTsKLSAgIERDSEVDS19FUShzdGF0aWNfY2FzdDxzaXplX3Q+KGVudHJ5X2NvdW50KSArIHN0 YXRpY19jYXN0PHNpemVfdD4oYWxpYXNfY291bnQpLAotICAgICAgICAgICAgIHJlc291cmNlc19j b3VudCk7Ci0gCi0tICBmaWxlLldyaXRlKCZrRmlsZUZvcm1hdFY1LCBzaXplb2Yoa0ZpbGVGb3Jt YXRWNSkpOwotLSAgZmlsZS5Xcml0ZSgmZW5jb2RpbmcsIHNpemVvZih1aW50MzJfdCkpOwotKyAg dWludDMybGVfdCB2ZXJzaW9uID0ga0ZpbGVGb3JtYXRWNTsKLSsgIGZpbGUuV3JpdGUoJnZlcnNp b24sIHNpemVvZih2ZXJzaW9uKSk7Ci0rICBmaWxlLldyaXRlKCZlbmNvZGluZywgc2l6ZW9mKHVp bnQzMmxlX3QpKTsKLSAgIGZpbGUuV3JpdGUoJmVudHJ5X2NvdW50LCBzaXplb2YoZW50cnlfY291 bnQpKTsKLSAgIGZpbGUuV3JpdGUoJmFsaWFzX2NvdW50LCBzaXplb2YoYWxpYXNfY291bnQpKTsK LSAKLUBAIC01MDgsOCArNTMzLDggQEAgYm9vbCBEYXRhUGFjazo6V3JpdGVQYWNrKGNvbnN0IGJh c2U6OkZpbGVQYXRoJiBwYXRoLAotICAgLy8gbGFzdCBpdGVtIHNvIHdlIGNhbiBjb21wdXRlIHRo ZSBzaXplIG9mIHRoZSBsaXN0IGl0ZW0uCi0gICBjb25zdCB1aW50MzJfdCBpbmRleF9sZW5ndGgg PSAoZW50cnlfY291bnQgKyAxKSAqIHNpemVvZihFbnRyeSk7Ci0gICBjb25zdCB1aW50MzJfdCBh bGlhc190YWJsZV9sZW5ndGggPSBhbGlhc19jb3VudCAqIHNpemVvZihBbGlhcyk7Ci0tICB1aW50 MzJfdCBkYXRhX29mZnNldCA9IGtIZWFkZXJMZW5ndGhWNSArIGluZGV4X2xlbmd0aCArIGFsaWFz X3RhYmxlX2xlbmd0aDsKLS0gIGZvciAoY29uc3QgdWludDE2X3QgcmVzb3VyY2VfaWQgOiByZXNv dXJjZV9pZHMpIHsKLSsgIHVpbnQzMmxlX3QgZGF0YV9vZmZzZXQgPSBrSGVhZGVyTGVuZ3RoVjUg KyBpbmRleF9sZW5ndGggKyBhbGlhc190YWJsZV9sZW5ndGg7Ci0rICBmb3IgKGNvbnN0IHVpbnQx NmxlX3QgcmVzb3VyY2VfaWQgOiByZXNvdXJjZV9pZHMpIHsKLSAgICAgZmlsZS5Xcml0ZSgmcmVz b3VyY2VfaWQsIHNpemVvZihyZXNvdXJjZV9pZCkpOwotICAgICBmaWxlLldyaXRlKCZkYXRhX29m ZnNldCwgc2l6ZW9mKGRhdGFfb2Zmc2V0KSk7Ci0gICAgIGRhdGFfb2Zmc2V0ICs9IHJlc291cmNl cy5maW5kKHJlc291cmNlX2lkKS0+c2Vjb25kLmxlbmd0aCgpOwotQEAgLTUxNywxMyArNTQyLDEz IEBAIGJvb2wgRGF0YVBhY2s6OldyaXRlUGFjayhjb25zdCBiYXNlOjpGaWxlUGF0aCYgcGF0aCwK LSAKLSAgIC8vIFdlIHBsYWNlIGFuIGV4dHJhIGVudHJ5IGFmdGVyIHRoZSBsYXN0IGl0ZW0gdGhh dCBhbGxvd3MgdXMgdG8gcmVhZCB0aGUKLSAgIC8vIHNpemUgb2YgdGhlIGxhc3QgaXRlbS4KLS0g IGNvbnN0IHVpbnQxNl90IHJlc291cmNlX2lkID0gMDsKLSsgIGNvbnN0IHVpbnQxNmxlX3QgcmVz b3VyY2VfaWQgPSAwOwotICAgZmlsZS5Xcml0ZSgmcmVzb3VyY2VfaWQsIHNpemVvZihyZXNvdXJj ZV9pZCkpOwotICAgZmlsZS5Xcml0ZSgmZGF0YV9vZmZzZXQsIHNpemVvZihkYXRhX29mZnNldCkp OwotIAotICAgLy8gV3JpdGUgdGhlIGFsaWFzZXMgdGFibGUsIGlmIGFueS4gTm90ZTogfGFsaWFz ZXN8IGlzIGFuIHN0ZDo6bWFwLAotICAgLy8gZW5zdXJpbmcgdmFsdWVzIGFyZSB3cml0dGVuIGlu IGluY3JlYXNpbmcgb3JkZXIuCi0tICBmb3IgKGNvbnN0IHN0ZDo6cGFpcjx1aW50MTZfdCwgdWlu dDE2X3Q+JiBhbGlhcyA6IGFsaWFzZXMpIHsKLSsgIGZvciAoY29uc3Qgc3RkOjpwYWlyPHVpbnQx NmxlX3QsIHVpbnQxNmxlX3Q+IGFsaWFzIDogYWxpYXNlcykgewotICAgICBmaWxlLldyaXRlKCZh bGlhcywgc2l6ZW9mKGFsaWFzKSk7Ci0gICB9Ci0gCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3VpL2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjLm9yaWcKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9kYXRhX3BhY2su Y2Mub3JpZwotQEAgLTM4MiwxMiArMzgyLDYgQEAgYm9vbCBEYXRhUGFjazo6SGFzUmVzb3VyY2Uo dWludDE2X3QgcmVzb3VyY2VfaWQpIGNvbnN0IHsKLSAKLSBib29sIERhdGFQYWNrOjpHZXRTdHJp bmdQaWVjZSh1aW50MTZfdCByZXNvdXJjZV9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiYXNlOjpTdHJpbmdQaWVjZSogZGF0YSkgY29uc3QgewotLSAgLy8gSXQgd29uJ3QgYmUg aGFyZCB0byBtYWtlIHRoaXMgZW5kaWFuLWFnbm9zdGljLCBidXQgaXQncyBub3Qgd29ydGgKLS0g IC8vIGJvdGhlcmluZyB0byBkbyByaWdodCBub3cuCi0tI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJ VFRMRV9FTkRJQU4pCi0tI2Vycm9yICJkYXRhcGFjayBhc3N1bWVzIGxpdHRsZSBlbmRpYW4iCi0t I2VuZGlmCi0tCi0gICBjb25zdCBFbnRyeSogdGFyZ2V0ID0gTG9va3VwRW50cnlCeUlkKHJlc291 cmNlX2lkKTsKLSAgIGlmICghdGFyZ2V0KQotICAgICByZXR1cm4gZmFsc2U7Ci0tLS0gcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9qcGVnX2NvZGVjLmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9qcGVnX2Nv ZGVjLmNjCi1AQCAtMjEyLDExICsyMTIsMTEgQEAgYm9vbCBKUEVHQ29kZWM6OkRlY29kZShjb25z dCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwgc2l6ZV90IGlucHV0X3NpemUsCi0gICAgICAgLy8gdXNl ZCBieSBDaHJvbWl1bSAoaS5lLiBSR0JBIGFuZCBCR1JBKSBhbmQgd2UganVzdCBtYXAgdGhlIGlu cHV0Ci0gICAgICAgLy8gcGFyYW1ldGVycyB0byBhIGNvbG9yc3BhY2UuCi0gICAgICAgaWYgKGZv cm1hdCA9PSBGT1JNQVRfUkdCQSB8fAotLSAgICAgICAgICAoZm9ybWF0ID09IEZPUk1BVF9Ta0Jp dG1hcCAmJiBTS19SMzJfU0hJRlQgPT0gMCkpIHsKLSsgICAgICAgICAgKGZvcm1hdCA9PSBGT1JN QVRfU2tCaXRtYXAgJiYgU0tfUE1DT0xPUl9CWVRFX09SREVSKFIsIEcsIEIsIEEpKSkgewotICAg ICAgICAgY2luZm8tPm91dF9jb2xvcl9zcGFjZSA9IEpDU19FWFRfUkdCWDsKLSAgICAgICAgIGNp bmZvLT5vdXRwdXRfY29tcG9uZW50cyA9IDQ7Ci0gICAgICAgfSBlbHNlIGlmIChmb3JtYXQgPT0g Rk9STUFUX0JHUkEgfHwKLS0gICAgICAgICAgICAgICAgIChmb3JtYXQgPT0gRk9STUFUX1NrQml0 bWFwICYmIFNLX0IzMl9TSElGVCA9PSAwKSkgewotKyAgICAgICAgICAgICAgICAgKGZvcm1hdCA9 PSBGT1JNQVRfU2tCaXRtYXAgJiYgU0tfUE1DT0xPUl9CWVRFX09SREVSKEIsIEcsIFIsIEEpKSkg ewotICAgICAgICAgY2luZm8tPm91dF9jb2xvcl9zcGFjZSA9IEpDU19FWFRfQkdSWDsKLSAgICAg ICAgIGNpbmZvLT5vdXRwdXRfY29tcG9uZW50cyA9IDQ7Ci0gICAgICAgfSBlbHNlIHsKLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5j YwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9nZngvY29kZWMvcG5n X2NvZGVjLmNjCi1AQCAtMTY5LDYgKzE2OSwxMCBAQCB2b2lkIERlY29kZUluZm9DYWxsYmFjayhw bmdfc3RydWN0KiBwbmdfcHRyLCBwbmdfaW5mbyogaW5mb19wdHIpIHsKLSAgICAgICAgIHBuZ19z ZXRfYmdyKHBuZ19wdHIpOwotICAgICAgICAgcG5nX3NldF9hZGRfYWxwaGEocG5nX3B0ciwgMHhG RiwgUE5HX0ZJTExFUl9BRlRFUik7Ci0gICAgICAgICBicmVhazsKLSsgICAgICBjYXNlIFBOR0Nv ZGVjOjpGT1JNQVRfQVJHQjoKLSsgICAgICAgIHN0YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0Owot KyAgICAgICAgcG5nX3NldF9hZGRfYWxwaGEocG5nX3B0ciwgMHhGRiwgUE5HX0ZJTExFUl9CRUZP UkUpOwotKyAgICAgICAgYnJlYWs7Ci0gICAgICAgY2FzZSBQTkdDb2RlYzo6Rk9STUFUX1NrQml0 bWFwOgotICAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9IDQ7Ci0gICAgICAgICBwbmdf c2V0X2FkZF9hbHBoYShwbmdfcHRyLCAweEZGLCBQTkdfRklMTEVSX0FGVEVSKTsKLUBAIC0xODMs NiArMTg3LDEwIEBAIHZvaWQgRGVjb2RlSW5mb0NhbGxiYWNrKHBuZ19zdHJ1Y3QqIHBuZ19wdHIs IHBuZ19pbmZvKiBpbmZvX3B0cikgewotICAgICAgICAgc3RhdGUtPm91dHB1dF9jaGFubmVscyA9 IDQ7Ci0gICAgICAgICBwbmdfc2V0X2JncihwbmdfcHRyKTsKLSAgICAgICAgIGJyZWFrOwotKyAg ICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9BUkdCOgotKyAgICAgICAgc3RhdGUtPm91dHB1dF9j aGFubmVscyA9IDQ7Ci0rCXBuZ19zZXRfc3dhcF9hbHBoYShwbmdfcHRyKTsKLSsgICAgICAgIGJy ZWFrOwotICAgICAgIGNhc2UgUE5HQ29kZWM6OkZPUk1BVF9Ta0JpdG1hcDoKLSAgICAgICAgIHN0 YXRlLT5vdXRwdXRfY2hhbm5lbHMgPSA0OwotICAgICAgICAgYnJlYWs7Ci1AQCAtNDc1LDYgKzQ4 Myw4IEBAIGJvb2wgUE5HQ29kZWM6OkVuY29kZShjb25zdCB1bnNpZ25lZCBjaGFyKiBpbnB1dCwK LSAgICAgY2FzZSBGT1JNQVRfQkdSQToKLSAgICAgICBjb2xvclR5cGUgPSBrQkdSQV84ODg4X1Nr Q29sb3JUeXBlOwotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIEZPUk1BVF9BUkdCOgotKyAgICAg IHJldHVybiBmYWxzZTsKLSAgICAgY2FzZSBGT1JNQVRfU2tCaXRtYXA6Ci0gICAgICAgY29sb3JU eXBlID0ga04zMl9Ta0NvbG9yVHlwZTsKLSAgICAgICBicmVhazsKLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlYy5oCi0rKysgcXR3ZWJl bmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWMuaAotQEAg LTM3LDYgKzM3LDEwIEBAIGNsYXNzIENPREVDX0VYUE9SVCBQTkdDb2RlYyB7Ci0gICAgIC8vIFRo aXMgaXMgdGhlIGRlZmF1bHQgV2luZG93cyBESUIgb3JkZXIuCi0gICAgIEZPUk1BVF9CR1JBLAot IAotKyAgICAvLyA0IGJ5dGVzIHBlciBwaXhlbCwgaW4gQVJHQiBvcmRlciBpbiBtZW1vcnkgcmVn YXJkbGVzcyBvZiBlbmRpYW5uZXNzLgotKyAgICAvLyBPbmx5IHN1cHBvcnRlZCBmb3IgZGVjb2Rp bmcKLSsgICAgRk9STUFUX0FSR0IsCi0rCi0gICAgIC8vIFNrQml0bWFwIGZvcm1hdC4gRm9yIEVu Y29kZSgpIGtOMzJfU2tDb2xvclR5cGUgKDQgYnl0ZXMgcGVyIHBpeGVsKSBhbmQKLSAgICAgLy8g a0FscGhhXzhfU2tDb2xvclR5cGUgKDEgYnl0ZSBwZXIgcGl4ZWwpIGZvcm1hdHMgYXJlIHN1cHBv cnRlZC4KLSAgICAgLy8ga0FscGhhXzhfU2tDb2xvclR5cGUgZ2V0cyBlbmNvZGVkIGludG8gYSBn cmF5c2NhbGUgUE5HIHRyZWF0aW5nIGFscGhhIGFzCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3VpL2dmeC9jb2RlYy9wbmdfY29kZWNfdW5pdHRlc3QuY2MKLSsrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvZGVjL3BuZ19jb2RlY191bml0 dGVzdC5jYwotQEAgLTg1Myw3ICs4NTMsNyBAQCBURVNUKFBOR0NvZGVjLCBFbmNvZGVBOFNrQml0 bWFwKSB7Ci0gICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKSB7Ci0gICAgICAgdWludDhf dCBvcmlnaW5hbF9waXhlbCA9ICpvcmlnaW5hbF9iaXRtYXAuZ2V0QWRkcjgoeCwgeSk7Ci0gICAg ICAgdWludDMyX3QgZGVjb2RlZF9waXhlbCA9ICpkZWNvZGVkX2JpdG1hcC5nZXRBZGRyMzIoeCwg eSk7Ci0tICAgICAgRVhQRUNUX1RSVUUoQkdSQUdyYXlFcXVhbHNBOEdyYXkoZGVjb2RlZF9waXhl bCwgb3JpZ2luYWxfcGl4ZWwpKTsKLSsgICAgICBFWFBFQ1RfVFJVRShCR1JBR3JheUVxdWFsc0E4 R3JheShTa1VuUHJlTXVsdGlwbHk6OlBNQ29sb3JUb0NvbG9yKGRlY29kZWRfcGl4ZWwpLCBvcmln aW5hbF9waXhlbCkpOwotICAgICB9Ci0gICB9Ci0gfQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS91aS9nZngvY29sb3JfYW5hbHlzaXMuY2MKLSsrKyBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L2NvbG9yX2FuYWx5c2lzLmNjCi1AQCAtMTYsNiAr MTYsNyBAQAotICNpbmNsdWRlIDx2ZWN0b3I+Ci0gCi0gI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5o IgotKyNpbmNsdWRlICJiYXNlL3N5c19ieXRlb3JkZXIuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFy dHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tCaXRtYXAuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkv c2tpYS9pbmNsdWRlL2NvcmUvU2tVblByZU11bHRpcGx5LmgiCi0gI2luY2x1ZGUgInVpL2dmeC9j b2RlYy9wbmdfY29kZWMuaCIKLUBAIC01MDYsMTAgKzUwNywxNyBAQCBTa0NvbG9yIEZpbmRDbG9z ZXN0Q29sb3IoY29uc3QgdWludDhfdCogaW1hZ2UsCi0gICBTa0NvbG9yIGJlc3RfY29sb3IgPSBj b2xvcjsKLSAgIGNvbnN0IHVpbnQ4X3QqIGJ5dGUgPSBpbWFnZTsKLSAgIGZvciAoaW50IGkgPSAw OyBpIDwgd2lkdGggKiBoZWlnaHQ7ICsraSkgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRM RV9FTkRJQU4pCi0gICAgIHVpbnQ4X3QgYiA9ICooYnl0ZSsrKTsKLSAgICAgdWludDhfdCBnID0g KihieXRlKyspOwotICAgICB1aW50OF90IHIgPSAqKGJ5dGUrKyk7Ci0gICAgIHVpbnQ4X3QgYSA9 ICooYnl0ZSsrKTsKLSsjZWxzZQotKyAgICB1aW50OF90IGEgPSAqKGJ5dGUrKyk7Ci0rICAgIHVp bnQ4X3QgciA9ICooYnl0ZSsrKTsKLSsgICAgdWludDhfdCBnID0gKihieXRlKyspOwotKyAgICB1 aW50OF90IGIgPSAqKGJ5dGUrKyk7Ci0rI2VuZGlmCi0gICAgIC8vIElnbm9yZSBmdWxseSB0cmFu c3BhcmVudCBwaXhlbHMuCi0gICAgIGlmIChhID09IDApCi0gICAgICAgY29udGludWU7Ci1AQCAt NTI3LDcgKzUzNSw2IEBAIFNrQ29sb3IgRmluZENsb3Nlc3RDb2xvcihjb25zdCB1aW50OF90KiBp bWFnZSwKLSAKLSAvLyBGb3IgYSAxNngxNiBpY29uIG9uIGFuIEludGVsIENvcmUgaTUgdGhpcyBm dW5jdGlvbiB0YWtlcyBhcHByb3hpbWF0ZWx5Ci0gLy8gMC41IG1zIHRvIHJ1bi4KLS0vLyBUT0RP KHBvcnQpOiBUaGlzIGNvZGUgYXNzdW1lcyB0aGUgQ1BVIGFyY2hpdGVjdHVyZSBpcyBsaXR0bGUt ZW5kaWFuLgotIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9mQnVmZmVyKHVpbnQ4X3QqIGRl Y29kZWRfZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW1n X3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbWdfaGVp Z2h0LAotQEAgLTU1MCwxMCArNTU3LDE3IEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9m QnVmZmVyKHVpbnQ4X3QqIGRlY29kZWRfZGF0YSwKLSAgICAgICAgIGludCBwaXhlbF9wb3MgPSBz YW1wbGVyLT5HZXRTYW1wbGUoaW1nX3dpZHRoLCBpbWdfaGVpZ2h0KSAlCi0gICAgICAgICAgICAg KGltZ193aWR0aCAqIGltZ19oZWlnaHQpOwotIAotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRM RV9FTkRJQU4pCi0gICAgICAgICB1aW50OF90IGIgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICog NF07Ci0gICAgICAgICB1aW50OF90IGcgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDFd OwotICAgICAgICAgdWludDhfdCByID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAyXTsK LSAgICAgICAgIHVpbnQ4X3QgYSA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgM107Ci0r I2Vsc2UKLSsgICAgICAgIHVpbnQ4X3QgYSA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0XTsK LSsgICAgICAgIHVpbnQ4X3QgciA9IGRlY29kZWRfZGF0YVtwaXhlbF9wb3MgKiA0ICsgMV07Ci0r ICAgICAgICB1aW50OF90IGcgPSBkZWNvZGVkX2RhdGFbcGl4ZWxfcG9zICogNCArIDJdOwotKyAg ICAgICAgdWludDhfdCBiID0gZGVjb2RlZF9kYXRhW3BpeGVsX3BvcyAqIDQgKyAzXTsKLSsjZW5k aWYKLSAgICAgICAgIC8vIFNraXAgZnVsbHkgdHJhbnNwYXJlbnQgcGl4ZWxzIGFzIHRoZXkgdXN1 YWxseSBjb250YWluIGJsYWNrIGluIHRoZWlyCi0gICAgICAgICAvLyBSR0IgY2hhbm5lbHMgYnV0 IGRvIG5vdCBjb250cmlidXRlIHRvIHRoZSB2aXN1YWwgaW1hZ2UuCi0gICAgICAgICBpZiAoYSA9 PSAwKQotQEAgLTYwMiwxMCArNjE2LDE3IEBAIFNrQ29sb3IgQ2FsY3VsYXRlS01lYW5Db2xvck9m QnVmZmVyKHVpbnQ4X3QqIGRlY29kZWRfZGF0YSwKLSAgICAgICB1aW50OF90KiBwaXhlbCA9IGRl Y29kZWRfZGF0YTsKLSAgICAgICB1aW50OF90KiBkZWNvZGVkX2RhdGFfZW5kID0gZGVjb2RlZF9k YXRhICsgKGltZ193aWR0aCAqIGltZ19oZWlnaHQgKiA0KTsKLSAgICAgICB3aGlsZSAocGl4ZWwg PCBkZWNvZGVkX2RhdGFfZW5kKSB7Ci0rI2lmIGRlZmluZWQoQVJDSF9DUFVfTElUVExFX0VORElB TikKLSAgICAgICAgIHVpbnQ4X3QgYiA9ICoocGl4ZWwrKyk7Ci0gICAgICAgICB1aW50OF90IGcg PSAqKHBpeGVsKyspOwotICAgICAgICAgdWludDhfdCByID0gKihwaXhlbCsrKTsKLSAgICAgICAg IHVpbnQ4X3QgYSA9ICoocGl4ZWwrKyk7Ci0rI2Vsc2UKLSsgICAgICAgIHVpbnQ4X3QgYSA9ICoo cGl4ZWwrKyk7Ci0rICAgICAgICB1aW50OF90IHIgPSAqKHBpeGVsKyspOwotKyAgICAgICAgdWlu dDhfdCBnID0gKihwaXhlbCsrKTsKLSsgICAgICAgIHVpbnQ4X3QgYiA9ICoocGl4ZWwrKyk7Ci0r I2VuZGlmCi0gICAgICAgICAvLyBTa2lwIHRyYW5zcGFyZW50IHBpeGVscywgc2VlIGFib3ZlLgot ICAgICAgICAgaWYgKGEgPT0gMCkKLSAgICAgICAgICAgY29udGludWU7Ci1AQCAtNjgzLDggKzcw NCwxMiBAQCBTa0NvbG9yIENhbGN1bGF0ZUtNZWFuQ29sb3JPZlBORyhzY29wZWRfcmVmcHRyPGJh c2U6OlJlZkNvdW50ZWRNZW1vcnk+IHBuZywKLSAKLSAgIGlmIChwbmcuZ2V0KCkgJiYgcG5nLT5z aXplKCkgJiYKLSAgICAgICBnZng6OlBOR0NvZGVjOjpEZWNvZGUocG5nLT5mcm9udCgpLCBwbmct PnNpemUoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z4OjpQTkdDb2RlYzo6Rk9S TUFUX0JHUkEsICZkZWNvZGVkX2RhdGEsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICZp bWdfd2lkdGgsICZpbWdfaGVpZ2h0KSkgewotKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9F TkRJQU4pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5HQ29kZWM6OkZPUk1B VF9CR1JBLAotKyNlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmeDo6UE5HQ29k ZWM6OkZPUk1BVF9BUkdCLAotKyNlbmRpZgotKwkJCSAgICAmZGVjb2RlZF9kYXRhLCAmaW1nX3dp ZHRoLCAmaW1nX2hlaWdodCkpIHsKLSAgICAgcmV0dXJuIENhbGN1bGF0ZUtNZWFuQ29sb3JPZkJ1 ZmZlcigmZGVjb2RlZF9kYXRhWzBdLCBpbWdfd2lkdGgsIGltZ19oZWlnaHQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXJfYm91bmQsIHVwcGVyX2JvdW5kLCBz YW1wbGVyLCB0cnVlKTsKLSAgIH0KLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdWkvZ2Z4L3NrYml0bWFwX29wZXJhdGlvbnNfdW5pdHRlc3QuY2MKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvZ2Z4L3NrYml0bWFwX29wZXJhdGlvbnNfdW5pdHRl c3QuY2MKLUBAIC0yMzgsNyArMjM4LDcgQEAgVEVTVChTa0JpdG1hcE9wZXJhdGlvbnNUZXN0LCBD cmVhdGVIU0xTaGlmdGVkQml0bWFwSHVlT25seSkgewotIAotICAgZm9yIChpbnQgeSA9IDAsIGkg PSAwOyB5IDwgc3JjX2g7IHkrKykgewotICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHNyY193OyB4 KyspIHsKLS0gICAgICAqc3JjLmdldEFkZHIzMih4LCB5KSA9IFNrQ29sb3JTZXRBUkdCKDI1NSwg MCwgMCwgaSAlIDI1NSk7Ci0rICAgICAgKnNyYy5nZXRBZGRyMzIoeCwgeSkgPSBTa1BhY2tBUkdC MzIoMjU1LCAwLCAwLCBpICUgMjU1KTsKLSAgICAgICBpKys7Ci0gICAgIH0KLSAgIH0KLS0tLSBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9ob3N0LmNjCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fub25faG9zdC5j YwotQEAgLTEzNSw4ICsxMzUsNyBAQCBib29sIERvU2ltcGxlSG9zdChjb25zdCBJTkNIQVIqIGhv c3QsCi0gICAgIGlmIChzb3VyY2UgPT0gJyUnKSB7Ci0gICAgICAgLy8gVW5lc2NhcGUgZmlyc3Qs IGlmIHBvc3NpYmxlLgotICAgICAgIC8vIFNvdXJjZSB3aWxsIGJlIHVzZWQgb25seSBpZiBkZWNv ZGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLgotLSAgICAgIGlmICghRGVjb2RlRXNjYXBlZCho b3N0LCAmaSwgaG9zdF9sZW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0 X2Nhc3Q8dW5zaWduZWQgY2hhcio+KCZzb3VyY2UpKSkgewotKyAgICAgIGlmICghRGVjb2RlRXNj YXBlZChob3N0LCAmaSwgaG9zdF9sZW4sICZzb3VyY2UpKSB7Ci0gICAgICAgICAvLyBJbnZhbGlk IGVzY2FwZWQgY2hhcmFjdGVyLiBUaGVyZSBpcyBub3RoaW5nIHRoYXQgY2FuIG1ha2UgdGhpcwot ICAgICAgICAgLy8gaG9zdCB2YWxpZC4gV2UgYXBwZW5kIGFuIGVzY2FwZWQgcGVyY2VudCBzbyB0 aGUgVVJMIGxvb2tzIHJlYXNvbmFibGUKLSAgICAgICAgIC8vIGFuZCBtYXJrIGFzIGZhaWxlZC4K LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdXJsL3VybF9jYW5vbl9pbnRl cm5hbC5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3VybC91cmxfY2Fu b25faW50ZXJuYWwuaAotQEAgLTMwNSw5ICszMDUsOSBAQCBpbmxpbmUgYm9vbCBJczhCaXRDaGFy KGJhc2U6OmNoYXIxNiBjKSB7Ci0gICByZXR1cm4gYyA8PSAyNTU7Ci0gfQotIAotLXRlbXBsYXRl PHR5cGVuYW1lIENIQVI+Ci0rdGVtcGxhdGU8dHlwZW5hbWUgQ0hBUiwgdHlwZW5hbWUgRFNUPgot IGlubGluZSBib29sIERlY29kZUVzY2FwZWQoY29uc3QgQ0hBUiogc3BlYywgaW50KiBiZWdpbiwg aW50IGVuZCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHVuZXNj YXBlZF92YWx1ZSkgewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgRFNUKiB1bmVzY2FwZWRf dmFsdWUpIHsKLSAgIGlmICgqYmVnaW4gKyAzID4gZW5kIHx8Ci0gICAgICAgIUlzOEJpdENoYXIo c3BlY1sqYmVnaW4gKyAxXSkgfHwgIUlzOEJpdENoYXIoc3BlY1sqYmVnaW4gKyAyXSkpIHsKLSAg ICAgLy8gSW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgYmVjYXVzZSB0aGVyZSdzIG5vdCBlbm91Z2gg cm9vbSwgb3IgdGhlCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21p dW0tdjgtZWxmdjIucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgt ZWxmdjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1ODBjODE0Njk3Li4w MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTMtY2hyb21pdW0tdjgtZWxm djIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1UaGlzIGZpeGVzIHY4IG9u IGJpZyBlbmRpYW4gcHBjNjQgRUxGdjIuCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL3Y4L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9wcGMvY29uc3RhbnRzLXBwYy5oCi1AQCAtMjEsNyArMjEs OCBAQAotICNlbmRpZgotIAotICNpZiBWOF9IT1NUX0FSQ0hfUFBDICYmIFwKLS0gICAgKFY4X09T X0FJWCB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgVjhfVEFSR0VUX0JJR19FTkRJQU4pKQot KyAgICAoVjhfT1NfQUlYIHx8IChWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBcCi0rICAgICAgKFY4 X1RBUkdFVF9CSUdfRU5ESUFOICYmICghZGVmaW5lZChfQ0FMTF9FTEYpIHx8IF9DQUxMX0VMRiA9 PSAxKSkpKQotICNkZWZpbmUgQUJJX1VTRVNfRlVOQ1RJT05fREVTQ1JJUFRPUlMgMQotICNlbHNl Ci0gI2RlZmluZSBBQklfVVNFU19GVU5DVElPTl9ERVNDUklQVE9SUyAwCi1AQCAtMzMsMTMgKzM0 LDE1IEBACi0gI2RlZmluZSBBQklfUEFTU0VTX0hBTkRMRVNfSU5fUkVHUyAwCi0gI2VuZGlmCi0g Ci0tI2lmICFWOF9IT1NUX0FSQ0hfUFBDIHx8ICFWOF9UQVJHRVRfQVJDSF9QUEM2NCB8fCBWOF9U QVJHRVRfTElUVExFX0VORElBTgotKyNpZiAhVjhfSE9TVF9BUkNIX1BQQyB8fCAhVjhfVEFSR0VU X0FSQ0hfUFBDNjQgfHwgXAotKyAgICAoVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgKGRlZmlu ZWQoX0NBTExfRUxGKSAmJiBfQ0FMTF9FTEYgPT0gMikpCi0gI2RlZmluZSBBQklfUkVUVVJOU19P QkpFQ1RfUEFJUlNfSU5fUkVHUyAxCi0gI2Vsc2UKLSAjZGVmaW5lIEFCSV9SRVRVUk5TX09CSkVD VF9QQUlSU19JTl9SRUdTIDAKLSAjZW5kaWYKLSAKLS0jaWYgIVY4X0hPU1RfQVJDSF9QUEMgfHwg KFY4X1RBUkdFVF9BUkNIX1BQQzY0ICYmIFY4X1RBUkdFVF9MSVRUTEVfRU5ESUFOKQotKyNpZiAh VjhfSE9TVF9BUkNIX1BQQyB8fCAoVjhfVEFSR0VUX0FSQ0hfUFBDNjQgJiYgXAotKyAgICAoVjhf VEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgKGRlZmluZWQoX0NBTExfRUxGKSAmJiBfQ0FMTF9FTEYg PT0gMikpKQotICNkZWZpbmUgQUJJX0NBTExfVklBX0lQIDEKLSAjZWxzZQotICNkZWZpbmUgQUJJ X0NBTExfVklBX0lQIDAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgv c3JjL3BwYy9yZWdpc3Rlci1wcGMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS92OC9zcmMvcHBjL3JlZ2lzdGVyLXBwYy5oCi1AQCAtMTQ1LDcgKzE0NSw4IEBAIGNvbnN0 IGludCBrTnVtU2FmZXBvaW50UmVnaXN0ZXJzID0gMzI7Ci0gLy8gVGhlIGZvbGxvd2luZyBjb25z dGFudHMgZGVzY3JpYmUgdGhlIHN0YWNrIGZyYW1lIGxpbmthZ2UgYXJlYSBhcwotIC8vIGRlZmlu ZWQgYnkgdGhlIEFCSS4gIE5vdGUgdGhhdCBrTnVtUmVxdWlyZWRTdGFja0ZyYW1lU2xvdHMgbXVz dAotIC8vIHNhdGlzZnkgYWxpZ25tZW50IHJlcXVpcmVtZW50cyAocm91bmRpbmcgdXAgaWYgcmVx dWlyZWQpLgotLSNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiBWOF9UQVJHRVRfTElUVExFX0VO RElBTiAgLy8gcHBjNjRsZSBsaW51eAotKyNpZiBWOF9UQVJHRVRfQVJDSF9QUEM2NCAmJiAoVjhf VEFSR0VUX0xJVFRMRV9FTkRJQU4gfHwgXAotKyAgICBkZWZpbmVkKF9DQUxMX0VMRikgJiYgX0NB TExfRUxGID09IDIpCi0gLy8gWzBdIGJhY2sgY2hhaW4KLSAvLyBbMV0gY29uZGl0aW9uIHJlZ2lz dGVyIHNhdmUgYXJlYQotIC8vIFsyXSBsaW5rIHJlZ2lzdGVyIHNhdmUgYXJlYQpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDk0LWJpZy1lbmRpYW4tc2tpYS1wb3J0YWJsZS5wYXRj aCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA5NC1iaWctZW5kaWFuLXNraWEtcG9ydGFibGUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhMjY5ZDM4M2QxLi4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwOTQtYmlnLWVuZGlhbi1za2lhLXBvcnRhYmxl LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9za2lhL3RoaXJkX3BhcnR5L3NrY21zL3Nr Y21zLmNjCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L3NraWEvdGhpcmRfcGFydHkvc2tjbXMvc2tjbXMuY2MKLUBAIC0xODI4LDYgKzE4MjgsMTQgQEAg dHlwZWRlZiBlbnVtIHsKLSAgICAgI2VuZGlmCi0gI2VuZGlmCi0gCi0rLy8gd2l0aCBjdXJyZW50 IGdjYyA4LjMuMCB3ZSBnZXQgYW4gaW50ZXJuYWwgY29tcGlsZXIgZXJyb3Igd2hlbiBjb21waWxp bmcKLSsvLyBmb3IgcHBjNjQgYmlnIGVuZGlhbiAtIHNvIHN3aXRjaCB0byBwb3J0YWJsZSB1bnRp bCB0aGlzIGlzIHJlc29sdmVkCi0rI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKLSsjICBpZiBk ZWZpbmVkKF9fQklHX0VORElBTl9fKSAmJiAhZGVmaW5lZChTS0NNU19QT1JUQUJMRSkKLSsjICAg IGRlZmluZSBTS0NNU19QT1JUQUJMRQotKyMgIGVuZGlmCi0rI2VuZGlmCi0rCi0gI2lmIGRlZmlu ZWQoX19jbGFuZ19fKQotICAgICB0ZW1wbGF0ZSA8aW50IE4sIHR5cGVuYW1lIFQ+IHVzaW5nIFZl YyA9IFQgX19hdHRyaWJ1dGVfXygoZXh0X3ZlY3Rvcl90eXBlKE4pKSk7Ci0gI2VsaWYgZGVmaW5l ZChfX0dOVUNfXykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1xdDUtd2Vi ZW5naW5lLWxpbnV4LTUuMi5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDEwMC1xdDUtd2Vi ZW5naW5lLWxpbnV4LTUuMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uZDUzOTE1ZjExN2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVz LzAxMDAtcXQ1LXdlYmVuZ2luZS1saW51eC01LjIucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJv bSA3NGU2OWRhOTJkMGE4OTUxMjJjYTY1OTIyYjlhMmI4YjM5MjZjODgyIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0VtaWxpbz0yMENvYm9zPTIwPUMzPTgxbHZhcmV6 Pz0gPGVtaWxpb0Btb3ppbGxhLmNvbT4KK0RhdGU6IFdlZCwgMjkgTWF5IDIwMTkgMTU6MzA6MzIg KzAyMDAKK1N1YmplY3Q6IEZpeCBidWlsZCB3aXRoIHJlY2VudCBsaW51eCBrZXJuZWwuCitNSU1F LVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04CitD b250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1JlY2VudCBrZXJuZWwgY29tbWl0WzFd IG1vdmVkIGEgYml0IHRoZSBkZWZpbmUgZm9yIHRoaXMgY29uc3RhbnQuIFRoaXMgcmV2ZWFsZWQK K2EgbWlzc2luZyBpbmNsdWRlIGluIFdlYlJUQy4KKworWzFdOiBodHRwczovL2dpdC5rZXJuZWwu b3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvY29tbWl0Lz9p ZD0wNzY4ZTE3MDczZGM1CisKK0J1Zzogd2VicnRjOjEwNjc3CitDaGFuZ2UtSWQ6IEk2ZWQ2OWQz MDc1OTlkMDc3NzYwYWU2YWQ3NGJlMTBiZmJkZDFjYWM2CitDb21taXQtUXVldWU6IEthcmwgV2li ZXJnIDxrd2liZXJnQHdlYnJ0Yy5vcmc+CitSZXZpZXdlZC1ieTogS2FybCBXaWJlcmcgPGt3aWJl cmdAd2VicnRjLm9yZz4KK0NyLUNvbW1pdC1Qb3NpdGlvbjogcmVmcy9oZWFkcy9tYXN0ZXJAeyMy ODEwOH0KK1NlZS1BbHNvOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vZXh0ZXJu YWwvd2VicnRjLysvNjgwNjU1MGQ1ZDUxYTgyMDEwNGExMjIwNWQxZjM3Y2UwYWNlYmYxOQorUmV2 aWV3ZWQtYnk6IErDvHJpIFZhbGRtYW5uIDxqdXJpLnZhbGRtYW5uQHF0LmlvPgorLS0tCisgcXR3 ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFz ZS9waHlzaWNhbF9zb2NrZXRfc2VydmVyLmNjIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQg aW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxfc29ja2V0X3NlcnZlci5j YyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0 Y19iYXNlL3BoeXNpY2FsX3NvY2tldF9zZXJ2ZXIuY2MKK2luZGV4IDQ4NDVhNzMzODBjLi5jMzhk N2ZkZmFjOSAxMDA2NDQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2FsX3NvY2tldF9zZXJ2ZXIuY2MKKysrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19i YXNlL3BoeXNpY2FsX3NvY2tldF9zZXJ2ZXIuY2MKK0BAIC01MSw2ICs1MSwxMCBAQAorICNpbmNs dWRlICJydGNfYmFzZS9udWxsX3NvY2tldF9zZXJ2ZXIuaCIKKyAjaW5jbHVkZSAicnRjX2Jhc2Uv dGltZV91dGlscy5oIgorIAorKyNpZiBkZWZpbmVkKFdFQlJUQ19MSU5VWCkKKysjaW5jbHVkZSA8 bGludXgvc29ja2lvcy5oPgorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKFdFQlJUQ19XSU4pCisg I2RlZmluZSBMQVNUX1NZU1RFTV9FUlJPUiAoOjpHZXRMYXN0RXJyb3IoKSkKKyAjZWxpZiBkZWZp bmVkKF9fbmF0aXZlX2NsaWVudF9fKSAmJiBfX25hdGl2ZV9jbGllbnRfXworLS0gCitjZ2l0IHYx LjIuMQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAxMDEtcXQ1LXdlYmVuZ2lu ZS1zeXN0ZW0taWN1LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTAxLXF0NS13ZWJlbmdp bmUtc3lzdGVtLWljdS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uOGY2YjlkYjZhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAx MDEtcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20g N2JjMjM5MmMxOTExOGE4MDM4MGM3NjYxZmI4NmM2OTAyMmViMmI0NyBNb24gU2VwIDE3IDAwOjAw OjAwIDIwMDEKK0Zyb206IEtpcmlsbCBCdXJ0c2V2IDxraXJpbGwuYnVydHNldkBxdC5pbz4KK0Rh dGU6IEZyaSwgMjMgQXVnIDIwMTkgMTU6MDk6MjUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4 IGNvbXBpbGF0aW9uIHdpdGggc3lzdGVtIElDVQorCitzeXN0ZW1faWN1X2NvbmZpZyBpcyBtaXNz aW5nIGRlZmF1bHQgdHlwZSBmb3IgVUNIQVJfVFlQRSwgdGhhdCBjYXVzZXMKK2EgbWlzbWF0Y2gg b2YgdHlwZXMgYWxsIG92ZXIgQ2hyb21pdW0uIHVpbnQxNl90IGlzIGRlZmluZWQgYXMgYSBiYXNl IHR5cGUKK3VuZGVyIGxpbnV4IGluIGNocm9taXVtL2J1aWxkL2xpbnV4L3VuYnVuZGxlL2ljdS5n bi4KK05lY2Vzc2FyeSBjb25zdHJ1Y3Rpb25zIHdlcmUgbG9zdCBkdXJpbmcgcmVjZW50IHJlZmFj dG9yaW5ncywKK2FuZCBzZWVtcyB0byBiZSByZXN0b3JlZCBpbiBsYXRlciBjaHJvbWl1bSA+IDc2 LgorCitDaGFuZ2UtSWQ6IEllMDVjMDA1ZWJjZGVkOWEyMjgzODZkYjVkOWFiZTk4NjM3ODdlYzJi CistLS0KKworZGlmZiAtLWdpdCBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvaWN1L0JVSUxELmduIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9pY3UvQlVJTEQuZ24KK2luZGV4IGJlM2M5MTkuLjYzOWY4ZmQgMTAwNjQ0Cist LS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ljdS9CVUlM RC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9p Y3UvQlVJTEQuZ24KK0BAIC0xMTc1LDYgKzExNzUsMTIgQEAKKyAgICAgIlVTSU5HX1NZU1RFTV9J Q1U9MSIsCisgICAgICJJQ1VfVVRJTF9EQVRBX0lNUEw9SUNVX1VUSUxfREFUQV9TVEFUSUMiLAor ICAgXQorKworKyAgaWYgKGlzX3dpbikgeworKyAgICBkZWZpbmVzICs9IFsgIlVDSEFSX1RZUEU9 d2NoYXJfdCIgXQorKyAgfSBlbHNlIHsKKysgICAgZGVmaW5lcyArPSBbICJVQ0hBUl9UWVBFPXVp bnQxNl90IiBdCisrICB9CisgfQorIAorIGlmICh1c2Vfc3lzdGVtX2ljdSkgeworCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IDhj NjI3NjJlNDdhLi45MTJmMzM1MjU4YiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvdGVtcGxhdGUK KysrIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKQEAgLTEsOCArMSw4IEBACiAjIFRlbXBsYXRlIGZp bGUgZm9yICdxdDUnCiBwa2duYW1lPXF0NQotdmVyc2lvbj01LjEzLjIKK3ZlcnNpb249NS4xNC4w YmV0YTEKIHJldmlzaW9uPTEKLXdya3NyYz0icXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9ufSIK K3dya3NyYz0icXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9uL2IvLWJ9IgogYnVpbGRfc3R5bGU9 Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IGdpdCBnbGli LWRldmVsIGdwZXJmIG5pbmphIHBrZy1jb25maWcKICBwcm90b2J1ZiBweXRob24gcmUyYyBydWJ5 IgpAQCAtMjAsOCArMjAsOCBAQCBzaG9ydF9kZXNjPSJDcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlv biBhbmQgVUkgZnJhbWV3b3JrIChRVDUpIgogbWFpbnRhaW5lcj0iSsO8cmdlbiBCdWNobcO8bGxl ciA8cHVsbG1vbGxAdC1vbmxpbmUuZGU+IgogbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQ TC0zLjAtb3ItbGF0ZXIiCiBob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCi1kaXN0ZmlsZXM9Imh0 dHA6Ly9kb3dubG9hZC5xdC5pby9vZmZpY2lhbF9yZWxlYXNlcy9xdC8ke3ZlcnNpb24lLip9LyR7 dmVyc2lvbn0vc2luZ2xlL3F0LWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbn0udGFyLnh6IgotY2hl Y2tzdW09NTVlODI3MzUzNmJlNDFmNGY2MzA2NGE3OWU1NTJhMjIxMzM4NDhiYjQxOTQwMGI2ZmE4 ZTlmYzBkYzA1ZGUwOAorZGlzdGZpbGVzPSJodHRwOi8vZG93bmxvYWQucXQuaW8vZGV2ZWxvcG1l bnRfcmVsZWFzZXMvcXQvJHt2ZXJzaW9uJS4qfS8ke3ZlcnNpb24vYi8tYn0vc2luZ2xlL3F0LWV2 ZXJ5d2hlcmUtc3JjLSR7dmVyc2lvbi9iLy1ifS50YXIueHoiCitjaGVja3N1bT1mMDdjZmMyNjc2 MjI0NGJkMzQzMTkwYjFiMmU4YjIyNzA4MTk2ZjAxNzAyNGQ2YWI1OWY3ZmUxYzg0MzJmNmIzCiBy ZXBsYWNlcz0icXQ1LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1xdWljazEtZGV2ZWw8 NS42LjAgcXQ1LXdlYmtpdDw1LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4wCiAgcXQ1LWVuZ2lu aW88NS43LjEgcXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8NS43LjEgcXQ1 LWNhbnZhczNkPDUuMTMuMCIKIApAQCAtNDEzLDYgKzQxMyw3IEBAIGRvX2NvbmZpZ3VyZSgpIHsK IAogZG9fYnVpbGQoKSB7CiAJZXhwb3J0IE5JTkpBSk9CUz0ke21ha2Vqb2JzfQorCWV4cG9ydCBO SU5KQUpPQlM9LWo0CiAJIyBSdW4gbWFrZSB0d2ljZSBiZWNhdXNlIHNvbWV0aW1lcyBhIGZpbGUg ImNocm9tZS9ncml0L2dlbmVyYXRlZF9yZXNvdXJjZXMuaCIKIAkjIGlzIG5vdCB5ZXQgcmVhZHkg d2hlbiBpdCBpcyB0byBiZSBpbmNsdWRlZC4gUmVwZWF0aW5nIG1ha2Ugd29ya3MgYXJvdW5kIHRo YXQKIAkjIHByb2JsZW0gd2l0aG91dCBoYXZpbmcgdG8gcmVzb3J0IHRvIGRpc2FibGVfcGFyYWxs ZWxfYnVpbGQ9eWVzCgpGcm9tIDcwNTlmOGI2OTcwNzU3NmExOGIxMjRiNGYxZTgxMWRhNDQ5ZDhm YTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+ CkRhdGU6IEZyaSwgMTEgT2N0IDIwMTkgMDE6MTU6NDggKzAyMDAKU3ViamVjdDogW1BBVENIIDAy LzExXSB0ZWxlZ3JhbS1kZXNrdG9wOiByZWJ1aWxkIGZvciBxdDUuMTQuMAoKW2NpIHNraXBdCi0t LQogc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIHwgMiArLQogMSBmaWxlIGNoYW5n ZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy90 ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtncy90ZWxlZ3JhbS1kZXNrdG9wL3RlbXBs YXRlCmluZGV4IGNhYjU0NGM1MzJiLi44OWFlNDI4MmJkYiAxMDA2NDQKLS0tIGEvc3JjcGtncy90 ZWxlZ3JhbS1kZXNrdG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvdGVsZWdyYW0tZGVza3RvcC90 ZW1wbGF0ZQpAQCAtMTgsNyArMTgsNyBAQCBtYWtlZGVwZW5kcz0iYWxzYS1saWItZGV2ZWwgZmZt cGVnLWRldmVsIGd0ayszLWRldmVsIGxpYmFwcGluZGljYXRvci1kZXZlbAogIGxpYmRidXNtZW51 LWdsaWItZGV2ZWwgbGlib3BlbmFsLWRldmVsIG1pbml6aXAtZGV2ZWwgb3B1cy1kZXZlbCB4eEhh c2gtZGV2ZWwKICAkKHZvcHRfaWYgcHVsc2VhdWRpbyAncHVsc2VhdWRpby1kZXZlbCcpIHF0NS1k ZXZlbCByYW5nZS12MyBsaWJ2YS1kZXZlbAogIHJhcGlkanNvbiBsaWJsejQtZGV2ZWwgcmxvdHRp ZS1kZXZlbCBNZXNhTGliLWRldmVsIgotZGVwZW5kcz0icXQ1LWltYWdlZm9ybWF0cyBxdDU+PTUu MTMuMjw1LjEzLjMiCitkZXBlbmRzPSJxdDUtaW1hZ2Vmb3JtYXRzIHF0NT49NS4xNC4wYmV0YTI8 NS4xNC4xIgogc2hvcnRfZGVzYz0iVGVsZWdyYW0gRGVza3RvcCBtZXNzYWdpbmcgYXBwIgogbWFp bnRhaW5lcj0iSm9obiA8am9obnpAcG9zdGVvLm5ldD4iCiBsaWNlbnNlPSJHUEwtMy4wLW9yLWxh dGVyIFdJVEggT3BlblNTTCIKCkZyb20gODc5NDk1MDgxODJkOWQxOGM3NzU1MWNhYjM0YWM2YjNm MjYxNTNmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVv Lm5ldD4KRGF0ZTogU2F0LCAxMiBPY3QgMjAxOSAxOToxNzoxNyArMDIwMApTdWJqZWN0OiBbUEFU Q0ggMDMvMTFdIGZpeHVwISBxdDU6IHVwZGF0ZSB0byA1LjE0LjBiZXRhMS4KCi0tLQogLi4uLzAw OTAtaGFyZC1kaXNhYmxlLXFtbGNoYWNoZWdlbi5wYXRjaCAgICAgIHwgMTAgLS0tLQogc3JjcGtn cy9xdDUvZmlsZXMvcW1sY2FjaGVnZW4ucHJvICAgICAgICAgICAgIHwgNDAgKysrKysrKysrKysr KysrKwogc3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8gICAgICAgICAgICAgICAgIHwgMTcg KysrKysrLQogc3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvICAgICAgICAgICAgIHwg MTggKysrKy0tLS0KIHNyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8gICAgICAgICAgICAgICAgICAg ICB8ICAxICsKIC4uLi9xdDUvcGF0Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCB8 IDQ2IC0tLS0tLS0tLS0tLS0tLS0tLS0KIC4uLmRvZXMtaXQtZmluZC1jYW5vbi1maWxlLW5hbWUt b24tbXVzbC5wYXRjaCB8IDExICsrKysrCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAzMSArKy0tLS0tLS0tLS0tCiA4IGZpbGVzIGNoYW5nZWQsIDgxIGlu c2VydGlvbnMoKyksIDkzIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv cXQ1L2ZpbGVzLzAwOTAtaGFyZC1kaXNhYmxlLXFtbGNoYWNoZWdlbi5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGNhY2hlZ2VuLnBybwogZGVsZXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAxMTAtd3RmLXdoeS1kb2Vz LWl0LWZpbmQtY2Fub24tZmlsZS1uYW1lLW9uLW11c2wucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2ggYi9zcmNw a2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVlY2RmYjMwZjViLi4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL3F0NS9maWxlcy8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0tLS0gcXRkZWNsYXJhdGl2ZS90b29scy90b29s cy5wcm8JMjAxOS0wNC0wOSAwMTowMTowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyAtCTIwMTktMDQt MjEgMDA6MjQ6MTYuMTkyOTY2MzQ1ICswMjAwCi1AQCAtNyw3ICs3LDYgQEAKLSAgICAgICAgIHFt bG1pbiBcCi0gICAgICAgICBxbWxpbXBvcnRzY2FubmVyCi0gCi0tICAgIHF0Q29uZmlnKGNvbW1h bmRsaW5lcGFyc2VyKTpxdENvbmZpZyh4bWxzdHJlYW13cml0ZXIpOiBTVUJESVJTICs9IHFtbGNh Y2hlZ2VuCi0gfQotIAotIHF0Q29uZmlnKHRocmVhZCk6IWFuZHJvaWR8YW5kcm9pZF9hcHA6IXdh c20gewpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMvcW1sY2FjaGVnZW4ucHJvIGIvc3Jj cGtncy9xdDUvZmlsZXMvcW1sY2FjaGVnZW4ucHJvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi5iMDhmYWNiMjJkMQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1 L2ZpbGVzL3FtbGNhY2hlZ2VuLnBybwpAQCAtMCwwICsxLDQwIEBACitRVCA9IGNvcmUgcW1sIHFt bGRldnRvb2xzLXByaXZhdGUKK0RFRklORVMgKz0gUVRfTk9fQ0FTVF9UT19BU0NJSSBRVF9OT19D QVNUX0ZST01fQVNDSUkKKworU09VUkNFUyA9IHFtbGNhY2hlZ2VuLmNwcCBcCisgICAgcmVzb3Vy Y2VmaWx0ZXIuY3BwIFwKKyAgICBnZW5lcmF0ZWxvYWRlci5jcHAgXAorICAgIHJlc291cmNlZmls ZW1hcHBlci5jcHAKK1RBUkdFVCA9IHFtbGNhY2hlZ2VuCisKK2J1aWxkX2ludGVncmF0aW9uLmZp bGVzID0gcW1sY2FjaGUucHJmIHF0cXVpY2tjb21waWxlci5wcmYKK2J1aWxkX2ludGVncmF0aW9u LnBhdGggPSAkJFtRVF9IT1NUX0RBVEFdL21rc3BlY3MvZmVhdHVyZXMKK3ByZWZpeF9idWlsZDog SU5TVEFMTFMgKz0gYnVpbGRfaW50ZWdyYXRpb24KK2Vsc2U6IENPUElFUyArPSBidWlsZF9pbnRl Z3JhdGlvbgorCitsb2FkKGNtYWtlX2Z1bmN0aW9ucykKKworQ01BS0VfQklOX0RJUiA9ICQkY21h a2VSZWxhdGl2ZVBhdGgoJCRbUVRfSE9TVF9CSU5TXSwgJCRbUVRfSU5TVEFMTF9QUkVGSVhdKQor Y29udGFpbnMoQ01BS0VfQklOX0RJUiwgIl5cXC5cXC4vLioiKSB7CisgICAgQ01BS0VfQklOX0RJ UiA9ICQkW1FUX0hPU1RfQklOU10vCisgICAgQ01BS0VfQklOX0RJUl9JU19BQlNPTFVURSA9IFRy dWUKK30KKworbG9hZChxdF9idWlsZF9wYXRocykKKworZXF1YWxzKFFNQUtFX0hPU1Qub3MsIFdp bmRvd3MpOiBDTUFLRV9CSU5fU1VGRklYID0gIi5leGUiCitjbWFrZV9jb25maWdfZmlsZS5pbnB1 dCA9ICQkUFdEL1F0NVF1aWNrQ29tcGlsZXJDb25maWcuY21ha2UuaW4KK2NtYWtlX2NvbmZpZ19m aWxlLm91dHB1dCA9ICQkTU9EVUxFX0JBU0VfT1VURElSL2xpYi9jbWFrZS9RdDVRdWlja0NvbXBp bGVyL1F0NVF1aWNrQ29tcGlsZXJDb25maWcuY21ha2UKK1FNQUtFX1NVQlNUSVRVVEVTICs9IGNt YWtlX2NvbmZpZ19maWxlCisKK2NtYWtlX2J1aWxkX2ludGVncmF0aW9uLmZpbGVzID0gJCRjbWFr ZV9jb25maWdfZmlsZS5vdXRwdXQKK2NtYWtlX2J1aWxkX2ludGVncmF0aW9uLnBhdGggPSAkJFtR VF9JTlNUQUxMX0xJQlNdL2NtYWtlL1F0NVF1aWNrQ29tcGlsZXIKK3ByZWZpeF9idWlsZDogSU5T VEFMTFMgKz0gY21ha2VfYnVpbGRfaW50ZWdyYXRpb24KK2Vsc2U6IENPUElFUyArPSBjbWFrZV9i dWlsZF9pbnRlZ3JhdGlvbgorCitRTUFLRV9UQVJHRVRfREVTQ1JJUFRJT04gPSBRTUwgQ2FjaGUg R2VuZXJhdG9yCisKK2xvYWQocXRfdG9vbCkKKworSEVBREVSUyArPSBcCisgICAgcmVzb3VyY2Vm aWxlbWFwcGVyLmgKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L2ZpbGVzL3FtbGxpbnQucHJvIGIv c3JjcGtncy9xdDUvZmlsZXMvcW1sbGludC5wcm8KaW5kZXggNDA5YTM3OGJmY2IuLjhjYTYwMGMy MGVjIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy9xbWxsaW50LnBybworKysgYi9zcmNw a2dzL3F0NS9maWxlcy9xbWxsaW50LnBybwpAQCAtMSw3ICsxLDIyIEBACiBRVCA9IGNvcmUgcW1s IHFtbGRldnRvb2xzLXByaXZhdGUKIAotU09VUkNFUyArPSBtYWluLmNwcCAuLi8uLi9zcmMvcW1s L3FxbWxqc2dyYW1tYXIuY3BwCitTT1VSQ0VTICs9IG1haW4uY3BwIFwKKyAgICBjb21wb25lbnR2 ZXJzaW9uLmNwcCBcCisgICAgZmFrZW1ldGFvYmplY3QuY3BwIFwKKyAgICBmaW5kdW5xdWFsaWZp ZWQuY3BwIFwKKyAgICBxbWxqc3R5cGVkZXNjcmlwdGlvbnJlYWRlci5jcHAgXAorICAgIHFjb2xv cm91dHB1dC5jcHAgXAorICAgIHNjb3BldHJlZS5jcHAgXAorICAgIC4uLy4uL3NyYy9xbWwvcXFt bGpzZ3JhbW1hci5jcHAKIAogUU1BS0VfVEFSR0VUX0RFU0NSSVBUSU9OID0gUU1MIFN5bnRheCBW ZXJpZmllcgogCiBsb2FkKHF0X3Rvb2wpCisKK0hFQURFUlMgKz0gXAorICAgIGNvbXBvbmVudHZl cnNpb24uaCBcCisgICAgZmFrZW1ldGFvYmplY3QuaCBcCisgICAgZmluZHVucXVhbGlmaWVkLmgg XAorICAgIHFtbGpzdHlwZWRlc2NyaXB0aW9ucmVhZGVyLmggXAorICAgIHFjb2xvcm91dHB1dF9w LmggXAorICAgIHNjb3BldHJlZS5oCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9maWxlcy9xdHRv b2xzX3NyYy5wcm8gYi9zcmNwa2dzL3F0NS9maWxlcy9xdHRvb2xzX3NyYy5wcm8KaW5kZXggYzcz NDQ0MDRjMDUuLmEzODdhOTkwMTY3IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy9xdHRv b2xzX3NyYy5wcm8KKysrIGIvc3JjcGtncy9xdDUvZmlsZXMvcXR0b29sc19zcmMucHJvCkBAIC0x LDUgKzEsNiBAQAogVEVNUExBVEUgPSBzdWJkaXJzCiAKK1FUX0ZPUl9DT05GSUcgKz0gd2lkZ2V0 cwogU1VCRElSUyA9IGFzc2lzdGFudCBcCiAJcGl4ZWx0b29sIFwKIAlkZXNpZ25lciBcCkBAIC04 LDM0ICs5LDMxIEBAIFNVQkRJUlMgPSBhc3Npc3RhbnQgXAogCXF0YXR0cmlidXRpb25zc2Nhbm5l cgogCiBsaW5ndWlzdC5kZXBlbmRzID0gZGVzaWduZXIKK3F0SGF2ZU1vZHVsZShxdWljayk6cXRD b25maWcodGhyZWFkKTpxdENvbmZpZyh0b29sYnV0dG9uKTogU1VCRElSUyArPSBkaXN0YW5jZWZp ZWxkZ2VuZXJhdG9yCisKIAogcXRDb25maWcobGlicmFyeSkgewogICAgICFhbmRyb2lkfGFuZHJv aWRfYXBwOiBTVUJESVJTICs9IHF0cGx1Z2luaW5mbwogfQogCi1pZighYW5kcm9pZHxhbmRyb2lk X2FwcCk6IXVpa2l0OiBTVUJESVJTICs9IHF0cGF0aHMKKyFhbmRyb2lkfGFuZHJvaWRfYXBwOiBT VUJESVJTICs9IHF0cGF0aHMKIAotbWFjIHsKK21hY29zIHsKICAgICBTVUJESVJTICs9IG1hY2Rl cGxveXF0CiB9CiAKLWFuZHJvaWQgewotICAgIFNVQkRJUlMgKz0gYW5kcm9pZGRlcGxveXF0Ci19 Ci0KIHdpbjMyfHdpbnJ0OlNVQkRJUlMgKz0gd2luZGVwbG95cXQKIHdpbnJ0OlNVQkRJUlMgKz0g d2lucnRydW5uZXIKLXF0SGF2ZU1vZHVsZShndWkpOiFhbmRyb2lkOiF1aWtpdDohcW54OiF3aW5y dDogU1VCRElSUyArPSBxdGRpYWcKK3F0SGF2ZU1vZHVsZShndWkpOiF3YXNtOiFhbmRyb2lkOiF1 aWtpdDohcW54OiF3aW5ydDogU1VCRElSUyArPSBxdGRpYWcKIAogcXROb21ha2VUb29scyggXAot ICAgIG1hY2RlcGxveXF0IFwKKyAgICBkaXN0YW5jZWZpZWxkZ2VuZXJhdG9yIFwKKyAgICBwaXhl bHRvb2wgXAogKQogCiAjIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGEgcmFjZSBjb25kaXRp b24gYmV0d2VlbiB0b29sY2hhaW4ucHJmCiAjIGludm9jYXRpb25zIGluIGEgbW9kdWxlLWJ5LW1v ZHVsZSBjcm9zcy1idWlsZC4KIGNyb3NzX2NvbXBpbGU6aXNFbXB0eShRTUFLRV9IT1NUX0NYWC5J TkNESVJTKSB7Ci0gICAgYW5kcm9pZGRlcGxveXF0LmRlcGVuZHMgKz0gcXRhdHRyaWJ1dGlvbnNz Y2FubmVyCi0gICAgcWRvYy5kZXBlbmRzICs9IHF0YXR0cmlidXRpb25zc2Nhbm5lcgogICAgIHdp bmRlcGxveXF0LmRlcGVuZHMgKz0gcXRhdHRyaWJ1dGlvbnNzY2FubmVyCiAgICAgd2lucnRydW5u ZXIuZGVwZW5kcyArPSBxdGF0dHJpYnV0aW9uc3NjYW5uZXIKICAgICBsaW5ndWlzdC5kZXBlbmRz ICs9IHF0YXR0cmlidXRpb25zc2Nhbm5lcgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvZmlsZXMv dWljLnBybyBiL3NyY3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8KaW5kZXggNzRkN2RiZDg3OGYuLmRj MDhlZmNmZjE5IDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS9maWxlcy91aWMucHJvCisrKyBiL3Ny Y3BrZ3MvcXQ1L2ZpbGVzL3VpYy5wcm8KQEAgLTQsNiArNCw3IEBAIERFRklORVMgKz0gUVRfVUlD IFFUX05PX0NBU1RfRlJPTV9BU0NJSSBRVF9OT19GT1JFQUNICiBpbmNsdWRlKHVpYy5wcmkpCiBp bmNsdWRlKHNoYXJlZC9zaGFyZWQucHJpKQogaW5jbHVkZShjcHAvY3BwLnByaSkKK2luY2x1ZGUo cHl0aG9uL3B5dGhvbi5wcmkpCiAKIEhFQURFUlMgKz0gdWljLmgKIApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDIzLWVuYWJsZV90b29scy1jcm9zcy5wYXRjaCBiL3NyY3BrZ3Mv cXQ1L3BhdGNoZXMvMDAyMy1lbmFibGVfdG9vbHMtY3Jvc3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDllYWM0ZTcwZWZhLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMjMtZW5hYmxlX3Rvb2xzLWNyb3NzLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNDYgKzAsMCBAQAotLS0tIHF0dG9vbHMvc3JjL3NyYy5wcm8JMjAxOC0wNi0wOSAxMzoxMDoz OC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBxdHRvb2xzL3NyYy9zcmMucHJvCTIwMTgtMDgtMTkgMDk6 MzQ6MjkuODAzNjcwMjA1ICswMjAwCi1AQCAtMSwyMCArMSwxNCBAQAotIFRFTVBMQVRFID0gc3Vi ZGlycwotIAotLXF0SGF2ZU1vZHVsZSh3aWRnZXRzKSB7Ci0tICAgIG5vLXBuZyB7Ci0tICAgICAg ICBtZXNzYWdlKCJTb21lIGdyYXBoaWNzLXJlbGF0ZWQgdG9vbHMgYXJlIHVuYXZhaWxhYmxlIHdp dGhvdXQgUE5HIHN1cHBvcnQiKQotLSAgICB9IGVsc2UgewotLSAgICAgICAgUVRfRk9SX0NPTkZJ RyArPSB3aWRnZXRzCi0tICAgICAgICBxdENvbmZpZyhwdXNoYnV0dG9uKTpxdENvbmZpZyh0b29s YnV0dG9uKSB7Ci0tICAgICAgICAgICAgU1VCRElSUyA9IGFzc2lzdGFudCBcCi0tICAgICAgICAg ICAgICAgICAgICAgIGRlc2lnbmVyIFwKLS0gICAgICAgICAgICAgICAgICAgICAgcGl4ZWx0b29s Ci0tCi0tICAgICAgICAgICAgbGluZ3Vpc3QuZGVwZW5kcyA9IGRlc2lnbmVyCi0tICAgICAgICB9 Ci0tICAgICAgICBxdEhhdmVNb2R1bGUocXVpY2spOnF0Q29uZmlnKHRocmVhZCk6cXRDb25maWco dG9vbGJ1dHRvbik6IFNVQkRJUlMgKz0gZGlzdGFuY2VmaWVsZGdlbmVyYXRvcgotLSAgICB9Ci0t fQotK1FUX0ZPUl9DT05GSUcgKz0gd2lkZ2V0cwotKwotK1NVQkRJUlMgPSBhc3Npc3RhbnQgXAot KyAgICAgICAgICBkZXNpZ25lciBcCi0rICAgICAgICAgIHBpeGVsdG9vbAotKwotK2xpbmd1aXN0 LmRlcGVuZHMgPSBkZXNpZ25lcgotKwotK1NVQkRJUlMgKz0gZGlzdGFuY2VmaWVsZGdlbmVyYXRv cgotIAotIFNVQkRJUlMgKz0gbGluZ3Vpc3QgXAotICAgICBxdGF0dHJpYnV0aW9uc3NjYW5uZXIK LUBAIC0zMSwxMSArMjUsMTEgQEAgbWFjb3MgewotICAgICBTVUJESVJTICs9IG1hY2RlcGxveXF0 Ci0gfQotIAotLXF0SGF2ZU1vZHVsZShkYnVzKTogU1VCRElSUyArPSBxZGJ1cwotK1NVQkRJUlMg Kz0gcWRidXMKLSAKLSB3aW4zMnx3aW5ydDpTVUJESVJTICs9IHdpbmRlcGxveXF0Ci0gd2lucnQ6 U1VCRElSUyArPSB3aW5ydHJ1bm5lcgotLXF0SGF2ZU1vZHVsZShndWkpOiF3YXNtOiFhbmRyb2lk OiF1aWtpdDohcW54OiF3aW5ydDogU1VCRElSUyArPSBxdGRpYWcKLStTVUJESVJTICs9IHF0ZGlh ZwotIAotIHF0Tm9tYWtlVG9vbHMoIFwKLSAgICAgZGlzdGFuY2VmaWVsZGdlbmVyYXRvciBcCmRp ZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAxMTAtd3RmLXdoeS1kb2VzLWl0LWZpbmQt Y2Fub24tZmlsZS1uYW1lLW9uLW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAxMTAt d3RmLXdoeS1kb2VzLWl0LWZpbmQtY2Fub24tZmlsZS1uYW1lLW9uLW11c2wucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjg5M2VkMmQ0MWJiCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTEwLXd0Zi13aHktZG9lcy1pdC1maW5kLWNh bm9uLWZpbGUtbmFtZS1vbi1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbmFzbS9uYXNtbGliL3JlYWxw YXRoLmMJMjAxOS0wOS0yMyAxNDoyNDoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMTAt MTEgMDY6Mjc6MjguNDUwMzI5OTg2ICswMjAwCitAQCAtNTcsNyArNTcsNyBAQAorICAqLworIGNo YXIgKm5hc21fcmVhbHBhdGgoY29uc3QgY2hhciAqcmVsX3BhdGgpCisgeworLSAgICBjaGFyICpy cCA9IGNhbm9uaWNhbGl6ZV9maWxlX25hbWUocmVsX3BhdGgpOworKyAgICBjaGFyICpycCA9IHJl YWxwYXRoKHJlbF9wYXRoLCBOVUxMKTsKKyAgICAgcmV0dXJuIHJwID8gcnAgOiBuYXNtX3N0cmR1 cChyZWxfcGF0aCk7CisgfQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9z cmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRleCA5MTJmMzM1MjU4Yi4uM2Q2NGE4OTY0YjYgMTAwNjQ0 Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCkBA IC0zMCwxNSArMzAsNiBAQCBkZXNjX29wdGlvbl93ZWJlbmdpbmU9IkJ1aWxkIENocm9taXVtLWJh c2VkIFdlYkVuZ2luZSBjb21wb25lbnQiCiAKIG1ha2VkZXBlbmRzKz0iIGhhcmZidXp6LWRldmVs IgogCi1jYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KLQlhcm12NXRlbCopIDs7ICMgcXR3 ZWJlbmdpbmUgdXNlcyBWU00gYXNzZW1ibGVyIGNvbW1hbmRzCi0JcHBjfHBwYy1tdXNsKSA7OyAj IHF0d2ViZW5naW5lIGRvZXMgbm90IHN1cHBvcnQgcHBjIDMyIGJpdAotCSopIGlmIFsgIiRYQlBT X1dPUkRTSVpFIiA9ICIkWEJQU19UQVJHRVRfV09SRFNJWkUiIF07IHRoZW4KLQkJIyB3ZWJlbmdp bmUgY2FuIGJlIGJ1aWx0IG9ubHkgaWYgd29yZCBzaXplIG1hdGNoZXMKLQkJYnVpbGRfb3B0aW9u c19kZWZhdWx0PSJ3ZWJlbmdpbmUiCi0JZmk7OwotZXNhYwotCiBpZiBbICIkYnVpbGRfb3B0aW9u X3dlYmVuZ2luZSIgXTsgdGhlbgogCSMgdjggcmVxdWlyZXMgbGliYXRvbWljIG9uIHBwYyovczM5 MHgvbWlwcyoKIAljYXNlICIkWEJQU19UQVJHRVRfTUFDSElORSIgaW4KQEAgLTI5Myw3ICsyODQs NiBAQCBkb19jb25maWd1cmUoKSB7CiAJCQkJLWUgJy8jZXJyb3IgUmVhZCB0aGUgY29tbWVudCBh dCB0aGlzIGxvY2F0aW9uL2QnCiAJCQk7OwogCQllc2FjCi0JCXBhdGNoIC1OcDAgPCAke0ZJTEVT RElSfS8wMDkwLWhhcmQtZGlzYWJsZS1xbWxjaGFjaGVnZW4ucGF0Y2gKIAllbHNlCiAJCSMgcW1h a2Uge0NYWCxMfUZMQUdTIHBhdGNoZXMKIAkJc2VkIC1pIC1lICJzfF5cKENYWEZMQUdTID0uKlwp fFwxICR7Q1hYRkxBR1N9fCIgXApAQCAtMzQxLDYgKzMzMSw3IEBAIGRvX2NvbmZpZ3VyZSgpIHsK IAlvcHRzKz0iIC1zeXN0ZW0temxpYiIKIAlvcHRzKz0iIC1zeXN0ZW0tc3FsaXRlIgogCW9wdHMr PSIgLXN5c3RlbS1oYXJmYnV6eiIKKwlvcHRzKz0iIC1uby1mZWF0dXJlLWVnbGZzX2JyY20iICMg bWlzc2luZyBpbmNsdWRlIHBhdGgKIAkjIFJlbHkgb24gYXV0byBkZXRlY3Rpb24gKGZhaWxzIGlm IGZvcmNlZCBmb3IgY3Jvc3MgYnVpbGRzKQogCWlmIFsgIiRidWlsZF9vcHRpb25fd2ViZW5naW5l IiBdOyB0aGVuCiAJCSMgb3B0cys9IiAtd2ViZW5naW5lLWFsc2EiCkBAIC0zODEsMjUgKzM3Miwx MiBAQCBkb19jb25maWd1cmUoKSB7CiAJCQlmaQogCQkJOzsKIAkJZXNhYwotCQljYXNlICIkWEJQ U19UQVJHRVRfTUFDSElORSIgaW4KLQkJYWFyY2g2NCp8YXJtdjcqKQotCQkJc2VkIC1pICR7d3Jr c3JjfS9xdHdlYmVuZ2luZS9zcmMvY29yZS9jb25maWcvbGludXgucHJpIFwKLQkJCQktZSAiL2Fy bV91c2VfbmVvbj0vcztmYWxzZTt0cnVlOyIKLQkJCTs7Ci0JCWFybSopCi0JCQlzZWQgLWkgJHt3 cmtzcmN9L3F0d2ViZW5naW5lL3NyYy9jb3JlL2NvbmZpZy9saW51eC5wcmkgXAotCQkJCS1lICIv YXJtX3VzZV9uZW9uPS9zO3RydWU7ZmFsc2U7IgotCi0JCQk7OwotCQllc2FjCi0JCXNlZCAtaSAk e3dya3NyY30vcXR3ZWJlbmdpbmUvc3JjL2NvcmUvY29uZmlnL2xpbnV4LnByaSBcCi0JCQktZSAi L2VxdWFscyhNQVJNVi9zO3RydWU7ZmFsc2U7IgogCiAJCSMgTWFrZSBzdXJlIGxpYlF0NURlc2ln bmVyIGlzIGJ1aWx0CiAJCWNwIC12ICR7RklMRVNESVJ9L3F0dG9vbHNfc3JjLnBybyBxdHRvb2xz L3NyYy9zcmMucHJvCi0JCWNwIC12ICR7RklMRVNESVJ9L2Rlc2lnbmVyX3NyYy5wcm8gcXR0b29s cy9zcmMvZGVzaWduZXIvc3JjL3NyYy5wcm8KLQkJY3AgLXYgJHtGSUxFU0RJUn0vYXNzaXN0YW50 LnBybyBxdHRvb2xzL3NyYy9hc3Npc3RhbnQvYXNzaXN0YW50LnBybwotCQljcCAtdiAke0ZJTEVT RElSfS9saW5ndWlzdC5wcm8gcXR0b29scy9zcmMvbGluZ3Vpc3QvbGluZ3Vpc3QucHJvCisJCSNj cCAtdiAke0ZJTEVTRElSfS9kZXNpZ25lcl9zcmMucHJvIHF0dG9vbHMvc3JjL2Rlc2lnbmVyL3Ny Yy9zcmMucHJvCisJCSNjcCAtdiAke0ZJTEVTRElSfS9hc3Npc3RhbnQucHJvIHF0dG9vbHMvc3Jj L2Fzc2lzdGFudC9hc3Npc3RhbnQucHJvCisJCSNjcCAtdiAke0ZJTEVTRElSfS9saW5ndWlzdC5w cm8gcXR0b29scy9zcmMvbGluZ3Vpc3QvbGluZ3Vpc3QucHJvCiAJZmkKIAogCUNDPSJjYyIgQ1hY PSJjKysiIENQUD0iY3BwIiBMRD0iYysrIiBBUj0iYXIiIEFTPSJhcyIgTk09Im5tIiBcCkBAIC00 ODgsNiArNDY2LDcgQEAgZG9faW5zdGFsbCgpIHsKIAkJIwogCQlkaXJzKz0iIHF0ZGVjbGFyYXRp dmUvdG9vbHMvcW1sbWluIgogCQlkaXJzKz0iIHF0ZGVjbGFyYXRpdmUvdG9vbHMvcW1sbGludCIK KwkJZGlycys9IiBxdGRlY2xhcmF0aXZlL3Rvb2xzL3FtbGNhY2hlZ2VuIgogCQlkaXJzKz0iIHF0 ZGVjbGFyYXRpdmUvdG9vbHMvcW1saW1wb3J0c2Nhbm5lciIKIAkJZGlycys9IiBxdGJhc2Uvc3Jj L3Rvb2xzL21vYyIKIAkJZGlycys9IiBxdGJhc2Uvc3JjL3Rvb2xzL3JjYyIKCkZyb20gYmM1Y2Mz MzdmNmZiYzgzMGMwYzFiYmIxYjA2MThmOWRhOGMzMTc4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIw MDEKRnJvbTogSm9obiA8am9obnpAcG9zdGVvLm5ldD4KRGF0ZTogU2F0LCAxMiBPY3QgMjAxOSAy MDowNDowNCArMDIwMApTdWJqZWN0OiBbUEFUQ0ggMDQvMTFdIGZpeHVwISBxdDU6IHVwZGF0ZSB0 byA1LjE0LjBiZXRhMS4KCi0tLQogc3JjcGtncy9xdDUvdGVtcGxhdGUgfCAxMCArKysrLS0tLS0t CiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQoKZGlmZiAt LWdpdCBhL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlIGIvc3JjcGtncy9xdDUvdGVtcGxhdGUKaW5kZXgg M2Q2NGE4OTY0YjYuLmMzNzVkODk4NDJkIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS90ZW1wbGF0 ZQorKysgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQpAQCAtNCwxNSArNCwxNSBAQCB2ZXJzaW9uPTUu MTQuMGJldGExCiByZXZpc2lvbj0xCiB3cmtzcmM9InF0LWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lv bi9iLy1ifSIKIGJ1aWxkX3N0eWxlPWdudS1jb25maWd1cmUKLWhvc3RtYWtlZGVwZW5kcz0iY21h a2UgY2xhbmcgZmxleCBnaXQgZ2xpYi1kZXZlbCBncGVyZiBuaW5qYSBwa2ctY29uZmlnCitob3N0 bWFrZWRlcGVuZHM9ImNtYWtlIGNsYW5nIGZsZXggZ2l0IGdsaWItZGV2ZWwgcGtnLWNvbmZpZwog IHByb3RvYnVmIHB5dGhvbiByZTJjIHJ1YnkiCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBWdWxr YW4tSGVhZGVycyBhbHNhLWxpYi1kZXZlbCBkb3VibGUtY29udmVyc2lvbi1kZXZlbAogIGV1ZGV2 LWxpYnVkZXYtZGV2ZWwgZmZtcGVnLWRldmVsIGZyZWV0ZHMtZGV2ZWwgZ2xpYi1kZXZlbCBnc3Qt cGx1Z2lucy1iYXNlMS1kZXZlbAotIGd0ayszLWRldmVsIGljdS1kZXZlbCBqc29uY3BwLWRldmVs IGxpYlh2LWRldmVsIGxpYmJsdWV0b290aC1kZXZlbCBsaWJjYXAtZGV2ZWwKLSBsaWJldmVudC1k ZXZlbCBsaWJpbnB1dC1kZXZlbCBsaWJtbmctZGV2ZWwgbGlibXlzcWxjbGllbnQtZGV2ZWwgbGli cHJveHktZGV2ZWwKKyBndGsrMy1kZXZlbCBpY3UtZGV2ZWwgbGliWHYtZGV2ZWwgbGliYmx1ZXRv b3RoLWRldmVsIGxpYmNhcC1kZXZlbAorIGxpYmlucHV0LWRldmVsIGxpYm1uZy1kZXZlbCBsaWJt eXNxbGNsaWVudC1kZXZlbCBsaWJwcm94eS1kZXZlbAogIGxpYnZweC1kZXZlbCBsaWJ3ZWJwLWRl dmVsIGxpYnhzbHQtZGV2ZWwgbWluaXppcC1kZXZlbCBuc3MtZGV2ZWwgY3Vwcy1kZXZlbAogIG9w dXMtZGV2ZWwgcGNpdXRpbHMtZGV2ZWwgcGNyZTItZGV2ZWwgcG9zdGdyZXNxbC1saWJzLWRldmVs Ci0gcHJvdG9idWYtZGV2ZWwgcHVsc2VhdWRpby1kZXZlbCBzbmFwcHktZGV2ZWwgdHNsaWItZGV2 ZWwKKyBwcm90b2J1Zi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHRzbGliLWRldmVsCiAgdW5peG9k YmMtZGV2ZWwgeGNiLXV0aWwtaW1hZ2UtZGV2ZWwgeGNiLXV0aWwta2V5c3ltcy1kZXZlbAogIHhj Yi11dGlsLXJlbmRlcnV0aWwtZGV2ZWwgeGNiLXV0aWwtd20tZGV2ZWwgbGlienN0ZC1kZXZlbCBo YXJmYnV6ei1kZXZlbCIKIGRlcGVuZHM9InF0Y2hvb3NlciIKQEAgLTI4LDggKzI4LDYgQEAgcmVw bGFjZXM9InF0NS1kb2M8NS42LjAgcXQ1LXF1aWNrMTw1LjYuMCBxdDUtcXVpY2sxLWRldmVsPDUu Ni4wIHF0NS13ZWJraXQ8NS42LjAKIGJ1aWxkX29wdGlvbnM9IndlYmVuZ2luZSIKIGRlc2Nfb3B0 aW9uX3dlYmVuZ2luZT0iQnVpbGQgQ2hyb21pdW0tYmFzZWQgV2ViRW5naW5lIGNvbXBvbmVudCIK IAotbWFrZWRlcGVuZHMrPSIgaGFyZmJ1enotZGV2ZWwiCi0KIGlmIFsgIiRidWlsZF9vcHRpb25f d2ViZW5naW5lIiBdOyB0aGVuCiAJIyB2OCByZXF1aXJlcyBsaWJhdG9taWMgb24gcHBjKi9zMzkw eC9taXBzKgogCWNhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgoKRnJvbSA4MjI4NjgxNThl MDg2NWI4ZDE3YzQwN2VhN2E3OTE0ZDU1MTk4NWRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpG cm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDE1IE9jdCAyMDE5IDEzOjE4 OjU0ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwNS8xMV0gZml4dXAhIHF0NTogdXBkYXRlIHRvIDUu MTQuMGJldGExLgoKLS0tCiBzcmNwa2dzL3F0NS90ZW1wbGF0ZSB8IDE1ICsrKysrLS0tLS0tLS0t LQogMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9xdDUvdGVtcGxhdGUgYi9zcmNwa2dzL3F0NS90ZW1wbGF0ZQppbmRl eCBjMzc1ZDg5ODQyZC4uYmVlODM2NzAwZmYgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1L3RlbXBs YXRlCisrKyBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCkBAIC01LDE0ICs1LDE0IEBAIHJldmlzaW9u PTEKIHdya3NyYz0icXQtZXZlcnl3aGVyZS1zcmMtJHt2ZXJzaW9uL2IvLWJ9IgogYnVpbGRfc3R5 bGU9Z251LWNvbmZpZ3VyZQogaG9zdG1ha2VkZXBlbmRzPSJjbWFrZSBjbGFuZyBmbGV4IGdpdCBn bGliLWRldmVsIHBrZy1jb25maWcKLSBwcm90b2J1ZiBweXRob24gcmUyYyBydWJ5IgorIHB5dGhv biByZTJjIHJ1YnkiCiBtYWtlZGVwZW5kcz0iU0RMMi1kZXZlbCBWdWxrYW4tSGVhZGVycyBhbHNh LWxpYi1kZXZlbCBkb3VibGUtY29udmVyc2lvbi1kZXZlbAogIGV1ZGV2LWxpYnVkZXYtZGV2ZWwg ZmZtcGVnLWRldmVsIGZyZWV0ZHMtZGV2ZWwgZ2xpYi1kZXZlbCBnc3QtcGx1Z2lucy1iYXNlMS1k ZXZlbAogIGd0ayszLWRldmVsIGljdS1kZXZlbCBsaWJYdi1kZXZlbCBsaWJibHVldG9vdGgtZGV2 ZWwgbGliY2FwLWRldmVsCiAgbGliaW5wdXQtZGV2ZWwgbGlibW5nLWRldmVsIGxpYm15c3FsY2xp ZW50LWRldmVsIGxpYnByb3h5LWRldmVsCi0gbGlidnB4LWRldmVsIGxpYndlYnAtZGV2ZWwgbGli eHNsdC1kZXZlbCBtaW5pemlwLWRldmVsIG5zcy1kZXZlbCBjdXBzLWRldmVsCisgbGlidnB4LWRl dmVsIGxpYndlYnAtZGV2ZWwgbGlieHNsdC1kZXZlbCBjdXBzLWRldmVsCiAgb3B1cy1kZXZlbCBw Y2l1dGlscy1kZXZlbCBwY3JlMi1kZXZlbCBwb3N0Z3Jlc3FsLWxpYnMtZGV2ZWwKLSBwcm90b2J1 Zi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsIHRzbGliLWRldmVsCisgcHJvdG9idWYtZGV2ZWwgcHVs c2VhdWRpby1kZXZlbCB0c2xpYi1kZXZlbCBsaWJyZXNzbC1kZXZlbAogIHVuaXhvZGJjLWRldmVs IHhjYi11dGlsLWltYWdlLWRldmVsIHhjYi11dGlsLWtleXN5bXMtZGV2ZWwKICB4Y2ItdXRpbC1y ZW5kZXJ1dGlsLWRldmVsIHhjYi11dGlsLXdtLWRldmVsIGxpYnpzdGQtZGV2ZWwgaGFyZmJ1enot ZGV2ZWwiCiBkZXBlbmRzPSJxdGNob29zZXIiCkBAIC0zODgsMTIgKzM4OCw3IEBAIGRvX2NvbmZp Z3VyZSgpIHsKIH0KIAogZG9fYnVpbGQoKSB7Ci0JZXhwb3J0IE5JTkpBSk9CUz0ke21ha2Vqb2Jz fQotCWV4cG9ydCBOSU5KQUpPQlM9LWo0Ci0JIyBSdW4gbWFrZSB0d2ljZSBiZWNhdXNlIHNvbWV0 aW1lcyBhIGZpbGUgImNocm9tZS9ncml0L2dlbmVyYXRlZF9yZXNvdXJjZXMuaCIKLQkjIGlzIG5v dCB5ZXQgcmVhZHkgd2hlbiBpdCBpcyB0byBiZSBpbmNsdWRlZC4gUmVwZWF0aW5nIG1ha2Ugd29y a3MgYXJvdW5kIHRoYXQKLQkjIHByb2JsZW0gd2l0aG91dCBoYXZpbmcgdG8gcmVzb3J0IHRvIGRp c2FibGVfcGFyYWxsZWxfYnVpbGQ9eWVzCi0JbWFrZSAke21ha2Vqb2JzfSB8fCBtYWtlICR7bWFr ZWpvYnN9CisJbWFrZSAke21ha2Vqb2JzfQogfQogCiBkb19pbnN0YWxsKCkgewpAQCAtNjE1LDcg KzYxMCw3IEBAIHF0NS1kZWNsYXJhdGl2ZV9wYWNrYWdlKCkgewogCXNob3J0X2Rlc2MrPSIgLSBE ZWNsYXJhdGl2ZSBjb21wb25lbnQiCiAJcGtnX2luc3RhbGwoKSB7CiAJCV9pbnN0YWxsX3N1YnBr ZyBxdGRlY2xhcmF0aXZlCi0JCV9tb3ZlX3RhcmdldF9iaW5hcmllcyBxbWxtaW4gcW1sbGludCBx bWxpbXBvcnRzY2FubmVyCisJCV9tb3ZlX3RhcmdldF9iaW5hcmllcyBxbWxtaW4gcW1sbGludCBx bWxpbXBvcnRzY2FubmVyIHFtbGNhY2hlZ2VuCiAJfQogfQogCgpGcm9tIDM5MWVkY2NjNTAwYTA4 ZGEyOTk3YTY4MGZhMWQyYWI2YWQ3MjZjOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCkZyb206 IEpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+CkRhdGU6IFR1ZSwgMTUgT2N0IDIwMTkgMTM6MTk6NDMg KzAyMDAKU3ViamVjdDogW1BBVENIIDA2LzExXSBOZXcgcGFja2FnZTogcXQ1LXdlYmVuZ2luZQoK LS0tCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSAt CiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUtZGV2ZWwgICAgICAgICAgICAgICAgICAgfCAgMiArLQog Li4uL3BhdGNoZXMvcXQ1LXdlYmVuZ2luZS1saW51eC01LjIucGF0Y2ggICAgIHwgNDIgKysrKysr KysrCiAuLi4vcGF0Y2hlcy9xdDUtd2ViZW5naW5lLXN5c3RlbS1pY3UucGF0Y2ggICAgfCAzMiAr KysrKysrCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgICAgICAgICAgICAgICAgfCA5 MCArKysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDE2NSBpbnNlcnRpb25zKCsp LCAyIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTIwMDAwIHNyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL3F0NS13 ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2ViZW5naW5lIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lCmRlbGV0ZWQgZmls ZSBtb2RlIDEyMDAwMAppbmRleCA3NTc5M2ViNjY2NC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy9xdDUtd2ViZW5naW5lCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcXQ1ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lLWRl dmVsIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lLWRldmVsCmluZGV4IDc1NzkzZWI2NjY0Li4xYmZk ZWYxMTA4YiAxMjAwMDAKLS0tIGEvc3JjcGtncy9xdDUtd2ViZW5naW5lLWRldmVsCisrKyBiL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS1kZXZlbApAQCAtMSArMSBAQAotcXQ1ClwgTm8gbmV3bGluZSBh dCBlbmQgb2YgZmlsZQorcXQ1LXdlYmVuZ2luZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL3F0NS13ZWJlbmdpbmUt bGludXgtNS4yLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvcXQ1LXdlYmVu Z2luZS1saW51eC01LjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmY4ZTBhMzhiYTM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvcXQ1LXdlYmVuZ2luZS1saW51eC01LjIucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAor RnJvbSA3NGU2OWRhOTJkMGE4OTUxMjJjYTY1OTIyYjlhMmI4YjM5MjZjODgyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0VtaWxpbz0yMENvYm9zPTIwPUMzPTgxbHZh cmV6Pz0gPGVtaWxpb0Btb3ppbGxhLmNvbT4KK0RhdGU6IFdlZCwgMjkgTWF5IDIwMTkgMTU6MzA6 MzIgKzAyMDAKK1N1YmplY3Q6IEZpeCBidWlsZCB3aXRoIHJlY2VudCBsaW51eCBrZXJuZWwuCitN SU1FLVZlcnNpb246IDEuMAorQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04 CitDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0CisKK1JlY2VudCBrZXJuZWwgY29tbWl0 WzFdIG1vdmVkIGEgYml0IHRoZSBkZWZpbmUgZm9yIHRoaXMgY29uc3RhbnQuIFRoaXMgcmV2ZWFs ZWQKK2EgbWlzc2luZyBpbmNsdWRlIGluIFdlYlJUQy4KKworWzFdOiBodHRwczovL2dpdC5rZXJu ZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvY29tbWl0 Lz9pZD0wNzY4ZTE3MDczZGM1CisKK0J1Zzogd2VicnRjOjEwNjc3CitDaGFuZ2UtSWQ6IEk2ZWQ2 OWQzMDc1OTlkMDc3NzYwYWU2YWQ3NGJlMTBiZmJkZDFjYWM2CitDb21taXQtUXVldWU6IEthcmwg V2liZXJnIDxrd2liZXJnQHdlYnJ0Yy5vcmc+CitSZXZpZXdlZC1ieTogS2FybCBXaWJlcmcgPGt3 aWJlcmdAd2VicnRjLm9yZz4KK0NyLUNvbW1pdC1Qb3NpdGlvbjogcmVmcy9oZWFkcy9tYXN0ZXJA eyMyODEwOH0KK1NlZS1BbHNvOiBodHRwczovL2Nocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vZXh0 ZXJuYWwvd2VicnRjLysvNjgwNjU1MGQ1ZDUxYTgyMDEwNGExMjIwNWQxZjM3Y2UwYWNlYmYxOQor UmV2aWV3ZWQtYnk6IErDvHJpIFZhbGRtYW5uIDxqdXJpLnZhbGRtYW5uQHF0LmlvPgorLS0tCisg Y2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2FsX3NvY2tldF9zZXJ2 ZXIuY2MgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYg LS1naXQgYS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxfc29j a2V0X3NlcnZlci5jYyBiL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9waHlz aWNhbF9zb2NrZXRfc2VydmVyLmNjCitpbmRleCA0ODQ1YTczMzgwYy4uYzM4ZDdmZGZhYzkgMTAw NjQ0CistLS0gc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFz ZS9waHlzaWNhbF9zb2NrZXRfc2VydmVyLmNjCisrKysgc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9waHlzaWNhbF9zb2NrZXRfc2VydmVyLmNjCitAQCAt NTEsNiArNTEsMTAgQEAKKyAjaW5jbHVkZSAicnRjX2Jhc2UvbnVsbF9zb2NrZXRfc2VydmVyLmgi CisgI2luY2x1ZGUgInJ0Y19iYXNlL3RpbWVfdXRpbHMuaCIKKyAKKysjaWYgZGVmaW5lZChXRUJS VENfTElOVVgpCisrI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KKysjZW5kaWYKKysKKyAjaWYg ZGVmaW5lZChXRUJSVENfV0lOKQorICNkZWZpbmUgTEFTVF9TWVNURU1fRVJST1IgKDo6R2V0TGFz dEVycm9yKCkpCisgI2VsaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgJiYgX19uYXRpdmVf Y2xpZW50X18KKy0tIAorY2dpdCB2MS4yLjEKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoIGIvc3JjcGtncy9x dDUtd2ViZW5naW5lL3BhdGNoZXMvcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lMzAzNWIxNTQwMAotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL3F0NS13ZWJlbmdpbmUtc3lz dGVtLWljdS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDdiYzIzOTJjMTkxMThhODAzODBj NzY2MWZiODZjNjkwMjJlYjJiNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaXJp bGwgQnVydHNldiA8a2lyaWxsLmJ1cnRzZXZAcXQuaW8+CitEYXRlOiBGcmksIDIzIEF1ZyAyMDE5 IDE1OjA5OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBjb21waWxhdGlvbiB3aXRoIHN5 c3RlbSBJQ1UKKworc3lzdGVtX2ljdV9jb25maWcgaXMgbWlzc2luZyBkZWZhdWx0IHR5cGUgZm9y IFVDSEFSX1RZUEUsIHRoYXQgY2F1c2VzCithIG1pc21hdGNoIG9mIHR5cGVzIGFsbCBvdmVyIENo cm9taXVtLiB1aW50MTZfdCBpcyBkZWZpbmVkIGFzIGEgYmFzZSB0eXBlCit1bmRlciBsaW51eCBp biBjaHJvbWl1bS9idWlsZC9saW51eC91bmJ1bmRsZS9pY3UuZ24uCitOZWNlc3NhcnkgY29uc3Ry dWN0aW9ucyB3ZXJlIGxvc3QgZHVyaW5nIHJlY2VudCByZWZhY3RvcmluZ3MsCithbmQgc2VlbXMg dG8gYmUgcmVzdG9yZWQgaW4gbGF0ZXIgY2hyb21pdW0gPiA3Ni4KKworQ2hhbmdlLUlkOiBJZTA1 YzAwNWViY2RlZDlhMjI4Mzg2ZGI1ZDlhYmU5ODYzNzg3ZWMyYgorLS0tCisKK2RpZmYgLS1naXQg YS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9pY3UvQlVJTEQuZ24gYi9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9pY3UvQlVJTEQuZ24KK2luZGV4IGJlM2M5MTkuLjYzOWY4ZmQgMTAwNjQ0CistLS0gc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ljdS9CVUlMRC5nbgorKysrIHNyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9pY3UvQlVJTEQuZ24KK0BAIC0xMTc1LDYgKzExNzUsMTIg QEAKKyAgICAgIlVTSU5HX1NZU1RFTV9JQ1U9MSIsCisgICAgICJJQ1VfVVRJTF9EQVRBX0lNUEw9 SUNVX1VUSUxfREFUQV9TVEFUSUMiLAorICAgXQorKworKyAgaWYgKGlzX3dpbikgeworKyAgICBk ZWZpbmVzICs9IFsgIlVDSEFSX1RZUEU9d2NoYXJfdCIgXQorKyAgfSBlbHNlIHsKKysgICAgZGVm aW5lcyArPSBbICJVQ0hBUl9UWVBFPXVpbnQxNl90IiBdCisrICB9CisgfQorIAorIGlmICh1c2Vf c3lzdGVtX2ljdSkgeworCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxh dGUgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLmJhNWE1ZTI2YTFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0wLDAgKzEsOTAgQEAKKyMgVGVtcGxhdGUgZmls ZSBmb3IgJ3F0NS13ZWJlbmdpbmUnCitwa2duYW1lPXF0NS13ZWJlbmdpbmUKK3ZlcnNpb249NS4x NC4wYmV0YTEKK3JldmlzaW9uPTEKK3dya3NyYz0icXR3ZWJlbmdpbmUtZXZlcnl3aGVyZS1zcmMt JHt2ZXJzaW9uL2IvLWJ9IgorI2NyZWF0ZV93cmtzcmM9eWVzCisjb25seV9mb3JfYXJjaHM9Imk2 ODYgeDg2XzY0IgorYnVpbGRfc3R5bGU9cW1ha2UKK2NvbmZpZ3VyZV9hcmdzPSIgLS0gLXdlYmVu Z2luZS1pY3UgLXdlYmVuZ2luZS1mZm1wZWcgLXdlYmVuZ2luZS1vcHVzIC13ZWJlbmdpbmUtd2Vi cAorIC13ZWJlbmdpbmUtcGVwcGVyLXBsdWdpbnMgLXdlYmVuZ2luZS1wcmludGluZy1hbmQtcGRm IC13ZWJlbmdpbmUtcHJvcHJpZXRhcnktY29kZWNzCisgLXdlYmVuZ2luZS1wdWxzZWF1ZGlvIC13 ZWJlbmdpbmUtc3BlbGxjaGVja2VyIC13ZWJlbmdpbmUtd2VicnRjIC13ZWJlbmdpbmUtZ2VvbG9j YXRpb24KKyAkKHZvcHRfaWYgd2ViZW5naW5lICcnICctbm8nKS13ZWJlbmdpbmUtdjgtc25hcHNo b3QiCisjbWFrZV9idWlsZF9hcmdzPSIiCisjbWFrZV9pbnN0YWxsX2FyZ3M9IiIKKyNjb25mX2Zp bGVzPSIiCisjbWFrZV9kaXJzPSIvdmFyL2xvZy9kaXIgMDc1NSByb290IHJvb3QiCitob3N0bWFr ZWRlcGVuZHM9InF0NS1xbWFrZSBncGVyZiBuaW5qYSBxdDUtaG9zdC10b29scyBmbGV4IHBrZy1j b25maWcKKyBwZXJsIHB5dGhvbiBwcm90b2J1ZiIKK21ha2VkZXBlbmRzPSJxdDUtd2ViY2hhbm5l bC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwgcXQ1LXRvb2xzLWRldmVsCisgcXQ1LWRlY2xhcmF0 aXZlLWRldmVsIGxpYmV2ZW50LWRldmVsIHNuYXBweS1kZXZlbCBpY3UtZGV2ZWwgZmZtcGVnLWRl dmVsCisgbGlid2VicC1kZXZlbCBvcHVzLWRldmVsIGN1cHMtZGV2ZWwgbnNzLWRldmVsIG1pbml6 aXAtZGV2ZWwgbGlieHNsdC1kZXZlbAorIGxpYnZweC1kZXZlbCByZTItZGV2ZWwgbGliWHRzdC1k ZXZlbCBsaWJYY3Vyc29yLWRldmVsIGxpYlhjb21wb3NpdGUtZGV2ZWwKKyBqc29uY3BwLWRldmVs IGhhcmZidXp6LWRldmVsIGxjbXMyLWRldmVsIHByb3RvYnVmLWRldmVsIHB1bHNlYXVkaW8tZGV2 ZWwiCitkZXBlbmRzPSIiCitzaG9ydF9kZXNjPSJDcm9zcy1wbGF0Zm9ybSBhcHBsaWNhdGlvbiBh bmQgVUkgZnJhbWV3b3JrIChRVDUpIC0gV2ViRW5naW5lIGNvbXBvbmVudCIKK21haW50YWluZXI9 IkpvaG4gPGpvaG56QHBvc3Rlby5uZXQ+IgorbGljZW5zZT0iR1BMLTMuMC1vci1sYXRlciwgTEdQ TC0zLjAtb3ItbGF0ZXIiCitob21lcGFnZT0iaHR0cHM6Ly9xdC5pby8iCitkaXN0ZmlsZXM9Imh0 dHA6Ly9kb3dubG9hZC5xdC5pby9kZXZlbG9wbWVudF9yZWxlYXNlcy9xdC8ke3ZlcnNpb24lLip9 LyR7dmVyc2lvbi9iLy1ifS9zdWJtb2R1bGVzL3F0d2ViZW5naW5lLWV2ZXJ5d2hlcmUtc3JjLSR7 dmVyc2lvbi9iLy1ifS50YXIueHoiCitjaGVja3N1bT00MjU1ZTBhNGYxNTEwYjZjYWU1NTJmMDUz Yjc3NDY1OWQ5MzExNmNmMTcwODBhYzAwMzg4NGM4MmRjMDA5NjFjCisKK2J1aWxkX29wdGlvbnM9 InNuYXBzaG90IgorYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJzbmFwc2hvdCIKKworaWYgWyAiJENS T1NTX0JVSUxEIiBdOyB0aGVuCisJaG9zdG1ha2VkZXBlbmRzKz0iIG5zcy1kZXZlbCBsaWJldmVu dC1kZXZlbCIKK2ZpCitfY2xlYW51cF93cmtzcmNfbGVhaygpIHsKKwlpZiBbIC1kICIke1BLR0RF U1RESVJ9L3Vzci9saWIvY21ha2UiIF07IHRoZW4KKwkJIyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8g JHt3cmtzcmN9IGluIGNtYWtlIGZpbGVzCisJCXNlZCAtaSAke1BLR0RFU1RESVJ9L3Vzci9saWIv Y21ha2UvKi8qLmNtYWtlIFwKKwkJCS1lICJzOyR7d3Jrc3JjfS9ob3N0Oy91c3IvbGliL3F0NTtn IiBcCisJCQktZSAicztkZXZpY2VzL3ZvaWQtJHtYQlBTX0NST1NTX1RSSVBMRVR9LWcrKztsaW51 eC1nKys7ZyIKKwlmaQorCWlmIFsgLWQgIiR7UEtHREVTVERJUn0vdXNyL2xpYi9wa2djb25maWci IF07IHRoZW4KKwkJIyBSZXBsYWNlIHJlZmVyZW5jZXMgdG8gJHt3cmtzcmN9IGluIHBrZ2NvbmZp ZyBmaWxlcworCQlzZWQgLWkgJHtQS0dERVNURElSfS91c3IvbGliL3BrZ2NvbmZpZy8qLnBjIFwK KwkJCS1lICJzOyR7d3Jrc3JjfS9ob3N0Oy91c3IvbGliL3F0NTtnIiBcCisJCQktZSAicztkZXZp Y2VzL3ZvaWQtJHtYQlBTX0NST1NTX1RSSVBMRVR9LWcrKztsaW51eC1nKys7ZyIKKwlmaQorCSMg UmVtb3ZlIFFNQUtFX1BSTF9CVUlMRF9ESVIgZnJvbSBoaW50IGZpbGVzIGZvciBzdGF0aWMgbGli cmFyaWVzCisJIyBhbmQgcmVwbGFjZSByZWZlcmVuY2VzIHRvICR7d3Jrc3JjfQorCWZpbmQgJHtQ S0dERVNURElSfSAtaW5hbWUgIioucHJsIiAtZXhlYyBzZWQgLWkgInt9IiBcCisJCS1lICIvXlFN QUtFX1BSTF9CVUlMRF9ESVIvZCIgXAorCQktZSAiczstTCR7d3Jrc3JjfS9xdGJhc2UvbGliOy1M L3Vzci9saWI7ZyIgXDsKKwkjIFJlcGxhY2UgJHt3cmtzcmN9IGluIHByb2plY3QgaW5jbHVkZSBm aWxlcworCWZpbmQgJHtQS0dERVNURElSfSAtaW5hbWUgIioucHJpIiAtZXhlYyBzZWQgLWkgInt9 IiBcCisJCS1lICJzOyR7d3Jrc3JjfS9xdGJhc2U7L3Vzci9saWIvcXQ1O2ciIFw7Cit9CisKK3By ZV9jb25maWd1cmUoKSB7CisjCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPSIkWEJQU19D Uk9TU19CQVNFIgorIwlleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIkWEJQU19DUk9TU19CQVNFL3Vz ci9saWIvcGtnY29uZmlnOiRYQlBTX0NST1NTX0JBU0UvdXNyL3NoYXJlL3BrZ2NvbmZpZ1wke1BL R19DT05GSUdfUEFUSDorOlwke1BLR19DT05GSUdfUEFUSH19IgorIwlleHBvcnQgUEtHX0NPTkZJ R19MSUJESVI9IiRYQlBTX0NST1NTX0JBU0UvdXNyL2xpYi9wa2djb25maWdcJHtQS0dfQ09ORklH X0xJQkRJUjorOlwke1BLR19DT05GSUdfTElCRElSfX0iCisJcm0gLWYgJHtYQlBTX1dSQVBQRVJE SVJ9L3BrZy1jb25maWcKK30KKworcHJlX2J1aWxkKCkgeworCSNleHBvcnQgUEtHX0NPTkZJR19T WVNST09UX0RJUj0iJFhCUFNfQ1JPU1NfQkFTRSIKKwkjZXhwb3J0IFBLR19DT05GSUdfUEFUSD0i JFhCUFNfQ1JPU1NfQkFTRS91c3IvbGliL3BrZ2NvbmZpZzokWEJQU19DUk9TU19CQVNFL3Vzci9z aGFyZS9wa2djb25maWdcJHtQS0dfQ09ORklHX1BBVEg6KzpcJHtQS0dfQ09ORklHX1BBVEh9fSIK KwkjZXhwb3J0IFBLR19DT05GSUdfTElCRElSPSIkWEJQU19DUk9TU19CQVNFL3Vzci9saWIvcGtn Y29uZmlnXCR7UEtHX0NPTkZJR19MSUJESVI6KzpcJHtQS0dfQ09ORklHX0xJQkRJUn19IgorCXJt IC1mICR7WEJQU19XUkFQUEVSRElSfS9wa2ctY29uZmlnCisJZXhwb3J0IE5JTkpBSk9CUz0ke21h a2Vqb2JzfQorfQorCitxdDUtd2ViZW5naW5lLWRldmVsX3BhY2thZ2UoKSB7CisJZGVwZW5kcz0i JHtzb3VyY2Vwa2d9Pj0ke3ZlcnNpb259XyR7cmV2aXNpb259IgorCXNob3J0X2Rlc2MrPSIgLSBk ZXZlbG9wbWVudCBmaWxlcyIKKwlwa2dfaW5zdGFsbCgpIHsKKwkJdm1vdmUgdXNyL2luY2x1ZGUK KwkJdm1vdmUgdXNyL2xpYi9jbWFrZQorCQl2bW92ZSB1c3IvbGliL3BrZ2NvbmZpZworCQl2bW92 ZSB1c3IvbGliL3F0NS9ta3NwZWNzCisJCXZtb3ZlIHVzci9saWIvcXQ1L3BsdWdpbnMvZGVzaWdu ZXIKKwkJdm1vdmUgInVzci9saWIvKi5zbyIKKwkJdm1vdmUgInVzci9saWIvKi5wcmwiCisJCXZt b3ZlICJ1c3IvbGliLyoubGEiCisJCV9jbGVhbnVwX3dya3NyY19sZWFrCisJfQorfQoKRnJvbSA2 ZjcwZTRlNGI5MWY3MDBlOWExYjA0NDlhNGQxODk2ZDc5Y2I0ZjM5IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBUdWUsIDE1IE9jdCAy MDE5IDEzOjIwOjI3ICswMjAwClN1YmplY3Q6IFtQQVRDSCAwNy8xMV0gW3RtcF06IG1lc3Npbmcg YXJvdW5kIHdpdGggdGhlIHFtYWtlIGJ1aWxkX3N0eWxlCgotLS0KIGNvbW1vbi9idWlsZC1zdHls ZS9xbWFrZS5zaCB8IDYgKysrKy0tCiAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaCBi L2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaAppbmRleCA2M2JlNWEzYTU2OC4uZDQ1NDlkYWUw OTkgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaAorKysgYi9jb21tb24v YnVpbGQtc3R5bGUvcW1ha2Uuc2gKQEAgLTQzLDEzICs0MywxNSBAQCBUYXJnZXRTcGVjPWxpbnV4 LWcrKwogX0VPRgogCQlxbWFrZV9hcmdzPSItcXRjb25mICR7d3Jrc3JjfS9xdC5jb25mIgogCWZp Ci0JJHtxbWFrZX0gJHtxbWFrZV9hcmdzfSAke2NvbmZpZ3VyZV9hcmdzfSBcCisJJHtxbWFrZX0g JHtxbWFrZV9hcmdzfSBcCiAJCVBSRUZJWD0vdXNyIFwKIAkJTElCPS91c3IvbGliIFwKIAkJUU1B S0VfQ0M9JENDIFFNQUtFX0NYWD0kQ1hYIFFNQUtFX0xJTks9JENYWCBRTUFLRV9MSU5LX0M9JEND IFwKIAkJUU1BS0VfQ0ZMQUdTPSIke0NGTEFHU30iIFwKIAkJUU1BS0VfQ1hYRkxBR1M9IiR7Q1hY RkxBR1N9IiBcCi0JCVFNQUtFX0xGTEFHUz0iJHtMREZMQUdTfSIKKwkJUU1BS0VfTEZMQUdTPSIk e0xERkxBR1N9IiBcCisJCVFNQUtFX1BLR19DT05GSUc9IiR7WEJQU19XUkFQUEVSRElSfS9wa2ct Y29uZmlnIiBcCisJCSR7Y29uZmlndXJlX2FyZ3N9CiB9CiAKIGRvX2J1aWxkKCkgewoKRnJvbSAy NWRjZDgxMjlkYWUxMWI3ZGU5NWY5YjQwNTQ1ZGQ2MWIxMzkzYTI2IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRlOiBNb24sIDExIE5vdiAy MDE5IDE0OjEyOjExICswMTAwClN1YmplY3Q6IFtQQVRDSCAwOC8xMV0gUmV2ZXJ0ICJbdG1wXTog bWVzc2luZyBhcm91bmQgd2l0aCB0aGUgcW1ha2UKIGJ1aWxkX3N0eWxlIgoKVGhpcyByZXZlcnRz IGNvbW1pdCA2ZjcwZTRlNGI5MWY3MDBlOWExYjA0NDlhNGQxODk2ZDc5Y2I0ZjM5LgotLS0KIGNv bW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaCB8IDYgKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbW1vbi9idWlsZC1z dHlsZS9xbWFrZS5zaCBiL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaAppbmRleCBkNDU0OWRh ZTA5OS4uNjNiZTVhM2E1NjggMTAwNjQ0Ci0tLSBhL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5z aAorKysgYi9jb21tb24vYnVpbGQtc3R5bGUvcW1ha2Uuc2gKQEAgLTQzLDE1ICs0MywxMyBAQCBU YXJnZXRTcGVjPWxpbnV4LWcrKwogX0VPRgogCQlxbWFrZV9hcmdzPSItcXRjb25mICR7d3Jrc3Jj fS9xdC5jb25mIgogCWZpCi0JJHtxbWFrZX0gJHtxbWFrZV9hcmdzfSBcCisJJHtxbWFrZX0gJHtx bWFrZV9hcmdzfSAke2NvbmZpZ3VyZV9hcmdzfSBcCiAJCVBSRUZJWD0vdXNyIFwKIAkJTElCPS91 c3IvbGliIFwKIAkJUU1BS0VfQ0M9JENDIFFNQUtFX0NYWD0kQ1hYIFFNQUtFX0xJTks9JENYWCBR TUFLRV9MSU5LX0M9JENDIFwKIAkJUU1BS0VfQ0ZMQUdTPSIke0NGTEFHU30iIFwKIAkJUU1BS0Vf Q1hYRkxBR1M9IiR7Q1hYRkxBR1N9IiBcCi0JCVFNQUtFX0xGTEFHUz0iJHtMREZMQUdTfSIgXAot CQlRTUFLRV9QS0dfQ09ORklHPSIke1hCUFNfV1JBUFBFUkRJUn0vcGtnLWNvbmZpZyIgXAotCQkk e2NvbmZpZ3VyZV9hcmdzfQorCQlRTUFLRV9MRkxBR1M9IiR7TERGTEFHU30iCiB9CiAKIGRvX2J1 aWxkKCkgewoKRnJvbSBjNzcwNmY3NmNmOWJkNTc0Y2M1ODM1ODNlODhjYjJiMDMwNzM0MTQ1IE1v biBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2huekBwb3N0ZW8ubmV0PgpEYXRl OiBNb24sIDExIE5vdiAyMDE5IDIwOjIyOjE0ICswMTAwClN1YmplY3Q6IFtQQVRDSCAwOS8xMV0g cXQ1OiB1cGRhdGUgdG8gNS4xNC4wYmV0YTIuCgotLS0KIC4uLnRlLWluc3RlYWQtb2YtX2xpYmNf ZnBzdGF0ZS1vbi1saW51eC5wYXRjaCB8ICA0MiAtLS0tLS0tCiAuLi5yZWcuaC10by1nZXQtX19X T1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2ggfCAgMjYgLS0tLS0KIC4uLi9wYXRjaGVzLzAwMDQt bXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoICB8IDEwMyAtLS0tLS0tLS0tLS0tLS0tLS0KIC4u Li9xdDUvcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2ggICB8ICAzMSAtLS0tLS0K IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOS1tdXNsLW9mZl90LnBhdGNoICAgICB8ICAxMCAtLQog Li4uL3F0NS9wYXRjaGVzLzAwMTAtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2ggIHwgIDE4IC0tLQog Li4uL3BhdGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaCAgIHwgIDE0IC0tLQog c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaCAgIHwgIDI2IC0tLS0t CiBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTUtbXVzbC1zaWdpbmZvX3QucGF0Y2ggfCAgMTggLS0t CiAuLi4vcXQ1L3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2ggICAgfCAgMjAgLS0t LQogc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIwLW11c2wtc2FuZGJveC5wYXRjaCAgIHwgIDcxIC0t LS0tLS0tLS0tLQogLi4uMDAyNS1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNo IHwgIDE1IC0tLQogc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI2LWRhdGFfcGFjay1iZS5wYXRjaCAg IHwgIDE1IC0tLQogLi4uLzAwMzItbXVzbC1jcm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2ggICAg IHwgIDMwIC0tLS0tCiBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2ggICAg ICAgfCAgMTMgLS0tCiAuLi4vMDA0Mi1hcm0tdm9pZC1pcy1ub3QtYW5kcm9pZC5wYXRjaCAgICAg ICAgfCAgMzEgLS0tLS0tCiAuLi4vcXQ1L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBh dGNoICAgfCAgOTQgLS0tLS0tLS0tLS0tLS0tLQogLi4uLzAwNDUtcXQtbXVzbC10aHJlYWQtc3Rh Y2tzaXplLnBhdGNoICAgICAgIHwgIDI2IC0tLS0tCiAuLi4vcXQ1L3BhdGNoZXMvMDA0Ni1zYW5k Ym94LW1lbWJhcnJpZXIucGF0Y2ggfCAgNjAgLS0tLS0tLS0tLQogLi4uL3F0NS9wYXRjaGVzLzAw NDctZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaCAgIHwgIDI0IC0tLS0KIC4uLi8wMTAwLXF0NS13ZWJl bmdpbmUtbGludXgtNS4yLnBhdGNoICAgICAgICB8ICA0MiAtLS0tLS0tCiAuLi4vMDEwMS1xdDUt d2ViZW5naW5lLXN5c3RlbS1pY3UucGF0Y2ggICAgICAgfCAgMzIgLS0tLS0tCiAuLi5kb2VzLWl0 LWZpbmQtY2Fub24tZmlsZS1uYW1lLW9uLW11c2wucGF0Y2ggfCAgMTEgLS0KIHNyY3BrZ3MvcXQ1 L3RlbXBsYXRlICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArLQogMjQgZmlsZXMgY2hh bmdlZCwgMiBpbnNlcnRpb25zKCspLCA3NzQgZGVsZXRpb25zKC0pCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJj X2Zwc3RhdGUtb24tbGludXgucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9w YXRjaGVzLzAwMDMtaW5jbHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1s aWJjLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA0LW11 c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQg c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA5LW11c2wtb2ZmX3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTAtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBsYWNlLXB2 YWxsb2MucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMTIt bXVzbC1yZXNvbHZlLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDE1LW11c2wtc2lnaW5mb190LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9x dDUvcGF0Y2hlcy8wMDE3LW11c2wtc3RhY2tzdGFydC5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMC1tdXNsLXNhbmRib3gucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0 YWNrc2l6ZS5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAy Ni1kYXRhX3BhY2stYmUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRj aGVzLzAwMzItbXVzbC1jcm9zcy1uby1hc21fcHRyYWNlX2gucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKIGRlbGV0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDItYXJtLXZvaWQtaXMtbm90LWFuZHJvaWQu cGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDQtcXQtbXVz bC1leGVjaW5mby5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1L3BhdGNoZXMv MDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoCiBkZWxldGUg bW9kZSAxMDA2NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ3LWduLWNyb3NzLXN5c3Jvb3QucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRjaGVzLzAxMDAtcXQ1LXdlYmVu Z2luZS1saW51eC01LjIucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS9wYXRj aGVzLzAxMDEtcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTEwLXd0Zi13aHktZG9lcy1pdC1maW5kLWNhbm9uLWZp bGUtbmFtZS1vbi1tdXNsLnBhdGNoCgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8w MDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2gg Yi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDItVXNlLV9mcHN0YXRlLWluc3RlYWQtb2YtX2xpYmNf ZnBzdGF0ZS1vbi1saW51eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U3 ODdkMTM3NGUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMi1Vc2Ut X2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsNDIgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBf d3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAw MDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1v bi91Y29udGV4dF9yZWFkZXIuaAkyMDE4LTA5LTA3IDIyOjIxOjI4LjUyMTc2MzcxNiArMDIwMAot QEAgLTUwLDcgKzUwLDcgQEAKLSAgIC8vICAgaW5mbzogdGhlIGNvbGxlY3Rpb24gb2YgcmVnaXN0 ZXIgc3RydWN0dXJlcy4KLSAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NCkKLSAgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29u c3QgdWNvbnRleHRfdCAqdWMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3QgX2xpYmNfZnBzdGF0ZSogZnApOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Y29uc3Qgc3RydWN0IF9mcHN0YXRlKiBmcCk7Ci0gI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykK LSAgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3Qg dWNvbnRleHRfdCAqdWMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgZnBzaW1kX2NvbnRleHQqIGZwcmVncyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv ZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYwkyMDE4LTA2LTE1IDA5OjQ3OjIw LjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVy X2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MJMjAxOC0wOS0wNyAyMjoyMTo0NS43NjY3NjI2ODgg KzAyMDAKLUBAIC00OSw3ICs0OSw3IEBACi0gfQotIAotIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZp bGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29uc3QgdWNvbnRleHRfdCAqdWMsCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IF9saWJjX2Zw c3RhdGUqIGZwKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IF9mcHN0YXRlKiBmcCkgewotICAgY29uc3QgZ3JlZ190KiByZWdzID0gdWMtPnVjX21j b250ZXh0LmdyZWdzOwotIAotICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9YODZf RlVMTCB8Ci1AQCAtOTcsNyArOTcsNyBAQAotIH0KLSAKLSB2b2lkIFVDb250ZXh0UmVhZGVyOjpG aWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19m cHN0YXRlKiBmcHJlZ3MpIHsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBzdHJ1Y3QgX2Zwc3RhdGUqIGZwcmVncykgewotICAgY29uc3QgZ3JlZ190KiByZWdzID0g dWMtPnVjX21jb250ZXh0LmdyZWdzOwotIAotICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09O VEVYVF9BTUQ2NF9GVUxMOwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dy aXRlci9taW5pZHVtcF93cml0ZXIuaAkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAwMDAwMCArMDIw MAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93 cml0ZXIuaAkyMDE4LTA5LTA3IDIzOjM2OjMyLjA0OTQ5NTI4NSArMDIwMAotQEAgLTQ4LDcgKzQ4 LDcgQEAKLSAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKLSB0eXBlZGVmIHN0cnVjdCBmcHNpbWRf Y29udGV4dCBmcHN0YXRlX3Q7Ci0gI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykKLS10eXBlZGVmIHN0cnVjdCBfbGliY19mcHN0YXRlIGZwc3RhdGVfdDsK LSt0eXBlZGVmIHN0cnVjdCBfZnBzdGF0ZSBmcHN0YXRlX3Q7Ci0gI2VuZGlmCi0gCi0gLy8gVGhl c2UgZW50cmllcyBzdG9yZSBhIGxpc3Qgb2YgbWVtb3J5IHJlZ2lvbnMgdGhhdCB0aGUgY2xpZW50 IHdhbnRzIGluY2x1ZGVkCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDMtaW5j bHVkZS1zeXMtcmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNoIGIvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDAzLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dPUkRTSVpF LW9uLW11c2wtbGliYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGE0MTYw YjIxYmQuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwMy1pbmNsdWRl LXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIDkwMDFjNTRkNmI5NzQ0NDkxNzRhOGNlZThmM2Y1 ZDc4YTliZDZjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBGZWxpeCBKYW5kYSA8 ZmVsaXguamFuZGFAcG9zdGVvLmRlPgotRGF0ZTogU3VuLCAxIEZlYiAyMDE1IDE0OjI2OjUyICsw MTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy82XSBpbmNsdWRlIDxzeXMvcmVnLmg+IHRvIGdldCBfX1dP UkRTSVpFIG9uIG11c2wgbGliYwotCi0tLS0KLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9lbGZf Y29yZV9kdW1wLmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlm ZiAtLWdpdCBhL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIGIvc3JjL2NvbW1vbi9s aW51eC9lbGZfY29yZV9kdW1wLmgKLWluZGV4IGQwM2M3YTguLjAyZWIzOTEgMTAwNjQ0Ci0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCi0rKysgcXR3ZWJlbmdpbmUv c3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j b21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCi1AQCAtMzYsNiArMzYsOSBAQAotICNpbmNsdWRl IDxlbGYuaD4KLSAjaW5jbHVkZSA8bGluay5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaWZu ZGVmIF9fR0xJQkNfXwotKyNpbmNsdWRlIDxzeXMvcmVnLmg+Ci0rI2VuZGlmCi0gCi0gI2luY2x1 ZGUgImNvbW1vbi9tZW1vcnlfcmFuZ2UuaCIKLSAKLS0tIAotMi4wLjUKLQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAwNC1tdXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlMzJhM2RhYjk1Li4wMDAwMDAwMDAwMAotLS0gYS9z cmNwa2dzL3F0NS9wYXRjaGVzLzAwMDQtbXVzbC1kaXNwYXRjaC10by1tdXNsLnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vYmFzZS9hbGxvY2F0b3IvYWxsb2NhdG9yX3NoaW1fZGVmYXVsdF9kaXNwYXRjaF90 b19nbGliYy5jYwotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9iYXNlL2Fs bG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNjCi1AQCAt Niw2ICs2LDcgQEAKLSAKLSAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0gCi0rI2lmIGRlZmluZWQoX19H TElCQ19fKQotIC8vIFRoaXMgdHJhbnNsYXRpb24gdW5pdCBkZWZpbmVzIGEgZGVmYXVsdCBkaXNw YXRjaCBmb3IgdGhlIGFsbG9jYXRvciBzaGltIHdoaWNoCi0gLy8gcm91dGVzIGFsbG9jYXRpb25z IHRvIGxpYmMgZnVuY3Rpb25zLgotIC8vIFRoZSBjb2RlIGhlcmUgaXMgc3Ryb25nbHkgaW5zcGly ZWQgZnJvbSB0Y21hbGxvYydzIGxpYmNfb3ZlcnJpZGVfZ2xpYmMuaC4KLUBAIC03MywzICs3NCw5 MiBAQCBjb25zdCBBbGxvY2F0b3JEaXNwYXRjaCBBbGxvY2F0b3JEaXNwYXRjaDo6ZGVmYXVsdF9k aXNwYXRjaCA9IHsKLSAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBmcmVlX2RlZmluaXRl X3NpemVfZnVuY3Rpb24gKi8KLSAgICAgbnVsbHB0ciwgICAgICAgICAgICAgICAvKiBuZXh0ICov Ci0gfTsKLSsKLSsjZWxzZSAvLyBkZWZpbmVkKF9fR0xJQkNfXykKLSsKLSsjaW5jbHVkZSA8ZGxm Y24uaD4KLSsKLStleHRlcm4gIkMiIHsKLSsvLyBEZWNsYXJlIGZ1bmN0aW9uIHBvaW50ZXJzIHRv IHRoZSBtZW1vcnkgZnVuY3Rpb25zCi0rdHlwZWRlZiB2b2lkKiAoKnRfbGliY19tYWxsb2MpKHNp emVfdCBzaXplKTsKLSt0eXBlZGVmIHZvaWQqICgqdF9saWJjX2NhbGxvYykoc2l6ZV90IG4sIHNp emVfdCBzaXplKTsKLSt0eXBlZGVmIHZvaWQqICgqdF9saWJjX3JlYWxsb2MpKHZvaWQqIGFkZHJl c3MsIHNpemVfdCBzaXplKTsKLSt0eXBlZGVmIHZvaWQqICgqdF9saWJjX21lbWFsaWduKShzaXpl X3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSk7Ci0rdHlwZWRlZiB2b2lkICgqdF9saWJjX2ZyZWUp KHZvaWQqIHB0cik7Ci0rdHlwZWRlZiBzaXplX3QgKCp0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXpl KSh2b2lkKiBwdHIpOwotKwotKy8vIFN0YXRpYyBpbnN0YW5jZXMgb2YgcG9pbnRlcnMgdG8gbGli Yy5zbyBkbCBzeW1ib2xzCi0rc3RhdGljIHRfbGliY19tYWxsb2MgbGliY19tYWxsb2MgPSBOVUxM OwotK3N0YXRpYyB0X2xpYmNfY2FsbG9jIGxpYmNfY2FsbG9jID0gTlVMTDsKLStzdGF0aWMgdF9s aWJjX3JlYWxsb2MgbGliY19yZWFsbG9jID0gTlVMTDsKLStzdGF0aWMgdF9saWJjX21lbWFsaWdu IGxpYmNfbWVtYWxpZ24gPSBOVUxMOwotK3N0YXRpYyB0X2xpYmNfZnJlZSBsaWJjX2ZyZWUgPSBO VUxMOwotK3N0YXRpYyB0X2xpYmNfbWFsbG9jX3VzYWJsZV9zaXplIGxpYmNfbWFsbG9jX3VzYWJs ZV9zaXplID0gTlVMTDsKLSsKLSsvLyByZXNvbHZlIHRoZSBzeW1ib2xzIGluIGxpYmMuc28KLSt2 b2lkIG11c2xfbGliY19tZW1vcnlfaW5pdCh2b2lkKQotK3sKLSsgIGxpYmNfbWFsbG9jID0gKHRf bGliY19tYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgIm1hbGxvYyIpOwotKyAgbGliY19jYWxsb2Mg PSAodF9saWJjX2NhbGxvYykgZGxzeW0oUlRMRF9ORVhULCAiY2FsbG9jIik7Ci0rICBsaWJjX3Jl YWxsb2MgPSAodF9saWJjX3JlYWxsb2MpIGRsc3ltKFJUTERfTkVYVCwgInJlYWxsb2MiKTsKLSsg IGxpYmNfbWVtYWxpZ24gPSAodF9saWJjX21lbWFsaWduKSBkbHN5bShSVExEX05FWFQsICJtZW1h bGlnbiIpOwotKyAgbGliY19mcmVlID0gKHRfbGliY19mcmVlKSBkbHN5bShSVExEX05FWFQsICJm cmVlIik7Ci0rICBsaWJjX21hbGxvY191c2FibGVfc2l6ZSA9ICh0X2xpYmNfbWFsbG9jX3VzYWJs ZV9zaXplKSBkbHN5bShSVExEX05FWFQsICJtYWxsb2NfdXNhYmxlX3NpemUiKTsKLSt9Ci0rfSAg Ly8gZXh0ZXJuICJDIgotKwotK25hbWVzcGFjZSB7Ci0rCi0rdXNpbmcgYmFzZTo6YWxsb2NhdG9y OjpBbGxvY2F0b3JEaXNwYXRjaDsKLSsKLSt2b2lkKiBNdXNsTWFsbG9jKGNvbnN0IEFsbG9jYXRv ckRpc3BhdGNoKiwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKLSsgIGlmICghbGliY19t YWxsb2MpCi0rICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOwotKyAgcmV0dXJuICgqbGliY19t YWxsb2MpKHNpemUpOwotK30KLSsKLSt2b2lkKiBNdXNsQ2FsbG9jKGNvbnN0IEFsbG9jYXRvckRp c3BhdGNoKiwgc2l6ZV90IG4sIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7Ci0rICBpZiAo IWxpYmNfY2FsbG9jKQotKyAgICBtdXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKLSsgIHJldHVybiAo KmxpYmNfY2FsbG9jKShuLCBzaXplKTsKLSt9Ci0rCi0rdm9pZCogTXVzbFJlYWxsb2MoY29uc3Qg QWxsb2NhdG9yRGlzcGF0Y2gqLCB2b2lkKiBhZGRyZXNzLCBzaXplX3Qgc2l6ZSwgdm9pZCogY29u dGV4dCkgewotKyAgaWYgKCFsaWJjX3JlYWxsb2MpCi0rICAgIG11c2xfbGliY19tZW1vcnlfaW5p dCgpOwotKyAgcmV0dXJuICgqbGliY19yZWFsbG9jKShhZGRyZXNzLCBzaXplKTsKLSt9Ci0rCi0r dm9pZCogTXVzbE1lbWFsaWduKGNvbnN0IEFsbG9jYXRvckRpc3BhdGNoKiwgc2l6ZV90IGFsaWdu bWVudCwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKLSsgIGlmICghbGliY19tZW1hbGln bikKLSsgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICByZXR1cm4gKCpsaWJjX21lbWFs aWduKShhbGlnbm1lbnQsIHNpemUpOwotK30KLSsKLSt2b2lkIE11c2xGcmVlKGNvbnN0IEFsbG9j YXRvckRpc3BhdGNoKiwgdm9pZCogYWRkcmVzcywgdm9pZCogY29udGV4dCkgewotKyAgaWYgKCFs aWJjX2ZyZWUpCi0rICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOwotKyAgKCpsaWJjX2ZyZWUp KGFkZHJlc3MpOwotK30KLSsKLStzaXplX3QgTXVzbEdldFNpemVFc3RpbWF0ZShjb25zdCBBbGxv Y2F0b3JEaXNwYXRjaCosIHZvaWQqIGFkZHJlc3MsIHZvaWQqIGNvbnRleHQpIHsKLSsgIC8vIFRP RE8oc2lnZ2ksIHByaW1pYW5vKTogbWFsbG9jX3VzYWJsZV9zaXplIG1heSBuZWVkIHJlZGlyZWN0 aW9uIGluIHRoZQotKyAgLy8gICAgIHByZXNlbmNlIG9mIGludGVycG9zaW5nIHNoaW1zIHRoYXQg ZGl2ZXJ0IGFsbG9jYXRpb25zLgotKyAgaWYgKCFsaWJjX21hbGxvY191c2FibGVfc2l6ZSkKLSsg ICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7Ci0rICByZXR1cm4gKCpsaWJjX21hbGxvY191c2Fi bGVfc2l6ZSkoYWRkcmVzcyk7Ci0rfQotKwotK30gIC8vIG5hbWVzcGFjZQotKwotK2NvbnN0IEFs bG9jYXRvckRpc3BhdGNoIEFsbG9jYXRvckRpc3BhdGNoOjpkZWZhdWx0X2Rpc3BhdGNoID0gewot KyAgICAmTXVzbE1hbGxvYywgICAgICAgICAgIC8qIGFsbG9jX2Z1bmN0aW9uICovCi0rICAgICZN dXNsQ2FsbG9jLCAgICAgICAgICAgLyogYWxsb2NfemVyb19pbml0aWFsaXplZF9mdW5jdGlvbiAq LwotKyAgICAmTXVzbE1lbWFsaWduLCAgICAgICAgIC8qIGFsbG9jX2FsaWduZWRfZnVuY3Rpb24g Ki8KLSsgICAgJk11c2xSZWFsbG9jLCAgICAgICAgICAvKiByZWFsbG9jX2Z1bmN0aW9uICovCi0r ICAgICZNdXNsRnJlZSwgICAgICAgICAgICAgLyogZnJlZV9mdW5jdGlvbiAqLwotKyAgICAmTXVz bEdldFNpemVFc3RpbWF0ZSwgIC8qIGdldF9zaXplX2VzdGltYXRlX2Z1bmN0aW9uICovCi0rICAg IG51bGxwdHIsICAgICAgICAgICAgICAgLyogbmV4dCAqLwotK307Ci0rCi0rI2VuZGlmCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaCBi L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOC1tdXNsLW5vLW1hbGxpbmZvLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjMwNzE3MTM2YS4uMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFsbGluZm8ucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwzMSArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L2Jhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MJMjAxNy0xMS0yOCAxNDow Njo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vYmFzZS90cmFjZV9ldmVudC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYwkyMDE4LTAxLTI3IDIw OjEzOjI2Ljk2MDkzMjgwNSArMDEwMAotQEAgLTI0Myw3ICsyNDMsNyBAQAotICAgYWxsb2NhdGVk X29iamVjdHNfY291bnQgPSBtYWluX2hlYXBfaW5mby5ibG9ja19jb3VudDsKLSAjZWxpZiBkZWZp bmVkKE9TX0ZVQ0hTSUEpCi0gLy8gVE9ETyhmdWNoc2lhKTogUG9ydCwgc2VlIGh0dHBzOi8vY3Ji dWcuY29tLzcwNjU5Mi4KLS0jZWxzZQotKyNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotICAgc3Ry dWN0IG1hbGxpbmZvIGluZm8gPSBtYWxsaW5mbygpOwotICAgRENIRUNLX0dFKGluZm8uYXJlbmEg KyBpbmZvLmhibGtoZCwgaW5mby51b3JkYmxrcyk7Ci0gCi1AQCAtMjU1LDYgKzI1NSw4IEBACi0g Ci0gICAvLyBUb3RhbCBhbGxvY2F0ZWQgc3BhY2UgaXMgZ2l2ZW4gYnkgfHVvcmRibGtzfC4KLSAg IGFsbG9jYXRlZF9vYmplY3RzX3NpemUgPSBpbmZvLnVvcmRibGtzOwotKyNlbHNlCi0rLy8gbXVz bCBsaWJjIGRvZXMgbm90IHN1cHBvcnQgbWFsbGluZm8oKQotICNlbmRpZgotIAotICAgTWVtb3J5 QWxsb2NhdG9yRHVtcCogb3V0ZXJfZHVtcCA9IHBtZC0+Q3JlYXRlQWxsb2NhdG9yRHVtcCgibWFs bG9jIik7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvcHJvY2Vz cy9wcm9jZXNzX21ldHJpY3NfcG9zaXguY2MJMjAxNy0xMS0yOCAxNDowNjo1My4wMDAwMDAwMDAg KzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS9wcm9jZXNz L3Byb2Nlc3NfbWV0cmljc19wb3NpeC5jYwkyMDE4LTAxLTI3IDIwOjQ4OjExLjU3MTA0MDM0OCAr MDEwMAotQEAgLTk0LDcgKzk0LDcgQEAKLSAgIG1hbGxvY19zdGF0aXN0aWNzX3Qgc3RhdHMgPSB7 MH07Ci0gICBtYWxsb2Nfem9uZV9zdGF0aXN0aWNzKG51bGxwdHIsICZzdGF0cyk7Ci0gICByZXR1 cm4gc3RhdHMuc2l6ZV9pbl91c2U7Ci0tI2VsaWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5l ZChPU19BTkRST0lEKQotKyNlbGlmIChkZWZpbmVkKE9TX0xJTlVYKSAmJiBkZWZpbmVkKF9fR0xJ QkNfXykpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkKLSAgIHN0cnVjdCBtYWxsaW5mbyBtaW5mbyA9 IG1hbGxpbmZvKCk7Ci0gI2lmIGRlZmluZWQoVVNFX1RDTUFMTE9DKQotICAgcmV0dXJuIG1pbmZv LnVvcmRibGtzOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDA5LW11c2wtb2Zm X3QucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMDktbXVzbC1vZmZfdC5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTJkYjNiOWViZjQuLjAwMDAwMDAwMDAwCi0tLSBh L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAwOS1tdXNsLW9mZl90LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTAgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS9vdHMvaW5jbHVkZS9vcGVudHlwZS1zYW5pdGlzZXIuaAkyMDE2LTA1LTI2IDE0 OjU4OjU0LjAwMDAwMDAwMCArMDIwMAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9vdHMvaW5jbHVkZS9vcGVudHlwZS1zYW5pdGlzZXIuaAkyMDE2LTEw LTAxIDE0OjMxOjMwLjg4NTAwMDAwMCArMDIwMAotQEAgLTIxLDYgKzIxLDcgQEAKLSAjZGVmaW5l IGh0b25zKHgpIF9ieXRlc3dhcF91c2hvcnQgKHgpCi0gI2Vsc2UKLSAjaW5jbHVkZSA8YXJwYS9p bmV0Lmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KLSAj ZW5kaWYKLSAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMC1tdXNsLXByZWFk LXB3cml0ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMC1tdXNsLXByZWFkLXB3cml0 ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMTdiYmEwMTcuLjAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMC1tdXNsLXByZWFkLXB3cml0ZS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5o CTIwMTgtMDktMDcgMjE6MjU6MjYuNjM5OTY0MTAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQu aAkyMDE4LTA5LTA3IDIxOjI1OjExLjYxMTk2NDk5NSArMDIwMAotQEAgLTE3OTQsNiArMTc5NCwx NSBAQAotIC8qIEVuZCBvZiBzMzkwL3MzOTB4IGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KLSAjZW5kaWYKLSAKLSsjaWZuZGVmIF9fR0xJ QkNfXwotKyAgLyogRm9yIE11c2wgbGliYyBwcmVhZC9wcmVhZCBpcyB0aGUgc2FtZSBhcyBwcmVh ZDY0L3B3cml0ZTY0ICovCi0rI2lmbmRlZiBfX05SX3ByZWFkCi0rI2RlZmluZSBfX05SX3ByZWFk ICAgICAgICAgICAgICBfX05SX3ByZWFkNjQKLSsjZW5kaWYKLSsjaWZuZGVmIF9fTlJfcHdyaXRl Ci0rI2RlZmluZSBfX05SX3B3cml0ZSAgICAgICAgICAgICBfX05SX3B3cml0ZTY0Ci0rI2VuZGlm Ci0rI2VuZGlmIC8qIGlmbmRlZiBfX0dMSUJDX18gKi8KLSAKLSAvKiBBZnRlciBmb3JraW5nLCB3 ZSBtdXN0IG1ha2Ugc3VyZSB0byBvbmx5IGNhbGwgc3lzdGVtIGNhbGxzLiAgICAgICAgICAgICAg ICovCi0gI2lmIGRlZmluZWQoX19CT1VOREVEX1BPSU5URVJTX18pCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2ggYi9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2gKZGVsZXRlZCBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IGQ1Y2FmMzgzNmQ3Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMTEtbXVzbC1yZXBsYWNlLXB2YWxsb2MucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxNCArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjL2NvcmUvYXBpL3F0YnVnLTYx NTIxLmNwcAkyMDE3LTExLTI5IDA5OjQyOjI5LjAwMDAwMDAwMCArMDEwMAotKysrIHF0d2ViZW5n aW5lL3NyYy9jb3JlL2FwaS9xdGJ1Zy02MTUyMS5jcHAJMjAxOC0wMS0yOCAwNjo0OToyOS40NTQx NzU3MjUgKzAxMDAKLUBAIC0xMTEsNyArMTExLDExIEBACi0gfQotIAotIFNISU1fSElEREVOIHZv aWQqIFNoaW1QdmFsbG9jKHNpemVfdCBzaXplKSB7Ci0rI2lmIGRlZmluZWQoX19HTElCQ19fKQot ICAgICByZXR1cm4gcHZhbGxvYyhzaXplKTsKLSsjZWxzZQotKyAgICByZXR1cm4gdmFsbG9jKChz aXplKzQwOTUpJn40MDk1KTsKLSsjZW5kaWYKLSB9Ci0gCi0gU0hJTV9ISURERU4gaW50IFNoaW1Q b3NpeE1lbWFsaWduKHZvaWQqKiByLCBzaXplX3QgYSwgc2l6ZV90IHMpIHsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxMi1tdXNsLXJlc29sdmUucGF0Y2ggYi9zcmNwa2dzL3F0 NS9wYXRjaGVzLzAwMTItbXVzbC1yZXNvbHZlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBlZGZjZWI3OWYzMC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAK LS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9kbnNfcmVsb2Fk ZXIuY2MJMjAxNi0xMS0wNyAxNTo0NjoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vbmV0L2Rucy9kbnNfcmVsb2FkZXIuY2MJMjAxNi0xMi0y MCAwMzozMzoxMS43NDkwNTk2NTYgKzAxMDAKLUBAIC05LDYgKzksMTAgQEAKLSAKLSAjaW5jbHVk ZSA8cmVzb2x2Lmg+Ci0gCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjaW5jbHVkZSAicmVz b2x2X2NvbXBhdC5oIgotKyNlbmRpZgotKwotICNpbmNsdWRlICJiYXNlL2xhenlfaW5zdGFuY2Uu aCIKLSAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCi0gI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgi Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMvZG5zX2NvbmZp Z19zZXJ2aWNlX3Bvc2l4LmNjCTIwMTYtMTEtMDcgMTU6NDY6MTguMDAwMDAwMDAwICswMTAwCi0r KysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMvZG5zX2NvbmZpZ19z ZXJ2aWNlX3Bvc2l4LmNjCTIwMTYtMTItMjAgMDM6NDA6MDcuNjcxOTUzMDk4ICswMTAwCi1AQCAt Niw2ICs2LDEwIEBACi0gCi0gI2luY2x1ZGUgPHN0cmluZz4KLSAKLSsjaWYgIWRlZmluZWQoX19H TElCQ19fKQotKyNpbmNsdWRlICJyZXNvbHZfY29tcGF0LmgiCi0rI2VuZGlmCi0rCi0gI2luY2x1 ZGUgImJhc2UvYmluZC5oIgotICNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGUuaCIKLSAjaW5jbHVk ZSAiYmFzZS9maWxlcy9maWxlX3BhdGguaCIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNo ZXMvMDAxNS1tdXNsLXNpZ2luZm9fdC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNS1t dXNsLXNpZ2luZm9fdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU3NjBi ZTE2NjYuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNS1tdXNsLXNp Z2luZm9fdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZXJlJ3MgYSBz dWJ0bGUgZGlmZmVyZW5jZSBpbiB0aGUgaW50ZXJuYWwgbmFtZSBvZiBzaWdpbmZvX3QgZmllbGRz Ci1iZXR3ZWVuIGdsaWJjIGFuZCBtdXNsLiBUaGUgc3RydWN0dXJlIGl0c2VsZiBpcyBlcXVpdmFs ZW50LCBzbyBpdAotc2hvdWxkIHN1ZmZpY2UgdG8gYWRkIGEgbWFjcm8gdG8gcmVuYW1lIHRoZSBm aWVsZC4KLQotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MJMjAxNS0wMi0xNyAwNTo1Nzo0My4wMDAwMDAwMDAgKzAx MDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi90cmFwLmNjCTIwMTUtMDYtMDMgMDg6MjA6MjUuMDMyNzE2NDI3ICswMjAwCi1A QCAtMjIsNiArMjIsMTEgQEAKLSAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9hbmRy b2lkX3Vjb250ZXh0LmgiCi0gI2VuZGlmCi0KLSsvLyBtdXNsIGxpYmMgZGVmaW5lcyBzaWdpbmZv X3QgX19zaV9maWVsZHMgaW5zdGVhZCBvZiBfc2lmaWVsZHMKLSsjaWYgIWRlZmluZWQoX19HTElC Q19fKQotKyNkZWZpbmUgX3NpZmllbGRzIF9fc2lfZmllbGRzCi0rI2VuZGlmCi0rCi0gbmFtZXNw YWNlIHsKLQotIGNvbnN0IGludCBrQ2FwYWNpdHlJbmNyZW1lbnQgPSAyMDsKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2ggYi9zcmNwa2dz L3F0NS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA1NzEzNmJjMmJjZC4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUv cGF0Y2hlcy8wMDE3LW11c2wtc3RhY2tzdGFydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIw ICswLDAgQEAKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2MJMjAxOC0wMS0yNyAy MzowODo0My41ODY0NzUzNDkgKzAxMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwu Y2MJMjAxOC0wMS0yNyAyMzoxODoyMi4yNzQ1MDUyMDMgKzAxMDAKLUBAIC0yOCw3ICsyOCw3IEBA Ci0gLy8gRklYTUU6IE9uIE1hYyBPU1ggYW5kIExpbnV4LCB0aGlzIG1ldGhvZCBjYW5ub3QgZXN0 aW1hdGUgc3RhY2sgc2l6ZQotIC8vIGNvcnJlY3RseSBmb3IgdGhlIG1haW4gdGhyZWFkLgotIAot LSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVk KE9TX0ZSRUVCU0QpIHx8IFwKLSsjaWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19B TkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8IFwKLSAgICAgZGVmaW5lZChPU19GVUNI U0lBKQotICAgLy8gcHRocmVhZF9nZXRhdHRyX25wKCkgY2FuIGZhaWwgaWYgdGhlIHRocmVhZCBp cyBub3QgaW52b2tlZCBieQotICAgLy8gcHRocmVhZF9jcmVhdGUoKSAoZS5nLiwgdGhlIG1haW4g dGhyZWFkIG9mIHdlYmtpdF91bml0X3Rlc3RzKS4KLUBAIC05Niw3ICs5Niw3IEBACi0gfQotIAot IHZvaWQqIEdldFN0YWNrU3RhcnQoKSB7Ci0tI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZp bmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAotKyNpZiBkZWZpbmVk KE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkg fHwgXAotICAgICBkZWZpbmVkKE9TX0ZVQ0hTSUEpCi0gICBwdGhyZWFkX2F0dHJfdCBhdHRyOwot ICAgaW50IGVycm9yOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDIwLW11c2wt c2FuZGJveC5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDAyMC1tdXNsLXNhbmRib3gucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZGUxZTQxMTgzLi4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjAtbXVzbC1zYW5kYm94LnBhdGNoCisrKyAv ZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0 ZXJzX3Jlc3RyaWN0aW9ucy5jYwkyMDE4LTA2LTE1IDA5OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAot KysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYwkyMDE4LTA5 LTEzIDE5OjUzOjUzLjQ1Mzc4MDI1MyArMDIwMAotQEAgLTEyOSw3ICsxMjksNyBAQAotIC8vIENM T05FX1ZNLCBub3IgQ0xPTkVfVEhSRUFELCB3aGljaCBpbmNsdWRlcyBhbGwgZm9yaygpIGltcGxl bWVudGF0aW9ucy4KLSBSZXN1bHRFeHByIFJlc3RyaWN0Q2xvbmVUb1RocmVhZHNBbmRFUEVSTUZv cmsoKSB7Ci0gICBjb25zdCBBcmc8dW5zaWduZWQgbG9uZz4gZmxhZ3MoMCk7Ci0tCi0rI2lmIGRl ZmluZWQoX19HTElCQ19fKQotICAgLy8gVE9ETyhtZGVtcHNreSk6IEV4dGVuZCBEU0wgdG8gc3Vw cG9ydCAoZmxhZ3MgJiB+bWFzazEpID09IG1hc2syLgotICAgY29uc3QgdWludDY0X3Qga0FuZHJv aWRDbG9uZU1hc2sgPSBDTE9ORV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9ORV9TSUdIQU5EIHwgQ0xPTkVfVEhS RUFEIHwKLUBAIC0xNDgsNiArMTQ4LDE3IEBACi0gICByZXR1cm4gSWYoSXNBbmRyb2lkKCkgPyBh bmRyb2lkX3Rlc3QgOiBnbGliY190ZXN0LCBBbGxvdygpKQotICAgICAgIC5FbHNlSWYoKGZsYWdz ICYgKENMT05FX1ZNIHwgQ0xPTkVfVEhSRUFEKSkgPT0gMCwgRXJyb3IoRVBFUk0pKQotICAgICAg IC5FbHNlKENyYXNoU0lHU1lTQ2xvbmUoKSk7Ci0rI2Vsc2UKLSsgIGNvbnN0IGludCByZXF1aXJl ZCA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05FX1NJR0hBTkQgfAot KyAgICAgICAgICAgICAgICAgICAgICAgQ0xPTkVfVEhSRUFEIHwgQ0xPTkVfU1lTVlNFTTsKLSsg IGNvbnN0IGludCBzYWZlID0gQ0xPTkVfU0VUVExTIHwgQ0xPTkVfUEFSRU5UX1NFVFRJRCB8IENM T05FX0NISUxEX0NMRUFSVElEIHwKLSsgICAgICAgICAgICAgICAgICAgQ0xPTkVfREVUQUNIRUQ7 Ci0rICBjb25zdCBCb29sRXhwciB0aHJlYWRfY2xvbmVfb2sgPSAoZmxhZ3MmfnNhZmUpPT1yZXF1 aXJlZDsKLSsKLSsgIHJldHVybiBJZih0aHJlYWRfY2xvbmVfb2ssIEFsbG93KCkpCi0rICAgICAg LkVsc2VJZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihF UEVSTSkpCi0rICAgICAgLkVsc2UoQ3Jhc2hTSUdTWVNDbG9uZSgpKTsKLSsjZW5kaWYKLSB9Ci0g Ci0gUmVzdWx0RXhwciBSZXN0cmljdFByY3RsKCkgewotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9z ZXRzLmNjCTIwMTgtMDYtMTUgMDk6NDc6MjAuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVy cy9zeXNjYWxsX3NldHMuY2MJMjAxOC0wOS0xMyAxOTo1NjozMS43Nzk3NzM5NDAgKzAyMDAKLUBA IC0zNzUsNiArMzc1LDkgQEAKLSAjaWYgZGVmaW5lZChfX2kzODZfXykKLSAgICAgY2FzZSBfX05S X3dhaXRwaWQ6Ci0gI2VuZGlmCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsgICAgY2FzZSBf X05SX3NldF90aWRfYWRkcmVzczoKLSsjZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg Y2FzZSBfX05SX2Nsb25lOiAgLy8gU2hvdWxkIGJlIHBhcmFtZXRlci1yZXN0cmljdGVkLgotICAg ICBjYXNlIF9fTlJfc2V0bnM6ICAvLyBQcml2aWxlZ2VkLgotQEAgLTM4Nyw3ICszOTAsOSBAQAot ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19taXBzX18pCi0gICAgIGNhc2UgX19OUl9zZXRfdGhyZWFkX2FyZWE6Ci0gI2VuZGlmCi0rI2lm IGRlZmluZWQoX19HTElCQ19fKQotICAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRyZXNzOgotKyNl bmRpZgotICAgICBjYXNlIF9fTlJfdW5zaGFyZToKLSAjaWYgIWRlZmluZWQoX19taXBzX18pICYm ICFkZWZpbmVkKF9fYWFyY2g2NF9fKQotICAgICBjYXNlIF9fTlJfdmZvcms6Ci1AQCAtNDk2LDYg KzUwMSw5IEBACi0gICAgIGNhc2UgX19OUl9tbG9jazoKLSAgICAgY2FzZSBfX05SX211bmxvY2s6 Ci0gICAgIGNhc2UgX19OUl9tdW5tYXA6Ci0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsgICAg Y2FzZSBfX05SX21yZW1hcDoKLSsjZW5kaWYKLSAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgY2Fz ZSBfX05SX21hZHZpc2U6Ci0gICAgIGNhc2UgX19OUl9taW5jb3JlOgotQEAgLTUxMSw3ICs1MTks OSBAQAotICAgICBjYXNlIF9fTlJfbW9kaWZ5X2xkdDoKLSAjZW5kaWYKLSAgICAgY2FzZSBfX05S X21wcm90ZWN0OgotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKLSAgICAgY2FzZSBfX05SX21yZW1h cDoKLSsjZW5kaWYKLSAgICAgY2FzZSBfX05SX21zeW5jOgotICAgICBjYXNlIF9fTlJfbXVubG9j a2FsbDoKLSAgICAgY2FzZSBfX05SX3JlYWRhaGVhZDoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1 L3BhdGNoZXMvMDAyNS1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoIGIvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDI1LW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiZjVhMjJmYmE3Li4wMDAwMDAwMDAw MAotLS0gYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0 YWNrc2l6ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1fdGhyZWFk X2xpbnV4LmNjLm9yaWcJMjAxOC0wOS0xOSAxODowNToxNS41MjM5MjM3MDMgKzAyMDAKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJlYWRpbmcvcGxhdGZvcm1f dGhyZWFkX2xpbnV4LmNjCTIwMTgtMDktMTkgMTg6MDg6MDUuMTUwOTMyNDU0ICswMjAwCi1AQCAt MTczLDcgKzE3MywxMiBAQAotIAotIHNpemVfdCBHZXREZWZhdWx0VGhyZWFkU3RhY2tTaXplKGNv bnN0IHB0aHJlYWRfYXR0cl90JiBhdHRyaWJ1dGVzKSB7Ci0gI2lmICFkZWZpbmVkKFRIUkVBRF9T QU5JVElaRVIpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKQotICAgcmV0dXJuIDA7Ci0rI2Vsc2Ug Ly8gZGVmaW5lZChfX0dMSUJDX18pCi0rICAvLyBGb3IgTXVzbCBsaWJjIHRyeSB3aXRoIGEgZGVm YXVsdCBzdGFjayBzaXplIG9mIDIgTWlCCi0rICByZXR1cm4gMiAqIDEwMjQgKiAxMDI0OwotKyNl bmRpZiAvLyAhZGVmaW5lZChfX0dMSUJDX18pCi0gI2Vsc2UKLSAgIC8vIFRocmVhZFNhbml0aXpl ciBibG9hdHMgdGhlIHN0YWNrIGhlYXZpbHkuIEV2aWRlbmNlIGhhcyBiZWVuIHRoYXQgdGhlCi0g ICAvLyBkZWZhdWx0IHN0YWNrIHNpemUgaXNuJ3QgZW5vdWdoIGZvciBzb21lIGJyb3dzZXIgdGVz dHMuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBh dGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDI2LWRhdGFfcGFjay1iZS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzExM2RkYjY1NjYuLjAwMDAwMDAwMDAwCi0tLSBhL3Ny Y3BrZ3MvcXQ1L3BhdGNoZXMvMDAyNi1kYXRhX3BhY2stYmUucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxNSArMCwwIEBACi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Vp L2Jhc2UvcmVzb3VyY2UvZGF0YV9wYWNrLmNjLm9yaWcJMjAxOC0wOS0xMSAxNDoxNjo1My4xMDQ4 OTczNzkgKzAyMDAKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFz ZS9yZXNvdXJjZS9kYXRhX3BhY2suY2MJMjAxOC0wOS0xMSAxNDoxNzoxMi4wMDk4OTYyNTMgKzAy MDAKLUBAIC0zODMsMTIgKzM4Myw2IEBACi0gCi0gYm9vbCBEYXRhUGFjazo6R2V0U3RyaW5nUGll Y2UodWludDE2X3QgcmVzb3VyY2VfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmFzZTo6U3RyaW5nUGllY2UqIGRhdGEpIGNvbnN0IHsKLS0gIC8vIEl0IHdvbid0IGJlIGhhcmQg dG8gbWFrZSB0aGlzIGVuZGlhbi1hZ25vc3RpYywgYnV0IGl0J3Mgbm90IHdvcnRoCi0tICAvLyBi b3RoZXJpbmcgdG8gZG8gcmlnaHQgbm93LgotLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9MSVRUTEVf RU5ESUFOKQotLSNlcnJvciAiZGF0YXBhY2sgYXNzdW1lcyBsaXR0bGUgZW5kaWFuIgotLSNlbmRp ZgotLQotICAgY29uc3QgRW50cnkqIHRhcmdldCA9IExvb2t1cEVudHJ5QnlJZChyZXNvdXJjZV9p ZCk7Ci0gICBpZiAoIXRhcmdldCkKLSAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDMyLW11c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNoIGIv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMyLW11c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDA3NDJmNzJjMi4uMDAwMDAwMDAwMDAK LS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDMyLW11c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9o LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCTIwMTgtMDgt MjcgMTA6MjE6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv bWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MJMjAxOC0xMS0yMiAwMDo0MTo1 OC41MjI0Nzc1NTkgKzAxMDAKLUBAIC0zOCw3ICszOCwxMiBAQAotIAotICNpbmNsdWRlICJjbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuaCIKLSAKLSsjaWYg ZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSsjZWxzZQotKy8q IEZvciBhcm0qLW11c2wgdGhpcyBkZWZpbml0aW9uIGlzIG1pc3NpbmcgKi8KLSsjZGVmaW5lIEFS TV9zcCB1cmVnc1sxM10KLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUg PGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBh cnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCTIwMTgtMDgtMjcgMTA6MjE6 MzEuMDAwMDAwMDAwICswMjAwCi0rKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVt L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBf d3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCTIwMTgtMTEtMjIgMDA6NDk6MzkuNTMzNDkyMjQ1 ICswMTAwCi1AQCAtMzIsNyArMzIsMTIgQEAKLSAKLSAjaW5jbHVkZSAiY2xpZW50L2xpbnV4L21p bmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5oIgotIAotKyNpZiBkZWZpbmVkKF9fR0xJ QkNfXykKLSAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKyNlbHNlCi0rLyogRm9yIGFybSotbXVz bCB0aGlzIGRlZmluaXRpb24gaXMgbWlzc2luZyAqLwotKyNkZWZpbmUgQVJNX3NwIHVyZWdzWzEz XQotKyNlbmRpZgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAjaW5jbHVkZSA8ZWxmLmg+Ci0gI2lu Y2x1ZGUgPHN0ZGlvLmg+CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFz bS1ubHMucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyYWMwNDIwNzY0Li4wMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMyArMCwwIEBACi1kaWZmIC0tZ2l0IHNyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9w YXJ0eS95YXNtL3NvdXJjZS9jb25maWcvbGludXgvY29uZmlnLmggc3JjLzNyZHBhcnR5L2Nocm9t aXVtL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAotaW5kZXgg OWUzNjUzOS4uZjU4ODA4MyAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hy b21pdW0vL3RoaXJkX3BhcnR5L3lhc20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAotLS0t IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vdGhpcmRfcGFydHkveWFzbS9zb3Vy Y2UvY29uZmlnL2xpbnV4L2NvbmZpZy5oCi1AQCAtNSw3ICs1LDcgQEAKLSAjZGVmaW5lIENQUF9Q Uk9HICJnY2MgLUUiCi0gCi0gLyogKi8KLS0jZGVmaW5lIEVOQUJMRV9OTFMgMQotKy8qICN1bmRl ZiBFTkFCTEVfTkxTIDEgKi8KLSAKLSAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFi b3J0JyBmdW5jdGlvbi4gKi8KLSAjZGVmaW5lIEhBVkVfQUJPUlQgMQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNoIGIvc3Jj cGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmRlM2RkNTgzMi4uMDAwMDAwMDAwMDAKLS0tIGEv c3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQyLWFybS12b2lkLWlzLW5vdC1hbmRyb2lkLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9vcGVubWF4X2RsL2RsL0JVSUxELmduCTIwMTktMDktMjMg MTQ6MjQ6MjAuMDAwMDAwMDAwICswMjAwCi0rKysgLQkyMDE5LTEwLTEwIDE4OjE2OjA1LjkxMDY5 MDA1NiArMDIwMAotQEAgLTE2LDkgKzE2LDYgQEAKLSAgICAgaWYgKGFybV91c2VfbmVvbikgewot ICAgICAgICMgRW5hYmxlIGJ1aWxkLXRpbWUgTkVPTiBzZWxlY3Rpb24uCi0gICAgICAgZGVmaW5l cyA9IFsgIkRMX0FSTV9ORU9OIiBdCi0tICAgIH0gZWxzZSBpZiAoYXJtX29wdGlvbmFsbHlfdXNl X25lb24pIHsKLS0gICAgICAjIEVuYWJsZSBydW4tdGltZSBORU9OIHNlbGVjdGlvbi4KLS0gICAg ICBkZWZpbmVzID0gWyAiRExfQVJNX05FT05fT1BUSU9OQUwiIF0KLSAgICAgfQotICAgfSBlbHNl IGlmIChjdXJyZW50X2NwdSA9PSAiYXJtNjQiKSB7Ci0gICAgICMgRW5hYmxlIGJ1aWxkLXRpbWUg TkVPTiBzZWxlY3Rpb24uCi1AQCAtMjA2LDE4ICsyMDMsNiBAQAotICAgICAgICJzcC9zcmMvYXJt L2FybXY3L29teFNQX0ZGVEZ3ZF9SVG9DQ1NfRjMyX1Nmc19zLlMiLAotICAgICAgICJzcC9zcmMv YXJtL2FybXY3L29teFNQX0ZGVEludl9DQ1NUb1JfRjMyX1Nmc19zLlMiLAotICAgICBdCi0tICAg IGlmIChhcm1fb3B0aW9uYWxseV91c2VfbmVvbikgewotLSAgICAgICMgUnVuLXRpbWUgTkVPTiBk ZXRlY3Rpb24uCi0tICAgICAgZGVwcyA9IFsKLS0gICAgICAgICIvL3RoaXJkX3BhcnR5L2FuZHJv aWRfc2RrOmNwdV9mZWF0dXJlcyIsCi0tICAgICAgXQotLQotLSAgICAgICMgVG8gZ2V0IHRoZSBf X2FuZHJvaWRfbG9nX3ByaW50IHJvdXRpbmUKLS0gICAgICBsaWJzID0gWyAibG9nIiBdCi0tCi0t ICAgICAgIyBEZXRlY3Rpb24gcm91dGluZQotLSAgICAgIHNvdXJjZXMgKz0gWyAic3Avc3JjL2Fy bS9kZXRlY3QuYyIgXQotLSAgICB9Ci0gICB9Ci0gCi0gICAjIE5FT04gaW1wbGVtZW50YXRpb24g b2YgRkZULiBUaGlzIGxpYnJhcnkgaXMgTk9UCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRj aGVzLzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0 NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj MWNkYjUzNzIxMi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ0LXF0 LW11c2wtZXhlY2luZm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0tLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNlL2RlYnVnL3N0YWNrX3RyYWNl X3Bvc2l4LmNjLm9yaWcJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBx dHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2Vf cG9zaXguY2MJMjAxOS0wNS0wNiAyMzoxNjoxMy4yNDU1MDI0NjcgKzAyMDAKLUBAIC0yNyw3ICsy Nyw3IEBACi0gI2lmICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCi0gI2luY2x1ZGUgPGN4eGFiaS5o PgotICNlbmRpZgotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQot KyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSAjaW5jbHVkZSA8ZXhl Y2luZm8uaD4KLSAjZW5kaWYKLSAKLUBAIC04Niw3ICs4Niw3IEBACi0gICAvLyBOb3RlOiBjb2Rl IGluIHRoaXMgZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBzYWZlIChzdGQ6OnN0cmluZyB1 c2VzCi0gICAvLyBtYWxsb2MgaW50ZXJuYWxseSkuCi0gCi0tI2lmICFkZWZpbmVkKF9fVUNMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5l ZChfQUlYKQotICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFyY2hfZnJvbSA9IDA7Ci0gICB3 aGlsZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKLSAgICAgLy8gTG9vayBmb3IgdGhl IHN0YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNoX2Zyb20uCi1AQCAtMTIxLDcg KzEyMSw3IEBACi0gICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVkX3N0YXJ0ICsgMjsKLSAgICAg fQotICAgfQotLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJ WCkKLSsjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSB9 Ci0gI2VuZGlmICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQotIAotQEAgLTEzMyw3ICsxMzMs NyBAQAotICAgdmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVmYXVsdDsKLSB9 OwotIAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotKyNpZiBk ZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSB2b2lkIE91dHB1dFBvaW50ZXIo dm9pZCogcG9pbnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgewotICAgLy8g VGhpcyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1iZXIg aW4gaGV4OgotICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4KLUBA IC0yMTYsNyArMjE2LDcgQEAKLSAgIH0KLSAjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1NZTUJPTEla RSkKLSB9Ci0tI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlY KQotKyNlbmRpZiAgLy8gIWRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotIAot IHZvaWQgUHJpbnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQpIHsKLSAgIC8vIE5PVEU6IFRo aXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2Vz cwotQEAgLTgxMiw3ICs4MTIsNyBAQAotICAgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5 bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gICAvLyBzdGFjayBkdW1w aW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4K LSAKLS0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKLSsjaWYgZGVm aW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0gICAvLyBUaG91Z2ggdGhlIGJhY2t0 cmFjZSBBUEkgbWFuIHBhZ2UgZG9lcyBub3QgbGlzdCBhbnkgcG9zc2libGUgbmVnYXRpdmUKLSAg IC8vIHJldHVybiB2YWx1ZXMsIHdlIHRha2Ugbm8gY2hhbmNlLgotICAgcmV0dXJuIGJhc2U6OnNh dHVyYXRlZF9jYXN0PHNpemVfdD4oYmFja3RyYWNlKHRyYWNlLCBjb3VudCkpOwotQEAgLTgyNSwx MyArODI1LDEzIEBACi0gLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNh ZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCi0gLy8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFu ZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCi0gCi0tI2lmICFkZWZp bmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0rI2lmIGRlZmluZWQoX19HTElCQ19f KSAmJiAhZGVmaW5lZChfQUlYKQotICAgUHJpbnRCYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhhbmRs ZXI7Ci0gICBQcm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRfLCBwcmVmaXhfc3RyaW5nLCAm aGFuZGxlcik7Ci0gI2VuZGlmCi0gfQotIAotLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAh ZGVmaW5lZChfQUlYKQotKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkK LSB2b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0aFByZWZpeChzdGQ6Om9zdHJlYW0q IG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKLSAgIFN0cmVhbUJhY2t0cmFjZU91dHB1dEhhbmRs ZXIgaGFuZGxlcihvcyk7Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jh c2UvZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAwMDAwMDAgKzAy MDAKLSsrKyAtCTIwMTktMDUtMDYgMjM6MTg6MTQuOTIzNTY2OTkyICswMjAwCi1AQCAtMjMzLDcg KzIzMyw3IEBACi0gfQotIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6OlRvU3RyaW5nV2l0aFByZWZp eChjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7Ci0gICBzdGQ6OnN0cmluZ3N0cmVh bSBzdHJlYW07Ci0tI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCi0r I2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQotICAgT3V0cHV0VG9TdHJl YW1XaXRoUHJlZml4KCZzdHJlYW0sIHByZWZpeF9zdHJpbmcpOwotICNlbmRpZgotICAgcmV0dXJu IHN0cmVhbS5zdHIoKTsKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jh c2UvbG9nZ2luZy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAwMDAwMCArMDEwMAotLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9sb2dnaW5nLmNjCTIwMTgtMDEt MjcgMjI6NDY6MzQuOTcwNDA2ODA3ICswMTAwCi1AQCAtNTQ2LDcgKzU0Niw3IEBACi0gCi0gTG9n TWVzc2FnZTo6fkxvZ01lc3NhZ2UoKSB7Ci0gICBzaXplX3Qgc3RhY2tfc3RhcnQgPSBzdHJlYW1f LnRlbGxwKCk7Ci0tI2lmICFkZWZpbmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19O QUNMKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCi0rI2lmICFkZWZpbmVkKE9GRklDSUFM X0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgXAot ICAgICAhZGVmaW5lZChPU19BSVgpCi0gICBpZiAoc2V2ZXJpdHlfID09IExPR19GQVRBTCAmJiAh YmFzZTo6ZGVidWc6OkJlaW5nRGVidWdnZWQoKSkgewotICAgICAvLyBJbmNsdWRlIGEgc3RhY2sg dHJhY2Ugb24gYSBmYXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMgYXR0YWNoZWQuCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBh dGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ1LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk2NzUzYmVmMzAuLjAwMDAwMDAw MDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3Np emUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1kaWZmIC0tZ2l0IGEvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5nL3NpbXBsZV90aHJlYWQu Y2MgYi9zcmMvM3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxl X3RocmVhZC5jYwotaW5kZXggMDJiZjQ5Yi4uMDVlZTE4MiAxMDA2NDQKLS0tLSBxdHdlYmVuZ2lu ZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3Ro cmVhZC5jYwotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9wcGFwaS91dGls aXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCi1AQCAtMTMsNyArMTMsNyBAQCBuYW1lc3Bh Y2UgcHAgewotIG5hbWVzcGFjZSB7Ci0gCi0gLy8gVXNlIDJNQiBkZWZhdWx0IHN0YWNrIHNpemUg Zm9yIE5hdGl2ZSBDbGllbnQsIG90aGVyd2lzZSB1c2Ugc3lzdGVtIGRlZmF1bHQuCi0tI2lmIGRl ZmluZWQoX19uYXRpdmVfY2xpZW50X18pCi0rI2lmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18p IHx8ICFkZWZpbmVkKF9fR0xJQkNfXykKLSBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1NpemUg PSAyICogMTAyNCAqIDEwMjQ7Ci0gI2Vsc2UKLSBjb25zdCBzaXplX3Qga0RlZmF1bHRTdGFja1Np emUgPSAwOwotZGlmZiAtLWdpdCBhL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9w bGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYyBiL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMv YmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYwotaW5kZXggY2Y3ZjNlYy4uZTA2YTVjZSAx MDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdjgvc3JjL2Jhc2Uv cGxhdGZvcm0vcGxhdGZvcm0tcG9zaXguY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxhdGZvcm0tcG9zaXguY2MKLUBAIC03NjEs NyArNzYxLDcgQEAgdm9pZCBUaHJlYWQ6OlN0YXJ0KCkgewotICNpZiBWOF9PU19NQUNPU1gKLSAg ICAgLy8gRGVmYXVsdCBvbiBNYWMgT1MgWCBpcyA1MTJrQiAtLSBidW1wIHVwIHRvIDFNQgotICAg ICBzdGFja19zaXplID0gMSAqIDEwMjQgKiAxMDI0OwotLSNlbGlmIFY4X09TX0FJWAotKyNlbGlm IFY4X09TX0FJWCB8fCAhZGVmaW5lZChfX0dMSUJDX18pCi0gICAgIC8vIERlZmF1bHQgb24gQUlY IGlzIDk2a0IgLS0gYnVtcCB1cCB0byAyTUIKLSAgICAgc3RhY2tfc2l6ZSA9IDIgKiAxMDI0ICog MTAyNDsKLSAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ni1zYW5k Ym94LW1lbWJhcnJpZXIucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDYtc2FuZGJveC1t ZW1iYXJyaWVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzM5NzFmMjQz Mi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVt YmFycmllci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS0tLSBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv YXJtNjRfbGludXhfc3lzY2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5o Ci1AQCAtMTA2Myw0ICsxMDYzLDggQEAKLSAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIDI3OQot ICNlbmRpZgotIAotKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIpCi0rI2RlZmluZSBfX05S X21lbWJhcnJpZXIgMjgzCi0rI2VuZGlmCi0rCi0gI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZ U1RFTV9IRUFERVJTX0FSTTY0X0xJTlVYX1NZU0NBTExTX0hfCi0KLS0tLSBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtX2xp bnV4X3N5c2NhbGxzLmgKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3Nh bmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3N5c2NhbGxzLmgKLUBAIC0xMzg1 LDYgKzEzODUsMTAgQEAKLSAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRlIChfX05SX1NZU0NBTExf QkFTRSszODUpCi0gI2VuZGlmCi0gCi0rI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKLSsj ZGVmaW5lIF9fTlJfbWVtYmFycmllciAoX19OUl9TWVNDQUxMX0JBU0UrMzg5KQotKyNlbmRpZgot KwotIC8vIEFSTSBwcml2YXRlIHN5c2NhbGxzLgotICNpZiAhZGVmaW5lZChfX0FSTV9OUl9CQVNF KQotICNkZWZpbmUgX19BUk1fTlJfQkFTRSAoX19OUl9TWVNDQUxMX0JBU0UgKyAweEYwMDAwKQot Ci0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL3g4Nl8zMl9saW51eF9zeXNjYWxscy5oCi0rKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl8zMl9s aW51eF9zeXNjYWxscy5oCi1AQCAtMTQyMiw1ICsxNDIyLDkgQEAKLSAjZGVmaW5lIF9fTlJfbWVt ZmRfY3JlYXRlIDM1NgotICNlbmRpZgotIAotKyNpZiAhZGVmaW5lZChfX05SX21lbWJhcnJpZXIp Ci0rI2RlZmluZSBfX05SX21lbWJhcnJpZXIgMzc1Ci0rI2VuZGlmCi0rCi0gI2VuZGlmICAvLyBT QU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX1g4Nl8zMl9MSU5VWF9TWVNDQUxMU19IXwotIAot LS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy94ODZfNjRfbGludXhfc3lzY2FsbHMuaAotKysrIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfNjRfbGlu dXhfc3lzY2FsbHMuaAotQEAgLTEyOTAsNSArMTI5MCw5IEBACi0gI2RlZmluZSBfX05SX21lbWZk X2NyZWF0ZSAzMTkKLSAjZW5kaWYKLSAKLSsjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQot KyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDMyNAotKyNlbmRpZgotKwotICNlbmRpZiAgLy8gU0FO REJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19YODZfNjRfTElOVVhfU1lTQ0FMTFNfSF8KLSAKLS0t LSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFy dHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3Nl dHMuY2MKLUBAIC0zNzAsNiArMzcwLDcgQEAKLSAgIHN3aXRjaCAoc3lzbm8pIHsKLSAgICAgY2Fz ZSBfX05SX2V4aXQ6Ci0gICAgIGNhc2UgX19OUl9leGl0X2dyb3VwOgotKyAgICBjYXNlIF9fTlJf bWVtYmFycmllcjoKLSAgICAgY2FzZSBfX05SX3dhaXQ0OgotICAgICBjYXNlIF9fTlJfd2FpdGlk OgotICNpZiBkZWZpbmVkKF9faTM4Nl9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMDQ3LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2ggYi9zcmNwa2dzL3F0NS9wYXRjaGVzLzAwNDct Z24tY3Jvc3Mtc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU2 Njg5YTQxODMuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3BhdGNoZXMvMDA0Ny1nbi1j cm9zcy1zeXNyb290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlcmUg aXMgbm8gcmVhc29uIHRvIHJ1biB0aGlzIHNjcmlwdCBhbmQgcnVubmluZyBpdCBmYWlscyBvbiBh cmNoaXRlY3R1cmVzCi1jaHJvbWl1bSBkb2VzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnQgKHN1Y2gg YXMgcHBjNjQpLgotCi0tLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxk L2NvbmZpZy9wb3NpeC9CVUlMRC5nbgotKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9idWlsZC9jb25maWcvcG9zaXgvQlVJTEQuZ24KLUBAIC0xMDIsMTIgKzEwMiwxMiBAQCBj b25maWcoInJ1bnRpbWVfbGlicmFyeSIpIHsKLSAgICAgICAjIHdoZW4gdHVybmluZyB0aGUgc3lz cm9vdCBvbiBvciBvZmYuIChkZWZpbmVzIGFyZSBwYXNzZWQgdmlhIHRoZSBjb21tYW5kCi0gICAg ICAgIyBsaW5lLCBhbmQgYnVpbGQgc3lzdGVtIHJlYnVpbGRzIHRoaW5ncyB3aGVuIHRoZWlyIGNv bW1hbmRsaW5lCi0gICAgICAgIyBjaGFuZ2VzKS4gTm90aGluZyBzaG91bGQgZXZlciByZWFkIHRo aXMgZGVmaW5lLgotLSAgICAgIHN5c3Jvb3RfaGFzaCA9Ci0tICAgICAgICAgIGV4ZWNfc2NyaXB0 KCIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jvb3QucHkiLAotLSAg ICAgICAgICAgICAgICAgICAgICBbICItLXByaW50LWhhc2g9JGN1cnJlbnRfY3B1IiBdLAotLSAg ICAgICAgICAgICAgICAgICAgICAidHJpbSBzdHJpbmciLAotLSAgICAgICAgICAgICAgICAgICAg ICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5qc29uIiBdKQotLSAg ICAgIGRlZmluZXMgKz0gWyAiQ1JfU1lTUk9PVF9IQVNIPSRzeXNyb290X2hhc2giIF0KLSsgICAg ICAjc3lzcm9vdF9oYXNoID0KLSsgICAgICAjICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4 L3N5c3Jvb3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jvb3QucHkiLAotKyAgICAgICMgICAgICAgICAg ICAgICAgWyAiLS1wcmludC1oYXNoPSRjdXJyZW50X2NwdSIgXSwKLSsgICAgICAjICAgICAgICAg ICAgICAgICJ0cmltIHN0cmluZyIsCi0rICAgICAgIyAgICAgICAgICAgICAgICBbICIvL2J1aWxk L2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5qc29uIiBdKQotKyAgICAgICNkZWZpbmVz ICs9IFsgIkNSX1NZU1JPT1RfSEFTSD0kc3lzcm9vdF9oYXNoIiBdCi0gICAgIH0KLSAgICAgYXNt ZmxhZ3MgKz0gc3lzcm9vdF9mbGFncwotIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMTAwLXF0NS13ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMTAwLXF0NS13ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCBkNTM5MTVmMTE3Yi4uMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0 Y2hlcy8wMTAwLXF0NS13ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNDIgKzAsMCBAQAotRnJvbSA3NGU2OWRhOTJkMGE4OTUxMjJjYTY1OTIyYjlhMmI4YjM5MjZj ODgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0VtaWxpbz0yMENv Ym9zPTIwPUMzPTgxbHZhcmV6Pz0gPGVtaWxpb0Btb3ppbGxhLmNvbT4KLURhdGU6IFdlZCwgMjkg TWF5IDIwMTkgMTU6MzA6MzIgKzAyMDAKLVN1YmplY3Q6IEZpeCBidWlsZCB3aXRoIHJlY2VudCBs aW51eCBrZXJuZWwuCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWlu OyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVJlY2Vu dCBrZXJuZWwgY29tbWl0WzFdIG1vdmVkIGEgYml0IHRoZSBkZWZpbmUgZm9yIHRoaXMgY29uc3Rh bnQuIFRoaXMgcmV2ZWFsZWQKLWEgbWlzc2luZyBpbmNsdWRlIGluIFdlYlJUQy4KLQotWzFdOiBo dHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90b3J2YWxkcy9s aW51eC5naXQvY29tbWl0Lz9pZD0wNzY4ZTE3MDczZGM1Ci0KLUJ1Zzogd2VicnRjOjEwNjc3Ci1D aGFuZ2UtSWQ6IEk2ZWQ2OWQzMDc1OTlkMDc3NzYwYWU2YWQ3NGJlMTBiZmJkZDFjYWM2Ci1Db21t aXQtUXVldWU6IEthcmwgV2liZXJnIDxrd2liZXJnQHdlYnJ0Yy5vcmc+Ci1SZXZpZXdlZC1ieTog S2FybCBXaWJlcmcgPGt3aWJlcmdAd2VicnRjLm9yZz4KLUNyLUNvbW1pdC1Qb3NpdGlvbjogcmVm cy9oZWFkcy9tYXN0ZXJAeyMyODEwOH0KLVNlZS1BbHNvOiBodHRwczovL2Nocm9taXVtLmdvb2ds ZXNvdXJjZS5jb20vZXh0ZXJuYWwvd2VicnRjLysvNjgwNjU1MGQ1ZDUxYTgyMDEwNGExMjIwNWQx ZjM3Y2UwYWNlYmYxOQotUmV2aWV3ZWQtYnk6IErDvHJpIFZhbGRtYW5uIDxqdXJpLnZhbGRtYW5u QHF0LmlvPgotLS0tCi0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L3dlYnJ0Yy9ydGNfYmFzZS9waHlzaWNhbF9zb2NrZXRfc2VydmVyLmNjIHwgNCArKysrCi0g MSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2UvcGh5c2lj YWxfc29ja2V0X3NlcnZlci5jYyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhp cmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2FsX3NvY2tldF9zZXJ2ZXIuY2MKLWluZGV4 IDQ4NDVhNzMzODBjLi5jMzhkN2ZkZmFjOSAxMDA2NDQKLS0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2FsX3NvY2tl dF9zZXJ2ZXIuY2MKLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvd2VicnRjL3J0Y19iYXNlL3BoeXNpY2FsX3NvY2tldF9zZXJ2ZXIuY2MKLUBAIC01MSw2 ICs1MSwxMCBAQAotICNpbmNsdWRlICJydGNfYmFzZS9udWxsX3NvY2tldF9zZXJ2ZXIuaCIKLSAj aW5jbHVkZSAicnRjX2Jhc2UvdGltZV91dGlscy5oIgotIAotKyNpZiBkZWZpbmVkKFdFQlJUQ19M SU5VWCkKLSsjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgotKyNlbmRpZgotKwotICNpZiBkZWZp bmVkKFdFQlJUQ19XSU4pCi0gI2RlZmluZSBMQVNUX1NZU1RFTV9FUlJPUiAoOjpHZXRMYXN0RXJy b3IoKSkKLSAjZWxpZiBkZWZpbmVkKF9fbmF0aXZlX2NsaWVudF9fKSAmJiBfX25hdGl2ZV9jbGll bnRfXwotLS0gCi1jZ2l0IHYxLjIuMQotCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS9wYXRjaGVz LzAxMDEtcXQ1LXdlYmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoIGIvc3JjcGtncy9xdDUvcGF0Y2hl cy8wMTAxLXF0NS13ZWJlbmdpbmUtc3lzdGVtLWljdS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggOGY2YjlkYjZhZmUuLjAwMDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3MvcXQ1L3Bh dGNoZXMvMDEwMS1xdDUtd2ViZW5naW5lLXN5c3RlbS1pY3UucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwzMiArMCwwIEBACi1Gcm9tIDdiYzIzOTJjMTkxMThhODAzODBjNzY2MWZiODZjNjkwMjJl YjJiNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaXJpbGwgQnVydHNldiA8a2ly aWxsLmJ1cnRzZXZAcXQuaW8+Ci1EYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDE1OjA5OjI1ICswMjAw Ci1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBjb21waWxhdGlvbiB3aXRoIHN5c3RlbSBJQ1UKLQotc3lz dGVtX2ljdV9jb25maWcgaXMgbWlzc2luZyBkZWZhdWx0IHR5cGUgZm9yIFVDSEFSX1RZUEUsIHRo YXQgY2F1c2VzCi1hIG1pc21hdGNoIG9mIHR5cGVzIGFsbCBvdmVyIENocm9taXVtLiB1aW50MTZf dCBpcyBkZWZpbmVkIGFzIGEgYmFzZSB0eXBlCi11bmRlciBsaW51eCBpbiBjaHJvbWl1bS9idWls ZC9saW51eC91bmJ1bmRsZS9pY3UuZ24uCi1OZWNlc3NhcnkgY29uc3RydWN0aW9ucyB3ZXJlIGxv c3QgZHVyaW5nIHJlY2VudCByZWZhY3RvcmluZ3MsCi1hbmQgc2VlbXMgdG8gYmUgcmVzdG9yZWQg aW4gbGF0ZXIgY2hyb21pdW0gPiA3Ni4KLQotQ2hhbmdlLUlkOiBJZTA1YzAwNWViY2RlZDlhMjI4 Mzg2ZGI1ZDlhYmU5ODYzNzg3ZWMyYgotLS0tCi0KLWRpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ljdS9CVUlMRC5nbiBxdHdlYmVuZ2luZS9z cmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvaWN1L0JVSUxELmduCi1pbmRleCBiZTNj OTE5Li42MzlmOGZkIDEwMDY0NAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9pY3UvQlVJTEQuZ24KLSsrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvaWN1L0JVSUxELmduCi1AQCAtMTE3NSw2ICsxMTc1LDEyIEBA Ci0gICAgICJVU0lOR19TWVNURU1fSUNVPTEiLAotICAgICAiSUNVX1VUSUxfREFUQV9JTVBMPUlD VV9VVElMX0RBVEFfU1RBVElDIiwKLSAgIF0KLSsKLSsgIGlmIChpc193aW4pIHsKLSsgICAgZGVm aW5lcyArPSBbICJVQ0hBUl9UWVBFPXdjaGFyX3QiIF0KLSsgIH0gZWxzZSB7Ci0rICAgIGRlZmlu ZXMgKz0gWyAiVUNIQVJfVFlQRT11aW50MTZfdCIgXQotKyAgfQotIH0KLSAKLSBpZiAodXNlX3N5 c3RlbV9pY3UpIHsKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTEwLXd0Zi13 aHktZG9lcy1pdC1maW5kLWNhbm9uLWZpbGUtbmFtZS1vbi1tdXNsLnBhdGNoIGIvc3JjcGtncy9x dDUvcGF0Y2hlcy8wMTEwLXd0Zi13aHktZG9lcy1pdC1maW5kLWNhbm9uLWZpbGUtbmFtZS1vbi1t dXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTNlZDJkNDFiYi4uMDAw MDAwMDAwMDAKLS0tIGEvc3JjcGtncy9xdDUvcGF0Y2hlcy8wMTEwLXd0Zi13aHktZG9lcy1pdC1m aW5kLWNhbm9uLWZpbGUtbmFtZS1vbi1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEg KzAsMCBAQAotLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0 eS9uYXNtL25hc21saWIvcmVhbHBhdGguYwkyMDE5LTA5LTIzIDE0OjI0OjIwLjAwMDAwMDAwMCAr MDIwMAotKysrIC0JMjAxOS0xMC0xMSAwNjoyNzoyOC40NTAzMjk5ODYgKzAyMDAKLUBAIC01Nyw3 ICs1Nyw3IEBACi0gICovCi0gY2hhciAqbmFzbV9yZWFscGF0aChjb25zdCBjaGFyICpyZWxfcGF0 aCkKLSB7Ci0tICAgIGNoYXIgKnJwID0gY2Fub25pY2FsaXplX2ZpbGVfbmFtZShyZWxfcGF0aCk7 Ci0rICAgIGNoYXIgKnJwID0gcmVhbHBhdGgocmVsX3BhdGgsIE5VTEwpOwotICAgICByZXR1cm4g cnAgPyBycCA6IG5hc21fc3RyZHVwKHJlbF9wYXRoKTsKLSB9Ci0gCmRpZmYgLS1naXQgYS9zcmNw a2dzL3F0NS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1L3RlbXBsYXRlCmluZGV4IGJlZTgzNjcwMGZm Li44MjliYzcyODFiYiAxMDA2NDQKLS0tIGEvc3JjcGtncy9xdDUvdGVtcGxhdGUKKysrIGIvc3Jj cGtncy9xdDUvdGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdx dDUnCiBwa2duYW1lPXF0NQotdmVyc2lvbj01LjE0LjBiZXRhMQordmVyc2lvbj01LjE0LjBiZXRh MgogcmV2aXNpb249MQogd3Jrc3JjPSJxdC1ldmVyeXdoZXJlLXNyYy0ke3ZlcnNpb24vYi8tYn0i CiBidWlsZF9zdHlsZT1nbnUtY29uZmlndXJlCkBAIC0yMSw3ICsyMSw3IEBAIG1haW50YWluZXI9 IkrDvHJnZW4gQnVjaG3DvGxsZXIgPHB1bGxtb2xsQHQtb25saW5lLmRlPiIKIGxpY2Vuc2U9IkdQ TC0zLjAtb3ItbGF0ZXIsIExHUEwtMy4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcXQu aW8vIgogZGlzdGZpbGVzPSJodHRwOi8vZG93bmxvYWQucXQuaW8vZGV2ZWxvcG1lbnRfcmVsZWFz ZXMvcXQvJHt2ZXJzaW9uJS4qfS8ke3ZlcnNpb24vYi8tYn0vc2luZ2xlL3F0LWV2ZXJ5d2hlcmUt c3JjLSR7dmVyc2lvbi9iLy1ifS50YXIueHoiCi1jaGVja3N1bT1mMDdjZmMyNjc2MjI0NGJkMzQz MTkwYjFiMmU4YjIyNzA4MTk2ZjAxNzAyNGQ2YWI1OWY3ZmUxYzg0MzJmNmIzCitjaGVja3N1bT00 ZTZiM2ViNGU5M2U5ZDk2YWIxZDM5YWFmN2Q2YTI4MTY0YWVjMzQ2ZjI4NTcxYmY2MDJjODFkNDI3 OWMxNWE0CiByZXBsYWNlcz0icXQ1LWRvYzw1LjYuMCBxdDUtcXVpY2sxPDUuNi4wIHF0NS1xdWlj azEtZGV2ZWw8NS42LjAgcXQ1LXdlYmtpdDw1LjYuMCBxdDUtd2Via2l0LWRldmVsPDUuNi4wCiAg cXQ1LWVuZ2luaW88NS43LjEgcXQ1LWVuZ2luaW8tZGV2ZWw8NS43LjEgcXQ1LXBsdWdpbi1ndGs8 NS43LjEgcXQ1LWNhbnZhczNkPDUuMTMuMCIKIAoKRnJvbSA5MGVjMjc0NTg2Y2ZmOWNhNzllMDhk MTNkNDQ4ZDg1Y2NkNDNiMjQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxq b2huekBwb3N0ZW8ubmV0PgpEYXRlOiBNb24sIDExIE5vdiAyMDE5IDIwOjIyOjE2ICswMTAwClN1 YmplY3Q6IFtQQVRDSCAxMC8xMV0gcXQ1LXdlYmVuZ2luZTogdXBkYXRlIHRvIDUuMTQuMGJldGEy LgoKLS0tCiAuLi50ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2ggfCAg NDIgKysrKysrKwogLi4ucmVnLmgtdG8tZ2V0LV9fV09SRFNJWkUtb24tbXVzbC1saWJjLnBhdGNo IHwgIDI2ICsrKysrCiAuLi4vcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRj aCAgfCAxMDMgKysrKysrKysrKysrKysrKysrCiAuLi4vcGF0Y2hlcy8wMDA4LW11c2wtbm8tbWFs bGluZm8ucGF0Y2ggICAgICAgfCAgNDAgKysrKysrKwogLi4uL3BhdGNoZXMvMDAwOS1tdXNsLW9m Zl90LnBhdGNoICAgICAgICAgICAgIHwgIDEwICsrCiAuLi4vcGF0Y2hlcy8wMDEwLW11c2wtcHJl YWQtcHdyaXRlLnBhdGNoICAgICAgfCAgMTggKysrCiAuLi4vcGF0Y2hlcy8wMDExLW11c2wtcmVw bGFjZS1wdmFsbG9jLnBhdGNoICAgfCAgMTQgKysrCiAuLi4vcGF0Y2hlcy8wMDEyLW11c2wtcmVz b2x2ZS5wYXRjaCAgICAgICAgICAgfCAgMjYgKysrKysKIC4uLi9wYXRjaGVzLzAwMTUtbXVzbC1z aWdpbmZvX3QucGF0Y2ggICAgICAgICB8ICAxOCArKysKIC4uLi9wYXRjaGVzLzAwMTctbXVzbC1z dGFja3N0YXJ0LnBhdGNoICAgICAgICB8ICAyMCArKysrCiAuLi4vcGF0Y2hlcy8wMDIwLW11c2wt c2FuZGJveC5wYXRjaCAgICAgICAgICAgfCAgNzEgKysrKysrKysrKysrCiAuLi4wMDI1LW11c2wt Y2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2ggfCAgMTUgKysrCiAuLi4vcGF0Y2hlcy8w MDI2LWRhdGFfcGFjay1iZS5wYXRjaCAgICAgICAgICAgfCAgMTUgKysrCiAuLi4vMDAzMi1tdXNs LWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaCAgICAgfCAgMzAgKysrKysKIC4uLi9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDA0MC15YXNtLW5scy5wYXRjaCB8ICAxMyArKysKIC4uLi9wYXRjaGVz LzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaCAgICAgICB8ICA5NCArKysrKysrKysrKysrKysr CiAuLi4vMDA0NS1xdC1tdXNsLXRocmVhZC1zdGFja3NpemUucGF0Y2ggICAgICAgfCAgMjYgKysr KysKIC4uLi9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoICAgICB8ICA2MCAr KysrKysrKysrCiAuLi4vcGF0Y2hlcy8wMDQ3LWduLWNyb3NzLXN5c3Jvb3QucGF0Y2ggICAgICAg fCAgMjQgKysrKwogLi4uY2ggPT4gMDEwMS1xdDUtd2ViZW5naW5lLXN5c3RlbS1pY3UucGF0Y2h9 IHwgICA2ICstCiAuLi5kb2VzLWl0LWZpbmQtY2Fub24tZmlsZS1uYW1lLW9uLW11c2wucGF0Y2gg fCAgMTEgKysKIC4uLi9wYXRjaGVzL3F0NS13ZWJlbmdpbmUtbGludXgtNS4yLnBhdGNoICAgICB8 ICA0MiAtLS0tLS0tCiBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgICAgICAgICAgICAg ICAgfCAgMTMgKystCiAyMyBmaWxlcyBjaGFuZ2VkLCA2ODcgaW5zZXJ0aW9ucygrKSwgNTAgZGVs ZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDAwMi1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAw My1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11 c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDktbXVzbC1vZmZfdC5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAw MTAtbXVzbC1wcmVhZC1wd3JpdGUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDExLW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLXJl c29sdmUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDE1LW11c2wtc2lnaW5mb190LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIwLW11c2wtc2Fu ZGJveC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMjUtbXVzbC1jaHJvbWl1bS1kZWZhdWx0LXN0YWNrc2l6ZS5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjYtZGF0YV9wYWNrLWJl LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDQ0LXF0LW11c2wt ZXhlY2luZm8ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDQ1LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwNDYtc2FuZGJveC1tZW1iYXJy aWVyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDA0Ny1nbi1jcm9zcy1zeXNyb290LnBhdGNoCiByZW5hbWUgc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMve3F0NS13ZWJlbmdpbmUtc3lzdGVtLWljdS5wYXRjaCA9PiAwMTAxLXF0NS13 ZWJlbmdpbmUtc3lzdGVtLWljdS5wYXRjaH0gKDc2JSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMTEwLXd0Zi13aHktZG9lcy1pdC1maW5kLWNhbm9u LWZpbGUtbmFtZS1vbi1tdXNsLnBhdGNoCiBkZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy9xdDUt d2ViZW5naW5lL3BhdGNoZXMvcXQ1LXdlYmVuZ2luZS1saW51eC01LjIucGF0Y2gKCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0 ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24tbGludXgucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDAyLVVzZS1fZnBzdGF0ZS1pbnN0ZWFkLW9mLV9saWJjX2Zwc3RhdGUtb24t bGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNlNzg3 ZDEzNzRlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAwMi1Vc2UtX2Zwc3RhdGUtaW5zdGVhZC1vZi1fbGliY19mcHN0YXRlLW9uLWxpbnV4LnBhdGNo CkBAIC0wLDAgKzEsNDIgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0v dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAg KzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNv bnRleHRfcmVhZGVyLmgJMjAxOC0wOS0wNyAyMjoyMToyOC41MjE3NjM3MTYgKzAyMDAKK0BAIC01 MCw3ICs1MCw3IEBACisgICAvLyAgIGluZm86IHRoZSBjb2xsZWN0aW9uIG9mIHJlZ2lzdGVyIHN0 cnVjdHVyZXMuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjQpCisg ICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVj b250ZXh0X3QgKnVjLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0 IF9saWJjX2Zwc3RhdGUqIGZwKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBfZnBzdGF0ZSogZnApOworICNlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pCisgICBz dGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250 ZXh0X3QgKnVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGZw c2ltZF9jb250ZXh0KiBmcHJlZ3MpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBf d3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAw MDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21t b24vdWNvbnRleHRfcmVhZGVyLmNjCTIwMTgtMDktMDcgMjI6MjE6NDUuNzY2NzYyNjg4ICswMjAw CitAQCAtNDksNyArNDksNyBAQAorIH0KKyAKKyB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BV Q29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBfbGliY19mcHN0YXRl KiBmcCkgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVj dCBfZnBzdGF0ZSogZnApIHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51Y19tY29udGV4 dC5ncmVnczsKKyAKKyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfWDg2X0ZVTEwg fAorQEAgLTk3LDcgKzk3LDcgQEAKKyB9CisgCisgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQ VUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1YywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgX2xpYmNfZnBzdGF0 ZSogZnByZWdzKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IF9mcHN0YXRlKiBmcHJlZ3MpIHsKKyAgIGNvbnN0IGdyZWdfdCogcmVncyA9IHVjLT51 Y19tY29udGV4dC5ncmVnczsKKyAKKyAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRf QU1ENjRfRlVMTDsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIv bWluaWR1bXBfd3JpdGVyLmgJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVy LmgJMjAxOC0wOS0wNyAyMzozNjozMi4wNDk0OTUyODUgKzAyMDAKK0BAIC00OCw3ICs0OCw3IEBA CisgI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCisgdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRl eHQgZnBzdGF0ZV90OworICNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQo X19taXBzX18pCistdHlwZWRlZiBzdHJ1Y3QgX2xpYmNfZnBzdGF0ZSBmcHN0YXRlX3Q7CisrdHlw ZWRlZiBzdHJ1Y3QgX2Zwc3RhdGUgZnBzdGF0ZV90OworICNlbmRpZgorIAorIC8vIFRoZXNlIGVu dHJpZXMgc3RvcmUgYSBsaXN0IG9mIG1lbW9yeSByZWdpb25zIHRoYXQgdGhlIGNsaWVudCB3YW50 cyBpbmNsdWRlZApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAw My1pbmNsdWRlLXN5cy1yZWcuaC10by1nZXQtX19XT1JEU0laRS1vbi1tdXNsLWxpYmMucGF0Y2gg Yi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAzLWluY2x1ZGUtc3lzLXJlZy5oLXRv LWdldC1fX1dPUkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZGE0MTYwYjIxYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDAzLWluY2x1ZGUtc3lzLXJlZy5oLXRvLWdldC1fX1dP UkRTSVpFLW9uLW11c2wtbGliYy5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDkwMDFjNTRk NmI5NzQ0NDkxNzRhOGNlZThmM2Y1ZDc4YTliZDZjOWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBGZWxpeCBKYW5kYSA8ZmVsaXguamFuZGFAcG9zdGVvLmRlPgorRGF0ZTogU3VuLCAx IEZlYiAyMDE1IDE0OjI2OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy82XSBpbmNsdWRlIDxz eXMvcmVnLmg+IHRvIGdldCBfX1dPUkRTSVpFIG9uIG11c2wgbGliYworCistLS0KKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVf ZHVtcC5oIGIvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wLmgKK2luZGV4IGQwM2M3YTgu LjAyZWIzOTEgMTAwNjQ0CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Ro aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVt cC5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCitAQCAtMzYs NiArMzYsOSBAQAorICNpbmNsdWRlIDxlbGYuaD4KKyAjaW5jbHVkZSA8bGluay5oPgorICNpbmNs dWRlIDxzdGRkZWYuaD4KKysjaWZuZGVmIF9fR0xJQkNfXworKyNpbmNsdWRlIDxzeXMvcmVnLmg+ CisrI2VuZGlmCisgCisgI2luY2x1ZGUgImNvbW1vbi9tZW1vcnlfcmFuZ2UuaCIKKyAKKy0tIAor Mi4wLjUKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwNC1t dXNsLWRpc3BhdGNoLXRvLW11c2wucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMC4uZGUzMmEzZGFiOTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA0LW11c2wtZGlzcGF0Y2gtdG8tbXVzbC5wYXRjaApA QCAtMCwwICsxLDEwMyBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9i YXNlL2FsbG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9kZWZhdWx0X2Rpc3BhdGNoX3RvX2dsaWJjLmNj CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvYWxsb2NhdG9yL2Fs bG9jYXRvcl9zaGltX2RlZmF1bHRfZGlzcGF0Y2hfdG9fZ2xpYmMuY2MKK0BAIC02LDYgKzYsNyBA QAorIAorICNpbmNsdWRlIDxtYWxsb2MuaD4KKyAKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisg Ly8gVGhpcyB0cmFuc2xhdGlvbiB1bml0IGRlZmluZXMgYSBkZWZhdWx0IGRpc3BhdGNoIGZvciB0 aGUgYWxsb2NhdG9yIHNoaW0gd2hpY2gKKyAvLyByb3V0ZXMgYWxsb2NhdGlvbnMgdG8gbGliYyBm dW5jdGlvbnMuCisgLy8gVGhlIGNvZGUgaGVyZSBpcyBzdHJvbmdseSBpbnNwaXJlZCBmcm9tIHRj bWFsbG9jJ3MgbGliY19vdmVycmlkZV9nbGliYy5oLgorQEAgLTczLDMgKzc0LDkyIEBAIGNvbnN0 IEFsbG9jYXRvckRpc3BhdGNoIEFsbG9jYXRvckRpc3BhdGNoOjpkZWZhdWx0X2Rpc3BhdGNoID0g eworICAgICBudWxscHRyLCAgICAgICAgICAgICAgIC8qIGZyZWVfZGVmaW5pdGVfc2l6ZV9mdW5j dGlvbiAqLworICAgICBudWxscHRyLCAgICAgICAgICAgICAgIC8qIG5leHQgKi8KKyB9OworKwor KyNlbHNlIC8vIGRlZmluZWQoX19HTElCQ19fKQorKworKyNpbmNsdWRlIDxkbGZjbi5oPgorKwor K2V4dGVybiAiQyIgeworKy8vIERlY2xhcmUgZnVuY3Rpb24gcG9pbnRlcnMgdG8gdGhlIG1lbW9y eSBmdW5jdGlvbnMKKyt0eXBlZGVmIHZvaWQqICgqdF9saWJjX21hbGxvYykoc2l6ZV90IHNpemUp OworK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfY2FsbG9jKShzaXplX3Qgbiwgc2l6ZV90IHNpemUp OworK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfcmVhbGxvYykodm9pZCogYWRkcmVzcywgc2l6ZV90 IHNpemUpOworK3R5cGVkZWYgdm9pZCogKCp0X2xpYmNfbWVtYWxpZ24pKHNpemVfdCBhbGlnbm1l bnQsIHNpemVfdCBzaXplKTsKKyt0eXBlZGVmIHZvaWQgKCp0X2xpYmNfZnJlZSkodm9pZCogcHRy KTsKKyt0eXBlZGVmIHNpemVfdCAoKnRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUpKHZvaWQqIHB0 cik7CisrCisrLy8gU3RhdGljIGluc3RhbmNlcyBvZiBwb2ludGVycyB0byBsaWJjLnNvIGRsIHN5 bWJvbHMKKytzdGF0aWMgdF9saWJjX21hbGxvYyBsaWJjX21hbGxvYyA9IE5VTEw7Cisrc3RhdGlj IHRfbGliY19jYWxsb2MgbGliY19jYWxsb2MgPSBOVUxMOworK3N0YXRpYyB0X2xpYmNfcmVhbGxv YyBsaWJjX3JlYWxsb2MgPSBOVUxMOworK3N0YXRpYyB0X2xpYmNfbWVtYWxpZ24gbGliY19tZW1h bGlnbiA9IE5VTEw7Cisrc3RhdGljIHRfbGliY19mcmVlIGxpYmNfZnJlZSA9IE5VTEw7Cisrc3Rh dGljIHRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUgbGliY19tYWxsb2NfdXNhYmxlX3NpemUgPSBO VUxMOworKworKy8vIHJlc29sdmUgdGhlIHN5bWJvbHMgaW4gbGliYy5zbworK3ZvaWQgbXVzbF9s aWJjX21lbW9yeV9pbml0KHZvaWQpCisreworKyAgbGliY19tYWxsb2MgPSAodF9saWJjX21hbGxv YykgZGxzeW0oUlRMRF9ORVhULCAibWFsbG9jIik7CisrICBsaWJjX2NhbGxvYyA9ICh0X2xpYmNf Y2FsbG9jKSBkbHN5bShSVExEX05FWFQsICJjYWxsb2MiKTsKKysgIGxpYmNfcmVhbGxvYyA9ICh0 X2xpYmNfcmVhbGxvYykgZGxzeW0oUlRMRF9ORVhULCAicmVhbGxvYyIpOworKyAgbGliY19tZW1h bGlnbiA9ICh0X2xpYmNfbWVtYWxpZ24pIGRsc3ltKFJUTERfTkVYVCwgIm1lbWFsaWduIik7Cisr ICBsaWJjX2ZyZWUgPSAodF9saWJjX2ZyZWUpIGRsc3ltKFJUTERfTkVYVCwgImZyZWUiKTsKKysg IGxpYmNfbWFsbG9jX3VzYWJsZV9zaXplID0gKHRfbGliY19tYWxsb2NfdXNhYmxlX3NpemUpIGRs c3ltKFJUTERfTkVYVCwgIm1hbGxvY191c2FibGVfc2l6ZSIpOworK30KKyt9ICAvLyBleHRlcm4g IkMiCisrCisrbmFtZXNwYWNlIHsKKysKKyt1c2luZyBiYXNlOjphbGxvY2F0b3I6OkFsbG9jYXRv ckRpc3BhdGNoOworKworK3ZvaWQqIE11c2xNYWxsb2MoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gq LCBzaXplX3Qgc2l6ZSwgdm9pZCogY29udGV4dCkgeworKyAgaWYgKCFsaWJjX21hbGxvYykKKysg ICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7CisrICByZXR1cm4gKCpsaWJjX21hbGxvYykoc2l6 ZSk7CisrfQorKworK3ZvaWQqIE11c2xDYWxsb2MoY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCBz aXplX3Qgbiwgc2l6ZV90IHNpemUsIHZvaWQqIGNvbnRleHQpIHsKKysgIGlmICghbGliY19jYWxs b2MpCisrICAgIG11c2xfbGliY19tZW1vcnlfaW5pdCgpOworKyAgcmV0dXJuICgqbGliY19jYWxs b2MpKG4sIHNpemUpOworK30KKysKKyt2b2lkKiBNdXNsUmVhbGxvYyhjb25zdCBBbGxvY2F0b3JE aXNwYXRjaCosIHZvaWQqIGFkZHJlc3MsIHNpemVfdCBzaXplLCB2b2lkKiBjb250ZXh0KSB7Cisr ICBpZiAoIWxpYmNfcmVhbGxvYykKKysgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7CisrICBy ZXR1cm4gKCpsaWJjX3JlYWxsb2MpKGFkZHJlc3MsIHNpemUpOworK30KKysKKyt2b2lkKiBNdXNs TWVtYWxpZ24oY29uc3QgQWxsb2NhdG9yRGlzcGF0Y2gqLCBzaXplX3QgYWxpZ25tZW50LCBzaXpl X3Qgc2l6ZSwgdm9pZCogY29udGV4dCkgeworKyAgaWYgKCFsaWJjX21lbWFsaWduKQorKyAgICBt dXNsX2xpYmNfbWVtb3J5X2luaXQoKTsKKysgIHJldHVybiAoKmxpYmNfbWVtYWxpZ24pKGFsaWdu bWVudCwgc2l6ZSk7CisrfQorKworK3ZvaWQgTXVzbEZyZWUoY29uc3QgQWxsb2NhdG9yRGlzcGF0 Y2gqLCB2b2lkKiBhZGRyZXNzLCB2b2lkKiBjb250ZXh0KSB7CisrICBpZiAoIWxpYmNfZnJlZSkK KysgICAgbXVzbF9saWJjX21lbW9yeV9pbml0KCk7CisrICAoKmxpYmNfZnJlZSkoYWRkcmVzcyk7 CisrfQorKworK3NpemVfdCBNdXNsR2V0U2l6ZUVzdGltYXRlKGNvbnN0IEFsbG9jYXRvckRpc3Bh dGNoKiwgdm9pZCogYWRkcmVzcywgdm9pZCogY29udGV4dCkgeworKyAgLy8gVE9ETyhzaWdnaSwg cHJpbWlhbm8pOiBtYWxsb2NfdXNhYmxlX3NpemUgbWF5IG5lZWQgcmVkaXJlY3Rpb24gaW4gdGhl CisrICAvLyAgICAgcHJlc2VuY2Ugb2YgaW50ZXJwb3Npbmcgc2hpbXMgdGhhdCBkaXZlcnQgYWxs b2NhdGlvbnMuCisrICBpZiAoIWxpYmNfbWFsbG9jX3VzYWJsZV9zaXplKQorKyAgICBtdXNsX2xp YmNfbWVtb3J5X2luaXQoKTsKKysgIHJldHVybiAoKmxpYmNfbWFsbG9jX3VzYWJsZV9zaXplKShh ZGRyZXNzKTsKKyt9CisrCisrfSAgLy8gbmFtZXNwYWNlCisrCisrY29uc3QgQWxsb2NhdG9yRGlz cGF0Y2ggQWxsb2NhdG9yRGlzcGF0Y2g6OmRlZmF1bHRfZGlzcGF0Y2ggPSB7CisrICAgICZNdXNs TWFsbG9jLCAgICAgICAgICAgLyogYWxsb2NfZnVuY3Rpb24gKi8KKysgICAgJk11c2xDYWxsb2Ms ICAgICAgICAgICAvKiBhbGxvY196ZXJvX2luaXRpYWxpemVkX2Z1bmN0aW9uICovCisrICAgICZN dXNsTWVtYWxpZ24sICAgICAgICAgLyogYWxsb2NfYWxpZ25lZF9mdW5jdGlvbiAqLworKyAgICAm TXVzbFJlYWxsb2MsICAgICAgICAgIC8qIHJlYWxsb2NfZnVuY3Rpb24gKi8KKysgICAgJk11c2xG cmVlLCAgICAgICAgICAgICAvKiBmcmVlX2Z1bmN0aW9uICovCisrICAgICZNdXNsR2V0U2l6ZUVz dGltYXRlLCAgLyogZ2V0X3NpemVfZXN0aW1hdGVfZnVuY3Rpb24gKi8KKysgICAgbnVsbHB0ciwg ICAgICAgICAgICAgICAvKiBuZXh0ICovCisrfTsKKysKKysjZW5kaWYKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRjaCBi L3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMDgtbXVzbC1uby1tYWxsaW5mby5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzMzMmI5MmI2OWQKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA4LW11c2wt bm8tbWFsbGluZm8ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8z cmRwYXJ0eS9jaHJvbWl1bS9iYXNlL3RyYWNlX2V2ZW50L21hbGxvY19kdW1wX3Byb3ZpZGVyLmNj CTIwMTctMTEtMjggMTQ6MDY6NTMuMDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3Jj LzNyZHBhcnR5L2Nocm9taXVtL2Jhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIu Y2MJMjAxOC0wMS0yNyAyMDoxMzoyNi45NjA5MzI4MDUgKzAxMDAKK0BAIC0yNDMsNyArMjQzLDcg QEAKKyAgIGFsbG9jYXRlZF9vYmplY3RzX2NvdW50ID0gbWFpbl9oZWFwX2luZm8uYmxvY2tfY291 bnQ7CisgI2VsaWYgZGVmaW5lZChPU19GVUNIU0lBKQorIC8vIFRPRE8oZnVjaHNpYSk6IFBvcnQs IHNlZSBodHRwczovL2NyYnVnLmNvbS83MDY1OTIuCistI2Vsc2UKKysjZWxpZiBkZWZpbmVkKF9f R0xJQkNfXykKKyAgIHN0cnVjdCBtYWxsaW5mbyBpbmZvID0gbWFsbGluZm8oKTsKKyAgIERDSEVD S19HRShpbmZvLmFyZW5hICsgaW5mby5oYmxraGQsIGluZm8udW9yZGJsa3MpOworIAorQEAgLTI1 NSw2ICsyNTUsOCBAQAorIAorICAgLy8gVG90YWwgYWxsb2NhdGVkIHNwYWNlIGlzIGdpdmVuIGJ5 IHx1b3JkYmxrc3wuCisgICBhbGxvY2F0ZWRfb2JqZWN0c19zaXplID0gaW5mby51b3JkYmxrczsK KysjZWxzZQorKy8vIG11c2wgbGliYyBkb2VzIG5vdCBzdXBwb3J0IG1hbGxpbmZvKCkKKyAjZW5k aWYKKyAKKyAgIE1lbW9yeUFsbG9jYXRvckR1bXAqIG91dGVyX2R1bXAgPSBwbWQtPkNyZWF0ZUFs bG9jYXRvckR1bXAoIm1hbGxvYyIpOworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9iYXNlL3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjCTIwMTctMTEtMjggMTQ6 MDY6NTMuMDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9t aXVtL2Jhc2UvcHJvY2Vzcy9wcm9jZXNzX21ldHJpY3NfcG9zaXguY2MJMjAxOC0wMS0yNyAyMDo0 ODoxMS41NzEwNDAzNDggKzAxMDAKK0BAIC0xMDAsMTQgKzEwMCwxNCBAQAorICAgbWFsbG9jX3N0 YXRpc3RpY3NfdCBzdGF0cyA9IHswfTsKKyAgIG1hbGxvY196b25lX3N0YXRpc3RpY3MobnVsbHB0 ciwgJnN0YXRzKTsKKyAgIHJldHVybiBzdGF0cy5zaXplX2luX3VzZTsKKy0jZWxpZiBkZWZpbmVk KE9TX0xJTlVYKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpCisrI2VsaWYgKGRlZmluZWQoT1NfTElO VVgpICYmIGRlZmluZWQoX19HTElCQ19fKSkgfHwgZGVmaW5lZChPU19BTkRST0lEKQorICAgc3Ry dWN0IG1hbGxpbmZvIG1pbmZvID0gbWFsbGluZm8oKTsKKyAjaWYgZGVmaW5lZChVU0VfVENNQUxM T0MpCisgICByZXR1cm4gbWluZm8udW9yZGJsa3M7CisgI2Vsc2UKKyAgIHJldHVybiBtaW5mby5o YmxraGQgKyBtaW5mby5hcmVuYTsKKyAjZW5kaWYKKy0jZWxpZiBkZWZpbmVkKE9TX0ZVQ0hTSUEp CisrI2Vsc2UgLy9pZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpIC8vIGFsc28gbXVzbCBkb2Vzbid0IGRv IHRoaXMuCisgICAvLyBUT0RPKGZ1Y2hzaWEpOiBOb3QgY3VycmVudGx5IGV4cG9zZWQuIGh0dHBz Oi8vY3JidWcuY29tLzczNTA4Ny4KKyAgIHJldHVybiAwOworICNlbmRpZgorCmRpZmYgLS1naXQg YS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA5LW11c2wtb2ZmX3QucGF0Y2ggYi9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDA5LW11c2wtb2ZmX3QucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjUyZGIzYjllYmY0Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAwOS1tdXNsLW9mZl90LnBh dGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vdGhpcmRfcGFydHkvb3RzL2luY2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2VyLmgJMjAxNi0wNS0y NiAxNDo1ODo1NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkv Y2hyb21pdW0vdGhpcmRfcGFydHkvb3RzL2luY2x1ZGUvb3BlbnR5cGUtc2FuaXRpc2VyLmgJMjAx Ni0xMC0wMSAxNDozMTozMC44ODUwMDAwMDAgKzAyMDAKK0BAIC0yMSw2ICsyMSw3IEBACisgI2Rl ZmluZSBodG9ucyh4KSBfYnl0ZXN3YXBfdXNob3J0ICh4KQorICNlbHNlCisgI2luY2x1ZGUgPGFy cGEvaW5ldC5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+ CisgI2VuZGlmCisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDEwLW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNo ZXMvMDAxMC1tdXNsLXByZWFkLXB3cml0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uMDAwMTdiYmEwMTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEwLW11c2wtcHJlYWQtcHdyaXRlLnBhdGNoCkBAIC0wLDAg KzEsMTggQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFy dHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCTIwMTgtMDktMDcgMjE6MjU6MjYuNjM5OTY0 MTAwICswMjAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3Bh cnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAkyMDE4LTA5LTA3IDIxOjI1OjExLjYxMTk2 NDk5NSArMDIwMAorQEAgLTE3OTQsNiArMTc5NCwxNSBAQAorIC8qIEVuZCBvZiBzMzkwL3MzOTB4 IGRlZmluaXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ki8KKyAjZW5kaWYKKyAKKysjaWZuZGVmIF9fR0xJQkNfXworKyAgLyogRm9yIE11c2wgbGliYyBw cmVhZC9wcmVhZCBpcyB0aGUgc2FtZSBhcyBwcmVhZDY0L3B3cml0ZTY0ICovCisrI2lmbmRlZiBf X05SX3ByZWFkCisrI2RlZmluZSBfX05SX3ByZWFkICAgICAgICAgICAgICBfX05SX3ByZWFkNjQK KysjZW5kaWYKKysjaWZuZGVmIF9fTlJfcHdyaXRlCisrI2RlZmluZSBfX05SX3B3cml0ZSAgICAg ICAgICAgICBfX05SX3B3cml0ZTY0CisrI2VuZGlmCisrI2VuZGlmIC8qIGlmbmRlZiBfX0dMSUJD X18gKi8KKyAKKyAvKiBBZnRlciBmb3JraW5nLCB3ZSBtdXN0IG1ha2Ugc3VyZSB0byBvbmx5IGNh bGwgc3lzdGVtIGNhbGxzLiAgICAgICAgICAgICAgICovCisgI2lmIGRlZmluZWQoX19CT1VOREVE X1BPSU5URVJTX18pCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MDExLW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDAxMS1tdXNsLXJlcGxhY2UtcHZhbGxvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uZDVjYWYzODM2ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDExLW11c2wtcmVwbGFjZS1wdmFsbG9jLnBhdGNo CkBAIC0wLDAgKzEsMTQgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvY29yZS9hcGkvcXRidWctNjE1 MjEuY3BwCTIwMTctMTEtMjkgMDk6NDI6MjkuMDAwMDAwMDAwICswMTAwCisrKysgcXR3ZWJlbmdp bmUvc3JjL2NvcmUvYXBpL3F0YnVnLTYxNTIxLmNwcAkyMDE4LTAxLTI4IDA2OjQ5OjI5LjQ1NDE3 NTcyNSArMDEwMAorQEAgLTExMSw3ICsxMTEsMTEgQEAKKyB9CisgCisgU0hJTV9ISURERU4gdm9p ZCogU2hpbVB2YWxsb2Moc2l6ZV90IHNpemUpIHsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisg ICAgIHJldHVybiBwdmFsbG9jKHNpemUpOworKyNlbHNlCisrICAgIHJldHVybiB2YWxsb2MoKHNp emUrNDA5NSkmfjQwOTUpOworKyNlbmRpZgorIH0KKyAKKyBTSElNX0hJRERFTiBpbnQgU2hpbVBv c2l4TWVtYWxpZ24odm9pZCoqIHIsIHNpemVfdCBhLCBzaXplX3QgcykgewpkaWZmIC0tZ2l0IGEv c3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxMi1tdXNsLXJlc29sdmUucGF0Y2ggYi9z cmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2ZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWRmY2ViNzlmMzAKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDEyLW11c2wtcmVzb2x2 ZS5wYXRjaApAQCAtMCwwICsxLDI2IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2No cm9taXVtL25ldC9kbnMvZG5zX3JlbG9hZGVyLmNjCTIwMTYtMTEtMDcgMTU6NDY6MTguMDAwMDAw MDAwICswMTAwCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL25ldC9kbnMv ZG5zX3JlbG9hZGVyLmNjCTIwMTYtMTItMjAgMDM6MzM6MTEuNzQ5MDU5NjU2ICswMTAwCitAQCAt OSw2ICs5LDEwIEBACisgCisgI2luY2x1ZGUgPHJlc29sdi5oPgorIAorKyNpZiAhZGVmaW5lZChf X0dMSUJDX18pCisrI2luY2x1ZGUgInJlc29sdl9jb21wYXQuaCIKKysjZW5kaWYKKysKKyAjaW5j bHVkZSAiYmFzZS9sYXp5X2luc3RhbmNlLmgiCisgI2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgor ICNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9j aHJvbWl1bS9uZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTExLTA3IDE1 OjQ2OjE4LjAwMDAwMDAwMCArMDEwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJv bWl1bS9uZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYwkyMDE2LTEyLTIwIDAzOjQw OjA3LjY3MTk1MzA5OCArMDEwMAorQEAgLTYsNiArNiwxMCBAQAorIAorICNpbmNsdWRlIDxzdHJp bmc+CisgCisrI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKKysjaW5jbHVkZSAicmVzb2x2X2NvbXBh dC5oIgorKyNlbmRpZgorKworICNpbmNsdWRlICJiYXNlL2JpbmQuaCIKKyAjaW5jbHVkZSAiYmFz ZS9maWxlcy9maWxlLmgiCisgI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV9wYXRoLmgiCmRpZmYg LS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE1LW11c2wtc2lnaW5mb190 LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNS1tdXNsLXNpZ2luZm9f dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZmU3NjBiZTE2 NjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDE1 LW11c2wtc2lnaW5mb190LnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKK1RoZXJlJ3MgYSBzdWJ0bGUg ZGlmZmVyZW5jZSBpbiB0aGUgaW50ZXJuYWwgbmFtZSBvZiBzaWdpbmZvX3QgZmllbGRzCitiZXR3 ZWVuIGdsaWJjIGFuZCBtdXNsLiBUaGUgc3RydWN0dXJlIGl0c2VsZiBpcyBlcXVpdmFsZW50LCBz byBpdAorc2hvdWxkIHN1ZmZpY2UgdG8gYWRkIGEgbWFjcm8gdG8gcmVuYW1lIHRoZSBmaWVsZC4K KworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmL3RyYXAuY2MJMjAxNS0wMi0xNyAwNTo1Nzo0My4wMDAwMDAwMDAgKzAxMDAKKysr KyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi90cmFwLmNjCTIwMTUtMDYtMDMgMDg6MjA6MjUuMDMyNzE2NDI3ICswMjAwCitAQCAtMjIs NiArMjIsMTEgQEAKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9hbmRyb2lkX3Vj b250ZXh0LmgiCisgI2VuZGlmCisKKysvLyBtdXNsIGxpYmMgZGVmaW5lcyBzaWdpbmZvX3QgX19z aV9maWVsZHMgaW5zdGVhZCBvZiBfc2lmaWVsZHMKKysjaWYgIWRlZmluZWQoX19HTElCQ19fKQor KyNkZWZpbmUgX3NpZmllbGRzIF9fc2lfZmllbGRzCisrI2VuZGlmCisrCisgbmFtZXNwYWNlIHsK KworIGNvbnN0IGludCBrQ2FwYWNpdHlJbmNyZW1lbnQgPSAyMDsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMTctbXVzbC1zdGFja3N0YXJ0LnBhdGNoIGIvc3Jj cGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNrc3RhcnQucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU3MTM2YmMyYmNkCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAxNy1tdXNsLXN0YWNr c3RhcnQucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tf dXRpbC5jYwkyMDE4LTAxLTI3IDIzOjA4OjQzLjU4NjQ3NTM0OSArMDEwMAorKysrIHF0d2ViZW5n aW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0 Zm9ybS93dGYvc3RhY2tfdXRpbC5jYwkyMDE4LTAxLTI3IDIzOjE4OjIyLjI3NDUwNTIwMyArMDEw MAorQEAgLTI4LDcgKzI4LDcgQEAKKyAvLyBGSVhNRTogT24gTWFjIE9TWCBhbmQgTGludXgsIHRo aXMgbWV0aG9kIGNhbm5vdCBlc3RpbWF0ZSBzdGFjayBzaXplCisgLy8gY29ycmVjdGx5IGZvciB0 aGUgbWFpbiB0aHJlYWQuCisgCistI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9T X0FORFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAorKyNpZiBkZWZpbmVkKE9TX0xJ TlVYKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQoT1NfRlJFRUJTRCkgfHwgXAor ICAgICBkZWZpbmVkKE9TX0ZVQ0hTSUEpCisgICAvLyBwdGhyZWFkX2dldGF0dHJfbnAoKSBjYW4g ZmFpbCBpZiB0aGUgdGhyZWFkIGlzIG5vdCBpbnZva2VkIGJ5CisgICAvLyBwdGhyZWFkX2NyZWF0 ZSgpIChlLmcuLCB0aGUgbWFpbiB0aHJlYWQgb2Ygd2Via2l0X3VuaXRfdGVzdHMpLgorQEAgLTk2 LDcgKzk2LDcgQEAKKyB9CisgCisgdm9pZCogR2V0U3RhY2tTdGFydCgpIHsKKy0jaWYgZGVmaW5l ZChfX0dMSUJDX18pIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNE KSB8fCBcCisrI2lmIGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwg ZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCisgICAgIGRlZmluZWQoT1NfRlVDSFNJQSkKKyAgIHB0 aHJlYWRfYXR0cl90IGF0dHI7CisgICBpbnQgZXJyb3I7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDIwLW11c2wtc2FuZGJveC5wYXRjaCBiL3NyY3BrZ3MvcXQ1 LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjAtbXVzbC1zYW5kYm94LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kM2RlMWU0MTE4MwotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwMjAtbXVzbC1zYW5kYm94LnBhdGNoCkBA IC0wLDAgKzEsNzEgQEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2Fu ZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmlj dGlvbnMuY2MJMjAxOC0wNi0xNSAwOTo0NzoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBxdHdlYmVu Z2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxw ZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJMjAxOC0wOS0xMyAxOTo1Mzo1 My40NTM3ODAyNTMgKzAyMDAKK0BAIC0xMjksNyArMTI5LDcgQEAKKyAvLyBDTE9ORV9WTSwgbm9y IENMT05FX1RIUkVBRCwgd2hpY2ggaW5jbHVkZXMgYWxsIGZvcmsoKSBpbXBsZW1lbnRhdGlvbnMu CisgUmVzdWx0RXhwciBSZXN0cmljdENsb25lVG9UaHJlYWRzQW5kRVBFUk1Gb3JrKCkgeworICAg Y29uc3QgQXJnPHVuc2lnbmVkIGxvbmc+IGZsYWdzKDApOworLQorKyNpZiBkZWZpbmVkKF9fR0xJ QkNfXykKKyAgIC8vIFRPRE8obWRlbXBza3kpOiBFeHRlbmQgRFNMIHRvIHN1cHBvcnQgKGZsYWdz ICYgfm1hc2sxKSA9PSBtYXNrMi4KKyAgIGNvbnN0IHVpbnQ2NF90IGtBbmRyb2lkQ2xvbmVNYXNr ID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQ0xPTkVfU0lHSEFORCB8IENMT05FX1RIUkVBRCB8CitAQCAt MTQ4LDYgKzE0OCwxNyBAQAorICAgcmV0dXJuIElmKElzQW5kcm9pZCgpID8gYW5kcm9pZF90ZXN0 IDogZ2xpYmNfdGVzdCwgQWxsb3coKSkKKyAgICAgICAuRWxzZUlmKChmbGFncyAmIChDTE9ORV9W TSB8IENMT05FX1RIUkVBRCkpID09IDAsIEVycm9yKEVQRVJNKSkKKyAgICAgICAuRWxzZShDcmFz aFNJR1NZU0Nsb25lKCkpOworKyNlbHNlCisrICBjb25zdCBpbnQgcmVxdWlyZWQgPSBDTE9ORV9W TSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5EIHwKKysgICAgICAgICAg ICAgICAgICAgICAgIENMT05FX1RIUkVBRCB8IENMT05FX1NZU1ZTRU07CisrICBjb25zdCBpbnQg c2FmZSA9IENMT05FX1NFVFRMUyB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBDTE9ORV9DSElMRF9D TEVBUlRJRCB8CisrICAgICAgICAgICAgICAgICAgIENMT05FX0RFVEFDSEVEOworKyAgY29uc3Qg Qm9vbEV4cHIgdGhyZWFkX2Nsb25lX29rID0gKGZsYWdzJn5zYWZlKT09cmVxdWlyZWQ7CisrCisr ICByZXR1cm4gSWYodGhyZWFkX2Nsb25lX29rLCBBbGxvdygpKQorKyAgICAgIC5FbHNlSWYoKGZs YWdzICYgKENMT05FX1ZNIHwgQ0xPTkVfVEhSRUFEKSkgPT0gMCwgRXJyb3IoRVBFUk0pKQorKyAg ICAgIC5FbHNlKENyYXNoU0lHU1lTQ2xvbmUoKSk7CisrI2VuZGlmCisgfQorIAorIFJlc3VsdEV4 cHIgUmVzdHJpY3RQcmN0bCgpIHsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21p dW0vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYwkyMDE4 LTA2LTE1IDA5OjQ3OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9z ZXRzLmNjCTIwMTgtMDktMTMgMTk6NTY6MzEuNzc5NzczOTQwICswMjAwCitAQCAtMzc1LDYgKzM3 NSw5IEBACisgI2lmIGRlZmluZWQoX19pMzg2X18pCisgICAgIGNhc2UgX19OUl93YWl0cGlkOgor ICNlbmRpZgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrICAgIGNhc2UgX19OUl9zZXRfdGlk X2FkZHJlc3M6CisrI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9j bG9uZTogIC8vIFNob3VsZCBiZSBwYXJhbWV0ZXItcmVzdHJpY3RlZC4KKyAgICAgY2FzZSBfX05S X3NldG5zOiAgLy8gUHJpdmlsZWdlZC4KK0BAIC0zODcsNyArMzkwLDkgQEAKKyAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQor ICAgICBjYXNlIF9fTlJfc2V0X3RocmVhZF9hcmVhOgorICNlbmRpZgorKyNpZiBkZWZpbmVkKF9f R0xJQkNfXykKKyAgICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKKysjZW5kaWYKKyAgICAg Y2FzZSBfX05SX3Vuc2hhcmU6CisgI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChf X2FhcmNoNjRfXykKKyAgICAgY2FzZSBfX05SX3Zmb3JrOgorQEAgLTQ5Niw2ICs1MDEsOSBAQAor ICAgICBjYXNlIF9fTlJfbWxvY2s6CisgICAgIGNhc2UgX19OUl9tdW5sb2NrOgorICAgICBjYXNl IF9fTlJfbXVubWFwOgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrICAgIGNhc2UgX19OUl9t cmVtYXA6CisrI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2UgX19OUl9tYWR2 aXNlOgorICAgICBjYXNlIF9fTlJfbWluY29yZToKK0BAIC01MTEsNyArNTE5LDkgQEAKKyAgICAg Y2FzZSBfX05SX21vZGlmeV9sZHQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9tcHJvdGVjdDoK KysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICAgIGNhc2UgX19OUl9tcmVtYXA6CisrI2VuZGlm CisgICAgIGNhc2UgX19OUl9tc3luYzoKKyAgICAgY2FzZSBfX05SX211bmxvY2thbGw6CisgICAg IGNhc2UgX19OUl9yZWFkYWhlYWQ6CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy8wMDI1LW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFja3NpemUucGF0Y2ggYi9zcmNw a2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDI1LW11c2wtY2hyb21pdW0tZGVmYXVsdC1zdGFj a3NpemUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdiZjVh MjJmYmE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDAyNS1tdXNsLWNocm9taXVtLWRlZmF1bHQtc3RhY2tzaXplLnBhdGNoCkBAIC0wLDAgKzEsMTUg QEAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJlYWRpbmcv cGxhdGZvcm1fdGhyZWFkX2xpbnV4LmNjLm9yaWcJMjAxOC0wOS0xOSAxODowNToxNS41MjM5MjM3 MDMgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vYmFzZS90aHJl YWRpbmcvcGxhdGZvcm1fdGhyZWFkX2xpbnV4LmNjCTIwMTgtMDktMTkgMTg6MDg6MDUuMTUwOTMy NDU0ICswMjAwCitAQCAtMTczLDcgKzE3MywxMiBAQAorIAorIHNpemVfdCBHZXREZWZhdWx0VGhy ZWFkU3RhY2tTaXplKGNvbnN0IHB0aHJlYWRfYXR0cl90JiBhdHRyaWJ1dGVzKSB7CisgI2lmICFk ZWZpbmVkKFRIUkVBRF9TQU5JVElaRVIpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgcmV0 dXJuIDA7CisrI2Vsc2UgLy8gZGVmaW5lZChfX0dMSUJDX18pCisrICAvLyBGb3IgTXVzbCBsaWJj IHRyeSB3aXRoIGEgZGVmYXVsdCBzdGFjayBzaXplIG9mIDIgTWlCCisrICByZXR1cm4gMiAqIDEw MjQgKiAxMDI0OworKyNlbmRpZiAvLyAhZGVmaW5lZChfX0dMSUJDX18pCisgI2Vsc2UKKyAgIC8v IFRocmVhZFNhbml0aXplciBibG9hdHMgdGhlIHN0YWNrIGhlYXZpbHkuIEV2aWRlbmNlIGhhcyBi ZWVuIHRoYXQgdGhlCisgICAvLyBkZWZhdWx0IHN0YWNrIHNpemUgaXNuJ3QgZW5vdWdoIGZvciBz b21lIGJyb3dzZXIgdGVzdHMuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMDI2LWRhdGFfcGFjay1iZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRj aGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi5jMTEzZGRiNjU2NgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS9wYXRjaGVzLzAwMjYtZGF0YV9wYWNrLWJlLnBhdGNoCkBAIC0wLDAgKzEsMTUgQEAK Ky0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdWkvYmFzZS9yZXNvdXJjZS9k YXRhX3BhY2suY2Mub3JpZwkyMDE4LTA5LTExIDE0OjE2OjUzLjEwNDg5NzM3OSArMDIwMAorKysr IHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS91aS9iYXNlL3Jlc291cmNlL2RhdGFf cGFjay5jYwkyMDE4LTA5LTExIDE0OjE3OjEyLjAwOTg5NjI1MyArMDIwMAorQEAgLTM4MywxMiAr MzgzLDYgQEAKKyAKKyBib29sIERhdGFQYWNrOjpHZXRTdHJpbmdQaWVjZSh1aW50MTZfdCByZXNv dXJjZV9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpTdHJpbmdQaWVj ZSogZGF0YSkgY29uc3QgeworLSAgLy8gSXQgd29uJ3QgYmUgaGFyZCB0byBtYWtlIHRoaXMgZW5k aWFuLWFnbm9zdGljLCBidXQgaXQncyBub3Qgd29ydGgKKy0gIC8vIGJvdGhlcmluZyB0byBkbyBy aWdodCBub3cuCistI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4pCistI2Vycm9y ICJkYXRhcGFjayBhc3N1bWVzIGxpdHRsZSBlbmRpYW4iCistI2VuZGlmCistCisgICBjb25zdCBF bnRyeSogdGFyZ2V0ID0gTG9va3VwRW50cnlCeUlkKHJlc291cmNlX2lkKTsKKyAgIGlmICghdGFy Z2V0KQorICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDMyLW11c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNoIGIvc3JjcGtn cy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDAzMi1tdXNsLWNyb3NzLW5vLWFzbV9wdHJhY2VfaC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMTQwNzQyZjcyYzIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDMyLW11 c2wtY3Jvc3Mtbm8tYXNtX3B0cmFjZV9oLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKKy0tLSBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5j YwkyMDE4LTA4LTI3IDEwOjIxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3Ny Yy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCTIwMTgtMTEt MjIgMDA6NDE6NTguNTIyNDc3NTU5ICswMTAwCitAQCAtMzgsNyArMzgsMTIgQEAKKyAKKyAjaW5j bHVkZSAiY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyLmgi CisgCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Cisr I2Vsc2UKKysvKiBGb3IgYXJtKi1tdXNsIHRoaXMgZGVmaW5pdGlvbiBpcyBtaXNzaW5nICovCisr I2RlZmluZSBBUk1fc3AgdXJlZ3NbMTNdCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzc2VydC5oPgor ICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxmY250bC5oPgorLS0tIHF0d2ViZW5naW5l L3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTA4 LTI3IDEwOjIxOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYwkyMDE4LTExLTIyIDAwOjQ5OjM5 LjUzMzQ5MjI0NSArMDEwMAorQEAgLTMyLDcgKzMyLDEyIEBACisgCisgI2luY2x1ZGUgImNsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuaCIKKyAKKysjaWYgZGVm aW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysjZWxzZQorKy8qIEZv ciBhcm0qLW11c2wgdGhpcyBkZWZpbml0aW9uIGlzIG1pc3NpbmcgKi8KKysjZGVmaW5lIEFSTV9z cCB1cmVnc1sxM10KKysjZW5kaWYKKyAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisgI2luY2x1ZGUgPGVs Zi5oPgorICNpbmNsdWRlIDxzdGRpby5oPgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDA0MC15YXNtLW5scy5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzLzAwNDAteWFzbS1ubHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjIyYWMwNDIwNzY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2Vi ZW5naW5lL3BhdGNoZXMvMDA0MC15YXNtLW5scy5wYXRjaApAQCAtMCwwICsxLDEzIEBACitkaWZm IC0tZ2l0IHNyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS95YXNtL3NvdXJjZS9jb25m aWcvbGludXgvY29uZmlnLmggc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L3lhc20v c291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAoraW5kZXggOWUzNjUzOS4uZjU4ODA4MyAxMDA2 NDQKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3RoaXJkX3BhcnR5L3lh c20vc291cmNlL2NvbmZpZy9saW51eC9jb25maWcuaAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS8vdGhpcmRfcGFydHkveWFzbS9zb3VyY2UvY29uZmlnL2xpbnV4L2NvbmZp Zy5oCitAQCAtNSw3ICs1LDcgQEAKKyAjZGVmaW5lIENQUF9QUk9HICJnY2MgLUUiCisgCisgLyog Ki8KKy0jZGVmaW5lIEVOQUJMRV9OTFMgMQorKy8qICN1bmRlZiBFTkFCTEVfTkxTIDEgKi8KKyAK KyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGFib3J0JyBmdW5jdGlvbi4gKi8KKyAj ZGVmaW5lIEhBVkVfQUJPUlQgMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5l L3BhdGNoZXMvMDA0NC1xdC1tdXNsLWV4ZWNpbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwLi5jMWNkYjUzNzIxMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwNDQtcXQtbXVzbC1leGVjaW5mby5wYXRjaApAQCAt MCwwICsxLDk0IEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9iYXNl L2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjLm9yaWcJMjAxOS0wNC0wOSAwOTozMToxNi4wMDAw MDAwMDAgKzAyMDAKKysrKyBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL2Jhc2Uv ZGVidWcvc3RhY2tfdHJhY2VfcG9zaXguY2MJMjAxOS0wNS0wNiAyMzoxNjoxMy4yNDU1MDI0Njcg KzAyMDAKK0BAIC0yNyw3ICsyNyw3IEBACisgI2lmICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCisg I2luY2x1ZGUgPGN4eGFiaS5oPgorICNlbmRpZgorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAm JiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJ WCkKKyAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KKyAjZW5kaWYKKyAKK0BAIC04Niw3ICs4Niw3IEBA CisgICAvLyBOb3RlOiBjb2RlIGluIHRoaXMgZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBz YWZlIChzdGQ6OnN0cmluZyB1c2VzCisgICAvLyBtYWxsb2MgaW50ZXJuYWxseSkuCisgCistI2lm ICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19H TElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFy Y2hfZnJvbSA9IDA7CisgICB3aGlsZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKKyAg ICAgLy8gTG9vayBmb3IgdGhlIHN0YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNo X2Zyb20uCitAQCAtMTIxLDcgKzEyMSw3IEBACisgICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVk X3N0YXJ0ICsgMjsKKyAgICAgfQorICAgfQorLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKKysjZW5kaWYgIC8vICFkZWZpbmVkKF9fR0xJQkNfXykgJiYg IWRlZmluZWQoX0FJWCkKKyB9CisgI2VuZGlmICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQor IAorQEAgLTEzMyw3ICsxMzMsNyBAQAorICAgdmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFuZGxl cigpID0gZGVmYXVsdDsKKyB9OworIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB2 b2lkIE91dHB1dFBvaW50ZXIodm9pZCogcG9pbnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciog aGFuZGxlcikgeworICAgLy8gVGhpcyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9y ZSBhIDY0LWJpdCBudW1iZXIgaW4gaGV4OgorICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51 bGwtdGVybWluYXRvci4KK0BAIC0yMTYsNyArMjE2LDcgQEAKKyAgIH0KKyAjZW5kaWYgIC8vIGRl ZmluZWQoVVNFX1NZTUJPTElaRSkKKyB9CistI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19f KSAmJiAhZGVmaW5lZChfQUlYKQorKyNlbmRpZiAgLy8gIWRlZmluZWQoX19HTElCQ19fKSAmJiAh ZGVmaW5lZChfQUlYKQorIAorIHZvaWQgUHJpbnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQp IHsKKyAgIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdz IHVzZWQgYnkgaW4tcHJvY2VzcworQEAgLTgxMiw3ICs4MTIsNyBAQAorICAgLy8gTk9URTogVGhp cyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNz CisgICAvLyBzdGFjayBkdW1waW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlv IGlzIGFsbG93ZWQgaGVyZS4KKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmlu ZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgICAv LyBUaG91Z2ggdGhlIGJhY2t0cmFjZSBBUEkgbWFuIHBhZ2UgZG9lcyBub3QgbGlzdCBhbnkgcG9z c2libGUgbmVnYXRpdmUKKyAgIC8vIHJldHVybiB2YWx1ZXMsIHdlIHRha2Ugbm8gY2hhbmNlLgor ICAgcmV0dXJuIGJhc2U6OnNhdHVyYXRlZF9jYXN0PHNpemVfdD4oYmFja3RyYWNlKHRyYWNlLCBj b3VudCkpOworQEAgLTgyNSwxMyArODI1LDEzIEBACisgLy8gTk9URTogVGhpcyBjb2RlIE1VU1Qg YmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCisgLy8gc3RhY2sg ZHVtcGluZyBzaWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhl cmUuCisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lm IGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgUHJpbnRCYWNrdHJhY2VP dXRwdXRIYW5kbGVyIGhhbmRsZXI7CisgICBQcm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRf LCBwcmVmaXhfc3RyaW5nLCAmaGFuZGxlcik7CisgI2VuZGlmCisgfQorIAorLSNpZiAhZGVmaW5l ZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0aFBy ZWZpeChzdGQ6Om9zdHJlYW0qIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKKyAgIFN0cmVhbUJh Y2t0cmFjZU91dHB1dEhhbmRsZXIgaGFuZGxlcihvcyk7CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2MJMjAxOS0wNC0wOSAwOToz MToxNi4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMTktMDUtMDYgMjM6MTg6MTQuOTIzNTY2OTky ICswMjAwCitAQCAtMjMzLDcgKzIzMyw3IEBACisgfQorIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6 OlRvU3RyaW5nV2l0aFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7Cisg ICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07CistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYm ICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlY KQorICAgT3V0cHV0VG9TdHJlYW1XaXRoUHJlZml4KCZzdHJlYW0sIHByZWZpeF9zdHJpbmcpOwor ICNlbmRpZgorICAgcmV0dXJuIHN0cmVhbS5zdHIoKTsKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3Jk cGFydHkvY2hyb21pdW0vL2Jhc2UvbG9nZ2luZy5jYwkyMDE3LTExLTI4IDE0OjA2OjUzLjAwMDAw MDAwMCArMDEwMAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vYmFzZS9s b2dnaW5nLmNjCTIwMTgtMDEtMjcgMjI6NDY6MzQuOTcwNDA2ODA3ICswMTAwCitAQCAtNTQ2LDcg KzU0Niw3IEBACisgCisgTG9nTWVzc2FnZTo6fkxvZ01lc3NhZ2UoKSB7CisgICBzaXplX3Qgc3Rh Y2tfc3RhcnQgPSBzdHJlYW1fLnRlbGxwKCk7CistI2lmICFkZWZpbmVkKE9GRklDSUFMX0JVSUxE KSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCisrI2lm ICFkZWZpbmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVk KF9fR0xJQkNfXykgJiYgXAorICAgICAhZGVmaW5lZChPU19BSVgpCisgICBpZiAoc2V2ZXJpdHlf ID09IExPR19GQVRBTCAmJiAhYmFzZTo6ZGVidWc6OkJlaW5nRGVidWdnZWQoKSkgeworICAgICAv LyBJbmNsdWRlIGEgc3RhY2sgdHJhY2Ugb24gYSBmYXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMg YXR0YWNoZWQuCmRpZmYgLS1naXQgYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDQ1 LXF0LW11c2wtdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tzaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi40OTY3NTNiZWYzMAotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwNDUtcXQtbXVzbC10aHJlYWQtc3RhY2tz aXplLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK2RpZmYgLS1naXQgYS9zcmMvM3JkcGFydHkvY2hy b21pdW0vcHBhcGkvdXRpbGl0eS90aHJlYWRpbmcvc2ltcGxlX3RocmVhZC5jYyBiL3NyYy8zcmRw YXJ0eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCitp bmRleCAwMmJmNDliLi4wNWVlMTgyIDEwMDY0NAorLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0 eS9jaHJvbWl1bS9wcGFwaS91dGlsaXR5L3RocmVhZGluZy9zaW1wbGVfdGhyZWFkLmNjCisrKysg cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3BwYXBpL3V0aWxpdHkvdGhyZWFkaW5n L3NpbXBsZV90aHJlYWQuY2MKK0BAIC0xMyw3ICsxMyw3IEBAIG5hbWVzcGFjZSBwcCB7CisgbmFt ZXNwYWNlIHsKKyAKKyAvLyBVc2UgMk1CIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3IgTmF0aXZlIENs aWVudCwgb3RoZXJ3aXNlIHVzZSBzeXN0ZW0gZGVmYXVsdC4KKy0jaWYgZGVmaW5lZChfX25hdGl2 ZV9jbGllbnRfXykKKysjaWYgZGVmaW5lZChfX25hdGl2ZV9jbGllbnRfXykgfHwgIWRlZmluZWQo X19HTElCQ19fKQorIGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6ZSA9IDIgKiAxMDI0ICog MTAyNDsKKyAjZWxzZQorIGNvbnN0IHNpemVfdCBrRGVmYXVsdFN0YWNrU2l6ZSA9IDA7CitkaWZm IC0tZ2l0IGEvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRm b3JtLXBvc2l4LmNjIGIvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3Y4L3NyYy9iYXNlL3BsYXRmb3Jt L3BsYXRmb3JtLXBvc2l4LmNjCitpbmRleCBjZjdmM2VjLi5lMDZhNWNlIDEwMDY0NAorLS0tIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0 Zm9ybS1wb3NpeC5jYworKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS92OC9z cmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYworQEAgLTc2MSw3ICs3NjEsNyBAQCB2 b2lkIFRocmVhZDo6U3RhcnQoKSB7CisgI2lmIFY4X09TX01BQ09TWAorICAgICAvLyBEZWZhdWx0 IG9uIE1hYyBPUyBYIGlzIDUxMmtCIC0tIGJ1bXAgdXAgdG8gMU1CCisgICAgIHN0YWNrX3NpemUg PSAxICogMTAyNCAqIDEwMjQ7CistI2VsaWYgVjhfT1NfQUlYCisrI2VsaWYgVjhfT1NfQUlYIHx8 ICFkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgLy8gRGVmYXVsdCBvbiBBSVggaXMgOTZrQiAtLSBi dW1wIHVwIHRvIDJNQgorICAgICBzdGFja19zaXplID0gMiAqIDEwMjQgKiAxMDI0OworICNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDA0Ni1zYW5kYm94 LW1lbWJhcnJpZXIucGF0Y2ggYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDQ2LXNh bmRib3gtbWVtYmFycmllci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uYjczOTcxZjI0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdp bmUvcGF0Y2hlcy8wMDQ2LXNhbmRib3gtbWVtYmFycmllci5wYXRjaApAQCAtMCwwICsxLDYwIEBA CistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGlu dXhfc3lzY2FsbHMuaAorQEAgLTEwNjMsNCArMTA2Myw4IEBACisgI2RlZmluZSBfX05SX21lbWZk X2NyZWF0ZSAyNzkKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQor KyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDI4MworKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FO REJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19BUk02NF9MSU5VWF9TWVNDQUxMU19IXworCistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCisrKysgcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxs cy5oCitAQCAtMTM4NSw2ICsxMzg1LDEwIEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAo X19OUl9TWVNDQUxMX0JBU0UrMzg1KQorICNlbmRpZgorIAorKyNpZiAhZGVmaW5lZChfX05SX21l bWJhcnJpZXIpCisrI2RlZmluZSBfX05SX21lbWJhcnJpZXIgKF9fTlJfU1lTQ0FMTF9CQVNFKzM4 OSkKKysjZW5kaWYKKysKKyAvLyBBUk0gcHJpdmF0ZSBzeXNjYWxscy4KKyAjaWYgIWRlZmluZWQo X19BUk1fTlJfQkFTRSkKKyAjZGVmaW5lIF9fQVJNX05SX0JBU0UgKF9fTlJfU1lTQ0FMTF9CQVNF ICsgMHhGMDAwMCkKKworLS0tIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAorKysrIHF0 d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS8vc2FuZGJveC9saW51eC9zeXN0ZW1faGVh ZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAorQEAgLTE0MjIsNSArMTQyMiw5IEBACisgI2Rl ZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzNTYKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19O Ul9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIDM3NQorKyNlbmRpZgorKwor ICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19YODZfMzJfTElOVVhfU1lT Q0FMTFNfSF8KKyAKKy0tLSBxdHdlYmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRi b3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0X2xpbnV4X3N5c2NhbGxzLmgKKysrKyBxdHdl YmVuZ2luZS9zcmMvM3JkcGFydHkvY2hyb21pdW0vL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRl cnMveDg2XzY0X2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0xMjkwLDUgKzEyOTAsOSBAQAorICNkZWZp bmUgX19OUl9tZW1mZF9jcmVhdGUgMzE5CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJf bWVtYmFycmllcikKKysjZGVmaW5lIF9fTlJfbWVtYmFycmllciAzMjQKKysjZW5kaWYKKysKKyAj ZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfWDg2XzY0X0xJTlVYX1NZU0NB TExTX0hfCisgCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgcXR3ZWJlbmdp bmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtLy9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBl cnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtMzcwLDYgKzM3MCw3IEBACisgICBzd2l0Y2ggKHN5c25v KSB7CisgICAgIGNhc2UgX19OUl9leGl0OgorICAgICBjYXNlIF9fTlJfZXhpdF9ncm91cDoKKysg ICAgY2FzZSBfX05SX21lbWJhcnJpZXI6CisgICAgIGNhc2UgX19OUl93YWl0NDoKKyAgICAgY2Fz ZSBfX05SX3dhaXRpZDoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaCBiL3Ny Y3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAwNDctZ24tY3Jvc3Mtc3lzcm9vdC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWU2Njg5YTQxODMKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8wMDQ3LWduLWNyb3Nz LXN5c3Jvb3QucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorVGhlcmUgaXMgbm8gcmVhc29uIHRvIHJ1 biB0aGlzIHNjcmlwdCBhbmQgcnVubmluZyBpdCBmYWlscyBvbiBhcmNoaXRlY3R1cmVzCitjaHJv bWl1bSBkb2VzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnQgKHN1Y2ggYXMgcHBjNjQpLgorCistLS0g cXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL2J1aWxkL2NvbmZpZy9wb3NpeC9CVUlM RC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS9idWlsZC9jb25maWcv cG9zaXgvQlVJTEQuZ24KK0BAIC0xMDIsMTIgKzEwMiwxMiBAQCBjb25maWcoInJ1bnRpbWVfbGli cmFyeSIpIHsKKyAgICAgICAjIHdoZW4gdHVybmluZyB0aGUgc3lzcm9vdCBvbiBvciBvZmYuIChk ZWZpbmVzIGFyZSBwYXNzZWQgdmlhIHRoZSBjb21tYW5kCisgICAgICAgIyBsaW5lLCBhbmQgYnVp bGQgc3lzdGVtIHJlYnVpbGRzIHRoaW5ncyB3aGVuIHRoZWlyIGNvbW1hbmRsaW5lCisgICAgICAg IyBjaGFuZ2VzKS4gTm90aGluZyBzaG91bGQgZXZlciByZWFkIHRoaXMgZGVmaW5lLgorLSAgICAg IHN5c3Jvb3RfaGFzaCA9CistICAgICAgICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5 c3Jvb3Rfc2NyaXB0cy9pbnN0YWxsLXN5c3Jvb3QucHkiLAorLSAgICAgICAgICAgICAgICAgICAg ICBbICItLXByaW50LWhhc2g9JGN1cnJlbnRfY3B1IiBdLAorLSAgICAgICAgICAgICAgICAgICAg ICAidHJpbSBzdHJpbmciLAorLSAgICAgICAgICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4 L3N5c3Jvb3Rfc2NyaXB0cy9zeXNyb290cy5qc29uIiBdKQorLSAgICAgIGRlZmluZXMgKz0gWyAi Q1JfU1lTUk9PVF9IQVNIPSRzeXNyb290X2hhc2giIF0KKysgICAgICAjc3lzcm9vdF9oYXNoID0K KysgICAgICAjICAgIGV4ZWNfc2NyaXB0KCIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2NyaXB0cy9p bnN0YWxsLXN5c3Jvb3QucHkiLAorKyAgICAgICMgICAgICAgICAgICAgICAgWyAiLS1wcmludC1o YXNoPSRjdXJyZW50X2NwdSIgXSwKKysgICAgICAjICAgICAgICAgICAgICAgICJ0cmltIHN0cmlu ZyIsCisrICAgICAgIyAgICAgICAgICAgICAgICBbICIvL2J1aWxkL2xpbnV4L3N5c3Jvb3Rfc2Ny aXB0cy9zeXNyb290cy5qc29uIiBdKQorKyAgICAgICNkZWZpbmVzICs9IFsgIkNSX1NZU1JPT1Rf SEFTSD0kc3lzcm9vdF9oYXNoIiBdCisgICAgIH0KKyAgICAgYXNtZmxhZ3MgKz0gc3lzcm9vdF9m bGFncworIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvcXQ1LXdl YmVuZ2luZS1zeXN0ZW0taWN1LnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMv MDEwMS1xdDUtd2ViZW5naW5lLXN5c3RlbS1pY3UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCA3NiUK cmVuYW1lIGZyb20gc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvcXQ1LXdlYmVuZ2luZS1z eXN0ZW0taWN1LnBhdGNoCnJlbmFtZSB0byBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy8w MTAxLXF0NS13ZWJlbmdpbmUtc3lzdGVtLWljdS5wYXRjaAppbmRleCBlMzAzNWIxNTQwMC4uOGY2 YjlkYjZhZmUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL3F0NS13 ZWJlbmdpbmUtc3lzdGVtLWljdS5wYXRjaAorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0 Y2hlcy8wMTAxLXF0NS13ZWJlbmdpbmUtc3lzdGVtLWljdS5wYXRjaApAQCAtMTIsMTAgKzEyLDEw IEBAIGFuZCBzZWVtcyB0byBiZSByZXN0b3JlZCBpbiBsYXRlciBjaHJvbWl1bSA+IDc2LgogQ2hh bmdlLUlkOiBJZTA1YzAwNWViY2RlZDlhMjI4Mzg2ZGI1ZDlhYmU5ODYzNzg3ZWMyYgogLS0tCiAK LWRpZmYgLS1naXQgYS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9pY3UvQlVJTEQuZ24gYi9jaHJvbWl1 bS90aGlyZF9wYXJ0eS9pY3UvQlVJTEQuZ24KK2RpZmYgLS1naXQgcXR3ZWJlbmdpbmUvc3JjLzNy ZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5L2ljdS9CVUlMRC5nbiBxdHdlYmVuZ2luZS9zcmMv M3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvaWN1L0JVSUxELmduCiBpbmRleCBiZTNjOTE5 Li42MzlmOGZkIDEwMDY0NAotLS0tIHNyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS9p Y3UvQlVJTEQuZ24KLSsrKyBzcmMvM3JkcGFydHkvY2hyb21pdW0vdGhpcmRfcGFydHkvaWN1L0JV SUxELmduCistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5L2Nocm9taXVtL3RoaXJkX3BhcnR5 L2ljdS9CVUlMRC5nbgorKysrIHF0d2ViZW5naW5lL3NyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGly ZF9wYXJ0eS9pY3UvQlVJTEQuZ24KIEBAIC0xMTc1LDYgKzExNzUsMTIgQEAKICAgICAgIlVTSU5H X1NZU1RFTV9JQ1U9MSIsCiAgICAgICJJQ1VfVVRJTF9EQVRBX0lNUEw9SUNVX1VUSUxfREFUQV9T VEFUSUMiLApkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvMDExMC13 dGYtd2h5LWRvZXMtaXQtZmluZC1jYW5vbi1maWxlLW5hbWUtb24tbXVzbC5wYXRjaCBiL3NyY3Br Z3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzLzAxMTAtd3RmLXdoeS1kb2VzLWl0LWZpbmQtY2Fub24t ZmlsZS1uYW1lLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAuLjg5M2VkMmQ0MWJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5n aW5lL3BhdGNoZXMvMDExMC13dGYtd2h5LWRvZXMtaXQtZmluZC1jYW5vbi1maWxlLW5hbWUtb24t bXVzbC5wYXRjaApAQCAtMCwwICsxLDExIEBACistLS0gcXR3ZWJlbmdpbmUvc3JjLzNyZHBhcnR5 L2Nocm9taXVtL3RoaXJkX3BhcnR5L25hc20vbmFzbWxpYi9yZWFscGF0aC5jCTIwMTktMDktMjMg MTQ6MjQ6MjAuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDE5LTEwLTExIDA2OjI3OjI4LjQ1MDMy OTk4NiArMDIwMAorQEAgLTU3LDcgKzU3LDcgQEAKKyAgKi8KKyBjaGFyICpuYXNtX3JlYWxwYXRo KGNvbnN0IGNoYXIgKnJlbF9wYXRoKQorIHsKKy0gICAgY2hhciAqcnAgPSBjYW5vbmljYWxpemVf ZmlsZV9uYW1lKHJlbF9wYXRoKTsKKysgICAgY2hhciAqcnAgPSByZWFscGF0aChyZWxfcGF0aCwg TlVMTCk7CisgICAgIHJldHVybiBycCA/IHJwIDogbmFzbV9zdHJkdXAocmVsX3BhdGgpOworIH0K KyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVzL3F0NS13ZWJlbmdp bmUtbGludXgtNS4yLnBhdGNoIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3BhdGNoZXMvcXQ1LXdl YmVuZ2luZS1saW51eC01LjIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4 ZTBhMzhiYTM4Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hl cy9xdDUtd2ViZW5naW5lLWxpbnV4LTUuMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICsw LDAgQEAKLUZyb20gNzRlNjlkYTkyZDBhODk1MTIyY2E2NTkyMmI5YTJiOGIzOTI2Yzg4MiBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9FbWlsaW89MjBDb2Jvcz0yMD1D Mz04MWx2YXJlej89IDxlbWlsaW9AbW96aWxsYS5jb20+Ci1EYXRlOiBXZWQsIDI5IE1heSAyMDE5 IDE1OjMwOjMyICswMjAwCi1TdWJqZWN0OiBGaXggYnVpbGQgd2l0aCByZWNlbnQgbGludXgga2Vy bmVsLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNl dD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1SZWNlbnQga2VybmVs IGNvbW1pdFsxXSBtb3ZlZCBhIGJpdCB0aGUgZGVmaW5lIGZvciB0aGlzIGNvbnN0YW50LiBUaGlz IHJldmVhbGVkCi1hIG1pc3NpbmcgaW5jbHVkZSBpbiBXZWJSVEMuCi0KLVsxXTogaHR0cHM6Ly9n aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0 L2NvbW1pdC8/aWQ9MDc2OGUxNzA3M2RjNQotCi1CdWc6IHdlYnJ0YzoxMDY3NwotQ2hhbmdlLUlk OiBJNmVkNjlkMzA3NTk5ZDA3Nzc2MGFlNmFkNzRiZTEwYmZiZGQxY2FjNgotQ29tbWl0LVF1ZXVl OiBLYXJsIFdpYmVyZyA8a3dpYmVyZ0B3ZWJydGMub3JnPgotUmV2aWV3ZWQtYnk6IEthcmwgV2li ZXJnIDxrd2liZXJnQHdlYnJ0Yy5vcmc+Ci1Dci1Db21taXQtUG9zaXRpb246IHJlZnMvaGVhZHMv bWFzdGVyQHsjMjgxMDh9Ci1TZWUtQWxzbzogaHR0cHM6Ly9jaHJvbWl1bS5nb29nbGVzb3VyY2Uu Y29tL2V4dGVybmFsL3dlYnJ0Yy8rLzY4MDY1NTBkNWQ1MWE4MjAxMDRhMTIyMDVkMWYzN2NlMGFj ZWJmMTkKLVJldmlld2VkLWJ5OiBKw7xyaSBWYWxkbWFubiA8anVyaS52YWxkbWFubkBxdC5pbz4K LS0tLQotIGNocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9ydGNfYmFzZS9waHlzaWNhbF9zb2Nr ZXRfc2VydmVyLmNjIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQot Ci1kaWZmIC0tZ2l0IGEvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3BoeXNp Y2FsX3NvY2tldF9zZXJ2ZXIuY2MgYi9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jh c2UvcGh5c2ljYWxfc29ja2V0X3NlcnZlci5jYwotaW5kZXggNDg0NWE3MzM4MGMuLmMzOGQ3ZmRm YWM5IDEwMDY0NAotLS0tIHNyYy8zcmRwYXJ0eS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMv cnRjX2Jhc2UvcGh5c2ljYWxfc29ja2V0X3NlcnZlci5jYwotKysrIHNyYy8zcmRwYXJ0eS9jaHJv bWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvcnRjX2Jhc2UvcGh5c2ljYWxfc29ja2V0X3NlcnZlci5j YwotQEAgLTUxLDYgKzUxLDEwIEBACi0gI2luY2x1ZGUgInJ0Y19iYXNlL251bGxfc29ja2V0X3Nl cnZlci5oIgotICNpbmNsdWRlICJydGNfYmFzZS90aW1lX3V0aWxzLmgiCi0gCi0rI2lmIGRlZmlu ZWQoV0VCUlRDX0xJTlVYKQotKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0rI2VuZGlmCi0r Ci0gI2lmIGRlZmluZWQoV0VCUlRDX1dJTikKLSAjZGVmaW5lIExBU1RfU1lTVEVNX0VSUk9SICg6 OkdldExhc3RFcnJvcigpKQotICNlbGlmIGRlZmluZWQoX19uYXRpdmVfY2xpZW50X18pICYmIF9f bmF0aXZlX2NsaWVudF9fCi0tLSAKLWNnaXQgdjEuMi4xCi0KZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv cXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZSBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS90ZW1wbGF0ZQpp bmRleCBiYTVhNWUyNmExZC4uZjcyYmMzNTJlM2QgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvcXQ1LXdl YmVuZ2luZS90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUKQEAg LTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdxdDUtd2ViZW5naW5lJwogcGtnbmFt ZT1xdDUtd2ViZW5naW5lCi12ZXJzaW9uPTUuMTQuMGJldGExCit2ZXJzaW9uPTUuMTQuMGJldGEy CiByZXZpc2lvbj0xCiB3cmtzcmM9InF0d2ViZW5naW5lLWV2ZXJ5d2hlcmUtc3JjLSR7dmVyc2lv bi9iLy1ifSIKICNjcmVhdGVfd3Jrc3JjPXllcwpAQCAtMjAsMTQgKzIwLDE2IEBAIG1ha2VkZXBl bmRzPSJxdDUtd2ViY2hhbm5lbC1kZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwgcXQ1LXRvb2xzLWRl dmVsCiAgcXQ1LWRlY2xhcmF0aXZlLWRldmVsIGxpYmV2ZW50LWRldmVsIHNuYXBweS1kZXZlbCBp Y3UtZGV2ZWwgZmZtcGVnLWRldmVsCiAgbGlid2VicC1kZXZlbCBvcHVzLWRldmVsIGN1cHMtZGV2 ZWwgbnNzLWRldmVsIG1pbml6aXAtZGV2ZWwgbGlieHNsdC1kZXZlbAogIGxpYnZweC1kZXZlbCBy ZTItZGV2ZWwgbGliWHRzdC1kZXZlbCBsaWJYY3Vyc29yLWRldmVsIGxpYlhjb21wb3NpdGUtZGV2 ZWwKLSBqc29uY3BwLWRldmVsIGhhcmZidXp6LWRldmVsIGxjbXMyLWRldmVsIHByb3RvYnVmLWRl dmVsIHB1bHNlYXVkaW8tZGV2ZWwiCisganNvbmNwcC1kZXZlbCBoYXJmYnV6ei1kZXZlbCBsY21z Mi1kZXZlbCBwcm90b2J1Zi1kZXZlbCBwdWxzZWF1ZGlvLWRldmVsCisgbGliWHJhbmRyLWRldmVs IgogZGVwZW5kcz0iIgogc2hvcnRfZGVzYz0iQ3Jvc3MtcGxhdGZvcm0gYXBwbGljYXRpb24gYW5k IFVJIGZyYW1ld29yayAoUVQ1KSAtIFdlYkVuZ2luZSBjb21wb25lbnQiCiBtYWludGFpbmVyPSJK b2huIDxqb2huekBwb3N0ZW8ubmV0PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIsIExHUEwt My4wLW9yLWxhdGVyIgogaG9tZXBhZ2U9Imh0dHBzOi8vcXQuaW8vIgogZGlzdGZpbGVzPSJodHRw Oi8vZG93bmxvYWQucXQuaW8vZGV2ZWxvcG1lbnRfcmVsZWFzZXMvcXQvJHt2ZXJzaW9uJS4qfS8k e3ZlcnNpb24vYi8tYn0vc3VibW9kdWxlcy9xdHdlYmVuZ2luZS1ldmVyeXdoZXJlLXNyYy0ke3Zl cnNpb24vYi8tYn0udGFyLnh6IgotY2hlY2tzdW09NDI1NWUwYTRmMTUxMGI2Y2FlNTUyZjA1M2I3 NzQ2NTlkOTMxMTZjZjE3MDgwYWMwMDM4ODRjODJkYzAwOTYxYworY2hlY2tzdW09NWYwY2Q1YmVi YjgyZDFhOGE3OWMwODU1ZTFhZDI4Mzk1ZWFiMmQ2NDlhODhkMzc5OGZlMzdlMzZmNGFhNDQ2Ngor cGF0Y2hfYXJncz0iLU5wMSIKIAogYnVpbGRfb3B0aW9ucz0ic25hcHNob3QiCiBidWlsZF9vcHRp b25zX2RlZmF1bHQ9InNuYXBzaG90IgpAQCAtNjIsMTQgKzY0LDE1IEBAIHByZV9jb25maWd1cmUo KSB7CiAjCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPSIkWEJQU19DUk9TU19CQVNFIgog IwlleHBvcnQgUEtHX0NPTkZJR19QQVRIPSIkWEJQU19DUk9TU19CQVNFL3Vzci9saWIvcGtnY29u ZmlnOiRYQlBTX0NST1NTX0JBU0UvdXNyL3NoYXJlL3BrZ2NvbmZpZ1wke1BLR19DT05GSUdfUEFU SDorOlwke1BLR19DT05GSUdfUEFUSH19IgogIwlleHBvcnQgUEtHX0NPTkZJR19MSUJESVI9IiRY QlBTX0NST1NTX0JBU0UvdXNyL2xpYi9wa2djb25maWdcJHtQS0dfQ09ORklHX0xJQkRJUjorOlwk e1BLR19DT05GSUdfTElCRElSfX0iCi0Jcm0gLWYgJHtYQlBTX1dSQVBQRVJESVJ9L3BrZy1jb25m aWcKKyMJcm0gLWYgJHtYQlBTX1dSQVBQRVJESVJ9L3BrZy1jb25maWcKKwk6CiB9CiAKIHByZV9i dWlsZCgpIHsKIAkjZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9IiRYQlBTX0NST1NTX0JB U0UiCiAJI2V4cG9ydCBQS0dfQ09ORklHX1BBVEg9IiRYQlBTX0NST1NTX0JBU0UvdXNyL2xpYi9w a2djb25maWc6JFhCUFNfQ1JPU1NfQkFTRS91c3Ivc2hhcmUvcGtnY29uZmlnXCR7UEtHX0NPTkZJ R19QQVRIOis6XCR7UEtHX0NPTkZJR19QQVRIfX0iCiAJI2V4cG9ydCBQS0dfQ09ORklHX0xJQkRJ Uj0iJFhCUFNfQ1JPU1NfQkFTRS91c3IvbGliL3BrZ2NvbmZpZ1wke1BLR19DT05GSUdfTElCRElS Ois6XCR7UEtHX0NPTkZJR19MSUJESVJ9fSIKLQlybSAtZiAke1hCUFNfV1JBUFBFUkRJUn0vcGtn LWNvbmZpZworCSNybSAtZiAke1hCUFNfV1JBUFBFUkRJUn0vcGtnLWNvbmZpZwogCWV4cG9ydCBO SU5KQUpPQlM9JHttYWtlam9ic30KIH0KIAoKRnJvbSBhZTI0Njk4NWQ1NDQ4OWEzNzhhY2IyODlj ZjgxZjQxNTY1NDA4ZTYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxqb2hu ekBwb3N0ZW8ubmV0PgpEYXRlOiBNb24sIDExIE5vdiAyMDE5IDIwOjIyOjQzICswMTAwClN1Ympl Y3Q6IFtQQVRDSCAxMS8xMV0gY29tbW9uL3FtYWtlLnNoOiByZW9yZGVyIGFyZ3MKCltjaSBza2lw XQotLS0KIGNvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaCB8IDUgKysrLS0KIDEgZmlsZSBjaGFu Z2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29tbW9u L2J1aWxkLXN0eWxlL3FtYWtlLnNoIGIvY29tbW9uL2J1aWxkLXN0eWxlL3FtYWtlLnNoCmluZGV4 IDYzYmU1YTNhNTY4Li40Zjc5ZGMxODQzYSAxMDA2NDQKLS0tIGEvY29tbW9uL2J1aWxkLXN0eWxl L3FtYWtlLnNoCisrKyBiL2NvbW1vbi9idWlsZC1zdHlsZS9xbWFrZS5zaApAQCAtNDMsMTMgKzQz LDE0IEBAIFRhcmdldFNwZWM9bGludXgtZysrCiBfRU9GCiAJCXFtYWtlX2FyZ3M9Ii1xdGNvbmYg JHt3cmtzcmN9L3F0LmNvbmYiCiAJZmkKLQkke3FtYWtlfSAke3FtYWtlX2FyZ3N9ICR7Y29uZmln dXJlX2FyZ3N9IFwKKwkke3FtYWtlfSAke3FtYWtlX2FyZ3N9IFwKIAkJUFJFRklYPS91c3IgXAog CQlMSUI9L3Vzci9saWIgXAogCQlRTUFLRV9DQz0kQ0MgUU1BS0VfQ1hYPSRDWFggUU1BS0VfTElO Sz0kQ1hYIFFNQUtFX0xJTktfQz0kQ0MgXAogCQlRTUFLRV9DRkxBR1M9IiR7Q0ZMQUdTfSIgXAog CQlRTUFLRV9DWFhGTEFHUz0iJHtDWFhGTEFHU30iIFwKLQkJUU1BS0VfTEZMQUdTPSIke0xERkxB R1N9IgorCQlRTUFLRV9MRkxBR1M9IiR7TERGTEFHU30iIFwKKwkJJHtjb25maWd1cmVfYXJnc30K IH0KIAogZG9fYnVpbGQoKSB7Cg== --===============5920027440691467542==--