From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 15060 invoked from network); 4 Aug 2022 04:52:07 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 4 Aug 2022 04:52:07 -0000 Content-Type: multipart/mixed; boundary="===============2791259569387006628==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_qt5-webengine=3A_patch_for_pipewire_0=2E3?= To: ml@inbox.vuxu.org From: heittpr Reply-to: ml@inbox.vuxu.org Message-ID: Date: Thu, 04 Aug 2022 06:52:07 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============2791259569387006628== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IGhlaXR0cHIgYWdhaW5zdCBtYXN0ZXIgb24g dGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL2hlaXR0cHIv dm9pZC1wYWNrYWdlcyBxdDUtd2ViZW5naW5lCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC8zODQ2NgoKcXQ1LXdlYmVuZ2luZTogcGF0Y2ggZm9yIHBpcGV3 aXJlIDAuMwpbY2kgc2tpcF0NCg0KLSBJIHRlc3RlZCB0aGUgY2hhbmdlcyBpbiB0aGlzIFBSOiAq KllFUyoqDQotIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciBteSBuYXRpdmUgYXJjaGl0ZWN0 dXJlLCB4ODZfNjQNCg0KU2NyZWVuc2hhcmluZyB2aWEgcGlwZXdpcmUgdXNpbmcgcXQ1LXdlYmVu Z2luZSBpbiB3bHJvb3RzLWJhc2VkIGNvbXBvc2l0b3JzIChzdWNoIGFzIFtTd2F5XShodHRwczov L3N3YXl3bS5vcmcvKSkgaXMgY3VycmVudGx5IGJyb2tlbiAoc2VlIGh0dHBzOi8vZ2l0aHViLmNv bS9xdXRlYnJvd3Nlci9xdXRlYnJvd3Nlci9pc3N1ZXMvNjc1MikuIFRoaXMgUFIgYXBwbGllcyBb YSBwYXRjaCBieSBBbnRvbmlvIFJvamFzXShodHRwczovL2dpdGh1Yi5jb20vYXJjaGxpbnV4L3N2 bnRvZ2l0LXBhY2thZ2VzL2Jsb2IvcGFja2FnZXMvcXQ1LXdlYmVuZ2luZS90cnVuay9xdDUtd2Vi ZW5naW5lLXBpcGV3aXJlLTAuMy5wYXRjaCkgdG8gZml4IHRoYXQuCgpBIHBhdGNoIGZpbGUgZnJv bSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMzg0NjYu cGF0Y2ggaXMgYXR0YWNoZWQ= --===============2791259569387006628== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-qt5-webengine-38466.patch" RnJvbSBmYzliMGY2MTY2ZjdmYjgyMTYwYzAxMDRkZWUzOTJiZjFlN2ZhNjVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBoZWl0b3IgPGhlaXRvcmxlaXRlLmRldkBnbWFpbC5jb20+CkRh dGU6IFRodSwgNCBBdWcgMjAyMiAwMTo0MDo1OSAtMDMwMApTdWJqZWN0OiBbUEFUQ0hdIHF0NS13 ZWJlbmdpbmU6IHBhdGNoIGZvciBwaXBld2lyZSAwLjMKCi0tLQogLi4uL3F0NS13ZWJlbmdpbmUv cGF0Y2hlcy9waXBld2lyZS0wLjMucGF0Y2ggIHwgMTgxOSArKysrKysrKysrKysrKysrKwogLi4u L3BhdGNoZXMvcGlwZXdpcmUtMC4zLnBhdGNoLmFyZ3MgICAgICAgICAgIHwgICAgMSArCiBzcmNw a2dzL3F0NS13ZWJlbmdpbmUvdGVtcGxhdGUgICAgICAgICAgICAgICAgfCAgICA0ICstCiAzIGZp bGVzIGNoYW5nZWQsIDE4MjIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9waXBld2lyZS0wLjMucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3F0NS13ZWJlbmdpbmUvcGF0Y2hlcy9waXBl d2lyZS0wLjMucGF0Y2guYXJncwoKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzL3BpcGV3aXJlLTAuMy5wYXRjaCBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9wYXRjaGVz L3BpcGV3aXJlLTAuMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmY4MDQ3ZTA4OGI5MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvcXQ1LXdlYmVuZ2lu ZS9wYXRjaGVzL3BpcGV3aXJlLTAuMy5wYXRjaApAQCAtMCwwICsxLDE4MTkgQEAKK2RpZmYgLS1n aXQgYS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUv QlVJTEQuZ24gYi9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh cHR1cmUvQlVJTEQuZ24KK2luZGV4IDUyMzU1MTI3MzVkLi44MjU5NDQyZjgxMSAxMDA2NDQKKy0t LSBhL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9C VUlMRC5nbgorKysrIGIvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3Rv cF9jYXB0dXJlL0JVSUxELmduCitAQCAtMTEsNiArMTEsMTEgQEAgaW1wb3J0KCIvL2J1aWxkL2Nv bmZpZy91aS5nbmkiKQorIGltcG9ydCgiLy90b29scy9nZW5lcmF0ZV9zdHVicy9ydWxlcy5nbmki KQorIGltcG9ydCgiLi4vLi4vd2VicnRjLmduaSIpCisgCisraWYgKHJ0Y191c2VfcGlwZXdpcmUp IHsKKysgIGFzc2VydChydGNfcGlwZXdpcmVfdmVyc2lvbiA9PSAiMC4yIiB8fCBydGNfcGlwZXdp cmVfdmVyc2lvbiA9PSAiMC4zIiwKKysgICAgICAgICAiVW5zdXBwb3J0ZWQgUGlwZVdpcmUgdmVy c2lvbiIpCisrfQorKworIHVzZV9kZXNrdG9wX2NhcHR1cmVfZGlmZmVyX3NzZTIgPSBjdXJyZW50 X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0IgorIAorIGNvbmZpZygieDExX2Nv bmZpZyIpIHsKK0BAIC0yMDAsMjIgKzIwNSw0MSBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21l b3MpIHsKKyAgICAgICBdCisgICAgIH0KKyAKKy0gICAgaWYgKHJ0Y19saW5rX3BpcGV3aXJlKSB7 CisrICAgIGlmIChydGNfcGlwZXdpcmVfdmVyc2lvbiA9PSAiMC4zIikgeworICAgICAgIHBrZ19j b25maWcoInBpcGV3aXJlIikgeworLSAgICAgICAgcGFja2FnZXMgPSBbICJsaWJwaXBld2lyZS0w LjIiIF0KKysgICAgICAgIHBhY2thZ2VzID0gWyAibGlicGlwZXdpcmUtMC4zIiBdCisrICAgICAg ICBpZiAoIXJ0Y19saW5rX3BpcGV3aXJlKSB7CisrICAgICAgICAgIGlnbm9yZV9saWJzID0gdHJ1 ZQorKyAgICAgICAgfQorICAgICAgIH0KKyAgICAgfSBlbHNlIHsKKysgICAgICBwa2dfY29uZmln KCJwaXBld2lyZSIpIHsKKysgICAgICAgIHBhY2thZ2VzID0gWyAibGlicGlwZXdpcmUtMC4yIiBd CisrICAgICAgICBpZiAoIXJ0Y19saW5rX3BpcGV3aXJlKSB7CisrICAgICAgICAgIGlnbm9yZV9s aWJzID0gdHJ1ZQorKyAgICAgICAgfQorKyAgICAgIH0KKysgICAgfQorKworKyAgICBpZiAoIXJ0 Y19saW5rX3BpcGV3aXJlKSB7CisgICAgICAgIyBXaGVuIGxpYnBpcGV3aXJlIGlzIG5vdCBkaXJl Y3RseSBsaW5rZWQsIHVzZSBzdHVicyB0byBhbGxvdyBmb3IgZGxvcGVuaW5nIG9mCisgICAgICAg IyB0aGUgYmluYXJ5LgorICAgICAgIGdlbmVyYXRlX3N0dWJzKCJwaXBld2lyZV9zdHVicyIpIHsK Ky0gICAgICAgIGNvbmZpZ3MgPSBbICIuLi8uLi86Y29tbW9uX2NvbmZpZyIgXQorKyAgICAgICAg Y29uZmlncyA9IFsKKysgICAgICAgICAgIi4uLy4uLzpjb21tb25fY29uZmlnIiwKKysgICAgICAg ICAgIjpwaXBld2lyZSIsCisrICAgICAgICBdCisgICAgICAgICBkZXBzID0gWyAiLi4vLi4vcnRj X2Jhc2UiIF0KKyAgICAgICAgIGV4dHJhX2hlYWRlciA9ICJsaW51eC9waXBld2lyZV9zdHViX2hl YWRlci5mcmFnbWVudCIKKyAgICAgICAgIGxvZ2dpbmdfZnVuY3Rpb24gPSAiUlRDX0xPRyhMU19W RVJCT1NFKSIKKyAgICAgICAgIGxvZ2dpbmdfaW5jbHVkZSA9ICJydGNfYmFzZS9sb2dnaW5nLmgi CisgICAgICAgICBvdXRwdXRfbmFtZSA9ICJsaW51eC9waXBld2lyZV9zdHVicyIKKyAgICAgICAg IHBhdGhfZnJvbV9zb3VyY2UgPSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgiCistICAg ICAgICBzaWdzID0gWyAibGludXgvcGlwZXdpcmUuc2lncyIgXQorKyAgICAgICAgaWYgKHJ0Y19w aXBld2lyZV92ZXJzaW9uID09ICIwLjMiKSB7CisrICAgICAgICAgIHNpZ3MgPSBbICJsaW51eC9w aXBld2lyZTAzLnNpZ3MiIF0KKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgIHNpZ3MgPSBb ICJsaW51eC9waXBld2lyZTAyLnNpZ3MiIF0KKysgICAgICAgIH0KKyAgICAgICB9CisgICAgIH0K KyAKK0BAIC01MDYsNiArNTMwLDcgQEAgcnRjX2xpYnJhcnkoImRlc2t0b3BfY2FwdHVyZV9nZW5l cmljIikgeworICAgYWJzbF9kZXBzID0gWworICAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw L2Fic2wvbWVtb3J5IiwKKyAgICAgIi8vdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu Z3MiLAorKyAgICAiLy90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXM6b3B0aW9uYWwi LAorICAgXQorIAorICAgaWYgKHJ0Y191c2VfeDExX2V4dGVuc2lvbnMpIHsKK0BAIC01MjYsMjAg KzU1MSwxNSBAQCBydGNfbGlicmFyeSgiZGVza3RvcF9jYXB0dXJlX2dlbmVyaWMiKSB7CisgICAg IHNvdXJjZXMgKz0gWworICAgICAgICJsaW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmNjIiwK KyAgICAgICAibGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5oIiwKKy0gICAgICAibGludXgv c2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmNjIiwKKy0gICAgICAibGludXgvc2NyZWVuX2NhcHR1 cmVyX3BpcGV3aXJlLmgiLAorLSAgICAgICJsaW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUu Y2MiLAorLSAgICAgICJsaW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaCIsCisgICAgIF0K KyAKKyAgICAgY29uZmlncyArPSBbCisgICAgICAgIjpwaXBld2lyZV9jb25maWciLAorICAgICAg ICI6Z2lvIiwKKysgICAgICAiOnBpcGV3aXJlIiwKKyAgICAgXQorIAorLSAgICBpZiAocnRjX2xp bmtfcGlwZXdpcmUpIHsKKy0gICAgICBjb25maWdzICs9IFsgIjpwaXBld2lyZSIgXQorLSAgICB9 IGVsc2UgeworKyAgICBpZiAoIXJ0Y19saW5rX3BpcGV3aXJlKSB7CisgICAgICAgZGVwcyArPSBb ICI6cGlwZXdpcmVfc3R1YnMiIF0KKyAgICAgfQorICAgfQorZGlmZiAtLWdpdCBhL2Nocm9taXVt L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2Nh cHR1cmVyX3BpcGV3aXJlLmNjIGIvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMv ZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUuY2MKK2luZGV4IDI2 NDBlOTNhYTk4Li5jMzAyYTA4NmVhZCAxMDA2NDQKKy0tLSBhL2Nocm9taXVtL3RoaXJkX3BhcnR5 L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3 aXJlLmNjCisrKysgYi9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w X2NhcHR1cmUvbGludXgvYmFzZV9jYXB0dXJlcl9waXBld2lyZS5jYworQEAgLTE0LDggKzE0LDE0 IEBACisgI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisgI2luY2x1ZGUgPHNwYS9wYXJhbS9mb3Jt YXQtdXRpbHMuaD4KKyAjaW5jbHVkZSA8c3BhL3BhcmFtL3Byb3BzLmg+CisrI2lmICFQV19DSEVD S19WRVJTSU9OKDAsIDMsIDApCisgI2luY2x1ZGUgPHNwYS9wYXJhbS92aWRlby9yYXctdXRpbHMu aD4KKyAjaW5jbHVkZSA8c3BhL3N1cHBvcnQvdHlwZS1tYXAuaD4KKysjZW5kaWYKKysKKysjaW5j bHVkZSA8c3lzL2lvY3RsLmg+CisrI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisrI2luY2x1ZGUgPHN5 cy9zeXNjYWxsLmg+CisgCisgI2luY2x1ZGUgPG1lbW9yeT4KKyAjaW5jbHVkZSA8dXRpbGl0eT4K K0BAIC0zMCw3ICszNiwxMSBAQAorICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s aW51eC9waXBld2lyZV9zdHVicy5oIgorIAorIHVzaW5nIG1vZHVsZXNfZGVza3RvcF9jYXB0dXJl X2xpbnV4OjpJbml0aWFsaXplU3R1YnM7CistdXNpbmcgbW9kdWxlc19kZXNrdG9wX2NhcHR1cmVf bGludXg6OmtNb2R1bGVQaXBld2lyZTsKKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigwLCAzLCAwKQor K3VzaW5nIG1vZHVsZXNfZGVza3RvcF9jYXB0dXJlX2xpbnV4OjprTW9kdWxlUGlwZXdpcmUwMzsK KysjZWxzZQorK3VzaW5nIG1vZHVsZXNfZGVza3RvcF9jYXB0dXJlX2xpbnV4OjprTW9kdWxlUGlw ZXdpcmUwMjsKKysjZW5kaWYKKyB1c2luZyBtb2R1bGVzX2Rlc2t0b3BfY2FwdHVyZV9saW51eDo6 U3R1YlBhdGhNYXA7CisgI2VuZGlmICAvLyBkZWZpbmVkKFdFQlJUQ19ETE9QRU5fUElQRVdJUkUp CisgCitAQCAtNDcsOSArNTcsMTU2IEBAIGNvbnN0IGNoYXIga1NjcmVlbkNhc3RJbnRlcmZhY2VO YW1lW10gPSAib3JnLmZyZWVkZXNrdG9wLnBvcnRhbC5TY3JlZW5DYXN0IjsKKyBjb25zdCBpbnQg a0J5dGVzUGVyUGl4ZWwgPSA0OworIAorICNpZiBkZWZpbmVkKFdFQlJUQ19ETE9QRU5fUElQRVdJ UkUpCisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwgMywgMCkKKytjb25zdCBjaGFyIGtQaXBlV2ly ZUxpYltdID0gImxpYnBpcGV3aXJlLTAuMy5zby4wIjsKKysjZWxzZQorIGNvbnN0IGNoYXIga1Bp cGVXaXJlTGliW10gPSAibGlicGlwZXdpcmUtMC4yLnNvLjEiOworICNlbmRpZgorKyNlbmRpZgor IAorKy8vIHN0YXRpYworK3N0cnVjdCBkbWFfYnVmX3N5bmMgeworKyAgdWludDY0X3QgZmxhZ3M7 CisrfTsKKysjZGVmaW5lIERNQV9CVUZfU1lOQ19SRUFEICgxIDw8IDApCisrI2RlZmluZSBETUFf QlVGX1NZTkNfU1RBUlQgKDAgPDwgMikKKysjZGVmaW5lIERNQV9CVUZfU1lOQ19FTkQgKDEgPDwg MikKKysjZGVmaW5lIERNQV9CVUZfQkFTRSAnYicKKysjZGVmaW5lIERNQV9CVUZfSU9DVExfU1lO QyBfSU9XKERNQV9CVUZfQkFTRSwgMCwgc3RydWN0IGRtYV9idWZfc3luYykKKysKKytzdGF0aWMg dm9pZCBTeW5jRG1hQnVmKGludCBmZCwgdWludDY0X3Qgc3RhcnRfb3JfZW5kKSB7CisrICBzdHJ1 Y3QgZG1hX2J1Zl9zeW5jIHN5bmMgPSB7MH07CisrCisrICBzeW5jLmZsYWdzID0gc3RhcnRfb3Jf ZW5kIHwgRE1BX0JVRl9TWU5DX1JFQUQ7CisrCisrICB3aGlsZSAodHJ1ZSkgeworKyAgICBpbnQg cmV0OworKyAgICByZXQgPSBpb2N0bChmZCwgRE1BX0JVRl9JT0NUTF9TWU5DLCAmc3luYyk7Cisr ICAgIGlmIChyZXQgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpIHsKKysgICAgICBjb250aW51ZTsK KysgICAgfSBlbHNlIGlmIChyZXQgPT0gLTEpIHsKKysgICAgICBSVENfTE9HKExTX0VSUk9SKSA8 PCAiRmFpbGVkIHRvIHN5bmNocm9uaXplIERNQSBidWZmZXI6ICIKKysgICAgICAgICAgICAgICAg ICAgICAgICA8PCBnX3N0cmVycm9yKGVycm5vKTsKKysgICAgICBicmVhazsKKysgICAgfSBlbHNl IHsKKysgICAgICBicmVhazsKKysgICAgfQorKyAgfQorK30KKysKKytjbGFzcyBTY29wZWRCdWYg eworKyBwdWJsaWM6CisrICBTY29wZWRCdWYoKSB7fQorKyAgU2NvcGVkQnVmKHVuc2lnbmVkIGNo YXIqIG1hcCwgaW50IG1hcF9zaXplLCBib29sIGlzX2RtYV9idWYsIGludCBmZCkKKysgICAgICA6 IG1hcF8obWFwKSwgbWFwX3NpemVfKG1hcF9zaXplKSwgaXNfZG1hX2J1Zl8oaXNfZG1hX2J1Ziks IGZkXyhmZCkge30KKysgIH5TY29wZWRCdWYoKSB7CisrICAgIGlmIChtYXBfICE9IE1BUF9GQUlM RUQpIHsKKysgICAgICBpZiAoaXNfZG1hX2J1Zl8pIHsKKysgICAgICAgIFN5bmNEbWFCdWYoZmRf LCBETUFfQlVGX1NZTkNfRU5EKTsKKysgICAgICB9CisrICAgICAgbXVubWFwKG1hcF8sIG1hcF9z aXplXyk7CisrICAgIH0KKysgIH0KKysKKysgIG9wZXJhdG9yIGJvb2woKSB7IHJldHVybiBtYXBf ICE9IE1BUF9GQUlMRUQ7IH0KKysKKysgIHZvaWQgaW5pdGlhbGl6ZSh1bnNpZ25lZCBjaGFyKiBt YXAsIGludCBtYXBfc2l6ZSwgYm9vbCBpc19kbWFfYnVmLCBpbnQgZmQpIHsKKysgICAgbWFwXyA9 IG1hcDsKKysgICAgbWFwX3NpemVfID0gbWFwX3NpemU7CisrICAgIGlzX2RtYV9idWZfID0gaXNf ZG1hX2J1ZjsKKysgICAgZmRfID0gZmQ7CisrICB9CisrCisrICB1bnNpZ25lZCBjaGFyKiBnZXQo KSB7IHJldHVybiBtYXBfOyB9CisrCisrIHByb3RlY3RlZDoKKysgIHVuc2lnbmVkIGNoYXIqIG1h cF8gPSBudWxscHRyOworKyAgaW50IG1hcF9zaXplXzsKKysgIGJvb2wgaXNfZG1hX2J1Zl87Cisr ICBpbnQgZmRfOworK307CisrCisrdGVtcGxhdGUgPGNsYXNzIFQ+CisrY2xhc3MgU2NvcGVkIHsK KysgcHVibGljOgorKyAgU2NvcGVkKCkge30KKysgIGV4cGxpY2l0IFNjb3BlZChUKiB2YWwpIHsg cHRyXyA9IHZhbDsgfQorKyAgflNjb3BlZCgpIHsgUlRDX05PVFJFQUNIRUQoKTsgfQorKworKyAg VCogb3BlcmF0b3ItPigpIHsgcmV0dXJuIHB0cl87IH0KKysKKysgIGJvb2wgb3BlcmF0b3IhKCkg eyByZXR1cm4gcHRyXyA9PSBudWxscHRyOyB9CisrCisrICBUKiBnZXQoKSB7IHJldHVybiBwdHJf OyB9CisrCisrICBUKiogcmVjZWl2ZSgpIHsKKysgICAgUlRDX0NIRUNLKCFwdHJfKTsKKysgICAg cmV0dXJuICZwdHJfOworKyAgfQorKworKyAgU2NvcGVkJiBvcGVyYXRvcj0oVCogdmFsKSB7Cisr ICAgIHB0cl8gPSB2YWw7CisrICAgIHJldHVybiAqdGhpczsKKysgIH0KKysKKysgcHJvdGVjdGVk OgorKyAgVCogcHRyXyA9IG51bGxwdHI7CisrfTsKKysKKyt0ZW1wbGF0ZSA8PgorK1Njb3BlZDxH RXJyb3I+Ojp+U2NvcGVkKCkgeworKyAgaWYgKHB0cl8pIHsKKysgICAgZ19lcnJvcl9mcmVlKHB0 cl8pOworKyAgfQorK30KKysKKyt0ZW1wbGF0ZSA8PgorK1Njb3BlZDxnY2hhcj46On5TY29wZWQo KSB7CisrICBpZiAocHRyXykgeworKyAgICBnX2ZyZWUocHRyXyk7CisrICB9CisrfQorKworK3Rl bXBsYXRlIDw+CisrU2NvcGVkPEdWYXJpYW50Pjo6flNjb3BlZCgpIHsKKysgIGlmIChwdHJfKSB7 CisrICAgIGdfdmFyaWFudF91bnJlZihwdHJfKTsKKysgIH0KKyt9CisrCisrdGVtcGxhdGUgPD4K KytTY29wZWQ8R1ZhcmlhbnRJdGVyPjo6flNjb3BlZCgpIHsKKysgIGlmIChwdHJfKSB7CisrICAg IGdfdmFyaWFudF9pdGVyX2ZyZWUocHRyXyk7CisrICB9CisrfQorKworK3RlbXBsYXRlIDw+Cisr U2NvcGVkPEdEQnVzTWVzc2FnZT46On5TY29wZWQoKSB7CisrICBpZiAocHRyXykgeworKyAgICBn X29iamVjdF91bnJlZihwdHJfKTsKKysgIH0KKyt9CisrCisrdGVtcGxhdGUgPD4KKytTY29wZWQ8 R1VuaXhGRExpc3Q+Ojp+U2NvcGVkKCkgeworKyAgaWYgKHB0cl8pIHsKKysgICAgZ19vYmplY3Rf dW5yZWYocHRyXyk7CisrICB9CisrfQorKworKyNpZiBQV19DSEVDS19WRVJTSU9OKDAsIDMsIDAp Cisrdm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25Db3JlRXJyb3Iodm9pZCogZGF0YSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBpZCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2VxLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXMsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogbWVzc2FnZSkgeworKyAgQmFzZUNhcHR1 cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2lyZSo+KGRh dGEpOworKyAgUlRDX0RDSEVDSyh0aGF0KTsKKysKKysgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQ aXBlV2lyZSByZW1vdGUgZXJyb3I6ICIgPDwgbWVzc2FnZTsKKyt9CisrI2Vsc2UKKyAvLyBzdGF0 aWMKKyB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0YXRlQ2hhbmdlZCh2b2lkKiBkYXRh LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3JlbW90ZV9z dGF0ZSBvbGRfc3RhdGUsCitAQCAtNjQsNyArMjIxLDcgQEAgdm9pZCBCYXNlQ2FwdHVyZXJQaXBl V2lyZTo6T25TdGF0ZUNoYW5nZWQodm9pZCogZGF0YSwKKyAgICAgICBicmVhazsKKyAgICAgY2Fz ZSBQV19SRU1PVEVfU1RBVEVfQ09OTkVDVEVEOgorICAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwg IlBpcGVXaXJlIHJlbW90ZSBzdGF0ZTogY29ubmVjdGVkLiI7CistICAgICAgdGhhdC0+Q3JlYXRl UmVjZWl2aW5nU3RyZWFtKCk7CisrICAgICAgdGhhdC0+cHdfc3RyZWFtXyA9IHRoYXQtPkNyZWF0 ZVJlY2VpdmluZ1N0cmVhbSgpOworICAgICAgIGJyZWFrOworICAgICBjYXNlIFBXX1JFTU9URV9T VEFURV9DT05ORUNUSU5HOgorICAgICAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlBpcGVXaXJlIHJl bW90ZSBzdGF0ZTogY29ubmVjdGluZy4iOworQEAgLTc0LDYgKzIzMSw3IEBAIHZvaWQgQmFzZUNh cHR1cmVyUGlwZVdpcmU6Ok9uU3RhdGVDaGFuZ2VkKHZvaWQqIGRhdGEsCisgICAgICAgYnJlYWs7 CisgICB9CisgfQorKyNlbmRpZgorIAorIC8vIHN0YXRpYworIHZvaWQgQmFzZUNhcHR1cmVyUGlw ZVdpcmU6Ok9uU3RyZWFtU3RhdGVDaGFuZ2VkKHZvaWQqIGRhdGEsCitAQCAtODMsNiArMjQxLDE4 IEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RyZWFtU3RhdGVDaGFuZ2VkKHZvaWQq IGRhdGEsCisgICBCYXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VD YXB0dXJlclBpcGVXaXJlKj4oZGF0YSk7CisgICBSVENfRENIRUNLKHRoYXQpOworIAorKyNpZiBQ V19DSEVDS19WRVJTSU9OKDAsIDMsIDApCisrICBzd2l0Y2ggKHN0YXRlKSB7CisrICAgIGNhc2Ug UFdfU1RSRUFNX1NUQVRFX0VSUk9SOgorKyAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQaXBl V2lyZSBzdHJlYW0gc3RhdGUgZXJyb3I6ICIgPDwgZXJyb3JfbWVzc2FnZTsKKysgICAgICBicmVh azsKKysgICAgY2FzZSBQV19TVFJFQU1fU1RBVEVfUEFVU0VEOgorKyAgICBjYXNlIFBXX1NUUkVB TV9TVEFURV9TVFJFQU1JTkc6CisrICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX1VOQ09OTkVDVEVE OgorKyAgICBjYXNlIFBXX1NUUkVBTV9TVEFURV9DT05ORUNUSU5HOgorKyAgICAgIGJyZWFrOwor KyAgfQorKyNlbHNlCisgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgIGNhc2UgUFdfU1RSRUFNX1NU QVRFX0VSUk9SOgorICAgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJQaXBlV2lyZSBzdHJlYW0g c3RhdGUgZXJyb3I6ICIgPDwgZXJyb3JfbWVzc2FnZTsKK0BAIC05NywzNiArMjY3LDc0IEBAIHZv aWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RyZWFtU3RhdGVDaGFuZ2VkKHZvaWQqIGRhdGEs CisgICAgIGNhc2UgUFdfU1RSRUFNX1NUQVRFX1NUUkVBTUlORzoKKyAgICAgICBicmVhazsKKyAg IH0KKysjZW5kaWYKKyB9CisgCisgLy8gc3RhdGljCisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwg MywgMCkKKyt2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0cmVhbVBhcmFtQ2hhbmdlZCh2 b2lkKiBkYXRhLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHVpbnQzMl90IGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IHN0cnVjdCBzcGFfcG9kKiBmb3JtYXQpIHsKKysjZWxzZQorIHZvaWQg QmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RyZWFtRm9ybWF0Q2hhbmdlZCh2b2lkKiBkYXRhLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBz dHJ1Y3Qgc3BhX3BvZCogZm9ybWF0KSB7CisrI2VuZGlmCisgICBCYXNlQ2FwdHVyZXJQaXBlV2ly ZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlKj4oZGF0YSk7CisgICBS VENfRENIRUNLKHRoYXQpOworIAorICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiUGlwZVdpcmUgc3Ry ZWFtIGZvcm1hdCBjaGFuZ2VkLiI7CisgCisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwgMywgMCkK KysgIGlmICghZm9ybWF0IHx8IGlkICE9IFNQQV9QQVJBTV9Gb3JtYXQpIHsKKysjZWxzZQorICAg aWYgKCFmb3JtYXQpIHsKKyAgICAgcHdfc3RyZWFtX2ZpbmlzaF9mb3JtYXQodGhhdC0+cHdfc3Ry ZWFtXywgLypyZXM9Ki8wLCAvKnBhcmFtcz0qL251bGxwdHIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC8qbl9wYXJhbXM9Ki8wKTsKKysjZW5kaWYKKyAgICAgcmV0dXJuOworICAgfQor IAorKyNpZiBQV19DSEVDS19WRVJTSU9OKDAsIDMsIDApCisrICBzcGFfZm9ybWF0X3ZpZGVvX3Jh d19wYXJzZShmb3JtYXQsICZ0aGF0LT5zcGFfdmlkZW9fZm9ybWF0Xyk7CisrI2Vsc2UKKyAgIHRo YXQtPnNwYV92aWRlb19mb3JtYXRfID0gbmV3IHNwYV92aWRlb19pbmZvX3JhdygpOworICAgc3Bh X2Zvcm1hdF92aWRlb19yYXdfcGFyc2UoZm9ybWF0LCB0aGF0LT5zcGFfdmlkZW9fZm9ybWF0XywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0aGF0LT5wd190eXBlXy0+Zm9ybWF0X3Zp ZGVvKTsKKysjZW5kaWYKKyAKKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigwLCAzLCAwKQorKyAgYXV0 byB3aWR0aCA9IHRoYXQtPnNwYV92aWRlb19mb3JtYXRfLnNpemUud2lkdGg7CisrICBhdXRvIGhl aWdodCA9IHRoYXQtPnNwYV92aWRlb19mb3JtYXRfLnNpemUuaGVpZ2h0OworKyNlbHNlCisgICBh dXRvIHdpZHRoID0gdGhhdC0+c3BhX3ZpZGVvX2Zvcm1hdF8tPnNpemUud2lkdGg7CisgICBhdXRv IGhlaWdodCA9IHRoYXQtPnNwYV92aWRlb19mb3JtYXRfLT5zaXplLmhlaWdodDsKKysjZW5kaWYK KyAgIGF1dG8gc3RyaWRlID0gU1BBX1JPVU5EX1VQX04od2lkdGggKiBrQnl0ZXNQZXJQaXhlbCwg NCk7CisgICBhdXRvIHNpemUgPSBoZWlnaHQgKiBzdHJpZGU7CisgCisrICB0aGF0LT5kZXNrdG9w X3NpemVfID0gRGVza3RvcFNpemUod2lkdGgsIGhlaWdodCk7CisrCisgICB1aW50OF90IGJ1ZmZl clsxMDI0XSA9IHt9OworICAgYXV0byBidWlsZGVyID0gc3BhX3BvZF9idWlsZGVye2J1ZmZlciwg c2l6ZW9mKGJ1ZmZlcil9OworIAorICAgLy8gU2V0dXAgYnVmZmVycyBhbmQgbWV0YSBoZWFkZXIg Zm9yIG5ldyBmb3JtYXQuCistICBjb25zdCBzdHJ1Y3Qgc3BhX3BvZCogcGFyYW1zWzJdOworKyAg Y29uc3Qgc3RydWN0IHNwYV9wb2QqIHBhcmFtc1szXTsKKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigw LCAzLCAwKQorKyAgcGFyYW1zWzBdID0gcmVpbnRlcnByZXRfY2FzdDxzcGFfcG9kKj4oc3BhX3Bv ZF9idWlsZGVyX2FkZF9vYmplY3QoCisrICAgICAgJmJ1aWxkZXIsIFNQQV9UWVBFX09CSkVDVF9Q YXJhbUJ1ZmZlcnMsIFNQQV9QQVJBTV9CdWZmZXJzLAorKyAgICAgIFNQQV9QQVJBTV9CVUZGRVJT X3NpemUsIFNQQV9QT0RfSW50KHNpemUpLCBTUEFfUEFSQU1fQlVGRkVSU19zdHJpZGUsCisrICAg ICAgU1BBX1BPRF9JbnQoc3RyaWRlKSwgU1BBX1BBUkFNX0JVRkZFUlNfYnVmZmVycywKKysgICAg ICBTUEFfUE9EX0NIT0lDRV9SQU5HRV9JbnQoOCwgMSwgMzIpKSk7CisrICBwYXJhbXNbMV0gPSBy ZWludGVycHJldF9jYXN0PHNwYV9wb2QqPihzcGFfcG9kX2J1aWxkZXJfYWRkX29iamVjdCgKKysg ICAgICAmYnVpbGRlciwgU1BBX1RZUEVfT0JKRUNUX1BhcmFtTWV0YSwgU1BBX1BBUkFNX01ldGEs IFNQQV9QQVJBTV9NRVRBX3R5cGUsCisrICAgICAgU1BBX1BPRF9JZChTUEFfTUVUQV9IZWFkZXIp LCBTUEFfUEFSQU1fTUVUQV9zaXplLAorKyAgICAgIFNQQV9QT0RfSW50KHNpemVvZihzdHJ1Y3Qg c3BhX21ldGFfaGVhZGVyKSkpKTsKKysgIHBhcmFtc1syXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8c3Bh X3BvZCo+KHNwYV9wb2RfYnVpbGRlcl9hZGRfb2JqZWN0KAorKyAgICAgICZidWlsZGVyLCBTUEFf VFlQRV9PQkpFQ1RfUGFyYW1NZXRhLCBTUEFfUEFSQU1fTWV0YSwgU1BBX1BBUkFNX01FVEFfdHlw ZSwKKysgICAgICBTUEFfUE9EX0lkKFNQQV9NRVRBX1ZpZGVvQ3JvcCksIFNQQV9QQVJBTV9NRVRB X3NpemUsCisrICAgICAgU1BBX1BPRF9JbnQoc2l6ZW9mKHN0cnVjdCBzcGFfbWV0YV9yZWdpb24p KSkpOworKyAgcHdfc3RyZWFtX3VwZGF0ZV9wYXJhbXModGhhdC0+cHdfc3RyZWFtXywgcGFyYW1z LCAzKTsKKysjZWxzZQorICAgcGFyYW1zWzBdID0gcmVpbnRlcnByZXRfY2FzdDxzcGFfcG9kKj4o c3BhX3BvZF9idWlsZGVyX29iamVjdCgKKyAgICAgICAmYnVpbGRlciwKKyAgICAgICAvLyBpZCB0 byBlbnVtZXJhdGUgYnVmZmVyIHJlcXVpcmVtZW50cworQEAgLTE1NSw4ICszNjMsMTggQEAgdm9p ZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25TdHJlYW1Gb3JtYXRDaGFuZ2VkKHZvaWQqIGRhdGEs CisgICAgICAgLy8gU2l6ZTogc2l6ZSBvZiB0aGUgbWV0YWRhdGEsIHNwZWNpZmllZCBhcyBpbnRl Z2VyIChpKQorICAgICAgICI6IiwgdGhhdC0+cHdfY29yZV90eXBlXy0+cGFyYW1fbWV0YS5zaXpl LCAiaSIsCisgICAgICAgc2l6ZW9mKHN0cnVjdCBzcGFfbWV0YV9oZWFkZXIpKSk7CistCistICBw d19zdHJlYW1fZmluaXNoX2Zvcm1hdCh0aGF0LT5wd19zdHJlYW1fLCAvKnJlcz0qLzAsIHBhcmFt cywgLypuX3BhcmFtcz0qLzIpOworKyAgcGFyYW1zWzJdID0gcmVpbnRlcnByZXRfY2FzdDxzcGFf cG9kKj4oc3BhX3BvZF9idWlsZGVyX29iamVjdCgKKysgICAgICAmYnVpbGRlciwKKysgICAgICAv LyBpZCB0byBlbnVtZXJhdGUgc3VwcG9ydGVkIG1ldGFkYXRhCisrICAgICAgdGhhdC0+cHdfY29y ZV90eXBlXy0+cGFyYW0uaWRNZXRhLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRhLk1l dGEsCisrICAgICAgLy8gVHlwZTogc3BlY2lmaWVkIGFzIGlkIG9yIGVudW0gKEkpCisrICAgICAg IjoiLCB0aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRhLnR5cGUsICJJIiwKKysgICAgICB0 aGF0LT5wd19jb3JlX3R5cGVfLT5tZXRhLlZpZGVvQ3JvcCwKKysgICAgICAvLyBTaXplOiBzaXpl IG9mIHRoZSBtZXRhZGF0YSwgc3BlY2lmaWVkIGFzIGludGVnZXIgKGkpCisrICAgICAgIjoiLCB0 aGF0LT5wd19jb3JlX3R5cGVfLT5wYXJhbV9tZXRhLnNpemUsICJpIiwKKysgICAgICBzaXplb2Yo c3RydWN0IHNwYV9tZXRhX3ZpZGVvX2Nyb3ApKSk7CisrICBwd19zdHJlYW1fZmluaXNoX2Zvcm1h dCh0aGF0LT5wd19zdHJlYW1fLCAvKnJlcz0qLzAsIHBhcmFtcywgLypuX3BhcmFtcz0qLzMpOwor KyNlbmRpZgorIH0KKyAKKyAvLyBzdGF0aWMKK0BAIC0xNjQsMTUgKzM4MiwyNiBAQCB2b2lkIEJh c2VDYXB0dXJlclBpcGVXaXJlOjpPblN0cmVhbVByb2Nlc3Modm9pZCogZGF0YSkgeworICAgQmFz ZUNhcHR1cmVyUGlwZVdpcmUqIHRoYXQgPSBzdGF0aWNfY2FzdDxCYXNlQ2FwdHVyZXJQaXBlV2ly ZSo+KGRhdGEpOworICAgUlRDX0RDSEVDSyh0aGF0KTsKKyAKKy0gIHB3X2J1ZmZlciogYnVmID0g bnVsbHB0cjsKKysgIHN0cnVjdCBwd19idWZmZXIqIG5leHRfYnVmZmVyOworKyAgc3RydWN0IHB3 X2J1ZmZlciogYnVmZmVyID0gbnVsbHB0cjsKKysKKysgIG5leHRfYnVmZmVyID0gcHdfc3RyZWFt X2RlcXVldWVfYnVmZmVyKHRoYXQtPnB3X3N0cmVhbV8pOworKyAgd2hpbGUgKG5leHRfYnVmZmVy KSB7CisrICAgIGJ1ZmZlciA9IG5leHRfYnVmZmVyOworKyAgICBuZXh0X2J1ZmZlciA9IHB3X3N0 cmVhbV9kZXF1ZXVlX2J1ZmZlcih0aGF0LT5wd19zdHJlYW1fKTsKKyAKKy0gIGlmICghKGJ1ZiA9 IHB3X3N0cmVhbV9kZXF1ZXVlX2J1ZmZlcih0aGF0LT5wd19zdHJlYW1fKSkpIHsKKysgICAgaWYg KG5leHRfYnVmZmVyKSB7CisrICAgICAgcHdfc3RyZWFtX3F1ZXVlX2J1ZmZlcih0aGF0LT5wd19z dHJlYW1fLCBidWZmZXIpOworKyAgICB9CisrICB9CisrCisrICBpZiAoIWJ1ZmZlcikgeworICAg ICByZXR1cm47CisgICB9CisgCistICB0aGF0LT5IYW5kbGVCdWZmZXIoYnVmKTsKKysgIHRoYXQt PkhhbmRsZUJ1ZmZlcihidWZmZXIpOworIAorLSAgcHdfc3RyZWFtX3F1ZXVlX2J1ZmZlcih0aGF0 LT5wd19zdHJlYW1fLCBidWYpOworKyAgcHdfc3RyZWFtX3F1ZXVlX2J1ZmZlcih0aGF0LT5wd19z dHJlYW1fLCBidWZmZXIpOworIH0KKyAKKyBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6QmFzZUNhcHR1 cmVyUGlwZVdpcmUoQ2FwdHVyZVNvdXJjZVR5cGUgc291cmNlX3R5cGUpCitAQCAtMTgzLDYgKzQx Miw3IEBAIEJhc2VDYXB0dXJlclBpcGVXaXJlOjp+QmFzZUNhcHR1cmVyUGlwZVdpcmUoKSB7Cisg ICAgIHB3X3RocmVhZF9sb29wX3N0b3AocHdfbWFpbl9sb29wXyk7CisgICB9CisgCisrI2lmICFQ V19DSEVDS19WRVJTSU9OKDAsIDMsIDApCisgICBpZiAocHdfdHlwZV8pIHsKKyAgICAgZGVsZXRl IHB3X3R5cGVfOworICAgfQorQEAgLTE5MCwzMCArNDIwLDQxIEBAIEJhc2VDYXB0dXJlclBpcGVX aXJlOjp+QmFzZUNhcHR1cmVyUGlwZVdpcmUoKSB7CisgICBpZiAoc3BhX3ZpZGVvX2Zvcm1hdF8p IHsKKyAgICAgZGVsZXRlIHNwYV92aWRlb19mb3JtYXRfOworICAgfQorKyNlbmRpZgorIAorICAg aWYgKHB3X3N0cmVhbV8pIHsKKyAgICAgcHdfc3RyZWFtX2Rlc3Ryb3kocHdfc3RyZWFtXyk7Cisg ICB9CisgCisrI2lmICFQV19DSEVDS19WRVJTSU9OKDAsIDMsIDApCisgICBpZiAocHdfcmVtb3Rl XykgeworICAgICBwd19yZW1vdGVfZGVzdHJveShwd19yZW1vdGVfKTsKKyAgIH0KKysjZW5kaWYK KyAKKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigwLCAzLCAwKQorKyAgaWYgKHB3X2NvcmVfKSB7Cisr ICAgIHB3X2NvcmVfZGlzY29ubmVjdChwd19jb3JlXyk7CisrICB9CisrCisrICBpZiAocHdfY29u dGV4dF8pIHsKKysgICAgcHdfY29udGV4dF9kZXN0cm95KHB3X2NvbnRleHRfKTsKKysgIH0KKysj ZWxzZQorICAgaWYgKHB3X2NvcmVfKSB7CisgICAgIHB3X2NvcmVfZGVzdHJveShwd19jb3JlXyk7 CisgICB9CisrI2VuZGlmCisgCisgICBpZiAocHdfbWFpbl9sb29wXykgeworICAgICBwd190aHJl YWRfbG9vcF9kZXN0cm95KHB3X21haW5fbG9vcF8pOworICAgfQorIAorKyNpZiAhUFdfQ0hFQ0tf VkVSU0lPTigwLCAzLCAwKQorICAgaWYgKHB3X2xvb3BfKSB7CisgICAgIHB3X2xvb3BfZGVzdHJv eShwd19sb29wXyk7CisgICB9CistCistICBpZiAoY3VycmVudF9mcmFtZV8pIHsKKy0gICAgZnJl ZShjdXJyZW50X2ZyYW1lXyk7CistICB9CisrI2VuZGlmCisgCisgICBpZiAoc3RhcnRfcmVxdWVz dF9zaWduYWxfaWRfKSB7CisgICAgIGdfZGJ1c19jb25uZWN0aW9uX3NpZ25hbF91bnN1YnNjcmli ZShjb25uZWN0aW9uXywgc3RhcnRfcmVxdWVzdF9zaWduYWxfaWRfKTsKK0BAIC0yMjgsMTggKzQ2 OSwxNiBAQCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6fkJhc2VDYXB0dXJlclBpcGVXaXJlKCkgewor ICAgfQorIAorICAgaWYgKHNlc3Npb25faGFuZGxlXykgeworLSAgICBHREJ1c01lc3NhZ2UqIG1l c3NhZ2UgPSBnX2RidXNfbWVzc2FnZV9uZXdfbWV0aG9kX2NhbGwoCistICAgICAgICBrRGVza3Rv cEJ1c05hbWUsIHNlc3Npb25faGFuZGxlXywga1Nlc3Npb25JbnRlcmZhY2VOYW1lLCAiQ2xvc2Ui KTsKKy0gICAgaWYgKG1lc3NhZ2UpIHsKKy0gICAgICBHRXJyb3IqIGVycm9yID0gbnVsbHB0cjsK Ky0gICAgICBnX2RidXNfY29ubmVjdGlvbl9zZW5kX21lc3NhZ2UoY29ubmVjdGlvbl8sIG1lc3Nh Z2UsCisrICAgIFNjb3BlZDxHREJ1c01lc3NhZ2U+IG1lc3NhZ2UoZ19kYnVzX21lc3NhZ2VfbmV3 X21ldGhvZF9jYWxsKAorKyAgICAgICAga0Rlc2t0b3BCdXNOYW1lLCBzZXNzaW9uX2hhbmRsZV8s IGtTZXNzaW9uSW50ZXJmYWNlTmFtZSwgIkNsb3NlIikpOworKyAgICBpZiAobWVzc2FnZS5nZXQo KSkgeworKyAgICAgIFNjb3BlZDxHRXJyb3I+IGVycm9yOworKyAgICAgIGdfZGJ1c19jb25uZWN0 aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uXywgbWVzc2FnZS5nZXQoKSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR19EQlVTX1NFTkRfTUVTU0FHRV9GTEFHU19OT05F LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKm91dF9zZXJpYWw9Ki9u dWxscHRyLCAmZXJyb3IpOworLSAgICAgIGlmIChlcnJvcikgeworKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKm91dF9zZXJpYWw9Ki9udWxscHRyLCBlcnJvci5yZWNlaXZl KCkpOworKyAgICAgIGlmIChlcnJvci5nZXQoKSkgeworICAgICAgICAgUlRDX0xPRyhMU19FUlJP UikgPDwgIkZhaWxlZCB0byBjbG9zZSB0aGUgc2Vzc2lvbjogIiA8PCBlcnJvci0+bWVzc2FnZTsK Ky0gICAgICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgICAgfQorLSAgICAgIGdfb2JqZWN0 X3VucmVmKG1lc3NhZ2UpOworICAgICB9CisgICB9CisgCitAQCAtMjc0LDcgKzUxMywxMSBAQCB2 b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpJbml0UGlwZVdpcmUoKSB7CisgICBTdHViUGF0aE1h cCBwYXRoczsKKyAKKyAgIC8vIENoZWNrIGlmIHRoZSBQaXBlV2lyZSBsaWJyYXJ5IGlzIGF2YWls YWJsZS4KKy0gIHBhdGhzW2tNb2R1bGVQaXBld2lyZV0ucHVzaF9iYWNrKGtQaXBlV2lyZUxpYik7 CisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwgMywgMCkKKysgIHBhdGhzW2tNb2R1bGVQaXBld2ly ZTAzXS5wdXNoX2JhY2soa1BpcGVXaXJlTGliKTsKKysjZWxzZQorKyAgcGF0aHNba01vZHVsZVBp cGV3aXJlMDJdLnB1c2hfYmFjayhrUGlwZVdpcmVMaWIpOworKyNlbmRpZgorICAgaWYgKCFJbml0 aWFsaXplU3R1YnMocGF0aHMpKSB7CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQg dG8gbG9hZCB0aGUgUGlwZVdpcmUgbGlicmFyeSBhbmQgc3ltYm9scy4iOworICAgICBwb3J0YWxf aW5pdF9mYWlsZWRfID0gdHJ1ZTsKK0BAIC0yODQsMTYgKzUyNyw0NiBAQCB2b2lkIEJhc2VDYXB0 dXJlclBpcGVXaXJlOjpJbml0UGlwZVdpcmUoKSB7CisgCisgICBwd19pbml0KC8qYXJnYz0qL251 bGxwdHIsIC8qYXJnYz0qL251bGxwdHIpOworIAorKyNpZiBQV19DSEVDS19WRVJTSU9OKDAsIDMs IDApCisrICBwd19tYWluX2xvb3BfID0gcHdfdGhyZWFkX2xvb3BfbmV3KCJwaXBld2lyZS1tYWlu LWxvb3AiLCBudWxscHRyKTsKKysKKysgIHB3X3RocmVhZF9sb29wX2xvY2socHdfbWFpbl9sb29w Xyk7CisrCisrICBwd19jb250ZXh0XyA9CisrICAgICAgcHdfY29udGV4dF9uZXcocHdfdGhyZWFk X2xvb3BfZ2V0X2xvb3AocHdfbWFpbl9sb29wXyksIG51bGxwdHIsIDApOworKyAgaWYgKCFwd19j b250ZXh0XykgeworKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBQ aXBlV2lyZSBjb250ZXh0IjsKKysgICAgcmV0dXJuOworKyAgfQorKworKyAgcHdfY29yZV8gPSBw d19jb250ZXh0X2Nvbm5lY3QocHdfY29udGV4dF8sIG51bGxwdHIsIDApOworKyAgaWYgKCFwd19j b3JlXykgeworKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNvbm5lY3QgUGlw ZVdpcmUgY29udGV4dCI7CisrICAgIHJldHVybjsKKysgIH0KKysjZWxzZQorICAgcHdfbG9vcF8g PSBwd19sb29wX25ldygvKnByb3BlcnRpZXM9Ki9udWxscHRyKTsKKyAgIHB3X21haW5fbG9vcF8g PSBwd190aHJlYWRfbG9vcF9uZXcocHdfbG9vcF8sICJwaXBld2lyZS1tYWluLWxvb3AiKTsKKyAK KysgIHB3X3RocmVhZF9sb29wX2xvY2socHdfbWFpbl9sb29wXyk7CisrCisgICBwd19jb3JlXyA9 IHB3X2NvcmVfbmV3KHB3X2xvb3BfLCAvKnByb3BlcnRpZXM9Ki9udWxscHRyKTsKKyAgIHB3X2Nv cmVfdHlwZV8gPSBwd19jb3JlX2dldF90eXBlKHB3X2NvcmVfKTsKKyAgIHB3X3JlbW90ZV8gPSBw d19yZW1vdGVfbmV3KHB3X2NvcmVfLCBudWxscHRyLCAvKnVzZXJfZGF0YV9zaXplPSovMCk7Cisg CisgICBJbml0UGlwZVdpcmVUeXBlcygpOworKyNlbmRpZgorIAorICAgLy8gSW5pdGlhbGl6ZSBl dmVudCBoYW5kbGVycywgcmVtb3RlIGVuZCBhbmQgc3RyZWFtLXJlbGF0ZWQuCisrI2lmIFBXX0NI RUNLX1ZFUlNJT04oMCwgMywgMCkKKysgIHB3X2NvcmVfZXZlbnRzXy52ZXJzaW9uID0gUFdfVkVS U0lPTl9DT1JFX0VWRU5UUzsKKysgIHB3X2NvcmVfZXZlbnRzXy5lcnJvciA9ICZPbkNvcmVFcnJv cjsKKysKKysgIHB3X3N0cmVhbV9ldmVudHNfLnZlcnNpb24gPSBQV19WRVJTSU9OX1NUUkVBTV9F VkVOVFM7CisrICBwd19zdHJlYW1fZXZlbnRzXy5zdGF0ZV9jaGFuZ2VkID0gJk9uU3RyZWFtU3Rh dGVDaGFuZ2VkOworKyAgcHdfc3RyZWFtX2V2ZW50c18ucGFyYW1fY2hhbmdlZCA9ICZPblN0cmVh bVBhcmFtQ2hhbmdlZDsKKysgIHB3X3N0cmVhbV9ldmVudHNfLnByb2Nlc3MgPSAmT25TdHJlYW1Q cm9jZXNzOworKyNlbHNlCisgICBwd19yZW1vdGVfZXZlbnRzXy52ZXJzaW9uID0gUFdfVkVSU0lP Tl9SRU1PVEVfRVZFTlRTOworICAgcHdfcmVtb3RlX2V2ZW50c18uc3RhdGVfY2hhbmdlZCA9ICZP blN0YXRlQ2hhbmdlZDsKKyAKK0BAIC0zMDEsMTkgKzU3NCwzMyBAQCB2b2lkIEJhc2VDYXB0dXJl clBpcGVXaXJlOjpJbml0UGlwZVdpcmUoKSB7CisgICBwd19zdHJlYW1fZXZlbnRzXy5zdGF0ZV9j aGFuZ2VkID0gJk9uU3RyZWFtU3RhdGVDaGFuZ2VkOworICAgcHdfc3RyZWFtX2V2ZW50c18uZm9y bWF0X2NoYW5nZWQgPSAmT25TdHJlYW1Gb3JtYXRDaGFuZ2VkOworICAgcHdfc3RyZWFtX2V2ZW50 c18ucHJvY2VzcyA9ICZPblN0cmVhbVByb2Nlc3M7CisrI2VuZGlmCisgCisrI2lmIFBXX0NIRUNL X1ZFUlNJT04oMCwgMywgMCkKKysgIHB3X2NvcmVfYWRkX2xpc3RlbmVyKHB3X2NvcmVfLCAmc3Bh X2NvcmVfbGlzdGVuZXJfLCAmcHdfY29yZV9ldmVudHNfLCB0aGlzKTsKKysKKysgIHB3X3N0cmVh bV8gPSBDcmVhdGVSZWNlaXZpbmdTdHJlYW0oKTsKKysgIGlmICghcHdfc3RyZWFtXykgeworKyAg ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSBQaXBlV2lyZSBzdHJlYW0i OworKyAgICByZXR1cm47CisrICB9CisrI2Vsc2UKKyAgIHB3X3JlbW90ZV9hZGRfbGlzdGVuZXIo cHdfcmVtb3RlXywgJnNwYV9yZW1vdGVfbGlzdGVuZXJfLCAmcHdfcmVtb3RlX2V2ZW50c18sCisg ICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMpOworICAgcHdfcmVtb3RlX2Nvbm5lY3RfZmQo cHdfcmVtb3RlXywgcHdfZmRfKTsKKysjZW5kaWYKKyAKKyAgIGlmIChwd190aHJlYWRfbG9vcF9z dGFydChwd19tYWluX2xvb3BfKSA8IDApIHsKKyAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZh aWxlZCB0byBzdGFydCBtYWluIFBpcGVXaXJlIGxvb3AiOworICAgICBwb3J0YWxfaW5pdF9mYWls ZWRfID0gdHJ1ZTsKKyAgIH0KKyAKKysgIHB3X3RocmVhZF9sb29wX3VubG9jayhwd19tYWluX2xv b3BfKTsKKysKKyAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlBpcGVXaXJlIHJlbW90ZSBvcGVuZWQu IjsKKyB9CisgCisrI2lmICFQV19DSEVDS19WRVJTSU9OKDAsIDMsIDApCisgdm9pZCBCYXNlQ2Fw dHVyZXJQaXBlV2lyZTo6SW5pdFBpcGVXaXJlVHlwZXMoKSB7CisgICBzcGFfdHlwZV9tYXAqIG1h cCA9IHB3X2NvcmVfdHlwZV8tPm1hcDsKKyAgIHB3X3R5cGVfID0gbmV3IFBpcGVXaXJlVHlwZSgp OworQEAgLTMyMywyMyArNjEwLDQ0IEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkluaXRQ aXBlV2lyZVR5cGVzKCkgeworICAgc3BhX3R5cGVfZm9ybWF0X3ZpZGVvX21hcChtYXAsICZwd190 eXBlXy0+Zm9ybWF0X3ZpZGVvKTsKKyAgIHNwYV90eXBlX3ZpZGVvX2Zvcm1hdF9tYXAobWFwLCAm cHdfdHlwZV8tPnZpZGVvX2Zvcm1hdCk7CisgfQorKyNlbmRpZgorIAorLXZvaWQgQmFzZUNhcHR1 cmVyUGlwZVdpcmU6OkNyZWF0ZVJlY2VpdmluZ1N0cmVhbSgpIHsKKytwd19zdHJlYW0qIEJhc2VD YXB0dXJlclBpcGVXaXJlOjpDcmVhdGVSZWNlaXZpbmdTdHJlYW0oKSB7CisrI2lmICFQV19DSEVD S19WRVJTSU9OKDAsIDMsIDApCisrICBpZiAocHdfcmVtb3RlX2dldF9zdGF0ZShwd19yZW1vdGVf LCBudWxscHRyKSAhPSBQV19SRU1PVEVfU1RBVEVfQ09OTkVDVEVEKSB7CisrICAgIFJUQ19MT0co TFNfRVJST1IpIDw8ICJDYW5ub3QgY3JlYXRlIHBpcGV3aXJlIHN0cmVhbSI7CisrICAgIHJldHVy biBudWxscHRyOworKyAgfQorKyNlbmRpZgorICAgc3BhX3JlY3RhbmdsZSBwd01pblNjcmVlbkJv dW5kcyA9IHNwYV9yZWN0YW5nbGV7MSwgMX07CistICBzcGFfcmVjdGFuZ2xlIHB3U2NyZWVuQm91 bmRzID0KKy0gICAgICBzcGFfcmVjdGFuZ2xle3N0YXRpY19jYXN0PHVpbnQzMl90PihkZXNrdG9w X3NpemVfLndpZHRoKCkpLAorLSAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMy X3Q+KGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCkpfTsKKy0KKy0gIHNwYV9mcmFjdGlvbiBwd0ZyYW1l UmF0ZU1pbiA9IHNwYV9mcmFjdGlvbnswLCAxfTsKKy0gIHNwYV9mcmFjdGlvbiBwd0ZyYW1lUmF0 ZU1heCA9IHNwYV9mcmFjdGlvbns2MCwgMX07CisrICBzcGFfcmVjdGFuZ2xlIHB3TWF4U2NyZWVu Qm91bmRzID0gc3BhX3JlY3RhbmdsZXtVSU5UMzJfTUFYLCBVSU5UMzJfTUFYfTsKKyAKKyAgIHB3 X3Byb3BlcnRpZXMqIHJldXNlUHJvcHMgPQorICAgICAgIHB3X3Byb3BlcnRpZXNfbmV3X3N0cmlu ZygicGlwZXdpcmUuY2xpZW50LnJldXNlPTEiKTsKKy0gIHB3X3N0cmVhbV8gPSBwd19zdHJlYW1f bmV3KHB3X3JlbW90ZV8sICJ3ZWJydGMtY29uc3VtZS1zdHJlYW0iLCByZXVzZVByb3BzKTsKKysj aWYgUFdfQ0hFQ0tfVkVSU0lPTigwLCAzLCAwKQorKyAgYXV0byBzdHJlYW0gPSBwd19zdHJlYW1f bmV3KHB3X2NvcmVfLCAid2VicnRjLWNvbnN1bWUtc3RyZWFtIiwgcmV1c2VQcm9wcyk7CisrI2Vs c2UKKysgIGF1dG8gc3RyZWFtID0gcHdfc3RyZWFtX25ldyhwd19yZW1vdGVfLCAid2VicnRjLWNv bnN1bWUtc3RyZWFtIiwgcmV1c2VQcm9wcyk7CisrI2VuZGlmCisgCisgICB1aW50OF90IGJ1ZmZl clsxMDI0XSA9IHt9OworICAgY29uc3Qgc3BhX3BvZCogcGFyYW1zWzFdOworICAgc3BhX3BvZF9i dWlsZGVyIGJ1aWxkZXIgPSBzcGFfcG9kX2J1aWxkZXJ7YnVmZmVyLCBzaXplb2YoYnVmZmVyKX07 CisrCisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwgMywgMCkKKysgIHBhcmFtc1swXSA9IHJlaW50 ZXJwcmV0X2Nhc3Q8c3BhX3BvZCo+KHNwYV9wb2RfYnVpbGRlcl9hZGRfb2JqZWN0KAorKyAgICAg ICZidWlsZGVyLCBTUEFfVFlQRV9PQkpFQ1RfRm9ybWF0LCBTUEFfUEFSQU1fRW51bUZvcm1hdCwK KysgICAgICBTUEFfRk9STUFUX21lZGlhVHlwZSwgU1BBX1BPRF9JZChTUEFfTUVESUFfVFlQRV92 aWRlbyksCisrICAgICAgU1BBX0ZPUk1BVF9tZWRpYVN1YnR5cGUsIFNQQV9QT0RfSWQoU1BBX01F RElBX1NVQlRZUEVfcmF3KSwKKysgICAgICBTUEFfRk9STUFUX1ZJREVPX2Zvcm1hdCwKKysgICAg ICBTUEFfUE9EX0NIT0lDRV9FTlVNX0lkKDUsIFNQQV9WSURFT19GT1JNQVRfQkdSeCwgU1BBX1ZJ REVPX0ZPUk1BVF9SR0J4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1BBX1ZJREVP X0ZPUk1BVF9SR0JBLCBTUEFfVklERU9fRk9STUFUX0JHUngsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTUEFfVklERU9fRk9STUFUX0JHUkEpLAorKyAgICAgIFNQQV9GT1JNQVRfVklE RU9fc2l6ZSwKKysgICAgICBTUEFfUE9EX0NIT0lDRV9SQU5HRV9SZWN0YW5nbGUoJnB3TWluU2Ny ZWVuQm91bmRzLCAmcHdNaW5TY3JlZW5Cb3VuZHMsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZwd01heFNjcmVlbkJvdW5kcyksCisrICAgICAgMCkpOworKyNlbHNlCisg ICBwYXJhbXNbMF0gPSByZWludGVycHJldF9jYXN0PHNwYV9wb2QqPihzcGFfcG9kX2J1aWxkZXJf b2JqZWN0KAorICAgICAgICZidWlsZGVyLAorICAgICAgIC8vIGlkIHRvIGVudW1lcmF0ZSBmb3Jt YXRzCitAQCAtMzQ5LDY5ICs2NTcsMjE4IEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNy ZWF0ZVJlY2VpdmluZ1N0cmVhbSgpIHsKKyAgICAgICAvLyB0aGVuIGFsbG93ZWQgZm9ybWF0cyBh cmUgZW51bWVyYXRlZCAoZSkgYW5kIHRoZSBmb3JtYXQgaXMgdW5kZWNpZGVkICh1KQorICAgICAg IC8vIHRvIGFsbG93IG5lZ290aWF0aW9uCisgICAgICAgIjoiLCBwd190eXBlXy0+Zm9ybWF0X3Zp ZGVvLmZvcm1hdCwgIklldSIsIHB3X3R5cGVfLT52aWRlb19mb3JtYXQuQkdSeCwKKy0gICAgICBT UEFfUE9EX1BST1BfRU5VTSgyLCBwd190eXBlXy0+dmlkZW9fZm9ybWF0LlJHQngsCistICAgICAg ICAgICAgICAgICAgICAgICAgcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5CR1J4KSwKKysgICAgICBT UEFfUE9EX1BST1BfRU5VTSgKKysgICAgICAgICAgNCwgcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5S R0J4LCBwd190eXBlXy0+dmlkZW9fZm9ybWF0LkJHUngsCisrICAgICAgICAgIHB3X3R5cGVfLT52 aWRlb19mb3JtYXQuUkdCQSwgcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5CR1JBKSwKKyAgICAgICAv LyBWaWRlbyBzaXplOiBzcGVjaWZpZWQgYXMgcmVjdGFuZ2xlIChSKSwgcHJlZmVycmVkIHNpemUg aXMgc3BlY2lmaWVkIGFzCisgICAgICAgLy8gZmlyc3QgcGFyYW1ldGVyLCB0aGVuIGFsbG93ZWQg c2l6ZSBpcyBkZWZpbmVkIGFzIHJhbmdlIChyKSBmcm9tIG1pbiBhbmQKKyAgICAgICAvLyBtYXgg dmFsdWVzIGFuZCB0aGUgZm9ybWF0IGlzIHVuZGVjaWRlZCAodSkgdG8gYWxsb3cgbmVnb3RpYXRp b24KKy0gICAgICAiOiIsIHB3X3R5cGVfLT5mb3JtYXRfdmlkZW8uc2l6ZSwgIlJydSIsICZwd1Nj cmVlbkJvdW5kcywgMiwKKy0gICAgICAmcHdNaW5TY3JlZW5Cb3VuZHMsICZwd1NjcmVlbkJvdW5k cywKKy0gICAgICAvLyBGcmFtZSByYXRlOiBzcGVjaWZpZWQgYXMgZnJhY3Rpb24gKEYpIGFuZCBz ZXQgdG8gbWluaW11bSBmcmFtZSByYXRlCistICAgICAgLy8gdmFsdWUKKy0gICAgICAiOiIsIHB3 X3R5cGVfLT5mb3JtYXRfdmlkZW8uZnJhbWVyYXRlLCAiRiIsICZwd0ZyYW1lUmF0ZU1pbiwKKy0g ICAgICAvLyBNYXggZnJhbWUgcmF0ZTogc3BlY2lmaWVkIGFzIGZyYWN0aW9uIChGKSwgcHJlZmVy cmVkIGZyYW1lIHJhdGUgaXMgc2V0CistICAgICAgLy8gdG8gbWF4aW11bSB2YWx1ZSwgdGhlbiBh bGxvd2VkIGZyYW1lIHJhdGUgaXMgZGVmaW5lZCBhcyByYW5nZSAocikgZnJvbQorLSAgICAgIC8v IG1pbiBhbmQgbWF4IHZhbHVlcyBhbmQgaXQgaXMgdW5kZWNpZGVkICh1KSB0byBhbGxvdyBuZWdv dGlhdGlvbgorLSAgICAgICI6IiwgcHdfdHlwZV8tPmZvcm1hdF92aWRlby5tYXhfZnJhbWVyYXRl LCAiRnJ1IiwgJnB3RnJhbWVSYXRlTWF4LCAyLAorLSAgICAgICZwd0ZyYW1lUmF0ZU1pbiwgJnB3 RnJhbWVSYXRlTWF4KSk7CistCistICBwd19zdHJlYW1fYWRkX2xpc3RlbmVyKHB3X3N0cmVhbV8s ICZzcGFfc3RyZWFtX2xpc3RlbmVyXywgJnB3X3N0cmVhbV9ldmVudHNfLAorKyAgICAgICI6Iiwg cHdfdHlwZV8tPmZvcm1hdF92aWRlby5zaXplLCAiUnJ1IiwgJnB3TWluU2NyZWVuQm91bmRzLAor KyAgICAgIFNQQV9QT0RfUFJPUF9NSU5fTUFYKCZwd01pblNjcmVlbkJvdW5kcywgJnB3TWF4U2Ny ZWVuQm91bmRzKSkpOworKyNlbmRpZgorKworKyAgcHdfc3RyZWFtX2FkZF9saXN0ZW5lcihzdHJl YW0sICZzcGFfc3RyZWFtX2xpc3RlbmVyXywgJnB3X3N0cmVhbV9ldmVudHNfLAorICAgICAgICAg ICAgICAgICAgICAgICAgICB0aGlzKTsKKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigwLCAzLCAwKQor KyAgaWYgKHB3X3N0cmVhbV9jb25uZWN0KHN0cmVhbSwgUFdfRElSRUNUSU9OX0lOUFVULCBwd19z dHJlYW1fbm9kZV9pZF8sCisrICAgICAgICAgICAgICAgICAgICAgICAgUFdfU1RSRUFNX0ZMQUdf QVVUT0NPTk5FQ1QsIHBhcmFtcywgMSkgIT0gMCkgeworKyNlbHNlCisgICBwd19zdHJlYW1fZmxh Z3MgZmxhZ3MgPSBzdGF0aWNfY2FzdDxwd19zdHJlYW1fZmxhZ3M+KAorLSAgICAgIFBXX1NUUkVB TV9GTEFHX0FVVE9DT05ORUNUIHwgUFdfU1RSRUFNX0ZMQUdfSU5BQ1RJVkUgfAorLSAgICAgIFBX X1NUUkVBTV9GTEFHX01BUF9CVUZGRVJTKTsKKy0gIGlmIChwd19zdHJlYW1fY29ubmVjdChwd19z dHJlYW1fLCBQV19ESVJFQ1RJT05fSU5QVVQsIC8qcG9ydF9wYXRoPSovbnVsbHB0ciwKKysgICAg ICBQV19TVFJFQU1fRkxBR19BVVRPQ09OTkVDVCB8IFBXX1NUUkVBTV9GTEFHX0lOQUNUSVZFKTsK KysgIGlmIChwd19zdHJlYW1fY29ubmVjdChzdHJlYW0sIFBXX0RJUkVDVElPTl9JTlBVVCwgLypw b3J0X3BhdGg9Ki9udWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBwYXJh bXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgLypuX3BhcmFtcz0qLzEpICE9IDApIHsKKysj ZW5kaWYKKyAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkNvdWxkIG5vdCBjb25uZWN0IHJlY2Vp dmluZyBzdHJlYW0uIjsKKyAgICAgcG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CistICAgIHJl dHVybjsKKysgICAgcmV0dXJuIG51bGxwdHI7CisgICB9CisrCisrICByZXR1cm4gc3RyZWFtOwor IH0KKyAKKyB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpIYW5kbGVCdWZmZXIocHdfYnVmZmVy KiBidWZmZXIpIHsKKyAgIHNwYV9idWZmZXIqIHNwYUJ1ZmZlciA9IGJ1ZmZlci0+YnVmZmVyOwor LSAgdm9pZCogc3JjID0gbnVsbHB0cjsKKysgIFNjb3BlZEJ1ZiBtYXA7CisrICB1aW50OF90KiBz cmMgPSBudWxscHRyOworKworKyAgaWYgKHNwYUJ1ZmZlci0+ZGF0YXNbMF0uY2h1bmstPnNpemUg PT0gMCkgeworKyAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGdldCB2aWRlbyBz dHJlYW06IFplcm8gc2l6ZS4iOworKyAgICByZXR1cm47CisrICB9CisrCisrI2lmIFBXX0NIRUNL X1ZFUlNJT04oMCwgMywgMCkKKysgIGlmIChzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUgPT0gU1BB X0RBVEFfTWVtRmQgfHwKKysgICAgICBzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUgPT0gU1BBX0RB VEFfRG1hQnVmKSB7CisrI2Vsc2UKKysgIGlmIChzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUgPT0g cHdfY29yZV90eXBlXy0+ZGF0YS5NZW1GZCB8fAorKyAgICAgIHNwYUJ1ZmZlci0+ZGF0YXNbMF0u dHlwZSA9PSBwd19jb3JlX3R5cGVfLT5kYXRhLkRtYUJ1ZikgeworKyNlbmRpZgorKyAgICBtYXAu aW5pdGlhbGl6ZSgKKysgICAgICAgIHN0YXRpY19jYXN0PHVpbnQ4X3QqPigKKysgICAgICAgICAg ICBtbWFwKG51bGxwdHIsCisrICAgICAgICAgICAgICAgICBzcGFCdWZmZXItPmRhdGFzWzBdLm1h eHNpemUgKyBzcGFCdWZmZXItPmRhdGFzWzBdLm1hcG9mZnNldCwKKysgICAgICAgICAgICAgICAg IFBST1RfUkVBRCwgTUFQX1BSSVZBVEUsIHNwYUJ1ZmZlci0+ZGF0YXNbMF0uZmQsIDApKSwKKysg ICAgICAgIHNwYUJ1ZmZlci0+ZGF0YXNbMF0ubWF4c2l6ZSArIHNwYUJ1ZmZlci0+ZGF0YXNbMF0u bWFwb2Zmc2V0LAorKyNpZiBQV19DSEVDS19WRVJTSU9OKDAsIDMsIDApCisrICAgICAgICBzcGFC dWZmZXItPmRhdGFzWzBdLnR5cGUgPT0gU1BBX0RBVEFfRG1hQnVmLAorKyNlbHNlCisrICAgICAg ICBzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUgPT0gcHdfY29yZV90eXBlXy0+ZGF0YS5EbWFCdWYs CisrI2VuZGlmCisrICAgICAgICBzcGFCdWZmZXItPmRhdGFzWzBdLmZkKTsKKysKKysgICAgaWYg KCFtYXApIHsKKysgICAgICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIG1tYXAgdGhl IG1lbW9yeTogIgorKyAgICAgICAgICAgICAgICAgICAgICAgIDw8IHN0ZDo6c3RyZXJyb3IoZXJy bm8pOworKyAgICAgIHJldHVybjsKKysgICAgfQorKworKyNpZiBQV19DSEVDS19WRVJTSU9OKDAs IDMsIDApCisrICAgIGlmIChzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUgPT0gU1BBX0RBVEFfRG1h QnVmKSB7CisrI2Vsc2UKKysgICAgaWYgKHNwYUJ1ZmZlci0+ZGF0YXNbMF0udHlwZSA9PSBwd19j b3JlX3R5cGVfLT5kYXRhLkRtYUJ1ZikgeworKyNlbmRpZgorKyAgICAgIFN5bmNEbWFCdWYoc3Bh QnVmZmVyLT5kYXRhc1swXS5mZCwgRE1BX0JVRl9TWU5DX1NUQVJUKTsKKysgICAgfQorKworKyAg ICBzcmMgPSBTUEFfTUVNQkVSKG1hcC5nZXQoKSwgc3BhQnVmZmVyLT5kYXRhc1swXS5tYXBvZmZz ZXQsIHVpbnQ4X3QpOworKyNpZiBQV19DSEVDS19WRVJTSU9OKDAsIDMsIDApCisrICB9IGVsc2Ug aWYgKHNwYUJ1ZmZlci0+ZGF0YXNbMF0udHlwZSA9PSBTUEFfREFUQV9NZW1QdHIpIHsKKysjZWxz ZQorKyAgfSBlbHNlIGlmIChzcGFCdWZmZXItPmRhdGFzWzBdLnR5cGUgPT0gcHdfY29yZV90eXBl Xy0+ZGF0YS5NZW1QdHIpIHsKKysjZW5kaWYKKysgICAgc3JjID0gc3RhdGljX2Nhc3Q8dWludDhf dCo+KHNwYUJ1ZmZlci0+ZGF0YXNbMF0uZGF0YSk7CisrICB9CisgCistICBpZiAoIShzcmMgPSBz cGFCdWZmZXItPmRhdGFzWzBdLmRhdGEpKSB7CisrICBpZiAoIXNyYykgeworKyAgICByZXR1cm47 CisrICB9CisrCisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwgMywgMCkKKysgIHN0cnVjdCBzcGFf bWV0YV9yZWdpb24qIHZpZGVvX21ldGFkYXRhID0KKysgICAgICBzdGF0aWNfY2FzdDxzdHJ1Y3Qg c3BhX21ldGFfcmVnaW9uKj4oc3BhX2J1ZmZlcl9maW5kX21ldGFfZGF0YSgKKysgICAgICAgICAg c3BhQnVmZmVyLCBTUEFfTUVUQV9WaWRlb0Nyb3AsIHNpemVvZigqdmlkZW9fbWV0YWRhdGEpKSk7 CisrI2Vsc2UKKysgIHN0cnVjdCBzcGFfbWV0YV92aWRlb19jcm9wKiB2aWRlb19tZXRhZGF0YSA9 CisrICAgICAgc3RhdGljX2Nhc3Q8c3RydWN0IHNwYV9tZXRhX3ZpZGVvX2Nyb3AqPigKKysgICAg ICAgICAgc3BhX2J1ZmZlcl9maW5kX21ldGEoc3BhQnVmZmVyLCBwd19jb3JlX3R5cGVfLT5tZXRh LlZpZGVvQ3JvcCkpOworKyNlbmRpZgorKworKyAgLy8gVmlkZW8gc2l6ZSBmcm9tIG1ldGFkYXRh IGlzIGJpZ2dlciB0aGFuIGFuIGFjdHVhbCB2aWRlbyBzdHJlYW0gc2l6ZS4KKysgIC8vIFRoZSBt ZXRhZGF0YSBhcmUgd3Jvbmcgb3Igd2Ugc2hvdWxkIHVwLXNjYWxlIHRoZSB2aWRlby4uLmluIGJv dGggY2FzZXMKKysgIC8vIGp1c3QgcXVpdCBub3cuCisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwg MywgMCkKKysgIGlmICh2aWRlb19tZXRhZGF0YSAmJiAodmlkZW9fbWV0YWRhdGEtPnJlZ2lvbi5z aXplLndpZHRoID4KKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVp bnQzMl90PihkZXNrdG9wX3NpemVfLndpZHRoKCkpIHx8CisrICAgICAgICAgICAgICAgICAgICAg ICAgIHZpZGVvX21ldGFkYXRhLT5yZWdpb24uc2l6ZS5oZWlnaHQgPgorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0 KCkpKSkgeworKyNlbHNlCisrICBpZiAodmlkZW9fbWV0YWRhdGEgJiYgKHZpZGVvX21ldGFkYXRh LT53aWR0aCA+IGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSB8fAorKyAgICAgICAgICAgICAgICAgICAg ICAgICB2aWRlb19tZXRhZGF0YS0+aGVpZ2h0ID4gZGVza3RvcF9zaXplXy5oZWlnaHQoKSkpIHsK KysjZW5kaWYKKysgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIlN0cmVhbSBtZXRhZGF0YSBzaXpl cyBhcmUgd3JvbmchIjsKKyAgICAgcmV0dXJuOworICAgfQorIAorLSAgdWludDMyX3QgbWF4U2l6 ZSA9IHNwYUJ1ZmZlci0+ZGF0YXNbMF0ubWF4c2l6ZTsKKy0gIGludDMyX3Qgc3JjU3RyaWRlID0g c3BhQnVmZmVyLT5kYXRhc1swXS5jaHVuay0+c3RyaWRlOworLSAgaWYgKHNyY1N0cmlkZSAhPSAo ZGVza3RvcF9zaXplXy53aWR0aCgpICoga0J5dGVzUGVyUGl4ZWwpKSB7CisrICAvLyBVc2Ugdmlk ZW8gbWV0YWRhdGEgd2hlbiB2aWRlbyBzaXplIGZyb20gbWV0YWRhdGEgaXMgc2V0IGFuZCBzbWFs bGVyIHRoYW4KKysgIC8vIHZpZGVvIHN0cmVhbSBzaXplLCBzbyB3ZSBuZWVkIHRvIGFkanVzdCBp dC4KKysgIGJvb2wgdmlkZW9faXNfZnVsbF93aWR0aCA9IHRydWU7CisrICBib29sIHZpZGVvX2lz X2Z1bGxfaGVpZ2h0ID0gdHJ1ZTsKKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigwLCAzLCAwKQorKyAg aWYgKHZpZGVvX21ldGFkYXRhICYmIHZpZGVvX21ldGFkYXRhLT5yZWdpb24uc2l6ZS53aWR0aCAh PSAwICYmCisrICAgICAgdmlkZW9fbWV0YWRhdGEtPnJlZ2lvbi5zaXplLmhlaWdodCAhPSAwKSB7 CisrICAgIGlmICh2aWRlb19tZXRhZGF0YS0+cmVnaW9uLnNpemUud2lkdGggPAorKyAgICAgICAg c3RhdGljX2Nhc3Q8dWludDMyX3Q+KGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSkpIHsKKysgICAgICB2 aWRlb19pc19mdWxsX3dpZHRoID0gZmFsc2U7CisrICAgIH0gZWxzZSBpZiAodmlkZW9fbWV0YWRh dGEtPnJlZ2lvbi5zaXplLmhlaWdodCA8CisrICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dWlu dDMyX3Q+KGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCkpKSB7CisrICAgICAgdmlkZW9faXNfZnVsbF9o ZWlnaHQgPSBmYWxzZTsKKysgICAgfQorKyAgfQorKyNlbHNlCisrICBpZiAodmlkZW9fbWV0YWRh dGEgJiYgdmlkZW9fbWV0YWRhdGEtPndpZHRoICE9IDAgJiYKKysgICAgICB2aWRlb19tZXRhZGF0 YS0+aGVpZ2h0ICE9IDApIHsKKysgICAgaWYgKHZpZGVvX21ldGFkYXRhLT53aWR0aCA8IGRlc2t0 b3Bfc2l6ZV8ud2lkdGgoKSkgeworKyAgICB9IGVsc2UgaWYgKHZpZGVvX21ldGFkYXRhLT5oZWln aHQgPCBkZXNrdG9wX3NpemVfLmhlaWdodCgpKSB7CisrICAgICAgdmlkZW9faXNfZnVsbF9oZWln aHQgPSBmYWxzZTsKKysgICAgfQorKyAgfQorKyNlbmRpZgorKworKyAgRGVza3RvcFNpemUgdmlk ZW9fc2l6ZV9wcmV2ID0gdmlkZW9fc2l6ZV87CisrICBpZiAoIXZpZGVvX2lzX2Z1bGxfaGVpZ2h0 IHx8ICF2aWRlb19pc19mdWxsX3dpZHRoKSB7CisrI2lmIFBXX0NIRUNLX1ZFUlNJT04oMCwgMywg MCkKKysgICAgdmlkZW9fc2l6ZV8gPSBEZXNrdG9wU2l6ZSh2aWRlb19tZXRhZGF0YS0+cmVnaW9u LnNpemUud2lkdGgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlkZW9fbWV0YWRh dGEtPnJlZ2lvbi5zaXplLmhlaWdodCk7CisrI2Vsc2UKKysgICAgdmlkZW9fc2l6ZV8gPSBEZXNr dG9wU2l6ZSh2aWRlb19tZXRhZGF0YS0+d2lkdGgsIHZpZGVvX21ldGFkYXRhLT5oZWlnaHQpOwor KyNlbmRpZgorKyAgfSBlbHNlIHsKKysgICAgdmlkZW9fc2l6ZV8gPSBkZXNrdG9wX3NpemVfOwor KyAgfQorKworKyAgd2VicnRjOjpNdXRleExvY2sgbG9jaygmY3VycmVudF9mcmFtZV9sb2NrXyk7 CisrICBpZiAoIWN1cnJlbnRfZnJhbWVfIHx8ICF2aWRlb19zaXplXy5lcXVhbHModmlkZW9fc2l6 ZV9wcmV2KSkgeworKyAgICBjdXJyZW50X2ZyYW1lXyA9IHN0ZDo6bWFrZV91bmlxdWU8dWludDhf dFtdPigKKysgICAgICAgIHZpZGVvX3NpemVfLndpZHRoKCkgKiB2aWRlb19zaXplXy5oZWlnaHQo KSAqIGtCeXRlc1BlclBpeGVsKTsKKysgIH0KKysKKysgIGNvbnN0IGludDMyX3QgZHN0X3N0cmlk ZSA9IHZpZGVvX3NpemVfLndpZHRoKCkgKiBrQnl0ZXNQZXJQaXhlbDsKKysgIGNvbnN0IGludDMy X3Qgc3JjX3N0cmlkZSA9IHNwYUJ1ZmZlci0+ZGF0YXNbMF0uY2h1bmstPnN0cmlkZTsKKysKKysg IGlmIChzcmNfc3RyaWRlICE9IChkZXNrdG9wX3NpemVfLndpZHRoKCkgKiBrQnl0ZXNQZXJQaXhl bCkpIHsKKyAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkdvdCBidWZmZXIgd2l0aCBzdHJpZGUg ZGlmZmVyZW50IGZyb20gc2NyZWVuIHN0cmlkZTogIgorLSAgICAgICAgICAgICAgICAgICAgICA8 PCBzcmNTdHJpZGUKKysgICAgICAgICAgICAgICAgICAgICAgPDwgc3JjX3N0cmlkZQorICAgICAg ICAgICAgICAgICAgICAgICA8PCAiICE9ICIgPDwgKGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSAqIGtC eXRlc1BlclBpeGVsKTsKKyAgICAgcG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisrCisgICAg IHJldHVybjsKKyAgIH0KKyAKKy0gIGlmICghY3VycmVudF9mcmFtZV8pIHsKKy0gICAgY3VycmVu dF9mcmFtZV8gPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4obWFsbG9jKG1heFNpemUpKTsKKy0gIH0K Ky0gIFJUQ19EQ0hFQ0soY3VycmVudF9mcmFtZV8gIT0gbnVsbHB0cik7CistCistICAvLyBJZiBi b3RoIHNpZGVzIGRlY2lkZWQgdG8gZ28gd2l0aCB0aGUgUkdCeCBmb3JtYXQgd2UgbmVlZCB0byBj b252ZXJ0IGl0IHRvCistICAvLyBCR1J4IHRvIG1hdGNoIGNvbG9yIGZvcm1hdCBleHBlY3RlZCBi eSBXZWJSVEMuCistICBpZiAoc3BhX3ZpZGVvX2Zvcm1hdF8tPmZvcm1hdCA9PSBwd190eXBlXy0+ dmlkZW9fZm9ybWF0LlJHQngpIHsKKy0gICAgdWludDhfdCogdGVtcEZyYW1lID0gc3RhdGljX2Nh c3Q8dWludDhfdCo+KG1hbGxvYyhtYXhTaXplKSk7CistICAgIHN0ZDo6bWVtY3B5KHRlbXBGcmFt ZSwgc3JjLCBtYXhTaXplKTsKKy0gICAgQ29udmVydFJHQnhUb0JHUngodGVtcEZyYW1lLCBtYXhT aXplKTsKKy0gICAgc3RkOjptZW1jcHkoY3VycmVudF9mcmFtZV8sIHRlbXBGcmFtZSwgbWF4U2l6 ZSk7CistICAgIGZyZWUodGVtcEZyYW1lKTsKKy0gIH0gZWxzZSB7CistICAgIHN0ZDo6bWVtY3B5 KGN1cnJlbnRfZnJhbWVfLCBzcmMsIG1heFNpemUpOworKyAgLy8gQWRqdXN0IHNvdXJjZSBjb250 ZW50IGJhc2VkIG9uIG1ldGFkYXRhIHZpZGVvIHBvc2l0aW9uCisrI2lmIFBXX0NIRUNLX1ZFUlNJ T04oMCwgMywgMCkKKysgIGlmICghdmlkZW9faXNfZnVsbF9oZWlnaHQgJiYKKysgICAgICAodmlk ZW9fbWV0YWRhdGEtPnJlZ2lvbi5wb3NpdGlvbi55ICsgdmlkZW9fc2l6ZV8uaGVpZ2h0KCkgPD0K KysgICAgICAgZGVza3RvcF9zaXplXy5oZWlnaHQoKSkpIHsKKysgICAgc3JjICs9IHNyY19zdHJp ZGUgKiB2aWRlb19tZXRhZGF0YS0+cmVnaW9uLnBvc2l0aW9uLnk7CisrICB9CisrICBjb25zdCBp bnQgeF9vZmZzZXQgPQorKyAgICAgICF2aWRlb19pc19mdWxsX3dpZHRoICYmCisrICAgICAgICAg ICAgICAodmlkZW9fbWV0YWRhdGEtPnJlZ2lvbi5wb3NpdGlvbi54ICsgdmlkZW9fc2l6ZV8ud2lk dGgoKSA8PQorKyAgICAgICAgICAgICAgIGRlc2t0b3Bfc2l6ZV8ud2lkdGgoKSkKKysgICAgICAg ICAgPyB2aWRlb19tZXRhZGF0YS0+cmVnaW9uLnBvc2l0aW9uLnggKiBrQnl0ZXNQZXJQaXhlbAor KyAgICAgICAgICA6IDA7CisrI2Vsc2UKKysgIGlmICghdmlkZW9faXNfZnVsbF9oZWlnaHQgJiYK KysgICAgICAodmlkZW9fbWV0YWRhdGEtPnkgKyB2aWRlb19zaXplXy5oZWlnaHQoKSA8PSBkZXNr dG9wX3NpemVfLmhlaWdodCgpKSkgeworKyAgICBzcmMgKz0gc3JjX3N0cmlkZSAqIHZpZGVvX21l dGFkYXRhLT55OworKyAgfQorKworKyAgY29uc3QgaW50IHhfb2Zmc2V0ID0KKysgICAgICAhdmlk ZW9faXNfZnVsbF93aWR0aCAmJgorKyAgICAgICAgICAgICAgKHZpZGVvX21ldGFkYXRhLT54ICsg dmlkZW9fc2l6ZV8ud2lkdGgoKSA8PSBkZXNrdG9wX3NpemVfLndpZHRoKCkpCisrICAgICAgICAg ID8gdmlkZW9fbWV0YWRhdGEtPnggKiBrQnl0ZXNQZXJQaXhlbAorKyAgICAgICAgICA6IDA7Cisr I2VuZGlmCisrCisrICB1aW50OF90KiBkc3QgPSBjdXJyZW50X2ZyYW1lXy5nZXQoKTsKKysgIGZv ciAoaW50IGkgPSAwOyBpIDwgdmlkZW9fc2l6ZV8uaGVpZ2h0KCk7ICsraSkgeworKyAgICAvLyBB ZGp1c3Qgc291cmNlIGNvbnRlbnQgYmFzZWQgb24gY3JvcCB2aWRlbyBwb3NpdGlvbiBpZiBuZWVk ZWQKKysgICAgc3JjICs9IHhfb2Zmc2V0OworKyAgICBzdGQ6Om1lbWNweShkc3QsIHNyYywgZHN0 X3N0cmlkZSk7CisrICAgIC8vIElmIGJvdGggc2lkZXMgZGVjaWRlZCB0byBnbyB3aXRoIHRoZSBS R0J4IGZvcm1hdCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8KKysgICAgLy8gQkdSeCB0byBtYXRj aCBjb2xvciBmb3JtYXQgZXhwZWN0ZWQgYnkgV2ViUlRDLgorKyNpZiBQV19DSEVDS19WRVJTSU9O KDAsIDMsIDApCisrICAgIGlmIChzcGFfdmlkZW9fZm9ybWF0Xy5mb3JtYXQgPT0gU1BBX1ZJREVP X0ZPUk1BVF9SR0J4IHx8CisrICAgICAgICBzcGFfdmlkZW9fZm9ybWF0Xy5mb3JtYXQgPT0gU1BB X1ZJREVPX0ZPUk1BVF9SR0JBKSB7CisrI2Vsc2UKKysgICAgaWYgKHNwYV92aWRlb19mb3JtYXRf LT5mb3JtYXQgPT0gcHdfdHlwZV8tPnZpZGVvX2Zvcm1hdC5SR0J4IHx8CisrICAgICAgICBzcGFf dmlkZW9fZm9ybWF0Xy0+Zm9ybWF0ID09IHB3X3R5cGVfLT52aWRlb19mb3JtYXQuUkdCQSkgewor KyNlbmRpZgorKyAgICAgIENvbnZlcnRSR0J4VG9CR1J4KGRzdCwgZHN0X3N0cmlkZSk7CisrICAg IH0KKysgICAgc3JjICs9IHNyY19zdHJpZGUgLSB4X29mZnNldDsKKysgICAgZHN0ICs9IGRzdF9z dHJpZGU7CisgICB9CisgfQorIAorQEAgLTQ0MSwxNCArODk4LDEzIEBAIHZvaWQgQmFzZUNhcHR1 cmVyUGlwZVdpcmU6Ok9uUHJveHlSZXF1ZXN0ZWQoR09iamVjdCogLypvYmplY3QqLywKKyAgIEJh c2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdp cmUqPih1c2VyX2RhdGEpOworICAgUlRDX0RDSEVDSyh0aGF0KTsKKyAKKy0gIEdFcnJvciogZXJy b3IgPSBudWxscHRyOworLSAgR0RCdXNQcm94eSAqcHJveHkgPSBnX2RidXNfcHJveHlfbmV3X2Zp bmlzaChyZXN1bHQsICZlcnJvcik7CisrICBTY29wZWQ8R0Vycm9yPiBlcnJvcjsKKysgIEdEQnVz UHJveHkqIHByb3h5ID0gZ19kYnVzX3Byb3h5X25ld19maW5pc2gocmVzdWx0LCBlcnJvci5yZWNl aXZlKCkpOworICAgaWYgKCFwcm94eSkgeworLSAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9y LCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCisrICAgIGlmIChnX2Vycm9yX21h dGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKKyAg ICAgICByZXR1cm47CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRl IGEgcHJveHkgZm9yIHRoZSBzY3JlZW4gY2FzdCBwb3J0YWw6ICIKKyAgICAgICAgICAgICAgICAg ICAgICAgPDwgZXJyb3ItPm1lc3NhZ2U7CistICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAg IHRoYXQtPnBvcnRhbF9pbml0X2ZhaWxlZF8gPSB0cnVlOworICAgICByZXR1cm47CisgICB9CitA QCAtNDYyLDM4ICs5MTgsMzYgQEAgdm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6T25Qcm94eVJl cXVlc3RlZChHT2JqZWN0KiAvKm9iamVjdCovLAorIC8vIHN0YXRpYworIGdjaGFyKiBCYXNlQ2Fw dHVyZXJQaXBlV2lyZTo6UHJlcGFyZVNpZ25hbEhhbmRsZShHREJ1c0Nvbm5lY3Rpb24qIGNvbm5l Y3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGdjaGFyKiB0b2tlbikgeworLSAgZ2NoYXIqIHNlbmRlciA9IGdfc3RyZHVwKGdfZGJ1 c19jb25uZWN0aW9uX2dldF91bmlxdWVfbmFtZShjb25uZWN0aW9uKSArIDEpOworLSAgZm9yIChp bnQgaSA9IDA7IHNlbmRlcltpXTsgaSsrKSB7CistICAgIGlmIChzZW5kZXJbaV0gPT0gJy4nKSB7 CistICAgICAgc2VuZGVyW2ldID0gJ18nOworKyAgU2NvcGVkPGdjaGFyPiBzZW5kZXIoCisrICAg ICAgZ19zdHJkdXAoZ19kYnVzX2Nvbm5lY3Rpb25fZ2V0X3VuaXF1ZV9uYW1lKGNvbm5lY3Rpb24p ICsgMSkpOworKyAgZm9yIChpbnQgaSA9IDA7IHNlbmRlci5nZXQoKVtpXTsgaSsrKSB7CisrICAg IGlmIChzZW5kZXIuZ2V0KClbaV0gPT0gJy4nKSB7CisrICAgICAgc2VuZGVyLmdldCgpW2ldID0g J18nOworICAgICB9CisgICB9CisgCistICBnY2hhciogaGFuZGxlID0gZ19zdHJjb25jYXQoa0Rl c2t0b3BSZXF1ZXN0T2JqZWN0UGF0aCwgIi8iLCBzZW5kZXIsICIvIiwKKysgIGdjaGFyKiBoYW5k bGUgPSBnX3N0cmNvbmNhdChrRGVza3RvcFJlcXVlc3RPYmplY3RQYXRoLCAiLyIsIHNlbmRlci5n ZXQoKSwgIi8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCAvKmVuZCBv ZiB2YXJhcmdzKi8gbnVsbHB0cik7CistICBnX2ZyZWUoc2VuZGVyKTsKKyAKKyAgIHJldHVybiBo YW5kbGU7CisgfQorIAorIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OlNlc3Npb25SZXF1ZXN0 KCkgeworICAgR1ZhcmlhbnRCdWlsZGVyIGJ1aWxkZXI7CistICBnY2hhciogdmFyaWFudF9zdHJp bmc7CisrICBTY29wZWQ8Z2NoYXI+IHZhcmlhbnRfc3RyaW5nOworIAorICAgZ192YXJpYW50X2J1 aWxkZXJfaW5pdCgmYnVpbGRlciwgR19WQVJJQU5UX1RZUEVfVkFSRElDVCk7CisgICB2YXJpYW50 X3N0cmluZyA9CisgICAgICAgZ19zdHJkdXBfcHJpbnRmKCJ3ZWJydGNfc2Vzc2lvbiVkIiwgZ19y YW5kb21faW50X3JhbmdlKDAsIEdfTUFYSU5UKSk7CisgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQo JmJ1aWxkZXIsICJ7c3Z9IiwgInNlc3Npb25faGFuZGxlX3Rva2VuIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmluZyh2YXJpYW50X3N0cmluZykpOworLSAgZ19m cmVlKHZhcmlhbnRfc3RyaW5nKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRf bmV3X3N0cmluZyh2YXJpYW50X3N0cmluZy5nZXQoKSkpOworICAgdmFyaWFudF9zdHJpbmcgPSBn X3N0cmR1cF9wcmludGYoIndlYnJ0YyVkIiwgZ19yYW5kb21faW50X3JhbmdlKDAsIEdfTUFYSU5U KSk7CisgICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgImhhbmRsZV90 b2tlbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ld19zdHJpbmcodmFy aWFudF9zdHJpbmcpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0 cmluZyh2YXJpYW50X3N0cmluZy5nZXQoKSkpOworIAorLSAgcG9ydGFsX2hhbmRsZV8gPSBQcmVw YXJlU2lnbmFsSGFuZGxlKGNvbm5lY3Rpb25fLCB2YXJpYW50X3N0cmluZyk7CisrICBwb3J0YWxf aGFuZGxlXyA9IFByZXBhcmVTaWduYWxIYW5kbGUoY29ubmVjdGlvbl8sIHZhcmlhbnRfc3RyaW5n LmdldCgpKTsKKyAgIHNlc3Npb25fcmVxdWVzdF9zaWduYWxfaWRfID0gU2V0dXBSZXF1ZXN0UmVz cG9uc2VTaWduYWwoCisgICAgICAgcG9ydGFsX2hhbmRsZV8sIE9uU2Vzc2lvblJlcXVlc3RSZXNw b25zZVNpZ25hbCk7CistICBnX2ZyZWUodmFyaWFudF9zdHJpbmcpOworIAorICAgUlRDX0xPRyhM U19JTkZPKSA8PCAiU2NyZWVuIGNhc3Qgc2Vzc2lvbiByZXF1ZXN0ZWQuIjsKKyAgIGdfZGJ1c19w cm94eV9jYWxsKAorQEAgLTUwOSwyMiArOTYzLDIxIEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdp cmU6Ok9uU2Vzc2lvblJlcXVlc3RlZChHREJ1c1Byb3h5ICpwcm94eSwKKyAgIEJhc2VDYXB0dXJl clBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2Vy X2RhdGEpOworICAgUlRDX0RDSEVDSyh0aGF0KTsKKyAKKy0gIEdFcnJvciogZXJyb3IgPSBudWxs cHRyOworLSAgR1ZhcmlhbnQqIHZhcmlhbnQgPSBnX2RidXNfcHJveHlfY2FsbF9maW5pc2gocHJv eHksIHJlc3VsdCwgJmVycm9yKTsKKysgIFNjb3BlZDxHRXJyb3I+IGVycm9yOworKyAgU2NvcGVk PEdWYXJpYW50PiB2YXJpYW50KAorKyAgICAgIGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaChwcm94 eSwgcmVzdWx0LCBlcnJvci5yZWNlaXZlKCkpKTsKKyAgIGlmICghdmFyaWFudCkgeworLSAgICBp ZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExF RCkpCisrICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdf SU9fRVJST1JfQ0FOQ0VMTEVEKSkKKyAgICAgICByZXR1cm47CisgICAgIFJUQ19MT0coTFNfRVJS T1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIGEgc2NyZWVuIGNhc3Qgc2Vzc2lvbjogIgorICAgICAg ICAgICAgICAgICAgICAgICA8PCBlcnJvci0+bWVzc2FnZTsKKy0gICAgZ19lcnJvcl9mcmVlKGVy cm9yKTsKKyAgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CisgICAgIHJldHVy bjsKKyAgIH0KKyAgIFJUQ19MT0coTFNfSU5GTykgPDwgIkluaXRpYWxpemluZyB0aGUgc2NyZWVu IGNhc3Qgc2Vzc2lvbi4iOworIAorLSAgZ2NoYXIqIGhhbmRsZSA9IG51bGxwdHI7CistICBnX3Zh cmlhbnRfZ2V0X2NoaWxkKHZhcmlhbnQsIDAsICJvIiwgJmhhbmRsZSk7CistICBnX3ZhcmlhbnRf dW5yZWYodmFyaWFudCk7CisrICBTY29wZWQ8Z2NoYXI+IGhhbmRsZTsKKysgIGdfdmFyaWFudF9n ZXRfY2hpbGQodmFyaWFudC5nZXQoKSwgMCwgIm8iLCAmaGFuZGxlKTsKKyAgIGlmICghaGFuZGxl KSB7CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSB0aGUg c2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgICBpZiAodGhhdC0+c2Vzc2lvbl9yZXF1ZXN0X3Np Z25hbF9pZF8pIHsKK0BAIC01MzYsOCArOTg5LDYgQEAgdm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2ly ZTo6T25TZXNzaW9uUmVxdWVzdGVkKEdEQnVzUHJveHkgKnByb3h5LAorICAgICByZXR1cm47Cisg ICB9CisgCistICBnX2ZyZWUoaGFuZGxlKTsKKy0KKyAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlN1 YnNjcmliaW5nIHRvIHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9uLiI7CisgfQorIAorQEAgLTU1Nywx MSArMTAwOCwxMSBAQCB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblNlc3Npb25SZXF1ZXN0 UmVzcG9uc2VTaWduYWwoCisgICAgICAgPDwgIlJlY2VpdmVkIHJlc3BvbnNlIGZvciB0aGUgc2Ny ZWVuIGNhc3Qgc2Vzc2lvbiBzdWJzY3JpcHRpb24uIjsKKyAKKyAgIGd1aW50MzIgcG9ydGFsX3Jl c3BvbnNlOworLSAgR1ZhcmlhbnQqIHJlc3BvbnNlX2RhdGE7CistICBnX3ZhcmlhbnRfZ2V0KHBh cmFtZXRlcnMsICIodUBhe3N2fSkiLCAmcG9ydGFsX3Jlc3BvbnNlLCAmcmVzcG9uc2VfZGF0YSk7 CistICBnX3ZhcmlhbnRfbG9va3VwKHJlc3BvbnNlX2RhdGEsICJzZXNzaW9uX2hhbmRsZSIsICJz IiwKKysgIFNjb3BlZDxHVmFyaWFudD4gcmVzcG9uc2VfZGF0YTsKKysgIGdfdmFyaWFudF9nZXQo cGFyYW1ldGVycywgIih1QGF7c3Z9KSIsICZwb3J0YWxfcmVzcG9uc2UsCisrICAgICAgICAgICAg ICAgIHJlc3BvbnNlX2RhdGEucmVjZWl2ZSgpKTsKKysgIGdfdmFyaWFudF9sb29rdXAocmVzcG9u c2VfZGF0YS5nZXQoKSwgInNlc3Npb25faGFuZGxlIiwgInMiLAorICAgICAgICAgICAgICAgICAg ICAmdGhhdC0+c2Vzc2lvbl9oYW5kbGVfKTsKKy0gIGdfdmFyaWFudF91bnJlZihyZXNwb25zZV9k YXRhKTsKKyAKKyAgIGlmICghdGhhdC0+c2Vzc2lvbl9oYW5kbGVfIHx8IHBvcnRhbF9yZXNwb25z ZSkgeworICAgICBSVENfTE9HKExTX0VSUk9SKQorQEAgLTU3NSwyMyArMTAyNiwyMyBAQCB2b2lk IEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblNlc3Npb25SZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisg Cisgdm9pZCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6U291cmNlc1JlcXVlc3QoKSB7CisgICBHVmFy aWFudEJ1aWxkZXIgYnVpbGRlcjsKKy0gIGdjaGFyKiB2YXJpYW50X3N0cmluZzsKKysgIFNjb3Bl ZDxnY2hhcj4gdmFyaWFudF9zdHJpbmc7CisgCisgICBnX3ZhcmlhbnRfYnVpbGRlcl9pbml0KCZi dWlsZGVyLCBHX1ZBUklBTlRfVFlQRV9WQVJESUNUKTsKKyAgIC8vIFdlIHdhbnQgdG8gcmVjb3Jk IG1vbml0b3IgY29udGVudC4KKy0gIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRlciwgIntz dn0iLCAidHlwZXMiLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGdfdmFyaWFudF9uZXdfdWlu dDMyKGNhcHR1cmVfc291cmNlX3R5cGVfKSk7CisrICBnX3ZhcmlhbnRfYnVpbGRlcl9hZGQoCisr ICAgICAgJmJ1aWxkZXIsICJ7c3Z9IiwgInR5cGVzIiwKKysgICAgICBnX3ZhcmlhbnRfbmV3X3Vp bnQzMihzdGF0aWNfY2FzdDx1aW50MzJfdD4oY2FwdHVyZV9zb3VyY2VfdHlwZV8pKSk7CisgICAv LyBXZSBkb24ndCB3YW50IHRvIGFsbG93IHNlbGVjdGlvbiBvZiBtdWx0aXBsZSBzb3VyY2VzLgor ICAgZ192YXJpYW50X2J1aWxkZXJfYWRkKCZidWlsZGVyLCAie3N2fSIsICJtdWx0aXBsZSIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgZ192YXJpYW50X25ld19ib29sZWFuKGZhbHNlKSk7Cisg ICB2YXJpYW50X3N0cmluZyA9IGdfc3RyZHVwX3ByaW50Zigid2VicnRjJWQiLCBnX3JhbmRvbV9p bnRfcmFuZ2UoMCwgR19NQVhJTlQpKTsKKyAgIGdfdmFyaWFudF9idWlsZGVyX2FkZCgmYnVpbGRl ciwgIntzdn0iLCAiaGFuZGxlX3Rva2VuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBnX3Zh cmlhbnRfbmV3X3N0cmluZyh2YXJpYW50X3N0cmluZykpOworKyAgICAgICAgICAgICAgICAgICAg ICAgIGdfdmFyaWFudF9uZXdfc3RyaW5nKHZhcmlhbnRfc3RyaW5nLmdldCgpKSk7CisgCistICBz b3VyY2VzX2hhbmRsZV8gPSBQcmVwYXJlU2lnbmFsSGFuZGxlKGNvbm5lY3Rpb25fLCB2YXJpYW50 X3N0cmluZyk7CisrICBzb3VyY2VzX2hhbmRsZV8gPSBQcmVwYXJlU2lnbmFsSGFuZGxlKGNvbm5l Y3Rpb25fLCB2YXJpYW50X3N0cmluZy5nZXQoKSk7CisgICBzb3VyY2VzX3JlcXVlc3Rfc2lnbmFs X2lkXyA9IFNldHVwUmVxdWVzdFJlc3BvbnNlU2lnbmFsKAorICAgICAgIHNvdXJjZXNfaGFuZGxl XywgT25Tb3VyY2VzUmVxdWVzdFJlc3BvbnNlU2lnbmFsKTsKKy0gIGdfZnJlZSh2YXJpYW50X3N0 cmluZyk7CisgCisgICBSVENfTE9HKExTX0lORk8pIDw8ICJSZXF1ZXN0aW5nIHNvdXJjZXMgZnJv bSB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworICAgZ19kYnVzX3Byb3h5X2NhbGwoCitAQCAt NjA4LDIyICsxMDU5LDIxIEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU291cmNlc1Jl cXVlc3RlZChHREJ1c1Byb3h5ICpwcm94eSwKKyAgIEJhc2VDYXB0dXJlclBpcGVXaXJlKiB0aGF0 ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUqPih1c2VyX2RhdGEpOworICAgUlRD X0RDSEVDSyh0aGF0KTsKKyAKKy0gIEdFcnJvciogZXJyb3IgPSBudWxscHRyOworLSAgR1Zhcmlh bnQqIHZhcmlhbnQgPSBnX2RidXNfcHJveHlfY2FsbF9maW5pc2gocHJveHksIHJlc3VsdCwgJmVy cm9yKTsKKysgIFNjb3BlZDxHRXJyb3I+IGVycm9yOworKyAgU2NvcGVkPEdWYXJpYW50PiB2YXJp YW50KAorKyAgICAgIGdfZGJ1c19wcm94eV9jYWxsX2ZpbmlzaChwcm94eSwgcmVzdWx0LCBlcnJv ci5yZWNlaXZlKCkpKTsKKyAgIGlmICghdmFyaWFudCkgeworLSAgICBpZiAoZ19lcnJvcl9tYXRj aGVzKGVycm9yLCBHX0lPX0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCisrICAgIGlmIChn X2Vycm9yX21hdGNoZXMoZXJyb3IuZ2V0KCksIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VM TEVEKSkKKyAgICAgICByZXR1cm47CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQg dG8gcmVxdWVzdCB0aGUgc291cmNlczogIiA8PCBlcnJvci0+bWVzc2FnZTsKKy0gICAgZ19lcnJv cl9mcmVlKGVycm9yKTsKKyAgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7Cisg ICAgIHJldHVybjsKKyAgIH0KKyAKKyAgIFJUQ19MT0coTFNfSU5GTykgPDwgIlNvdXJjZXMgcmVx dWVzdGVkIGZyb20gdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAKKy0gIGdjaGFyKiBoYW5k bGUgPSBudWxscHRyOworLSAgZ192YXJpYW50X2dldF9jaGlsZCh2YXJpYW50LCAwLCAibyIsICZo YW5kbGUpOworLSAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQpOworKyAgU2NvcGVkPGdjaGFyPiBo YW5kbGU7CisrICBnX3ZhcmlhbnRfZ2V0X2NoaWxkKHZhcmlhbnQuZ2V0KCksIDAsICJvIiwgaGFu ZGxlLnJlY2VpdmUoKSk7CisgICBpZiAoIWhhbmRsZSkgeworICAgICBSVENfTE9HKExTX0VSUk9S KSA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHNjcmVlbiBjYXN0IHNlc3Npb24uIjsKKyAg ICAgaWYgKHRoYXQtPnNvdXJjZXNfcmVxdWVzdF9zaWduYWxfaWRfKSB7CitAQCAtNjM1LDggKzEw ODUsNiBAQCB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblNvdXJjZXNSZXF1ZXN0ZWQoR0RC dXNQcm94eSAqcHJveHksCisgICAgIHJldHVybjsKKyAgIH0KKyAKKy0gIGdfZnJlZShoYW5kbGUp OworLQorICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3Vic2NyaWJlZCB0byBzb3VyY2VzIHNpZ25h bC4iOworIH0KKyAKK0BAIC02NjgsMTcgKzExMTYsMTYgQEAgdm9pZCBCYXNlQ2FwdHVyZXJQaXBl V2lyZTo6T25Tb3VyY2VzUmVxdWVzdFJlc3BvbnNlU2lnbmFsKAorIAorIHZvaWQgQmFzZUNhcHR1 cmVyUGlwZVdpcmU6OlN0YXJ0UmVxdWVzdCgpIHsKKyAgIEdWYXJpYW50QnVpbGRlciBidWlsZGVy OworLSAgZ2NoYXIqIHZhcmlhbnRfc3RyaW5nOworKyAgU2NvcGVkPGdjaGFyPiB2YXJpYW50X3N0 cmluZzsKKyAKKyAgIGdfdmFyaWFudF9idWlsZGVyX2luaXQoJmJ1aWxkZXIsIEdfVkFSSUFOVF9U WVBFX1ZBUkRJQ1QpOworICAgdmFyaWFudF9zdHJpbmcgPSBnX3N0cmR1cF9wcmludGYoIndlYnJ0 YyVkIiwgZ19yYW5kb21faW50X3JhbmdlKDAsIEdfTUFYSU5UKSk7CisgICBnX3ZhcmlhbnRfYnVp bGRlcl9hZGQoJmJ1aWxkZXIsICJ7c3Z9IiwgImhhbmRsZV90b2tlbiIsCistICAgICAgICAgICAg ICAgICAgICAgICAgZ192YXJpYW50X25ld19zdHJpbmcodmFyaWFudF9zdHJpbmcpKTsKKysgICAg ICAgICAgICAgICAgICAgICAgICBnX3ZhcmlhbnRfbmV3X3N0cmluZyh2YXJpYW50X3N0cmluZy5n ZXQoKSkpOworIAorLSAgc3RhcnRfaGFuZGxlXyA9IFByZXBhcmVTaWduYWxIYW5kbGUoY29ubmVj dGlvbl8sIHZhcmlhbnRfc3RyaW5nKTsKKysgIHN0YXJ0X2hhbmRsZV8gPSBQcmVwYXJlU2lnbmFs SGFuZGxlKGNvbm5lY3Rpb25fLCB2YXJpYW50X3N0cmluZy5nZXQoKSk7CisgICBzdGFydF9yZXF1 ZXN0X3NpZ25hbF9pZF8gPQorICAgICAgIFNldHVwUmVxdWVzdFJlc3BvbnNlU2lnbmFsKHN0YXJ0 X2hhbmRsZV8sIE9uU3RhcnRSZXF1ZXN0UmVzcG9uc2VTaWduYWwpOworLSAgZ19mcmVlKHZhcmlh bnRfc3RyaW5nKTsKKyAKKyAgIC8vICJJZGVudGlmaWVyIGZvciB0aGUgYXBwbGljYXRpb24gd2lu ZG93IiwgdGhpcyBpcyBXYXlsYW5kLCBzbyBub3QgIngxMTouLi4iLgorICAgY29uc3QgZ2NoYXIg cGFyZW50X3dpbmRvd1tdID0gIiI7CitAQCAtNjk4LDIzICsxMTQ1LDIyIEBAIHZvaWQgQmFzZUNh cHR1cmVyUGlwZVdpcmU6Ok9uU3RhcnRSZXF1ZXN0ZWQoR0RCdXNQcm94eSAqcHJveHksCisgICBC YXNlQ2FwdHVyZXJQaXBlV2lyZSogdGhhdCA9IHN0YXRpY19jYXN0PEJhc2VDYXB0dXJlclBpcGVX aXJlKj4odXNlcl9kYXRhKTsKKyAgIFJUQ19EQ0hFQ0sodGhhdCk7CisgCistICBHRXJyb3IqIGVy cm9yID0gbnVsbHB0cjsKKy0gIEdWYXJpYW50KiB2YXJpYW50ID0gZ19kYnVzX3Byb3h5X2NhbGxf ZmluaXNoKHByb3h5LCByZXN1bHQsICZlcnJvcik7CisrICBTY29wZWQ8R0Vycm9yPiBlcnJvcjsK KysgIFNjb3BlZDxHVmFyaWFudD4gdmFyaWFudCgKKysgICAgICBnX2RidXNfcHJveHlfY2FsbF9m aW5pc2gocHJveHksIHJlc3VsdCwgZXJyb3IucmVjZWl2ZSgpKSk7CisgICBpZiAoIXZhcmlhbnQp IHsKKy0gICAgaWYgKGdfZXJyb3JfbWF0Y2hlcyhlcnJvciwgR19JT19FUlJPUiwgR19JT19FUlJP Ul9DQU5DRUxMRUQpKQorKyAgICBpZiAoZ19lcnJvcl9tYXRjaGVzKGVycm9yLmdldCgpLCBHX0lP X0VSUk9SLCBHX0lPX0VSUk9SX0NBTkNFTExFRCkpCisgICAgICAgcmV0dXJuOworICAgICBSVENf TE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIHN0YXJ0IHRoZSBzY3JlZW4gY2FzdCBzZXNzaW9u OiAiCisgICAgICAgICAgICAgICAgICAgICAgIDw8IGVycm9yLT5tZXNzYWdlOworLSAgICBnX2Vy cm9yX2ZyZWUoZXJyb3IpOworICAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsK KyAgICAgcmV0dXJuOworICAgfQorIAorICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiSW5pdGlhbGl6 aW5nIHRoZSBzdGFydCBvZiB0aGUgc2NyZWVuIGNhc3Qgc2Vzc2lvbi4iOworIAorLSAgZ2NoYXIq IGhhbmRsZSA9IG51bGxwdHI7CistICBnX3ZhcmlhbnRfZ2V0X2NoaWxkKHZhcmlhbnQsIDAsICJv IiwgJmhhbmRsZSk7CistICBnX3ZhcmlhbnRfdW5yZWYodmFyaWFudCk7CisrICBTY29wZWQ8Z2No YXI+IGhhbmRsZTsKKysgIGdfdmFyaWFudF9nZXRfY2hpbGQodmFyaWFudC5nZXQoKSwgMCwgIm8i LCBoYW5kbGUucmVjZWl2ZSgpKTsKKyAgIGlmICghaGFuZGxlKSB7CisgICAgIFJUQ19MT0coTFNf RVJST1IpCisgICAgICAgICA8PCAiRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIHN0YXJ0IG9mIHRo ZSBzY3JlZW4gY2FzdCBzZXNzaW9uLiI7CitAQCAtNzI3LDggKzExNzMsNiBAQCB2b2lkIEJhc2VD YXB0dXJlclBpcGVXaXJlOjpPblN0YXJ0UmVxdWVzdGVkKEdEQnVzUHJveHkgKnByb3h5LAorICAg ICByZXR1cm47CisgICB9CisgCistICBnX2ZyZWUoaGFuZGxlKTsKKy0KKyAgIFJUQ19MT0coTFNf SU5GTykgPDwgIlN1YnNjcmliZWQgdG8gdGhlIHN0YXJ0IHNpZ25hbC4iOworIH0KKyAKK0BAIC03 NDYsOSArMTE5MCwxMCBAQCB2b2lkIEJhc2VDYXB0dXJlclBpcGVXaXJlOjpPblN0YXJ0UmVxdWVz dFJlc3BvbnNlU2lnbmFsKAorIAorICAgUlRDX0xPRyhMU19JTkZPKSA8PCAiU3RhcnQgc2lnbmFs IHJlY2VpdmVkLiI7CisgICBndWludDMyIHBvcnRhbF9yZXNwb25zZTsKKy0gIEdWYXJpYW50KiBy ZXNwb25zZV9kYXRhOworLSAgR1ZhcmlhbnRJdGVyKiBpdGVyID0gbnVsbHB0cjsKKy0gIGdfdmFy aWFudF9nZXQocGFyYW1ldGVycywgIih1QGF7c3Z9KSIsICZwb3J0YWxfcmVzcG9uc2UsICZyZXNw b25zZV9kYXRhKTsKKysgIFNjb3BlZDxHVmFyaWFudD4gcmVzcG9uc2VfZGF0YTsKKysgIFNjb3Bl ZDxHVmFyaWFudEl0ZXI+IGl0ZXI7CisrICBnX3ZhcmlhbnRfZ2V0KHBhcmFtZXRlcnMsICIodUBh e3N2fSkiLCAmcG9ydGFsX3Jlc3BvbnNlLAorKyAgICAgICAgICAgICAgICByZXNwb25zZV9kYXRh LnJlY2VpdmUoKSk7CisgICBpZiAocG9ydGFsX3Jlc3BvbnNlIHx8ICFyZXNwb25zZV9kYXRhKSB7 CisgICAgIFJUQ19MT0coTFNfRVJST1IpIDw8ICJGYWlsZWQgdG8gc3RhcnQgdGhlIHNjcmVlbiBj YXN0IHNlc3Npb24uIjsKKyAgICAgdGhhdC0+cG9ydGFsX2luaXRfZmFpbGVkXyA9IHRydWU7CitA QCAtNzU4LDI4ICsxMjAzLDI4IEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6Ok9uU3RhcnRS ZXF1ZXN0UmVzcG9uc2VTaWduYWwoCisgICAvLyBBcnJheSBvZiBQaXBlV2lyZSBzdHJlYW1zLiBT ZWUKKyAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mbGF0cGFrL3hkZy1kZXNrdG9wLXBvcnRhbC9i bG9iL21hc3Rlci9kYXRhL29yZy5mcmVlZGVza3RvcC5wb3J0YWwuU2NyZWVuQ2FzdC54bWwKKyAg IC8vIGRvY3VtZW50YXRpb24gZm9yIDxtZXRob2QgbmFtZT0iU3RhcnQiPi4KKy0gIGlmIChnX3Zh cmlhbnRfbG9va3VwKHJlc3BvbnNlX2RhdGEsICJzdHJlYW1zIiwgImEodWF7c3Z9KSIsICZpdGVy KSkgeworLSAgICBHVmFyaWFudCogdmFyaWFudDsKKysgIGlmIChnX3ZhcmlhbnRfbG9va3VwKHJl c3BvbnNlX2RhdGEuZ2V0KCksICJzdHJlYW1zIiwgImEodWF7c3Z9KSIsCisrICAgICAgICAgICAg ICAgICAgICAgICBpdGVyLnJlY2VpdmUoKSkpIHsKKysgICAgU2NvcGVkPEdWYXJpYW50PiB2YXJp YW50OworIAorLSAgICB3aGlsZSAoZ192YXJpYW50X2l0ZXJfbmV4dChpdGVyLCAiQCh1YXtzdn0p IiwgJnZhcmlhbnQpKSB7CisrICAgIHdoaWxlIChnX3ZhcmlhbnRfaXRlcl9uZXh0KGl0ZXIuZ2V0 KCksICJAKHVhe3N2fSkiLCB2YXJpYW50LnJlY2VpdmUoKSkpIHsKKyAgICAgICBndWludDMyIHN0 cmVhbV9pZDsKKy0gICAgICBnaW50MzIgd2lkdGg7CistICAgICAgZ2ludDMyIGhlaWdodDsKKy0g ICAgICBHVmFyaWFudCogb3B0aW9uczsKKysgICAgICBndWludDMyIHR5cGU7CisrICAgICAgU2Nv cGVkPEdWYXJpYW50PiBvcHRpb25zOworIAorLSAgICAgIGdfdmFyaWFudF9nZXQodmFyaWFudCwg Iih1QGF7c3Z9KSIsICZzdHJlYW1faWQsICZvcHRpb25zKTsKKy0gICAgICBSVENfRENIRUNLKG9w dGlvbnMgIT0gbnVsbHB0cik7CisrICAgICAgZ192YXJpYW50X2dldCh2YXJpYW50LmdldCgpLCAi KHVAYXtzdn0pIiwgJnN0cmVhbV9pZCwgb3B0aW9ucy5yZWNlaXZlKCkpOworKyAgICAgIFJUQ19E Q0hFQ0sob3B0aW9ucy5nZXQoKSk7CisgCistICAgICAgZ192YXJpYW50X2xvb2t1cChvcHRpb25z LCAic2l6ZSIsICIoaWkpIiwgJndpZHRoLCAmaGVpZ2h0KTsKKysgICAgICBpZiAoZ192YXJpYW50 X2xvb2t1cChvcHRpb25zLmdldCgpLCAic291cmNlX3R5cGUiLCAidSIsICZ0eXBlKSkgeworKyAg ICAgICAgdGhhdC0+Y2FwdHVyZV9zb3VyY2VfdHlwZV8gPQorKyAgICAgICAgICAgIHN0YXRpY19j YXN0PEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZT4odHlwZSk7CisrICAg ICAgfQorIAorLSAgICAgIHRoYXQtPmRlc2t0b3Bfc2l6ZV8uc2V0KHdpZHRoLCBoZWlnaHQpOwor KyAgICAgIHRoYXQtPnB3X3N0cmVhbV9ub2RlX2lkXyA9IHN0cmVhbV9pZDsKKyAKKy0gICAgICBn X3ZhcmlhbnRfdW5yZWYob3B0aW9ucyk7CistICAgICAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQp OworKyAgICAgIGJyZWFrOworICAgICB9CisgICB9CistICBnX3ZhcmlhbnRfaXRlcl9mcmVlKGl0 ZXIpOworLSAgZ192YXJpYW50X3VucmVmKHJlc3BvbnNlX2RhdGEpOworIAorICAgdGhhdC0+T3Bl blBpcGVXaXJlUmVtb3RlKCk7CisgfQorQEAgLTgwNywzNSArMTI1MiwzMCBAQCB2b2lkIEJhc2VD YXB0dXJlclBpcGVXaXJlOjpPbk9wZW5QaXBlV2lyZVJlbW90ZVJlcXVlc3RlZCgKKyAgIEJhc2VD YXB0dXJlclBpcGVXaXJlKiB0aGF0ID0gc3RhdGljX2Nhc3Q8QmFzZUNhcHR1cmVyUGlwZVdpcmUq Pih1c2VyX2RhdGEpOworICAgUlRDX0RDSEVDSyh0aGF0KTsKKyAKKy0gIEdFcnJvciogZXJyb3Ig PSBudWxscHRyOworLSAgR1VuaXhGRExpc3QqIG91dGxpc3QgPSBudWxscHRyOworLSAgR1Zhcmlh bnQqIHZhcmlhbnQgPSBnX2RidXNfcHJveHlfY2FsbF93aXRoX3VuaXhfZmRfbGlzdF9maW5pc2go CistICAgICAgcHJveHksICZvdXRsaXN0LCByZXN1bHQsICZlcnJvcik7CisrICBTY29wZWQ8R0Vy cm9yPiBlcnJvcjsKKysgIFNjb3BlZDxHVW5peEZETGlzdD4gb3V0bGlzdDsKKysgIFNjb3BlZDxH VmFyaWFudD4gdmFyaWFudChnX2RidXNfcHJveHlfY2FsbF93aXRoX3VuaXhfZmRfbGlzdF9maW5p c2goCisrICAgICAgcHJveHksIG91dGxpc3QucmVjZWl2ZSgpLCByZXN1bHQsIGVycm9yLnJlY2Vp dmUoKSkpOworICAgaWYgKCF2YXJpYW50KSB7CistICAgIGlmIChnX2Vycm9yX21hdGNoZXMoZXJy b3IsIEdfSU9fRVJST1IsIEdfSU9fRVJST1JfQ0FOQ0VMTEVEKSkKKysgICAgaWYgKGdfZXJyb3Jf bWF0Y2hlcyhlcnJvci5nZXQoKSwgR19JT19FUlJPUiwgR19JT19FUlJPUl9DQU5DRUxMRUQpKQor ICAgICAgIHJldHVybjsKKyAgICAgUlRDX0xPRyhMU19FUlJPUikgPDwgIkZhaWxlZCB0byBvcGVu IHRoZSBQaXBlV2lyZSByZW1vdGU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgPDwgZXJyb3It Pm1lc3NhZ2U7CistICAgIGdfZXJyb3JfZnJlZShlcnJvcik7CisgICAgIHRoYXQtPnBvcnRhbF9p bml0X2ZhaWxlZF8gPSB0cnVlOworICAgICByZXR1cm47CisgICB9CisgCisgICBnaW50MzIgaW5k ZXg7CistICBnX3ZhcmlhbnRfZ2V0KHZhcmlhbnQsICIoaCkiLCAmaW5kZXgpOworKyAgZ192YXJp YW50X2dldCh2YXJpYW50LmdldCgpLCAiKGgpIiwgJmluZGV4KTsKKyAKKy0gIGlmICgodGhhdC0+ cHdfZmRfID0gZ191bml4X2ZkX2xpc3RfZ2V0KG91dGxpc3QsIGluZGV4LCAmZXJyb3IpKSA9PSAt MSkgeworKyAgaWYgKCh0aGF0LT5wd19mZF8gPQorKyAgICAgICAgICAgZ191bml4X2ZkX2xpc3Rf Z2V0KG91dGxpc3QuZ2V0KCksIGluZGV4LCBlcnJvci5yZWNlaXZlKCkpKSA9PSAtMSkgeworICAg ICBSVENfTE9HKExTX0VSUk9SKSA8PCAiRmFpbGVkIHRvIGdldCBmaWxlIGRlc2NyaXB0b3IgZnJv bSB0aGUgbGlzdDogIgorICAgICAgICAgICAgICAgICAgICAgICA8PCBlcnJvci0+bWVzc2FnZTsK Ky0gICAgZ19lcnJvcl9mcmVlKGVycm9yKTsKKy0gICAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQp OworICAgICB0aGF0LT5wb3J0YWxfaW5pdF9mYWlsZWRfID0gdHJ1ZTsKKyAgICAgcmV0dXJuOwor ICAgfQorIAorLSAgZ192YXJpYW50X3VucmVmKHZhcmlhbnQpOworLSAgZ19vYmplY3RfdW5yZWYo b3V0bGlzdCk7CistCisgICB0aGF0LT5Jbml0UGlwZVdpcmUoKTsKKyB9CisgCitAQCAtODU0LDE1 ICsxMjk0LDE4IEBAIHZvaWQgQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNhcHR1cmVGcmFtZSgpIHsK KyAgICAgcmV0dXJuOworICAgfQorIAorKyAgd2VicnRjOjpNdXRleExvY2sgbG9jaygmY3VycmVu dF9mcmFtZV9sb2NrXyk7CisgICBpZiAoIWN1cnJlbnRfZnJhbWVfKSB7CisgICAgIGNhbGxiYWNr Xy0+T25DYXB0dXJlUmVzdWx0KFJlc3VsdDo6RVJST1JfVEVNUE9SQVJZLCBudWxscHRyKTsKKyAg ICAgcmV0dXJuOworICAgfQorIAorLSAgc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BGcmFtZT4gcmVz dWx0KG5ldyBCYXNpY0Rlc2t0b3BGcmFtZShkZXNrdG9wX3NpemVfKSk7CisrICBEZXNrdG9wU2l6 ZSBmcmFtZV9zaXplID0gdmlkZW9fc2l6ZV87CisrCisrICBzdGQ6OnVuaXF1ZV9wdHI8RGVza3Rv cEZyYW1lPiByZXN1bHQobmV3IEJhc2ljRGVza3RvcEZyYW1lKGZyYW1lX3NpemUpKTsKKyAgIHJl c3VsdC0+Q29weVBpeGVsc0Zyb20oCistICAgICAgY3VycmVudF9mcmFtZV8sIChkZXNrdG9wX3Np emVfLndpZHRoKCkgKiBrQnl0ZXNQZXJQaXhlbCksCistICAgICAgRGVza3RvcFJlY3Q6Ok1ha2VX SChkZXNrdG9wX3NpemVfLndpZHRoKCksIGRlc2t0b3Bfc2l6ZV8uaGVpZ2h0KCkpKTsKKysgICAg ICBjdXJyZW50X2ZyYW1lXy5nZXQoKSwgKGZyYW1lX3NpemUud2lkdGgoKSAqIGtCeXRlc1BlclBp eGVsKSwKKysgICAgICBEZXNrdG9wUmVjdDo6TWFrZVdIKGZyYW1lX3NpemUud2lkdGgoKSwgZnJh bWVfc2l6ZS5oZWlnaHQoKSkpOworICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgY2FsbGJhY2tfLT5P bkNhcHR1cmVSZXN1bHQoUmVzdWx0OjpFUlJPUl9URU1QT1JBUlksIG51bGxwdHIpOworICAgICBy ZXR1cm47CitAQCAtODg3LDQgKzEzMzAsMTEgQEAgYm9vbCBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6 U2VsZWN0U291cmNlKFNvdXJjZUlkIGlkKSB7CisgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisrLy8g c3RhdGljCisrc3RkOjp1bmlxdWVfcHRyPERlc2t0b3BDYXB0dXJlcj4gQmFzZUNhcHR1cmVyUGlw ZVdpcmU6OkNyZWF0ZVJhd0NhcHR1cmVyKAorKyAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlv bnMmIG9wdGlvbnMpIHsKKysgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEJhc2VDYXB0dXJlclBp cGVXaXJlPigKKysgICAgICBCYXNlQ2FwdHVyZXJQaXBlV2lyZTo6Q2FwdHVyZVNvdXJjZVR5cGU6 OmtBbnkpOworK30KKysKKyB9ICAvLyBuYW1lc3BhY2Ugd2VicnRjCitkaWZmIC0tZ2l0IGEvY2hy b21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jh c2VfY2FwdHVyZXJfcGlwZXdpcmUuaCBiL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1 bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgKK2luZGV4 IGYyOGQ3YTU1OGJjLi43NWQyMGRiZjFkYiAxMDA2NDQKKy0tLSBhL2Nocm9taXVtL3RoaXJkX3Bh cnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3Bp cGV3aXJlLmgKKysrKyBiL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0 b3BfY2FwdHVyZS9saW51eC9iYXNlX2NhcHR1cmVyX3BpcGV3aXJlLmgKK0BAIC0xMCwxOCArMTAs MjMgQEAKKyAKKyAjaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX0JBU0VfQ0FQ VFVSRVJfUElQRVdJUkVfSF8KKyAjZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVY X0JBU0VfQ0FQVFVSRVJfUElQRVdJUkVfSF8KKy0KKyAjaW5jbHVkZSA8Z2lvL2dpby5oPgorICNk ZWZpbmUgdHlwZW9mIF9fdHlwZW9mX18KKyAjaW5jbHVkZSA8cGlwZXdpcmUvcGlwZXdpcmUuaD4K KyAjaW5jbHVkZSA8c3BhL3BhcmFtL3ZpZGVvL2Zvcm1hdC11dGlscy5oPgorKyNpZiBQV19DSEVD S19WRVJTSU9OKDAsIDMsIDApCisrI2luY2x1ZGUgPHNwYS91dGlscy9yZXN1bHQuaD4KKysjZW5k aWYKKyAKKysjaW5jbHVkZSAiYWJzbC90eXBlcy9vcHRpb25hbC5oIgorICNpbmNsdWRlICJtb2R1 bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVfb3B0aW9ucy5oIgorICNpbmNsdWRl ICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgiCisgI2luY2x1ZGUg InJ0Y19iYXNlL2NvbnN0cnVjdG9yX21hZ2ljLmgiCisrI2luY2x1ZGUgInJ0Y19iYXNlL3N5bmNo cm9uaXphdGlvbi9tdXRleC5oIgorIAorIG5hbWVzcGFjZSB3ZWJydGMgeworIAorKyNpZiAhUFdf Q0hFQ0tfVkVSU0lPTigwLCAzLCAwKQorIGNsYXNzIFBpcGVXaXJlVHlwZSB7CisgIHB1YmxpYzoK KyAgIHNwYV90eXBlX21lZGlhX3R5cGUgbWVkaWFfdHlwZTsKK0BAIC0yOSwxNCArMzQsMjUgQEAg Y2xhc3MgUGlwZVdpcmVUeXBlIHsKKyAgIHNwYV90eXBlX2Zvcm1hdF92aWRlbyBmb3JtYXRfdmlk ZW87CisgICBzcGFfdHlwZV92aWRlb19mb3JtYXQgdmlkZW9fZm9ybWF0OworIH07CisrI2VuZGlm CisgCisgY2xhc3MgQmFzZUNhcHR1cmVyUGlwZVdpcmUgOiBwdWJsaWMgRGVza3RvcENhcHR1cmVy IHsKKyAgcHVibGljOgorLSAgZW51bSBDYXB0dXJlU291cmNlVHlwZSB7IFNjcmVlbiA9IDEsIFdp bmRvdyB9OworKyAgLy8gVmFsdWVzIGFyZSBzZXQgYmFzZWQgb24gc291cmNlIHR5cGUgcHJvcGVy dHkgaW4KKysgIC8vIHhkZy1kZXNrdG9wLXBvcnRhbC9zY3JlZW5jYXN0CisrICAvLyBodHRwczov L2dpdGh1Yi5jb20vZmxhdHBhay94ZGctZGVza3RvcC1wb3J0YWwvYmxvYi9tYXN0ZXIvZGF0YS9v cmcuZnJlZWRlc2t0b3AucG9ydGFsLlNjcmVlbkNhc3QueG1sCisrICBlbnVtIGNsYXNzIENhcHR1 cmVTb3VyY2VUeXBlIDogdWludDMyX3QgeworKyAgICBrU2NyZWVuID0gMGIwMSwKKysgICAga1dp bmRvdyA9IDBiMTAsCisrICAgIGtBbnkgPSAwYjExCisrICB9OworIAorICAgZXhwbGljaXQgQmFz ZUNhcHR1cmVyUGlwZVdpcmUoQ2FwdHVyZVNvdXJjZVR5cGUgc291cmNlX3R5cGUpOworICAgfkJh c2VDYXB0dXJlclBpcGVXaXJlKCkgb3ZlcnJpZGU7CisgCisrICBzdGF0aWMgc3RkOjp1bmlxdWVf cHRyPERlc2t0b3BDYXB0dXJlcj4gQ3JlYXRlUmF3Q2FwdHVyZXIoCisrICAgICAgY29uc3QgRGVz a3RvcENhcHR1cmVPcHRpb25zJiBvcHRpb25zKTsKKysKKyAgIC8vIERlc2t0b3BDYXB0dXJlciBp bnRlcmZhY2UuCisgICB2b2lkIFN0YXJ0KENhbGxiYWNrKiBkZWxlZ2F0ZSkgb3ZlcnJpZGU7Cisg ICB2b2lkIENhcHR1cmVGcmFtZSgpIG92ZXJyaWRlOworQEAgLTQ1LDYgKzYxLDIxIEBAIGNsYXNz IEJhc2VDYXB0dXJlclBpcGVXaXJlIDogcHVibGljIERlc2t0b3BDYXB0dXJlciB7CisgCisgIHBy aXZhdGU6CisgICAvLyBQaXBlV2lyZSB0eXBlcyAtLT4KKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigw LCAzLCAwKQorKyAgc3RydWN0IHB3X2NvbnRleHQqIHB3X2NvbnRleHRfID0gbnVsbHB0cjsKKysg IHN0cnVjdCBwd19jb3JlKiBwd19jb3JlXyA9IG51bGxwdHI7CisrICBzdHJ1Y3QgcHdfc3RyZWFt KiBwd19zdHJlYW1fID0gbnVsbHB0cjsKKysgIHN0cnVjdCBwd190aHJlYWRfbG9vcCogcHdfbWFp bl9sb29wXyA9IG51bGxwdHI7CisrCisrICBzcGFfaG9vayBzcGFfY29yZV9saXN0ZW5lcl87Cisr ICBzcGFfaG9vayBzcGFfc3RyZWFtX2xpc3RlbmVyXzsKKysKKysgIC8vIGV2ZW50IGhhbmRsZXJz CisrICBwd19jb3JlX2V2ZW50cyBwd19jb3JlX2V2ZW50c18gPSB7fTsKKysgIHB3X3N0cmVhbV9l dmVudHMgcHdfc3RyZWFtX2V2ZW50c18gPSB7fTsKKysKKysgIHN0cnVjdCBzcGFfdmlkZW9faW5m b19yYXcgc3BhX3ZpZGVvX2Zvcm1hdF87CisrI2Vsc2UKKyAgIHB3X2NvcmUqIHB3X2NvcmVfID0g bnVsbHB0cjsKKyAgIHB3X3R5cGUqIHB3X2NvcmVfdHlwZV8gPSBudWxscHRyOworICAgcHdfc3Ry ZWFtKiBwd19zdHJlYW1fID0gbnVsbHB0cjsKK0BAIC02MCwxMSArOTEsMTMgQEAgY2xhc3MgQmFz ZUNhcHR1cmVyUGlwZVdpcmUgOiBwdWJsaWMgRGVza3RvcENhcHR1cmVyIHsKKyAgIHB3X3JlbW90 ZV9ldmVudHMgcHdfcmVtb3RlX2V2ZW50c18gPSB7fTsKKyAKKyAgIHNwYV92aWRlb19pbmZvX3Jh dyogc3BhX3ZpZGVvX2Zvcm1hdF8gPSBudWxscHRyOworKyNlbmRpZgorIAorKyAgZ3VpbnQzMiBw d19zdHJlYW1fbm9kZV9pZF8gPSAwOworICAgZ2ludDMyIHB3X2ZkXyA9IC0xOworIAorICAgQ2Fw dHVyZVNvdXJjZVR5cGUgY2FwdHVyZV9zb3VyY2VfdHlwZV8gPQorLSAgICAgIEJhc2VDYXB0dXJl clBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZTo6U2NyZWVuOworKyAgICAgIEJhc2VDYXB0dXJl clBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZTo6a1NjcmVlbjsKKyAKKyAgIC8vIDwtLSBlbmQg b2YgUGlwZVdpcmUgdHlwZXMKKyAKK0BAIC03OSwxMCArMTEyLDEyIEBAIGNsYXNzIEJhc2VDYXB0 dXJlclBpcGVXaXJlIDogcHVibGljIERlc2t0b3BDYXB0dXJlciB7CisgICBndWludCBzb3VyY2Vz X3JlcXVlc3Rfc2lnbmFsX2lkXyA9IDA7CisgICBndWludCBzdGFydF9yZXF1ZXN0X3NpZ25hbF9p ZF8gPSAwOworIAorKyAgRGVza3RvcFNpemUgdmlkZW9fc2l6ZV87CisgICBEZXNrdG9wU2l6ZSBk ZXNrdG9wX3NpemVfID0ge307CisgICBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMgb3B0aW9uc18gPSB7 fTsKKyAKKy0gIHVpbnQ4X3QqIGN1cnJlbnRfZnJhbWVfID0gbnVsbHB0cjsKKysgIHdlYnJ0Yzo6 TXV0ZXggY3VycmVudF9mcmFtZV9sb2NrXzsKKysgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90W10+ IGN1cnJlbnRfZnJhbWVfOworICAgQ2FsbGJhY2sqIGNhbGxiYWNrXyA9IG51bGxwdHI7CisgCisg ICBib29sIHBvcnRhbF9pbml0X2ZhaWxlZF8gPSBmYWxzZTsKK0BAIC05MSwyMSArMTI2LDMyIEBA IGNsYXNzIEJhc2VDYXB0dXJlclBpcGVXaXJlIDogcHVibGljIERlc2t0b3BDYXB0dXJlciB7Cisg ICB2b2lkIEluaXRQaXBlV2lyZSgpOworICAgdm9pZCBJbml0UGlwZVdpcmVUeXBlcygpOworIAor LSAgdm9pZCBDcmVhdGVSZWNlaXZpbmdTdHJlYW0oKTsKKysgIHB3X3N0cmVhbSogQ3JlYXRlUmVj ZWl2aW5nU3RyZWFtKCk7CisgICB2b2lkIEhhbmRsZUJ1ZmZlcihwd19idWZmZXIqIGJ1ZmZlcik7 CisgCisgICB2b2lkIENvbnZlcnRSR0J4VG9CR1J4KHVpbnQ4X3QqIGZyYW1lLCB1aW50MzJfdCBz aXplKTsKKyAKKysjaWYgUFdfQ0hFQ0tfVkVSU0lPTigwLCAzLCAwKQorKyAgc3RhdGljIHZvaWQg T25Db3JlRXJyb3Iodm9pZCogZGF0YSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQz Ml90IGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlcSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgIGludCByZXMsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyKiBtZXNzYWdlKTsKKysgIHN0YXRpYyB2b2lkIE9uU3RyZWFtUGFyYW1DaGFuZ2VkKHZv aWQqIGRhdGEsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBp ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzcGFf cG9kKiBmb3JtYXQpOworKyNlbHNlCisgICBzdGF0aWMgdm9pZCBPblN0YXRlQ2hhbmdlZCh2b2lk KiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHdfcmVtb3RlX3N0YXRlIG9s ZF9zdGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3X3JlbW90ZV9zdGF0ZSBz dGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGVycm9yKTsK KysgIHN0YXRpYyB2b2lkIE9uU3RyZWFtRm9ybWF0Q2hhbmdlZCh2b2lkKiBkYXRhLCBjb25zdCBz dHJ1Y3Qgc3BhX3BvZCogZm9ybWF0KTsKKysjZW5kaWYKKyAgIHN0YXRpYyB2b2lkIE9uU3RyZWFt U3RhdGVDaGFuZ2VkKHZvaWQqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwd19zdHJlYW1fc3RhdGUgb2xkX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcHdfc3RyZWFtX3N0YXRlIHN0YXRlLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciogZXJyb3JfbWVzc2FnZSk7CisgCistICBzdGF0aWMg dm9pZCBPblN0cmVhbUZvcm1hdENoYW5nZWQodm9pZCogZGF0YSwgY29uc3Qgc3RydWN0IHNwYV9w b2QqIGZvcm1hdCk7CisgICBzdGF0aWMgdm9pZCBPblN0cmVhbVByb2Nlc3Modm9pZCogZGF0YSk7 CisgICBzdGF0aWMgdm9pZCBPbk5ld0J1ZmZlcih2b2lkKiBkYXRhLCB1aW50MzJfdCBpZCk7Cisg CitkaWZmIC0tZ2l0IGEvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3Rv cF9jYXB0dXJlL2xpbnV4L3BpcGV3aXJlLnNpZ3MgYi9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJy dGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvcGlwZXdpcmUuc2lncworZGVsZXRlZCBm aWxlIG1vZGUgMTAwNjQ0CitpbmRleCAzZTIxZTlkYzA3Yy4uMDAwMDAwMDAwMDAKKy0tLSBhL2No cm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9w aXBld2lyZS5zaWdzCisrKysgL2Rldi9udWxsCitAQCAtMSw0NCArMCwwIEBACistLy8gQ29weXJp Z2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CistLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg bGljZW5zZSB0aGF0IGNhbiBiZQorLS8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCistCist Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0vLyBG dW5jdGlvbnMgZnJvbSBQaXBlV2lyZSB1c2VkIGluIGNhcHR1cmVyIGNvZGUuCistLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0KKy0vLyBjb3JlLmgK Ky12b2lkIHB3X2NvcmVfZGVzdHJveShwd19jb3JlICpjb3JlKTsKKy1wd190eXBlICpwd19jb3Jl X2dldF90eXBlKHB3X2NvcmUgKmNvcmUpOworLXB3X2NvcmUgKiBwd19jb3JlX25ldyhwd19sb29w ICptYWluX2xvb3AsIHB3X3Byb3BlcnRpZXMgKnByb3BzKTsKKy0KKy0vLyBsb29wLmgKKy12b2lk IHB3X2xvb3BfZGVzdHJveShwd19sb29wICpsb29wKTsKKy1wd19sb29wICogcHdfbG9vcF9uZXco cHdfcHJvcGVydGllcyAqcHJvcGVydGllcyk7CistCistLy8gcGlwZXdpcmUuaAorLXZvaWQgcHdf aW5pdChpbnQgKmFyZ2MsIGNoYXIgKiphcmd2W10pOworLQorLS8vIHByb3BlcnRpZXMuaAorLXB3 X3Byb3BlcnRpZXMgKiBwd19wcm9wZXJ0aWVzX25ld19zdHJpbmcoY29uc3QgY2hhciAqYXJncyk7 CistCistLy8gcmVtb3RlLmgKKy12b2lkIHB3X3JlbW90ZV9hZGRfbGlzdGVuZXIocHdfcmVtb3Rl ICpyZW1vdGUsIHNwYV9ob29rICpsaXN0ZW5lciwgY29uc3QgcHdfcmVtb3RlX2V2ZW50cyAqZXZl bnRzLCB2b2lkICpkYXRhKTsKKy1pbnQgcHdfcmVtb3RlX2Nvbm5lY3RfZmQocHdfcmVtb3RlICpy ZW1vdGUsIGludCBmZCk7Cistdm9pZCBwd19yZW1vdGVfZGVzdHJveShwd19yZW1vdGUgKnJlbW90 ZSk7CistcHdfcmVtb3RlICogcHdfcmVtb3RlX25ldyhwd19jb3JlICpjb3JlLCBwd19wcm9wZXJ0 aWVzICpwcm9wZXJ0aWVzLCBzaXplX3QgdXNlcl9kYXRhX3NpemUpOworLQorLS8vIHN0cmVhbS5o Cistdm9pZCBwd19zdHJlYW1fYWRkX2xpc3RlbmVyKHB3X3N0cmVhbSAqc3RyZWFtLCBzcGFfaG9v ayAqbGlzdGVuZXIsIGNvbnN0IHB3X3N0cmVhbV9ldmVudHMgKmV2ZW50cywgdm9pZCAqZGF0YSk7 CistaW50IHB3X3N0cmVhbV9jb25uZWN0KHB3X3N0cmVhbSAqc3RyZWFtLCBlbnVtIHB3X2RpcmVj dGlvbiBkaXJlY3Rpb24sIGNvbnN0IGNoYXIgKnBvcnRfcGF0aCwgZW51bSBwd19zdHJlYW1fZmxh Z3MgZmxhZ3MsIGNvbnN0IHNwYV9wb2QgKipwYXJhbXMsIHVpbnQzMl90IG5fcGFyYW1zKTsKKy1w d19idWZmZXIgKnB3X3N0cmVhbV9kZXF1ZXVlX2J1ZmZlcihwd19zdHJlYW0gKnN0cmVhbSk7Cist dm9pZCBwd19zdHJlYW1fZGVzdHJveShwd19zdHJlYW0gKnN0cmVhbSk7Cistdm9pZCBwd19zdHJl YW1fZmluaXNoX2Zvcm1hdChwd19zdHJlYW0gKnN0cmVhbSwgaW50IHJlcywgY29uc3Qgc3BhX3Bv ZCAqKnBhcmFtcywgdWludDMyX3Qgbl9wYXJhbXMpOworLXB3X3N0cmVhbSAqIHB3X3N0cmVhbV9u ZXcocHdfcmVtb3RlICpyZW1vdGUsIGNvbnN0IGNoYXIgKm5hbWUsIHB3X3Byb3BlcnRpZXMgKnBy b3BzKTsKKy1pbnQgcHdfc3RyZWFtX3F1ZXVlX2J1ZmZlcihwd19zdHJlYW0gKnN0cmVhbSwgcHdf YnVmZmVyICpidWZmZXIpOworLWludCBwd19zdHJlYW1fc2V0X2FjdGl2ZShwd19zdHJlYW0gKnN0 cmVhbSwgYm9vbCBhY3RpdmUpOworLQorLS8vIHRocmVhZC1sb29wLmgKKy12b2lkIHB3X3RocmVh ZF9sb29wX2Rlc3Ryb3kocHdfdGhyZWFkX2xvb3AgKmxvb3ApOworLXB3X3RocmVhZF9sb29wICog cHdfdGhyZWFkX2xvb3BfbmV3KHB3X2xvb3AgKmxvb3AsIGNvbnN0IGNoYXIgKm5hbWUpOworLWlu dCBwd190aHJlYWRfbG9vcF9zdGFydChwd190aHJlYWRfbG9vcCAqbG9vcCk7Cistdm9pZCBwd190 aHJlYWRfbG9vcF9zdG9wKHB3X3RocmVhZF9sb29wICpsb29wKTsKK2RpZmYgLS1naXQgYS9jaHJv bWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2Ny ZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmNjIGIvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21v ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5jYwor ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCBmZTY3MjE0MGNjYS4uMDAwMDAwMDAwMDAK Ky0tLSBhL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVy ZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuY2MKKysrKyAvZGV2L251bGwKK0BAIC0x LDI5ICswLDAgQEAKKy0vKgorLSAqICBDb3B5cmlnaHQgMjAxOCBUaGUgV2ViUlRDIHByb2plY3Qg YXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy0gKgorLSAqICBVc2Ugb2YgdGhpcyBzb3Vy Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlCistICogIHRoYXQgY2Fu IGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZQor LSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgZ3Jh bnQgY2FuIGJlIGZvdW5kCistICogIGluIHRoZSBmaWxlIFBBVEVOVFMuICBBbGwgY29udHJpYnV0 aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKy0gKiAgYmUgZm91bmQgaW4gdGhlIEFVVEhPUlMgZmls ZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCistICovCistCistI2luY2x1ZGUgIm1v ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3NjcmVlbl9jYXB0dXJlcl9waXBld2lyZS5oIgor LQorLSNpbmNsdWRlIDxtZW1vcnk+CistCistCistbmFtZXNwYWNlIHdlYnJ0YyB7CistCistU2Ny ZWVuQ2FwdHVyZXJQaXBlV2lyZTo6U2NyZWVuQ2FwdHVyZXJQaXBlV2lyZSgpCistICAgIDogQmFz ZUNhcHR1cmVyUGlwZVdpcmUoQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNhcHR1cmVTb3VyY2VUeXBl OjpTY3JlZW4pIHt9CistU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZTo6flNjcmVlbkNhcHR1cmVyUGlw ZVdpcmUoKSB7fQorLQorLS8vIHN0YXRpYworLXN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9wQ2FwdHVy ZXI+CistU2NyZWVuQ2FwdHVyZXJQaXBlV2lyZTo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVyZXIoCist ICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworLSAgcmV0dXJuIHN0 ZDo6bWFrZV91bmlxdWU8U2NyZWVuQ2FwdHVyZXJQaXBlV2lyZT4oKTsKKy19CistCistfSAgLy8g bmFtZXNwYWNlIHdlYnJ0YworZGlmZiAtLWdpdCBhL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0 Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUu aCBiL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9s aW51eC9zY3JlZW5fY2FwdHVyZXJfcGlwZXdpcmUuaAorZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCA2NmRjZDY4MGUwNi4uMDAwMDAwMDAwMDAKKy0tLSBhL2Nocm9taXVtL3RoaXJkX3Bh cnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9zY3JlZW5fY2FwdHVyZXJf cGlwZXdpcmUuaAorKysrIC9kZXYvbnVsbAorQEAgLTEsMzMgKzAsMCBAQAorLS8qCistICogIENv cHlyaWdodCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2Vy dmVkLgorLSAqCistICogIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEg QlNELXN0eWxlIGxpY2Vuc2UKKy0gKiAgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlCistICogIHRyZWUuIEFuIGFkZGl0aW9uYWwg aW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBncmFudCBjYW4gYmUgZm91bmQKKy0gKiAgaW4g dGhlIGZpbGUgUEFURU5UUy4gIEFsbCBjb250cmlidXRpbmcgcHJvamVjdCBhdXRob3JzIG1heQor LSAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3Vy Y2UgdHJlZS4KKy0gKi8KKy0KKy0jaWZuZGVmIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVY X1NDUkVFTl9DQVBUVVJFUl9QSVBFV0lSRV9IXworLSNkZWZpbmUgTU9EVUxFU19ERVNLVE9QX0NB UFRVUkVfTElOVVhfU0NSRUVOX0NBUFRVUkVSX1BJUEVXSVJFX0hfCistCistI2luY2x1ZGUgPG1l bW9yeT4KKy0KKy0jaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvYmFzZV9j YXB0dXJlcl9waXBld2lyZS5oIgorLQorLW5hbWVzcGFjZSB3ZWJydGMgeworLQorLWNsYXNzIFNj cmVlbkNhcHR1cmVyUGlwZVdpcmUgOiBwdWJsaWMgQmFzZUNhcHR1cmVyUGlwZVdpcmUgeworLSBw dWJsaWM6CistICBTY3JlZW5DYXB0dXJlclBpcGVXaXJlKCk7CistICB+U2NyZWVuQ2FwdHVyZXJQ aXBlV2lyZSgpIG92ZXJyaWRlOworLQorLSAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxEZXNrdG9w Q2FwdHVyZXI+IENyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKAorLSAgICAgIGNvbnN0IERlc2t0b3BD YXB0dXJlT3B0aW9ucyYgb3B0aW9ucyk7CistCistICBSVENfRElTQUxMT1dfQ09QWV9BTkRfQVNT SUdOKFNjcmVlbkNhcHR1cmVyUGlwZVdpcmUpOworLX07CistCistfSAgLy8gbmFtZXNwYWNlIHdl YnJ0YworLQorLSNlbmRpZiAgLy8gTU9EVUxFU19ERVNLVE9QX0NBUFRVUkVfTElOVVhfU0NSRUVO X0NBUFRVUkVSX1BJUEVXSVJFX0hfCitkaWZmIC0tZ2l0IGEvY2hyb21pdW0vdGhpcmRfcGFydHkv d2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl9waXBl d2lyZS5jYyBiL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw dHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuY2MKK2RlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggYjQ1NTkxNTZkY2UuLjAwMDAwMDAwMDAwCistLS0gYS9jaHJvbWl1bS90 aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2Nh cHR1cmVyX3BpcGV3aXJlLmNjCisrKysgL2Rldi9udWxsCitAQCAtMSwyOSArMCwwIEBACistLyoK Ky0gKiAgQ29weXJpZ2h0IDIwMTggVGhlIFdlYlJUQyBwcm9qZWN0IGF1dGhvcnMuIEFsbCBSaWdo dHMgUmVzZXJ2ZWQuCistICoKKy0gKiAgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJu ZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZQorLSAqICB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUg TElDRU5TRSBmaWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UKKy0gKiAgdHJlZS4gQW4gYWRk aXRpb25hbCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIGdyYW50IGNhbiBiZSBmb3VuZAor LSAqICBpbiB0aGUgZmlsZSBQQVRFTlRTLiAgQWxsIGNvbnRyaWJ1dGluZyBwcm9qZWN0IGF1dGhv cnMgbWF5CistICogIGJlIGZvdW5kIGluIHRoZSBBVVRIT1JTIGZpbGUgaW4gdGhlIHJvb3Qgb2Yg dGhlIHNvdXJjZSB0cmVlLgorLSAqLworLQorLSNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2Fw dHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfcGlwZXdpcmUuaCIKKy0KKy0jaW5jbHVkZSA8bWVt b3J5PgorLQorLQorLW5hbWVzcGFjZSB3ZWJydGMgeworLQorLVdpbmRvd0NhcHR1cmVyUGlwZVdp cmU6OldpbmRvd0NhcHR1cmVyUGlwZVdpcmUoKQorLSAgICA6IEJhc2VDYXB0dXJlclBpcGVXaXJl KEJhc2VDYXB0dXJlclBpcGVXaXJlOjpDYXB0dXJlU291cmNlVHlwZTo6V2luZG93KSB7fQorLVdp bmRvd0NhcHR1cmVyUGlwZVdpcmU6On5XaW5kb3dDYXB0dXJlclBpcGVXaXJlKCkge30KKy0KKy0v LyBzdGF0aWMKKy1zdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPgorLVdpbmRvd0NhcHR1 cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVyKAorLSAgICBjb25zdCBEZXNrdG9w Q2FwdHVyZU9wdGlvbnMmIG9wdGlvbnMpIHsKKy0gIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFdp bmRvd0NhcHR1cmVyUGlwZVdpcmU+KCk7CistfQorLQorLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMK K2RpZmYgLS1naXQgYS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9w X2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmggYi9jaHJvbWl1bS90aGly ZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1 cmVyX3BpcGV3aXJlLmgKK2RlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggN2YxODRlZjI5 OTkuLjAwMDAwMDAwMDAwCistLS0gYS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxl cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmgKKysrKyAv ZGV2L251bGwKK0BAIC0xLDMzICswLDAgQEAKKy0vKgorLSAqICBDb3B5cmlnaHQgMjAxOCBUaGUg V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKy0gKgorLSAqICBV c2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNl CistICogIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg b2YgdGhlIHNvdXJjZQorLSAqICB0cmVlLiBBbiBhZGRpdGlvbmFsIGludGVsbGVjdHVhbCBwcm9w ZXJ0eSByaWdodHMgZ3JhbnQgY2FuIGJlIGZvdW5kCistICogIGluIHRoZSBmaWxlIFBBVEVOVFMu ICBBbGwgY29udHJpYnV0aW5nIHByb2plY3QgYXV0aG9ycyBtYXkKKy0gKiAgYmUgZm91bmQgaW4g dGhlIEFVVEhPUlMgZmlsZSBpbiB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuCistICovCist CistI2lmbmRlZiBNT0RVTEVTX0RFU0tUT1BfQ0FQVFVSRV9MSU5VWF9XSU5ET1dfQ0FQVFVSRVJf UElQRVdJUkVfSF8KKy0jZGVmaW5lIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRP V19DQVBUVVJFUl9QSVBFV0lSRV9IXworLQorLSNpbmNsdWRlIDxtZW1vcnk+CistCistI2luY2x1 ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdpcmUu aCIKKy0KKy1uYW1lc3BhY2Ugd2VicnRjIHsKKy0KKy1jbGFzcyBXaW5kb3dDYXB0dXJlclBpcGVX aXJlIDogcHVibGljIEJhc2VDYXB0dXJlclBpcGVXaXJlIHsKKy0gcHVibGljOgorLSAgV2luZG93 Q2FwdHVyZXJQaXBlV2lyZSgpOworLSAgfldpbmRvd0NhcHR1cmVyUGlwZVdpcmUoKSBvdmVycmlk ZTsKKy0KKy0gIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8RGVza3RvcENhcHR1cmVyPiBDcmVhdGVS YXdXaW5kb3dDYXB0dXJlcigKKy0gICAgICBjb25zdCBEZXNrdG9wQ2FwdHVyZU9wdGlvbnMmIG9w dGlvbnMpOworLQorLSAgUlRDX0RJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihXaW5kb3dDYXB0dXJl clBpcGVXaXJlKTsKKy19OworLQorLX0gIC8vIG5hbWVzcGFjZSB3ZWJydGMKKy0KKy0jZW5kaWYg IC8vIE1PRFVMRVNfREVTS1RPUF9DQVBUVVJFX0xJTlVYX1dJTkRPV19DQVBUVVJFUl9QSVBFV0lS RV9IXworZGlmZiAtLWdpdCBhL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rl c2t0b3BfY2FwdHVyZS9zY3JlZW5fY2FwdHVyZXJfbGludXguY2MgYi9jaHJvbWl1bS90aGlyZF9w YXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2xpbnV4 LmNjCitpbmRleCA4MmRiYWU0ODEzNy4uZWQ0OGI3ZDZkNTkgMTAwNjQ0CistLS0gYS9jaHJvbWl1 bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1 cmVyX2xpbnV4LmNjCisrKysgYi9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9k ZXNrdG9wX2NhcHR1cmUvc2NyZWVuX2NhcHR1cmVyX2xpbnV4LmNjCitAQCAtMTQsNyArMTQsNyBA QAorICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVyLmgi CisgCisgI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKy0jaW5jbHVkZSAibW9kdWxl cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvc2NyZWVuX2NhcHR1cmVyX3BpcGV3aXJlLmgiCisrI2lu Y2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlwZXdp cmUuaCIKKyAjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKyAKKyAjaWYg ZGVmaW5lZChXRUJSVENfVVNFX1gxMSkKK0BAIC0yOCw3ICsyOCw3IEBAIHN0ZDo6dW5pcXVlX3B0 cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3U2NyZWVuQ2FwdHVy ZXIoCisgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICNpZiBk ZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisgICBpZiAob3B0aW9ucy5hbGxvd19waXBld2ly ZSgpICYmIERlc2t0b3BDYXB0dXJlcjo6SXNSdW5uaW5nVW5kZXJXYXlsYW5kKCkpIHsKKy0gICAg cmV0dXJuIFNjcmVlbkNhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd1NjcmVlbkNhcHR1cmVyKG9w dGlvbnMpOworKyAgICByZXR1cm4gQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd0NhcHR1 cmVyKG9wdGlvbnMpOworICAgfQorICNlbmRpZiAgLy8gZGVmaW5lZChXRUJSVENfVVNFX1BJUEVX SVJFKQorIAorZGlmZiAtLWdpdCBhL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVz L2Rlc2t0b3BfY2FwdHVyZS93aW5kb3dfY2FwdHVyZXJfbGludXguY2MgYi9jaHJvbWl1bS90aGly ZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX2xp bnV4LmNjCitpbmRleCA0MWRiZjgzNmIwMy4uMmIxNDJhZTNiOTIgMTAwNjQ0CistLS0gYS9jaHJv bWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2Nh cHR1cmVyX2xpbnV4LmNjCisrKysgYi9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxl cy9kZXNrdG9wX2NhcHR1cmUvd2luZG93X2NhcHR1cmVyX2xpbnV4LmNjCitAQCAtMTQsNyArMTQs NyBAQAorICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2NhcHR1cmVy LmgiCisgCisgI2lmIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKy0jaW5jbHVkZSAibW9k dWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3BpcGV3aXJlLmgiCisr I2luY2x1ZGUgIm1vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L2Jhc2VfY2FwdHVyZXJfcGlw ZXdpcmUuaCIKKyAjZW5kaWYgIC8vIGRlZmluZWQoV0VCUlRDX1VTRV9QSVBFV0lSRSkKKyAKKyAj aWYgZGVmaW5lZChXRUJSVENfVVNFX1gxMSkKK0BAIC0yOCw3ICsyOCw3IEBAIHN0ZDo6dW5pcXVl X3B0cjxEZXNrdG9wQ2FwdHVyZXI+IERlc2t0b3BDYXB0dXJlcjo6Q3JlYXRlUmF3V2luZG93Q2Fw dHVyZXIoCisgICAgIGNvbnN0IERlc2t0b3BDYXB0dXJlT3B0aW9ucyYgb3B0aW9ucykgeworICNp ZiBkZWZpbmVkKFdFQlJUQ19VU0VfUElQRVdJUkUpCisgICBpZiAob3B0aW9ucy5hbGxvd19waXBl d2lyZSgpICYmIERlc2t0b3BDYXB0dXJlcjo6SXNSdW5uaW5nVW5kZXJXYXlsYW5kKCkpIHsKKy0g ICAgcmV0dXJuIFdpbmRvd0NhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd1dpbmRvd0NhcHR1cmVy KG9wdGlvbnMpOworKyAgICByZXR1cm4gQmFzZUNhcHR1cmVyUGlwZVdpcmU6OkNyZWF0ZVJhd0Nh cHR1cmVyKG9wdGlvbnMpOworICAgfQorICNlbmRpZiAgLy8gZGVmaW5lZChXRUJSVENfVVNFX1BJ UEVXSVJFKQorIAorZGlmZiAtLWdpdCBhL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy93ZWJy dGMuZ25pIGIvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL3dlYnJ0Yy5nbmkKK2luZGV4IGNh OGFjZGJmMjU5Li41MDVjOTc1Y2VjZSAxMDA2NDQKKy0tLSBhL2Nocm9taXVtL3RoaXJkX3BhcnR5 L3dlYnJ0Yy93ZWJydGMuZ25pCisrKysgYi9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvd2Vi cnRjLmduaQorQEAgLTExNyw2ICsxMTcsMTAgQEAgZGVjbGFyZV9hcmdzKCkgeworICAgIyBTZXQg dGhpcyB0byBsaW5rIFBpcGVXaXJlIGRpcmVjdGx5IGluc3RlYWQgb2YgdXNpbmcgdGhlIGRsb3Bl bi4KKyAgIHJ0Y19saW5rX3BpcGV3aXJlID0gZmFsc2UKKyAKKysgICMgU2V0IHRoaXMgdG8gdXNl IGNlcnRhaW4gUGlwZVdpcmUgdmVyc2lvbgorKyAgIyBDdXJyZW50bHkgd2Ugc3VwcG9ydCBQaXBl V2lyZSAwLjIgKGRlZmF1bHQpIGFuZCBQaXBlV2lyZSAwLjMKKysgIHJ0Y19waXBld2lyZV92ZXJz aW9uID0gIjAuMyIKKysKKyAgICMgRW5hYmxlIHRvIHVzZSB0aGUgTW96aWxsYSBpbnRlcm5hbCBz ZXR0aW5ncy4KKyAgIGJ1aWxkX3dpdGhfbW96aWxsYSA9IGZhbHNlCisgCitkaWZmIC0tZ2l0IGEv Y2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4 L3BpcGV3aXJlMDIuc2lncyBiL2Nocm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rl c2t0b3BfY2FwdHVyZS9saW51eC9waXBld2lyZTAyLnNpZ3MKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAwMC4uNWFjM2QxZDIyYjgKKy0tLSAvZGV2L251bGwKKysrKyBiL2No cm9taXVtL3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC9w aXBld2lyZTAyLnNpZ3MKK0BAIC0wLDAgKzEsNDcgQEAKKysvLyBDb3B5cmlnaHQgMjAxOCBUaGUg V2ViUlRDIHByb2plY3QgYXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2Yg dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQg Y2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysvLy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKy8vIEZ1bmN0aW9ucyBmcm9t IFBpcGVXaXJlIHVzZWQgaW4gY2FwdHVyZXIgY29kZS4KKysvLy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKworKy8vIGNvcmUuaAorK3ZvaWQgcHdfY29y ZV9kZXN0cm95KHB3X2NvcmUgKmNvcmUpOworK3B3X3R5cGUgKnB3X2NvcmVfZ2V0X3R5cGUocHdf Y29yZSAqY29yZSk7CisrcHdfY29yZSAqIHB3X2NvcmVfbmV3KHB3X2xvb3AgKm1haW5fbG9vcCwg cHdfcHJvcGVydGllcyAqcHJvcHMpOworKworKy8vIGxvb3AuaAorK3ZvaWQgcHdfbG9vcF9kZXN0 cm95KHB3X2xvb3AgKmxvb3ApOworK3B3X2xvb3AgKiBwd19sb29wX25ldyhwd19wcm9wZXJ0aWVz ICpwcm9wZXJ0aWVzKTsKKysKKysvLyBwaXBld2lyZS5oCisrdm9pZCBwd19pbml0KGludCAqYXJn YywgY2hhciAqKmFyZ3ZbXSk7CisrCisrLy8gcHJvcGVydGllcy5oCisrcHdfcHJvcGVydGllcyAq IHB3X3Byb3BlcnRpZXNfbmV3X3N0cmluZyhjb25zdCBjaGFyICphcmdzKTsKKysKKysvLyByZW1v dGUuaAorK3ZvaWQgcHdfcmVtb3RlX2FkZF9saXN0ZW5lcihwd19yZW1vdGUgKnJlbW90ZSwgc3Bh X2hvb2sgKmxpc3RlbmVyLCBjb25zdCBwd19yZW1vdGVfZXZlbnRzICpldmVudHMsIHZvaWQgKmRh dGEpOworK2ludCBwd19yZW1vdGVfY29ubmVjdF9mZChwd19yZW1vdGUgKnJlbW90ZSwgaW50IGZk KTsKKyt2b2lkIHB3X3JlbW90ZV9kZXN0cm95KHB3X3JlbW90ZSAqcmVtb3RlKTsKKytwd19yZW1v dGUgKiBwd19yZW1vdGVfbmV3KHB3X2NvcmUgKmNvcmUsIHB3X3Byb3BlcnRpZXMgKnByb3BlcnRp ZXMsIHNpemVfdCB1c2VyX2RhdGFfc2l6ZSk7CisrZW51bSBwd19yZW1vdGVfc3RhdGUgcHdfcmVt b3RlX2dldF9zdGF0ZShwd19yZW1vdGUgKnJlbW90ZSwgY29uc3QgY2hhciAqKmVycm9yKTsKKysK KysvLyBzdHJlYW0uaAorK3ZvaWQgcHdfc3RyZWFtX2FkZF9saXN0ZW5lcihwd19zdHJlYW0gKnN0 cmVhbSwgc3BhX2hvb2sgKmxpc3RlbmVyLCBjb25zdCBwd19zdHJlYW1fZXZlbnRzICpldmVudHMs IHZvaWQgKmRhdGEpOworK2ludCBwd19zdHJlYW1fY29ubmVjdChwd19zdHJlYW0gKnN0cmVhbSwg ZW51bSBwd19kaXJlY3Rpb24gZGlyZWN0aW9uLCBjb25zdCBjaGFyICpwb3J0X3BhdGgsIGVudW0g cHdfc3RyZWFtX2ZsYWdzIGZsYWdzLCBjb25zdCBzcGFfcG9kICoqcGFyYW1zLCB1aW50MzJfdCBu X3BhcmFtcyk7CisrcHdfYnVmZmVyICpwd19zdHJlYW1fZGVxdWV1ZV9idWZmZXIocHdfc3RyZWFt ICpzdHJlYW0pOworK3ZvaWQgcHdfc3RyZWFtX2Rlc3Ryb3kocHdfc3RyZWFtICpzdHJlYW0pOwor K3ZvaWQgcHdfc3RyZWFtX2ZpbmlzaF9mb3JtYXQocHdfc3RyZWFtICpzdHJlYW0sIGludCByZXMs IGNvbnN0IHNwYV9wb2QgKipwYXJhbXMsIHVpbnQzMl90IG5fcGFyYW1zKTsKKytwd19zdHJlYW0g KiBwd19zdHJlYW1fbmV3KHB3X3JlbW90ZSAqcmVtb3RlLCBjb25zdCBjaGFyICpuYW1lLCBwd19w cm9wZXJ0aWVzICpwcm9wcyk7CisraW50IHB3X3N0cmVhbV9xdWV1ZV9idWZmZXIocHdfc3RyZWFt ICpzdHJlYW0sIHB3X2J1ZmZlciAqYnVmZmVyKTsKKytpbnQgcHdfc3RyZWFtX3NldF9hY3RpdmUo cHdfc3RyZWFtICpzdHJlYW0sIGJvb2wgYWN0aXZlKTsKKysKKysvLyB0aHJlYWQtbG9vcC5oCisr dm9pZCBwd190aHJlYWRfbG9vcF9kZXN0cm95KHB3X3RocmVhZF9sb29wICpsb29wKTsKKytwd190 aHJlYWRfbG9vcCAqIHB3X3RocmVhZF9sb29wX25ldyhwd19sb29wICpsb29wLCBjb25zdCBjaGFy ICpuYW1lKTsKKytpbnQgcHdfdGhyZWFkX2xvb3Bfc3RhcnQocHdfdGhyZWFkX2xvb3AgKmxvb3Ap OworK3ZvaWQgcHdfdGhyZWFkX2xvb3Bfc3RvcChwd190aHJlYWRfbG9vcCAqbG9vcCk7Cisrdm9p ZCBwd190aHJlYWRfbG9vcF9sb2NrKHN0cnVjdCBwd190aHJlYWRfbG9vcCAqbG9vcCk7Cisrdm9p ZCBwd190aHJlYWRfbG9vcF91bmxvY2soc3RydWN0IHB3X3RocmVhZF9sb29wICpsb29wKTsKK2Rp ZmYgLS1naXQgYS9jaHJvbWl1bS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh cHR1cmUvbGludXgvcGlwZXdpcmUwMy5zaWdzIGIvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRj L21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3BpcGV3aXJlMDMuc2lncworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi43OGQyNDFmNDBjNgorLS0tIC9kZXYvbnVs bAorKysrIGIvY2hyb21pdW0vdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0 dXJlL2xpbnV4L3BpcGV3aXJlMDMuc2lncworQEAgLTAsMCArMSw0NiBAQAorKy8vIENvcHlyaWdo dCAyMDE4IFRoZSBXZWJSVEMgcHJvamVjdCBhdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp Y2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorKworKy8v LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrLy8gRnVu Y3Rpb25zIGZyb20gUGlwZVdpcmUgdXNlZCBpbiBjYXB0dXJlciBjb2RlLgorKy8vLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrCisrLy8gY29yZS5oCisr aW50IHB3X2NvcmVfZGlzY29ubmVjdChwd19jb3JlICpjb3JlKTsKKysKKysvLyBsb29wLmgKKyt2 b2lkIHB3X2xvb3BfZGVzdHJveShwd19sb29wICpsb29wKTsKKytwd19sb29wICogcHdfbG9vcF9u ZXcoY29uc3Qgc3BhX2RpY3QgKnByb3BzKTsKKysKKysKKysvLyBwaXBld2lyZS5oCisrdm9pZCBw d19pbml0KGludCAqYXJnYywgY2hhciAqKmFyZ3ZbXSk7CisrCisrLy8gcHJvcGVydGllcy5oCisr cHdfcHJvcGVydGllcyAqIHB3X3Byb3BlcnRpZXNfbmV3X3N0cmluZyhjb25zdCBjaGFyICphcmdz KTsKKysKKysvLyBzdHJlYW0uaAorK3ZvaWQgcHdfc3RyZWFtX2FkZF9saXN0ZW5lcihwd19zdHJl YW0gKnN0cmVhbSwgc3BhX2hvb2sgKmxpc3RlbmVyLCBjb25zdCBwd19zdHJlYW1fZXZlbnRzICpl dmVudHMsIHZvaWQgKmRhdGEpOworK2ludCBwd19zdHJlYW1fY29ubmVjdChwd19zdHJlYW0gKnN0 cmVhbSwgZW51bSBwd19kaXJlY3Rpb24gZGlyZWN0aW9uLCB1aW50MzJfdCB0YXJnZXRfaWQsIGVu dW0gcHdfc3RyZWFtX2ZsYWdzIGZsYWdzLCBjb25zdCBzcGFfcG9kICoqcGFyYW1zLCB1aW50MzJf dCBuX3BhcmFtcyk7CisrcHdfYnVmZmVyICpwd19zdHJlYW1fZGVxdWV1ZV9idWZmZXIocHdfc3Ry ZWFtICpzdHJlYW0pOworK3ZvaWQgcHdfc3RyZWFtX2Rlc3Ryb3kocHdfc3RyZWFtICpzdHJlYW0p OworK3B3X3N0cmVhbSAqIHB3X3N0cmVhbV9uZXcocHdfY29yZSAqY29yZSwgY29uc3QgY2hhciAq bmFtZSwgcHdfcHJvcGVydGllcyAqcHJvcHMpOworK2ludCBwd19zdHJlYW1fcXVldWVfYnVmZmVy KHB3X3N0cmVhbSAqc3RyZWFtLCBwd19idWZmZXIgKmJ1ZmZlcik7CisraW50IHB3X3N0cmVhbV9z ZXRfYWN0aXZlKHB3X3N0cmVhbSAqc3RyZWFtLCBib29sIGFjdGl2ZSk7CisraW50IHB3X3N0cmVh bV91cGRhdGVfcGFyYW1zKHB3X3N0cmVhbSAqc3RyZWFtLCBjb25zdCBzcGFfcG9kICoqcGFyYW1z LCB1aW50MzJfdCBuX3BhcmFtcyk7CisrCisrLy8gdGhyZWFkLWxvb3AuaAorK3ZvaWQgcHdfdGhy ZWFkX2xvb3BfZGVzdHJveShwd190aHJlYWRfbG9vcCAqbG9vcCk7CisrcHdfdGhyZWFkX2xvb3Ag KiBwd190aHJlYWRfbG9vcF9uZXcoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3BhX2RpY3QgKnBy b3BzKTsKKytpbnQgcHdfdGhyZWFkX2xvb3Bfc3RhcnQocHdfdGhyZWFkX2xvb3AgKmxvb3ApOwor K3ZvaWQgcHdfdGhyZWFkX2xvb3Bfc3RvcChwd190aHJlYWRfbG9vcCAqbG9vcCk7Cisrdm9pZCBw d190aHJlYWRfbG9vcF9sb2NrKHB3X3RocmVhZF9sb29wICpsb29wKTsKKyt2b2lkIHB3X3RocmVh ZF9sb29wX3VubG9jayhwd190aHJlYWRfbG9vcCAqbG9vcCk7CisrcHdfbG9vcCAqIHB3X3RocmVh ZF9sb29wX2dldF9sb29wKHB3X3RocmVhZF9sb29wICpsb29wKTsKKysKKysKKysvLyBjb250ZXh0 LmgKKyt2b2lkIHB3X2NvbnRleHRfZGVzdHJveShwd19jb250ZXh0ICpjb250ZXh0KTsKKytwd19j b250ZXh0ICpwd19jb250ZXh0X25ldyhwd19sb29wICptYWluX2xvb3AsIHB3X3Byb3BlcnRpZXMg KnByb3BzLCBzaXplX3QgdXNlcl9kYXRhX3NpemUpOworK3B3X2NvcmUgKiBwd19jb250ZXh0X2Nv bm5lY3QocHdfY29udGV4dCAqY29udGV4dCwgcHdfcHJvcGVydGllcyAqcHJvcGVydGllcywgc2l6 ZV90IHVzZXJfZGF0YV9zaXplKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvcXQ1LXdlYmVuZ2luZS9w YXRjaGVzL3BpcGV3aXJlLTAuMy5wYXRjaC5hcmdzIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3Bh dGNoZXMvcGlwZXdpcmUtMC4zLnBhdGNoLmFyZ3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi40ZmFjMTYzZjhkOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3F0 NS13ZWJlbmdpbmUvcGF0Y2hlcy9waXBld2lyZS0wLjMucGF0Y2guYXJncwpAQCAtMCwwICsxIEBA CistTnAxIC1kIHNyYy8zcmRwYXJ0eQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9xdDUtd2ViZW5naW5l L3RlbXBsYXRlIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCmluZGV4IGJhZTM4ZWVm NWJjOC4uOTU1NGYyZjcwZDIxIDEwMDY0NAotLS0gYS9zcmNwa2dzL3F0NS13ZWJlbmdpbmUvdGVt cGxhdGUKKysrIGIvc3JjcGtncy9xdDUtd2ViZW5naW5lL3RlbXBsYXRlCkBAIC0xLDcgKzEsNyBA QAogIyBUZW1wbGF0ZSBmaWxlIGZvciAncXQ1LXdlYmVuZ2luZScKIHBrZ25hbWU9cXQ1LXdlYmVu Z2luZQogdmVyc2lvbj01LjE1LjEwCi1yZXZpc2lvbj0xCityZXZpc2lvbj0yCiBfdmVyc2lvbj0i JHt2ZXJzaW9ufS1sdHMiCiBfY2hyb21pdW1fY29tbWl0PWNhYmEyZmNiMGZlOGE4ZDIxM2M0Yzc5 ZDI2ZGEzYmI4OGVlZTYxYzcKIGFyY2hzPSJ4ODZfNjQqIGk2ODYqIGFybXZbNjddKiBwcGM2NCog YWFyY2g2NCoiCkBAIC0yNSw3ICsyNSw3IEBAIG1ha2VkZXBlbmRzPSJxdDUtd2ViY2hhbm5lbC1k ZXZlbCBxdDUtbG9jYXRpb24tZGV2ZWwgcXQ1LXRvb2xzLWRldmVsIHF0NS1kZXZlbAogIGpzb25j cHAtZGV2ZWwgaGFyZmJ1enotZGV2ZWwgbGNtczItZGV2ZWwgcHJvdG9idWYtZGV2ZWwgcHVsc2Vh dWRpby1kZXZlbAogIGxpYlhyYW5kci1kZXZlbCBNZXNhTGliLWRldmVsIG1pdC1rcmI1LWRldmVs IGFsc2EtbGliLWRldmVsIGxpYnhrYmNvbW1vbi1kZXZlbAogIGxpYnhrYmZpbGUtZGV2ZWwgbGli WGRhbWFnZS1kZXZlbAotICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkgJCh2b3B0X2lmIHBp cGV3aXJlIGxpYnBpcGV3aXJlMC4yLWRldmVsKSIKKyAkKHZvcHRfaWYgc25kaW8gc25kaW8tZGV2 ZWwpICQodm9wdF9pZiBwaXBld2lyZSBsaWJwaXBld2lyZSkgJCh2b3B0X2lmIHBpcGV3aXJlIHBp cGV3aXJlLWRldmVsKSIKIHNob3J0X2Rlc2M9IkNyb3NzLXBsYXRmb3JtIGFwcGxpY2F0aW9uIGFu ZCBVSSBmcmFtZXdvcmsgKFFUNSkgLSBXZWJFbmdpbmUgY29tcG9uZW50IgogbWFpbnRhaW5lcj0i Sm9obiA8bWVAam9obm55bmF0b3IuZGV2PiIKIGxpY2Vuc2U9IkdQTC0zLjAtb3ItbGF0ZXIsIExH UEwtMy4wLW9yLWxhdGVyIgo= --===============2791259569387006628==--