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 31631 invoked from network); 16 May 2020 12:16:37 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 16 May 2020 12:16:37 -0000 Content-Type: multipart/mixed; boundary="===============5297641966312079985==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_unzip=3A_use_patches_from_fedora?= To: ml@inbox.vuxu.org From: Chocimier Reply-to: ml@inbox.vuxu.org Message-ID: Date: Sat, 16 May 2020 14:16:36 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============5297641966312079985== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IENob2NpbWllciBhZ2FpbnN0IG1hc3RlciBv biB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20vQ2hvY2lt aWVyL3ZvaWQtcGFja2FnZXMtb3JnIHVuemlwCmh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC8yMjAxMQoKdW56aXA6IHVzZSBwYXRjaGVzIGZyb20gZmVkb3Jh CkZpeGVzICMyMDAzNi4gQWxsIGZpeGVzIGZyb20gcHJldmlvdXMgcGF0Y2hzZXQgYXJlIGhlcmUu CgpBIHBhdGNoIGZpbGUgZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBh Y2thZ2VzL3B1bGwvMjIwMTEucGF0Y2ggaXMgYXR0YWNoZWQ= --===============5297641966312079985== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-unzip-22011.patch" RnJvbSBhMjRjOTc4ZDYwOGY2MThjMmRkZTVjOTBmNjNhMmI0NWYzYTU3YzJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiA9P1VURi04P3E/UGlvdHI9MjBXPUMzPUIzamNpaz89IDxjaG9j aW1pZXJAdGxlbi5wbD4KRGF0ZTogU2F0LCAxNiBNYXkgMjAyMCAxNDoxMzo0MSArMDIwMApTdWJq ZWN0OiBbUEFUQ0hdIHVuemlwOiB1c2UgcGF0Y2hlcyBmcm9tIGZlZG9yYQoKLS0tCiAuLi4vMDAw MS1GaXgtQ1ZFLTIwMTYtOTg0NC1yaGJ6LTE0MDQyODMucGF0Y2ggfCAgMzkgKysKIHNyY3BrZ3Mv dW56aXAvcGF0Y2hlcy9wYXRjaC1jcnlwdC5jLmRpZmYgICAgICB8ICAyNiAtCiBzcmNwa2dzL3Vu emlwL3BhdGNoZXMvcGF0Y2gtZXh0cmFjdC5jLmRpZmYgICAgfCAxMjMgLS0tLS0KIHNyY3BrZ3Mv dW56aXAvcGF0Y2hlcy9wYXRjaC1maWxlaW8uYy5kaWZmICAgICB8ICAyOSAtLQogc3JjcGtncy91 bnppcC9wYXRjaGVzL3BhdGNoLWxpc3QuYy5kaWZmICAgICAgIHwgIDU0IC0tCiBzcmNwa2dzL3Vu emlwL3BhdGNoZXMvcGF0Y2gtemlwaW5mby5jLnBhdGNoICAgfCAgMjcgLQogc3JjcGtncy91bnpp cC9wYXRjaGVzL3NlcmllcyAgICAgICAgICAgICAgICAgIHwgIDI5ICsrCiAuLi4tNi4wLUNPVlND QU4tZml4LXVudGVybWluYXRlZC1zdHJpbmcucGF0Y2ggfCAxMzEgKysrKysKIC4uLi91bnppcC02 LjAtYWx0LWljb252LXV0ZjgtcHJpbnQucGF0Y2ggICAgICB8IDM4MSArKysrKysrKysrKysrKwog Li4uL3BhdGNoZXMvdW56aXAtNi4wLWFsdC1pY29udi11dGY4LnBhdGNoICAgIHwgMzk4ICsrKysr KysrKysrKysrKwogLi4uL3BhdGNoZXMvdW56aXAtNi4wLWF0dHJpYnMtb3ZlcmZsb3cucGF0Y2gg IHwgIDEyICsKIC4uLi9wYXRjaGVzL3VuemlwLTYuMC1iemlwMi1jb25maWd1cmUucGF0Y2ggICB8 ICAzMCArKwogLi4uL3BhdGNoZXMvdW56aXAtNi4wLWNhc2VpbnNlbnNpdGl2ZS5wYXRjaCAgIHwg MTMxICsrKysrCiBzcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWNsb3NlLnBhdGNoICAg fCAxNzYgKysrKysrKwogLi4uL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWNvbmZpZ3VyZS5wYXRj aCAgIHwgIDEyICsKIC4uLi9wYXRjaGVzL3VuemlwLTYuMC1jdmUtMjAxNC04MTM5LnBhdGNoICAg ICB8ICA3OSArKysKIC4uLi9wYXRjaGVzL3VuemlwLTYuMC1jdmUtMjAxNC04MTQwLnBhdGNoICAg ICB8ICAyNSArCiAuLi5zLmMuZGlmZiA9PiB1bnppcC02LjAtY3ZlLTIwMTQtODE0MS5wYXRjaH0g fCAgNDIgKy0KIC4uLmN2ZS0yMDE4LTEwMDAwMzUtaGVhcC1iYXNlZC1vdmVyZmxvdy5wYXRjaCB8 ICAzNCArKwogLi4uL3BhdGNoZXMvdW56aXAtNi4wLWN2ZS0yMDE4LTE4Mzg0LnBhdGNoICAgIHwg IDM1ICsrCiAuLi4vdW56aXAvcGF0Y2hlcy91bnppcC02LjAtZXhlYy1zaGllbGQucGF0Y2ggfCAg MTAgKwogLi4uL3BhdGNoZXMvdW56aXAtNi4wLWZpeC1yZWNtYXRjaC5wYXRjaCAgICAgIHwgNDc3 ICsrKysrKysrKysrKysrKysrKwogLi4uL3BhdGNoZXMvdW56aXAtNi4wLWZvcm1hdC1zZWN1cmUu cGF0Y2ggICAgIHwgIDkwICsrKysKIC4uLi91bnppcC02LjAtaGVhcC1vdmVyZmxvdy1pbmZsb29w LnBhdGNoICAgICB8IDEwNCArKysrCiAuLi4vdW56aXAvcGF0Y2hlcy91bnppcC02LjAtbWFucGFn ZS1maXgucGF0Y2ggfCAgMTEgKwogLi4uL3VuemlwLTYuMC1vdmVyZmxvdy1sb25nLWZzaXplLnBh dGNoICAgICAgIHwgIDM0ICsrCiAuLi4vdW56aXAvcGF0Y2hlcy91bnppcC02LjAtb3ZlcmZsb3cu cGF0Y2ggICAgfCAgMjUgKwogc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1zeW1saW5r LnBhdGNoIHwgIDE3ICsKIC4uLi91bnppcC9wYXRjaGVzL3VuemlwLTYuMC10aW1lc3RhbXAucGF0 Y2ggICB8ICA0MSArKwogLi4uL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLXZhbGdyaW5kLnBhdGNo ICAgIHwgIDI2ICsKIC4uLi91bnppcC9wYXRjaGVzL3VuemlwLTYuMC14LW9wdGlvbi5wYXRjaCAg ICB8ICAyOCArCiAuLi4vdW56aXAvcGF0Y2hlcy91bnppcC16aXBib21iLW1hbnBhZ2UucGF0Y2gg fCAgMjUgKwogLi4uL3VuemlwL3BhdGNoZXMvdW56aXAtemlwYm9tYi1wYXJ0MS5wYXRjaCAgIHwg IDI1ICsKIC4uLi91bnppcC9wYXRjaGVzL3VuemlwLXppcGJvbWItcGFydDIucGF0Y2ggICB8IDM0 OSArKysrKysrKysrKysrCiAuLi4vdW56aXAvcGF0Y2hlcy91bnppcC16aXBib21iLXBhcnQzLnBh dGNoICAgfCAxMTIgKysrKwogc3JjcGtncy91bnppcC90ZW1wbGF0ZSAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAzICstCiAzNiBmaWxlcyBjaGFuZ2VkLCAyOTIyIGluc2VydGlvbnMoKyksIDI2 OCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMv MDAwMS1GaXgtQ1ZFLTIwMTYtOTg0NC1yaGJ6LTE0MDQyODMucGF0Y2gKIGRlbGV0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0Y2gtY3J5cHQuYy5kaWZmCiBkZWxldGUgbW9k ZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRjaGVzL3BhdGNoLWV4dHJhY3QuYy5kaWZmCiBkZWxl dGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRjaGVzL3BhdGNoLWZpbGVpby5jLmRpZmYK IGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0Y2gtbGlzdC5jLmRp ZmYKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0Y2gtemlwaW5m by5jLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRjaGVzL3Nlcmll cwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtQ09W U0NBTi1maXgtdW50ZXJtaW5hdGVkLXN0cmluZy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtYWx0LWljb252LXV0ZjgtcHJpbnQucGF0Y2gK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWFsdC1p Y29udi11dGY4LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRjaGVz L3VuemlwLTYuMC1hdHRyaWJzLW92ZXJmbG93LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1iemlwMi1jb25maWd1cmUucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWNhc2VpbnNlbnNp dGl2ZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnpp cC02LjAtY2xvc2UucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNo ZXMvdW56aXAtNi4wLWNvbmZpZ3VyZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv dW56aXAvcGF0Y2hlcy91bnppcC02LjAtY3ZlLTIwMTQtODEzOS5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtY3ZlLTIwMTQtODE0MC5wYXRj aAogcmVuYW1lIHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy97cGF0Y2gtcHJvY2Vzcy5jLmRpZmYgPT4g dW56aXAtNi4wLWN2ZS0yMDE0LTgxNDEucGF0Y2h9ICg3NSUpCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1jdmUtMjAxOC0xMDAwMDM1LWhlYXAtYmFz ZWQtb3ZlcmZsb3cucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNo ZXMvdW56aXAtNi4wLWN2ZS0yMDE4LTE4Mzg0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1leGVjLXNoaWVsZC5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtZml4LXJlY21hdGNoLnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1m b3JtYXQtc2VjdXJlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRj aGVzL3VuemlwLTYuMC1oZWFwLW92ZXJmbG93LWluZmxvb3AucGF0Y2gKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLW1hbnBhZ2UtZml4LnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1vdmVyZmxv dy1sb25nLWZzaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRj aGVzL3VuemlwLTYuMC1vdmVyZmxvdy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv dW56aXAvcGF0Y2hlcy91bnppcC02LjAtc3ltbGluay5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtdGltZXN0YW1wLnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC12YWxncmluZC5wYXRj aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAteC1v cHRpb24ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56 aXAtemlwYm9tYi1tYW5wYWdlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy91bnpp cC9wYXRjaGVzL3VuemlwLXppcGJvbWItcGFydDEucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtemlwYm9tYi1wYXJ0Mi5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC16aXBib21iLXBhcnQzLnBhdGNo CgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzLzAwMDEtRml4LUNWRS0yMDE2LTk4 NDQtcmhiei0xNDA0MjgzLnBhdGNoIGIvc3JjcGtncy91bnppcC9wYXRjaGVzLzAwMDEtRml4LUNW RS0yMDE2LTk4NDQtcmhiei0xNDA0MjgzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4wZTRhMTczMzk3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvdW56 aXAvcGF0Y2hlcy8wMDAxLUZpeC1DVkUtMjAxNi05ODQ0LXJoYnotMTQwNDI4My5wYXRjaApAQCAt MCwwICsxLDM5IEBACitGcm9tIDc1NDEzN2U3MGNmNThhNjRhZDUyNGI3MDRhODZiNjUxYmEwY2Rl MDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRyIFN0b2R1bGthIDxwc3RvZHVs a0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxNCBEZWMgMjAxNiAxNjozMDozNiArMDEwMAorU3Vi amVjdDogW1BBVENIXSBGaXggQ1ZFLTIwMTYtOTg0NCAocmhieiMxNDA0MjgzKQorCitGaXhlcyBi dWZmZXIgb3ZlcmZsb3cgaW4gemlwaW5mbyBpbiBzaW1pbGFyIHdheSBsaWtlIGZpeCBmb3IKK0NW RS0yMDE0LTk5MTMgcHJvdmlkZWQgYnkgdXBzdHJlYW0uCistLS0KKyB6aXBpbmZvLmMgfCAxNCAr KysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0 aW9uKC0pCisKK2RpZmYgLS1naXQgYS96aXBpbmZvLmMgYi96aXBpbmZvLmMKK2luZGV4IGMwMzYy MGUuLmFjY2NhMmEgMTAwNjQ0CistLS0gYS96aXBpbmZvLmMKKysrKyBiL3ppcGluZm8uYworQEAg LTE5ODQsNyArMTk4NCwxOSBAQCBzdGF0aWMgaW50IHppX3Nob3J0KF9fRykgICAvKiByZXR1cm4g UEstdHlwZSBlcnJvciBjb2RlICovCisgICAgICAgICB1c2ggIGRudW09KHVzaCkoKEcuY3JlYy5n ZW5lcmFsX3B1cnBvc2VfYml0X2ZsYWc+PjEpICYgMyk7CisgICAgICAgICBtZXRoYnVmWzNdID0g ZHR5cGVbZG51bV07CisgICAgIH0gZWxzZSBpZiAobWV0aG51bSA+PSBOVU1fTUVUSE9EUykgeyAg IC8qIHVua25vd24gKi8KKy0gICAgICAgIHNwcmludGYoJm1ldGhidWZbMV0sICIlMDN1IiwgRy5j cmVjLmNvbXByZXNzaW9uX21ldGhvZCk7CisrICAgICAgICAvKiAyMDE2LTEyLTA1IFNNUy4KKysg ICAgICAgICAqIGh0dHBzOi8vbGF1bmNocGFkLm5ldC9idWdzLzE2NDM3NTAKKysgICAgICAgICAq IFVuZXhwZWN0ZWRseSBsYXJnZSBjb21wcmVzc2lvbiBtZXRob2RzIG92ZXJmbG93CisrICAgICAg ICAgKiAmbWV0aGJ1ZltdLiAgVXNlIHRoZSBvbGQsIHRocmVlLWRpZ2l0IGRlY2ltYWwgZm9ybWF0 CisrICAgICAgICAgKiBmb3IgdmFsdWVzIHdoaWNoIGZpdC4gIE90aGVyd2lzZSwgc2FjcmlmaWNl IHRoZSAidSIsCisrICAgICAgICAgKiBhbmQgdXNlIGZvdXItZGlnaXQgaGV4YWRlY2ltYWwuCisr ICAgICAgICAgKi8KKysgICAgICAgIGlmIChHLmNyZWMuY29tcHJlc3Npb25fbWV0aG9kIDw9IDk5 OSkgeworKyAgICAgICAgICAgICAgc3ByaW50ZiggJm1ldGhidWZbIDFdLCAiJTAzdSIsIEcuY3Jl Yy5jb21wcmVzc2lvbl9tZXRob2QpOworKyAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAg IHNwcmludGYoICZtZXRoYnVmWyAwXSwgIiUwNFgiLCBHLmNyZWMuY29tcHJlc3Npb25fbWV0aG9k KTsKKysgICAgICAgIH0KKysKKyAgICAgfQorIAorICAgICBmb3IgKGsgPSAwOyAgayA8IDE1OyAg KytrKQorLS0gCisyLjUuNQorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0 Y2gtY3J5cHQuYy5kaWZmIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3BhdGNoLWNyeXB0LmMuZGlm ZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTRjZmVkZDhmNTAuLjAwMDAwMDAwMDAw Ci0tLSBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy9wYXRjaC1jcnlwdC5jLmRpZmYKKysrIC9kZXYv bnVsbApAQCAtMSwyNiArMCwwIEBACi0kTmV0QlNEOiBwYXRjaC1jcnlwdC5jLHYgMS4xIDIwMTUv MTEvMTEgMTI6NDc6Mjcgd2l6IEV4cCAkCi0KLUJ1ZyBmaXggZm9yIGhlYXAgb3ZlcmZsb3csIGZy b20gRGViaWFuLgotQ1ZFLTIwMTUtNzY5NgotCi0tLS0gY3J5cHQuYy5vcmlnCTIwMDctMDEtMDUg MTU6NDc6MzYuMDAwMDAwMDAwICswMDAwCi0rKysgY3J5cHQuYwotQEAgLTQ2NSw3ICs0NjUsMTcg QEAgaW50IGRlY3J5cHQoX19HX18gcGFzc3dyZCkKLSAgICAgR0xPQkFMKHBJbmZvLT5lbmNyeXB0 ZWQpID0gRkFMU0U7Ci0gICAgIGRlZmVyX2xlZnRvdmVyX2lucHV0KF9fRyk7Ci0gICAgIGZvciAo biA9IDA7IG4gPCBSQU5EX0hFQURfTEVOOyBuKyspIHsKLS0gICAgICAgIGIgPSBORVhUQllURTsK LSsgICAgICAgIC8qIDIwMTItMTEtMjMgU01TLiAgKE9VU1BHIHJlcG9ydC4pCi0rICAgICAgICAg KiBRdWl0IGVhcmx5IGlmIGNvbXByZXNzZWQgc2l6ZSA8IEhFQURfTEVOLiAgVGhlIHJlc3VsdGlu ZwotKyAgICAgICAgICogZXJyb3IgbWVzc2FnZSAoInVuYWJsZSB0byBnZXQgcGFzc3dvcmQiKSBj b3VsZCBiZSBpbXByb3ZlZCwKLSsgICAgICAgICAqIGJ1dCBpdCdzIGJldHRlciB0aGFuIHRyeWlu ZyB0byByZWFkIG5vbmV4aXN0ZW50IGRhdGEsIGFuZAotKyAgICAgICAgICogdGhlbiBjb250aW51 aW5nIHdpdGggYSBuZWdhdGl2ZSBHLmNzaXplLiAgKFNlZQotKyAgICAgICAgICogZmlsZWlvLmM6 cmVhZGJ5dGUoKSkuCi0rICAgICAgICAgKi8KLSsgICAgICAgIGlmICgoYiA9IE5FWFRCWVRFKSA9 PSAodXNoKUVPRikKLSsgICAgICAgIHsKLSsgICAgICAgICAgICByZXR1cm4gUEtfRVJSOwotKyAg ICAgICAgfQotICAgICAgICAgaFtuXSA9ICh1Y2gpYjsKLSAgICAgICAgIFRyYWNlKChzdGRvdXQs ICIgKCUwMngpIiwgaFtuXSkpOwotICAgICB9CmRpZmYgLS1naXQgYS9zcmNwa2dzL3VuemlwL3Bh dGNoZXMvcGF0Y2gtZXh0cmFjdC5jLmRpZmYgYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0Y2gt ZXh0cmFjdC5jLmRpZmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlMTVhOWJhOTY0 Li4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0Y2gtZXh0cmFjdC5j LmRpZmYKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotJE5ldEJTRDogcGF0Y2gtZXh0 cmFjdC5jLHYgMS4zIDIwMTUvMTEvMTEgMTI6NDc6Mjcgd2l6IEV4cCAkCi0KLUZpeGVzIGZvcgot KiBodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPUNWRS0yMDE0LTgx MzkKLSogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD1DVkUtMjAx NC04MTQwCi0qIGh0dHA6Ly9zZi5uZXQvcHJvamVjdHMvbWFuY2hhL2ZpbGVzL3NlYy91bnppcC02 LjBfb3ZlcmZsb3cyLmRpZmYgdmlhCi0gIGh0dHA6Ly9zZWNsaXN0cy5vcmcvb3NzLXNlYy8yMDE0 L3E0LzExMzEgYW5kCi0gIGh0dHA6Ly9zZWNsaXN0cy5vcmcvb3NzLXNlYy8yMDE0L3E0LzUwNyBh bmQgbGF0ZXIgdmVyc2lvbgotICBodHRwOi8vc2YubmV0L3Byb2plY3RzL21hbmNoYS9maWxlcy9z ZWMvdW56aXAtNi4wX292ZXJmbG93My5kaWZmIHZpYQotICBodHRwOi8vd3d3Lm9wZW53YWxsLmNv bS9saXN0cy9vc3Mtc2VjdXJpdHkvMjAxNS8wMi8xMS83Ci0KLUJ5IGNhcmVmdWxseSBjcmFmdGlu ZyBhIGNvcnJ1cHQgWklQIGFyY2hpdmUgd2l0aCAiZXh0cmEgZmllbGRzIiB0aGF0Ci1wdXJwb3J0 IHRvIGhhdmUgY29tcHJlc3NlZCBibG9ja3MgbGFyZ2VyIHRoYW4gdGhlIGNvcnJlc3BvbmRpbmcK LXVuY29tcHJlc3NlZCBibG9ja3MgaW4gU1RPUkVEIG5vLWNvbXByZXNzaW9uIG1vZGUsIGFuIGF0 dGFja2VyIGNhbgotdHJpZ2dlciBhIGhlYXAgb3ZlcmZsb3cgdGhhdCBjYW4gcmVzdWx0IGluIGFw cGxpY2F0aW9uIGNyYXNoIG9yCi1wb3NzaWJseSBoYXZlIG90aGVyIHVuc3BlY2lmaWVkIGltcGFj dC4KLQotVGhpcyBwYXRjaCBlbnN1cmVzIHRoYXQgd2hlbiBleHRyYSBmaWVsZHMgdXNlIFNUT1JF RCBtb2RlLCB0aGUKLSJjb21wcmVzc2VkIiBhbmQgdW5jb21wcmVzc2VkIGJsb2NrIHNpemVzIG1h dGNoLgotKiBDVkUtMjAxNS03Njk3IChmcm9tIERlYmlhbikKLSAgaHR0cHM6Ly9idWdzLmRlYmlh bi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz04MDIxNjAKLSogaW50ZWdlciB1bmRlcmZs b3cKLSAgaHR0cHM6Ly9idWdzLmRlYmlhbi5vcmcvY2dpLWJpbi9idWdyZXBvcnQuY2dpP2J1Zz04 MDIxNjAKLQotLS0tIGV4dHJhY3QuYy5vcmlnCTIwMDktMDMtMTQgMDE6MzI6NTIuMDAwMDAwMDAw ICswMDAwCi0rKysgZXh0cmFjdC5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKgotLSAgQ29weXJpZ2h0 IChjKSAxOTkwLTIwMDkgSW5mby1aSVAuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotKyAgQ29weXJp Z2h0IChjKSAxOTkwLTIwMTQgSW5mby1aSVAuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotIAotICAg U2VlIHRoZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFLCB2ZXJzaW9uIDIwMDktSmFuLTAyIG9y IGxhdGVyCi0gICAodGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZSBhbHNvIGluY2x1ZGVkIGluIHVu emlwLmgpIGZvciB0ZXJtcyBvZiB1c2UuCi1AQCAtMjk4LDYgKzI5OCw4IEBAIGNoYXIgWkNPTlNU IEZhciBUcnVuY05UU0RbXSA9Ci0gI2lmbmRlZiBTRlgKLSAgICBzdGF0aWMgWkNPTlNUIGNoYXIg RmFyIEluY29uc2lzdEVGbGVuZ3RoW10gPSAiYmFkIGV4dHJhLWZpZWxkIGVudHJ5OlxuIFwKLSAg ICAgIEVGIGJsb2NrIGxlbmd0aCAoJXUgYnl0ZXMpIGV4Y2VlZHMgcmVtYWluaW5nIEVGIGRhdGEg KCV1IGJ5dGVzKVxuIjsKLSsgICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFRvb1NtYWxsRUZsZW5n dGhbXSA9ICJiYWQgZXh0cmEtZmllbGQgZW50cnk6XG4gXAotKyAgICAgRUYgYmxvY2sgbGVuZ3Ro ICgldSBieXRlcykgaW52YWxpZCAoPCAlZClcbiI7Ci0gICAgc3RhdGljIFpDT05TVCBjaGFyIEZh ciBJbnZhbGlkQ29tcHJEYXRhRUFzW10gPQotICAgICAgIiBpbnZhbGlkIGNvbXByZXNzZWQgZGF0 YSBmb3IgRUFzXG4iOwotICMgIGlmIChkZWZpbmVkKFdJTjMyKSAmJiBkZWZpbmVkKE5UU0RfRUFT KSkKLUBAIC0xMjU1LDggKzEyNTcsMTcgQEAgc3RhdGljIGludCBleHRyYWN0X29yX3Rlc3RfZW50 cnlsaXN0KF9fRwotICAgICAgICAgaWYgKEcubHJlYy5jb21wcmVzc2lvbl9tZXRob2QgPT0gU1RP UkVEKSB7Ci0gICAgICAgICAgICAgenVzel90IGNzaXpfZGVjcnlwdGVkID0gRy5scmVjLmNzaXpl OwotIAotLSAgICAgICAgICAgIGlmIChHLnBJbmZvLT5lbmNyeXB0ZWQpCi0rICAgICAgICAgICAg aWYgKEcucEluZm8tPmVuY3J5cHRlZCkgewotKyAgICAgICAgICAgICAgICBpZiAoY3Npel9kZWNy eXB0ZWQgPD0gMTIpIHsKLSsgICAgICAgICAgICAgICAgICAgIC8qIGhhbmRsZSB0aGUgZXJyb3Ig bm93IHRvIHByZXZlbnQgdW5zaWduZWQgb3ZlcmZsb3cgKi8KLSsgICAgICAgICAgICAgICAgICAg IEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKLSsgICAgICAgICAgICAgICAgICAg ICAgTG9hZEZhclN0cmluZ1NtYWxsKEVyclVuemlwTm9GaWxlKSwKLSsgICAgICAgICAgICAgICAg ICAgICAgTG9hZEZhclN0cmluZyhJbnZhbGlkQ29tcHJEYXRhKSwKLSsgICAgICAgICAgICAgICAg ICAgICAgTG9hZEZhclN0cmluZ1NtYWxsMihJbmZsYXRlKSkpOwotKyAgICAgICAgICAgICAgICAg ICAgcmV0dXJuIFBLX0VSUjsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICBj c2l6X2RlY3J5cHRlZCAtPSAxMjsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgaWYgKEcu bHJlYy51Y3NpemUgIT0gY3Npel9kZWNyeXB0ZWQpIHsKLSAgICAgICAgICAgICAgICAgSW5mbyhz bGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAotICAgICAgICAgICAgICAgICAgIExvYWRGYXJT dHJpbmdTbWFsbDIoV3JuU3RvclVDU2l6Q1NpekRpZmYpLAotQEAgLTIwMjMsNyArMjAzNCw4IEBA IHN0YXRpYyBpbnQgVGVzdEV4dHJhRmllbGQoX19HX18gZWYsIGVmX2wKLSAgICAgICAgIGViSUQg PSBtYWtld29yZChlZik7Ci0gICAgICAgICBlYkxlbiA9ICh1bnNpZ25lZCltYWtld29yZChlZitF Ql9MRU4pOwotIAotLSAgICAgICAgaWYgKGViTGVuID4gKGVmX2xlbiAtIEVCX0hFQURTSVpFKSkg ewotKyAgICAgICAgaWYgKGViTGVuID4gKGVmX2xlbiAtIEVCX0hFQURTSVpFKSkKLSsgICAgICAg IHsKLSAgICAgICAgICAgIC8qIERpc2NvdmVyZWQgc29tZSBleHRyYSBmaWVsZCBpbmNvbnNpc3Rl bmN5ISAqLwotICAgICAgICAgICAgIGlmICh1Ty5xZmxhZykKLSAgICAgICAgICAgICAgICAgSW5m byhzbGlkZSwgMSwgKChjaGFyICopc2xpZGUsICIlLTIycyAiLAotQEAgLTIwMzIsNiArMjA0NCwx NiBAQCBzdGF0aWMgaW50IFRlc3RFeHRyYUZpZWxkKF9fR19fIGVmLCBlZl9sCi0gICAgICAgICAg ICAgICBlYkxlbiwgKGVmX2xlbiAtIEVCX0hFQURTSVpFKSkpOwotICAgICAgICAgICAgIHJldHVy biBQS19FUlI7Ci0gICAgICAgICB9Ci0rICAgICAgICBlbHNlIGlmIChlYkxlbiA8IEVCX0hFQURT SVpFKQotKyAgICAgICAgewotKyAgICAgICAgICAgIC8qIEV4dHJhIGJsb2NrIGxlbmd0aCBzbWFs bGVyIHRoYW4gaGVhZGVyIGxlbmd0aC4gKi8KLSsgICAgICAgICAgICBpZiAodU8ucWZsYWcpCi0r ICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDEsICgoY2hhciAqKXNsaWRlLCAiJS0yMnMgIiwK LSsgICAgICAgICAgICAgICAgICBGbkZpbHRlcjEoRy5maWxlbmFtZSkpKTsKLSsgICAgICAgICAg ICBJbmZvKHNsaWRlLCAxLCAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhUb29TbWFsbEVG bGVuZ3RoKSwKLSsgICAgICAgICAgICAgIGViTGVuLCBFQl9IRUFEU0laRSkpOwotKyAgICAgICAg ICAgIHJldHVybiBQS19FUlI7Ci0rICAgICAgICB9Ci0gCi0gICAgICAgICBzd2l0Y2ggKGViSUQp IHsKLSAgICAgICAgICAgICBjYXNlIEVGX09TMjoKLUBAIC0yMjE3LDYgKzIyMzksNyBAQCBzdGF0 aWMgaW50IHRlc3RfY29tcHJfZWIoX19HX18gZWIsIGViX3NpCi0gICAgIHVsZyBlYl91Y3NpemU7 Ci0gICAgIHVjaCAqZWJfdWNwdHI7Ci0gICAgIGludCByOwotKyAgICB1c2ggbWV0aG9kOwotIAot ICAgICBpZiAoY29tcHJfb2Zmc2V0IDwgNCkgICAgICAgICAgICAgICAgLyogZmllbGQgaXMgbm90 IGNvbXByZXNzZWQ6ICovCi0gICAgICAgICByZXR1cm4gUEtfT0s7ICAgICAgICAgICAgICAgICAg ICAvKiBkbyBub3RoaW5nIGFuZCBzaWduYWwgT0sgKi8KLUBAIC0yMjI2LDYgKzIyNDksMTMgQEAg c3RhdGljIGludCB0ZXN0X2NvbXByX2ViKF9fR19fIGViLCBlYl9zaQotICAgICAgICAgIGViX3Np emUgPD0gKGNvbXByX29mZnNldCArIEVCX0NNUFJIRUFETEVOKSkpCi0gICAgICAgICByZXR1cm4g SVpfRUZfVFJVTkM7ICAgICAgICAgICAgICAgLyogbm8gY29tcHJlc3NlZCBkYXRhISAqLwotIAot KyAgICBtZXRob2QgPSBtYWtld29yZChlYiArIChFQl9IRUFEU0laRSArIGNvbXByX29mZnNldCkp OwotKyAgICBpZiAoKG1ldGhvZCA9PSBTVE9SRUQpICYmCi0rICAgICAgICAoZWJfc2l6ZSAtIGNv bXByX29mZnNldCAtIEVCX0NNUFJIRUFETEVOICE9IGViX3Vjc2l6ZSkpCi0rCXJldHVybiBQS19F UlI7CQkJICAvKiBjb21wcmVzc2VkICYgdW5jb21wcmVzc2VkCi0rCQkJCQkgICAqIHNob3VsZCBt YXRjaCBpbiBTVE9SRUQKLSsJCQkJCSAgICogbWV0aG9kICovCi0rCi0gICAgIGlmICgKLSAjaWZk ZWYgSU5UXzE2QklUCi0gICAgICAgICAoKCh1bGcpKGV4dGVudCllYl91Y3NpemUpICE9IGViX3Vj c2l6ZSkgfHwKLUBAIC0yNzAxLDYgKzI3MzEsMTIgQEAgX19HREVGCi0gICAgIGludCByZXBlYXRl ZF9idWZfZXJyOwotICAgICBiel9zdHJlYW0gYnN0cm07Ci0gCi0rICAgIGlmIChHLmluY250IDw9 IDAgJiYgRy5jc2l6ZSA8PSAwTCkgewotKyAgICAgICAgLyogYXZvaWQgYW4gaW5maW5pdGUgbG9v cCAqLwotKyAgICAgICAgVHJhY2UoKHN0ZGVyciwgIlVaYnVuemlwMigpIGdvdCBlbXB0eSBpbnB1 dFxuIikpOwotKyAgICAgICAgcmV0dXJuIDI7Ci0rICAgIH0KLSsKLSAjaWYgKGRlZmluZWQoRExM KSAmJiAhZGVmaW5lZChOT19TTElERV9SRURJUikpCi0gICAgIGlmIChHLnJlZGlyZWN0X3NsaWRl KQotICAgICAgICAgd3NpemUgPSBHLnJlZGlyZWN0X3NpemUsIHJlZGlyU2xpZGUgPSBHLnJlZGly ZWN0X2J1ZmZlcjsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy9wYXRjaC1maWxl aW8uYy5kaWZmIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3BhdGNoLWZpbGVpby5jLmRpZmYKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZmZGE0MDRhYjYyLi4wMDAwMDAwMDAwMAotLS0g YS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0Y2gtZmlsZWlvLmMuZGlmZgorKysgL2Rldi9udWxs CkBAIC0xLDI5ICswLDAgQEAKLSROZXRCU0Q6IHBhdGNoLWZpbGVpby5jLHYgMS4xIDIwMTQvMTIv MjUgMTY6NDg6MzMgd2l6IEV4cCAkCi0KLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93 X2J1Zy5jZ2k/aWQ9Q1ZFLTIwMTQtODE0MQotCi0tLS0gZmlsZWlvLmMub3JpZwkyMDA5LTA0LTIw IDAwOjAzOjQ0LjAwMDAwMDAwMCArMDAwMAotKysrIGZpbGVpby5jCi1AQCAtMTc2LDYgKzE3Niw4 IEBAIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgRmlsZW5hbWVUb29Mb25nVHIKLSAjZW5kaWYKLSBz dGF0aWMgWkNPTlNUIGNoYXIgRmFyIEV4dHJhRmllbGRUb29Mb25nW10gPQotICAgIndhcm5pbmc6 ICBleHRyYSBmaWVsZCB0b28gbG9uZyAoJWQpLiAgSWdub3JpbmcuLi5cbiI7Ci0rc3RhdGljIFpD T05TVCBjaGFyIEZhciBFeHRyYUZpZWxkQ29ycnVwdFtdID0KLSsgICJ3YXJuaW5nOiAgZXh0cmEg ZmllbGQgKHR5cGU6IDB4JTA0eCkgY29ycnVwdC4gIENvbnRpbnVpbmcuLi5cbiI7Ci0gCi0gI2lm ZGVmIFdJTkRMTAotICAgIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgRGlza0Z1bGxRdWVyeVtdID0K LUBAIC0yMjk1LDcgKzIyOTcsMTIgQEAgaW50IGRvX3N0cmluZyhfX0dfXyBsZW5ndGgsIG9wdGlv bikgICAvKgotICAgICAgICAgICAgIGlmIChyZWFkYnVmKF9fR19fIChjaGFyICopRy5leHRyYV9m aWVsZCwgbGVuZ3RoKSA9PSAwKQotICAgICAgICAgICAgICAgICByZXR1cm4gUEtfRU9GOwotICAg ICAgICAgICAgIC8qIExvb2tzIGxpa2UgaGVyZSBpcyB3aGVyZSBleHRyYSBmaWVsZHMgYXJlIHJl YWQgKi8KLS0gICAgICAgICAgICBnZXRaaXA2NERhdGEoX19HX18gRy5leHRyYV9maWVsZCwgbGVu Z3RoKTsKLSsgICAgICAgICAgICBpZiAoZ2V0WmlwNjREYXRhKF9fR19fIEcuZXh0cmFfZmllbGQs IGxlbmd0aCkgIT0gUEtfQ09PTCkKLSsgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgIElu Zm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKLSsgICAgICAgICAgICAgICAgIExvYWRG YXJTdHJpbmcoIEV4dHJhRmllbGRDb3JydXB0KSwgRUZfUEtTWjY0KSk7Ci0rICAgICAgICAgICAg ICAgIGVycm9yID0gUEtfV0FSTjsKLSsgICAgICAgICAgICB9Ci0gI2lmZGVmIFVOSUNPREVfU1VQ UE9SVAotICAgICAgICAgICAgIEcudW5pcGF0aF9maWxlbmFtZSA9IE5VTEw7Ci0gICAgICAgICAg ICAgaWYgKEcuVXpPLlVfZmxhZyA8IDIpIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0 Y2hlcy9wYXRjaC1saXN0LmMuZGlmZiBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy9wYXRjaC1saXN0 LmMuZGlmZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA5NjFlYzlmMTMuLjAwMDAw MDAwMDAwCi0tLSBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy9wYXRjaC1saXN0LmMuZGlmZgorKysg L2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLSROZXRCU0Q6IHBhdGNoLWxpc3QuYyx2IDEuMyAy MDE5LzA3LzE1IDE0OjA4OjAzIG5pYSBFeHAgJAotCi1jaHVuayAxOgotQ1ZFLTIwMTgtMTgzODQg Zml4IGZyb20KLWh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvaW5mb3ppcC9idWdzLzUzLwotYW5k Ci1odHRwczovL3NvdXJjZXMuZGViaWFuLm9yZy9wYXRjaGVzL3VuemlwLzYuMC0yNC8wNy1pbmNy ZWFzZS1zaXplLW9mLWNmYWN0b3JzdHIucGF0Y2gvCi0KLWNodW5rIDI6Ci1CaWctaGFtbWVyIGZp eCBmb3IKLWh0dHA6Ly9zZWNsaXN0cy5vcmcvb3NzLXNlYy8yMDE0L3E0LzQ5NwotCi1jaHVuayAz OgotQ1ZFLTIwMTQtOTkxMyBmaXggZnJvbQotaHR0cHM6Ly9wZW9wbGUuZGViaWFuLm9yZy9+c2Fu dmlsYS91bnppcC9jdmUtMjAxNC05OTEzL2N2ZS0yMDE0LTk5MTMtdW56aXAtYnVmZmVyLW92ZXJm bG93LnR4dAotdmlhCi1odHRwOi8vd3d3LmluZm8temlwLm9yZy9waHBCQjMvdmlld3RvcGljLnBo cD9mPTcmdD01MjkKLQotLS0tIGxpc3QuYy5vcmlnCTIwMDktMDItMDggMTc6MTE6MzQuMDAwMDAw MDAwICswMDAwCi0rKysgbGlzdC5jCi1AQCAtOTcsNyArOTcsNyBAQCBpbnQgbGlzdF9maWxlcyhf X0cpICAgIC8qIHJldHVybiBQSy10eXBlCi0gewotICAgICBpbnQgZG9fdGhpc19maWxlPUZBTFNF LCBjZmFjdG9yLCBlcnJvciwgZXJyb3JfaW5fYXJjaGl2ZT1QS19DT09MOwotICNpZm5kZWYgV0lO RExMCi0tICAgIGNoYXIgc2duLCBjZmFjdG9yc3RyWzEwXTsKLSsgICAgY2hhciBzZ24sIGNmYWN0 b3JzdHJbMTJdOwotICAgICBpbnQgbG9uZ2hkcj0odU8udmZsYWc+MSk7Ci0gI2VuZGlmCi0gICAg IGludCBkYXRlX2Zvcm1hdDsKLUBAIC0xMTYsNyArMTE2LDcgQEAgaW50IGxpc3RfZmlsZXMoX19H KSAgICAvKiByZXR1cm4gUEstdHlwZQotICAgICB1bGcgYWNsX3NpemUsIHRvdF9hY2xzaXplPTBM LCB0b3RfYWNsZmlsZXM9MEw7Ci0gI2VuZGlmCi0gICAgIG1pbl9pbmZvIGluZm87Ci0tICAgIGNo YXIgbWV0aGJ1Zls4XTsKLSsgICAgY2hhciBtZXRoYnVmWzgwXTsKLSAgICAgc3RhdGljIFpDT05T VCBjaGFyIGR0eXBlW109Ik5YRlMiOyAgLyogc2VlIHppX3Nob3J0KCkgKi8KLSAgICAgc3RhdGlj IFpDT05TVCBjaGFyIEZhciBtZXRob2RbTlVNX01FVEhPRFMrMV1bOF0gPQotICAgICAgICAgeyJT dG9yZWQiLCAiU2hydW5rIiwgIlJlZHVjZTEiLCAiUmVkdWNlMiIsICJSZWR1Y2UzIiwgIlJlZHVj ZTQiLAotQEAgLTMzOSw3ICszMzksMTQgQEAgaW50IGxpc3RfZmlsZXMoX19HKSAgICAvKiByZXR1 cm4gUEstdHlwZQotICAgICAgICAgICAgICAgICBHLmNyZWMuY29tcHJlc3Npb25fbWV0aG9kID09 IEVOSERFRkxBVEVEKSB7Ci0gICAgICAgICAgICAgICAgIG1ldGhidWZbNV0gPSBkdHlwZVsoRy5j cmVjLmdlbmVyYWxfcHVycG9zZV9iaXRfZmxhZz4+MSkgJiAzXTsKLSAgICAgICAgICAgICB9IGVs c2UgaWYgKG1ldGhudW0gPj0gTlVNX01FVEhPRFMpIHsKLS0gICAgICAgICAgICAgICAgc3ByaW50 ZigmbWV0aGJ1Zls0XSwgIiUwM3UiLCBHLmNyZWMuY29tcHJlc3Npb25fbWV0aG9kKTsKLSsgICAg ICAgICAgICAgICAgLyogRml4IGZvciBDVkUtMjAxNC05OTEzLCBzaW1pbGFyIHRvIENWRS0yMDE2 LTk4NDQuCi0rICAgICAgICAgICAgICAgICAqIFVzZSB0aGUgb2xkIGRlY2ltYWwgZm9ybWF0IG9u bHkgZm9yIHZhbHVlcyB3aGljaCBmaXQuCi0rICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAg ICAgICAgICBpZiAoRy5jcmVjLmNvbXByZXNzaW9uX21ldGhvZCA8PSA5OTkpIHsKLSsgICAgICAg ICAgICAgICAgICAgIHNwcmludGYoICZtZXRoYnVmWyA0XSwgIiUwM3UiLCBHLmNyZWMuY29tcHJl c3Npb25fbWV0aG9kKTsKLSsgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICAg ICAgICAgIHNwcmludGYoICZtZXRoYnVmWyAzXSwgIiUwNFgiLCBHLmNyZWMuY29tcHJlc3Npb25f bWV0aG9kKTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgIH0KLSAKLSAjaWYgMCAg ICAgICAvKiBHUlIvRXVybzogIGFkZCB0aGlzPyAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnpp cC9wYXRjaGVzL3BhdGNoLXppcGluZm8uYy5wYXRjaCBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy9w YXRjaC16aXBpbmZvLmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMTBi YTBmOTlkLi4wMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvcGF0Y2gtemlw aW5mby5jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotJE5ldEJTRDogcGF0 Y2gtemlwaW5mby5jLHYgMS4xIDIwMTcvMDIvMDQgMjM6MjU6NTkgd2l6IEV4cCAkCi0KLUZpeCBj cmFzaCBpbiB6aXBpbmZvLCBDVkUtMjAxNi05ODQ0LgotaHR0cDovL3d3dy5vcGVud2FsbC5jb20v bGlzdHMvb3NzLXNlY3VyaXR5LzIwMTYvMTIvMDUvMTkKLQotLS0tIHppcGluZm8uYy5vcmlnCTIw MDktMDItMDggMTc6MDQ6MzAuMDAwMDAwMDAwICswMDAwCi0rKysgemlwaW5mby5jCi1AQCAtMTky MSw3ICsxOTIxLDE4IEBAIHN0YXRpYyBpbnQgemlfc2hvcnQoX19HKSAgIC8qIHJldHVybiBQSy0K LSAgICAgICAgIHVzaCAgZG51bT0odXNoKSgoRy5jcmVjLmdlbmVyYWxfcHVycG9zZV9iaXRfZmxh Zz4+MSkgJiAzKTsKLSAgICAgICAgIG1ldGhidWZbM10gPSBkdHlwZVtkbnVtXTsKLSAgICAgfSBl bHNlIGlmIChtZXRobnVtID49IE5VTV9NRVRIT0RTKSB7ICAgLyogdW5rbm93biAqLwotLSAgICAg ICAgc3ByaW50ZigmbWV0aGJ1ZlsxXSwgIiUwM3UiLCBHLmNyZWMuY29tcHJlc3Npb25fbWV0aG9k KTsKLSsgICAgICAgIC8qIDIwMTYtMTItMDUgU01TLgotKyAgICAgICAgICogaHR0cHM6Ly9sYXVu Y2hwYWQubmV0L2J1Z3MvMTY0Mzc1MAotKyAgICAgICAgICogVW5leHBlY3RlZGx5IGxhcmdlIGNv bXByZXNzaW9uIG1ldGhvZHMgb3ZlcmZsb3cKLSsgICAgICAgICAqICZtZXRoYnVmW10uICBVc2Ug dGhlIG9sZCwgdGhyZWUtZGlnaXQgZGVjaW1hbCBmb3JtYXQKLSsgICAgICAgICAqIGZvciB2YWx1 ZXMgd2hpY2ggZml0LiAgT3RoZXJ3aXNlLCBzYWNyaWZpY2UgdGhlICJ1IiwKLSsgICAgICAgICAq IGFuZCB1c2UgZm91ci1kaWdpdCBoZXhhZGVjaW1hbC4KLSsgICAgICAgICAqLwotKyAgICAgICAg aWYgKEcuY3JlYy5jb21wcmVzc2lvbl9tZXRob2QgPD0gOTk5KSB7Ci0rICAgICAgICAgICAgc3By aW50ZiggJm1ldGhidWZbIDFdLCAiJTAzdSIsIEcuY3JlYy5jb21wcmVzc2lvbl9tZXRob2QpOwot KyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAgICBzcHJpbnRmKCAmbWV0aGJ1ZlsgMF0sICIl MDRYIiwgRy5jcmVjLmNvbXByZXNzaW9uX21ldGhvZCk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAK LSAgICAgZm9yIChrID0gMDsgIGsgPCAxNTsgICsraykKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56 aXAvcGF0Y2hlcy9zZXJpZXMgYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvc2VyaWVzCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jZDY3NjI3ZGZjNAotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy9zZXJpZXMKQEAgLTAsMCArMSwyOSBAQAordW56 aXAtNi4wLWJ6aXAyLWNvbmZpZ3VyZS5wYXRjaAordW56aXAtNi4wLWV4ZWMtc2hpZWxkLnBhdGNo Cit1bnppcC02LjAtY2xvc2UucGF0Y2gKK3VuemlwLTYuMC1hdHRyaWJzLW92ZXJmbG93LnBhdGNo Cit1bnppcC02LjAtY29uZmlndXJlLnBhdGNoCit1bnppcC02LjAtbWFucGFnZS1maXgucGF0Y2gK K3VuemlwLTYuMC1maXgtcmVjbWF0Y2gucGF0Y2gKK3VuemlwLTYuMC1zeW1saW5rLnBhdGNoCit1 bnppcC02LjAtY2FzZWluc2Vuc2l0aXZlLnBhdGNoCit1bnppcC02LjAtZm9ybWF0LXNlY3VyZS5w YXRjaAordW56aXAtNi4wLXZhbGdyaW5kLnBhdGNoCit1bnppcC02LjAteC1vcHRpb24ucGF0Y2gK K3VuemlwLTYuMC1vdmVyZmxvdy5wYXRjaAordW56aXAtNi4wLWN2ZS0yMDE0LTgxMzkucGF0Y2gK K3VuemlwLTYuMC1jdmUtMjAxNC04MTQwLnBhdGNoCit1bnppcC02LjAtY3ZlLTIwMTQtODE0MS5w YXRjaAordW56aXAtNi4wLW92ZXJmbG93LWxvbmctZnNpemUucGF0Y2gKK3VuemlwLTYuMC1oZWFw LW92ZXJmbG93LWluZmxvb3AucGF0Y2gKK3VuemlwLTYuMC1hbHQtaWNvbnYtdXRmOC5wYXRjaAor dW56aXAtNi4wLWFsdC1pY29udi11dGY4LXByaW50LnBhdGNoCiswMDAxLUZpeC1DVkUtMjAxNi05 ODQ0LXJoYnotMTQwNDI4My5wYXRjaAordW56aXAtNi4wLXRpbWVzdGFtcC5wYXRjaAordW56aXAt Ni4wLWN2ZS0yMDE4LTEwMDAwMzUtaGVhcC1iYXNlZC1vdmVyZmxvdy5wYXRjaAordW56aXAtNi4w LWN2ZS0yMDE4LTE4Mzg0LnBhdGNoCit1bnppcC02LjAtQ09WU0NBTi1maXgtdW50ZXJtaW5hdGVk LXN0cmluZy5wYXRjaAordW56aXAtemlwYm9tYi1wYXJ0MS5wYXRjaAordW56aXAtemlwYm9tYi1w YXJ0Mi5wYXRjaAordW56aXAtemlwYm9tYi1wYXJ0My5wYXRjaAordW56aXAtemlwYm9tYi1tYW5w YWdlLnBhdGNoCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLUNP VlNDQU4tZml4LXVudGVybWluYXRlZC1zdHJpbmcucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3BhdGNo ZXMvdW56aXAtNi4wLUNPVlNDQU4tZml4LXVudGVybWluYXRlZC1zdHJpbmcucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcxNzM3NzExOWIxCi0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1DT1ZTQ0FOLWZpeC11bnRl cm1pbmF0ZWQtc3RyaW5nLnBhdGNoCkBAIC0wLDAgKzEsMTMxIEBACitGcm9tIDA2ZDFiMDhhZWY5 NDk4NDI1NmNhZDNjNWE1NGNlZGIxMDI5NTY4MWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBKYWt1YiBNYXJ0aXNrbyA8amFtYXJ0aXNAcmVkaGF0LmNvbT4KK0RhdGU6IFRodSwgOCBO b3YgMjAxOCAwOTozMToxOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBQb3NzaWJsZSB1bnRlcm1p bmF0ZWQgc3RyaW5nIGZpeAorCistLS0KKyB1bml4L3VuaXguYyAgIHwgIDQgKysrLQorIHVuaXgv dW54Y2ZnLmggfCAgMiArLQorIHVuemlwLmMgICAgICAgfCAxMiArKysrKysrKy0tLS0KKyB6aXBp bmZvLmMgICAgIHwgMTIgKysrKysrKystLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRp b25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3VuaXgvdW5peC5jIGIvdW5p eC91bml4LmMKK2luZGV4IDU5YjYyMmQuLmNkNTdmODAgMTAwNjQ0CistLS0gYS91bml4L3VuaXgu YworKysrIGIvdW5peC91bml4LmMKK0BAIC0xOTQ1LDcgKzE5NDUsOSBAQCB2b2lkIGluaXRfY29u dmVyc2lvbl9jaGFyc2V0cygpCisgICAgIAlmb3IoaSA9IDA7IGkgPCBzaXplb2YoZG9zX2NoYXJz ZXRfbWFwKS9zaXplb2YoQ0hBUlNFVF9NQVApOyBpKyspCisgICAgIAkJaWYoIXN0cmNhc2VjbXAo bG9jYWxfY2hhcnNldCwgZG9zX2NoYXJzZXRfbWFwW2ldLmxvY2FsX2NoYXJzZXQpKSB7CisgICAg IAkJCXN0cm5jcHkoT0VNX0NQLCBkb3NfY2hhcnNldF9tYXBbaV0uYXJjaGl2ZV9jaGFyc2V0LAor LSAgICAJCQkJCXNpemVvZihPRU1fQ1ApKTsKKysgICAgCQkJCQlNQVhfQ1BfTkFNRSAtIDEpOwor KworKwkJCU9FTV9DUFtNQVhfQ1BfTkFNRSAtIDFdID0gJ1wwJzsKKyAgICAgCQkJYnJlYWs7Cisg ICAgIAkJfQorICAgICB9CitkaWZmIC0tZ2l0IGEvdW5peC91bnhjZmcuaCBiL3VuaXgvdW54Y2Zn LmgKK2luZGV4IDg3MjlkZTIuLjllZThjZmUgMTAwNjQ0CistLS0gYS91bml4L3VueGNmZy5oCisr KysgYi91bml4L3VueGNmZy5oCitAQCAtMjI4LDcgKzIyOCw3IEBAIHR5cGVkZWYgc3RydWN0IHN0 YXQgel9zdGF0OworIC8qICAgIGFuZCBub3RmaXJzdGNhbGwgYXJlIHVzZWQgYnkgZG9fd2lsZCgp LiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAKKyAKKy0jZGVmaW5lIE1BWF9DUF9OQU1F IDI1IAorKyNkZWZpbmUgTUFYX0NQX05BTUUgMjUgKyAxIAorICAgIAorICNpZmRlZiBTRVRMT0NB TEUKKyAjICB1bmRlZiBTRVRMT0NBTEUKK2RpZmYgLS1naXQgYS91bnppcC5jIGIvdW56aXAuYwor aW5kZXggMmQ5NGEzOC4uYTQ4NWYyYiAxMDA2NDQKKy0tLSBhL3VuemlwLmMKKysrKyBiL3Vuemlw LmMKK0BAIC0xNTYxLDcgKzE1NjEsOCBAQCBpbnQgdXpfb3B0cyhfX0dfXyBwYXJnYywgcGFyZ3Yp CisgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVy IGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50IikpOworICAgICAJICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgIAkJCQkJCX0KKy0gICAg CQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVvZihJU09fQ1ApKTsKKysgICAgCQkJCQkJc3Ry bmNweShJU09fQ1AsIHMsIE1BWF9DUF9OQU1FIC0gMSk7CisrICAgICAgICAgICAgICAgIElTT19D UFtNQVhfQ1BfTkFNRSAtIDFdID0gJ1wwJzsKKyAgICAgCQkJCQl9IGVsc2UgeyAvKiAtSSBjaGFy c2V0ICovCisgICAgIAkJCQkJCSsrYXJndjsKKyAgICAgCQkJCQkJaWYoISgtLWFyZ2MgPiAwICYm ICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ICE9ICctJykpIHsKK0BAIC0xNTcwLDcgKzE1NzEsOCBA QCBpbnQgdXpfb3B0cyhfX0dfXyBwYXJnYywgcGFyZ3YpCisgICAgIAkgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKyAgICAgCQkJCQkJfQorICAgICAJCQkJCQlzID0g KmFyZ3Y7CistICAgIAkJCQkJCXN0cm5jcHkoSVNPX0NQLCBzLCBzaXplb2YoSVNPX0NQKSk7Cisr ICAgIAkJCQkJCXN0cm5jcHkoSVNPX0NQLCBzLCBNQVhfQ1BfTkFNRSAtIDEpOworKyAgICAgICAg ICAgICAgICBJU09fQ1BbTUFYX0NQX05BTUUgLSAxXSA9ICdcMCc7CisgICAgIAkJCQkJfQorICAg ICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBzdHJhaWdodCBhZnRlciBjaGFyc2V0 IG5hbWUgKi8KKyAgICAgCQkJCX0KK0BAIC0xNjY1LDcgKzE2NjcsOCBAQCBpbnQgdXpfb3B0cyhf X0dfXyBwYXJnYywgcGFyZ3YpCisgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjog IGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3VtZW50 IikpOworICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisg ICAgIAkJCQkJCX0KKy0gICAgCQkJCQkJc3RybmNweShPRU1fQ1AsIHMsIHNpemVvZihPRU1fQ1Ap KTsKKysgICAgCQkJCQkJc3RybmNweShPRU1fQ1AsIHMsIE1BWF9DUF9OQU1FIC0gMSk7CisrICAg ICAgICAgICAgICAgIE9FTV9DUFtNQVhfQ1BfTkFNRSAtIDFdID0gJ1wwJzsKKyAgICAgCQkJCQl9 IGVsc2UgeyAvKiAtTyBjaGFyc2V0ICovCisgICAgIAkJCQkJCSsrYXJndjsKKyAgICAgCQkJCQkJ aWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ICE9ICctJykpIHsKK0BA IC0xNjc0LDcgKzE2NzcsOCBAQCBpbnQgdXpfb3B0cyhfX0dfXyBwYXJnYywgcGFyZ3YpCisgICAg IAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKyAgICAgCQkJCQkJ fQorICAgICAJCQkJCQlzID0gKmFyZ3Y7CistICAgIAkJCQkJCXN0cm5jcHkoT0VNX0NQLCBzLCBz aXplb2YoT0VNX0NQKSk7CisrICAgIAkJCQkJCXN0cm5jcHkoT0VNX0NQLCBzLCBNQVhfQ1BfTkFN RSAtIDEpOworKyAgICAgICAgICAgICAgICBPRU1fQ1BbTUFYX0NQX05BTUUgLSAxXSA9ICdcMCc7 CisgICAgIAkJCQkJfQorICAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8qIE5vIHBhcmFtcyBzdHJh aWdodCBhZnRlciBjaGFyc2V0IG5hbWUgKi8KKyAgICAgCQkJCX0KK2RpZmYgLS1naXQgYS96aXBp bmZvLmMgYi96aXBpbmZvLmMKK2luZGV4IGFjY2NhMmEuLmNiN2UwOGQgMTAwNjQ0CistLS0gYS96 aXBpbmZvLmMKKysrKyBiL3ppcGluZm8uYworQEAgLTUxOSw3ICs1MTksOCBAQCBpbnQgemlfb3B0 cyhfX0dfXyBwYXJnYywgcGFyZ3YpCisgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICJlcnJv cjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBmb2xsb3cgdGhlIC1JIGFyZ3Vt ZW50IikpOworICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsg CisgICAgIAkJCQkJCX0KKy0gICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVvZihJU09f Q1ApKTsKKysgICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIE1BWF9DUF9OQU1FIC0gMSk7Cisr ICAgICAgICAgICAgICAgIElTT19DUFtNQVhfQ1BfTkFNRSAtIDFdID0gJ1wwJzsKKyAgICAgCQkJ CQl9IGVsc2UgeyAvKiAtSSBjaGFyc2V0ICovCisgICAgIAkJCQkJCSsrYXJndjsKKyAgICAgCQkJ CQkJaWYoISgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ICE9ICctJykpIHsK K0BAIC01MjgsNyArNTI5LDggQEAgaW50IHppX29wdHMoX19HX18gcGFyZ2MsIHBhcmd2KQorICAg ICAJICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisgICAgIAkJCQkJ CX0KKyAgICAgCQkJCQkJcyA9ICphcmd2OworLSAgICAJCQkJCQlzdHJuY3B5KElTT19DUCwgcywg c2l6ZW9mKElTT19DUCkpOworKyAgICAJCQkJCQlzdHJuY3B5KElTT19DUCwgcywgTUFYX0NQX05B TUUgLSAxKTsKKysgICAgICAgICAgICAgICAgSVNPX0NQW01BWF9DUF9OQU1FIC0gMV0gPSAnXDAn OworICAgICAJCQkJCX0KKyAgICAgCQkJCQl3aGlsZSgqKCsrcykpOyAvKiBObyBwYXJhbXMgc3Ry YWlnaHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisgICAgIAkJCQl9CitAQCAtNTY4LDcgKzU3MCw4 IEBAIGludCB6aV9vcHRzKF9fR19fIHBhcmdjLCBwYXJndikKKyAgICAgICAgIAkJICAgICAgICAg ICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxv dyB0aGUgLUkgYXJndW1lbnQiKSk7CisgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1 cm4oUEtfUEFSQU0pOyAKKyAgICAgCQkJCQkJfQorLSAgICAJCQkJCQlzdHJuY3B5KE9FTV9DUCwg cywgc2l6ZW9mKE9FTV9DUCkpOworKyAgICAJCQkJCQlzdHJuY3B5KE9FTV9DUCwgcywgTUFYX0NQ X05BTUUgLSAxKTsKKysgICAgICAgICAgICAgICAgT0VNX0NQW01BWF9DUF9OQU1FIC0gMV0gPSAn XDAnOworICAgICAJCQkJCX0gZWxzZSB7IC8qIC1PIGNoYXJzZXQgKi8KKyAgICAgCQkJCQkJKyth cmd2OworICAgICAJCQkJCQlpZighKC0tYXJnYyA+IDAgJiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFy Z3YgIT0gJy0nKSkgeworQEAgLTU3Nyw3ICs1ODAsOCBAQCBpbnQgemlfb3B0cyhfX0dfXyBwYXJn YywgcGFyZ3YpCisgICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0p OyAKKyAgICAgCQkJCQkJfQorICAgICAJCQkJCQlzID0gKmFyZ3Y7CistICAgIAkJCQkJCXN0cm5j cHkoT0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisrICAgIAkJCQkJCXN0cm5jcHkoT0VNX0NQ LCBzLCBNQVhfQ1BfTkFNRSAtIDEpOworKyAgICAgICAgICAgICAgICBPRU1fQ1BbTUFYX0NQX05B TUUgLSAxXSA9ICdcMCc7CisgICAgIAkJCQkJfQorICAgICAJCQkJCXdoaWxlKCooKytzKSk7IC8q IE5vIHBhcmFtcyBzdHJhaWdodCBhZnRlciBjaGFyc2V0IG5hbWUgKi8KKyAgICAgCQkJCX0KKy0t IAorMi4xNC41CisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAt YWx0LWljb252LXV0ZjgtcHJpbnQucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAt Ni4wLWFsdC1pY29udi11dGY4LXByaW50LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4wYjAxNTNiYTU0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvdW56 aXAvcGF0Y2hlcy91bnppcC02LjAtYWx0LWljb252LXV0ZjgtcHJpbnQucGF0Y2gKQEAgLTAsMCAr MSwzODEgQEAKK0Zyb20gY2EwMjEyYmExOWI2NDQ4OGI5ZTg0NTlhNzYyYzExZWNkNmU3ZDBiZCBN b24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldHIgU3RvZHVsa2EgPHBzdG9kdWxrQHJl ZGhhdC5jb20+CitEYXRlOiBUdWUsIDI0IE5vdiAyMDE1IDE3OjU2OjExICswMTAwCitTdWJqZWN0 OiBbUEFUQ0hdIHByaW50IGNvcnJlY3RseSBub24tYXNjaWkgZmlsZW5hbWVzCisKKy0tLQorIGV4 dHJhY3QuYyB8IDI4OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQorIHVuenByaXYuaCB8ICAgNyArKworIDIgZmlsZXMgY2hhbmdl ZCwgMjMzIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0 cmFjdC5jIGIvZXh0cmFjdC5jCitpbmRleCAwZWU0ZTkzLi43NDFiN2UwIDEwMDY0NAorLS0tIGEv ZXh0cmFjdC5jCisrKysgYi9leHRyYWN0LmMKK0BAIC0yNjQ4LDggKzI2NDgsMjEgQEAgc3RhdGlj IHZvaWQgc2V0X2RlZmVycmVkX3N5bWxpbmsoX19HX18gc2xua19lbnRyeSkKKyB9IC8qIGVuZCBm dW5jdGlvbiBzZXRfZGVmZXJyZWRfc3ltbGluaygpICovCisgI2VuZGlmIC8qIFNZTUxJTktTICov CisgCisrLyoKKysgKiBJZiBVbmljb2RlIGlzIHN1cHBvcnRlZCwgYXNzdW1lIHdlIGhhdmUgd2hh dCB3ZSBuZWVkIHRvIGRvIHRoaXMKKysgKiBjaGVjayB1c2luZyB3aWRlIGNoYXJhY3RlcnMsIGF2 b2lkaW5nIE1CQ1MgaXNzdWVzLgorKyAqLworIAorLQorKyNpZm5kZWYgVVpfRk5GSUxURVJfUkVQ TEFDRUNIQVIKKysgICAgICAgIC8qIEEgY29udmVuaWVudCBjaG9pY2UgZm9yIHRoZSByZXBsYWNl bWVudCBvZiB1bnByaW50YWJsZSBjaGFyIGNvZGVzIGlzCisrICAgICAgICAgKiB0aGUgInNpbmds ZSBjaGFyIHdpbGRjYXJkIiwgYXMgdGhpcyBjaGFyYWN0ZXIgaXMgcXVpdGUgdW5saWtlbHkgdG8K KysgICAgICAgICAqIGFwcGVhciBpbiBmaWxlbmFtZXMgYnkgaXRzZWxmLiAgVGhlIGZvbGxvd2lu ZyBkZWZhdWx0IGRlZmluaXRpb24KKysgICAgICAgICAqIHNldHMgdGhlIHJlcGxhY2VtZW50IGNo YXIgdG8gYSBxdWVzdGlvbiBtYXJrIGFzIHRoZSBtb3N0IGNvbW1vbgorKyAgICAgICAgICogInNp bmdsZSBjaGFyIHdpbGRjYXJkIjsgdGhpcyBzZXR0aW5nIHNob3VsZCBiZSBvdmVycmlkZGVuIGlu IHRoZQorKyAgICAgICAgICogYXBwcm9waWF0ZSBzeXN0ZW0tc3BlY2lmaWMgY29uZmlndXJhdGlv biBoZWFkZXIgd2hlbiBuZWVkZWQuCisrICAgICAgICAgKi8KKysjIGRlZmluZSBVWl9GTkZJTFRF Ul9SRVBMQUNFQ0hBUiAgICAgICc/JworKyNlbmRpZgorIAorIC8qKioqKioqKioqKioqKioqKioq KioqKioqLworIC8qICBGdW5jdGlvbiBmbmZpbHRlcigpICAqLyAgICAgICAgLyogaGVyZSBpbnN0 ZWFkIG9mIGluIGxpc3QuYyBmb3IgU0ZYICovCitAQCAtMjY2MSw0OCArMjY3NCwxNjggQEAgY2hh ciAqZm5maWx0ZXIocmF3LCBzcGFjZSwgc2l6ZSkgICAvKiBjb252ZXJ0IG5hbWUgdG8gc2FmZWx5 IHByaW50YWJsZSBmb3JtICovCisgICAgIGV4dGVudCBzaXplOworIHsKKyAjaWZuZGVmIE5BVElW RSAgIC8qIEFTQ0lJOiAgZmlsdGVyIEFOU0kgZXNjYXBlIGNvZGVzLCBldGMuICovCistICAgIFpD T05TVCB1Y2ggKnI9KFpDT05TVCB1Y2ggKilyYXc7CisrICAgIFpDT05TVCB1Y2ggKnI7IC8vID0o WkNPTlNUIHVjaCAqKXJhdzsKKyAgICAgdWNoICpzPXNwYWNlOworICAgICB1Y2ggKnNsaW09TlVM TDsKKyAgICAgdWNoICpzZT1OVUxMOworICAgICBpbnQgaGF2ZV9vdmVyZmxvdyA9IEZBTFNFOwor IAorLSAgICBpZiAoc2l6ZSA+IDApIHsKKy0gICAgICAgIHNsaW0gPSBzcGFjZSArIHNpemUKKy0j aWZkZWYgX01CQ1MKKy0gICAgICAgICAgICAgICAgICAgICAtIChNQl9DVVJfTUFYIC0gMSkKKy0j ZW5kaWYKKy0gICAgICAgICAgICAgICAgICAgICAtIDQ7CisrIyBpZiBkZWZpbmVkKCBVTklDT0RF X1NVUFBPUlQpICYmIGRlZmluZWQoIF9NQkNTKQorKy8qIElmIFVuaWNvZGUgc3VwcG9ydCBpcyBl bmFibGVkLCBhbmQgd2UgaGF2ZSBtdWx0aS1ieXRlIGNoYXJhY3RlcnMsCisrICogdGhlbiBkbyB0 aGUgaXNwcmludCgpIGNoZWNrcyBieSBmaXJzdCBjb252ZXJ0aW5nIHRvIHdpZGUgY2hhcmFjdGVy cworKyAqIGFuZCBjaGVja2luZyB0aG9zZS4gIFRoaXMgYXZvaWRzIG91ciBoYXZpbmcgdG8gcGFy c2UgbXVsdGktYnl0ZQorKyAqIGNoYXJhY3RlcnMgZm9yIG91cnNlbHZlcy4gIEFmdGVyIHRoZSB3 aWRlLWNoYXIgcmVwbGFjZW1lbnRzIGhhdmUgYmVlbgorKyAqIG1hZGUsIHRoZSB3aWRlIHN0cmlu ZyBpcyBjb252ZXJ0ZWQgYmFjayB0byB0aGUgbG9jYWwgY2hhcmFjdGVyIHNldC4KKysgKi8KKysg ICAgd2NoYXJfdCAqd3N0cmluZzsgICAgLyogd2NoYXJfdCB2ZXJzaW9uIG9mIHJhdyAqLworKyAg ICBzaXplX3Qgd3NsZW47ICAgICAgICAvKiBsZW5ndGggb2Ygd3N0cmluZyAqLworKyAgICB3Y2hh cl90ICp3b3N0cmluZzsgICAvKiB3Y2hhcl90IHZlcnNpb24gb2Ygb3V0cHV0IHN0cmluZyAqLwor KyAgICBzaXplX3Qgd29zbGVuOyAgICAgICAvKiBsZW5ndGggb2Ygd29zdHJpbmcgKi8KKysgICAg Y2hhciAqbmV3cmF3OyAgICAgICAgLyogbmV3IHJhdyAqLworKworKyAgICAvKiAyMDEyLTExLTA2 IFNNUy4KKysgICAgICogQ2hhbmdlZCB0byBjaGVjayB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgbWJz dG93Y3MoKSwgYW5kIGJ5cGFzcyB0aGUKKysgICAgICogVW5pY29kZSBwcm9jZXNzaW5nIGlmIGl0 IGZhaWxzLiAgVGhpcyBzZWVtcyB0byBmaXggYSBwcm9ibGVtCisrICAgICAqIHJlcG9ydGVkIGlu IHRoZSBTb3VyY2VGb3JnZSBmb3J1bSwgYnV0IGl0J3Mgbm90IGNsZWFyIHRoYXQgd2UKKysgICAg ICogc2hvdWxkIGJlIGRvaW5nIGFueSBVbmljb2RlIHByb2Nlc3Npbmcgd2l0aG91dCBzb21lIGV2 aWRlbmNlIHRoYXQKKysgICAgICogdGhlIG5hbWUgYWN0dWFsbHkgaXMgVW5pY29kZS4gIChDaGVj ayBiaXQgMTEgaW4gdGhlIGZsYWdzIGJlZm9yZQorKyAgICAgKiBjb21pbmcgaGVyZT8pCisrICAg ICAqIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9pbmZvemlwL2J1Z3MvNDAvCisrICAgICAqLwor KworKyAgICBpZiAoTUJfQ1VSX01BWCA8PSAxKQorKyAgICB7CisrICAgICAgICAvKiBUaGVyZSdz IG5vIHBvaW50IHRvIGNvbnZlcnRpbmcgbXVsdGktYnl0ZSBjaGFycyBpZiB0aGVyZSBhcmUKKysg ICAgICAgICAqIG5vIG11bHRpLWJ5dGUgY2hhcnMuCisrICAgICAgICAgKi8KKysgICAgICAgIHdz bGVuID0gKHNpemVfdCktMTsKKyAgICAgfQorLSAgICB3aGlsZSAoKnIpIHsKKy0gICAgICAgIGlm IChzaXplID4gMCAmJiBzID49IHNsaW0gJiYgc2UgPT0gTlVMTCkgeworLSAgICAgICAgICAgIHNl ID0gczsKKysgICAgZWxzZQorKyAgICB7CisrICAgICAgICAvKiBHZXQgVW5pY29kZSB3aWRlIGNo YXJhY3RlciBjb3VudCAoZm9yIHN0b3JhZ2UgYWxsb2NhdGlvbikuICovCisrICAgICAgICB3c2xl biA9IG1ic3Rvd2NzKCBOVUxMLCByYXcsIDApOworKyAgICB9CisrCisrICAgIGlmICh3c2xlbiAh PSAoc2l6ZV90KS0xKQorKyAgICB7CisrICAgICAgICAvKiBBcHBhcmVudGx5IHZhbGlkIFVuaWNv ZGUuICBBbGxvY2F0ZSB3aWRlLWNoYXIgc3RvcmFnZS4gKi8KKysgICAgICAgIHdzdHJpbmcgPSAo d2NoYXJfdCAqKW1hbGxvYygod3NsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisrICAgICAg ICBpZiAod3N0cmluZyA9PSBOVUxMKSB7CisrICAgICAgICAgICAgc3RyY3B5KCAoY2hhciAqKXNw YWNlLCByYXcpOworKyAgICAgICAgICAgIHJldHVybiAoY2hhciAqKXNwYWNlOworICAgICAgICAg fQorLSNpZmRlZiBRRE9TCistICAgICAgICBpZiAocWxmbGFnICYgMikgeworLSAgICAgICAgICAg IGlmICgqciA9PSAnLycgfHwgKnIgPT0gJy4nKSB7CisrICAgICAgICB3b3N0cmluZyA9ICh3Y2hh cl90ICopbWFsbG9jKDIgKiAod3NsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSk7CisrICAgICAg ICBpZiAod29zdHJpbmcgPT0gTlVMTCkgeworKyAgICAgICAgICAgIGZyZWUod3N0cmluZyk7Cisr ICAgICAgICAgICAgc3RyY3B5KCAoY2hhciAqKXNwYWNlLCByYXcpOworKyAgICAgICAgICAgIHJl dHVybiAoY2hhciAqKXNwYWNlOworKyAgICAgICAgfQorKworKyAgICAgICAgLyogQ29udmVydCB0 aGUgbXVsdGktYnl0ZSBVbmljb2RlIHRvIHdpZGUgY2hhcnMuICovCisrICAgICAgICB3c2xlbiA9 IG1ic3Rvd2NzKHdzdHJpbmcsIHJhdywgd3NsZW4gKyAxKTsKKysKKysgICAgICAgIC8qIEZpbHRl ciB0aGUgd2lkZS1jaGFyYWN0ZXIgc3RyaW5nLiAqLworKyAgICAgICAgZm5maWx0ZXJ3KCB3c3Ry aW5nLCB3b3N0cmluZywgKDIgKiAod3NsZW4gKyAxKSAqIHNpemVvZih3Y2hhcl90KSkpOworKwor KyAgICAgICAgLyogQ29udmVydCBmaWx0ZXJlZCB3aWRlIGNoYXJzIGJhY2sgdG8gbXVsdGktYnl0 ZS4gKi8KKysgICAgICAgIHdvc2xlbiA9IHdjc3RvbWJzKCBOVUxMLCB3b3N0cmluZywgMCk7Cisr ICAgICAgICBpZiAoKG5ld3JhdyA9IG1hbGxvYyh3b3NsZW4gKyAxKSkgPT0gTlVMTCkgeworKyAg ICAgICAgICAgIGZyZWUod3N0cmluZyk7CisrICAgICAgICAgICAgZnJlZSh3b3N0cmluZyk7Cisr ICAgICAgICAgICAgc3RyY3B5KCAoY2hhciAqKXNwYWNlLCByYXcpOworKyAgICAgICAgICAgIHJl dHVybiAoY2hhciAqKXNwYWNlOworKyAgICAgICAgfQorKyAgICAgICAgd29zbGVuID0gd2NzdG9t YnMoIG5ld3Jhdywgd29zdHJpbmcsICh3b3NsZW4gKiBNQl9DVVJfTUFYKSArIDEpOworKworKyAg ICAgICAgaWYgKHNpemUgPiAwKSB7CisrICAgICAgICAgICAgc2xpbSA9IHNwYWNlICsgc2l6ZSAt IDQ7CisrICAgICAgICB9CisrICAgICAgICByID0gKFpDT05TVCB1Y2ggKiluZXdyYXc7CisrICAg ICAgICB3aGlsZSAoKnIpIHsKKysgICAgICAgICAgICBpZiAoc2l6ZSA+IDAgJiYgcyA+PSBzbGlt ICYmIHNlID09IE5VTEwpIHsKKysgICAgICAgICAgICAgICAgc2UgPSBzOworKyAgICAgICAgICAg IH0KKysjICBpZmRlZiBRRE9TCisrICAgICAgICAgICAgaWYgKHFsZmxhZyAmIDIpIHsKKysgICAg ICAgICAgICAgICAgaWYgKCpyID09ICcvJyB8fCAqciA9PSAnLicpIHsKKysgICAgICAgICAgICAg ICAgICAgIGlmIChzZSAhPSBOVUxMICYmIChzID4gKHNwYWNlICsgKHNpemUtMykpKSkgeworKyAg ICAgICAgICAgICAgICAgICAgICAgIGhhdmVfb3ZlcmZsb3cgPSBUUlVFOworKyAgICAgICAgICAg ICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAg ICAgICAgICAgKytyOworKyAgICAgICAgICAgICAgICAgICAgKnMrKyA9ICdfJzsKKysgICAgICAg ICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg fSBlbHNlCisrIyAgZW5kaWYKKysgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgIGlmIChz ZSAhPSBOVUxMICYmIChzID4gKHNwYWNlICsgKHNpemUtMykpKSkgeworICAgICAgICAgICAgICAg ICAgICAgaGF2ZV9vdmVyZmxvdyA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsK KyAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICArK3I7CistICAgICAgICAgICAg ICAgICpzKysgPSAnXyc7CistICAgICAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgICAg ICAgICAqcysrID0gKnIrKzsKKyAgICAgICAgICAgICB9CistICAgICAgICB9IGVsc2UKKysgICAg ICAgIH0KKysgICAgICAgIGlmIChoYXZlX292ZXJmbG93KSB7CisrICAgICAgICAgICAgc3RyY3B5 KChjaGFyICopc2UsICIuLi4iKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgKnMg PSAnXDAnOworKyAgICAgICAgfQorKworKyAgICAgICAgZnJlZSh3c3RyaW5nKTsKKysgICAgICAg IGZyZWUod29zdHJpbmcpOworKyAgICAgICAgZnJlZShuZXdyYXcpOworKyAgICB9CisrICAgIGVs c2UKKysjIGVuZGlmIC8qIGRlZmluZWQoIFVOSUNPREVfU1VQUE9SVCkgJiYgZGVmaW5lZCggX01C Q1MpICovCisrICAgIHsKKysgICAgICAgIC8qIE5vIFVuaWNvZGUgc3VwcG9ydCwgb3IgYXBwYXJl bnRseSBpbnZhbGlkIFVuaWNvZGUuICovCisrICAgICAgICByID0gKFpDT05TVCB1Y2ggKilyYXc7 CisrCisrICAgICAgICBpZiAoc2l6ZSA+IDApIHsKKysgICAgICAgICAgICBzbGltID0gc3BhY2Ug KyBzaXplCisrI2lmZGVmIF9NQkNTCisrICAgICAgICAgICAgICAgICAgICAgICAgIC0gKE1CX0NV Ul9NQVggLSAxKQorKyNlbmRpZgorKyAgICAgICAgICAgICAgICAgICAgICAgICAtIDQ7CisrICAg ICAgICB9CisrICAgICAgICB3aGlsZSAoKnIpIHsKKysgICAgICAgICAgICBpZiAoc2l6ZSA+IDAg JiYgcyA+PSBzbGltICYmIHNlID09IE5VTEwpIHsKKysgICAgICAgICAgICAgICAgc2UgPSBzOwor KyAgICAgICAgICAgIH0KKysjaWZkZWYgUURPUworKyAgICAgICAgICAgIGlmIChxbGZsYWcgJiAy KSB7CisrICAgICAgICAgICAgICAgIGlmICgqciA9PSAnLycgfHwgKnIgPT0gJy4nKSB7CisrICAg ICAgICAgICAgICAgICAgICBpZiAoc2UgIT0gTlVMTCAmJiAocyA+IChzcGFjZSArIChzaXplLTMp KSkpIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX292ZXJmbG93ID0gVFJVRTsKKysg ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgICAgIH0KKysg ICAgICAgICAgICAgICAgICAgICsrcjsKKysgICAgICAgICAgICAgICAgICAgICpzKysgPSAnXyc7 CisrICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgIH0gZWxzZQorICNlbmRpZgorICNpZmRlZiBIQVZFX1dPUktJTkdfSVNQUklOVAor LSMgaWZuZGVmIFVaX0ZORklMVEVSX1JFUExBQ0VDSEFSCistICAgIC8qIEEgY29udmVuaWVudCBj aG9pY2UgZm9yIHRoZSByZXBsYWNlbWVudCBvZiB1bnByaW50YWJsZSBjaGFyIGNvZGVzIGlzCist ICAgICAqIHRoZSAic2luZ2xlIGNoYXIgd2lsZGNhcmQiLCBhcyB0aGlzIGNoYXJhY3RlciBpcyBx dWl0ZSB1bmxpa2VseSB0bworLSAgICAgKiBhcHBlYXIgaW4gZmlsZW5hbWVzIGJ5IGl0c2VsZi4g IFRoZSBmb2xsb3dpbmcgZGVmYXVsdCBkZWZpbml0aW9uCistICAgICAqIHNldHMgdGhlIHJlcGxh Y2VtZW50IGNoYXIgdG8gYSBxdWVzdGlvbiBtYXJrIGFzIHRoZSBtb3N0IGNvbW1vbgorLSAgICAg KiAic2luZ2xlIGNoYXIgd2lsZGNhcmQiOyB0aGlzIHNldHRpbmcgc2hvdWxkIGJlIG92ZXJyaWRk ZW4gaW4gdGhlCistICAgICAqIGFwcHJvcGlhdGUgc3lzdGVtLXNwZWNpZmljIGNvbmZpZ3VyYXRp b24gaGVhZGVyIHdoZW4gbmVlZGVkLgorLSAgICAgKi8KKy0jICAgZGVmaW5lIFVaX0ZORklMVEVS X1JFUExBQ0VDSEFSICAgICAgJz8nCistIyBlbmRpZgorLSAgICAgICAgaWYgKCFpc3ByaW50KCpy KSkgeworKyAgICAgICAgICAgIGlmICghaXNwcmludCgqcikpIHsKKysgICAgICAgICAgICAgICAg aWYgKCpyIDwgMzIpIHsKKysgICAgICAgICAgICAgICAgICAgIC8qIEFTQ0lJIGNvbnRyb2wgY29k ZXMgYXJlIGVzY2FwZWQgYXMgIl57bGV0dGVyfSIuICovCisrICAgICAgICAgICAgICAgICAgICBp ZiAoc2UgIT0gTlVMTCAmJiAocyA+IChzcGFjZSArIChzaXplLTQpKSkpIHsKKysgICAgICAgICAg ICAgICAgICAgICAgICBoYXZlX292ZXJmbG93ID0gVFJVRTsKKysgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAg ICpzKysgPSAnXicsICpzKysgPSAodWNoKSg2NCArICpyKyspOworKyAgICAgICAgICAgICAgICB9 IGVsc2UgeworKyAgICAgICAgICAgICAgICAgICAgLyogT3RoZXIgdW5wcmludGFibGUgY29kZXMg YXJlIHJlcGxhY2VkIGJ5IHRoZQorKyAgICAgICAgICAgICAgICAgICAgICogcGxhY2Vob2xkZXIg Y2hhcmFjdGVyLiAqLworKyAgICAgICAgICAgICAgICAgICAgaWYgKHNlICE9IE5VTEwgJiYgKHMg PiAoc3BhY2UgKyAoc2l6ZS0zKSkpKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZV9v dmVyZmxvdyA9IFRSVUU7CisrICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAqcysrID0gVVpfRk5GSUxURVJf UkVQTEFDRUNIQVI7CisrICAgICAgICAgICAgICAgICAgICBJTkNTVFIocik7CisrICAgICAgICAg ICAgICAgIH0KKysjZWxzZSAvKiAhSEFWRV9XT1JLSU5HX0lTUFJJTlQgKi8KKyAgICAgICAgICAg ICBpZiAoKnIgPCAzMikgeworICAgICAgICAgICAgICAgICAvKiBBU0NJSSBjb250cm9sIGNvZGVz IGFyZSBlc2NhcGVkIGFzICJee2xldHRlcn0iLiAqLworICAgICAgICAgICAgICAgICBpZiAoc2Ug IT0gTlVMTCAmJiAocyA+IChzcGFjZSArIChzaXplLTQpKSkpIHsKK0BAIC0yNzEwLDQ3ICsyODQz LDMwIEBAIGNoYXIgKmZuZmlsdGVyKHJhdywgc3BhY2UsIHNpemUpICAgLyogY29udmVydCBuYW1l IHRvIHNhZmVseSBwcmludGFibGUgZm9ybSAqLworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgKnMrKyA9ICdeJywgKnMrKyA9 ICh1Y2gpKDY0ICsgKnIrKyk7CisrI2VuZGlmIC8qID9IQVZFX1dPUktJTkdfSVNQUklOVCAqLwor ICAgICAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgICAgIC8qIE90aGVyIHVucHJpbnRh YmxlIGNvZGVzIGFyZSByZXBsYWNlZCBieSB0aGUKKy0gICAgICAgICAgICAgICAgICogcGxhY2Vo b2xkZXIgY2hhcmFjdGVyLiAqLworKyNpZmRlZiBfTUJDUworKyAgICAgICAgICAgICAgICB1bnNp Z25lZCBpID0gQ0xFTihyKTsKKysgICAgICAgICAgICAgICAgaWYgKHNlICE9IE5VTEwgJiYgKHMg PiAoc3BhY2UgKyAoc2l6ZS1pLTIpKSkpIHsKKysgICAgICAgICAgICAgICAgICAgIGhhdmVfb3Zl cmZsb3cgPSBUUlVFOworKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAg ICAgIH0KKysgICAgICAgICAgICAgICAgZm9yICg7IGkgPiAwOyBpLS0pCisrICAgICAgICAgICAg ICAgICAgICAqcysrID0gKnIrKzsKKysjZWxzZQorICAgICAgICAgICAgICAgICBpZiAoc2UgIT0g TlVMTCAmJiAocyA+IChzcGFjZSArIChzaXplLTMpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAg IGhhdmVfb3ZlcmZsb3cgPSBUUlVFOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg ICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAgICAgKnMrKyA9IFVaX0ZORklMVEVSX1JFUExB Q0VDSEFSOworLSAgICAgICAgICAgICAgICBJTkNTVFIocik7CistICAgICAgICAgICAgfQorLSNl bHNlIC8qICFIQVZFX1dPUktJTkdfSVNQUklOVCAqLworLSAgICAgICAgaWYgKCpyIDwgMzIpIHsK Ky0gICAgICAgICAgICAvKiBBU0NJSSBjb250cm9sIGNvZGVzIGFyZSBlc2NhcGVkIGFzICJee2xl dHRlcn0iLiAqLworLSAgICAgICAgICAgIGlmIChzZSAhPSBOVUxMICYmIChzID4gKHNwYWNlICsg KHNpemUtNCkpKSkgeworLSAgICAgICAgICAgICAgICBoYXZlX292ZXJmbG93ID0gVFJVRTsKKy0g ICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgICpzKysg PSAnXicsICpzKysgPSAodWNoKSg2NCArICpyKyspOworLSNlbmRpZiAvKiA/SEFWRV9XT1JLSU5H X0lTUFJJTlQgKi8KKy0gICAgICAgIH0gZWxzZSB7CistI2lmZGVmIF9NQkNTCistICAgICAgICAg ICAgdW5zaWduZWQgaSA9IENMRU4ocik7CistICAgICAgICAgICAgaWYgKHNlICE9IE5VTEwgJiYg KHMgPiAoc3BhY2UgKyAoc2l6ZS1pLTIpKSkpIHsKKy0gICAgICAgICAgICAgICAgaGF2ZV9vdmVy ZmxvdyA9IFRSVUU7CistICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIH0KKy0g ICAgICAgICAgICBmb3IgKDsgaSA+IDA7IGktLSkKKyAgICAgICAgICAgICAgICAgKnMrKyA9ICpy Kys7CistI2Vsc2UKKy0gICAgICAgICAgICBpZiAoc2UgIT0gTlVMTCAmJiAocyA+IChzcGFjZSAr IChzaXplLTMpKSkpIHsKKy0gICAgICAgICAgICAgICAgaGF2ZV9vdmVyZmxvdyA9IFRSVUU7Cist ICAgICAgICAgICAgICAgIGJyZWFrOworLSAgICAgICAgICAgIH0KKy0gICAgICAgICAgICAqcysr ID0gKnIrKzsKKyAjZW5kaWYKKy0gICAgICAgICB9CistICAgIH0KKy0gICAgaWYgKGhhdmVfb3Zl cmZsb3cpIHsKKy0gICAgICAgIHN0cmNweSgoY2hhciAqKXNlLCAiLi4uIik7CistICAgIH0gZWxz ZSB7CistICAgICAgICAqcyA9ICdcMCc7CisrICAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysg ICAgICAgIGlmIChoYXZlX292ZXJmbG93KSB7CisrICAgICAgICAgICAgc3RyY3B5KChjaGFyICop c2UsICIuLi4iKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgKnMgPSAnXDAnOwor KyAgICAgICAgfQorICAgICB9CisgCisgI2lmZGVmIFdJTkRMTAorQEAgLTI3NzIsNiArMjg4OCw1 MyBAQCBjaGFyICpmbmZpbHRlcihyYXcsIHNwYWNlLCBzaXplKSAgIC8qIGNvbnZlcnQgbmFtZSB0 byBzYWZlbHkgcHJpbnRhYmxlIGZvcm0gKi8KKyB9IC8qIGVuZCBmdW5jdGlvbiBmbmZpbHRlcigp ICovCisgCisgCisrI2lmIGRlZmluZWQoIFVOSUNPREVfU1VQUE9SVCkgJiYgZGVmaW5lZCggX01C Q1MpCisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrLyogIEZ1bmN0aW9uIGZu ZmlsdGVyW3ddKCkgICovICAvKiAoSGVyZSBpbnN0ZWFkIG9mIGluIGxpc3QuYyBmb3IgU0ZYLikg Ki8KKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysvKiBmbmZpbHRlcncoKSAt IENvbnZlcnQgd2lkZSBuYW1lIHRvIHNhZmVseSBwcmludGFibGUgZm9ybS4gKi8KKysKKysvKiBm bmZpbHRlcncoKSAtIENvbnZlcnQgd2lkZS1jaGFyYWN0ZXIgbmFtZSB0byBzYWZlbHkgcHJpbnRh YmxlIGZvcm0uICovCisrCisrd2NoYXJfdCAqZm5maWx0ZXJ3KCBzcmMsIGRzdCwgc2l6KQorKyAg ICBaQ09OU1Qgd2NoYXJfdCAqc3JjOyAgICAgICAgLyogUG9pbnRlciB0byBzb3VyY2UgY2hhciAo c3RyaW5nKS4gKi8KKysgICAgd2NoYXJfdCAqZHN0OyAgICAgICAgICAgICAgIC8qIFBvaW50ZXIg dG8gZGVzdGluYXRpb24gY2hhciAoc3RyaW5nKS4gKi8KKysgICAgZXh0ZW50IHNpejsgICAgICAg ICAgICAgICAgIC8qIE5vdCB1c2VkICghKS4gKi8KKyt7CisrICAgIHdjaGFyX3QgKmRzeCA9IGRz dDsKKysKKysgICAgLyogRmlsdGVyIHRoZSB3aWRlIGNoYXJzLiAqLworKyAgICB3aGlsZSAoKnNy YykKKysgICAgeworKyAgICAgICAgaWYgKGlzd3ByaW50KCAqc3JjKSkKKysgICAgICAgIHsKKysg ICAgICAgICAgICAvKiBQcmludGFibGUgY29kZS4gIENvcHkgaXQuICovCisrICAgICAgICAgICAg KmRzdCsrID0gKnNyYzsKKysgICAgICAgIH0KKysgICAgICAgIGVsc2UKKysgICAgICAgIHsKKysg ICAgICAgICAgICAvKiBVbnByaW50YWJsZSBjb2RlLiAgU3Vic3RpdHV0ZSBzb21ldGhpbmcgcHJp bnRhYmxlIGZvciBpdC4gKi8KKysgICAgICAgICAgICBpZiAoKnNyYyA8IDMyKQorKyAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgICAgLyogUmVwbGFjZSBBU0NJSSBjb250cm9sIGNvZGUgd2l0 aCAiXntsZXR0ZXJ9Ii4gKi8KKysgICAgICAgICAgICAgICAgKmRzdCsrID0gKHdjaGFyX3QpJ14n OworKyAgICAgICAgICAgICAgICAqZHN0KysgPSAod2NoYXJfdCkoNjQgKyAqc3JjKTsKKysgICAg ICAgICAgICB9CisrICAgICAgICAgICAgZWxzZQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAg ICAgICAgLyogUmVwbGFjZSBvdGhlciB1bnByaW50YWJsZSBjb2RlIHdpdGggdGhlIHBsYWNlaG9s ZGVyLiAqLworKyAgICAgICAgICAgICAgICAqZHN0KysgPSAod2NoYXJfdClVWl9GTkZJTFRFUl9S RVBMQUNFQ0hBUjsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgICAgICBzcmMrKzsK KysgICAgfQorKyAgICAqZHN0ID0gKHdjaGFyX3QpMDsgIC8qIE5VTC10ZXJtaW5hdGUgdGhlIGRl c3RpbmF0aW9uIHN0cmluZy4gKi8KKysgICAgcmV0dXJuIGRzeDsKKyt9IC8qIGZuZmlsdGVydygp LiAqLworKworKyNlbmRpZiAvKiBkZWZpbmVkKCBVTklDT0RFX1NVUFBPUlQpICYmIGRlZmluZWQo IF9NQkNTKSAqLworIAorIAorICNpZmRlZiBTRVRfRElSX0FUVFJJQgorZGlmZiAtLWdpdCBhL3Vu enByaXYuaCBiL3VuenByaXYuaAoraW5kZXggMjJkMzkyMy4uZTQ4YTY1MiAxMDA2NDQKKy0tLSBh L3VuenByaXYuaAorKysrIGIvdW56cHJpdi5oCitAQCAtMTIxMiw2ICsxMjEyLDcgQEAKKyAjIGlm ZGVmIFVOSUNPREVfV0NIQVIKKyAjICBpZiAhKGRlZmluZWQoX1dJTjMyX1dDRSkgfHwgZGVmaW5l ZChQT0NLRVRfVU5aSVApKQorICMgICBpbmNsdWRlIDx3Y2hhci5oPgorKyMgICBpbmNsdWRlIDx3 Y3R5cGUuaD4KKyAjICBlbmRpZgorICMgZW5kaWYKKyAjIGlmbmRlZiBfTUJDUyAgLyogbm8gbmVl ZCB0byBpbmNsdWRlIDxsb2NhbGUuaD4gdHdpY2UsIHNlZSBiZWxvdyAqLworQEAgLTI0MTAsNiAr MjQxMSwxMiBAQCBpbnQgICAgbWVtZmx1c2ggICAgICAgICAgICAgICAgICBPRigoX19HUFJPX18g WkNPTlNUIHVjaCAqcmF3YnVmLCB1bGcgc2l6ZSkpOworIGNoYXIgICpmbmZpbHRlciAgICAgICAg ICAgICAgICAgIE9GKChaQ09OU1QgY2hhciAqcmF3LCB1Y2ggKnNwYWNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnQgc2l6ZSkpOworIAorKyMgaWYgZGVmaW5l ZCggVU5JQ09ERV9TVVBQT1JUKSAmJiBkZWZpbmVkKCBfTUJDUykKKyt3Y2hhcl90ICpmbmZpbHRl cncgICAgICAgICAgICAgICBPRigoWkNPTlNUIHdjaGFyX3QgKnNyYywgd2NoYXJfdCAqZHN0LAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnQgc2l6KSk7CisrI2Vu ZGlmCisrCisrCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgRGVjb21wcmVzc2lvbiBmdW5j dGlvbnM6CisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLS0gCisyLjQuMworCmRpZmYgLS1naXQg YS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWFsdC1pY29udi11dGY4LnBhdGNoIGIv c3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1hbHQtaWNvbnYtdXRmOC5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjllMzc3NzRlMjIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWFsdC1pY29udi11dGY4 LnBhdGNoCkBAIC0wLDAgKzEsMzk4IEBACitGcm9tOiBHaW92YW5uaSBTY2Fmb3JhIDxnaW92YW5u aS5hcmNobGludXgub3JnPgorU3ViamVjdDogdW56aXAgZmlsZXMgZW5jb2RlZCB3aXRoIG5vbi1s YXRpbiwgbm9uLXVuaWNvZGUgZmlsZSBuYW1lcworTGFzdC1VcGRhdGU6IDIwMTUtMDItMTEKKwor VXBkYXRlZCAyMDE1LTAyLTExIGJ5IE1hcmMgRGVzbGF1cmllcnMgPG1hcmMuZGVzbGF1cmllcnNA Y2Fub25pY2FsLmNvbT4KK3RvIGZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gY2hhcnNldF90b19pbnRl cm4oKQorCitJbmRleDogdW56aXAtNi4wL3VuaXgvdW5peC5jCis9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdW56 aXAtNi4wLm9yaWcvdW5peC91bml4LmMJMjAxNS0wMi0xMSAwODo0Njo0My42NzUzMjQyOTAgLTA1 MDAKKysrKyB1bnppcC02LjAvdW5peC91bml4LmMJMjAxNS0wMi0xMSAwOToxODowNC45MDIwODEz MTkgLTA1MDAKK0BAIC0zMCw2ICszMCw5IEBACisgI2RlZmluZSBVTlpJUF9JTlRFUk5BTAorICNp bmNsdWRlICJ1bnppcC5oIgorIAorKyNpbmNsdWRlIDxpY29udi5oPgorKyNpbmNsdWRlIDxsYW5n aW5mby5oPgorKworICNpZmRlZiBTQ09fWEVOSVgKKyAjICBkZWZpbmUgU1lTTkRJUgorICNlbHNl ICAvKiBTQ08gVW5peCwgQUlYLCBETklYLCBUSSBTeXNWLCBDb2hlcmVudCA0LngsIC4uLiAqLwor QEAgLTE4NzQsMyArMTg3NywxMDIgQEAKKyAgICAgfQorIH0KKyAjZW5kaWYgLyogUUxaSVAgKi8K KysKKysKKyt0eXBlZGVmIHN0cnVjdCB7CisrICAgIGNoYXIgKmxvY2FsX2NoYXJzZXQ7CisrICAg IGNoYXIgKmFyY2hpdmVfY2hhcnNldDsKKyt9IENIQVJTRVRfTUFQOworKworKy8qIEEgbWFwcGlu ZyBvZiBsb2NhbCA8LT4gYXJjaGl2ZSBjaGFyc2V0cyB1c2VkIGJ5IGRlZmF1bHQgdG8gY29udmVy dCBmaWxlbmFtZXMKKysgKiBvZiBET1MvV2luZG93cyBaaXAgYXJjaGl2ZXMuIEN1cnJlbnRseSB2 ZXJ5IGJhc2ljLiAqLworK3N0YXRpYyBDSEFSU0VUX01BUCBkb3NfY2hhcnNldF9tYXBbXSA9IHsK KysgICAgeyAiQU5TSV9YMy40LTE5NjgiLCAiQ1A4NTAiIH0sCisrICAgIHsgIklTTy04ODU5LTEi LCAiQ1A4NTAiIH0sCisrICAgIHsgIkNQMTI1MiIsICJDUDg1MCIgfSwKKysgICAgeyAiVVRGLTgi LCAiQ1A4NjYiIH0sCisrICAgIHsgIktPSTgtUiIsICJDUDg2NiIgfSwKKysgICAgeyAiS09JOC1V IiwgIkNQODY2IiB9LAorKyAgICB7ICJJU08tODg1OS01IiwgIkNQODY2IiB9CisrfTsKKysKKytj aGFyIE9FTV9DUFtNQVhfQ1BfTkFNRV0gPSAiIjsKKytjaGFyIElTT19DUFtNQVhfQ1BfTkFNRV0g PSAiIjsKKysKKysvKiBUcnkgdG8gZ3Vlc3MgdGhlIGRlZmF1bHQgdmFsdWUgb2YgT0VNX0NQIGJh c2VkIG9uIHRoZSBjdXJyZW50IGxvY2FsZS4KKysgKiBJU09fQ1AgaXMgbGVmdCBhbG9uZSBmb3Ig bm93LiAqLworK3ZvaWQgaW5pdF9jb252ZXJzaW9uX2NoYXJzZXRzKCkKKyt7CisrICAgIGNvbnN0 IGNoYXIgKmxvY2FsX2NoYXJzZXQ7CisrICAgIGludCBpOworKworKyAgICAvKiBNYWtlIGEgZ3Vl c3Mgb25seSBpZiBPRU1fQ1Agbm90IGFscmVhZHkgc2V0LiAqLyAKKysgICAgaWYoKk9FTV9DUCA9 PSAnXDAnKSB7CisrICAgIAlsb2NhbF9jaGFyc2V0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7Cisr ICAgIAlmb3IoaSA9IDA7IGkgPCBzaXplb2YoZG9zX2NoYXJzZXRfbWFwKS9zaXplb2YoQ0hBUlNF VF9NQVApOyBpKyspCisrICAgIAkJaWYoIXN0cmNhc2VjbXAobG9jYWxfY2hhcnNldCwgZG9zX2No YXJzZXRfbWFwW2ldLmxvY2FsX2NoYXJzZXQpKSB7CisrICAgIAkJCXN0cm5jcHkoT0VNX0NQLCBk b3NfY2hhcnNldF9tYXBbaV0uYXJjaGl2ZV9jaGFyc2V0LAorKyAgICAJCQkJCXNpemVvZihPRU1f Q1ApKTsKKysgICAgCQkJYnJlYWs7CisrICAgIAkJfQorKyAgICB9CisrfQorKworKy8qIENvbnZl cnQgYSBzdHJpbmcgZnJvbSBvbmUgZW5jb2RpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIHVzaW5n IGljb252KCkuCisrICogQmUgYXMgbm9uLWludHJ1c2l2ZSBhcyBwb3NzaWJsZS4gSWYgZXJyb3Ig aXMgZW5jb3VudGVyZWQgZHVyaW5nIGNvdmVydGlvbgorKyAqIGp1c3QgbGVhdmUgdGhlIHN0cmlu ZyBpbnRhY3QuICovCisrc3RhdGljIHZvaWQgY2hhcnNldF90b19pbnRlcm4oY2hhciAqc3RyaW5n LCBjaGFyICpmcm9tX2NoYXJzZXQpCisreworKyAgICBpY29udl90IGNkOworKyAgICBjaGFyICpz LCpkLCAqYnVmOworKyAgICBzaXplX3Qgc2xlbiwgZGxlbiwgYnVmbGVuOworKyAgICBjb25zdCBj aGFyICpsb2NhbF9jaGFyc2V0OworKworKyAgICBpZigqZnJvbV9jaGFyc2V0ID09ICdcMCcpCisr ICAgIAlyZXR1cm47CisrCisrICAgIGJ1ZiA9IE5VTEw7CisrICAgIGxvY2FsX2NoYXJzZXQgPSBu bF9sYW5naW5mbyhDT0RFU0VUKTsKKysKKysgICAgaWYoKGNkID0gaWNvbnZfb3Blbihsb2NhbF9j aGFyc2V0LCBmcm9tX2NoYXJzZXQpKSA9PSAoaWNvbnZfdCktMSkKKysgICAgICAgIHJldHVybjsK KysKKysgICAgc2xlbiA9IHN0cmxlbihzdHJpbmcpOworKyAgICBzID0gc3RyaW5nOworKworKyAg ICAvKiAgTWFrZSBzdXJlIE9VVEJVRlNJWiArIDEgbmV2ZXIgZW5kcyB1cCBzbWFsbGVyIHRoYW4g RklMTkFNU0laCisrICAgICAqICBhcyB0aGlzIGZ1bmN0aW9uIGFsc28gZ2V0cyBjYWxsZWQgd2l0 aCBHLm91dGJ1ZiBpbiBmaWxlaW8uYworKyAgICAgKi8KKysgICAgYnVmbGVuID0gRklMTkFNU0la OworKyAgICBpZiAoT1VUQlVGU0laICsgMSA8IEZJTE5BTVNJWikKKysgICAgeworKyAgICAgICAg YnVmbGVuID0gT1VUQlVGU0laICsgMTsKKysgICAgfQorKworKyAgICBkID0gYnVmID0gbWFsbG9j KGJ1Zmxlbik7CisrICAgIGlmKCFkKQorKyAgICAJZ290byBjbGVhbnVwOworKworKyAgICBiemVy byhidWYsYnVmbGVuKTsKKysgICAgZGxlbiA9IGJ1ZmxlbiAtIDE7CisrCisrICAgIGlmKGljb252 KGNkLCAmcywgJnNsZW4sICZkLCAmZGxlbikgPT0gKHNpemVfdCktMSkKKysgICAgCWdvdG8gY2xl YW51cDsKKysgICAgc3RybmNweShzdHJpbmcsIGJ1ZiwgYnVmbGVuKTsKKysKKysgICAgY2xlYW51 cDoKKysgICAgZnJlZShidWYpOworKyAgICBpY29udl9jbG9zZShjZCk7CisrfQorKworKy8qIENv bnZlcnQgYSBzdHJpbmcgZnJvbSBPRU1fQ1AgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGNoYXJzZXQu ICovCisraW5saW5lIHZvaWQgb2VtX2ludGVybihjaGFyICpzdHJpbmcpCisreworKyAgICBjaGFy c2V0X3RvX2ludGVybihzdHJpbmcsIE9FTV9DUCk7CisrfQorKworKy8qIENvbnZlcnQgYSBzdHJp bmcgZnJvbSBJU09fQ1AgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGNoYXJzZXQuICovCisraW5saW5l IHZvaWQgaXNvX2ludGVybihjaGFyICpzdHJpbmcpCisreworKyAgICBjaGFyc2V0X3RvX2ludGVy bihzdHJpbmcsIElTT19DUCk7CisrfQorSW5kZXg6IHVuemlwLTYuMC91bml4L3VueGNmZy5oCis9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLS0gdW56aXAtNi4wLm9yaWcvdW5peC91bnhjZmcuaAkyMDE1LTAyLTExIDA4 OjQ2OjQzLjY3NTMyNDI5MCAtMDUwMAorKysrIHVuemlwLTYuMC91bml4L3VueGNmZy5oCTIwMTUt MDItMTEgMDg6NDY6NDMuNjcxMzI0MjYwIC0wNTAwCitAQCAtMjI4LDQgKzIyOCwzMCBAQAorIC8q IHdpbGRfZGlyLCBkaXJuYW1lLCB3aWxkbmFtZSwgbWF0Y2huYW1lW10sIGRpcm5hbWVsZW4sIGhh dmVfZGlybmFtZSwgKi8KKyAvKiAgICBhbmQgbm90Zmlyc3RjYWxsIGFyZSB1c2VkIGJ5IGRvX3dp bGQoKS4gICAgICAgICAgICAgICAgICAgICAgICAgICovCisgCisrCisrI2RlZmluZSBNQVhfQ1Bf TkFNRSAyNSAKKysgICAKKysjaWZkZWYgU0VUTE9DQUxFCisrIyAgdW5kZWYgU0VUTE9DQUxFCisr I2VuZGlmCisrI2RlZmluZSBTRVRMT0NBTEUoY2F0ZWdvcnksIGxvY2FsZSkgc2V0bG9jYWxlKGNh dGVnb3J5LCBsb2NhbGUpCisrI2luY2x1ZGUgPGxvY2FsZS5oPgorKyAgIAorKyNpZmRlZiBfSVNP X0lOVEVSTgorKyMgIHVuZGVmIF9JU09fSU5URVJOCisrI2VuZGlmCisrI2RlZmluZSBfSVNPX0lO VEVSTihzdHIxKSBpc29faW50ZXJuKHN0cjEpCisrCisrI2lmZGVmIF9PRU1fSU5URVJOCisrIyAg dW5kZWYgX09FTV9JTlRFUk4KKysjZW5kaWYKKysjaWZuZGVmIElaX09FTTJJU09fQVJSQVkKKysj ICBkZWZpbmUgSVpfT0VNMklTT19BUlJBWQorKyNlbmRpZgorKyNkZWZpbmUgX09FTV9JTlRFUk4o c3RyMSkgb2VtX2ludGVybihzdHIxKQorKworK3ZvaWQgaXNvX2ludGVybihjaGFyICopOworK3Zv aWQgb2VtX2ludGVybihjaGFyICopOworK3ZvaWQgaW5pdF9jb252ZXJzaW9uX2NoYXJzZXRzKHZv aWQpOworKyAgIAorICNlbmRpZiAvKiAhX191bnhjZmdfaCAqLworSW5kZXg6IHVuemlwLTYuMC91 bnppcC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLS0gdW56aXAtNi4wLm9yaWcvdW56aXAuYwkyMDE1LTAyLTEx IDA4OjQ2OjQzLjY3NTMyNDI5MCAtMDUwMAorKysrIHVuemlwLTYuMC91bnppcC5jCTIwMTUtMDIt MTEgMDg6NDY6NDMuNjc1MzI0MjkwIC0wNTAwCitAQCAtMzI3LDExICszMjcsMjEgQEAKKyAgIC0y ICBqdXN0IGZpbGVuYW1lcyBidXQgYWxsb3cgLWgvLXQvLXogIC1sICBsb25nIFVuaXggXCJscyAt bFwiIGZvcm1hdFxuXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LXYgIHZlcmJvc2UsIG11bHRpLXBhZ2UgZm9ybWF0XG4iOworIAorKyNpZm5kZWYgVU5JWAorIHN0 YXRpYyBaQ09OU1QgY2hhciBGYXIgWmlwSW5mb1VzYWdlTGluZTNbXSA9ICJtaXNjZWxsYW5lb3Vz IG9wdGlvbnM6XG5cCisgICAtaCAgcHJpbnQgaGVhZGVyIGxpbmUgICAgICAgLXQgIHByaW50IHRv dGFscyBmb3IgbGlzdGVkIGZpbGVzIG9yIGZvciBhbGxcblwKKyAgIC16ICBwcmludCB6aXBmaWxl IGNvbW1lbnQgICAtVCAgcHJpbnQgZmlsZSB0aW1lcyBpbiBzb3J0YWJsZSBkZWNpbWFsIGZvcm1h dFwKKyBcbiAgLUMgIGJlIGNhc2UtaW5zZW5zaXRpdmUgICAlc1wKKyAgIC14ICBleGNsdWRlIGZp bGVuYW1lcyB0aGF0IGZvbGxvdyBmcm9tIGxpc3RpbmdcbiI7CisrI2Vsc2UgLyogVU5JWCAqLwor K3N0YXRpYyBaQ09OU1QgY2hhciBGYXIgWmlwSW5mb1VzYWdlTGluZTNbXSA9ICJtaXNjZWxsYW5l b3VzIG9wdGlvbnM6XG5cCisrICAtaCAgcHJpbnQgaGVhZGVyIGxpbmUgICAgICAgLXQgIHByaW50 IHRvdGFscyBmb3IgbGlzdGVkIGZpbGVzIG9yIGZvciBhbGxcblwKKysgIC16ICBwcmludCB6aXBm aWxlIGNvbW1lbnQgICVjLVQlYyBwcmludCBmaWxlIHRpbWVzIGluIHNvcnRhYmxlIGRlY2ltYWwg Zm9ybWF0XAorK1xuICVjLUMlYyBiZSBjYXNlLWluc2Vuc2l0aXZlICAgJXNcCisrICAteCAgZXhj bHVkZSBmaWxlbmFtZXMgdGhhdCBmb2xsb3cgZnJvbSBsaXN0aW5nXG5cCisrICAtTyBDSEFSU0VU ICBzcGVjaWZ5IGEgY2hhcmFjdGVyIGVuY29kaW5nIGZvciBET1MsIFdpbmRvd3MgYW5kIE9TLzIg YXJjaGl2ZXNcblwKKysgIC1JIENIQVJTRVQgIHNwZWNpZnkgYSBjaGFyYWN0ZXIgZW5jb2Rpbmcg Zm9yIFVOSVggYW5kIG90aGVyIGFyY2hpdmVzXG4iOworKyNlbmRpZiAvKiAhVU5JWCAqLworICNp ZmRlZiBNT1JFCisgICAgc3RhdGljIFpDT05TVCBjaGFyIEZhciBaaXBJbmZvVXNhZ2VMaW5lNFtd ID0KKyAgICAgICIgIC1NICBwYWdlIG91dHB1dCB0aHJvdWdoIGJ1aWx0LWluIFwibW9yZVwiXG4i OworQEAgLTY2NCw2ICs2NzQsMTcgQEAKKyAgIC1VICB1c2UgZXNjYXBlcyBmb3IgYWxsIG5vbi1B U0NJSSBVbmljb2RlICAtVVUgaWdub3JlIGFueSBVbmljb2RlIGZpZWxkc1xuXAorICAgLUMgIG1h dGNoIGZpbGVuYW1lcyBjYXNlLWluc2Vuc2l0aXZlbHkgICAgIC1MICBtYWtlIChzb21lKSBuYW1l cyBcCisgbG93ZXJjYXNlXG4gJS00MnMgIC1WICByZXRhaW4gVk1TIHZlcnNpb24gbnVtYmVyc1xu JXMiOworKyNlbGlmIChkZWZpbmVkIFVOSVgpCisrc3RhdGljIFpDT05TVCBjaGFyIEZhciBVbnpp cFVzYWdlTGluZTRbXSA9ICJcCisrbW9kaWZpZXJzOlxuXAorKyAgLW4gIG5ldmVyIG92ZXJ3cml0 ZSBleGlzdGluZyBmaWxlcyAgICAgICAgIC1xICBxdWlldCBtb2RlICgtcXEgPT4gcXVpZXRlcilc blwKKysgIC1vICBvdmVyd3JpdGUgZmlsZXMgV0lUSE9VVCBwcm9tcHRpbmcgICAgICAtYSAgYXV0 by1jb252ZXJ0IGFueSB0ZXh0IGZpbGVzXG5cCisrICAtaiAganVuayBwYXRocyAoZG8gbm90IG1h a2UgZGlyZWN0b3JpZXMpICAgLWFhIHRyZWF0IEFMTCBmaWxlcyBhcyB0ZXh0XG5cCisrICAtVSAg dXNlIGVzY2FwZXMgZm9yIGFsbCBub24tQVNDSUkgVW5pY29kZSAgLVVVIGlnbm9yZSBhbnkgVW5p Y29kZSBmaWVsZHNcblwKKysgIC1DICBtYXRjaCBmaWxlbmFtZXMgY2FzZS1pbnNlbnNpdGl2ZWx5 ICAgICAtTCAgbWFrZSAoc29tZSkgbmFtZXMgXAorK2xvd2VyY2FzZVxuICUtNDJzICAtViAgcmV0 YWluIFZNUyB2ZXJzaW9uIG51bWJlcnNcbiVzXAorKyAgLU8gQ0hBUlNFVCAgc3BlY2lmeSBhIGNo YXJhY3RlciBlbmNvZGluZyBmb3IgRE9TLCBXaW5kb3dzIGFuZCBPUy8yIGFyY2hpdmVzXG5cCisr ICAtSSBDSEFSU0VUICBzcGVjaWZ5IGEgY2hhcmFjdGVyIGVuY29kaW5nIGZvciBVTklYIGFuZCBv dGhlciBhcmNoaXZlc1xuXG4iOworICNlbHNlIC8qICFWTVMgKi8KKyBzdGF0aWMgWkNPTlNUIGNo YXIgRmFyIFVuemlwVXNhZ2VMaW5lNFtdID0gIlwKKyBtb2RpZmllcnM6XG5cCitAQCAtODAyLDYg KzgyMywxMCBAQAorICNlbmRpZiAvKiBVTklDT0RFX1NVUFBPUlQgKi8KKyAKKyAKKysjaWZkZWYg VU5JWAorKyAgICBpbml0X2NvbnZlcnNpb25fY2hhcnNldHMoKTsKKysjZW5kaWYKKysKKyAjaWYg KGRlZmluZWQoX19JQk1DX18pICYmIGRlZmluZWQoX19ERUJVR19BTExPQ19fKSkKKyAgICAgZXh0 ZXJuIHZvaWQgRGVidWdNYWxsb2Modm9pZCk7CisgCitAQCAtMTMzNSw2ICsxMzYwLDExIEBACisg ICAgIGFyZ2MgPSAqcGFyZ2M7CisgICAgIGFyZ3YgPSAqcGFyZ3Y7CisgCisrI2lmZGVmIFVOSVgK KysgICAgZXh0ZXJuIGNoYXIgT0VNX0NQW01BWF9DUF9OQU1FXTsKKysgICAgZXh0ZXJuIGNoYXIg SVNPX0NQW01BWF9DUF9OQU1FXTsKKysjZW5kaWYKKysgICAgCisgICAgIHdoaWxlICgrK2FyZ3Ys ICgtLWFyZ2MgPiAwICYmICphcmd2ICE9IE5VTEwgJiYgKiphcmd2ID09ICctJykpIHsKKyAgICAg ICAgIHMgPSAqYXJndiArIDE7CisgICAgICAgICB3aGlsZSAoKGMgPSAqcysrKSAhPSAwKSB7ICAg IC8qICIhPSAwIjogIHByZXZlbnQgVHVyYm8gQyB3YXJuaW5nICovCitAQCAtMTUxNiw2ICsxNTQ2 LDM1IEBACisgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBicmVh azsKKyAjZW5kaWYgIC8qIE1BQ09TICovCisrI2lmZGVmIFVOSVgKKysgICAgCQkJY2FzZSAoJ0kn KToKKysgICAgICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgeworKyAgICAgICAgICAgICAg ICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICJlcnJvcjogIGVuY29kaW5ncyBjYW4ndCBiZSBuZWdhdGVkIikpOwor KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7CisrICAgIAkJCQl9IGVs c2UgeworKyAgICAJCQkJCWlmKCpzKSB7IC8qIEhhbmRsZSB0aGUgLUljaGFyc2V0IGNhc2UgKi8K KysgICAgCQkJCQkJLyogQXNzdW1lIHRoYXQgY2hhcnNldHMgY2FuJ3Qgc3RhcnQgd2l0aCBhIGRh c2ggdG8gc3BvdCBhcmd1bWVudHMgbWlzdXNlICovCisrICAgIAkJCQkJCWlmKCpzID09ICctJykg eyAKKysgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNo YXIgKilzbGlkZSwKKysgICAgICAgIAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxp ZCBjaGFyYWN0ZXIgZW5jb2Rpbmcgc2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7Cisr ICAgIAkgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKysgICAgCQkJ CQkJfQorKyAgICAJCQkJCQlzdHJuY3B5KElTT19DUCwgcywgc2l6ZW9mKElTT19DUCkpOworKyAg ICAJCQkJCX0gZWxzZSB7IC8qIC1JIGNoYXJzZXQgKi8KKysgICAgCQkJCQkJKythcmd2OworKyAg ICAJCQkJCQlpZighKC0tYXJnYyA+IDAgJiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFyZ3YgIT0gJy0n KSkgeworKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgo Y2hhciAqKXNsaWRlLAorKyAgICAgICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZh bGlkIGNoYXJhY3RlciBlbmNvZGluZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsK KysgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorKyAgICAJ CQkJCQl9CisrICAgIAkJCQkJCXMgPSAqYXJndjsKKysgICAgCQkJCQkJc3RybmNweShJU09fQ1As IHMsIHNpemVvZihJU09fQ1ApKTsKKysgICAgCQkJCQl9CisrICAgIAkJCQkJd2hpbGUoKigrK3Mp KTsgLyogTm8gcGFyYW1zIHN0cmFpZ2h0IGFmdGVyIGNoYXJzZXQgbmFtZSAqLworKyAgICAJCQkJ fQorKyAgICAJCQkJYnJlYWs7CisrI2VuZGlmIC8qID9VTklYICovCisgICAgICAgICAgICAgICAg IGNhc2UgKCdqJyk6ICAgIC8qIGp1bmsgcGF0aG5hbWVzL2RpcmVjdG9yeSBzdHJ1Y3R1cmUgKi8K KyAgICAgICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAg ICAgICB1Ty5qZmxhZyA9IEZBTFNFLCBuZWdhdGl2ZSA9IDA7CitAQCAtMTU5MSw2ICsxNjUwLDM1 IEBACisgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg ICArK3VPLm92ZXJ3cml0ZV9hbGw7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysjaWZk ZWYgVU5JWAorKyAgICAJCQljYXNlICgnTycpOgorKyAgICAgICAgICAgICAgICAgICAgaWYgKG5l Z2F0aXZlKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgo Y2hhciAqKXNsaWRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiAgZW5jb2Rp bmdzIGNhbid0IGJlIG5lZ2F0ZWQiKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu KFBLX1BBUkFNKTsKKysgICAgCQkJCX0gZWxzZSB7CisrICAgIAkJCQkJaWYoKnMpIHsgLyogSGFu ZGxlIHRoZSAtT2NoYXJzZXQgY2FzZSAqLworKyAgICAJCQkJCQkvKiBBc3N1bWUgdGhhdCBjaGFy c2V0cyBjYW4ndCBzdGFydCB3aXRoIGEgZGFzaCB0byBzcG90IGFyZ3VtZW50cyBtaXN1c2UgKi8K KysgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7IAorKyAgICAJICAgICAgICAgICAgICAgICAgICAg ICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAgICAgCQkgICAgICAg ICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGluZyBzaG91bGQgZm9s bG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKysgICAgCSAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybihQS19QQVJBTSk7IAorKyAgICAJCQkJCQl9CisrICAgIAkJCQkJCXN0cm5jcHkoT0VNX0NQ LCBzLCBzaXplb2YoT0VNX0NQKSk7CisrICAgIAkJCQkJfSBlbHNlIHsgLyogLU8gY2hhcnNldCAq LworKyAgICAJCQkJCQkrK2FyZ3Y7CisrICAgIAkJCQkJCWlmKCEoLS1hcmdjID4gMCAmJiAqYXJn diAhPSBOVUxMICYmICoqYXJndiAhPSAnLScpKSB7CisrICAgIAkgICAgICAgICAgICAgICAgICAg ICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAJCSAgICAg ICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5nIHNob3VsZCBm b2xsb3cgdGhlIC1PIGFyZ3VtZW50IikpOworKyAgICAJICAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuKFBLX1BBUkFNKTsgCisrICAgIAkJCQkJCX0KKysgICAgCQkJCQkJcyA9ICphcmd2Owor KyAgICAJCQkJCQlzdHJuY3B5KE9FTV9DUCwgcywgc2l6ZW9mKE9FTV9DUCkpOworKyAgICAJCQkJ CX0KKysgICAgCQkJCQl3aGlsZSgqKCsrcykpOyAvKiBObyBwYXJhbXMgc3RyYWlnaHQgYWZ0ZXIg Y2hhcnNldCBuYW1lICovCisrICAgIAkJCQl9CisrICAgIAkJCQlicmVhazsKKysjZW5kaWYgLyog P1VOSVggKi8KKyAgICAgICAgICAgICAgICAgY2FzZSAoJ3AnKTogICAgLyogcGlwZXM6ICBleHRy YWN0IHRvIHN0ZG91dCwgbm8gbWVzc2FnZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgIGlmIChu ZWdhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIHVPLmNmbGFnID0gRkFMU0U7CitJ bmRleDogdW56aXAtNi4wL3VuenByaXYuaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHVuemlwLTYuMC5vcmln L3VuenByaXYuaAkyMDE1LTAyLTExIDA4OjQ2OjQzLjY3NTMyNDI5MCAtMDUwMAorKysrIHVuemlw LTYuMC91bnpwcml2LmgJMjAxNS0wMi0xMSAwODo0Njo0My42NzUzMjQyOTAgLTA1MDAKK0BAIC0z MDA4LDcgKzMwMDgsNyBAQAorICAgICAgICAgICEoKChpc2xvY2hkcikgfHwgKGlzdXhhdHQpKSAm JiBcCisgICAgICAgICAgICAoKGhvc3R2ZXIpID09IDI1IHx8IChob3N0dmVyKSA9PSAyNiB8fCAo aG9zdHZlcikgPT0gNDApKSkgfHwgXAorICAgICAgICAgKGhvc3RudW0pID09IEZTX0hQRlNfIHx8 IFwKKy0gICAgICAgICgoaG9zdG51bSkgPT0gRlNfTlRGU18gJiYgKGhvc3R2ZXIpID09IDUwKSkg eyBcCisrICAgICAgICAoKGhvc3RudW0pID09IEZTX05URlNfIC8qICYmIChob3N0dmVyKSA9PSA1 MCAqLyApKSB7IFwKKyAgICAgICAgIF9PRU1fSU5URVJOKChzdHJpbmcpKTsgXAorICAgICB9IGVs c2UgeyBcCisgICAgICAgICBfSVNPX0lOVEVSTigoc3RyaW5nKSk7IFwKK0luZGV4OiB1bnppcC02 LjAvemlwaW5mby5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdW56aXAtNi4wLm9yaWcvemlwaW5mby5jCTIw MTUtMDItMTEgMDg6NDY6NDMuNjc1MzI0MjkwIC0wNTAwCisrKysgdW56aXAtNi4wL3ppcGluZm8u YwkyMDE1LTAyLTExIDA4OjQ2OjQzLjY3NTMyNDI5MCAtMDUwMAorQEAgLTQ1Nyw2ICs0NTcsMTAg QEAKKyAgICAgaW50ICAgIHRmbGFnX3NsbT1UUlVFLCB0ZmxhZ18ydj1GQUxTRTsKKyAgICAgaW50 ICAgIGV4cGxpY2l0X2g9RkFMU0UsIGV4cGxpY2l0X3Q9RkFMU0U7CisgCisrI2lmZGVmIFVOSVgK KysgICAgZXh0ZXJuIGNoYXIgT0VNX0NQW01BWF9DUF9OQU1FXTsKKysgICAgZXh0ZXJuIGNoYXIg SVNPX0NQW01BWF9DUF9OQU1FXTsKKysjZW5kaWYKKyAKKyAjaWZkZWYgTUFDT1MKKyAgICAgdU8u bGZsYWcgPSBMRkxBRzsgICAgICAgICAvKiByZXNldCBkZWZhdWx0IG9uIGVhY2ggY2FsbCAqLwor QEAgLTUwMSw2ICs1MDUsMzUgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdU8ubGZs YWcgPSAwOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgYnJl YWs7CisrI2lmZGVmIFVOSVgKKysgICAgCQkJY2FzZSAoJ0knKToKKysgICAgICAgICAgICAgICAg ICAgIGlmIChuZWdhdGl2ZSkgeworKyAgICAgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUs IDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJv cjogIGVuY29kaW5ncyBjYW4ndCBiZSBuZWdhdGVkIikpOworKyAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybihQS19QQVJBTSk7CisrICAgIAkJCQl9IGVsc2UgeworKyAgICAJCQkJCWlmKCpz KSB7IC8qIEhhbmRsZSB0aGUgLUljaGFyc2V0IGNhc2UgKi8KKysgICAgCQkJCQkJLyogQXNzdW1l IHRoYXQgY2hhcnNldHMgY2FuJ3Qgc3RhcnQgd2l0aCBhIGRhc2ggdG8gc3BvdCBhcmd1bWVudHMg bWlzdXNlICovCisrICAgIAkJCQkJCWlmKCpzID09ICctJykgeyAKKysgICAgCSAgICAgICAgICAg ICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAg IAkJICAgICAgICAgICAgICAgICAgImVycm9yOiAgYSB2YWxpZCBjaGFyYWN0ZXIgZW5jb2Rpbmcg c2hvdWxkIGZvbGxvdyB0aGUgLUkgYXJndW1lbnQiKSk7CisrICAgIAkgICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4oUEtfUEFSQU0pOyAKKysgICAgCQkJCQkJfQorKyAgICAJCQkJCQlzdHJu Y3B5KElTT19DUCwgcywgc2l6ZW9mKElTT19DUCkpOworKyAgICAJCQkJCX0gZWxzZSB7IC8qIC1J IGNoYXJzZXQgKi8KKysgICAgCQkJCQkJKythcmd2OworKyAgICAJCQkJCQlpZighKC0tYXJnYyA+ IDAgJiYgKmFyZ3YgIT0gTlVMTCAmJiAqKmFyZ3YgIT0gJy0nKSkgeworKyAgICAJICAgICAgICAg ICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAg ICAgCQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGlu ZyBzaG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKysgICAgCSAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybihQS19QQVJBTSk7IAorKyAgICAJCQkJCQl9CisrICAgIAkJCQkJCXMg PSAqYXJndjsKKysgICAgCQkJCQkJc3RybmNweShJU09fQ1AsIHMsIHNpemVvZihJU09fQ1ApKTsK KysgICAgCQkJCQl9CisrICAgIAkJCQkJd2hpbGUoKigrK3MpKTsgLyogTm8gcGFyYW1zIHN0cmFp Z2h0IGFmdGVyIGNoYXJzZXQgbmFtZSAqLworKyAgICAJCQkJfQorKyAgICAJCQkJYnJlYWs7Cisr I2VuZGlmIC8qID9VTklYICovCisgICAgICAgICAgICAgICAgIGNhc2UgJ2wnOiAgICAgIC8qIGxv bmdlciBmb3JtIG9mICJscyAtbCIgdHlwZSBsaXN0aW5nICovCisgICAgICAgICAgICAgICAgICAg ICBpZiAobmVnYXRpdmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgdU8ubGZsYWcgPSAtMiwg bmVnYXRpdmUgPSAwOworQEAgLTUyMSw2ICs1NTQsMzUgQEAKKyAgICAgICAgICAgICAgICAgICAg ICAgICBHLk1fZmxhZyA9IFRSVUU7CisgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAjZW5k aWYKKysjaWZkZWYgVU5JWAorKyAgICAJCQljYXNlICgnTycpOgorKyAgICAgICAgICAgICAgICAg ICAgaWYgKG5lZ2F0aXZlKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwg MHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9y OiAgZW5jb2RpbmdzIGNhbid0IGJlIG5lZ2F0ZWQiKSk7CisrICAgICAgICAgICAgICAgICAgICAg ICAgcmV0dXJuKFBLX1BBUkFNKTsKKysgICAgCQkJCX0gZWxzZSB7CisrICAgIAkJCQkJaWYoKnMp IHsgLyogSGFuZGxlIHRoZSAtT2NoYXJzZXQgY2FzZSAqLworKyAgICAJCQkJCQkvKiBBc3N1bWUg dGhhdCBjaGFyc2V0cyBjYW4ndCBzdGFydCB3aXRoIGEgZGFzaCB0byBzcG90IGFyZ3VtZW50cyBt aXN1c2UgKi8KKysgICAgCQkJCQkJaWYoKnMgPT0gJy0nKSB7IAorKyAgICAJICAgICAgICAgICAg ICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAgICAgICAg CQkgICAgICAgICAgICAgICAgICAiZXJyb3I6ICBhIHZhbGlkIGNoYXJhY3RlciBlbmNvZGluZyBz aG91bGQgZm9sbG93IHRoZSAtSSBhcmd1bWVudCIpKTsKKysgICAgCSAgICAgICAgICAgICAgICAg ICAgICAgIHJldHVybihQS19QQVJBTSk7IAorKyAgICAJCQkJCQl9CisrICAgIAkJCQkJCXN0cm5j cHkoT0VNX0NQLCBzLCBzaXplb2YoT0VNX0NQKSk7CisrICAgIAkJCQkJfSBlbHNlIHsgLyogLU8g Y2hhcnNldCAqLworKyAgICAJCQkJCQkrK2FyZ3Y7CisrICAgIAkJCQkJCWlmKCEoLS1hcmdjID4g MCAmJiAqYXJndiAhPSBOVUxMICYmICoqYXJndiAhPSAnLScpKSB7CisrICAgIAkgICAgICAgICAg ICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAg ICAJCSAgICAgICAgICAgICAgICAgICJlcnJvcjogIGEgdmFsaWQgY2hhcmFjdGVyIGVuY29kaW5n IHNob3VsZCBmb2xsb3cgdGhlIC1PIGFyZ3VtZW50IikpOworKyAgICAJICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuKFBLX1BBUkFNKTsgCisrICAgIAkJCQkJCX0KKysgICAgCQkJCQkJcyA9 ICphcmd2OworKyAgICAJCQkJCQlzdHJuY3B5KE9FTV9DUCwgcywgc2l6ZW9mKE9FTV9DUCkpOwor KyAgICAJCQkJCX0KKysgICAgCQkJCQl3aGlsZSgqKCsrcykpOyAvKiBObyBwYXJhbXMgc3RyYWln aHQgYWZ0ZXIgY2hhcnNldCBuYW1lICovCisrICAgIAkJCQl9CisrICAgIAkJCQlicmVhazsKKysj ZW5kaWYgLyogP1VOSVggKi8KKyAgICAgICAgICAgICAgICAgY2FzZSAncyc6ICAgICAgLyogZGVm YXVsdDogIHNob3J0ZXIgImxzIC1sIiB0eXBlIGxpc3RpbmcgKi8KKyAgICAgICAgICAgICAgICAg ICAgIGlmIChuZWdhdGl2ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICB1Ty5sZmxhZyA9IC0y LCBuZWdhdGl2ZSA9IDA7CmRpZmYgLS1naXQgYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAt Ni4wLWF0dHJpYnMtb3ZlcmZsb3cucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAt Ni4wLWF0dHJpYnMtb3ZlcmZsb3cucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjMxMjIzMjU1Y2FhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy91bnppcC9w YXRjaGVzL3VuemlwLTYuMC1hdHRyaWJzLW92ZXJmbG93LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAK K2RpZmYgLXVwIHVuemlwNjAvemlwaW5mby5jLmF0dHJpYnMtb3ZlcmZsb3cgdW56aXA2MC96aXBp bmZvLmMKKy0tLSB1bnppcDYwL3ppcGluZm8uYy5hdHRyaWJzLW92ZXJmbG93CTIwMDktMTEtMzAg MDk6NTU6MzkuMDAwMDAwMDAwICswMTAwCisrKysgdW56aXA2MC96aXBpbmZvLmMJMjAwOS0xMS0z MCAwOTo1Njo0Mi44NDQyNjMyNDQgKzAxMDAKK0BAIC0xODgxLDcgKzE4ODEsNyBAQCBzdGF0aWMg aW50IHppX3Nob3J0KF9fRykgICAvKiByZXR1cm4gUEstCisgI2VuZGlmCisgICAgIGludCAgICAg ICAgIGssIGVycm9yLCBlcnJvcl9pbl9hcmNoaXZlPVBLX0NPT0w7CisgICAgIHVuc2lnbmVkICAg IGhvc3RudW0sIGhvc3R2ZXIsIG1ldGhpZCwgbWV0aG51bSwgeGF0dHI7CistICAgIGNoYXIgICAg ICAgICpwLCB3b3Jrc3BhY2VbMTJdLCBhdHRyaWJzWzE2XTsKKysgICAgY2hhciAgICAgICAgKnAs IHdvcmtzcGFjZVsxMl0sIGF0dHJpYnNbMTddOworICAgICBjaGFyICAgICAgICBtZXRoYnVmWzVd OworICAgICBzdGF0aWMgWkNPTlNUIGNoYXIgZHR5cGVbNV09Ik5YRlMiOyAvKiBub3JtYWwsIG1h eGltdW0sIGZhc3QsIHN1cGVyZmFzdCAqLworICAgICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIG9z W05VTV9IT1NUUysxXVs0XSA9IHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91 bnppcC02LjAtYnppcDItY29uZmlndXJlLnBhdGNoIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3Vu emlwLTYuMC1iemlwMi1jb25maWd1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLmI5OWJiNGU0NDI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy91bnpp cC9wYXRjaGVzL3VuemlwLTYuMC1iemlwMi1jb25maWd1cmUucGF0Y2gKQEAgLTAsMCArMSwzMCBA QAorZGlmZiAtdXAgdW56aXA2MC91bml4L2NvbmZpZ3VyZS5iemlwMi1jb25maWd1cmUgdW56aXA2 MC91bml4L2NvbmZpZ3VyZQorLS0tIHVuemlwNjAvdW5peC9jb25maWd1cmUuYnppcDItY29uZmln dXJlCTIwMDktMDQtMTYgMjE6MjU6MTIuMDAwMDAwMDAwICswMjAwCisrKysgdW56aXA2MC91bml4 L2NvbmZpZ3VyZQkyMDA5LTExLTE4IDExOjIyOjE0LjU5ODM4OTE5NCArMDEwMAorQEAgLTY0MCw3 ICs2NDAsMjQgQEAgZWxzZQorICAgICBEX1VTRV9CWjI9Ii1EVVNFX0JaSVAyIgorICAgICBMX0Ja Mj0iJHtCWkxGfSAtbGJ6MiIKKyAgIGVsc2UKKy0gICAgZWNobyAiLS0gYnppcDIgc291cmNlcyBu b3QgZm91bmQgLSBubyBiemlwMiBzdXBwb3J0IgorKyAgICBlY2hvICIgIENoZWNrIGlmIE9TIGFs cmVhZHkgaGFzIGJ6aXAyIGxpYnJhcnkgaW5zdGFsbGVkIgorKyAgICBjYXQgPiBjb25mdGVzdC5j IDw8IF9FT0ZfCisrI2luY2x1ZGUgImJ6bGliLmgiCisraW50IG1haW4oKQorK3sKKysgIGJ6X3N0 cmVhbSBzdHJtOworKyAgQloyX2J6Q29tcHJlc3NFbmQoJnN0cm0pOworKyAgcmV0dXJuIDA7Cisr fQorK19FT0ZfCisrICAgICRDQyAkQ0ZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgLWxiejIg PiAvZGV2L251bGwgMj4vZGV2L251bGwKKysgICAgaWYgdGVzdCAkPyAtZXEgMDsgdGhlbgorKyAg ICAgIGVjaG8gIi0tIE9TIHN1cHBvcnRzIGJ6aXAyIC0gbGlua2luZyBpbiBiemlwMiIKKysgICAg ICBEX1VTRV9CWjI9Ii1EVVNFX0JaSVAyIgorKyAgICAgIExfQloyPSIke0JaTEZ9IC1sYnoyIgor KyAgICBlbHNlCisrICAgICAgZWNobyAiLS0gRWl0aGVyIGJ6bGliLmggb3IgbGliYnoyLmEgbm90 IGZvdW5kIC0gbm8gYnppcDIiCisrICAgIGZpCisgICBmaQorIGZpCisgCisgClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3Vuemlw LTYuMC1jYXNlaW5zZW5zaXRpdmUucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAt Ni4wLWNhc2VpbnNlbnNpdGl2ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMC4uM2NiNjg0NTBiOTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3VuemlwL3Bh dGNoZXMvdW56aXAtNi4wLWNhc2VpbnNlbnNpdGl2ZS5wYXRjaApAQCAtMCwwICsxLDEzMSBAQAor ZGlmZiAtLWdpdCBhL21hdGNoLmMgYi9tYXRjaC5jCitpbmRleCA2Y2Q2NTZmLi40ZTU2OWY1IDEw MDY0NAorLS0tIGEvbWF0Y2guYworKysrIGIvbWF0Y2guYworQEAgLTE5MCwxMCArMTkwLDEwIEBA IGNoYXIgKl9fX3RtcF9wdHI7CisgCisgI2VuZGlmCisgCistc3RhdGljIGludCByZWNtYXRjaChw LCBzLCBjcykKKytzdGF0aWMgaW50IHJlY21hdGNoKHAsIHMsIGNpKQorIFpDT05TVCBjaGFyICpw OyAgICAgICAgIC8qIHNoIHBhdHRlcm4gdG8gbWF0Y2ggKi8KKyBaQ09OU1QgY2hhciAqczsgICAg ICAgICAvKiBzdHJpbmcgdG8gbWF0Y2ggaXQgdG8gKi8KKy1pbnQgY3M7ICAgICAgICAgICAgICAg ICAvKiBmbGFnOiBmb3JjZSBjYXNlLXNlbnNpdGl2ZSBtYXRjaGluZyAqLworK2ludCBjaTsgICAg ICAgICAgICAgICAgIC8qIGZsYWc6IGZvcmNlIGNhc2UtaW5zZW5zaXRpdmUgbWF0Y2hpbmcgKi8K KyAvKiBSZWN1cnNpdmVseSBjb21wYXJlIHRoZSBzaCBwYXR0ZXJuIHAgd2l0aCB0aGUgc3RyaW5n IHMgYW5kIHJldHVybiAxIGlmCisgICAgdGhleSBtYXRjaCwgYW5kIDAgb3IgMiBpZiB0aGV5IGRv bid0IG9yIGlmIHRoZXJlIGlzIGEgc3ludGF4IGVycm9yIGluIHRoZQorICAgIHBhdHRlcm4uICBU aGlzIHJvdXRpbmUgcmVjdXJzZXMgb24gaXRzZWxmIG5vIGRlZXBlciB0aGFuIHRoZSBudW1iZXIg b2YKK0BAIC0yMTQsNyArMjE0LDcgQEAgaW50IGNzOyAgICAgICAgICAgICAgICAgLyogZmxhZzog Zm9yY2UgY2FzZS1zZW5zaXRpdmUgbWF0Y2hpbmcgKi8KKyAgIGlmIChDTEVOKHApID09IDIpIHsK KyAgICAgaWYgKENMRU4ocykgPT0gMikgeworICAgICAgIHJldHVybiAoKnAgPT0gKnMgJiYgKihw KzEpID09ICoocysxKSkgPworLSAgICAgICAgcmVjbWF0Y2gocCArIDIsIHMgKyAyLCBjcykgOiAw OworKyAgICAgICAgcmVjbWF0Y2gocCArIDIsIHMgKyAyLCBjaSkgOiAwOworICAgICB9IGVsc2Ug eworICAgICAgIHJldHVybiAwOworICAgICB9CitAQCAtMjMwLDkgKzIzMCw5IEBAIGludCBjczsg ICAgICAgICAgICAgICAgIC8qIGZsYWc6IGZvcmNlIGNhc2Utc2Vuc2l0aXZlIG1hdGNoaW5nICov CisgICAvKiAnPycgKG9yICclJyBvciAnIycpIG1hdGNoZXMgYW55IGNoYXJhY3RlciAoYnV0IG5v dCBhbiBlbXB0eSBzdHJpbmcpICovCisgICBpZiAoYyA9PSBXSUxEQ0hSX1NJTkdMRSkgeworICAg ICBpZiAod2lsZF9zdG9wX2F0X2RpcikKKy0gICAgICByZXR1cm4gKCpzICYmICpzICE9IERJUlNF UF9DSFIpID8gcmVjbWF0Y2gocCwgcyArIENMRU4ocyksIGNzKSA6IDA7CisrICAgICAgcmV0dXJu ICgqcyAmJiAqcyAhPSBESVJTRVBfQ0hSKSA/IHJlY21hdGNoKHAsIHMgKyBDTEVOKHMpLCBjaSkg OiAwOworICAgICBlbHNlCistICAgICAgcmV0dXJuICpzID8gcmVjbWF0Y2gocCwgcyArIENMRU4o cyksIGNzKSA6IDA7CisrICAgICAgcmV0dXJuICpzID8gcmVjbWF0Y2gocCwgcyArIENMRU4ocyks IGNpKSA6IDA7CisgICB9CisgCisgICAvKiBXSUxEQ0hSX01VTFRJICgnKicpIG1hdGNoZXMgYW55 IG51bWJlciBvZiBjaGFyYWN0ZXJzLCBpbmNsdWRpbmcgemVybyAqLworQEAgLTI1MywxNCArMjUz LDE0IEBAIGludCBjczsgICAgICAgICAgICAgICAgIC8qIGZsYWc6IGZvcmNlIGNhc2Utc2Vuc2l0 aXZlIG1hdGNoaW5nICovCisgIyBlbmRpZiAvKiA/QU1JR0EgKi8KKyAgICAgICAgIC8qIFNpbmds ZSBXSUxEQ0hSX01VTFRJICgnKicpOiB0aGlzIGRvZXNuJ3QgbWF0Y2ggc2xhc2hlcyAqLworICAg ICAgICAgZm9yICg7ICpzICYmICpzICE9IERJUlNFUF9DSFI7IElOQ1NUUihzKSkKKy0gICAgICAg ICAgaWYgKChjID0gcmVjbWF0Y2gocCwgcywgY3MpKSAhPSAwKQorKyAgICAgICAgICBpZiAoKGMg PSByZWNtYXRjaChwLCBzLCBjaSkpICE9IDApCisgICAgICAgICAgICAgcmV0dXJuIGM7CisgICAg ICAgICAvKiBlbmQgb2YgcGF0dGVybjogbWF0Y2hlZCBpZiBhdCBlbmQgb2Ygc3RyaW5nLCBlbHNl IGNvbnRpbnVlICovCisgICAgICAgICBpZiAoKnAgPT0gMCkKKyAgICAgICAgICAgcmV0dXJuICgq cyA9PSAwKTsKKyAgICAgICAgIC8qIGNvbnRpbnVlIHRvIG1hdGNoIGlmIGF0IERJUlNFUF9DSFIg aW4gcGF0dGVybiwgZWxzZSBnaXZlIHVwICovCisgICAgICAgICByZXR1cm4gKCpwID09IERJUlNF UF9DSFIgfHwgKCpwID09ICdcXCcgJiYgcFsxXSA9PSBESVJTRVBfQ0hSKSkKKy0gICAgICAgICAg ICAgICA/IHJlY21hdGNoKHAsIHMsIGNzKSA6IDI7CisrICAgICAgICAgICAgICAgPyByZWNtYXRj aChwLCBzLCBjaSkgOiAyOworICAgICAgIH0KKyAgICAgICAvKiBUd28gY29uc2VjdXRpdmUgV0lM RENIUl9NVUxUSSAoIioqIik6IHRoaXMgbWF0Y2hlcyBESVJTRVBfQ0hSICgnLycpICovCisgICAg ICAgcCsrOyAgICAgICAgLyogbW92ZSBwIHBhc3QgdGhlIHNlY29uZCBXSUxEQ0hSX01VTFRJICov CitAQCAtMzA4LDE3ICszMDgsMTcgQEAgaW50IGNzOyAgICAgICAgICAgICAgICAgLyogZmxhZzog Zm9yY2UgY2FzZS1zZW5zaXRpdmUgbWF0Y2hpbmcgKi8KKyAgICAgICAgICAqLworICAgICAgICAg aWYgKHEgIT0gc3Jlc3QpCisgICAgICAgICAgIHJldHVybiAwOworLSAgICAgICAgcmV0dXJuICgo Y3MgPyBzdHJjbXAocCwgcSkgOiBuYW1lY21wKHAsIHEpKSA9PSAwKTsKKysgICAgICAgIHJldHVy biAoKCFjaSA/IHN0cmNtcChwLCBxKSA6IG5hbWVjbXAocCwgcSkpID09IDApOworICAgICAgIH0K KyAjZWxzZSAvKiAhX01CQ1MgKi8KKy0gICAgICAgIHJldHVybiAoKGNzID8gc3RyY21wKHAsIHNy ZXN0KSA6IG5hbWVjbXAocCwgc3Jlc3QpKSA9PSAwKTsKKysgICAgICAgIHJldHVybiAoKCFjaSA/ IHN0cmNtcChwLCBzcmVzdCkgOiBuYW1lY21wKHAsIHNyZXN0KSkgPT0gMCk7CisgI2VuZGlmIC8q ID9fTUJDUyAqLworICAgICB9CisgICAgIGVsc2UKKyAgICAgeworICAgICAgIC8qIHBhdHRlcm4g Y29udGFpbnMgbW9yZSB3aWxkY2FyZHMsIGNvbnRpbnVlIHdpdGggcmVjdXJzaW9uLi4uICovCisg ICAgICAgZm9yICg7ICpzOyBJTkNTVFIocykpCistICAgICAgICBpZiAoKGMgPSByZWNtYXRjaChw LCBzLCBjcykpICE9IDApCisrICAgICAgICBpZiAoKGMgPSByZWNtYXRjaChwLCBzLCBjaSkpICE9 IDApCisgICAgICAgICAgIHJldHVybiBjOworICAgICAgIHJldHVybiAyOyAgICAgICAgICAgLyog MiBtZWFucyBnaXZlIHVwLS1zaG1hdGNoIHdpbGwgcmV0dXJuIGZhbHNlICovCisgICAgIH0KK0BA IC0zNTMsMTcgKzM1MywxNyBAQCBpbnQgY3M7ICAgICAgICAgICAgICAgICAvKiBmbGFnOiBmb3Jj ZSBjYXNlLXNlbnNpdGl2ZSBtYXRjaGluZyAqLworICAgICAgICAgYyA9ICoocC0xKTsKKyAgICAg ICBlbHNlCisgICAgICAgeworLSAgICAgICAgdWNoIGNjID0gKGNzID8gKHVjaCkqcyA6IGNhc2Vf bWFwKCh1Y2gpKnMpKTsKKysgICAgICAgIHVjaCBjYyA9ICghY2kgPyAodWNoKSpzIDogdG9fdXAo KHVjaCkqcykpOworICAgICAgICAgdWNoIHVjID0gKHVjaCkgYzsKKyAgICAgICAgIGlmICgqKHAr MSkgIT0gJy0nKQorICAgICAgICAgICBmb3IgKHVjID0gdWMgPyB1YyA6ICh1Y2gpKnA7IHVjIDw9 ICh1Y2gpKnA7IHVjKyspCisgICAgICAgICAgICAgLyogY29tcGFyZSByYW5nZSAqLworLSAgICAg ICAgICAgIGlmICgoY3MgPyB1YyA6IGNhc2VfbWFwKHVjKSkgPT0gY2MpCistICAgICAgICAgICAg ICByZXR1cm4gciA/IDAgOiByZWNtYXRjaChxICsgQ0xFTihxKSwgcyArIENMRU4ocyksIGNzKTsK KysgICAgICAgICAgICBpZiAoKCFjaSA/IHVjIDogdG9fdXAodWMpKSA9PSBjYykKKysgICAgICAg ICAgICAgIHJldHVybiByID8gMCA6IHJlY21hdGNoKHEgKyBDTEVOKHEpLCBzICsgQ0xFTihzKSwg Y2kpOworICAgICAgICAgYyA9IGUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAvKiBjbGVhciBy YW5nZSwgZXNjYXBlIGZsYWdzICovCisgICAgICAgfQorICAgICB9CistICAgIHJldHVybiByID8g cmVjbWF0Y2gocSArIENMRU4ocSksIHMgKyBDTEVOKHMpLCBjcykgOiAwOworKyAgICByZXR1cm4g ciA/IHJlY21hdGNoKHEgKyBDTEVOKHEpLCBzICsgQ0xFTihzKSwgY2kpIDogMDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnJhY2tldCBtYXRjaCBmYWlsZWQg Ki8KKyAgIH0KKyAjZW5kaWYgLyogIVZNUyAqLworQEAgLTM4MiwxOCArMzgyLDE4IEBAIGludCBj czsgICAgICAgICAgICAgICAgIC8qIGZsYWc6IGZvcmNlIGNhc2Utc2Vuc2l0aXZlIG1hdGNoaW5n ICovCisgICB7CisgICAgIC8qIE1hdGNoICIuLi5dIiB3aXRoICJdIi4gIENvbnRpbnVlIGFmdGVy ICJdIiBpbiBib3RoLiAqLworICAgICBpZiAoKCoocCsgMiogQ0xFTiggcCkpID09ICddJykgJiYg KCpzID09ICddJykpCistICAgICAgcmV0dXJuIHJlY21hdGNoKCAocCsgMyogQ0xFTiggcCkpLCAo cysgQ0xFTiggcykpLCBjcyk7CisrICAgICAgcmV0dXJuIHJlY21hdGNoKCAocCsgMyogQ0xFTigg cCkpLCAocysgQ0xFTiggcykpLCBjaSk7CisgCisgICAgIC8qIEVsc2UsIGxvb2sgZm9yIGEgcmVk dWNlZCBtYXRjaCBpbiBzLCB1bnRpbCAiXSIgaW4gb3IgZW5kIG9mIHMuICovCisgICAgIGZvciAo OyAqcyAmJiAoKnMgIT0gJ10nKTsgSU5DU1RSKHMpKQorICAgICAgIGlmICgqcyA9PSAnLicpCisg ICAgICAgICAvKiBJZiByZWR1Y2VkIG1hdGNoLCB0aGVuIGNvbnRpbnVlIGFmdGVyICIuLi4iIGlu IHAsICIuIiBpbiBzLiAqLworLSAgICAgICAgaWYgKChjID0gcmVjbWF0Y2goIChwKyBDTEVOKCBw KSksIHMsIGNzKSkgIT0gMCkKKysgICAgICAgIGlmICgoYyA9IHJlY21hdGNoKCAocCsgQ0xFTigg cCkpLCBzLCBjaSkpICE9IDApCisgICAgICAgICAgIHJldHVybiAoaW50KWM7CisgCisgICAgIC8q IE1hdGNoICIuLi5dIiB3aXRoICJdIi4gIENvbnRpbnVlIGFmdGVyICJdIiBpbiBib3RoLiAqLwor ICAgICBpZiAoKCoocCsgMiogQ0xFTiggcCkpID09ICddJykgJiYgKCpzID09ICddJykpCistICAg ICAgcmV0dXJuIHJlY21hdGNoKCAocCsgMyogQ0xFTiggcCkpLCAocysgQ0xFTiggcykpLCBjcyk7 CisrICAgICAgcmV0dXJuIHJlY21hdGNoKCAocCsgMyogQ0xFTiggcCkpLCAocysgQ0xFTiggcykp LCBjaSk7CisgCisgICAgIC8qIE5vIHJlZHVjZWQgbWF0Y2guICBRdWl0LiAqLworICAgICByZXR1 cm4gMjsKK0BAIC00MDIsOCArNDAyLDggQEAgaW50IGNzOyAgICAgICAgICAgICAgICAgLyogZmxh ZzogZm9yY2UgY2FzZS1zZW5zaXRpdmUgbWF0Y2hpbmcgKi8KKyAjZW5kaWYgLyogZGVmIFZNUyAq LworIAorICAgLyogSnVzdCBhIGNoYXJhY3Rlci0tY29tcGFyZSBpdCAqLworLSAgcmV0dXJuIChj cyA/IGMgPT0gKnMgOiBjYXNlX21hcCgodWNoKWMpID09IGNhc2VfbWFwKCh1Y2gpKnMpKSA/Cist ICAgICAgICAgIHJlY21hdGNoKHAsIHMgKyBDTEVOKHMpLCBjcykgOiAwOworKyAgcmV0dXJuICgh Y2kgPyBjID09ICpzIDogdG9fdXAoKHVjaCljKSA9PSB0b191cCgodWNoKSpzKSkgPworKyAgICAg ICAgICByZWNtYXRjaChwLCBzICsgQ0xFTihzKSwgY2kpIDogMDsKKyB9CisgCisgCmRpZmYgLS1n aXQgYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWNsb3NlLnBhdGNoIGIvc3JjcGtn cy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1jbG9zZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMC4uOWEyMzhhOTAwNjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWNsb3NlLnBhdGNoCkBAIC0wLDAgKzEsMTc2IEBA CitkaWZmIC11cCB1bnppcDYwL2V4dHJhY3QuYy5jbG9zZSB1bnppcDYwL2V4dHJhY3QuYworLS0t IHVuemlwNjAvZXh0cmFjdC5jLmNsb3NlCTIwMDktMDMtMTQgMDI6MzI6NTIuMDAwMDAwMDAwICsw MTAwCisrKysgdW56aXA2MC9leHRyYWN0LmMJMjAwOS0xMS0xOSAwODoxNzoyMy40ODEyNjM0OTYg KzAxMDAKK0BAIC0xOTI0LDI0ICsxOTI0LDIxIEBAIHN0YXRpYyBpbnQgZXh0cmFjdF9vcl90ZXN0 X21lbWJlcihfX0cpICAKKyAKKyAjaWZkZWYgVk1TICAgICAgICAgICAgICAgICAgLyogVk1TOiAg cmVxdWlyZWQgZXZlbiBmb3Igc3Rkb3V0ISAoZmluYWwgZmx1c2gpICovCisgICAgIGlmICghdU8u dGZsYWcpICAgICAgICAgICAvKiBkb24ndCBjbG9zZSBOVUxMIGZpbGUgKi8KKy0gICAgICAgIGNs b3NlX291dGZpbGUoX19HKTsKKysgICAgICAgIGVycm9yID0gY2xvc2Vfb3V0ZmlsZShfX0cpOwor ICNlbHNlCisgI2lmZGVmIERMTAorICAgICBpZiAoIXVPLnRmbGFnICYmICghdU8uY2ZsYWcgfHwg Ry5yZWRpcmVjdF9kYXRhKSkgeworICAgICAgICAgaWYgKEcucmVkaXJlY3RfZGF0YSkKKyAgICAg ICAgICAgICBGSU5JU0hfUkVESVJFQ1QoKTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICBj bG9zZV9vdXRmaWxlKF9fRyk7CisrICAgICAgICAgICAgZXJyb3IgPSBjbG9zZV9vdXRmaWxlKF9f Ryk7CisgICAgIH0KKyAjZWxzZQorICAgICBpZiAoIXVPLnRmbGFnICYmICF1Ty5jZmxhZykgICAv KiBkb24ndCBjbG9zZSBOVUxMIGZpbGUgb3Igc3Rkb3V0ICovCistICAgICAgICBjbG9zZV9vdXRm aWxlKF9fRyk7CisrICAgICAgICBlcnJvciA9IGNsb3NlX291dGZpbGUoX19HKTsKKyAjZW5kaWYK KyAjZW5kaWYgLyogVk1TICovCisgCistICAgICAgICAgICAgLyogR1JSOiBDT05WRVJUIGNsb3Nl X291dGZpbGUoKSBUTyBOT04tVk9JRDogIENIRUNLIEZPUiBFUlJPUlMhICovCistCistCisgICAg IGlmIChHLmRpc2tfZnVsbCkgeyAgICAgICAgICAgIC8qIHNldCBieSBmbHVzaCgpICovCisgICAg ICAgICBpZiAoRy5kaXNrX2Z1bGwgPiAxKSB7CisgI2lmIChkZWZpbmVkKERFTEVURV9JRl9GVUxM KSAmJiBkZWZpbmVkKEhBVkVfVU5MSU5LKSkKK2RpZmYgLXVwIHVuemlwNjAvdW5peC91bml4LmMu Y2xvc2UgdW56aXA2MC91bml4L3VuaXguYworLS0tIHVuemlwNjAvdW5peC91bml4LmMuY2xvc2UJ MjAwOS0wMS0yNCAwMDozMToyNi4wMDAwMDAwMDAgKzAxMDAKKysrKyB1bnppcDYwL3VuaXgvdW5p eC5jCTIwMDktMTEtMTkgMDg6MzM6MjUuNTY4Mzg5MTcxICswMTAwCitAQCAtMTA5NiwxMCArMTA5 Niw0MSBAQCBzdGF0aWMgaW50IGdldF9leHRhdHRyaWJzKF9fR19fIHB6dCwgel91CisgI2lmbmRl ZiBNVFMKKyAKKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysvKiBGdW5jdGlvbiBD bG9zZUVycm9yKCkgICAgKi8KKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqLworKworK2lu dCBDbG9zZUVycm9yKF9fRykKKysgICAgX19HREVGCisreworKyAgICBpbnQgZXJydmFsID0gUEtf T0s7CisrICAgIAorKyAgICBpZiAoZmNsb3NlKEcub3V0ZmlsZSkgPCAwKSB7CisrICAgICAgICAg IHN3aXRjaCAoZXJybm8pIHsKKysgICAgICAgICAgICAgICAgY2FzZSBFTk9TUEM6CisrICAgICAg ICAgICAgICAgICAgICAvKiBEbyB3ZSBuZWVkIHRoaXMgb24gZmlsZWlvLmM/ICovCisrICAgICAg ICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDRhMSwgKChjaGFyICopc2xpZGUsICIlczogd3Jp dGUgZXJyb3IgKGRpc2sgZnVsbD8pLiAgIENvbnRpbnVlPyAoeS9uL15DKSAiLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgRm5GaWx0ZXIxKEcuZmlsZW5hbWUpKSk7CisrICAgICAgICAgICAg ICAgICAgICBmZ2V0cyhHLmFuc3dlcmJ1ZiwgOSwgc3RkaW4pOworKyAgICAgICAgICAgICAgICAg ICAgaWYgKCpHLmFuc3dlcmJ1ZiA9PSAneScpICAgICAvKiBzdG9wIHdyaXRpbmcgdG8gdGhpcyBm aWxlICovCisrICAgICAgICAgICAgICAgICAgICAgICAgRy5kaXNrX2Z1bGwgPSAxOyAgICAgICAg IC8qIHBhc3MgdG8gbmV4dCAqLworKyAgICAgICAgICAgICAgICAgICAgZWxzZQorKyAgICAgICAg ICAgICAgICAgICAgICAgIEcuZGlza19mdWxsID0gMjsgICAgICAgICAvKiBubzogZXhpdCBwcm9n cmFtICovCisrICAgICAgICAgIAorKyAgICAgICAgICAgICAgICAgICAgZXJydmFsID0gUEtfRElT SzsKKysgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKworKyAgICAgICAgICAgICAgICBkZWZh dWx0OgorKyAgICAgICAgICAgICAgICAgICAgZXJydmFsID0gUEtfV0FSTjsKKysgICAgICAgICAg fQorKyAgICAgfQorKyAgICAgcmV0dXJuIGVycnZhbDsKKyt9IC8qIEVuZCBvZiBDbG9zZUVycm9y KCkgKi8KKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAvKiBGdW5jdGlvbiBj bG9zZV9vdXRmaWxlKCkgKi8KKyAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAKKy12 b2lkIGNsb3NlX291dGZpbGUoX19HKSAgICAvKiBHUlI6IGNoYW5nZSB0byByZXR1cm4gUEstc3R5 bGUgd2FybmluZyBsZXZlbCAqLworK2ludCBjbG9zZV9vdXRmaWxlKF9fRykgCisgICAgIF9fR0RF RgorIHsKKyAgICAgdW5pb24geworQEAgLTExMDgsNiArMTEzOSw3IEBAIHZvaWQgY2xvc2Vfb3V0 ZmlsZShfX0cpICAgIC8qIEdSUjogY2hhbmcKKyAgICAgfSB6dDsKKyAgICAgdWxnIHpfdWlkZ2lk WzJdOworICAgICBpbnQgaGF2ZV91aWRnaWRfZmxnOworKyAgICBpbnQgZXJydmFsID0gUEtfT0s7 CisgCisgICAgIGhhdmVfdWlkZ2lkX2ZsZyA9IGdldF9leHRhdHRyaWJzKF9fR19fICYoenQudDMp LCB6X3VpZGdpZCk7CisgCitAQCAtMTE0MSwxNiArMTE3MywxNiBAQCB2b2lkIGNsb3NlX291dGZp bGUoX19HKSAgICAvKiBHUlI6IGNoYW5nCisgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHgyMDEs ICgoY2hhciAqKXNsaWRlLAorICAgICAgICAgICAgICAgIndhcm5pbmc6ICBzeW1ib2xpYyBsaW5r ICglcykgZmFpbGVkOiBtZW0gYWxsb2Mgb3ZlcmZsb3dcbiIsCisgICAgICAgICAgICAgICBGbkZp bHRlcjEoRy5maWxlbmFtZSkpKTsKKy0gICAgICAgICAgICBmY2xvc2UoRy5vdXRmaWxlKTsKKy0g ICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgZXJydmFsID0gQ2xvc2VFcnJvcihHLm91 dGZpbGUsIEcuZmlsZW5hbWUpOworKyAgICAgICAgICAgIHJldHVybiBlcnJ2YWwgPyBlcnJ2YWwg OiBQS19XQVJOOworICAgICAgICAgfQorIAorICAgICAgICAgaWYgKChzbG5rX2VudHJ5ID0gKHNs aW5rZW50cnkgKiltYWxsb2Moc2xua19lbnRyeXNpemUpKSA9PSBOVUxMKSB7CisgICAgICAgICAg ICAgSW5mbyhzbGlkZSwgMHgyMDEsICgoY2hhciAqKXNsaWRlLAorICAgICAgICAgICAgICAgIndh cm5pbmc6ICBzeW1ib2xpYyBsaW5rICglcykgZmFpbGVkOiBubyBtZW1cbiIsCisgICAgICAgICAg ICAgICBGbkZpbHRlcjEoRy5maWxlbmFtZSkpKTsKKy0gICAgICAgICAgICBmY2xvc2UoRy5vdXRm aWxlKTsKKy0gICAgICAgICAgICByZXR1cm47CisrICAgICAgICAgICAgZXJydmFsID0gQ2xvc2VF cnJvcihHLm91dGZpbGUsIEcuZmlsZW5hbWUpOworKyAgICAgICAgICAgIHJldHVybiBlcnJ2YWwg PyBlcnJ2YWwgOiBQS19XQVJOOworICAgICAgICAgfQorICAgICAgICAgc2xua19lbnRyeS0+bmV4 dCA9IE5VTEw7CisgICAgICAgICBzbG5rX2VudHJ5LT50YXJnZXRsZW4gPSB1Y3NpemU7CitAQCAt MTE3NCwxMCArMTIwNiwxMCBAQCB2b2lkIGNsb3NlX291dGZpbGUoX19HKSAgICAvKiBHUlI6IGNo YW5nCisgICAgICAgICAgICAgICAid2FybmluZzogIHN5bWJvbGljIGxpbmsgKCVzKSBmYWlsZWRc biIsCisgICAgICAgICAgICAgICBGbkZpbHRlcjEoRy5maWxlbmFtZSkpKTsKKyAgICAgICAgICAg ICBmcmVlKHNsbmtfZW50cnkpOworLSAgICAgICAgICAgIGZjbG9zZShHLm91dGZpbGUpOworLSAg ICAgICAgICAgIHJldHVybjsKKysgICAgICAgICAgICBlcnJ2YWwgPSBDbG9zZUVycm9yKEcub3V0 ZmlsZSwgRy5maWxlbmFtZSk7CisrICAgICAgICAgICAgcmV0dXJuIGVycnZhbCA/IGVycnZhbCA6 IFBLX1dBUk47CisgICAgICAgICB9CistICAgICAgICBmY2xvc2UoRy5vdXRmaWxlKTsgICAgICAg ICAgICAgICAgICAvKiBjbG9zZSAibGluayIgZmlsZSBmb3IgZ29vZC4uLiAqLworKyAgICAgICAg ZXJydmFsID0gQ2xvc2VFcnJvcihHLm91dGZpbGUsIEcuZmlsZW5hbWUpOyAvKiBjbG9zZSAibGlu ayIgZmlsZSBmb3IgZ29vZC4uLiAqLworICAgICAgICAgc2xua19lbnRyeS0+dGFyZ2V0W3Vjc2l6 ZV0gPSAnXDAnOworICAgICAgICAgaWYgKFFDT05EMikKKyAgICAgICAgICAgICBJbmZvKHNsaWRl LCAwLCAoKGNoYXIgKilzbGlkZSwgIi0+ICVzICIsCitAQCAtMTE4OCw3ICsxMjIwLDcgQEAgdm9p ZCBjbG9zZV9vdXRmaWxlKF9fRykgICAgLyogR1JSOiBjaGFuZworICAgICAgICAgZWxzZQorICAg ICAgICAgICAgIEcuc2xpbmtfaGVhZCA9IHNsbmtfZW50cnk7CisgICAgICAgICBHLnNsaW5rX2xh c3QgPSBzbG5rX2VudHJ5OworLSAgICAgICAgcmV0dXJuOworKyAgICAgICAgcmV0dXJuIGVycnZh bDsKKyAgICAgfQorICNlbmRpZiAvKiBTWU1MSU5LUyAqLworIAorQEAgLTEyMDEsNyArMTIzMyw3 IEBAIHZvaWQgY2xvc2Vfb3V0ZmlsZShfX0cpICAgIC8qIEdSUjogY2hhbmcKKyAjZW5kaWYKKyAK KyAjaWYgKGRlZmluZWQoTk9fRkNIT1dOKSkKKy0gICAgZmNsb3NlKEcub3V0ZmlsZSk7CisrICAg IGVycnZhbCA9IENsb3NlRXJyb3IoRy5vdXRmaWxlLCBHLmZpbGVuYW1lKTsKKyAjZW5kaWYKKyAK KyAgICAgLyogaWYgLVggb3B0aW9uIHdhcyBzcGVjaWZpZWQgYW5kIHdlIGhhdmUgVUlEL0dJRCBp bmZvLCByZXN0b3JlIGl0ICovCitAQCAtMTIyNyw3ICsxMjU5LDcgQEAgdm9pZCBjbG9zZV9vdXRm aWxlKF9fRykgICAgLyogR1JSOiBjaGFuZworICAgICB9CisgCisgI2lmICghZGVmaW5lZChOT19G Q0hPV04pICYmIGRlZmluZWQoTk9fRkNITU9EKSkKKy0gICAgZmNsb3NlKEcub3V0ZmlsZSk7Cisr ICAgIGVycnZhbCA9IENsb3NlRXJyb3IoRy5vdXRmaWxlLCBHLmZpbGVuYW1lKTsKKyAjZW5kaWYK KyAKKyAjaWYgKCFkZWZpbmVkKE5PX0ZDSE9XTikgJiYgIWRlZmluZWQoTk9fRkNITU9EKSkKK0BA IC0xMjM5LDcgKzEyNzEsNyBAQCB2b2lkIGNsb3NlX291dGZpbGUoX19HKSAgICAvKiBHUlI6IGNo YW5nCisgICAgIGlmIChmY2htb2QoZmlsZW5vKEcub3V0ZmlsZSksIGZpbHRhdHRyKF9fR19fIEcu cEluZm8tPmZpbGVfYXR0cikpKQorICAgICAgICAgcGVycm9yKCJmY2htb2QgKGZpbGUgYXR0cmli dXRlcykgZXJyb3IiKTsKKyAKKy0gICAgZmNsb3NlKEcub3V0ZmlsZSk7CisrICAgIGVycnZhbCA9 IENsb3NlRXJyb3IoRy5vdXRmaWxlLCBHLmZpbGVuYW1lKTsKKyAjZW5kaWYgLyogIU5PX0ZDSE9X TiAmJiAhTk9fRkNITU9EICovCisgCisgICAgIC8qIHNraXAgcmVzdG9yaW5nIHRpbWUgc3RhbXBz IG9uIHVzZXIncyByZXF1ZXN0ICovCitAQCAtMTI2Nyw2ICsxMjk5LDcgQEAgdm9pZCBjbG9zZV9v dXRmaWxlKF9fRykgICAgLyogR1JSOiBjaGFuZworICNlbmRpZgorICNlbmRpZiAvKiBOT19GQ0hP V04gfHwgTk9fRkNITU9EICovCisgCisrICAgIHJldHVybiBlcnJ2YWw7CisgfSAvKiBlbmQgZnVu Y3Rpb24gY2xvc2Vfb3V0ZmlsZSgpICovCisgCisgI2VuZGlmIC8qICFNVFMgKi8KK2RpZmYgLXVw IHVuemlwNjAvdW56cHJpdi5oLmNsb3NlIHVuemlwNjAvdW56cHJpdi5oCistLS0gdW56aXA2MC91 bnpwcml2LmguY2xvc2UJMjAwOS0wNC0yMCAwMTo1OToyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyB1 bnppcDYwL3VuenByaXYuaAkyMDA5LTExLTE5IDA4OjE5OjA4LjYxMDM4ODYxOCArMDEwMAorQEAg LTI2MDQsNyArMjYwNCw3IEBAIGNoYXIgICAgKkdldExvYWRQYXRoICAgICBPRigoX19HUFJPKSk7 ICAKKyAgICBpbnQgICBTZXRGaWxlU2l6ZSAgICAgT0YoKEZJTEUgKmZpbGUsIHp1c3pfdCBmaWxl c2l6ZSkpOyAgICAgICAgIC8qIGxvY2FsICovCisgI2VuZGlmCisgI2lmbmRlZiBNVFMgLyogbWFj cm8gaW4gTVRTICovCistICAgdm9pZCAgY2xvc2Vfb3V0ZmlsZSAgIE9GKChfX0dQUk8pKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2NhbCAqLworKyAgIGludCAgY2xvc2Vfb3V0 ZmlsZSAgIE9GKChfX0dQUk8pKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsb2Nh bCAqLworICNlbmRpZgorICNpZmRlZiBTRVRfU1lNTElOS19BVFRSSUJTCisgICAgaW50ICBzZXRf c3ltbG5rX2F0dHJpYnMgIE9GKChfX0dQUk9fXyBzbGlua2VudHJ5ICpzbG5rX2VudHJ5KSk7ICAv KiBsb2NhbCAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1j b25maWd1cmUucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWNvbmZpZ3Vy ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uOWVlYWQ0MjI3 YzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWNv bmZpZ3VyZS5wYXRjaApAQCAtMCwwICsxLDEyIEBACitkaWZmIC11cCB1bnppcDYwL3VuaXgvY29u ZmlndXJlLm5vc3RyaXAgdW56aXA2MC91bml4L2NvbmZpZ3VyZQorLS0tIHVuemlwNjAvdW5peC9j b25maWd1cmUubm9zdHJpcAkyMDA5LTExLTMwIDEwOjE4OjA5LjAwMDAwMDAwMCArMDEwMAorKysr IHVuemlwNjAvdW5peC9jb25maWd1cmUJMjAwOS0xMS0zMCAxMDoyMTowOC4zNTQyNjQyMTMgKzAx MDAKK0BAIC0xNyw3ICsxNyw3IEBAIENGTEFHU1I9JHtDRkxBR1N9CisgSVpfQlpJUDI9JHszfQor IENGTEFHUz0iJHtDRkxBR1N9IC1JLiAtRFVOSVgiCisgTEZMQUdTMT0iIgorLUxGTEFHUzI9Ii1z IgorK0xGTEFHUzI9IiR7TEZMQUdTMn0iCisgTE49ImxuIC1zIgorIAorIENGTEFHU19PUFQ9JycK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtY3ZlLTIwMTQtODEz OS5wYXRjaCBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtY3ZlLTIwMTQtODEzOS5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjI2YjM1YWM2MGIK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWN2ZS0y MDE0LTgxMzkucGF0Y2gKQEAgLTAsMCArMSw3OSBAQAorZGlmZiAtLWdpdCBhL2V4dHJhY3QuYyBi L2V4dHJhY3QuYworaW5kZXggOWVmODBiMy4uYzc0MWI1ZiAxMDA2NDQKKy0tLSBhL2V4dHJhY3Qu YworKysrIGIvZXh0cmFjdC5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKgorLSAgQ29weXJpZ2h0IChj KSAxOTkwLTIwMDkgSW5mby1aSVAuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAgQ29weXJpZ2h0 IChjKSAxOTkwLTIwMTQgSW5mby1aSVAuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorIAorICAgU2Vl IHRoZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFLCB2ZXJzaW9uIDIwMDktSmFuLTAyIG9yIGxh dGVyCisgICAodGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZSBhbHNvIGluY2x1ZGVkIGluIHVuemlw LmgpIGZvciB0ZXJtcyBvZiB1c2UuCitAQCAtMjk4LDYgKzI5OCw4IEBAIGNoYXIgWkNPTlNUIEZh ciBUcnVuY05UU0RbXSA9CisgI2lmbmRlZiBTRlgKKyAgICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFy IEluY29uc2lzdEVGbGVuZ3RoW10gPSAiYmFkIGV4dHJhLWZpZWxkIGVudHJ5OlxuIFwKKyAgICAg IEVGIGJsb2NrIGxlbmd0aCAoJXUgYnl0ZXMpIGV4Y2VlZHMgcmVtYWluaW5nIEVGIGRhdGEgKCV1 IGJ5dGVzKVxuIjsKKysgICBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFRvb1NtYWxsRUJsZW5ndGhb XSA9ICJiYWQgZXh0cmEtZmllbGQgZW50cnk6XG4gXAorKyAgICAgRUYgYmxvY2sgbGVuZ3RoICgl dSBieXRlcykgaW52YWxpZCAoPCAlZClcbiI7CisgICAgc3RhdGljIFpDT05TVCBjaGFyIEZhciBJ bnZhbGlkQ29tcHJEYXRhRUFzW10gPQorICAgICAgIiBpbnZhbGlkIGNvbXByZXNzZWQgZGF0YSBm b3IgRUFzXG4iOworICMgIGlmIChkZWZpbmVkKFdJTjMyKSAmJiBkZWZpbmVkKE5UU0RfRUFTKSkK K0BAIC0yMDIwLDcgKzIwMjIsOCBAQCBzdGF0aWMgaW50IFRlc3RFeHRyYUZpZWxkKF9fR19fIGVm LCBlZl9sZW4pCisgICAgICAgICBlYklEID0gbWFrZXdvcmQoZWYpOworICAgICAgICAgZWJMZW4g PSAodW5zaWduZWQpbWFrZXdvcmQoZWYrRUJfTEVOKTsKKyAKKy0gICAgICAgIGlmIChlYkxlbiA+ IChlZl9sZW4gLSBFQl9IRUFEU0laRSkpIHsKKysgICAgICAgIGlmIChlYkxlbiA+IChlZl9sZW4g LSBFQl9IRUFEU0laRSkpCisrICAgICAgICB7CisgICAgICAgICAgICAvKiBEaXNjb3ZlcmVkIHNv bWUgZXh0cmEgZmllbGQgaW5jb25zaXN0ZW5jeSEgKi8KKyAgICAgICAgICAgICBpZiAodU8ucWZs YWcpCisgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDEsICgoY2hhciAqKXNsaWRlLCAiJS0y MnMgIiwKK0BAIC0yMTU1LDExICsyMTU4LDI5IEBAIHN0YXRpYyBpbnQgVGVzdEV4dHJhRmllbGQo X19HX18gZWYsIGVmX2xlbikKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBi cmVhazsKKyAgICAgICAgICAgICBjYXNlIEVGX1BLVk1TOgorLSAgICAgICAgICAgICAgICBpZiAo bWFrZWxvbmcoZWYrRUJfSEVBRFNJWkUpICE9CistICAgICAgICAgICAgICAgICAgICBjcmMzMihD UkNWQUxfSU5JVElBTCwgZWYrKEVCX0hFQURTSVpFKzQpLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgKGV4dGVudCkoZWJMZW4tNCkpKQorLSAgICAgICAgICAgICAgICAgICAgSW5mbyhzbGlk ZSwgMSwgKChjaGFyICopc2xpZGUsCistICAgICAgICAgICAgICAgICAgICAgIExvYWRGYXJTdHJp bmcoQmFkQ1JDX0VBcykpKTsKKysgICAgICAgICAgICAgICAgLyogMjAxNS0wMS0zMCBTTVMuICBB ZGRlZCBzdWZmaWNpZW50LWJ5dGVzIHRlc3QvbWVzc2FnZQorKyAgICAgICAgICAgICAgICAgKiBo ZXJlLiAgKFJlbW92ZWQgZGVmZWN0aXZlIGViTGVuIHRlc3QgYWJvdmUuKQorKyAgICAgICAgICAg ICAgICAgKgorKyAgICAgICAgICAgICAgICAgKiBJZiBzdWZmaWNpZW50IGJ5dGVzIChFQl9QS1ZN U19NSU5MRU4pIGFyZSBhdmFpbGFibGUsCisrICAgICAgICAgICAgICAgICAqIHRoZW4gY29tcGFy ZSB0aGUgc3RvcmVkIENSQyB2YWx1ZSB3aXRoIHRoZSBjYWxjdWxhdGVkCisrICAgICAgICAgICAg ICAgICAqIENSQyBmb3IgdGhlIHJlbWFpbmRlciBvZiB0aGUgZGF0YSAoYW5kIGNvbXBsYWluIGFi b3V0CisrICAgICAgICAgICAgICAgICAqIGEgbWlzbWF0Y2gpLgorKyAgICAgICAgICAgICAgICAg Ki8KKysgICAgICAgICAgICAgICAgaWYgKGViTGVuIDwgRUJfUEtWTVNfTUlOTEVOKQorKyAgICAg ICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgICAvKiBJbnN1ZmZpY2llbnQgYnl0ZXMg YXZhaWxhYmxlLiAqLworKyAgICAgICAgICAgICAgICAgICAgSW5mbyggc2xpZGUsIDEsCisrICAg ICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoIFRvb1NtYWxs RUJsZW5ndGgpLAorKyAgICAgICAgICAgICAgICAgICAgIGViTGVuLCBFQl9QS1ZNU19NSU5MRU4p KTsKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICBlbHNlIGlmIChtYWtlbG9u ZyhlZisgRUJfSEVBRFNJWkUpICE9CisrICAgICAgICAgICAgICAgICBjcmMzMihDUkNWQUxfSU5J VElBTCwKKysgICAgICAgICAgICAgICAgIChlZisgRUJfSEVBRFNJWkUrIEVCX1BLVk1TX01JTkxF TiksCisrICAgICAgICAgICAgICAgICAoZXh0ZW50KShlYkxlbi0gRUJfUEtWTVNfTUlOTEVOKSkp CisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAx LCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAgICAgICAgICAgICAgICAgIExvYWRGYXJTdHJpbmco QmFkQ1JDX0VBcykpKTsKKysgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBicmVh azsKKyAgICAgICAgICAgICBjYXNlIEVGX1BLVzMyOgorICAgICAgICAgICAgIGNhc2UgRUZfUEtV TklYOgorZGlmZiAtLWdpdCBhL3VuenByaXYuaCBiL3VuenByaXYuaAoraW5kZXggMDA1Y2VlMC4u NWM4M2E2ZSAxMDA2NDQKKy0tLSBhL3VuenByaXYuaAorKysrIGIvdW56cHJpdi5oCitAQCAtMTgw Niw2ICsxODA2LDggQEAKKyAjZGVmaW5lIEVCX05UU0RfVkVSU0lPTiAgIDQgICAgLyogb2Zmc2V0 IG9mIE5UU0QgdmVyc2lvbiBieXRlICovCisgI2RlZmluZSBFQl9OVFNEX01BWF9WRVIgICAoMCkg IC8qIG1heGltdW0gdmVyc2lvbiAjIHdlIGtub3cgaG93IHRvIGhhbmRsZSAqLworIAorKyNkZWZp bmUgRUJfUEtWTVNfTUlOTEVOICAgNCAgICAvKiBtaW5pbXVtIGRhdGEgbGVuZ3RoIG9mIFBLVk1T IGV4dHJhIGJsb2NrICovCisrCisgI2RlZmluZSBFQl9BU0lfQ1JDMzIgICAgICAwICAgIC8qIG9m ZnNldCBvZiBBU0kgVW5peCBmaWVsZCdzIGNyYzMyIGNoZWNrc3VtICovCisgI2RlZmluZSBFQl9B U0lfTU9ERSAgICAgICA0ICAgIC8qIG9mZnNldCBvZiBBU0kgVW5peCBwZXJtaXNzaW9uIG1vZGUg ZmllbGQgKi8KKyAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYu MC1jdmUtMjAxNC04MTQwLnBhdGNoIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1j dmUtMjAxNC04MTQwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw Li5iOWViYTkyYjEwOQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91 bnppcC02LjAtY3ZlLTIwMTQtODE0MC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitkaWZmIC0tZ2l0 IGEvZXh0cmFjdC5jIGIvZXh0cmFjdC5jCitpbmRleCBjNzQxYjVmLi5lNGE0YzdiIDEwMDY0NAor LS0tIGEvZXh0cmFjdC5jCisrKysgYi9leHRyYWN0LmMKK0BAIC0yMjQwLDEwICsyMjQwLDE3IEBA IHN0YXRpYyBpbnQgdGVzdF9jb21wcl9lYihfX0dfXyBlYiwgZWJfc2l6ZSwgY29tcHJfb2Zmc2V0 LCB0ZXN0X3VjX2ViZGF0YSkKKyAgICAgaWYgKGNvbXByX29mZnNldCA8IDQpICAgICAgICAgICAg ICAgIC8qIGZpZWxkIGlzIG5vdCBjb21wcmVzc2VkOiAqLworICAgICAgICAgcmV0dXJuIFBLX09L OyAgICAgICAgICAgICAgICAgICAgLyogZG8gbm90aGluZyBhbmQgc2lnbmFsIE9LICovCisgCisr ICAgIC8qIFJldHVybiBuby9iYWQtZGF0YSBlcnJvciBzdGF0dXMgaWYgYW55IHByb2JsZW0gaXMg Zm91bmQ6CisrICAgICAqICAgIDEuIGViX3NpemUgaXMgdG9vIHNtYWxsIHRvIGhvbGQgdGhlIHVu Y29tcHJlc3NlZCBzaXplCisrICAgICAqICAgICAgIChlYl91Y3NpemUpLiAgKEVsc2UgZXh0cmFj dCBlYl91Y3NpemUuKQorKyAgICAgKiAgICAyLiBlYl91Y3NpemUgaXMgemVybyAoaW52YWxpZCku ICAyMDE0LTEyLTA0IFNNUy4KKysgICAgICogICAgMy4gZWJfdWNzaXplIGlzIHBvc2l0aXZlLCBi dXQgZWJfc2l6ZSBpcyB0b28gc21hbGwgdG8gaG9sZAorKyAgICAgKiAgICAgICB0aGUgY29tcHJl c3NlZCBkYXRhIGhlYWRlci4KKysgICAgICovCisgICAgIGlmICgoZWJfc2l6ZSA8IChFQl9VQ1NJ WkVfUCArIDQpKSB8fAorLSAgICAgICAgKChlYl91Y3NpemUgPSBtYWtlbG9uZyhlYisoRUJfSEVB RFNJWkUrRUJfVUNTSVpFX1ApKSkgPiAwTCAmJgorLSAgICAgICAgIGViX3NpemUgPD0gKGNvbXBy X29mZnNldCArIEVCX0NNUFJIRUFETEVOKSkpCistICAgICAgICByZXR1cm4gSVpfRUZfVFJVTkM7 ICAgICAgICAgICAgICAgLyogbm8gY29tcHJlc3NlZCBkYXRhISAqLworKyAgICAgKChlYl91Y3Np emUgPSBtYWtlbG9uZyggZWIrIChFQl9IRUFEU0laRSsgRUJfVUNTSVpFX1ApKSkgPT0gMEwpIHx8 CisrICAgICAoKGViX3Vjc2l6ZSA+IDBMKSAmJiAoZWJfc2l6ZSA8PSAoY29tcHJfb2Zmc2V0ICsg RUJfQ01QUkhFQURMRU4pKSkpCisrICAgICAgICByZXR1cm4gSVpfRUZfVFJVTkM7ICAgICAgICAg ICAgIC8qIG5vL2JhZCBjb21wcmVzc2VkIGRhdGEhICovCisgCisgICAgIG1ldGhvZCA9IG1ha2V3 b3JkKGViICsgKEVCX0hFQURTSVpFICsgY29tcHJfb2Zmc2V0KSk7CisgICAgIGlmICgobWV0aG9k ID09IFNUT1JFRCkgJiYgKGViX3NpemUgIT0gY29tcHJfb2Zmc2V0ICsgRUJfQ01QUkhFQURMRU4g KyBlYl91Y3NpemUpKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3BhdGNoLXBy b2Nlc3MuYy5kaWZmIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1jdmUtMjAxNC04 MTQxLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggNzUlCnJlbmFtZSBmcm9tIHNyY3BrZ3MvdW56aXAv cGF0Y2hlcy9wYXRjaC1wcm9jZXNzLmMuZGlmZgpyZW5hbWUgdG8gc3JjcGtncy91bnppcC9wYXRj aGVzL3VuemlwLTYuMC1jdmUtMjAxNC04MTQxLnBhdGNoCmluZGV4IGNmMzk2YTk3MWUyLi41ODRj NTc2ZjdlOCAxMDA2NDQKLS0tIGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3BhdGNoLXByb2Nlc3Mu Yy5kaWZmCisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtY3ZlLTIwMTQtODE0 MS5wYXRjaApAQCAtMSw5ICsxLDM1IEBACi0kTmV0QlNEOiBwYXRjaC1wcm9jZXNzLmMsdiAxLjEg MjAxNC8xMi8yNSAxNjo0ODozMyB3aXogRXhwICQKLQotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQu Y29tL3Nob3dfYnVnLmNnaT9pZD1DVkUtMjAxNC04MTQxCi0KLS0tLSBwcm9jZXNzLmMub3JpZwky MDA5LTAzLTA2IDAxOjI1OjEwLjAwMDAwMDAwMCArMDAwMAotKysrIHByb2Nlc3MuYworZGlmZiAt LWdpdCBhL2ZpbGVpby5jIGIvZmlsZWlvLmMKK2luZGV4IDAzZmM0YmUuLjJhNjFhMzAgMTAwNjQ0 CistLS0gYS9maWxlaW8uYworKysrIGIvZmlsZWlvLmMKK0BAIC0xNzYsNiArMTc2LDggQEAgc3Rh dGljIFpDT05TVCBjaGFyIEZhciBGaWxlbmFtZVRvb0xvbmdUcnVuY1tdID0KKyAjZW5kaWYKKyBz dGF0aWMgWkNPTlNUIGNoYXIgRmFyIEV4dHJhRmllbGRUb29Mb25nW10gPQorICAgIndhcm5pbmc6 ICBleHRyYSBmaWVsZCB0b28gbG9uZyAoJWQpLiAgSWdub3JpbmcuLi5cbiI7Cisrc3RhdGljIFpD T05TVCBjaGFyIEZhciBFeHRyYUZpZWxkQ29ycnVwdFtdID0KKysgICJ3YXJuaW5nOiAgZXh0cmEg ZmllbGQgKHR5cGU6IDB4JTA0eCkgY29ycnVwdC4gIENvbnRpbnVpbmcuLi5cbiI7CisgCisgI2lm ZGVmIFdJTkRMTAorICAgIHN0YXRpYyBaQ09OU1QgY2hhciBGYXIgRGlza0Z1bGxRdWVyeVtdID0K K0BAIC0yMzAwLDcgKzIzMDIsMTMgQEAgaW50IGRvX3N0cmluZyhfX0dfXyBsZW5ndGgsIG9wdGlv bikgICAvKiByZXR1cm4gUEstdHlwZSBlcnJvciBjb2RlICovCisgICAgICAgICAgICAgICBsZW5n dGggPSBsZW5ndGgyOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvKiBMb29rcyBsaWtl IGhlcmUgaXMgd2hlcmUgZXh0cmEgZmllbGRzIGFyZSByZWFkICovCistICAgICAgICAgICAgZ2V0 WmlwNjREYXRhKF9fR19fIEcuZXh0cmFfZmllbGQsIGxlbmd0aCk7CisrICAgICAgICAgICAgaWYg KGdldFppcDY0RGF0YShfX0dfXyBHLmV4dHJhX2ZpZWxkLCBsZW5ndGgpICE9IFBLX0NPT0wpCisr ICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFy ICopc2xpZGUsCisrICAgICAgICAgICAgICAgICBMb2FkRmFyU3RyaW5nKCBFeHRyYUZpZWxkQ29y cnVwdCksIEVGX1BLU1o2NCkpOworKyAgICAgICAgICAgICAgICBlcnJvciA9IFBLX1dBUk47Cisr ICAgICAgICAgICAgfQorKworICNpZmRlZiBVTklDT0RFX1NVUFBPUlQKKyAgICAgICAgICAgICBH LnVuaXBhdGhfZmlsZW5hbWUgPSBOVUxMOworICAgICAgICAgICAgIGlmIChHLlV6Ty5VX2ZsYWcg PCAyKSB7CitkaWZmIC0tZ2l0IGEvcHJvY2Vzcy5jIGIvcHJvY2Vzcy5jCitpbmRleCBiZTZlMDA2 Li4wZDU3YWI0IDEwMDY0NAorLS0tIGEvcHJvY2Vzcy5jCisrKysgYi9wcm9jZXNzLmMKIEBAIC0x LDUgKzEsNSBAQAogIC8qCiAtICBDb3B5cmlnaHQgKGMpIDE5OTAtMjAwOSBJbmZvLVpJUC4gIEFs bCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xMSw3ICszNyw3IEBAIGh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9Q1ZFLTIwMTQtODE0MQogIAogICAgU2VlIHRoZSBhY2Nv bXBhbnlpbmcgZmlsZSBMSUNFTlNFLCB2ZXJzaW9uIDIwMDktSmFuLTAyIG9yIGxhdGVyCiAgICAo dGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZSBhbHNvIGluY2x1ZGVkIGluIHVuemlwLmgpIGZvciB0 ZXJtcyBvZiB1c2UuCi1AQCAtMTg4OCw0OCArMTg4OCw4MiBAQCBpbnQgZ2V0WmlwNjREYXRhKF9f R19fIGVmX2J1ZiwgZWZfbGVuKQorQEAgLTE4OTQsNDggKzE4OTQsODMgQEAgaW50IGdldFppcDY0 RGF0YShfX0dfXyBlZl9idWYsIGVmX2xlbikKICAgICAgYW5kIGEgNC1ieXRlIHZlcnNpb24gb2Yg ZGlzayBzdGFydCBudW1iZXIuCiAgICAgIFNldHMgYm90aCBsb2NhbCBoZWFkZXIgYW5kIGNlbnRy YWwgaGVhZGVyIGZpZWxkcy4gIE5vdCB0ZXJyaWJseSBjbGV2ZXIsCiAgICAgIGJ1dCBpdCBtZWFu cyB0aGF0IHRoaXMgcHJvY2VkdXJlIGlzIG9ubHkgY2FsbGVkIGluIG9uZSBwbGFjZS4KQEAgLTUw LDcgKzc2LDcgQEAgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD1D VkUtMjAxNC04MTQxCiAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICB9CiAtICAgICAgICBp ZiAoZWJfaWQgPT0gRUZfUEtTWjY0KSB7Ci0tCisgCiArICAgICAgICBpZiAoZWJfaWQgPT0gRUZf UEtTWjY0KQogKyAgICAgICAgewogICAgICAgICAgICBpbnQgb2Zmc2V0ID0gRUJfSEVBRFNJWkU7 CmRpZmYgLS1naXQgYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLWN2ZS0yMDE4LTEw MDAwMzUtaGVhcC1iYXNlZC1vdmVyZmxvdy5wYXRjaCBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91 bnppcC02LjAtY3ZlLTIwMTgtMTAwMDAzNS1oZWFwLWJhc2VkLW92ZXJmbG93LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi44Y2E3MTM4NjVjNAotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtY3ZlLTIwMTgtMTAwMDAz NS1oZWFwLWJhc2VkLW92ZXJmbG93LnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKKy0tLSBhL2ZpbGVp by5jCTIwMTQtMTItMDUgMDU6MDY6MDUgLTA2MDAKKysrKyBiL2ZpbGVpby5jCTIwMTctMTEtMTQg MDE6MDY6MjggLTA2MDAKK0BAIC0xLDUgKzEsNSBAQAorIC8qCistICBDb3B5cmlnaHQgKGMpIDE5 OTAtMjAwOSBJbmZvLVpJUC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrICBDb3B5cmlnaHQgKGMp IDE5OTAtMjAxNyBJbmZvLVpJUC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgCisgICBTZWUgdGhl IGFjY29tcGFueWluZyBmaWxlIExJQ0VOU0UsIHZlcnNpb24gMjAwOS1KYW4tMDIgb3IgbGF0ZXIK KyAgICh0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlIGFsc28gaW5jbHVkZWQgaW4gdW56aXAuaCkg Zm9yIHRlcm1zIG9mIHVzZS4KK0BAIC0xNTgyLDYgKzE1ODIsOCBAQAorICAgICBpbnQgciA9IEla X1BXX0VOVEVSRUQ7CisgICAgIGNoYXIgKm07CisgICAgIGNoYXIgKnByb21wdDsKKysgICAgY2hh ciAqZXA7CisrICAgIGNoYXIgKnpwOworIAorICNpZm5kZWYgUkVFTlRSQU5UCisgICAgIC8qIHRl bGwgcGlja3kgY29tcGlsZXJzIHRvIHNodXQgdXAgYWJvdXQgInVudXNlZCB2YXJpYWJsZSIgd2Fy bmluZ3MgKi8KK0BAIC0xNTkwLDkgKzE1OTIsMTIgQEAKKyAKKyAgICAgaWYgKCpyY250ID09IDAp IHsgICAgICAgICAgIC8qIEZpcnN0IGNhbGwgZm9yIGN1cnJlbnQgZW50cnkgKi8KKyAgICAgICAg ICpyY250ID0gMjsKKy0gICAgICAgIGlmICgocHJvbXB0ID0gKGNoYXIgKiltYWxsb2MoMipGSUxO QU1TSVogKyAxNSkpICE9IChjaGFyICopTlVMTCkgeworLSAgICAgICAgICAgIHNwcmludGYocHJv bXB0LCBMb2FkRmFyU3RyaW5nKFBhc3N3UHJvbXB0KSwKKy0gICAgICAgICAgICAgICAgICAgIEZu RmlsdGVyMSh6Zm4pLCBGbkZpbHRlcjIoZWZuKSk7CisrICAgICAgICB6cCA9IEZuRmlsdGVyMSgg emZuKTsKKysgICAgICAgIGVwID0gRm5GaWx0ZXIyKCBlZm4pOworKyAgICAgICAgcHJvbXB0ID0g KGNoYXIgKiltYWxsb2MoICAgICAgICAvKiBTbGlnaHRseSB0b28gbG9uZyAoMiogIiVzIikuICov CisrICAgICAgICAgc2l6ZW9mKCBQYXNzd1Byb21wdCkrIHN0cmxlbiggenApKyBzdHJsZW4oIGVw KSk7CisrICAgICAgICBpZiAocHJvbXB0ICE9IChjaGFyICopTlVMTCkgeworKyAgICAgICAgICAg IHNwcmludGYocHJvbXB0LCBMb2FkRmFyU3RyaW5nKFBhc3N3UHJvbXB0KSwgenAsIGVwKTsKKyAg ICAgICAgICAgICBtID0gcHJvbXB0OworICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgbSA9 IChjaGFyICopTG9hZEZhclN0cmluZyhQYXNzd1Byb21wdDIpOwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1jdmUtMjAxOC0xODM4NC5wYXRjaCBiL3NyY3BrZ3Mv dW56aXAvcGF0Y2hlcy91bnppcC02LjAtY3ZlLTIwMTgtMTgzODQucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjU0ZDRiOGNiNjQ1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1jdmUtMjAxOC0xODM4NC5wYXRjaApA QCAtMCwwICsxLDM1IEBACistLS0gdW56aXA2MC9saXN0LmMJCisrKysgdW56aXA2MC9saXN0LmMJ CitAQCAtOTcsNyArOTcsNyBAQCBpbnQgbGlzdF9maWxlcyhfX0cpICAgIC8qIHJldHVybiBQSy10 eXBlCisgeworICAgICBpbnQgZG9fdGhpc19maWxlPUZBTFNFLCBjZmFjdG9yLCBlcnJvciwgZXJy b3JfaW5fYXJjaGl2ZT1QS19DT09MOworICNpZm5kZWYgV0lORExMCistICAgIGNoYXIgc2duLCBj ZmFjdG9yc3RyWzEzXTsKKysgICAgY2hhciBzZ24sIGNmYWN0b3JzdHJbMSsxMCsxKzFdOwkvKiA8 c2duPjxpbnQ+JU5VTCAqLworICAgICBpbnQgbG9uZ2hkcj0odU8udmZsYWc+MSk7CisgI2VuZGlm CisgICAgIGludCBkYXRlX2Zvcm1hdDsKK0BAIC0zODksOSArMzg5LDkgQEAgaW50IGxpc3RfZmls ZXMoX19HKSAgICAvKiByZXR1cm4gUEstdHlwZQorICAgICAgICAgICAgIH0KKyAjZWxzZSAvKiAh V0lORExMICovCisgICAgICAgICAgICAgaWYgKGNmYWN0b3IgPT0gMTAwKQorLSAgICAgICAgICAg ICAgICBzcHJpbnRmKGNmYWN0b3JzdHIsIExvYWRGYXJTdHJpbmcoQ29tcEZhY3RvcjEwMCkpOwor KyAgICAgICAgICAgICAgICBzbnByaW50ZihjZmFjdG9yc3RyLCBzaXplb2YoY2ZhY3RvcnN0ciks IExvYWRGYXJTdHJpbmcoQ29tcEZhY3RvcjEwMCkpOworICAgICAgICAgICAgIGVsc2UKKy0gICAg ICAgICAgICAgICAgc3ByaW50ZihjZmFjdG9yc3RyLCBMb2FkRmFyU3RyaW5nKENvbXBGYWN0b3JT dHIpLCBzZ24sIGNmYWN0b3IpOworKyAgICAgICAgICAgICAgICBzbnByaW50ZihjZmFjdG9yc3Ry LCBzaXplb2YoY2ZhY3RvcnN0ciksIExvYWRGYXJTdHJpbmcoQ29tcEZhY3RvclN0ciksIHNnbiwg Y2ZhY3Rvcik7CisgICAgICAgICAgICAgaWYgKGxvbmdoZHIpCisgICAgICAgICAgICAgICAgIElu Zm8oc2xpZGUsIDAsICgoY2hhciAqKXNsaWRlLCBMb2FkRmFyU3RyaW5nKExvbmdIZHJTdGF0cyks CisgICAgICAgICAgICAgICAgICAgRm1ab2ZmdChHLmNyZWMudWNzaXplLCAiOCIsICJ1IiksIG1l dGhidWYsCitAQCAtNDcxLDkgKzQ3MSw5IEBAIGludCBsaXN0X2ZpbGVzKF9fRykgICAgLyogcmV0 dXJuIFBLLXR5cGUKKyAKKyAjZWxzZSAvKiAhV0lORExMICovCisgICAgICAgICBpZiAoY2ZhY3Rv ciA9PSAxMDApCistICAgICAgICAgICAgc3ByaW50ZihjZmFjdG9yc3RyLCBMb2FkRmFyU3RyaW5n KENvbXBGYWN0b3IxMDApKTsKKysgICAgICAgICAgICBzbnByaW50ZihjZmFjdG9yc3RyLCBzaXpl b2YoY2ZhY3RvcnN0ciksIExvYWRGYXJTdHJpbmcoQ29tcEZhY3RvcjEwMCkpOworICAgICAgICAg ZWxzZQorLSAgICAgICAgICAgIHNwcmludGYoY2ZhY3RvcnN0ciwgTG9hZEZhclN0cmluZyhDb21w RmFjdG9yU3RyKSwgc2duLCBjZmFjdG9yKTsKKysgICAgICAgICAgICBzbnByaW50ZihjZmFjdG9y c3RyLCBzaXplb2YoY2ZhY3RvcnN0ciksIExvYWRGYXJTdHJpbmcoQ29tcEZhY3RvclN0ciksIHNn biwgY2ZhY3Rvcik7CisgICAgICAgICBpZiAobG9uZ2hkcikgeworICAgICAgICAgICAgIEluZm8o c2xpZGUsIDAsICgoY2hhciAqKXNsaWRlLCBMb2FkRmFyU3RyaW5nKExvbmdGaWxlVHJhaWxlciks CisgICAgICAgICAgICAgICBGbVpvZmZ0KHRvdF91Y3NpemUsICI4IiwgInUiKSwgRm1ab2ZmdCh0 b3RfY3NpemUsICI4IiwgInUiKSwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91 bnppcC02LjAtZXhlYy1zaGllbGQucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAt Ni4wLWV4ZWMtc2hpZWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwLi43NDUwMGFhNWQ0OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hl cy91bnppcC02LjAtZXhlYy1zaGllbGQucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorZGlmZiAtdXAg dW56aXA2MC9jcmNfaTM4Ni5TLmV4ZWMtc2hpZWxkIHVuemlwNjAvY3JjX2kzODYuUworLS0tIHVu emlwNjAvY3JjX2kzODYuUy5leGVjLXNoaWVsZAkyMDA3LTAxLTA3IDA2OjAyOjU4LjAwMDAwMDAw MCArMDEwMAorKysrIHVuemlwNjAvY3JjX2kzODYuUwkyMDA5LTExLTE4IDExOjE2OjM5LjYzMDM4 OTMxMiArMDEwMAorQEAgLTMwMiwzICszMDIsNiBAQCBfY3JjMzI6ICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIHVsZyBjCisgI2VuZGlmIC8qIGkzODYgfHwgX2kzODYgfHwgX0kzODYgfHwgX19p Mzg2ICovCisgCisgI2VuZGlmIC8qICFVU0VfWkxJQiAmJiAhQ1JDX1RBQkxFX09OTFkgKi8KKysK Kysuc2VjdGlvbiAubm90ZS5HTlUtc3RhY2ssICIiLCBAcHJvZ2JpdHMKKysucHJldmlvdXMKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtZml4LXJlY21hdGNoLnBh dGNoIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1maXgtcmVjbWF0Y2gucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhODU4M2M4Y2ExCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1maXgtcmVjbWF0 Y2gucGF0Y2gKQEAgLTAsMCArMSw0NzcgQEAKK2RpZmYgLXVwIHVuemlwNjAvbWF0Y2guYy5yZWNt YXRjaCB1bnppcDYwL21hdGNoLmMKKy0tLSB1bnppcDYwL21hdGNoLmMucmVjbWF0Y2gJMjAwNS0w OC0xNCAxMzowMDozNi4wMDAwMDAwMDAgLTA0MDAKKysrKyB1bnppcDYwL21hdGNoLmMJMjAxMy0w NS0yOCAxMDoyOTo1Ny45NDkwNzc1NDMgLTA0MDAKK0BAIC0yNywxNiArMjcsMTQgQEAKKyAKKyAg IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIAorLSAgQ29weXJpZ2h0IG9uIHJlY21hdGNoKCkgZnJvbSBa aXAncyB1dGlsLmMgKGFsdGhvdWdoIHJlY21hdGNoKCkgd2FzIGFsbW9zdAorLSAgY2VydGFpbmx5 IHdyaXR0ZW4gYnkgTWFyayBBZGxlci4uLmFzayBtZSBob3cgSSBjYW4gdGVsbCA6LSkgKToKKysg IENvcHlyaWdodCBvbiByZWNtYXRjaCgpIGZyb20gWmlwJ3MgdXRpbC5jCisrCSBDb3B5cmlnaHQg KGMpIDE5OTAtMjAwNSBJbmZvLVpJUC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgCistICAgICBD b3B5cmlnaHQgKEMpIDE5OTAtMTk5MiBNYXJrIEFkbGVyLCBSaWNoYXJkIEIuIFdhbGVzLCBKZWFu LWxvdXAgR2FpbGx5LAorLSAgICAgS2FpIFV3ZSBSb21tZWwgYW5kIElnb3IgTWFuZHJpY2hlbmtv LgorKwkgU2VlIHRoZSBhY2NvbXBhbnlpbmcgZmlsZSBMSUNFTlNFLCB2ZXJzaW9uIDIwMDQtTWF5 LTIyIG9yIGxhdGVyCisrCSBmb3IgdGVybXMgb2YgdXNlLgorKwkgSWYsIGZvciBzb21lIHJlYXNv biwgYm90aCBvZiB0aGVzZSBmaWxlcyBhcmUgbWlzc2luZywgdGhlIEluZm8tWklQIGxpY2Vuc2UK KysJIGFsc28gbWF5IGJlIGZvdW5kIGF0OiAgZnRwOi8vZnRwLmluZm8temlwLm9yZy9wdWIvaW5m b3ppcC9saWNlbnNlLmh0bWwgIAorIAorLSAgICAgUGVybWlzc2lvbiBpcyBncmFudGVkIHRvIGFu eSBpbmRpdmlkdWFsIG9yIGluc3RpdHV0aW9uIHRvIHVzZSwgY29weSwKKy0gICAgIG9yIHJlZGlz dHJpYnV0ZSB0aGlzIHNvZnR3YXJlIHNvIGxvbmcgYXMgYWxsIG9mIHRoZSBvcmlnaW5hbCBmaWxl cyBhcmUKKy0gICAgIGluY2x1ZGVkIHVubW9kaWZpZWQsIHRoYXQgaXQgaXMgbm90IHNvbGQgZm9y IHByb2ZpdCwgYW5kIHRoYXQgdGhpcyBjb3B5LQorLSAgICAgcmlnaHQgbm90aWNlIGlzIHJldGFp bmVkLgorIAorICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCitAQCAtNTMsNyArNTEsNyBAQAorIAor ICAgQSBzZXQgaXMgY29tcG9zZWQgb2YgY2hhcmFjdGVycyBvciByYW5nZXM7IGEgcmFuZ2UgbG9v a3MgbGlrZSBgYGNoYXJhY3RlcgorICAgaHlwaGVuIGNoYXJhY3RlcicnIChhcyBpbiAwLTkgb3Ig QS1aKS4gIFswLTlhLXpBLVpfXSBpcyB0aGUgbWluaW1hbCBzZXQgb2YKKy0gIGNoYXJhY3RlcnMg YWxsb3dlZCBpbiB0aGUgWy4uXSBwYXR0ZXJuIGNvbnN0cnVjdC4gIE90aGVyIGNoYXJhY3RlcnMg YXJlCisrICBjaGFyYWN0ZXJzIEFMbG93ZWQgaW4gdGhlIFsuLl0gcGF0dGVybiBjb25zdHJ1Y3Qu ICBPdGhlciBjaGFyYWN0ZXJzIGFyZQorICAgYWxsb3dlZCAoaS5lLiwgOC1iaXQgY2hhcmFjdGVy cykgaWYgeW91ciBzeXN0ZW0gd2lsbCBzdXBwb3J0IHRoZW0uCisgCisgICBUbyBzdXBwcmVzcyB0 aGUgc3BlY2lhbCBzeW50YWN0aWMgc2lnbmlmaWNhbmNlIG9mIGFueSBvZiBgYFtdKj8hXi1cJycs IGluLQorQEAgLTEwMSw4ICs5OSwzMiBAQAorICMgIGRlZmluZSBXSUxEQ0hBUiAgICc/JworICMg IGRlZmluZSBCRUdfUkFOR0UgICdbJworICMgIGRlZmluZSBFTkRfUkFOR0UgICddJworKyMgIGRl ZmluZSBXSUxEQ0hSX1NJTkdMRSAnPycKKysjICBkZWZpbmUgRElSU0VQX0NIUiAnLycKKysjICBk ZWZpbmUgV0lMRENIUl9NVUxUSSAnKicKKyAjZW5kaWYKKyAKKysjaWZkZWYgV0lMRF9TVE9QX0FU X0RJUgorKyAgIGludCB3aWxkX3N0b3BfYXRfZGlyID0gMTsgLyogZGVmYXVsdCB3aWxkY2FyZHMg ZG8gbm90IGluY2x1ZGUgLyBpbiBtYXRjaGVzICovCisrI2Vsc2UKKysgICBpbnQgd2lsZF9zdG9w X2F0X2RpciA9IDA7IC8qIGRlZmF1bHQgd2lsZGNhcmRzIGRvIGluY2x1ZGUgLyBpbiBtYXRjaGVz ICovCisrI2VuZGlmCisrCisrCisrCisrLyoKKysgKiBjYXNlIG1hcHBpbmcgZnVuY3Rpb25zLiBj YXNlX21hcCBpcyB1c2VkIHRvIGlnbm9yZSBjYXNlIGluIGNvbXBhcmlzb25zLAorKyAqIHRvX3Vw IGlzIHVzZWQgdG8gZm9yY2UgdXBwZXIgY2FzZSBldmVuIG9uIFVuaXggKGZvciBkb3NpZnkgb3B0 aW9uKS4KKysgKi8KKysjaWZkZWYgVVNFX0NBU0VfTUFQCisrIyAgZGVmaW5lIGNhc2VfbWFwKGMp IHVwcGVyWyhjKSAmIDB4ZmZdCisrIyAgZGVmaW5lIHRvX3VwKGMpICAgIHVwcGVyWyhjKSAmIDB4 ZmZdCisrI2Vsc2UKKysjICBkZWZpbmUgY2FzZV9tYXAoYykgKGMpCisrIyAgZGVmaW5lIHRvX3Vw KGMpICAgICgoYykgPj0gJ2EnICYmIChjKSA8PSAneicgPyAoYyktJ2EnKydBJyA6IChjKSkKKysj ZW5kaWYgLyogVVNFX0NBU0VfTUFQICovCisrCisrCisgI2lmIDAgICAgICAgICAgICAgICAgLyog R1JSOiAgYWRkIHRoaXMgdG8gdW56aXAuaCBzb21lZGF5Li4uICovCisgI2lmICEoZGVmaW5lZChN U0RPUykgJiYgZGVmaW5lZChET1NXSUxEKSkKKyAjaWZkZWYgV0lMRF9TVE9QX0FUX0RJUgorQEAg LTExNCw4ICsxMzYsOCBAQCBpbnQgcmVjbWF0Y2ggT0YoKFpDT05TVCB1Y2ggKnBhdHRlcm4sIFpD CisgICAgICAgICAgICAgICAgICBpbnQgaWdub3JlX2Nhc2UgX19XRExQUk8pKTsKKyAjZW5kaWYK KyAjZW5kaWYgLyogMCAqLworLXN0YXRpYyBpbnQgcmVjbWF0Y2ggT0YoKFpDT05TVCB1Y2ggKnBh dHRlcm4sIFpDT05TVCB1Y2ggKnN0cmluZywKKy0gICAgICAgICAgICAgICAgICAgICAgICBpbnQg aWdub3JlX2Nhc2UgX19XRExQUk8pKTsKKytzdGF0aWMgaW50IHJlY21hdGNoIE9GKChaQ09OU1Qg Y2hhciAqLCBaQ09OU1QgY2hhciAqLCAKKysgICAgICAgICAgICAgICAgICAgICAgICBpbnQpKTsK KyBzdGF0aWMgY2hhciAqaXNzaGV4cCBPRigoWkNPTlNUIGNoYXIgKnApKTsKKyBzdGF0aWMgaW50 IG5hbWVjbXAgT0YoKFpDT05TVCBjaGFyICpzMSwgWkNPTlNUIGNoYXIgKnMyKSk7CisgCitAQCAt MTU0LDE5MiArMTc2LDI0MCBAQCBpbnQgbWF0Y2goc3RyaW5nLCBwYXR0ZXJuLCBpZ25vcmVfY2Fz ZSBfCisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGRvc3BhdHRlcm5bai0xXSA9ICdcMCc7 ICAgICAgICAgICAgICAgICAgICAvKiBudWtlIHRoZSBlbmQgIi4iICovCisgICAgICAgICB9Cist ICAgICAgICBqID0gcmVjbWF0Y2goKHVjaCAqKWRvc3BhdHRlcm4sICh1Y2ggKilzdHJpbmcsIGln bm9yZV9jYXNlIF9fV0RMKTsKKysgICAgICAgIGogPSByZWNtYXRjaChkb3NwYXR0ZXJuLCBzdHJp bmcsIGlnbm9yZV9jYXNlKTsKKyAgICAgICAgIGZyZWUoZG9zcGF0dGVybik7CisgICAgICAgICBy ZXR1cm4gaiA9PSAxOworICAgICB9IGVsc2UKKyAjZW5kaWYgLyogTVNET1MgJiYgRE9TV0lMRCAq LworLSAgICByZXR1cm4gcmVjbWF0Y2goKHVjaCAqKXBhdHRlcm4sICh1Y2ggKilzdHJpbmcsIGln bm9yZV9jYXNlIF9fV0RMKSA9PSAxOworKyAgICByZXR1cm4gcmVjbWF0Y2gocGF0dGVybiwgc3Ry aW5nLCBpZ25vcmVfY2FzZSkgPT0gMTsKKyB9CisgCisrI2lmZGVmIF9NQkNTCisrCisrY2hhciAq X19fdG1wX3B0cjsKKyAKKysjZW5kaWYKKyAKKy1zdGF0aWMgaW50IHJlY21hdGNoKHAsIHMsIGlj IF9fV0RMKQorLSAgICBaQ09OU1QgdWNoICpwOyAgICAgICAgLyogc2ggcGF0dGVybiB0byBtYXRj aCAqLworLSAgICBaQ09OU1QgdWNoICpzOyAgICAgICAgLyogc3RyaW5nIHRvIHdoaWNoIHRvIG1h dGNoIGl0ICovCistICAgIGludCBpYzsgICAgICAgICAgICAgICAvKiB0cnVlIGZvciBjYXNlIGlu c2Vuc2l0aXZpdHkgKi8KKy0gICAgX19XRExERUYgICAgICAgICAgICAgIC8qIGRpcmVjdG9yeSBz ZXBjaGFyIGZvciBXaWxkU3RvcEF0RGlyIG1vZGUsIG9yIDAgKi8KKytzdGF0aWMgaW50IHJlY21h dGNoKHAsIHMsIGNzKQorK1pDT05TVCBjaGFyICpwOyAgICAgICAgIC8qIHNoIHBhdHRlcm4gdG8g bWF0Y2ggKi8KKytaQ09OU1QgY2hhciAqczsgICAgICAgICAvKiBzdHJpbmcgdG8gbWF0Y2ggaXQg dG8gKi8KKytpbnQgY3M7ICAgICAgICAgICAgICAgICAvKiBmbGFnOiBmb3JjZSBjYXNlLXNlbnNp dGl2ZSBtYXRjaGluZyAqLworIC8qIFJlY3Vyc2l2ZWx5IGNvbXBhcmUgdGhlIHNoIHBhdHRlcm4g cCB3aXRoIHRoZSBzdHJpbmcgcyBhbmQgcmV0dXJuIDEgaWYKKy0gKiB0aGV5IG1hdGNoLCBhbmQg MCBvciAyIGlmIHRoZXkgZG9uJ3Qgb3IgaWYgdGhlcmUgaXMgYSBzeW50YXggZXJyb3IgaW4gdGhl CistICogcGF0dGVybi4gIFRoaXMgcm91dGluZSByZWN1cnNlcyBvbiBpdHNlbGYgbm8gbW9yZSBk ZWVwbHkgdGhhbiB0aGUgbnVtYmVyCistICogb2YgY2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybi4g Ki8KKysgICB0aGV5IG1hdGNoLCBhbmQgMCBvciAyIGlmIHRoZXkgZG9uJ3Qgb3IgaWYgdGhlcmUg aXMgYSBzeW50YXggZXJyb3IgaW4gdGhlCisrICAgcGF0dGVybi4gIFRoaXMgcm91dGluZSByZWN1 cnNlcyBvbiBpdHNlbGYgbm8gZGVlcGVyIHRoYW4gdGhlIG51bWJlciBvZgorKyAgIGNoYXJhY3Rl cnMgaW4gdGhlIHBhdHRlcm4uICovCisgeworLSAgICB1bnNpZ25lZCBpbnQgYzsgICAgICAgLyog cGF0dGVybiBjaGFyIG9yIHN0YXJ0IG9mIHJhbmdlIGluIFstXSBsb29wICovCisrICBpbnQgYzsg ICAgICAgICAgICAgICAgLyogcGF0dGVybiBjaGFyIG9yIHN0YXJ0IG9mIHJhbmdlIGluIFstXSBs b29wICovCisrICAvKiBHZXQgZmlyc3QgY2hhcmFjdGVyLCB0aGUgcGF0dGVybiBmb3IgbmV3IHJl Y21hdGNoIGNhbGxzIGZvbGxvd3MgKi8KKysgLyogYm9ycm93ZWQgZnJvbSBaaXAncyBnbG9iYWwu YyAqLworKyBpbnQgbm9fd2lsZCA9IDA7IAorKyBpbnQgYWxsb3dfcmVnZXg9MTsKKysgIC8qIFRo aXMgZml4IHByb3ZpZGVkIGJ5IGFrdEBtNS5kaW9uLm5lLmpwIGZvciBKYXBhbmVzZS4KKysgICAg IFNlZSAyMSBKdWx5IDIwMDYgbWFpbC4KKysgICAgIEl0IG9ubHkgYXBwbGllcyB3aGVuIHAgaXMg cG9pbnRpbmcgdG8gYSBkb3VibGVieXRlIGNoYXJhY3RlciBhbmQKKysgICAgIHRoaW5ncyBsaWtl IC8gYW5kIHdpbGRjYXJkcyBhcmUgbm90IGRvdWJsZWJ5dGUuICBUaGlzIHByb2JhYmx5CisrICAg ICBzaG91bGQgbm90IGJlIG5lZWRlZC4gKi8KKyAKKy0gICAgLyogR2V0IGZpcnN0IGNoYXJhY3Rl ciwgdGhlIHBhdHRlcm4gZm9yIG5ldyByZWNtYXRjaCBjYWxscyBmb2xsb3dzICovCistICAgIGMg PSAqcDsgSU5DU1RSKHApOworKyNpZmRlZiBfTUJDUworKyAgaWYgKENMRU4ocCkgPT0gMikgewor KyAgICBpZiAoQ0xFTihzKSA9PSAyKSB7CisrICAgICAgcmV0dXJuICgqcCA9PSAqcyAmJiAqKHAr MSkgPT0gKihzKzEpKSA/CisrICAgICAgICByZWNtYXRjaChwICsgMiwgcyArIDIsIGNzKSA6IDA7 CisrICAgIH0gZWxzZSB7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysgIH0KKysjZW5kaWYg LyogP19NQkNTICovCisgCistICAgIC8qIElmIHRoYXQgd2FzIHRoZSBlbmQgb2YgdGhlIHBhdHRl cm4sIG1hdGNoIGlmIHN0cmluZyBlbXB0eSB0b28gKi8KKy0gICAgaWYgKGMgPT0gMCkKKy0gICAg ICAgIHJldHVybiAqcyA9PSAwOworKyAgYyA9ICpQT1NUSU5DU1RSKHApOworIAorLSAgICAvKiAn PycgKG9yICclJykgbWF0Y2hlcyBhbnkgY2hhcmFjdGVyIChidXQgbm90IGFuIGVtcHR5IHN0cmlu ZykuICovCistICAgIGlmIChjID09IFdJTERDSEFSKQorLSNpZmRlZiBXSUxEX1NUT1BfQVRfRElS CistICAgICAgICAvKiBJZiB1Ty5XX2ZsYWcgaXMgbm9uLXplcm8sIGl0IHdvbid0IG1hdGNoICcv JyAqLworLSAgICAgICAgcmV0dXJuICgqcyAmJiAoIXNlcGMgfHwgKnMgIT0gKHVjaClzZXBjKSkK Ky0gICAgICAgICAgICAgICA/IHJlY21hdGNoKHAsIHMgKyBDTEVOKHMpLCBpYywgc2VwYykgOiAw OworLSNlbHNlCistICAgICAgICByZXR1cm4gKnMgPyByZWNtYXRjaChwLCBzICsgQ0xFTihzKSwg aWMpIDogMDsKKy0jZW5kaWYKKysgIC8qIElmIHRoYXQgd2FzIHRoZSBlbmQgb2YgdGhlIHBhdHRl cm4sIG1hdGNoIGlmIHN0cmluZyBlbXB0eSB0b28gKi8KKysgIGlmIChjID09IDApCisrICAgIHJl dHVybiAqcyA9PSAwOworKworKyAgLyogJz8nIChvciAnJScgb3IgJyMnKSBtYXRjaGVzIGFueSBj aGFyYWN0ZXIgKGJ1dCBub3QgYW4gZW1wdHkgc3RyaW5nKSAqLworKyAgaWYgKGMgPT0gV0lMRENI Ul9TSU5HTEUpIHsKKysgICAgaWYgKHdpbGRfc3RvcF9hdF9kaXIpCisrICAgICAgcmV0dXJuICgq cyAmJiAqcyAhPSBESVJTRVBfQ0hSKSA/IHJlY21hdGNoKHAsIHMgKyBDTEVOKHMpLCBjcykgOiAw OworKyAgICBlbHNlCisrICAgICAgcmV0dXJuICpzID8gcmVjbWF0Y2gocCwgcyArIENMRU4ocyks IGNzKSA6IDA7CisrICB9CisgCistICAgIC8qICcqJyBtYXRjaGVzIGFueSBudW1iZXIgb2YgY2hh cmFjdGVycywgaW5jbHVkaW5nIHplcm8gKi8KKysgIC8qIFdJTERDSFJfTVVMVEkgKCcqJykgbWF0 Y2hlcyBhbnkgbnVtYmVyIG9mIGNoYXJhY3RlcnMsIGluY2x1ZGluZyB6ZXJvICovCisgI2lmZGVm IEFNSUdBCistICAgIGlmIChjID09ICcjJyAmJiAqcCA9PSAnPycpICAgICAvKiAiIz8iIGlzIEFt aWdhLWVzZSBmb3IgIioiICovCistICAgICAgICBjID0gJyonLCBwKys7CisrICBpZiAoIW5vX3dp bGQgJiYgYyA9PSAnIycgJiYgKnAgPT0gJz8nKSAgICAgICAgICAgIC8qICIjPyIgaXMgQW1pZ2Et ZXNlIGZvciAiKiIgKi8KKysgICAgYyA9IFdJTERDSFJfTVVMVEksIHArKzsKKyAjZW5kaWYgLyog QU1JR0EgKi8KKy0gICAgaWYgKGMgPT0gJyonKSB7CistI2lmZGVmIFdJTERfU1RPUF9BVF9ESVIK Ky0gICAgICAgIGlmIChzZXBjKSB7CistICAgICAgICAgIC8qIGNoZWNrIGZvciBzaW5nbGUgIioi IG9yIGRvdWJsZSAiKioiICovCistIyAgaWZkZWYgQU1JR0EKKy0gICAgICAgICAgaWYgKChjID0g cFswXSkgPT0gJyMnICYmIHBbMV0gPT0gJz8nKSAvKiAiIz8iIGlzIEFtaWdhLWVzZSBmb3IgIioi ICovCistICAgICAgICAgICAgYyA9ICcqJywgcCsrOworLSAgICAgICAgICBpZiAoYyAhPSAnKicp IHsKKy0jICBlbHNlIC8qICFBTUlHQSAqLworLSAgICAgICAgICBpZiAoKnAgIT0gJyonKSB7Cist IyAgZW5kaWYgLyogP0FNSUdBICovCistICAgICAgICAgICAgLyogc2luZ2xlICIqIjogdGhpcyBk b2Vzbid0IG1hdGNoIHRoZSBkaXJzZXAgY2hhcmFjdGVyICovCistICAgICAgICAgICAgZm9yICg7 ICpzICYmICpzICE9ICh1Y2gpc2VwYzsgSU5DU1RSKHMpKQorLSAgICAgICAgICAgICAgICBpZiAo KGMgPSByZWNtYXRjaChwLCBzLCBpYywgc2VwYykpICE9IDApCistICAgICAgICAgICAgICAgICAg ICByZXR1cm4gKGludCljOworLSAgICAgICAgICAgIC8qIGVuZCBvZiBwYXR0ZXJuOiBtYXRjaGVk IGlmIGF0IGVuZCBvZiBzdHJpbmcsIGVsc2UgY29udGludWUgKi8KKy0gICAgICAgICAgICBpZiAo KnAgPT0gJ1wwJykKKy0gICAgICAgICAgICAgICAgcmV0dXJuICgqcyA9PSAwKTsKKy0gICAgICAg ICAgICAvKiBjb250aW51ZSB0byBtYXRjaCBpZiBhdCBzZXBjIGluIHBhdHRlcm4sIGVsc2UgZ2l2 ZSB1cCAqLworLSAgICAgICAgICAgIHJldHVybiAoKnAgPT0gKHVjaClzZXBjIHx8ICgqcCA9PSAn XFwnICYmIHBbMV0gPT0gKHVjaClzZXBjKSkKKy0gICAgICAgICAgICAgICAgICAgPyByZWNtYXRj aChwLCBzLCBpYywgc2VwYykgOiAyOworLSAgICAgICAgICB9CistICAgICAgICAgIC8qICIqKiI6 IHRoaXMgbWF0Y2hlcyBzbGFzaGVzICovCistICAgICAgICAgICsrcDsgICAgICAgIC8qIG1vdmUg cCBiZWhpbmQgdGhlIHNlY29uZCAnKicgKi8KKy0gICAgICAgICAgLyogYW5kIGNvbnRpbnVlIHdp dGggdGhlIG5vbi1XX2ZsYWcgY29kZSB2YXJpYW50ICovCistICAgICAgICB9CistI2VuZGlmIC8q IFdJTERfU1RPUF9BVF9ESVIgKi8KKysgIGlmICghbm9fd2lsZCAmJiBjID09IFdJTERDSFJfTVVM VEkpCisrICB7CisrICAgIGlmICh3aWxkX3N0b3BfYXRfZGlyKSB7CisrICAgICAgLyogQ2hlY2sg Zm9yIGFuIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBXSUxEQ0hSX01VTFRJICovCisrIyBpZmRlZiBB TUlHQQorKyAgICAgIGlmICgoYyA9IHBbMF0pID09ICcjJyAmJiBwWzFdID09ICc/JykgLyogIiM/ IiBpcyBBbWlnYS1lc2UgZm9yICIqIiAqLworKyAgICAgICAgYyA9IFdJTERDSFJfTVVMVEksIHAr KzsKKysgICAgICBpZiAoYyAhPSBXSUxEQ0hSX01VTFRJKSB7CisrIyBlbHNlIC8qICFBTUlHQSAq LworKyAgICAgIGlmICgqcCAhPSBXSUxEQ0hSX01VTFRJKSB7CisrIyBlbmRpZiAvKiA/QU1JR0Eg Ki8KKysgICAgICAgIC8qIFNpbmdsZSBXSUxEQ0hSX01VTFRJICgnKicpOiB0aGlzIGRvZXNuJ3Qg bWF0Y2ggc2xhc2hlcyAqLworKyAgICAgICAgZm9yICg7ICpzICYmICpzICE9IERJUlNFUF9DSFI7 IElOQ1NUUihzKSkKKysgICAgICAgICAgaWYgKChjID0gcmVjbWF0Y2gocCwgcywgY3MpKSAhPSAw KQorKyAgICAgICAgICAgIHJldHVybiBjOworKyAgICAgICAgLyogZW5kIG9mIHBhdHRlcm46IG1h dGNoZWQgaWYgYXQgZW5kIG9mIHN0cmluZywgZWxzZSBjb250aW51ZSAqLworICAgICAgICAgaWYg KCpwID09IDApCistICAgICAgICAgICAgcmV0dXJuIDE7CistICAgICAgICBpZiAoaXNzaGV4cCgo WkNPTlNUIGNoYXIgKilwKSA9PSBOVUxMKSB7CistICAgICAgICAgICAgLyogT3B0aW1pemF0aW9u IGZvciByZXN0IG9mIHBhdHRlcm4gYmVpbmcgYSBsaXRlcmFsIHN0cmluZzoKKy0gICAgICAgICAg ICAgKiBJZiB0aGVyZSBhcmUgbm8gb3RoZXIgc2hlbGwgZXhwcmVzc2lvbiBjaGFycyBpbiB0aGUg cmVzdAorLSAgICAgICAgICAgICAqIG9mIHRoZSBwYXR0ZXJuIGJlaGluZCB0aGUgbXVsdGktY2hh ciB3aWxkY2FyZCwgdGhlbiBqdXN0CistICAgICAgICAgICAgICogY29tcGFyZSB0aGUgbGl0ZXJh bCBzdHJpbmcgdGFpbC4KKy0gICAgICAgICAgICAgKi8KKy0gICAgICAgICAgICBaQ09OU1QgdWNo ICpzcmVzdDsKKy0KKy0gICAgICAgICAgICBzcmVzdCA9IHMgKyAoc3RybGVuKChaQ09OU1QgY2hh ciAqKXMpIC0gc3RybGVuKChaQ09OU1QgY2hhciAqKXApKTsKKy0gICAgICAgICAgICBpZiAoc3Jl c3QgLSBzIDwgMCkKKy0gICAgICAgICAgICAgICAgLyogcmVtYWluaW5nIGxpdGVyYWwgc3RyaW5n IGZyb20gcGF0dGVybiBpcyBsb25nZXIgdGhhbiByZXN0CistICAgICAgICAgICAgICAgICAqIG9m IHRlc3Qgc3RyaW5nLCB0aGVyZSBjYW4ndCBiZSBhIG1hdGNoCistICAgICAgICAgICAgICAgICAq LworLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKy0gICAgICAgICAgICBlbHNlCistICAgICAg ICAgICAgICAvKiBjb21wYXJlIHRoZSByZW1haW5pbmcgbGl0ZXJhbCBwYXR0ZXJuIHN0cmluZyB3 aXRoIHRoZSBsYXN0CistICAgICAgICAgICAgICAgKiBieXRlcyBvZiB0aGUgdGVzdCBzdHJpbmcg dG8gY2hlY2sgZm9yIGEgbWF0Y2gKKy0gICAgICAgICAgICAgICAqLworKyAgICAgICAgICByZXR1 cm4gKCpzID09IDApOworKyAgICAgICAgLyogY29udGludWUgdG8gbWF0Y2ggaWYgYXQgRElSU0VQ X0NIUiBpbiBwYXR0ZXJuLCBlbHNlIGdpdmUgdXAgKi8KKysgICAgICAgIHJldHVybiAoKnAgPT0g RElSU0VQX0NIUiB8fCAoKnAgPT0gJ1xcJyAmJiBwWzFdID09IERJUlNFUF9DSFIpKQorKyAgICAg ICAgICAgICAgID8gcmVjbWF0Y2gocCwgcywgY3MpIDogMjsKKysgICAgICB9CisrICAgICAgLyog VHdvIGNvbnNlY3V0aXZlIFdJTERDSFJfTVVMVEkgKCIqKiIpOiB0aGlzIG1hdGNoZXMgRElSU0VQ X0NIUiAoJy8nKSAqLworKyAgICAgIHArKzsgICAgICAgIC8qIG1vdmUgcCBwYXN0IHRoZSBzZWNv bmQgV0lMRENIUl9NVUxUSSAqLworKyAgICAgIC8qIGNvbnRpbnVlIHdpdGggdGhlIG5vcm1hbCBu b24tV0lMRF9TVE9QX0FUX0RJUiBjb2RlICovCisrICAgIH0gLyogd2lsZF9zdG9wX2F0X2RpciAq LworKworKyAgICAvKiBOb3Qgd2lsZF9zdG9wX2F0X2RpciAqLworKyAgICBpZiAoKnAgPT0gMCkK KysgICAgICByZXR1cm4gMTsKKysgICAgaWYgKCFpc3NoZXhwKChjaGFyICopcCkpCisrICAgIHsK KysgICAgICAvKiBvcHRpbWl6YXRpb24gZm9yIHJlc3Qgb2YgcGF0dGVybiBiZWluZyBhIGxpdGVy YWwgc3RyaW5nICovCisrCisrICAgICAgLyogb3B0aW1pemF0aW9uIHRvIGhhbmRsZSBwYXR0ZXJu cyBsaWtlICoudHh0ICovCisrICAgICAgLyogaWYgdGhlIGZpcnN0IGNoYXIgaW4gdGhlIHBhdHRl cm4gaXMgJyonIGFuZCB0aGVyZSAqLworKyAgICAgIC8qIGFyZSBubyBvdGhlciBzaGVsbCBleHBy ZXNzaW9uIGNoYXJzLCBpLmUuIGEgbGl0ZXJhbCBzdHJpbmcgKi8KKysgICAgICAvKiB0aGVuIGp1 c3QgY29tcGFyZSB0aGUgbGl0ZXJhbCBzdHJpbmcgYXQgdGhlIGVuZCAqLworKworKyAgICAgIFpD T05TVCBjaGFyICpzcmVzdDsKKysKKysgICAgICBzcmVzdCA9IHMgKyAoc3RybGVuKHMpIC0gc3Ry bGVuKHApKTsKKysgICAgICBpZiAoc3Jlc3QgLSBzIDwgMCkKKysgICAgICAgIC8qIHJlbWFpbmlu ZyBsaXRlcmFsIHN0cmluZyBmcm9tIHBhdHRlcm4gaXMgbG9uZ2VyIHRoYW4gcmVzdCBvZgorKyAg ICAgICAgICAgdGVzdCBzdHJpbmcsIHRoZXJlIGNhbid0IGJlIGEgbWF0Y2gKKysgICAgICAgICAq LworKyAgICAgICAgcmV0dXJuIDA7CisrICAgICAgZWxzZQorKyAgICAgICAgLyogY29tcGFyZSB0 aGUgcmVtYWluaW5nIGxpdGVyYWwgcGF0dGVybiBzdHJpbmcgd2l0aCB0aGUgbGFzdCBieXRlcwor KyAgICAgICAgICAgb2YgdGhlIHRlc3Qgc3RyaW5nIHRvIGNoZWNrIGZvciBhIG1hdGNoICovCisg I2lmZGVmIF9NQkNTCistICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICBaQ09OU1QgdWNo ICpxID0gczsKKysgICAgICB7CisrICAgICAgICBaQ09OU1QgY2hhciAqcSA9IHM7CisgCistICAg ICAgICAgICAgICAgIC8qIE1CQ1MtYXdhcmUgY29kZSBtdXN0IG5vdCBzY2FuIGJhY2t3YXJkcyBp bnRvIGEgc3RyaW5nIGZyb20KKy0gICAgICAgICAgICAgICAgICogdGhlIGVuZC4KKy0gICAgICAg ICAgICAgICAgICogU28sIHdlIGhhdmUgdG8gbW92ZSBmb3J3YXJkIGJ5IGNoYXJhY3RlciBmcm9t IG91ciB3ZWxsLWtub3duCistICAgICAgICAgICAgICAgICAqIGNoYXJhY3RlciBwb3NpdGlvbiBz IGluIHRoZSB0ZXN0IHN0cmluZyB1bnRpbCB3ZSBoYXZlCistICAgICAgICAgICAgICAgICAqIGFk dmFuY2VkIHRvIHRoZSBzcmVzdCBwb3NpdGlvbi4KKy0gICAgICAgICAgICAgICAgICovCistICAg ICAgICAgICAgICAgIHdoaWxlIChxIDwgc3Jlc3QpCistICAgICAgICAgICAgICAgICAgSU5DU1RS KHEpOworLSAgICAgICAgICAgICAgICAvKiBJbiBjYXNlIHRoZSBieXRlICpzcmVzdCBpcyBhIHRy YWlsaW5nIGJ5dGUgb2YgYSBtdWx0aWJ5dGUKKy0gICAgICAgICAgICAgICAgICogY2hhcmFjdGVy IGluIHRoZSB0ZXN0IHN0cmluZyBzLCB3ZSBoYXZlIGFjdHVhbGx5IGFkdmFuY2VkCistICAgICAg ICAgICAgICAgICAqIHBhc3QgdGhlIHBvc2l0aW9uIChzcmVzdCkuCistICAgICAgICAgICAgICAg ICAqIEZvciB0aGlzIGNhc2UsIHRoZSBtYXRjaCBoYXMgZmFpbGVkIQorLSAgICAgICAgICAgICAg ICAgKi8KKy0gICAgICAgICAgICAgICAgaWYgKHEgIT0gc3Jlc3QpCistICAgICAgICAgICAgICAg ICAgICByZXR1cm4gMDsKKy0gICAgICAgICAgICAgICAgcmV0dXJuICgoaWMKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgPyBuYW1lY21wKChaQ09OU1QgY2hhciAqKXAsIChaQ09OU1QgY2hhciAq KXEpCistICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RyY21wKChaQ09OU1QgY2hhciAqKXAs IChaQ09OU1QgY2hhciAqKXEpCistICAgICAgICAgICAgICAgICAgICAgICAgKSA9PSAwKTsKKy0g ICAgICAgICAgICB9CisrICAgICAgICAvKiBNQkNTLWF3YXJlIGNvZGUgbXVzdCBub3Qgc2NhbiBi YWNrd2FyZHMgaW50byBhIHN0cmluZyBmcm9tCisrICAgICAgICAgKiB0aGUgZW5kLgorKyAgICAg ICAgICogU28sIHdlIGhhdmUgdG8gbW92ZSBmb3J3YXJkIGJ5IGNoYXJhY3RlciBmcm9tIG91ciB3 ZWxsLWtub3duCisrICAgICAgICAgKiBjaGFyYWN0ZXIgcG9zaXRpb24gcyBpbiB0aGUgdGVzdCBz dHJpbmcgdW50aWwgd2UgaGF2ZSBhZHZhbmNlZAorKyAgICAgICAgICogdG8gdGhlIHNyZXN0IHBv c2l0aW9uLgorKyAgICAgICAgICovCisrICAgICAgICB3aGlsZSAocSA8IHNyZXN0KQorKyAgICAg ICAgICBJTkNTVFIocSk7CisrICAgICAgICAvKiBJbiBjYXNlIHRoZSBieXRlICpzcmVzdCBpcyBh IHRyYWlsaW5nIGJ5dGUgb2YgYSBtdWx0aWJ5dGUKKysgICAgICAgICAqIGNoYXJhY3Rlciwgd2Ug aGF2ZSBhY3R1YWxseSBhZHZhbmNlZCBwYXN0IHRoZSBwb3NpdGlvbiAoc3Jlc3QpLgorKyAgICAg ICAgICogRm9yIHRoaXMgY2FzZSwgdGhlIG1hdGNoIGhhcyBmYWlsZWQhCisrICAgICAgICAgKi8K KysgICAgICAgIGlmIChxICE9IHNyZXN0KQorKyAgICAgICAgICByZXR1cm4gMDsKKysgICAgICAg IHJldHVybiAoKGNzID8gc3RyY21wKHAsIHEpIDogbmFtZWNtcChwLCBxKSkgPT0gMCk7CisrICAg ICAgfQorICNlbHNlIC8qICFfTUJDUyAqLworLSAgICAgICAgICAgICAgICByZXR1cm4gKChpYwor LSAgICAgICAgICAgICAgICAgICAgICAgICA/IG5hbWVjbXAoKFpDT05TVCBjaGFyICopcCwgKFpD T05TVCBjaGFyICopc3Jlc3QpCistICAgICAgICAgICAgICAgICAgICAgICAgIDogc3RyY21wKCha Q09OU1QgY2hhciAqKXAsIChaQ09OU1QgY2hhciAqKXNyZXN0KQorLSAgICAgICAgICAgICAgICAg ICAgICAgICkgPT0gMCk7CisrICAgICAgICByZXR1cm4gKChjcyA/IHN0cmNtcChwLCBzcmVzdCkg OiBuYW1lY21wKHAsIHNyZXN0KSkgPT0gMCk7CisgI2VuZGlmIC8qID9fTUJDUyAqLworLSAgICAg ICAgfSBlbHNlIHsKKy0gICAgICAgICAgICAvKiBwYXR0ZXJuIGNvbnRhaW5zIG1vcmUgd2lsZGNh cmRzLCBjb250aW51ZSB3aXRoIHJlY3Vyc2lvbi4uLiAqLworLSAgICAgICAgICAgIGZvciAoOyAq czsgSU5DU1RSKHMpKQorLSAgICAgICAgICAgICAgICBpZiAoKGMgPSByZWNtYXRjaChwLCBzLCBp YyBfX1dETCkpICE9IDApCistICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGludCljOworLSAg ICAgICAgICAgIHJldHVybiAyOyAgLyogMiBtZWFucyBnaXZlIHVwLS1tYXRjaCB3aWxsIHJldHVy biBmYWxzZSAqLworLSAgICAgICAgfQorICAgICB9CistCistICAgIC8qIFBhcnNlIGFuZCBwcm9j ZXNzIHRoZSBsaXN0IG9mIGNoYXJhY3RlcnMgYW5kIHJhbmdlcyBpbiBicmFja2V0cyAqLworLSAg ICBpZiAoYyA9PSBCRUdfUkFOR0UpIHsKKy0gICAgICAgIGludCBlOyAgICAgICAgICAvKiBmbGFn IHRydWUgaWYgbmV4dCBjaGFyIHRvIGJlIHRha2VuIGxpdGVyYWxseSAqLworLSAgICAgICAgWkNP TlNUIHVjaCAqcTsgIC8qIHBvaW50ZXIgdG8gZW5kIG9mIFstXSBncm91cCAqLworLSAgICAgICAg aW50IHI7ICAgICAgICAgIC8qIGZsYWcgdHJ1ZSB0byBtYXRjaCBhbnl0aGluZyBidXQgdGhlIHJh bmdlICovCistCistICAgICAgICBpZiAoKnMgPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgLyogbmVlZCBhIGNoYXJhY3RlciB0byBtYXRjaCAqLworLSAgICAgICAgICAgIHJldHVybiAw OworLSAgICAgICAgcCArPSAociA9ICgqcCA9PSAnIScgfHwgKnAgPT0gJ14nKSk7ICAgIC8qIHNl ZSBpZiByZXZlcnNlICovCistICAgICAgICBmb3IgKHEgPSBwLCBlID0gMDsgKnE7IElOQ1NUUihx KSkgICAgICAgLyogZmluZCBjbG9zaW5nIGJyYWNrZXQgKi8KKy0gICAgICAgICAgICBpZiAoZSkK Ky0gICAgICAgICAgICAgICAgZSA9IDA7CistICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAg ICAgICBpZiAoKnEgPT0gJ1xcJykgICAgICAvKiBHUlI6ICBjaGFuZ2UgdG8gXiBmb3IgTVMtRE9T LCBPUy8yPyAqLworLSAgICAgICAgICAgICAgICAgICAgZSA9IDE7CistICAgICAgICAgICAgICAg IGVsc2UgaWYgKCpxID09IEVORF9SQU5HRSkKKy0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwor LSAgICAgICAgaWYgKCpxICE9IEVORF9SQU5HRSkgICAgICAgICAvKiBub3RoaW5nIG1hdGNoZXMg aWYgYmFkIHN5bnRheCAqLworLSAgICAgICAgICAgIHJldHVybiAwOworLSAgICAgICAgZm9yIChj ID0gMCwgZSA9ICgqcCA9PSAnLScpOyBwIDwgcTsgSU5DU1RSKHApKSB7CistICAgICAgICAgICAg LyogZ28gdGhyb3VnaCB0aGUgbGlzdCAqLworLSAgICAgICAgICAgIGlmICghZSAmJiAqcCA9PSAn XFwnKSAgICAgICAgICAgICAgIC8qIHNldCBlc2NhcGUgZmxhZyBpZiBcICovCistICAgICAgICAg ICAgICAgIGUgPSAxOworLSAgICAgICAgICAgIGVsc2UgaWYgKCFlICYmICpwID09ICctJykgICAg ICAgICAgIC8qIHNldCBzdGFydCBvZiByYW5nZSBpZiAtICovCistICAgICAgICAgICAgICAgIGMg PSAqKHAtMSk7CistICAgICAgICAgICAgZWxzZSB7CistICAgICAgICAgICAgICAgIHVuc2lnbmVk IGludCBjYyA9IENhc2UoKnMpOworLQorLSAgICAgICAgICAgICAgICBpZiAoKihwKzEpICE9ICct JykKKy0gICAgICAgICAgICAgICAgICAgIGZvciAoYyA9IGMgPyBjIDogKnA7IGMgPD0gKnA7IGMr KykgIC8qIGNvbXBhcmUgcmFuZ2UgKi8KKy0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVu c2lnbmVkKUNhc2UoYykgPT0gY2MpIC8qIHR5cGVjYXN0IGZvciBNU0MgYnVnICovCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByID8gMCA6IHJlY21hdGNoKHEgKyAxLCBzICsg MSwgaWMgX19XREwpOworLSAgICAgICAgICAgICAgICBjID0gZSA9IDA7ICAgLyogY2xlYXIgcmFu Z2UsIGVzY2FwZSBmbGFncyAqLworLSAgICAgICAgICAgIH0KKy0gICAgICAgIH0KKy0gICAgICAg IHJldHVybiByID8gcmVjbWF0Y2gocSArIENMRU4ocSksIHMgKyBDTEVOKHMpLCBpYyBfX1dETCkg OiAwOworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBicmFja2V0 IG1hdGNoIGZhaWxlZCAqLworKyAgICBlbHNlCisrICAgIHsKKysgICAgICAvKiBwYXR0ZXJuIGNv bnRhaW5zIG1vcmUgd2lsZGNhcmRzLCBjb250aW51ZSB3aXRoIHJlY3Vyc2lvbi4uLiAqLworKyAg ICAgIGZvciAoOyAqczsgSU5DU1RSKHMpKQorKyAgICAgICAgaWYgKChjID0gcmVjbWF0Y2gocCwg cywgY3MpKSAhPSAwKQorKyAgICAgICAgICByZXR1cm4gYzsKKysgICAgICByZXR1cm4gMjsgICAg ICAgICAgIC8qIDIgbWVhbnMgZ2l2ZSB1cC0tc2htYXRjaCB3aWxsIHJldHVybiBmYWxzZSAqLwor ICAgICB9CisrICB9CisgCistICAgIC8qIGlmIGVzY2FwZSAoJ1xcJyksIGp1c3QgY29tcGFyZSBu ZXh0IGNoYXJhY3RlciAqLworLSAgICBpZiAoYyA9PSAnXFwnICYmIChjID0gKnArKykgPT0gMCkg ICAgIC8qIGlmIFwgYXQgZW5kLCB0aGVuIHN5bnRheCBlcnJvciAqLworLSAgICAgICAgcmV0dXJu IDA7CisrI2lmbmRlZiBWTVMgICAgICAgICAgICAgLyogTm8gYnJhY2tldCBtYXRjaGluZyBpbiBW TVMgKi8KKysgIC8qIFBhcnNlIGFuZCBwcm9jZXNzIHRoZSBsaXN0IG9mIGNoYXJhY3RlcnMgYW5k IHJhbmdlcyBpbiBicmFja2V0cyAqLworKyAgaWYgKCFub193aWxkICYmIGFsbG93X3JlZ2V4ICYm IGMgPT0gJ1snKQorKyAgeworKyAgICBpbnQgZTsgICAgICAgICAgICAgIC8qIGZsYWcgdHJ1ZSBp ZiBuZXh0IGNoYXIgdG8gYmUgdGFrZW4gbGl0ZXJhbGx5ICovCisrICAgIFpDT05TVCBjaGFyICpx OyAgICAgLyogcG9pbnRlciB0byBlbmQgb2YgWy1dIGdyb3VwICovCisrICAgIGludCByOyAgICAg ICAgICAgICAgLyogZmxhZyB0cnVlIHRvIG1hdGNoIGFueXRoaW5nIGJ1dCB0aGUgcmFuZ2UgKi8K KysKKysgICAgaWYgKCpzID09IDApICAgICAgICAgICAgICAgICAgICAgICAgLyogbmVlZCBhIGNo YXJhY3RlciB0byBtYXRjaCAqLworKyAgICAgIHJldHVybiAwOworKyAgICBwICs9IChyID0gKCpw ID09ICchJyB8fCAqcCA9PSAnXicpKTsgLyogc2VlIGlmIHJldmVyc2UgKi8KKysgICAgZm9yIChx ID0gcCwgZSA9IDA7ICpxOyBxKyspICAgICAgICAgLyogZmluZCBjbG9zaW5nIGJyYWNrZXQgKi8K KysgICAgICBpZiAoZSkKKysgICAgICAgIGUgPSAwOworKyAgICAgIGVsc2UKKysgICAgICAgIGlm ICgqcSA9PSAnXFwnKQorKyAgICAgICAgICBlID0gMTsKKysgICAgICAgIGVsc2UgaWYgKCpxID09 ICddJykKKysgICAgICAgICAgYnJlYWs7CisrICAgIGlmICgqcSAhPSAnXScpICAgICAgICAgICAg ICAgICAgICAgIC8qIG5vdGhpbmcgbWF0Y2hlcyBpZiBiYWQgc3ludGF4ICovCisrICAgICAgcmV0 dXJuIDA7CisrICAgIGZvciAoYyA9IDAsIGUgPSAqcCA9PSAnLSc7IHAgPCBxOyBwKyspICAgICAg LyogZ28gdGhyb3VnaCB0aGUgbGlzdCAqLworKyAgICB7CisrICAgICAgaWYgKGUgPT0gMCAmJiAq cCA9PSAnXFwnKSAgICAgICAgIC8qIHNldCBlc2NhcGUgZmxhZyBpZiBcICovCisrICAgICAgICBl ID0gMTsKKysgICAgICBlbHNlIGlmIChlID09IDAgJiYgKnAgPT0gJy0nKSAgICAgLyogc2V0IHN0 YXJ0IG9mIHJhbmdlIGlmIC0gKi8KKysgICAgICAgIGMgPSAqKHAtMSk7CisrICAgICAgZWxzZQor KyAgICAgIHsKKysgICAgICAgIHVjaCBjYyA9IChjcyA/ICh1Y2gpKnMgOiBjYXNlX21hcCgodWNo KSpzKSk7CisrICAgICAgICB1Y2ggdWMgPSAodWNoKSBjOworKyAgICAgICAgaWYgKCoocCsxKSAh PSAnLScpCisrICAgICAgICAgIGZvciAodWMgPSB1YyA/IHVjIDogKHVjaCkqcDsgdWMgPD0gKHVj aCkqcDsgdWMrKykKKysgICAgICAgICAgICAvKiBjb21wYXJlIHJhbmdlICovCisrICAgICAgICAg ICAgaWYgKChjcyA/IHVjIDogY2FzZV9tYXAodWMpKSA9PSBjYykKKysgICAgICAgICAgICAgIHJl dHVybiByID8gMCA6IHJlY21hdGNoKHEgKyBDTEVOKHEpLCBzICsgQ0xFTihzKSwgY3MpOworKyAg ICAgICAgYyA9IGUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAvKiBjbGVhciByYW5nZSwgZXNj YXBlIGZsYWdzICovCisrICAgICAgfQorKyAgICB9CisrICAgIHJldHVybiByID8gcmVjbWF0Y2go cSArIENMRU4ocSksIHMgKyBDTEVOKHMpLCBjcykgOiAwOworKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAvKiBicmFja2V0IG1hdGNoIGZhaWxlZCAqLworKyAgfQorKyNl bmRpZiAvKiAhVk1TICovCisgCistICAgIC8qIGp1c3QgYSBjaGFyYWN0ZXItLWNvbXBhcmUgaXQg Ki8KKy0jaWZkZWYgUURPUworLSAgICByZXR1cm4gUU1hdGNoKENhc2UoKHVjaCljKSwgQ2FzZSgq cykpID8KKy0gICAgICAgICAgIHJlY21hdGNoKHAsIHMgKyBDTEVOKHMpLCBpYyBfX1dETCkgOiAw OworLSNlbHNlCistICAgIHJldHVybiBDYXNlKCh1Y2gpYykgPT0gQ2FzZSgqcykgPworLSAgICAg ICAgICAgcmVjbWF0Y2gocCwgcyArIENMRU4ocyksIGljIF9fV0RMKSA6IDA7CistI2VuZGlmCisr ICAvKiBJZiBlc2NhcGUgKCdcJyksIGp1c3QgY29tcGFyZSBuZXh0IGNoYXJhY3RlciAqLworKyAg aWYgKCFub193aWxkICYmIGMgPT0gJ1xcJykKKysgICAgaWYgKChjID0gKnArKykgPT0gJ1wwJykg ICAgICAgICAgICAgLyogaWYgXCBhdCBlbmQsIHRoZW4gc3ludGF4IGVycm9yICovCisrICAgICAg cmV0dXJuIDA7CisrCisrI2lmZGVmIFZNUworKyAgLyogMjAwNS0xMS0wNiBTTVMuCisrICAgICBI YW5kbGUgIi4uLiIgd2lsZGNhcmQgaW4gcCB3aXRoICIuIiBvciAiXSIgaW4gcy4KKysgICovCisr ICBpZiAoKGMgPT0gJy4nKSAmJiAoKnAgPT0gJy4nKSAmJiAoKihwKyBDTEVOKCBwKSkgPT0gJy4n KSAmJgorKyAgICgoKnMgPT0gJy4nKSB8fCAoKnMgPT0gJ10nKSkpCisrICB7CisrICAgIC8qIE1h dGNoICIuLi5dIiB3aXRoICJdIi4gIENvbnRpbnVlIGFmdGVyICJdIiBpbiBib3RoLiAqLworKyAg ICBpZiAoKCoocCsgMiogQ0xFTiggcCkpID09ICddJykgJiYgKCpzID09ICddJykpCisrICAgICAg cmV0dXJuIHJlY21hdGNoKCAocCsgMyogQ0xFTiggcCkpLCAocysgQ0xFTiggcykpLCBjcyk7Cisr CisrICAgIC8qIEVsc2UsIGxvb2sgZm9yIGEgcmVkdWNlZCBtYXRjaCBpbiBzLCB1bnRpbCAiXSIg aW4gb3IgZW5kIG9mIHMuICovCisrICAgIGZvciAoOyAqcyAmJiAoKnMgIT0gJ10nKTsgSU5DU1RS KHMpKQorKyAgICAgIGlmICgqcyA9PSAnLicpCisrICAgICAgICAvKiBJZiByZWR1Y2VkIG1hdGNo LCB0aGVuIGNvbnRpbnVlIGFmdGVyICIuLi4iIGluIHAsICIuIiBpbiBzLiAqLworKyAgICAgICAg aWYgKChjID0gcmVjbWF0Y2goIChwKyBDTEVOKCBwKSksIHMsIGNzKSkgIT0gMCkKKysgICAgICAg ICAgcmV0dXJuIChpbnQpYzsKKysKKysgICAgLyogTWF0Y2ggIi4uLl0iIHdpdGggIl0iLiAgQ29u dGludWUgYWZ0ZXIgIl0iIGluIGJvdGguICovCisrICAgIGlmICgoKihwKyAyKiBDTEVOKCBwKSkg PT0gJ10nKSAmJiAoKnMgPT0gJ10nKSkKKysgICAgICByZXR1cm4gcmVjbWF0Y2goIChwKyAzKiBD TEVOKCBwKSksIChzKyBDTEVOKCBzKSksIGNzKTsKKysKKysgICAgLyogTm8gcmVkdWNlZCBtYXRj aC4gIFF1aXQuICovCisrICAgIHJldHVybiAyOworKyAgfQorKworKyNlbmRpZiAvKiBkZWYgVk1T ICovCisrCisrICAvKiBKdXN0IGEgY2hhcmFjdGVyLS1jb21wYXJlIGl0ICovCisrICByZXR1cm4g KGNzID8gYyA9PSAqcyA6IGNhc2VfbWFwKCh1Y2gpYykgPT0gY2FzZV9tYXAoKHVjaCkqcykpID8K KysgICAgICAgICAgcmVjbWF0Y2gocCwgcyArIENMRU4ocyksIGNzKSA6IDA7CisrfQorIAorLX0g LyogZW5kIGZ1bmN0aW9uIHJlY21hdGNoKCkgKi8KKyAKKyAKKyAKKysvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKi8KKyBzdGF0aWMgY2hhciAqaXNzaGV4cChwKQorIFpD T05TVCBjaGFyICpwOworIC8qIElmIHAgaXMgYSBzaCBleHByZXNzaW9uLCBhIHBvaW50ZXIgdG8g dGhlIGZpcnN0IHNwZWNpYWwgY2hhcmFjdGVyIGlzCmRpZmYgLS1naXQgYS9zcmNwa2dzL3Vuemlw L3BhdGNoZXMvdW56aXAtNi4wLWZvcm1hdC1zZWN1cmUucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3Bh dGNoZXMvdW56aXAtNi4wLWZvcm1hdC1zZWN1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjgxY2Y4NjA1NTMxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1mb3JtYXQtc2VjdXJlLnBhdGNoCkBAIC0wLDAgKzEs OTAgQEAKK2RpZmYgLS1naXQgYS9leHRyYWN0LmMgYi9leHRyYWN0LmMKK2luZGV4IGVlYjJmNTcu LmEwYTQ5MjkgMTAwNjQ0CistLS0gYS9leHRyYWN0LmMKKysrKyBiL2V4dHJhY3QuYworQEAgLTQ3 Miw4ICs0NzIsOCBAQCBpbnQgZXh0cmFjdF9vcl90ZXN0X2ZpbGVzKF9fRykgICAgLyogcmV0dXJu IFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAg ICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsCisgICAgICAg ICAgICAgICAgICAgICAgIExvYWRGYXJTdHJpbmcoQ2VudFNpZ01zZyksIGogKyBibGtudW0qRElS X0JMS1NJWiArIDEpKTsKKy0gICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAo KGNoYXIgKilzbGlkZSwKKy0gICAgICAgICAgICAgICAgICAgICAgTG9hZEZhclN0cmluZyhSZXBv cnRNc2cpKSk7CisrICAgICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsIiVzIiwgTG9hZEZhclN0cmluZyhS ZXBvcnRNc2cpKSk7CisgICAgICAgICAgICAgICAgICAgICBlcnJvcl9pbl9hcmNoaXZlID0gUEtf QkFERVJSOworICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIHJlYWNoZWRfZW5k ID0gVFJVRTsgICAgIC8qIC4uLnNvIG5vIG1vcmUgbGVmdCB0byBkbyAqLworQEAgLTc1Miw4ICs3 NTIsOCBAQCBpbnQgZXh0cmFjdF9vcl90ZXN0X2ZpbGVzKF9fRykgICAgLyogcmV0dXJuIFBLLXR5 cGUgZXJyb3IgY29kZSAqLworIAorICNpZm5kZWYgU0ZYCisgICAgIGlmIChub19lbmRzaWdfZm91 bmQpIHsgICAgICAgICAgICAgICAgICAgICAgLyoganVzdCB0byBtYWtlIHN1cmUgKi8KKy0gICAg ICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhFbmRT aWdNc2cpKSk7CistICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICopc2xpZGUsIExv YWRGYXJTdHJpbmcoUmVwb3J0TXNnKSkpOworKyAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgo Y2hhciAqKXNsaWRlLCIlcyIsIExvYWRGYXJTdHJpbmcoRW5kU2lnTXNnKSkpOworKyAgICAgICAg SW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCIlcyIsIExvYWRGYXJTdHJpbmcoUmVw b3J0TXNnKSkpOworICAgICAgICAgaWYgKCFlcnJvcl9pbl9hcmNoaXZlKSAgICAgICAvKiBkb24n dCBvdmVyd3JpdGUgc3Ryb25nZXIgZXJyb3IgKi8KKyAgICAgICAgICAgICBlcnJvcl9pbl9hcmNo aXZlID0gUEtfV0FSTjsKKyAgICAgfQorZGlmZiAtLWdpdCBhL2xpc3QuYyBiL2xpc3QuYworaW5k ZXggMTVlMDAxMS4uZjczNTljMyAxMDA2NDQKKy0tLSBhL2xpc3QuYworKysrIGIvbGlzdC5jCitA QCAtMTgxLDcgKzE4MSw3IEBAIGludCBsaXN0X2ZpbGVzKF9fRykgICAgLyogcmV0dXJuIFBLLXR5 cGUgZXJyb3IgY29kZSAqLworICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKyAg ICAgICAgICAgICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhDZW50U2ln TXNnKSwgaikpOworICAgICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKy0gICAgICAg ICAgICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhSZXBvcnRNc2cpKSk7 CisrICAgICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsIiVzIiwgTG9hZEZhclN0cmlu ZyhSZXBvcnRNc2cpKSk7CisgICAgICAgICAgICAgICAgIHJldHVybiBQS19CQURFUlI7ICAgLyog c2lnIG5vdCBmb3VuZCAqLworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KK0BAIC01MDcsNyAr NTA3LDggQEAgaW50IGxpc3RfZmlsZXMoX19HKSAgICAvKiByZXR1cm4gUEstdHlwZSBlcnJvciBj b2RlICovCisgICAgICAgICAgICAgJiYgKCFHLmVjcmVjLmlzX3ppcDY0X2FyY2hpdmUpCisgICAg ICAgICAgICAgJiYgKG1lbWNtcChHLnNpZywgZW5kX2NlbnRyYWxfc2lnLCA0KSAhPSAwKQorICAg ICAgICAgICAgKSB7ICAgICAgICAgIC8qIGp1c3QgdG8gbWFrZSBzdXJlIGFnYWluICovCistICAg ICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCBMb2FkRmFyU3RyaW5n KEVuZFNpZ01zZykpKTsKKysgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgCisrICAgICAg ICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwiJXMiLCBMb2FkRmFyU3RyaW5nKEVuZFNpZ01zZykp KTsKKyAgICAgICAgICAgICBlcnJvcl9pbl9hcmNoaXZlID0gUEtfV0FSTjsgICAvKiBkaWRuJ3Qg ZmluZCBzaWcgKi8KKyAgICAgICAgIH0KKyAKK0BAIC01OTEsNyArNTkyLDcgQEAgaW50IGdldF90 aW1lX3N0YW1wKF9fR19fIGxhc3RfbW9kdGltZSwgbm1lbWJlcikgIC8qIHJldHVybiBQSy10eXBl IGVycm9yIGNvZGUgKi8KKyAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsCisgICAg ICAgICAgICAgICAgICAgICAgKChjaGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoQ2VudFNpZ01z ZyksIGopKTsKKyAgICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsCistICAgICAgICAg ICAgICAgICAgICAgKChjaGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoUmVwb3J0TXNnKSkpOwor KyAgICAgICAgICAgICAgICAgICAgICgoY2hhciAqKXNsaWRlLCIlcyIsIExvYWRGYXJTdHJpbmco UmVwb3J0TXNnKSkpOworICAgICAgICAgICAgICAgICByZXR1cm4gUEtfQkFERVJSOyAgIC8qIHNp ZyBub3QgZm91bmQgKi8KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CitAQCAtNjc0LDcgKzY3 NSw3IEBAIGludCBnZXRfdGltZV9zdGFtcChfX0dfXyBsYXN0X21vZHRpbWUsIG5tZW1iZXIpICAv KiByZXR1cm4gUEstdHlwZSBlcnJvciBjb2RlICovCisgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwor IAorICAgICBpZiAobWVtY21wKEcuc2lnLCBlbmRfY2VudHJhbF9zaWcsIDQpKSB7ICAgIC8qIGp1 c3QgdG8gbWFrZSBzdXJlIGFnYWluICovCistICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChj aGFyICopc2xpZGUsIExvYWRGYXJTdHJpbmcoRW5kU2lnTXNnKSkpOworKyAgICAgICAgSW5mbyhz bGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCIlcyIsIExvYWRGYXJTdHJpbmcoRW5kU2lnTXNn KSkpOworICAgICAgICAgZXJyb3JfaW5fYXJjaGl2ZSA9IFBLX1dBUk47CisgICAgIH0KKyAgICAg aWYgKCpubWVtYmVyID09IDBMICYmIGVycm9yX2luX2FyY2hpdmUgPD0gUEtfV0FSTikKK2RpZmYg LS1naXQgYS96aXBpbmZvLmMgYi96aXBpbmZvLmMKK2luZGV4IDZlMjJjYzguLmFjNWM2MWIgMTAw NjQ0CistLS0gYS96aXBpbmZvLmMKKysrKyBiL3ppcGluZm8uYworQEAgLTc3MSw3ICs3NzEsNyBA QCBpbnQgemlwaW5mbyhfX0cpICAgLyogcmV0dXJuIFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAg ICAgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKyAgICAgICAgICAgICAgICAgICAgICAo KGNoYXIgKilzbGlkZSwgTG9hZEZhclN0cmluZyhDZW50U2lnTXNnKSwgaikpOworICAgICAgICAg ICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwKKy0gICAgICAgICAgICAgICAgICAgICAoKGNoYXIg KilzbGlkZSwgTG9hZEZhclN0cmluZyhSZXBvcnRNc2cpKSk7CisrICAgICAgICAgICAgICAgICAg ICAgKChjaGFyICopc2xpZGUsIiVzIiwgTG9hZEZhclN0cmluZyhSZXBvcnRNc2cpKSk7CisgICAg ICAgICAgICAgICAgIGVycm9yX2luX2FyY2hpdmUgPSBQS19CQURFUlI7ICAgLyogc2lnIG5vdCBm b3VuZCAqLworICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICB9CitAQCAtOTYw LDcgKzk2MCw4IEBAIGludCB6aXBpbmZvKF9fRykgICAvKiByZXR1cm4gUEstdHlwZSBlcnJvciBj b2RlICovCisgICAgICAgICAgICAgJiYgKCFHLmVjcmVjLmlzX3ppcDY0X2FyY2hpdmUpCisgICAg ICAgICAgICAgJiYgKG1lbWNtcChHLnNpZywgZW5kX2NlbnRyYWxfc2lnLCA0KSAhPSAwKQorICAg ICAgICAgICAgKSB7ICAgICAgICAgIC8qIGp1c3QgdG8gbWFrZSBzdXJlIGFnYWluICovCistICAg ICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLCBMb2FkRmFyU3RyaW5n KEVuZFNpZ01zZykpKTsKKysgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgCisrICAgICAg ICAgICAgICAgICAoKGNoYXIgKilzbGlkZSwiJXMiLCBMb2FkRmFyU3RyaW5nKEVuZFNpZ01zZykp KTsKKyAgICAgICAgICAgICBlcnJvcl9pbl9hcmNoaXZlID0gUEtfV0FSTjsgICAvKiBkaWRuJ3Qg ZmluZCBzaWcgKi8KKyAgICAgICAgIH0KKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0 Y2hlcy91bnppcC02LjAtaGVhcC1vdmVyZmxvdy1pbmZsb29wLnBhdGNoIGIvc3JjcGtncy91bnpp cC9wYXRjaGVzL3VuemlwLTYuMC1oZWFwLW92ZXJmbG93LWluZmxvb3AucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmI1MTdjNDAzZWJlCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1oZWFwLW92ZXJmbG93LWluZmxv b3AucGF0Y2gKQEAgLTAsMCArMSwxMDQgQEAKK0Zyb20gYmRkNGEwY2VjZDc0NWNiNDgyNWU0NTA4 YjViZGYyNTc5NzMxMDg2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBldHIgU3Rv ZHVsa2EgPHBzdG9kdWxrQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDE0IFNlcCAyMDE1IDE4OjIz OjE3ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSB1cHN0cmVhbSBmaXggZm9yIGhlYXAgb3Zl cmZsb3cKKworaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2F0dGFjaG1lbnQuY2dpP2lkPTEw NzMwMDIKKy0tLQorIGNyeXB0LmMgfCAxMiArKysrKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwg MTEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY3J5cHQuYyBi L2NyeXB0LmMKK2luZGV4IDc4NGU0MTEuLmE4OTc1ZjIgMTAwNjQ0CistLS0gYS9jcnlwdC5jCisr KysgYi9jcnlwdC5jCitAQCAtNDY1LDcgKzQ2NSwxNyBAQCBpbnQgZGVjcnlwdChfX0dfXyBwYXNz d3JkKQorICAgICBHTE9CQUwocEluZm8tPmVuY3J5cHRlZCkgPSBGQUxTRTsKKyAgICAgZGVmZXJf bGVmdG92ZXJfaW5wdXQoX19HKTsKKyAgICAgZm9yIChuID0gMDsgbiA8IFJBTkRfSEVBRF9MRU47 IG4rKykgeworLSAgICAgICAgYiA9IE5FWFRCWVRFOworKyAgICAgICAgLyogMjAxMi0xMS0yMyBT TVMuICAoT1VTUEcgcmVwb3J0LikKKysgICAgICAgICAqIFF1aXQgZWFybHkgaWYgY29tcHJlc3Nl ZCBzaXplIDwgSEVBRF9MRU4uICBUaGUgcmVzdWx0aW5nCisrICAgICAgICAgKiBlcnJvciBtZXNz YWdlICgidW5hYmxlIHRvIGdldCBwYXNzd29yZCIpIGNvdWxkIGJlIGltcHJvdmVkLAorKyAgICAg ICAgICogYnV0IGl0J3MgYmV0dGVyIHRoYW4gdHJ5aW5nIHRvIHJlYWQgbm9uZXhpc3RlbnQgZGF0 YSwgYW5kCisrICAgICAgICAgKiB0aGVuIGNvbnRpbnVpbmcgd2l0aCBhIG5lZ2F0aXZlIEcuY3Np emUuICAoU2VlCisrICAgICAgICAgKiBmaWxlaW8uYzpyZWFkYnl0ZSgpKS4KKysgICAgICAgICAq LworKyAgICAgICAgaWYgKChiID0gTkVYVEJZVEUpID09ICh1c2gpRU9GKQorKyAgICAgICAgewor KyAgICAgICAgICAgIHJldHVybiBQS19FUlI7CisrICAgICAgICB9CisgICAgICAgICBoW25dID0g KHVjaCliOworICAgICAgICAgVHJhY2UoKHN0ZG91dCwgIiAoJTAyeCkiLCBoW25dKSk7CisgICAg IH0KKy0tIAorMi40LjYKKworCitGcm9tIDRiNDg4NDQ2NjFmZjk1NjlmMmVjZjU4MmEzODdkNDZh NTc3NWI1ZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYW1pbCBEdWRrYSA8a2R1 ZGthQHJlZGhhdC5jb20+CitEYXRlOiBNb24sIDE0IFNlcCAyMDE1IDE4OjI0OjU2ICswMjAwCitT dWJqZWN0OiBbUEFUQ0ggMi8zXSBmaXggaW5maW5pdGUgbG9vcCB3aGVuIGV4dHJhY3RpbmcgZW1w dHkgYnppcDIgZGF0YQorCitCdWc6IGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3AvaW5mb3ppcC9w YXRjaGVzLzIzLworLS0tCisgZXh0cmFjdC5jIHwgNiArKysrKysKKyAxIGZpbGUgY2hhbmdlZCwg NiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9leHRyYWN0LmMgYi9leHRyYWN0LmMKK2lu ZGV4IDcxMzRiZmUuLjI5ZGIwMjcgMTAwNjQ0CistLS0gYS9leHRyYWN0LmMKKysrKyBiL2V4dHJh Y3QuYworQEAgLTI3MzMsNiArMjczMywxMiBAQCBfX0dERUYKKyAgICAgaW50IHJlcGVhdGVkX2J1 Zl9lcnI7CisgICAgIGJ6X3N0cmVhbSBic3RybTsKKyAKKysgICAgaWYgKEcuaW5jbnQgPD0gMCAm JiBHLmNzaXplIDw9IDBMKSB7CisrICAgICAgICAvKiBhdm9pZCBhbiBpbmZpbml0ZSBsb29wICov CisrICAgICAgICBUcmFjZSgoc3RkZXJyLCAiVVpidW56aXAyKCkgZ290IGVtcHR5IGlucHV0XG4i KSk7CisrICAgICAgICByZXR1cm4gMjsKKysgICAgfQorKworICNpZiAoZGVmaW5lZChETEwpICYm ICFkZWZpbmVkKE5PX1NMSURFX1JFRElSKSkKKyAgICAgaWYgKEcucmVkaXJlY3Rfc2xpZGUpCisg ICAgICAgICB3c2l6ZSA9IEcucmVkaXJlY3Rfc2l6ZSwgcmVkaXJTbGlkZSA9IEcucmVkaXJlY3Rf YnVmZmVyOworLS0gCisyLjQuNgorCisKK0Zyb20gYmQxNTAzMzRmYjQwODRmNTU1NWE2YmUyNmIw MTVhMDY3MWNiNWI3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthbWlsIER1ZGth IDxrZHVka2FAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgMjIgU2VwIDIwMTUgMTg6NTI6MjMgKzAy MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzNdIGV4dHJhY3Q6IHByZXZlbnQgdW5zaWduZWQgb3ZlcmZs b3cgb24gaW52YWxpZCBpbnB1dAorCitTdWdnZXN0ZWQtYnk6IFN0ZWZhbiBDb3JuZWxpdXMKKy0t LQorIGV4dHJhY3QuYyB8IDExICsrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2V4dHJhY3QuYyBiL2V4dHJh Y3QuYworaW5kZXggMjlkYjAyNy4uYjlhZTY2NyAxMDA2NDQKKy0tLSBhL2V4dHJhY3QuYworKysr IGIvZXh0cmFjdC5jCitAQCAtMTI1Nyw4ICsxMjU3LDE3IEBAIHN0YXRpYyBpbnQgZXh0cmFjdF9v cl90ZXN0X2VudHJ5bGlzdChfX0dfXyBudW1jaHVuaywKKyAgICAgICAgIGlmIChHLmxyZWMuY29t cHJlc3Npb25fbWV0aG9kID09IFNUT1JFRCkgeworICAgICAgICAgICAgIHp1c3pfdCBjc2l6X2Rl Y3J5cHRlZCA9IEcubHJlYy5jc2l6ZTsKKyAKKy0gICAgICAgICAgICBpZiAoRy5wSW5mby0+ZW5j cnlwdGVkKQorKyAgICAgICAgICAgIGlmIChHLnBJbmZvLT5lbmNyeXB0ZWQpIHsKKysgICAgICAg ICAgICAgICAgaWYgKGNzaXpfZGVjcnlwdGVkIDwgMTIpIHsKKysgICAgICAgICAgICAgICAgICAg IC8qIGhhbmRsZSB0aGUgZXJyb3Igbm93IHRvIHByZXZlbnQgdW5zaWduZWQgb3ZlcmZsb3cgKi8K KysgICAgICAgICAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwK KysgICAgICAgICAgICAgICAgICAgICAgTG9hZEZhclN0cmluZ1NtYWxsKEVyclVuemlwTm9GaWxl KSwKKysgICAgICAgICAgICAgICAgICAgICAgTG9hZEZhclN0cmluZyhJbnZhbGlkQ29tcHJEYXRh KSwKKysgICAgICAgICAgICAgICAgICAgICAgTG9hZEZhclN0cmluZ1NtYWxsMihJbmZsYXRlKSkp OworKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBLX0VSUjsKKysgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICBjc2l6X2RlY3J5cHRlZCAtPSAxMjsKKysgICAgICAgICAgICB9 CisgICAgICAgICAgICAgaWYgKEcubHJlYy51Y3NpemUgIT0gY3Npel9kZWNyeXB0ZWQpIHsKKyAg ICAgICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorICAgICAg ICAgICAgICAgICAgIExvYWRGYXJTdHJpbmdTbWFsbDIoV3JuU3RvclVDU2l6Q1NpekRpZmYpLAor LS0gCisyLjUuMgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4w LW1hbnBhZ2UtZml4LnBhdGNoIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1tYW5w YWdlLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWMw NjUxNmJiYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAt Ni4wLW1hbnBhZ2UtZml4LnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKKy0tLSB1bnppcDYwL21hbi91 bnppcC4xCTIwMTEtMDEtMTEgMTE6NTk6NTkuMDAwMDAwMDAwICswMDAwCisrKysgdW56aXA2MC9t YW4vdW56aXBfbmV3CTIwMTEtMDItMDUgMTg6NDU6NTUuMDAwMDAwMDAwICswMDAwCitAQCAtNDI0 LDcgKzQyNCw3IEBACisgLlwiIEFtaWdhIHN1cHBvcnQgcG9zc2libGUgZXZlbnR1YWxseSwgYnV0 IG5vdCB5ZXQKKyBbTVMtRE9TLCBPUy8yLCBOVF0gcmVzdG9yZSB0aGUgdm9sdW1lIGxhYmVsIGlm IHRoZSBleHRyYWN0aW9uIG1lZGl1bSBpcworIHJlbW92YWJsZSAoZS5nLiwgYSBkaXNrZXR0ZSku ICBEb3VibGluZyB0aGUgb3B0aW9uIChcZkJcLSQkXGZQKSBhbGxvd3MgZml4ZWQKKy1tZWRpYSAo aGFyZCBkaXNrcykgdG8gYmUgbGFiZWxsZWQgYXMgd2VsbC4gIEJ5IGRlZmF1bHQsIHZvbHVtZSBs YWJlbHMgYXJlCisrbWVkaWEgKGhhcmQgZGlza3MpIHRvIGJlIGxhYmVsZWQgYXMgd2VsbC4gIEJ5 IGRlZmF1bHQsIHZvbHVtZSBsYWJlbHMgYXJlCisgaWdub3JlZC4KKyAuSVAgXGZCXC0vXGZQXCBc ZklleHRlbnNpb25zXGZQCisgW0Fjb3JuIG9ubHldIG92ZXJyaWRlcyB0aGUgZXh0ZW5zaW9uIGxp c3Qgc3VwcGxpZWQgYnkgVW56aXAkRXh0IGVudmlyb25tZW50CmRpZmYgLS1naXQgYS9zcmNwa2dz L3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLW92ZXJmbG93LWxvbmctZnNpemUucGF0Y2ggYi9zcmNw a2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLW92ZXJmbG93LWxvbmctZnNpemUucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjgwY2Q3MDhmM2U5Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1vdmVyZmxvdy1sb25n LWZzaXplLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK2RpZmYgLS1naXQgYS9saXN0LmMgYi9saXN0 LmMKK2luZGV4IGY3MzU5YzMuLjRjM2Q3MDMgMTAwNjQ0CistLS0gYS9saXN0LmMKKysrKyBiL2xp c3QuYworQEAgLTk3LDcgKzk3LDcgQEAgaW50IGxpc3RfZmlsZXMoX19HKSAgICAvKiByZXR1cm4g UEstdHlwZSBlcnJvciBjb2RlICovCisgeworICAgICBpbnQgZG9fdGhpc19maWxlPUZBTFNFLCBj ZmFjdG9yLCBlcnJvciwgZXJyb3JfaW5fYXJjaGl2ZT1QS19DT09MOworICNpZm5kZWYgV0lORExM CistICAgIGNoYXIgc2duLCBjZmFjdG9yc3RyWzEwXTsKKysgICAgY2hhciBzZ24sIGNmYWN0b3Jz dHJbMTNdOworICAgICBpbnQgbG9uZ2hkcj0odU8udmZsYWc+MSk7CisgI2VuZGlmCisgICAgIGlu dCBkYXRlX2Zvcm1hdDsKK0BAIC0zMzksNyArMzM5LDE5IEBAIGludCBsaXN0X2ZpbGVzKF9fRykg ICAgLyogcmV0dXJuIFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAgICAgICAgICAgICAgICBHLmNy ZWMuY29tcHJlc3Npb25fbWV0aG9kID09IEVOSERFRkxBVEVEKSB7CisgICAgICAgICAgICAgICAg IG1ldGhidWZbNV0gPSBkdHlwZVsoRy5jcmVjLmdlbmVyYWxfcHVycG9zZV9iaXRfZmxhZz4+MSkg JiAzXTsKKyAgICAgICAgICAgICB9IGVsc2UgaWYgKG1ldGhudW0gPj0gTlVNX01FVEhPRFMpIHsK Ky0gICAgICAgICAgICAgICAgc3ByaW50ZigmbWV0aGJ1Zls0XSwgIiUwM3UiLCBHLmNyZWMuY29t cHJlc3Npb25fbWV0aG9kKTsKKysgICAgICAgICAgICAgICAgLyogMjAxMy0wMi0yNiBTTVMuCisr ICAgICAgICAgICAgICAgICAqIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/ZnVuYz1k ZXRhaWwKKysgICAgICAgICAgICAgICAgICogICZhaWQ9Mjg2MTY0OCZncm91cF9pZD0xMTgwMTIm YXRpZD02Nzk3ODYKKysgICAgICAgICAgICAgICAgICogVW5leHBlY3RlZGx5IGxhcmdlIGNvbXBy ZXNzaW9uIG1ldGhvZHMgb3ZlcmZsb3cKKysgICAgICAgICAgICAgICAgICogJm1ldGhidWZbXS4g IFVzZSB0aGUgb2xkLCB0aHJlZS1kaWdpdCBkZWNpbWFsIGZvcm1hdAorKyAgICAgICAgICAgICAg ICAgKiBmb3IgdmFsdWVzIHdoaWNoIGZpdC4gIE90aGVyd2lzZSwgc2FjcmlmaWNlIHRoZQorKyAg ICAgICAgICAgICAgICAgKiBjb2xvbiwgYW5kIHVzZSBmb3VyLWRpZ2l0IGhleGFkZWNpbWFsLgor KyAgICAgICAgICAgICAgICAgKi8KKysgICAgICAgICAgICAgICAgaWYgKEcuY3JlYy5jb21wcmVz c2lvbl9tZXRob2QgPD0gOTk5KSB7CisrICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKCAmbWV0 aGJ1ZlsgNF0sICIlMDN1IiwgRy5jcmVjLmNvbXByZXNzaW9uX21ldGhvZCk7CisrICAgICAgICAg ICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKCAmbWV0aGJ1Zlsg M10sICIlMDRYIiwgRy5jcmVjLmNvbXByZXNzaW9uX21ldGhvZCk7CisrICAgICAgICAgICAgICAg IH0KKyAgICAgICAgICAgICB9CisgCisgI2lmIDAgICAgICAgLyogR1JSL0V1cm86ICBhZGQgdGhp cz8gKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtb3ZlcmZs b3cucGF0Y2ggYi9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLW92ZXJmbG93LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yMjhjMjgzNzdmZgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtb3ZlcmZsb3cu cGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorZGlmZiAtLWdpdCBhL2V4dHJhY3QuYyBiL2V4dHJhY3Qu YworaW5kZXggYTBhNDkyOS4uOWVmODBiMyAxMDA2NDQKKy0tLSBhL2V4dHJhY3QuYworKysrIGIv ZXh0cmFjdC5jCitAQCAtMjIxNCw2ICsyMjE0LDcgQEAgc3RhdGljIGludCB0ZXN0X2NvbXByX2Vi KF9fR19fIGViLCBlYl9zaXplLCBjb21wcl9vZmZzZXQsIHRlc3RfdWNfZWJkYXRhKQorICAgICB1 bGcgZWJfdWNzaXplOworICAgICB1Y2ggKmViX3VjcHRyOworICAgICBpbnQgcjsKKysgICAgdXNo IG1ldGhvZDsKKyAKKyAgICAgaWYgKGNvbXByX29mZnNldCA8IDQpICAgICAgICAgICAgICAgIC8q IGZpZWxkIGlzIG5vdCBjb21wcmVzc2VkOiAqLworICAgICAgICAgcmV0dXJuIFBLX09LOyAgICAg ICAgICAgICAgICAgICAgLyogZG8gbm90aGluZyBhbmQgc2lnbmFsIE9LICovCitAQCAtMjIyMyw2 ICsyMjI0LDEyIEBAIHN0YXRpYyBpbnQgdGVzdF9jb21wcl9lYihfX0dfXyBlYiwgZWJfc2l6ZSwg Y29tcHJfb2Zmc2V0LCB0ZXN0X3VjX2ViZGF0YSkKKyAgICAgICAgICBlYl9zaXplIDw9IChjb21w cl9vZmZzZXQgKyBFQl9DTVBSSEVBRExFTikpKQorICAgICAgICAgcmV0dXJuIElaX0VGX1RSVU5D OyAgICAgICAgICAgICAgIC8qIG5vIGNvbXByZXNzZWQgZGF0YSEgKi8KKyAKKysgICAgbWV0aG9k ID0gbWFrZXdvcmQoZWIgKyAoRUJfSEVBRFNJWkUgKyBjb21wcl9vZmZzZXQpKTsKKysgICAgaWYg KChtZXRob2QgPT0gU1RPUkVEKSAmJiAoZWJfc2l6ZSAhPSBjb21wcl9vZmZzZXQgKyBFQl9DTVBS SEVBRExFTiArIGViX3Vjc2l6ZSkpCisrICAgICAgICByZXR1cm4gUEtfRVJSOyAgICAgICAgICAg IC8qIGNvbXByZXNzZWQgJiB1bmNvbXByZXNzZWQKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICogc2hvdWxkIG1hdGNoIGluIFNUT1JFRAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKiBtZXRob2QgKi8KKysKKyAgICAgaWYgKAorICNpZmRlZiBJTlRfMTZC SVQKKyAgICAgICAgICgoKHVsZykoZXh0ZW50KWViX3Vjc2l6ZSkgIT0gZWJfdWNzaXplKSB8fApk aWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1zeW1saW5rLnBhdGNo IGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC1zeW1saW5rLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5kN2VhZjE2MGI0OQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtc3ltbGluay5wYXRjaApAQCAt MCwwICsxLDE3IEBACitkaWZmIC0tZ2l0IGEvcHJvY2Vzcy5jIGIvcHJvY2Vzcy5jCitpbmRleCAx ZTlhMWUxLi45MDU3MzJiIDEwMDY0NAorLS0tIGEvcHJvY2Vzcy5jCisrKysgYi9wcm9jZXNzLmMK K0BAIC0xNzUxLDYgKzE3NTEsMTIgQEAgaW50IHByb2Nlc3NfY2Rpcl9maWxlX2hkcihfX0cpICAg IC8qIHJldHVybiBQSy10eXBlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgID0gKEcuY3JlYy5nZW5l cmFsX3B1cnBvc2VfYml0X2ZsYWcgJiAoMSA8PCAxMSkpID09ICgxIDw8IDExKTsKKyAjZW5kaWYK KyAKKysjaWZkZWYgU1lNTElOS1MKKysgICAgLyogSW5pdGlhbGl6ZSB0aGUgc3ltbGluayBmbGFn LCBtYXkgYmUgc2V0IGJ5IHRoZSBwbGF0Zm9ybS1zcGVjaWZpYworKyAgICAgICBtYXBhdHRyIGZ1 bmN0aW9uLiAgKi8KKysgICAgRy5wSW5mby0+c3ltbGluayA9IDA7CisrI2VuZGlmCisrCisgICAg IHJldHVybiBQS19DT09MOworIAorIH0gLyogZW5kIGZ1bmN0aW9uIHByb2Nlc3NfY2Rpcl9maWxl X2hkcigpICovCmRpZmYgLS1naXQgYS9zcmNwa2dzL3VuemlwL3BhdGNoZXMvdW56aXAtNi4wLXRp bWVzdGFtcC5wYXRjaCBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtdGltZXN0YW1w LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yYWE5NDI0ZWI4 YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAtdGlt ZXN0YW1wLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb206ICJTdGV2ZW4gTS4gU2Nod2VkYSIg PHNtc0BhbnRpbm9kZS5pbmZvPgorU3ViamVjdDogRG8gbm90IGlnbm9yZSBleHRyYSBmaWVsZHMg Y29udGFpbmluZyBVbml4IFRpbWVzdGFtcHMKK0J1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJp YW4ub3JnLzg0Mjk5MworWC1EZWJpYW4tdmVyc2lvbjogNi4wLTIxCisKKy0tLSBhL3Byb2Nlc3Mu YworKysrIGIvcHJvY2Vzcy5jCitAQCAtMjkxNCwxMCArMjkxNCwxMyBAQAorICAgICAgICAgICAg IGJyZWFrOworIAorICAgICAgICAgICBjYXNlIEVGX0laVU5JWDI6CistICAgICAgICAgICAgaWYg KGhhdmVfbmV3X3R5cGVfZWIgPT0gMCkgeworLSAgICAgICAgICAgICAgICBmbGFncyAmPSB+MHgw ZmY7ICAgICAgICAvKiBpZ25vcmUgYW55IHByZXZpb3VzIElaVU5JWCBmaWVsZCAqLworKyAgICAg ICAgICAgIGlmIChoYXZlX25ld190eXBlX2ViID09IDApIHsgICAgICAgIC8qICg8IDEpICovCisg ICAgICAgICAgICAgICAgIGhhdmVfbmV3X3R5cGVfZWIgPSAxOworICAgICAgICAgICAgIH0KKysg ICAgICAgICAgICBpZiAoaGF2ZV9uZXdfdHlwZV9lYiA8PSAxKSB7CisrICAgICAgICAgICAgICAg IC8qIElnbm9yZSBhbnkgcHJpb3IgKEVGX0laVU5JWC9FRl9QS1VOSVgpIFVJRC9HSUQuICovCisr ICAgICAgICAgICAgICAgIGZsYWdzICY9IDB4MGZmOworKyAgICAgICAgICAgIH0KKyAjaWZkZWYg SVpfSEFWRV9VWFVJREdJRAorICAgICAgICAgICAgIGlmIChoYXZlX25ld190eXBlX2ViID4gMSkK KyAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgIC8qIElaVU5JWDMgb3ZlcnJpZGVzIEla VU5JWDIgZS5mLiBibG9jayAhICovCitAQCAtMjkzMyw2ICsyOTM2LDggQEAKKyAgICAgICAgICAg ICAvKiBuZXcgM3JkIGdlbmVyYXRpb24gVW5peCBlZiAqLworICAgICAgICAgICAgIGhhdmVfbmV3 X3R5cGVfZWIgPSAyOworIAorKyAgICAgICAgICAgIC8qIElnbm9yZSBhbnkgcHJpb3IgRUZfSVpV TklYL0VGX1BLVU5JWC9FRl9JWlVOSVgyIFVJRC9HSUQuICovCisrICAgICAgICAgICAgZmxhZ3Mg Jj0gMHgwZmY7CisgICAgICAgICAvKgorICAgICAgICAgICBWZXJzaW9uICAgICAgIDEgYnl0ZSAg ICAgIHZlcnNpb24gb2YgdGhpcyBleHRyYSBmaWVsZCwgY3VycmVudGx5IDEKKyAgICAgICAgICAg VUlEU2l6ZSAgICAgICAxIGJ5dGUgICAgICBTaXplIG9mIFVJRCBmaWVsZAorQEAgLTI5NTMsOCAr Mjk1OCw2IEBACisgICAgICAgICAgICAgICAgIHVpZF9zaXplID0gKigoRUJfSEVBRFNJWkUgKyAx KSArIGVmX2J1Zik7CisgICAgICAgICAgICAgICAgIGdpZF9zaXplID0gKigoRUJfSEVBRFNJWkUg KyB1aWRfc2l6ZSArIDIpICsgZWZfYnVmKTsKKyAKKy0gICAgICAgICAgICAgICAgZmxhZ3MgJj0g fjB4MGZmOyAgICAgIC8qIGlnbm9yZSBhbnkgcHJldmlvdXMgVU5JWCBmaWVsZCAqLworLQorICAg ICAgICAgICAgICAgICBpZiAoIHJlYWRfdXgzX3ZhbHVlKChFQl9IRUFEU0laRSArIDIpICsgZWZf YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpZF9zaXplLCAmel91 aWRnaWRbMF0pCisgICAgICAgICAgICAgICAgICAgICAmJgpkaWZmIC0tZ2l0IGEvc3JjcGtncy91 bnppcC9wYXRjaGVzL3VuemlwLTYuMC12YWxncmluZC5wYXRjaCBiL3NyY3BrZ3MvdW56aXAvcGF0 Y2hlcy91bnppcC02LjAtdmFsZ3JpbmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAuLjQxYTc1MjAyM2I2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy91bnpp cC9wYXRjaGVzL3VuemlwLTYuMC12YWxncmluZC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitkaWZm IC0tZ2l0IGEvZmlsZWlvLmMgYi9maWxlaW8uYworaW5kZXggYmEwYTFkMC4uMDNmYzRiZSAxMDA2 NDQKKy0tLSBhL2ZpbGVpby5jCisrKysgYi9maWxlaW8uYworQEAgLTIwMDYsNiArMjAwNiw3IEBA IGludCBkb19zdHJpbmcoX19HX18gbGVuZ3RoLCBvcHRpb24pICAgLyogcmV0dXJuIFBLLXR5cGUg ZXJyb3IgY29kZSAqLworICAgICB1bnNpZ25lZCBjb21tZW50X2J5dGVzX2xlZnQ7CisgICAgIHVu c2lnbmVkIGludCBibG9ja19sZW47CisgICAgIGludCBlcnJvcj1QS19PSzsKKysgICAgdW5zaWdu ZWQgaW50IGxlbmd0aDI7CisgI2lmZGVmIEFNSUdBCisgICAgIGNoYXIgdG1wX2Zub3RlWzIgKiBB TUlHQV9GSUxFTk9URUxFTl07ICAgLyogZXh0cmEgcm9vbSBmb3Igc3F1b3plbiBjaGFycyAqLwor ICNlbmRpZgorQEAgLTIyOTIsOCArMjI5MywxMiBAQCBpbnQgZG9fc3RyaW5nKF9fR19fIGxlbmd0 aCwgb3B0aW9uKSAgIC8qIHJldHVybiBQSy10eXBlIGVycm9yIGNvZGUgKi8KKyAgICAgICAgICAg ICBzZWVrX3ppcGYoX19HX18gRy5jdXJfemlwZmlsZV9idWZzdGFydCAtIEcuZXh0cmFfYnl0ZXMg KworICAgICAgICAgICAgICAgICAgICAgICAoRy5pbnB0ci1HLmluYnVmKSArIGxlbmd0aCk7Cisg ICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIGlmIChyZWFkYnVmKF9fR19fIChjaGFyICop Ry5leHRyYV9maWVsZCwgbGVuZ3RoKSA9PSAwKQorKyAgICAgICAgICAgIGlmICgobGVuZ3RoMiA9 IHJlYWRidWYoX19HX18gKGNoYXIgKilHLmV4dHJhX2ZpZWxkLCBsZW5ndGgpKSA9PSAwKQorICAg ICAgICAgICAgICAgICByZXR1cm4gUEtfRU9GOworKyAgICAgICAgICAgIGlmKGxlbmd0aDIgPCBs ZW5ndGgpIHsKKysgICAgICAgICAgICAgIG1lbXNldCAoX19HX18gKGNoYXIgKilHLmV4dHJhX2Zp ZWxkK2xlbmd0aDIsIDAgLCBsZW5ndGgtbGVuZ3RoMik7CisrICAgICAgICAgICAgICBsZW5ndGgg PSBsZW5ndGgyOworKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAvKiBMb29rcyBsaWtlIGhl cmUgaXMgd2hlcmUgZXh0cmEgZmllbGRzIGFyZSByZWFkICovCisgICAgICAgICAgICAgZ2V0Wmlw NjREYXRhKF9fR19fIEcuZXh0cmFfZmllbGQsIGxlbmd0aCk7CisgI2lmZGVmIFVOSUNPREVfU1VQ UE9SVApkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC14LW9wdGlv bi5wYXRjaCBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC02LjAteC1vcHRpb24ucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcyYzc3YWViNzg5Ci0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLTYuMC14LW9wdGlvbi5w YXRjaApAQCAtMCwwICsxLDI4IEBACistLS0gLi9wcm9jZXNzLmMub3JpZyAgICAyMDA5LTAzLTA2 IDAyOjI1OjEwLjAwMDAwMDAwMCArMDEwMAorKysrIC4vcHJvY2Vzcy5jIDIwMTMtMDktMTIgMTA6 NTE6MTYuMDAwMDAwMDAwICswMjAwCitAQCAtMjkwMSw5ICsyOTAxLDkgQEAKKyAgICAgICAgICov CisgCisgI2lmZGVmIElaX0hBVkVfVVhVSURHSUQKKy0gICAgICAgICAgICBpZiAoZWJfbGVuID49 IEVCX1VYM19NSU5MRU4KKy0gICAgICAgICAgICAgICAgJiYgel91aWRnaWQgIT0gTlVMTAorLSAg ICAgICAgICAgICAgICAmJiAoKigoRUJfSEVBRFNJWkUgKyAwKSArIGVmX2J1ZikgPT0gMSkKKysg ICAgICAgICAgICBpZiAoKGViX2xlbiA+PSBFQl9VWDNfTUlOTEVOKQorKyAgICAgICAgICAgICAg ICAmJiAoel91aWRnaWQgIT0gTlVMTCkKKysgICAgICAgICAgICAgICAgJiYgKCgqKChFQl9IRUFE U0laRSArIDApICsgZWZfYnVmKSA9PSAxKSkpCisgICAgICAgICAgICAgICAgICAgICAvKiBvbmx5 IGtub3cgYWJvdXQgdmVyc2lvbiAxICovCisgICAgICAgICAgICAgeworICAgICAgICAgICAgICAg ICB1Y2ggdWlkX3NpemU7CitAQCAtMjkxNSwxMCArMjkxNSwxMCBAQAorICAgICAgICAgICAgICAg ICBmbGFncyAmPSB+MHgwZmY7ICAgICAgLyogaWdub3JlIGFueSBwcmV2aW91cyBVTklYIGZpZWxk ICovCisgCisgICAgICAgICAgICAgICAgIGlmICggcmVhZF91eDNfdmFsdWUoKEVCX0hFQURTSVpF ICsgMikgKyBlZl9idWYsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWlk X3NpemUsIHpfdWlkZ2lkWzBdKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHVpZF9zaXplLCAmel91aWRnaWRbMF0pCisgICAgICAgICAgICAgICAgICAgICAmJgorICAgICAg ICAgICAgICAgICAgICAgIHJlYWRfdXgzX3ZhbHVlKChFQl9IRUFEU0laRSArIHVpZF9zaXplICsg MykgKyBlZl9idWYsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2lkX3Np emUsIHpfdWlkZ2lkWzFdKSApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2lkX3NpemUsICZ6X3VpZGdpZFsxXSkgKQorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAg ICAgICAgICAgICBmbGFncyB8PSBFQl9VWDJfVkFMSUQ7ICAgLyogc2lnbmFsIHN1Y2Nlc3MgKi8K KyAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy91bnppcC9wYXRjaGVzL3Vu emlwLXppcGJvbWItbWFucGFnZS5wYXRjaCBiL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC16 aXBib21iLW1hbnBhZ2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLmNkZWVlYTVjOTNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy91bnppcC9wYXRjaGVz L3VuemlwLXppcGJvbWItbWFucGFnZS5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIDZmZTcy MjkxYTU1NjNjZGJjZDJiZGQ4N2UzNjUyODUzN2I3Y2RjZmIgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBKYWt1YiBNYXJ0aXNrbyA8amFtYXJ0aXNAcmVkaGF0LmNvbT4KK0RhdGU6IE1v biwgMTggTm92IDIwMTkgMTQ6MTc6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdXBkYXRlIHRo ZSBtYW4gcGFnZQorCistLS0KKyBtYW4vdW56aXAuMSB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwg MiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tYW4vdW56aXAuMSBiL21hbi91bnppcC4x CitpbmRleCAyMTgxNmQxLi40ZDY2MDczIDEwMDY0NAorLS0tIGEvbWFuL3VuemlwLjEKKysrKyBi L21hbi91bnppcC4xCitAQCAtODUwLDYgKzg1MCw4IEBAIHRoZSBzcGVjaWZpZWQgemlwZmlsZXMg d2VyZSBub3QgZm91bmQuCisgaW52YWxpZCBvcHRpb25zIHdlcmUgc3BlY2lmaWVkIG9uIHRoZSBj b21tYW5kIGxpbmUuCisgLklQIDExCisgbm8gbWF0Y2hpbmcgZmlsZXMgd2VyZSBmb3VuZC4KKysu SVAgMTIKKytpbnZhbGlkIHppcCBmaWxlIHdpdGggb3ZlcmxhcHBlZCBjb21wb25lbnRzIChwb3Nz aWJsZSB6aXAgYm9tYikuCisgLklQIDUwCisgdGhlIGRpc2sgaXMgKG9yIHdhcykgZnVsbCBkdXJp bmcgZXh0cmFjdGlvbi4KKyAuSVAgNTEKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvdW56aXAvcGF0Y2hlcy91bnppcC16aXBib21iLXBhcnQxLnBhdGNoIGIvc3JjcGtncy91bnpp cC9wYXRjaGVzL3VuemlwLXppcGJvbWItcGFydDEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAuLjM1Y2Y4NTY1MjI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy91bnppcC9wYXRjaGVzL3VuemlwLXppcGJvbWItcGFydDEucGF0Y2gKQEAgLTAsMCArMSwyNSBA QAorRnJvbSA0MWJlYjQ3N2M1NzQ0YmMzOTZmYTExNjJlZTBjMTQyMThlYzEyMjEzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBBZGxlciA8bWFkbGVyQGFsdW1uaS5jYWx0ZWNo LmVkdT4KK0RhdGU6IE1vbiwgMjcgTWF5IDIwMTkgMDg6MjA6MzIgLTA3MDAKK1N1YmplY3Q6IFtQ QVRDSF0gRml4IGJ1ZyBpbiB1bmRlZmVyX2lucHV0KCkgdGhhdCBtaXNwbGFjZWQgdGhlIGlucHV0 IHN0YXRlLgorCistLS0KKyBmaWxlaW8uYyB8IDQgKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGlu c2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ZpbGVpby5jIGIvZmls ZWlvLmMKK2luZGV4IGMwNDI5ODcuLmJjMDBkNzQgMTAwNjQ0CistLS0gYS9maWxlaW8uYworKysr IGIvZmlsZWlvLmMKK0BAIC01MzAsOCArNTMwLDEwIEBAIHZvaWQgdW5kZWZlcl9pbnB1dChfX0cp CisgICAgICAgICAgKiBUaGlzIGNvbmRpdGlvbiB3YXMgY2hlY2tlZCB3aGVuIEcuaW5jbnRfbGVm dG92ZXIgd2FzIHNldCA+IDAgaW4KKyAgICAgICAgICAqIGRlZmVyX2xlZnRvdmVyX2lucHV0KCks IGFuZCBpdCBpcyBOT1QgYWxsb3dlZCB0byB0b3VjaCBHLmNzaXplCisgICAgICAgICAgKiBiZWZv cmUgY2FsbGluZyB1bmRlZmVyX2lucHV0KCkgd2hlbiAoRy5pbmNudF9sZWZ0b3ZlciA+IDApCist ICAgICAgICAgKiAoc2luZ2xlIGV4Y2VwdGlvbjogc2VlIHJlYWRfYnl0ZSgpJ3MgICJHLmNzaXpl IDw9IDAiIGhhbmRsaW5nKSAhIQorKyAgICAgICAgICogKHNpbmdsZSBleGNlcHRpb246IHNlZSBy ZWFkYnl0ZSgpJ3MgICJHLmNzaXplIDw9IDAiIGhhbmRsaW5nKSAhIQorICAgICAgICAgICovCisr ICAgICAgICBpZiAoRy5jc2l6ZSA8IDBMKQorKyAgICAgICAgICAgIEcuY3NpemUgPSAwTDsKKyAg ICAgICAgIEcuaW5jbnQgPSBHLmluY250X2xlZnRvdmVyICsgKGludClHLmNzaXplOworICAgICAg ICAgRy5pbnB0ciA9IEcuaW5wdHJfbGVmdG92ZXIgLSAoaW50KUcuY3NpemU7CisgICAgICAgICBH LmluY250X2xlZnRvdmVyID0gMDsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvcGF0Y2hlcy91 bnppcC16aXBib21iLXBhcnQyLnBhdGNoIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3VuemlwLXpp cGJvbWItcGFydDIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu LjkwM2M4NDU3NjM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy91bnppcC9wYXRjaGVzL3Vu emlwLXppcGJvbWItcGFydDIucGF0Y2gKQEAgLTAsMCArMSwzNDkgQEAKK0Zyb20gNDdiM2NlYWUz OTdkMjFiZjgyMmJjMmFjNzMwNTJhNGIxZGFmOGUxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IE1hcmsgQWRsZXIgPG1hZGxlckBhbHVtbmkuY2FsdGVjaC5lZHU+CitEYXRlOiBUdWUs IDExIEp1biAyMDE5IDIyOjAxOjE4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERldGVjdCBhbmQg cmVqZWN0IGEgemlwIGJvbWIgdXNpbmcgb3ZlcmxhcHBlZCBlbnRyaWVzLgorCitUaGlzIGRldGVj dHMgYW4gaW52YWxpZCB6aXAgZmlsZSB0aGF0IGhhcyBhdCBsZWFzdCBvbmUgZW50cnkgdGhhdAor b3ZlcmxhcHMgd2l0aCBhbm90aGVyIGVudHJ5IG9yIHdpdGggdGhlIGNlbnRyYWwgZGlyZWN0b3J5 IHRvIHRoZQorZW5kIG9mIHRoZSBmaWxlLiBBIEZpZmllbGQgemlwIGJvbWIgdXNlcyBvdmVybGFw cGVkIGxvY2FsIGVudHJpZXMKK3RvIHZhc3RseSBpbmNyZWFzZSB0aGUgcG90ZW50aWFsIGluZmxh dGlvbiByYXRpby4gU3VjaCBhbiBpbnZhbGlkCit6aXAgZmlsZSBpcyByZWplY3RlZC4KKworU2Vl IGh0dHBzOi8vd3d3LmJhbXNvZnR3YXJlLmNvbS9oYWNrcy96aXBib21iLyBmb3IgRGF2aWQgRmlm aWVsZCdzCithbmFseXNpcywgY29uc3RydWN0aW9uLCBhbmQgZXhhbXBsZXMgb2Ygc3VjaCB6aXAg Ym9tYnMuCisKK1RoZSBkZXRlY3Rpb24gbWFpbnRhaW5zIGEgbGlzdCBvZiBjb3ZlcmVkIHNwYW5z IG9mIHRoZSB6aXAgZmlsZXMKK3NvIGZhciwgd2hlcmUgdGhlIGNlbnRyYWwgZGlyZWN0b3J5IHRv IHRoZSBlbmQgb2YgdGhlIGZpbGUgYW5kIGFueQorYnl0ZXMgcHJlY2VkaW5nIHRoZSBmaXJzdCBl bnRyeSBhdCB6aXAgZmlsZSBvZmZzZXQgemVybyBhcmUKK2NvbnNpZGVyZWQgY292ZXJlZCBpbml0 aWFsbHkuIFRoZW4gYXMgZWFjaCBlbnRyeSBpcyBkZWNvbXByZXNzZWQKK29yIHRlc3RlZCwgaXQg aXMgY29uc2lkZXJlZCBjb3ZlcmVkLiBXaGVuIGEgbmV3IGVudHJ5IGlzIGFib3V0IHRvCitiZSBw cm9jZXNzZWQsIGl0cyBpbml0aWFsIG9mZnNldCBpcyBjaGVja2VkIHRvIHNlZSBpZiBpdCBpcwor Y29udGFpbmVkIGJ5IGEgY292ZXJlZCBzcGFuLiBJZiBzbywgdGhlIHppcCBmaWxlIGlzIHJlamVj dGVkIGFzCitpbnZhbGlkLgorCitUaGlzIGNvbW1pdCBkZXBlbmRzIG9uIGEgcHJlY2VkaW5nIGNv bW1pdDogIkZpeCBidWcgaW4KK3VuZGVmZXJfaW5wdXQoKSB0aGF0IG1pc3BsYWNlZCB0aGUgaW5w dXQgc3RhdGUuIgorLS0tCisgZXh0cmFjdC5jIHwgMTkwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIGdsb2JhbHMuYyB8ICAgMSArCisgZ2xv YmFscy5oIHwgICAzICsKKyBwcm9jZXNzLmMgfCAgMTEgKysrKworIHVuemlwLmggICB8ICAgMSAr CisgNSBmaWxlcyBjaGFuZ2VkLCAyMDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitk aWZmIC0tZ2l0IGEvZXh0cmFjdC5jIGIvZXh0cmFjdC5jCitpbmRleCAxYWNkNzY5Li4wOTczYTMz IDEwMDY0NAorLS0tIGEvZXh0cmFjdC5jCisrKysgYi9leHRyYWN0LmMKK0BAIC0zMTksNiArMzE5 LDEyNSBAQCBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIFVuc3VwcG9ydGVkRXh0cmFGaWVsZFtdID0K KyAgICJcbmVycm9yOiAgdW5zdXBwb3J0ZWQgZXh0cmEtZmllbGQgY29tcHJlc3Npb24gdHlwZSAo JXUpLS1za2lwcGluZ1xuIjsKKyBzdGF0aWMgWkNPTlNUIGNoYXIgRmFyIEJhZEV4dHJhRmllbGRD UkNbXSA9CisgICAiZXJyb3IgWyVzXTogIGJhZCBleHRyYS1maWVsZCBDUkMgJTA4bHggKHNob3Vs ZCBiZSAlMDhseClcbiI7Cisrc3RhdGljIFpDT05TVCBjaGFyIEZhciBOb3RFbm91Z2hNZW1Db3Zl cltdID0KKysgICJlcnJvcjogbm90IGVub3VnaCBtZW1vcnkgZm9yIGJvbWIgZGV0ZWN0aW9uXG4i OworK3N0YXRpYyBaQ09OU1QgY2hhciBGYXIgT3ZlcmxhcHBlZENvbXBvbmVudHNbXSA9CisrICAi ZXJyb3I6IGludmFsaWQgemlwIGZpbGUgd2l0aCBvdmVybGFwcGVkIGNvbXBvbmVudHMgKHBvc3Np YmxlIHppcCBib21iKVxuIjsKKysKKysKKysKKysKKysKKysvKiBBIGdyb3dhYmxlIGxpc3Qgb2Yg c3BhbnMuICovCisrdHlwZWRlZiB6b2ZmX3QgYm91bmRfdDsKKyt0eXBlZGVmIHN0cnVjdCB7Cisr ICAgIGJvdW5kX3QgYmVnOyAgICAgICAgLyogc3RhcnQgb2YgdGhlIHNwYW4gKi8KKysgICAgYm91 bmRfdCBlbmQ7ICAgICAgICAvKiBvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSBzcGFuICovCisrfSBz cGFuX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgICBzcGFuX3QgKnNwYW47ICAgICAgIC8qIGFs bG9jYXRlZCwgZGlzdGluY3QsIGFuZCBzb3J0ZWQgbGlzdCBvZiBzcGFucyAqLworKyAgICBzaXpl X3QgbnVtOyAgICAgICAgIC8qIG51bWJlciBvZiBzcGFucyBpbiB0aGUgbGlzdCAqLworKyAgICBz aXplX3QgbWF4OyAgICAgICAgIC8qIGFsbG9jYXRlZCBudW1iZXIgb2Ygc3BhbnMgKG51bSA8PSBt YXgpICovCisrfSBjb3Zlcl90OworKworKy8qCisrICogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUg Zmlyc3Qgc3BhbiBpbiBjb3ZlciB3aG9zZSBiZWcgaXMgZ3JlYXRlciB0aGFuIHZhbC4KKysgKiBJ ZiB0aGVyZSBpcyBubyBzdWNoIHNwYW4sIHRoZW4gY292ZXItPm51bSBpcyByZXR1cm5lZC4KKysg Ki8KKytzdGF0aWMgc2l6ZV90IGNvdmVyX2ZpbmQoY292ZXIsIHZhbCkKKysgICAgY292ZXJfdCAq Y292ZXI7CisrICAgIGJvdW5kX3QgdmFsOworK3sKKysgICAgc2l6ZV90IGxvID0gMCwgaGkgPSBj b3Zlci0+bnVtOworKyAgICB3aGlsZSAobG8gPCBoaSkgeworKyAgICAgICAgc2l6ZV90IG1pZCA9 IChsbyArIGhpKSA+PiAxOworKyAgICAgICAgaWYgKHZhbCA8IGNvdmVyLT5zcGFuW21pZF0uYmVn KQorKyAgICAgICAgICAgIGhpID0gbWlkOworKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGxv ID0gbWlkICsgMTsKKysgICAgfQorKyAgICByZXR1cm4gaGk7CisrfQorKworKy8qIFJldHVybiB0 cnVlIGlmIHZhbCBsaWVzIHdpdGhpbiBhbnkgb25lIG9mIHRoZSBzcGFucyBpbiBjb3Zlci4gKi8K KytzdGF0aWMgaW50IGNvdmVyX3dpdGhpbihjb3ZlciwgdmFsKQorKyAgICBjb3Zlcl90ICpjb3Zl cjsKKysgICAgYm91bmRfdCB2YWw7CisreworKyAgICBzaXplX3QgcG9zID0gY292ZXJfZmluZChj b3ZlciwgdmFsKTsKKysgICAgcmV0dXJuIHBvcyA+IDAgJiYgdmFsIDwgY292ZXItPnNwYW5bcG9z IC0gMV0uZW5kOworK30KKysKKysvKgorKyAqIEFkZCBhIG5ldyBzcGFuIHRvIHRoZSBsaXN0LCBi dXQgb25seSBpZiB0aGUgbmV3IHNwYW4gZG9lcyBub3Qgb3ZlcmxhcCBhbnkKKysgKiBzcGFucyBh bHJlYWR5IGluIHRoZSBsaXN0LiBUaGUgbmV3IHNwYW4gY292ZXJzIHRoZSB2YWx1ZXMgYmVnLi5l bmQtMS4gYmVnCisrICogbXVzdCBiZSBsZXNzIHRoYW4gZW5kLgorKyAqCisrICogS2VlcCB0aGUg bGlzdCBzb3J0ZWQgYW5kIG1lcmdlIGFkamFjZW50IHNwYW5zLiBHcm93IHRoZSBhbGxvY2F0ZWQg c3BhY2UgZm9yCisrICogdGhlIGxpc3QgYXMgbmVlZGVkLiBPbiBzdWNjZXNzLCAwIGlzIHJldHVy bmVkLiBJZiB0aGUgbmV3IHNwYW4gb3ZlcmxhcHMgYW55CisrICogZXhpc3Rpbmcgc3BhbnMsIHRo ZW4gMSBpcyByZXR1cm5lZCBhbmQgdGhlIG5ldyBzcGFuIGlzIG5vdCBhZGRlZCB0byB0aGUKKysg KiBsaXN0LiBJZiB0aGUgbmV3IHNwYW4gaXMgaW52YWxpZCBiZWNhdXNlIGJlZyBpcyBncmVhdGVy IHRoYW4gb3IgZXF1YWwgdG8KKysgKiBlbmQsIHRoZW4gLTEgaXMgcmV0dXJuZWQuIElmIHRoZSBs aXN0IG5lZWRzIHRvIGJlIGdyb3duIGJ1dCB0aGUgbWVtb3J5CisrICogYWxsb2NhdGlvbiBmYWls cywgdGhlbiAtMiBpcyByZXR1cm5lZC4KKysgKi8KKytzdGF0aWMgaW50IGNvdmVyX2FkZChjb3Zl ciwgYmVnLCBlbmQpCisrICAgIGNvdmVyX3QgKmNvdmVyOworKyAgICBib3VuZF90IGJlZzsKKysg ICAgYm91bmRfdCBlbmQ7CisreworKyAgICBzaXplX3QgcG9zOworKyAgICBpbnQgcHJlYywgZm9s bDsKKysKKysgICAgaWYgKGJlZyA+PSBlbmQpCisrICAgIC8qIFRoZSBuZXcgc3BhbiBpcyBpbnZh bGlkLiAqLworKyAgICAgICAgcmV0dXJuIC0xOworKworKyAgICAvKiBGaW5kIHdoZXJlIHRoZSBu ZXcgc3BhbiBzaG91bGQgZ28sIGFuZCBtYWtlIHN1cmUgdGhhdCBpdCBkb2VzIG5vdAorKyAgICAg ICBvdmVybGFwIHdpdGggYW55IGV4aXN0aW5nIHNwYW5zLiAqLworKyAgICBwb3MgPSBjb3Zlcl9m aW5kKGNvdmVyLCBiZWcpOworKyAgICBpZiAoKHBvcyA+IDAgJiYgYmVnIDwgY292ZXItPnNwYW5b cG9zIC0gMV0uZW5kKSB8fAorKyAgICAgICAgKHBvcyA8IGNvdmVyLT5udW0gJiYgZW5kID4gY292 ZXItPnNwYW5bcG9zXS5iZWcpKQorKyAgICAgICAgcmV0dXJuIDE7CisrCisrICAgIC8qIENoZWNr IGZvciBhZGphY2VuY2llcy4gKi8KKysgICAgcHJlYyA9IHBvcyA+IDAgJiYgYmVnID09IGNvdmVy LT5zcGFuW3BvcyAtIDFdLmVuZDsKKysgICAgZm9sbCA9IHBvcyA8IGNvdmVyLT5udW0gJiYgZW5k ID09IGNvdmVyLT5zcGFuW3Bvc10uYmVnOworKyAgICBpZiAocHJlYyAmJiBmb2xsKSB7CisrICAg ICAgICAvKiBUaGUgbmV3IHNwYW4gY29ubmVjdHMgdGhlIHByZWNlZGluZyBhbmQgZm9sbG93aW5n IHNwYW5zLiBNZXJnZSB0aGUKKysgICAgICAgICAgIGZvbGxvd2luZyBzcGFuIGludG8gdGhlIHBy ZWNlZGluZyBzcGFuLCBhbmQgZGVsZXRlIHRoZSBmb2xsb3dpbmcKKysgICAgICAgICAgIHNwYW4u ICovCisrICAgICAgICBjb3Zlci0+c3Bhbltwb3MgLSAxXS5lbmQgPSBjb3Zlci0+c3Bhbltwb3Nd LmVuZDsKKysgICAgICAgIGNvdmVyLT5udW0tLTsKKysgICAgICAgIG1lbW1vdmUoY292ZXItPnNw YW4gKyBwb3MsIGNvdmVyLT5zcGFuICsgcG9zICsgMSwKKysgICAgICAgICAgICAgICAgKGNvdmVy LT5udW0gLSBwb3MpICogc2l6ZW9mKHNwYW5fdCkpOworKyAgICB9CisrICAgIGVsc2UgaWYgKHBy ZWMpCisrICAgICAgICAvKiBUaGUgbmV3IHNwYW4gaXMgYWRqYWNlbnQgb25seSB0byB0aGUgcHJl Y2VkaW5nIHNwYW4uIEV4dGVuZCB0aGUgZW5kCisrICAgICAgICAgICBvZiB0aGUgcHJlY2VkaW5n IHNwYW4uICovCisrICAgICAgICBjb3Zlci0+c3Bhbltwb3MgLSAxXS5lbmQgPSBlbmQ7CisrICAg IGVsc2UgaWYgKGZvbGwpCisrICAgICAgICAvKiBUaGUgbmV3IHNwYW4gaXMgYWRqYWNlbnQgb25s eSB0byB0aGUgZm9sbG93aW5nIHNwYW4uIEV4dGVuZCB0aGUKKysgICAgICAgICAgIGJlZ2lubmlu ZyBvZiB0aGUgZm9sbG93aW5nIHNwYW4uICovCisrICAgICAgICBjb3Zlci0+c3Bhbltwb3NdLmJl ZyA9IGJlZzsKKysgICAgZWxzZSB7CisrICAgICAgICAvKiBUaGUgbmV3IHNwYW4gaGFzIGdhcHMg YmV0d2VlbiBib3RoIHRoZSBwcmVjZWRpbmcgYW5kIHRoZSBmb2xsb3dpbmcKKysgICAgICAgICAg IHNwYW5zLiBBc3N1cmUgdGhhdCB0aGVyZSBpcyByb29tIGFuZCBpbnNlcnQgdGhlIHNwYW4uICAq LworKyAgICAgICAgaWYgKGNvdmVyLT5udW0gPT0gY292ZXItPm1heCkgeworKyAgICAgICAgICAg IHNpemVfdCBtYXggPSBjb3Zlci0+bWF4ID09IDAgPyAxNiA6IGNvdmVyLT5tYXggPDwgMTsKKysg ICAgICAgICAgICBzcGFuX3QgKnNwYW4gPSByZWFsbG9jKGNvdmVyLT5zcGFuLCBtYXggKiBzaXpl b2Yoc3Bhbl90KSk7CisrICAgICAgICAgICAgaWYgKHNwYW4gPT0gTlVMTCkKKysgICAgICAgICAg ICAgICAgcmV0dXJuIC0yOworKyAgICAgICAgICAgIGNvdmVyLT5zcGFuID0gc3BhbjsKKysgICAg ICAgICAgICBjb3Zlci0+bWF4ID0gbWF4OworKyAgICAgICAgfQorKyAgICAgICAgbWVtbW92ZShj b3Zlci0+c3BhbiArIHBvcyArIDEsIGNvdmVyLT5zcGFuICsgcG9zLAorKyAgICAgICAgICAgICAg ICAoY292ZXItPm51bSAtIHBvcykgKiBzaXplb2Yoc3Bhbl90KSk7CisrICAgICAgICBjb3Zlci0+ bnVtKys7CisrICAgICAgICBjb3Zlci0+c3Bhbltwb3NdLmJlZyA9IGJlZzsKKysgICAgICAgIGNv dmVyLT5zcGFuW3Bvc10uZW5kID0gZW5kOworKyAgICB9CisrICAgIHJldHVybiAwOworK30KKyAK KyAKKyAKK0BAIC0zNzQsNiArNDkzLDI5IEBAIGludCBleHRyYWN0X29yX3Rlc3RfZmlsZXMoX19H KSAgICAvKiByZXR1cm4gUEstdHlwZSBlcnJvciBjb2RlICovCisgICAgIH0KKyAjZW5kaWYgLyog IVNGWCB8fCBTRlhfRVhESVIgKi8KKyAKKysgICAgLyogT25lIG1vcmU6IGluaXRpYWxpemUgY292 ZXIgc3RydWN0dXJlIGZvciBib21iIGRldGVjdGlvbi4gU3RhcnQgd2l0aCBhCisrICAgICAgIHNw YW4gdGhhdCBjb3ZlcnMgdGhlIGNlbnRyYWwgZGlyZWN0b3J5IHRob3VnaCB0aGUgZW5kIG9mIHRo ZSBmaWxlLiAqLworKyAgICBpZiAoRy5jb3ZlciA9PSBOVUxMKSB7CisrICAgICAgICBHLmNvdmVy ID0gbWFsbG9jKHNpemVvZihjb3Zlcl90KSk7CisrICAgICAgICBpZiAoRy5jb3ZlciA9PSBOVUxM KSB7CisrICAgICAgICAgICAgSW5mbyhzbGlkZSwgMHg0MDEsICgoY2hhciAqKXNsaWRlLAorKyAg ICAgICAgICAgICAgTG9hZEZhclN0cmluZyhOb3RFbm91Z2hNZW1Db3ZlcikpKTsKKysgICAgICAg ICAgICByZXR1cm4gUEtfTUVNOworKyAgICAgICAgfQorKyAgICAgICAgKChjb3Zlcl90ICopRy5j b3ZlciktPnNwYW4gPSBOVUxMOworKyAgICAgICAgKChjb3Zlcl90ICopRy5jb3ZlciktPm1heCA9 IDA7CisrICAgIH0KKysgICAgKChjb3Zlcl90ICopRy5jb3ZlciktPm51bSA9IDA7CisrICAgIGlm ICgoRy5leHRyYV9ieXRlcyAhPSAwICYmCisrICAgICAgICAgY292ZXJfYWRkKChjb3Zlcl90ICop Ry5jb3ZlciwgMCwgRy5leHRyYV9ieXRlcykgIT0gMCkgfHwKKysgICAgICAgIGNvdmVyX2FkZCgo Y292ZXJfdCAqKUcuY292ZXIsCisrICAgICAgICAgICAgICAgICAgRy5leHRyYV9ieXRlcyArIEcu ZWNyZWMub2Zmc2V0X3N0YXJ0X2NlbnRyYWxfZGlyZWN0b3J5LAorKyAgICAgICAgICAgICAgICAg IEcuemlwbGVuKSAhPSAwKSB7CisrICAgICAgICBJbmZvKHNsaWRlLCAweDQwMSwgKChjaGFyICop c2xpZGUsCisrICAgICAgICAgIExvYWRGYXJTdHJpbmcoTm90RW5vdWdoTWVtQ292ZXIpKSk7Cisr ICAgICAgICByZXR1cm4gUEtfTUVNOworKyAgICB9CisrCisgLyotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgICAgVGhlIGJhc2ljIGlkZWEgb2YgdGhpcyBmdW5jdGlvbiBpcyBhcyBmb2xsb3dzLiAgU2lu Y2UgdGhlIGNlbnRyYWwgZGktCisgICAgIHJlY3RvcnkgbGllcyBhdCB0aGUgZW5kIG9mIHRoZSB6 aXBmaWxlIGFuZCB0aGUgbWVtYmVyIGZpbGVzIGxpZSBhdCB0aGUKK0BAIC01OTEsNyArNzMzLDgg QEAgaW50IGV4dHJhY3Rfb3JfdGVzdF9maWxlcyhfX0cpICAgIC8qIHJldHVybiBQSy10eXBlIGVy cm9yIGNvZGUgKi8KKyAgICAgICAgICAgICBpZiAoZXJyb3IgPiBlcnJvcl9pbl9hcmNoaXZlKQor ICAgICAgICAgICAgICAgICBlcnJvcl9pbl9hcmNoaXZlID0gZXJyb3I7CisgICAgICAgICAgICAg LyogLi4uYW5kIGtlZXAgZ29pbmcgKHVubGVzcyBkaXNrIGZ1bGwgb3IgdXNlciBicmVhaykgKi8K Ky0gICAgICAgICAgICBpZiAoRy5kaXNrX2Z1bGwgPiAxIHx8IGVycm9yX2luX2FyY2hpdmUgPT0g SVpfQ1RSTEMpIHsKKysgICAgICAgICAgICBpZiAoRy5kaXNrX2Z1bGwgPiAxIHx8IGVycm9yX2lu X2FyY2hpdmUgPT0gSVpfQ1RSTEMgfHwKKysgICAgICAgICAgICAgICAgZXJyb3IgPT0gUEtfQk9N QikgeworICAgICAgICAgICAgICAgICAvKiBjbGVhciByZWFjaGVkX2VuZCB0byBzaWduYWwgcHJl bWF0dXJlIHN0b3AgLi4uICovCisgICAgICAgICAgICAgICAgIHJlYWNoZWRfZW5kID0gRkFMU0U7 CisgICAgICAgICAgICAgICAgIC8qIC4uLiBhbmQgY2FuY2VsIHNjYW5uaW5nIHRoZSBjZW50cmFs IGRpcmVjdG9yeSAqLworQEAgLTEwNjAsNiArMTIwMywxMSBAQCBzdGF0aWMgaW50IGV4dHJhY3Rf b3JfdGVzdF9lbnRyeWxpc3QoX19HX18gbnVtY2h1bmssCisgCisgICAgICAgICAvKiBzZWVrX3pp cGYoX19HX18gcEluZm8tPm9mZnNldCk7ICAqLworICAgICAgICAgcmVxdWVzdCA9IEcucEluZm8t Pm9mZnNldCArIEcuZXh0cmFfYnl0ZXM7CisrICAgICAgICBpZiAoY292ZXJfd2l0aGluKChjb3Zl cl90ICopRy5jb3ZlciwgcmVxdWVzdCkpIHsKKysgICAgICAgICAgICBJbmZvKHNsaWRlLCAweDQw MSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAgICAgICBMb2FkRmFyU3RyaW5nKE92ZXJsYXBw ZWRDb21wb25lbnRzKSkpOworKyAgICAgICAgICAgIHJldHVybiBQS19CT01COworKyAgICAgICAg fQorICAgICAgICAgaW5idWZfb2Zmc2V0ID0gcmVxdWVzdCAlIElOQlVGU0laOworICAgICAgICAg YnVmc3RhcnQgPSByZXF1ZXN0IC0gaW5idWZfb2Zmc2V0OworIAorQEAgLTE1OTEsNiArMTczOSwx OCBAQCBzdGF0aWMgaW50IGV4dHJhY3Rfb3JfdGVzdF9lbnRyeWxpc3QoX19HX18gbnVtY2h1bmss CisgICAgICAgICAgICAgcmV0dXJuIElaX0NUUkxDOyAgICAgICAgLyogY2FuY2VsIG9wZXJhdGlv biBieSB1c2VyIHJlcXVlc3QgKi8KKyAgICAgICAgIH0KKyAjZW5kaWYKKysgICAgICAgIGVycm9y ID0gY292ZXJfYWRkKChjb3Zlcl90ICopRy5jb3ZlciwgcmVxdWVzdCwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgIEcuY3VyX3ppcGZpbGVfYnVmc3RhcnQgKyAoRy5pbnB0ciAtIEcuaW5idWYp KTsKKysgICAgICAgIGlmIChlcnJvciA8IDApIHsKKysgICAgICAgICAgICBJbmZvKHNsaWRlLCAw eDQwMSwgKChjaGFyICopc2xpZGUsCisrICAgICAgICAgICAgICBMb2FkRmFyU3RyaW5nKE5vdEVu b3VnaE1lbUNvdmVyKSkpOworKyAgICAgICAgICAgIHJldHVybiBQS19NRU07CisrICAgICAgICB9 CisrICAgICAgICBpZiAoZXJyb3IgIT0gMCkgeworKyAgICAgICAgICAgIEluZm8oc2xpZGUsIDB4 NDAxLCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAgICAgICAgIExvYWRGYXJTdHJpbmcoT3Zlcmxh cHBlZENvbXBvbmVudHMpKSk7CisrICAgICAgICAgICAgcmV0dXJuIFBLX0JPTUI7CisrICAgICAg ICB9CisgI2lmZGVmIE1BQ09TICAvKiBNYWNPUyBpcyBubyBwcmVlbXB0aXZlIE9TLCB0aHVzIGNh bGwgZXZlbnQtaGFuZGxpbmcgYnkgaGFuZCAqLworICAgICAgICAgVXNlclN0b3AoKTsKKyAjZW5k aWYKK0BAIC0xOTkyLDYgKzIxNTIsMzQgQEAgc3RhdGljIGludCBleHRyYWN0X29yX3Rlc3RfbWVt YmVyKF9fRykgICAgLyogcmV0dXJuIFBLLXR5cGUgZXJyb3IgY29kZSAqLworICAgICB9CisgCisg ICAgIHVuZGVmZXJfaW5wdXQoX19HKTsKKysKKysgICAgaWYgKChHLmxyZWMuZ2VuZXJhbF9wdXJw b3NlX2JpdF9mbGFnICYgOCkgIT0gMCkgeworKyAgICAgICAgLyogc2tpcCBvdmVyIGRhdGEgZGVz Y3JpcHRvciAoaGFyZGVyIHRoYW4gaXQgc291bmRzLCBkdWUgdG8gc2lnbmF0dXJlCisrICAgICAg ICAgKiBhbWJpZ3VpdHkpCisrICAgICAgICAgKi8KKysjICAgICAgIGRlZmluZSBTSUcgMHgwODA3 NGI1MAorKyMgICAgICAgZGVmaW5lIExPVyAweGZmZmZmZmZmCisrICAgICAgICB1Y2ggYnVmWzEy XTsKKysgICAgICAgIHVuc2lnbmVkIHNoeSA9IDEyIC0gcmVhZGJ1ZigoY2hhciAqKWJ1ZiwgMTIp OworKyAgICAgICAgdWxnIGNyYyA9IHNoeSA/IDAgOiBtYWtlbG9uZyhidWYpOworKyAgICAgICAg dWxnIGNsZW4gPSBzaHkgPyAwIDogbWFrZWxvbmcoYnVmICsgNCk7CisrICAgICAgICB1bGcgdWxl biA9IHNoeSA/IDAgOiBtYWtlbG9uZyhidWYgKyA4KTsgLyogb3IgaGlnaCBjbGVuIGlmIFpJUDY0 ICovCisrICAgICAgICBpZiAoY3JjID09IFNJRyAmJiAgICAgICAgICAgICAgICAgICAgICAgLyog aWYgbm90IFNJRywgbm8gc2lnbmF0dXJlICovCisrICAgICAgICAgICAgKEcubHJlYy5jcmMzMiAh PSBTSUcgfHwgICAgICAgICAgICAgLyogaWYgbm90IFNJRywgaGF2ZSBzaWduYXR1cmUgKi8KKysg ICAgICAgICAgICAgKGNsZW4gPT0gU0lHICYmICAgICAgICAgICAgICAgICAgICAvKiBpZiBub3Qg U0lHLCBubyBzaWduYXR1cmUgKi8KKysgICAgICAgICAgICAgICgoRy5scmVjLmNzaXplICYgTE9X KSAhPSBTSUcgfHwgICAvKiBpZiBub3QgU0lHLCBoYXZlIHNpZ25hdHVyZSAqLworKyAgICAgICAg ICAgICAgICh1bGVuID09IFNJRyAmJiAgICAgICAgICAgICAgICAgIC8qIGlmIG5vdCBTSUcsIG5v IHNpZ25hdHVyZSAqLworKyAgICAgICAgICAgICAgICAoRy56aXA2NCA/IEcubHJlYy5jc2l6ZSA+ PiAzMiA6IEcubHJlYy51Y3NpemUpICE9IFNJRworKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8qIGlmIG5vdCBTSUcsIGhhdmUgc2lnbmF0dXJlICovCisr ICAgICAgICAgICAgICAgICkpKSkpCisrICAgICAgICAgICAgICAgICAgIC8qIHNraXAgZm91ciBt b3JlIGJ5dGVzIHRvIGFjY291bnQgZm9yIHNpZ25hdHVyZSAqLworKyAgICAgICAgICAgICAgICAg ICBzaHkgKz0gNCAtIHJlYWRidWYoKGNoYXIgKilidWYsIDQpOworKyAgICAgICAgaWYgKEcuemlw NjQpCisrICAgICAgICAgICAgc2h5ICs9IDggLSByZWFkYnVmKChjaGFyICopYnVmLCA4KTsgLyog c2tpcCBlaWdodCBtb3JlIGZvciBaSVA2NCAqLworKyAgICAgICAgaWYgKHNoeSkKKysgICAgICAg ICAgICBlcnJvciA9IFBLX0VSUjsKKysgICAgfQorKworICAgICByZXR1cm4gZXJyb3I7CisgCisg fSAvKiBlbmQgZnVuY3Rpb24gZXh0cmFjdF9vcl90ZXN0X21lbWJlcigpICovCitkaWZmIC0tZ2l0 IGEvZ2xvYmFscy5jIGIvZ2xvYmFscy5jCitpbmRleCBmYThjY2E1Li4xZTBmNjA4IDEwMDY0NAor LS0tIGEvZ2xvYmFscy5jCisrKysgYi9nbG9iYWxzLmMKK0BAIC0xODEsNiArMTgxLDcgQEAgVXpf R2xvYnMgKmdsb2JhbHNDdG9yKCkKKyAjIGlmICghZGVmaW5lZChOT19USU1FU1RBTVBTKSkKKyAg ICAgdU8uRF9mbGFnPTE7ICAgIC8qIGRlZmF1bHQgdG8gJy1EJywgbm8gcmVzdG9yYXRpb24gb2Yg ZGlyIHRpbWVzdGFtcHMgKi8KKyAjIGVuZGlmCisrICAgIEcuY292ZXIgPSBOVUxMOyAgICAgLyog bm90IGFsbG9jYXRlZCB5ZXQgKi8KKyAjZW5kaWYKKyAKKyAgICAgdU8ubGZsYWc9KC0xKTsKK2Rp ZmYgLS1naXQgYS9nbG9iYWxzLmggYi9nbG9iYWxzLmgKK2luZGV4IDExYjcyMTUuLjJiZGNkZWIg MTAwNjQ0CistLS0gYS9nbG9iYWxzLmgKKysrKyBiL2dsb2JhbHMuaAorQEAgLTI2MCwxMiArMjYw LDE1IEBAIHR5cGVkZWYgc3RydWN0IEdsb2JhbHMgeworICAgICBlY2Rpcl9yZWMgICAgICAgZWNy ZWM7ICAgICAgICAgLyogdXNlZCBpbiB1bnppcC5jLCBleHRyYWN0LmMgKi8KKyAgICAgel9zdGF0 ICAgc3RhdGJ1ZjsgICAgICAgICAgICAgIC8qIHVzZWQgYnkgbWFpbiwgbWFwbmFtZSwgY2hlY2tf Zm9yX25ld2VyICovCisgCisrICAgIGludCB6aXA2NDsgICAgICAgICAgICAgICAgICAgICAvKiB0 cnVlIGlmIFppcDY0IGluZm8gaW4gZXh0cmEgZmllbGQgKi8KKysKKyAgICAgaW50ICAgICAgbWVt X21vZGU7CisgICAgIHVjaCAgICAgICpvdXRidWZwdHI7ICAgICAgICAgICAvKiBleHRyYWN0LmMg c3RhdGljICovCisgICAgIHVsZyAgICAgIG91dHNpemU7ICAgICAgICAgICAgICAvKiBleHRyYWN0 LmMgc3RhdGljICovCisgICAgIGludCAgICAgIHJlcG9ydGVkX2JhY2tzbGFzaDsgICAvKiBleHRy YWN0LmMgc3RhdGljICovCisgICAgIGludCAgICAgIGRpc2tfZnVsbDsKKyAgICAgaW50ICAgICAg bmV3ZmlsZTsKKysgICAgdm9pZCAgICAgKipjb3ZlcjsgICAgICAgICAgICAgIC8qIHVzZWQgaW4g ZXh0cmFjdC5jIGZvciBib21iIGRldGVjdGlvbiAqLworIAorICAgICBpbnQgICAgICBkaWRDUmxh c3Q7ICAgICAgICAgICAgLyogZmlsZWlvIHN0YXRpYyAqLworICAgICB1bGcgICAgICBudW1saW5l czsgICAgICAgICAgICAgLyogZmlsZWlvIHN0YXRpYzogbnVtYmVyIG9mIGxpbmVzIHByaW50ZWQg Ki8KK2RpZmYgLS1naXQgYS9wcm9jZXNzLmMgYi9wcm9jZXNzLmMKK2luZGV4IDFlOWExZTEuLmQy ZTRkYzMgMTAwNjQ0CistLS0gYS9wcm9jZXNzLmMKKysrKyBiL3Byb2Nlc3MuYworQEAgLTYzNyw2 ICs2MzcsMTMgQEAgdm9pZCBmcmVlX0dfYnVmZmVycyhfX0cpICAgICAvKiByZWxlYXNlcyBhbGwg bWVtb3J5IGFsbG9jYXRlZCBpbiBnbG9iYWwgdmFycyAqLworICAgICB9CisgI2VuZGlmCisgCisr ICAgIC8qIEZyZWUgdGhlIGNvdmVyIHNwYW4gbGlzdCBhbmQgdGhlIGNvdmVyIHN0cnVjdHVyZS4g Ki8KKysgICAgaWYgKEcuY292ZXIgIT0gTlVMTCkgeworKyAgICAgICAgZnJlZSgqKEcuY292ZXIp KTsKKysgICAgICAgIGZyZWUoRy5jb3Zlcik7CisrICAgICAgICBHLmNvdmVyID0gTlVMTDsKKysg ICAgfQorKworIH0gLyogZW5kIGZ1bmN0aW9uIGZyZWVfR19idWZmZXJzKCkgKi8KKyAKKyAKK0BA IC0xODkwLDYgKzE4OTcsOCBAQCBpbnQgZ2V0WmlwNjREYXRhKF9fR19fIGVmX2J1ZiwgZWZfbGVu KQorICNkZWZpbmUgWjY0RkxHUyAweGZmZmYKKyAjZGVmaW5lIFo2NEZMR0wgMHhmZmZmZmZmZgor IAorKyAgICBHLnppcDY0ID0gRkFMU0U7CisrCisgICAgIGlmIChlZl9sZW4gPT0gMCB8fCBlZl9i dWYgPT0gTlVMTCkKKyAgICAgICAgIHJldHVybiBQS19DT09MOworIAorQEAgLTE5MjcsNiArMTkz Niw4IEBAIGludCBnZXRaaXA2NERhdGEoX19HX18gZWZfYnVmLCBlZl9sZW4pCisgI2lmIDAKKyAg ICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgIC8qIEV4cGVjdCBvbmx5IG9uZSBFRl9QS1Na NjQgYmxvY2suICovCisgI2VuZGlmIC8qIDAgKi8KKysKKysgICAgICAgICAgRy56aXA2NCA9IFRS VUU7CisgICAgICAgICB9CisKKyAgICAgICAgIC8qIFNraXAgdGhpcyBleHRyYSBmaWVsZCBibG9j ay4gKi8KK2RpZmYgLS1naXQgYS91bnppcC5oIGIvdW56aXAuaAoraW5kZXggNWIyYTMyNi4uZWQy NGE1YiAxMDA2NDQKKy0tLSBhL3VuemlwLmgKKysrKyBiL3VuemlwLmgKK0BAIC02NDUsNiArNjQ1 LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1V6cF9jZGlyX1JlYyB7CisgI2RlZmluZSBQS19OT1pJUCAg ICAgICAgICAgOSAgIC8qIHppcGZpbGUgbm90IGZvdW5kICovCisgI2RlZmluZSBQS19QQVJBTSAg ICAgICAgICAxMCAgIC8qIGJhZCBvciBpbGxlZ2FsIHBhcmFtZXRlcnMgc3BlY2lmaWVkICovCisg I2RlZmluZSBQS19GSU5EICAgICAgICAgICAxMSAgIC8qIG5vIGZpbGVzIGZvdW5kICovCisrI2Rl ZmluZSBQS19CT01CICAgICAgICAgICAxMiAgIC8qIGxpa2VseSB6aXAgYm9tYiAqLworICNkZWZp bmUgUEtfRElTSyAgICAgICAgICAgNTAgICAvKiBkaXNrIGZ1bGwgKi8KKyAjZGVmaW5lIFBLX0VP RiAgICAgICAgICAgIDUxICAgLyogdW5leHBlY3RlZCBFT0YgKi8KKyAKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvdW56aXAvcGF0Y2hlcy91bnppcC16aXBib21iLXBhcnQzLnBhdGNoIGIvc3JjcGtncy91 bnppcC9wYXRjaGVzL3VuemlwLXppcGJvbWItcGFydDMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAuLjNiOGQ2N2I3NzMyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy91bnppcC9wYXRjaGVzL3VuemlwLXppcGJvbWItcGFydDMucGF0Y2gKQEAgLTAsMCArMSwx MTIgQEAKK0Zyb20gNmQzNTE4MzFiZTcwNWNjMjZkODk3ZGI0NGY4NzhhOTc4ZjQxMzhmYyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcmsgQWRsZXIgPG1hZGxlckBhbHVtbmkuY2Fs dGVjaC5lZHU+CitEYXRlOiBUaHUsIDI1IEp1bCAyMDE5IDIwOjQzOjE3IC0wNzAwCitTdWJqZWN0 OiBbUEFUQ0hdIERvIG5vdCByYWlzZSBhIHppcCBib21iIGFsZXJ0IGZvciBhIG1pc3BsYWNlZCBj ZW50cmFsCisgZGlyZWN0b3J5LgorCitUaGVyZSBpcyBhIHppcC1saWtlIGZpbGUgaW4gdGhlIEZp cmVmb3ggZGlzdHJpYnV0aW9uLCBvbW5pLmphLAord2hpY2ggaXMgYSB6aXAgY29udGFpbmVyIHdp dGggdGhlIGNlbnRyYWwgZGlyZWN0b3J5IHBsYWNlZCBhdCB0aGUKK3N0YXJ0IG9mIHRoZSBmaWxl IGluc3RlYWQgb2YgYWZ0ZXIgdGhlIGxvY2FsIGVudHJpZXMgYXMgcmVxdWlyZWQKK2J5IHRoZSB6 aXAgc3RhbmRhcmQuIFRoaXMgY29tbWl0IG1hcmtzIHRoZSBhY3R1YWwgbG9jYXRpb24gb2YgdGhl CitjZW50cmFsIGRpcmVjdG9yeSwgYXMgd2VsbCBhcyB0aGUgZW5kIG9mIGNlbnRyYWwgZGlyZWN0 b3J5IHJlY29yZHMsCithcyBkaXNhbGxvd2VkIGxvY2F0aW9ucy4gVGhpcyBub3cgcGVybWl0cyBz dWNoIGNvbnRhaW5lcnMgdG8gbm90CityYWlzZSBhIHppcCBib21iIGFsZXJ0LCB3aGVyZSBpbiBm YWN0IHRoZXJlIGFyZSBubyBvdmVybGFwcy4KKy0tLQorIGV4dHJhY3QuYyB8IDI1ICsrKysrKysr KysrKysrKysrKystLS0tLS0KKyBwcm9jZXNzLmMgfCAgNiArKysrKysKKyB1bnpwcml2LmggfCAx MCArKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAzNSBpbnNlcnRpb25zKCspLCA2IGRlbGV0 aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0cmFjdC5jIGIvZXh0cmFjdC5jCitpbmRleCAwOTcz YTMzLi4xYjczY2IwIDEwMDY0NAorLS0tIGEvZXh0cmFjdC5jCisrKysgYi9leHRyYWN0LmMKK0BA IC00OTMsOCArNDkzLDExIEBAIGludCBleHRyYWN0X29yX3Rlc3RfZmlsZXMoX19HKSAgICAvKiBy ZXR1cm4gUEstdHlwZSBlcnJvciBjb2RlICovCisgICAgIH0KKyAjZW5kaWYgLyogIVNGWCB8fCBT RlhfRVhESVIgKi8KKyAKKy0gICAgLyogT25lIG1vcmU6IGluaXRpYWxpemUgY292ZXIgc3RydWN0 dXJlIGZvciBib21iIGRldGVjdGlvbi4gU3RhcnQgd2l0aCBhCistICAgICAgIHNwYW4gdGhhdCBj b3ZlcnMgdGhlIGNlbnRyYWwgZGlyZWN0b3J5IHRob3VnaCB0aGUgZW5kIG9mIHRoZSBmaWxlLiAq LworKyAgICAvKiBPbmUgbW9yZTogaW5pdGlhbGl6ZSBjb3ZlciBzdHJ1Y3R1cmUgZm9yIGJvbWIg ZGV0ZWN0aW9uLiBTdGFydCB3aXRoCisrICAgICAgIHNwYW5zIHRoYXQgY292ZXIgYW55IGV4dHJh IGJ5dGVzIGF0IHRoZSBzdGFydCwgdGhlIGNlbnRyYWwgZGlyZWN0b3J5LAorKyAgICAgICB0aGUg ZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IHJlY29yZCAoaW5jbHVkaW5nIHRoZSBaaXA2NCBlbmQg b2YgY2VudHJhbAorKyAgICAgICBkaXJlY3RvcnkgbG9jYXRvciwgaWYgcHJlc2VudCksIGFuZCB0 aGUgWmlwNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5CisrICAgICAgIHJlY29yZCwgaWYgcHJl c2VudC4gKi8KKyAgICAgaWYgKEcuY292ZXIgPT0gTlVMTCkgeworICAgICAgICAgRy5jb3ZlciA9 IG1hbGxvYyhzaXplb2YoY292ZXJfdCkpOworICAgICAgICAgaWYgKEcuY292ZXIgPT0gTlVMTCkg eworQEAgLTUwNiwxNSArNTA5LDI1IEBAIGludCBleHRyYWN0X29yX3Rlc3RfZmlsZXMoX19HKSAg ICAvKiByZXR1cm4gUEstdHlwZSBlcnJvciBjb2RlICovCisgICAgICAgICAoKGNvdmVyX3QgKilH LmNvdmVyKS0+bWF4ID0gMDsKKyAgICAgfQorICAgICAoKGNvdmVyX3QgKilHLmNvdmVyKS0+bnVt ID0gMDsKKy0gICAgaWYgKChHLmV4dHJhX2J5dGVzICE9IDAgJiYKKy0gICAgICAgICBjb3Zlcl9h ZGQoKGNvdmVyX3QgKilHLmNvdmVyLCAwLCBHLmV4dHJhX2J5dGVzKSAhPSAwKSB8fAorLSAgICAg ICAgY292ZXJfYWRkKChjb3Zlcl90ICopRy5jb3ZlciwKKysgICAgaWYgKGNvdmVyX2FkZCgoY292 ZXJfdCAqKUcuY292ZXIsCisgICAgICAgICAgICAgICAgICAgRy5leHRyYV9ieXRlcyArIEcuZWNy ZWMub2Zmc2V0X3N0YXJ0X2NlbnRyYWxfZGlyZWN0b3J5LAorLSAgICAgICAgICAgICAgICAgIEcu emlwbGVuKSAhPSAwKSB7CisrICAgICAgICAgICAgICAgICAgRy5leHRyYV9ieXRlcyArIEcuZWNy ZWMub2Zmc2V0X3N0YXJ0X2NlbnRyYWxfZGlyZWN0b3J5ICsKKysgICAgICAgICAgICAgICAgICBH LmVjcmVjLnNpemVfY2VudHJhbF9kaXJlY3RvcnkpICE9IDApIHsKKyAgICAgICAgIEluZm8oc2xp ZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKyAgICAgICAgICAgTG9hZEZhclN0cmluZyhOb3RF bm91Z2hNZW1Db3ZlcikpKTsKKyAgICAgICAgIHJldHVybiBQS19NRU07CisgICAgIH0KKysgICAg aWYgKChHLmV4dHJhX2J5dGVzICE9IDAgJiYKKysgICAgICAgICBjb3Zlcl9hZGQoKGNvdmVyX3Qg KilHLmNvdmVyLCAwLCBHLmV4dHJhX2J5dGVzKSAhPSAwKSB8fAorKyAgICAgICAgKEcuZWNyZWMu aGF2ZV9lY3I2NCAmJgorKyAgICAgICAgIGNvdmVyX2FkZCgoY292ZXJfdCAqKUcuY292ZXIsIEcu ZWNyZWMuZWM2NF9zdGFydCwKKysgICAgICAgICAgICAgICAgICAgRy5lY3JlYy5lYzY0X2VuZCkg IT0gMCkgfHwKKysgICAgICAgIGNvdmVyX2FkZCgoY292ZXJfdCAqKUcuY292ZXIsIEcuZWNyZWMu ZWNfc3RhcnQsCisrICAgICAgICAgICAgICAgICAgRy5lY3JlYy5lY19lbmQpICE9IDApIHsKKysg ICAgICAgIEluZm8oc2xpZGUsIDB4NDAxLCAoKGNoYXIgKilzbGlkZSwKKysgICAgICAgICAgTG9h ZEZhclN0cmluZyhPdmVybGFwcGVkQ29tcG9uZW50cykpKTsKKysgICAgICAgIHJldHVybiBQS19C T01COworKyAgICB9CisgCisgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgVGhlIGJhc2ljIGlk ZWEgb2YgdGhpcyBmdW5jdGlvbiBpcyBhcyBmb2xsb3dzLiAgU2luY2UgdGhlIGNlbnRyYWwgZGkt CitkaWZmIC0tZ2l0IGEvcHJvY2Vzcy5jIGIvcHJvY2Vzcy5jCitpbmRleCBkMmU0ZGMzLi5kNzVk NDA1IDEwMDY0NAorLS0tIGEvcHJvY2Vzcy5jCisrKysgYi9wcm9jZXNzLmMKK0BAIC0xNDA4LDYg KzE0MDgsMTAgQEAgc3RhdGljIGludCBmaW5kX2VjcmVjNjQoX19HX18gc2VhcmNobGVuKSAgICAg ICAgIC8qIHJldHVybiBQSy1jbGFzcyBlcnJvciAqLworIAorICAgICAvKiBOb3csIHdlIGFyZSAo YWxtb3N0KSBzdXJlIHRoYXQgd2UgaGF2ZSBhIFppcDY0IGFyY2hpdmUuICovCisgICAgIEcuZWNy ZWMuaGF2ZV9lY3I2NCA9IDE7CisrICAgIEcuZWNyZWMuZWNfc3RhcnQgLT0gRUNMT0M2NF9TSVpF KzQ7CisrICAgIEcuZWNyZWMuZWM2NF9zdGFydCA9IGVjcmVjNjRfc3RhcnRfb2Zmc2V0OworKyAg ICBHLmVjcmVjLmVjNjRfZW5kID0gZWNyZWM2NF9zdGFydF9vZmZzZXQgKworKyAgICAgICAgICAg ICAgICAgICAgICAgMTIgKyBtYWtlaW50NjQoJmJ5dGVyZWNbRUNSRUM2NF9MRU5HVEhdKTsKKyAK KyAgICAgLyogVXBkYXRlIHRoZSAiZW5kLW9mLWNlbnRyYWwtZGlyIG9mZnNldCIgZm9yIGxhdGVy IGNoZWNrcy4gKi8KKyAgICAgRy5yZWFsX2VjcmVjX29mZnNldCA9IGVjcmVjNjRfc3RhcnRfb2Zm c2V0OworQEAgLTE1NDIsNiArMTU0Niw4IEBAIHN0YXRpYyBpbnQgZmluZF9lY3JlYyhfX0dfXyBz ZWFyY2hsZW4pICAgICAgICAgIC8qIHJldHVybiBQSy1jbGFzcyBlcnJvciAqLworICAgICAgIG1h a2Vsb25nKCZieXRlcmVjW09GRlNFVF9TVEFSVF9DRU5UUkFMX0RJUkVDVE9SWV0pOworICAgICBH LmVjcmVjLnppcGZpbGVfY29tbWVudF9sZW5ndGggPQorICAgICAgIG1ha2V3b3JkKCZieXRlcmVj W1pJUEZJTEVfQ09NTUVOVF9MRU5HVEhdKTsKKysgICAgRy5lY3JlYy5lY19zdGFydCA9IEcucmVh bF9lY3JlY19vZmZzZXQ7CisrICAgIEcuZWNyZWMuZWNfZW5kID0gRy5lY3JlYy5lY19zdGFydCAr IDIyICsgRy5lY3JlYy56aXBmaWxlX2NvbW1lbnRfbGVuZ3RoOworIAorICAgICAvKiBOb3csIHdl IGhhdmUgdG8gcmVhZCB0aGUgYXJjaGl2ZSBjb21tZW50LCBCRUZPUkUgdGhlIGZpbGUgcG9pbnRl cgorICAgICAgICBpcyBtb3ZlZCBhd2F5IGJhY2t3YXJkcyB0byBzZWVrIGZvciBhIFppcDY0IEVD TE9DNjQgc3RydWN0dXJlLgorZGlmZiAtLWdpdCBhL3VuenByaXYuaCBiL3VuenByaXYuaAoraW5k ZXggZGM5ZWZmNS4uMjk3YjNjNyAxMDA2NDQKKy0tLSBhL3VuenByaXYuaAorKysrIGIvdW56cHJp di5oCitAQCAtMjE4NSw2ICsyMTg1LDE2IEBAIHR5cGVkZWYgc3RydWN0IFZNU3RpbWJ1ZiB7Cisg ICAgICAgIGludCBoYXZlX2VjcjY0OyAgICAgICAgICAgICAgICAgIC8qIHZhbGlkIFppcDY0IGVj ZGlyLXJlY29yZCBleGlzdHMgKi8KKyAgICAgICAgaW50IGlzX3ppcDY0X2FyY2hpdmU7ICAgICAg ICAgICAgLyogWmlwNjQgZWNkaXItcmVjb3JkIGlzIG1hbmRhdG9yeSAqLworICAgICAgICB1c2gg emlwZmlsZV9jb21tZW50X2xlbmd0aDsKKysgICAgICAgenVzel90IGVjX3N0YXJ0LCBlY19lbmQ7 ICAgICAgICAgLyogb2Zmc2V0cyBvZiBzdGFydCBhbmQgZW5kIG9mIHRoZQorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgb2YgY2VudHJhbCBkaXJlY3Rvcnkg cmVjb3JkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNs dWRpbmcgaWYgcHJlc2VudCB0aGUgWmlwNjQKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IGxvY2F0b3IsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGltbWVkaWF0ZWx5IHBy ZWNlZGVzIHRoZQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl bmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgcmVjb3JkICovCisrICAgICAgIHp1c3pfdCBlYzY0X3N0 YXJ0LCBlYzY0X2VuZDsgICAgIC8qIGlmIGhhdmVfZWNyNjQgaXMgdHJ1ZSwgdGhlbiB0aGVzZQor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgdGhlIG9mZnNl dHMgb2YgdGhlIHN0YXJ0IGFuZAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbmQgb2YgdGhlIFppcDY0IGVuZCBvZiBjZW50cmFsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSByZWNvcmQgKi8KKyAgICB9IGVj ZGlyX3JlYzsKKyAKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvdW56aXAvdGVtcGxhdGUgYi9zcmNw a2dzL3VuemlwL3RlbXBsYXRlCmluZGV4IGMwMWZjYTIyNzY4Li44NDc5Njk5NDk0NCAxMDA2NDQK LS0tIGEvc3JjcGtncy91bnppcC90ZW1wbGF0ZQorKysgYi9zcmNwa2dzL3VuemlwL3RlbXBsYXRl CkBAIC0xLDcgKzEsNyBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAndW56aXAnCiBwa2duYW1lPXVu emlwCiB2ZXJzaW9uPTYuMAotcmV2aXNpb249MTMKK3JldmlzaW9uPTE0CiB3cmtzcmM9dW56aXA2 MAogbWFrZWRlcGVuZHM9ImJ6aXAyLWRldmVsIgogc2hvcnRfZGVzYz0iTGlzdCwgdGVzdCBhbmQg ZXh0cmFjdCBjb21wcmVzc2VkIGZpbGVzIGluIGEgWklQIGFyY2hpdmUiCkBAIC0xMCw2ICsxMCw3 IEBAIGxpY2Vuc2U9IkluZm8tWklQIgogaG9tZXBhZ2U9Imh0dHA6Ly9pbmZvemlwLnNmLm5ldC8i CiBkaXN0ZmlsZXM9IiR7U09VUkNFRk9SR0VfU0lURX0vaW5mb3ppcC8ke3BrZ25hbWV9NjAudGFy Lmd6IgogY2hlY2tzdW09MDM2ZDk2OTkxNjQ2ZDA0NDllZDBhYTk1MmU0ZmJlMjFiNDc2Y2U5OTRh YmMyNzZlNDlkMzBlNjg2NzA4YmQzNworcGF0Y2hfYXJncz0iLU5wMSIKIAogZG9fYnVpbGQoKSB7 CiAJQ0ZMQUdTKz0iIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURXSUxEX1NUT1BfQVRfRElSIC1E TEFSR0VfRklMRV9TVVBQT1JUIFwK --===============5297641966312079985==--