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 18957 invoked from network); 15 Dec 2022 17:40:07 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 15 Dec 2022 17:40:07 -0000 Content-Type: multipart/mixed; boundary="===============6711083550461741797==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_Signal-Desktop=3A_update_to_6=2E1=2E0?= To: ml@inbox.vuxu.org From: akierig Reply-to: ml@inbox.vuxu.org Message-ID: Date: Thu, 15 Dec 2022 18:40:07 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============6711083550461741797== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IGFraWVyaWcgYWdhaW5zdCBtYXN0ZXIgb24g dGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29tL2FraWVyaWcv dm9pZC1wYWNrYWdlcyBzaWduYWwtZGVza3RvcDYuMQpodHRwczovL2dpdGh1Yi5jb20vdm9pZC1s aW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDExMTQKClNpZ25hbC1EZXNrdG9wOiB1cGRhdGUgdG8g Ni4xLjAKIyMjIyBUZXN0aW5nIHRoZSBjaGFuZ2VzDQotIEkgdGVzdGVkIHRoZSBjaGFuZ2VzIGlu IHRoaXMgUFI6ICoqYnJpZWZseSoqDQoNCiMjIyMgTG9jYWwgYnVpbGQgdGVzdGluZw0KLSBJIGJ1 aWx0IHRoaXMgUFIgbG9jYWxseSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZSwgeDg2LTY0CgpB IHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2th Z2VzL3B1bGwvNDExMTQucGF0Y2ggaXMgYXR0YWNoZWQ= --===============6711083550461741797== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-signal-desktop6.1-41114.patch" RnJvbSBiM2RhMzlhNmJkMWJjMGYxMmM5OGQzMTA1MDFiM2RhNDg0OTZkZDZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWNoYWwgVmFzaWxlayA8bWljaGFsQHZhc2lsZWsuY3o+CkRh dGU6IFN1biwgMjAgTm92IDIwMjIgMTk6NDM6MjAgKzAxMDAKU3ViamVjdDogW1BBVENIIDEvMl0g bm9kZWpzOiB1cGRhdGUgdG8gMTYuMTkuMC4KCi0tLQogc3JjcGtncy9ub2RlanMvcGF0Y2hlcy9j cm9zcy1hYXJjaDY0LnBhdGNoICAgIHwgIDI5ICsKIC4uLi9wYXRjaGVzL3BwYy1maXhlcy1mb3It b2xkZXItbW9kZWxzLnBhdGNoICB8IDk3MiAtLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3Mvbm9k ZWpzL3BhdGNoZXMvcHl0aG9uMy4xMS5wYXRjaCAgICAgICB8ICA3NCAtLQogc3JjcGtncy9ub2Rl anMvdGVtcGxhdGUgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICstCiA0IGZpbGVzIGNoYW5n ZWQsIDMyIGluc2VydGlvbnMoKyksIDEwNDkgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9ub2RlanMvcGF0Y2hlcy9jcm9zcy1hYXJjaDY0LnBhdGNoCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9ub2RlanMvcGF0Y2hlcy9wcGMtZml4ZXMtZm9yLW9sZGVyLW1vZGVs cy5wYXRjaAogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvbm9kZWpzL3BhdGNoZXMvcHl0aG9u My4xMS5wYXRjaAoKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mvbm9kZWpzL3BhdGNoZXMvY3Jvc3MtYWFy Y2g2NC5wYXRjaCBiL3NyY3BrZ3Mvbm9kZWpzL3BhdGNoZXMvY3Jvc3MtYWFyY2g2NC5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjNiOTZjODdmMmZkYgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mvbm9kZWpzL3BhdGNoZXMvY3Jvc3MtYWFyY2g2NC5wYXRj aApAQCAtMCwwICsxLDI5IEBACitGcm9tIDRhYzkwYzQxMDY1ZDMzOGM0MzA1Y2Y2ZGMzOWUzMDg0 YjIxYTdmNzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWNoYWwgVmFzaWxlayA8 bWljaGFsQHZhc2lsZWsuY3o+CitEYXRlOiBTdW4sIDIwIE5vdiAyMDIyIDE5OjIyOjAzICswMTAw CitTdWJqZWN0OiBbUEFUQ0hdIFJldmVydCAiYnVpbGQ6IGVuYWJsZSBwb2ludGVyIGF1dGhlbnRp Y2F0aW9uIGZvciBicmFuY2gKKyBwcm90ZWN0aW9uIG9uIGFybTY0IgorCitUaGlzIHJldmVydHMg Y29tbWl0IDkzODIxMmYzZTc0YTc0ZDBiNDM2OTQxYWEyNGU3MTQyNWZmNjY2YzUuCistLS0KKyBj b25maWd1cmUucHkgfCA0IC0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKwor ZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5weSBiL2NvbmZpZ3VyZS5weQoraW5kZXggZDMxOTJjYTA0 Yy4uMmQwNDllYjkzOCAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZS5weQorKysrIGIvY29uZmlndXJl LnB5CitAQCAtMTI0MSwxMCArMTI0MSw2IEBAIGRlZiBjb25maWd1cmVfbm9kZShvKToKKyAKKyAg IG9bJ3ZhcmlhYmxlcyddWyd3YW50X3NlcGFyYXRlX2hvc3RfdG9vbHNldCddID0gaW50KGNyb3Nz X2NvbXBpbGluZykKKyAKKy0gICMgRW5hYmxlIGJyYW5jaCBwcm90ZWN0aW9uIGZvciBhcm02NAor LSAgaWYgdGFyZ2V0X2FyY2ggPT0gJ2FybTY0JzoKKy0gICAgb1snY2ZsYWdzJ10rPVsnLW1zaWdu LXJldHVybi1hZGRyZXNzPWFsbCddCistCisgICBpZiBvcHRpb25zLm5vZGVfc25hcHNob3RfbWFp biBpcyBub3QgTm9uZToKKyAgICAgaWYgb3B0aW9ucy5zaGFyZWQ6CisgICAgICAgIyBUaGlzIHNo b3VsZCBiZSBwb3NzaWJsZSB0byBmaXgsIGJ1dCB3ZSB3aWxsIG5lZWQgdG8gcmVmYWN0b3IgdGhl CistLSAKKzIuMzguMQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL25vZGVqcy9wYXRjaGVzL3BwYy1m aXhlcy1mb3Itb2xkZXItbW9kZWxzLnBhdGNoIGIvc3JjcGtncy9ub2RlanMvcGF0Y2hlcy9wcGMt Zml4ZXMtZm9yLW9sZGVyLW1vZGVscy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMWQ5MzM0MWU4NzI5Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy9ub2RlanMvcGF0Y2hl cy9wcGMtZml4ZXMtZm9yLW9sZGVyLW1vZGVscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk3 MiArMCwwIEBACi1GaXggUG93ZXJQQyBDUFUgZGV0ZWN0aW9uIGFuZCBjb2RlZ2VuIHRvIHdvcmsg d2l0aCBtb3JlIHByb2Nlc3NvcnMuCi0KLVRoaXMgcGF0Y2ggZGVmaW5lcyB0aGUgY29ycmVjdCBv cHRpb25hbCBQb3dlciBJU0EgZmVhdHVyZXMgdGhhdCB0aGUKLVBQQyBjb2RlIGdlbmVyYXRvciBu ZWVkcyBpbiBvcmRlciB0byBydW4gd2l0aG91dCBjcmFzaGluZyBvbiB2Mi4wMQotYW5kIG9sZGVy IENQVXMgc3VjaCBhcyBQUEMgOTcwIChHNSkgb3IgTlhQIGU2NTAwLCBhbmQgdG8gcnVuIG1vcmUK LWVmZmljaWVudGx5IG9uIENQVXMgd2l0aCBmZWF0dXJlcyB0aGF0IHdlcmVuJ3QgYmVpbmcgdXNl ZCBiZWZvcmUuCi0KLVBvd2VyUEMgSVNBIHYyLjAxIGFuZCBvbGRlciBDUFVzIGRvbid0IGhhdmUg RlAgcm91bmQgdG8gaW50IGluc3RydWN0aW9ucywKLWFuZCBQb3dlclBDIElTQSB2Mi4wNiBhbmQg b2xkZXIgYXJlIG1pc3Npbmcgc3VwcG9ydCBmb3IgdW5zaWduZWQgNjQtYml0Ci10by9mcm9tIGRv dWJsZSwgYXMgd2VsbCBhcyBpbnRlZ2VyIHRvL2Zyb20gc2luZ2xlLXByZWNpc2lvbiBmbG9hdC4K LQotVXNlIHRoZSBjdXJyZW50IFBQQ181X1BMVVMgQ1BVIGZlYXR1cmUgdG8gZGV0ZXJtaW5lIHdo ZXRoZXIgdG8gZ2VuZXJhdGUKLUZQIHJvdW5kIHRvIGludCwgYW5kIHVzZSB0aGUgUFBDXzdfUExV UyBmZWF0dXJlIHRvIGRldGVybWluZSB3aGV0aGVyCi10byB1c2UgdGhlIHYyLjA2IElTQSBpbnN0 cnVjdGlvbnMgb3Igd2hldGhlciB0byBnZW5lcmF0ZSBhbiBhbHRlcm5hdGUKLWdlbmVyaWMgUFBD IHNlcXVlbmNlIHRvIGhhbmRsZSB0aGUgY2FzZXMgb2YgNjQtYml0IHVuc2lnbmVkIGludGVnZXIK LXRvL2Zyb20gZmxvYXRpbmcgcG9pbnQsIGludGVnZXJzIHRvIHNpbmdsZS1wcmVjaXNpb24gZmxv YXRpbmcgcG9pbnQsCi1hbmQgbG9hZGluZyBhbmQgc3RvcmluZyA2NC1iaXQgaW50ZWdlcnMgd2l0 aCBieXRlIHJldmVyc2FsLgotCi1BZGQgYSBuZXcgUFBDXzdfUExVU19OWFAgZmVhdHVyZSBmb3Ig dGhlIHBvcGNudCBhbmQgbGRicngvc3RkYnJ4Ci1vcGNvZGVzIGFkZGVkIGluIFBvd2VyIElTQSB2 Mi4wNiwgd2hpY2ggYXJlIGFsc28gcHJlc2VudCBpbiB0aGUgTlhQCi1lNTUwMCBhbmQgZTY1MDAg Y29yZXMsIHdoaWNoIGFyZSBvdGhlcndpc2UgbWlzc2luZyBtYW55IG9mIHRoZQotZmVhdHVyZXMg YWRkZWQgc2luY2UgdjIuMDEuIFRoaXMgZW5hYmxlcyBOWFAgY29yZXMgdG8gdXNlIGEgZmV3Ci1t b3JlIGZlYXR1cmVzLiBBZGRpdGlvbmFsbHksIGJyaW5nIGJhY2sgdGhlIElTRUxFQ1QgZmVhdHVy ZSBmbGFnLAotd2hpY2ggaXMgYWxzbyBzdXBwb3J0ZWQgYnkgTlhQIGNvcmVzLCBpbmNsdWRpbmcg b2xkZXIgb25lcywgYW5kCi1oYXMgaXRzIG93biBBVF9IV0NBUDIgZmVhdHVyZSBmbGFnIGluIExp bnV4LgotCi1CeSBkZWZpbmluZyBhIG5ldyBJQ0FDSEVfU05PT1AgZmVhdHVyZSBiaXQgdG8gcmVw bGFjZSB0aGUgdXNlIG9mIAotUFBDXzZfUExVUywgdGhlIG1lYW5pbmcgb2YgdGhlIGluc3RydWN0 aW9uIGNhY2hlIGZsdXNoaW5nIGZhc3QgcGF0aCwKLWFuZCB0aGUgQ1BVcyB0aGF0IGNhbiB1c2Ug aXQsIGlzIG1vcmUgY2xlYXJseSBkZWZpbmVkLiBJbiBhZGRpdGlvbiwKLWZvciB0aGUgb3RoZXIg UG93ZXJQQyBjaGlwcywgdGhlIGxvb3AgdG8gZmx1c2ggdGhlIGRhdGEgYW5kIGluc3RydWN0aW9u Ci1jYWNoZSBibG9ja3MgaGFzIGJlZW4gc3BsaXQgaW50byB0d28gbG9vcHMsIHdpdGggYSBzaW5n bGUgInN5bmMiIGFuZAotImlzeW5jIiBhZnRlciBlYWNoIGxvb3AsIHdoaWNoIHNob3VsZCBiZSBt b3JlIGVmZmljaWVudCwgYW5kIGFsc28gaGFuZGxlcwotdGhlIGZldyBDUFVzIHdpdGggZGlmZmVy aW5nIGRhdGEgYW5kIGluc3RydWN0aW9uIGNhY2hlIGxpbmUgc2l6ZXMuCi0KLUluIHRoZSBtYWNy byBhc3NlbWJsZXIgbWV0aG9kcywgaW4gYWRkaXRpb24gdG8gcHJvdmlkaW5nIGFuIGFsdGVybmF0 ZQotcGF0aCBmb3IgRlAgY29udmVyc2lvbiBvcGNvZGVzIGFkZGVkIGluIFBPV0VSNyAoSVNBIHYy LjA2KSwgdW5uZWNlc3NhcnkKLWluc3RydWN0aW9ucyB0byBtb3ZlIHNwIGRvd24gYW5kIHRoZW4g aW1tZWRpYXRlbHkgYmFjayB1cCB3ZXJlIHJlcGxhY2VkCi13aXRoIG5lZ2F0aXZlIG9mZnNldHMg ZnJvbSB0aGUgY3VycmVudCBzcC4gVGhpcyBzaG91bGQgYmUgZmFzdGVyLCBhbmQgYWxzbwotc3Ag aXMgc3VwcG9zZWQgdG8gcG9pbnQgdG8gYSBiYWNrIGNoYWluIGF0IGFsbCB0aW1lcyAoVjggbWF5 IG5vdCBkbyB0aGlzKS4KLQotLS0tIGEvZGVwcy92OC9zcmMvYmFzZS9jcHUuY2MJMjAyMi0wMi0w OCAwNDozNzo0OC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBiL2RlcHMvdjgvc3JjL2Jhc2UvY3B1LmNj CTIwMjItMDItMTkgMTQ6Mzg6MzcuOTk3MTYxODM1IC0wODAwCi1AQCAtMTQsMTUgKzE0LDEzIEBA Ci0gI2lmIFY4X09TX0xJTlVYCi0gI2luY2x1ZGUgPGxpbnV4L2F1eHZlYy5oPiAgLy8gQVRfSFdD QVAKLSAjZW5kaWYKLS0jaWYgVjhfR0xJQkNfUFJFUkVRKDIsIDE2KQotKyNpZiBWOF9HTElCQ19Q UkVSRVEoMiwgMTYpIHx8IFwKLSsgICAgKFY4X09TX0xJTlVYICYmIChWOF9IT1NUX0FSQ0hfUFBD IHx8IFY4X0hPU1RfQVJDSF9QUEM2NCkpCi0gI2luY2x1ZGUgPHN5cy9hdXh2Lmg+ICAvLyBnZXRh dXh2YWwoKQotICNlbmRpZgotICNpZiBWOF9PU19RTlgKLSAjaW5jbHVkZSA8c3lzL3N5c3BhZ2Uu aD4gIC8vIGNwdWluZm8KLSAjZW5kaWYKLS0jaWYgVjhfT1NfTElOVVggJiYgKFY4X0hPU1RfQVJD SF9QUEMgfHwgVjhfSE9TVF9BUkNIX1BQQzY0KQotLSNpbmNsdWRlIDxlbGYuaD4KLS0jZW5kaWYK LSAjaWYgVjhfT1NfQUlYCi0gI2luY2x1ZGUgPHN5cy9zeXN0ZW1jZmcuaD4gIC8vIF9zeXN0ZW1f Y29uZmlndXJhdGlvbgotICNpZm5kZWYgUE9XRVJfOAotQEAgLTc3Miw1NiArNzcwLDU1IEBACi0g Ci0gI2lmbmRlZiBVU0VfU0lNVUxBVE9SCi0gI2lmIFY4X09TX0xJTlVYCi0tICAvLyBSZWFkIHBy b2Nlc3NvciBpbmZvIGZyb20gL3Byb2Mvc2VsZi9hdXh2LgotLSAgY2hhciogYXV4dl9jcHVfdHlw ZSA9IG51bGxwdHI7Ci0tICBGSUxFKiBmcCA9IGJhc2U6OkZvcGVuKCIvcHJvYy9zZWxmL2F1eHYi LCAiciIpOwotLSAgaWYgKGZwICE9IG51bGxwdHIpIHsKLS0jaWYgVjhfVEFSR0VUX0FSQ0hfUFBD NjQKLS0gICAgRWxmNjRfYXV4dl90IGVudHJ5OwotLSNlbHNlCi0tICAgIEVsZjMyX2F1eHZfdCBl bnRyeTsKLS0jZW5kaWYKLS0gICAgZm9yICg7OykgewotLSAgICAgIHNpemVfdCBuID0gZnJlYWQo JmVudHJ5LCBzaXplb2YoZW50cnkpLCAxLCBmcCk7Ci0tICAgICAgaWYgKG4gPT0gMCB8fCBlbnRy eS5hX3R5cGUgPT0gQVRfTlVMTCkgewotLSAgICAgICAgYnJlYWs7Ci0tICAgICAgfQotLSAgICAg IHN3aXRjaCAoZW50cnkuYV90eXBlKSB7Ci0tICAgICAgICBjYXNlIEFUX1BMQVRGT1JNOgotLSAg ICAgICAgICBhdXh2X2NwdV90eXBlID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZW50cnkuYV91 bi5hX3ZhbCk7Ci0tICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgY2FzZSBBVF9JQ0FDSEVCU0la RToKLS0gICAgICAgICAgaWNhY2hlX2xpbmVfc2l6ZV8gPSBlbnRyeS5hX3VuLmFfdmFsOwotLSAg ICAgICAgICBicmVhazsKLS0gICAgICAgIGNhc2UgQVRfRENBQ0hFQlNJWkU6Ci0tICAgICAgICAg IGRjYWNoZV9saW5lX3NpemVfID0gZW50cnkuYV91bi5hX3ZhbDsKLS0gICAgICAgICAgYnJlYWs7 Ci0tICAgICAgfQotLSAgICB9Ci0tICAgIGJhc2U6OkZjbG9zZShmcCk7Ci0tICB9Ci0tCi0tICBw YXJ0XyA9IC0xOwotLSAgaWYgKGF1eHZfY3B1X3R5cGUpIHsKLS0gICAgaWYgKHN0cmNtcChhdXh2 X2NwdV90eXBlLCAicG93ZXIxMCIpID09IDApIHsKLS0gICAgICBwYXJ0XyA9IGtQUENQb3dlcjEw OwotLSAgICB9IGVsc2UgaWYgKHN0cmNtcChhdXh2X2NwdV90eXBlLCAicG93ZXI5IikgPT0gMCkg ewotLSAgICAgIHBhcnRfID0ga1BQQ1Bvd2VyOTsKLS0gICAgfSBlbHNlIGlmIChzdHJjbXAoYXV4 dl9jcHVfdHlwZSwgInBvd2VyOCIpID09IDApIHsKLS0gICAgICBwYXJ0XyA9IGtQUENQb3dlcjg7 Ci0tICAgIH0gZWxzZSBpZiAoc3RyY21wKGF1eHZfY3B1X3R5cGUsICJwb3dlcjciKSA9PSAwKSB7 Ci0tICAgICAgcGFydF8gPSBrUFBDUG93ZXI3OwotLSAgICB9IGVsc2UgaWYgKHN0cmNtcChhdXh2 X2NwdV90eXBlLCAicG93ZXI2IikgPT0gMCkgewotLSAgICAgIHBhcnRfID0ga1BQQ1Bvd2VyNjsK LS0gICAgfSBlbHNlIGlmIChzdHJjbXAoYXV4dl9jcHVfdHlwZSwgInBvd2VyNSIpID09IDApIHsK LS0gICAgICBwYXJ0XyA9IGtQUENQb3dlcjU7Ci0tICAgIH0gZWxzZSBpZiAoc3RyY21wKGF1eHZf Y3B1X3R5cGUsICJwcGM5NzAiKSA9PSAwKSB7Ci0tICAgICAgcGFydF8gPSBrUFBDRzU7Ci0tICAg IH0gZWxzZSBpZiAoc3RyY21wKGF1eHZfY3B1X3R5cGUsICJwcGM3NDUwIikgPT0gMCkgewotLSAg ICAgIHBhcnRfID0ga1BQQ0c0OwotLSAgICB9IGVsc2UgaWYgKHN0cmNtcChhdXh2X2NwdV90eXBl LCAicGE2dCIpID09IDApIHsKLS0gICAgICBwYXJ0XyA9IGtQUENQQTZUOwotLSAgICB9Ci0rICAv LyBSZWFkIHByb2Nlc3NvciBpbmZvIGZyb20gZ2V0YXV4dmFsKCkgKG5lZWRzIGF0IGxlYXN0IGds aWJjIDIuMTggb3IgbXVzbCkuCi0rICBpY2FjaGVfbGluZV9zaXplXyA9IHN0YXRpY19jYXN0PGlu dD4oZ2V0YXV4dmFsKEFUX0lDQUNIRUJTSVpFKSk7Ci0rICBkY2FjaGVfbGluZV9zaXplXyA9IHN0 YXRpY19jYXN0PGludD4oZ2V0YXV4dmFsKEFUX0RDQUNIRUJTSVpFKSk7Ci0rICBjb25zdCB1bnNp Z25lZCBsb25nIGh3Y2FwID0gZ2V0YXV4dmFsKEFUX0hXQ0FQKTsKLSsgIGNvbnN0IHVuc2lnbmVk IGxvbmcgaHdjYXAyID0gZ2V0YXV4dmFsKEFUX0hXQ0FQMik7Ci0rICBjb25zdCBjaGFyKiBwbGF0 Zm9ybSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KGdldGF1eHZhbChBVF9QTEFURk9S TSkpOwotKwotKyAgLy8gTk9URTogQVRfSFdDQVAgSVNBIHZlcnNpb24gYml0cyBhcmVuJ3QgY3Vt dWxhdGl2ZSwgc28gaXQncyBuZWNlc3NhcnkKLSsgIC8vIHRvIGNvbXBhcmUgYWdhaW5zdCBhIG1h c2sgb2YgYWxsIHN1cHBvcnRlZCB2ZXJzaW9ucyBhbmQgQ1BVcywgdXAgdG8KLSsgIC8vIElTQSB2 Mi4wNiwgd2hpY2ggKmlzKiBzZXQgZm9yIGxhdGVyIENQVXMuIEluIGNvbnRyYXN0LCB0aGUgQVRf SFdDQVAyCi0rICAvLyBJU0EgdmVyc2lvbiBiaXRzIGZyb20gdjIuMDcgb253YXJkIGFyZSBzZXQg Y3VtdWxhdGl2ZWx5LCBzbyBQT1dFUjEwCi0rICAvLyB3aWxsIHNldCB0aGUgSVNBIHZlcnNpb24g Yml0cyBmcm9tIHYyLjA2IChpbiBBVF9IV0NBUCkgdGhyb3VnaCB2My4xLgotKwotKyAgLy8gaS1j YWNoZSBjb2hlcmVuY3kgcmVxdWlyZXMgUG93ZXIgSVNBIHYyLjAyIG9yIGxhdGVyOyBoYXMgaXRz IG93biBmbGFnLgotKyAgaGFzX2ljYWNoZV9zbm9vcF8gPSAoaHdjYXAgJiBQUENfRkVBVFVSRV9J Q0FDSEVfU05PT1ApOwotKwotKyAgLy8gcmVxdWlyZXMgUG93ZXIgSVNBIHYyLjAzIG9yIGxhdGVy LCBvciB0aGUgSEFTX0lTRUwgYml0IChlLmcuIGU2NTAwKS4KLSsgIGhhc19pc2VsXyA9IChod2Nh cCAmIChQUENfRkVBVFVSRV9QT1dFUjVfUExVUyB8IFBQQ19GRUFUVVJFX0FSQ0hfMl8wNSB8Ci0r ICAgICAgUFBDX0ZFQVRVUkVfUEE2VCB8IFBQQ19GRUFUVVJFX1BPV0VSNl9FWFQgfCBQUENfRkVB VFVSRV9BUkNIXzJfMDYpKSB8fAotKyAgICAgIChod2NhcDIgJiBQUENfRkVBVFVSRTJfSEFTX0lT RUwpOwotKwotKyAgLy8gaHdjYXAgbWFzayBmb3Igb2xkZXIgNjQtYml0IFBQQyBDUFVzIHdpdGgg QWx0aXZlYywgZS5nLiBHNSwgQ2VsbC4KLSsgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsb25nIGtI d2NhcE1hc2tQUENHNSA9Ci0rICAgICAgKFBQQ19GRUFUVVJFXzY0IHwgUFBDX0ZFQVRVUkVfSEFT X0FMVElWRUMpOwotKwotKyAgaWYgKGh3Y2FwMiAmIFBQQ19GRUFUVVJFMl9BUkNIXzNfMSkgewot KyAgICBwYXJ0XyA9IGtQUENQb3dlcjEwOwotKyAgfSBlbHNlIGlmIChod2NhcDIgJiBQUENfRkVB VFVSRTJfQVJDSF8zXzAwKSB7Ci0rICAgIHBhcnRfID0ga1BQQ1Bvd2VyOTsKLSsgIH0gZWxzZSBp ZiAoaHdjYXAyICYgUFBDX0ZFQVRVUkUyX0FSQ0hfMl8wNykgewotKyAgICBwYXJ0XyA9IGtQUENQ b3dlcjg7Ci0rICB9IGVsc2UgaWYgKGh3Y2FwICYgUFBDX0ZFQVRVUkVfQVJDSF8yXzA2KSB7Ci0r ICAgIHBhcnRfID0ga1BQQ1Bvd2VyNzsKLSsgIH0gZWxzZSBpZiAoaHdjYXAgJiBQUENfRkVBVFVS RV9BUkNIXzJfMDUpIHsKLSsgICAgcGFydF8gPSBrUFBDUG93ZXI2OwotKyAgfSBlbHNlIGlmICho d2NhcCAmIChQUENfRkVBVFVSRV9QT1dFUjUgfCBQUENfRkVBVFVSRV9QT1dFUjVfUExVUykpIHsK LSsgICAgcGFydF8gPSBrUFBDUG93ZXI1OwotKyAgfSBlbHNlIGlmIChod2NhcCAmIFBQQ19GRUFU VVJFX1BBNlQpIHsKLSsgICAgcGFydF8gPSBrUFBDUEE2VDsKLSsgIH0gZWxzZSBpZiAoc3RyY21w KHBsYXRmb3JtLCAicHBjZTY1MDAiKSA9PSAwKSB7Ci0rICAgIHBhcnRfID0ga1BQQ0U2NTAwOwot KyAgfSBlbHNlIGlmIChzdHJjbXAocGxhdGZvcm0sICJwcGNlNTUwMCIpID09IDApIHsKLSsgICAg cGFydF8gPSBrUFBDRTU1MDA7Ci0rICB9IGVsc2UgaWYgKChod2NhcCAmIGtId2NhcE1hc2tQUENH NSkgPT0ga0h3Y2FwTWFza1BQQ0c1KSB7Ci0rICAgIHBhcnRfID0ga1BQQ0c1OwotKyAgfSBlbHNl IGlmIChod2NhcCAmIFBQQ19GRUFUVVJFX0hBU19BTFRJVkVDKSB7Ci0rICAgIHBhcnRfID0ga1BQ Q0c0OwotKyAgfSBlbHNlIHsKLSsgICAgcGFydF8gPSBrUFBDRzM7Ci0gICB9Ci0gCi0gI2VsaWYg VjhfT1NfQUlYCi1AQCAtODQyLDkgKzgzOSwxMyBAQAotICAgICAgIHBhcnRfID0ga1BQQ1Bvd2Vy NjsKLSAgICAgICBicmVhazsKLSAgICAgY2FzZSBQT1dFUl81OgotKyAgICBkZWZhdWx0OgotICAg ICAgIHBhcnRfID0ga1BQQ1Bvd2VyNTsKLSAgICAgICBicmVhazsKLSAgIH0KLSsKLSsgIGhhc19p Y2FjaGVfc25vb3BfID0gdHJ1ZTsKLSsgIGhhc19pc2VsXyA9IChwYXJ0XyAhPSBrUFBDUG93ZXI1 KTsgICAgLy8gaXNlbCB3YXMgYWRkZWQgaW4gUE9XRVI1KyAodjIuMDMpCi0gI2VuZGlmICAvLyBW OF9PU19BSVgKLSAjZW5kaWYgIC8vICFVU0VfU0lNVUxBVE9SCi0gI2VuZGlmICAvLyBWOF9IT1NU X0FSQ0hfUFBDIHx8IFY4X0hPU1RfQVJDSF9QUEM2NAotLS0tIGEvZGVwcy92OC9zcmMvYmFzZS9j cHUuaAkyMDIyLTAyLTA4IDA0OjM3OjQ4LjAwMDAwMDAwMCAtMDgwMAotKysrIGIvZGVwcy92OC9z cmMvYmFzZS9jcHUuaAkyMDIyLTAyLTE5IDE0OjMyOjA5LjgzMTU3OTEzMyAtMDgwMAotQEAgLTcx LDkgKzcxLDEyIEBACi0gICAgIGtQUENQb3dlcjgsCi0gICAgIGtQUENQb3dlcjksCi0gICAgIGtQ UENQb3dlcjEwLAotKyAgICBrUFBDRzMsCi0gICAgIGtQUENHNCwKLSAgICAga1BQQ0c1LAotLSAg ICBrUFBDUEE2VAotKyAgICBrUFBDUEE2VCwKLSsgICAga1BQQ0U1NTAwLAotKyAgICBrUFBDRTY1 MDAKLSAgIH07Ci0gCi0gICAvLyBHZW5lcmFsIGZlYXR1cmVzCi1AQCAtMTE5LDYgKzEyMiwxMCBA QAotICAgYm9vbCBpc19mcDY0X21vZGUoKSBjb25zdCB7IHJldHVybiBpc19mcDY0X21vZGVfOyB9 Ci0gICBib29sIGhhc19tc2EoKSBjb25zdCB7IHJldHVybiBoYXNfbXNhXzsgfQotIAotKyAgLy8g UG93ZXJQQyBmZWF0dXJlcwotKyAgYm9vbCBoYXNfaWNhY2hlX3Nub29wKCkgY29uc3QgeyByZXR1 cm4gaGFzX2ljYWNoZV9zbm9vcF87IH0KLSsgIGJvb2wgaGFzX2lzZWwoKSBjb25zdCB7IHJldHVy biBoYXNfaXNlbF87IH0KLSsKLSAgcHJpdmF0ZToKLSAjaWYgZGVmaW5lZChWOF9PU19TVEFSQk9B UkQpCi0gICBib29sIFN0YXJib2FyZERldGVjdENQVSgpOwotQEAgLTE2Niw2ICsxNzMsOCBAQAot ICAgYm9vbCBoYXNfbm9uX3N0b3BfdGltZV9zdGFtcF9jb3VudGVyXzsKLSAgIGJvb2wgaXNfcnVu bmluZ19pbl92bV87Ci0gICBib29sIGhhc19tc2FfOwotKyAgYm9vbCBoYXNfaWNhY2hlX3Nub29w XzsKLSsgIGJvb2wgaGFzX2lzZWxfOwotIH07Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGJhc2UKLS0t LSBhL2RlcHMvdjgvc3JjL2J1aWx0aW5zL3BwYy9idWlsdGlucy1wcGMuY2MJMjAyMi0wMi0wOCAw NDozNzo0OC4wMDAwMDAwMDAgLTA4MDAKLSsrKyBiL2RlcHMvdjgvc3JjL2J1aWx0aW5zL3BwYy9i dWlsdGlucy1wcGMuY2MJMjAyMi0wMi0xOSAxNToxODozNi4zNzMwMzE0NTcgLTA4MDAKLUBAIC0y ODIzLDcgKzI4MjMsNyBAQAotICAgX18gbGJ6KHNjcmF0Y2gsIE1lbU9wZXJhbmQoc2NyYXRjaCwg MCkpOwotICAgX18gY21waShzY3JhdGNoLCBPcGVyYW5kOjpaZXJvKCkpOwotIAotLSAgaWYgKENw dUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQUENfN19QTFVTKSkgewotKyAgaWYgKENwdUZlYXR1cmVz OjpJc1N1cHBvcnRlZChJU0VMRUNUKSkgewotICAgICBfXyBNb3ZlKHNjcmF0Y2gsIHRodW5rX3Jl Zik7Ci0gICAgIF9fIGlzZWwoZXEsIHNjcmF0Y2gsIGZ1bmN0aW9uX2FkZHJlc3MsIHNjcmF0Y2gp OwotICAgfSBlbHNlIHsKLS0tLSBhL2RlcHMvdjgvc3JjL2NvZGVnZW4vcHBjL21hY3JvLWFzc2Vt Ymxlci1wcGMuY2MJMjAyMi0wMi0xOSAxODo0NTo0NC42ODc1OTMxOTQgLTA4MDAKLSsrKyBiL2Rl cHMvdjgvc3JjL2NvZGVnZW4vcHBjL21hY3JvLWFzc2VtYmxlci1wcGMuY2MJMjAyMi0wMi0xOSAx ODozMzoxNS4wNjA2NzQzODkgLTA4MDAKLUBAIC05MjUsMTMgKzkyNSwyNSBAQAotIAotIHZvaWQg VHVyYm9Bc3NlbWJsZXI6OkNvbnZlcnRJbnRUb0Zsb2F0KFJlZ2lzdGVyIHNyYywgRG91YmxlUmVn aXN0ZXIgZHN0KSB7Ci0gICBNb3ZJbnRUb0RvdWJsZShkc3QsIHNyYywgcjApOwotLSAgZmNmaWRz KGRzdCwgZHN0KTsKLSsKLSsgIGlmIChDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQoUFBDXzdfUExV UykpIHsKLSsgICAgZmNmaWRzKGRzdCwgZHN0KTsKLSsgIH0gZWxzZSB7Ci0rICAgIGZjZmlkKGRz dCwgZHN0KTsKLSsgICAgZnJzcChkc3QsIGRzdCk7Ci0rICB9Ci0gfQotIAotIHZvaWQgVHVyYm9B c3NlbWJsZXI6OkNvbnZlcnRVbnNpZ25lZEludFRvRmxvYXQoUmVnaXN0ZXIgc3JjLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG91YmxlUmVnaXN0ZXIg ZHN0KSB7Ci0gICBNb3ZVbnNpZ25lZEludFRvRG91YmxlKGRzdCwgc3JjLCByMCk7Ci0tICBmY2Zp ZHMoZHN0LCBkc3QpOwotKwotKyAgaWYgKENwdUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQUENfN19Q TFVTKSkgewotKyAgICBmY2ZpZHMoZHN0LCBkc3QpOwotKyAgfSBlbHNlIHsKLSsgICAgZmNmaWQo ZHN0LCBkc3QpOwotKyAgICBmcnNwKGRzdCwgZHN0KTsKLSsgIH0KLSB9Ci0gCi0gI2lmIFY4X1RB UkdFVF9BUkNIX1BQQzY0Ci1AQCAtOTQzLDIwICs5NTUsNTIgQEAKLSAKLSB2b2lkIFR1cmJvQXNz ZW1ibGVyOjpDb252ZXJ0VW5zaWduZWRJbnQ2NFRvRmxvYXQoUmVnaXN0ZXIgc3JjLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb3VibGVSZWdpc3Rl ciBkb3VibGVfZHN0KSB7Ci0tICBNb3ZJbnQ2NFRvRG91YmxlKGRvdWJsZV9kc3QsIHNyYyk7Ci0t ICBmY2ZpZHVzKGRvdWJsZV9kc3QsIGRvdWJsZV9kc3QpOwotKyAgaWYgKENwdUZlYXR1cmVzOjpJ c1N1cHBvcnRlZChQUENfN19QTFVTKSkgewotKyAgICBNb3ZJbnQ2NFRvRG91YmxlKGRvdWJsZV9k c3QsIHNyYyk7Ci0rICAgIGZjZmlkdXMoZG91YmxlX2RzdCwgZG91YmxlX2RzdCk7Ci0rICB9IGVs c2UgewotKyAgICBDb252ZXJ0VW5zaWduZWRJbnQ2NFRvRG91YmxlKHNyYywgZG91YmxlX2RzdCk7 Ci0rICAgIGZyc3AoZG91YmxlX2RzdCwgZG91YmxlX2RzdCk7Ci0rICB9Ci0gfQotIAotIHZvaWQg VHVyYm9Bc3NlbWJsZXI6OkNvbnZlcnRVbnNpZ25lZEludDY0VG9Eb3VibGUoUmVnaXN0ZXIgc3Jj LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRG91 YmxlUmVnaXN0ZXIgZG91YmxlX2RzdCkgewotLSAgTW92SW50NjRUb0RvdWJsZShkb3VibGVfZHN0 LCBzcmMpOwotLSAgZmNmaWR1KGRvdWJsZV9kc3QsIGRvdWJsZV9kc3QpOwotKyAgaWYgKENwdUZl YXR1cmVzOjpJc1N1cHBvcnRlZChQUENfN19QTFVTKSkgewotKyAgICBNb3ZJbnQ2NFRvRG91Ymxl KGRvdWJsZV9kc3QsIHNyYyk7Ci0rICAgIGZjZmlkdShkb3VibGVfZHN0LCBkb3VibGVfZHN0KTsK LSsgIH0gZWxzZSB7Ci0rICAgIExhYmVsIG5lZ2F0aXZlOwotKyAgICBMYWJlbCBkb25lOwotKyAg ICBjbXBpKHNyYywgT3BlcmFuZDo6WmVybygpKTsKLSsgICAgYmx0KCZuZWdhdGl2ZSk7Ci0rICAg IHN0ZChzcmMsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSkpOwotKyAgICBub3AoR1JPVVBf RU5ESU5HX05PUCk7ICAvLyBMSFMvUkFXIG9wdGltaXphdGlvbgotKyAgICBsZmQoZG91YmxlX2Rz dCwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplKSk7Ci0rICAgIGZjZmlkKGRvdWJsZV9kc3Qs IGRvdWJsZV9kc3QpOwotKyAgICBiKCZkb25lKTsKLSsgICAgYmluZCgmbmVnYXRpdmUpOwotKyAg ICAvLyBOb3RlOiBHQ0Mgc2F2ZXMgdGhlIGxvd2VzdCBiaXQsIHRoZW4gT1JzIGl0IGFmdGVyIHNo aWZ0aW5nIHJpZ2h0IDEgYml0LAotKyAgICAvLyBwcmVzdW1hYmx5IGZvciBiZXR0ZXIgcm91bmRp bmcuIFRoaXMgdmVyc2lvbiBvbmx5IHNoaWZ0cyByaWdodCAxIGJpdC4KLSsgICAgc3JkaShyMCwg c3JjLCBPcGVyYW5kKDEpKTsKLSsgICAgc3RkKHIwLCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNp emUpKTsKLSsgICAgbm9wKEdST1VQX0VORElOR19OT1ApOyAgLy8gTEhTL1JBVyBvcHRpbWl6YXRp b24KLSsgICAgbGZkKGRvdWJsZV9kc3QsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSkpOwot KyAgICBmY2ZpZChkb3VibGVfZHN0LCBkb3VibGVfZHN0KTsKLSsgICAgZmFkZChkb3VibGVfZHN0 LCBkb3VibGVfZHN0LCBkb3VibGVfZHN0KTsKLSsgICAgYmluZCgmZG9uZSk7Ci0rICAgfQotIH0K LSAKLSB2b2lkIFR1cmJvQXNzZW1ibGVyOjpDb252ZXJ0SW50NjRUb0Zsb2F0KFJlZ2lzdGVyIHNy YywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERvdWJsZVJlZ2lz dGVyIGRvdWJsZV9kc3QpIHsKLSAgIE1vdkludDY0VG9Eb3VibGUoZG91YmxlX2RzdCwgc3JjKTsK LS0gIGZjZmlkcyhkb3VibGVfZHN0LCBkb3VibGVfZHN0KTsKLSsgIGlmIChDcHVGZWF0dXJlczo6 SXNTdXBwb3J0ZWQoUFBDXzdfUExVUykpIHsKLSsgICAgZmNmaWRzKGRvdWJsZV9kc3QsIGRvdWJs ZV9kc3QpOwotKyAgfSBlbHNlIHsKLSsgICAgZmNmaWQoZG91YmxlX2RzdCwgZG91YmxlX2RzdCk7 Ci0rICAgIGZyc3AoZG91YmxlX2RzdCwgZG91YmxlX2RzdCk7Ci0rICB9Ci0gfQotICNlbmRpZgot IAotQEAgLTk4NiwxNSArMTAzMCw1NiBAQAotIHZvaWQgVHVyYm9Bc3NlbWJsZXI6OkNvbnZlcnRE b3VibGVUb1Vuc2lnbmVkSW50NjQoCi0gICAgIGNvbnN0IERvdWJsZVJlZ2lzdGVyIGRvdWJsZV9p bnB1dCwgY29uc3QgUmVnaXN0ZXIgZHN0LAotICAgICBjb25zdCBEb3VibGVSZWdpc3RlciBkb3Vi bGVfZHN0LCBGUFJvdW5kaW5nTW9kZSByb3VuZGluZ19tb2RlKSB7Ci0tICBpZiAocm91bmRpbmdf bW9kZSA9PSBrUm91bmRUb1plcm8pIHsKLS0gICAgZmN0aWR1eihkb3VibGVfZHN0LCBkb3VibGVf aW5wdXQpOwotKyAgaWYgKENwdUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQUENfN19QTFVTKSkgewot KyAgICBpZiAocm91bmRpbmdfbW9kZSA9PSBrUm91bmRUb1plcm8pIHsKLSsgICAgICBmY3RpZHV6 KGRvdWJsZV9kc3QsIGRvdWJsZV9pbnB1dCk7Ci0rICAgIH0gZWxzZSB7Ci0rICAgICAgU2V0Um91 bmRpbmdNb2RlKHJvdW5kaW5nX21vZGUpOwotKyAgICAgIGZjdGlkdShkb3VibGVfZHN0LCBkb3Vi bGVfaW5wdXQpOwotKyAgICAgIFJlc2V0Um91bmRpbmdNb2RlKCk7Ci0rICAgIH0KLSsKLSsgICAg TW92RG91YmxlVG9JbnQ2NChkc3QsIGRvdWJsZV9kc3QpOwotICAgfSBlbHNlIHsKLS0gICAgU2V0 Um91bmRpbmdNb2RlKHJvdW5kaW5nX21vZGUpOwotLSAgICBmY3RpZHUoZG91YmxlX2RzdCwgZG91 YmxlX2lucHV0KTsKLS0gICAgUmVzZXRSb3VuZGluZ01vZGUoKTsKLSsgICAgTGFiZWwgc2FmZV9z aXplOwotKyAgICBMYWJlbCBkb25lOwotKyAgICBtb3YoZHN0LCBPcGVyYW5kKDE1OTM4MzU1MjAp KTsgIC8vIGJpdCBwYXR0ZXJuIGZvciAyXjYzIGFzIGEgZmxvYXQKLSsgICAgc3R3KGRzdCwgTWVt T3BlcmFuZChzcCwgLWtGbG9hdFNpemUpKTsKLSsgICAgbm9wKEdST1VQX0VORElOR19OT1ApOyAg Ly8gTEhTL1JBVyBvcHRpbWl6YXRpb24KLSsgICAgbGZzKGRvdWJsZV9kc3QsIE1lbU9wZXJhbmQo c3AsIC1rRmxvYXRTaXplKSk7Ci0rICAgIGZjbXB1KGRvdWJsZV9pbnB1dCwgZG91YmxlX2RzdCk7 Ci0rICAgIGJsdCgmc2FmZV9zaXplKTsKLSsgICAgLy8gU3VidHJhY3QgMl42MywgdGhlbiBPUiB0 aGUgdG9wIGJpdCBvZiB0aGUgdWludDY0IHRvIGFkZCBiYWNrCi0rICAgIGZzdWIoZG91YmxlX2Rz dCwgZG91YmxlX2lucHV0LCBkb3VibGVfZHN0KTsKLSsgICAgaWYgKHJvdW5kaW5nX21vZGUgPT0g a1JvdW5kVG9aZXJvKSB7Ci0rICAgICAgZmN0aWR6KGRvdWJsZV9kc3QsIGRvdWJsZV9kc3QpOwot KyAgICB9IGVsc2UgewotKyAgICAgIFNldFJvdW5kaW5nTW9kZShyb3VuZGluZ19tb2RlKTsKLSsg ICAgICBmY3RpZChkb3VibGVfZHN0LCBkb3VibGVfZHN0KTsKLSsgICAgICBSZXNldFJvdW5kaW5n TW9kZSgpOwotKyAgICB9Ci0rICAgIC8vIHNldCByMCB0byAtMSwgdGhlbiBjbGVhciBhbGwgYnV0 IHRoZSBNU0IuCi0rICAgIG1vdihyMCwgT3BlcmFuZCgtMSkpOwotKyAgICBybGRpY3IocjAsIHIw LCAwLCAwKTsKLSsgICAgc3RmZChkb3VibGVfZHN0LCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNp emUpKTsKLSsgICAgbm9wKEdST1VQX0VORElOR19OT1ApOyAgLy8gTEhTL1JBVyBvcHRpbWl6YXRp b24KLSsgICAgbGQoZHN0LCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNpemUpKTsKLSsgICAgb3J4 KGRzdCwgZHN0LCByMCk7Ci0rICAgIGIoJmRvbmUpOwotKyAgICAvLyBIYW5kbGluZyBmb3IgdmFs dWVzIHNtYWxsZXIgdGhhbiAyXjYzLgotKyAgICBiaW5kKCZzYWZlX3NpemUpOwotKyAgICBpZiAo cm91bmRpbmdfbW9kZSA9PSBrUm91bmRUb1plcm8pIHsKLSsgICAgICBmY3RpZHooZG91YmxlX2Rz dCwgZG91YmxlX2lucHV0KTsKLSsgICAgfSBlbHNlIHsKLSsgICAgICBTZXRSb3VuZGluZ01vZGUo cm91bmRpbmdfbW9kZSk7Ci0rICAgICAgZmN0aWQoZG91YmxlX2RzdCwgZG91YmxlX2lucHV0KTsK LSsgICAgICBSZXNldFJvdW5kaW5nTW9kZSgpOwotKyAgICB9Ci0rICAgIHN0ZmQoZG91YmxlX2Rz dCwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplKSk7Ci0rICAgIG5vcChHUk9VUF9FTkRJTkdf Tk9QKTsgIC8vIExIUy9SQVcgb3B0aW1pemF0aW9uCi0rICAgIGxkKGRzdCwgTWVtT3BlcmFuZChz cCwgLWtEb3VibGVTaXplKSk7Ci0rICAgIGJpbmQoJmRvbmUpOwotICAgfQotLQotLSAgTW92RG91 YmxlVG9JbnQ2NChkc3QsIGRvdWJsZV9kc3QpOwotIH0KLSAjZW5kaWYKLSAKLUBAIC0yNDU5LDE5 ICsyNTQ0LDE3IEBACi0gICB9Ci0gI2VuZGlmCi0gCi0tICBhZGRpKHNwLCBzcCwgT3BlcmFuZCgt a0RvdWJsZVNpemUpKTsKLSAjaWYgVjhfVEFSR0VUX0FSQ0hfUFBDNjQKLSAgIG1vdihzY3JhdGNo LCBPcGVyYW5kKGxpdFZhbC5pdmFsKSk7Ci0tICBzdGQoc2NyYXRjaCwgTWVtT3BlcmFuZChzcCkp OwotKyAgc3RkKHNjcmF0Y2gsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSkpOwotICNlbHNl Ci0gICBMb2FkSW50TGl0ZXJhbChzY3JhdGNoLCBsaXRWYWwuaXZhbFswXSk7Ci0tICBzdHcoc2Ny YXRjaCwgTWVtT3BlcmFuZChzcCwgMCkpOwotKyAgc3R3KHNjcmF0Y2gsIE1lbU9wZXJhbmQoc3As IC1rRG91YmxlU2l6ZSkpOwotICAgTG9hZEludExpdGVyYWwoc2NyYXRjaCwgbGl0VmFsLml2YWxb MV0pOwotLSAgc3R3KHNjcmF0Y2gsIE1lbU9wZXJhbmQoc3AsIDQpKTsKLSsgIHN0dyhzY3JhdGNo LCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNpemUgKyA0KSk7Ci0gI2VuZGlmCi0gICBub3AoR1JP VVBfRU5ESU5HX05PUCk7ICAvLyBMSFMvUkFXIG9wdGltaXphdGlvbgotLSAgbGZkKHJlc3VsdCwg TWVtT3BlcmFuZChzcCwgMCkpOwotLSAgYWRkaShzcCwgc3AsIE9wZXJhbmQoa0RvdWJsZVNpemUp KTsKLSsgIGxmZChyZXN1bHQsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSkpOwotIH0KLSAK LSB2b2lkIFR1cmJvQXNzZW1ibGVyOjpNb3ZJbnRUb0RvdWJsZShEb3VibGVSZWdpc3RlciBkc3Qs IFJlZ2lzdGVyIHNyYywKLUBAIC0yNDg1LDE4ICsyNTY4LDE2IEBACi0gI2VuZGlmCi0gCi0gICBE Q0hFQ0soc3JjICE9IHNjcmF0Y2gpOwotLSAgc3ViaShzcCwgc3AsIE9wZXJhbmQoa0RvdWJsZVNp emUpKTsKLSAjaWYgVjhfVEFSR0VUX0FSQ0hfUFBDNjQKLSAgIGV4dHN3KHNjcmF0Y2gsIHNyYyk7 Ci0tICBzdGQoc2NyYXRjaCwgTWVtT3BlcmFuZChzcCwgMCkpOwotKyAgc3RkKHNjcmF0Y2gsIE1l bU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSkpOwotICNlbHNlCi0gICBzcmF3aShzY3JhdGNoLCBz cmMsIDMxKTsKLS0gIHN0dyhzY3JhdGNoLCBNZW1PcGVyYW5kKHNwLCBSZWdpc3Rlcjo6a0V4cG9u ZW50T2Zmc2V0KSk7Ci0tICBzdHcoc3JjLCBNZW1PcGVyYW5kKHNwLCBSZWdpc3Rlcjo6a01hbnRp c3NhT2Zmc2V0KSk7Ci0rICBzdHcoc2NyYXRjaCwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXpl ICsgUmVnaXN0ZXI6OmtFeHBvbmVudE9mZnNldCkpOwotKyAgc3R3KHNyYywgTWVtT3BlcmFuZChz cCwgLWtEb3VibGVTaXplICsgUmVnaXN0ZXI6OmtNYW50aXNzYU9mZnNldCkpOwotICNlbmRpZgot ICAgbm9wKEdST1VQX0VORElOR19OT1ApOyAgLy8gTEhTL1JBVyBvcHRpbWl6YXRpb24KLS0gIGxm ZChkc3QsIE1lbU9wZXJhbmQoc3AsIDApKTsKLS0gIGFkZGkoc3AsIHNwLCBPcGVyYW5kKGtEb3Vi bGVTaXplKSk7Ci0rICBsZmQoZHN0LCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNpemUpKTsKLSB9 Ci0gCi0gdm9pZCBUdXJib0Fzc2VtYmxlcjo6TW92VW5zaWduZWRJbnRUb0RvdWJsZShEb3VibGVS ZWdpc3RlciBkc3QsIFJlZ2lzdGVyIHNyYywKLUBAIC0yNTEwLDE4ICsyNTkxLDE2IEBACi0gI2Vu ZGlmCi0gCi0gICBEQ0hFQ0soc3JjICE9IHNjcmF0Y2gpOwotLSAgc3ViaShzcCwgc3AsIE9wZXJh bmQoa0RvdWJsZVNpemUpKTsKLSAjaWYgVjhfVEFSR0VUX0FSQ0hfUFBDNjQKLSAgIGNscmxkaShz Y3JhdGNoLCBzcmMsIE9wZXJhbmQoMzIpKTsKLS0gIHN0ZChzY3JhdGNoLCBNZW1PcGVyYW5kKHNw LCAwKSk7Ci0rICBzdGQoc2NyYXRjaCwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplKSk7Ci0g I2Vsc2UKLSAgIGxpKHNjcmF0Y2gsIE9wZXJhbmQ6Olplcm8oKSk7Ci0tICBzdHcoc2NyYXRjaCwg TWVtT3BlcmFuZChzcCwgUmVnaXN0ZXI6OmtFeHBvbmVudE9mZnNldCkpOwotLSAgc3R3KHNyYywg TWVtT3BlcmFuZChzcCwgUmVnaXN0ZXI6OmtNYW50aXNzYU9mZnNldCkpOwotKyAgc3R3KHNjcmF0 Y2gsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSArIFJlZ2lzdGVyOjprRXhwb25lbnRPZmZz ZXQpKTsKLSsgIHN0dyhzcmMsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSArIFJlZ2lzdGVy OjprTWFudGlzc2FPZmZzZXQpKTsKLSAjZW5kaWYKLSAgIG5vcChHUk9VUF9FTkRJTkdfTk9QKTsg IC8vIExIUy9SQVcgb3B0aW1pemF0aW9uCi0tICBsZmQoZHN0LCBNZW1PcGVyYW5kKHNwLCAwKSk7 Ci0tICBhZGRpKHNwLCBzcCwgT3BlcmFuZChrRG91YmxlU2l6ZSkpOwotKyAgbGZkKGRzdCwgTWVt T3BlcmFuZChzcCwgLWtEb3VibGVTaXplKSk7Ci0gfQotIAotIHZvaWQgVHVyYm9Bc3NlbWJsZXI6 Ok1vdkludDY0VG9Eb3VibGUoRG91YmxlUmVnaXN0ZXIgZHN0LAotQEAgLTI1MzYsMTYgKzI2MTUs MTQgQEAKLSAgIH0KLSAjZW5kaWYKLSAKLS0gIHN1Ymkoc3AsIHNwLCBPcGVyYW5kKGtEb3VibGVT aXplKSk7Ci0gI2lmIFY4X1RBUkdFVF9BUkNIX1BQQzY0Ci0tICBzdGQoc3JjLCBNZW1PcGVyYW5k KHNwLCAwKSk7Ci0rICBzdGQoc3JjLCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNpemUpKTsKLSAj ZWxzZQotLSAgc3R3KHNyY19oaSwgTWVtT3BlcmFuZChzcCwgUmVnaXN0ZXI6OmtFeHBvbmVudE9m ZnNldCkpOwotLSAgc3R3KHNyYywgTWVtT3BlcmFuZChzcCwgUmVnaXN0ZXI6OmtNYW50aXNzYU9m ZnNldCkpOwotKyAgc3R3KHNyY19oaSwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplICsgUmVn aXN0ZXI6OmtFeHBvbmVudE9mZnNldCkpOwotKyAgc3R3KHNyYywgTWVtT3BlcmFuZChzcCwgLWtE b3VibGVTaXplICsgUmVnaXN0ZXI6OmtNYW50aXNzYU9mZnNldCkpOwotICNlbmRpZgotICAgbm9w KEdST1VQX0VORElOR19OT1ApOyAgLy8gTEhTL1JBVyBvcHRpbWl6YXRpb24KLS0gIGxmZChkc3Qs IE1lbU9wZXJhbmQoc3AsIDApKTsKLS0gIGFkZGkoc3AsIHNwLCBPcGVyYW5kKGtEb3VibGVTaXpl KSk7Ci0rICBsZmQoZHN0LCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNpemUpKTsKLSB9Ci0gCi0g I2lmIFY4X1RBUkdFVF9BUkNIX1BQQzY0Ci1AQCAtMjU2MCwxMiArMjYzNywxMCBAQAotICAgICBy ZXR1cm47Ci0gICB9Ci0gCi0tICBzdWJpKHNwLCBzcCwgT3BlcmFuZChrRG91YmxlU2l6ZSkpOwot LSAgc3R3KHNyY19oaSwgTWVtT3BlcmFuZChzcCwgUmVnaXN0ZXI6OmtFeHBvbmVudE9mZnNldCkp OwotLSAgc3R3KHNyY19sbywgTWVtT3BlcmFuZChzcCwgUmVnaXN0ZXI6OmtNYW50aXNzYU9mZnNl dCkpOwotKyAgc3R3KHNyY19oaSwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplICsgUmVnaXN0 ZXI6OmtFeHBvbmVudE9mZnNldCkpOwotKyAgc3R3KHNyY19sbywgTWVtT3BlcmFuZChzcCwgLWtE b3VibGVTaXplICsgUmVnaXN0ZXI6OmtNYW50aXNzYU9mZnNldCkpOwotICAgbm9wKEdST1VQX0VO RElOR19OT1ApOyAgLy8gTEhTL1JBVyBvcHRpbWl6YXRpb24KLS0gIGxmZChkc3QsIE1lbU9wZXJh bmQoc3ApKTsKLS0gIGFkZGkoc3AsIHNwLCBPcGVyYW5kKGtEb3VibGVTaXplKSk7Ci0rICBsZmQo ZHN0LCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNpemUpKTsKLSB9Ci0gI2VuZGlmCi0gCi1AQCAt MjU4MCwxMiArMjY1NSwxMCBAQAotICAgfQotICNlbmRpZgotIAotLSAgc3ViaShzcCwgc3AsIE9w ZXJhbmQoa0RvdWJsZVNpemUpKTsKLS0gIHN0ZmQoZHN0LCBNZW1PcGVyYW5kKHNwKSk7Ci0tICBz dHcoc3JjLCBNZW1PcGVyYW5kKHNwLCBSZWdpc3Rlcjo6a01hbnRpc3NhT2Zmc2V0KSk7Ci0rICBz dGZkKGRzdCwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplKSk7Ci0rICBzdHcoc3JjLCBNZW1P cGVyYW5kKHNwLCAta0RvdWJsZVNpemUgKyBSZWdpc3Rlcjo6a01hbnRpc3NhT2Zmc2V0KSk7Ci0g ICBub3AoR1JPVVBfRU5ESU5HX05PUCk7ICAvLyBMSFMvUkFXIG9wdGltaXphdGlvbgotLSAgbGZk KGRzdCwgTWVtT3BlcmFuZChzcCkpOwotLSAgYWRkaShzcCwgc3AsIE9wZXJhbmQoa0RvdWJsZVNp emUpKTsKLSsgIGxmZChkc3QsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSkpOwotIH0KLSAK LSB2b2lkIFR1cmJvQXNzZW1ibGVyOjpJbnNlcnREb3VibGVIaWdoKERvdWJsZVJlZ2lzdGVyIGRz dCwgUmVnaXN0ZXIgc3JjLAotQEAgLTI1OTksMTIgKzI2NzIsMTAgQEAKLSAgIH0KLSAjZW5kaWYK LSAKLS0gIHN1Ymkoc3AsIHNwLCBPcGVyYW5kKGtEb3VibGVTaXplKSk7Ci0tICBzdGZkKGRzdCwg TWVtT3BlcmFuZChzcCkpOwotLSAgc3R3KHNyYywgTWVtT3BlcmFuZChzcCwgUmVnaXN0ZXI6OmtF eHBvbmVudE9mZnNldCkpOwotKyAgc3RmZChkc3QsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6 ZSkpOwotKyAgc3R3KHNyYywgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplICsgUmVnaXN0ZXI6 OmtFeHBvbmVudE9mZnNldCkpOwotICAgbm9wKEdST1VQX0VORElOR19OT1ApOyAgLy8gTEhTL1JB VyBvcHRpbWl6YXRpb24KLS0gIGxmZChkc3QsIE1lbU9wZXJhbmQoc3ApKTsKLS0gIGFkZGkoc3As IHNwLCBPcGVyYW5kKGtEb3VibGVTaXplKSk7Ci0rICBsZmQoZHN0LCBNZW1PcGVyYW5kKHNwLCAt a0RvdWJsZVNpemUpKTsKLSB9Ci0gCi0gdm9pZCBUdXJib0Fzc2VtYmxlcjo6TW92RG91YmxlTG93 VG9JbnQoUmVnaXN0ZXIgZHN0LCBEb3VibGVSZWdpc3RlciBzcmMpIHsKLUBAIC0yNjE1LDExICsy Njg2LDkgQEAKLSAgIH0KLSAjZW5kaWYKLSAKLS0gIHN1Ymkoc3AsIHNwLCBPcGVyYW5kKGtEb3Vi bGVTaXplKSk7Ci0tICBzdGZkKHNyYywgTWVtT3BlcmFuZChzcCkpOwotKyAgc3RmZChzcmMsIE1l bU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSkpOwotICAgbm9wKEdST1VQX0VORElOR19OT1ApOyAg Ly8gTEhTL1JBVyBvcHRpbWl6YXRpb24KLS0gIGx3eihkc3QsIE1lbU9wZXJhbmQoc3AsIFJlZ2lz dGVyOjprTWFudGlzc2FPZmZzZXQpKTsKLS0gIGFkZGkoc3AsIHNwLCBPcGVyYW5kKGtEb3VibGVT aXplKSk7Ci0rICBsd3ooZHN0LCBNZW1PcGVyYW5kKHNwLCAta0RvdWJsZVNpemUgKyBSZWdpc3Rl cjo6a01hbnRpc3NhT2Zmc2V0KSk7Ci0gfQotIAotIHZvaWQgVHVyYm9Bc3NlbWJsZXI6Ok1vdkRv dWJsZUhpZ2hUb0ludChSZWdpc3RlciBkc3QsIERvdWJsZVJlZ2lzdGVyIHNyYykgewotQEAgLTI2 MzEsMTEgKzI3MDAsOSBAQAotICAgfQotICNlbmRpZgotIAotLSAgc3ViaShzcCwgc3AsIE9wZXJh bmQoa0RvdWJsZVNpemUpKTsKLS0gIHN0ZmQoc3JjLCBNZW1PcGVyYW5kKHNwKSk7Ci0rICBzdGZk KHNyYywgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplKSk7Ci0gICBub3AoR1JPVVBfRU5ESU5H X05PUCk7ICAvLyBMSFMvUkFXIG9wdGltaXphdGlvbgotLSAgbHd6KGRzdCwgTWVtT3BlcmFuZChz cCwgUmVnaXN0ZXI6OmtFeHBvbmVudE9mZnNldCkpOwotLSAgYWRkaShzcCwgc3AsIE9wZXJhbmQo a0RvdWJsZVNpemUpKTsKLSsgIGx3eihkc3QsIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSAr IFJlZ2lzdGVyOjprRXhwb25lbnRPZmZzZXQpKTsKLSB9Ci0gCi0gdm9pZCBUdXJib0Fzc2VtYmxl cjo6TW92RG91YmxlVG9JbnQ2NCgKLUBAIC0yNjUwLDMyICsyNzE3LDI2IEBACi0gICB9Ci0gI2Vu ZGlmCi0gCi0tICBzdWJpKHNwLCBzcCwgT3BlcmFuZChrRG91YmxlU2l6ZSkpOwotLSAgc3RmZChz cmMsIE1lbU9wZXJhbmQoc3ApKTsKLSsgIHN0ZmQoc3JjLCBNZW1PcGVyYW5kKHNwLCAta0RvdWJs ZVNpemUpKTsKLSAgIG5vcChHUk9VUF9FTkRJTkdfTk9QKTsgIC8vIExIUy9SQVcgb3B0aW1pemF0 aW9uCi0gI2lmIFY4X1RBUkdFVF9BUkNIX1BQQzY0Ci0tICBsZChkc3QsIE1lbU9wZXJhbmQoc3As IDApKTsKLSsgIGxkKGRzdCwgTWVtT3BlcmFuZChzcCwgLWtEb3VibGVTaXplKSk7Ci0gI2Vsc2UK LS0gIGx3eihkc3RfaGksIE1lbU9wZXJhbmQoc3AsIFJlZ2lzdGVyOjprRXhwb25lbnRPZmZzZXQp KTsKLS0gIGx3eihkc3QsIE1lbU9wZXJhbmQoc3AsIFJlZ2lzdGVyOjprTWFudGlzc2FPZmZzZXQp KTsKLSsgIGx3eihkc3RfaGksIE1lbU9wZXJhbmQoc3AsIC1rRG91YmxlU2l6ZSArIFJlZ2lzdGVy OjprRXhwb25lbnRPZmZzZXQpKTsKLSsgIGx3eihkc3QsIE1lbU9wZXJhbmQoc3AsIC1rRG91Ymxl U2l6ZSArIFJlZ2lzdGVyOjprTWFudGlzc2FPZmZzZXQpKTsKLSAjZW5kaWYKLS0gIGFkZGkoc3As IHNwLCBPcGVyYW5kKGtEb3VibGVTaXplKSk7Ci0gfQotIAotIHZvaWQgVHVyYm9Bc3NlbWJsZXI6 Ok1vdkludFRvRmxvYXQoRG91YmxlUmVnaXN0ZXIgZHN0LCBSZWdpc3RlciBzcmMpIHsKLS0gIHN1 Ymkoc3AsIHNwLCBPcGVyYW5kKGtGbG9hdFNpemUpKTsKLS0gIHN0dyhzcmMsIE1lbU9wZXJhbmQo c3AsIDApKTsKLSsgIHN0dyhzcmMsIE1lbU9wZXJhbmQoc3AsIC1rRmxvYXRTaXplKSk7Ci0gICBu b3AoR1JPVVBfRU5ESU5HX05PUCk7ICAvLyBMSFMvUkFXIG9wdGltaXphdGlvbgotLSAgbGZzKGRz dCwgTWVtT3BlcmFuZChzcCwgMCkpOwotLSAgYWRkaShzcCwgc3AsIE9wZXJhbmQoa0Zsb2F0U2l6 ZSkpOwotKyAgbGZzKGRzdCwgTWVtT3BlcmFuZChzcCwgLWtGbG9hdFNpemUpKTsKLSB9Ci0gCi0g dm9pZCBUdXJib0Fzc2VtYmxlcjo6TW92RmxvYXRUb0ludChSZWdpc3RlciBkc3QsIERvdWJsZVJl Z2lzdGVyIHNyYykgewotLSAgc3ViaShzcCwgc3AsIE9wZXJhbmQoa0Zsb2F0U2l6ZSkpOwotLSAg c3RmcyhzcmMsIE1lbU9wZXJhbmQoc3AsIDApKTsKLSsgIHN0ZnMoc3JjLCBNZW1PcGVyYW5kKHNw LCAta0Zsb2F0U2l6ZSkpOwotICAgbm9wKEdST1VQX0VORElOR19OT1ApOyAgLy8gTEhTL1JBVyBv cHRpbWl6YXRpb24KLS0gIGx3eihkc3QsIE1lbU9wZXJhbmQoc3AsIDApKTsKLS0gIGFkZGkoc3As IHNwLCBPcGVyYW5kKGtGbG9hdFNpemUpKTsKLSsgIGx3eihkc3QsIE1lbU9wZXJhbmQoc3AsIC1r RmxvYXRTaXplKSk7Ci0gfQotIAotIHZvaWQgVHVyYm9Bc3NlbWJsZXI6OkFkZFM2NChSZWdpc3Rl ciBkc3QsIFJlZ2lzdGVyIHNyYywgUmVnaXN0ZXIgdmFsdWUsIE9FQml0IHMsCi1AQCAtMzE4OSwx MCArMzI1MCw4IEBACi0gICB9Ci0gCi0gI2RlZmluZSBNRU1fTEVfT1BfTElTVChWKSBcCi0tICBW KExvYWRVNjQsIGxkYnJ4KSAgICAgICBcCi0gICBWKExvYWRVMzIsIGx3YnJ4KSAgICAgICBcCi0g ICBWKExvYWRVMTYsIGxoYnJ4KSAgICAgICBcCi0tICBWKFN0b3JlVTY0LCBzdGRicngpICAgICBc Ci0gICBWKFN0b3JlVTMyLCBzdHdicngpICAgICBcCi0gICBWKFN0b3JlVTE2LCBzdGhicngpCi0g Ci1AQCAtMzIxNCw2ICszMjczLDM3IEBACi0gI3VuZGVmIE1FTV9MRV9PUF9GVU5DVElPTgotICN1 bmRlZiBNRU1fTEVfT1BfTElTVAotIAotK3ZvaWQgVHVyYm9Bc3NlbWJsZXI6OkxvYWRVNjRMRShS ZWdpc3RlciBkc3QsIGNvbnN0IE1lbU9wZXJhbmQmIG1lbSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUmVnaXN0ZXIgc2NyYXRjaCkgewotKyNpZmRlZiBWOF9UQVJHRVRfQklHX0VO RElBTgotKyAgaWYgKENwdUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQUENfN19QTFVTX05YUCkpIHsK LSsgICAgR2VuZXJhdGVNZW1vcnlMRU9wZXJhdGlvbihkc3QsIG1lbSwgbGRicngpOwotKyAgfSBl bHNlIHsKLSsgICAgbHdicngoZHN0LCBtZW0pOwotKyAgICBsd2JyeChzY3JhdGNoLCBNZW1PcGVy YW5kKG1lbS5yYSgpLCBtZW0ucmIoKSwgbWVtLm9mZnNldCgpICsgNCkpOwotKyAgICBybGRpY3Io c2NyYXRjaCwgc2NyYXRjaCwgMzIsIDMxKTsKLSsgICAgb3J4KGRzdCwgZHN0LCBzY3JhdGNoKTsK LSsgIH0KLSsjZWxzZQotKyAgTG9hZFU2NChkc3QsIG1lbSwgc2NyYXRjaCk7Ci0rI2VuZGlmCi0r fQotKwotK3ZvaWQgVHVyYm9Bc3NlbWJsZXI6OlN0b3JlVTY0TEUoUmVnaXN0ZXIgc3JjLCBjb25z dCBNZW1PcGVyYW5kJiBtZW0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdp c3RlciBzY3JhdGNoKSB7Ci0rI2lmZGVmIFY4X1RBUkdFVF9CSUdfRU5ESUFOCi0rICBpZiAoQ3B1 RmVhdHVyZXM6OklzU3VwcG9ydGVkKFBQQ183X1BMVVNfTlhQKSkgewotKyAgICBHZW5lcmF0ZU1l bW9yeUxFT3BlcmF0aW9uKHNyYywgbWVtLCBzdGRicngpOwotKyAgfSBlbHNlIHsKLSsgICAgc3R3 YnJ4KHNyYywgbWVtKTsKLSsgICAgcmxkaWNsKHNjcmF0Y2gsIHNyYywgMzIsIDMyKTsKLSsgICAg c3R3YnJ4KHNjcmF0Y2gsIE1lbU9wZXJhbmQobWVtLnJhKCksIG1lbS5yYigpLCBtZW0ub2Zmc2V0 KCkgKyA0KSk7Ci0rICB9Ci0rI2Vsc2UKLSsgIFN0b3JlVTY0KHNyYywgbWVtLCBzY3JhdGNoKTsK LSsjZW5kaWYKLSt9Ci0rCi0gdm9pZCBUdXJib0Fzc2VtYmxlcjo6TG9hZFMzMkxFKFJlZ2lzdGVy IGRzdCwgY29uc3QgTWVtT3BlcmFuZCYgbWVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSZWdpc3RlciBzY3JhdGNoKSB7Ci0gI2lmZGVmIFY4X1RBUkdFVF9CSUdfRU5ESUFOCi0t LS0gYS9kZXBzL3Y4L3NyYy9jb2RlZ2VuL2NwdS1mZWF0dXJlcy5oCTIwMjItMDItMTkgMjE6MTk6 MTUuOTgyMjg4NjkwIC0wODAwCi0rKysgYi9kZXBzL3Y4L3NyYy9jb2RlZ2VuL2NwdS1mZWF0dXJl cy5oCTIwMjItMDItMTkgMjE6MjI6NDMuMDcxNDg3MzY5IC0wODAwCi1AQCAtNTIsMTEgKzUyLDE1 IEBACi0gICBNSVBTX1NJTUQsICAvLyBNU0EgaW5zdHJ1Y3Rpb25zCi0gCi0gI2VsaWYgVjhfVEFS R0VUX0FSQ0hfUFBDIHx8IFY4X1RBUkdFVF9BUkNIX1BQQzY0Ci0rICBQUENfNV9QTFVTLAotICAg UFBDXzZfUExVUywKLSAgIFBQQ183X1BMVVMsCi0gICBQUENfOF9QTFVTLAotICAgUFBDXzlfUExV UywKLSAgIFBQQ18xMF9QTFVTLAotKyAgSUNBQ0hFX1NOT09QLCAgICAgLy8gSVNBIHYyLjAyIChQ T1dFUjUpCi0rICBJU0VMRUNULCAgICAgICAgICAvLyBJU0EgdjIuMDMgKFBPV0VSNSsgYW5kIHNv bWUgTlhQIGNvcmVzKQotKyAgUFBDXzdfUExVU19OWFAsICAgLy8gSVNBIHYyLjA2IChQT1dFUjcg YW5kIE5YUCBlNTUwMC9lNjUwMCkKLSAKLSAjZWxpZiBWOF9UQVJHRVRfQVJDSF9TMzkwWAotICAg RlBVLAotLS0tIGEvZGVwcy92OC9zcmMvY29tcGlsZXIvYmFja2VuZC9wcGMvaW5zdHJ1Y3Rpb24t c2VsZWN0b3ItcHBjLmNjCTIwMjItMDItMjAgMjM6MzU6MjEuMjEyMzM3NjM5IC0wODAwCi0rKysg Yi9kZXBzL3Y4L3NyYy9jb21waWxlci9iYWNrZW5kL3BwYy9pbnN0cnVjdGlvbi1zZWxlY3Rvci1w cGMuY2MJMjAyMi0wMi0yMCAyMzozNjoyMC45MjU4NTg4NDAgLTA4MDAKLUBAIC0yNzAyLDE2ICsy NzAyLDI2IEBACi0gLy8gc3RhdGljCi0gTWFjaGluZU9wZXJhdG9yQnVpbGRlcjo6RmxhZ3MKLSBJ bnN0cnVjdGlvblNlbGVjdG9yOjpTdXBwb3J0ZWRNYWNoaW5lT3BlcmF0b3JGbGFncygpIHsKLS0g IHJldHVybiBNYWNoaW5lT3BlcmF0b3JCdWlsZGVyOjprRmxvYXQzMlJvdW5kRG93biB8Ci0tICAg ICAgICAgTWFjaGluZU9wZXJhdG9yQnVpbGRlcjo6a0Zsb2F0NjRSb3VuZERvd24gfAotLSAgICAg ICAgIE1hY2hpbmVPcGVyYXRvckJ1aWxkZXI6OmtGbG9hdDMyUm91bmRVcCB8Ci0tICAgICAgICAg TWFjaGluZU9wZXJhdG9yQnVpbGRlcjo6a0Zsb2F0NjRSb3VuZFVwIHwKLS0gICAgICAgICBNYWNo aW5lT3BlcmF0b3JCdWlsZGVyOjprRmxvYXQzMlJvdW5kVHJ1bmNhdGUgfAotLSAgICAgICAgIE1h Y2hpbmVPcGVyYXRvckJ1aWxkZXI6OmtGbG9hdDY0Um91bmRUcnVuY2F0ZSB8Ci0tICAgICAgICAg TWFjaGluZU9wZXJhdG9yQnVpbGRlcjo6a0Zsb2F0NjRSb3VuZFRpZXNBd2F5IHwKLS0gICAgICAg ICBNYWNoaW5lT3BlcmF0b3JCdWlsZGVyOjprV29yZDMyUG9wY250IHwKLS0gICAgICAgICBNYWNo aW5lT3BlcmF0b3JCdWlsZGVyOjprV29yZDY0UG9wY250OwotKyAgTWFjaGluZU9wZXJhdG9yQnVp bGRlcjo6RmxhZ3MgZmxhZ3MgPSBNYWNoaW5lT3BlcmF0b3JCdWlsZGVyOjpGbGFnOjprTm9GbGFn czsKLSsgIC8vIEZQIHJvdW5kaW5nIHRvIGludGVnZXIgaW5zdHJ1Y3Rpb25zIHJlcXVpcmUgUG93 ZXIgSVNBIHYyLjAyIG9yIGxhdGVyLgotKyAgaWYgKENwdUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQ UENfNV9QTFVTKSkgewotKyAgICBmbGFncyB8PSBNYWNoaW5lT3BlcmF0b3JCdWlsZGVyOjprRmxv YXQzMlJvdW5kRG93biB8Ci0rICAgICAgICAgICAgIE1hY2hpbmVPcGVyYXRvckJ1aWxkZXI6OmtG bG9hdDY0Um91bmREb3duIHwKLSsgICAgICAgICAgICAgTWFjaGluZU9wZXJhdG9yQnVpbGRlcjo6 a0Zsb2F0MzJSb3VuZFVwIHwKLSsgICAgICAgICAgICAgTWFjaGluZU9wZXJhdG9yQnVpbGRlcjo6 a0Zsb2F0NjRSb3VuZFVwIHwKLSsgICAgICAgICAgICAgTWFjaGluZU9wZXJhdG9yQnVpbGRlcjo6 a0Zsb2F0MzJSb3VuZFRydW5jYXRlIHwKLSsgICAgICAgICAgICAgTWFjaGluZU9wZXJhdG9yQnVp bGRlcjo6a0Zsb2F0NjRSb3VuZFRydW5jYXRlIHwKLSsgICAgICAgICAgICAgTWFjaGluZU9wZXJh dG9yQnVpbGRlcjo6a0Zsb2F0NjRSb3VuZFRpZXNBd2F5OwotKyAgfQotKyAgLy8gUG9wdWxhdGlv biBjb3VudCByZXF1aXJlcyBQb3dlciBJU0EgdjIuMDYsIG9yIE5YUCBlNTUwMC9lNjUwMC4KLSsg IGlmIChDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQoUFBDXzdfUExVU19OWFApKSB7Ci0rICAgIGZs YWdzIHw9IE1hY2hpbmVPcGVyYXRvckJ1aWxkZXI6OmtXb3JkMzJQb3BjbnQ7Ci0rI2lmIFY4X1RB UkdFVF9BUkNIX1BQQzY0Ci0rICAgIGZsYWdzIHw9IE1hY2hpbmVPcGVyYXRvckJ1aWxkZXI6OmtX b3JkNjRQb3BjbnQ7Ci0rI2VuZGlmCi0rICB9Ci0gICAvLyBXZSBvbWl0IGtXb3JkMzJTaGlmdElz U2FmZSBhcyBzW3JsXXcgdXNlIDB4M0YgYXMgYSBtYXNrIHJhdGhlciB0aGFuIDB4MUYuCi0rICBy ZXR1cm4gZmxhZ3M7Ci0gfQotIAotIC8vIHN0YXRpYwotLS0tIGEvZGVwcy92OC9zcmMvY29tcGls ZXIvYmFja2VuZC9wcGMvY29kZS1nZW5lcmF0b3ItcHBjLmNjCTIwMjItMDItMjAgMjM6MzU6MjEu MjE2MzM3NzQxIC0wODAwCi0rKysgYi9kZXBzL3Y4L3NyYy9jb21waWxlci9iYWNrZW5kL3BwYy9j b2RlLWdlbmVyYXRvci1wcGMuY2MJMjAyMi0wMi0yMCAyMzozOTo1Ni40NzkzNTE0ODIgLTA4MDAK LUBAIC03ODUsNiArNzg1LDcgQEAKLSAgIC8vIENhbGN1bGF0ZSBhIG1hc2sgd2hpY2ggaGFzIGFs bCBiaXRzIHNldCBpbiB0aGUgbm9ybWFsIGNhc2UsIGJ1dCBoYXMgYWxsCi0gICAvLyBiaXRzIGNs ZWFyZWQgaWYgd2UgYXJlIHNwZWN1bGF0aXZlbHkgZXhlY3V0aW5nIHRoZSB3cm9uZyBQQy4KLSAg IF9fIENtcFM2NChrSmF2YVNjcmlwdENhbGxDb2RlU3RhcnRSZWdpc3Rlciwgc2NyYXRjaCk7Ci0r ICAvLyBUT0RPOiBpcyBhbHRlcm5hdGUgc2VxdWVuY2UgbmVlZGVkIGZvciBDUFVzIHdpdGhvdXQg aXNlbD8KLSAgIF9fIGxpKHNjcmF0Y2gsIE9wZXJhbmQ6Olplcm8oKSk7Ci0gICBfXyBub3R4KGtT cGVjdWxhdGlvblBvaXNvblJlZ2lzdGVyLCBzY3JhdGNoKTsKLSAgIF9fIGlzZWwoZXEsIGtTcGVj dWxhdGlvblBvaXNvblJlZ2lzdGVyLCBrU3BlY3VsYXRpb25Qb2lzb25SZWdpc3Rlciwgc2NyYXRj aCk7Ci1AQCAtMTgyMyw2ICsxODI0LDcgQEAKLSAgICAgICAgIGludCBjcmJpdCA9IHY4OjppbnRl cm5hbDo6QXNzZW1ibGVyOjplbmNvZGVfY3JiaXQoCi0gICAgICAgICAgICAgY3IsIHN0YXRpY19j YXN0PENSQml0PihWWENWSSAlIENSV0lEVEgpKTsKLSAgICAgICAgIF9fIG1jcmZzKGNyLCBWWENW SSk7ICAvLyBleHRyYWN0IEZQU0NSIGZpZWxkIGNvbnRhaW5pbmcgVlhDVkkgaW50byBjcjcKLSsg ICAgICAgIC8vIFRPRE86IGlzIGFsdGVybmF0ZSBzZXF1ZW5jZSBuZWVkZWQgZm9yIENQVXMgd2l0 aG91dCBpc2VsPwotICAgICAgICAgX18gbGkoa1NjcmF0Y2hSZWcsIE9wZXJhbmQoMSkpOwotICAg ICAgICAgX18gU2hpZnRMZWZ0VTY0KGtTY3JhdGNoUmVnLCBrU2NyYXRjaFJlZywKLSAgICAgICAg ICAgICAgICAgICAgICAgICBPcGVyYW5kKDMxKSk7ICAvLyBnZW5lcmF0ZSBJTlQzMl9NSU4uCi1A QCAtMTg0NCw2ICsxODQ2LDcgQEAKLSAgICAgICAgIGludCBjcmJpdCA9IHY4OjppbnRlcm5hbDo6 QXNzZW1ibGVyOjplbmNvZGVfY3JiaXQoCi0gICAgICAgICAgICAgY3IsIHN0YXRpY19jYXN0PENS Qml0PihWWENWSSAlIENSV0lEVEgpKTsKLSAgICAgICAgIF9fIG1jcmZzKGNyLCBWWENWSSk7ICAv LyBleHRyYWN0IEZQU0NSIGZpZWxkIGNvbnRhaW5pbmcgVlhDVkkgaW50byBjcjcKLSsgICAgICAg IC8vIFRPRE86IGlzIGFsdGVybmF0ZSBzZXF1ZW5jZSBuZWVkZWQgZm9yIENQVXMgd2l0aG91dCBp c2VsPwotICAgICAgICAgX18gbGkoa1NjcmF0Y2hSZWcsIE9wZXJhbmQ6Olplcm8oKSk7Ci0gICAg ICAgICBfXyBpc2VsKGkuT3V0cHV0UmVnaXN0ZXIoMCksIGtTY3JhdGNoUmVnLCBpLk91dHB1dFJl Z2lzdGVyKDApLCBjcmJpdCk7Ci0gICAgICAgfQotQEAgLTE4NjgsNyArMTg3MSw3IEBACi0gICAg ICAgICAgICAgY3IsIHN0YXRpY19jYXN0PENSQml0PihWWENWSSAlIENSV0lEVEgpKTsKLSAgICAg ICAgIF9fIG1jcmZzKGNyLCBWWENWSSk7ICAvLyBleHRyYWN0IEZQU0NSIGZpZWxkIGNvbnRhaW5p bmcgVlhDVkkgaW50byBjcjcKLSAgICAgICAgIC8vIEhhbmRsZSBjb252ZXJzaW9uIGZhaWx1cmVz IChzdWNoIGFzIG92ZXJmbG93KS4KLS0gICAgICAgIGlmIChDcHVGZWF0dXJlczo6SXNTdXBwb3J0 ZWQoUFBDXzdfUExVUykpIHsKLSsgICAgICAgIGlmIChDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQo SVNFTEVDVCkpIHsKLSAgICAgICAgICAgaWYgKGNoZWNrX2NvbnZlcnNpb24pIHsKLSAgICAgICAg ICAgICBfXyBsaShpLk91dHB1dFJlZ2lzdGVyKDEpLCBPcGVyYW5kKDEpKTsKLSAgICAgICAgICAg ICBfXyBpc2VsKGkuT3V0cHV0UmVnaXN0ZXIoMSksIHIwLCBpLk91dHB1dFJlZ2lzdGVyKDEpLCBj cmJpdCk7Ci1AQCAtMTkwNSw3ICsxOTA4LDcgQEAKLSAgICAgICAgIGludCBjcmJpdCA9IHY4Ojpp bnRlcm5hbDo6QXNzZW1ibGVyOjplbmNvZGVfY3JiaXQoCi0gICAgICAgICAgICAgY3IsIHN0YXRp Y19jYXN0PENSQml0PihWWENWSSAlIENSV0lEVEgpKTsKLSAgICAgICAgIF9fIG1jcmZzKGNyLCBW WENWSSk7ICAvLyBleHRyYWN0IEZQU0NSIGZpZWxkIGNvbnRhaW5pbmcgVlhDVkkgaW50byBjcjcK LS0gICAgICAgIGlmIChDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQoUFBDXzdfUExVUykpIHsKLSsg ICAgICAgIGlmIChDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQoSVNFTEVDVCkpIHsKLSAgICAgICAg ICAgX18gbGkoaS5PdXRwdXRSZWdpc3RlcigxKSwgT3BlcmFuZCgxKSk7Ci0gICAgICAgICAgIF9f IGlzZWwoaS5PdXRwdXRSZWdpc3RlcigxKSwgcjAsIGkuT3V0cHV0UmVnaXN0ZXIoMSksIGNyYml0 KTsKLSAgICAgICAgIH0gZWxzZSB7Ci1AQCAtMjE2OCwxMiArMjE3MSw2NyBAQAotICAgICAgIGJy ZWFrOwotICAgICB9Ci0gICAgIGNhc2Uga1BQQ19Mb2FkQnl0ZVJldjY0OiB7Ci0tICAgICAgQVNT RU1CTEVfTE9BRF9JTlRFR0VSX1JSKGxkYnJ4KTsKLSsgICAgICAvLyBpbmxpbmVkIHZlcnNpb24g b2YgQVNTRU1CTEVfTE9BRF9JTlRFR0VSX1JSKCkKLSsgICAgICBSZWdpc3RlciByZXN1bHQgPSBp Lk91dHB1dFJlZ2lzdGVyKCk7Ci0rICAgICAgQWRkcmVzc2luZ01vZGUgbW9kZSA9IGtNb2RlX05v bmU7Ci0rICAgICAgTWVtT3BlcmFuZCBvcGVyYW5kID0gaS5NZW1vcnlPcGVyYW5kKCZtb2RlKTsK LSsgICAgICBEQ0hFQ0tfRVEobW9kZSwga01vZGVfTVJSKTsKLSsgICAgICBib29sIGlzX2F0b21p YyA9IGkuSW5wdXRJbnQzMigyKTsKLSsgICAgICBpZiAoQ3B1RmVhdHVyZXM6OklzU3VwcG9ydGVk KFBQQ183X1BMVVNfTlhQKSkgewotKyAgICAgICAgX18gbGRicngocmVzdWx0LCBvcGVyYW5kKTsK LSsgICAgICB9IGVsc2UgewotKyNpZmRlZiBWOF9UQVJHRVRfQklHX0VORElBTgotKyAgICAgICAg Ly8gbG93IGFuZCBoaWdoIHdvcmRzIGZyb20gcmV2ZXJzZWQgcGVyc3BlY3RpdmUKLSsgICAgICAg IE1lbU9wZXJhbmQgb3BfbG93ID0gb3BlcmFuZDsKLSsgICAgICAgIE1lbU9wZXJhbmQgb3BfaGln aCA9IE1lbU9wZXJhbmQob3BlcmFuZC5yYSgpLCBvcGVyYW5kLnJiKCksCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmQub2Zmc2V0KCkgKyA0KTsKLSsjZWxz ZQotKyAgICAgICAgLy8gbG93IGFuZCBoaWdoIHdvcmRzIGZyb20gcmV2ZXJzZWQgcGVyc3BlY3Rp dmUKLSsgICAgICAgIE1lbU9wZXJhbmQgb3BfaGlnaCA9IG9wZXJhbmQ7Ci0rICAgICAgICBNZW1P cGVyYW5kIG9wX2xvdyA9IE1lbU9wZXJhbmQob3BlcmFuZC5yYSgpLCBvcGVyYW5kLnJiKCksCi0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSAr IDQpOwotKyNlbmRpZgotKyAgICAgICAgUmVnaXN0ZXIgdGVtcDEgPSByMDsKLSsgICAgICAgIF9f IGx3YnJ4KHJlc3VsdCwgb3BfbG93KTsKLSsgICAgICAgIF9fIGx3YnJ4KHRlbXAxLCBvcF9oaWdo KTsKLSsgICAgICAgIF9fIHJsZGljcih0ZW1wMSwgdGVtcDEsIDMyLCAzMSk7Ci0rICAgICAgICBf XyBvcngocmVzdWx0LCByZXN1bHQsIHRlbXAxKTsKLSsgICAgICB9Ci0rICAgICAgaWYgKGlzX2F0 b21pYykgX18gbHdzeW5jKCk7Ci0rICAgICAgRENIRUNLX0VRKExlYXZlUkMsIGkuT3V0cHV0UkNC aXQoKSk7Ci0gICAgICAgRW1pdFdvcmRMb2FkUG9pc29uaW5nSWZOZWVkZWQodGhpcywgaW5zdHIs IGkpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gICAgIGNhc2Uga1BQQ19TdG9yZUJ5dGVSZXY2 NDogewotLSAgICAgIEFTU0VNQkxFX1NUT1JFX0lOVEVHRVJfUlIoc3RkYnJ4KTsKLSsgICAgICAv LyBpbmxpbmVkIHZlcnNpb24gb2YgQVNTRU1CTEVfU1RPUkVfSU5URUdFUl9SUigpCi0rICAgICAg c2l6ZV90IGluZGV4ID0gMDsKLSsgICAgICBBZGRyZXNzaW5nTW9kZSBtb2RlID0ga01vZGVfTm9u ZTsKLSsgICAgICBNZW1PcGVyYW5kIG9wZXJhbmQgPSBpLk1lbW9yeU9wZXJhbmQoJm1vZGUsICZp bmRleCk7Ci0rICAgICAgRENIRUNLX0VRKG1vZGUsIGtNb2RlX01SUik7Ci0rICAgICAgUmVnaXN0 ZXIgdmFsdWUgPSBpLklucHV0UmVnaXN0ZXIoaW5kZXgpOwotKyAgICAgIGJvb2wgaXNfYXRvbWlj ID0gaS5JbnB1dEludDMyKDMpOwotKyAgICAgIGlmIChpc19hdG9taWMpIF9fIGx3c3luYygpOwot KyAgICAgIGlmIChDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQoUFBDXzdfUExVU19OWFApKSB7Ci0r ICAgICAgICBfXyBzdGRicngodmFsdWUsIG9wZXJhbmQpOwotKyAgICAgIH0gZWxzZSB7Ci0rI2lm ZGVmIFY4X1RBUkdFVF9CSUdfRU5ESUFOCi0rICAgICAgICAvLyBsb3cgYW5kIGhpZ2ggd29yZHMg ZnJvbSByZXZlcnNlZCBwZXJzcGVjdGl2ZQotKyAgICAgICAgTWVtT3BlcmFuZCBvcF9sb3cgPSBv cGVyYW5kOwotKyAgICAgICAgTWVtT3BlcmFuZCBvcF9oaWdoID0gTWVtT3BlcmFuZChvcGVyYW5k LnJhKCksIG9wZXJhbmQucmIoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb3BlcmFuZC5vZmZzZXQoKSArIDQpOwotKyNlbHNlCi0rICAgICAgICAvLyBsb3cgYW5k IGhpZ2ggd29yZHMgZnJvbSByZXZlcnNlZCBwZXJzcGVjdGl2ZQotKyAgICAgICAgTWVtT3BlcmFu ZCBvcF9oaWdoID0gb3BlcmFuZDsKLSsgICAgICAgIE1lbU9wZXJhbmQgb3BfbG93ID0gTWVtT3Bl cmFuZChvcGVyYW5kLnJhKCksIG9wZXJhbmQucmIoKSwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpICsgNCk7Ci0rI2VuZGlmCi0rICAgICAg ICBSZWdpc3RlciB0ZW1wMSA9IHIwOwotKyAgICAgICAgX18gc3R3YnJ4KHZhbHVlLCBvcF9sb3cp OwotKyAgICAgICAgX18gcmxkaWNsKHRlbXAxLCB2YWx1ZSwgMzIsIDMyKTsKLSsgICAgICAgIF9f IHN0d2JyeCh0ZW1wMSwgb3BfaGlnaCk7Ci0rICAgICAgfQotKyAgICAgIGlmIChpc19hdG9taWMp IF9fIHN5bmMoKTsKLSsgICAgICBEQ0hFQ0tfRVEoTGVhdmVSQywgaS5PdXRwdXRSQ0JpdCgpKTsK LSAgICAgICBicmVhazsKLSAgICAgfQotICAgICBjYXNlIGtQUENfRjY0eDJTcGxhdDogewotQEAg LTI5MTEsMTEgKzI5NjksMTMgQEAKLSAgICAgICBfXyBsaShpcCwgT3BlcmFuZCgxKSk7Ci0gICAg ICAgLy8gQ2hlY2sgaWYgYm90aCBsYW5lcyBhcmUgMCwgaWYgc28gdGhlbiByZXR1cm4gZmFsc2Uu Ci0gICAgICAgX18gdnhvcihrU2NyYXRjaFNpbWQxMjhSZWcsIGtTY3JhdGNoU2ltZDEyOFJlZywg a1NjcmF0Y2hTaW1kMTI4UmVnKTsKLSsgICAgICAvLyBUT0RPOiBpcyBhbHRlcm5hdGUgc2VxdWVu Y2UgbmVlZGVkIGZvciBDUFVzIHdpdGhvdXQgaXNlbD8KLSAgICAgICBfXyBtdGNyZihyMCwgZnht KTsgIC8vIENsZWFyIGNyNi4KLSAgICAgICBfXyB2Y21wZXF1ZChrU2NyYXRjaFNpbWQxMjhSZWcs IHNyYywga1NjcmF0Y2hTaW1kMTI4UmVnLCBTZXRSQyk7Ci0gICAgICAgX18gaXNlbChkc3QsIHIw LCBpcCwgYml0X251bWJlcik7Ci0gICAgICAgYnJlYWs7Ci0gICAgIH0KLSsvLyBUT0RPOiBpcyBh bHRlcm5hdGUgc2VxdWVuY2UgbmVlZGVkIGZvciBDUFVzIHdpdGhvdXQgaXNlbD8KLSAjZGVmaW5l IFNJTURfQUxMX1RSVUUob3Bjb2RlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwKLSAgIFNpbWQxMjhSZWdpc3RlciBzcmMgPSBpLklucHV0U2ltZDEyOFJlZ2lzdGVy KDApOyAgICAgICAgICAgICAgICAgICAgIFwKLSAgIFJlZ2lzdGVyIGRzdCA9IGkuT3V0cHV0UmVn aXN0ZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0zODA5LDYg KzM4NjksNyBAQAotIAotICAgQXJjaE9wY29kZSBvcCA9IGluc3RyLT5hcmNoX29wY29kZSgpOwot ICAgY29uZGl0aW9uID0gTmVnYXRlRmxhZ3NDb25kaXRpb24oY29uZGl0aW9uKTsKLSsgIC8vIFRP RE86IGlzIGFsdGVybmF0ZSBzZXF1ZW5jZSBuZWVkZWQgZm9yIENQVXMgd2l0aG91dCBpc2VsPwot ICAgX18gbGkoa1NjcmF0Y2hSZWcsIE9wZXJhbmQ6Olplcm8oKSk7Ci0gICBfXyBpc2VsKEZsYWdz Q29uZGl0aW9uVG9Db25kaXRpb24oY29uZGl0aW9uLCBvcCksIGtTcGVjdWxhdGlvblBvaXNvblJl Z2lzdGVyLAotICAgICAgICAgICBrU2NyYXRjaFJlZywga1NwZWN1bGF0aW9uUG9pc29uUmVnaXN0 ZXIsIGNyMCk7Ci1AQCAtMzkyMiw3ICszOTgzLDcgQEAKLSAgICAgLy8gVW5uZWNlc3NhcnkgZm9y IGVxL2x0ICYgbmUvZ2Ugc2luY2Ugb25seSBGVSBiaXQgd2lsbCBiZSBzZXQuCi0gICB9Ci0gCi0t ICBpZiAoQ3B1RmVhdHVyZXM6OklzU3VwcG9ydGVkKFBQQ183X1BMVVMpKSB7Ci0rICBpZiAoQ3B1 RmVhdHVyZXM6OklzU3VwcG9ydGVkKElTRUxFQ1QpKSB7Ci0gICAgIHN3aXRjaCAoY29uZCkgewot ICAgICAgIGNhc2UgZXE6Ci0gICAgICAgY2FzZSBsdDoKLS0tLSBhL2RlcHMvdjgvc3JjL2NvZGVn ZW4vcHBjL2NwdS1wcGMuY2MJMjAyMi0wMi0wOCAwNDozNzo0OC4wMDAwMDAwMDAgLTA4MDAKLSsr KyBiL2RlcHMvdjgvc3JjL2NvZGVnZW4vcHBjL2NwdS1wcGMuY2MJMjAyMi0wMi0yMCAxNzowMjox Ny45MDAwMDA3ODUgLTA4MDAKLUBAIC04LDE0ICs4LDEyIEBACi0gCi0gI2luY2x1ZGUgInNyYy9j b2RlZ2VuL2NwdS1mZWF0dXJlcy5oIgotIAotLSNkZWZpbmUgSU5TVFJfQU5EX0RBVEFfQ0FDSEVf Q09IRVJFTkNZIFBQQ182X1BMVVMKLS0KLSBuYW1lc3BhY2UgdjggewotIG5hbWVzcGFjZSBpbnRl cm5hbCB7Ci0gCi0gdm9pZCBDcHVGZWF0dXJlczo6Rmx1c2hJQ2FjaGUodm9pZCogYnVmZmVyLCBz aXplX3Qgc2l6ZSkgewotICNpZiAhZGVmaW5lZChVU0VfU0lNVUxBVE9SKQotLSAgaWYgKENwdUZl YXR1cmVzOjpJc1N1cHBvcnRlZChJTlNUUl9BTkRfREFUQV9DQUNIRV9DT0hFUkVOQ1kpKSB7Ci0r ICBpZiAoQ3B1RmVhdHVyZXM6OklzU3VwcG9ydGVkKElDQUNIRV9TTk9PUCkpIHsKLSAgICAgX19h c21fXyBfX3ZvbGF0aWxlX18oCi0gICAgICAgICAic3luYyBcbiIKLSAgICAgICAgICJpY2JpIDAs ICUwICBcbiIKLUBAIC0yNiwyNSArMjQsMzMgQEAKLSAgICAgcmV0dXJuOwotICAgfQotIAotLSAg Y29uc3QgaW50IGtDYWNoZUxpbmVTaXplID0gQ3B1RmVhdHVyZXM6OmljYWNoZV9saW5lX3NpemUo KTsKLS0gIGludHB0cl90IG1hc2sgPSBrQ2FjaGVMaW5lU2l6ZSAtIDE7Ci0rICBjb25zdCBpbnQg a0luc3RyQ2FjaGVMaW5lU2l6ZSA9IENwdUZlYXR1cmVzOjppY2FjaGVfbGluZV9zaXplKCk7Ci0r ICBjb25zdCBpbnQga0RhdGFDYWNoZUxpbmVTaXplID0gQ3B1RmVhdHVyZXM6OmRjYWNoZV9saW5l X3NpemUoKTsKLSsgIGludHB0cl90IGljX21hc2sgPSBrSW5zdHJDYWNoZUxpbmVTaXplIC0gMTsK LSsgIGludHB0cl90IGRjX21hc2sgPSBrRGF0YUNhY2hlTGluZVNpemUgLSAxOwotICAgYnl0ZSog c3RhcnQgPQotLSAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Ynl0ZSo+KHJlaW50ZXJwcmV0X2Nhc3Q8 aW50cHRyX3Q+KGJ1ZmZlcikgJiB+bWFzayk7Ci0rICAgICAgcmVpbnRlcnByZXRfY2FzdDxieXRl Kj4ocmVpbnRlcnByZXRfY2FzdDxpbnRwdHJfdD4oYnVmZmVyKSAmIH5kY19tYXNrKTsKLSAgIGJ5 dGUqIGVuZCA9IHN0YXRpY19jYXN0PGJ5dGUqPihidWZmZXIpICsgc2l6ZTsKLS0gIGZvciAoYnl0 ZSogcG9pbnRlciA9IHN0YXJ0OyBwb2ludGVyIDwgZW5kOyBwb2ludGVyICs9IGtDYWNoZUxpbmVT aXplKSB7Ci0tICAgIF9fYXNtX18oCi0rICBmb3IgKGJ5dGUqIHBvaW50ZXIgPSBzdGFydDsgcG9p bnRlciA8IGVuZDsgcG9pbnRlciArPSBrRGF0YUNhY2hlTGluZVNpemUpIHsKLSsgICAgX19hc21f XyBfX3ZvbGF0aWxlX18oCi0gICAgICAgICAiZGNiZiAwLCAlMCAgXG4iCi0tICAgICAgICAic3lu YyAgICAgICAgXG4iCi0tICAgICAgICAiaWNiaSAwLCAlMCAgXG4iCi0tICAgICAgICAiaXN5bmMg ICAgICAgXG4iCi0gICAgICAgICA6IC8qIG5vIG91dHB1dCAqLwotICAgICAgICAgOiAiciIocG9p bnRlcikpOwotICAgfQotKyAgX19hc21fXyBfX3ZvbGF0aWxlX18oInN5bmMiKTsKLSAKLSsgIHN0 YXJ0ID0KLSsgICAgICByZWludGVycHJldF9jYXN0PGJ5dGUqPihyZWludGVycHJldF9jYXN0PGlu dHB0cl90PihidWZmZXIpICYgfmljX21hc2spOwotKyAgZm9yIChieXRlKiBwb2ludGVyID0gc3Rh cnQ7IHBvaW50ZXIgPCBlbmQ7IHBvaW50ZXIgKz0ga0luc3RyQ2FjaGVMaW5lU2l6ZSkgewotKyAg ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygKLSsgICAgICAgICJpY2JpIDAsICUwICBcbiIKLSsgICAg ICAgIDogLyogbm8gb3V0cHV0ICovCi0rICAgICAgICA6ICJyIihwb2ludGVyKSk7Ci0rICB9Ci0r ICBfX2FzbV9fIF9fdm9sYXRpbGVfXygiaXN5bmMiKTsKLSAjZW5kaWYgIC8vICFVU0VfU0lNVUxB VE9SCi0gfQotIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotIH0gIC8vIG5hbWVzcGFjZSB2OAot IAotLSN1bmRlZiBJTlNUUl9BTkRfREFUQV9DQUNIRV9DT0hFUkVOQ1kKLSAjZW5kaWYgIC8vIFY4 X1RBUkdFVF9BUkNIX1BQQyB8fCBWOF9UQVJHRVRfQVJDSF9QUEM2NAotLS0tIC4vZGVwcy92OC9z cmMvY29kZWdlbi9wcGMvYXNzZW1ibGVyLXBwYy5jYy5vcmlnCTIwMjItMDItMDggMDQ6Mzc6NDgu MDAwMDAwMDAwIC0wODAwCi0rKysgLi9kZXBzL3Y4L3NyYy9jb2RlZ2VuL3BwYy9hc3NlbWJsZXIt cHBjLmNjCTIwMjItMDItMjAgMTc6MjA6MjUuMDE5NTkxMjI1IC0wODAwCi1AQCAtNjUsNiArNjUs NyBAQAotIHZvaWQgQ3B1RmVhdHVyZXM6OlByb2JlSW1wbChib29sIGNyb3NzX2NvbXBpbGUpIHsK LSAgIHN1cHBvcnRlZF8gfD0gQ3B1RmVhdHVyZXNJbXBsaWVkQnlDb21waWxlcigpOwotICAgaWNh Y2hlX2xpbmVfc2l6ZV8gPSAxMjg7Ci0rICBkY2FjaGVfbGluZV9zaXplXyA9IDEyODsKLSAKLSAg IC8vIE9ubHkgdXNlIHN0YXRpY2FsbHkgZGV0ZXJtaW5lZCBmZWF0dXJlcyBmb3IgY3Jvc3MgY29t cGlsZSAoc25hcHNob3QpLgotICAgaWYgKGNyb3NzX2NvbXBpbGUpIHJldHVybjsKLUBAIC03Myw2 ICs3NCw4IEBACi0gI2lmZGVmIFVTRV9TSU1VTEFUT1IKLSAgIC8vIFNpbXVsYXRvcgotICAgc3Vw cG9ydGVkXyB8PSAoMXUgPDwgUFBDXzEwX1BMVVMpOwotKyAgc3VwcG9ydGVkXyB8PSAoMXUgPDwg SUNBQ0hFX1NOT09QKTsKLSsgIHN1cHBvcnRlZF8gfD0gKDF1IDw8IElTRUxFQ1QpOwotICNlbHNl Ci0gICBiYXNlOjpDUFUgY3B1OwotICAgaWYgKGNwdS5wYXJ0KCkgPT0gYmFzZTo6Q1BVOjprUFBD UG93ZXIxMCkgewotQEAgLTg1LDE3ICs4OCwzNyBAQAotICAgICBzdXBwb3J0ZWRfIHw9ICgxdSA8 PCBQUENfN19QTFVTKTsKLSAgIH0gZWxzZSBpZiAoY3B1LnBhcnQoKSA9PSBiYXNlOjpDUFU6OmtQ UENQb3dlcjYpIHsKLSAgICAgc3VwcG9ydGVkXyB8PSAoMXUgPDwgUFBDXzZfUExVUyk7Ci0rICB9 IGVsc2UgaWYgKGNwdS5wYXJ0KCkgPT0gYmFzZTo6Q1BVOjprUFBDUG93ZXI1IHx8Ci0rICAgICAg ICAgICAgIGNwdS5wYXJ0KCkgPT0gYmFzZTo6Q1BVOjprUFBDUEE2VCkgewotKyAgICBzdXBwb3J0 ZWRfIHw9ICgxdSA8PCBQUENfNV9QTFVTKTsKLSsgIH0gZWxzZSBpZiAoY3B1LnBhcnQoKSA9PSBi YXNlOjpDUFU6OmtQUENFNjUwMCB8fAotKyAgICAgICAgICAgICBjcHUucGFydCgpID09IGJhc2U6 OkNQVTo6a1BQQ0U1NTAwKSB7Ci0rICAgIHN1cHBvcnRlZF8gfD0gKDF1IDw8IFBQQ183X1BMVVNf TlhQKTsgICAvLyBOWFAtc3VwcG9ydGVkIHYyLjA2IGZlYXR1cmVzCi0rICB9Ci0rCi0rICBpZiAo Y3B1Lmhhc19pY2FjaGVfc25vb3AoKSkgewotKyAgICBzdXBwb3J0ZWRfIHw9ICgxdSA8PCBJQ0FD SEVfU05PT1ApOwotKyAgfQotKyAgaWYgKGNwdS5oYXNfaXNlbCgpKSB7Ci0rICAgIHN1cHBvcnRl ZF8gfD0gKDF1IDw8IElTRUxFQ1QpOwotICAgfQotICNpZiBWOF9PU19MSU5VWAotICAgaWYgKGNw dS5pY2FjaGVfbGluZV9zaXplKCkgIT0gYmFzZTo6Q1BVOjprVW5rbm93bkNhY2hlTGluZVNpemUp IHsKLSAgICAgaWNhY2hlX2xpbmVfc2l6ZV8gPSBjcHUuaWNhY2hlX2xpbmVfc2l6ZSgpOwotICAg fQotKyAgaWYgKGNwdS5kY2FjaGVfbGluZV9zaXplKCkgIT0gYmFzZTo6Q1BVOjprVW5rbm93bkNh Y2hlTGluZVNpemUpIHsKLSsgICAgZGNhY2hlX2xpbmVfc2l6ZV8gPSBjcHUuZGNhY2hlX2xpbmVf c2l6ZSgpOwotKyAgfQotICNlbmRpZgotICNlbmRpZgotICAgaWYgKHN1cHBvcnRlZF8gJiAoMXUg PDwgUFBDXzEwX1BMVVMpKSBzdXBwb3J0ZWRfIHw9ICgxdSA8PCBQUENfOV9QTFVTKTsKLSAgIGlm IChzdXBwb3J0ZWRfICYgKDF1IDw8IFBQQ185X1BMVVMpKSBzdXBwb3J0ZWRfIHw9ICgxdSA8PCBQ UENfOF9QTFVTKTsKLSAgIGlmIChzdXBwb3J0ZWRfICYgKDF1IDw8IFBQQ184X1BMVVMpKSBzdXBw b3J0ZWRfIHw9ICgxdSA8PCBQUENfN19QTFVTKTsKLS0gIGlmIChzdXBwb3J0ZWRfICYgKDF1IDw8 IFBQQ183X1BMVVMpKSBzdXBwb3J0ZWRfIHw9ICgxdSA8PCBQUENfNl9QTFVTKTsKLSsgIGlmIChz dXBwb3J0ZWRfICYgKDF1IDw8IFBQQ183X1BMVVMpKSB7Ci0rICAgIHN1cHBvcnRlZF8gfD0gKDF1 IDw8IFBQQ183X1BMVVNfTlhQKTsgICAvLyBOWFAtc3VwcG9ydGVkIHYyLjA2IGZlYXR1cmVzCi0r ICAgIHN1cHBvcnRlZF8gfD0gKDF1IDw8IFBQQ182X1BMVVMpOwotKyAgfQotKyAgaWYgKHN1cHBv cnRlZF8gJiAoMXUgPDwgUFBDXzZfUExVUykpIHN1cHBvcnRlZF8gfD0gKDF1IDw8IFBQQ181X1BM VVMpOwotIAotICAgLy8gU2V0IGEgc3RhdGljIHZhbHVlIG9uIHdoZXRoZXIgU2ltZCBpcyBzdXBw b3J0ZWQuCi0gICAvLyBUaGlzIHZhcmlhYmxlIGlzIG9ubHkgdXNlZCBmb3IgY2VydGFpbiBhcmNo cyB0byBxdWVyeSBTdXBwb3J0V2FzbVNpbWQxMjgoKQotQEAgLTExNywxMSArMTQwLDE1IEBACi0g fQotIAotIHZvaWQgQ3B1RmVhdHVyZXM6OlByaW50RmVhdHVyZXMoKSB7Ci0rICBwcmludGYoIlBQ Q181X1BMVVM9JWRcbiIsIENwdUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQUENfNV9QTFVTKSk7Ci0g ICBwcmludGYoIlBQQ182X1BMVVM9JWRcbiIsIENwdUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQUENf Nl9QTFVTKSk7Ci0gICBwcmludGYoIlBQQ183X1BMVVM9JWRcbiIsIENwdUZlYXR1cmVzOjpJc1N1 cHBvcnRlZChQUENfN19QTFVTKSk7Ci0gICBwcmludGYoIlBQQ184X1BMVVM9JWRcbiIsIENwdUZl YXR1cmVzOjpJc1N1cHBvcnRlZChQUENfOF9QTFVTKSk7Ci0gICBwcmludGYoIlBQQ185X1BMVVM9 JWRcbiIsIENwdUZlYXR1cmVzOjpJc1N1cHBvcnRlZChQUENfOV9QTFVTKSk7Ci0gICBwcmludGYo IlBQQ18xMF9QTFVTPSVkXG4iLCBDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQoUFBDXzEwX1BMVVMp KTsKLSsgIHByaW50ZigiSUNBQ0hFX1NOT09QPSVkXG4iLCBDcHVGZWF0dXJlczo6SXNTdXBwb3J0 ZWQoSUNBQ0hFX1NOT09QKSk7Ci0rICBwcmludGYoIklTRUxFQ1Q9JWRcbiIsIENwdUZlYXR1cmVz OjpJc1N1cHBvcnRlZChJU0VMRUNUKSk7Ci0rICBwcmludGYoIlBQQ183X1BMVVNfTlhQPSVkXG4i LCBDcHVGZWF0dXJlczo6SXNTdXBwb3J0ZWQoUFBDXzdfUExVU19OWFApKTsKLSB9Ci0gCi0gUmVn aXN0ZXIgVG9SZWdpc3RlcihpbnQgbnVtKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL25vZGVqcy9w YXRjaGVzL3B5dGhvbjMuMTEucGF0Y2ggYi9zcmNwa2dzL25vZGVqcy9wYXRjaGVzL3B5dGhvbjMu MTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiOWRiY2I5OTU4NC4uMDAw MDAwMDAwMDAwCi0tLSBhL3NyY3BrZ3Mvbm9kZWpzL3BhdGNoZXMvcHl0aG9uMy4xMS5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDc0ICswLDAgQEAKLUZyb20gY2Y3NDhhZDJiN2Y3NjBlMmRmMWJj OGE4MTFmODg3MTYxYjg5MjUzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1aWdp IFBpbmNhIDxsdWlnaXBpbmNhQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjYgT2N0IDIwMjIgMTU6 MDE6NTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IHN1cHBvcnQgUHl0aG9uIDMuMTEK LU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRG LTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotUFItVVJMOiBodHRwczovL2dp dGh1Yi5jb20vbm9kZWpzL25vZGUvcHVsbC80NTE5MQotUmV2aWV3ZWQtQnk6IFJpY2ggVHJvdHQg PHJ0cm90dEBnbWFpbC5jb20+Ci1SZXZpZXdlZC1CeTogTW9zaGUgQXRsb3cgPG1vc2hlQGF0bG93 LmNvLmlsPgotUmV2aWV3ZWQtQnk6IFJpY2hhcmQgTGF1IDxybGF1QHJlZGhhdC5jb20+Ci1SZXZp ZXdlZC1CeTogQ2hyaXN0aWFuIENsYXVzcyA8Y2NsYXVzc0BtZS5jb20+Ci1SZXZpZXdlZC1CeTog WWFnaXogTml6aXBsaSA8eWFnaXpAbml6aXBsaS5jb20+Ci1SZXZpZXdlZC1CeTogSmFtZXMgTSBT bmVsbCA8amFzbmVsbEBnbWFpbC5jb20+Ci1SZXZpZXdlZC1CeTogSmlhd2VuIEdlbmcgPHRlY2hu aWNhbGN1dGVAZ21haWwuY29tPgotUmV2aWV3ZWQtQnk6IEp1YW4gSm9zw6kgQXJib2xlZGEgPHNv eWp1YW5hcmJvbEBnbWFpbC5jb20+Ci0tLS0KLSBCVUlMRElORy5tZCB8IDYgKysrLS0tCi0gY29u ZmlndXJlICAgfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA0IGRl bGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQlVJTERJTkcubWQgYi9CVUlMRElORy5tZAotaW5k ZXggMGRkOTU0ODgwMTMxLi5lNjZhYTMxNGQzMjkgMTAwNjQ0Ci0tLS0gYS9CVUlMRElORy5tZAot KysrIGIvQlVJTERJTkcubWQKLUBAIC0yMjUsNyArMjI1LDcgQEAgVGhlIE5vZGUuanMgcHJvamVj dCBzdXBwb3J0cyBQeXRob24gPj0gMyBmb3IgYnVpbGRpbmcgYW5kIHRlc3RpbmcuCi0gCi0gKiBg Z2NjYCBhbmQgYGcrK2AgPj0gOC4zIG9yIG5ld2VyCi0gKiBHTlUgTWFrZSAzLjgxIG9yIG5ld2Vy Ci0tKiBQeXRob24gMy42LCAzLjcsIDMuOCwgMy45LCBvciAzLjEwIChzZWUgbm90ZSBhYm92ZSkK LSsqIFB5dGhvbiA+PTMuNiA8PTMuMTEgKHNlZSBub3RlIGFib3ZlKQotICAgKiBGb3IgdGVzdCBj b3ZlcmFnZSwgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIG11c3QgaW5jbHVkZSBwaXAuCi0gCi0g SW5zdGFsbGF0aW9uIHZpYSBMaW51eCBwYWNrYWdlIG1hbmFnZXIgY2FuIGJlIGFjaGlldmVkIHdp dGg6Ci1AQCAtMjQxLDcgKzI0MSw3IEBAIEZyZWVCU0QgYW5kIE9wZW5CU0QgdXNlcnMgbWF5IGFs c28gbmVlZCB0byBpbnN0YWxsIGBsaWJleGVjaW5mb2AuCi0gIyMjIyBtYWNPUyBwcmVyZXF1aXNp dGVzCi0gCi0gKiBYY29kZSBDb21tYW5kIExpbmUgVG9vbHMgPj0gMTEgZm9yIG1hY09TCi0tKiBQ eXRob24gMy42LCAzLjcsIDMuOCwgMy45LCBvciAzLjEwIChzZWUgbm90ZSBhYm92ZSkKLSsqIFB5 dGhvbiA+PTMuNiA8PTMuMTEgKHNlZSBub3RlIGFib3ZlKQotICAgKiBGb3IgdGVzdCBjb3ZlcmFn ZSwgeW91ciBQeXRob24gaW5zdGFsbGF0aW9uIG11c3QgaW5jbHVkZSBwaXAuCi0gCi0gbWFjT1Mg dXNlcnMgY2FuIGluc3RhbGwgdGhlIGBYY29kZSBDb21tYW5kIExpbmUgVG9vbHNgIGJ5IHJ1bm5p bmcKLUBAIC01NjUsNyArNTY1LDcgQEAgdG8gcnVuIGl0IGFnYWluIGJlZm9yZSBpbnZva2luZyBg bWFrZSAtajRgLgotIAotICMjIyMjIE9wdGlvbiAxOiBNYW51YWwgaW5zdGFsbAotIAotLSogW1B5 dGhvbiAzLjEwXShodHRwczovL3d3dy5taWNyb3NvZnQuY29tL2VuLXVzL3AvcHl0aG9uLTMxMC85 cGpwdzVsZHhsejUpCi0rKiBbUHl0aG9uIDMuMTFdKGh0dHBzOi8vYXBwcy5taWNyb3NvZnQuY29t L3N0b3JlL2RldGFpbC9weXRob24tMzExLzlOUldNSlAzNzE3SykKLSAqIFRoZSAiRGVza3RvcCBk ZXZlbG9wbWVudCB3aXRoIEMrKyIgd29ya2xvYWQgZnJvbQotICAgW1Zpc3VhbCBTdHVkaW8gMjAx OV0oaHR0cHM6Ly92aXN1YWxzdHVkaW8ubWljcm9zb2Z0LmNvbS92cy9vbGRlci1kb3dubG9hZHMv I3Zpc3VhbC1zdHVkaW8tMjAxOS1hbmQtb3RoZXItcHJvZHVjdHMpIG9yCi0gICB0aGUgIkMrKyBi dWlsZCB0b29scyIgd29ya2xvYWQgZnJvbSB0aGUKLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9j b25maWd1cmUKLWluZGV4IDZlZjJkYTJlNjMxZS4uZmVmYjMxM2M5Y2QxIDEwMDc1NQotLS0tIGEv Y29uZmlndXJlCi0rKysgYi9jb25maWd1cmUKLUBAIC00LDYgKzQsNyBAQAotICMgTm90ZSB0aGF0 IHRoZSBtaXggb2Ygc2luZ2xlIGFuZCBkb3VibGUgcXVvdGVzIGlzIGludGVudGlvbmFsLAotICMg YXMgaXMgdGhlIGZhY3QgdGhhdCB0aGUgXSBnb2VzIG9uIGEgbmV3IGxpbmUuCi0gXz1bICdleGVj JyAnL2Jpbi9zaCcgJy1jJyAnJycKLStjb21tYW5kIC12IHB5dGhvbjMuMTEgPi9kZXYvbnVsbCAm JiBleGVjIHB5dGhvbjMuMTEgIiQwIiAiJEAiCi0gY29tbWFuZCAtdiBweXRob24zLjEwID4vZGV2 L251bGwgJiYgZXhlYyBweXRob24zLjEwICIkMCIgIiRAIgotIGNvbW1hbmQgLXYgcHl0aG9uMy45 ID4vZGV2L251bGwgJiYgZXhlYyBweXRob24zLjkgIiQwIiAiJEAiCi0gY29tbWFuZCAtdiBweXRo b24zLjggPi9kZXYvbnVsbCAmJiBleGVjIHB5dGhvbjMuOCAiJDAiICIkQCIKLUBAIC0yMiw3ICsy Myw3IEBAIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgIGZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9y dCBmaW5kX2V4ZWN1dGFibGUgYXMgd2hpY2gKLSAKLSBwcmludCgnTm9kZS5qcyBjb25maWd1cmU6 IEZvdW5kIFB5dGhvbiB7fS57fS57fS4uLicuZm9ybWF0KCpzeXMudmVyc2lvbl9pbmZvKSkKLS1h Y2NlcHRhYmxlX3B5dGhvbnMgPSAoKDMsIDEwKSwgKDMsIDkpLCAoMywgOCksICgzLCA3KSwgKDMs IDYpKQotK2FjY2VwdGFibGVfcHl0aG9ucyA9ICgoMywgMTEpLCAoMywgMTApLCAoMywgOSksICgz LCA4KSwgKDMsIDcpLCAoMywgNikpCi0gaWYgc3lzLnZlcnNpb25faW5mb1s6Ml0gaW4gYWNjZXB0 YWJsZV9weXRob25zOgotICAgaW1wb3J0IGNvbmZpZ3VyZQotIGVsc2U6CmRpZmYgLS1naXQgYS9z cmNwa2dzL25vZGVqcy90ZW1wbGF0ZSBiL3NyY3BrZ3Mvbm9kZWpzL3RlbXBsYXRlCmluZGV4IGMy ZjRkNGViMzQwZi4uZTFhOWQ0N2I2Njc0IDEwMDY0NAotLS0gYS9zcmNwa2dzL25vZGVqcy90ZW1w bGF0ZQorKysgYi9zcmNwa2dzL25vZGVqcy90ZW1wbGF0ZQpAQCAtMSw3ICsxLDcgQEAKICMgVGVt cGxhdGUgZmlsZSBmb3IgJ25vZGVqcycKIHBrZ25hbWU9bm9kZWpzCi12ZXJzaW9uPTE2LjE1LjEK LXJldmlzaW9uPTIKK3ZlcnNpb249MTYuMTkuMAorcmV2aXNpb249MQogIyBOZWVkIHRoZXNlIGZv ciBob3N0IHY4IGZvciB0b3JxdWUsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vbm9kZWpzL25vZGUv cHVsbC8yMTA3OQogaG9zdG1ha2VkZXBlbmRzPSJ3aGljaCBwa2ctY29uZmlnIHB5dGhvbjMgbGli YXRvbWljLWRldmVsIHpsaWItZGV2ZWwKICAkKHZvcHRfaWYgaWN1IGljdS1kZXZlbCkgJCh2b3B0 X2lmIHNzbCBvcGVuc3NsLWRldmVsKSAkKHZvcHRfaWYgbGlidXYgbGlidXYtZGV2ZWwpCkBAIC0x NSw3ICsxNSw3IEBAIG1haW50YWluZXI9IkVubm8gQm9sYW5kIDxnb3R0b3hAdm9pZGxpbnV4Lm9y Zz4iCiBsaWNlbnNlPSJNSVQiCiBob21lcGFnZT0iaHR0cHM6Ly9ub2RlanMub3JnLyIKIGRpc3Rm aWxlcz0iaHR0cHM6Ly9ub2RlanMub3JnL2Rpc3QvdiR7dmVyc2lvbn0vbm9kZS12JHt2ZXJzaW9u fS50YXIuZ3oiCi1jaGVja3N1bT0zMDhhZWU3MTQ5YzQwOTJhNTNjODdjMjhlZjQ5ZTIzYThkMTYw NjExOWU3OWFlNjgzMzMwNjJlMmExZjk0MjA4CitjaGVja3N1bT04YjhhMjkzOWZhNWY2NTRmZjYx Y2FlMjliMTIxMThjMjQxMDkyNzM0NThlY2JlNjE2MmFkOGE4ODU4MzA5ZTBkCiBweXRob25fdmVy c2lvbj0zCiAKIGJ1aWxkX29wdGlvbnM9InNzbCBsaWJ1diBpY3UgbmdodHRwMiBjYXJlcyIKCkZy b20gNzRlMjYyNjA5NjdmZWE1NzExYzAxOTBmY2U0Y2EzNjZiMTk2MmMxYSBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKRnJvbTogTWljaGFsIFZhc2lsZWsgPG1pY2hhbEB2YXNpbGVrLmN6PgpEYXRl OiBTdW4sIDIwIE5vdiAyMDIyIDE5OjQzOjIwICswMTAwClN1YmplY3Q6IFtQQVRDSCAyLzJdIG5v ZGVqczogdXBkYXRlIHRvIDE2LjE5LjAuIFNpZ25hbC1EZXNrdG9wOiB1cGRhdGUgdG8KIDYuMS4w LgoKLS0tCiBzcmNwa2dzL1NpZ25hbC1EZXNrdG9wL3RlbXBsYXRlIHwgNCArKy0tCiAxIGZpbGUg Y2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvU2lnbmFsLURlc2t0b3AvdGVtcGxhdGUgYi9zcmNwa2dzL1NpZ25hbC1EZXNrdG9wL3Rl bXBsYXRlCmluZGV4IDZhMWM0NmE4ODNmNC4uMTlhMzI2ZTU1ZjE3IDEwMDY0NAotLS0gYS9zcmNw a2dzL1NpZ25hbC1EZXNrdG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvU2lnbmFsLURlc2t0b3Av dGVtcGxhdGUKQEAgLTEsNiArMSw2IEBACiAjIFRlbXBsYXRlIGZpbGUgZm9yICdTaWduYWwtRGVz a3RvcCcKIHBrZ25hbWU9U2lnbmFsLURlc2t0b3AKLXZlcnNpb249Ni4wLjEKK3ZlcnNpb249Ni4x LjAKIHJldmlzaW9uPTEKICMgU2lnbmFsIG9mZmljaWFsbHkgb25seSBzdXBwb3J0cyB4ODZfNjQg KGFsc28gZHVlIHRvIEVsZWN0cm9uKQogIyB4ODZfNjQtbXVzbCBmYWlscyBiZWNhdXNlIG9mIGl0 cyBkZXBlbmRlbmN5IG9uICdub2RlLWd5cCcgd2hpY2ggZGVwZW5kcyBvbiBhIGdsaWJjIHNwZWNp ZmljIGV4dGVuc2lvbgpAQCAtMTMsNyArMTMsNyBAQCBtYWludGFpbmVyPSJha2llcmlnIDxhbmVs a2lAZmFzdG1haWwuZGU+IgogbGljZW5zZT0iQUdQTC0zLjAtb25seSIKIGhvbWVwYWdlPSJodHRw czovL2dpdGh1Yi5jb20vc2lnbmFsYXBwL1NpZ25hbC1EZXNrdG9wIgogZGlzdGZpbGVzPSJodHRw czovL2dpdGh1Yi5jb20vc2lnbmFsYXBwL1NpZ25hbC1EZXNrdG9wL2FyY2hpdmUvdiR7dmVyc2lv bn0udGFyLmd6IgotY2hlY2tzdW09YjdjN2IyODI0ZDEzNDBlZTRkZWUwYTIwZmZlMjg4M2NjZGU2 MTBjYjk4YjRmOGQ2ZDJiNDRmNzAxMzBlMzg0YworY2hlY2tzdW09Zjk4MWNhMjI5NjUxODI2ZGNm MmI1MTE0OTk2MTIyMTc3MTk4MjdhYjk4ZWRhYzQ2ZjkzMWZlMjc1MWVjY2Q2Zgogbm9zdHJpcF9m aWxlcz0ic2lnbmFsLWRlc2t0b3AiCiAKIHBvc3RfZXh0cmFjdCgpIHsK --===============6711083550461741797==--