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 24311 invoked from network); 14 Mar 2021 18:26:05 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 14 Mar 2021 18:26:05 -0000 Content-Type: multipart/mixed; boundary="===============5185885199839731712==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_=5BWiP=5D_New_package=3A_electron12-12=2E0=2E1?= To: ml@inbox.vuxu.org From: Johnnynator Reply-to: ml@inbox.vuxu.org Message-ID: Date: Sun, 14 Mar 2021 19:26:01 +0100 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============5185885199839731712== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IEpvaG5ueW5hdG9yIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9Kb2hu bnluYXRvci92b2lkLXBhY2thZ2VzIGVsZWN0cm9uMTIKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQt bGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzI5NDYzCgpbV2lQXSBOZXcgcGFja2FnZTogZWxlY3Ry b24xMi0xMi4wLjEKPCEtLSBNYXJrIGl0ZW1zIHdpdGggW3hdIHdoZXJlIGFwcGxpY2FibGUgLS0+ DQoNCiMjIyMgR2VuZXJhbA0KLSBbIF0gVGhpcyBpcyBhIG5ldyBwYWNrYWdlIGFuZCBpdCBjb25m b3JtcyB0byB0aGUgW3F1YWxpdHkgcmVxdWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL01hbnVhbC5tZCNxdWFsaXR5LXJlcXVp cmVtZW50cykNCg0KIyMjIyBIYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9wb3NlZCBjaGFuZ2Vz IGJlZW4gdGVzdGVkPw0KLSBbIF0gSSB1c2UgdGhlIHBhY2thZ2VzIGFmZmVjdGVkIGJ5IHRoZSBw cm9wb3NlZCBjaGFuZ2VzIG9uIGEgcmVndWxhciBiYXNpcyBhbmQgY29uZmlybSB0aGlzIFBSIHdv cmtzIGZvciBtZQ0KLSBbIF0gSSBnZW5lcmFsbHkgZG9uJ3QgdXNlIHRoZSBhZmZlY3RlZCBwYWNr YWdlcyBidXQgYnJpZWZseSB0ZXN0ZWQgdGhpcyBQUg0KDQo8IS0tDQpJZiBHaXRIdWIgQ0kgY2Fu bm90IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhlIGJ1aWxkIHJlc3VsdCAoZm9yIGV4YW1wbGUsIGlm IHRoZQ0KYnVpbGQgaXMgbGlrZWx5IHRvIHRha2Ugc2V2ZXJhbCBob3VycyksIG1ha2Ugc3VyZSB0 bw0KW3NraXAgQ0ldKGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMv YmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1kI2NvbnRpbnVvdXMtaW50ZWdyYXRpb24pLg0KV2hl biBza2lwcGluZyBDSSwgdW5jb21tZW50IGFuZCBmaWxsIG91dCB0aGUgZm9sbG93aW5nIHNlY3Rp b24uDQpOb3RlOiBmb3IgYnVpbGRzIHRoYXQgYXJlIGxpa2VseSB0byBjb21wbGV0ZSBpbiBsZXNz IHRoYW4gMiBob3VycywgaXQgaXMgbm90DQphY2NlcHRhYmxlIHRvIHNraXAgQ0kuDQotLT4NCjwh LS0gDQojIyMjIERvZXMgaXQgYnVpbGQgYW5kIHJ1biBzdWNjZXNzZnVsbHk/IA0KKFBsZWFzZSBj aG9vc2UgYXQgbGVhc3Qgb25lIG5hdGl2ZSBidWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVh c3Qgb25lIGNyb3NzIGJ1aWxkLiBNb3JlIGFyZSBiZXR0ZXIuKQ0KLSBbIF0gSSBidWlsdCB0aGlz IFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsIChBUkNILUxJQkMpDQotIFsg XSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxseSBmb3IgdGhlc2UgYXJjaGl0ZWN0dXJlcyAoaWYgc3Vw cG9ydGVkLiBtYXJrIGNyb3NzYnVpbGRzKToNCiAgLSBbIF0gYWFyY2g2NC1tdXNsDQogIC0gWyBd IGFybXY3bA0KICAtIFsgXSBhcm12NmwtbXVzbA0KLS0+DQpza2lwIGNpDQoKCkEgcGF0Y2ggZmls ZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvcHVsbC8y OTQ2My5wYXRjaCBpcyBhdHRhY2hlZA== --===============5185885199839731712== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-electron12-29463.patch" RnJvbSA5NDI0NmFhNjgwZjM0ZGVlMmQ4YjJiM2MxZTQ1ZTY2YjU2NzEyMGRiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hubnluYXRvci5kZXY+CkRhdGU6IFN1biwg MTQgTWFyIDIwMjEgMTk6MjQ6MTggKzAxMDAKU3ViamVjdDogW1BBVENIXSBOZXcgcGFja2FnZTog ZWxlY3Ryb24xMi0xMi4wLjEKCi0tLQogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWNy YXNocGFkLnBhdGNoIHwgICAyMyArCiAuLi5vbWl1bS1tdXNsLWRlZmF1bHQtcHRocmVhZC1zdGFj a3NpemUucGF0Y2ggfCAgIDMxICsKIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zYW5k Ym94LnBhdGNoICB8ICAxNzYgKwogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXN0cmlu Z19oLnBhdGNoIHwgICAxMCArCiAuLi5jaHJvbWl1bS1tdXNsX2Nhbm9uaWNhbGl6ZV9maWxlX25h bWUucGF0Y2ggfCAgIDEzICsKIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF9jZGVmcy5w YXRjaCAgICB8ICAgNDUgKwogLi4ub21pdW0tbXVzbF9kZWZpbmVfdGVtcF9mYWlsdXJlX3JldHJ5 LnBhdGNoIHwgICAxOCArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfZG5zLnBhdGNo ICAgICAgfCAgIDYxICsKIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF9leGVpbmZvLnBh dGNoICB8ICAgOTYgKwogLi4uL2Nocm9taXVtLW11c2xfZ2V0Y29udGV4dC5wYXRjaCAgICAgICAg ICAgIHwgICAyNSArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfbWFsbGluZm8ucGF0 Y2ggfCAgIDU0ICsKIC4uLi9jaHJvbWl1bS1tdXNsX3ByZWFkX3B3cml0ZTY0LnBhdGNoICAgICAg ICB8ICAgMTggKwogLi4uL2Nocm9taXVtLW11c2xfcHVzaF9iYWNrLnBhdGNoICAgICAgICAgICAg IHwgICAxMyArCiAuLi4vY2hyb21pdW0tbXVzbF9zdGFja19zaXplLnBhdGNoICAgICAgICAgICAg fCAgIDQxICsKIC4uLi9jaHJvbWl1bS1tdXNsX3N0YWNrX3RyYWNlLnBhdGNoICAgICAgICAgICB8 ICAgNDQgKwogLi4uL2Nocm9taXVtLW11c2xfdGNwX2xpc3Rlbi5wYXRjaCAgICAgICAgICAgIHwg ICAxNCArCiAuLi4vY2hyb21pdW0tbXVzbF94eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoICAgfCAg MTc5ICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLTg4LWdsaWJjLTIuMzMucGF0Y2ggICAgICB8ICAx NDQgKwogLi4uY2hyb21pdW0tODktQVhUcmVlU2VyaWFsaXplci1pbmNsdWRlLnBhdGNoIHwgICAy NSArCiAuLi4tYWRkLWRlcGVuZGVuY3ktb24tb3B1cy1pbi13ZWJjb2RlY3MucGF0Y2ggfCAgIDQz ICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLTg5LWRhd24taW5jbHVkZS5wYXRjaCAgICB8ICAgMjgg KwogLi4uL3BhdGNoZXMvY2hyb21pdW0tODktcXVpY2hlLWRjaGVjay5wYXRjaCAgIHwgICAyOSAr CiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS04OS1za2lhLUNyb3BSZWN0LnBhdGNoICAgfCAgIDM4ICsK IC4uLm1pdW0tODkteDExLW96b25lLWZpeC10d28tZWRnZS1jYXNlcy5wYXRjaCB8ICAxMzUgKwog Li4uL3BhdGNoZXMvY2hyb21pdW0tYnJvd3Nlci1zaXplX3QucGF0Y2ggICAgIHwgICAxMCArCiAu Li4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaCAgfCAgIDI2ICsKIC4u Li12OC1tb25vdG9uaWMtcHRocmVhZC1jb250X3RpbWVkd2FpdC5wYXRjaCB8ICAgMjQgKwogLi4u L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZXhlY2luZm8ucGF0Y2ggIHwgICA3MiArCiAuLi4v cGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRjb250ZXh0LnBhdGNoICAgICAgfCAgIDI3ICsKIC4uLi9w YXRjaGVzL2Nocm9taXVtLXNhbmRib3gtbWVtYmFycmllci5wYXRjaCB8ICAgMTAgKwogLi4uL2No cm9taXVtLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2ggICAgIHwgICAyMCArCiAuLi4vZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaCAgICAgICAgfCAgODg2ICsrKysKIC4uLi9w YXRjaGVzL2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2ggICAgICB8ICAgMjIgKwogLi4uL2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tdGltZTY0LnBhdGNoICAgICAgIHwgICA1MSArCiAuLi4vcGF0 Y2hlcy9jaHJvbWl1bS13ZWJydGMtaW5jbHVkZS5wYXRjaCAgICAgfCAgIDEwICsKIC4uLi9maWxl cy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1yMC5wYXRjaCAgICB8ICAgMzMgKwogLi4uL3BhdGNo ZXMvY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaCAgICAgIHwgICAxMCArCiAuLi4vcGF0Y2hl cy9jaHJvbWl1bS14eHgtcHBjNjRsZS1saWJ2cHgucGF0Y2ggfCAgIDcyICsKIC4uLi9jaHJvbWl1 bS14eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoICAgICAgICB8IDM2MzUgKysrKysrKysrKysrKysr KysKIC4uLi9jaHJvbWl1bS14eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5wYXRjaCAgICB8ICAgMTgg KwogLi4uYS1zY3JpcHQtdG8tbGlzdC1wYXRjaC10YXJnZXRzLnBhdGNoLnBhdGNoIHwgICA0MiAr CiAuLi4vcGF0Y2hlcy9lbGVjdHJvbi1CdWlsZC1maXhlcy5wYXRjaC5wYXRjaCAgfCAgIDQ3ICsK IC4uLmVjdHJvbi1kb250LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5wYXRjaCB8ICAgMTcgKwog Li4ubGVjdHJvbi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRjaGVzLnBhdGNoIHwgICAxMCArCiAu Li4veDExLW96b25lLWZpeC10d28tZWRnZS1jYXNlcy5wYXRjaCAgICAgICAgfCAgMTM1ICsKIC4u Li9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuY2MgICAgICB8ICAxNDggKwogLi4u L2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oIHwgICA2NSArCiAuLi4v ZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5wdXQuY2MgICAgICAgICAgfCAgMjAwICsKIC4uLi9m aWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5oICAgICAgICAgICB8ICAgOTEgKwogLi4uL2Zp bGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5jYyAgICAgICAgIHwgIDE4MyArCiAuLi4vZmls ZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmggICAgICAgICAgfCAgIDg2ICsKIC4uLmFfYXVk aW9fbGludXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaCB8ICAgNDMgKwogLi4uc3JjXzNy ZHBhcnR5X2Nocm9taXVtX21lZGlhX0JVSUxELmduLnBhdGNoIHwgICAxMiArCiAuLi5kcGFydHlf Y2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJTEQuZ24ucGF0Y2ggfCAgIDIzICsKIC4uLnR5X2Nocm9t aXVtX21lZGlhX21lZGlhX19vcHRpb25zLmduaS5wYXRjaCB8ICAgMTIgKwogc3JjcGtncy9lbGVj dHJvbjEyL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgIHwgIDM3NyArKwogc3JjcGtncy9lbGVj dHJvbjEyL3VwZGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiA1NyBmaWxlcyBjaGFu Z2VkLCA3NzIyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0 cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtY3Jhc2hwYWQucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2No cm9taXVtLW11c2wtZGVmYXVsdC1wdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVz bC1zYW5kYm94LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXN0cmluZ19oLnBhdGNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1t dXNsX2Nhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfY2RlZnMucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRj aGVzL2Nocm9taXVtLW11c2xfZGVmaW5lX3RlbXBfZmFpbHVyZV9yZXRyeS5wYXRjaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21p dW0tbXVzbF9kbnMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIv ZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfZXhlaW5mby5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0t bXVzbF9nZXRjb250ZXh0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJv bjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX21hbGxpbmZvLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJv bWl1bS1tdXNsX3ByZWFkX3B3cml0ZTY0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX3B1c2hfYmFjay5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBh dGNoZXMvY2hyb21pdW0tbXVzbF9zdGFja19zaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX3N0YWNr X3RyYWNlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX3RjcF9saXN0ZW4ucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11 c2xfeHh4LXBwYzY0bGUtc3VwcG9ydC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg4LWdsaWJjLTIuMzMucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1 bS04OS1BWFRyZWVTZXJpYWxpemVyLWluY2x1ZGUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS1hZGQtZGVwZW5kZW5j eS1vbi1vcHVzLWluLXdlYmNvZGVjcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LWRhd24taW5jbHVkZS5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9t aXVtLTg5LXF1aWNoZS1kY2hlY2sucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Vs ZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS1za2lhLUNyb3BSZWN0LnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tODkteDExLW96b25lLWZpeC10d28tZWRnZS1jYXNlcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWJyb3dzZXItc2l6 ZV90LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0tbGliY19tYWxsb2MucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXY4LW1vbm90b25pYy1w dGhyZWFkLWNvbnRfdGltZWR3YWl0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZXhlY2luZm8ucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1u by1nZXRjb250ZXh0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEy L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2Fu ZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc3lzdGVtLW5v ZGVqcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9w YXRjaGVzL2Nocm9taXVtLXRpbWU2NC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1pbmNsdWRlLnBhdGNoCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0td2VicnRjLXIwLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEy L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2 NGxlLWxpYnZweC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN1cHBvcnQucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgt cHBjNjRsZS1zd2lmdHNoYWRlci5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLUFkZC1hLXNjcmlwdC10by1saXN0LXBhdGNo LXRhcmdldHMucGF0Y2gucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1CdWlsZC1maXhlcy5wYXRjaC5wYXRjaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWRv bnQtYXNzdW1lLXB5dGhvbi1pcy1weXRob24yLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZXhjbHVkZS1jb250ZW50LXRl c3QtcGF0Y2hlcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9wYXRjaGVzL3gxMS1vem9uZS1maXgtdHdvLWVkZ2UtY2FzZXMucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFu YWdlcl9vcGVuYnNkLmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNjCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3Nu ZGlvX2lucHV0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv c25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5oCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLXBhdGNoZXMvbWVkaWFfYXVkaW9f bGludXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Y3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1 bV9tZWRpYV9CVUlMRC5nbi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRp b19CVUlMRC5nbi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9tZWRpYV9fb3B0 aW9ucy5nbmkucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvdGVt cGxhdGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvdXBkYXRlCgpkaWZm IC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1t dXNsLWNyYXNocGFkLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hl cy9jaHJvbWl1bS1tdXNsLWNyYXNocGFkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uNzBjZmZhMzAwMmJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWNyYXNocGFkLnBhdGNo CkBAIC0wLDAgKzEsMjMgQEAKKy0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0 aWwvbGludXgvcHRyYWNlci5jYworKysrIGIvdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9saW51eC9wdHJhY2VyLmNjCitAQCAtMjYsNiArMjYsNyBAQAorIAorICNpZiBkZWZpbmVk KEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpCisgI2luY2x1ZGUgPGFzbS9sZHQuaD4KKysjaW5jbHVkZSA8 YXNtL3B0cmFjZS1hYmkuaD4KKyAjZW5kaWYKKyAKKyBuYW1lc3BhY2UgY3Jhc2hwYWQgeworCist LS0gYS90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3B0cmFj ZS5oCisrKysgYi90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lz L3B0cmFjZS5oCitAQCAtMTcsNyArMTcsOSBAQAorIAorICNpbmNsdWRlX25leHQgPHN5cy9wdHJh Y2UuaD4KKyAKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPHN5cy9jZGVmcy5o PgorKyNlbmRpZgorIAorIC8vIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19i dWcuY2dpP2lkPTIyNDMzCisgI2lmICFkZWZpbmVkKFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEpICYm ICFkZWZpbmVkKFBUX0dFVF9USFJFQURfQVJFQSkgJiYgXApkaWZmIC0tZ2l0IGEvc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWRlZmF1bHQtcHRocmVh ZC1zdGFja3NpemUucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVz L2Nocm9taXVtLW11c2wtZGVmYXVsdC1wdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQwYzEzNjFiOGVkMQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVz bC1kZWZhdWx0LXB0aHJlYWQtc3RhY2tzaXplLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK2RpZmYg LS1naXQgYS9iYXNlL3RocmVhZGluZy9wbGF0Zm9ybV90aHJlYWRfbGludXguY2MgYi9iYXNlL3Ro cmVhZGluZy9wbGF0Zm9ybV90aHJlYWRfbGludXguY2MKK2luZGV4IDA5NWM0OWIuLjUwNDRiYjgg MTAwNjQ0CistLS0gYS9iYXNlL3RocmVhZGluZy9wbGF0Zm9ybV90aHJlYWRfbGludXguY2MKKysr KyBiL2Jhc2UvdGhyZWFkaW5nL3BsYXRmb3JtX3RocmVhZF9saW51eC5jYworQEAgLTE4Niw3ICsx ODYsNyBAQCB2b2lkIFRlcm1pbmF0ZU9uVGhyZWFkKCkge30KKyAKKyBzaXplX3QgR2V0RGVmYXVs dFRocmVhZFN0YWNrU2l6ZShjb25zdCBwdGhyZWFkX2F0dHJfdCYgYXR0cmlidXRlcykgeworICNp ZiAhZGVmaW5lZChUSFJFQURfU0FOSVRJWkVSKQorLSAgcmV0dXJuIDA7CisrICByZXR1cm4gKDEg PDwgMjMpOworICNlbHNlCisgICAvLyBUaHJlYWRTYW5pdGl6ZXIgYmxvYXRzIHRoZSBzdGFjayBo ZWF2aWx5LiBFdmlkZW5jZSBoYXMgYmVlbiB0aGF0IHRoZQorICAgLy8gZGVmYXVsdCBzdGFjayBz aXplIGlzbid0IGVub3VnaCBmb3Igc29tZSBicm93c2VyIHRlc3RzLgorZGlmZiAtLWdpdCBhL2No cm9tZS9hcHAvc2h1dGRvd25fc2lnbmFsX2hhbmRsZXJzX3Bvc2l4LmNjIGIvY2hyb21lL2FwcC9z aHV0ZG93bl9zaWduYWxfaGFuZGxlcnNfcG9zaXguY2MKK2luZGV4IDYyMWQ0NDEuLmJlMjExMDYg MTAwNjQ0CistLS0gYS9jaHJvbWUvYXBwL3NodXRkb3duX3NpZ25hbF9oYW5kbGVyc19wb3NpeC5j YworKysrIGIvY2hyb21lL2FwcC9zaHV0ZG93bl9zaWduYWxfaGFuZGxlcnNfcG9zaXguY2MKK0BA IC0xODcsMTEgKzE4NywxMSBAQCB2b2lkIEluc3RhbGxTaHV0ZG93blNpZ25hbEhhbmRsZXJzKAor ICAgZ19zaHV0ZG93bl9waXBlX3JlYWRfZmQgPSBwaXBlZmRbMF07CisgICBnX3NodXRkb3duX3Bp cGVfd3JpdGVfZmQgPSBwaXBlZmRbMV07CisgI2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVS KQorLSAgY29uc3Qgc2l6ZV90IGtTaHV0ZG93bkRldGVjdG9yVGhyZWFkU3RhY2tTaXplID0gUFRI UkVBRF9TVEFDS19NSU4gKiAyOworKyAgY29uc3Qgc2l6ZV90IGtTaHV0ZG93bkRldGVjdG9yVGhy ZWFkU3RhY2tTaXplID0gUFRIUkVBRF9TVEFDS19NSU4gKiAyICo4OworICNlbHNlCisgICAvLyBB U2FuIGluc3RydW1lbnRhdGlvbiBibG9hdHMgdGhlIHN0YWNrIGZyYW1lcywgc28gd2UgbmVlZCB0 byBpbmNyZWFzZSB0aGUKKyAgIC8vIHN0YWNrIHNpemUgdG8gYXZvaWQgaGl0dGluZyB0aGUgZ3Vh cmQgcGFnZS4KKy0gIGNvbnN0IHNpemVfdCBrU2h1dGRvd25EZXRlY3RvclRocmVhZFN0YWNrU2l6 ZSA9IFBUSFJFQURfU1RBQ0tfTUlOICogNDsKKysgIGNvbnN0IHNpemVfdCBrU2h1dGRvd25EZXRl Y3RvclRocmVhZFN0YWNrU2l6ZSA9IFBUSFJFQURfU1RBQ0tfTUlOICogNCAqODsKKyAjZW5kaWYK KyAgIFNodXRkb3duRGV0ZWN0b3IqIGRldGVjdG9yID0gbmV3IFNodXRkb3duRGV0ZWN0b3IoCisg ICAgICAgZ19zaHV0ZG93bl9waXBlX3JlYWRfZmQsIHN0ZDo6bW92ZShzaHV0ZG93bl9jYWxsYmFj ayksIHRhc2tfcnVubmVyKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9t dXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zYW5kYm94LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJv bjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXNhbmRib3gucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNDg1ZjZjYzc1YWYKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVt LW11c2wtc2FuZGJveC5wYXRjaApAQCAtMCwwICsxLDE3NiBAQAorZGlmZiAtLWdpdCBhL3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rp b25zLmNjIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1l dGVyc19yZXN0cmljdGlvbnMuY2MKK2luZGV4IDM0OGFiNmUuLjQ1NTBmOWUgMTAwNjQ0CistLS0g Li9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jl c3RyaWN0aW9ucy5jYworKysrIC4vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5 c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKK0BAIC0xMzksMjEgKzEzOSwxMSBAQCBu YW1lc3BhY2Ugc2FuZGJveCB7CisgLy8gcHJlc2VudCAoYXMgaW4gbmV3ZXIgdmVyc2lvbnMgb2Yg cG9zaXhfc3Bhd24pLgorIFJlc3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJN Rm9yaygpIHsKKyAgIGNvbnN0IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygwKTsKKy0KKy0gIC8v IFRPRE8obWRlbXBza3kpOiBFeHRlbmQgRFNMIHRvIHN1cHBvcnQgKGZsYWdzICYgfm1hc2sxKSA9 PSBtYXNrMi4KKy0gIGNvbnN0IHVpbnQ2NF90IGtBbmRyb2lkQ2xvbmVNYXNrID0gQ0xPTkVfVk0g fCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgQ0xPTkVfU0lHSEFORCB8IENMT05FX1RIUkVBRCB8CistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIENMT05FX1NZU1ZTRU07CistICBjb25zdCB1aW50NjRfdCBr T2Jzb2xldGVBbmRyb2lkQ2xvbmVNYXNrID0ga0FuZHJvaWRDbG9uZU1hc2sgfCBDTE9ORV9ERVRB Q0hFRDsKKy0KKy0gIGNvbnN0IHVpbnQ2NF90IGtHbGliY1B0aHJlYWRGbGFncyA9CistICAgICAg Q0xPTkVfVk0gfCBDTE9ORV9GUyB8IENMT05FX0ZJTEVTIHwgQ0xPTkVfU0lHSEFORCB8IENMT05F X1RIUkVBRCB8CistICAgICAgQ0xPTkVfU1lTVlNFTSB8IENMT05FX1NFVFRMUyB8IENMT05FX1BB UkVOVF9TRVRUSUQgfCBDTE9ORV9DSElMRF9DTEVBUlRJRDsKKy0gIGNvbnN0IEJvb2xFeHByIGds aWJjX3Rlc3QgPSBmbGFncyA9PSBrR2xpYmNQdGhyZWFkRmxhZ3M7CistCistICBjb25zdCBCb29s RXhwciBhbmRyb2lkX3Rlc3QgPQorLSAgICAgIEFueU9mKGZsYWdzID09IGtBbmRyb2lkQ2xvbmVN YXNrLCBmbGFncyA9PSBrT2Jzb2xldGVBbmRyb2lkQ2xvbmVNYXNrLAorLSAgICAgICAgICAgIGZs YWdzID09IGtHbGliY1B0aHJlYWRGbGFncyk7CisrICBjb25zdCBpbnQgcmVxdWlyZWQgPSBDTE9O RV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5EIHwKKysgICAgICAg ICAgICAgICAgICAgICAgIENMT05FX1RIUkVBRCB8IENMT05FX1NZU1ZTRU07CisrICBjb25zdCBp bnQgc2FmZSA9IENMT05FX1NFVFRMUyB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBDTE9ORV9DSElM RF9DTEVBUlRJRCB8CisrICAgICAgICAgICAgICAgICAgIENMT05FX0RFVEFDSEVEOworKyAgY29u c3QgQm9vbEV4cHIgdGhyZWFkX2Nsb25lX29rID0gKGZsYWdzJn5zYWZlKT09cmVxdWlyZWQ7Cisg CisgICAvLyBUaGUgZm9sbG93aW5nIHR3byBmbGFncyBhcmUgdGhlIHR3byBpbXBvcnRhbnQgZmxh Z3MgaW4gYW55IHZmb3JrLWVtdWxhdGluZworICAgLy8gY2xvbmUgY2FsbC4gRVBFUk0gYW55IGNs b25lIGNhbGwgdGhhdCBjb250YWlucyBib3RoIG9mIHRoZW0uCitAQCAtMTYzLDcgKzE1Myw3IEBA IFJlc3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9yaygpIHsKKyAgICAg ICBBbnlPZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLAorICAgICAg ICAgICAgIChmbGFncyAmIGtJbXBvcnRhbnRDbG9uZVZmb3JrRmxhZ3MpID09IGtJbXBvcnRhbnRD bG9uZVZmb3JrRmxhZ3MpOworIAorLSAgcmV0dXJuIElmKElzQW5kcm9pZCgpID8gYW5kcm9pZF90 ZXN0IDogZ2xpYmNfdGVzdCwgQWxsb3coKSkKKysgIHJldHVybiBJZih0aHJlYWRfY2xvbmVfb2ss IEFsbG93KCkpCisgICAgICAgLkVsc2VJZihpc19mb3JrX29yX2Nsb25lX3Zmb3JrLCBFcnJvcihF UEVSTSkpCisgICAgICAgLkVsc2UoQ3Jhc2hTSUdTWVNDbG9uZSgpKTsKKyB9CitkaWZmIC0tZ2l0 IGEvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYyBiL3Nh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKK2luZGV4IDdk YmNjODcuLjU4OTI2MmYgMTAwNjQ0CistLS0gLi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgLi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtMzkxLDYgKzM5MSw3IEBAIGJvb2wgU3lzY2FsbFNl dHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgI2lmIGRlZmlu ZWQoX19pMzg2X18pCisgICAgIGNhc2UgX19OUl93YWl0cGlkOgorICNlbmRpZgorKyAgICBjYXNl IF9fTlJfc2V0X3RpZF9hZGRyZXNzOgorICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9f TlJfY2xvbmU6ICAvLyBTaG91bGQgYmUgcGFyYW1ldGVyLXJlc3RyaWN0ZWQuCisgICAgIGNhc2Ug X19OUl9zZXRuczogIC8vIFByaXZpbGVnZWQuCitAQCAtNDAzLDcgKzQwNCw2IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21p cHNfXykKKyAgICAgY2FzZSBfX05SX3NldF90aHJlYWRfYXJlYToKKyAjZW5kaWYKKy0gICAgY2Fz ZSBfX05SX3NldF90aWRfYWRkcmVzczoKKyAgICAgY2FzZSBfX05SX3Vuc2hhcmU6CisgI2lmICFk ZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICAgY2FzZSBfX05S X3Zmb3JrOgorQEAgLTUxMyw2ICs1MTMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRB ZGRyZXNzU3BhY2VBY2Nlc3MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9tbG9jazoKKyAg ICAgY2FzZSBfX05SX211bmxvY2s6CisgICAgIGNhc2UgX19OUl9tdW5tYXA6CisrICAgIGNhc2Ug X19OUl9tcmVtYXA6CisrICAgIGNhc2UgX19OUl9tZW1iYXJyaWVyOgorICAgICAgIHJldHVybiB0 cnVlOworICAgICBjYXNlIF9fTlJfbWFkdmlzZToKKyAgICAgY2FzZSBfX05SX21pbmNvcmU6CitA QCAtNTMwLDcgKzUzMiw2IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEFkZHJlc3NTcGFj ZUFjY2VzcyhpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX21vZGlmeV9sZHQ6CisgI2VuZGlm CisgICAgIGNhc2UgX19OUl9tcHJvdGVjdDoKKy0gICAgY2FzZSBfX05SX21yZW1hcDoKKyAgICAg Y2FzZSBfX05SX21zeW5jOgorICAgICBjYXNlIF9fTlJfbXVubG9ja2FsbDoKKyAgICAgY2FzZSBf X05SX3JlYWRhaGVhZDoKK2RpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJz L2FybTY0X2xpbnV4X3N5c2NhbGxzLmggYi9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2Fy bTY0X2xpbnV4X3N5c2NhbGxzLmgKK2luZGV4IDU5ZDBlYWIuLjdhZTcwMDIgMTAwNjQ0CistLS0g Li9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybTY0X2xpbnV4X3N5c2NhbGxzLmgKKysr KyAuL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaAor QEAgLTEwNjMsNCArMTA2Myw4IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAyNzkKKyAj ZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9t ZW1iYXJyaWVyIDI4MworKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNU RU1fSEVBREVSU19BUk02NF9MSU5VWF9TWVNDQUxMU19IXworZGlmZiAtLWdpdCBhL3NhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMvYXJtX2xpbnV4X3N5c2NhbGxzLmggYi9zYW5kYm94L2xpbnV4 L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oCitpbmRleCAxYWRkZDUzLi43ODQz YjVlIDEwMDY0NAorLS0tIC4vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGludXhf c3lzY2FsbHMuaAorKysrIC4vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGludXhf c3lzY2FsbHMuaAorQEAgLTEzODUsNiArMTM4NSwxMCBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9j cmVhdGUgKF9fTlJfU1lTQ0FMTF9CQVNFKzM4NSkKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQo X19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9tZW1iYXJyaWVyIChfX05SX1NZU0NBTExf QkFTRSszODkpCisrI2VuZGlmCisrCisgLy8gQVJNIHByaXZhdGUgc3lzY2FsbHMuCisgI2lmICFk ZWZpbmVkKF9fQVJNX05SX0JBU0UpCisgI2RlZmluZSBfX0FSTV9OUl9CQVNFIChfX05SX1NZU0NB TExfQkFTRSArIDB4RjAwMDApCitkaWZmIC0tZ2l0IGEvc2FuZGJveC9saW51eC9zeXN0ZW1faGVh ZGVycy9taXBzNjRfbGludXhfc3lzY2FsbHMuaCBiL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRl cnMvbWlwczY0X2xpbnV4X3N5c2NhbGxzLmgKK2luZGV4IGVjNzU4MTUuLjYxMmZjZmEgMTAwNjQ0 CistLS0gLi9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL21pcHM2NF9saW51eF9zeXNjYWxs cy5oCisrKysgLi9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL21pcHM2NF9saW51eF9zeXNj YWxscy5oCitAQCAtMTI3MSw0ICsxMjcxLDggQEAKKyAjZGVmaW5lIF9fTlJfbWVtZmRfY3JlYXRl IChfX05SX0xpbnV4ICsgMzE0KQorICNlbmRpZgorIAorKyNpZiAhZGVmaW5lZChfX05SX21lbWJh cnJpZXIpCisrI2RlZmluZSBfX05SX21lbWJhcnJpZXIgKF9fTlJfTGludXggKyAzMTgpCisrI2Vu ZGlmCisrCisgI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX01JUFM2NF9M SU5VWF9TWVNDQUxMU19IXworZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRl cnMvbWlwc19saW51eF9zeXNjYWxscy5oIGIvc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9t aXBzX2xpbnV4X3N5c2NhbGxzLmgKK2luZGV4IGRkYmY5N2YuLjE3NDJhY2QgMTAwNjQ0CistLS0g Li9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL21pcHNfbGludXhfc3lzY2FsbHMuaAorKysr IC4vc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9taXBzX2xpbnV4X3N5c2NhbGxzLmgKK0BA IC0xNDMzLDQgKzE0MzMsOCBAQAorICNkZWZpbmUgX19OUl9tZW1mZF9jcmVhdGUgKF9fTlJfTGlu dXggKyAzNTQpCisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFycmllcikKKysj ZGVmaW5lIF9fTlJfbWVtYmFycmllciAoX19OUl9MaW51eCArIDM1OCkKKysjZW5kaWYKKysKKyAj ZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfTUlQU19MSU5VWF9TWVNDQUxM U19IXworZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzMyX2xp bnV4X3N5c2NhbGxzLmggYi9zYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl8zMl9saW51 eF9zeXNjYWxscy5oCitpbmRleCBhNmFmYzYyLi43ZWQwYTNiIDEwMDY0NAorLS0tIC4vc2FuZGJv eC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAorKysrIC4vc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy94ODZfMzJfbGludXhfc3lzY2FsbHMuaAorQEAgLTE0 MjIsNSArMTQyMiw5IEBACisgI2RlZmluZSBfX05SX21lbWZkX2NyZWF0ZSAzNTYKKyAjZW5kaWYK KyAKKysjaWYgIWRlZmluZWQoX19OUl9tZW1iYXJyaWVyKQorKyNkZWZpbmUgX19OUl9tZW1iYXJy aWVyIDM3NQorKyNlbmRpZgorKworICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNURU1fSEVB REVSU19YODZfMzJfTElOVVhfU1lTQ0FMTFNfSF8KKyAKK2RpZmYgLS1naXQgYS9zYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL3g4Nl82NF9saW51eF9zeXNjYWxscy5oIGIvc2FuZGJveC9saW51 eC9zeXN0ZW1faGVhZGVycy94ODZfNjRfbGludXhfc3lzY2FsbHMuaAoraW5kZXggMzQ5NTA0YS4u ZWEzYzdjOSAxMDA2NDQKKy0tLSAuL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2XzY0 X2xpbnV4X3N5c2NhbGxzLmgKKysrKyAuL3NhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMveDg2 XzY0X2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0xMjkwLDUgKzEyOTAsOSBAQAorICNkZWZpbmUgX19O Ul9tZW1mZF9jcmVhdGUgMzE5CisgI2VuZGlmCisgCisrI2lmICFkZWZpbmVkKF9fTlJfbWVtYmFy cmllcikKKysjZGVmaW5lIF9fTlJfbWVtYmFycmllciAzMjQKKysjZW5kaWYKKysKKyAjZW5kaWYg IC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfWDg2XzY0X0xJTlVYX1NZU0NBTExTX0hf CisgCitkaWZmIC0tZ2l0IGEvc2VydmljZXMvc2VydmljZV9tYW5hZ2VyL3NhbmRib3gvbGludXgv YnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYyBiL3NlcnZpY2VzL3NlcnZpY2VfbWFuYWdlci9z YW5kYm94L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKK2luZGV4IDAxN2YxM2Mu LjUwYWVlYzMgMTAwNjQ0CistLS0gLi9zZXJ2aWNlcy9zZXJ2aWNlX21hbmFnZXIvc2FuZGJveC9s aW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCisrKysgLi9zZXJ2aWNlcy9zZXJ2aWNl X21hbmFnZXIvc2FuZGJveC9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCitAQCAt ODgsMTAgKzg4LDEwIEBAIFJlc3VsdEV4cHIgUmVuZGVyZXJQcm9jZXNzUG9saWN5OjpFdmFsdWF0 ZVN5c2NhbGwoaW50IHN5c25vKSBjb25zdCB7CisgICAgIGNhc2UgX19OUl9zeXNpbmZvOgorICAg ICBjYXNlIF9fTlJfdGltZXM6CisgICAgIGNhc2UgX19OUl91bmFtZToKKy0gICAgICByZXR1cm4g QWxsb3coKTsKKy0gICAgY2FzZSBfX05SX3NjaGVkX2dldGFmZmluaXR5OgorICAgICBjYXNlIF9f TlJfc2NoZWRfZ2V0cGFyYW06CisgICAgIGNhc2UgX19OUl9zY2hlZF9nZXRzY2hlZHVsZXI6Cisr ICAgICAgcmV0dXJuIEFsbG93KCk7CisrICAgIGNhc2UgX19OUl9zY2hlZF9nZXRhZmZpbml0eToK KyAgICAgY2FzZSBfX05SX3NjaGVkX3NldHNjaGVkdWxlcjoKKyAgICAgICByZXR1cm4gc2FuZGJv eDo6UmVzdHJpY3RTY2hlZFRhcmdldChHZXRQb2xpY3lQaWQoKSwgc3lzbm8pOworICAgICBjYXNl IF9fTlJfcHJsaW1pdDY0OgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211 c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXN0cmluZ19oLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJv bjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXN0cmluZ19oLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTNjOGE4MzRkZDA3Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1 bS1tdXNsLXN0cmluZ19oLnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL21vam8vcHVibGlj L2NwcC9wbGF0Zm9ybS9uYW1lZF9wbGF0Zm9ybV9jaGFubmVsX3Bvc2l4LmNjLm9yaWcgICAgICAg MjAyMC0wNy0xOSAxMzoyNjoxMC42OTYxNzEwNjMgLTA0MDAKKysrKyBiL21vam8vcHVibGljL2Nw cC9wbGF0Zm9ybS9uYW1lZF9wbGF0Zm9ybV9jaGFubmVsX3Bvc2l4LmNjICAgIDIwMjAtMDctMTkg MTM6MjY6NDMuNjgwMTUxNzE0IC0wNDAwCitAQCAtNSw2ICs1LDcgQEAKKyAjaW5jbHVkZSAibW9q by9wdWJsaWMvY3BwL3BsYXRmb3JtL25hbWVkX3BsYXRmb3JtX2NoYW5uZWwuaCIKKyAKKyAjaW5j bHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5cy9zb2Nr ZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgpkaWZmIC0t Z2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNs X2Nhbm9uaWNhbGl6ZV9maWxlX25hbWUucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv bXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfY2Fub25pY2FsaXplX2ZpbGVfbmFtZS5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA1NjE0ZGFhNzU3NgotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hy b21pdW0tbXVzbF9jYW5vbmljYWxpemVfZmlsZV9uYW1lLnBhdGNoCkBAIC0wLDAgKzEsMTMgQEAK K2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9uYXNtL2NvbmZpZy9jb25maWctbGludXguaCBiL3Ro aXJkX3BhcnR5L25hc20vY29uZmlnL2NvbmZpZy1saW51eC5oCitpbmRleCA3ZWI3YzIwLi44ODJi NzM2IDEwMDY0NAorLS0tIGEvdGhpcmRfcGFydHkvbmFzbS9jb25maWcvY29uZmlnLWxpbnV4LmgK KysrKyBiL3RoaXJkX3BhcnR5L25hc20vY29uZmlnL2NvbmZpZy1saW51eC5oCitAQCAtMTE3LDcg KzExNyw3IEBACisgI2RlZmluZSBIQVZFX0FDQ0VTUyAxCisgCisgLyogRGVmaW5lIHRvIDEgaWYg eW91IGhhdmUgdGhlIGBjYW5vbmljYWxpemVfZmlsZV9uYW1lJyBmdW5jdGlvbi4gKi8KKy0jZGVm aW5lIEhBVkVfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRSAxCisrLyogI3VuZGVmIEhBVkVfQ0FOT05J Q0FMSVpFX0ZJTEVfTkFNRSAqLworIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBg Y3B1X3RvX2xlMTYnIGludHJpbnNpYyBmdW5jdGlvbi4gKi8KKyAvKiAjdW5kZWYgSEFWRV9DUFVf VE9fTEUxNiAqLwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0 Y2hlcy9jaHJvbWl1bS1tdXNsX2NkZWZzLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX2NkZWZzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmM3ZGMwNmZmMjFiCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX2NkZWZz LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK2RpZmYgLS1naXQgYS9iYXNlL2FsbG9jYXRvci9hbGxv Y2F0b3Jfc2hpbV9pbnRlcm5hbHMuaCBiL2Jhc2UvYWxsb2NhdG9yL2FsbG9jYXRvcl9zaGltX2lu dGVybmFsCitzLmgKK2luZGV4IDAxOTZmODkuLmJiNDJiNWQgMTAwNjQ0CistLS0gYS9iYXNlL2Fs bG9jYXRvci9hbGxvY2F0b3Jfc2hpbV9pbnRlcm5hbHMuaAorKysrIGIvYmFzZS9hbGxvY2F0b3Iv YWxsb2NhdG9yX3NoaW1faW50ZXJuYWxzLmgKK0BAIC03LDcgKzcsOSBAQAorCisgI2lmIGRlZmlu ZWQoX19HTlVDX18pCisKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPHN5cy9j ZGVmcy5oPiAgLy8gZm9yIF9fVEhST1cKKysjZW5kaWYKKworICNpZm5kZWYgX19USFJPVyAgLy8g Tm90IGEgZ2xpYmMgc3lzdGVtCisgI2lmZGVmIF9OT0VYQ0VQVCAgLy8gTExWTSBsaWJjKysgdXNl cyBub2V4Y2VwdCBpbnN0ZWFkCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvbGlic3luYy9zcmMv aW5jbHVkZS9zeW5jL3N5bmMuaCBiL3RoaXJkX3BhcnR5L2xpYnN5bmMvc3JjL2luY2x1ZGUvc3lu Yy9zeW5jLmgKK2luZGV4IDUwZWQwYWMuLjc1NTJhNDkgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0 eS9saWJzeW5jL3NyYy9pbmNsdWRlL3N5bmMvc3luYy5oCisrKysgYi90aGlyZF9wYXJ0eS9saWJz eW5jL3NyYy9pbmNsdWRlL3N5bmMvc3luYy5oCitAQCAtMTksMTIgKzE5LDEzIEBACisgI2lmbmRl ZiBfX1NZU19DT1JFX1NZTkNfSAorICNkZWZpbmUgX19TWVNfQ09SRV9TWU5DX0gKKyAKKy0jaW5j bHVkZSA8c3lzL2NkZWZzLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorICNpbmNsdWRlIDxs aW51eC90eXBlcy5oPgorIAorLV9fQkVHSU5fREVDTFMKKysjaWZkZWYgX19jcGx1c3BsdXMKKytl eHRlcm4gIkMiIHsKKysjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKyAKKyBzdHJ1Y3Qgc3luY19s ZWdhY3lfbWVyZ2VfZGF0YSB7CisgIGludDMyX3QgZmQyOworQEAgLTE1OCw2ICsxNTksOCBAQCBz dHJ1Y3Qgc3luY19wdF9pbmZvICpzeW5jX3B0X2luZm8oc3RydWN0IHN5bmNfZmVuY2VfaW5mb19k YXRhICppbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3lu Y19wdF9pbmZvICppdHIpOworIHZvaWQgc3luY19mZW5jZV9pbmZvX2ZyZWUoc3RydWN0IHN5bmNf ZmVuY2VfaW5mb19kYXRhICppbmZvKTsKKyAKKy1fX0VORF9ERUNMUworKyNpZmRlZiBfX2NwbHVz cGx1cworK30KKysjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKyAKKyAjZW5kaWYgLyogX19TWVNf Q09SRV9TWU5DX0ggKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNs LXBhdGNoZXMvY2hyb21pdW0tbXVzbF9kZWZpbmVfdGVtcF9mYWlsdXJlX3JldHJ5LnBhdGNoIGIv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX2RlZmlu ZV90ZW1wX2ZhaWx1cmVfcmV0cnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi42MWRiNjU4Zjg0OWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0 cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfZGVmaW5lX3RlbXBfZmFpbHVy ZV9yZXRyeS5wYXRjaApAQCAtMCwwICsxLDE4IEBACistLS0gYS9zYW5kYm94L2xpbnV4L3N1aWQv c2FuZGJveC5jCTIwMTktMTEtMTkgMDk6Mjg6MDUuMDAwMDAwMDAwICswODAwCisrKysgYi9zYW5k Ym94L2xpbnV4L3N1aWQvc2FuZGJveC5jCTIwMjAtMDQtMjQgMTE6NTA6MTIuNzE5ODgwNzI4ICsw ODAwCitAQCAtNDIsNiArNDIsMTUgQEAKKyAjZGVmaW5lIENMT05FX05FV05FVCAweDQwMDAwMDAw CisgI2VuZGlmCisgCisrI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKKysjZGVmaW5lIFRFTVBf RkFJTFVSRV9SRVRSWShleHByZXNzaW9uKSBcCisrICAoX19leHRlbnNpb25fXyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAg ICh7IGxvbmcgaW50IF9fcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICAgIGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhw cmVzc2lvbik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgIHdoaWxl IChfX3Jlc3VsdCA9PSAtMUwgJiYgZXJybm8gPT0gRUlOVFIpOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcCisrICAgICAgIF9fcmVzdWx0OyB9KSkKKysjZW5kaWYKKysKKyBzdGF0aWMgYm9v bCBEcm9wUm9vdCgpOworIAorICNkZWZpbmUgSEFORExFX0VJTlRSKHgpIFRFTVBfRkFJTFVSRV9S RVRSWSh4KQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hl cy9jaHJvbWl1bS1tdXNsX2Rucy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNs LXBhdGNoZXMvY2hyb21pdW0tbXVzbF9kbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi5mNDlkOGJkMGFmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfZG5zLnBhdGNoCkBA IC0wLDAgKzEsNjEgQEAKK2RpZmYgLS1naXQgYS9uZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9w b3NpeC5jYyBiL25ldC9kbnMvZG5zX2NvbmZpZ19zZXJ2aWNlX3Bvc2l4LmNjCitpbmRleCAyZjk0 ODMyLi4yZGQxYTk4IDEwMDY0NAorLS0tIGEvbmV0L2Rucy9kbnNfY29uZmlnX3NlcnZpY2VfcG9z aXguY2MKKysrKyBiL25ldC9kbnMvZG5zX2NvbmZpZ19zZXJ2aWNlX3Bvc2l4LmNjCitAQCAtMTUw LDcgKzE1MCw3IEBAIENvbmZpZ1BhcnNlUG9zaXhSZXN1bHQgUmVhZERuc0NvbmZpZyhEbnNDb25m aWcqIGRuc19jb25maWcpIHsKKyAjaWYgIWRlZmluZWQoT1NfQU5EUk9JRCkKKyAgIENvbmZpZ1Bh cnNlUG9zaXhSZXN1bHQgcmVzdWx0OworIC8vIFRPRE8oZnVjaHNpYSk6IFVzZSByZXNfbmluaXQo KSB3aGVuIGl0J3MgaW1wbGVtZW50ZWQgb24gRnVjaHNpYS4KKy0jaWYgZGVmaW5lZChPU19PUEVO QlNEKSB8fCBkZWZpbmVkKE9TX0ZVQ0hTSUEpCisrI2lmIGRlZmluZWQoT1NfT1BFTkJTRCkgfHwg ZGVmaW5lZChPU19GVUNIU0lBKSB8fCAoZGVmaW5lZChPU19MSU5VWCkgJiYgIWRlZmluZWQoX19H TElCQ19fKSkKKyAgIC8vIE5vdGU6IHJlc19uaW5pdCBpbiBnbGliYyBhbHdheXMgcmV0dXJucyAw IGFuZCBzZXRzIFJFU19JTklULgorICAgLy8gcmVzX2luaXQgYmVoYXZlcyB0aGUgc2FtZSB3YXku CisgICBtZW1zZXQoJl9yZXMsIDAsIHNpemVvZihfcmVzKSk7CitAQCAtMTczLDcgKzE3Myw3IEBA IENvbmZpZ1BhcnNlUG9zaXhSZXN1bHQgUmVhZERuc0NvbmZpZyhEbnNDb25maWcqIGRuc19jb25m aWcpIHsKKyAjZWxzZQorICAgcmVzX25jbG9zZSgmcmVzKTsKKyAjZW5kaWYgIC8vIGRlZmluZWQo T1NfTUFDT1NYKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpCistI2VuZGlmICAvLyBkZWZpbmVkKE9T X09QRU5CU0QpCisrI2VuZGlmICAvLyBkZWZpbmVkKE9TX09QRU5CU0QpIHx8IGRlZmluZWQoT1Nf RlVDSFNJQSkgfHwgKGRlZmluZWQoT1NfTElOVVgpICYmICFkZWZpbmVkKF9fR0xJQkNfXykpCisg CisgI2lmIGRlZmluZWQoT1NfTUFDT1NYKSAmJiAhZGVmaW5lZChPU19JT1MpCisgICBDb25maWdQ YXJzZVBvc2l4UmVzdWx0IGVycm9yID0gRG5zQ29uZmlnV2F0Y2hlcjo6Q2hlY2tEbnNDb25maWco KTsKK2RpZmYgLS1naXQgYS9uZXQvZG5zL2Ruc19yZWxvYWRlci5jYyBiL25ldC9kbnMvZG5zX3Jl bG9hZGVyLmNjCitpbmRleCA5NTJjZmY0Li40YjM2NmY0IDEwMDY0NAorLS0tIGEvbmV0L2Rucy9k bnNfcmVsb2FkZXIuY2MKKysrKyBiL25ldC9kbnMvZG5zX3JlbG9hZGVyLmNjCitAQCAtNCw3ICs0 LDcgQEAKKyAKKyAjaW5jbHVkZSAibmV0L2Rucy9kbnNfcmVsb2FkZXIuaCIKKyAKKy0jaWYgZGVm aW5lZChPU19QT1NJWCkgJiYgIWRlZmluZWQoT1NfTUFDT1NYKSAmJiAhZGVmaW5lZChPU19PUEVO QlNEKSAmJiBcCisrI2lmIGRlZmluZWQoT1NfUE9TSVgpICYmIGRlZmluZWQoX19HTElCQ19fKSAm JiAhZGVmaW5lZChPU19NQUNPU1gpICYmICFkZWZpbmVkKE9TX09QRU5CU0QpICYmIFwKKyAgICAg IWRlZmluZWQoT1NfQU5EUk9JRCkgJiYgIWRlZmluZWQoT1NfRlVDSFNJQSkKKyAKKyAjaW5jbHVk ZSA8cmVzb2x2Lmg+CitkaWZmIC0tZ2l0IGEvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX21hbmFnZXIu Y2MgYi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfbWFuYWdlci5jYworaW5kZXggZThkZWE0Ni4uYzg2 YTgzMCAxMDA2NDQKKy0tLSBhL25ldC9kbnMvaG9zdF9yZXNvbHZlcl9tYW5hZ2VyLmNjCisrKysg Yi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfbWFuYWdlci5jYworQEAgLTIzODYsNyArMjM4Niw3IEBA IEhvc3RSZXNvbHZlck1hbmFnZXI6Okhvc3RSZXNvbHZlck1hbmFnZXIoCisgICBOZXR3b3JrQ2hh bmdlTm90aWZpZXI6OkFkZENvbm5lY3Rpb25UeXBlT2JzZXJ2ZXIodGhpcyk7CisgICBpZiAoc3lz dGVtX2Ruc19jb25maWdfbm90aWZpZXJfKQorICAgICBzeXN0ZW1fZG5zX2NvbmZpZ19ub3RpZmll cl8tPkFkZE9ic2VydmVyKHRoaXMpOworLSNpZiBkZWZpbmVkKE9TX1BPU0lYKSAmJiAhZGVmaW5l ZChPU19NQUNPU1gpICYmICFkZWZpbmVkKE9TX09QRU5CU0QpICYmIFwKKysjaWYgZGVmaW5lZChP U19QT1NJWCkgJiYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKE9TX01BQ09TWCkgJiYg IWRlZmluZWQoT1NfT1BFTkJTRCkgJiYgXAorICAgICAhZGVmaW5lZChPU19BTkRST0lEKQorICAg RW5zdXJlRG5zUmVsb2FkZXJJbml0KCk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvbmV0L2Rucy9o b3N0X3Jlc29sdmVyX3Byb2MuY2MgYi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfcHJvYy5jYworaW5k ZXggMDgyNDU0MC4uMzM4NDk3OCAxMDA2NDQKKy0tLSBhL25ldC9kbnMvaG9zdF9yZXNvbHZlcl9w cm9jLmNjCisrKysgYi9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfcHJvYy5jYworQEAgLTE5Nyw3ICsx OTcsNyBAQCBpbnQgU3lzdGVtSG9zdFJlc29sdmVyQ2FsbChjb25zdCBzdGQ6OnN0cmluZyYgaG9z dCwKKyAgIGJhc2U6OlNjb3BlZEJsb2NraW5nQ2FsbCBzY29wZWRfYmxvY2tpbmdfY2FsbChGUk9N X0hFUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmFzZTo6QmxvY2tpbmdUeXBlOjpXSUxMX0JMT0NLKTsKKyAKKy0jaWYgZGVmaW5lZChPU19QT1NJ WCkgJiYgIWRlZmluZWQoT1NfTUFDT1NYKSAmJiAhZGVmaW5lZChPU19PUEVOQlNEKSAmJiBcCisr I2lmIGRlZmluZWQoT1NfUE9TSVgpICYmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChP U19NQUNPU1gpICYmICFkZWZpbmVkKE9TX09QRU5CU0QpICYmIFwKKyAgICAgIWRlZmluZWQoT1Nf QU5EUk9JRCkgJiYgIWRlZmluZWQoT1NfRlVDSFNJQSkKKyAgIERuc1JlbG9hZGVyTWF5YmVSZWxv YWQoKTsKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNs LXBhdGNoZXMvY2hyb21pdW0tbXVzbF9leGVpbmZvLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEy L2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX2V4ZWluZm8ucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMWFmYzdjMWIxNzYKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11 c2xfZXhlaW5mby5wYXRjaApAQCAtMCwwICsxLDk2IEBACitkaWZmIC0tZ2l0IGEvYmFzZS9kZWJ1 Zy9zdGFja190cmFjZV9wb3NpeC5jYyBiL2Jhc2UvZGVidWcvc3RhY2tfdHJhY2VfcG9zaXguY2MK K2luZGV4IGRlMmYzNTYuLmY2OTdjNjYgMTAwNjQ0CistLS0gYS9iYXNlL2RlYnVnL3N0YWNrX3Ry YWNlX3Bvc2l4LmNjCisrKysgYi9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCitAQCAt MjcsNyArMjcsNyBAQAorICNpZiAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorICNpbmNsdWRlIDxj eHhhYmkuaD4KKyAjZW5kaWYKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQo X0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pICYm ICFkZWZpbmVkKF9BSVgpCisgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisgI2VuZGlmCisgCitAQCAt ODYsNyArODYsNyBAQCB2b2lkIERlbWFuZ2xlU3ltYm9scyhzdGQ6OnN0cmluZyogdGV4dCkgewor ICAgLy8gTm90ZTogY29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIE5PVCBhc3luYy1zaWduYWwgc2Fm ZSAoc3RkOjpzdHJpbmcgdXNlcworICAgLy8gbWFsbG9jIGludGVybmFsbHkpLgorIAorLSNpZiAh ZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJ QkNfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIHN0ZDo6 c3RyaW5nOjpzaXplX3R5cGUgc2VhcmNoX2Zyb20gPSAwOworICAgd2hpbGUgKHNlYXJjaF9mcm9t IDwgdGV4dC0+c2l6ZSgpKSB7CisgICAgIC8vIExvb2sgZm9yIHRoZSBzdGFydCBvZiBhIG1hbmds ZWQgc3ltYm9sLCBmcm9tIHNlYXJjaF9mcm9tLgorQEAgLTEyMSw3ICsxMjEsNyBAQCB2b2lkIERl bWFuZ2xlU3ltYm9scyhzdGQ6OnN0cmluZyogdGV4dCkgeworICAgICAgIHNlYXJjaF9mcm9tID0g bWFuZ2xlZF9zdGFydCArIDI7CisgICAgIH0KKyAgIH0KKy0jZW5kaWYgIC8vICFkZWZpbmVkKF9f VUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2VuZGlmICAvLyBkZWZpbmVkKF9fR0xJQkNf XykgJiYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB9CisgI2VuZGlm ICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorIAorQEAgLTEzMyw3ICsxMzMsNyBAQCBjbGFz cyBCYWNrdHJhY2VPdXRwdXRIYW5kbGVyIHsKKyAgIHZpcnR1YWwgfkJhY2t0cmFjZU91dHB1dEhh bmRsZXIoKSA9IGRlZmF1bHQ7CisgfTsKKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYg IWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNM SUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgdm9pZCBPdXRwdXRQb2ludGVyKHZvaWQqIHBvaW50 ZXIsIEJhY2t0cmFjZU91dHB1dEhhbmRsZXIqIGhhbmRsZXIpIHsKKyAgIC8vIFRoaXMgc2hvdWxk IGJlIG1vcmUgdGhhbiBlbm91Z2ggdG8gc3RvcmUgYSA2NC1iaXQgbnVtYmVyIGluIGhleDoKKyAg IC8vIDE2IGhleCBkaWdpdHMgKyAxIGZvciBudWxsLXRlcm1pbmF0b3IuCitAQCAtMjE2LDcgKzIx Niw3IEBAIHZvaWQgUHJvY2Vzc0JhY2t0cmFjZSh2b2lkKiBjb25zdCogdHJhY2UsCisgICB9Cisg I2VuZGlmICAvLyBkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCisgfQorLSNlbmRpZiAgLy8gIWRlZmlu ZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjZW5kaWYgIC8vIGRlZmluZWQoX19H TElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorIAorIHZv aWQgUHJpbnRUb1N0ZGVycihjb25zdCBjaGFyKiBvdXRwdXQpIHsKKyAgIC8vIE5PVEU6IFRoaXMg Y29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2Vzcwor QEAgLTgyOCw3ICs4MjgsNyBAQCBzaXplX3QgQ29sbGVjdFN0YWNrVHJhY2Uodm9pZCoqIHRyYWNl LCBzaXplX3QgY291bnQpIHsKKyAgIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNp Z25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworICAgLy8gc3RhY2sgZHVtcGluZyBz aWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCisgCist I2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQo X19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAg Ly8gVGhvdWdoIHRoZSBiYWNrdHJhY2UgQVBJIG1hbiBwYWdlIGRvZXMgbm90IGxpc3QgYW55IHBv c3NpYmxlIG5lZ2F0aXZlCisgICAvLyByZXR1cm4gdmFsdWVzLCB3ZSB0YWtlIG5vIGNoYW5jZS4K KyAgIHJldHVybiBiYXNlOjpzYXR1cmF0ZWRfY2FzdDxzaXplX3Q+KGJhY2t0cmFjZSh0cmFjZSwg Y291bnQpKTsKK0BAIC04NDEsMTMgKzg0MSwxMyBAQCB2b2lkIFN0YWNrVHJhY2U6OlByaW50V2l0 aFByZWZpeChjb25zdCBjaGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CisgLy8gTk9URTogVGhp cyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNz CisgLy8gc3RhY2sgZHVtcGluZyBzaWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBp cyBhbGxvd2VkIGhlcmUuCisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVk KF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAm JiAhZGVmaW5lZChfQUlYKQorICAgUHJpbnRCYWNrdHJhY2VPdXRwdXRIYW5kbGVyIGhhbmRsZXI7 CisgICBQcm9jZXNzQmFja3RyYWNlKHRyYWNlXywgY291bnRfLCBwcmVmaXhfc3RyaW5nLCAmaGFu ZGxlcik7CisgI2VuZGlmCisgfQorIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVm aW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX19VQ0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIFN0YWNrVHJhY2U6Ok91dHB1dFRvU3RyZWFtV2l0 aFByZWZpeChzdGQ6Om9zdHJlYW0qIG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKKyAgIFN0cmVh bUJhY2t0cmFjZU91dHB1dEhhbmRsZXIgaGFuZGxlcihvcyk7CitkaWZmIC0tZ2l0IGEvdGhpcmRf cGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS1zdWJ6ZXJvL2J1aWxkL0xpbnV4L2lu Y2x1ZGUvbGx2bS9Db25maWcvY29uZmlnLmggYi90aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGly ZF9wYXJ0eS9sbHZtLXN1Ynplcm8vYnVpbGQvTGludXgvaW5jbHVkZS9sbHZtL0NvbmZpZy9jb25m aWcuaAoraW5kZXggNzk4ZjE1MC4uOTdhY2M3YyAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L3N3 aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tc3ViemVyby9idWlsZC9MaW51eC9pbmNsdWRlL2xs dm0vQ29uZmlnL2NvbmZpZy5oCisrKysgYi90aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9w YXJ0eS9sbHZtLXN1Ynplcm8vYnVpbGQvTGludXgvaW5jbHVkZS9sbHZtL0NvbmZpZy9jb25maWcu aAorQEAgLTE0LDcgKzE0LDcgQEAKKyAjZGVmaW5lIEVOQUJMRV9DUkFTSF9PVkVSUklERVMgMQor IAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmFja3RyYWNlJyBmdW5jdGlvbi4g Ki8KKy0jZGVmaW5lIEhBVkVfQkFDS1RSQUNFIDEKKysvKiAjdW5kZWYgSEFWRV9CQUNLVFJBQ0Ug Ki8KKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPENyYXNoUmVwb3J0ZXJDbGll bnQuaD4gaGVhZGVyIGZpbGUuICovCisgLyogI3VuZGVmIEhBVkVfQ1JBU0hSRVBPUlRFUkNMSUVO VF9IICovCitAQCAtNTUsNyArNTUsNyBAQAorICNkZWZpbmUgSEFWRV9FUlJOT19IIDEKKyAKKyAv KiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGV4ZWNpbmZvLmg+IGhlYWRlciBmaWxlLiAq LworLSNkZWZpbmUgSEFWRV9FWEVDSU5GT19IIDEKKysvKiAjdW5kZWYgSEFWRV9FWEVDSU5GT19I ICovCisgCisgLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIg ZmlsZS4gKi8KKyAjZGVmaW5lIEhBVkVfRkNOVExfSCAxCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfZ2V0Y29udGV4dC5wYXRj aCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF9n ZXRjb250ZXh0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u NzY5NzI0M2E5MTA0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX2dldGNvbnRleHQucGF0Y2gKQEAgLTAsMCArMSwy NSBAQAorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYyBiL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5j YworaW5kZXggYjg5NWY2ZC4uNGYxMzM1MiAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5j YworKysrIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9o YW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNDkwLDcgKzQ5MCw5IEBAIGJvb2wgRXhj ZXB0aW9uSGFuZGxlcjo6U2ltdWxhdGVTaWduYWxEZWxpdmVyeShpbnQgc2lnKSB7CisgICBzaWdp bmZvLnNpX2NvZGUgPSBTSV9VU0VSOworICAgc2lnaW5mby5zaV9waWQgPSBnZXRwaWQoKTsKKyAg IHVjb250ZXh0X3QgY29udGV4dDsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICBnZXRjb250 ZXh0KCZjb250ZXh0KTsKKysjZW5kaWYKKyAgIHJldHVybiBIYW5kbGVTaWduYWwoc2lnLCAmc2ln aW5mbywgJmNvbnRleHQpOworIH0KKyAKK0BAIC02NzUsOCArNjc3LDEwIEBAIGJvb2wgRXhjZXB0 aW9uSGFuZGxlcjo6V3JpdGVNaW5pZHVtcCgpIHsKKyAgIHN5c19wcmN0bChQUl9TRVRfRFVNUEFC TEUsIDEsIDAsIDAsIDApOworIAorICAgQ3Jhc2hDb250ZXh0IGNvbnRleHQ7CisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKQorICAgaW50IGdldGNvbnRleHRfcmVzdWx0ID0gZ2V0Y29udGV4dCgmY29u dGV4dC5jb250ZXh0KTsKKyAgIGlmIChnZXRjb250ZXh0X3Jlc3VsdCkKKysjZW5kaWYKKyAgICAg cmV0dXJuIGZhbHNlOworIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX21hbGxpbmZv LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1t dXNsX21hbGxpbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uZGZlN2M2NTk1ZWRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX21hbGxpbmZvLnBhdGNoCkBAIC0wLDAgKzEs NTQgQEAKKy0tLSBhL2Jhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2Mub3Jp ZworKysrIGIvYmFzZS90cmFjZV9ldmVudC9tYWxsb2NfZHVtcF9wcm92aWRlci5jYworQEAgLTI0 Myw3ICsyNDMsNyBAQAorICAgYWxsb2NhdGVkX29iamVjdHNfY291bnQgPSBtYWluX2hlYXBfaW5m by5ibG9ja19jb3VudDsKKyAjZWxpZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpCisgLy8gVE9ETyhmdWNo c2lhKTogUG9ydCwgc2VlIGh0dHBzOi8vY3JidWcuY29tLzcwNjU5Mi4KKy0jZWxzZQorKyNlbGlm IGRlZmluZWQoX19HTElCQ19fKQorICAgc3RydWN0IG1hbGxpbmZvIGluZm8gPSBtYWxsaW5mbygp OworICAgRENIRUNLX0dFKGluZm8uYXJlbmEgKyBpbmZvLmhibGtoZCwgaW5mby51b3JkYmxrcyk7 CisgCistLS0gYS9iYXNlL3Byb2Nlc3MvcHJvY2Vzc19tZXRyaWNzX3Bvc2l4LmNjLm9yaWcJMjAx OS0xMC0yNCAxMToxMDo0OC41NTMxNTkyNDUgLTA0MDAKKysrKyBiL2Jhc2UvcHJvY2Vzcy9wcm9j ZXNzX21ldHJpY3NfcG9zaXguY2MJMjAxOS0xMC0yNCAxMToxNDoyOS4wMjUwMjU4NTQgLTA0MDAK K0BAIC0xMTAsMTQgKzExMCwxNCBAQAorICAgbWFsbG9jX3N0YXRpc3RpY3NfdCBzdGF0cyA9IHsw fTsKKyAgIG1hbGxvY196b25lX3N0YXRpc3RpY3MobnVsbHB0ciwgJnN0YXRzKTsKKyAgIHJldHVy biBzdGF0cy5zaXplX2luX3VzZTsKKy0jZWxpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVk KE9TX0FORFJPSUQpCisrI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoT1NfQU5E Uk9JRCkKKyAgIHN0cnVjdCBtYWxsaW5mbyBtaW5mbyA9IG1hbGxpbmZvKCk7CisgI2lmIEJVSUxE RkxBRyhVU0VfVENNQUxMT0MpCisgICByZXR1cm4gbWluZm8udW9yZGJsa3M7CisgI2Vsc2UKKyAg IHJldHVybiBtaW5mby5oYmxraGQgKyBtaW5mby5hcmVuYTsKKyAjZW5kaWYKKy0jZWxpZiBkZWZp bmVkKE9TX0ZVQ0hTSUEpCisrI2Vsc2UKKyAgIC8vIFRPRE8oZnVjaHNpYSk6IE5vdCBjdXJyZW50 bHkgZXhwb3NlZC4gaHR0cHM6Ly9jcmJ1Zy5jb20vNzM1MDg3LgorICAgcmV0dXJuIDA7CisgI2Vu ZGlmCistLS0gYS90aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLXN1Ynpl cm8vbGliL1N1cHBvcnQvVW5peC9Qcm9jZXNzLmluYworKysrIGIvdGhpcmRfcGFydHkvc3dpZnRz aGFkZXIvdGhpcmRfcGFydHkvbGx2bS1zdWJ6ZXJvL2xpYi9TdXBwb3J0L1VuaXgvUHJvY2Vzcy5p bmMub3JpZworQEAgLTg0LDcgKzg0LDcgQEAKKyB9CisgCisgc2l6ZV90IFByb2Nlc3M6OkdldE1h bGxvY1VzYWdlKCkgeworLSNpZiBkZWZpbmVkKEhBVkVfTUFMTElORk8pCisrI2lmIGRlZmluZWQo SEFWRV9NQUxMSU5GTykgJiYgZGVmaW5lZChfX0dMSUJDX18pCisgICBzdHJ1Y3QgbWFsbGluZm8g bWk7CisgICBtaSA9IDo6bWFsbGluZm8oKTsKKyAgIHJldHVybiBtaS51b3JkYmxrczsKKworLS0t IGEvdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS0xMC4wL2NvbmZpZ3Mv bGludXgvaW5jbHVkZS9sbHZtL0NvbmZpZy9jb25maWcuaC5vcmlnCTIwMTktMDktMzAgMTM6MDM6 NDIuNTU2ODgwNTM3IC0wNDAwCisrKysgYi90aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9w YXJ0eS9sbHZtLTEwLjAvY29uZmlncy9saW51eC9pbmNsdWRlL2xsdm0vQ29uZmlnL2NvbmZpZy5o CTIwMTktMDktMzAgMTM6MDc6MjcuOTg5ODIxMjI3IC0wNDAwCitAQCAtMTIyLDcgKzEyMiw5IEBA CisgLyogI3VuZGVmIEhBVkVfTUFMTENUTCAqLworIAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBo YXZlIHRoZSBgbWFsbGluZm8nIGZ1bmN0aW9uLiAqLworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykK KyAjZGVmaW5lIEhBVkVfTUFMTElORk8gMQorKyNlbmRpZgorIAorIC8qIERlZmluZSB0byAxIGlm IHlvdSBoYXZlIHRoZSA8bWFsbG9jLmg+IGhlYWRlciBmaWxlLiAqLworICNkZWZpbmUgSEFWRV9N QUxMT0NfSCAxCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRj aGVzL2Nocm9taXVtLW11c2xfcHJlYWRfcHdyaXRlNjQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfcHJlYWRfcHdyaXRlNjQucGF0Y2gK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYWVhYWViNzU5M2YKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2No cm9taXVtLW11c2xfcHJlYWRfcHdyaXRlNjQucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorZGlmZiAt LWdpdCBhL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCBiL3RoaXJkX3Bh cnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAoraW5kZXggNWQ5YzJlOC4uMjY4MjM0OSAx MDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysr IGIvdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitAQCAtMTY2LDYgKzE2 NiwxMyBAQCBleHRlcm4gIkMiIHsKKyAjIHVuZGVmIF9fTlJfd2FpdHBpZAorICNlbmRpZgorIAor KyNpZmRlZiBwcmVhZDY0CisrI3VuZGVmIHByZWFkNjQKKysjZW5kaWYKKysjaWZkZWYgcHdyaXRl NjQKKysjdW5kZWYgcHdyaXRlNjQKKysjZW5kaWYKKysKKyAvKiBBcyBnbGliYyBvZnRlbiBwcm92 aWRlcyBzdWJ0bHkgaW5jb21wYXRpYmxlIGRhdGEgc3RydWN0dXJlcyAoYW5kIGltcGxpY2l0Cisg ICogd3JhcHBlciBmdW5jdGlvbnMgdGhhdCBjb252ZXJ0IHRoZW0pLCB3ZSBwcm92aWRlIG91ciBv d24ga2VybmVsIGRhdGEKKyAgKiBzdHJ1Y3R1cmVzIGZvciB1c2UgYnkgdGhlIHN5c3RlbSBjYWxs cy4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hy b21pdW0tbXVzbF9wdXNoX2JhY2sucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVz bC1wYXRjaGVzL2Nocm9taXVtLW11c2xfcHVzaF9iYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2ZmMzQwMjg3ZGE1Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX3B1c2hf YmFjay5wYXRjaApAQCAtMCwwICsxLDEzIEBACitkaWZmIC0tZ2l0IGEvbmV0L3NvY2tldC91ZHBf c29ja2V0X3Bvc2l4LmNjIGIvbmV0L3NvY2tldC91ZHBfc29ja2V0X3Bvc2l4LmNjCitpbmRleCAw OGJmNzljLi4zZWU1MzUzIDEwMDY0NAorLS0tIGEvbmV0L3NvY2tldC91ZHBfc29ja2V0X3Bvc2l4 LmNjCisrKysgYi9uZXQvc29ja2V0L3VkcF9zb2NrZXRfcG9zaXguY2MKK0BAIC0xMTk0LDcgKzEx OTQsNyBAQCBTZW5kUmVzdWx0IFVEUFNvY2tldFBvc2l4U2VuZGVyOjpJbnRlcm5hbFNlbmRtbXNn QnVmZmVycygKKyAgICAgbXNnX2lvdi0+cHVzaF9iYWNrKHtjb25zdF9jYXN0PGNoYXIqPihidWZm ZXItPmRhdGEoKSksIGJ1ZmZlci0+bGVuZ3RoKCl9KTsKKyAgIG1zZ3ZlYy0+cmVzZXJ2ZShidWZm ZXJzLnNpemUoKSk7CisgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGJ1ZmZlcnMuc2l6ZSgpOyBq KyspCistICAgIG1zZ3ZlYy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwgMCwgJm1zZ19pb3Zbal0sIDEs IG51bGxwdHIsIDAsIDB9LCAwfSk7CisrICAgIG1zZ3ZlYy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwg MCwgJm1zZ19pb3Zbal0sIDEsIDAsIG51bGxwdHIsIDAsIDAsIDB9LCAwfSk7CisgICBpbnQgcmVz dWx0ID0gSEFORExFX0VJTlRSKFNlbmRtbXNnKGZkLCAmbXNndmVjWzBdLCBidWZmZXJzLnNpemUo KSwgMCkpOworICAgU2VuZFJlc3VsdCBzZW5kX3Jlc3VsdCgwLCAwLCBzdGQ6Om1vdmUoYnVmZmVy cykpOworICAgaWYgKHJlc3VsdCA8IDApIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24x Mi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF9zdGFja19zaXplLnBhdGNoIGIvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX3N0YWNrX3Np emUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jZjQxZDI3 YWRlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1w YXRjaGVzL2Nocm9taXVtLW11c2xfc3RhY2tfc2l6ZS5wYXRjaApAQCAtMCwwICsxLDQxIEBACitk aWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNr X3V0aWwuY2MgYi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tf dXRpbC5jYworaW5kZXggYjI0MjE2NC4uMWEwYjUxOSAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9zdGFja191dGlsLmNjCisrKysgYi90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5jYworQEAgLTI4LDcg KzI4LDcgQEAKKyAvLyBGSVhNRTogT24gTWFjIE9TWCBhbmQgTGludXgsIHRoaXMgbWV0aG9kIGNh bm5vdCBlc3RpbWF0ZSBzdGFjayBzaXplCisgLy8gY29ycmVjdGx5IGZvciB0aGUgbWFpbiB0aHJl YWQuCisgCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkg fHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCisrI2VsaWYgZGVmaW5lZChPU19MSU5VWCkgfHwg ZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8IFwKKyAgICAgZGVm aW5lZChPU19GVUNIU0lBKQorICAgLy8gcHRocmVhZF9nZXRhdHRyX25wKCkgY2FuIGZhaWwgaWYg dGhlIHRocmVhZCBpcyBub3QgaW52b2tlZCBieQorICAgLy8gcHRocmVhZF9jcmVhdGUoKSAoZS5n LiwgdGhlIG1haW4gdGhyZWFkIG9mIGJsaW5rX3VuaXR0ZXN0cykuCitAQCAtNTUsNiArNTUsOSBA QCBzaXplX3QgR2V0VW5kZXJlc3RpbWF0ZWRTdGFja1NpemUoKSB7CisgICBwdGhyZWFkX2F0dHJf ZGVzdHJveSgmYXR0cik7CisgI2VuZGlmCisgCisrI2lmIGRlZmluZWQoT1NfTElOVVgpICYmICFk ZWZpbmVkKF9fR0xJQkNfXykKKysgIHJldHVybiAwOworKyNlbHNlCisgICAvLyBSZXR1cm4gYSA1 MTJrIHN0YWNrIHNpemUsIChjb25zZXJ2YXRpdmVseSkgYXNzdW1pbmcgdGhlIGZvbGxvd2luZzoK KyAgIC8vICAtIHRoYXQgc2l6ZSBpcyBtdWNoIGxvd2VyIHRoYW4gdGhlIHB0aHJlYWRzIGRlZmF1 bHQgKHg4NiBwdGhyZWFkcyBoYXMgYSAyTQorICAgLy8gICAgZGVmYXVsdC4pCitAQCAtNjIsNiAr NjUsOCBAQCBzaXplX3QgR2V0VW5kZXJlc3RpbWF0ZWRTdGFja1NpemUoKSB7CisgICAvLyAgICBs b3cgYXMgNTEyay4KKyAgIC8vCisgICByZXR1cm4gNTEyICogMTAyNDsKKysjZW5kaWYKKysKKyAj ZWxpZiBkZWZpbmVkKE9TX01BQ09TWCkKKyAgIC8vIHB0aHJlYWRfZ2V0X3N0YWNrc2l6ZV9ucCgp IHJldHVybnMgdG9vIGxvdyBhIHZhbHVlIGZvciB0aGUgbWFpbiB0aHJlYWQgb24KKyAgIC8vIE9T WCAxMC45LAorQEAgLTk3LDcgKzEwMiw3IEBAIHJldHVybiBUaHJlYWRpbmc6OlRocmVhZFN0YWNr U2l6ZSgpOworIH0KKyAKKyB2b2lkKiBHZXRTdGFja1N0YXJ0KCkgeworLSNpZiBkZWZpbmVkKF9f R0xJQkNfXykgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8 IFwKKysjaWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZp bmVkKE9TX0ZSRUVCU0QpIHx8IFwKKyAgICAgZGVmaW5lZChPU19GVUNIU0lBKQorICAgcHRocmVh ZF9hdHRyX3QgYXR0cjsKKyAgIGludCBlcnJvcjsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF9zdGFja190cmFjZS5wYXRjaCBi L3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF9zdGFj a190cmFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjlh MWYyYjA0NDU4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9t dXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF9zdGFja190cmFjZS5wYXRjaApAQCAtMCwwICsxLDQ0 IEBACitkaWZmIC0tZ2l0IGEvYmFzZS9kZWJ1Zy9zdGFja190cmFjZS5jYyBiL2Jhc2UvZGVidWcv c3RhY2tfdHJhY2UuY2MKK2luZGV4IGQ4Y2E4MjIuLmZmZTFmMDggMTAwNjQ0CistLS0gYS9iYXNl L2RlYnVnL3N0YWNrX3RyYWNlLmNjCisrKysgYi9iYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjCitA QCAtMjI1LDcgKzIyNSw5IEBAIHZvaWQgU3RhY2tUcmFjZTo6UHJpbnQoKSBjb25zdCB7CisgfQor Cisgdm9pZCBTdGFja1RyYWNlOjpPdXRwdXRUb1N0cmVhbShzdGQ6Om9zdHJlYW0qIG9zKSBjb25z dCB7CisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAh ZGVmaW5lZChfQUlYKQorICAgT3V0cHV0VG9TdHJlYW1XaXRoUHJlZml4KG9zLCBudWxscHRyKTsK KysjZW5kaWYKKyB9CisKKyBzdGQ6OnN0cmluZyBTdGFja1RyYWNlOjpUb1N0cmluZygpIGNvbnN0 IHsKK0BAIC0yMzMsMTQgKzIzMywxNCBAQCBzdGQ6OnN0cmluZyBTdGFja1RyYWNlOjpUb1N0cmlu ZygpIGNvbnN0IHsKKyB9Cisgc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9TdHJpbmdXaXRoUHJl Zml4KGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKKyAgIHN0ZDo6c3RyaW5nc3Ry ZWFtIHN0cmVhbTsKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkK KysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZp bmVkKF9BSVgpCisgICBPdXRwdXRUb1N0cmVhbVdpdGhQcmVmaXgoJnN0cmVhbSwgcHJlZml4X3N0 cmluZyk7CisgI2VuZGlmCisgICByZXR1cm4gc3RyZWFtLnN0cigpOworIH0KKyAKKyBzdGQ6Om9z dHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3RyZWFtJiBvcywgY29uc3QgU3RhY2tUcmFjZSYgcykg eworLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmICFkZWZpbmVkKF9BSVgpCisg ICBzLk91dHB1dFRvU3RyZWFtKCZvcyk7CisgI2Vsc2UKKyAgIG9zIDw8ICJTdGFja1RyYWNlOjpP dXRwdXRUb1N0cmVhbSBub3QgaW1wbGVtZW50ZWQuIjsKK2RpZmYgLS1naXQgYS9iYXNlL2xvZ2dp bmcuY2MgYi9iYXNlL2xvZ2dpbmcuY2MKK2luZGV4IDM2YjhiZmMuLmRkODMwZmUgMTAwNjQ0Cist LS0gYS9iYXNlL2xvZ2dpbmcuY2MKKysrKyBiL2Jhc2UvbG9nZ2luZy5jYworQEAgLTYwNyw3ICs2 MDcsNyBAQCBMb2dNZXNzYWdlOjpMb2dNZXNzYWdlKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5l LCBMb2dTZXZlcml0eSBzZXZlcml0eSwKKyBMb2dNZXNzYWdlOjp+TG9nTWVzc2FnZSgpIHsKKyAg IHNpemVfdCBzdGFja19zdGFydCA9IHN0cmVhbV8udGVsbHAoKTsKKyAjaWYgIWRlZmluZWQoT0ZG SUNJQUxfQlVJTEQpICYmICFkZWZpbmVkKE9TX05BQ0wpICYmICFkZWZpbmVkKF9fVUNMSUJDX18p ICYmIFwKKy0gICAgIWRlZmluZWQoT1NfQUlYKQorKyAgICAhZGVmaW5lZChPU19BSVgpICYmIGRl ZmluZWQoX19HTElCQ19fKQorICAgaWYgKHNldmVyaXR5XyA9PSBMT0dfRkFUQUwgJiYgIWJhc2U6 OmRlYnVnOjpCZWluZ0RlYnVnZ2VkKCkpIHsKKyAgICAgLy8gSW5jbHVkZSBhIHN0YWNrIHRyYWNl IG9uIGEgZmF0YWwsIHVubGVzcyBhIGRlYnVnZ2VyIGlzIGF0dGFjaGVkLgorICAgICBiYXNlOjpk ZWJ1Zzo6U3RhY2tUcmFjZSBzdGFja190cmFjZTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbF90Y3BfbGlzdGVuLnBhdGNoIGIv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX3RjcF9s aXN0ZW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYTYy MzE3YjExYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVz bC1wYXRjaGVzL2Nocm9taXVtLW11c2xfdGNwX2xpc3Rlbi5wYXRjaApAQCAtMCwwICsxLDE0IEBA CitkaWZmIC0tZ2l0IGEvY29udGVudC9wdWJsaWMvY29tbW9uL3NvY2tldF9wZXJtaXNzaW9uX3Jl cXVlc3QuaCBiL2NvbnRlbnQvcHVibGljL2NvbW1vbi9zb2NrZXRfcGVybWlzc2lvbl9yZXF1ZXN0 LmgKK2luZGV4IDczMTY2MjEuLjYxNzEyMTkgMTAwNjQ0CistLS0gYS9jb250ZW50L3B1YmxpYy9j b21tb24vc29ja2V0X3Blcm1pc3Npb25fcmVxdWVzdC5oCisrKysgYi9jb250ZW50L3B1YmxpYy9j b21tb24vc29ja2V0X3Blcm1pc3Npb25fcmVxdWVzdC5oCitAQCAtOSw2ICs5LDkgQEAKKyAKKyAj aW5jbHVkZSA8c3RyaW5nPgorIAorKyNpZmRlZiBUQ1BfTElTVEVOCisrI3VuZGVmIFRDUF9MSVNU RU4KKysjZW5kaWYKKyAKKyBuYW1lc3BhY2UgY29udGVudCB7CisgCmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2xfeHh4LXBwYzY0 bGUtc3VwcG9ydC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMv Y2hyb21pdW0tbXVzbF94eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYTdkNjYwZmViMDIzCi0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsX3h4eC1w cGM2NGxlLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxNzkgQEAKK2RpZmYgLS1naXQgc2FuZGJv eC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmggc2FuZGJveC9saW51eC9icGZfZHNsL3Nl Y2NvbXBfbWFjcm9zLmgKK2luZGV4IGE2YWVjNTQ0ZS4uMmE0YTdmMWJjIDEwMDY0NAorLS0tIGEv c2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKKysrKyBiL3NhbmRib3gvbGlu dXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCitAQCAtMTYsNyArMTYsNyBAQAorICNpZiBkZWZp bmVkKF9fbWlwc19fKQorIC8vIHN5cy91c2VyLmggaW4gZWdsaWJjIG1pc3NlcyBzaXplX3QgZGVm aW5pdGlvbgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKy0jZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykK KyAvLyBNYW51YWxseSBkZWZpbmUgZ3JlZ190IG9uIHBwYzY0CisgdHlwZWRlZiB1bnNpZ25lZCBs b25nIGxvbmcgZ3JlZ190OworICNlbmRpZgorQEAgLTM2MSwxMSArMzYxLDExIEBAIHR5cGVkZWYg c3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7CisgI2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRf QVJDSF9QUEM2NAorICNlbmRpZgorIAorLSNkZWZpbmUgU0VDQ09NUF9SRUcoX2N0eCwgX3JlZykg KChfY3R4KS0+dWNfbWNvbnRleHQucmVncy0+Z3ByW19yZWddKQorKyNkZWZpbmUgU0VDQ09NUF9S RUcoX2N0eCwgX3JlZykgKCgoc3RydWN0IHB0X3JlZ3MgKikoX2N0eCktPnVjX21jb250ZXh0LnJl Z3MpLT5ncHJbX3JlZ10pCisgCisgI2RlZmluZSBTRUNDT01QX1JFU1VMVChfY3R4KSBTRUNDT01Q X1JFRyhfY3R4LCAzKQorICNkZWZpbmUgU0VDQ09NUF9TWVNDQUxMKF9jdHgpIFNFQ0NPTVBfUkVH KF9jdHgsIDApCistI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpIChfY3R4KS0+dWNfbWNvbnRleHQu cmVncy0+bmlwCisrI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpICgoc3RydWN0IHB0X3JlZ3MgKiko X2N0eCktPnVjX21jb250ZXh0LnJlZ3MpLT5uaXAKKyAjZGVmaW5lIFNFQ0NPTVBfUEFSTTEoX2N0 eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKKyAjZGVmaW5lIFNFQ0NPTVBfUEFSTTIoX2N0eCkgU0VD Q09NUF9SRUcoX2N0eCwgNCkKKyAjZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0eCkgU0VDQ09NUF9S RUcoX2N0eCwgNSkKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxs LmNjIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYworaW5kZXggZDUzYTdmZjU2 Li5jMjkwZjBlOTIgMTAwNjQ0CistLS0gYS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2Nh bGwuY2MKKysrKyBiL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYworQEAgLTQ5 OSw5ICs0OTksOSBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4dChpbnRwdHJfdCBy ZXRfdmFsLCB1Y29udGV4dF90KiBjdHgpIHsKKyAgIC8vIFNhbWUgYXMgTUlQUywgbmVlZCB0byBp bnZlcnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIgKGNyMC5TTykKKyAgIGlmIChyZXRfdmFs IDw9IC0xICYmIHJldF92YWwgPj0gLTQwOTUpIHsKKyAgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOwor LSAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciB8PSAoMSA8PCAyOCk7CisrICAgICgoc3Ry dWN0IHB0X3JlZ3MgKiljdHgtPnVjX21jb250ZXh0LnJlZ3MpLT5jY3IgfD0gKDEgPDwgMjgpOwor ICAgfSBlbHNlIHsKKy0gICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4 KTsKKysgICAgKChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNvbnRleHQucmVncyktPmNjciAm PSB+KDEgPDwgMjgpOworICAgfQorICNlbmRpZgorICAgU0VDQ09NUF9SRVNVTFQoY3R4KSA9IHN0 YXRpY19jYXN0PGdyZWdfdD4ocmV0X3ZhbCk7CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2Fic2Vp bC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oIHRoaXJkX3BhcnR5 L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCitpbmRl eCBjZGNlOWJmOC4uNzNkNzdkZGEgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9hYnNlaWwtY3Bw L2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaAorKysrIGIvdGhpcmRfcGFy dHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKK0BA IC00Niw3ICs0Niw3IEBACisgCisgLy8gVGhlIGZvbGxvd2luZyBwbGF0Zm9ybXMgaGF2ZSBhbiBp bXBsZW1lbnRhdGlvbiBvZiBhIGhhcmR3YXJlIGNvdW50ZXIuCisgI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAor LSAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBcCisrICAoKGRl ZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykpICYmIGRlZmluZWQoX19HTElC Q19fKSkgfHwgXAorICAgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9NX1g2NCkKKyAjZGVm aW5lIEFCU0xfSEFWRV9VTlNDQUxFRF9DWUNMRUNMT0NLX0lNUExFTUVOVEFUSU9OIDEKKyAjZWxz ZQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbiB0aGlyZF9wYXJ0eS9i cmVha3BhZC9CVUlMRC5nbgoraW5kZXggZjlhNjBlMzcuLjI1ZjNhMGI3IDEwMDY0NAorLS0tIGEv dGhpcmRfcGFydHkvYnJlYWtwYWQvQlVJTEQuZ24KKysrKyBiL3RoaXJkX3BhcnR5L2JyZWFrcGFk L0JVSUxELmduCitAQCAtNjM3LDYgKzYzNyw3IEBAIGlmIChpc19saW51eCB8fCBpc19hbmRyb2lk KSB7CisgCisgICAgIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisgICAgICAgICBkZWZp bmVzID0gWyAiSEFWRV9HRVRDT05URVhUIiBdCisrICAgICAgICBsaWJzICs9IFsgInVjb250ZXh0 IiBdCisgICAgIH0gZWxzZSB7CisgICAgICAgICBzb3VyY2VzICs9IFsKKyAgICAgICAgICAgICAi YnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9icmVha3BhZF9nZXRjb250ZXh0LlMiCitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93 cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCitpbmRl eCAwM2FmZWM3YS4uMDI2NGVjZjEgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5j YworKysrIGIvdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9k dW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKK0BAIC0yNzMsNiArMjczLDkgQEAgdm9p ZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsK KyAKKyAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgCisrI2luY2x1ZGUgPGFzbS9lbGYu aD4KKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKworIHVpbnRwdHJfdCBUaHJlYWRJbmZvOjpH ZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7CisgICAgIHJldHVybiBtY29udGV4dC5ncF9y ZWdzW1BUX05JUF07CisgfQorQEAgLTI5MCw5ICsyOTMsOSBAQCB2b2lkIFRocmVhZEluZm86OkZp bGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgeworICAgICBvdXQtPmN0ciA9 IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKyAgICAgCisgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCistICAgICAgICBvdXQt PmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsKKysgICAgICAgIG91 dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJm1jb250ZXh0LmZwX3JlZ3Mp W2ldOworIAorLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSBtY29udGV4dC5mcF9yZWdzW05G UFJFRy0xXTsKKysgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gKCh1aW50NjRfdCAqKSZtY29u dGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOworIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8 IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorICAgICAgICAgb3V0LT52ZWN0 b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFk ZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1w X3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitpbmRleCAxMDkwNDcwZi4uZTU4MDIz M2QgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysrKyBiL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3Vjb250ZXh0X3JlYWRlci5jYworQEAgLTI1Nyw2ICsyNTcsOSBAQCB2b2lkIFVDb250ZXh0 UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0 X3QgKnVjKSB7CisgCisgI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIAorKyNpbmNsdWRl IDxhc20vZWxmLmg+CisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysKKyB1aW50cHRyX3QgVUNv bnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRlcihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAg ICByZXR1cm4gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1Bd OworIH0KK0BAIC0yODAsOSArMjgzLDkgQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNv bnRleHQoUmF3Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1YywKKyAgICAgb3V0 LT5jdHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DVFJdOworICAgICAKKyAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykK Ky0gICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZnBf cmVnc1tpXTsKKysgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90 ICopJnVjLT51Y19tY29udGV4dC5mcF9yZWdzKVtpXTsKKyAKKy0gICAgb3V0LT5mbG9hdF9zYXZl LmZwc2NyID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbTkZQUkVHLTFdOworKyAgICBvdXQtPmZs b2F0X3NhdmUuZnBzY3IgPSAoKHVpbnQ2NF90ICopJnVjLT51Y19tY29udGV4dC5mcF9yZWdzKVtF TEZfTkZQUkVHLTFdOworIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVB UkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorICAgICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3Zy W2ldID0KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwor aW5kZXggNWE3YWI1MGMuLmVlOGI4NThjIDEwMDY0NAorLS0tIGEvdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNj CisrKysgYi90aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hh bmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK0BAIC0xMDUsNiArMTA1LDExIEBACisgI2RlZmlu ZSBQUl9TRVRfUFRSQUNFUiAweDU5NjE2ZDYxCisgI2VuZGlmCisgCisrLyogbXVzbCBoYWNrLCBj YW4ndCBpbmNsdWRlIGFzbS9wdHJhY2UuaCBhcyB0aGF0IGNhdXNlcyBjb25mbGljdHMgKi8KKysj aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAhZGVmaW5lZChQVF9OSVApCisrI2RlZmluZSBQ VF9OSVAgMzIKKysjZW5kaWYKKysKKyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFkIHsKKyAKKyBu YW1lc3BhY2UgeworZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKK2luZGV4IDhlMzM1YTA5Li5iMmEwZjE1 NSAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L3NpZ25hbF9jb250ZXh0LmgKKysrKyBiL3RoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKK0BAIC00NjksNyArNDY5LDcgQEAgc3Ry dWN0IE1Db250ZXh0NjQgeworICAgU2lnbmFsVGhyZWFkQ29udGV4dDY0IGdwX3JlZ3M7CisgICBT aWduYWxGbG9hdENvbnRleHQ2NCAgZnBfcmVnczsKKyAgIFNpZ25hbFZlY3RvckNvbnRleHQ2NCAq dl9yZWdzOworLSAgaW50NjRfdCB2bXhfcmVzZXJ2ZVs2OV07CisrICBpbnQ2NF90IHZteF9yZXNl cnZlWzEwMV07CisgfTsKKyAKKyBzdHJ1Y3QgQ29udGV4dFRyYWl0czY0IDogcHVibGljIFRyYWl0 czY0IHsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51 eC90aHJlYWRfaW5mby5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgv dGhyZWFkX2luZm8uaAoraW5kZXggZGVhMGQxZjMuLmIyMDNlNWIyIDEwMDY0NAorLS0tIGEvdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCisrKysg Yi90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVhZF9pbmZvLmgK K0BAIC0zMCw2ICszMCw3IEBACisgCisgI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQorICNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgor ICNlbmRpZgorIAorIG5hbWVzcGFjZSBjcmFzaHBhZCB7CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5 L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCB0aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2Fs bF9zdXBwb3J0LmgKK2luZGV4IDk5NTVjZTQ0Li40YzFjYzQ4OCAxMDA2NDQKKy0tLSBhL3RoaXJk X3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIGIvdGhpcmRfcGFydHkvbHNz L2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitAQCAtNDIxNiw5ICs0MjE2LDEzIEBAIHN0cnVjdCBr ZXJuZWxfc3RhdGZzIHsKKyAgICAgfQorICAgI2VuZGlmCisgICAjaWYgZGVmaW5lZChfX05SX2Zz dGF0YXQ2NCkKKysgICAgLy8gbXVzbCBkb2VzICNkZWZpbmUgZnN0YXRhdDY0IGZzdGF0YXQKKysg ICAgI3VuZGVmIGZzdGF0YXQ2NAorICAgICBMU1NfSU5MSU5FIF9zeXNjYWxsNChpbnQsICAgZnN0 YXRhdDY0LCAgICAgICAgaW50LCAgIGQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKiwgICAgICBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qga2VybmVs X3N0YXQ2NCAqLCAgIGIsICAgIGludCwgICBmKQorKyAgICAvLyBzZXQgaXQgYmFjayBsaWtlIGl0 IHdhcworKyAgICAjZGVmaW5lIGZzdGF0YXQ2NCBmc3RhdGF0CisgICAjZW5kaWYKKyAgICNpZiBk ZWZpbmVkKF9fTlJfd2FpdHBpZCkKKyAgICAgLy8gd2FpdHBpZCBpcyBwb2x5ZmlsbGVkIGJlbG93 IHdoZW4gbm90IGF2YWlsYWJsZS4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxl cy9wYXRjaGVzL2Nocm9taXVtLTg4LWdsaWJjLTIuMzMucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OC1nbGliYy0yLjMzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjQzMDZkNWU0MjllCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODgtZ2xpYmMt Mi4zMy5wYXRjaApAQCAtMCwwICsxLDE0NCBAQAorIyBQYXRjaCBtYWRlIGJ5IEtldmluIEtvZmxl ciA8S2V2aW5AdGlnY2MudGljYWxjLm9yZz4KKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29t L3Nob3dfYnVnLmNnaT9pZD0xOTA0NjUyCisKK2RpZmYgLXVwIGNocm9taXVtLTg4LjAuNDMyNC45 Ni9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjLmZz dGF0Zml4IGNocm9taXVtLTg4LjAuNDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYy5mc3RhdGZpeAkyMDIxLTAxLTI1IDEwOjExOjQ1LjQy NzQzNjM5OCAtMDUwMAorKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNl bGluZV9wb2xpY3kuY2MJMjAyMS0wMS0yNSAxMDoxMjo1MS4zMzc2OTkwMDMgLTA1MDAKK0BAIC0y NTcsNiArMjU3LDE4IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGUK KyAgICAgcmV0dXJuIFJlc3RyaWN0S2lsbFRhcmdldChjdXJyZW50X3BpZCwgc3lzbm8pOworICAg fQorIAorKyNpZiBkZWZpbmVkKF9fTlJfbmV3ZnN0YXRhdCkKKysgIGlmIChzeXNubyA9PSBfX05S X25ld2ZzdGF0YXQpIHsKKysgICAgcmV0dXJuIFJld3JpdGVGc3RhdGF0U0lHU1lTKCk7CisrICB9 CisrI2VuZGlmCisrCisrI2lmIGRlZmluZWQoX19OUl9mc3RhdGF0NjQpCisrICBpZiAoc3lzbm8g PT0gX19OUl9mc3RhdGF0NjQpIHsKKysgICAgcmV0dXJuIFJld3JpdGVGc3RhdGF0U0lHU1lTKCk7 CisrICB9CisrI2VuZGlmCisrCisgICBpZiAoU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShzeXNu bykgfHwKKyAgICAgICBTeXNjYWxsU2V0czo6SXNDdXJyZW50RGlyZWN0b3J5KHN5c25vKSkgewor ICAgICByZXR1cm4gRXJyb3IoZnNfZGVuaWVkX2Vycm5vKTsKK2RpZmYgLXVwIGNocm9taXVtLTg4 LjAuNDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2lnc3lzX2hhbmRs ZXJzLmNjLmZzdGF0Zml4IGNocm9taXVtLTg4LjAuNDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc2lnc3lzX2hhbmRsZXJzLmNjCistLS0gc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5jYy5mc3RhdGZpeAkyMDIxLTAxLTI1IDEw OjEzOjEwLjE3OTc3NDA4MSAtMDUwMAorKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVs cGVycy9zaWdzeXNfaGFuZGxlcnMuY2MJMjAyMS0wMS0yNSAxMDoxNjoxOC43OTA1MjU3NDYgLTA1 MDAKK0BAIC02LDYgKzYsOCBAQAorIAorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvc2lnc3lzX2hhbmRsZXJzLmgiCisgCisrI2luY2x1ZGUgPGVycm5vLmg+Cisr I2luY2x1ZGUgPGZjbnRsLmg+CisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRp bnQuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitAQCAtMzU1LDYgKzM1NywzNSBAQCBpbnRwdHJf dCBTSUdTWVNTY2hlZEhhbmRsZXIoY29uc3Qgc3RydWN0CisgICByZXR1cm4gLUVOT1NZUzsKKyB9 CisgCisraW50cHRyX3QgU0lHU1lTRnN0YXRhdEhhbmRsZXIoY29uc3Qgc3RydWN0IGFyY2hfc2Vj Y29tcF9kYXRhJiBhcmdzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGF1 eCkgeworKyAgc3dpdGNoIChhcmdzLm5yKSB7CisrI2lmIGRlZmluZWQoX19OUl9uZXdmc3RhdGF0 KQorKyAgICBjYXNlIF9fTlJfbmV3ZnN0YXRhdDoKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX05S X2ZzdGF0YXQ2NCkKKysgICAgY2FzZSBfX05SX2ZzdGF0YXQ2NDoKKysjZW5kaWYKKysjaWYgZGVm aW5lZChfX05SX25ld2ZzdGF0YXQpIHx8IGRlZmluZWQoX19OUl9mc3RhdGF0NjQpCisrICAgICAg aWYgKCpyZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIgKj4oYXJncy5hcmdzWzFdKSA9PSAnXDAn CisrICAgICAgICAgICYmIGFyZ3MuYXJnc1szXSA9PSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oQVRf RU1QVFlfUEFUSCkpIHsKKysgICAgICAgIHJldHVybiBzYW5kYm94OjpzeXNfZnN0YXQ2NChzdGF0 aWNfY2FzdDxpbnQ+KGFyZ3MuYXJnc1swXSksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxzdHJ1Y3Qgc3RhdDY0ICo+KGFyZ3MuYXJnc1syXSkp OworKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBlcnJubyA9IEVBQ0NFUzsKKysgICAgICAgIHJl dHVybiAtMTsKKysgICAgICB9CisrICAgICAgYnJlYWs7CisrI2VuZGlmCisrICB9CisrCisrICBD cmFzaFNJR1NZU19IYW5kbGVyKGFyZ3MsIGF1eCk7CisrCisrICAvLyBTaG91bGQgbmV2ZXIgYmUg cmVhY2hlZC4KKysgIFJBV19DSEVDSyhmYWxzZSk7CisrICByZXR1cm4gLUVOT1NZUzsKKyt9Cisr CisgYnBmX2RzbDo6UmVzdWx0RXhwciBDcmFzaFNJR1NZUygpIHsKKyAgIHJldHVybiBicGZfZHNs OjpUcmFwKENyYXNoU0lHU1lTX0hhbmRsZXIsIE5VTEwpOworIH0KK0BAIC0zODcsNiArNDE4LDEw IEBAIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmV3cml0ZVNjaGVkU0lHU1lTKCkKKyAgIHJldHVybiBi cGZfZHNsOjpUcmFwKFNJR1NZU1NjaGVkSGFuZGxlciwgTlVMTCk7CisgfQorIAorK2JwZl9kc2w6 OlJlc3VsdEV4cHIgUmV3cml0ZUZzdGF0YXRTSUdTWVMoKSB7CisrICByZXR1cm4gYnBmX2RzbDo6 VHJhcChTSUdTWVNGc3RhdGF0SGFuZGxlciwgTlVMTCk7CisrfQorKworIHZvaWQgQWxsb2NhdGVD cmFzaEtleXMoKSB7CisgI2lmICFkZWZpbmVkKE9TX05BQ0xfTk9OU0ZJKQorICAgaWYgKHNlY2Nv bXBfY3Jhc2hfa2V5KQorZGlmZiAtdXAgY2hyb21pdW0tODguMC40MzI0Ljk2L3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuaC5mc3RhdGZpeCBjaHJvbWl1 bS04OC4wLjQzMjQuOTYvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19o YW5kbGVycy5oCistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19o YW5kbGVycy5oLmZzdGF0Zml4CTIwMjEtMDEtMjUgMTA6MTY6MzYuOTgyNTk4MjM2IC0wNTAwCisr Kysgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5oCTIw MjEtMDEtMjUgMTA6MTg6NDUuNzA1MTExMDI3IC0wNTAwCitAQCAtNjIsNiArNjIsMTAgQEAgU0FO REJPWF9FWFBPUlQgaW50cHRyX3QgU0lHU1lTUHRyYWNlRmFpbAorIC8vIHNjaGVkX3NldHBhcmFt KCksIHNjaGVkX3NldHNjaGVkdWxlcigpCisgU0FOREJPWF9FWFBPUlQgaW50cHRyX3QgU0lHU1lT U2NoZWRIYW5kbGVyKGNvbnN0IGFyY2hfc2VjY29tcF9kYXRhJiBhcmdzLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiBhdXgpOworKy8vIElmIHRoZSBm c3RhdGF0IHN5c2NhbGwgaXMgYWN0dWFsbHkgYSBkaXNndWlzZWQgZnN0YXQsIGNhbGxzIHRoZSBy ZWd1bGFyIGZzdGF0CisrLy8gc3lzY2FsbCwgb3RoZXJ3aXNlLCBjcmFzaGVzIGluIHRoZSBzYW1l IHdheSBhcyBDcmFzaFNJR1NZU19IYW5kbGVyLgorK1NBTkRCT1hfRVhQT1JUIGludHB0cl90IFNJ R1NZU0ZzdGF0YXRIYW5kbGVyKGNvbnN0IHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSYgYXJncywg CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogYXV4 KTsKKyAKKyAvLyBWYXJpYW50cyBvZiB0aGUgYWJvdmUgZnVuY3Rpb25zIGZvciB1c2Ugd2l0aCBi cGZfZHNsLgorIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgQ3Jhc2hTSUdTWVMo KTsKK0BAIC03Miw2ICs3Niw3IEBAIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIg Q3Jhc2gKKyBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIENyYXNoU0lHU1lTRnV0 ZXgoKTsKKyBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIENyYXNoU0lHU1lTUHRy YWNlKCk7CisgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXdyaXRlU2NoZWRT SUdTWVMoKTsKKytTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJld3JpdGVGc3Rh dGF0U0lHU1lTKCk7CisgCisgLy8gQWxsb2NhdGVzIGEgY3Jhc2gga2V5IHNvIHRoYXQgU2VjY29t cCBpbmZvcm1hdGlvbiBjYW4gYmUgcmVjb3JkZWQuCisgdm9pZCBBbGxvY2F0ZUNyYXNoS2V5cygp OworZGlmZiAtdXAgY2hyb21pdW0tODguMC40MzI0Ljk2L3NhbmRib3gvbGludXgvc2VydmljZXMv c3lzY2FsbF93cmFwcGVycy5jYy5mc3RhdGZpeCBjaHJvbWl1bS04OC4wLjQzMjQuOTYvc2FuZGJv eC9saW51eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBwZXJzLmNjCistLS0gc2FuZGJveC9saW51eC9z ZXJ2aWNlcy9zeXNjYWxsX3dyYXBwZXJzLmNjLmZzdGF0Zml4CTIwMjEtMDEtMjUgMTA6MTg6NTMu MzA3MTQxMzExIC0wNTAwCisrKysgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBw ZXJzLmNjCTIwMjEtMDEtMjUgMTA6MTk6NDYuOTgyMzU1MjkzIC0wNTAwCitAQCAtMjYxLDQgKzI2 MSwxMyBAQCBpbnQgc3lzX3NpZ2FjdGlvbihpbnQgc2lnbnVtLAorIAorICNlbmRpZiAgLy8gZGVm aW5lZChNRU1PUllfU0FOSVRJWkVSKQorIAorK1NBTkRCT1hfRVhQT1JUIGludCBzeXNfZnN0YXQ2 NChpbnQgZmQsIHN0cnVjdCBzdGF0NjQgKmJ1ZikKKyt7CisrI2lmIGRlZmluZWQoX19OUl9mc3Rh dDY0KQorKyAgICByZXR1cm4gc3lzY2FsbChfX05SX2ZzdGF0NjQsIGZkLCBidWYpOworKyNlbHNl CisrICAgIHJldHVybiBzeXNjYWxsKF9fTlJfZnN0YXQsIGZkLCBidWYpOworKyNlbmRpZgorK30K KysKKyB9ICAvLyBuYW1lc3BhY2Ugc2FuZGJveAorZGlmZiAtdXAgY2hyb21pdW0tODguMC40MzI0 Ljk2L3NhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5oLmZzdGF0Zml4IGNo cm9taXVtLTg4LjAuNDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBl cnMuaAorLS0tIHNhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5oLmZzdGF0 Zml4CTIwMjEtMDEtMjUgMTA6MTk6NTMuMTE1Mzc5NzQxIC0wNTAwCisrKysgc2FuZGJveC9saW51 eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBwZXJzLmgJMjAyMS0wMS0yNSAxMDoyMDo0NS40ODU1ODg0 MjEgLTA1MDAKK0BAIC0xNyw2ICsxNyw3IEBAIHN0cnVjdCBzb2NrX2Zwcm9nOworIHN0cnVjdCBy bGltaXQ2NDsKKyBzdHJ1Y3QgY2FwX2hkcjsKKyBzdHJ1Y3QgY2FwX2RhdGE7Cisrc3RydWN0IHN0 YXQ2NDsKKyAKKyBuYW1lc3BhY2Ugc2FuZGJveCB7CisgCitAQCAtODQsNiArODUsOSBAQCBTQU5E Qk9YX0VYUE9SVCBpbnQgc3lzX3NpZ2FjdGlvbihpbnQgc2lnCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHNpZ2FjdGlvbiogYWN0LAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBzaWdhY3Rpb24qIG9sZGFjdCk7CisgCisrLy8g UmVjZW50IGdsaWJjIHJld3JpdGVzIGZzdGF0IHRvIGZzdGF0YXQuCisrU0FOREJPWF9FWFBPUlQg aW50IHN5c19mc3RhdDY0KGludCBmZCwgc3RydWN0IHN0YXQ2NCAqYnVmKTsKKysKKyB9ICAvLyBu YW1lc3BhY2Ugc2FuZGJveAorIAorICNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TRVJWSUNFU19T WVNDQUxMX1dSQVBQRVJTX0hfCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS04OS1BWFRyZWVTZXJpYWxpemVyLWluY2x1ZGUucGF0Y2ggYi9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS1BWFRyZWVTZXJpYWxpemVy LWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43 MzcyZTQ0ZDE1NDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS04OS1BWFRyZWVTZXJpYWxpemVyLWluY2x1ZGUucGF0Y2gKQEAgLTAs MCArMSwyNSBAQAorRnJvbSBjMDZkZGM0OTM1YmYxMzk0ODEyYzAxMWNlNWQ5Mzg5OGNjYzhhNTNh IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RlcGhhbiBIYXJ0bWFubiA8c3RoYTA5 QGdvb2dsZW1haWwuY29tPgorRGF0ZTogVHVlLCAwOSBGZWIgMjAyMSAxOToyMjo1NyArMDAwMAor U3ViamVjdDogW1BBVENIXSBJV1lVOiBhZGQgY3RpbWUgZm9yIHN0ZDo6dGltZQorCitCdWc6IE5v bmUKK0NoYW5nZS1JZDogSThiZGFlNDMyMDk5ODQyNDJiOWY1ZTUzOGQ3NGVjZTQ0MDliNjVlM2MK K1Jldmlld2VkLW9uOiBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2Mv Y2hyb21pdW0vc3JjLysvMjY3OTYxMAorUmV2aWV3ZWQtYnk6IEthdGllIERla3RhciA8a2F0aWVA Y2hyb21pdW0ub3JnPgorQ29tbWl0LVF1ZXVlOiBLYXRpZSBEZWt0YXIgPGthdGllQGNocm9taXVt Lm9yZz4KK0NyLUNvbW1pdC1Qb3NpdGlvbjogcmVmcy9oZWFkcy9tYXN0ZXJAeyM4NTIyODd9Cist LS0KKworZGlmZiAtLWdpdCBhL3VpL2FjY2Vzc2liaWxpdHkvYXhfdHJlZV9zZXJpYWxpemVyLmgg Yi91aS9hY2Nlc3NpYmlsaXR5L2F4X3RyZWVfc2VyaWFsaXplci5oCitpbmRleCBkZGJiZGNkLi4x NzkwZTNiIDEwMDY0NAorLS0tIHVpL2FjY2Vzc2liaWxpdHkvYXhfdHJlZV9zZXJpYWxpemVyLmgK KysrKyB1aS9hY2Nlc3NpYmlsaXR5L2F4X3RyZWVfc2VyaWFsaXplci5oCitAQCAtOCw2ICs4LDcg QEAKKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorKyNpbmNs dWRlIDxjdGltZT4KKyAjaW5jbHVkZSA8b3N0cmVhbT4KKyAjaW5jbHVkZSA8dW5vcmRlcmVkX21h cD4KKyAjaW5jbHVkZSA8dW5vcmRlcmVkX3NldD4KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LWFkZC1kZXBlbmRlbmN5LW9uLW9wdXMtaW4t d2ViY29kZWNzLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tODktYWRkLWRlcGVuZGVuY3ktb24tb3B1cy1pbi13ZWJjb2RlY3MucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jMjU4OTc3OTFkOTUKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS1hZGQt ZGVwZW5kZW5jeS1vbi1vcHVzLWluLXdlYmNvZGVjcy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitG cm9tIGI1YjgwZGY3ZGFmYmE4Y2FmYTRjNmMwYmEyMTUzZGZkYTQ2N2RmYzkgTW9uIFNlcCAxNyAw MDowMDowMCAyMDAxCitGcm9tOiBTdGVwaGFuIEhhcnRtYW5uIDxzdGhhMDlAZ29vZ2xlbWFpbC5j b20+CitEYXRlOiBXZWQsIDI3IEphbiAyMDIxIDIwOjMxOjUxICswMDAwCitTdWJqZWN0OiBbUEFU Q0hdIGFkZCBkZXBlbmRlbmN5IG9uIG9wdXMgaW4gd2ViY29kZWNzCisKK3dlYmNvZGVjcyB1c2Vz IG9wdXMsIGJ1dCBkZXBlbmRlbmN5IGlzIG1pc3NpbmcuIFdpdGggdW5idW5kbGVkCitvcHVzIGxp YnJhcnkgYnVpbGQgZmFpbHMsIGJlY2F1c2UgaW5jbHVkZSBwYXRoIGlzIGluY29tcGxldGUuCisK K0J1ZzogMTE2OTc1OAorQ2hhbmdlLUlkOiBJMDEzNjkzNjQzMjc0NjExOTZhODEwMDI0Nzk2MzZj ZjQ1MDE3NjY5YQorUmV2aWV3ZWQtb246IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNv dXJjZS5jb20vYy9jaHJvbWl1bS9zcmMvKy8yNjQ0NjIzCitSZXZpZXdlZC1ieTogRGFsZSBDdXJ0 aXMgPGRhbGVjdXJ0aXNAY2hyb21pdW0ub3JnPgorQ29tbWl0LVF1ZXVlOiBEYWxlIEN1cnRpcyA8 ZGFsZWN1cnRpc0BjaHJvbWl1bS5vcmc+CitDci1Db21taXQtUG9zaXRpb246IHJlZnMvaGVhZHMv bWFzdGVyQHsjODQ3NzU0fQorLS0tCisgdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxl cy93ZWJjb2RlY3MvQlVJTEQuZ24gfCAxICsKKyB0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9t b2R1bGVzL3dlYmNvZGVjcy9ERVBTICAgICB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspCisKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1 bGVzL3dlYmNvZGVjcy9CVUlMRC5nbiBiL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVs ZXMvd2ViY29kZWNzL0JVSUxELmduCitpbmRleCBmZGY0Y2EwZmFmYzcyLi4wMWE3YmY4MDlmZmNh IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvd2ViY29kZWNz L0JVSUxELmduCisrKysgdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy93ZWJjb2Rl Y3MvQlVJTEQuZ24KK0BAIC02NSw2ICs2NSw3IEBAIGJsaW5rX21vZHVsZXNfc291cmNlcygid2Vi Y29kZWNzIikgeworICAgICAiLy9tZWRpYS9tb2pvL2NsaWVudHMiLAorICAgICAiLy9tZWRpYS9t b2pvL21vam9tIiwKKyAgICAgIi8vdGhpcmRfcGFydHkvbGlieXV2OmxpYnl1diIsCisrICAgICIv L3RoaXJkX3BhcnR5L29wdXMiLAorICAgXQorICAgaWYgKG1lZGlhX3VzZV9vcGVuaDI2NCkgewor ICAgICBkZXBzICs9IFsgIi8vdGhpcmRfcGFydHkvb3BlbmgyNjQ6ZW5jb2RlciIgXQorZGlmZiAt LWdpdCBhL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvd2ViY29kZWNzL0RFUFMg Yi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL3dlYmNvZGVjcy9ERVBTCitpbmRl eCBiOGRkNTk2ZGE4Y2FmLi5lYTE5MTlkMTIyMDVhIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL21vZHVsZXMvd2ViY29kZWNzL0RFUFMKKysrKyB0aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9tb2R1bGVzL3dlYmNvZGVjcy9ERVBTCitAQCAtMTksNiArMTksNyBAQCBpbmNs dWRlX3J1bGVzID0gWworIAorICAgICAiK3RoaXJkX3BhcnR5L2xpYnl1diIsCisgICAgICIrdGhp cmRfcGFydHkvb3BlbmgyNjQiLAorKyAgICAiK3RoaXJkX3BhcnR5L29wdXMiLAorIAorICAgICAi K3VpL2dmeC9jb2xvcl9zcGFjZS5oIiwKKyAgICAgIit1aS9nZngvZ2VvbWV0cnkvcmVjdC5oIiwK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5 LWRhd24taW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2No cm9taXVtLTg5LWRhd24taW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjk4NzZiYTIwZWI1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LWRhd24taW5jbHVkZS5wYXRjaApAQCAt MCwwICsxLDI4IEBACitGcm9tIDVhNTZiZmU4ZDI4MTI1MGExZGVlZTBkMTE2YTlmY2RlNjViOWMy OWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGVwaGFuIEhhcnRtYW5uIDxzdGhh MDlAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBGcmksIDE1IEphbiAyMDIxIDE4OjM3OjA1ICswMDAw CitTdWJqZWN0OiBbUEFUQ0hdIElXWVU6IGFkZCB2YXJpb3VzIG1pc3NpbmcgaW5jbHVkZXMKKwor c3RkOjp3ZWFrX3B0ciBhbmQgc3RkOjpzaGFyZWRfcHRyIHJlcXVpcmUgbWFwCisqaW50Kl90IHR5 cGVzIHJlcXVpcmUgY3N0ZGludAorLS0tCisgdGhpcmRfcGFydHkvZGF3bi9zcmMvZGF3bl93aXJl L2NsaWVudC9EZXZpY2UuaCB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCsp CisKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9kYXduL3NyYy9kYXduX3dpcmUvY2xpZW50L0Rl dmljZS5oIGIvdGhpcmRfcGFydHkvZGF3bi9zcmMvZGF3bl93aXJlL2NsaWVudC9EZXZpY2UuaAor aW5kZXggM2YxNjcwMC4uMTA4MjU0OSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9kYXduL3NyYy9k YXduX3dpcmUvY2xpZW50L0RldmljZS5oCisrKysgdGhpcmRfcGFydHkvZGF3bi9zcmMvZGF3bl93 aXJlL2NsaWVudC9EZXZpY2UuaAorQEAgLTIyLDcgKzIyLDkgQEAKKyAjaW5jbHVkZSAiZGF3bl93 aXJlL2NsaWVudC9BcGlPYmplY3RzX2F1dG9nZW4uaCIKKyAjaW5jbHVkZSAiZGF3bl93aXJlL2Ns aWVudC9PYmplY3RCYXNlLmgiCisgCisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgI2luY2x1ZGUgPG1h cD4KKysjaW5jbHVkZSA8bWVtb3J5PgorIAorIG5hbWVzcGFjZSBkYXduX3dpcmUgeyBuYW1lc3Bh Y2UgY2xpZW50IHsKKyAKKy0tIAorMi4yNi4yCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LXF1aWNoZS1kY2hlY2sucGF0Y2ggYi9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS1xdWljaGUtZGNoZWNrLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjJmMTY0ZmFjOWJh Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hy b21pdW0tODktcXVpY2hlLWRjaGVjay5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDdjZDRl YWIwYmZjYTYxOTJmMTRkNjE0MzQxMGUxYWU3NzRlYjFjMjkgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBTdGVwaGFuIEhhcnRtYW5uIDxzdGhhMDlAZ29vZ2xlbWFpbC5jb20+CitEYXRl OiBUaHUsIDMxIERlYyAyMDIwIDExOjU3OjIyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEdDQzog ZG8gbm90IHBhc3MgdW5pcXVlX3B0ciB0byBEQ0hFQ0tfTkUsIGJ1dCB0aGUgYWN0dWFsCisgcG9p bnRlcgorCitEQ0hFQ0tfTkUgY29tcGFyaXNvbiByZXF1aXJlcyBDaGVja09wVmFsdWVTdHIgdG8g YmUgZGVmaW5lZCBmb3IgdGhlCit0eXBlLCBvciBwcm92aWRpbmcgYW4gb3V0cHV0IHN0cmVhbSBv cGVyYXRvci4gQSB1bmlxdWVfcHRyIGRvZXMgbm90Citwcm92aWRlIGFueS4gVVNFIERDSEVDSyBp bnN0ZWFkLgorLS0tCisgbmV0L3RoaXJkX3BhcnR5L3F1aWNoZS9zcmMvcXVpYy9jb3JlL3F1aWNf cGF0aF92YWxpZGF0b3IuY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCsp LCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9uZXQvdGhpcmRfcGFydHkvcXVpY2hlL3Ny Yy9xdWljL2NvcmUvcXVpY19wYXRoX3ZhbGlkYXRvci5jYyBiL25ldC90aGlyZF9wYXJ0eS9xdWlj aGUvc3JjL3F1aWMvY29yZS9xdWljX3BhdGhfdmFsaWRhdG9yLmNjCitpbmRleCAwNzIyMjE2Li5m YjJhZWFmIDEwMDY0NAorLS0tIG5ldC90aGlyZF9wYXJ0eS9xdWljaGUvc3JjL3F1aWMvY29yZS9x dWljX3BhdGhfdmFsaWRhdG9yLmNjCisrKysgbmV0L3RoaXJkX3BhcnR5L3F1aWNoZS9zcmMvcXVp Yy9jb3JlL3F1aWNfcGF0aF92YWxpZGF0b3IuY2MKK0BAIC02OCw3ICs2OCw3IEBAIHZvaWQgUXVp Y1BhdGhWYWxpZGF0b3I6Ok9uUGF0aFJlc3BvbnNlKGNvbnN0IFF1aWNQYXRoRnJhbWVCdWZmZXIm IHByb2JpbmdfZGF0YSwKKyB2b2lkIFF1aWNQYXRoVmFsaWRhdG9yOjpTdGFydFBhdGhWYWxpZGF0 aW9uKAorICAgICBzdGQ6OnVuaXF1ZV9wdHI8UXVpY1BhdGhWYWxpZGF0aW9uQ29udGV4dD4gY29u dGV4dCwKKyAgICAgc3RkOjp1bmlxdWVfcHRyPFJlc3VsdERlbGVnYXRlPiByZXN1bHRfZGVsZWdh dGUpIHsKKy0gIERDSEVDS19ORShudWxscHRyLCBjb250ZXh0KTsKKysgIERDSEVDSyhjb250ZXh0 KTsKKyAgIFFVSUNfRExPRyhJTkZPKSA8PCAiU3RhcnQgdmFsaWRhdGluZyBwYXRoICIgPDwgKmNv bnRleHQKKyAgICAgICAgICAgICAgICAgICA8PCAiIHZpYSB3cml0ZXI6ICIgPDwgY29udGV4dC0+ V3JpdGVyVG9Vc2UoKTsKKyAgIGlmIChwYXRoX2NvbnRleHRfICE9IG51bGxwdHIpIHsKKy0tIAor Mi4yNi4yCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2No cm9taXVtLTg5LXNraWEtQ3JvcFJlY3QucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS04OS1za2lhLUNyb3BSZWN0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTcxMmM5MjY1OGY2Ci0tLSAvZGV2L251bGwKKysrIGIv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODktc2tpYS1Dcm9wUmVj dC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvc2tpYS9p bmNsdWRlL2VmZmVjdHMvU2tJbWFnZUZpbHRlcnMuaCBiL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVk ZS9lZmZlY3RzL1NrSW1hZ2VGaWx0ZXJzLmgKK2luZGV4IDA0Y2NlMGEuLmQwNmIwMDcgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2VmZmVjdHMvU2tJbWFnZUZpbHRlcnMuaAor KysrIHRoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9lZmZlY3RzL1NrSW1hZ2VGaWx0ZXJzLmgKK0BA IC0yMyw2ICsyMyw5IEBAIGNsYXNzIFNrQ29sb3JGaWx0ZXI7CisgY2xhc3MgU2tQYWludDsKKyBj bGFzcyBTa1JlZ2lvbjsKKyAKKytjb25zdGV4cHIgU2tSZWN0IGtOb0Nyb3BSZWN0ID0ge1NLX1Nj YWxhck5lZ2F0aXZlSW5maW5pdHksIFNLX1NjYWxhck5lZ2F0aXZlSW5maW5pdHksCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBTS19TY2FsYXJJbmZpbml0eSwgU0tfU2NhbGFySW5m aW5pdHl9OworKworIC8vIEEgc2V0IG9mIGZhY3RvcnkgZnVuY3Rpb25zIHByb3ZpZGluZyB1c2Vm dWwgU2tJbWFnZUZpbHRlciBlZmZlY3RzLiBGb3IgaW1hZ2UgZmlsdGVycyB0aGF0IHRha2UgYW4K KyAvLyBpbnB1dCBmaWx0ZXIsIHByb3ZpZGluZyBudWxscHRyIG1lYW5zIGl0IHdpbGwgYXV0b21h dGljYWxseSB1c2UgdGhlIGR5bmFtaWMgc291cmNlIGltYWdlLiBUaGlzCisgLy8gc291cmNlIGRl cGVuZHMgb24gaG93IHRoZSBmaWx0ZXIgaXMgYXBwbGllZCwgYnV0IGlzIGVpdGhlciB0aGUgY29u dGVudHMgb2YgYSBzYXZlZCBsYXllciB3aGVuCitAQCAtMzMsOCArMzYsNiBAQCBwdWJsaWM6Cisg ICAgIC8vIHRvIHRob3NlIHR5cGVzIGFzIGEgY3JvcCByZWN0IGZvciB0aGUgaW1hZ2UgZmlsdGVy IGZhY3Rvcmllcy4gSXQncyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlZAorICAgICAvLyBkaXJlY3Rs eS4KKyAgICAgc3RydWN0IENyb3BSZWN0IHsKKy0gICAgICAgIHN0YXRpYyBjb25zdGV4cHIgU2tS ZWN0IGtOb0Nyb3BSZWN0ID0ge1NLX1NjYWxhck5lZ2F0aXZlSW5maW5pdHksIFNLX1NjYWxhck5l Z2F0aXZlSW5maW5pdHksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBTS19TY2FsYXJJbmZpbml0eSwgU0tfU2NhbGFySW5maW5pdHl9OworICAgICAgICAg Q3JvcFJlY3QoKSA6IGZDcm9wUmVjdChrTm9Dcm9wUmVjdCkge30KKyAgICAgICAgIC8vIEludGVu dGlvbmFsbHkgbm90IGV4cGxpY2l0IHNvIGNhbGxlcnMgZG9uJ3QgaGF2ZSB0byB1c2UgdGhpcyB0 eXBlIGJ1dCBjYW4gdXNlIFNrSVJlY3Qgb3IKKyAgICAgICAgIC8vIFNrUmVjdCBhcyBkZXNpcmVk LgorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3NraWEvc3JjL2VmZmVjdHMvaW1hZ2VmaWx0ZXJz L1NrSW1hZ2VGaWx0ZXJzLmNwcCBiL3RoaXJkX3BhcnR5L3NraWEvc3JjL2VmZmVjdHMvaW1hZ2Vm aWx0ZXJzL1NrSW1hZ2VGaWx0ZXJzLmNwcAoraW5kZXggNTI5MGIwMC4uZmI5N2ZjMSAxMDA2NDQK Ky0tLSB0aGlyZF9wYXJ0eS9za2lhL3NyYy9lZmZlY3RzL2ltYWdlZmlsdGVycy9Ta0ltYWdlRmls dGVycy5jcHAKKysrKyB0aGlyZF9wYXJ0eS9za2lhL3NyYy9lZmZlY3RzL2ltYWdlZmlsdGVycy9T a0ltYWdlRmlsdGVycy5jcHAKK0BAIC00NywxMCArNDcsNiBAQCBzdGF0aWMgU2tJbWFnZUZpbHRl cjo6Q3JvcFJlY3QgdG9fbGVnYWN5X2Nyb3BfcmVjdChjb25zdCBTa0ltYWdlRmlsdGVyczo6Q3Jv cFJlYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTa0ltYWdl RmlsdGVyOjpDcm9wUmVjdChTa1JlY3Q6Ok1ha2VFbXB0eSgpLCAweDApOworIH0KKyAKKy0vLyBB bGxvdyBrTm9Dcm9wUmVjdCB0byBiZSByZWZlcmVuY2VkIChmb3IgY2VydGFpbiBidWlsZHMsIGUu Zy4gbWFjT1MgbGliRnV6emVyIGNocm9taXVtIHRhcmdldCwKKy0vLyBzZWUgY3JidWcuY29tLzEx Mzk3MjUpCistY29uc3RleHByIFNrUmVjdCBTa0ltYWdlRmlsdGVyczo6Q3JvcFJlY3Q6OmtOb0Ny b3BSZWN0OworLQorIHZvaWQgU2tJbWFnZUZpbHRlcnM6OlJlZ2lzdGVyRmxhdHRlbmFibGVzKCkg eworICAgICBTa0FscGhhVGhyZXNob2xkRmlsdGVyOjpSZWdpc3RlckZsYXR0ZW5hYmxlcygpOwor ICAgICBTa0FyaXRobWV0aWNJbWFnZUZpbHRlcjo6UmVnaXN0ZXJGbGF0dGVuYWJsZXMoKTsKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LXgx MS1vem9uZS1maXgtdHdvLWVkZ2UtY2FzZXMucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS14MTEtb3pvbmUtZml4LXR3by1lZGdlLWNhc2VzLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uN2ZiNTg2ZGExNjlhCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tODkteDExLW96b25lLWZpeC10d28tZWRnZS1jYXNlcy5wYXRjaApAQCAtMCwwICsxLDEzNSBA QAorRnJvbSA1ZTNhNzM4YjEyMDQ5NDFhYWI5ZjE1YzBlYjNkMDZlMjBmZWZkOTZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2NvdHQgVmlvbGV0IDxza3lAY2hyb21pdW0ub3JnPgor RGF0ZTogTW9uLCA4IE1hciAyMDIxIDIxOjA3OjM5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHgx MS9vem9uZTogZml4IHR3byBlZGdlIGNhc2VzCisKK1dpbmRvd1RyZWVIb3N0OjpPbkhvc3RNb3Zl ZEluUGl4ZWxzKCkgbWF5IHRyaWdnZXIgYSBuZXN0ZWQgbWVzc2FnZQorbG9vcCAodGFiIGRyYWdn aW5nKSwgd2hpY2ggd2hlbiB0aGUgc3RhY2sgdW5yYXZlbHMgbWVhbnMgdGhpcyBtYXkKK2JlIGRl bGV0ZWQuIFRoaXMgYWRkcyBhbiBlYXJseSBvdXQgaWYgdGhpcyBoYXBwZW5zLgorCitYMTFXaG9s ZVNjcmVlbk1vdmVMb29wIGhhcyBhIHNpbWlsYXIgaXNzdWUsIGluIHNvIGZhciBhcyBub3RpZnlp bmcKK3RoZSBkZWxlZ2F0ZSBtYXkgZGVsZXRlIHRoaXMuCisKK0JVRz0xMTg1NDgyCitURVNUPVdp bmRvd1RyZWVIb3N0UGxhdGZvcm0uRGVsZXRlSG9zdEZyb21Pbkhvc3RNb3ZlZEluUGl4ZWxzCisK K0NoYW5nZS1JZDogSWVjYTFjOTBiM2U0MzU4ZGE1MGIzMzJhYmUyOTQxZmRiYjUwYzVjMjUKK1Jl dmlld2VkLW9uOiBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hy b21pdW0vc3JjLysvMjc0MzU1NQorUmV2aWV3ZWQtYnk6IFRob21hcyBBbmRlcnNvbiA8dGhvbWFz YW5kZXJzb25AY2hyb21pdW0ub3JnPgorQ29tbWl0LVF1ZXVlOiBTY290dCBWaW9sZXQgPHNreUBj aHJvbWl1bS5vcmc+CitDci1Db21taXQtUG9zaXRpb246IHJlZnMvaGVhZHMvbWFzdGVyQHsjODYw ODUyfQorLS0tCisgdWkvYXVyYS93aW5kb3dfdHJlZV9ob3N0X3BsYXRmb3JtLmNjICAgICAgICAg IHwgMTAgKysrKy0KKyB1aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZvcm1fdW5pdHRlc3Qu Y2MgfCA0MCArKysrKysrKysrKysrKysrKystCisgdWkvYmFzZS94L3gxMV93aG9sZV9zY3JlZW5f bW92ZV9sb29wLmNjICAgICAgIHwgIDQgKysKKyAzIGZpbGVzIGNoYW5nZWQsIDUxIGluc2VydGlv bnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS91aS9hdXJhL3dpbmRvd190cmVl X2hvc3RfcGxhdGZvcm0uY2MgYi91aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZvcm0uY2MK K2luZGV4IGNlODM5NWZlMDcuLjc1ODk1NDIwMjYgMTAwNjQ0CistLS0gdWkvYXVyYS93aW5kb3df dHJlZV9ob3N0X3BsYXRmb3JtLmNjCisrKysgdWkvYXVyYS93aW5kb3dfdHJlZV9ob3N0X3BsYXRm b3JtLmNjCitAQCAtMjE0LDEzICsyMTQsMjEgQEAgdm9pZCBXaW5kb3dUcmVlSG9zdFBsYXRmb3Jt OjpPbkJvdW5kc0NoYW5nZWQoY29uc3QgZ2Z4OjpSZWN0JiBuZXdfYm91bmRzKSB7CisgICBmbG9h dCBjdXJyZW50X3NjYWxlID0gY29tcG9zaXRvcigpLT5kZXZpY2Vfc2NhbGVfZmFjdG9yKCk7Cisg ICBmbG9hdCBuZXdfc2NhbGUgPSB1aTo6R2V0U2NhbGVGYWN0b3JGb3JOYXRpdmVWaWV3KHdpbmRv dygpKTsKKyAgIGdmeDo6UmVjdCBvbGRfYm91bmRzID0gYm91bmRzX2luX3BpeGVsc187CisrICBh dXRvIHdlYWtfcmVmID0gR2V0V2Vha1B0cigpOworICAgYm91bmRzX2luX3BpeGVsc18gPSBuZXdf Ym91bmRzOworLSAgaWYgKGJvdW5kc19pbl9waXhlbHNfLm9yaWdpbigpICE9IG9sZF9ib3VuZHMu b3JpZ2luKCkpCisrICBpZiAoYm91bmRzX2luX3BpeGVsc18ub3JpZ2luKCkgIT0gb2xkX2JvdW5k cy5vcmlnaW4oKSkgeworICAgICBPbkhvc3RNb3ZlZEluUGl4ZWxzKGJvdW5kc19pbl9waXhlbHNf Lm9yaWdpbigpKTsKKysgICAgLy8gQ2hhbmdpbmcgdGhlIGJvdW5kcyBtYXkgZGVzdHJveSB0aGlz LgorKyAgICBpZiAoIXdlYWtfcmVmKQorKyAgICAgIHJldHVybjsKKysgIH0KKyAgIGlmIChib3Vu ZHNfaW5fcGl4ZWxzXy5zaXplKCkgIT0gb2xkX2JvdW5kcy5zaXplKCkgfHwKKyAgICAgICBjdXJy ZW50X3NjYWxlICE9IG5ld19zY2FsZSkgeworICAgICBwZW5kaW5nX3NpemVfID0gZ2Z4OjpTaXpl KCk7CisgICAgIE9uSG9zdFJlc2l6ZWRJblBpeGVscyhib3VuZHNfaW5fcGl4ZWxzXy5zaXplKCkp OworKyAgICAvLyBDaGFuZ2luZyB0aGUgc2l6ZSBtYXkgZGVzdHJveSB0aGlzLgorKyAgICBpZiAo IXdlYWtfcmVmKQorKyAgICAgIHJldHVybjsKKyAgIH0KKyAgIERDSEVDS19HVChvbl9ib3VuZHNf Y2hhbmdlZF9yZWN1cnNpb25fZGVwdGhfLCAwKTsKKyAgIGlmICgtLW9uX2JvdW5kc19jaGFuZ2Vk X3JlY3Vyc2lvbl9kZXB0aF8gPT0gMCkgeworZGlmZiAtLWdpdCBhL3VpL2F1cmEvd2luZG93X3Ry ZWVfaG9zdF9wbGF0Zm9ybV91bml0dGVzdC5jYyBiL3VpL2F1cmEvd2luZG93X3RyZWVfaG9zdF9w bGF0Zm9ybV91bml0dGVzdC5jYworaW5kZXggZWRhMTRlMmYwYy4uNGRlMDM5Yzg4YSAxMDA2NDQK Ky0tLSB1aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZvcm1fdW5pdHRlc3QuY2MKKysrKyB1 aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZvcm1fdW5pdHRlc3QuY2MKK0BAIC0zNCw3ICsz NCw3IEBAIGNsYXNzIFRlc3RXaW5kb3dUcmVlSG9zdCA6IHB1YmxpYyBXaW5kb3dUcmVlSG9zdFBs YXRmb3JtIHsKKyAvLyBPbkhvc3RXaWxsL0RpZFByb2Nlc3NCb3VuZHNDaGFuZ2UuIEFkZGl0aW9u YWxseSwgdGhpcyB0cmlnZ2VycyBhIGJvdW5kcworIC8vIGNoYW5nZSBmcm9tIHdpdGhpbiBPbkhv c3RSZXNpemVkKCkuIFN1Y2ggYSBzY2VuYXJpbyBoYXBwZW5zIGluIHByb2R1Y3Rpb24KKyAvLyBj b2RlLgorLWNsYXNzIFRlc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyIDogcHVibGljIGF1cmE6Oldp bmRvd1RyZWVIb3N0T2JzZXJ2ZXIgeworK2NsYXNzIFRlc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVy IDogcHVibGljIFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIgeworICBwdWJsaWM6CisgICBUZXN0V2lu ZG93VHJlZUhvc3RPYnNlcnZlcihXaW5kb3dUcmVlSG9zdFBsYXRmb3JtKiBob3N0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdWk6OlBsYXRmb3JtV2luZG93KiBwbGF0Zm9ybV93aW5k b3cpCitAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBUZXN0V2luZG93VHJlZUhvc3RPYnNlcnZlciA6 IHB1YmxpYyBhdXJhOjpXaW5kb3dUcmVlSG9zdE9ic2VydmVyIHsKKyAgICAgcmV0dXJuIG9uX2hv c3Rfd2lsbF9wcm9jZXNzX2JvdW5kc19jaGFuZ2VfY291bnRfOworICAgfQorIAorLSAgLy8gYXVy YTo6V2luZG93VHJlZUhvc3RPYnNlcnZlcjoKKysgIC8vIFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXI6 CisgICB2b2lkIE9uSG9zdFJlc2l6ZWQoV2luZG93VHJlZUhvc3QqIGhvc3QpIG92ZXJyaWRlIHsK KyAgICAgaWYgKCFzaG91bGRfY2hhbmdlX2JvdW5kc19pbl9vbl9yZXNpemVkXykKKyAgICAgICBy ZXR1cm47CitAQCAtOTIsNSArOTIsNDEgQEAgVEVTVF9GKFdpbmRvd1RyZWVIb3N0UGxhdGZvcm1U ZXN0LCBIb3N0V2lsbFByb2Nlc3NCb3VuZHNDaGFuZ2VSZWN1cnNpb24pIHsKKyAgIEVYUEVDVF9F USgxLCBvYnNlcnZlci5vbl9ob3N0X3dpbGxfcHJvY2Vzc19ib3VuZHNfY2hhbmdlX2NvdW50KCkp OworIH0KKyAKKysvLyBEZWxldGVzIFdpbmRvd1RyZWVIb3N0UGxhdGZvcm0gZnJvbSBPbkhvc3RN b3ZlZEluUGl4ZWxzKCkuCisrY2xhc3MgRGVsZXRlSG9zdFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIg OiBwdWJsaWMgV2luZG93VHJlZUhvc3RPYnNlcnZlciB7CisrIHB1YmxpYzoKKysgIGV4cGxpY2l0 IERlbGV0ZUhvc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyKAorKyAgICAgIHN0ZDo6dW5pcXVlX3B0 cjxUZXN0V2luZG93VHJlZUhvc3Q+IGhvc3QpCisrICAgICAgOiBob3N0XyhzdGQ6Om1vdmUoaG9z dCkpIHsKKysgICAgaG9zdF8tPkFkZE9ic2VydmVyKHRoaXMpOworKyAgfQorKyAgfkRlbGV0ZUhv c3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworKworKyAgVGVz dFdpbmRvd1RyZWVIb3N0KiBob3N0KCkgeyByZXR1cm4gaG9zdF8uZ2V0KCk7IH0KKysKKysgIC8v IFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXI6CisrICB2b2lkIE9uSG9zdE1vdmVkSW5QaXhlbHMoV2lu ZG93VHJlZUhvc3QqIGhvc3QsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2Z4 OjpQb2ludCYgbmV3X29yaWdpbl9pbl9waXhlbHMpIG92ZXJyaWRlIHsKKysgICAgaG9zdF8tPlJl bW92ZU9ic2VydmVyKHRoaXMpOworKyAgICBob3N0Xy5yZXNldCgpOworKyAgfQorKworKyBwcml2 YXRlOgorKyAgc3RkOjp1bmlxdWVfcHRyPFRlc3RXaW5kb3dUcmVlSG9zdD4gaG9zdF87CisrCisr ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVsZXRlSG9zdFdpbmRvd1RyZWVIb3N0T2JzZXJ2 ZXIpOworK307CisrCisrLy8gVmVyaWZpZXMgV2luZG93VHJlZUhvc3RQbGF0Zm9ybSBjYW4gYmUg c2FmZWx5IGRlbGV0ZWQgd2hlbiBjYWxsaW5nCisrLy8gT25Ib3N0TW92ZWRJblBpeGVscygpLgor Ky8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9jcmJ1Zy5jb20vMTE4NTQ4MgorK1RFU1Rf RihXaW5kb3dUcmVlSG9zdFBsYXRmb3JtVGVzdCwgRGVsZXRlSG9zdEZyb21Pbkhvc3RNb3ZlZElu UGl4ZWxzKSB7CisrICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFdpbmRvd1RyZWVIb3N0PiBob3N0ID0K KysgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RXaW5kb3dUcmVlSG9zdD4oKTsKKysgIERlbGV0 ZUhvc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyIG9ic2VydmVyKHN0ZDo6bW92ZShob3N0KSk7Cisr ICBvYnNlcnZlci5ob3N0KCktPlNldEJvdW5kc0luUGl4ZWxzKGdmeDo6UmVjdCgxLCAyLCAzLCA0 KSk7CisrICBFWFBFQ1RfRVEobnVsbHB0ciwgb2JzZXJ2ZXIuaG9zdCgpKTsKKyt9CisrCisgfSAg Ly8gbmFtZXNwYWNlCisgfSAgLy8gbmFtZXNwYWNlIGF1cmEKK2RpZmYgLS1naXQgYS91aS9iYXNl L3gveDExX3dob2xlX3NjcmVlbl9tb3ZlX2xvb3AuY2MgYi91aS9iYXNlL3gveDExX3dob2xlX3Nj cmVlbl9tb3ZlX2xvb3AuY2MKK2luZGV4IDVlZDIxNWRiNjYuLmRiNjc4Nzk5ZGIgMTAwNjQ0Cist LS0gdWkvYmFzZS94L3gxMV93aG9sZV9zY3JlZW5fbW92ZV9sb29wLmNjCisrKysgdWkvYmFzZS94 L3gxMV93aG9sZV9zY3JlZW5fbW92ZV9sb29wLmNjCitAQCAtNzgsOSArNzgsMTMgQEAgWDExV2hv bGVTY3JlZW5Nb3ZlTG9vcDo6flgxMVdob2xlU2NyZWVuTW92ZUxvb3AoKSB7Cisgdm9pZCBYMTFX aG9sZVNjcmVlbk1vdmVMb29wOjpEaXNwYXRjaE1vdXNlTW92ZW1lbnQoKSB7CisgICBpZiAoIWxh c3RfbW90aW9uX2luX3NjcmVlbl8pCisgICAgIHJldHVybjsKKysgIGF1dG8gd2Vha19yZWYgPSB3 ZWFrX2ZhY3RvcnlfLkdldFdlYWtQdHIoKTsKKyAgIGRlbGVnYXRlXy0+T25Nb3VzZU1vdmVtZW50 KGxhc3RfbW90aW9uX2luX3NjcmVlbl8tPnJvb3RfbG9jYXRpb24oKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGxhc3RfbW90aW9uX2luX3NjcmVlbl8tPmZsYWdzKCksCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsYXN0X21vdGlvbl9pbl9zY3JlZW5fLT50aW1lX3N0YW1w KCkpOworKyAgLy8gVGhlIGRlbGVnYXRlIG1heSBkZWxldGUgdGhpcyBkdXJpbmcgZGlzcGF0Y2gu CisrICBpZiAoIXdlYWtfcmVmKQorKyAgICByZXR1cm47CisgICBsYXN0X21vdGlvbl9pbl9zY3Jl ZW5fLnJlc2V0KCk7CisgfQorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L3BhdGNoZXMvY2hyb21pdW0tYnJvd3Nlci1zaXplX3QucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1icm93c2VyLXNpemVfdC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhMjE0ZDk4N2Q2MQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWJyb3dzZXIt c2l6ZV90LnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBjaHJvbWUvYnJvd3Nlci9zZWFyY2gv YmFja2dyb3VuZC9udHBfYmFja2dyb3VuZHMuaAkyMDIwLTA4LTEwIDIwOjM5OjIwLjAwMDAwMDAw MCArMDIwMAorKysrIGNocm9tZS9icm93c2VyL3NlYXJjaC9iYWNrZ3JvdW5kL250cF9iYWNrZ3Jv dW5kcy5oCTIwMjAtMDktMDQgMTM6NDg6MjIuNjQwMDIzMjU2ICswMjAwCitAQCAtNiw2ICs2LDcg QEAKKyAjZGVmaW5lIENIUk9NRV9CUk9XU0VSX1NFQVJDSF9CQUNLR1JPVU5EX05UUF9CQUNLR1JP VU5EU19IXworIAorICNpbmNsdWRlIDxhcnJheT4KKysjaW5jbHVkZSA8Y3N0ZGRlZj4KKyAKKyBj bGFzcyBHVVJMOworIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNo ZXMvY2hyb21pdW0tbGliY19tYWxsb2MucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmVkYTExZWM4NjYzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWxpYmNfbWFsbG9jLnBhdGNoCkBA IC0wLDAgKzEsMjYgQEAKKy0tLSBiYXNlL3Byb2Nlc3MvbWVtb3J5X2xpbnV4LmNjLm9yaWcJMjAx Ny0wOS0xNSAwODo0MTo0My4wMDAwMDAwMDAgKzAwMDAKKysrKyBiYXNlL3Byb2Nlc3MvbWVtb3J5 X2xpbnV4LmNjCTIwMTctMDktMTUgMDg6NDQ6MzkuODA0OTk1NDY5ICswMDAwCitAQCAtMjEsNiAr MjEsMTIgQEAKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvdGNtYWxsb2MvY2hyb21pdW0vc3JjL2dw ZXJmdG9vbHMvdGNtYWxsb2MuaCIKKyAjZW5kaWYKKyAKKysjaWYgZGVmaW5lZChMSUJDX0dMSUJD KQorK2V4dGVybiAiQyIgeworK2V4dGVybiB2b2lkICpfX2xpYmNfbWFsbG9jKHNpemVfdCBzaXpl KTsKKyt9CisrI2VuZGlmCisrCisgbmFtZXNwYWNlIGJhc2UgeworIAorIHNpemVfdCBnX29vbV9z aXplID0gMFU7CistLS0gYmFzZS9wcm9jZXNzL21lbW9yeV9saW51eC5jYy5vcmlnCTIwMjAtMDgt MzAgMTQ6MTg6MzUuNDAxMTMyNTkzIC0wNDAwCisrKysgYmFzZS9wcm9jZXNzL21lbW9yeV9saW51 eC5jYwkyMDIwLTA4LTMwIDE0OjE5OjA4LjAzMDE5OTE4OSAtMDQwMAorQEAgLTE0MSw3ICsxNDEs NyBAQAorICAgICAoIWRlZmluZWQoTElCQ19HTElCQykgJiYgIUJVSUxERkxBRyhVU0VfVENNQUxM T0MpKQorICAgKnJlc3VsdCA9IG1hbGxvYyhzaXplKTsKKyAjZWxpZiBkZWZpbmVkKExJQkNfR0xJ QkMpICYmICFCVUlMREZMQUcoVVNFX1RDTUFMTE9DKQorLSAgKnJlc3VsdCA9IF9fbGliY19tYWxs b2Moc2l6ZSk7CisrICAqcmVzdWx0ID0gOjpfX2xpYmNfbWFsbG9jKHNpemUpOworICNlbGlmIEJV SUxERkxBRyhVU0VfVENNQUxMT0MpCisgICAqcmVzdWx0ID0gdGNfbWFsbG9jX3NraXBfbmV3X2hh bmRsZXIoc2l6ZSk7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXY4LW1vbm90b25pYy1wdGhyZWFkLWNvbnRfdGltZWR3 YWl0LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbXVz bC12OC1tb25vdG9uaWMtcHRocmVhZC1jb250X3RpbWVkd2FpdC5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzYThlYTMyYzljMQotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW11c2wtdjgtbW9u b3RvbmljLXB0aHJlYWQtY29udF90aW1lZHdhaXQucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorVXNl IG1vbm90b25pYyBjbG9jayBmb3IgcHRocmVhZF9jb25kX3RpbWVkd2FpdCB3aXRoIG11c2wgdG9v LgorCitkaWZmIC0tZ2l0IGEvdjgvc3JjL2Jhc2UvcGxhdGZvcm0vY29uZGl0aW9uLXZhcmlhYmxl LmNjIGIvdjgvc3JjL2Jhc2UvcGxhdGZvcm0vY29uZGl0aW9uLXZhcmlhYmxlLmNjCitpbmRleCA1 ZWE3MDgzLi5jMTMwMjdlIDEwMDY0NAorLS0tIC4vdjgvc3JjL2Jhc2UvcGxhdGZvcm0vY29uZGl0 aW9uLXZhcmlhYmxlLmNjCisrKysgLi92OC9zcmMvYmFzZS9wbGF0Zm9ybS9jb25kaXRpb24tdmFy aWFibGUuY2MKK0BAIC0xNiw3ICsxNiw3IEBAIG5hbWVzcGFjZSBiYXNlIHsKKyAKKyBDb25kaXRp b25WYXJpYWJsZTo6Q29uZGl0aW9uVmFyaWFibGUoKSB7CisgI2lmIChWOF9PU19GUkVFQlNEIHx8 IFY4X09TX05FVEJTRCB8fCBWOF9PU19PUEVOQlNEIHx8IFwKKy0gICAgIChWOF9PU19MSU5VWCAm JiBWOF9MSUJDX0dMSUJDKSkKKysgICAgIFY4X09TX0xJTlVYKQorICAgLy8gT24gRnJlZS9OZXQv T3BlbkJTRCBhbmQgTGludXggd2l0aCBnbGliYyB3ZSBjYW4gY2hhbmdlIHRoZSB0aW1lCisgICAv LyBzb3VyY2UgZm9yIHB0aHJlYWRfY29uZF90aW1lZHdhaXQoKSB0byB1c2UgdGhlIG1vbm90b25p YyBjbG9jay4KKyAgIHB0aHJlYWRfY29uZGF0dHJfdCBhdHRyOworQEAgLTkyLDcgKzkyLDcgQEAg Ym9vbCBDb25kaXRpb25WYXJpYWJsZTo6V2FpdEZvcihNdXRleCogbXV0ZXgsIGNvbnN0IFRpbWVE ZWx0YSYgcmVsX3RpbWUpIHsKKyAgICAgICAmbmF0aXZlX2hhbmRsZV8sICZtdXRleC0+bmF0aXZl X2hhbmRsZSgpLCAmdHMpOworICNlbHNlCisgI2lmIChWOF9PU19GUkVFQlNEIHx8IFY4X09TX05F VEJTRCB8fCBWOF9PU19PUEVOQlNEIHx8IFwKKy0gICAgIChWOF9PU19MSU5VWCAmJiBWOF9MSUJD X0dMSUJDKSkKKysgICAgIFY4X09TX0xJTlVYKQorICAgLy8gT24gRnJlZS9OZXQvT3BlbkJTRCBh bmQgTGludXggd2l0aCBnbGliYyB3ZSBjYW4gY2hhbmdlIHRoZSB0aW1lCisgICAvLyBzb3VyY2Ug Zm9yIHB0aHJlYWRfY29uZF90aW1lZHdhaXQoKSB0byB1c2UgdGhlIG1vbm90b25pYyBjbG9jay4K KyAgIHJlc3VsdCA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmdHMpOwpkaWZmIC0t Z2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZXhlY2lu Zm8ucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1l eGVjaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjM4 Njk5N2U4ZWQxNAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9w YXRjaGVzL2Nocm9taXVtLW5vLWV4ZWNpbmZvLnBhdGNoCkBAIC0wLDAgKzEsNzIgQEAKKy0tLSBi YXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjLm9yaWcJMjAxOS0wNS0xNCAxNDo0OTo0NC4w MDAwMDAwMDAgLTA0MDAKKysrKyBiYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjCTIwMTkt MDctMDIgMTA6NDM6NDMuNDkwMDQ1MDEzIC0wNDAwCitAQCAtMjcsNyArMjcsNyBAQAorICNpZiAh ZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorICNpbmNsdWRlIDxjeHhhYmkuaD4KKyAjZW5kaWYKKy0j aWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChf X0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+CisgI2Vu ZGlmCisgCitAQCAtODYsNyArODYsNyBAQAorICAgLy8gTm90ZTogY29kZSBpbiB0aGlzIGZ1bmN0 aW9uIGlzIE5PVCBhc3luYy1zaWduYWwgc2FmZSAoc3RkOjpzdHJpbmcgdXNlcworICAgLy8gbWFs bG9jIGludGVybmFsbHkpLgorIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5l ZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIHN0 ZDo6c3RyaW5nOjpzaXplX3R5cGUgc2VhcmNoX2Zyb20gPSAwOworICAgd2hpbGUgKHNlYXJjaF9m cm9tIDwgdGV4dC0+c2l6ZSgpKSB7CisgICAgIC8vIExvb2sgZm9yIHRoZSBzdGFydCBvZiBhIG1h bmdsZWQgc3ltYm9sLCBmcm9tIHNlYXJjaF9mcm9tLgorQEAgLTEyMSw3ICsxMjEsNyBAQAorICAg ICAgIHNlYXJjaF9mcm9tID0gbWFuZ2xlZF9zdGFydCArIDI7CisgICAgIH0KKyAgIH0KKy0jZW5k aWYgIC8vICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2VuZGlmICAv LyBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB9CisgI2VuZGlmICAvLyAh ZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorIAorQEAgLTEzMyw3ICsxMzMsNyBAQAorICAgdmlydHVh bCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVmYXVsdDsKKyB9OworIAorLSNpZiAhZGVm aW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNf XykgJiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIE91dHB1dFBvaW50ZXIodm9pZCogcG9pbnRlciwg QmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgeworICAgLy8gVGhpcyBzaG91bGQgYmUg bW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1iZXIgaW4gaGV4OgorICAgLy8g MTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4KK0BAIC0yMTYsNyArMjE2LDcg QEAKKyAgIH0KKyAjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1NZTUJPTElaRSkKKyB9CistI2VuZGlm ICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNlbmRpZiAgLy8g ZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgCisgdm9pZCBQcmludFRvU3Rk ZXJyKGNvbnN0IGNoYXIqIG91dHB1dCkgeworICAgLy8gTk9URTogVGhpcyBjb2RlIE1VU1QgYmUg YXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9jZXNzCitAQCAtODEyLDcgKzgx Miw3IEBACisgICAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAo aXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKKyAgIC8vIHN0YWNrIGR1bXBpbmcgc2lnbmFsIGhhbmRs ZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxsb3dlZCBoZXJlLgorIAorLSNpZiAhZGVmaW5l ZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKKyAgIC8vIFRob3VnaCB0aGUgYmFja3RyYWNlIEFQSSBtYW4gcGFn ZSBkb2VzIG5vdCBsaXN0IGFueSBwb3NzaWJsZSBuZWdhdGl2ZQorICAgLy8gcmV0dXJuIHZhbHVl cywgd2UgdGFrZSBubyBjaGFuY2UuCisgICByZXR1cm4gYmFzZTo6c2F0dXJhdGVkX2Nhc3Q8c2l6 ZV90PihiYWNrdHJhY2UodHJhY2UsIGNvdW50KSk7CitAQCAtODI1LDEzICs4MjUsMTMgQEAKKyAv LyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5 IGluLXByb2Nlc3MKKyAvLyBzdGFjayBkdW1waW5nIHNpZ25hbCBoYW5kbGVyKS4gTk8gbWFsbG9j IG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4KKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9B SVgpCisgICBQcmludEJhY2t0cmFjZU91dHB1dEhhbmRsZXIgaGFuZGxlcjsKKyAgIFByb2Nlc3NC YWNrdHJhY2UodHJhY2VfLCBjb3VudF8sIHByZWZpeF9zdHJpbmcsICZoYW5kbGVyKTsKKyAjZW5k aWYKKyB9CisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisr I2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorIHZvaWQgU3RhY2tUcmFj ZTo6T3V0cHV0VG9TdHJlYW1XaXRoUHJlZml4KHN0ZDo6b3N0cmVhbSogb3MsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciogcHJlZml4X3N0cmlu ZykgY29uc3QgeworICAgU3RyZWFtQmFja3RyYWNlT3V0cHV0SGFuZGxlciBoYW5kbGVyKG9zKTsK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW5v LWdldGNvbnRleHQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS1uby1nZXRjb250ZXh0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uYjJhNDk4NzM0YzkzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJv bjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZ2V0Y29udGV4dC5wYXRjaApAQCAtMCwwICsx LDI3IEBACistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjLm9yaWcJMjAxNS0xMi0wNiAwOTo1OTo1NS41 NTQ1MzY2NDYgKzAxMDAKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MJMjAxNS0xMi0wNiAxMDowMTox Ni44MTgyMzgwMzUgKzAxMDAKK0BAIC00NzcsNyArNDc3LDkgQEAgYm9vbCBFeGNlcHRpb25IYW5k bGVyOjpTaW11bGF0ZVNpZ25hbERlbAorICAgc2lnaW5mby5zaV9jb2RlID0gU0lfVVNFUjsKKyAg IHNpZ2luZm8uc2lfcGlkID0gZ2V0cGlkKCk7CisgICB1Y29udGV4dF90IGNvbnRleHQ7CisrI2lm IGRlZmluZWQoX19HTElCQ19fKQorICAgZ2V0Y29udGV4dCgmY29udGV4dCk7CisrI2VuZGlmCisg ICByZXR1cm4gSGFuZGxlU2lnbmFsKHNpZywgJnNpZ2luZm8sICZjb250ZXh0KTsKKyB9CisgCitA QCAtNjQ3LDkgKzY0OSwxNCBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAo KSB7CisgICBzeXNfcHJjdGwoUFJfU0VUX0RVTVBBQkxFLCAxLCAwLCAwLCAwKTsKKyAKKyAgIENy YXNoQ29udGV4dCBjb250ZXh0OworKworKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIGludCBn ZXRjb250ZXh0X3Jlc3VsdCA9IGdldGNvbnRleHQoJmNvbnRleHQuY29udGV4dCk7CisgICBpZiAo Z2V0Y29udGV4dF9yZXN1bHQpCisgICAgIHJldHVybiBmYWxzZTsKKysjZWxzZQorKyAgcmV0dXJu IGZhbHNlOworKyNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgLy8gSW4gQ1BV RmlsbEZyb21VQ29udGV4dCBpbiBtaW5pZHVtcHdyaXRlci5jYyB0aGUgc3RhY2sgcG9pbnRlciBp cyByZXRyaWV2ZWQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVz L2Nocm9taXVtLXNhbmRib3gtbWVtYmFycmllci5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRib3gtbWVtYmFycmllci5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjg2Y2ExNmZjMmQ3MAotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRib3gt bWVtYmFycmllci5wYXRjaApAQCAtMCwwICsxLDEwIEBACistLS0gc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKK0BAIC0zNzAsNiArMzcwLDcgQEAKKyAgIHN3 aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2V4aXQ6CisgICAgIGNhc2UgX19OUl9leGl0 X2dyb3VwOgorKyAgICBjYXNlIF9fTlJfbWVtYmFycmllcjoKKyAgICAgY2FzZSBfX05SX3dhaXQ0 OgorICAgICBjYXNlIF9fTlJfd2FpdGlkOgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1z Y2hlZF9nZXRwYXJhbS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2No cm9taXVtLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi5iYThhZjQ5YzVmOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94LXNjaGVkX2dldHBh cmFtLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK0FsbG93IFNZU19zY2hlZF9nZXRwYXJhbSBhbmQg U1lTX3NjaGVkX2dldHNjaGVkdWxlcgorbXVzbCB1c2VzIHRoZW0gZm9yIHB0aHJlYWRfZ2V0c2No ZWRwYXJhbSgpCisKK3NvdXJjZTogaHR0cHM6Ly9naXQuYWxwaW5lbGludXgub3JnL2Fwb3J0cy9j b21taXQvY29tbXVuaXR5L2Nocm9taXVtP2lkPTU0YWY5ZjhhYzI0ZjUyZDM4MmM1NzU4ZTI0NDVi ZjAyMDZlZmY0MGUKKworLS0tIHNhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xp Y3lfbGludXguY2Mub3JpZwkyMDE5LTEwLTA4IDIxOjAzOjE4LjI1MzA4MDQyNSArMDIwMAorKysr IHNhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MJMjAxOS0x MC0wOCAyMTowNDoxOS42NDg1NDk3MTggKzAyMDAKK0BAIC04OCwxMCArODgsMTAgQEAKKyAgICAg Y2FzZSBfX05SX3N5c2luZm86CisgICAgIGNhc2UgX19OUl90aW1lczoKKyAgICAgY2FzZSBfX05S X3VuYW1lOgorLSAgICAgIHJldHVybiBBbGxvdygpOworLSAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0 YWZmaW5pdHk6CisgICAgIGNhc2UgX19OUl9zY2hlZF9nZXRwYXJhbToKKyAgICAgY2FzZSBfX05S X3NjaGVkX2dldHNjaGVkdWxlcjoKKysgICAgICByZXR1cm4gQWxsb3coKTsKKysgICAgY2FzZSBf X05SX3NjaGVkX2dldGFmZmluaXR5OgorICAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVy OgorICAgICAgIHJldHVybiBzYW5kYm94OjpSZXN0cmljdFNjaGVkVGFyZ2V0KEdldFBvbGljeVBp ZCgpLCBzeXNubyk7CisgICAgIGNhc2UgX19OUl9wcmxpbWl0NjQ6CmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaCBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDMxM2I0YTY2N2M3Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc25kaW8u cGF0Y2gKQEAgLTAsMCArMSw4ODYgQEAKK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3 Lm9yaWcvbWVkaWEvQlVJTEQuZ24gY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL0JVSUxELmdu CistLS0gbWVkaWEvQlVJTEQuZ24ub3JpZwkyMDIwLTA2LTAzIDIwOjQwOjI2LjAwMDAwMDAwMCAr MDIwMAorKysrIG1lZGlhL0JVSUxELmduCTIwMjAtMDYtMTMgMTc6MzI6MjguNTEwMzk1OTc1ICsw MjAwCitAQCAtNjUsNiArNjUsOSBAQAorICAgICAgIGRlZmluZXMgKz0gWyAiRExPUEVOX1BVTFNF QVVESU8iIF0KKyAgICAgfQorICAgfQorKyAgaWYgKHVzZV9zbmRpbykgeworKyAgICBkZWZpbmVz ICs9IFsgIlVTRV9TTkRJTyIgXQorKyAgfQorICAgaWYgKHVzZV9jcmFzKSB7CisgICAgIGRlZmlu ZXMgKz0gWyAiVVNFX0NSQVMiIF0KKyAgIH0KK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAz Ljk3Lm9yaWcvbWVkaWEvYXVkaW8vQlVJTEQuZ24gY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlh L2F1ZGlvL0JVSUxELmduCistLS0gbWVkaWEvYXVkaW8vQlVJTEQuZ24ub3JpZwkyMDIwLTA2LTAz IDIwOjM5OjM3LjAwMDAwMDAwMCArMDIwMAorKysrIG1lZGlhL2F1ZGlvL0JVSUxELmduCTIwMjAt MDYtMTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMjM2LDYgKzIzNiwxNyBAQAorICAg ICBzb3VyY2VzICs9IFsgImxpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MiIF0KKyAgIH0KKyAK KysgIGlmICh1c2Vfc25kaW8pIHsKKysgICAgbGlicyArPSBbICJzbmRpbyIgXQorKyAgICBzb3Vy Y2VzICs9IFsKKysgICAgICAic25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5jYyIsCisrICAgICAg InNuZGlvL3NuZGlvX2lucHV0LmNjIiwKKysgICAgICAic25kaW8vc25kaW9faW5wdXQuaCIsCisr ICAgICAgInNuZGlvL3NuZGlvX291dHB1dC5jYyIsCisrICAgICAgInNuZGlvL3NuZGlvX291dHB1 dC5oIgorKyAgICBdCisrICB9CisrCisgICBpZiAodXNlX2Fsc2EpIHsKKyAgICAgbGlicyArPSBb ICJhc291bmQiIF0KKyAgICAgc291cmNlcyArPSBbCitkaWZmIC1OYXVyIGNocm9taXVtLTgzLjAu NDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MgY2hy b21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXgu Y2MKKy0tLSBtZWRpYS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjLm9yaWcJMjAy MC0wNi0wMyAyMDozOTozNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBtZWRpYS9hdWRpby9saW51eC9h dWRpb19tYW5hZ2VyX2xpbnV4LmNjCTIwMjAtMDYtMTMgMTg6MDk6NDMuNjIzMzMzMTY3ICswMjAw CitAQCAtMTksNiArMTksMTEgQEAKKyAjaW5jbHVkZSAibWVkaWEvYXVkaW8vcHVsc2UvYXVkaW9f bWFuYWdlcl9wdWxzZS5oIgorICNpbmNsdWRlICJtZWRpYS9hdWRpby9wdWxzZS9wdWxzZV91dGls LmgiCisgI2VuZGlmCisrI2lmIGRlZmluZWQoVVNFX1NORElPKQorKyNpbmNsdWRlICJtZWRpYS9h dWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlv L3NuZGlvL3NuZGlvX2lucHV0LmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlv X291dHB1dC5oIgorKyNlbmRpZgorIAorIG5hbWVzcGFjZSBtZWRpYSB7CisgCitAQCAtMjYsNyAr MzEsOCBAQAorICAga1B1bHNlLAorICAga0Fsc2EsCisgICBrQ3JhcywKKy0gIGtBdWRpb0lPTWF4 ID0ga0NyYXMgIC8vIE11c3QgYWx3YXlzIGJlIGVxdWFsIHRvIGxhcmdlc3QgbG9nZ2VkIGVudHJ5 LgorKyAga1NuZGlvLAorKyAga0F1ZGlvSU9NYXggPSBrU25kaW8gLy8gTXVzdCBhbHdheXMgYmUg ZXF1YWwgdG8gbGFyZ2VzdCBsb2dnZWQgZW50cnkuCisgfTsKKyAKKyBzdGQ6OnVuaXF1ZV9wdHI8 bWVkaWE6OkF1ZGlvTWFuYWdlcj4gQ3JlYXRlQXVkaW9NYW5hZ2VyKAorQEAgLTM5LDYgKzQ1LDE2 IEBACisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlv X2xvZ19mYWN0b3J5KTsKKyAgIH0KKyAKKysjaWYgZGVmaW5lZChVU0VfU05ESU8pCisrICBzdHJ1 Y3Qgc2lvX2hkbCAqaGRsID0gc2lvX29wZW4oU0lPX0RFVkFOWSwgU0lPX1BMQVksIDApOworKyAg aWYgKGhkbCAhPSBOVUxMKSB7CisrICAgIHNpb19jbG9zZShoZGwpOworKyAgICBVTUFfSElTVE9H UkFNX0VOVU1FUkFUSU9OKCJNZWRpYS5MaW51eEF1ZGlvSU8iLCBrU25kaW8sIGtBdWRpb0lPTWF4 ICsgMSk7CisrICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTWFuYWdlclNuZGlvPihz dGQ6Om1vdmUoYXVkaW9fdGhyZWFkKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF1ZGlvX2xvZ19mYWN0b3J5KTsKKysgIH0KKysjZW5kaWYKKysK KyAjaWYgZGVmaW5lZChVU0VfQ1JBUykKKyAgIGlmIChiYXNlOjpDb21tYW5kTGluZTo6Rm9yQ3Vy cmVudFByb2Nlc3MoKS0+SGFzU3dpdGNoKHN3aXRjaGVzOjprVXNlQ3JhcykpIHsKKyAgICAgVU1B X0hJU1RPR1JBTV9FTlVNRVJBVElPTigiTWVkaWEuTGludXhBdWRpb0lPIiwga0NyYXMsIGtBdWRp b0lPTWF4ICsgMSk7CitkaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlh L2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uY2MgY2hyb21pdW0tODMuMC40MTAzLjk3 L21lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uY2MKKy0tLSBtZWRpYS9hdWRp by9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKKysrKyBtZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlv LmNjCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDE0OCBA QAorKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KKysKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRp by5oIgorKworKyNpbmNsdWRlICJiYXNlL21ldHJpY3MvaGlzdG9ncmFtX21hY3Jvcy5oIgorKyNp bmNsdWRlICJiYXNlL21lbW9yeS9wdHJfdXRpbC5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9h dWRpb19kZXZpY2VfZGVzY3JpcHRpb24uaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9f b3V0cHV0X2Rpc3BhdGNoZXIuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9f aW5wdXQuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgiCisr I2luY2x1ZGUgIm1lZGlhL2Jhc2UvbGltaXRzLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVk aWFfc3dpdGNoZXMuaCIKKysKKytuYW1lc3BhY2UgbWVkaWEgeworKworKworKy8vIE1heGltdW0g bnVtYmVyIG9mIG91dHB1dCBzdHJlYW1zIHRoYXQgY2FuIGJlIG9wZW4gc2ltdWx0YW5lb3VzbHku Cisrc3RhdGljIGNvbnN0IGludCBrTWF4T3V0cHV0U3RyZWFtcyA9IDQ7CisrCisrLy8gRGVmYXVs dCBzYW1wbGUgcmF0ZSBmb3IgaW5wdXQgYW5kIG91dHB1dCBzdHJlYW1zLgorK3N0YXRpYyBjb25z dCBpbnQga0RlZmF1bHRTYW1wbGVSYXRlID0gNDgwMDA7CisrCisrdm9pZCBBZGREZWZhdWx0RGV2 aWNlKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgeworKyAgRENIRUNLKGRldmljZV9u YW1lcy0+ZW1wdHkoKSk7CisrICBkZXZpY2VfbmFtZXMtPnB1c2hfZnJvbnQoQXVkaW9EZXZpY2VO YW1lOjpDcmVhdGVEZWZhdWx0KCkpOworK30KKysKKytib29sIEF1ZGlvTWFuYWdlclNuZGlvOjpI YXNBdWRpb091dHB1dERldmljZXMoKSB7CisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrYm9vbCBB dWRpb01hbmFnZXJTbmRpbzo6SGFzQXVkaW9JbnB1dERldmljZXMoKSB7CisrICByZXR1cm4gdHJ1 ZTsKKyt9CisrCisrdm9pZCBBdWRpb01hbmFnZXJTbmRpbzo6R2V0QXVkaW9JbnB1dERldmljZU5h bWVzKAorKyAgICBBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKysgIERDSEVDSyhk ZXZpY2VfbmFtZXMtPmVtcHR5KCkpOworKyAgQWRkRGVmYXVsdERldmljZShkZXZpY2VfbmFtZXMp OworK30KKysKKyt2b2lkIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRBdWRpb091dHB1dERldmljZU5h bWVzKAorKyAgICBBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKysgIEFkZERlZmF1 bHREZXZpY2UoZGV2aWNlX25hbWVzKTsKKyt9CisrCisrY29uc3QgY2hhciogQXVkaW9NYW5hZ2Vy U25kaW86OkdldE5hbWUoKSB7CisrICByZXR1cm4gIlNORElPIjsKKyt9CisrCisrQXVkaW9QYXJh bWV0ZXJzIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRJbnB1dFN0cmVhbVBhcmFtZXRlcnMoCisrICAg IGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQpIHsKKysgIHN0YXRpYyBjb25zdCBpbnQga0Rl ZmF1bHRJbnB1dEJ1ZmZlclNpemUgPSAxMDI0OworKworKyAgaW50IHVzZXJfYnVmZmVyX3NpemUg PSBHZXRVc2VyQnVmZmVyU2l6ZSgpOworKyAgaW50IGJ1ZmZlcl9zaXplID0gdXNlcl9idWZmZXJf c2l6ZSA/CisrICAgICAgdXNlcl9idWZmZXJfc2l6ZSA6IGtEZWZhdWx0SW5wdXRCdWZmZXJTaXpl OworKworKyAgcmV0dXJuIEF1ZGlvUGFyYW1ldGVycygKKysgICAgICBBdWRpb1BhcmFtZXRlcnM6 OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgQ0hBTk5FTF9MQVlPVVRfU1RFUkVPLAorKyAgICAgIGtE ZWZhdWx0U2FtcGxlUmF0ZSwgYnVmZmVyX3NpemUpOworK30KKysKKytBdWRpb01hbmFnZXJTbmRp bzo6QXVkaW9NYW5hZ2VyU25kaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvVGhyZWFkPiBhdWRpb190 aHJlYWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0xv Z0ZhY3RvcnkqIGF1ZGlvX2xvZ19mYWN0b3J5KQorKyAgICA6IEF1ZGlvTWFuYWdlckJhc2Uoc3Rk Ojptb3ZlKGF1ZGlvX3RocmVhZCksCisrICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19sb2df ZmFjdG9yeSkgeworKyAgRExPRyhXQVJOSU5HKSA8PCAiQXVkaW9NYW5hZ2VyU25kaW8iOworKyAg U2V0TWF4T3V0cHV0U3RyZWFtc0FsbG93ZWQoa01heE91dHB1dFN0cmVhbXMpOworK30KKysKKytB dWRpb01hbmFnZXJTbmRpbzo6fkF1ZGlvTWFuYWdlclNuZGlvKCkgeworKyAgU2h1dGRvd24oKTsK Kyt9CisrCisrQXVkaW9PdXRwdXRTdHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTGluZWFy T3V0cHV0U3RyZWFtKAorKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAg Y29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgeworKyAgRENIRUNLX0VRKEF1ZGlvUGFy YW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiwgcGFyYW1zLmZvcm1hdCgpKTsKKysgIHJldHVybiBN YWtlT3V0cHV0U3RyZWFtKHBhcmFtcyk7CisrfQorKworK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRp b01hbmFnZXJTbmRpbzo6TWFrZUxvd0xhdGVuY3lPdXRwdXRTdHJlYW0oCisrICAgIGNvbnN0IEF1 ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lk LAorKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisrICBETE9HX0lGKEVS Uk9SLCAhZGV2aWNlX2lkLmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKysgIERDSEVD S19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgcGFyYW1zLmZvcm1h dCgpKTsKKysgIHJldHVybiBNYWtlT3V0cHV0U3RyZWFtKHBhcmFtcyk7CisrfQorKworK0F1ZGlv SW5wdXRTdHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTGluZWFySW5wdXRTdHJlYW0oCisr ICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICBjb25zdCBzdGQ6OnN0cmlu ZyYgZGV2aWNlX2lkLAorKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7Cisr ICBEQ0hFQ0tfRVEoQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9y bWF0KCkpOworKyAgcmV0dXJuIE1ha2VJbnB1dFN0cmVhbShwYXJhbXMpOworK30KKysKKytBdWRp b0lucHV0U3RyZWFtKiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZUxvd0xhdGVuY3lJbnB1dFN0cmVh bSgKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgIGNvbnN0IHN0ZDo6 c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2sp IHsKKysgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwg cGFyYW1zLmZvcm1hdCgpKTsKKysgIHJldHVybiBNYWtlSW5wdXRTdHJlYW0ocGFyYW1zKTsKKyt9 CisrCisrQXVkaW9QYXJhbWV0ZXJzIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRQcmVmZXJyZWRPdXRw dXRTdHJlYW1QYXJhbWV0ZXJzKAorKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2Rldmlj ZV9pZCwKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJhbXMpIHsKKysgIC8v IFRPRE8odG9tbWkpOiBTdXBwb3J0IHxvdXRwdXRfZGV2aWNlX2lkfC4KKysgIERMT0dfSUYoRVJS T1IsICFvdXRwdXRfZGV2aWNlX2lkLmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKysg IHN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRPdXRwdXRCdWZmZXJTaXplID0gMjA0ODsKKysKKysg IENoYW5uZWxMYXlvdXQgY2hhbm5lbF9sYXlvdXQgPSBDSEFOTkVMX0xBWU9VVF9TVEVSRU87Cisr ICBpbnQgc2FtcGxlX3JhdGUgPSBrRGVmYXVsdFNhbXBsZVJhdGU7CisrICBpbnQgYnVmZmVyX3Np emUgPSBrRGVmYXVsdE91dHB1dEJ1ZmZlclNpemU7CisrICBpZiAoaW5wdXRfcGFyYW1zLklzVmFs aWQoKSkgeworKyAgICBzYW1wbGVfcmF0ZSA9IGlucHV0X3BhcmFtcy5zYW1wbGVfcmF0ZSgpOwor KyAgICBjaGFubmVsX2xheW91dCA9IGlucHV0X3BhcmFtcy5jaGFubmVsX2xheW91dCgpOworKyAg ICBidWZmZXJfc2l6ZSA9IHN0ZDo6bWluKGJ1ZmZlcl9zaXplLCBpbnB1dF9wYXJhbXMuZnJhbWVz X3Blcl9idWZmZXIoKSk7CisrICB9CisrCisrICBpbnQgdXNlcl9idWZmZXJfc2l6ZSA9IEdldFVz ZXJCdWZmZXJTaXplKCk7CisrICBpZiAodXNlcl9idWZmZXJfc2l6ZSkKKysgICAgYnVmZmVyX3Np emUgPSB1c2VyX2J1ZmZlcl9zaXplOworKworKyAgcmV0dXJuIEF1ZGlvUGFyYW1ldGVycygKKysg ICAgICBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgY2hhbm5lbF9sYXlv dXQsCisrICAgICAgc2FtcGxlX3JhdGUsIGJ1ZmZlcl9zaXplKTsKKyt9CisrCisrQXVkaW9JbnB1 dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VJbnB1dFN0cmVhbSgKKysgICAgY29uc3Qg QXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKysgIERMT0coV0FSTklORykgPDwgIk1ha2VJbnB1 dFN0cmVhbSI7CisrICByZXR1cm4gbmV3IFNuZGlvQXVkaW9JbnB1dFN0cmVhbSh0aGlzLAorKyAg ICAgICAgICAgICBBdWRpb0RldmljZURlc2NyaXB0aW9uOjprRGVmYXVsdERldmljZUlkLCBwYXJh bXMpOworK30KKysKKytBdWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VP dXRwdXRTdHJlYW0oCisrICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKSB7CisrICBE TE9HKFdBUk5JTkcpIDw8ICJNYWtlT3V0cHV0U3RyZWFtIjsKKysgIHJldHVybiBuZXcgU25kaW9B dWRpb091dHB1dFN0cmVhbShwYXJhbXMsIHRoaXMpOworK30KKysKKyt9ICAvLyBuYW1lc3BhY2Ug bWVkaWEKK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvYXVkaW8v c25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5oIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9h dWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgKKy0tLSBtZWRpYS9hdWRpby9zbmRpby9h dWRpb19tYW5hZ2VyX3NuZGlvLmgub3JpZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCAr MDEwMAorKysrIG1lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaAkyMDIwLTA2 LTEzIDE3OjMyOjI4LjUxMTM5NTk2OSArMDIwMAorQEAgLTAsMCArMSw2NSBAQAorKy8vIENvcHly aWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs aWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysj aWZuZGVmIE1FRElBX0FVRElPX1NORElPX0FVRElPX01BTkFHRVJfU05ESU9fSF8KKysjZGVmaW5l IE1FRElBX0FVRElPX1NORElPX0FVRElPX01BTkFHRVJfU05ESU9fSF8KKysKKysjaW5jbHVkZSA8 c2V0PgorKworKyNpbmNsdWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisrI2luY2x1ZGUg ImJhc2UvbWFjcm9zLmgiCisrI2luY2x1ZGUgImJhc2UvbWVtb3J5L3JlZl9jb3VudGVkLmgiCisr I2luY2x1ZGUgImJhc2UvdGhyZWFkaW5nL3RocmVhZC5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRp by9hdWRpb19tYW5hZ2VyX2Jhc2UuaCIKKysKKytuYW1lc3BhY2UgbWVkaWEgeworKworK2NsYXNz IE1FRElBX0VYUE9SVCBBdWRpb01hbmFnZXJTbmRpbyA6IHB1YmxpYyBBdWRpb01hbmFnZXJCYXNl IHsKKysgcHVibGljOgorKyAgQXVkaW9NYW5hZ2VyU25kaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlv VGhyZWFkPiBhdWRpb190aHJlYWQsCisrICAgICAgICAgICAgICAgICAgIEF1ZGlvTG9nRmFjdG9y eSogYXVkaW9fbG9nX2ZhY3RvcnkpOworKyAgfkF1ZGlvTWFuYWdlclNuZGlvKCkgb3ZlcnJpZGU7 CisrCisrICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb01hbmFnZXIuCisrICBib29sIEhhc0F1 ZGlvT3V0cHV0RGV2aWNlcygpIG92ZXJyaWRlOworKyAgYm9vbCBIYXNBdWRpb0lucHV0RGV2aWNl cygpIG92ZXJyaWRlOworKyAgdm9pZCBHZXRBdWRpb0lucHV0RGV2aWNlTmFtZXMoQXVkaW9EZXZp Y2VOYW1lcyogZGV2aWNlX25hbWVzKSBvdmVycmlkZTsKKysgIHZvaWQgR2V0QXVkaW9PdXRwdXRE ZXZpY2VOYW1lcyhBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIG92ZXJyaWRlOworKyAg QXVkaW9QYXJhbWV0ZXJzIEdldElucHV0U3RyZWFtUGFyYW1ldGVycygKKysgICAgICBjb25zdCBz dGQ6OnN0cmluZyYgZGV2aWNlX2lkKSBvdmVycmlkZTsKKysgIGNvbnN0IGNoYXIqIEdldE5hbWUo KSBvdmVycmlkZTsKKysKKysgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvTWFuYWdlckJhc2Uu CisrICBBdWRpb091dHB1dFN0cmVhbSogTWFrZUxpbmVhck91dHB1dFN0cmVhbSgKKysgICAgICBj b25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAgICBjb25zdCBMb2dDYWxsYmFjayYg bG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKysgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTG93TGF0 ZW5jeU91dHB1dFN0cmVhbSgKKysgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywK KysgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorKyAgICAgIGNvbnN0IExvZ0Nh bGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOworKyAgQXVkaW9JbnB1dFN0cmVhbSogTWFr ZUxpbmVhcklucHV0U3RyZWFtKAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1z LAorKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgICAgY29uc3QgTG9n Q2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisrICBBdWRpb0lucHV0U3RyZWFtKiBN YWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYg cGFyYW1zLAorKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgICAgY29u c3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisrCisrIHByb3RlY3RlZDoK KysgIEF1ZGlvUGFyYW1ldGVycyBHZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0ZXJzKAor KyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkLAorKyAgICAgIGNvbnN0 IEF1ZGlvUGFyYW1ldGVycyYgaW5wdXRfcGFyYW1zKSBvdmVycmlkZTsKKysKKysgcHJpdmF0ZToK KysgIC8vIENhbGxlZCBieSBNYWtlTGluZWFyT3V0cHV0U3RyZWFtIGFuZCBNYWtlTG93TGF0ZW5j eU91dHB1dFN0cmVhbS4KKysgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlT3V0cHV0U3RyZWFtKGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKKysgIEF1ZGlvSW5wdXRTdHJlYW0qIE1ha2VJ bnB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcyk7CisrCisrICBESVNBTExP V19DT1BZX0FORF9BU1NJR04oQXVkaW9NYW5hZ2VyU25kaW8pOworK307CisrCisrfSAgLy8gbmFt ZXNwYWNlIG1lZGlhCisrCisrI2VuZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19BVURJT19NQU5B R0VSX1NORElPX0hfCitkaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlh L2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmNjIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9h dWRpby9zbmRpby9zbmRpb19pbnB1dC5jYworLS0tIG1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lu cHV0LmNjLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBtZWRp YS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5jYwkyMDIwLTA2LTEzIDE3OjMyOjI4LjUxMTM5NTk2 OSArMDIwMAorQEAgLTAsMCArMSwyMDAgQEAKKysvLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21p dW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2Ug Y29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8g Zm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaW5jbHVkZSAiYmFzZS9iaW5kLmgiCisr I2luY2x1ZGUgImJhc2UvbG9nZ2luZy5oIgorKyNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgorKyNp bmNsdWRlICJtZWRpYS9iYXNlL2F1ZGlvX3RpbWVzdGFtcF9oZWxwZXIuaCIKKysjaW5jbHVkZSAi bWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5oIgorKyNpbmNsdWRlICJtZWRp YS9hdWRpby9hdWRpb19tYW5hZ2VyLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3Nu ZGlvX2lucHV0LmgiCisrCisrbmFtZXNwYWNlIG1lZGlhIHsKKysKKytzdGF0aWMgY29uc3QgU2Ft cGxlRm9ybWF0IGtTYW1wbGVGb3JtYXQgPSBrU2FtcGxlRm9ybWF0UzE2OworKworK3ZvaWQgU25k aW9BdWRpb0lucHV0U3RyZWFtOjpPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSkK Kyt7CisrICBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1 ZGlvSW5wdXRTdHJlYW0qPihhcmcpOworKworKyAgc2VsZi0+aHdfZGVsYXkgKz0gZGVsdGE7Cisr fQorKworK3ZvaWQgKlNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkRW50cnkodm9pZCAqYXJn KSB7CisrICBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1 ZGlvSW5wdXRTdHJlYW0qPihhcmcpOworKworKyAgc2VsZi0+VGhyZWFkTG9vcCgpOworKyAgcmV0 dXJuIE5VTEw7CisrfQorKworK1NuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U25kaW9BdWRpb0lucHV0 U3RyZWFtKEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9uYW1lLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlv UGFyYW1ldGVycyYgcGFyYW1zKQorKyAgICA6IG1hbmFnZXIobWFuYWdlciksCisrICAgICAgcGFy YW1zKHBhcmFtcyksCisrICAgICAgYXVkaW9fYnVzKEF1ZGlvQnVzOjpDcmVhdGUocGFyYW1zKSks CisrICAgICAgc3RhdGUoa0Nsb3NlZCkgeworK30KKysKKytTbmRpb0F1ZGlvSW5wdXRTdHJlYW06 On5TbmRpb0F1ZGlvSW5wdXRTdHJlYW0oKSB7CisrICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKysg ICAgQ2xvc2UoKTsKKyt9CisrCisrYm9vbCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06Ok9wZW4oKSB7 CisrICBzdHJ1Y3Qgc2lvX3BhciBwYXI7CisrICBpbnQgc2lnOworKworKyAgaWYgKHN0YXRlICE9 IGtDbG9zZWQpCisrICAgIHJldHVybiBmYWxzZTsKKysKKysgIGlmIChwYXJhbXMuZm9ybWF0KCkg IT0gQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTElORUFSICYmCisrICAgICAgcGFyYW1zLmZv cm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZKSB7CisrICAg IExPRyhXQVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gZm9ybWF0LiI7CisrICAgIHJldHVy biBmYWxzZTsKKysgIH0KKysKKysgIHNpb19pbml0cGFyKCZwYXIpOworKyAgcGFyLnJhdGUgPSBw YXJhbXMuc2FtcGxlX3JhdGUoKTsKKysgIHBhci5yY2hhbiA9IHBhcmFtcy5jaGFubmVscygpOwor KyAgcGFyLmJpdHMgPSBTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQp OworKyAgcGFyLmJwcyA9IHBhci5iaXRzIC8gODsKKysgIHBhci5zaWcgPSBzaWcgPSBwYXIuYml0 cyAhPSA4ID8gMSA6IDA7CisrICBwYXIubGUgPSBTSU9fTEVfTkFUSVZFOworKyAgcGFyLmFwcGJ1 ZnN6ID0gcGFyYW1zLmZyYW1lc19wZXJfYnVmZmVyKCk7CisrCisrICBoZGwgPSBzaW9fb3BlbihT SU9fREVWQU5ZLCBTSU9fUkVDLCAwKTsKKysKKysgIGlmIChoZGwgPT0gTlVMTCkgeworKyAgICBM T0coRVJST1IpIDw8ICJDb3VsZG4ndCBvcGVuIGF1ZGlvIGRldmljZS4iOworKyAgICByZXR1cm4g ZmFsc2U7CisrICB9CisrCisrICBpZiAoIXNpb19zZXRwYXIoaGRsLCAmcGFyKSB8fCAhc2lvX2dl dHBhcihoZGwsICZwYXIpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBhdWRp byBwYXJhbWV0ZXJzLiI7CisrICAgIGdvdG8gYmFkX2Nsb3NlOworKyAgfQorKworKyAgaWYgKHBh ci5yYXRlICAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5zYW1wbGVfcmF0ZSgpIHx8CisrICAgICAg cGFyLnJjaGFuICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLmNoYW5uZWxzKCkgfHwKKysgICAgICBw YXIuYml0cyAgIT0gKHVuc2lnbmVkIGludClTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtT YW1wbGVGb3JtYXQpIHx8CisrICAgICAgcGFyLnNpZyAgICE9ICh1bnNpZ25lZCBpbnQpc2lnIHx8 CisrICAgICAgKHBhci5icHMgPiAxICYmIHBhci5sZSAhPSBTSU9fTEVfTkFUSVZFKSB8fAorKyAg ICAgIChwYXIuYml0cyAhPSBwYXIuYnBzICogOCkpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiVW5z dXBwb3J0ZWQgYXVkaW8gcGFyYW1ldGVycy4iOworKyAgICBnb3RvIGJhZF9jbG9zZTsKKysgIH0K KysgIHN0YXRlID0ga1N0b3BwZWQ7CisrICBidWZmZXIgPSBuZXcgY2hhclthdWRpb19idXMtPmZy YW1lcygpICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCldOworKyAgc2lv X29ubW92ZShoZGwsICZPbk1vdmVDYWxsYmFjaywgdGhpcyk7CisrICByZXR1cm4gdHJ1ZTsKKyti YWRfY2xvc2U6CisrICBzaW9fY2xvc2UoaGRsKTsKKysgIHJldHVybiBmYWxzZTsKKyt9CisrCisr dm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlN0YXJ0KEF1ZGlvSW5wdXRDYWxsYmFjayogY2Ip IHsKKysKKysgIFN0YXJ0QWdjKCk7CisrCisrICBzdGF0ZSA9IGtSdW5uaW5nOworKyAgaHdfZGVs YXkgPSAwOworKyAgY2FsbGJhY2sgPSBjYjsKKysgIHNpb19zdGFydChoZGwpOworKyAgaWYgKHB0 aHJlYWRfY3JlYXRlKCZ0aHJlYWQsIE5VTEwsICZUaHJlYWRFbnRyeSwgdGhpcykgIT0gMCkgewor KyAgICBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHJlYWwtdGltZSB0aHJlYWQgZm9y IHJlY29yZGluZy4iOworKyAgICBzaW9fc3RvcChoZGwpOworKyAgICBzdGF0ZSA9IGtTdG9wcGVk OworKyAgfQorK30KKysKKyt2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U3RvcCgpIHsKKysK KysgIGlmIChzdGF0ZSA9PSBrU3RvcHBlZCkKKysgICAgcmV0dXJuOworKworKyAgc3RhdGUgPSBr U3RvcFdhaXQ7CisrICBwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTsKKysgIHNpb19zdG9wKGhk bCk7CisrICBzdGF0ZSA9IGtTdG9wcGVkOworKworKyAgU3RvcEFnYygpOworK30KKysKKyt2b2lk IFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6Q2xvc2UoKSB7CisrCisrICBpZiAoc3RhdGUgPT0ga0Ns b3NlZCkKKysgICAgcmV0dXJuOworKworKyAgaWYgKHN0YXRlID09IGtSdW5uaW5nKQorKyAgICBT dG9wKCk7CisrCisrICBzdGF0ZSA9IGtDbG9zZWQ7CisrICBkZWxldGUgW10gYnVmZmVyOworKyAg c2lvX2Nsb3NlKGhkbCk7CisrCisrICBtYW5hZ2VyLT5SZWxlYXNlSW5wdXRTdHJlYW0odGhpcyk7 CisrfQorKworK2RvdWJsZSBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkdldE1heFZvbHVtZSgpIHsK KysgIC8vIE5vdCBzdXBwb3J0ZWQKKysgIHJldHVybiAwLjA7CisrfQorKworK3ZvaWQgU25kaW9B dWRpb0lucHV0U3RyZWFtOjpTZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkgeworKyAgLy8gTm90IHN1 cHBvcnRlZC4gRG8gbm90aGluZy4KKyt9CisrCisrZG91YmxlIFNuZGlvQXVkaW9JbnB1dFN0cmVh bTo6R2V0Vm9sdW1lKCkgeworKyAgLy8gTm90IHN1cHBvcnRlZC4KKysgIHJldHVybiAwLjA7Cisr fQorKworK2Jvb2wgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpJc011dGVkKCkgeworKyAgLy8gTm90 IHN1cHBvcnRlZC4KKysgIHJldHVybiBmYWxzZTsKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvSW5w dXRTdHJlYW06OlNldE91dHB1dERldmljZUZvckFlYygKKysgICAgY29uc3Qgc3RkOjpzdHJpbmcm IG91dHB1dF9kZXZpY2VfaWQpIHsKKysgIC8vIE5vdCBzdXBwb3J0ZWQuCisrfQorKworK3ZvaWQg U25kaW9BdWRpb0lucHV0U3RyZWFtOjpUaHJlYWRMb29wKHZvaWQpIHsKKysgIHNpemVfdCB0b2Rv LCBuOworKyAgY2hhciAqZGF0YTsKKysgIHVuc2lnbmVkIGludCBuZnJhbWVzOworKyAgZG91Ymxl IG5vcm1hbGl6ZWRfdm9sdW1lID0gMC4wOworKworKyAgbmZyYW1lcyA9IGF1ZGlvX2J1cy0+ZnJh bWVzKCk7CisrCisrICB3aGlsZSAoc3RhdGUgPT0ga1J1bm5pbmcgJiYgIXNpb19lb2YoaGRsKSkg eworKworKyAgICBHZXRBZ2NWb2x1bWUoJm5vcm1hbGl6ZWRfdm9sdW1lKTsKKysKKysgICAgLy8g cmVhZCBvbmUgYmxvY2sKKysgICAgdG9kbyA9IG5mcmFtZXMgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJG cmFtZShrU2FtcGxlRm9ybWF0KTsKKysgICAgZGF0YSA9IGJ1ZmZlcjsKKysgICAgd2hpbGUgKHRv ZG8gPiAwKSB7CisrICAgICAgbiA9IHNpb19yZWFkKGhkbCwgZGF0YSwgdG9kbyk7CisrICAgICAg aWYgKG4gPT0gMCkKKysgICAgICAgIHJldHVybjsJLy8gdW5yZWNvdmVyYWJsZSBJL08gZXJyb3IK KysgICAgICB0b2RvIC09IG47CisrICAgICAgZGF0YSArPSBuOworKyAgICB9CisrICAgIGh3X2Rl bGF5IC09IG5mcmFtZXM7CisrCisrICAgIC8vIGNvbnZlcnQgZnJhbWVzIGNvdW50IHRvIFRpbWVE ZWx0YQorKyAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhl bHBlcjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAorKyAgICAgIHBhcmFtcy5zYW1wbGVfcmF0ZSgp KTsKKysKKysgICAgLy8gcHVzaCBpbnRvIGJ1cworKyAgICBhdWRpb19idXMtPkZyb21JbnRlcmxl YXZlZChidWZmZXIsIG5mcmFtZXMsIFNhbXBsZUZvcm1hdFRvQnl0ZXNQZXJDaGFubmVsKGtTYW1w bGVGb3JtYXQpKTsKKysKKysgICAgLy8gaW52b2tlIGNhbGxiYWNrCisrICAgIGNhbGxiYWNrLT5P bkRhdGEoYXVkaW9fYnVzLmdldCgpLCBiYXNlOjpUaW1lVGlja3M6Ok5vdygpIC0gZGVsYXksIDEu KTsKKysgIH0KKyt9CisrCisrfSAgLy8gbmFtZXNwYWNlIG1lZGlhCitkaWZmIC1OYXVyIGNocm9t aXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmggY2hy b21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmgKKy0tLSBt ZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5oLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4w MDAwMDAwMDAgKzAxMDAKKysrKyBtZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5oCTIwMjAt MDYtMTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDkxIEBACisrLy8gQ29w eXJpZ2h0IDIwMTMgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisr Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj ZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2lm bmRlZiBNRURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXworKyNkZWZpbmUgTUVESUFfQVVE SU9fU05ESU9fU05ESU9fSU5QVVRfSF8KKysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1 ZGUgPHN0cmluZz4KKysjaW5jbHVkZSA8c25kaW8uaD4KKysKKysjaW5jbHVkZSAiYmFzZS9jb21w aWxlcl9zcGVjaWZpYy5oIgorKyNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgorKyNpbmNsdWRlICJi YXNlL21lbW9yeS93ZWFrX3B0ci5oIgorKyNpbmNsdWRlICJiYXNlL3RpbWUvdGltZS5oIgorKyNp bmNsdWRlICJtZWRpYS9hdWRpby9hZ2NfYXVkaW9fc3RyZWFtLmgiCisrI2luY2x1ZGUgIm1lZGlh L2F1ZGlvL2F1ZGlvX2lvLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2RldmljZV9k ZXNjcmlwdGlvbi5oIgorKyNpbmNsdWRlICJtZWRpYS9iYXNlL2F1ZGlvX3BhcmFtZXRlcnMuaCIK KysKKytuYW1lc3BhY2UgbWVkaWEgeworKworK2NsYXNzIEF1ZGlvTWFuYWdlckJhc2U7CisrCisr Ly8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0gdXNpbmcgc25kaW8oNykKKytj bGFzcyBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0gOiBwdWJsaWMgQWdjQXVkaW9TdHJlYW08QXVkaW9J bnB1dFN0cmVhbT4geworKyBwdWJsaWM6CisrICAvLyBQYXNzIHRoaXMgdG8gdGhlIGNvbnN0cnVj dG9yIGlmIHlvdSB3YW50IHRvIGF0dGVtcHQgYXV0by1zZWxlY3Rpb24KKysgIC8vIG9mIHRoZSBh dWRpbyByZWNvcmRpbmcgZGV2aWNlLgorKyAgc3RhdGljIGNvbnN0IGNoYXIga0F1dG9TZWxlY3RE ZXZpY2VbXTsKKysKKysgIC8vIENyZWF0ZSBhIFBDTSBPdXRwdXQgc3RyZWFtIGZvciB0aGUgU05E SU8gZGV2aWNlIGlkZW50aWZpZWQgYnkKKysgIC8vIHxkZXZpY2VfbmFtZXwuIElmIHVuc3VyZSBv ZiB3aGF0IHRvIHVzZSBmb3IgfGRldmljZV9uYW1lfCwgdXNlCisrICAvLyB8a0F1dG9TZWxlY3RE ZXZpY2V8LgorKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKEF1ZGlvTWFuYWdlckJhc2UqIGF1ZGlv X21hbmFnZXIsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmlj ZV9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFy YW1zKTsKKysKKysgIH5TbmRpb0F1ZGlvSW5wdXRTdHJlYW0oKSBvdmVycmlkZTsKKysKKysgIC8v IEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvSW5wdXRTdHJlYW0uCisrICBib29sIE9wZW4oKSBvdmVy cmlkZTsKKysgIHZvaWQgU3RhcnQoQXVkaW9JbnB1dENhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJp ZGU7CisrICB2b2lkIFN0b3AoKSBvdmVycmlkZTsKKysgIHZvaWQgQ2xvc2UoKSBvdmVycmlkZTsK KysgIGRvdWJsZSBHZXRNYXhWb2x1bWUoKSBvdmVycmlkZTsKKysgIHZvaWQgU2V0Vm9sdW1lKGRv dWJsZSB2b2x1bWUpIG92ZXJyaWRlOworKyAgZG91YmxlIEdldFZvbHVtZSgpIG92ZXJyaWRlOwor KyAgYm9vbCBJc011dGVkKCkgb3ZlcnJpZGU7CisrICB2b2lkIFNldE91dHB1dERldmljZUZvckFl Yyhjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9pZCkgb3ZlcnJpZGU7CisrCisrIHBy aXZhdGU6CisrCisrICBlbnVtIFN0cmVhbVN0YXRlIHsKKysgICAga0Nsb3NlZCwgICAgICAgICAg ICAvLyBOb3Qgb3BlbmVkIHlldAorKyAgICBrU3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBv cGVuZWQsIGJ1dCBub3Qgc3RhcnRlZCB5ZXQKKysgICAga1J1bm5pbmcsICAgICAgICAgICAvLyBT dGFydGVkLCBkZXZpY2UgcGxheWluZworKyAgICBrU3RvcFdhaXQgICAgICAgICAgIC8vIFN0b3Bw aW5nLCB3YWl0aW5nIGZvciB0aGUgcmVhbC10aW1lIHRocmVhZCB0byBleGl0CisrICB9OworKwor KyAgLy8gQy1zdHlsZSBjYWxsLWJhY2tzCisrICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2 b2lkICphcmcsIGludCBkZWx0YSk7CisrICBzdGF0aWMgdm9pZCogVGhyZWFkRW50cnkodm9pZCAq YXJnKTsKKysKKysgIC8vIENvbnRpbnVvdXNseSBtb3ZlcyBkYXRhIGZyb20gdGhlIGRldmljZSB0 byB0aGUgY29uc3VtZXIKKysgIHZvaWQgVGhyZWFkTG9vcCgpOworKyAgLy8gT3VyIGNyZWF0b3Is IHRoZSBhdWRpbyBtYW5hZ2VyIG5lZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xvc2UuCisr ICBBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyOworKyAgLy8gUGFyYW1ldGVycyBvZiB0aGUgc291 cmNlCisrICBBdWRpb1BhcmFtZXRlcnMgcGFyYW1zOworKyAgLy8gV2Ugc3RvcmUgZGF0YSBoZXJl IGZvciBjb25zdW1lcgorKyAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVzPiBhdWRpb19idXM7Cisr ICAvLyBDYWxsLWJhY2sgdGhhdCBjb25zdW1lcyByZWNvcmRlZCBkYXRhCisrICBBdWRpb0lucHV0 Q2FsbGJhY2sqIGNhbGxiYWNrOyAgLy8gVmFsaWQgZHVyaW5nIGEgcmVjb3JkaW5nIHNlc3Npb24u CisrICAvLyBIYW5kbGUgb2YgdGhlIGF1ZGlvIGRldmljZQorKyAgc3RydWN0IHNpb19oZGwqIGhk bDsKKysgIC8vIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0cmVhbQorKyAgZW51bSBTdHJlYW1TdGF0 ZSBzdGF0ZTsKKysgIC8vIEhpZ2ggcHJpb3JpdHkgdGhyZWFkIHJ1bm5pbmcgVGhyZWFkTG9vcCgp CisrICBwdGhyZWFkX3QgdGhyZWFkOworKyAgLy8gTnVtYmVyIG9mIGZyYW1lcyBidWZmZXJlZCBp biB0aGUgaGFyZHdhcmUKKysgIGludCBod19kZWxheTsKKysgIC8vIFRlbXBvcmFyeSBidWZmZXIg d2hlcmUgZGF0YSBpcyBzdG9yZWQgc25kaW8tY29tcGF0aWJsZSBmb3JtYXQKKysgIGNoYXIqIGJ1 ZmZlcjsKKysKKysgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTbmRpb0F1ZGlvSW5wdXRTdHJl YW0pOworK307CisrCisrfSAgLy8gbmFtZXNwYWNlIG1lZGlhCisrCisrI2VuZGlmICAvLyBNRURJ QV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXworZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQx MDMuOTcub3JpZy9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuY2MgY2hyb21pdW0tODMu MC40MTAzLjk3L21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5jYworLS0tIG1lZGlhL2F1 ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5jYy5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAw MDAwICswMTAwCisrKysgbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmNjCTIwMjAtMDYt MTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDE4MyBAQAorKy8vIENvcHly aWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs aWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysj aW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCisrI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCisr I2luY2x1ZGUgImJhc2UvdGltZS9kZWZhdWx0X3RpY2tfY2xvY2suaCIKKysjaW5jbHVkZSAibWVk aWEvYXVkaW8vYXVkaW9fbWFuYWdlcl9iYXNlLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVk aW9fdGltZXN0YW1wX2hlbHBlci5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRp b19vdXRwdXQuaCIKKysKKytuYW1lc3BhY2UgbWVkaWEgeworKworK3N0YXRpYyBjb25zdCBTYW1w bGVGb3JtYXQga1NhbXBsZUZvcm1hdCA9IGtTYW1wbGVGb3JtYXRTMTY7CisrCisrdm9pZCBTbmRp b0F1ZGlvT3V0cHV0U3RyZWFtOjpPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSkg eworKyAgU25kaW9BdWRpb091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVk aW9PdXRwdXRTdHJlYW0qPihhcmcpOworKworKyAgc2VsZi0+aHdfZGVsYXkgLT0gZGVsdGE7Cisr fQorKworK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6T25Wb2xDYWxsYmFjayh2b2lkICph cmcsIHVuc2lnbmVkIGludCB2b2wpIHsKKysgIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qIHNlbGYg PSBzdGF0aWNfY2FzdDxTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYt PnZvbCA9IHZvbDsKKyt9CisrCisrdm9pZCAqU25kaW9BdWRpb091dHB1dFN0cmVhbTo6VGhyZWFk RW50cnkodm9pZCAqYXJnKSB7CisrICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKiBzZWxmID0gc3Rh dGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0cmVhbSo+KGFyZyk7CisrCisrICBzZWxmLT5UaHJl YWRMb29wKCk7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrU25kaW9BdWRpb091dHB1dFN0cmVh bTo6U25kaW9BdWRpb091dHB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFu YWdlckJhc2UqIG1hbmFnZXIpCisrICAgIDogbWFuYWdlcihtYW5hZ2VyKSwKKysgICAgICBwYXJh bXMocGFyYW1zKSwKKysgICAgICBhdWRpb19idXMoQXVkaW9CdXM6OkNyZWF0ZShwYXJhbXMpKSwK KysgICAgICBzdGF0ZShrQ2xvc2VkKSwKKysgICAgICBtdXRleChQVEhSRUFEX01VVEVYX0lOSVRJ QUxJWkVSKSB7CisrfQorKworK1NuZGlvQXVkaW9PdXRwdXRTdHJlYW06On5TbmRpb0F1ZGlvT3V0 cHV0U3RyZWFtKCkgeworKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCisrICAgIENsb3NlKCk7Cisr fQorKworK2Jvb2wgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6T3BlbigpIHsKKysgIHN0cnVjdCBz aW9fcGFyIHBhcjsKKysgIGludCBzaWc7CisrCisrICBpZiAocGFyYW1zLmZvcm1hdCgpICE9IEF1 ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgorKyAgICAgIHBhcmFtcy5mb3JtYXQo KSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSkgeworKyAgICBMT0co V0FSTklORykgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIGZvcm1hdC4iOworKyAgICByZXR1cm4gZmFs c2U7CisrICB9CisrICBzaW9faW5pdHBhcigmcGFyKTsKKysgIHBhci5yYXRlID0gcGFyYW1zLnNh bXBsZV9yYXRlKCk7CisrICBwYXIucGNoYW4gPSBwYXJhbXMuY2hhbm5lbHMoKTsKKysgIHBhci5i aXRzID0gU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KTsKKysgIHBh ci5icHMgPSBwYXIuYml0cyAvIDg7CisrICBwYXIuc2lnID0gc2lnID0gcGFyLmJpdHMgIT0gOCA/ IDEgOiAwOworKyAgcGFyLmxlID0gU0lPX0xFX05BVElWRTsKKysgIHBhci5hcHBidWZzeiA9IHBh cmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOworKworKyAgaGRsID0gc2lvX29wZW4oU0lPX0RFVkFO WSwgU0lPX1BMQVksIDApOworKyAgaWYgKGhkbCA9PSBOVUxMKSB7CisrICAgIExPRyhFUlJPUikg PDwgIkNvdWxkbid0IG9wZW4gYXVkaW8gZGV2aWNlLiI7CisrICAgIHJldHVybiBmYWxzZTsKKysg IH0KKysgIGlmICghc2lvX3NldHBhcihoZGwsICZwYXIpIHx8ICFzaW9fZ2V0cGFyKGhkbCwgJnBh cikpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgc2V0IGF1ZGlvIHBhcmFtZXRlcnMu IjsKKysgICAgZ290byBiYWRfY2xvc2U7CisrICB9CisrICBpZiAocGFyLnJhdGUgICE9ICh1bnNp Z25lZCBpbnQpcGFyYW1zLnNhbXBsZV9yYXRlKCkgfHwKKysgICAgICBwYXIucGNoYW4gIT0gKHVu c2lnbmVkIGludClwYXJhbXMuY2hhbm5lbHMoKSB8fAorKyAgICAgIHBhci5iaXRzICAhPSAodW5z aWduZWQgaW50KVNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCkgfHwK KysgICAgICBwYXIuc2lnICAgIT0gKHVuc2lnbmVkIGludClzaWcgfHwKKysgICAgICAocGFyLmJw cyA+IDEgJiYgcGFyLmxlICE9IFNJT19MRV9OQVRJVkUpIHx8CisrICAgICAgKHBhci5iaXRzICE9 IHBhci5icHMgKiA4KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBw YXJhbWV0ZXJzLiI7CisrICAgIGdvdG8gYmFkX2Nsb3NlOworKyAgfQorKyAgc3RhdGUgPSBrU3Rv cHBlZDsKKysgIHZvbHBlbmRpbmcgPSAwOworKyAgdm9sID0gMDsKKysgIGJ1ZmZlciA9IG5ldyBj aGFyW2F1ZGlvX2J1cy0+ZnJhbWVzKCkgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxl Rm9ybWF0KV07CisrICBzaW9fb25tb3ZlKGhkbCwgJk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsKKysg IHNpb19vbnZvbChoZGwsICZPblZvbENhbGxiYWNrLCB0aGlzKTsKKysgIHJldHVybiB0cnVlOwor KyBiYWRfY2xvc2U6CisrICBzaW9fY2xvc2UoaGRsKTsKKysgIHJldHVybiBmYWxzZTsKKyt9Cisr Cisrdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpDbG9zZSgpIHsKKysgIGlmIChzdGF0ZSA9 PSBrQ2xvc2VkKQorKyAgICByZXR1cm47CisrICBpZiAoc3RhdGUgPT0ga1J1bm5pbmcpCisrICAg IFN0b3AoKTsKKysgIHN0YXRlID0ga0Nsb3NlZDsKKysgIGRlbGV0ZSBbXSBidWZmZXI7CisrICBz aW9fY2xvc2UoaGRsKTsKKysgIG1hbmFnZXItPlJlbGVhc2VPdXRwdXRTdHJlYW0odGhpcyk7ICAv LyBDYWxscyB0aGUgZGVzdHJ1Y3RvcgorK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJl YW06OlN0YXJ0KEF1ZGlvU291cmNlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CisrICBzdGF0ZSA9IGtS dW5uaW5nOworKyAgaHdfZGVsYXkgPSAwOworKyAgc291cmNlID0gY2FsbGJhY2s7CisrICBzaW9f c3RhcnQoaGRsKTsKKysgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhyZWFk RW50cnksIHRoaXMpICE9IDApIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0 ZSByZWFsLXRpbWUgdGhyZWFkLiI7CisrICAgIHNpb19zdG9wKGhkbCk7CisrICAgIHN0YXRlID0g a1N0b3BwZWQ7CisrICB9CisrfQorKworK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U3Rv cCgpIHsKKysgIGlmIChzdGF0ZSA9PSBrU3RvcHBlZCkKKysgICAgcmV0dXJuOworKyAgc3RhdGUg PSBrU3RvcFdhaXQ7CisrICBwdGhyZWFkX2pvaW4odGhyZWFkLCBOVUxMKTsKKysgIHNpb19zdG9w KGhkbCk7CisrICBzdGF0ZSA9IGtTdG9wcGVkOworK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRw dXRTdHJlYW06OlNldFZvbHVtZShkb3VibGUgdikgeworKyAgcHRocmVhZF9tdXRleF9sb2NrKCZt dXRleCk7CisrICB2b2wgPSB2ICogU0lPX01BWFZPTDsKKysgIHZvbHBlbmRpbmcgPSAxOworKyAg cHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0 cHV0U3RyZWFtOjpHZXRWb2x1bWUoZG91YmxlKiB2KSB7CisrICBwdGhyZWFkX211dGV4X2xvY2so Jm11dGV4KTsKKysgICp2ID0gdm9sICogKDEuIC8gU0lPX01BWFZPTCk7CisrICBwdGhyZWFkX211 dGV4X3VubG9jaygmbXV0ZXgpOworK30KKysKKysvLyBUaGlzIHN0cmVhbSBpcyBhbHdheXMgdXNl ZCB3aXRoIHN1YiBzZWNvbmQgYnVmZmVyIHNpemVzLCB3aGVyZSBpdCdzCisrLy8gc3VmZmljaWVu dCB0byBzaW1wbHkgYWx3YXlzIGZsdXNoIHVwb24gU3RhcnQoKS4KKyt2b2lkIFNuZGlvQXVkaW9P dXRwdXRTdHJlYW06OkZsdXNoKCkge30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06 OlRocmVhZExvb3Aodm9pZCkgeworKyAgaW50IGF2YWlsLCBjb3VudCwgcmVzdWx0OworKworKyAg d2hpbGUgKHN0YXRlID09IGtSdW5uaW5nKSB7CisrICAgIC8vIFVwZGF0ZSB2b2x1bWUgaWYgbmVl ZGVkCisrICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOworKyAgICBpZiAodm9scGVuZGlu ZykgeworKyAgICAgIHZvbHBlbmRpbmcgPSAwOworKyAgICAgIHNpb19zZXR2b2woaGRsLCB2b2wp OworKyAgICB9CisrICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisrCisrICAgIC8v IEdldCBkYXRhIHRvIHBsYXkKKysgICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGRlbGF5ID0gQXVk aW9UaW1lc3RhbXBIZWxwZXI6OkZyYW1lc1RvVGltZShod19kZWxheSwKKysJcGFyYW1zLnNhbXBs ZV9yYXRlKCkpOworKyAgICBjb3VudCA9IHNvdXJjZS0+T25Nb3JlRGF0YShkZWxheSwgYmFzZTo6 VGltZVRpY2tzOjpOb3coKSwgMCwgYXVkaW9fYnVzLmdldCgpKTsKKysgICAgYXVkaW9fYnVzLT5U b0ludGVybGVhdmVkKGNvdW50LCBTYW1wbGVGb3JtYXRUb0J5dGVzUGVyQ2hhbm5lbChrU2FtcGxl Rm9ybWF0KSwgYnVmZmVyKTsKKysgICAgaWYgKGNvdW50ID09IDApIHsKKysgICAgICAvLyBXZSBo YXZlIHRvIHN1Ym1pdCBzb21ldGhpbmcgdG8gdGhlIGRldmljZQorKyAgICAgIGNvdW50ID0gYXVk aW9fYnVzLT5mcmFtZXMoKTsKKysgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBjb3VudCAqIHBhcmFt cy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpKTsKKysgICAgICBMT0coV0FSTklORykg PDwgIk5vIGRhdGEgdG8gcGxheSwgcnVubmluZyBlbXB0eSBjeWNsZS4iOworKyAgICB9CisrCisr ICAgIC8vIFN1Ym1pdCBkYXRhIHRvIHRoZSBkZXZpY2UKKysgICAgYXZhaWwgPSBjb3VudCAqIHBh cmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpOworKyAgICByZXN1bHQgPSBzaW9f d3JpdGUoaGRsLCBidWZmZXIsIGF2YWlsKTsKKysgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisrICAg ICAgTE9HKFdBUk5JTkcpIDw8ICJBdWRpbyBkZXZpY2UgZGlzY29ubmVjdGVkLiI7CisrICAgICAg YnJlYWs7CisrICAgIH0KKysKKysgICAgLy8gVXBkYXRlIGhhcmR3YXJlIHBvaW50ZXIKKysgICAg aHdfZGVsYXkgKz0gY291bnQ7CisrICB9CisrfQorKworK30gIC8vIG5hbWVzcGFjZSBtZWRpYQor ZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9hdWRpby9zbmRpby9z bmRpb19vdXRwdXQuaCBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vc25kaW8vc25k aW9fb3V0cHV0LmgKKy0tLSBtZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaC5vcmlnCTE5 NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbWVkaWEvYXVkaW8vc25kaW8v c25kaW9fb3V0cHV0LmgJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKK0BAIC0w LDAgKzEsODYgQEAKKysvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMu IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292 ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGluIHRo ZSBMSUNFTlNFIGZpbGUuCisrCisrI2lmbmRlZiBNRURJQV9BVURJT19TTkRJT19TTkRJT19PVVRQ VVRfSF8KKysjZGVmaW5lIE1FRElBX0FVRElPX1NORElPX1NORElPX09VVFBVVF9IXworKworKyNp bmNsdWRlIDxwdGhyZWFkLmg+CisrI2luY2x1ZGUgPHNuZGlvLmg+CisrCisrI2luY2x1ZGUgImJh c2UvdGltZS90aWNrX2Nsb2NrLmgiCisrI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCisrI2lu Y2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2lvLmgiCisrCisrbmFtZXNwYWNlIG1lZGlhIHsKKysK KytjbGFzcyBBdWRpb01hbmFnZXJCYXNlOworKworKy8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlv T3V0cHV0U3RyZWFtIHVzaW5nIHNuZGlvKDcpCisrY2xhc3MgU25kaW9BdWRpb091dHB1dFN0cmVh bSA6IHB1YmxpYyBBdWRpb091dHB1dFN0cmVhbSB7CisrIHB1YmxpYzoKKysgIC8vIFRoZSBtYW5h Z2VyIGlzIGNyZWF0aW5nIHRoaXMgb2JqZWN0CisrICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBB dWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyKTsKKysgIHZpcnR1YWwgflNuZGlvQXVkaW9PdXRwdXRT dHJlYW0oKTsKKysKKysgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtLgor KyAgYm9vbCBPcGVuKCkgb3ZlcnJpZGU7CisrICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7CisrICB2 b2lkIFN0YXJ0KEF1ZGlvU291cmNlQ2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKysgIHZv aWQgU3RvcCgpIG92ZXJyaWRlOworKyAgdm9pZCBTZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkgb3Zl cnJpZGU7CisrICB2b2lkIEdldFZvbHVtZShkb3VibGUqIHZvbHVtZSkgb3ZlcnJpZGU7CisrICB2 b2lkIEZsdXNoKCkgb3ZlcnJpZGU7CisrCisrICBmcmllbmQgdm9pZCBzbmRpb19vbm1vdmUodm9p ZCAqYXJnLCBpbnQgZGVsdGEpOworKyAgZnJpZW5kIHZvaWQgc25kaW9fb252b2wodm9pZCAqYXJn LCB1bnNpZ25lZCBpbnQgdm9sKTsKKysgIGZyaWVuZCB2b2lkICpzbmRpb190aHJlYWRzdGFydCh2 b2lkICphcmcpOworKworKyBwcml2YXRlOgorKyAgZW51bSBTdHJlYW1TdGF0ZSB7CisrICAgIGtD bG9zZWQsICAgICAgICAgICAgLy8gTm90IG9wZW5lZCB5ZXQKKysgICAga1N0b3BwZWQsICAgICAg ICAgICAvLyBEZXZpY2Ugb3BlbmVkLCBidXQgbm90IHN0YXJ0ZWQgeWV0CisrICAgIGtSdW5uaW5n LCAgICAgICAgICAgLy8gU3RhcnRlZCwgZGV2aWNlIHBsYXlpbmcKKysgICAga1N0b3BXYWl0ICAg ICAgICAgICAvLyBTdG9wcGluZywgd2FpdGluZyBmb3IgdGhlIHJlYWwtdGltZSB0aHJlYWQgdG8g ZXhpdAorKyAgfTsKKysKKysgIC8vIEMtc3R5bGUgY2FsbC1iYWNrcworKyAgc3RhdGljIHZvaWQg T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEpOworKyAgc3RhdGljIHZvaWQgT25W b2xDYWxsYmFjayh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpOworKyAgc3RhdGljIHZvaWQq IFRocmVhZEVudHJ5KHZvaWQgKmFyZyk7CisrCisrICAvLyBDb250aW51b3VzbHkgbW92ZXMgZGF0 YSBmcm9tIHRoZSBwcm9kdWNlciB0byB0aGUgZGV2aWNlCisrICB2b2lkIFRocmVhZExvb3Aodm9p ZCk7CisrCisrICAvLyBPdXIgY3JlYXRvciwgdGhlIGF1ZGlvIG1hbmFnZXIgbmVlZHMgdG8gYmUg bm90aWZpZWQgd2hlbiB3ZSBjbG9zZS4KKysgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXI7Cisr ICAvLyBQYXJhbWV0ZXJzIG9mIHRoZSBzb3VyY2UKKysgIEF1ZGlvUGFyYW1ldGVycyBwYXJhbXM7 CisrICAvLyBTb3VyY2Ugc3RvcmVzIGRhdGEgaGVyZQorKyAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlv QnVzPiBhdWRpb19idXM7CisrICAvLyBDYWxsLWJhY2sgdGhhdCBwcm9kdWNlcyBkYXRhIHRvIHBs YXkKKysgIEF1ZGlvU291cmNlQ2FsbGJhY2sqIHNvdXJjZTsKKysgIC8vIEhhbmRsZSBvZiB0aGUg YXVkaW8gZGV2aWNlCisrICBzdHJ1Y3Qgc2lvX2hkbCogaGRsOworKyAgLy8gQ3VycmVudCBzdGF0 ZSBvZiB0aGUgc3RyZWFtCisrICBlbnVtIFN0cmVhbVN0YXRlIHN0YXRlOworKyAgLy8gSGlnaCBw cmlvcml0eSB0aHJlYWQgcnVubmluZyBUaHJlYWRMb29wKCkKKysgIHB0aHJlYWRfdCB0aHJlYWQ7 CisrICAvLyBQcm90ZWN0cyB2b2wsIHZvbHBlbmRpbmcgYW5kIGh3X2RlbGF5CisrICBwdGhyZWFk X211dGV4X3QgbXV0ZXg7CisrICAvLyBDdXJyZW50IHZvbHVtZSBpbiB0aGUgMC4uU0lPX01BWFZP TCByYW5nZQorKyAgaW50IHZvbDsKKysgIC8vIFNldCB0byAxIGlmIHZvbHVtZXMgbXVzdCBiZSBy ZWZyZXNoZWQgaW4gdGhlIHJlYWx0aW1lIHRocmVhZAorKyAgaW50IHZvbHBlbmRpbmc7CisrICAv LyBOdW1iZXIgb2YgZnJhbWVzIGJ1ZmZlcmVkIGluIHRoZSBoYXJkd2FyZQorKyAgaW50IGh3X2Rl bGF5OworKyAgLy8gVGVtcG9yYXJ5IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1j b21wYXRpYmxlIGZvcm1hdAorKyAgY2hhciogYnVmZmVyOworKworKyAgRElTQUxMT1dfQ09QWV9B TkRfQVNTSUdOKFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0pOworK307CisrCisrfSAgLy8gbmFtZXNw YWNlIG1lZGlhCisrCisrI2VuZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19TTkRJT19PVVRQVVRf SF8KK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvbWVkaWFfb3B0 aW9ucy5nbmkgY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL21lZGlhX29wdGlvbnMuZ25pCist LS0gbWVkaWEvbWVkaWFfb3B0aW9ucy5nbmkub3JpZwkyMDIwLTA2LTAzIDIwOjQwOjI2LjAwMDAw MDAwMCArMDIwMAorKysrIG1lZGlhL21lZGlhX29wdGlvbnMuZ25pCTIwMjAtMDYtMTMgMTc6MzI6 MjguNTEyMzk1OTYzICswMjAwCitAQCAtMTE5LDYgKzExOSw5IEBACisgICAjIEVuYWJsZXMgcnVu dGltZSBzZWxlY3Rpb24gb2YgQUxTQSBsaWJyYXJ5IGZvciBhdWRpby4KKyAgIHVzZV9hbHNhID0g ZmFsc2UKKyAKKysgICMgRW5hYmxlIHJ1bnRpbWUgc2VsZWN0aW9uIG9mIHNuZGlvKDcpCisrICB1 c2Vfc25kaW8gPSBmYWxzZQorKworICAgIyBBbHNhIHNob3VsZCBiZSB1c2VkIG9uIG5vbi1BbmRy b2lkLCBub24tTWFjIFBPU0lYIHN5c3RlbXMuCisgICAjIEFsc2Egc2hvdWxkIGJlIHVzZWQgb24g ZGVza3RvcCBDaHJvbWVjYXN0IGFuZCBhdWRpby1vbmx5IENocm9tZWNhc3QgYnVpbGRzLgorICAg aWYgKGlzX3Bvc2l4ICYmICFpc19hbmRyb2lkICYmICFpc19tYWMgJiYKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0 Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zeXN0ZW0tbm9k ZWpzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTlkNjUz OTU1ZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNo ZXMvY2hyb21pdW0tc3lzdGVtLW5vZGVqcy5wYXRjaApAQCAtMCwwICsxLDIyIEBACitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L25vZGUvbm9kZS5weSB0aGlyZF9wYXJ0eS9ub2RlL25vZGUucHkKK2lu ZGV4IDgwOTdlMmM0OS4uMTBlNmExNmVhIDEwMDc1NQorLS0tIHRoaXJkX3BhcnR5L25vZGUvbm9k ZS5weQorKysrIHRoaXJkX3BhcnR5L25vZGUvbm9kZS5weQorQEAgLTEwLDExICsxMCwxMiBAQCBp bXBvcnQgc3lzCisgCisgCisgZGVmIEdldEJpbmFyeVBhdGgoKToKKy0gIHJldHVybiBvc19wYXRo LmpvaW4ob3NfcGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgKnsKKy0gICAgJ0Rhcndpbic6ICgnbWFj JywgJ25vZGUtZGFyd2luLXg2NCcsICdiaW4nLCAnbm9kZScpLAorLSAgICAnTGludXgnOiAoJ2xp bnV4JywgJ25vZGUtbGludXgteDY0JywgJ2JpbicsICdub2RlJyksCistICAgICdXaW5kb3dzJzog KCd3aW4nLCAnbm9kZS5leGUnKSwKKy0gIH1bcGxhdGZvcm0uc3lzdGVtKCldKQorKyAgcmV0dXJu ICIvdXNyL2Jpbi9ub2RlIgorKyAgI3JldHVybiBvc19wYXRoLmpvaW4ob3NfcGF0aC5kaXJuYW1l KF9fZmlsZV9fKSwgKnsKKysgICMgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRhcndpbi14NjQn LCAnYmluJywgJ25vZGUnKSwKKysgICMgICdMaW51eCc6ICgnbGludXgnLCAnbm9kZS1saW51eC14 NjQnLCAnYmluJywgJ25vZGUnKSwKKysgICMgICdXaW5kb3dzJzogKCd3aW4nLCAnbm9kZS5leGUn KSwKKysgICN9W3BsYXRmb3JtLnN5c3RlbSgpXSkKKyAKKyAKKyBkZWYgUnVuTm9kZShjbWRfcGFy dHMsIHN0ZG91dD1Ob25lKToKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9w YXRjaGVzL2Nocm9taXVtLXRpbWU2NC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9w YXRjaGVzL2Nocm9taXVtLXRpbWU2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLmIxYWQ5MzU5MDAzMwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXRpbWU2NC5wYXRjaApAQCAtMCwwICsxLDUx IEBACitEZXNjcmlwdGlvbjogYWxsb3cgc2FuZGJveGVkIGNvZGUgdG8gY2FsbCBnZXR0aW1lNjQK KyBBZGQgX19OUl9jbG9ja19nZXR0aW1lNjQgYW5kIF9fTlJfY2xvY2tfbmFub3NsZWVwX3RpbWU2 NCB0byBzeXNjYWxsIHdoaXRlbGlzdAorIGFuZCBjbG9jayBzZWxlY3Rpb24gcGFyYW1ldGVyIGZp bHRlcmluZyBjb2RlLgorCisgQWRkIF9fTlJfdXRpbWVuc2F0X3RpbWU2NCB0byBzeXNjYWxsIHdo aXRlbGlzdAorCisgQ29uZGl0aW9uYWxpc2UgYWRkaXRpb25zIG9uIHRoZSBuZXcgY2FsbHMgZXhp c3RpbmcsIGJlY2F1c2UgdGhleSBkbyBub3QgZXhpc3QKKyBvbiA2NC1iaXQgYXJjaGl0ZWN0dXJl cy4KK0F1dGhvcjogUGV0ZXIgTWljaGFlbCBHcmVlbiA8cGx1Z3dhc2hAcmFzcGJpYW4ub3JnPgor CitJbmRleDogY2hyb21pdW0tODMuMC40MTAzLjExNi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm LWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYworKysrIHNhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKK0BAIC0xNDgsNyArMTQ4 LDExIEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGUKKyAgICAgcmV0 dXJuIEFsbG93KCk7CisgI2VuZGlmCisgCisrI2lmZGVmIF9fTlJfY2xvY2tfZ2V0dGltZTY0Cisr ICBpZiAoc3lzbm8gPT0gX19OUl9jbG9ja19nZXR0aW1lIHx8IHN5c25vID09IF9fTlJfY2xvY2tf Z2V0dGltZTY0IHx8IHN5c25vID09IF9fTlJfY2xvY2tfbmFub3NsZWVwIHx8IHN5c25vID09IF9f TlJfY2xvY2tfbmFub3NsZWVwX3RpbWU2NCkgeworKyNlbHNlCisgICBpZiAoc3lzbm8gPT0gX19O Ul9jbG9ja19nZXR0aW1lIHx8IHN5c25vID09IF9fTlJfY2xvY2tfbmFub3NsZWVwKSB7CisrI2Vu ZGlmCisgICAgIHJldHVybiBSZXN0cmljdENsb2NrSUQoKTsKKyAgIH0KKyAKK0luZGV4OiBjaHJv bWl1bS04My4wLjQxMDMuMTE2L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNj YWxsX3NldHMuY2MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxw ZXJzL3N5c2NhbGxfc2V0cy5jYworQEAgLTM4LDYgKzM4LDEwIEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzQWxsb3dlZEdldHRpbWUoaW50IHMKKyAgICAgY2FzZSBfX05SX2Nsb2NrX2dldHJlczogICAg IC8vIEFsbG93ZWQgb25seSBvbiBBbmRyb2lkIHdpdGggcGFyYW1ldGVycworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgLy8gZmlsdGVyZWQgYnkgUmVzdHJpY3RDbG9rSUQoKS4KKyAg ICAgY2FzZSBfX05SX2Nsb2NrX2dldHRpbWU6ICAgIC8vIFBhcmFtZXRlcnMgZmlsdGVyZWQgYnkg UmVzdHJpY3RDbG9ja0lEKCkuCisrI2lmZGVmIF9fTlJfY2xvY2tfZ2V0dGltZTY0CisrICAgIGNh c2UgX19OUl9jbG9ja19nZXR0aW1lNjQ6ICAgIC8vIFBhcmFtZXRlcnMgZmlsdGVyZWQgYnkgUmVz dHJpY3RDbG9ja0lEKCkuCisrICAgIGNhc2UgX19OUl9jbG9ja19uYW5vc2xlZXBfdGltZTY0OiAg Ly8gUGFyYW1ldGVycyBmaWx0ZXJlZCBieSBSZXN0cmljdENsb2NrSUQoKS4KKysjZW5kaWYKKyAg ICAgY2FzZSBfX05SX2Nsb2NrX25hbm9zbGVlcDogIC8vIFBhcmFtZXRlcnMgZmlsdGVyZWQgYnkg UmVzdHJpY3RDbG9ja0lEKCkuCisgICAgIGNhc2UgX19OUl9jbG9ja19zZXR0aW1lOiAgICAvLyBQ cml2aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCitAQCAtMTU5LDYgKzE2Myw5 IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8KKyAgICAgY2FzZSBf X05SX3V0aW1lOgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfdXRpbWVuc2F0OiAgLy8gTmV3Lgor KyNpZmRlZiBfX05SX3V0aW1lbnNhdF90aW1lNjQKKysgICAgY2FzZSBfX05SX3V0aW1lbnNhdF90 aW1lNjQ6CisrI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGRlZmF1bHQ6CisgICAg ICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0td2VicnRjLWluY2x1ZGUucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkyZWMyNzJhODlhYwotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1pbmNs dWRlLnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSB0aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxl cy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5jYy5vcmlnCTIwMTkt MDItMjEgMjE6MjE6MjQuNDg4MDU4OTkwICswMTAwCisrKysgdGhpcmRfcGFydHkvd2VicnRjL21v ZHVsZXMvZGVza3RvcF9jYXB0dXJlL2xpbnV4L3dpbmRvd19jYXB0dXJlcl94MTEuY2MJMjAxOS0w Mi0yMSAyMToyMTozNi4xNTE5NjEwNjQgKzAxMDAKK0BAIC0xNiw2ICsxNiw3IEBACisgCisgI2lu Y2x1ZGUgPG1lbW9yeT4KKyAjaW5jbHVkZSA8c3RyaW5nPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4K KyAjaW5jbHVkZSA8dXRpbGl0eT4KKyAKKyAjaW5jbHVkZSAibW9kdWxlcy9kZXNrdG9wX2NhcHR1 cmUvZGVza3RvcF9mcmFtZS5oIgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXIwLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXIwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uNzBiYmVkZTQ3MmY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXIwLnBhdGNoCkBA IC0wLDAgKzEsMzMgQEAKK1Vwc3RyZWFtOiBZZXMsIGh0dHBzOi8vd2VicnRjLXJldmlldy5nb29n bGVzb3VyY2UuY29tLzkzODQKK1JlYXNvbjogRml4ZXMgbXVzbCBidWlsZHMgb2Ygd2VicnRjCisK K0Zyb20gN2Y5MGUyY2NlZGEwNDU4Y2Y1NjAyNmViNmNjZmZiOTYxYTQ3ODA0YiBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJhcGhhZWwgS3VibyBkYSBDb3N0YSA8cmFwaGFlbC5rdWJv LmRhLmNvc3RhQGludGVsLmNvbT4KK0RhdGU6IEZyaSwgMTMgT2N0IDIwMTcgMTU6NDk6MzIgKzAy MDAKK1N1YmplY3Q6IFtQQVRDSF0gSVdZVTogSW5jbHVkZSBtYXRoLmggZm9yIHJvdW5kKDMpLgor CittYXRoLmggd2FzIGJlaW5nIGltcGxpY2l0bHkgaW5jbHVkZWQsIHdoaWNoIGNhbiBicmVhayB0 aGUgYnVpbGQgd2l0aAorYWx0ZXJuYXRpdmUgbGliYyBpbXBsZW1lbnRhdGlvbnMuCisKK0J1Zzog Tm9uZQorQ2hhbmdlLUlkOiBJOTY5YjMyMGI2NWQwZjQ0YWJiMzNkM2UxMDM2Y2ZiY2I4NTlhNDk1 MgorUmV2aWV3ZWQtb246IGh0dHBzOi8vd2VicnRjLXJldmlldy5nb29nbGVzb3VyY2UuY29tLzkz ODQKK1Jldmlld2VkLWJ5OiBUb21taSA8dG9tbWlAd2VicnRjLm9yZz4KK0NvbW1pdC1RdWV1ZTog UmFwaGFlbCBLdWJvIGRhIENvc3RhIChyYWt1Y28pIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50 ZWwuY29tPgorQ3ItQ29tbWl0LVBvc2l0aW9uOiByZWZzL2hlYWRzL21hc3RlckB7IzIwMjkyfQor LS0tCisKKy0tLSB0aGlyZF9wYXJ0eS93ZWJydGMvcDJwL2Jhc2UvcG9ydC5jYworKysrIHRoaXJk X3BhcnR5L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmNjCitAQCAtMTAsNiArMTAsOCBAQAorIAorICNp bmNsdWRlICJwMnAvYmFzZS9wb3J0LmgiCisgCisrI2luY2x1ZGUgPG1hdGguaD4KKysKKyAjaW5j bHVkZSA8YWxnb3JpdGhtPgorICNpbmNsdWRlIDx2ZWN0b3I+CisgCistLSAKKzIuMTUuMC5yYzIK KwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0t d2VicnRjLXNpemVfdC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2No cm9taXVtLXdlYnJ0Yy1zaXplX3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5lZjdlYTA5Y2Y2MzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0 cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtc2l6ZV90LnBhdGNoCkBAIC0wLDAg KzEsMTAgQEAKKy0tLSB0aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5n L2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oCTIwMjAtMDgtMTAgMjA6NDI6MjkuMDAwMDAwMDAw ICswMjAwCisrKysgdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvYXVkaW9fcHJvY2Vzc2luZy9h ZWMzL2Nsb2NrZHJpZnRfZGV0ZWN0b3IuaAkyMDIwLTA5LTA0IDEyOjQ3OjA3LjAxNDgzMzYzMyAr MDIwMAorQEAgLTEyLDYgKzEyLDcgQEAKKyAjZGVmaW5lIE1PRFVMRVNfQVVESU9fUFJPQ0VTU0lO R19BRUMzX0NMT0NLRFJJRlRfREVURUNUT1JfSF8KKyAKKyAjaW5jbHVkZSA8YXJyYXk+CisrI2lu Y2x1ZGUgPGNzdGRkZWY+CisgCisgbmFtZXNwYWNlIHdlYnJ0YyB7CisgCmRpZmYgLS1naXQgYS9z cmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1saWJ2 cHgucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgt cHBjNjRsZS1saWJ2cHgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi43OTJiZWZiM2EzOWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1saWJ2cHgucGF0Y2gKQEAgLTAsMCAr MSw3MiBAQAorVXNlcyBnZW5lcmljIHRhcmdldCBmb3Igbm93LiBUbyB1c2UgcHBjNjRsZSwgY2hh bmdlIC0tdGFyZ2V0IHRvIHBwYzY0bGUtZ251CithbmQgYWRkIC0tZW5hYmxlLXZzeCwgYW5kIGNo YW5nZSBnZW5lcmljIHRvIHBwYyBmb3IgdGhlIHJ0Y2QgaGVhZGVyLgorCitGcm9tIDE4ZTZjNWM1 NWNmYWUwY2ZiNDU4ZDgyMTBkN2JjNzA5MzYwYTBlOTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBxNjYgPGRhbmllbEBvY3RhZm9yZ2Uub3JnPgorRGF0ZTogV2VkLCA5IFNlcCAyMDIw IDE5OjA4OjI1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGVuYWJsZSBnZW5lcmF0aW9uIG9mIHBw YzY0IGxpYnZweCBiaXRzCisKK3RoaXMgZG9lc24ndCB1cGRhdGUgdGhlIGduaSBmaWxlLCB0aGF0 J3MgZG9uZSBmcm9tCit0aGUgdGVtcGxhdGUgYnkgcnVubmluZyB0aGUgYXBwcm9wcmlhdGUgc2Ny aXB0cworLS0tCisgdGhpcmRfcGFydHkvbGlidnB4L0JVSUxELmduICAgICAgICB8IDQgKysrKwor IHRoaXJkX3BhcnR5L2xpYnZweC9nZW5lcmF0ZV9nbmkuc2ggfCA5ICsrKysrKysrKworIDIgZmls ZXMgY2hhbmdlZCwgMTMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2xp YnZweC9CVUlMRC5nbiB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJTEQuZ24KK2luZGV4IDcxOThlNTku LjMzMDA0ODUgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvbGlidnB4L0JVSUxELmduCisrKysgdGhp cmRfcGFydHkvbGlidnB4L0JVSUxELmduCitAQCAtMzM2LDYgKzMzNiw4IEBAIHN0YXRpY19saWJy YXJ5KCJsaWJ2cHgiKSB7CisgICAgIH0gZWxzZSB7CisgICAgICAgc291cmNlcyA9IGxpYnZweF9z cmNzX2FybTY0CisgICAgIH0KKysgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0Iikg eworKyAgICBzb3VyY2VzID0gbGlidnB4X3NyY3NfcHBjNjQKKyAgIH0KKyAKKyAgIGNvbmZpZ3Mg LT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorZGlmZiAtLWdp dCB0aGlyZF9wYXJ0eS9saWJ2cHgvZ2VuZXJhdGVfZ25pLnNoIHRoaXJkX3BhcnR5L2xpYnZweC9n ZW5lcmF0ZV9nbmkuc2gKK2luZGV4IGJjZjg0YjAuLjhhM2Y0ZjEgMTAwNzU1CistLS0gdGhpcmRf cGFydHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaAorKysrIHRoaXJkX3BhcnR5L2xpYnZweC9nZW5l cmF0ZV9nbmkuc2gKK0BAIC0zNjEsNiArMzYxLDcgQEAgZ2VuX2NvbmZpZ19maWxlcyBsaW51eC9h cm0tbmVvbi1oaWdoYmQgIi0tdGFyZ2V0PWFybXY3LWxpbnV4LWdjYyAke2FsbF9wbGF0Zm9ybXMK KyBnZW5fY29uZmlnX2ZpbGVzIGxpbnV4L2FybTY0LWhpZ2hiZCAiLS10YXJnZXQ9YXJtdjgtbGlu dXgtZ2NjICR7YWxsX3BsYXRmb3Jtc30gJHtISUdIQkR9IgorIGdlbl9jb25maWdfZmlsZXMgbGlu dXgvbWlwc2VsICItLXRhcmdldD1taXBzMzItbGludXgtZ2NjICR7YWxsX3BsYXRmb3Jtc30iCisg Z2VuX2NvbmZpZ19maWxlcyBsaW51eC9taXBzNjRlbCAiLS10YXJnZXQ9bWlwczY0LWxpbnV4LWdj YyAke2FsbF9wbGF0Zm9ybXN9IgorK2dlbl9jb25maWdfZmlsZXMgbGludXgvcHBjNjQgIi0tdGFy Z2V0PWdlbmVyaWMtZ251ICRISUdIQkQgJHthbGxfcGxhdGZvcm1zfSIKKyBnZW5fY29uZmlnX2Zp bGVzIGxpbnV4L2dlbmVyaWMgIi0tdGFyZ2V0PWdlbmVyaWMtZ251ICRISUdIQkQgJHthbGxfcGxh dGZvcm1zfSIKKyBnZW5fY29uZmlnX2ZpbGVzIHdpbi9hcm02NCAiLS10YXJnZXQ9YXJtNjQtd2lu NjQtdnMxNSAke2FsbF9wbGF0Zm9ybXN9ICR7SElHSEJEfSIKKyBnZW5fY29uZmlnX2ZpbGVzIHdp bi9pYTMyICItLXRhcmdldD14ODYtd2luMzItdnMxNCAke2FsbF9wbGF0Zm9ybXN9ICR7eDg2X3Bs YXRmb3Jtc30iCitAQCAtMzg2LDYgKzM4Nyw3IEBAIGxpbnRfY29uZmlnIGxpbnV4L2FybS1uZW9u LWhpZ2hiZAorIGxpbnRfY29uZmlnIGxpbnV4L2FybTY0LWhpZ2hiZAorIGxpbnRfY29uZmlnIGxp bnV4L21pcHNlbAorIGxpbnRfY29uZmlnIGxpbnV4L21pcHM2NGVsCisrbGludF9jb25maWcgbGlu dXgvcHBjNjQKKyBsaW50X2NvbmZpZyBsaW51eC9nZW5lcmljCisgbGludF9jb25maWcgd2luL2Fy bTY0CisgbGludF9jb25maWcgd2luL2lhMzIKK0BAIC00MTUsNiArNDE3LDcgQEAgZ2VuX3J0Y2Rf aGVhZGVyIGxpbnV4L2FybS1uZW9uLWhpZ2hiZCBhcm12NworIGdlbl9ydGNkX2hlYWRlciBsaW51 eC9hcm02NC1oaWdoYmQgYXJtdjgKKyBnZW5fcnRjZF9oZWFkZXIgbGludXgvbWlwc2VsIG1pcHNl bAorIGdlbl9ydGNkX2hlYWRlciBsaW51eC9taXBzNjRlbCBtaXBzNjRlbAorK2dlbl9ydGNkX2hl YWRlciBsaW51eC9wcGM2NCBnZW5lcmljCisgZ2VuX3J0Y2RfaGVhZGVyIGxpbnV4L2dlbmVyaWMg Z2VuZXJpYworIGdlbl9ydGNkX2hlYWRlciB3aW4vYXJtNjQgYXJtdjgKKyBnZW5fcnRjZF9oZWFk ZXIgd2luL2lhMzIgeDg2ICIke3JlcXVpcmVfc3NlMn0iCitAQCAtNTAwLDYgKzUwMywxMiBAQCBp ZiBbIC16ICRPTkxZX0NPTkZJR1MgXTsgdGhlbgorIAorICAgZWNobyAiTUlQUzY0IHNvdXJjZSBs aXN0IGlzIGlkZW50aWNhbCB0byBNSVBTIHNvdXJjZSBsaXN0LiBObyBuZWVkIHRvIGdlbmVyYXRl IGl0LiIKKyAKKysgIGVjaG8gIkdlbmVyYXRlIHBwYzY0IHNvdXJjZSBsaXN0LiIKKysgIGNvbmZp Zz0kKHByaW50X2NvbmZpZ19iYXNpYyBsaW51eC9wcGM2NCkKKysgIG1ha2VfY2xlYW4KKysgIG1h a2UgbGlidnB4X3NyY3MudHh0IHRhcmdldD1saWJzICRjb25maWcgPiAvZGV2L251bGwKKysgIGNv bnZlcnRfc3Jjc190b19wcm9qZWN0X2ZpbGVzIGxpYnZweF9zcmNzLnR4dCBsaWJ2cHhfc3Jjc19w cGM2NAorKworICAgZWNobyAiR2VuZXJhdGUgTmFDbCBzb3VyY2UgbGlzdC4iCisgICBjb25maWc9 JChwcmludF9jb25maWdfYmFzaWMgbmFjbCkKKyAgIG1ha2VfY2xlYW4KKy0tIAorMi4yOC4wCisK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4 eC1wcGM2NGxlLXN1cHBvcnQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uMzg5YWMzYjdhYTIyCi0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3VwcG9y dC5wYXRjaApAQCAtMCwwICsxLDM2MzUgQEAKK2NvbW1pdCAyYzAxM2EzMTdiMTExNGVmNjdjZGJi YzMwODI0YjI4OTA3YjllYTk0CitBdXRob3I6IERhbmllbCBLb2xlc2EgPGRhbmllbEBvY3RhZm9y Z2Uub3JnPgorRGF0ZTogICBXZWQgTWFyIDMgMTk6MDg6MjkgMjAyMSArMDEwMAorCisgICAgcHBj NjRsZSBzdXBwb3J0CisKK2RpZmYgLS1naXQgYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5z LnB5IGJ1aWxkL2Rvd25sb2FkX25hY2xfdG9vbGNoYWlucy5weQoraW5kZXggMjg2YTkyYTI3Li5l YzM2YTg1ZDMgMTAwNzU1CistLS0gYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5Cisr KysgYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5CitAQCAtMTMsNiArMTMsMTAgQEAg aW1wb3J0IHN5cworIAorIAorIGRlZiBNYWluKGFyZ3MpOgorKyAgIyBJZiBgZGlzYWJsZV9uYWNs PTFgIGlzIGluIEdZUF9ERUZJTkVTLCBleGl0CisrICBpZiAnZGlzYWJsZV9uYWNsPTEnIGluIG9z LmVudmlyb24uZ2V0KCdHWVBfREVGSU5FUycsICcnKToKKysgICAgcmV0dXJuIDAKKysKKyAgIHNj cmlwdF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKKyAg IHNyY19kaXIgPSBvcy5wYXRoLmRpcm5hbWUoc2NyaXB0X2RpcikKKyAgIG5hY2xfZGlyID0gb3Mu cGF0aC5qb2luKHNyY19kaXIsICduYXRpdmVfY2xpZW50JykKK2RpZmYgLS1naXQgY2hyb21lL2lu c3RhbGxlci9saW51eC9CVUlMRC5nbiBjaHJvbWUvaW5zdGFsbGVyL2xpbnV4L0JVSUxELmduCitp bmRleCAzNWYwMWQwYTQuLjI4ZjJlNzQ3NSAxMDA2NDQKKy0tLSBjaHJvbWUvaW5zdGFsbGVyL2xp bnV4L0JVSUxELmduCisrKysgY2hyb21lL2luc3RhbGxlci9saW51eC9CVUlMRC5nbgorQEAgLTk0 LDggKzk0LDYgQEAgcGFja2FnaW5nX2ZpbGVzID0gcGFja2FnaW5nX2ZpbGVzX2JpbmFyaWVzICsg WworICAgICAgICAgICAgICAgICAgICAgIiRyb290X291dF9kaXIveGRnLW1pbWUiLAorICAgICAg ICAgICAgICAgICAgICAgIiRyb290X291dF9kaXIveGRnLXNldHRpbmdzIiwKKyAgICAgICAgICAg ICAgICAgICAgICIkcm9vdF9vdXRfZGlyL2xvY2FsZXMvZW4tVVMucGFrIiwKKy0gICAgICAgICAg ICAgICAgICAgICIkcm9vdF9vdXRfZGlyL01FSVByZWxvYWQvbWFuaWZlc3QuanNvbiIsCistICAg ICAgICAgICAgICAgICAgICAiJHJvb3Rfb3V0X2Rpci9NRUlQcmVsb2FkL3ByZWxvYWRlZF9kYXRh LnBiIiwKKyAgICAgICAgICAgICAgICAgICBdCisgCisgYWN0aW9uX2ZvcmVhY2goImNhbGN1bGF0 ZV9kZWJfZGVwZW5kZW5jaWVzIikgeworQEAgLTMxNSw3ICszMTMsNiBAQCBncm91cCgiaW5zdGFs bGVyX2RlcHMiKSB7CisgICAgICI6dGhlbWVfZmlsZXMiLAorICAgICAiLy9jaHJvbWUiLAorICAg ICAiLy9jaHJvbWU6cGFja2VkX3Jlc291cmNlcyIsCistICAgICIvL2Nocm9tZS9icm93c2VyL3Jl c291cmNlcy9tZWRpYS9tZWlfcHJlbG9hZDpjb21wb25lbnQiLAorICAgICAiLy9zYW5kYm94L2xp bnV4OmNocm9tZV9zYW5kYm94IiwKKyAgICAgIi8vdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvaGFuZGxlcjpjcmFzaHBhZF9oYW5kbGVyIiwKKyAgIF0KK2RpZmYgLS1naXQgc2FuZGJveC9m ZWF0dXJlcy5nbmkgc2FuZGJveC9mZWF0dXJlcy5nbmkKK2luZGV4IGRiMzBhZTZkNi4uOWRjMDli ZjUzIDEwMDY0NAorLS0tIHNhbmRib3gvZmVhdHVyZXMuZ25pCisrKysgc2FuZGJveC9mZWF0dXJl cy5nbmkKK0BAIC0xMSw3ICsxMSw4IEBAIGltcG9ydCgiLy9idWlsZC9jb25maWcvbmFjbC9jb25m aWcuZ25pIikKKyB1c2Vfc2VjY29tcF9icGYgPSAoaXNfbGludXggfHwgaXNfY2hyb21lb3MgfHwg aXNfYW5kcm9pZCkgJiYKKyAgICAgICAgICAgICAgICAgICAoY3VycmVudF9jcHUgPT0gIng4NiIg fHwgY3VycmVudF9jcHUgPT0gIng2NCIgfHwKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudF9j cHUgPT0gImFybSIgfHwgY3VycmVudF9jcHUgPT0gImFybTY0IiB8fAorLSAgICAgICAgICAgICAg ICAgICBjdXJyZW50X2NwdSA9PSAibWlwc2VsIiB8fCBjdXJyZW50X2NwdSA9PSAibWlwczY0ZWwi KQorKyAgICAgICAgICAgICAgICAgICBjdXJyZW50X2NwdSA9PSAibWlwc2VsIiB8fCBjdXJyZW50 X2NwdSA9PSAibWlwczY0ZWwiIHx8CisrICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY3B1ID09 ICJwcGM2NCIpCisgCisgdXNlX3NlY2NvbXBfYnBmID0gdXNlX3NlY2NvbXBfYnBmIHx8IGlzX25h Y2xfbm9uc2ZpCisgCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvQlVJTEQuZ24gc2FuZGJveC9s aW51eC9CVUlMRC5nbgoraW5kZXggZTlhOTRiNDYxLi5jY2ExYTVkYTUgMTAwNjQ0CistLS0gc2Fu ZGJveC9saW51eC9CVUlMRC5nbgorKysrIHNhbmRib3gvbGludXgvQlVJTEQuZ24KK0BAIC00Mjcs NiArNDI3LDggQEAgY29tcG9uZW50KCJzYW5kYm94X3NlcnZpY2VzIikgeworIAorIHNvdXJjZV9z ZXQoInNhbmRib3hfc2VydmljZXNfaGVhZGVycyIpIHsKKyAgIHNvdXJjZXMgPSBbCisrICAgICJz eXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oIiwKKysgICAgInN5c3RlbV9oZWFk ZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgiLAorICAgICAic3lzdGVtX2hlYWRlcnMvYXJtNjRf bGludXhfc3lzY2FsbHMuaCIsCisgICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhfc3lzY2Fs bHMuaCIsCisgICAgICJzeXN0ZW1faGVhZGVycy9hcm1fbGludXhfdWNvbnRleHQuaCIsCitkaWZm IC0tZ2l0IHNhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oIHNhbmRi b3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCitpbmRleCAzMTM1MTFmMjIu LjBjYTNhMzI2ZiAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L2JwZl9kc2wvbGludXhfc3lzY2Fs bF9yYW5nZXMuaAorKysrIHNhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdl cy5oCitAQCAtNTYsNiArNTYsMTMgQEAKKyAjZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCBfX05S X3N5c2NhbGxzCisgI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZU0NBTEwKKyAKKysj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrCisrI2luY2x1ZGUgPGFzbS91bmlzdGQuaD4K KysjZGVmaW5lIE1JTl9TWVNDQUxMIDB1CisrI2RlZmluZSBNQVhfUFVCTElDX1NZU0NBTEwgMzg2 dQorKyNkZWZpbmUgTUFYX1NZU0NBTEwgTUFYX1BVQkxJQ19TWVNDQUxMCisrCisgI2Vsc2UKKyAj ZXJyb3IgIlVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZSIKKyAjZW5kaWYKK2RpZmYgLS1naXQgc2Fu ZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmggc2FuZGJveC9saW51eC9icGZfZHNs L3NlY2NvbXBfbWFjcm9zLmgKK2luZGV4IDFhNDA3Yjk1Mi4uYTZhZWM1NDRlIDEwMDY0NAorLS0t IHNhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jvcy5oCisrKysgc2FuZGJveC9saW51 eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKK0BAIC0xNiw2ICsxNiw5IEBACisgI2lmIGRlZmlu ZWQoX19taXBzX18pCisgLy8gc3lzL3VzZXIuaCBpbiBlZ2xpYmMgbWlzc2VzIHNpemVfdCBkZWZp bml0aW9uCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysvLyBNYW51YWxseSBkZWZpbmUgZ3JlZ190IG9uIHBwYzY0CisrdHlwZWRlZiB1bnNpZ25l ZCBsb25nIGxvbmcgZ3JlZ190OworICNlbmRpZgorICNlbmRpZgorIAorQEAgLTM0Niw2ICszNDks NTEgQEAgc3RydWN0IHJlZ3Nfc3RydWN0IHsKKyAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTQoX3Jl Z3MpIChfcmVncykucmVnc1szXQorICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9y ZWdzKS5yZWdzWzRdCisgI2RlZmluZSBTRUNDT01QX1BUX1BBUk02KF9yZWdzKSAoX3JlZ3MpLnJl Z3NbNV0KKysKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2luY2x1ZGUgPGFzbS9w dHJhY2UuaD4KKysKKyt0eXBlZGVmIHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0OworKworKyNp ZmRlZiBBUkNIX0NQVV9MSVRUTEVfRU5ESUFOCisrI2RlZmluZSBTRUNDT01QX0FSQ0ggQVVESVRf QVJDSF9QUEM2NExFCisrI2Vsc2UKKysjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQ QzY0CisrI2VuZGlmCisrCisrI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgp LT51Y19tY29udGV4dC5yZWdzLT5ncHJbX3JlZ10pCisrCisrI2RlZmluZSBTRUNDT01QX1JFU1VM VChfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQorKyNkZWZpbmUgU0VDQ09NUF9TWVNDQUxMKF9j dHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDApCisrI2RlZmluZSBTRUNDT01QX0lQKF9jdHgpIChfY3R4 KS0+dWNfbWNvbnRleHQucmVncy0+bmlwCisrI2RlZmluZSBTRUNDT01QX1BBUk0xKF9jdHgpIFNF Q0NPTVBfUkVHKF9jdHgsIDMpCisrI2RlZmluZSBTRUNDT01QX1BBUk0yKF9jdHgpIFNFQ0NPTVBf UkVHKF9jdHgsIDQpCisrI2RlZmluZSBTRUNDT01QX1BBUk0zKF9jdHgpIFNFQ0NPTVBfUkVHKF9j dHgsIDUpCisrI2RlZmluZSBTRUNDT01QX1BBUk00KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDYp CisrI2RlZmluZSBTRUNDT01QX1BBUk01KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDcpCisrI2Rl ZmluZSBTRUNDT01QX1BBUk02KF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDgpCisrCisrI2RlZmlu ZSBTRUNDT01QX05SX0lEWCAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBucikp CisrI2RlZmluZSBTRUNDT01QX0FSQ0hfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21w X2RhdGEsIGFyY2gpKQorKyNkZWZpbmUgU0VDQ09NUF9JUF9NU0JfSURYIFwKKysgIChvZmZzZXRv ZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgNCkKKysj ZGVmaW5lIFNFQ0NPTVBfSVBfTFNCX0lEWCBcCisrICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2Vj Y29tcF9kYXRhLCBpbnN0cnVjdGlvbl9wb2ludGVyKSArIDApCisrI2RlZmluZSBTRUNDT01QX0FS R19NU0JfSURYKG5yKSBcCisrICAob2Zmc2V0b2Yoc3RydWN0IGFyY2hfc2VjY29tcF9kYXRhLCBh cmdzKSArIDggKiAobnIpICsgNCkKKysjZGVmaW5lIFNFQ0NPTVBfQVJHX0xTQl9JRFgobnIpIFwK KysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikg KyAwKQorKworKyNkZWZpbmUgU0VDQ09NUF9QVF9SRVNVTFQoX3JlZ3MpIChfcmVncykuZ3ByWzNd CisrI2RlZmluZSBTRUNDT01QX1BUX1NZU0NBTEwoX3JlZ3MpIChfcmVncykuZ3ByWzBdCisrI2Rl ZmluZSBTRUNDT01QX1BUX0lQKF9yZWdzKSAoX3JlZ3MpLm5pcAorKyNkZWZpbmUgU0VDQ09NUF9Q VF9QQVJNMShfcmVncykgKF9yZWdzKS5ncHJbM10KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTIo X3JlZ3MpIChfcmVncykuZ3ByWzRdCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk0zKF9yZWdzKSAo X3JlZ3MpLmdwcls1XQorKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5n cHJbNl0KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTUoX3JlZ3MpIChfcmVncykuZ3ByWzddCisr I2RlZmluZSBTRUNDT01QX1BUX1BBUk02KF9yZWdzKSAoX3JlZ3MpLmdwcls4XQorKworICNlbHNl CisgI2Vycm9yIFVuc3VwcG9ydGVkIHRhcmdldCBwbGF0Zm9ybQorIAorZGlmZiAtLWdpdCBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjIHNhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKK2luZGV4IDZhMWVj MjM4OS4uZjIwYzU4MmRkIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVs cGVycy9iYXNlbGluZV9wb2xpY3kuY2MKKysrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCitAQCAtODgsNyArODgsOCBAQCBib29sIElzQmFzZWxp bmVQb2xpY3lXYXRjaGVkKGludCBzeXNubykgeworICAgICAgICAgIFN5c2NhbGxTZXRzOjpJc1By Y3RsKHN5c25vKSB8fAorICAgICAgICAgIFN5c2NhbGxTZXRzOjpJc1Byb2Nlc3NHcm91cE9yU2Vz c2lvbihzeXNubykgfHwKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysg ICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJf QklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICAgICAgIFN5c2Nh bGxTZXRzOjpJc1NvY2tldENhbGwoc3lzbm8pIHx8CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19h cm1fXykKK0BAIC0yMjcsNyArMjI4LDcgQEAgUmVzdWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBs KGludCBmc19kZW5pZWRfZXJybm8sCisgICB9CisgCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZp bmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisgICBpZiAoc3lzbm8gPT0gX19OUl9tbWFwKQorICAgICByZXR1cm4gUmVz dHJpY3RNbWFwRmxhZ3MoKTsKKyAjZW5kaWYKK0BAIC0yNDUsNyArMjQ2LDcgQEAgUmVzdWx0RXhw ciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBmc19kZW5pZWRfZXJybm8sCisgICAgIHJldHVybiBS ZXN0cmljdFByY3RsKCk7CisgCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0 X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykK KyAgIGlmIChzeXNubyA9PSBfX05SX3NvY2tldHBhaXIpIHsKKyAgICAgLy8gT25seSBhbGxvdyBB Rl9VTklYLCBQRl9VTklYLiBDcmFzaCBpZiBhbnl0aGluZyBlbHNlIGlzIHNlZW4uCisgICAgIHN0 YXRpY19hc3NlcnQoQUZfVU5JWCA9PSBQRl9VTklYLAorQEAgLTI4NSw3ICsyODYsOCBAQCBSZXN1 bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywKKyAgIH0KKyAK KyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgaWYgKFN5c2NhbGxTZXRzOjpJc1NvY2tldENh bGwoc3lzbm8pKQorICAgICByZXR1cm4gUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpOworICNl bmRpZgorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxp bmVfcG9saWN5X3VuaXR0ZXN0LmNjIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9i YXNlbGluZV9wb2xpY3lfdW5pdHRlc3QuY2MKK2luZGV4IDAxYzA0NmRkYS4uN2U1YTZiZTgyIDEw MDY0NAorLS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xp Y3lfdW5pdHRlc3QuY2MKKysrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFz ZWxpbmVfcG9saWN5X3VuaXR0ZXN0LmNjCitAQCAtMzAyLDcgKzMwMiw3IEBAIFRFU1RfQkFTRUxJ TkVfU0lHU1lTKF9fTlJfc3lzaW5mbykKKyBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3N5c2xv ZykKKyBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3RpbWVyX2NyZWF0ZSkKKyAKKy0jaWYgIWRl ZmluZWQoX19hYXJjaDY0X18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfZXZlbnRmZCkKKyBU RVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX2lub3RpZnlfaW5pdCkKKyBURVNUX0JBU0VMSU5FX1NJ R1NZUyhfX05SX3ZzZXJ2ZXIpCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjIHNhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCitp bmRleCAyYTk3ZDM5MTYuLjhlODFhYTZjZiAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5jYworKysrIHNh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJp Y3Rpb25zLmNjCitAQCAtNDAsNyArNDAsOCBAQAorICNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Cisg I2lmIChkZWZpbmVkKE9TX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1NfTEFDUk9TKSkg JiYgXAorICAgICAhZGVmaW5lZChfX2FybV9fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykgJiYg ICAgICAgICAgIFwKKy0gICAgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkKKysgICAg IWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkgJiYJCQkgICAgXAorKyAgICAhZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorIC8vIEFsc28gaW5jbHVkZSBhc20vcHRyYWNlLWFiaS5oIHNpbmNl IHB0cmFjZS5oIGluIG9sZGVyIGxpYmMgKGZvciBpbnN0YW5jZQorIC8vIHRoZSBvbmUgaW4gVWJ1 bnR1IDE2LjA0IExUUykgaXMgbWlzc2luZyBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBLgorIC8vIGFz bS9wdHJhY2UtYWJpLmggZG9lc24ndCBleGlzdCBvbiBhcm0zMiBhbmQgUFRSQUNFX0dFVF9USFJF QURfQVJFQSBpc24ndAorQEAgLTQ5LDYgKzUwLDExIEBACisgI2VuZGlmCisgI2VuZGlmICAvLyAh T1NfTkFDTF9OT05TRkkKKyAKKysvLyBPbiBQUEM2NCwgVENHRVRTIGlzIGRlZmluZWQgaW4gdGVy bXMgb2Ygc3RydWN0IHRlcm1pb3MsIHNvIHdlIG11c3QgaW5jbHVkZSB0ZXJtaW9zLmgKKysjaWZk ZWYgX19wb3dlcnBjNjRfXworKyNpbmNsdWRlIDx0ZXJtaW9zLmg+CisrI2VuZGlmCisrCisgI2lm IGRlZmluZWQoT1NfQU5EUk9JRCkKKyAKKyAjaWYgIWRlZmluZWQoRl9EVVBGRF9DTE9FWEVDKQor QEAgLTk4LDYgKzEwNCwxNSBAQCBpbmxpbmUgYm9vbCBJc0FyY2hpdGVjdHVyZU1pcHMoKSB7Cisg I2VuZGlmCisgfQorIAorK2lubGluZSBib29sIElzQXJjaGl0ZWN0dXJlUFBDNjQoKSB7CisrI2lm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIHJldHVybiB0cnVlOworKyNlbHNlCisrICByZXR1 cm4gZmFsc2U7CisrI2VuZGlmCisrfQorKworKworIC8vIFVidW50dSdzIHZlcnNpb24gb2YgZ2xp YmMgaGFzIGEgcmFjZSBjb25kaXRpb24gaW4gc2VtX3Bvc3QgdGhhdCBjYW4gY2F1c2UKKyAvLyBp dCB0byBjYWxsIGZ1dGV4KDIpIHdpdGggYm9ndXMgb3AgYXJndW1lbnRzLiBUbyB3b3JrYXJvdW5k IHRoaXMsIHdlIG5lZWQKKyAvLyB0byBhbGxvdyB0aG9zZSBmdXRleCgyKSBjYWxscyB0byBmYWls IHdpdGggRUlOVkFMLCBpbnN0ZWFkIG9mIGNyYXNoaW5nIHRoZQorQEAgLTIzOSw2ICsyNTQsOCBA QCBSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5kcygpIHsKKyAgIHVpbnQ2NF90IGtPTGFy Z2VGaWxlRmxhZyA9IE9fTEFSR0VGSUxFOworICAgaWYgKElzQXJjaGl0ZWN0dXJlWDg2XzY0KCkg fHwgSXNBcmNoaXRlY3R1cmVJMzg2KCkgfHwgSXNBcmNoaXRlY3R1cmVNaXBzKCkpCisgICAgIGtP TGFyZ2VGaWxlRmxhZyA9IDAxMDAwMDA7CisrICBlbHNlIGlmIChJc0FyY2hpdGVjdHVyZVBQQzY0 KCkpCisrICAgIGtPTGFyZ2VGaWxlRmxhZyA9IDAyMDAwMDA7CisgCisgICBjb25zdCBBcmc8aW50 PiBjbWQoMSk7CisgICBjb25zdCBBcmc8bG9uZz4gbG9uZ19hcmcoMik7CitAQCAtMjUzLDE0ICsy NzAsMjMgQEAgUmVzdWx0RXhwciBSZXN0cmljdEZjbnRsQ29tbWFuZHMoKSB7CisgICAgICAgICAg ICAgICBGX1NFVExLVywKKyAgICAgICAgICAgICAgIEZfR0VUTEssCisgICAgICAgICAgICAgICBG X0RVUEZELAorLSAgICAgICAgICAgICAgRl9EVVBGRF9DTE9FWEVDKSwKKy0gICAgICAgICAgICAg QWxsb3coKSkKKysgICAgICAgICAgICAgIEZfRFVQRkRfQ0xPRVhFQworKyNpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisrLy8gT24gUFBDNjQsIEZfU0VUTEssIEZfR0VUTEssIEZfU0VUTEtXIGFy ZSBkZWZpbmVkIGFzIHRoZSA2NC1iaXQgdmFyaWFudHMKKysvLyBidXQgZ2xpYmMgd2lsbCBzb21l dGltZXMgc3RpbGwgdXNlIHRoZSAzMi1iaXQgdmVyc2lvbnMuIEFsbG93IGJvdGguCisrICAgICAg ICAgICAgICAsCisrICAgICAgICAgICAgICA1LCAvKiBGX0dFVExLICgzMikgKi8KKysgICAgICAg ICAgICAgIDYsIC8qIEZfU0VUTEsgKDMyKSAqLworKyAgICAgICAgICAgICAgNyAgLyogRl9TRVRM S1cgKDMyKSAqLworKyNlbmRpZgorKyAgICAgICAgICAgICAgKSwKKysgICAgICAgICAgICBBbGxv dygpKQorICAgICAgIC5DYXNlKEZfU0VURkwsCisgICAgICAgICAgICAgSWYoKGxvbmdfYXJnICYg fmtBbGxvd2VkTWFzaykgPT0gMCwgQWxsb3coKSkuRWxzZShDcmFzaFNJR1NZUygpKSkKKyAgICAg ICAuRGVmYXVsdChDcmFzaFNJR1NZUygpKTsKKyB9CisgCistI2lmIGRlZmluZWQoX19pMzg2X18p IHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyBSZXN1bHRFeHByIFJlc3RyaWN0 U29ja2V0Y2FsbENvbW1hbmQoKSB7CisgICAvLyBVbmZvcnR1bmF0ZWx5LCB3ZSBhcmUgdW5hYmxl IHRvIHJlc3RyaWN0IHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8KKyAgIC8vIHNvY2tldHBhaXIoMiku IFdoaWxzdCBpbml0aWFsbHkgc291bmRpbmcgYmFkLCBpdCdzIG5vdGV3b3J0aHkgdGhhdCB2ZXJ5 CitAQCAtNDEzLDcgKzQzOSw3IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RQdHJhY2UoKSB7CisgI2Vu ZGlmCisgICByZXR1cm4gU3dpdGNoKHJlcXVlc3QpCisgICAgICAgLkNBU0VTKCgKKy0jaWYgIWRl ZmluZWQoX19hYXJjaDY0X18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgICAgICAgICAgICAgICAgUFRSQUNFX0dFVFJFR1MsIFBUUkFD RV9HRVRGUFJFR1MsIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEsCisgICAgICAgICAgICAgICAgICBQ VFJBQ0VfR0VUUkVHU0VULAorICNlbmRpZgorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jlc3RyaWN0aW9ucy5oIHNhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25z LmgKK2luZGV4IGJhNDI4OWYwNS4uOWE0ZDVhYjJkIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKKysr KyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9wYXJhbWV0ZXJzX3Jl c3RyaWN0aW9ucy5oCitAQCAtNDgsNyArNDgsNyBAQCBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpS ZXN1bHRFeHByIFJlc3RyaWN0TXByb3RlY3RGbGFncygpOworIC8vIE9fTk9OQkxPQ0sgfCBPX1NZ TkMgfCBPX0xBUkdFRklMRSB8IE9fQ0xPRVhFQyB8IE9fTk9BVElNRS4KKyBTQU5EQk9YX0VYUE9S VCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5kcygpOworIAorLSNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgLy8g UmVzdHJpY3Qgc29ja2V0Y2FsbCgyKSB0byBvbmx5IGFsbG93IHNvY2tldHBhaXIoMiksIHNlbmQo MiksIHJlY3YoMiksCisgLy8gc2VuZHRvKDIpLCByZWN2ZnJvbSgyKSwgc2h1dGRvd24oMiksIHNl bmRtc2coMikgYW5kIHJlY3Ztc2coMikuCisgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0 RXhwciBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7CitkaWZmIC0tZ2l0IHNhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2Mgc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworaW5kZXggNjQyZGY3MjA3Li4zNGY0N2Vi NzMgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxf c2V0cy5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3Nl dHMuY2MKK0BAIC0yOSw3ICsyOSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldHRp bWUoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9nZXR0 aW1lb2ZkYXk6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykg fHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgICBjYXNlIF9fTlJfdGltZToKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsKK0BA IC00NSwxMiArNDYsMTQgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQg c3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2Nsb2NrX25hbm9zbGVlcDogIC8vIFBhcmFtZXRlcnMg ZmlsdGVyZWQgYnkgUmVzdHJpY3RDbG9ja0lEKCkuCisgICAgIGNhc2UgX19OUl9jbG9ja19zZXR0 aW1lOiAgICAvLyBQcml2aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNh c2UgX19OUl9mdGltZTogIC8vIE9ic29sZXRlLgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfc2V0 dGltZW9mZGF5OiAgLy8gUHJpdmlsZWdlZC4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAor LSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8z Ml9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAg ICBjYXNlIF9fTlJfc3RpbWU6CisgI2VuZGlmCisgICAgIGRlZmF1bHQ6CitAQCAtMTE2LDcgKzEx OSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKKyAgICAg Y2FzZSBfX05SX2ZhY2Nlc3NhdDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICAgICBj YXNlIF9fTlJfZmNobW9kYXQ6CisgICAgIGNhc2UgX19OUl9mY2hvd25hdDogIC8vIFNob3VsZCBi ZSBjYWxsZWQgY2hvd25hdCA/CistI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FhcmNoNjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2 NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9uZXdmc3RhdGF0 OiAgLy8gZnN0YXRhdCgpLiBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZWxpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKyAgICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCitAQCAtMTM1LDcg KzEzOCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKKyAg ICAgY2FzZSBfX05SX21lbWZkX2NyZWF0ZToKKyAgICAgY2FzZSBfX05SX21rZGlyYXQ6CisgICAg IGNhc2UgX19OUl9ta25vZGF0OgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQorKyNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9vbGRs c3RhdDoKKyAgICAgY2FzZSBfX05SX29sZHN0YXQ6CisgI2VuZGlmCitAQCAtMTQ5LDcgKzE1Miw4 IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKKyAjZW5kaWYK KyAgICAgY2FzZSBfX05SX3N0YXRmczogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisr ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05S X3N0YXRmczY0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfc3ltbGlua2F0OgorQEAgLTE1OSw3 ICsxNjMsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZpbGVTeXN0ZW0oaW50IHN5c25vKSB7Cisg ICAgIGNhc2UgX19OUl90cnVuY2F0ZTY0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfdW5saW5r YXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX3V0aW1lOgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfdXRpbWVu c2F0OiAgLy8gTmV3LgorQEAgLTE4MSw3ICsxODYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0Fs bG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7CisgI2VuZGlmCisgICAgICAg cmV0dXJuIHRydWU7CisgLy8gVE9ETyhqbG4pOiB0aGVzZSBzaG91bGQgYmUgZGVuaWVkIGdyYWNl ZnVsbHkgYXMgd2VsbCAobW92ZWQgYmVsb3cpLgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAor KyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9mYWR2aXNlNjQ6ICAv LyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZf XykKK0BAIC0xOTQsMTEgKzIwMCwxMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRGaWxl U3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9mbG9jazogICAg ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAgICAgY2FzZSBfX05SX2ZzdGF0ZnM6ICAg IC8vIEdpdmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHdob2xlIGZpbGVzeXN0ZW0uCisgI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfZnN0 YXRmczY0OgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfZnN5bmM6ICAvLyBFUEVSTSBub3QgYSB2 YWxpZCBlcnJuby4KKy0jaWYgZGVmaW5lZChfX2kzODZfXykKKysjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfb2xkZnN0YXQ6Cisg I2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykgfHwgXAorQEAgLTIwNiw2ICsyMTMsOCBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc0FsbG93ZWRGaWxlU3lzdGVtQWNjZXNzVmlhRmQoaW50IHN5c25vKSB7CisgICAgIGNh c2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2U6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAj ZWxpZiBkZWZpbmVkKF9fYXJtX18pCisgICAgIGNhc2UgX19OUl9hcm1fc3luY19maWxlX3Jhbmdl OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyAgICBjYXNlIF9fTlJfc3luY19maWxlX3JhbmdlMjogLy8gRVBFUk0gbm90IGEgdmFs aWQgZXJybm8uCisgI2VuZGlmCisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIGZhbHNlOwor QEAgLTIzMSw3ICsyNDAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEZpbGVTeXN0ZW1B Y2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX2dldGRlbnRz NjQ6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgICBjYXNlIF9fTlJfcmVhZGRpcjoKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsK K0BAIC0yNzIsNyArMjgyLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNHZXRTaW1wbGVJZChpbnQg c3lzbm8pIHsKKyBib29sIFN5c2NhbGxTZXRzOjpJc1Byb2Nlc3NQcml2aWxlZ2VDaGFuZ2UoaW50 IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9jYXBzZXQ6Cist I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgICAgIGNhc2UgX19OUl9pb3Blcm06ICAvLyBJbnRlbCBwcml2aWxlZ2UuCisgICAgIGNh c2UgX19OUl9pb3BsOiAgICAvLyBJbnRlbCBwcml2aWxlZ2UuCisgI2VuZGlmCitAQCAtMzIzLDcg KzMzMyw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBz eXNubykgeworICAgICBjYXNlIF9fTlJfcnRfc2lncmV0dXJuOgorICAgICBjYXNlIF9fTlJfcnRf c2lndGltZWR3YWl0OgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX3NpZ2FjdGlvbjoKKyAgICAgY2FzZSBfX05SX3NpZ3Byb2NtYXNr OgorICAgICBjYXNlIF9fTlJfc2lncmV0dXJuOgorQEAgLTMzOSw3ICszNTAsOCBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc0FsbG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsKKyAjZW5kaWYK KyAgICAgY2FzZSBfX05SX3NpZ25hbGZkNDoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zaWdwZW5kaW5nOgorICAgICBjYXNlIF9f TlJfc2lnc3VzcGVuZDoKKyAjZW5kaWYKK0BAIC0zNjMsNyArMzc1LDcgQEAgYm9vbCBTeXNjYWxs U2V0czo6SXNBbGxvd2VkT3BlcmF0aW9uT25GZChpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAg Y2FzZSBfX05SX2R1cDM6CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18p CisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAg ICAgY2FzZSBfX05SX3NodXRkb3duOgorICNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAg LTM5Nyw3ICs0MDksNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRP ckRlYXRoKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfbWVtYmFycmllcjoKKyAgICAgY2Fz ZSBfX05SX3dhaXQ0OgorICAgICBjYXNlIF9fTlJfd2FpdGlkOgorLSNpZiBkZWZpbmVkKF9faTM4 Nl9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg ICAgIGNhc2UgX19OUl93YWl0cGlkOgorICNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAg LTQxNCw3ICs0MjYsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRP ckRlYXRoKGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRy ZXNzOgorICAgICBjYXNlIF9fTlJfdW5zaGFyZToKKy0jaWYgIWRlZmluZWQoX19taXBzX18pICYm ICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmlu ZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05S X3Zmb3JrOgorICNlbmRpZgorICAgICBkZWZhdWx0OgorQEAgLTQ2Myw3ICs0NzUsNyBAQCBib29s IFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKKyAg ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgZGVmYXVsdDoKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVm aW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc29ja2V0cGFpcjogIC8vIFdlIHdpbGwgd2Fu dCB0byBpbnNwZWN0IGl0cyBhcmd1bWVudC4KKyAjZW5kaWYKKyAgICAgICByZXR1cm4gZmFsc2U7 CitAQCAtNDczLDcgKzQ4NSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldE9yTW9k aWZ5U29ja2V0KGludCBzeXNubykgeworIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkR2V0T3JN b2RpZnlTb2NrZXQoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgI2lmIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2FjY2VwdDoKKyAgICAg Y2FzZSBfX05SX2FjY2VwdDQ6CisgICAgIGNhc2UgX19OUl9iaW5kOgorQEAgLTQ4OCw3ICs1MDAs OCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNu bykgeworIH0KKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAg KGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklU UykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIC8vIEJpZyBtdWx0aXBsZXhp bmcgc3lzdGVtIGNhbGwgZm9yIHNvY2tldHMuCisgYm9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRD YWxsKGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworQEAgLTUwMiw3ICs1MTUsOCBA QCBib29sIFN5c2NhbGxTZXRzOjpJc1NvY2tldENhbGwoaW50IHN5c25vKSB7CisgfQorICNlbmRp ZgorIAorLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVm aW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJt X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorIGJvb2wgU3lzY2FsbFNldHM6OklzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNu bykgeworICAgc3dpdGNoIChzeXNubykgeworICAgICBjYXNlIF9fTlJfZ2V0cGVlcm5hbWU6CitA QCAtNTI3LDcgKzU0MSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEFkZHJlc3NTcGFj ZUFjY2VzcyhpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX21pbmNvcmU6CisgICAgIGNhc2Ug X19OUl9tbG9ja2FsbDoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18p CisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAg ICAgY2FzZSBfX05SX21tYXA6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX19hcm1fXykgfHwgXAorQEAgLTU1Nyw3ICs1NzEsOCBAQCBib29sIFN5c2NhbGxTZXRz OjpJc0FsbG93ZWRHZW5lcmFsSW8oaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7Cisg ICAgIGNhc2UgX19OUl9sc2VlazoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9fbGxzZWVrOgorICNlbmRpZgorICNpZiAhZGVmaW5l ZChfX2FhcmNoNjRfXykKK0BAIC01NjksMjYgKzU4NCwyOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRHZW5lcmFsSW8oaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9yZWFkdjoKKyAg ICAgY2FzZSBfX05SX3ByZWFkNjQ6CisgI2lmIGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNl IF9fTlJfcmVjdjoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNo NjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgICBjYXNlIF9fTlJfcmVjdmZyb206ICAvLyBDb3VsZCBzcGVjaWZ5IHNvdXJjZS4KKyAg ICAgY2FzZSBfX05SX3JlY3Ztc2c6ICAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCisgI2VuZGlm CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgICAgIGNhc2UgX19OUl9zZWxlY3Q6CisgI2VuZGlmCistI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9fbmV3c2VsZWN0OgorICNl bmRpZgorICNpZiBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NlbmQ6CisgI2Vu ZGlmCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05S X3NlbmRtc2c6ICAvLyBDb3VsZCBzcGVjaWZ5IGRlc3RpbmF0aW9uLgorICAgICBjYXNlIF9fTlJf c2VuZHRvOiAgIC8vIENvdWxkIHNwZWNpZnkgZGVzdGluYXRpb24uCisgI2VuZGlmCitAQCAtNjQ1 LDcgKzY2Miw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEJhc2ljU2NoZWR1bGVyKGlu dCBzeXNubykgeworICAgICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9fTlJfZ2V0cHJpb3Jp dHk6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBj YXNlIF9fTlJfbmljZToKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX3NldHByaW9yaXR5OgorQEAg LTY1Nyw3ICs2NzUsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxl cihpbnQgc3lzbm8pIHsKKyBib29sIFN5c2NhbGxTZXRzOjpJc0FkbWluT3BlcmF0aW9uKGludCBz eXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkp ICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2JkZmx1c2g6CisgI2VuZGlmCisgICAg IGNhc2UgX19OUl9rZXhlY19sb2FkOgorQEAgLTY3Myw3ICs2OTIsOCBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc0FkbWluT3BlcmF0aW9uKGludCBzeXNubykgeworIAorIGJvb2wgU3lzY2FsbFNldHM6 OklzS2VybmVsTW9kdWxlKGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworLSNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBz X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNh c2UgX19OUl9jcmVhdGVfbW9kdWxlOgorICAgICBjYXNlIF9fTlJfZ2V0X2tlcm5lbF9zeW1zOiAg Ly8gU2hvdWxkIEVOT1NZUy4KKyAgICAgY2FzZSBfX05SX3F1ZXJ5X21vZHVsZToKK0BAIC03MDYs NyArNzI2LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGc0NvbnRyb2woaW50IHN5c25vKSB7Cisg ICAgIGNhc2UgX19OUl9zd2Fwb2ZmOgorICAgICBjYXNlIF9fTlJfc3dhcG9uOgorICNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl91bW91bnQ6CisgI2VuZGlmCisgICAgIGNh c2UgX19OUl91bW91bnQyOgorQEAgLTcyMiw3ICs3NDMsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c051bWEoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9nZXRjcHU6CisgICAgIGNhc2UgX19O Ul9tYmluZDoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAg IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2Fz ZSBfX05SX21pZ3JhdGVfcGFnZXM6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9tb3ZlX3BhZ2Vz OgorQEAgLTc1MSwxNCArNzcyLDE1IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsUHJvY2Vz c0Vudmlyb25tZW50KGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICAgICBjYXNl IF9fTlJfYWNjdDogIC8vIFByaXZpbGVnZWQuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9nZXRybGltaXQ6CisgI2VuZGlmCistI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2Ug X19OUl91Z2V0cmxpbWl0OgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCist ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAg IGNhc2UgX19OUl91bGltaXQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9nZXRydXNhZ2U6CitA QCAtNzkyLDcgKzgxNCw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsU3lzdGVtU3RhdHVz KGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc3lzaW5mbzoKKyAgICAgY2Fz ZSBfX05SX3VuYW1lOgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQorKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9vbGR1bmFtZToK KyAgICAgY2FzZSBfX05SX29sZG9sZHVuYW1lOgorICNlbmRpZgorQEAgLTg1NCw4ICs4NzYsMTYg QEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WU2VtYXBob3JlcyhpbnQgc3lzbm8pIHsKKyB9 CisgI2VuZGlmCisgCisrLyogc2hpdHR5IGhhY2sgYXJvdW5kIFZvaWQncyA0LjE5IGtlcm5lbCBo ZWFkZXJzIG1pc3NpbmcgdGhvc2UgbnVtYmVycyAqLworKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pICYmICFkZWZpbmVkKF9fTlJfc2htZ2V0KQorKyNkZWZpbmUgX19OUl9zaG1nZXQgMzk1Cisr I2RlZmluZSBfX05SX3NobWN0bCAzOTYKKysjZGVmaW5lIF9fTlJfc2htYXQgMzk3CisrI2RlZmlu ZSBfX05SX3NobWR0IDM5OAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XAorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8 IFwKKyAgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9D UFVfNjRfQklUUykpCisgLy8gVGhlc2UgZ2l2ZSBhIGxvdCBvZiBhbWJpZW50IGF1dGhvcml0eSBh bmQgYnlwYXNzIHRoZSBzZXR1aWQgc2FuZGJveC4KKyBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3Rl bVZTaGFyZWRNZW1vcnkoaW50IHN5c25vKSB7CitAQCAtODg3LDcgKzkxNyw4IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzU3lzdGVtVk1lc3NhZ2VRdWV1ZShpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAK KyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIC8vIEJpZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcg c3lzdGVtIGNhbGwuCisgYm9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WSXBjKGludCBzeXNubykg eworICAgc3dpdGNoIChzeXNubykgeworQEAgLTkwNyw3ICs5MzgsOCBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc0FueVN5c3RlbVYoaW50IHN5c25vKSB7CisgICByZXR1cm4gSXNTeXN0ZW1WTWVzc2Fn ZVF1ZXVlKHN5c25vKSB8fCBJc1N5c3RlbVZTZW1hcGhvcmVzKHN5c25vKSB8fAorICAgICAgICAg IElzU3lzdGVtVlNoYXJlZE1lbW9yeShzeXNubyk7CisgI2VsaWYgZGVmaW5lZChfX2kzODZfXykg fHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgcmV0dXJuIElzU3lzdGVtVklwYyhzeXNubyk7CisgI2VuZGlmCisgfQorQEAgLTk2MCw3 ICs5OTIsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZhTm90aWZ5KGludCBzeXNubykgeworIGJv b2wgU3lzY2FsbFNldHM6OklzVGltZXIoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7 CisgICAgIGNhc2UgX19OUl9nZXRpdGltZXI6CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisr ICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2FsYXJtOgorICNlbmRp ZgorICAgICBjYXNlIF9fTlJfc2V0aXRpbWVyOgorQEAgLTEwMTksMTggKzEwNTIsMjIgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfc3luY2Zz OgorICAgICBjYXNlIF9fTlJfdmhhbmd1cDoKKyAvLyBUaGUgc3lzdGVtIGNhbGxzIGJlbG93IGFy ZSBub3QgaW1wbGVtZW50ZWQuCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2Fmc19zeXNjYWxsOgorICNlbmRpZgor ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9icmVhazoKKyAjZW5kaWYK Ky0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgICBjYXNlIF9fTlJfZ2V0cG1zZzoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgICBjYXNlIF9fTlJfZ3R0eToKKyAgICAgY2FzZSBfX05SX2lkbGU6CisgICAgIGNhc2Ug X19OUl9sb2NrOgorQEAgLTEwMzgsMjAgKzEwNzUsMjIgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNN aXNjKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfcHJvZjoKKyAgICAgY2FzZSBfX05SX3By b2ZpbDoKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfcHV0cG1zZzoKKyAjZW5kaWYKKyAjaWYgZGVm aW5lZChfX3g4Nl82NF9fKQorICAgICBjYXNlIF9fTlJfc2VjdXJpdHk6CisgI2VuZGlmCisgI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3N0dHk6CisgI2VuZGlmCistI2lm IGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl90dXhjYWxsOgorICNlbmRpZgorLSNpZiAh ZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl92c2VydmVyOgorICNlbmRpZgorICAg ICAgIHJldHVybiB0cnVlOworZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc3lzY2FsbF9zZXRzLmggc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5 c2NhbGxfc2V0cy5oCitpbmRleCA5MjM1MzNlYzkuLjQxMWY3MmFjZCAxMDA2NDQKKy0tLSBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKKysrKyBzYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKK0BAIC00MywxMyArNDMs MTQgQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgeworICAgc3RhdGljIGJvb2wg SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pOworIAorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAvLyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRz LgorICAgc3RhdGljIGJvb2wgSXNTb2NrZXRDYWxsKGludCBzeXNubyk7CisgI2VuZGlmCisgCisg I2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19h YXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIHN0YXRpYyBib29sIElzTmV0 d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubyk7CisgI2VuZGlmCisgCitAQCAtNzYsNyAr NzcsNyBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7CisgICBzdGF0aWMgYm9v bCBJc1N5c3RlbVZTZW1hcGhvcmVzKGludCBzeXNubyk7CisgI2VuZGlmCisgI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBc CistICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykgfHwgXAorICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV82NF9CSVRTKSkKKyAgIC8vIFRoZXNlIGdpdmUgYSBsb3Qgb2YgYW1i aWVudCBhdXRob3JpdHkgYW5kIGJ5cGFzcyB0aGUgc2V0dWlkIHNhbmRib3guCisgICBzdGF0aWMg Ym9vbCBJc1N5c3RlbVZTaGFyZWRNZW1vcnkoaW50IHN5c25vKTsKK0BAIC04OCw3ICs4OSw4IEBA IGNsYXNzIFNBTkRCT1hfRVhQT1JUIFN5c2NhbGxTZXRzIHsKKyAjZW5kaWYKKyAKKyAjaWYgZGVm aW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0g Y2FsbC4KKyAgIHN0YXRpYyBib29sIElzU3lzdGVtVklwYyhpbnQgc3lzbm8pOworICNlbmRpZgor ZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2Mgc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi9zeXNjYWxsLmNjCitpbmRleCBlNDdlOThiZjUuLmQ1M2E3ZmY1NiAx MDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKKysrKyBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKK0BAIC0xOCw3ICsxOCw3IEBAIG5hbWVz cGFjZSBzYW5kYm94IHsKKyBuYW1lc3BhY2UgeworIAorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4 Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAorLSAgICBkZWZp bmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFN SUxZKSB8fCBkZWZpbmVkIChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisgLy8gTnVtYmVyIHRoYXQn cyBub3QgY3VycmVudGx5IHVzZWQgYnkgYW55IExpbnV4IGtlcm5lbCBBQklzLgorIGNvbnN0IGlu dCBrSW52YWxpZFN5c2NhbGxOdW1iZXIgPSAweDM1MWQzOworICNlbHNlCitAQCAtMzEwLDEyICsz MTAsNTYgQEAgYXNtKC8vIFdlIG5lZWQgdG8gYmUgYWJsZSB0byB0ZWxsIHRoZSBrZXJuZWwgZXhh Y3RseSB3aGVyZSB3ZSBtYWRlIGEKKyAgICAgLy8gRW50ZXIgdGhlIGtlcm5lbAorICAgICAic3Zj IDBcbiIKKyAgICAgIjI6cmV0XG4iCisrICAgICIuY2ZpX2VuZHByb2NcbiIKKysgICAgIi5zaXpl IFN5c2NhbGxBc20sIC4tU3lzY2FsbEFzbVxuIgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysgICAgIi50ZXh0XG4iCisrICAgICIuYWxpZ24gNFxuIgorKyAgICAiLnR5cGUgU3lzY2Fs bEFzbSBAZnVuY3Rpb25cbiIKKysgICAgIlN5c2NhbGxBc206XG4iCisrICAgICIuY2ZpX3N0YXJ0 cHJvY1xuIgorKworKyAgICAvLyBDaGVjayBpZiByMyBpcyBuZWdhdGl2ZQorKyAgICAiY21wZGkg MywgMFxuIgorKyAgICAiYmd0IDJmXG4iCisrCisrICAgIC8vIExvYWQgYWRkcmVzcyBvZiAzZiBp bnRvIHIzIGFuZCByZXR1cm4KKysgICAgIm1mbHIgMTBcbiIKKysgICAgImJsIDFmXG4iCisrICAg ICIxOiBtZmxyIDNcbiIKKysgICAgIm10bHIgMTBcbiIKKysgICAgImFkZGkgMywgMywgNCoxM1xu IgorKyAgICAiYmxyXG4iCisrCisrICAgIC8vIExvYWQgYXJndW1lbnRzIGZyb20gYXJyYXkgaW50 byByMy04CisrICAgIC8vIHNhdmUgcGFyYW0gMyBpbiByMTAKKysgICAgIjI6XG4iCisrICAgICJt ciAwLCAzXG4iCisrICAgICJsZCAzLCAwKDQpXG4iCisrICAgICJsZCA1LCAxNig0KVxuIgorKyAg ICAibGQgNiwgMjQoNClcbiIKKysgICAgImxkIDcsIDMyKDQpXG4iCisrICAgICJsZCA4LCA0MCg0 KVxuIgorKyAgICAibGQgNCwgOCg0KVxuIgorKyAgICAibGkgOSwgMFxuIgorKworKyAgICAvLyBF bnRlciBrZXJuZWwKKysgICAgInNjXG4iCisrCisrICAgIC8vIE1hZ2ljIHJldHVybiBhZGRyZXNz CisrICAgICIzOlxuIgorKyAgICAvLyBMaWtlIE1JUFMsIHBwYzY0IHJldHVybiB2YWx1ZXMgYXJl IGFsd2F5cyBwb3NpdGl2ZS4KKysgICAgLy8gQ2hlY2sgZm9yIGVycm9yIGluIGNyMC5TTyBhbmQg bmVnYXRlIHVwb24gZXJyb3IKKysgICAgImJjIDQsIDMsIDRmXG4iCisrICAgICJuZWcgMywgM1xu IgorKyAgICAiNDogYmxyXG4iCisrCisgICAgICIuY2ZpX2VuZHByb2NcbiIKKyAgICAgIi5zaXpl IFN5c2NhbGxBc20sIC4tU3lzY2FsbEFzbVxuIgorICNlbmRpZgorICAgICApOyAgLy8gYXNtCisg CistI2lmIGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgZXh0ZXJuICJDIiB7CisgaW50cHRyX3QgU3lzY2FsbEFz bShpbnRwdHJfdCBuciwgY29uc3QgaW50cHRyX3QgYXJnc1s2XSk7CisgfQorQEAgLTQyOSw2ICs0 NzMsOCBAQCBpbnRwdHJfdCBTeXNjYWxsOjpDYWxsKGludCBuciwKKyAgICAgcmV0ID0gaW5vdXQ7 CisgICB9CisgCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgaW50cHRyX3QgcmV0 ID0gU3lzY2FsbEFzbShuciwgYXJncyk7CisgI2Vsc2UKKyAjZXJyb3IgIlVuaW1wbGVtZW50ZWQg YXJjaGl0ZWN0dXJlIgorICNlbmRpZgorQEAgLTQ0NSw4ICs0OTEsMTggQEAgdm9pZCBTeXNjYWxs OjpQdXRWYWx1ZUluVWNvbnRleHQoaW50cHRyX3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7 CisgICAgIC8vIG5lZWRzIHRvIGJlIGNoYW5nZWQgYmFjay4KKyAgICAgcmV0X3ZhbCA9IC1yZXRf dmFsOworICAgICBTRUNDT01QX1BBUk00KGN0eCkgPSAxOworLSAgfSBlbHNlCisrICB9IGVsc2Ug eworICAgICBTRUNDT01QX1BBUk00KGN0eCkgPSAwOworKyAgfQorKyNlbmRpZgorKyNpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisrICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQgdG8gaW52ZXJ0IHJl dCBhbmQgc2V0IGVycm9yIHJlZ2lzdGVyIChjcjAuU08pCisrICBpZiAocmV0X3ZhbCA8PSAtMSAm JiByZXRfdmFsID49IC00MDk1KSB7CisrICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKKysgICAgY3R4 LT51Y19tY29udGV4dC5yZWdzLT5jY3IgfD0gKDEgPDwgMjgpOworKyAgfSBlbHNlIHsKKysgICAg Y3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4KTsKKysgIH0KKyAjZW5kaWYK KyAgIFNFQ0NPTVBfUkVTVUxUKGN0eCkgPSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwpOwor IH0KK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjIHNhbmRib3gv bGludXgvc2VjY29tcC1icGYvdHJhcC5jYworaW5kZXggZjViODZhNzNhLi41ZTZjNGEwNjggMTAw NjQ0CistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCisrKysgc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi90cmFwLmNjCitAQCAtMjMyLDYgKzIzMiwyMCBAQCB2b2lkIFRyYXA6 OlNpZ1N5cyhpbnQgbnIsIExpbnV4U2lnSW5mbyogaW5mbywgdWNvbnRleHRfdCogY3R4KSB7Cisg ICAgICAgU2V0SXNJblNpZ0hhbmRsZXIoKTsKKyAgICAgfQorIAorKyNpZiBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisrICAgIC8vIE9uIHBwYzY0K2dsaWJjLCBzb21lIHN5c2NhbGxzIHNlZW0gdG8g YWNjaWRlbnRhbGx5IG5lZ2F0ZSB0aGUgZmlyc3QKKysgICAgLy8gcGFyYW1ldGVyIHdoaWNoIGNh dXNlcyBjaGVja3MgYWdhaW5zdCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQorKyAgICAv LyBuZWdhdGUgdGhlbSBiYWNrLgorKyAgICAvLyBUT0RPKHNoYXduQGFuYXN0YXMuaW8pOiBpbnZl c3RpZ2F0ZSB0aGlzIGlzc3VlIGZ1cnRoZXIKKysgICAgYXV0byBuciA9IFNFQ0NPTVBfU1lTQ0FM TChjdHgpOworKyAgICBpZiAobnIgPT0gX19OUl9vcGVuYXQgfHwgbnIgPT0gX19OUl9ta2RpcmF0 IHx8IG5yID09IF9fTlJfZmFjY2Vzc2F0IHx8IG5yID09IF9fTlJfcmVhZGxpbmthdCB8fAorKyAg ICAgICAgbnIgPT0gX19OUl9yZW5hbWVhdCB8fCBuciA9PSBfX05SX3JlbmFtZWF0MiB8fCBuciA9 PSBfX05SX25ld2ZzdGF0YXQgfHwgbnIgPT0gX19OUl91bmxpbmthdCkgeworKyAgICAgICAgaWYg KHN0YXRpY19jYXN0PGludD4oU0VDQ09NUF9QQVJNMShjdHgpKSA+IDApIHsKKysgICAgICAgICAg ICBTRUNDT01QX1BBUk0xKGN0eCkgPSAtU0VDQ09NUF9QQVJNMShjdHgpOworKyAgICAgICAgfQor KyAgICB9CisrI2VuZGlmCisrCisgICAgIC8vIENvcHkgdGhlIHNlY2NvbXAtc3BlY2lmaWMgZGF0 YSBpbnRvIGEgYXJjaF9zZWNjb21wX2RhdGEgc3RydWN0dXJlLiBUaGlzCisgICAgIC8vIGlzIHdo YXQgd2UgYXJlIHNob3dpbmcgdG8gVHJhcEZuYyBjYWxsYmFja3MgdGhhdCB0aGUgc3lzdGVtIGNh bGwKKyAgICAgLy8gZXZhbHVhdG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJveC4KK2RpZmYg LS1naXQgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYyBzYW5kYm94L2xpbnV4 L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCitpbmRleCBkN2I1ZDhjNDQuLjRhZGM2ZDBkNCAxMDA2 NDQKKy0tLSBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCisrKysgc2FuZGJv eC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYworQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBD aHJvb3RUb1NhZmVFbXB0eURpcigpIHsKKyAgIHBpZF90IHBpZCA9IC0xOworICAgYWxpZ25hcygx NikgY2hhciBzdGFja19idWZbUFRIUkVBRF9TVEFDS19NSU5dOworICNpZiBkZWZpbmVkKEFSQ0hf Q1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAorLSAg ICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyAgIC8vIFRoZSBz dGFjayBncm93cyBkb3dud2FyZC4KKyAgIHZvaWQqIHN0YWNrID0gc3RhY2tfYnVmICsgc2l6ZW9m KHN0YWNrX2J1Zik7CisgI2Vsc2UKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9z eXNjYWxsX3dyYXBwZXJzLmNjIHNhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVy cy5jYworaW5kZXggZmNmZDJhYTEyLi5mNmViMzJmYjcgMTAwNjQ0CistLS0gc2FuZGJveC9saW51 eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBwZXJzLmNjCisrKysgc2FuZGJveC9saW51eC9zZXJ2aWNl cy9zeXNjYWxsX3dyYXBwZXJzLmNjCitAQCAtNTgsNyArNTgsNyBAQCBsb25nIHN5c19jbG9uZSh1 bnNpZ25lZCBsb25nIGZsYWdzLAorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl82NCkKKyAgIHJl dHVybiBzeXNjYWxsKF9fTlJfY2xvbmUsIGZsYWdzLCBjaGlsZF9zdGFjaywgcHRpZCwgY3RpZCwg dGxzKTsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4NikgfHwgZGVmaW5lZChBUkNIX0NQVV9B Uk1fRkFNSUxZKSB8fCBcCistICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisrICAg IGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRf RkFNSUxZKQorICAgLy8gQ09ORklHX0NMT05FX0JBQ0tXQVJEUyBkZWZpbmVkLgorICAgcmV0dXJu IHN5c2NhbGwoX19OUl9jbG9uZSwgZmxhZ3MsIGNoaWxkX3N0YWNrLCBwdGlkLCB0bHMsIGN0aWQp OworICNlbmRpZgorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tl cl9wcm9jZXNzLmNjIHNhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3Mu Y2MKK2luZGV4IGQ3MmM5ZDIzOC4uNzdmMWQ5NWY1IDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgv c3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3MuY2MKKysrKyBzYW5kYm94L2xpbnV4L3N5c2Nh bGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjCitAQCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgQnJv a2VyUHJvY2Vzczo6SXNTeXNjYWxsQnJva2VyYWJsZShpbnQgc3lzbm8sIGJvb2wgZmFzdF9jaGVj aykgY29uc3QgeworICNpZiBkZWZpbmVkKF9fTlJfZnN0YXRhdDY0KQorICAgICBjYXNlIF9fTlJf ZnN0YXRhdDY0OgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQo X19hYXJjaDY0X18pCisrI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfbmV3ZnN0YXRh dDoKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gIWZhc3RfY2hlY2sgfHwgYWxsb3dlZF9jb21tYW5k X3NldF8udGVzdChDT01NQU5EX1NUQVQpOworZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3N5c3Rl bV9oZWFkZXJzL2xpbnV4X3NlY2NvbXAuaCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3NlY2NvbXAuaAoraW5kZXggMWZhNDdlZDA5Li4zOWNjOWFiNTMgMTAwNjQ0CistLS0gc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKKysrKyBzYW5kYm94L2xp bnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NlY2NvbXAuaAorQEAgLTQxLDYgKzQxLDkgQEAKKyAj aWZuZGVmIEVNX0FBUkNINjQKKyAjZGVmaW5lIEVNX0FBUkNINjQgMTgzCisgI2VuZGlmCisrI2lm bmRlZiBFTV9QUEM2NAorKyNkZWZpbmUgRU1fUFBDNjQgMjEKKysjZW5kaWYKKyAKKyAjaWZuZGVm IF9fQVVESVRfQVJDSF82NEJJVAorICNkZWZpbmUgX19BVURJVF9BUkNIXzY0QklUIDB4ODAwMDAw MDAKK0BAIC03Myw2ICs3NiwxMiBAQAorICNpZm5kZWYgQVVESVRfQVJDSF9BQVJDSDY0CisgI2Rl ZmluZSBBVURJVF9BUkNIX0FBUkNINjQgKEVNX0FBUkNINjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQg fCBfX0FVRElUX0FSQ0hfTEUpCisgI2VuZGlmCisrI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0Cisr I2RlZmluZSBBVURJVF9BUkNIX1BQQzY0IChFTV9QUEM2NCB8IF9fQVVESVRfQVJDSF82NEJJVCkK KysjZW5kaWYKKysjaWZuZGVmIEFVRElUX0FSQ0hfUFBDNjRMRQorKyNkZWZpbmUgQVVESVRfQVJD SF9QUEM2NExFIChFTV9QUEM2NCB8IF9fQVVESVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9M RSkKKysjZW5kaWYKKyAKKyAvLyBGb3IgcHJjdGwuaAorICNpZm5kZWYgUFJfU0VUX1NFQ0NPTVAK K2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaCBz YW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oCitpbmRleCBmNWE3MzY3 NjEuLjUxNWIyMWE1ZiAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3NpZ25hbC5oCisrKysgc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWdu YWwuaAorQEAgLTEzLDcgKzEzLDcgQEAKKyAvLyAobm90IHVuZGVmaW5lZCwgYnV0IGRlZmluZWQg ZGlmZmVyZW50IHZhbHVlcyBhbmQgaW4gZGlmZmVyZW50IG1lbW9yeQorIC8vIGxheW91dHMpLiBT bywgZmlsbCB0aGUgZ2FwIGhlcmUuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJj aDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAKKyAjZGVmaW5lIExJTlVYX1NJR0hVUCAxCisgI2RlZmluZSBMSU5VWF9TSUdJTlQgMgor ZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgg c2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oCitpbmRleCAyYjc4 YTBjYzMuLjBhNzBmNWVhNSAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJz L2xpbnV4X3N5c2NhbGxzLmgKKysrKyBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4 X3N5c2NhbGxzLmgKK0BAIC0zNSw1ICszNSw5IEBACisgI2luY2x1ZGUgInNhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvYXJtNjRfbGludXhfc3lzY2FsbHMuaCIKKyAjZW5kaWYKKyAKKysjaWYg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiCisrI2VuZGlmCisrCisgI2VuZGlmICAvLyBT QU5EQk9YX0xJTlVYX1NZU1RFTV9IRUFERVJTX0xJTlVYX1NZU0NBTExTX0hfCisgCitkaWZmIC0t Z2l0IHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaCBzYW5kYm94 L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3Vjb250ZXh0LmgKK2luZGV4IDIyY2U3ODAyNy4u YTY5YjAyNGMyIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhf dWNvbnRleHQuaAorKysrIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRl eHQuaAorQEAgLTExLDYgKzExLDggQEAKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9hcm1fbGludXhfdWNvbnRleHQuaCIKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQor ICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2kzODZfbGludXhfdWNvbnRl eHQuaCIKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2luY2x1ZGUgInNhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCIKKyAjZWxzZQorICNl cnJvciAiTm8gc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gUE5hQ2wgaGVhZGVyIgor ICNlbmRpZgorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xp bnV4X3N5c2NhbGxzLmggc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9z eXNjYWxscy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi5jY2FjZmZl MjIKKy0tLSAvZGV2L251bGwKKysrKyBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0 X2xpbnV4X3N5c2NhbGxzLmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDb3B5cmlnaHQgMjAxNCBU aGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhp cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu IGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIFNBTkRCT1hf TElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysjZGVmaW5lIFNB TkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysKKysj aW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorKworKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJl ZGVmaW5lIHN5c2NhbGwgbnVtYmVycyBmb3IgUFBDNjQ/CisrCisrI2VuZGlmICAvLyBTQU5EQk9Y X0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCitkaWZmIC0tZ2l0 IHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCBzYW5k Ym94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAuLjA3NzI4ZTA4NworLS0tIC9kZXYvbnVsbAor KysrIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaAor QEAgLTAsMCArMSwxMiBAQAorKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3Jz LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0 aGUgTElDRU5TRSBmaWxlLgorKworKyNpZm5kZWYgU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVS U19QUEM2NF9MSU5VWF9VQ09OVEVYVF9IXworKyNkZWZpbmUgU0FOREJPWF9MSU5VWF9TWVNURU1f SEVBREVSU19QUEM2NF9MSU5VWF9VQ09OVEVYVF9IXworKworKyNpbmNsdWRlIDxzeXMvdWNvbnRl eHQuaD4KKysKKysvL1RPRE86IGlzIGl0IG5lY2Vzc2FyeSB0byByZWRlZmluZSB1Y29udGV4dCBv biBQUEM2ND8KKysKKysjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBD NjRfTElOVVhfVUNPTlRFWFRfSF8KK2RpZmYgLS1naXQgc2FuZGJveC9wb2xpY3kvbGludXgvYnBm X3JlbmRlcmVyX3BvbGljeV9saW51eC5jYyBzYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVy ZXJfcG9saWN5X2xpbnV4LmNjCitpbmRleCAyNTg4ZmM3OTIuLmQ0NTVjNDYwMSAxMDA2NDQKKy0t LSBzYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCisrKysg c2FuZGJveC9wb2xpY3kvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYworQEAgLTE1 LDYgKzE1LDExIEBACisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGlu dXhfc3lzY2FsbHMuaCIKKyAjaW5jbHVkZSAic2FuZGJveC9wb2xpY3kvbGludXgvc2FuZGJveF9s aW51eC5oIgorIAorKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBz dHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAorKyNpZmRlZiBfX3Bv d2VycGM2NF9fCisrI2luY2x1ZGUgPHRlcm1pb3MuaD4KKysjZW5kaWYKKysKKyAvLyBUT0RPKHZp Z25hdHRpKTogcmVwbGFjZSB0aGUgbG9jYWwgZGVmaW5pdGlvbnMgYmVsb3cgd2l0aCAjaW5jbHVk ZQorIC8vIDxsaW51eC9kbWEtYnVmLmg+IG9uY2Uga2VybmVsIHZlcnNpb24gNC42IGJlY29tZXMg d2lkZWx5IHVzZWQuCisgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CitkaWZmIC0tZ2l0IHRoaXJk X3BhcnR5L2FuZ2xlL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmggdGhpcmRfcGFy dHkvYW5nbGUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaAoraW5kZXggM2E4MDdl MWUzLi41MjU4NjE3YTcgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYW5nbGUvc3JjL2NvbXBpbGVy L3RyYW5zbGF0b3IvSW5mb1NpbmsuaAorKysrIHRoaXJkX3BhcnR5L2FuZ2xlL3NyYy9jb21waWxl ci90cmFuc2xhdG9yL0luZm9TaW5rLmgKK0BAIC05Miw3ICs5MiwxNiBAQCBjbGFzcyBUSW5mb1Np bmtCYXNlCisgICAgICAgICAgICAgc3RyZWFtLnByZWNpc2lvbig4KTsKKyAgICAgICAgICAgICBz dHJlYW0gPDwgZjsKKyAgICAgICAgIH0KKy0gICAgICAgIHNpbmsuYXBwZW5kKHN0cmVhbS5zdHIo KSk7CisrCisrICAgICAgICAvLyBIYWNrIHRvIHdvcmsgYXJvdW5kIGEgYnVnIHdoZXJlIG5lZ2F0 aXZlIGZsb2F0aW5nIHBvaW50IHZhbHVlcworKyAgICAgICAgLy8gYXJlIHJlbmRlcmVkIGxpa2Ug Jy4wLjUnIGluc3RlYWQgb2YgJy0wLjUnCisrICAgICAgICBzdGQ6OnN0cmluZyByZXMoc3RyZWFt LnN0cigpKTsKKysKKysgICAgICAgIGlmIChzaWduYml0KGYpKSB7IC8vIHRlc3QgaWYgZiBpcyBu ZWdhdGl2ZQorKyAgICAgICAgICAgIHJlc1swXSA9ICctJzsKKysgICAgICAgIH0KKysKKysgICAg ICAgIHNpbmsuYXBwZW5kKHJlcyk7CisgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgIH0KKyAg ICAgLy8gV3JpdGUgYm9vbGVhbiB2YWx1ZXMgYXMgdGhlaXIgbmFtZXMgaW5zdGVhZCBvZiBpbnRl Z3JhbCB2YWx1ZS4KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0Nv bnN0YW50cy5oIHRoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAoraW5k ZXggZmNiYzkyNDZhLi4zOWFlNjYxNDggMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYW5nbGUvc3Jj L2xpYkFOR0xFL0NvbnN0YW50cy5oCisrKysgdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xF L0NvbnN0YW50cy5oCitAQCAtOSw2ICs5LDcgQEAKKyAjaWZuZGVmIExJQkFOR0xFX0NPTlNUQU5U U19IXworICNkZWZpbmUgTElCQU5HTEVfQ09OU1RBTlRTX0hfCisgCisrI2luY2x1ZGUgPGNzdGRk ZWY+CisgI2luY2x1ZGUgImNvbW1vbi9wbGF0Zm9ybS5oIgorIAorICNpbmNsdWRlIDxzdGRpbnQu aD4KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduIHRoaXJkX3BhcnR5 L2JvcmluZ3NzbC9CVUlMRC5nbgoraW5kZXggMTdjZjljZGE5Li44Y2U5NmJkMzIgMTAwNjQ0Cist LS0gdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCisrKysgdGhpcmRfcGFydHkvYm9yaW5n c3NsL0JVSUxELmduCitAQCAtMTAzLDYgKzEwMywxMyBAQCBpZiAoaXNfd2luICYmICFpc19tc2Fu ICYmIGN1cnJlbnRfY3B1ICE9ICJhcm02NCIpIHsKKyAgICAgICB9IGVsc2UgeworICAgICAgICAg cHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2NvbmZpZyIgXQorICAgICAgIH0KKysgICAgfSBl bHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAgICAgaWYgKGlzX2xpbnV4KSB7 CisrICAgICAgICAjIFRPRE86IHBwYzY0IChiZSkgY2hlY2sKKysgICAgICAgIHNvdXJjZXMgKz0g Y3J5cHRvX3NvdXJjZXNfbGludXhfcHBjNjRsZQorKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBw dWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBdCisrICAgICAgfQorICAgICB9IGVs c2UgeworICAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9jb25maWciIF0KKyAgICAg fQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbiB0aGlyZF9wYXJ0eS9i cmVha3BhZC9CVUlMRC5nbgoraW5kZXggNGFmM2Q3YmJmLi5hZGJmNTQxNTkgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvYnJlYWtwYWQvQlVJTEQuZ24KKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9C VUlMRC5nbgorQEAgLTU5Niw3ICs1OTYsNiBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3Mg fHwgaXNfYW5kcm9pZCkgeworICAgICAgICJicmVha3BhZC9zcmMvY2xpZW50L21pbmlkdW1wX2Zp bGVfd3JpdGVyLmgiLAorICAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2NvbnZlcnRfVVRGLmNj IiwKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9jb252ZXJ0X1VURi5oIiwKKy0gICAgICAi YnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9icmVha3BhZF9nZXRjb250ZXh0LlMiLAorICAgICAg ICJicmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuY2MiLAorICAgICAgICJi cmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaCIsCisgICAgICAgImJyZWFr cGFkL3NyYy9jb21tb24vbGludXgvZWxmdXRpbHMuY2MiLAorQEAgLTYzNCw2ICs2MzMsMTQgQEAg aWYgKGlzX2xpbnV4IHx8IGlzX2Nocm9tZW9zIHx8IGlzX2FuZHJvaWQpIHsKKyAKKyAgICAgbGli cyA9IFsgImRsIiBdCisgCisrICAgIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAg ICAgICBkZWZpbmVzID0gWyAiSEFWRV9HRVRDT05URVhUIiBdCisrICAgIH0gZWxzZSB7CisrICAg ICAgICBzb3VyY2VzICs9IFsKKysgICAgICAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51 eC9icmVha3BhZF9nZXRjb250ZXh0LlMiCisrICAgICAgICBdCisrICAgIH0KKysKKyAgICAgaW5j bHVkZV9kaXJzID0gWworICAgICAgICIuIiwKKyAgICAgICAiYnJlYWtwYWQvc3JjIiwKK0BAIC02 ODIsNyArNjg5LDYgQEAgaWYgKGlzX2xpbnV4IHx8IGlzX2Nocm9tZW9zIHx8IGlzX2FuZHJvaWQp IHsKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWlu aWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjIiwKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0X3V0aWxzLmNjIiwK KyAgICAgICAiYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvcHJvY19j cHVpbmZvX3JlYWRlcl91bml0dGVzdC5jYyIsCistICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24v bGludXgvYnJlYWtwYWRfZ2V0Y29udGV4dF91bml0dGVzdC5jYyIsCisgICAgICAgImJyZWFrcGFk L3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcF91bml0dGVzdC5jYyIsCisgICAgICAgImJy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvZmlsZV9pZF91bml0dGVzdC5jYyIsCisgICAgICAgImJy ZWFrcGFkL3NyYy9jb21tb24vbGludXgvbGludXhfbGliY19zdXBwb3J0X3VuaXR0ZXN0LmNjIiwK K2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmggdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRl eHRfY3B1LmgKK2luZGV4IDA3ZDkxNzFhMC4uOWFlZDRjYjM2IDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9u L3Jhd19jb250ZXh0X2NwdS5oCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKK0BAIC00 NCw2ICs0NCw4IEBAIHR5cGVkZWYgTURSYXdDb250ZXh0QVJNIFJhd0NvbnRleHRDUFU7CisgdHlw ZWRlZiBNRFJhd0NvbnRleHRBUk02NF9PbGQgUmF3Q29udGV4dENQVTsKKyAjZWxpZiBkZWZpbmVk KF9fbWlwc19fKQorIHR5cGVkZWYgTURSYXdDb250ZXh0TUlQUyBSYXdDb250ZXh0Q1BVOworKyNl bGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyt0eXBlZGVmIE1EUmF3Q29udGV4dFBQQzY0IFJh d0NvbnRleHRDUFU7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9y dGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24v dGhyZWFkX2luZm8uY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKK2luZGV4IGFhZTFkYzEzYi4u MDNhZmVjN2E1IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9j bGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCisrKysgdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21t b24vdGhyZWFkX2luZm8uY2MKK0BAIC0yNzAsNyArMjcwLDQyIEBAIHZvaWQgVGhyZWFkSW5mbzo6 RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7CisgICBvdXQtPmZsb2F0 X3NhdmUuZmlyID0gbWNvbnRleHQuZnBjX2VpcjsKKyAjZW5kaWYKKyB9CistI2VuZGlmICAvLyBf X21pcHNfXworKworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysKKyt1aW50cHRyX3Qg VGhyZWFkSW5mbzo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgeworKyAgICByZXR1cm4g bWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworK30KKysKKyt2b2lkIFRocmVhZEluZm86OkZpbGxD UFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3QgeworKyAgICBvdXQtPmNvbnRleHRf ZmxhZ3MgPSBNRF9DT05URVhUX1BQQzY0X0ZVTEw7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwg TURfQ09OVEVYVF9QUEM2NF9HUFJfQ09VTlQ7IGkrKykKKysgICAgICAgIG91dC0+Z3ByW2ldID0g bWNvbnRleHQuZ3BfcmVnc1tpXTsKKysKKysgICAgb3V0LT5sciA9IG1jb250ZXh0LmdwX3JlZ3Nb UFRfTE5LXTsKKysgICAgb3V0LT5zcnIwID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworKyAg ICBvdXQtPnNycjEgPSBtY29udGV4dC5ncF9yZWdzW1BUX01TUl07CisrICAgIG91dC0+Y3IgPSBt Y29udGV4dC5ncF9yZWdzW1BUX0NDUl07CisrICAgIG91dC0+eGVyID0gbWNvbnRleHQuZ3BfcmVn c1tQVF9YRVJdOworKyAgICBvdXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKysg ICAgCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBS X0NPVU5UOyBpKyspCisrICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRl eHQuZnBfcmVnc1tpXTsKKysKKysgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gbWNvbnRleHQu ZnBfcmVnc1tORlBSRUctMV07CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9S U0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCisrICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNh dmVfdnJbaV0gPSBcCisrICAgICAgICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVsw XSkgPDwgMzIpIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy52cnJlZ3NbaV1b MV0sIAorKyAgICAgICAgICAgICgoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVsyXSkgPDwgMzIp CisrICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MudnJyZWdzW2ldWzNdfTsKKysKKysg ICAgb3V0LT52cnNhdmUgPSB2cmVncy52cnNhdmU7CisrICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2 ZV92c2NyID0gezAsIHZyZWdzLnZzY3IudnNjcl93b3JkfTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2 ZS5zYXZlX3ZydmFsaWQgPSAweEZGRkZGRkZGOyAKKyt9CisrI2VuZGlmICAvLyBfX3Bvd2VycGM2 NF9fCisgCisgdm9pZCBUaHJlYWRJbmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lk KiogZ3BfcmVncywgc2l6ZV90KiBzaXplKSB7CisgICBhc3NlcnQoZ3BfcmVncyB8fCBzaXplKTsK K0BAIC0yNzksNiArMzE0LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VS ZWdpc3RlcnModm9pZCoqIGdwX3JlZ3MsIHNpemVfdCogc2l6ZSkgeworICAgICAqZ3BfcmVncyA9 IG1jb250ZXh0LmdyZWdzOworICAgaWYgKHNpemUpCisgICAgICpzaXplID0gc2l6ZW9mKG1jb250 ZXh0LmdyZWdzKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpZiAoZ3BfcmVn cykKKysgICAgKmdwX3JlZ3MgPSBtY29udGV4dC5ncF9yZWdzOworKyAgaWYgKHNpemUpCisrICAg ICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmdwX3JlZ3MpOworICNlbHNlCisgICBpZiAoZ3BfcmVn cykKKyAgICAgKmdwX3JlZ3MgPSAmcmVnczsKK0BAIC0yOTQsNiArMzM0LDExIEBAIHZvaWQgVGhy ZWFkSW5mbzo6R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90 KiBzaXplKSB7CisgICAgICpmcF9yZWdzID0gJm1jb250ZXh0LmZwcmVnczsKKyAgIGlmIChzaXpl KQorICAgICAqc2l6ZSA9IHNpemVvZihtY29udGV4dC5mcHJlZ3MpOworKyNlbGlmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKysgIGlmIChmcF9yZWdzKQorKyAgICAqZnBfcmVncyA9ICZtY29udGV4 dC5mcF9yZWdzOworKyAgaWYgKHNpemUpCisrICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZw X3JlZ3MpOworICNlbHNlCisgICBpZiAoZnBfcmVncykKKyAgICAgKmZwX3JlZ3MgPSAmZnByZWdz OworQEAgLTMwMiw0ICszNDcsMTMgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50 UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKKyAjZW5kaWYKKyB9Cisg CisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyt2b2lkIFRocmVhZEluZm86OkdldFZlY3Rv clJlZ2lzdGVycyh2b2lkKiogdl9yZWdzLCBzaXplX3QqIHNpemUpIHsKKysgICAgaWYgKHZfcmVn cykKKysgICAgICAgICp2X3JlZ3MgPSAmdnJlZ3M7CisrICAgIGlmIChzaXplKQorKyAgICAgICAg KnNpemUgPSBzaXplb2YodnJlZ3MpOworK30KKysjZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2Ug Z29vZ2xlX2JyZWFrcGFkCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmggdGhpcmRf cGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21t b24vdGhyZWFkX2luZm8uaAoraW5kZXggZmIyMTZmYTZkLi41OTNhYWM4MjIgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vdGhyZWFkX2luZm8uaAorKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmgKK0BAIC02 OCw2ICs2OCwxMCBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7CisgICAvLyBVc2UgdGhlIHN0cnVjdHVy ZXMgZGVmaW5lZCBpbiA8c3lzL3VzZXIuaD4KKyAgIHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0IHJl Z3M7CisgICBzdHJ1Y3QgdXNlcl9mcHNpbWRfc3RydWN0IGZwcmVnczsKKysjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8c3lz L3Vjb250ZXh0Lmg+LgorKyAgbWNvbnRleHRfdCBtY29udGV4dDsKKysgIHZycmVnc2V0X3QgdnJl Z3M7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAgIC8vIFVzZSB0aGUgc3RydWN0dXJlIGRl ZmluZWQgaW4gPHN5cy91Y29udGV4dC5oPi4KKyAgIG1jb250ZXh0X3QgbWNvbnRleHQ7CitAQCAt ODQsNiArODgsMTEgQEAgc3RydWN0IFRocmVhZEluZm8geworIAorICAgLy8gUmV0dXJucyB0aGUg cG9pbnRlciBhbmQgc2l6ZSBvZiBmbG9hdCBwb2ludCByZWdpc3RlciBhcmVhLgorICAgdm9pZCBH ZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpOwor KworKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAvLyBSZXR1cm5zIHRoZSBwb2ludGVy IGFuZCBzaXplIG9mIHRoZSB2ZWN0b3IgcmVnaXN0ZXIgYXJlYS4gKFBQQzY0IG9ubHkpCisrICB2 b2lkIEdldFZlY3RvclJlZ2lzdGVycyh2b2lkKiogdl9yZWdzLCBzaXplX3QqIHNpemUpOworKyNl bmRpZgorIH07CisgCisgfSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZAorZGlmZiAtLWdp dCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3Jp dGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNj CitpbmRleCA2ZWVjMWJlMjQuLjc0MTk4M2ExYSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4 dF9yZWFkZXIuY2MKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKK0BAIC0yNTQsNiAr MjU0LDQ4IEBAIHZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRD UFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIg PSB1Yy0+dWNfbWNvbnRleHQuZnBjX2VpcjsgIC8vIFVudXNlZC4KKyAjZW5kaWYKKyB9CisrCisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRl cjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisrICAgIHJldHVybiB1 Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07CisrfQorKwor K3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVj b250ZXh0X3QqIHVjKSB7CisrICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9O SVBdOworK30KKysKKyt2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250 ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250ZXh0X3QqIHVjLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IHZycmVnc2V0X3QqIHZyZWdzKSB7CisrICAgIG91dC0+Y29u dGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVMTDsKKysKKysgICAgZm9yIChpbnQgaSA9 IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT5n cHJbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tpXTsKKysKKysgICAgb3V0LT5sciA9IHVj LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0xOS107ICAgIAorKyAgICBvdXQtPnNycjAgPSB1Yy0+ dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworKyAgICBvdXQtPnNycjEgPSB1Yy0+dWNfbWNv bnRleHQuZ3BfcmVnc1tQVF9NU1JdOworKyAgICBvdXQtPmNyID0gdWMtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfQ0NSXTsKKysgICAgb3V0LT54ZXIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQ VF9YRVJdOworKyAgICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl07 CisrICAgIAorKyAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBD X0ZQUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IHVj LT51Y19tY29udGV4dC5mcF9yZWdzW2ldOworKworKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3Ig PSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07CisrCisrICAgIGZvciAoaW50IGkg PSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCisrICAgICAgICBv dXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPQorKyAgICAgICAgICAgIHsoKCh1aW50NjRfdCl2 cmVncy0+dnJyZWdzW2ldWzBdKSA8PCAzMikgCisrICAgICAgICAgICAgICAgICAgICAgICAgIHwg dnJlZ3MtPnZycmVnc1tpXVsxXSwgCisrICAgICAgICAgICAgICgoKHVpbnQ2NF90KXZyZWdzLT52 cnJlZ3NbaV1bMl0pIDw8IDMyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLT52 cnJlZ3NbaV1bM119OworKworKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLT52cnNhdmU7CisrICAg IG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyID0gezAsIHZyZWdzLT52c2NyLnZzY3Jfd29yZH07 CisrICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cnZhbGlkID0gMHhGRkZGRkZGRjsgCisrfQor KworICNlbmRpZgorIAorIH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKK2RpZmYgLS1n aXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dy aXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmggdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgK K2luZGV4IDdkNDEwMDg4MS4uYzEyMmFjOTJlIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0 X3JlYWRlci5oCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKK0BAIC01NSw2ICs1NSw5 IEBAIHN0cnVjdCBVQ29udGV4dFJlYWRlciB7CisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykK KyAgIHN0YXRpYyB2b2lkIEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3Qg dWNvbnRleHRfdCogdWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1 Y3QgZnBzaW1kX2NvbnRleHQqIGZwcmVncyk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorKyAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25z dCB1Y29udGV4dF90ICp1YywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZy cmVnc2V0X3QqIHZyZWdzKTsKKyAjZWxzZQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQo UmF3Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1Yyk7CisgI2VuZGlmCitkaWZm IC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFu ZGxlci9leGNlcHRpb25faGFuZGxlci5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK2luZGV4IGE2Y2I1 Zjk4NC4uYWUxNmI2NGQ5IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIHRoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRp b25faGFuZGxlci5jYworQEAgLTQ2MSw5ICs0NjEsMTYgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVy OjpIYW5kbGVTaWduYWwoaW50IC8qc2lnKi8sIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWMpIHsK KyAgICAgbWVtY3B5KCZnX2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRlLCBmcF9wdHIsCisgICAg ICAgICAgICBzaXplb2YoZ19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSkpOworICAgfQorKyNl bGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkg VlIgc3RhdGUKKysgIHVjb250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4dF90Kil1YzsKKysgIGlm ICh1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncykgeworKyAgICBtZW1jcHkoJmdfY3Jhc2hfY29u dGV4dF8udmVjdG9yX3N0YXRlLCB1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncywKKysgICAgICAg ICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0ZSkpOworKyAgfQorICNlbGlm ICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAvLyBGUCBz dGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBvbiBBUk0gTGludXguCistICAvLyBJbiBjYXNl IG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKysg IC8vIEluIGNhc2Ugb2YgTUlQUywgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVj b250ZXh0X3QKKyAgIC8vIGFuZCAnZmxvYXRfc3RhdGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFz aENvbnRleHQuCisgICB1Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7CisgICBp ZiAodWNfcHRyLT51Y19tY29udGV4dC5mcHJlZ3MpIHsKK0BAIC03MDgsMTEgKzcxNSwxOSBAQCBi b29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgICB9CisgI2VuZGlmCisg CistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZp bmVkKF9fYWFyY2g2NF9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykgXAorKyAgICAmJiAhZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgLy8gRlBVIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJ IHVjb250ZXh0X3QuCisgICBtZW1jcHkoJmNvbnRleHQuZmxvYXRfc3RhdGUsIGNvbnRleHQuY29u dGV4dC51Y19tY29udGV4dC5mcHJlZ3MsCisgICAgICAgICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRf c3RhdGUpKTsKKyAjZW5kaWYKKysKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8g VmVjdG9yIHJlZ2lzdGVycyBtdXN0IGJlIGNvcGllZCBvbiBQUEM2NAorKyAgbWVtY3B5KCZjb250 ZXh0LnZlY3Rvcl9zdGF0ZSwgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LnZfcmVncywKKysg ICAgICAgICBzaXplb2YoY29udGV4dC52ZWN0b3Jfc3RhdGUpKTsKKysjZW5kaWYKKysKKyAgIGNv bnRleHQudGlkID0gc3lzX2dldHRpZCgpOworIAorICAgLy8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJl YW0gdG8gdGhlIG1pbmlkdW1wIGZvciBiZXR0ZXIgcmVwb3J0aW5nLgorQEAgLTczMyw2ICs3NDgs OSBAQCBib29sIEV4Y2VwdGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgI2VsaWYgZGVm aW5lZChfX21pcHNfXykKKyAgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KKyAgICAgICByZWlu dGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQucGMpOworKyNl bGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0K KysgICAgICByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRl eHQuZ3BfcmVnc1tQVF9OSVBdKTsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3Qg YmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhj ZXB0aW9uX2hhbmRsZXIuaCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaAoraW5kZXggZjgwODQzZWE3Li4yNjBk ZDEwZjcgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmgKKysrKyB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIu aAorQEAgLTE5Miw3ICsxOTIsMTEgQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlciB7CisgICAgIHNp Z2luZm9fdCBzaWdpbmZvOworICAgICBwaWRfdCB0aWQ7ICAvLyB0aGUgY3Jhc2hpbmcgdGhyZWFk LgorICAgICB1Y29udGV4dF90IGNvbnRleHQ7CistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykg JiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAg Ly8gUFBDNjQncyBGUCBzdGF0ZSBpcyBhIHBhcnQgb2YgdWNvbnRleHRfdCBsaWtlIE1JUFMgYnV0 IHRoZSB2ZWN0b3IKKysgICAgLy8gc3RhdGUgaXMgbm90LCBzbyBhIHN0cnVjdCBpcyBuZWVkZWQu CisrICAgIHZzdGF0ZV90IHZlY3Rvcl9zdGF0ZTsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJ X18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgICAvLyAjaWZkZWYgdGhpcyBvdXQgYmVjYXVz ZSBGUCBzdGF0ZSBpcyBub3QgcGFydCBvZiB1c2VyIEFCSSBmb3IgTGludXggQVJNLgorICAgICAv LyBJbiBjYXNlIG9mIE1JUFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250 ZXh0X3Qgc28KKyAgICAgLy8gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVxdWlyZWQuCitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxl ci9leGNlcHRpb25faGFuZGxlcl91bml0dGVzdC5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3Qu Y2MKK2luZGV4IDM1ZGNiZmQ0ZC4uNzkzNDM3MGZkIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxl cl91bml0dGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlcl91bml0dGVzdC5jYworQEAgLTMwNyw3 ICszMDcsNyBAQCBURVNUKEV4Y2VwdGlvbkhhbmRsZXJUZXN0LCBQYXJhbGxlbENoaWxkQ3Jhc2hl c0RvbnRIYW5nKSB7CisgICB9CisgCisgICAvLyBXYWl0IGEgd2hpbGUgdW50aWwgdGhlIGNoaWxk IHNob3VsZCBoYXZlIGNyYXNoZWQuCistICB1c2xlZXAoMTAwMDAwMCk7CisrICB1c2xlZXAoMjAw MDAwMCk7CisgICAvLyBLaWxsIHRoZSBjaGlsZCBpZiBpdCBpcyBzdGlsbCBydW5uaW5nLgorICAg a2lsbChjaGlsZCwgU0lHS0lMTCk7CisgCitAQCAtNTU5LDYgKzU1OSw4IEBAIGNvbnN0IHVuc2ln bmVkIGNoYXIga0lsbGVnYWxJbnN0cnVjdGlvbltdID0geworICNpZiBkZWZpbmVkKF9fbWlwc19f KQorICAgLy8gbWZjMiB6ZXJvLEltcGwgLSB1c3VhbGx5IGlsbGVnYWwgaW4gdXNlcnNwYWNlLgor ICAgMHg0OCwgMHgwMCwgMHgwMCwgMHg0OAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysgIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDEgLy8gQ3Jhc2hlcyBvbiBhIHRlc3RlZCBQT1dFUjkg Y3B1CisgI2Vsc2UKKyAgIC8vIFRoaXMgY3Jhc2hlcyB3aXRoIFNJR0lMTCBvbiB4ODYveDg2LTY0 L2FybS4KKyAgIDB4ZmYsIDB4ZmYsIDB4ZmYsIDB4ZmYKK0BAIC03NTQsMTAgKzc1NiwxMCBAQCBU RVNUKEV4Y2VwdGlvbkhhbmRsZXJUZXN0LCBJbnN0cnVjdGlvblBvaW50ZXJNZW1vcnlNYXhCb3Vu ZCkgeworIAorICAgLy8gVGhlc2UgYXJlIGRlZmluZWQgaGVyZSBzbyB0aGUgcGFyZW50IGNhbiB1 c2UgdGhlbSB0byBjaGVjayB0aGUKKyAgIC8vIGRhdGEgZnJvbSB0aGUgbWluaWR1bXAgYWZ0ZXJ3 YXJkcy4KKy0gIC8vIFVzZSA0ayBoZXJlIGJlY2F1c2UgdGhlIE9TIHdpbGwgaGFuZCBvdXQgYSBz aW5nbGUgcGFnZSBldmVuCisrICAvLyBVc2UgdGhlIHBhZ2Ugc2l6ZSBoZXJlIGJlY2F1c2UgdGhl IE9TIHdpbGwgaGFuZCBvdXQgYSBzaW5nbGUgcGFnZSBldmVuCisgICAvLyBpZiBhIHNtYWxsZXIg c2l6ZSBpcyByZXF1ZXN0ZWQsIGFuZCB0aGlzIHRlc3Qgd2FudHMgdG8KKyAgIC8vIHRlc3QgdGhl IHVwcGVyIGJvdW5kIG9mIHRoZSBtZW1vcnkgcmFuZ2UuCistICBjb25zdCB1aW50MzJfdCBrTWVt b3J5U2l6ZSA9IDQwOTY7ICAvLyBieXRlcworKyAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUg PSBnZXRwYWdlc2l6ZSgpOyAgLy8gYnl0ZXMKKyAgIGNvbnN0IGludCBrT2Zmc2V0ID0ga01lbW9y eVNpemUgLSBzaXplb2Yoa0lsbGVnYWxJbnN0cnVjdGlvbik7CisgCisgICBjb25zdCBwaWRfdCBj aGlsZCA9IGZvcmsoKTsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MgdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3Jp dGVyL21pY3JvZHVtcF93cml0ZXIuY2MKK2luZGV4IGZhM2MxNzEzYS4uNmNlNzA5ZTJmIDEwMDY0 NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWlj cm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93 cml0ZXIuY2MKK0BAIC0xMzgsNyArMTM4LDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAg ICAgICAgICAgICAgICAgICBjb25zdCBNaWNyb2R1bXBFeHRyYUluZm8mIG1pY3JvZHVtcF9leHRy YV9pbmZvLAorICAgICAgICAgICAgICAgICAgIExpbnV4RHVtcGVyKiBkdW1wZXIpCisgICAgICAg OiB1Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDogTlVMTCksCistI2lmICFk ZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKysgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0 LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQorICAgICAgICAgZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29u dGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKKyAjZW5kaWYKKyAgICAgICAgIGR1bXBlcl8oZHVt cGVyKSwKK0BAIC0zMzcsNiArMzM5LDggQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAjIGVs c2UKKyAjICBlcnJvciAiVGhpcyBtaXBzIEFCSSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCAo bjMyKSIKKyAjZW5kaWYKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIGNvbnN0 IGNoYXIga0FyY2hbXSA9ICJwcGM2NCI7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMg bm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0IgorICNlbmRpZgorQEAgLTQwOSw3 ICs0MTMsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgeworICAgdm9pZCBEdW1wQ1BVU3RhdGUo KSB7CisgICAgIFJhd0NvbnRleHRDUFUgY3B1OworICAgICBteV9tZW1zZXQoJmNwdSwgMCwgc2l6 ZW9mKFJhd0NvbnRleHRDUFUpKTsKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBVQ29udGV4 dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsK KysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAg ICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCBmbG9hdF9z dGF0ZV8pOworICNlbHNlCisgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1 LCB1Y29udGV4dF8pOworQEAgLTYwNSw3ICs2MTEsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIg eworICAgdm9pZCogQWxsb2ModW5zaWduZWQgYnl0ZXMpIHsgcmV0dXJuIGR1bXBlcl8tPmFsbG9j YXRvcigpLT5BbGxvYyhieXRlcyk7IH0KKyAKKyAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVj b250ZXh0XzsKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFk Ojp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRlXzsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpm cHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsKKyAjZW5kaWYKKyAgIExpbnV4RHVtcGVyKiBk dW1wZXJfOworZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYyB0 aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93 cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYworaW5kZXggNjMzOWFjMGNkLi4yOTFh ZjEwNmIgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKKysr KyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVt cF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYworQEAgLTI3OSwxMCArMjc5LDE5 IEBAIFRFU1QoTWljcm9kdW1wV3JpdGVyVGVzdCwgQmFzaWNXaXRoTWFwcGluZ3MpIHsKKyAgIENy YXNoQW5kR2V0TWljcm9kdW1wKG1hcHBpbmdzLCBNaWNyb2R1bXBFeHRyYUluZm8oKSwgJmJ1Zik7 CisgICBBU1NFUlRfVFJVRShDb250YWluc01pY3JvZHVtcChidWYpKTsKKyAKKysgIGludCBwYWdl X3NpemUgPSBnZXRwYWdlc2l6ZSgpOworICNpZmRlZiBfX0xQNjRfXworLSAgQVNTRVJUX05FKHN0 ZDo6c3RyaW5nOjpucG9zLAorLSAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMDEw MDAgMDAwMDAwMDAwMDAwMDAyQSAwMDAwMDAwMDAwMDAxMDAwICIKKy0gICAgICAgICAgICAgICAg ICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKKysg IC8vIFRoaXMgdGVzdCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIGZvbGxvd2luZyBwYWdlIHNp emVzCisrICBBU1NFUlRfVFJVRSgocGFnZV9zaXplID09IDQwOTYpIHx8IChwYWdlX3NpemUgPT0g NjU1MzYpKTsKKysgIGlmIChwYWdlX3NpemUgPT0gNDA5NikgeyAKKysgICAgQVNTRVJUX05FKHN0 ZDo6c3RyaW5nOjpucG9zLAorKyAgICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAw MTAwMCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgorKyAgICAgICAgICAgICAg ICAgICAgICAgIjMzMjIxMTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7 CisrICB9IGVsc2UgeworKyAgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisrICAgICAg ICAgICAgICBidWYuZmluZCgiTSAwMDAwMDAwMDAwMDEwMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAw MDAwMDAwMDAxMDAwMCAiCisrICAgICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2 Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKKysgIH0KKyAjZWxzZQorICAgQVNTRVJU X05FKHN0ZDo6c3RyaW5nOjpucG9zLAorICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAxMDAw IDAwMDAwMDJBIDAwMDAxMDAwICIKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIu Y2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVt cF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKK2luZGV4IDQxNTA2ODk4My4uYjkzZTRhZmNm IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCisrKysgdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhf Y29yZV9kdW1wZXIuY2MKK0BAIC0xMTIsNiArMTEyLDkgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6 OkdldFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyogaW5mbykgewor ICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICBzdGFja19wb2ludGVyID0KKyAgICAgICByZWlu dGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01J UFNfUkVHX1NQXSk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgc3RhY2tfcG9p bnRlciA9CisrICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQu Z3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0pOworICNlbHNlCisgI2Vycm9yICJUaGlz IGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYK K0BAIC0xOTcsNyArMjAwLDEwIEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpFbnVtZXJhdGVUaHJl YWRzKCkgeworICAgICAgICAgbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoVGhyZWFkSW5mbykpOwor ICAgICAgICAgaW5mby50Z2lkID0gc3RhdHVzLT5wcl9wZ3JwOworICAgICAgICAgaW5mby5wcGlk ID0gc3RhdHVzLT5wcl9wcGlkOworLSNpZiBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDMxOyBpKyspCisr ICAgICAgICAgICAgaW5mby5tY29udGV4dC5ncF9yZWdzW2ldID0gc3RhdHVzLT5wcl9yZWdbaV07 CisrI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAg ICAgICAgIGZvciAoaW50IGkgPSBFRl9SMDsgaSA8PSBFRl9SMzE7IGkrKykKKyAgICAgICAgICAg aW5mby5tY29udGV4dC5ncmVnc1tpIC0gRUZfUjBdID0gc3RhdHVzLT5wcl9yZWdbaV07CitkaWZm IC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWlu aWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MKK2luZGV4 IDdmZDY1MzJhZC4uMTk5Y2JmZmZkIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYwor KysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYworQEAgLTc2NSw3ICs3NjUsOSBAQCBib29sIExpbnV4 RHVtcGVyOjpHZXRTdGFja0luZm8oY29uc3Qgdm9pZCoqIHN0YWNrLCBzaXplX3QqIHN0YWNrX2xl biwKKyAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnRfc3RhY2tfcG9pbnRlciAm IH4ocGFnZV9zaXplIC0gMSkpOworIAorICAgLy8gVGhlIG51bWJlciBvZiBieXRlcyBvZiBzdGFj ayB3aGljaCB3ZSB0cnkgdG8gY2FwdHVyZS4KKy0gIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0 YWNrVG9DYXB0dXJlID0gMzIgKiAxMDI0OworKyAgLy8gVGhpcyBub3cgZGVwZW5kcyBvbiBwYWdl X3NpemUgdG8gYXZvaWQgbWlzc2luZyBkYXRhCisrICAvLyBvbiBzeXN0ZW1zIHdpdGggbGFyZ2Vy IHBhZ2Ugc2l6ZXMuCisrICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IGtTdGFja1RvQ2FwdHVyZSA9 IDggKiBwYWdlX3NpemU7CisgCisgICBjb25zdCBNYXBwaW5nSW5mbyogbWFwcGluZyA9IEZpbmRN YXBwaW5nKHN0YWNrX3BvaW50ZXIpOworICAgaWYgKCFtYXBwaW5nKQorZGlmZiAtLWdpdCB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9kdW1wZXIuaCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAoraW5kZXggN2JlZTE2MGYxLi4w N2JiMmI4MWEgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmgKKysrKyB0aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51 eF9kdW1wZXIuaAorQEAgLTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7 CisgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSU8zMikKKyB0eXBlZGVm IEVsZjMyX2F1eHZfdCBlbGZfYXV4X2VudHJ5OworICNlbGlmIGRlZmluZWQoX194ODZfNjQpIHx8 IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKy0gICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBf TUlQU19TSU0gIT0gX0FCSU8zMikKKysgICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19T SU0gIT0gX0FCSU8zMikgfHwgXAorKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIHR5cGVk ZWYgRWxmNjRfYXV4dl90IGVsZl9hdXhfZW50cnk7CisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X2R1bXBlcl91bml0dGVzdF9oZWxwZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3Vu aXR0ZXN0X2hlbHBlci5jYworaW5kZXggMzMxZjRiYjM0Li4zZjcyMjk0N2YgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYworKysrIHRoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1 bXBlcl91bml0dGVzdF9oZWxwZXIuY2MKK0BAIC01MSw2ICs1MSw4IEBACisgI2RlZmluZSBUSURf UFRSX1JFR0lTVEVSICJyY3giCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAjZGVmaW5lIFRJ RF9QVFJfUkVHSVNURVIgIiQxIgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjZGVm aW5lIFRJRF9QVFJfUkVHSVNURVIgInI4IgorICNlbHNlCisgI2Vycm9yIFRoaXMgdGVzdCBoYXMg bm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0uCisgI2VuZGlmCitkaWZmIC0tZ2l0IHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYwor aW5kZXggZTNkZGI4MWE2Li5mYTI4NTc1ZWYgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNl X2R1bXBlci5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MKK0BAIC0xNDksMTkg KzE0OSwyNyBAQCBib29sIExpbnV4UHRyYWNlRHVtcGVyOjpDb3B5RnJvbVByb2Nlc3Modm9pZCog ZGVzdCwgcGlkX3QgY2hpbGQsCisgICByZXR1cm4gdHJ1ZTsKKyB9CisgCistYm9vbCBMaW51eFB0 cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkK Ky17CisrYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8q IGluZm8sIHBpZF90IHRpZCkgeworICNpZmRlZiBQVFJBQ0VfR0VUUkVHU0VUCisgICBzdHJ1Y3Qg aW92ZWMgaW87CisgICBpbmZvLT5HZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycygmaW8uaW92X2Jh c2UsICZpby5pb3ZfbGVuKTsKKy0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRp ZCwgKHZvaWQqKU5UX1BSU1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkgeworKyAgaWYgKHB0cmFj ZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZvaWQqKSZpbykg PT0gLTEpIHsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorIAorICAgaW5mby0+R2V0RmxvYXRp bmdQb2ludFJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKKy0gIGlmIChzeXNf cHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VULCAodm9pZCop JmlvKSA9PSAtMSkgeworKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lk KilOVF9GUFJFR1NFVCwgKHZvaWQqKSZpbykgPT0gLTEpIHsKKyAgICAgcmV0dXJuIGZhbHNlOwor ICAgfQorKworKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAvLyBHcmFiIHRoZSB2ZWN0 b3IgcmVnaXN0ZXJzIG9uIFBQQzY0IHRvbworKyAgaW5mby0+R2V0VmVjdG9yUmVnaXN0ZXJzKCZp by5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOworKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VU LCB0aWQsICh2b2lkKilOVF9QUENfVk1YLCAodm9pZCopJmlvKSA9PSAtMSkgeworKyAgICByZXR1 cm4gZmFsc2U7CisrICB9CisrI2VuZGlmIC8vIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysKKyAg IHJldHVybiB0cnVlOworICNlbHNlCisgICByZXR1cm4gZmFsc2U7CitAQCAtMjk4LDYgKzMwNiw5 IEBAIGJvb2wgTGludXhQdHJhY2VEdW1wZXI6OkdldFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBp bmRleCwgVGhyZWFkSW5mbyogaW5mbykgeworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICBz dGFja19wb2ludGVyID0KKyAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5t Y29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSk7CisrI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKyAgc3RhY2tfcG9pbnRlciA9CisrICAgICAgcmVpbnRlcnByZXRfY2Fz dDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19T UF0pOworICNlbHNlCisgI2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlv dXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNl X2R1bXBlcl91bml0dGVzdC5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xp ZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNj CitpbmRleCBkYTcxZTE1ZGMuLjEyYmZiMzE3YSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJh Y2VfZHVtcGVyX3VuaXR0ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0 dGVzdC5jYworQEAgLTQ2Miw2ICs0NjIsOSBAQCBURVNUKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwg VmVyaWZ5U3RhY2tSZWFkV2l0aE11bHRpcGxlVGhyZWFkcykgeworICNlbGlmIGRlZmluZWQoX19t aXBzX18pCisgICAgIHBpZF90KiBwcm9jZXNzX3RpZF9sb2NhdGlvbiA9CisgICAgICAgICByZWlu dGVycHJldF9jYXN0PHBpZF90Kj4ob25lX3RocmVhZC5tY29udGV4dC5ncmVnc1sxXSk7CisrI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBwaWRfdCogcHJvY2Vzc190aWRfbG9jYXRp b24gPQorKyAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxwaWRfdCo+KG9uZV90aHJlYWQubWNvbnRl eHQuZ3BfcmVnc1s4XSk7CisgI2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBw b3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KKyAjZW5kaWYKK0BAIC01NTksNiArNTYyLDggQEAgVEVT VF9GKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwgU2FuaXRpemVTdGFja0NvcHkpIHsKKyAgIHVpbnRw dHJfdCBoZWFwX2FkZHIgPSB0aHJlYWRfaW5mby5yZWdzLnJjeDsKKyAjZWxpZiBkZWZpbmVkKF9f bWlwc19fKQorICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0Lmdy ZWdzWzFdOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIHVpbnRwdHJfdCBoZWFw X2FkZHIgPSB0aHJlYWRfaW5mby5tY29udGV4dC5ncF9yZWdzWzhdOworICNlbHNlCisgI2Vycm9y IFRoaXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0uCisgI2VuZGlm CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYyB0aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXIuY2MKK2luZGV4IDMyNjM0ZWYwMC4uMmE1Njk0OGRlIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlk dW1wX3dyaXRlci5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYworQEAgLTEzNiw3ICsx MzYsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICAgICAgOiBmZF8obWluaWR1bXBfZmQp LAorICAgICAgICAgcGF0aF8obWluaWR1bXBfcGF0aCksCisgICAgICAgICB1Y29udGV4dF8oY29u dGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDogTlVMTCksCistI2lmICFkZWZpbmVkKF9fQVJNX0VB QklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUg OiBOVUxMKSwKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlw c19fKQorICAgICAgICAgZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3Rh dGUgOiBOVUxMKSwKKyAjZW5kaWYKKyAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKK0BAIC00Njgs NyArNDcwLDkgQEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgeworICAgICAgICAgaWYgKCFjcHUuQWxs b2NhdGUoKSkKKyAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgbXlfbWVtc2V0KGNw dS5nZXQoKSwgMCwgc2l6ZW9mKFJhd0NvbnRleHRDUFUpKTsKKy0jaWYgIWRlZmluZWQoX19BUk1f RUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorKyAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNv bnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYm ICFkZWZpbmVkKF9fbWlwc19fKQorICAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250 ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOworICNlbHNlCisgICAgICAg ICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8pOwor QEAgLTg5Nyw3ICs5MDEsNyBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICAgIGRpcmVudC0+ bG9jYXRpb24ucnZhID0gMDsKKyAgIH0KKyAKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4 Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAgIGJvb2wgV3JpdGVDUFVJbmZvcm1hdGlvbihNRFJhd1N5c3Rl bUluZm8qIHN5c19pbmZvKSB7CisgICAgIGNoYXIgdmVuZG9yX2lkW3NpemVvZihzeXNfaW5mby0+ Y3B1Lng4Nl9jcHVfaW5mby52ZW5kb3JfaWQpICsgMV0gPSB7MH07CisgICAgIHN0YXRpYyBjb25z dCBjaGFyIHZlbmRvcl9pZF9uYW1lW10gPSAidmVuZG9yX2lkIjsKK0BAIC05MTcsNyArOTIxLDkg QEAgY2xhc3MgTWluaWR1bXBXcml0ZXIgeworIAorICAgICAvLyBwcm9jZXNzb3JfYXJjaGl0ZWN0 dXJlIHNob3VsZCBhbHdheXMgYmUgc2V0LCBkbyB0aGlzIGZpcnN0CisgICAgIHN5c19pbmZvLT5w cm9jZXNzb3JfYXJjaGl0ZWN0dXJlID0KKy0jaWYgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVm aW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NDsK KysjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICMgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAg ICAgICAgIE1EX0NQVV9BUkNISVRFQ1RVUkVfTUlQUzsKKyAjIGVsaWYgX01JUFNfU0lNID09IF9B Qkk2NAorQEAgLTEzMzMsNyArMTMzOSw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKKyAgIGNv bnN0IGNoYXIqIHBhdGhfOyAgLy8gUGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgbWluaWR1bSBz aG91bGQgYmUgd3JpdHRlbi4KKyAKKyAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0 XzsgIC8vIGFsc28gZnJvbSB0aGUgc2lnbmFsIGhhbmRsZXIKKy0jaWYgIWRlZmluZWQoX19BUk1f RUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRl XzsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQor ICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsg IC8vIGRpdHRvCisgI2VuZGlmCisgICBMaW51eER1bXBlciogZHVtcGVyXzsKK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbWluaWR1bXBfd3JpdGVyLmggdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKK2luZGV4IGUz YjBiMTZkYS4uY2NkOGFhMGE0IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCisr KysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVt cF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKK0BAIC00OCw2ICs0OCw4IEBAIGNsYXNzIEV4Y2Vw dGlvbkhhbmRsZXI7CisgCisgI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCisgdHlwZWRlZiBzdHJ1 Y3QgZnBzaW1kX2NvbnRleHQgZnBzdGF0ZV90OworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyt0eXBlZGVmIHZycmVnc2V0X3QgdnN0YXRlX3Q7CisgI2VsaWYgIWRlZmluZWQoX19BUk1f RUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKyB0eXBlZGVmIHN0ZDo6cmVtb3ZlX3BvaW50 ZXI8ZnByZWdzZXRfdD46OnR5cGUgZnBzdGF0ZV90OworICNlbmRpZgorZGlmZiAtLWdpdCB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0 ZXN0LmNjCitpbmRleCBkMTkyZTVjYmIuLmZjMWJmYThkNyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5p ZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRl c3QuY2MKK0BAIC03MTUsNiArNzE1LDkgQEAgVEVTVChNaW5pZHVtcFdyaXRlclRlc3QsIEludmFs aWRTdGFja1BvaW50ZXIpIHsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgY29udGV4dC5j b250ZXh0LnVjX21jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdID0KKyAgICAg ICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KyAgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9S RUdfU1BdID0KKysgICAgICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7CisgI2Vsc2UKKyAjIGVycm9y ICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCisg I2VuZGlmCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21t b24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCitpbmRleCA5OTM2Mjk0 NWMuLmM1NGJhNzE0NSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZS5jYworKysrIHRoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCitA QCAtNjUsOCArNjUsNyBAQCBib29sIE1lbW9yeU1hcHBlZEZpbGU6Ok1hcChjb25zdCBjaGFyKiBw YXRoLCBzaXplX3Qgb2Zmc2V0KSB7CisgICB9CisgCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAorLSAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBf TUlQU19TSU0gPT0gX0FCSTY0KQorLQorKyAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19T SU0gPT0gX0FCSTY0KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICBzdHJ1Y3Qga2VybmVs X3N0YXQgc3Q7CisgICBpZiAoc3lzX2ZzdGF0KGZkLCAmc3QpID09IC0xIHx8IHN0LnN0X3NpemUg PCAwKSB7CisgI2Vsc2UKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MgdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVf dW5pdHRlc3QuY2MKK2luZGV4IGZhZDU5ZjQwYy4uNjE2NDk2ZDY3IDEwMDY0NAorLS0tIHRoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9m aWxlX3VuaXR0ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Nv bW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MKK0BAIC0xNzYsOSArMTc2 LDEwIEBAIFRFU1RfRihNZW1vcnlNYXBwZWRGaWxlVGVzdCwgUmVtYXBBZnRlck1hcCkgeworIFRF U1RfRihNZW1vcnlNYXBwZWRGaWxlVGVzdCwgTWFwV2l0aE9mZnNldCkgeworICAgLy8gUHV0IG1v cmUgZGF0YSBpbiB0aGUgdGVzdCBmaWxlIHRoaXMgdGltZS4gT2Zmc2V0cyBjYW4gb25seSBiZQor ICAgLy8gZG9uZSBvbiBwYWdlIGJvdW5kYXJpZXMsIHNvIHdlIG5lZWQgYSB0d28gcGFnZSBmaWxl IHRvIHRlc3QgdGhpcy4KKy0gIGNvbnN0IGludCBwYWdlX3NpemUgPSA0MDk2OworLSAgY2hhciBk YXRhMVsyICogcGFnZV9zaXplXTsKKy0gIHNpemVfdCBkYXRhMV9zaXplID0gc2l6ZW9mKGRhdGEx KTsKKysgIGNvbnN0IGludCBwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpOworKyAgY2hhciAqZGF0 YTEgPSBzdGF0aWNfY2FzdDxjaGFyKj4obWFsbG9jKDIgKiBwYWdlX3NpemUpKTsKKysgIEVYUEVD VF9UUlVFKGRhdGExICE9IE5VTEwpOworKyAgc2l6ZV90IGRhdGExX3NpemUgPSAoMiAqIHBhZ2Vf c2l6ZSk7CisgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRhdGExX3NpemU7ICsraSkgeworICAg ICBkYXRhMVtpXSA9IGkgJiAweDdmOworICAgfQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MgdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3Vu aXR0ZXN0LmNjCitpbmRleCA1ODAzYjkwZDUuLjJhMWNmMTRmMCAxMDA2NDQKKy0tLSB0aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRl c3QuY2MKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9y eV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKK0BAIC01Nyw4ICs1Nyw5IEBAIFRFU1QoUGFnZUFsbG9j YXRvclRlc3QsIExhcmdlT2JqZWN0KSB7CisgCisgICBFWFBFQ1RfRVEoMFUsIGFsbG9jYXRvci5w YWdlc19hbGxvY2F0ZWQoKSk7CisgICB1aW50OF90KiBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50 OF90Kj4oYWxsb2NhdG9yLkFsbG9jKDEwMDAwKSk7CisrICB1aW50NjRfdCBleHBlY3RlZF9wYWdl cyA9IDEgKyAoKDEwMDAwIC0gMSkgLyBnZXRwYWdlc2l6ZSgpKTsKKyAgIEFTU0VSVF9GQUxTRShw ID09IE5VTEwpOworLSAgRVhQRUNUX0VRKDNVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkp OworKyAgRVhQRUNUX0VRKGV4cGVjdGVkX3BhZ2VzLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVk KCkpOworICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IDEwOyArK2kpIHsKKyAgICAgdWludDhf dCogcCA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYyhpKSk7Cisg ICAgIEFTU0VSVF9GQUxTRShwID09IE5VTEwpOworZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjIHRoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGlu dXguY2MKK2luZGV4IDc5ODA1NmRmYS4uMjJiZDgxZmZmIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MK KysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRh YmlsaXR5X2xpbnV4LmNjCitAQCAtMjAyLDEyICsyMDIsMTQgQEAgYm9vbCBFeHBsb2l0YWJpbGl0 eUxpbnV4OjpFbmRlZE9uSWxsZWdhbFdyaXRlKHVpbnQ2NF90IGluc3RydWN0aW9uX3B0cikgewor ICAgLy8gQ2hlY2sgYXJjaGl0ZWN0dXJlIGFuZCBzZXQgYXJjaGl0ZWN0dXJlIHZhcmlhYmxlIHRv IGNvcnJlc3BvbmRpbmcgZmxhZworICAgLy8gaW4gb2JqZHVtcC4KKyAgIHN3aXRjaCAoY29udGV4 dC0+R2V0Q29udGV4dENQVSgpKSB7CisrI2lmIGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9f eDg2XzY0KQorICAgICBjYXNlIE1EX0NPTlRFWFRfWDg2OgorICAgICAgIGFyY2hpdGVjdHVyZSA9 ICJpMzg2IjsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBNRF9DT05URVhUX0FNRDY0OgorICAg ICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2Ong4Ni02NCI7CisgICAgICAgYnJlYWs7CisrI2VuZGlm CisgICAgIGRlZmF1bHQ6CisgICAgICAgLy8gVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLiBOb3Rl IHRoYXQgQVJNIGFyY2hpdGVjdHVyZXMgYXJlIG5vdAorICAgICAgIC8vIHN1cHBvcnRlZCBiZWNh dXNlIG9iamR1bXAgZG9lcyBub3Qgc3VwcG9ydCBBUk0uCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3Qu Y2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJp bGl0eV91bml0dGVzdC5jYworaW5kZXggNTI4ZWU1ZjIxLi43Mjc2NGQ2YzEgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0 eV91bml0dGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9j ZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MKK0BAIC0xMDQsNiArMTA0LDggQEAgRXhw bG9pdGFiaWxpdHlGb3IoY29uc3Qgc3RyaW5nJiBmaWxlbmFtZSkgeworIH0KKyAKKyBURVNUKEV4 cGxvaXRhYmlsaXR5VGVzdCwgVGVzdFdpbmRvd3NFbmdpbmUpIHsKKysvLyBUaGUgZm9sbG93aW5n IHRlc3RzIGFyZSBvbmx5IGV4ZWN1dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUu CisrI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9f eDg2XzY0KSkKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJ R0gsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImFzY2lpX3JlYWRfYXYuZG1wIikp OworICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKK0BA IC0xMzYsOSArMTM4LDEyIEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0Vu Z2luZSkgeworICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2Nsb2JiZXJf d3JpdGUuZG1wIikpOworICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJ VFlfTE9XLAorICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2NvbmRpdGlv bmFsLmRtcCIpKTsKKysjZW5kaWYKKyB9CisgCisgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRl c3RMaW51eEVuZ2luZSkgeworKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0 YWJsZSBvbiBhbiB4ODYtY2xhc3MgbGludXggbWFjaGluZS4KKysjaWYgZGVmaW5lZChfX2kzODYp IHx8IGRlZmluZWQoX194ODZfNjQpCisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBM T0lUQUJJTElUWV9JTlRFUkVTVElORywKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigi bGludXhfbnVsbF9yZWFkX2F2LmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6 OkVYUExPSVRBQklMSVRZX0hJR0gsCitAQCAtMTcxLDcgKzE3Niw4IEBAIFRFU1QoRXhwbG9pdGFi aWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0 eUZvcigibGludXhfZXhlY3V0YWJsZV9oZWFwLmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVf YnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxp dHlGb3IoImxpbnV4X2ptcF90b19tb2R1bGVfbm90X2V4ZV9yZWdpb24uZG1wIikpOworLSNpZm5k ZWYgX1dJTjMyCisrI2VuZGlmCisrI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19p Mzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6 OkVYUExPSVRBQklMSVRZX0hJR0gsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxp bnV4X3dyaXRlX3RvX25vbndyaXRhYmxlX21vZHVsZS5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29v Z2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9ISUdILAorQEAgLTE4MiwxMCArMTg4LDEwIEBA IFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKKyAgICAgICAgICAg ICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fb3V0c2lkZV9tb2R1bGVfdmlhX21h dGguZG1wIikpOworICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlf SU5URVJFU1RJTkcsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRl X3RvX3VuZGVyXzRrLmRtcCIpKTsKKy0jZW5kaWYgIC8vIF9XSU4zMgorKyNlbmRpZiAgLy8gIWRl ZmluZWQoX1dJTjMyKSAmJiAoIWRlZmluZWQoX19pMzg2KSAmJiAhZGVmaW5lZChfX3g4Nl82NCkp CisgfQorIAorLSNpZm5kZWYgX1dJTjMyCisrI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmlu ZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKyBURVNUKEV4cGxvaXRhYmlsaXR5TGlu dXhVdGlsc1Rlc3QsIERpc2Fzc2VtYmxlQnl0ZXNUZXN0KSB7CisgICBBU1NFUlRfRkFMU0UoRXhw bG9pdGFiaWxpdHlMaW51eFRlc3Q6OkRpc2Fzc2VtYmxlQnl0ZXMoIiIsIE5VTEwsIDUsIE5VTEwp KTsKKyAgIHVpbnQ4X3QgYnl0ZXNbNl0gPSB7MHhjNywgMHgwLCAweDUsIDB4MCwgMHgwLCAweDB9 OworQEAgLTMwMSw2ICszMDcsNyBAQCBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rlc3Qs IENhbGN1bGF0ZUFkZHJlc3NUZXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVfYWRkcmVzcykpOwor IH0KKy0jZW5kaWYgIC8vIF9XSU4zMgorKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAmJiAo ZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQorKworIAorIH0gIC8vIG5hbWVz cGFjZQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMv bGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL3Rvb2xzL2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCitpbmRleCBh YWRlODJjOTkuLjE5NWFhNzNmMyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKKysrKyB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVt cC0yLWNvcmUuY2MKK0BAIC03Nyw2ICs3Nyw4IEBACisgICAjZGVmaW5lIEVMRl9BUkNIICBFTV9N SVBTCisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICNkZWZpbmUgRUxGX0FSQ0ggIEVN X0FBUkNINjQKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAjZGVmaW5lIEVMRl9B UkNIICBFTV9QUEM2NAorICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9fYXJtX18pCitAQCAtODcs NiArODksOCBAQCB0eXBlZGVmIHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OworICNlbGlmIGRl ZmluZWQgKF9fbWlwc19fKQorIC8vIFRoaXMgZmlsZS1sb2NhbCB0eXBlZGVmIHNpbXBsaWZpZXMg dGhlIHNvdXJjZSBjb2RlLgorIHR5cGVkZWYgZ3JlZ3NldF90IHVzZXJfcmVnc19zdHJ1Y3Q7Cisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorK3R5cGVkZWYgc3RydWN0IHB0X3JlZ3MgdXNl cl9yZWdzX3N0cnVjdDsKKyAjZW5kaWYKKyAKKyB1c2luZyBnb29nbGVfYnJlYWtwYWQ6Ok1EVHlw ZUhlbHBlcjsKK0BAIC0zMjEsNiArMzI1LDkgQEAgc3RydWN0IENyYXNoZWRQcm9jZXNzIHsKKyAj ZW5kaWYKKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgICAgdXNlcl9mcHNpbWRfc3RydWN0 IGZwcmVnczsKKysjZW5kaWYKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBtY29u dGV4dF90IG1jb250ZXh0OworICNlbmRpZgorICAgICB1aW50cHRyX3Qgc3RhY2tfYWRkcjsKKyAg ICAgY29uc3QgdWludDhfdCogc3RhY2s7CitAQCAtNTM1LDYgKzU0MiwzOCBAQCBQYXJzZVRocmVh ZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCisgICB0aHJlYWQtPm1j b250ZXh0LmZwY19laXIgPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZpcjsKKyAjZW5kaWYKKyB9Cisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorK3N0YXRpYyB2b2lkCisrUGFyc2VUaHJlYWRS ZWdpc3RlcnMoQ3Jhc2hlZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAorKyAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IE1pbmlkdW1wTWVtb3J5UmFuZ2UmIHJhbmdlKSB7CisrICBjb25zdCBNRFJh d0NvbnRleHRQUEM2NCogcmF3cmVncyA9IHJhbmdlLkdldERhdGE8TURSYXdDb250ZXh0UFBDNjQ+ KDApOworKworKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VO VDsgaSsrKQorKyAgICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbaV0gPSByYXdyZWdzLT5ncHJb aV07CisrCisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXSA9IHJhd3JlZ3MtPmxy OworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX05JUF0gPSByYXdyZWdzLT5zcnIwOwor KyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX01TUl0gPSByYXdyZWdzLT5zcnIxOworKyAg dGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX0NDUl0gPSByYXdyZWdzLT5jcjsKKysgIHRocmVh ZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdID0gcmF3cmVncy0+eGVyOworKyAgdGhyZWFkLT5t Y29udGV4dC5ncF9yZWdzW1BUX0NUUl0gPSByYXdyZWdzLT5jdHI7CisrICB0aHJlYWQtPm1jb250 ZXh0LnZfcmVncy0+dnJzYXZlID0gcmF3cmVncy0+dnJzYXZlOworKworKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBNRF9GTE9BVElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKysgICAgICB0 aHJlYWQtPm1jb250ZXh0LmZwX3JlZ3NbaV0gPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZwcmVnc1tp XTsKKysKKysgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV0gPSByYXdyZWdzLT5m bG9hdF9zYXZlLmZwc2NyOworKworKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZF QVJFQV9QUENfVlJfQ09VTlQ7IGkrKykgeworKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdz LT52cnJlZ3NbaV1bMF0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmhpZ2ggPj4g MzI7CisrICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVsxXSA9IHJhd3Jl Z3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0uaGlnaDsKKysgICAgICB0aHJlYWQtPm1jb250ZXh0 LnZfcmVncy0+dnJyZWdzW2ldWzJdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5s b3cgPj4gMzI7CisrICAgICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVszXSA9 IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0ubG93OworKyAgfQorKworKyAgdGhyZWFk LT5tY29udGV4dC52X3JlZ3MtPnZzY3IudnNjcl93b3JkID0gcmF3cmVncy0+dmVjdG9yX3NhdmUu c2F2ZV92c2NyLmxvdyAmIDB4RkZGRkZGRkY7CisrfQorKworICNlbHNlCisgI2Vycm9yICJUaGlz IGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKKyAjZW5kaWYK K0BAIC02MjMsNiArNjYyLDEyIEBAIFBhcnNlU3lzdGVtSW5mbyhjb25zdCBPcHRpb25zJiBvcHRp b25zLCBDcmFzaGVkUHJvY2VzcyogY3Jhc2hpbmZvLAorICMgZWxzZQorICMgIGVycm9yICJUaGlz IG1pcHMgQUJJIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgorICMgZW5kaWYKKysj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpZiAoc3lzaW5mby0+cHJvY2Vzc29yX2Fy Y2hpdGVjdHVyZSAhPSBNRF9DUFVfQVJDSElURUNUVVJFX1BQQzY0KSB7CisrICAgIGZwcmludGYo c3RkZXJyLAorKyAgICAgICAgICAgICJUaGlzIHZlcnNpb24gb2YgbWluaWR1bXAtMi1jb3JlIG9u bHkgc3VwcG9ydHMgUFBDNjQuXG4iKTsKKysgICAgZXhpdCgxKTsKKysgIH0KKyAjZWxzZQorICNl cnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQi CisgI2VuZGlmCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRS SUJVVE9SUyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9DT05UUklCVVRPUlMKK2luZGV4 IDg3MjRiN2YzMi4uOGUyOTQyNGVmIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL0NPTlRSSUJVVE9SUworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NP TlRSSUJVVE9SUworQEAgLTEzLDMgKzEzLDQgQEAgTWFyayBNZW50b3ZhaSA8bWFya0BjaHJvbWl1 bS5vcmc+CisgUm9iZXJ0IFNlc2VrIDxyc2VzZWtAY2hyb21pdW0ub3JnPgorIFNjb3R0IEdyYWhh bSA8c2NvdHRtZ0BjaHJvbWl1bS5vcmc+CisgSm9zaHVhIFBlcmF6YSA8anBlcmF6YUBjaHJvbWl1 bS5vcmc+CisrU2hhd24gQW5hc3Rhc2lvIDxzaGF3bkBhbmFzdGFzLmlvPgorZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaCB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAoraW5kZXgg NmVkNzdhOThlLi4xZmQ4MzQ2OWEgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvY29tcGF0L2xpbnV4L3N5cy91c2VyLmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAorQEAgLTE1LDYgKzE1LDcgQEAKKyAjaWZu ZGVmIENSQVNIUEFEX0NPTVBBVF9MSU5VWF9TWVNfVVNFUl9IXworICNkZWZpbmUgQ1JBU0hQQURf Q09NUEFUX0xJTlVYX1NZU19VU0VSX0hfCisgCisrI2luY2x1ZGUgPGNzdGRkZWY+CisgI2luY2x1 ZGVfbmV4dCA8c3lzL3VzZXIuaD4KKyAKKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KK2RpZmYgLS1n aXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4 dC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRl eHQuaAoraW5kZXggM2EzZTYwM2NiLi4zMTE4ZDllOWYgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oCisrKysgdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oCitAQCAt NTkyLDYgKzU5Miw3MCBAQCBzdHJ1Y3QgTWluaWR1bXBDb250ZXh0TUlQUzY0IHsKKyAgIHVpbnQ2 NF90IGZpcjsKKyB9OworIAorKy8vISBcYnJpZWYgcHBjNjQtc3BlY2lmaWMgZmxhZ3MgZm9yIE1p bmlkdW1wUFBDNjQ6OmNvbnRleHRfZmxhZ3MKKysvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1X3Bw YzY0LmggZnJvbSBicmVha3BhZAorK2VudW0gTWluaWR1bXBDb250ZXh0UFBDNjRGbGFncyA6IHVp bnQzMl90IHsKKysgIC8vISBcYnJpZWYgSWRlbnRpZmllcyB0aGUgY29udGV4dCBhcyBQUEM2NC4K KysgIGtNaW5pZHVtcENvbnRleHRQUEM2NCA9IDB4MDEwMDAwMDAsCisrCisrICAvLyEgXGJyaWVm IEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KKysg IC8vIQorKyAgLy8hIFJlZ2lzdGVycyBgcjBgLWByMzFgLCBgbmlwYCwgYG1zcmAsIGBscmAsIGV0 Yy4gYXJlIHZhbGlkLgorKyAga01pbmlkdW1wQ29udGV4dFBQQzY0QmFzZSA9IGtNaW5pZHVtcENv bnRleHRQUEM2NCB8IDB4MDAwMDAwMDEsCisrCisrICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUg dmFsaWRpdHkgb2YgZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgorKyAgLy8hCisrICAvLyEgUmVn aXN0ZXJzIGBmcDBgLWBmcDMxYCwgYGZwc2NyYCBhcmUgdmFsaWQuCisrICBrTWluaWR1bXBDb250 ZXh0UFBDNjRGbG9hdGluZyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMDgsCisr CisrICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgQWx0aXZlYy9WTVggcmVn aXN0ZXJzLgorKyAgLy8hCisrICAvLyEgUmVnaXN0ZXJzIGB2MGAtYHYzMWAsIGB2c2NyYCwgYHZy c2F2ZWAuCisrICBrTWluaWR1bXBDb250ZXh0UFBDNjRWZWN0b3IgPSBrTWluaWR1bXBDb250ZXh0 UFBDNjQgfCAweDAwMDAwMDIwLAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlk aXR5IG9mIGFsbCByZWdpc3RlcnMKKysgIGtNaW5pZHVtcENvbnRleHRQUEM2NEFsbCA9IGtNaW5p ZHVtcENvbnRleHRQUEM2NEJhc2UgICAgIHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGtNaW5pZHVtcENvbnRleHRQUEM2NEZsb2F0aW5nIHwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGtNaW5pZHVtcENvbnRleHRQUEM2NFZlY3RvcgorK307CisrCisrLy8hIFxicmllZiBB IFBQQzY0IENQVSBjb250ZXh0IGNhcnJpZWQgaW4gYSBtaW5pZHVtcCBmaWxlLgorKy8vISBCYXNl ZCBvbiBtaW5pZHVtcF9jcHVfcHBjNjQuaCBmcm9tIGJyZWFrcGFkLgorK3N0cnVjdCBNaW5pZHVt cENvbnRleHRQUEM2NCB7CisrICB1aW50NjRfdCBjb250ZXh0X2ZsYWdzOworKworKyAgLy8hIFxi cmllZiBHZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXJzLgorKyAgdWludDY0X3QgbmlwOworKyAgdWlu dDY0X3QgbXNyOworKyAgdWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRfdCBjY3I7CisrICB1 aW50NjRfdCB4ZXI7CisrICB1aW50NjRfdCBsbms7CisrICB1aW50NjRfdCBjdHI7CisrCisrICAv LyEgXGJyaWVmIEZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycy4KKysgIGRvdWJsZSBmcHJlZ3NbMzJd OworKworKyAgLy8hIFxicmllZiBGUFUgc3RhdHVzIHJlZ2lzdGVyLgorKyAgZG91YmxlIGZwc2Ny OworKworKyAgLy8hIFxicmllZiBBbHRpdmVjL1ZNWCB2ZWN0b3IgcmVnaXN0ZXJzLgorKyAgc3Ry dWN0IHsKKysgICAgICAvLyEgXGJyaWVmIFZlY3RvciByZWdpc3RlcnMgYXJlIDEyOGJpdHMuCisr ICAgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92clszMl07CisrICAgICAgdWludDEyOF9zdHJ1Y3Qg c2F2ZV92c2NyOworKworKyAgICAgIC8vISBcYnJpZWYgUGFkZGluZyBpbmNsdWRlZCBmb3IgYnJl YWtwYWQgY29tcGF0aWJpbHRpeS4KKysgICAgICB1aW50MzJfdCBzYXZlX3BhZDVbNF07CisrCisr ICAgICAgLy8hIFxicmllZiBWUlNBVkUgcmVnaXN0ZXIuCisrICAgICAgdWludDMyX3Qgc2F2ZV92 cnNhdmU7CisrCisrICAgICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3Bh ZCBjb21wYXRpYmlsdGl5LgorKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNls3XTsKKysgIH0gdnJl Z3M7CisrfTsKKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAjZW5kaWYgIC8vIENS QVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfSF8KK2RpZmYgLS1naXQgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2Mg dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93 cml0ZXIuY2MKK2luZGV4IGQ3ZTUzYTQ5My4uZDg5ZWI5ZTAxIDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNj CisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29u dGV4dF93cml0ZXIuY2MKK0BAIC0xMDEsNiArMTAxLDEzIEBAIE1pbmlkdW1wQ29udGV4dFdyaXRl cjo6Q3JlYXRlRnJvbVNuYXBzaG90KGNvbnN0IENQVUNvbnRleHQqIGNvbnRleHRfc25hcHNob3Qp IHsKKyAgICAgICBicmVhazsKKyAgICAgfQorIAorKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQ UEM2NDogeworKyAgICAgIGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1pbmlkdW1wQ29udGV4 dFBQQzY0V3JpdGVyPigpOworKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWluaWR1bXBDb250ZXh0 UFBDNjRXcml0ZXIqPihjb250ZXh0LmdldCgpKQorKyAgICAgICAgICAtPkluaXRhbGl6ZUZyb21T bmFwc2hvdChjb250ZXh0X3NuYXBzaG90LT5wcGM2NCk7CisrICAgICAgYnJlYWs7CisrICAgIH0K KysKKyAgICAgZGVmYXVsdDogeworICAgICAgIExPRyhFUlJPUikgPDwgInVua25vd24gY29udGV4 dCBhcmNoaXRlY3R1cmUgIgorICAgICAgICAgICAgICAgICAgPDwgY29udGV4dF9zbmFwc2hvdC0+ YXJjaGl0ZWN0dXJlOworQEAgLTQ1Myw0ICs0NjAsNDcgQEAgc2l6ZV90IE1pbmlkdW1wQ29udGV4 dE1JUFM2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBjb25zdCB7CisgICByZXR1cm4gc2l6ZW9mKGNv bnRleHRfKTsKKyB9CisgCisrTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6Ok1pbmlkdW1wQ29u dGV4dFBQQzY0V3JpdGVyKCkKKysgIDogTWluaWR1bXBDb250ZXh0V3JpdGVyKCksIGNvbnRleHRf KCkgeworKyAgICBjb250ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFBQQzY0 OworK30KKysKKytNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6fk1pbmlkdW1wQ29udGV4dFBQ QzY0V3JpdGVyKCkgPSBkZWZhdWx0OworKworK3ZvaWQgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0 ZXI6OkluaXRhbGl6ZUZyb21TbmFwc2hvdCgKKysgICAgY29uc3QgQ1BVQ29udGV4dFBQQzY0KiBj b250ZXh0X3NuYXBzaG90KSB7CisrICBEQ0hFQ0tfRVEoc3RhdGUoKSwga1N0YXRlTXV0YWJsZSk7 CisrICBEQ0hFQ0tfRVEoY29udGV4dF8uY29udGV4dF9mbGFncywga01pbmlkdW1wQ29udGV4dFBQ QzY0KTsKKysKKysgIGNvbnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBD NjRBbGw7CisrCisrICBtZW1jcHkoY29udGV4dF8ucmVncywgY29udGV4dF9zbmFwc2hvdC0+cmVn cywgc2l6ZW9mKGNvbnRleHRfLnJlZ3MpKTsKKysgIGNvbnRleHRfLm5pcCA9IGNvbnRleHRfc25h cHNob3QtPm5pcDsKKysgIGNvbnRleHRfLm1zciA9IGNvbnRleHRfc25hcHNob3QtPm1zcjsKKysg IGNvbnRleHRfLmNjciA9IGNvbnRleHRfc25hcHNob3QtPmNjcjsKKysgIGNvbnRleHRfLnhlciA9 IGNvbnRleHRfc25hcHNob3QtPnhlcjsKKysgIGNvbnRleHRfLmxuayA9IGNvbnRleHRfc25hcHNo b3QtPmxuazsKKysgIGNvbnRleHRfLmN0ciA9IGNvbnRleHRfc25hcHNob3QtPmN0cjsKKysKKysg IG1lbWNweShjb250ZXh0Xy5mcHJlZ3MsIGNvbnRleHRfc25hcHNob3QtPmZwcmVncywgc2l6ZW9m KGNvbnRleHRfLmZwcmVncykpOworKyAgY29udGV4dF8uZnBzY3IgPSBjb250ZXh0X3NuYXBzaG90 LT5mcHNjcjsKKysKKysgIG1lbWNweShjb250ZXh0Xy52cmVncy5zYXZlX3ZyLCBjb250ZXh0X3Nu YXBzaG90LT52cmVncy5zYXZlX3ZyLAorKyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVncy5z YXZlX3ZyKSk7CisrICBtZW1jcHkoJmNvbnRleHRfLnZyZWdzLnNhdmVfdnNjciwgJmNvbnRleHRf c25hcHNob3QtPnZyZWdzLnNhdmVfdnNjciwKKysgICAgICAgICBzaXplb2YoY29udGV4dF8udnJl Z3Muc2F2ZV92c2NyKSk7CisrICBjb250ZXh0Xy52cmVncy5zYXZlX3Zyc2F2ZSA9IGNvbnRleHRf c25hcHNob3QtPnZyZWdzLnNhdmVfdnJzYXZlOworK30KKysKKytib29sIE1pbmlkdW1wQ29udGV4 dFBQQzY0V3JpdGVyOjpXcml0ZU9iamVjdCgKKysgICAgRmlsZVdyaXRlckludGVyZmFjZSogZmls ZV93cml0ZXIpIHsKKysgIERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVXcml0YWJsZSk7CisrICBy ZXR1cm4gZmlsZV93cml0ZXItPldyaXRlKCZjb250ZXh0Xywgc2l6ZW9mKGNvbnRleHRfKSk7Cisr fQorKworK3NpemVfdCBNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBj b25zdCB7CisrICBEQ0hFQ0tfR0Uoc3RhdGUoKSwga1N0YXRlRnJvemVuKTsKKysgIHJldHVybiBz aXplb2YoY29udGV4dF8pOworK30KKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKK2RpZmYg LS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29u dGV4dF93cml0ZXIuaCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5p ZHVtcF9jb250ZXh0X3dyaXRlci5oCitpbmRleCBkNGFiOTM2ZWUuLjFkMjJmYzU5YyAxMDA2NDQK Ky0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250 ZXh0X3dyaXRlci5oCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAv bWluaWR1bXBfY29udGV4dF93cml0ZXIuaAorQEAgLTMxNSw2ICszMTUsNDUgQEAgY2xhc3MgTWlu aWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1pbmlkdW1wQ29udGV4dFdy aXRlciB7CisgICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0TUlQUzY0 V3JpdGVyKTsKKyB9OworIAorK2NsYXNzIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyIGZpbmFs IDogcHVibGljIE1pbmlkdW1wQ29udGV4dFdyaXRlciB7CisrIHB1YmxpYzoKKysgIE1pbmlkdW1w Q29udGV4dFBQQzY0V3JpdGVyKCk7CisrICB+TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKSBv dmVycmlkZTsKKysKKysgIC8vISBcYnJpZWYgSW5pdGFsaXplcyB0aGUgTWluaWR1bXBDb250ZXh0 UFBDNjQgYmFzZWQgb24gXGEgY29udGV4dF9zbmFwc2hvdC4KKysgIC8vIQorKyAgLy8hIFxwYXJh bVtpbl0gY29udGV4dF9zbmFwc2hvdCBUaGUgY29udGV4dCBzbmFwc2hvdCB0byB1c2UgYXMgc291 cmNlIGRhdGEuCisrICAvLyEKKysgIC8vISBcbm90ZSBWYWxpZCBpbiAja1N0YXRlTXV0YWJsZS4g Tm8gbXV0YXRpb24gb2YgY29udGV4dCgpIG1heSBiZSBkb25lIGJlZm9yZQorKyAgLy8hICAgICBj YWxsaW5nIHRoaXMgbWV0aG9kLCBhbmQgaXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBh bHRlcgorKyAgLy8hICAgICBjb250ZXh0KCkgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZC4KKysg IHZvaWQgSW5pdGFsaXplRnJvbVNuYXBzaG90KGNvbnN0IENQVUNvbnRleHRQUEM2NCogY29udGV4 dF9zbmFwc2hvdCk7CisrCisrICAvLyEgXGJyaWVmIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBj b250ZXh0IHN0cnVjdHVyZSB0aGF0IHRoaXMgb2JqZWN0IHdpbGwKKysgIC8vISAgICAgd3JpdGUu CisrICAvLyEKKysgIC8vISBcYXR0ZW50aW9uIFRoaXMgcmV0dXJucyBhIG5vbi1gY29uc3RgIHBv aW50ZXIgdG8gdGhpcyBvYmplY3TigJlzIHByaXZhdGUKKysgIC8vISAgICAgZGF0YSBzbyB0aGF0 IGEgY2FsbGVyIGNhbiBwb3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgZGlyZWN0bHkuCisr ICAvLyEgICAgIFRoaXMgaXMgZG9uZSBiZWNhdXNlIHByb3ZpZGluZyBzZXR0ZXIgaW50ZXJmYWNl cyB0byBlYWNoIGZpZWxkIGluIHRoZQorKyAgLy8hICAgICBjb250ZXh0IHN0cnVjdHVyZSB3b3Vs ZCBiZSB1bndpZWxkeSBhbmQgY3VtYmVyc29tZS4gQ2FyZSBtdXN0IGJlIHRha2VuCisrICAvLyEg ICAgIHRvIHBvcHVsYXRlIHRoZSBjb250ZXh0IHN0cnVjdHVyZSBjb3JyZWN0bHkuIFRoZSBjb250 ZXh0IHN0cnVjdHVyZQorKyAgLy8hICAgICBtdXN0IG9ubHkgYmUgbW9kaWZpZWQgd2hpbGUgdGhp cyBvYmplY3QgaXMgaW4gdGhlICNrU3RhdGVNdXRhYmxlCisrICAvLyEgICAgIHN0YXRlLgorKyAg TWluaWR1bXBDb250ZXh0UFBDNjQqIGNvbnRleHQoKSB7IHJldHVybiAmY29udGV4dF87IH0KKysK KysgcHJvdGVjdGVkOgorKyAgLy8gTWluaWR1bXBXcml0YWJsZToKKysgIGJvb2wgV3JpdGVPYmpl Y3QoRmlsZVdyaXRlckludGVyZmFjZSogZmlsZV93cml0ZXIpIG92ZXJyaWRlOworKworKyAgLy8g TWluaWR1bXBDb250ZXh0V3JpdGVyOgorKyAgc2l6ZV90IENvbnRleHRTaXplKCkgY29uc3Qgb3Zl cnJpZGU7CisrCisrIHByaXZhdGU6CisrICBNaW5pZHVtcENvbnRleHRQUEM2NCBjb250ZXh0XzsK KysKKysgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRl cik7CisrfTsKKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAjZW5kaWYgIC8vIENS QVNIUEFEX01JTklEVU1QX01JTklEVU1QX0NPTlRFWFRfV1JJVEVSX0hfCitkaWZmIC0tZ2l0IHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3Jp dGVyX3Rlc3QuY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1 bXBfY29udGV4dF93cml0ZXJfdGVzdC5jYworaW5kZXggMzIxNmE5MDZiLi5hOWZjYmU5ZDggMTAw NjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBf Y29udGV4dF93cml0ZXJfdGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MKK0BAIC0yMTMsNiArMjEz LDIxIEBAIFRFU1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBNSVBTNjRfRnJvbVNuYXBzaG90KSB7 CisgICAgICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0TUlQUzY0LCBrU2VlZCk7Cisg fQorIAorK1RFU1QoTWluaWR1bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9aZXJvcykgeworKyAgRW1w dHlDb250ZXh0VGVzdDxNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0 UFBDNjQ+KAorKyAgICBFeHBlY3RNaW5pZHVtcENvbnRleHRQUEM2NCk7CisrfQorKworK1RFU1Qo TWluaWR1bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9Gcm9tU25hcHNob3QpIHsKKysgIGNvbnN0ZXhw ciB1aW50MzJfdCBrU2VlZCA9IDY0OworKyAgQ1BVQ29udGV4dFBQQzY0IGNvbnRleHRfcHBjNjQ7 CisrICBDUFVDb250ZXh0IGNvbnRleHQ7CisrICBjb250ZXh0LnBwYzY0ID0gJmNvbnRleHRfcHBj NjQ7CisrICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KCZjb250ZXh0LCBrU2VlZCk7CisrICBG cm9tU25hcHNob3RUZXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRl eHRQUEM2ND4oCisrICAgICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQsIGtT ZWVkKTsKKyt9CisrCisgfSAgLy8gbmFtZXNwYWNlCisgfSAgLy8gbmFtZXNwYWNlIHRlc3QKKyB9 ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRlci5jYyB0aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNj CitpbmRleCAwOTc0ZTNkZGYuLmI3MWVjNTg4MCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCisrKysg dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZv X3dyaXRlci5jYworQEAgLTEzNSw2ICsxMzUsOCBAQCBzdGQ6OnN0cmluZyBNaW5pZHVtcE1pc2NJ bmZvRGVidWdCdWlsZFN0cmluZygpIHsKKyAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10g PSAibWlwcyI7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkKKyAgIHN0YXRpYyBj b25zdGV4cHIgY2hhciBrQ1BVW10gPSAibWlwczY0IjsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQorKyAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJwcGM2NCI7CisgI2Vs c2UKKyAjZXJyb3IgZGVmaW5lIGtDUFUgZm9yIHRoaXMgQ1BVCisgI2VuZGlmCitkaWZmIC0tZ2l0 IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNj IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNj CitpbmRleCA3YTFiMjc2M2MuLmJlZGE4ZGE5ZSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jYXB0dXJlX21lbW9yeS5jYworKysrIHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNjCitAQCAtMTEyLDYg KzExMiwxMSBAQCB2b2lkIENhcHR1cmVNZW1vcnk6OlBvaW50ZWRUb0J5Q29udGV4dChjb25zdCBD UFVDb250ZXh0JiBjb250ZXh0LAorICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNlOjpzaXpl KGNvbnRleHQubWlwc2VsLT5yZWdzKTsgKytpKSB7CisgICAgIE1heWJlQ2FwdHVyZU1lbW9yeUFy b3VuZChkZWxlZ2F0ZSwgY29udGV4dC5taXBzZWwtPnJlZ3NbaV0pOworICAgfQorKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5k KGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5uaXApOworKyAgZm9yIChzaXplX3QgaSA9IDA7IGkg PCBiYXNlOjpzaXplKGNvbnRleHQucHBjNjQtPnJlZ3MpOyArK2kpIHsKKysgICAgTWF5YmVDYXB0 dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5yZWdzW2ldKTsKKysgIH0K KyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmggdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2FyY2hpdGVjdHVyZS5oCitpbmRleCA4MTFh NzIwOTUuLmY0ZjgzOTgxZCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmgKK0BAIC00Myw3ICs0MywxMCBAQCBl bnVtIENQVUFyY2hpdGVjdHVyZSB7CisgICBrQ1BVQXJjaGl0ZWN0dXJlTUlQU0VMLAorIAorICAg Ly8hIFxicmllZiA2NC1iaXQgTUlQU0VMLgorLSAga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMCisr ICBrQ1BVQXJjaGl0ZWN0dXJlTUlQUzY0RUwsCisrCisrICAvLyEgXGJyaWVmIDY0LWJpdCBQUEM2 NC4KKysgIGtDUFVBcmNoaXRlY3R1cmVQUEM2NAorIH07CisgCisgfSAgLy8gbmFtZXNwYWNlIGNy YXNocGFkCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2NwdV9jb250ZXh0LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2Nw dV9jb250ZXh0LmNjCitpbmRleCBjNzViNTU1NWUuLmFlYWRlNTc3YSAxMDA2NDQKKy0tLSB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYworKysrIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCitAQCAt MTY5LDYgKzE2OSw4IEBAIHVpbnQ2NF90IENQVUNvbnRleHQ6Okluc3RydWN0aW9uUG9pbnRlcigp IGNvbnN0IHsKKyAgICAgICByZXR1cm4gYXJtLT5wYzsKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0 dXJlQVJNNjQ6CisgICAgICAgcmV0dXJuIGFybTY0LT5wYzsKKysgICAgY2FzZSBrQ1BVQXJjaGl0 ZWN0dXJlUFBDNjQ6CisrICAgICAgcmV0dXJuIHBwYzY0LT5uaXA7CisgICAgIGRlZmF1bHQ6Cisg ICAgICAgTk9UUkVBQ0hFRCgpOworICAgICAgIHJldHVybiB+MHVsbDsKK0BAIC0xODUsNiArMTg3 LDggQEAgdWludDY0X3QgQ1BVQ29udGV4dDo6U3RhY2tQb2ludGVyKCkgY29uc3QgeworICAgICAg IHJldHVybiBhcm0tPnNwOworICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKKyAgICAg ICByZXR1cm4gYXJtNjQtPnNwOworKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoKKysg ICAgICByZXR1cm4gcHBjNjQtPnJlZ3NbMV07CisgICAgIGRlZmF1bHQ6CisgICAgICAgTk9UUkVB Q0hFRCgpOworICAgICAgIHJldHVybiB+MHVsbDsKK0BAIC0xOTYsNiArMjAwLDcgQEAgYm9vbCBD UFVDb250ZXh0OjpJczY0Qml0KCkgY29uc3QgeworICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVY ODZfNjQ6CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgorICAgICBjYXNlIGtDUFVB cmNoaXRlY3R1cmVNSVBTNjRFTDoKKysgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6Cisg ICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4NjoKKyAgICAg Y2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNOgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKK2luZGV4IGZiMjNjNDY3OS4uZWViZWRlNjNj IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9j b250ZXh0LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVf Y29udGV4dC5oCitAQCAtMzUyLDYgKzM1MiwyNCBAQCBzdHJ1Y3QgQ1BVQ29udGV4dE1JUFM2NCB7 CisgICB1aW50NjRfdCBmaXI7CisgfTsKKyAKKysvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1Y3R1 cmUgY2FycnlpbmcgUFBDNjQgQ1BVIHN0YXRlLgorK3N0cnVjdCBDUFVDb250ZXh0UFBDNjQgewor KyAgdWludDY0X3QgbmlwOworKyAgdWludDY0X3QgbXNyOworKyAgdWludDY0X3QgcmVnc1szMl07 CisrICB1aW50NjRfdCBjY3I7CisrICB1aW50NjRfdCB4ZXI7CisrICB1aW50NjRfdCBsbms7Cisr ICB1aW50NjRfdCBjdHI7CisrICBkb3VibGUgZnByZWdzWzMyXTsKKysgIGRvdWJsZSBmcHNjcjsK KysgIHN0cnVjdCB7CisrICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnJbMzJdOworKyAgICB1aW50 MTI4X3N0cnVjdCBzYXZlX3ZzY3I7CisrICAgIHVpbnQzMl90IHNhdmVfdnJzYXZlOworKyAgfSB2 cmVnczsKKyt9OworKworIC8vISBcYnJpZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXBhYmxlIG9m IGNhcnJ5aW5nIHRoZSBjb250ZXh0IG9mIGFueSBzdXBwb3J0ZWQKKyAvLyEgICAgIENQVSBhcmNo aXRlY3R1cmUuCisgc3RydWN0IENQVUNvbnRleHQgeworQEAgLTM4Miw2ICs0MDAsNyBAQCBzdHJ1 Y3QgQ1BVQ29udGV4dCB7CisgICAgIENQVUNvbnRleHRBUk02NCogYXJtNjQ7CisgICAgIENQVUNv bnRleHRNSVBTKiBtaXBzZWw7CisgICAgIENQVUNvbnRleHRNSVBTNjQqIG1pcHM2NDsKKysgICAg Q1BVQ29udGV4dFBQQzY0KiBwcGM2NDsKKyAgIH07CisgfTsKKyAKK2RpZmYgLS1naXQgdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXgu aCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4 dF9saW51eC5oCitpbmRleCA5ZjQ2YTQ4OTcuLmFhNjc3YzRlYiAxMDA2NDQKKy0tLSB0aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5o CisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2Nv bnRleHRfbGludXguaAorQEAgLTE1LDYgKzE1LDcgQEAKKyAjaWZuZGVmIENSQVNIUEFEX1NOQVBT SE9UX0xJTlVYX0NQVV9DT05URVhUX0xJTlVYX0hfCisgI2RlZmluZSBDUkFTSFBBRF9TTkFQU0hP VF9MSU5VWF9DUFVfQ09OVEVYVF9MSU5VWF9IXworIAorKyNpbmNsdWRlIDxjc3RyaW5nPgorICNp bmNsdWRlICJidWlsZC9idWlsZF9jb25maWcuaCIKKyAjaW5jbHVkZSAic25hcHNob3QvY3B1X2Nv bnRleHQuaCIKKyAjaW5jbHVkZSAic25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaCIKK0BA IC0xNzQsNiArMTc1LDc4IEBAIHZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRNSVBTKAorIAorICNl bmRpZiAgLy8gQVJDSF9DUFVfTUlQU19GQU1JTFkgfHwgRE9YWUdFTgorIAorKyNpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkgfHwgRE9YWUdFTgorKworKy8vISBcYnJpZWYgSW5pdGFs aXplcyBhIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1cmUgZnJvbSBuYXRpdmUgY29udGV4dAorKy8v ISAgICAgc3RydWN0dXJlcyBvbiBMaW51eC4KKysvLyEKKysvLyEgXHBhcmFtW2luXSB0aHJlYWRf Y29udGV4dCBUaGUgbmF0aXZlIHRocmVhZCBjb250ZXh0LgorKy8vISBccGFyYW1baW5dIGZsb2F0 X2NvbnRleHQgVGhlIG5hdGl2ZSBmbG9hdCBjb250ZXh0LgorKy8vISBccGFyYW1baW5dIHZlY3Rv cl9jb250ZXh0IFRoZSBuYXRpdmUgdmVjdG9yIGNvbnRleHQuCisrLy8hIFxwYXJhbVtvdXRdIGNv bnRleHQgVGhlIENQVUNvbnRleHRQUEM2NCBzdHJ1Y3R1cmUgdG8gaW5pdGFsaXplLgorK3RlbXBs YXRlIDx0eXBlbmFtZSBUcmFpdHM+Cisrdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KAor KyAgICBjb25zdCBUaHJlYWRDb250ZXh0Ojp0NjRfdCYgdGhyZWFkX2NvbnRleHQsCisrICAgIGNv bnN0IEZsb2F0Q29udGV4dDo6ZjY0X3QmIGZsb2F0X2NvbnRleHQsCisrICAgIGNvbnN0IFZlY3Rv ckNvbnRleHQ6OnY2NF90JiB2ZWN0b3JfY29udGV4dCwKKysgICAgdHlwZW5hbWUgVHJhaXRzOjpD UFVDb250ZXh0KiBjb250ZXh0KSB7CisrCisrICBtZW1jcHkoY29udGV4dC0+cmVncywgdGhyZWFk X2NvbnRleHQuZ3ByLCBzaXplb2YoY29udGV4dC0+cmVncykpOworKyAgY29udGV4dC0+bmlwID0g dGhyZWFkX2NvbnRleHQubmlwOworKyAgY29udGV4dC0+bXNyID0gdGhyZWFkX2NvbnRleHQubXNy OworKyAgY29udGV4dC0+Y2NyID0gdGhyZWFkX2NvbnRleHQuY2NyOworKyAgY29udGV4dC0+eGVy ID0gdGhyZWFkX2NvbnRleHQueGVyOworKyAgY29udGV4dC0+bG5rID0gdGhyZWFkX2NvbnRleHQu bG5rOworKyAgY29udGV4dC0+Y3RyID0gdGhyZWFkX2NvbnRleHQuY3RyOworKworKyAgbWVtY3B5 KGNvbnRleHQtPmZwcmVncywgZmxvYXRfY29udGV4dC5mcHJlZ3MsIHNpemVvZihjb250ZXh0LT5m cHJlZ3MpKTsKKysgIGNvbnRleHQtPmZwc2NyID0gZmxvYXRfY29udGV4dC5mcHNjcjsKKysKKysg IGZvciAodWludDhfdCBpID0gMDsgaSA8IDMyOyBpKyspIHsKKysgICAgY29udGV4dC0+dnJlZ3Mu c2F2ZV92cltpXSA9IHsKKysgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3Nb aV1bMF0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMV0sCisr ICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzJdKSA8PCAzMikgfAor KyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzNdCisrICAgIH07CisrICB9CisrICBj b250ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9IHZlY3Rvcl9jb250ZXh0LnZyc2F2ZTsKKysgIGNv bnRleHQtPnZyZWdzLnNhdmVfdnNjciA9IHswLCAodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnNj ci52c2NyX3dvcmR9OworK30KKysKKyt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgorK3ZvaWQg SW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NCgKKysgICAgY29uc3QgU2lnbmFsVGhyZWFkQ29udGV4 dDY0ICZ0aHJlYWRfY29udGV4dCwKKysgICAgY29uc3QgU2lnbmFsRmxvYXRDb250ZXh0NjQgJmZs b2F0X2NvbnRleHQsCisrICAgIGNvbnN0IFNpZ25hbFZlY3RvckNvbnRleHQ2NCAmdmVjdG9yX2Nv bnRleHQsCisrICAgIHR5cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4dCogY29udGV4dCkgeworKwor KyAgbWVtY3B5KGNvbnRleHQtPnJlZ3MsIHRocmVhZF9jb250ZXh0LnJlZ3MsIHNpemVvZihjb250 ZXh0LT5yZWdzKSk7CisrICBjb250ZXh0LT5uaXAgPSB0aHJlYWRfY29udGV4dC5uaXA7CisrICBj b250ZXh0LT5tc3IgPSB0aHJlYWRfY29udGV4dC5tc3I7CisrICBjb250ZXh0LT5jY3IgPSB0aHJl YWRfY29udGV4dC5jY3I7CisrICBjb250ZXh0LT54ZXIgPSB0aHJlYWRfY29udGV4dC54ZXI7Cisr ICBjb250ZXh0LT5sbmsgPSB0aHJlYWRfY29udGV4dC5sbms7CisrICBjb250ZXh0LT5jdHIgPSB0 aHJlYWRfY29udGV4dC5jdHI7CisrCisrICBtZW1jcHkoY29udGV4dC0+ZnByZWdzLCBmbG9hdF9j b250ZXh0LnJlZ3MsIHNpemVvZihjb250ZXh0LT5mcHJlZ3MpKTsKKysgIGNvbnRleHQtPmZwc2Ny ID0gZmxvYXRfY29udGV4dC5mcHNjcjsKKysKKysgIGZvciAodWludDhfdCBpID0gMDsgaSA8IDMy OyBpKyspIHsKKysgICAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cltpXSA9IHsKKysgICAgICAoKCh1 aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMF0pIDw8IDMyKSB8CisrICAgICAgICB2 ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMV0sCisrICAgICAgKCgodWludDY0X3QpdmVjdG9yX2Nv bnRleHQudnJyZWdzW2ldWzJdKSA8PCAzMikgfAorKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJy ZWdzW2ldWzNdCisrICAgIH07CisrICB9CisrICBjb250ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9 IHZlY3Rvcl9jb250ZXh0LnZyc2F2ZTsKKysgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnNjciA9IHsw LCAodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnNjci52c2NyX3dvcmR9OworK30KKysKKysKKysj ZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKKyB9ICAvLyBuYW1lc3BhY2UgY3Jh c2hwYWQKKyAKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYworaW5kZXggZDMy YmQxOTM3Li4yZGQ1MzhjMmIgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0LmNjCisrKysgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0 LmNjCitAQCAtMTkyLDYgKzE5Miw4IEBAIHZvaWQgVGVzdEFnYWluc3RUYXJnZXQoUHRyYWNlQ29u bmVjdGlvbiogY29ubmVjdGlvbikgeworICAgICAgICAgICAgICAgZGV2aWNlID09IDAgJiYgaW5v ZGUgPT0gMCAmJiBtYXBwaW5nX25hbWUgPT0gIlt2ZHNvXSI7CisgI2lmIGRlZmluZWQoQVJDSF9D UFVfWDg2KQorICAgICAgICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIga1ByZWZpeFtdID0gImxp bnV4LWdhdGUuc28uIjsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorKyAgICAgICAg ICBzdGF0aWMgY29uc3RleHByIGNoYXIga1ByZWZpeFtdID0gImxpbnV4LXZkc282NC5zby4iOwor ICNlbHNlCisgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4W10gPSAibGlu dXgtdmRzby5zby4iOworICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MgdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90 X2xpbnV4LmNjCitpbmRleCBjZDQwYjNiMTIuLjZiY2YyM2I2ZiAxMDA2NDQKKy0tLSB0aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3Rf bGludXguY2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51 eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MKK0BAIC0zMjMsNiArMzIzLDY5IEBAIGJvb2wg RXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKKyAg ICAgICByZWFkZXIsIGNvbnRleHRfYWRkcmVzcywgY29udGV4dF8ubWlwczY0KTsKKyB9CisgCisr I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrCisrdGVtcGxhdGUgPHR5cGVu YW1lIFRyYWl0cz4KKytzdGF0aWMgYm9vbCBSZWFkQ29udGV4dChQcm9jZXNzUmVhZGVyTGludXgq IHJlYWRlciwKKysgICAgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyBjb250ZXh0 X2FkZHJlc3MsCisrICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVD b250ZXh0KiBkZXN0X2NvbnRleHQpIHsKKysgIGNvbnN0IFByb2Nlc3NNZW1vcnkqIG1lbW9yeSA9 IHJlYWRlci0+TWVtb3J5KCk7CisrCisrICBMaW51eFZNQWRkcmVzcyBncF9yZWdzX2FkZHJlc3Mg PSBjb250ZXh0X2FkZHJlc3MgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg b2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBvZmZzZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBncF9yZWdzKTsK KysKKysgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVGhyZWFkQ29udGV4dCB0aHJlYWRfY29udGV4 dDsKKysgIGlmICghbWVtb3J5LT5SZWFkKGdwX3JlZ3NfYWRkcmVzcywgc2l6ZW9mKHRocmVhZF9j b250ZXh0KSwgJnRocmVhZF9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4n dCByZWFkIGdwX3JlZ3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgTGludXhW TUFkZHJlc3MgZnBfcmVnc19hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgKwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJh aXRzOjpNQ29udGV4dCwgZnBfcmVncyk7CisrCisrICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbEZs b2F0Q29udGV4dCBmcF9jb250ZXh0OworKyAgaWYgKCFtZW1vcnktPlJlYWQoZnBfcmVnc19hZGRy ZXNzLCBzaXplb2YoZnBfY29udGV4dCksICZmcF9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1Ip IDw8ICJDb3VsZG4ndCByZWFkIGZwX3JlZ3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQor KworKyAgTGludXhWTUFkZHJlc3Mgdl9yZWdzX3B0cl9hZGRyZXNzID0gY29udGV4dF9hZGRyZXNz ICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQs IG1jb250ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9m KHR5cGVuYW1lIFRyYWl0czo6TUNvbnRleHQsIHZteF9yZXNlcnZlKSArIDg7CisrCisrICB0eXBl bmFtZSBUcmFpdHM6OlNpZ25hbFZlY3RvckNvbnRleHQgdl9jb250ZXh0OworKyAgaWYgKCFtZW1v cnktPlJlYWQodl9yZWdzX3B0cl9hZGRyZXNzLCBzaXplb2Yodl9jb250ZXh0KSwgJnZfY29udGV4 dCkpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVhZCB2X3JlZ3MhIjsKKysgICAg cmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NDxDb250 ZXh0VHJhaXRzNjQ+KHRocmVhZF9jb250ZXh0LCBmcF9jb250ZXh0LAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICB2X2NvbnRleHQsIGRlc3RfY29udGV4dCk7CisrCisrICByZXR1cm4gdHJ1 ZTsKKyt9CisrCisrdGVtcGxhdGU8PgorK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVh ZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKKysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFk ZXIsCisrICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgeworKyAgY29udGV4dF8u YXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OworKyAgY29udGV4dF8ucHBjNjQg PSAmY29udGV4dF91bmlvbl8ucHBjNjQ7CisrCisrICByZXR1cm4gaW50ZXJuYWw6OlJlYWRDb250 ZXh0PENvbnRleHRUcmFpdHM2ND4oCisrICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3MsIGNv bnRleHRfLnBwYzY0KTsKKyt9CisrCisrdGVtcGxhdGU8PgorK2Jvb2wgRXhjZXB0aW9uU25hcHNo b3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czMyPigKKysgICAgUHJvY2Vzc1JlYWRl ckxpbnV4KiByZWFkZXIsCisrICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgewor KyAgLy8gUFBDNjQgaXMgNjQtYml0CisrICByZXR1cm4gZmFsc2U7CisrfQorKworICNlbmRpZiAg Ly8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorIAorIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6 SW5pdGlhbGl6ZShQcm9jZXNzUmVhZGVyTGludXgqIHByb2Nlc3NfcmVhZGVyLAorZGlmZiAtLWdp dCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25f c25hcHNob3RfbGludXguaCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAoraW5kZXggZWEwY2QyMTA2Li5lNDJkZjUy MGYgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGlu dXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAorQEAgLTg0 LDYgKzg0LDggQEAgY2xhc3MgRXhjZXB0aW9uU25hcHNob3RMaW51eCBmaW5hbCA6IHB1YmxpYyBF eGNlcHRpb25TbmFwc2hvdCB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkK KyAgICAgQ1BVQ29udGV4dE1JUFMgbWlwc2VsOworICAgICBDUFVDb250ZXh0TUlQUzY0IG1pcHM2 NDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgQ1BVQ29udGV4 dFBQQzY0IHBwYzY0OworICNlbmRpZgorICAgfSBjb250ZXh0X3VuaW9uXzsKKyAgIENQVUNvbnRl eHQgY29udGV4dF87CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjIHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51 eF90ZXN0LmNjCitpbmRleCBjMTcxNzBiNDMuLmI2YTcxNGNjNiAxMDA2NDQKKy0tLSB0aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3Rf bGludXhfdGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCitAQCAtMjk2LDcgKzI5Niwy OCBAQCB2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0dWFsLCBjb25zdCBO YXRpdmVDUFVDb250ZXh0JiBleHBlY3RlZCkgeworICAgICAgICAgICAgIDApOworICN1bmRlZiBD UFVfQVJDSF9OQU1FCisgfQorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQor K3VzaW5nIE5hdGl2ZUNQVUNvbnRleHQgPSB1Y29udGV4dF90OworKworK3ZvaWQgSW5pdGlhbGl6 ZUNvbnRleHQoTmF0aXZlQ1BVQ29udGV4dCogY29udGV4dCkgeworKyAgZm9yIChzaXplX3QgcmVn ID0gMDsgcmVnIDwgMzI7ICsrcmVnKSB7CisrICAgIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbcmVnXSA9IHJlZzsKKysgIH0KKysKKysgIG1lbXNldCgmY29udGV4dC0+dWNfbWNvbnRleHQu ZnBfcmVncywgNDQsCisrICAgICAgc2l6ZW9mKGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3Mp KTsKKyt9CisgCisrdm9pZCBFeHBlY3RDb250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGFjdHVhbCwg Y29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgZXhwZWN0ZWQpIHsKKysgIEVYUEVDVF9FUShhY3R1YWwu YXJjaGl0ZWN0dXJlLCBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQpOworKworKyAgZm9yIChzaXplX3Qg cmVnID0gMDsgcmVnIDwgMzI7ICsrcmVnKSB7CisrICAgIEVYUEVDVF9FUShhY3R1YWwucHBjNjQt PnJlZ3NbcmVnXSwgZXhwZWN0ZWQudWNfbWNvbnRleHQuZ3BfcmVnc1tyZWddKTsKKysgIH0KKysK KysgIEVYUEVDVF9FUShtZW1jbXAoYWN0dWFsLnBwYzY0LT5mcHJlZ3MsIGV4cGVjdGVkLnVjX21j b250ZXh0LmZwX3JlZ3MsCisrICAgICAgICAgICAgc2l6ZW9mKGFjdHVhbC5wcGM2NC0+ZnByZWdz KSksIDApOworK30KKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZgorZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRl cl9saW51eC5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9w cm9jZXNzX3JlYWRlcl9saW51eC5jYworaW5kZXggZWUyNDZlOGJjLi45NTU1ZGNlMDQgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vz c19yZWFkZXJfbGludXguY2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYworQEAgLTEwOCw2ICsxMDgsOCBAQCB2 b2lkIFByb2Nlc3NSZWFkZXJMaW51eDo6VGhyZWFkOjpJbml0aWFsaXplU3RhY2soUHJvY2Vzc1Jl YWRlckxpbnV4KiByZWFkZXIpIHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQorICAgc3RhY2tfcG9pbnRlciA9IHJlYWRlci0+SXM2NEJpdCgpID8gdGhyZWFkX2luZm8udGhy ZWFkX2NvbnRleHQudDY0LnJlZ3NbMjldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgOiB0aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50MzIucmVnc1syOV07CisrI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBzdGFja19wb2ludGVyID0gdGhyZWFk X2luZm8udGhyZWFkX2NvbnRleHQudDY0LmdwclsxXTsKKyAjZWxzZQorICNlcnJvciBQb3J0Lgor ICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9zaWduYWxfY29udGV4dC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKK2luZGV4IDExMDAyNDY4MC4uYTFmMmRhMjU5 IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4 L3NpZ25hbF9jb250ZXh0LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCitAQCAtNDIyLDYgKzQyMiw4OSBAQCBzdGF0aWNf YXNzZXJ0KG9mZnNldG9mKFVDb250ZXh0PENvbnRleHRUcmFpdHM2ND4sIG1jb250ZXh0LmZwcmVn cykgPT0KKyAgICAgICAgICAgICAgICJjb250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworICNlbmRp ZgorIAorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKworK3N0cnVjdCBT aWduYWxUaHJlYWRDb250ZXh0NjQgeworKyAgdWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRf dCBuaXA7CisrICB1aW50NjRfdCBtc3I7CisrICB1aW50NjRfdCBvcmlnX3IzOworKyAgdWludDY0 X3QgY3RyOworKyAgdWludDY0X3QgbG5rOworKyAgdWludDY0X3QgeGVyOworKyAgdWludDY0X3Qg Y2NyOworKyAgdWludDY0X3Qgc29mdGU7CisrICB1aW50NjRfdCB0cmFwOworKyAgdWludDY0X3Qg ZGFyOworKyAgdWludDY0X3QgZHNpc3I7CisrICB1aW50NjRfdCByZXN1bHQ7CisrICB1aW50NjRf dCBkc2NyOworKyAgdWludDY0X3QgZnByMFszXTsKKyt9OworKworK3N0cnVjdCBTaWduYWxGbG9h dENvbnRleHQ2NCB7CisrICBkb3VibGUgcmVnc1szMl07CisrICBkb3VibGUgZnBzY3I7CisrfTsK KysKKytzdHJ1Y3QgU2lnbmFsVmVjdG9yQ29udGV4dDY0IHsKKysgIGludDMyX3QgdnJyZWdzWzMy XVs0XTsKKysgIHN0cnVjdCB7CisrICAgIGludDMyX3QgX19wYWRbM107CisrICAgIGludDMyX3Qg dnNjcl93b3JkOworKyAgfSB2c2NyOworKyAgaW50MzJfdCB2cnNhdmU7CisrICBpbnQzMl90IF9f cGFkWzNdOworK30gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSk7CisrCisrCisrI3By YWdtYSBwYWNrKHBvcCkKKytzdHJ1Y3QgTUNvbnRleHQ2NCB7CisrICB1aW50NjRfdCByZXNlcnZl ZFs0XTsKKysgIGludDMyX3Qgc2lnbmFsOworKyAgaW50MzJfdCBfX3BhZDA7CisrICB1aW50NjRf dCBoYW5kbGVyOworKyAgdWludDY0X3Qgb2xkbWFzazsKKysgIHVpbnQ2NF90IHB0X3JlZ3NfcHRy OworKyAgU2lnbmFsVGhyZWFkQ29udGV4dDY0IGdwX3JlZ3M7CisrICBTaWduYWxGbG9hdENvbnRl eHQ2NCAgZnBfcmVnczsKKysgIFNpZ25hbFZlY3RvckNvbnRleHQ2NCAqdl9yZWdzOworKyAgaW50 NjRfdCB2bXhfcmVzZXJ2ZVs2OV07CisrfTsKKysKKytzdHJ1Y3QgQ29udGV4dFRyYWl0czY0IDog cHVibGljIFRyYWl0czY0IHsKKysgIHVzaW5nIE1Db250ZXh0ID0gTUNvbnRleHQ2NDsKKysgIHVz aW5nIFNpZ25hbFRocmVhZENvbnRleHQgPSBTaWduYWxUaHJlYWRDb250ZXh0NjQ7CisrICB1c2lu ZyBTaWduYWxGbG9hdENvbnRleHQgPSBTaWduYWxGbG9hdENvbnRleHQ2NDsKKysgIHVzaW5nIFNp Z25hbFZlY3RvckNvbnRleHQgPSBTaWduYWxWZWN0b3JDb250ZXh0NjQ7CisrICB1c2luZyBDUFVD b250ZXh0ID0gQ1BVQ29udGV4dFBQQzY0OworK307CisrCisrc3RydWN0IENvbnRleHRUcmFpdHMz MiA6IHB1YmxpYyBUcmFpdHMzMiB7fTsKKysKKytzdHJ1Y3QgVUNvbnRleHQgeworKyAgdWludDY0 X3QgZmxhZ3M7CisrICB1aW50NjRfdCBsaW5rOworKyAgU2lnbmFsU3RhY2s8Q29udGV4dFRyYWl0 czY0PiBzdGFjazsKKysgIFNpZ3NldDxDb250ZXh0VHJhaXRzNjQ+IHNpZ21hc2s7CisrICBNQ29u dGV4dDY0IG1jb250ZXh0OworK307CisrI3ByYWdtYSBwYWNrKHB1c2gsIDEpCisrCisrc3RhdGlj X2Fzc2VydChzaXplb2YoVUNvbnRleHQpID09IHNpemVvZih1Y29udGV4dF90KSwKKysgICAgICAg ICAgICAgICJ1Y29udGV4dF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNpemVv ZihNQ29udGV4dDY0KSA9PSBzaXplb2YobWNvbnRleHRfdCksCisrICAgICAgICAgICAgICAibWNv bnRleHRfdCBzaXplIG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsVGhy ZWFkQ29udGV4dDY0KSA9PSBzaXplb2YoZ3JlZ3NldF90KSwKKysgICAgICAgICAgICAgICJncmVn c2V0X3Qgc2l6ZSBtaXNtYXRjaCIpOworK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25hbEZsb2F0 Q29udGV4dDY0KSA9PSBzaXplb2YoZnByZWdzZXRfdCksCisrICAgICAgICAgICAgICAiZnByZWdz ZXRfdCBzaXplIG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsVmVjdG9y Q29udGV4dDY0KSA9PSBzaXplb2YodnJyZWdzZXRfdCksCisrICAgICAgICAgICAgICAidnJyZWdz ZXRfdCBzaXplIG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChvZmZzZXRvZihVQ29udGV4dCwg bWNvbnRleHQpID09CisrICAgICAgICAgICAgICBvZmZzZXRvZih1Y29udGV4dF90LCB1Y19tY29u dGV4dCksICJtY29udGV4dCBvZmZzZXQgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KG9mZnNl dG9mKE1Db250ZXh0NjQsIGdwX3JlZ3MpID09CisrICAgICAgICAgICAgICBvZmZzZXRvZihtY29u dGV4dF90LCBncF9yZWdzKSwgImdwX3JlZ3Mgb2Zmc2V0IG1pc21hdGNoIik7CisgI2Vsc2UKKyAj ZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBz aG90X2xpbnV4LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4 L3N5c3RlbV9zbmFwc2hvdF9saW51eC5jYworaW5kZXggYTk5ZGEzZTRiLi4wM2I5NzMwODMgMTAw NjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc3lz dGVtX3NuYXBzaG90X2xpbnV4LmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCitAQCAtMjA0LDYgKzIwNCw4 IEBAIENQVUFyY2hpdGVjdHVyZSBTeXN0ZW1TbmFwc2hvdExpbnV4OjpHZXRDUFVBcmNoaXRlY3R1 cmUoKSBjb25zdCB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIHJl dHVybiBwcm9jZXNzX3JlYWRlcl8tPklzNjRCaXQoKSA/IGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRF TAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoga0NQVUFyY2hpdGVjdHVy ZU1JUFNFTDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHJldHVy biBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7CisgI2Vsc2UKKyAjZXJyb3IgcG9ydCB0byB5b3VyIGFy Y2hpdGVjdHVyZQorICNlbmRpZgorQEAgLTIxOSw2ICsyMjEsOSBAQCB1aW50MzJfdCBTeXN0ZW1T bmFwc2hvdExpbnV4OjpDUFVSZXZpc2lvbigpIGNvbnN0IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUworICAgcmV0 dXJuIDA7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAvLyBOb3Qg eWV0IGltcGxlbWVudGVkIG9uIFBQQzY0CisrICByZXR1cm4gMDsKKyAjZWxzZQorICNlcnJvciBw b3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMjM5LDYgKzI0NCw5IEBAIHN0 ZDo6c3RyaW5nIFN5c3RlbVNuYXBzaG90TGludXg6OkNQVVZlbmRvcigpIGNvbnN0IHsKKyAjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFibGUg b24gTUlQUworICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NF9GQU1JTFkpCisrICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0CisrICBy ZXR1cm4gc3RkOjpzdHJpbmcoKTsKKyAjZWxzZQorICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0 ZWN0dXJlCisgI2VuZGlmCitAQCAtMzcyLDYgKzM4MCw5IEBAIGJvb2wgU3lzdGVtU25hcHNob3RM aW51eDo6TlhFbmFibGVkKCkgY29uc3QgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpCisgICAvLyBOb3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCisgICByZXR1cm4gZmFsc2U7 CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAvLyBOb3QgeWV0IGlt cGxlbWVudGVkIG9uIFBQQzY0CisrICByZXR1cm4gZmFsc2U7CisgI2Vsc2UKKyAjZXJyb3IgUG9y dC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK2RpZmYgLS1naXQgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjIHRoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Rlc3RfbW9kdWxlcy5jYwor aW5kZXggYjI0NTBjMjA2Li43YmE3OGIyYWUgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjCisrKysgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjCitAQCAt MTEwLDYgKzExMCw4IEBAIGJvb2wgV3JpdGVUZXN0TW9kdWxlKGNvbnN0IGJhc2U6OkZpbGVQYXRo JiBtb2R1bGVfcGF0aCwKKyAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX0FBUkNINjQ7Cisg I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTRUwpIHx8IGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0 RUwpCisgICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9NSVBTOworKyNlbGlmIGRlZmluZWQo QVJDSF9DUFVfUFBDNjQpCisrICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9QUEM2NDsKKyAj ZW5kaWYKKyAKKyAgIG1vZHVsZS5laGRyLmVfdmVyc2lvbiA9IEVWX0NVUlJFTlQ7CitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9z bmFwc2hvdF9saW51eC5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9s aW51eC90aHJlYWRfc25hcHNob3RfbGludXguY2MKK2luZGV4IGUzZTJiZWJkZC4uOGVmNDM3NTJl IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4 L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYworQEAgLTE4Niw2ICsx ODYsMTQgQEAgYm9vbCBUaHJlYWRTbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFk ZXJMaW51eCogcHJvY2Vzc19yZWFkZXIsCisgICAgICAgICB0aHJlYWQudGhyZWFkX2luZm8uZmxv YXRfY29udGV4dC5mMzIsCisgICAgICAgICBjb250ZXh0Xy5taXBzZWwpOworICAgfQorKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJl ID0ga0NQVUFyY2hpdGVjdHVyZVBQQzY0OworKyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4dF91 bmlvbl8ucHBjNjQ7CisrICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2 ND4oCisrICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2NCwKKysgICAg ICB0aHJlYWQudGhyZWFkX2luZm8uZmxvYXRfY29udGV4dC5mNjQsCisrICAgICAgdGhyZWFkLnRo cmVhZF9pbmZvLnZlY3Rvcl9jb250ZXh0LnY2NCwKKysgICAgICBjb250ZXh0Xy5wcGM2NCk7Cisg I2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmggdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90 X2xpbnV4LmgKK2luZGV4IDQ0Y2M2ZjZkOS4uZDQxMzY0NjFlIDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51 eC5oCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhy ZWFkX3NuYXBzaG90X2xpbnV4LmgKK0BAIC02OCw2ICs2OCw4IEBAIGNsYXNzIFRocmVhZFNuYXBz aG90TGludXggZmluYWwgOiBwdWJsaWMgVGhyZWFkU25hcHNob3QgeworICNlbGlmIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICAgIENQVUNvbnRleHRNSVBTIG1pcHNlbDsKKyAgICAg Q1BVQ29udGV4dE1JUFM2NCBtaXBzNjQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9G QU1JTFkpCisrICAgIENQVUNvbnRleHRQUEM2NCBwcGM2NDsKKyAjZWxzZQorICNlcnJvciBQb3J0 LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MgdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9hdXhpbGlhcnlfdmVjdG9yLmNjCitp bmRleCBkM2Q1ZWJkZmIuLjNmZDczMGNiNSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKKysrKyB0aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKK0BAIC01 Niw2ICs1NiwxMSBAQCBib29sIEF1eGlsaWFyeVZlY3Rvcjo6UmVhZChQdHJhY2VDb25uZWN0aW9u KiBjb25uZWN0aW9uKSB7CisgICAgIGlmICh0eXBlID09IEFUX0lHTk9SRSkgeworICAgICAgIGNv bnRpbnVlOworICAgICB9CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAg ICBpZiAodHlwZSA9PSBBVF9JR05PUkVQUEMpIHsKKysgICAgICBjb250aW51ZTsKKysgICAgfQor KyNlbmRpZgorICAgICBpZiAoIU1hcEluc2VydE9yUmVwbGFjZSgmdmFsdWVzXywgdHlwZSwgdmFs dWUsIG51bGxwdHIpKSB7CisgICAgICAgTE9HKEVSUk9SKSA8PCAiZHVwbGljYXRlIGF1eHYgZW50 cnkiOworICAgICAgIHJldHVybiBmYWxzZTsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3V0aWwvbGludXgvcHRyYWNlci5jYworaW5kZXggNTU3ZTBkMzYzLi4wOGFlNDM0Yjgg MTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJh Y2VyLmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJh Y2VyLmNjCitAQCAtMzk4LDYgKzM5OCw2NCBAQCBib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0 aWQsCisgICByZXR1cm4gdHJ1ZTsKKyB9CisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCisrLy8gUFBDNjQgaGFzIGhhZCBIQVZFX0FSQ0hfVFJBQ0VIT09LIHNldCBzaW5j ZSAyLjYuMjcgKGV2ZW4gYmVmb3JlIHg4NiBoYWQgaXQpLgorKy8vIFRoYXQgbWVhbnMgd2UgY2Fu IHNpbXBseSB1c2UgUFRSQUNFX0dFVFJFR0VTRVQuCisrCisrdGVtcGxhdGUgPHR5cGVuYW1lIERl c3RpbmF0aW9uPgorK2Jvb2wgR2V0UmVnaXN0ZXJTZXQocGlkX3QgdGlkLCBpbnQgc2V0LCBEZXN0 aW5hdGlvbiogZGVzdCwgYm9vbCBjYW5fbG9nKSB7CisrICBpb3ZlYyBpb3Y7CisrICBpb3YuaW92 X2Jhc2UgPSByZWludGVycHJldF9jYXN0PHZvaWQqPihkZXN0KTsKKysgIGlvdi5pb3ZfbGVuID0g c2l6ZW9mKCpkZXN0KTsKKysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCByZWlu dGVycHJldF9jYXN0PHZvaWQqPihzZXQpLCAmaW92KSAhPSAwKSB7CisrICAgIFBMT0dfSUYoRVJS T1IsIGNhbl9sb2cpIDw8ICJwdHJhY2UiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBp ZiAoaW92Lmlvdl9sZW4gIT0gc2l6ZW9mKCpkZXN0KSkgeworKyAgICBMT0dfSUYoRVJST1IsIGNh bl9sb2cpIDw8ICJVbmV4cGVjdGVkIHJlZ2lzdGVycyBzaXplIjsKKysgICAgcmV0dXJuIGZhbHNl OworKyAgfQorKyAgcmV0dXJuIHRydWU7CisrfQorKworK2Jvb2wgR2V0VmVjdG9yUmVnaXN0ZXJz NjQocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yQ29udGV4dCog Y29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgeworKyAg cmV0dXJuIEdldFJlZ2lzdGVyU2V0KHRpZCwgTlRfUFBDX1ZNWCwgJmNvbnRleHQtPnY2NCwgY2Fu X2xvZyk7CisrfQorKworK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHBpZF90IHRp ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRl eHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7Cisr ICByZXR1cm4gR2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUkZQUkVHLCAmY29udGV4dC0+ZjY0LCBj YW5fbG9nKTsKKyt9CisrCisrYm9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAorKyAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IFRocmVhZENvbnRleHQmIGNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgTGludXhWTUFkZHJlc3MqIGFkZHJlc3MsCisrICAgICAgICAgICAgICAgICAg ICAgYm9vbCBjYW5fbG9nKSB7CisrICAvLyBQUEM2NCBkb2Vzbid0IGhhdmUgUFRSQUNFX0dFVF9U SFJFQURfQVJFQSBzaW5jZSB0aGUgdGhyZWFkIHBvaW50ZXIKKysgIC8vIGlzIHN0b3JlZCBpbiBH UFIgMTMuCisrICBUaHJlYWRDb250ZXh0Ojp0NjRfdCB0YzsKKysgIGlmICghR2V0UmVnaXN0ZXJT ZXQodGlkLCBOVF9QUlNUQVRVUywgJnRjLCBjYW5fbG9nKSkgeworKyAgICBMT0dfSUYoRVJST1Is IGNhbl9sb2cpIDw8ICJVbmFibGUgdG8gZ2V0IHRocmVhZCBwb2ludGVyISI7CisrICAgIHJldHVy biBmYWxzZTsKKysgIH0KKysKKysgICphZGRyZXNzID0gdGMuZ3ByWzEzXTsKKysKKysgIHJldHVy biB0cnVlOworK30KKysKKysvLyBTdHVicyBmb3IgMzItYml0IGZ1bmN0aW9ucyBub3QgYXBwbGlj YWJsZSBvbiBQUEM2NAorK2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczMyKHBpZF90IHRp ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRl eHQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJl dHVybiBmYWxzZTsgfQorK2Jvb2wgR2V0VGhyZWFkQXJlYTMyKHBpZF90IHRpZCwKKysgICAgICAg ICAgICAgICAgICAgICBjb25zdCBUaHJlYWRDb250ZXh0ICZjb250ZXh0LAorKyAgICAgICAgICAg ICAgICAgICAgIExpbnV4Vk1BZGRyZXNzICphZGRyZXNzLAorKyAgICAgICAgICAgICAgICAgICAg IGJvb2wgY2FuX2xvZykgeyByZXR1cm4gZmFsc2U7IH0KKysKKyAjZWxzZQorICNlcnJvciBQb3J0 LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorQEAgLTQ5NCw2ICs1NTIsOSBAQCBi b29sIFB0cmFjZXI6OkdldFRocmVhZEluZm8ocGlkX3QgdGlkLCBUaHJlYWRJbmZvKiBpbmZvKSB7 CisgICBpZiAoaXNfNjRfYml0XykgeworICAgICByZXR1cm4gR2V0R2VuZXJhbFB1cnBvc2VSZWdp c3RlcnM2NCh0aWQsICZpbmZvLT50aHJlYWRfY29udGV4dCwgY2FuX2xvZ18pICYmCisgICAgICAg ICAgICBHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+ZmxvYXRfY29udGV4 dCwgY2FuX2xvZ18pICYmCisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAg ICAgICAgICAgR2V0VmVjdG9yUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dmVjdG9yX2NvbnRleHQs IGNhbl9sb2dfKSAmJgorKyNlbmRpZgorICAgICAgICAgICAgR2V0VGhyZWFkQXJlYTY0KHRpZCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLT50aHJlYWRfY29udGV4dCwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmaW5mby0+dGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVz cywKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90 aHJlYWRfaW5mby5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhy ZWFkX2luZm8uaAoraW5kZXggNWI1NWMyNGE3Li5kZWEwZDFmMzkgMTAwNjQ0CistLS0gdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCisrKysgdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCitAQCAt MjgsNiArMjgsMTAgQEAKKyAjaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KKyAjZW5kaWYK KyAKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrI2luY2x1ZGUgPHN5cy91 Y29udGV4dC5oPgorKyNlbmRpZgorKworIG5hbWVzcGFjZSBjcmFzaHBhZCB7CisgCisgLy8hIFxi cmllZiBUaGUgc2V0IG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgZm9yIGFuIGFyY2hpdGVj dHVyZSBmYW1pbHkuCitAQCAtNzksNiArODMsOCBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKKyAg ICAgdWludDMyX3QgY3AwX3N0YXR1czsKKyAgICAgdWludDMyX3QgY3AwX2NhdXNlOworICAgICB1 aW50MzJfdCBwYWRkaW5nMV87CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrICAgIC8vIFBQQzY0IGlzIDY0LWJpdAorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlm ICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMTMyLDYgKzEzOCwyMSBAQCB1bmlvbiBUaHJl YWRDb250ZXh0IHsKKyAgICAgdWludDY0X3QgY3AwX2JhZHZhZGRyOworICAgICB1aW50NjRfdCBj cDBfc3RhdHVzOworICAgICB1aW50NjRfdCBjcDBfY2F1c2U7CisrI2VsaWYgZGVmaW5lZChBUkNI X0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIC8vIFJlZmxlY3RzIHN0cnVjdCBwdF9yZWdzIGluIGFz bS9wdHJhY2UuaC4KKysgICAgdWludDY0X3QgZ3ByWzMyXTsKKysgICAgdWludDY0X3QgbmlwOwor KyAgICB1aW50NjRfdCBtc3I7CisrICAgIHVpbnQ2NF90IG9yaWdfZ3ByMzsKKysgICAgdWludDY0 X3QgY3RyOworKyAgICB1aW50NjRfdCBsbms7CisrICAgIHVpbnQ2NF90IHhlcjsKKysgICAgdWlu dDY0X3QgY2NyOworKyAgICB1aW50NjRfdCBzb2Z0ZTsKKysgICAgdWludDY0X3QgdHJhcDsKKysg ICAgdWludDY0X3QgZGFyOworKyAgICB1aW50NjRfdCBkc2lzcjsKKysgICAgdWludDY0X3QgcmVz dWx0OworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFN SUxZCitAQCAtMTQzLDYgKzE2NCw4IEBAIHVuaW9uIFRocmVhZENvbnRleHQgeworICAgdXNpbmcg TmF0aXZlVGhyZWFkQ29udGV4dCA9IHVzZXJfcmVnczsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKQorIC8vIE5vIGFwcHJvcHJpYXRlIE5hdGl2ZVRocmVhZHNDb250ZXh0IHR5 cGUgYXZhaWxhYmxlIGZvciBNSVBTCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisrICB1c2luZyBOYXRpdmVUaHJlYWRDb250ZXh0ID0gc3RydWN0IHB0X3JlZ3M7CisgI2Vs c2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkgfHwgQVJD SF9DUFVfQVJNNjQKK0BAIC0yMTgsNiArMjQxLDkgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKKyAg ICAgfSBmcHJlZ3NbMzJdOworICAgICB1aW50MzJfdCBmcGNzcjsKKyAgICAgdWludDMyX3QgZnB1 X2lkOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBDcmFz aHBhZCdzIFBQQyBzdXBwb3J0IGlzIDY0LWJpdCBvbmx5LCBzbyB0aGlzCisrICAgIC8vIDMyYml0 LW9ubHkgc3RydWN0IGlzIGRlY2xhcmVkIGFzIGVtcHR5LgorICNlbHNlCisgI2Vycm9yIFBvcnQu CisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMjUyLDYgKzI3OCwxMCBAQCB1 bmlvbiBGbG9hdENvbnRleHQgeworICAgICBkb3VibGUgZnByZWdzWzMyXTsKKyAgICAgdWludDMy X3QgZnBjc3I7CisgICAgIHVpbnQzMl90IGZwdV9pZDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKysgICAgLy8gUmVmbGVjdHMgZnByZWdzZXRfdCBpbiBzeXMvdWNvbnRl eHQuaAorKyAgICBkb3VibGUgZnByZWdzWzMyXTsKKysgICAgZG91YmxlIGZwc2NyOworICNlbHNl CisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMjgw LDYgKzMxMCw4IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7CisgICBzdGF0aWNfYXNzZXJ0KHNpemVv ZihmNjQpID09IHNpemVvZih1c2VyX2Zwc2ltZF9zdHJ1Y3QpLCAiU2l6ZSBtaXNtYXRjaCIpOwor ICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgLy8gTm8gYXBwcm9wcmlhdGUg ZmxvYXRpbmcgcG9pbnQgY29udGV4dCBuYXRpdmUgdHlwZSBmb3IgYXZhaWxhYmxlIE1JUFMuCisr I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBzdGF0aWNfYXNzZXJ0KHNp emVvZihmNjQpID09IHNpemVvZihmcHJlZ3NldF90KSwgIlNpemUgbWlzbWF0Y2giKTsKKyAjZWxz ZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2CitAQCAtMjg3LDYgKzMx OSwyNiBAQCB1bmlvbiBGbG9hdENvbnRleHQgeworIHN0YXRpY19hc3NlcnQoc3RkOjppc19zdGFu ZGFyZF9sYXlvdXQ8RmxvYXRDb250ZXh0Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAiTm90IHN0 YW5kYXJkIGxheW91dCIpOworIAorKy8vISBcYnJpZWYgVGhlIHZlY3RvciByZWdpc3RlcnMgdXNl ZCBmb3IgYW4gYXJjaGl0ZWN0dXJlIGZhbWlseQorK3VuaW9uIFZlY3RvckNvbnRleHQgeworKyAg c3RydWN0IHYzMl90IHt9IHYzMjsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrICBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikpKSAvLyBWZWN0b3IgY29udGV4dCBt dXN0IGJlIGRvdWJsZXdvcmQgYWxpZ25lZC4KKysjZW5kaWYKKysgIHN0cnVjdCB2NjRfdCB7Cisr I2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBSZWZsZWN0cyB2cnJl Z3NldF90IGluIHN5cy91Y29udGV4dC5oCisrICAgIHVpbnQzMl90IHZycmVnc1szMl1bNF07Cisr ICAgIHN0cnVjdCB7CisrICAgICAgdWludDMyX3QgX19wYWRbM107CisrICAgICAgdWludDMyX3Qg dnNjcl93b3JkOworKyAgICB9IHZzY3I7CisrICAgIHVpbnQzMl90IHZyc2F2ZTsKKysgICAgdWlu dDMyX3QgX19wYWRbM107CisrI2VuZGlmCisrICB9IHY2NDsKKyt9OworKworIC8vISBcYnJpZWYg QSBjb2xsZWN0aW9uIG9mIGBwdHJhY2VgLWFibGUgaW5mb3JtYXRpb24gYWJvdXQgYSB0aHJlYWQu Cisgc3RydWN0IFRocmVhZEluZm8geworICAgVGhyZWFkSW5mbygpOworQEAgLTI5OCw2ICszNTAs OSBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7CisgICAvLyEgXGJyaWVmIFRoZSBmbG9hdGluZyBwb2lu dCByZWdpc3RlcnMgZm9yIHRoZSB0aHJlYWQuCisgICBGbG9hdENvbnRleHQgZmxvYXRfY29udGV4 dDsKKyAKKysgIC8vISBcYnJpZWYgKE9wdGlvbmFsKSBUaGUgdmVjdG9yIHJlZ2lzdGVycyB1c2Vk IGZvciB0aGUgdGhyZWFkLgorKyAgVmVjdG9yQ29udGV4dCB2ZWN0b3JfY29udGV4dDsKKysKKyAg IC8vISBcYnJpZWYgVGhlIHRocmVhZC1sb2NhbCBzdG9yYWdlIGFkZHJlc3MgZm9yIHRoZSB0aHJl YWQuCisgICBMaW51eFZNQWRkcmVzcyB0aHJlYWRfc3BlY2lmaWNfZGF0YV9hZGRyZXNzOworIH07 CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0 dXJlX2NvbnRleHQuaCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2Fw dHVyZV9jb250ZXh0LmgKK2luZGV4IGQyMWEyNGYxOS4uYWNjMzI1MzQ5IDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAor KysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRl eHQuaAorQEAgLTY5LDYgKzY5LDcgQEAgdXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0 X3Q7CisgLy8hICAgICBtYWNPUy9MaW51eC9GdWNoc2lhIHwgeDg2XzY0ICAgICAgIHwgYCUlcmRp YAorIC8vISAgICAgTGludXggICAgICAgICAgICAgICB8IEFSTS9BUk02NCAgICB8IGByMGAvYHgw YAorIC8vISAgICAgTGludXggICAgICAgICAgICAgICB8IE1JUFMvTUlQUzY0ICB8IGAkYTBgCisr Ly8hICAgICBMaW51eCAgICAgICAgICAgICAgIHwgUFBDNjQgICAgICAgIHwgYHIzYAorIC8vIQor IC8vISAgICAgQWRkaXRpb25hbGx5LCB0aGUgdmFsdWUgYExSYCBvbiBBUk0vQVJNNjQgd2lsbCBi ZSB0aGUgcmV0dXJuIGFkZHJlc3Mgb2YKKyAvLyEgICAgIHRoaXMgZnVuY3Rpb24uCitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRl eHRfbGludXguUyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVy ZV9jb250ZXh0X2xpbnV4LlMKK2luZGV4IDUyMjE1ZWU1ZC4uYjNlNGEzZWM3IDEwMDY0NAorLS0t IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRf bGludXguUworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0 dXJlX2NvbnRleHRfbGludXguUworQEAgLTMyLDcgKzMyLDcgQEAKKyAgIC5iYWxpZ24gNCwgMHgw CisgICAudHlwZSBDQVBUVVJFQ09OVEVYVF9TWU1CT0wsICVmdW5jdGlvbgorICAgLnR5cGUgQ0FQ VFVSRUNPTlRFWFRfU1lNQk9MMiwgJWZ1bmN0aW9uCistI2VsaWYgZGVmaW5lZChfX21pcHNfXykK KysjZWxpZiBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAu YmFsaWduIDQsIDB4MAorICNlbmRpZgorIAorQEAgLTQyMyw0ICs0MjMsMjE0IEBAIENBUFRVUkVD T05URVhUX1NZTUJPTDI6CisgICBqciAkcmEKKyAKKyAgIC5zZXQgYXQKKysjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICAvLyBTdG9yZSByMC1yMzEKKysgIHN0ZCAwLCAweGU4KDMpICAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1swXQorKyAgc3RkIDEsIDB4ZjAoMykgICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzFdCisrICBzdGQgMiwgMHhmOCgzKSAgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMl0KKysgIC8vIG5vdGUgdGhhdCByMydzIG9y aWdpbmFsIHZhbHVlIHdhcyBsb3N0CisrICBzdGQgMywgMHgxMDAoMykgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmdwX3JlZ3NbM10KKysgIHN0ZCA0LCAweDEwOCgzKSAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZ3BfcmVnc1s0XQorKyAgc3RkIDUsIDB4MTEwKDMpICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5ncF9yZWdzWzVdCisrICBzdGQgNiwgMHgxMTgoMykgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LmdwX3JlZ3NbNl0KKysgIHN0ZCA3LCAweDEyMCgzKSAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuZ3BfcmVnc1s3XQorKyAgc3RkIDgsIDB4MTI4KDMpICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzWzhdCisrICBzdGQgOSwgMHgxMzAoMykgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmdwX3JlZ3NbOV0KKysgIHN0ZCAxMCwgMHgxMzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxMF0KKysgIHN0ZCAxMSwgMHgxNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxMV0KKysgIHN0ZCAxMiwgMHgxNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxMl0KKysgIHN0ZCAxMywgMHgxNTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxM10KKysgIHN0ZCAxNCwgMHgxNTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxNF0KKysgIHN0ZCAxNSwgMHgxNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxNV0KKysgIHN0ZCAxNiwgMHgxNjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxNl0KKysgIHN0ZCAxNywgMHgxNzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxN10KKysgIHN0ZCAxOCwgMHgxNzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxOF0KKysgIHN0ZCAxOSwgMHgxODAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1sxOV0KKysgIHN0ZCAyMCwgMHgxODgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syMF0KKysgIHN0ZCAyMSwgMHgxOTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syMV0KKysgIHN0ZCAyMiwgMHgxOTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syMl0KKysgIHN0ZCAyMywgMHgxYTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syM10KKysgIHN0ZCAyNCwgMHgxYTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syNF0KKysgIHN0ZCAyNSwgMHgxYjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syNV0KKysgIHN0ZCAyNiwgMHgxYjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syNl0KKysgIHN0ZCAyNywgMHgxYzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syN10KKysgIHN0ZCAyOCwgMHgxYzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syOF0KKysgIHN0ZCAyOSwgMHgxZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1syOV0KKysgIHN0ZCAzMCwgMHgxZDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1szMF0KKysgIHN0ZCAzMSwgMHgxZTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1szMV0KKysKKysgIC8vIEZvciBOSVAsIHdlIGNhbiB1c2UgdGhlIHZhbHVlIGlu IHRoZSBsaW5rIHJlZ2lzdGVyCisrICBtZmxyIDAKKysgIHN0ZCAwLCAweDFlOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF0KKysKKysgIC8vIENUUgorKyAgbWZjdHIg MAorKyAgc3RkIDAsIDB4MjAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRf Q1RSXQorKworKyAgLy8gRm9yIExOSywgd2UnbGwgdXNlIHRoZSBjYWxsZXIncyBMUiBzYXZlIGFy ZWEgKDIgc3RhY2sgZnJhbWVzIHVwKS4KKysgIC8vIHI0IGNhbiBiZSB1c2VkIGFzIGEgc2NyYXRj aCByZWdpc3RlciBzaW5jZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLgorKyAgbGQgNCwgMCgx KQorKyAgbGQgNCwgMTYoNCkKKysgIHN0ZCA0LCAweDIwOCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX0xOS10KKysKKysgIC8vIFhFUgorKyAgbWZ4ZXIgMAorKyAgc3RkIDAs IDB4MjEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXQorKworKyAg Ly8gQ0NSCisrICBtZmNyIDAKKysgIHN0ZCAwLCAweDIxOCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX0NDUl0KKysKKysgIC8vIE1TUiwgb3JpZ19yMywgTVEsIFRSQVAsIERB UiwgRFNJU1IsIFJFU1VMVCwgRFNDUiwKKysgIC8vIG5vdCB1c2VkIG9yIG5vdCByZWxldmFudCwg IHplcm8gdGhlbSBvdXQuCisrICBsaSA0LCAwCisrICBzdGQgNCwgMHgxZjAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NU1JdCisrICBzdGQgNCwgMHgxZjgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9PUklHX1IzXQorKyAgc3RkIDQsIDB4MjIwKDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTVFdCisrICBzdGQgNCwgMHgyMjgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9UUkFQXQorKyAgc3RkIDQsIDB4 MjMwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfREFSXQorKyAgc3RkIDQs IDB4MjM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNJU1JdCisrICBz dGQgNCwgMHgyNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9SRVNVTFRd CisrICBzdGQgNCwgMHgyNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9E U0NSXQorKworKyAgLy8gVXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0LnJlZ3MgdG8gcG9pbnQg dG8gZ3BfcmVncworKyAgYWRkaSAwLCAzLCAweGU4CisrICBzdGQgMCwgMHhlMCgzKQorKworKyAg Ly8gU2F2ZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgMC0zMQorKyAgc3RmZCAwLCAweDI2OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1swXQorKyAgc3RmZCAxLCAweDI3MCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxXQorKyAgc3RmZCAyLCAweDI3OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syXQorKyAgc3RmZCAzLCAweDI4MCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szXQorKyAgc3RmZCA0LCAweDI4OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s0XQorKyAgc3RmZCA1LCAweDI5MCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s1XQorKyAgc3RmZCA2LCAweDI5OCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s2XQorKyAgc3RmZCA3LCAweDJhMCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s3XQorKyAgc3RmZCA4LCAweDJhOCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s4XQorKyAgc3RmZCA5LCAweDJiMCgz KSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1s5XQorKyAgc3RmZCAxMCwgMHgyYjgo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMF0KKysgIHN0ZmQgMTEsIDB4MmMw KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTFdCisrICBzdGZkIDEyLCAweDJj OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEyXQorKyAgc3RmZCAxMywgMHgy ZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxM10KKysgIHN0ZmQgMTQsIDB4 MmQ4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTRdCisrICBzdGZkIDE1LCAw eDJlMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE1XQorKyAgc3RmZCAxNiwg MHgyZTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNl0KKysgIHN0ZmQgMTcs IDB4MmYwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTddCisrICBzdGZkIDE4 LCAweDJmOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE4XQorKyAgc3RmZCAx OSwgMHgzMDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxOV0KKysgIHN0ZmQg MjAsIDB4MzA4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjBdCisrICBzdGZk IDIxLCAweDMxMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIxXQorKyAgc3Rm ZCAyMiwgMHgzMTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syMl0KKysgIHN0 ZmQgMjMsIDB4MzIwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjNdCisrICBz dGZkIDI0LCAweDMyOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI0XQorKyAg c3RmZCAyNSwgMHgzMzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNV0KKysg IHN0ZmQgMjYsIDB4MzM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjZdCisr ICBzdGZkIDI3LCAweDM0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI3XQor KyAgc3RmZCAyOCwgMHgzNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syOF0K KysgIHN0ZmQgMjksIDB4MzUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjld CisrICBzdGZkIDMwLCAweDM1OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzMw XQorKyAgc3RmZCAzMSwgMHgzNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sz MV0KKysKKysgIC8vIEZQU0NSCisrICBtZmZzIDAKKysgIHN0ZmQgMCwgMHgzNjgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMl0KKysKKysgIC8vIFNhdmUgVk1YIFZlY3RvciBy ZWdpc3RlcnMKKysgIC8vIFVwZGF0ZSByNCB0byBjb250YWluIHRoZSBiYXNlIGFkZHJlc3Mgb2Yg dm14X3Jlc2VydmUKKysgIGFkZGkgNCwgMywgMHgzNzgKKysgIC8vIEVuc3VyZSB0aGF0IGl0IGlz IHF1YWR3b3JkIGFsaWduZWQKKysgIGFuZGkuIDUsIDQsIDB4RgorKyAgYmVxIDFmIC8vIE5vIGFs aWdubWVudCBpcyBuZWNlc3NhcnkKKysgIC8vIEFkZHJlc3MgaXMgZG91Ymxld29yZCBhbGlnbmVk IGFuZCBub3QgcXVhZHdvcmQgYWxpZ25lZCwgYWRkIDgKKysgIGFkZGkgNCwgNCwgOAorKworKzE6 CisrICAvLyBTdG9yZSBWTVggcmVnaXN0ZXJzIDAtMzEKKysgIC8vIHI0IHdpbGwgY29udGFpbiB0 aGUgYmFzZSBhZGRyZXNzCisrICAvLyByNSB3aWxsIGNvbnRhaW4gdGhlIGluZGV4CisrICBsaSA1 LCAwCisrICBzdHZ4IDAsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2 ZVsoYWxpZ24pICsgMF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMSwgNCwgNSAgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxXQorKyAgYWRkaSA1LCA1 LCAxNgorKyAgc3R2eCAyLCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2Vy dmVbKGFsaWduKSArIDJdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDMsIDQsIDUgICAvLyBj b250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgM10KKysgIGFkZGkgNSwg NSwgMTYKKysgIHN0dnggNCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyA0XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCA1LCA0LCA1ICAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDVdCisrICBhZGRpIDUs IDUsIDE2CisrICBzdHZ4IDYsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVz ZXJ2ZVsoYWxpZ24pICsgNl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggNywgNCwgNSAgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA3XQorKyAgYWRkaSA1 LCA1LCAxNgorKyAgc3R2eCA4LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDhdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDksIDQsIDUgICAv LyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgOV0KKysgIGFkZGkg NSwgNSwgMTYKKysgIHN0dnggMTAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAxMF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTEsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMV0KKysgIGFk ZGkgNSwgNSwgMTYKKysgIHN0dnggMTIsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAxMl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTMsIDQs IDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxM10KKysg IGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTQsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTUs IDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNV0K KysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTYsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dngg MTcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAx N10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTgsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxOF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0 dnggMTksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAxOV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjAsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMF0KKysgIGFkZGkgNSwgNSwgMTYKKysg IHN0dnggMjEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAyMV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjIsIDQsIDUgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMl0KKysgIGFkZGkgNSwgNSwgMTYK KysgIHN0dnggMjMsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAyM10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjQsIDQsIDUgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNF0KKysgIGFkZGkgNSwgNSwg MTYKKysgIHN0dnggMjUsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyAyNV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjYsIDQsIDUgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNl0KKysgIGFkZGkgNSwg NSwgMTYKKysgIHN0dnggMjcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyAyN10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjgsIDQsIDUgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyOF0KKysgIGFkZGkg NSwgNSwgMTYKKysgIHN0dnggMjksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAyOV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMzAsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAzMF0KKysgIGFk ZGkgNSwgNSwgMTYKKysgIHN0dnggMzEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAzMV0KKysgIGFkZGkgNSwgNSwgMTYKKysKKysgIC8vIFZTQ1IK KysgIG1mdnNjciAwCisrICBzdHZ4IDAsIDQsIDUKKysgIGFkZGkgNSwgNSwgMTYKKysKKysgIC8v IFZSU0FWRQorKyAgbWZ2cnNhdmUgMAorKyAgc3R3eCAwLCA0LCA1CisrCisrICAvLyBVcGRhdGUg Y29udGV4dC0+dWNfbWNvbnRleHQudl9yZWdzIHRvIHBvaW50IHRvIHZteF9yZXNlcnZlICsgYWxp Z25tZW50LgorKyAgc3RkIDQsIDB4MzcwKDMpCisrCisrICAvLyBaZXJvIG91dCBhbGwgdW51c2Vk IGZpZWxkcworKyAgbGkgNCwgMAorKyAgc3RkIDQsIDB4YzgoMykgLy8gY29udGV4dC0+dWNfbWNv bnRleHQuc2lnbmFsCisrICBzdGQgNCwgMHhkMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5o YW5kbGVyCisrICBzdGQgNCwgMHhkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5vbGRtYXNr CisrCisrICBibHIKKyAjZW5kaWYgIC8vIF9faTM4Nl9fCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYyB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3Qu Y2MKK2luZGV4IGNmMjNjMmRlZi4uNWYyNjRiYzkyIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYworKysrIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVz dC5jYworQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBUZXN0Q2FwdHVyZUNvbnRleHQoKSB7CisgICB1 aW50cHRyX3QgcGMgPSBQcm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnRleHRfMSk7CisgCisg I2lmICFkZWZpbmVkKEFERFJFU1NfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgXAorLSAgICAhZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKQorKyAgICAhZGVm aW5lZChNRU1PUllfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisgICAvLyBTYW5pdGl6ZXJzIGNhbiBjYXVzZSBlbm91Z2ggY29kZSBibG9hdCB0aGF0IHRoZSDi gJxuZWFyYnnigJ0gY2hlY2sgd291bGQKKyAgIC8vIGxpa2VseSBmYWlsLgorICAgY29uc3QgdWlu dHB0cl90IGtSZWZlcmVuY2VQQyA9CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNjIHRoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdF91 dGlsX2xpbnV4LmNjCitpbmRleCAzMGEyYWIyMWQuLjYwNTA5ZjIxZCAxMDA2NDQKKy0tLSB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3Rf dXRpbF9saW51eC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlz Yy9jYXB0dXJlX2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNjCitAQCAtMzUsNiArMzUsOCBAQCB2 b2lkIFNhbml0eUNoZWNrQ29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7 CisgICBFWFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5yZWdzWzBdLCBGcm9tUG9pbnRlckNh c3Q8dWludHB0cl90PigmY29udGV4dCkpOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpCisgICBFWFBFQ1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncmVnc1s0XSwgRnJvbVBv aW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRleHQpKTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKysgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3Nb M10sIEZyb21Qb2ludGVyQ2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7CisgI2VuZGlmCisgfQor IAorQEAgLTQ5LDYgKzUxLDggQEAgdWludHB0cl90IFByb2dyYW1Db3VudGVyRnJvbUNvbnRleHQo Y29uc3QgTmF0aXZlQ1BVQ29udGV4dCYgY29udGV4dCkgeworICAgcmV0dXJuIGNvbnRleHQudWNf bWNvbnRleHQucGM7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIHJl dHVybiBjb250ZXh0LnVjX21jb250ZXh0LnBjOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjRfRkFNSUxZKQorKyAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBd OworICNlbmRpZgorIH0KKyAKK0BAIC02Myw2ICs2Nyw4IEBAIHVpbnRwdHJfdCBTdGFja1BvaW50 ZXJGcm9tQ29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7CisgICByZXR1 cm4gY29udGV4dC51Y19tY29udGV4dC5zcDsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKQorICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbMjldOworKyNlbGlm IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgcmV0dXJuIGNvbnRleHQudWNfbWNv bnRleHQuZ3BfcmVnc1sxXTsKKyAjZW5kaWYKKyB9CisgCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjIHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCitpbmRleCA1NGNj MmYxOWYuLjI5OGI1Yzk5MyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC91dGlsL3Bvc2l4L3NpZ25hbHNfdGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCitAQCAtNDYsOSArNDYsOSBAQCBib29s IENhbkNhdXNlU2lnbmFsKGludCBzaWcpIHsKKyAgIHJldHVybiBzaWcgPT0gU0lHQUJSVCB8fAor ICAgICAgICAgIHNpZyA9PSBTSUdBTFJNIHx8CisgICAgICAgICAgc2lnID09IFNJR0JVUyB8fAor LSNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKKysjaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJN NjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorICAgICAgICAgIHNpZyA9PSBTSUdGUEUg fHwKKy0jZW5kaWYgIC8vICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQorKyNlbmRpZiAgLy8gIWRl ZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorICNpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwpCisg ICAgICAgICAgc2lnID09IFNJR0lMTCB8fAorICNlbmRpZiAgLy8gZGVmaW5lZChBUkNIX0NQVV9Y ODZfRkFNSUxZKSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQorQEAgLTExNyw5ICsxMTcsMTEg QEAgdm9pZCBDYXVzZVNpZ25hbChpbnQgc2lnKSB7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAK Ky0jaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpCisrI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FS TTY0KSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKyAgICAgLy8gQVJNNjQgaGFzIGhhcmR3 YXJlIGludGVnZXIgZGl2aXNpb24gaW5zdHJ1Y3Rpb25zIHRoYXQgZG9u4oCZdCBnZW5lcmF0ZSBh CisgICAgIC8vIHRyYXAgZm9yIGRpdmlkZS1ieS16ZXJvLCBzbyB0aGlzIGRvZXNu4oCZdCBwcm9k dWNlIFNJR0ZQRS4KKysgICAgLy8KKysgICAgLy8gUFBDNjQgZml4ZWQtcG9pbnQgZGl2aXNpb24g YnkgemVybyBhbHNvIGRvZXNuJ3QgcHJvZHVjZSBhIFNJR0ZQRS4KKyAgICAgY2FzZSBTSUdGUEU6 IHsKKyAgICAgICAvLyBPcHRpbWl6YXRpb24gbWFrZXMgdGhpcyB0cmlja3ksIHNvIGdldCB6ZXJv IGZyb20gYSBzeXN0ZW0gY2FsbCBsaWtlbHkKKyAgICAgICAvLyB0byBzdWNjZWVkLCBhbmQgdHJ5 IHRvIGRvIHNvbWV0aGluZyB3aXRoIHRoZSByZXN1bHQuCitAQCAtMTM3LDcgKzEzOSw3IEBAIHZv aWQgQ2F1c2VTaWduYWwoaW50IHNpZykgeworICAgICAgIGZzdGF0KHF1b3RpZW50LCAmc3RhdF9i dWYpOworICAgICAgIGJyZWFrOworICAgICB9CistI2VuZGlmICAvLyBBUkNIX0NQVV9BUk02NAor KyNlbmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0KQorIAorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQo QVJDSF9DUFVfQVJNRUwpCisgICAgIGNhc2UgU0lHSUxMOiB7CitkaWZmIC0tZ2l0IHRoaXJkX3Bh cnR5L2RhdjFkL0JVSUxELmduIHRoaXJkX3BhcnR5L2RhdjFkL0JVSUxELmduCitpbmRleCA2YjQ1 NjZmYzMuLmMwN2Y3MzJhZCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9kYXYxZC9CVUlMRC5nbgor KysrIHRoaXJkX3BhcnR5L2RhdjFkL0JVSUxELmduCitAQCAtMTg0LDYgKzE4NCw4IEBAIHN0YXRp Y19saWJyYXJ5KCJkYXYxZF84Yml0IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9z b3VyY2VzCisgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgc291 cmNlcyArPSBhcm1fdGVtcGxhdGVfc291cmNlcworKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9 PSAicHBjNjQiKSB7CisrICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxhdGVfc291cmNlcworICAg fQorIAorICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKK0BAIC0yMTIsNiArMjE0LDggQEAgc3RhdGlj X2xpYnJhcnkoImRhdjFkXzEwYml0IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9z b3VyY2VzCisgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgc291 cmNlcyArPSBhcm1fdGVtcGxhdGVfc291cmNlcworKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9 PSAicHBjNjQiKSB7CisrICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxhdGVfc291cmNlcworICAg fQorIAorICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKK0BAIC0yNjMsNiArMjY3LDIxIEBAIGlmIChj dXJyZW50X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0IikgeworICAgICAgIGRl ZmluZXMgPSBbICJQUkVGSVgiIF0KKyAgICAgfQorIAorKyAgICBjZmxhZ3MgPSBkYXYxZF9jb3B0 cworKyAgfQorK30gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgeworKyAgc3RhdGlj X2xpYnJhcnkoImRhdjFkX3BwYyIpIHsKKysgICAgc291cmNlcyA9IFsKKysgICAgICAibGliZGF2 MWQvc3JjL3BwYy9jcHUuYyIsCisrICAgICAgImxpYmRhdjFkL3NyYy9wcGMvY3B1LmgiLAorKyAg ICBdCisrCisrICAgIGNvbmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21p dW1fY29kZSIgXQorKyAgICBjb25maWdzICs9IFsKKysgICAgICAiLy9idWlsZC9jb25maWcvY29t cGlsZXI6bm9fY2hyb21pdW1fY29kZSIsCisrICAgICAgIjpkYXYxZF9jb25maWciLAorKyAgICBd CisrCisgICAgIGNmbGFncyA9IGRhdjFkX2NvcHRzCisgICB9CisgfQorQEAgLTI5Miw1ICszMTEs NyBAQCBzdGF0aWNfbGlicmFyeSgiZGF2MWQiKSB7CisgICAgIH0KKyAgIH0gZWxzZSBpZiAoY3Vy cmVudF9jcHUgPT0gImFybSIgfHwgY3VycmVudF9jcHUgPT0gImFybTY0IikgeworICAgICBkZXBz ICs9IFsgIjpkYXYxZF9hcm0iIF0KKysgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0 IikgeworKyAgICBkZXBzICs9IFsgIjpkYXYxZF9wcGMiIF0KKyAgIH0KKyB9CitkaWZmIC0tZ2l0 IHRoaXJkX3BhcnR5L2RhdjFkL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcuaCB0aGlyZF9wYXJ0 eS9kYXYxZC9jb25maWcvbGludXgvcHBjNjQvY29uZmlnLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwMDAuLjlmYmJmNzVjYworLS0tIC9kZXYvbnVsbAorKysrIHRoaXJkX3Bh cnR5L2RhdjFkL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcuaAorQEAgLTAsMCArMSwzOSBAQAor Ky8qCisrICogQXV0b2dlbmVyYXRlZCBieSB0aGUgTWVzb24gYnVpbGQgc3lzdGVtLgorKyAqIERv IG5vdCBlZGl0LCB5b3VyIGNoYW5nZXMgd2lsbCBiZSBsb3N0LgorKyAqLworKworKyNwcmFnbWEg b25jZQorKworKyNkZWZpbmUgQVJDSF9BQVJDSDY0IDAKKysKKysjZGVmaW5lIEFSQ0hfQVJNIDAK KysKKysjZGVmaW5lIEFSQ0hfUFBDNjRMRSAxCisrCisrI2RlZmluZSBBUkNIX1g4NiAwCisrCisr I2RlZmluZSBBUkNIX1g4Nl8zMiAwCisrCisrI2RlZmluZSBBUkNIX1g4Nl82NCAwCisrCisrI2Rl ZmluZSBDT05GSUdfMTZCUEMgMQorKworKyNkZWZpbmUgQ09ORklHXzhCUEMgMQorKworKy8vICNk ZWZpbmUgQ09ORklHX0xPRyAxIC0tIExvZ2dpbmcgaXMgY29udHJvbGxlZCBieSBDaHJvbWl1bQor KworKyNkZWZpbmUgRU5ESUFOTkVTU19CSUcgMAorKworKyNkZWZpbmUgSEFWRV9BU00gMQorKwor KyNkZWZpbmUgSEFWRV9DTE9DS19HRVRUSU1FIDEKKysKKysjZGVmaW5lIEhBVkVfRExTWU0gMQor KworKyNkZWZpbmUgSEFWRV9HRVRBVVhWQUwgMQorKworKyNkZWZpbmUgSEFWRV9QT1NJWF9NRU1B TElHTiAxCisrCisrI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKKysKK2RpZmYgLS1naXQgdGhpcmRf cGFydHkvZGF2MWQvZGF2MWRfZ2VuZXJhdGVkLmduaSB0aGlyZF9wYXJ0eS9kYXYxZC9kYXYxZF9n ZW5lcmF0ZWQuZ25pCitpbmRleCBjNTljYjA4MjEuLjMwNjAyODRhOCAxMDA2NDQKKy0tLSB0aGly ZF9wYXJ0eS9kYXYxZC9kYXYxZF9nZW5lcmF0ZWQuZ25pCisrKysgdGhpcmRfcGFydHkvZGF2MWQv ZGF2MWRfZ2VuZXJhdGVkLmduaQorQEAgLTgyLDYgKzgyLDExIEBAIGFybV90ZW1wbGF0ZV9zb3Vy Y2VzID0gWworICAgImxpYmRhdjFkL3NyYy9hcm0vbWNfaW5pdF90bXBsLmMiLAorIF0KKyAKKytw cGM2NF90ZW1wbGF0ZV9zb3VyY2VzID0gWworKyAgImxpYmRhdjFkL3NyYy9wcGMvY2RlZl9pbml0 X3RtcGwuYyIsCisrICAibGliZGF2MWQvc3JjL3BwYy9sb29wcmVzdG9yYXRpb25faW5pdF90bXBs LmMiLAorK10KKysKKyB0ZW1wbGF0ZV9zb3VyY2VzID0gWworICAgImxpYmRhdjFkL3NyYy9jZGVm X2FwcGx5X3RtcGwuYyIsCisgICAibGliZGF2MWQvc3JjL2NkZWZfdG1wbC5jIiwKK2RpZmYgLS1n aXQgdGhpcmRfcGFydHkvZGF2MWQvZ2VuZXJhdGVfc291cmNlLnB5IHRoaXJkX3BhcnR5L2RhdjFk L2dlbmVyYXRlX3NvdXJjZS5weQoraW5kZXggOWFiNWUwMGI4Li5hZDNmZWZmZWUgMTAwNzU1Cist LS0gdGhpcmRfcGFydHkvZGF2MWQvZ2VuZXJhdGVfc291cmNlLnB5CisrKysgdGhpcmRfcGFydHkv ZGF2MWQvZ2VuZXJhdGVfc291cmNlLnB5CitAQCAtNTAsNyArNTAsOCBAQCBkZWYgV3JpdGVHbihm ZCk6CisgICBXcml0ZUFycmF5KGZkLCAiYXJtMzJfYXNtX3NvdXJjZXMiLCBnbG9iLmdsb2IoImxp YmRhdjFkL3NyYy9hcm0vMzIvKi5TIikpCisgICBXcml0ZUFycmF5KGZkLCAiYXJtNjRfYXNtX3Nv dXJjZXMiLCBnbG9iLmdsb2IoImxpYmRhdjFkL3NyYy9hcm0vNjQvKi5TIikpCisgICBXcml0ZUFy cmF5KGZkLCAiYXJtX3RlbXBsYXRlX3NvdXJjZXMiLCBnbG9iLmdsb2IoImxpYmRhdjFkL3NyYy9h cm0vKl90bXBsLmMiKSkKKy0KKysgIFdyaXRlQXJyYXkoZmQsICJwcGM2NF90ZW1wbGF0ZV9zb3Vy Y2VzIiwgZ2xvYi5nbG9iKCJsaWJkYXYxZC9zcmMvcHBjLypfdG1wbC5jIikpCisrIAorICAgdGVt cGxhdGVfc291cmNlcyA9IGdsb2IuZ2xvYigibGliZGF2MWQvc3JjLypfdG1wbC5jIikKKyAgIFdy aXRlQXJyYXkoZmQsICJ0ZW1wbGF0ZV9zb3VyY2VzIiwgdGVtcGxhdGVfc291cmNlcykKKyAKK2Rp ZmYgLS1naXQgdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oIHRoaXJk X3BhcnR5L2RhdjFkL2xpYmRhdjFkL3NyYy9wcGMvdHlwZXMuaAoraW5kZXggMGI0YmQ3MmYwLi5h MGNhYTVlNzEgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90 eXBlcy5oCisrKysgdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oCitA QCAtNTEsNCArNTEsMTkgQEAKKyAjZGVmaW5lIHUxNmxfdG9faTMyKHYpICgoaTMyeDQpIHZlY19t ZXJnZWwoKHUxNng4KSB2LCB2ZWNfc3BsYXRfdTE2KDApKSkKKyAjZGVmaW5lIGkxNmxfdG9faTMy KHYpICgoaTMyeDQpIHZlY191bnBhY2tsKChpMTZ4OCl2KSkKKyAKKysjaWYgZGVmaW5lZChfX2Ns YW5nX18pCisrI3VuZGVmIHZlY19zcGxhdHMKKysjZGVmaW5lIHZlY19zcGxhdHMoTikgICAgICAg ICAgICAgICAgICAgICBcCisrICAgIF9HZW5lcmljKChOKSwgICAgICAgICAgICAgICAgICAgICAg ICAgXAorKyAgICAgICAgdW5zaWduZWQgY2hhcjogICAgICAoKHU4eDE2KShOKSksIFwKKysgICAg ICAgIHNpZ25lZCBjaGFyOiAgICAgICAgKChpOHgxNikoTikpLCBcCisrICAgICAgICB1bnNpZ25l ZCBzaG9ydDogICAgICgodTE2eDgpKE4pKSwgXAorKyAgICAgICAgc2lnbmVkIHNob3J0OiAgICAg ICAoKGkxNng4KShOKSksIFwKKysgICAgICAgIHVuc2lnbmVkIGludDogICAgICAgKCh1MzJ4NCko TikpLCBcCisrICAgICAgICBzaWduZWQgaW50OiAgICAgICAgICgoaTMyeDQpKE4pKSwgXAorKyAg ICAgICAgdW5zaWduZWQgbG9uZyBsb25nOiAoKHU2NHgyKShOKSksIFwKKysgICAgICAgIHNpZ25l ZCBsb25nIGxvbmc6ICAgKChpNjR4MikoTikpICBcCisrICAgICkKKysjZW5kaWYKKysKKyAjZW5k aWYgLyogREFWMURfU1JDX1BQQ19UWVBFU19IICovCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2xz cy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCB0aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9z dXBwb3J0LmgKK2luZGV4IGU0YWMyMjY0NC4uMWM1NzAxNWRiIDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIHRoaXJkX3BhcnR5L2xzcy9saW51 eF9zeXNjYWxsX3N1cHBvcnQuaAorQEAgLTM5NDcsNyArMzk0Nyw3IEBAIHN0cnVjdCBrZXJuZWxf c3RhdGZzIHsKKyAgICAgICBMU1NfUkVHKDIsIGJ1Zik7CisgICAgICAgTFNTX0JPRFkodm9pZCos IG1tYXAyLCAiMCIoX19yMikpOworICAgICB9CistI2Vsc2UKKysjZWxpZiAhZGVmaW5lZChfX3Bv d2VycGM2NF9fKSAvKiBwcGM2NCBkb2Vzbid0IGhhdmUgbW1hcDIgKi8KKyAgICAgI2RlZmluZSBf X05SX19tbWFwMiBfX05SX21tYXAyCisgICAgIExTU19JTkxJTkUgX3N5c2NhbGw2KHZvaWQqLCBf bW1hcDIsICAgICAgICAgICAgdm9pZCosIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNp emVfdCwgICAgICAgICAgICAgICAgICAgbCwgaW50LCAgICAgICAgICAgICAgIHAsCitAQCAtNDA1 OCw3ICs0MDU4LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICAgI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwKKyAgICAgICBkZWZpbmVkKF9fQVJNX0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VB QklfXykgfHwgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoZGVmaW5lZChfX21pcHNfXykg JiYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkkzMikgfHwgICAgICAgICAgICAgICAgICAgXAor LSAgICAgIGRlZmluZWQoX19QUENfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgIChkZWZpbmVkKF9fUFBDX18pICYmICFkZWZp bmVkKF9fcG93ZXJwYzY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgKGRlZmluZWQoX19zMzkwX18pICYmICFkZWZpbmVk KF9fczM5MHhfXykpCisgICAgIC8qIE9uIHRoZXNlIGFyY2hpdGVjdHVyZXMsIGltcGxlbWVudCBt bWFwKCkgd2l0aCBtbWFwMigpLiAqLworICAgICBMU1NfSU5MSU5FIHZvaWQqIExTU19OQU1FKG1t YXApKHZvaWQgKnMsIHNpemVfdCBsLCBpbnQgcCwgaW50IGYsIGludCBkLAorZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYyB0aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQu YworaW5kZXggYmRhYzRkNzg0Li41MWUwZjJjYWMgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvcGZm ZnQvc3JjL3BmZmZ0LmMKKysrKyB0aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYworQEAgLTEw MCw2ICsxMDAsNyBAQAorICAgIEFsdGl2ZWMgc3VwcG9ydCBtYWNyb3MgCisgKi8KKyAjaWYgIWRl ZmluZWQoUEZGRlRfU0lNRF9ESVNBQkxFKSAmJiAoZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVk KF9fcHBjNjRfXykpCisrI2luY2x1ZGUgPGFsdGl2ZWMuaD4KKyB0eXBlZGVmIHZlY3RvciBmbG9h dCB2NHNmOworICMgIGRlZmluZSBTSU1EX1NaIDQKKyAjICBkZWZpbmUgVlpFUk8oKSAoKHZlY3Rv ciBmbG9hdCkgdmVjX3NwbGF0X3U4KDApKQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9za2lhL3Ny Yy9za3NsL1NrU0xTdHJpbmcuY3BwIHRoaXJkX3BhcnR5L3NraWEvc3JjL3Nrc2wvU2tTTFN0cmlu Zy5jcHAKK2luZGV4IGVjM2U1Njk2NC4uNGNmODk5OWEyIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5 L3NraWEvc3JjL3Nrc2wvU2tTTFN0cmluZy5jcHAKKysrKyB0aGlyZF9wYXJ0eS9za2lhL3NyYy9z a3NsL1NrU0xTdHJpbmcuY3BwCitAQCAtMjM0LDcgKzIzNCwxMiBAQCBTdHJpbmcgdG9fc3RyaW5n KGRvdWJsZSB2YWx1ZSkgeworICAgICBpZiAobmVlZHNEb3RaZXJvKSB7CisgICAgICAgICBidWZm ZXIgPDwgIi4wIjsKKyAgICAgfQorLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5zdHIoKS5jX3N0 cigpKTsKKysKKysgICAgc3RkOjpzdHJpbmcgcmV0KGJ1ZmZlci5zdHIoKSk7CisrICAgIGlmIChz aWduYml0KHZhbHVlKSAmJiByZXRbMF0gPT0gJy4nKSB7CisrICAgICAgICByZXRbMF0gPSAnLSc7 CisrICAgIH0KKysgICAgcmV0dXJuIFN0cmluZyhyZXQuY19zdHIoKSk7CisgfQorIAorIGJvb2wg c3RvZChjb25zdCBTdHJpbmdGcmFnbWVudCYgcywgU0tTTF9GTE9BVCogdmFsdWUpIHsKK2RpZmYg LS1naXQgdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jIHRoaXJk X3BhcnR5L3NxbGl0ZS9zcmMvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYworaW5kZXggNmI0YTc4OTlk Li5iOGM3ZmU0MTQgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRp b24vc3FsaXRlMy5jCisrKysgdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3Fs aXRlMy5jCitAQCAtMTQ0NzQsNyArMTQ0NzQsOCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0 OworICMgaWYgZGVmaW5lZChpMzg2KSAgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgICAgfHwg ZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCisgICAgICBkZWZpbmVkKF9feDg2XzY0KSAgfHwgZGVm aW5lZChfX3g4Nl82NF9fKSAgICB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKKyAgICAgIGRl ZmluZWQoX01fQU1ENjQpICB8fCBkZWZpbmVkKF9NX0FSTSkgICAgICAgIHx8IGRlZmluZWQoX194 ODYpICAgfHwgICAgXAorLSAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJD SDY0RUxfXykgfHwgZGVmaW5lZChfTV9BUk02NCkKKysgICAgIGRlZmluZWQoX19BUk1FTF9fKSB8 fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpIHx8ICAgXAorKyAg ICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9M SVRUTEVfRU5ESUFOX18pCisgIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKKyAj IGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8IGRlZmluZWQoX19wcGNfXykgfHwgXAorICAgICAg ICBkZWZpbmVkKF9fQVJNRUJfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFQl9fKQorZGlmZiAtLWdp dCB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1hdGlvbl9kZXYvc3FsaXRlMy5jIHRoaXJk X3BhcnR5L3NxbGl0ZS9zcmMvYW1hbGdhbWF0aW9uX2Rldi9zcWxpdGUzLmMKK2luZGV4IGQzMGM5 YjdkZS4uY2Y3NWE2OWQ5IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvYW1hbGdh bWF0aW9uX2Rldi9zcWxpdGUzLmMKKysrKyB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1h dGlvbl9kZXYvc3FsaXRlMy5jCitAQCAtMTQ0ODcsNyArMTQ0ODcsOCBAQCB0eXBlZGVmIElOVDE2 X1RZUEUgTG9nRXN0OworICMgaWYgZGVmaW5lZChpMzg2KSAgICAgIHx8IGRlZmluZWQoX19pMzg2 X18pICAgICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCisgICAgICBkZWZpbmVkKF9feDg2 XzY0KSAgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSAgICB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAg IFwKKyAgICAgIGRlZmluZWQoX01fQU1ENjQpICB8fCBkZWZpbmVkKF9NX0FSTSkgICAgICAgIHx8 IGRlZmluZWQoX194ODYpICAgfHwgICAgXAorLSAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRl ZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVmaW5lZChfTV9BUk02NCkKKysgICAgIGRlZmluZWQo X19BUk1FTF9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQp IHx8ICAgXAorKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAoX19CWVRFX09SREVSX18g PT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCisgIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVS ICAgIDEyMzQKKyAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8IGRlZmluZWQoX19wcGNfXykg fHwgXAorICAgICAgICBkZWZpbmVkKF9fQVJNRUJfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFQl9f KQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2V4dC9ydHJlZS9ydHJlZS5jIHRo aXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0cmVlL3J0cmVlLmMKK2luZGV4IGY1YjU3YTVlMi4u ODBhMmQwYWQ4IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0cmVlL3J0 cmVlLmMKKysrKyB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2V4dC9ydHJlZS9ydHJlZS5jCitAQCAt NDUwLDcgKzQ1MCw3IEBAIHN0cnVjdCBSdHJlZU1hdGNoQXJnIHsKKyAjaWYgZGVmaW5lZChpMzg2 KSAgICAgfHwgZGVmaW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwK KyAgICAgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9NX1g2NCkgIHx8ICAgIFwKKyAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9B Uk0pICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKKy0gICAgZGVmaW5lZChfX2FybV9f KQorKyAgICBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgKF9f QllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQorICMgZGVmaW5lIFNRTElU RV9CWVRFT1JERVIgICAgMTIzNAorICNlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRlZmluZWQo X19wcGNfXykKKyAjIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDQzMjEKK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmggdGhpcmRfcGFydHkvc3FsaXRl L3NyYy9zcmMvc3FsaXRlSW50LmgKK2luZGV4IDI0NTA3MGQ0Zi4uYjI1MTY0ZTk1IDEwMDY0NAor LS0tIHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCisrKysgdGhpcmRfcGFy dHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgKK0BAIC04NzcsNyArODc3LDggQEAgdHlwZWRl ZiBJTlQxNl9UWVBFIExvZ0VzdDsKKyAjIGlmIGRlZmluZWQoaTM4NikgICAgICB8fCBkZWZpbmVk KF9faTM4Nl9fKSAgICAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwgICAgXAorICAgICAgZGVmaW5l ZChfX3g4Nl82NCkgIHx8IGRlZmluZWQoX194ODZfNjRfXykgICAgfHwgZGVmaW5lZChfTV9YNjQp ICB8fCAgICBcCisgICAgICBkZWZpbmVkKF9NX0FNRDY0KSAgfHwgZGVmaW5lZChfTV9BUk0pICAg ICAgICB8fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKKy0gICAgIGRlZmluZWQoX19BUk1FTF9f KSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpCisrICAgICBk ZWZpbmVkKF9fQVJNRUxfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9N X0FSTTY0KSB8fCBcCisrICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIChfX0JZVEVfT1JE RVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykKKyAjICAgZGVmaW5lIFNRTElURV9CWVRF T1JERVIgICAgMTIzNAorICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICAgfHwgZGVmaW5lZChfX3Bw Y19fKSB8fCBcCisgICAgICAgIGRlZmluZWQoX19BUk1FQl9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2 NEVCX18pCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2Fw dHVyZS9kaWZmZXJfYmxvY2suY2MgdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9j YXB0dXJlL2RpZmZlcl9ibG9jay5jYworaW5kZXggNGYwYzU0MzBjLi41NGVlMDgyOWUgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9i bG9jay5jYworKysrIHRoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9k aWZmZXJfYmxvY2suY2MKK0BAIC0zMCwxMSArMzAsNyBAQCBib29sIFZlY3RvckRpZmZlcmVuY2Uo Y29uc3QgdWludDhfdCogaW1hZ2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKKyAgIHN0YXRp YyBib29sICgqZGlmZl9wcm9jKShjb25zdCB1aW50OF90KiwgY29uc3QgdWludDhfdCopID0gbnVs bHB0cjsKKyAKKyAgIGlmICghZGlmZl9wcm9jKSB7CistI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hf QVJNX0ZBTUlMWSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWSkKKy0gICAgLy8g Rm9yIEFSTSBhbmQgTUlQUyBwcm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KKy0gICAg Ly8gVE9ETyhoY2xhbSk6IEltcGxlbWVudCBhIE5FT04gdmVyc2lvbi4KKy0gICAgZGlmZl9wcm9j ID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKKy0jZWxzZQorKyNpZiBkZWZpbmVkKFdFQlJUQ19BUkNI X1g4Nl9GQU1JTFkpCisgICAgIGJvb2wgaGF2ZV9zc2UyID0gR2V0Q1BVSW5mbyhrU1NFMikgIT0g MDsKKyAgICAgLy8gRm9yIHg4NiBwcm9jZXNzb3JzLCBjaGVjayBpZiBTU0UyIGlzIHN1cHBvcnRl ZC4KKyAgICAgaWYgKGhhdmVfc3NlMiAmJiBrQmxvY2tTaXplID09IDMyKSB7CitAQCAtNDQsNiAr NDAsMTAgQEAgYm9vbCBWZWN0b3JEaWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGltYWdlMSwgY29u c3QgdWludDhfdCogaW1hZ2UyKSB7CisgICAgIH0gZWxzZSB7CisgICAgICAgZGlmZl9wcm9jID0g JlZlY3RvckRpZmZlcmVuY2VfQzsKKyAgICAgfQorKyNlbHNlCisrICAgIC8vIEZvciBvdGhlciBw cm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KKysgICAgLy8gVE9ETyhoY2xhbSk6IElt cGxlbWVudCBhIE5FT04gdmVyc2lvbi4KKysgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVu Y2VfQzsKKyAjZW5kaWYKKyAgIH0KKyAKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvd2VicnRjL3J0 Y19iYXNlL3N5c3RlbS9hcmNoLmggdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9h cmNoLmgKK2luZGV4IGJlMjM2N2I4NS4uYmU0ZWU0MjMzIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5 L3dlYnJ0Yy9ydGNfYmFzZS9zeXN0ZW0vYXJjaC5oCisrKysgdGhpcmRfcGFydHkvd2VicnRjL3J0 Y19iYXNlL3N5c3RlbS9hcmNoLmgKK0BAIC03OSw2ICs3OSwxOCBAQAorICNlbGlmIGRlZmluZWQo X19FTVNDUklQVEVOX18pCisgI2RlZmluZSBXRUJSVENfQVJDSF8zMl9CSVRTCisgI2RlZmluZSBX RUJSVENfQVJDSF9MSVRUTEVfRU5ESUFOCisrI2VsaWYgZGVmaW5lZChfX1BQQ19fKQorKyNkZWZp bmUgV0VCUlRDX0FSQ0hfUFBDX0ZBTUlMWQorKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVS X0xJVFRMRV9FTkRJQU5fXworKyNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorKyNl bHNlCisrI2RlZmluZSBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCisrI2VuZGlmCisrI2lmIGRlZmlu ZWQoX19MUDY0X18pCisrI2RlZmluZSBXRUJSVENfQVJDSF82NF9CSVRTCisrI2Vsc2UKKysjZGVm aW5lIFdFQlJUQ19BUkNIXzMyX0JJVFMKKysjZW5kaWYKKyAjZWxzZQorICNlcnJvciBQbGVhc2Ug YWRkIHN1cHBvcnQgZm9yIHlvdXIgYXJjaGl0ZWN0dXJlIGluIHJ0Y19iYXNlL3N5c3RlbS9hcmNo LmgKKyAjZW5kaWYKK2RpZmYgLS1naXQgdjgvQlVJTEQuZ24gdjgvQlVJTEQuZ24KK2luZGV4IGYz OTUyOWEzYS4uZTg0ZmM0NDllIDEwMDY0NAorLS0tIHY4L0JVSUxELmduCisrKysgdjgvQlVJTEQu Z24KK0BAIC04NTAsNiArODUwLDEyIEBAIGNvbmZpZygidG9vbGNoYWluIikgeworICAgICB9Cisg ICAgIGlmIChob3N0X2J5dGVvcmRlciA9PSAibGl0dGxlIikgeworICAgICAgIGRlZmluZXMgKz0g WyAiVjhfVEFSR0VUX0FSQ0hfUFBDX0xFIiBdCisrICAgICAgY2ZsYWdzICs9IFsKKysgICAgICAg ICMgRW5hYmxlIHVzYWdlIG9mIEFsdGlWZWMsIFZTWCwgYW5kIG90aGVyIFBPV0VSOCBhbmQgaGln aGVyIGZlYXR1cmVzCisrICAgICAgICAiLW1jcHU9cG93ZXI4IiwKKysgICAgICAgICItbWFsdGl2 ZWMiLAorKyAgICAgICAgIi1tdnN4IiwKKysgICAgICBdCisgICAgIH0gZWxzZSBpZiAoaG9zdF9i eXRlb3JkZXIgPT0gImJpZyIpIHsKKyAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNI X1BQQ19CRSIgXQorICAgICAgIGlmIChjdXJyZW50X29zID09ICJhaXgiKSB7CitkaWZmIC0tZ2l0 IHVpL2dsL2ZlYXR1cmVzLmduaSB1aS9nbC9mZWF0dXJlcy5nbmkKK2luZGV4IDVmZGE5YjYuLjNk MmRkOGIgMTAwNjQ0CistLS0gdWkvZ2wvZmVhdHVyZXMuZ25pCisrKysgdWkvZ2wvZmVhdHVyZXMu Z25pCitAQCAtMzIsNSArMzIsNiBAQCBkZWNsYXJlX2FyZ3MoKSB7CisgICAgICAgICAgICAgICAg ICAgICAgICAgKGlzX21hYyAmJiB1c2VfZWdsKSB8fCBpc19jaHJvbWVvc19hc2ggfHwgaXNfZnVj aHNpYSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8 IHRhcmdldF9jcHUgPT0gIng2NCIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRf Y3B1ID09ICJhcm0iIHx8IHRhcmdldF9jcHUgPT0gImFybTY0IiB8fAorLSAgICAgICAgICAgICAg ICAgICAgICAgIHRhcmdldF9jcHUgPT0gIm1pcHNlbCIgfHwgdGFyZ2V0X2NwdSA9PSAibWlwczY0 ZWwiKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9jcHUgPT0gIm1pcHNlbCIgfHwg dGFyZ2V0X2NwdSA9PSAibWlwczY0ZWwiIHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgdGFy Z2V0X2NwdSA9PSAicHBjNjQiKQorIH0KK2RpZmYgLS1naXQgdjgvdGVzdC9CVUlMRC5nbiB2OC90 ZXN0L0JVSUxELmduCitpbmRleCBmYjg3MmFkMzkuLjQ1ZmM1ODVkZCAxMDA2NDQKKy0tLSB2OC90 ZXN0L0JVSUxELmduCisrKysgdjgvdGVzdC9CVUlMRC5nbgorQEAgLTM2LDcgKzM2LDcgQEAgZ3Jv dXAoImduX2FsbCIpIHsKKyAgICAgICAiYmVuY2htYXJrcy9jcHA6Z25fYWxsIiwKKyAgICAgICAi Y2N0ZXN0OmNjdGVzdCIsCisgICAgICAgImNjdGVzdDpnZW5lcmF0ZS1ieXRlY29kZS1leHBlY3Rh dGlvbnMiLAorLSAgICAgICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKysgICAgICAjInVuaXR0ZXN0 czp1bml0dGVzdHMiLAorICAgICBdCisgICB9CisgfQorQEAgLTc4LDcgKzc4LDcgQEAgZ3JvdXAo InY4X2JvdF9kZWZhdWx0IikgeworICAgICAibWVzc2FnZTp2OF9tZXNzYWdlIiwKKyAgICAgIm1q c3VuaXQ6djhfbWpzdW5pdCIsCisgICAgICJta2dyb2tkdW1wOm1rZ3Jva2R1bXAiLAorLSAgICAi dW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisrICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisgICAg ICJ3YXNtLWFwaS10ZXN0czp3YXNtX2FwaV90ZXN0cyIsCisgICAgICJ3YXNtLWpzOnY4X3dhc21f anMiLAorICAgICAid2FzbS1zcGVjLXRlc3RzOnY4X3dhc21fc3BlY190ZXN0cyIsCitAQCAtOTgs NyArOTgsNyBAQCBncm91cCgidjhfZGVmYXVsdCIpIHsKKyAgICAgIm1lc3NhZ2U6djhfbWVzc2Fn ZSIsCisgICAgICJtanN1bml0OnY4X21qc3VuaXQiLAorICAgICAibWtncm9rZHVtcDpta2dyb2tk dW1wIiwKKy0gICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAorKyAgICAjInVuaXR0ZXN0czp1bml0 dGVzdHMiLAorICAgICAid2FzbS1hcGktdGVzdHM6d2FzbV9hcGlfdGVzdHMiLAorICAgICAid2Fz bS1qczp2OF93YXNtX2pzIiwKKyAgICAgIndhc20tc3BlYy10ZXN0czp2OF93YXNtX3NwZWNfdGVz dHMiLApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0teHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUzNTQ5ZDE3ZjVhYwotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1w cGM2NGxlLXN3aWZ0c2hhZGVyLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKKy0tLSB0aGlyZF9wYXJ0 eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLTEwLjAvQlVJTEQuZ24KKysrKyB0aGlyZF9w YXJ0eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLTEwLjAvQlVJTEQuZ24KK0BAIC01NzQs NiArNTc0LDcgQEAgc3dpZnRzaGFkZXJfbGx2bV9zb3VyY2Vfc2V0KCJzd2lmdHNoYWRlcgorICAg ICAibGx2bS9saWIvTUMvTUNBc21JbmZvQ09GRi5jcHAiLAorICAgICAibGx2bS9saWIvTUMvTUNB c21JbmZvRGFyd2luLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9NQ0FzbUluZm9FTEYuY3BwIiwK KysgICAgImxsdm0vbGliL01DL01DQXNtSW5mb1hDT0ZGLmNwcCIsCisgICAgICJsbHZtL2xpYi9N Qy9NQ0FzbU1hY3JvLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9NQ0FzbVN0cmVhbWVyLmNwcCIs CisgICAgICJsbHZtL2xpYi9NQy9NQ0Fzc2VtYmxlci5jcHAiLAorQEAgLTYyOSw2ICs2MzAsNyBA QCBzd2lmdHNoYWRlcl9sbHZtX3NvdXJjZV9zZXQoInN3aWZ0c2hhZGVyCisgICAgICJsbHZtL2xp Yi9NQy9NQ1dpbkNPRkZTdHJlYW1lci5jcHAiLAorICAgICAibGx2bS9saWIvTUMvTUNXaW5FSC5j cHAiLAorICAgICAibGx2bS9saWIvTUMvTUNYQ09GRlN0cmVhbWVyLmNwcCIsCisrICAgICJsbHZt L2xpYi9NQy9NQ1hDT0ZGT2JqZWN0VGFyZ2V0V3JpdGVyLmNwcCIsCisgICAgICJsbHZtL2xpYi9N Qy9NYWNoT2JqZWN0V3JpdGVyLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9TdHJpbmdUYWJsZUJ1 aWxkZXIuY3BwIiwKKyAgICAgImxsdm0vbGliL01DL1N1YnRhcmdldEZlYXR1cmUuY3BwIiwKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLUFkZC1h LXNjcmlwdC10by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gucGF0Y2ggYi9zcmNwa2dzL2VsZWN0 cm9uMTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1BZGQtYS1zY3JpcHQtdG8tbGlzdC1wYXRjaC10 YXJnZXRzLnBhdGNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw MC4uOTE2ZGJhOWRjM2JjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3BhdGNoZXMvZWxlY3Ryb24tQWRkLWEtc2NyaXB0LXRvLWxpc3QtcGF0Y2gtdGFyZ2V0cy5w YXRjaC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGZmNDEyMmYyMzZiNzBjMjcyYzc0NmQw YzMzNmNkYmQ1ODhkNzhjZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFbHZpcyBQ cmFuc2tldmljaHVzIDxlbHZpc0BtYWdpYy5pbz4KK0RhdGU6IFRodSwgMTIgRGVjIDIwMTkgMTY6 MTI6MTggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGEgc2NyaXB0IHRvIGxpc3QgcGF0Y2gg dGFyZ2V0cworCistLS0KKyBzY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5IHwgMjMgKysrKysr KysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKQorIGNy ZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5CisKK2RpZmYgLS1n aXQgYS9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5IGIvc2NyaXB0L2xpc3RfcGF0Y2hfdGFy Z2V0cy5weQorbmV3IGZpbGUgbW9kZSAxMDA3NTUKK2luZGV4IDAwMDAwMDAwMC4uNTUxNzNiYWM5 CistLS0gL2Rldi9udWxsCisrKysgYi9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5CitAQCAt MCwwICsxLDIzIEBACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrCisraW1wb3J0IGFyZ3BhcnNl CisraW1wb3J0IGpzb24KKysKKysKKytkZWYgcGFyc2VfYXJncygpOgorKyAgcGFyc2VyID0gYXJn cGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0FwcGx5IEVsZWN0cm9uIHBhdGNoZXMn KQorKyAgcGFyc2VyLmFkZF9hcmd1bWVudCgnY29uZmlnJywgbmFyZ3M9JysnLAorKyAgICAgICAg ICAgICAgICAgICAgICB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCdyJyksCisrICAgICAgICAgICAg ICAgICAgICAgIGhlbHA9J3BhdGNoZXNcJyBjb25maWcocykgaW4gdGhlIEpTT04gZm9ybWF0JykK KysgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygpCisrCisrCisrZGVmIG1haW4oKToKKysgIGNv bmZpZ3MgPSBwYXJzZV9hcmdzKCkuY29uZmlnCisrICBmb3IgY29uZmlnX2pzb24gaW4gY29uZmln czoKKysgICAgZm9yIHBhdGNoX2RpciwgcmVwbyBpbiBqc29uLmxvYWQoY29uZmlnX2pzb24pLml0 ZXJpdGVtcygpOgorKyAgICAgIHByaW50KHJlcG8pCisrCisrCisraWYgX19uYW1lX18gPT0gJ19f bWFpbl9fJzoKKysgIG1haW4oKQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQnVpbGQtZml4ZXMucGF0Y2gucGF0Y2gg Yi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1CdWlsZC1maXhlcy5w YXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI5OGJm YTliY2IyYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRj aGVzL2VsZWN0cm9uLUJ1aWxkLWZpeGVzLnBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK2Rp ZmYgLS1naXQgYS9idWlsZC9hcmdzL3JlbGVhc2UuZ24gYi9idWlsZC9hcmdzL3JlbGVhc2UuZ24K K2luZGV4IGU1MDE3ZjZlMS4uNTkyMDdiMzg5IDEwMDY0NAorLS0tIGEvYnVpbGQvYXJncy9yZWxl YXNlLmduCisrKysgYi9idWlsZC9hcmdzL3JlbGVhc2UuZ24KK0BAIC0xLDYgKzEsNCBAQAorIGlt cG9ydCgiYWxsLmduIikKKy1pc19jb21wb25lbnRfYnVpbGQgPSBmYWxzZQorLWlzX29mZmljaWFs X2J1aWxkID0gdHJ1ZQorIAorICMgVGhpcyBtYXkgYmUgZ3VhcmRlZCBiZWhpbmQgaXNfY2hyb21l X2JyYW5kZWQgYWxvbmdzaWRlCisgIyBwcm9wcmlldGFyeV9jb2RlY3MgaHR0cHM6Ly93ZWJydGMt cmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9zcmMvKy8zNjMyMSwKK0BAIC04LDkgKzYsMyBAQCBp c19vZmZpY2lhbF9idWlsZCA9IHRydWUKKyAjIFRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgZGVj b2RlciBkZXBlbmRzIG9uIHdoZXRoZXIgZmZtcGVnIGhhcworICMgYmVlbiBidWlsdCB3aXRoIEgu MjY0IHN1cHBvcnQuCisgcnRjX3VzZV9oMjY0ID0gcHJvcHJpZXRhcnlfY29kZWNzCistCistIyBC eSBkZWZhdWx0LCBFbGVjdHJvbiBidWlsZHMgZmZtcGVnIHdpdGggcHJvcHJpZXRhcnkgY29kZWNz IGVuYWJsZWQuIEluIG9yZGVyCistIyB0byBmYWNpbGl0YXRlIHVzZXJzIHdobyBkb24ndCB3YW50 IHRvIHNoaXAgcHJvcHJpZXRhcnkgY29kZWNzIGluIGZmbXBlZywgb3IKKy0jIHdobyBoYXZlIGFu IExHUEwgcmVxdWlyZW1lbnQgdG8gc2hpcCBmZm1wZWcgYXMgYSBkeW5hbWljYWxseSBsaW5rZWQg bGlicmFyeSwKKy0jIHdlIGJ1aWxkIGZmbXBlZyBhcyBhIHNoYXJlZCBsaWJyYXJ5LgorLWlzX2Nv bXBvbmVudF9mZm1wZWcgPSB0cnVlCitkaWZmIC0tZ2l0IGEvYnVpbGQvbnBtLmduaSBiL2J1aWxk L25wbS5nbmkKK2luZGV4IGExOTg3ZDA5NS4uZmIzM2ExNGMzIDEwMDY0NAorLS0tIGEvYnVpbGQv bnBtLmduaQorKysrIGIvYnVpbGQvbnBtLmduaQorQEAgLTM1LDcgKzM1LDYgQEAgdGVtcGxhdGUo Im5wbV9hY3Rpb24iKSB7CisgICAgIGlmICghZGVmaW5lZChkZXBzKSkgeworICAgICAgIGRlcHMg PSBbXQorICAgICB9CistICAgIGRlcHMgKz0gWyAiOm5wbV9wcmVfZmxpZ2h0XyIgKyB0YXJnZXRf bmFtZSBdCisgCisgICAgIHNjcmlwdCA9ICIvL2VsZWN0cm9uL2J1aWxkL25wbS1ydW4ucHkiCisg ICAgIGFyZ3MgPSBbCitkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9ub2RlL2ZpeF9hZGRfZGVmYXVsdF92 YWx1ZXNfZm9yX2VuYWJsZV9sdG9fYW5kX2J1aWxkX3Y4X3dpdGhfZ25faW4ucGF0Y2ggYi9wYXRj aGVzL25vZGUvZml4X2FkZF9kZWZhdWx0X3ZhbHVlc19mb3JfZW5hYmxlX2x0b19hbmRfYnVpbGRf djhfd2l0aF9nbl9pbi5wYXRjaAoraW5kZXggMGRjOTkxNmJlLi43ZWFhNDZiZjUgMTAwNjQ0Cist LS0gYS9wYXRjaGVzL25vZGUvZml4X2FkZF9kZWZhdWx0X3ZhbHVlc19mb3JfZW5hYmxlX2x0b19h bmRfYnVpbGRfdjhfd2l0aF9nbl9pbi5wYXRjaAorKysrIGIvcGF0Y2hlcy9ub2RlL2ZpeF9hZGRf ZGVmYXVsdF92YWx1ZXNfZm9yX2VuYWJsZV9sdG9fYW5kX2J1aWxkX3Y4X3dpdGhfZ25faW4ucGF0 Y2gKK0BAIC0zMCw3ICszMCw3IEBACisgKyAgICAjIHRoZXNlIHZhbHVlcyBiZWluZyBhY2N1cmF0 ZS4KKyArICAgICdidWlsZF92OF93aXRoX2duJzogJ2ZhbHNlJywKKyArICAgICdlbmFibGVfbHRv JSc6ICdmYWxzZScsCistKworKysgICAgJ29wZW5zc2xfZmlwcyc6ICcnLAorICAgICAgJ2NvbmRp dGlvbnMnOiBbCisgICAgICAgIFsndGFyZ2V0X2FyY2g9PSJhcm02NCInLCB7CisgICAgICAgICAg IyBEaXNhYmxlZCBwZW5kaW5nIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9pc3N1ZXMv MjM5MTMuCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Vs ZWN0cm9uLWRvbnQtYXNzdW1lLXB5dGhvbi1pcy1weXRob24yLnBhdGNoIGIvc3JjcGtncy9lbGVj dHJvbjEyL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZG9udC1hc3N1bWUtcHl0aG9uLWlzLXB5dGhv bjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mYjEzNDc0 ODAyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hl cy9lbGVjdHJvbi1kb250LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5wYXRjaApAQCAtMCwwICsx LDE3IEBACistLS0gYS9idWlsZC96aXAucHkub3JpZwkyMDIwLTA0LTI3IDE3OjU5OjUzLjQ5OTI4 MTY2NyArMDIwMAorKysrIGIvYnVpbGQvemlwLnB5CTIwMjAtMDQtMjcgMTc6NTk6NTcuNjU1ODM5 MTQzICswMjAwCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91 c3IvYmluL2VudiBweXRob24yCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlv bgorIGltcG9ydCBvcworIGltcG9ydCBzdWJwcm9jZXNzCisKKy0tLSBhL2J1aWxkL25wbS1ydW4u cHkub3JpZwkyMDIwLTA0LTI3IDE3OjU5OjUwLjgyOTM1MTgwNyArMDIwMAorKysrIGIvYnVpbGQv bnBtLXJ1bi5weQkyMDIwLTA0LTI3IDE4OjAwOjAyLjcwMjM3MzI1NiArMDIwMAorQEAgLTEsNCAr MSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMgor IGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyBpbXBvcnQgb3MKKyBpbXBv cnQgc3VicHJvY2VzcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNo ZXMvZWxlY3Ryb24tZXhjbHVkZS1jb250ZW50LXRlc3QtcGF0Y2hlcy5wYXRjaCBiL3NyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWV4Y2x1ZGUtY29udGVudC10ZXN0LXBh dGNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40NTYy MjM2NDQyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0 Y2hlcy9lbGVjdHJvbi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRjaGVzLnBhdGNoCkBAIC0wLDAg KzEsMTAgQEAKKy0tLSBhL3NjcmlwdC9hcHBseV9hbGxfcGF0Y2hlcy5weQkyMDIwLTA4LTIyIDE3 OjQ2OjQxLjc5NjcwNzUwNiArMDIwMAorKysrIC0JMjAyMC0wOC0yMiAxNzo0NzowNS44ODc4MTM1 MTIgKzAyMDAKK0BAIC0xNCw2ICsxNCw3IEBACisgICBmb3IgcGF0Y2hfZGlyLCByZXBvIGluIGRp cnMuaXRlbXMoKToKKyAgICAgZ2l0LmltcG9ydF9wYXRjaGVzKHJlcG89cmVwbywgcGF0Y2hfZGF0 YT1wYXRjaF9mcm9tX2RpcihwYXRjaF9kaXIpLAorICAgICAgIHRocmVld2F5PXRocmVld2F5IGlz IG5vdCBOb25lLAorKyAgICAgIGV4Y2x1ZGU9Wyd0ZXN0L21qc3VuaXQvKionLCAnY29udGVudC90 ZXN0LyoqJywgJ3Rlc3QvY2N0ZXN0LyoqJywgJ3Rlc3QvdW5pdHRlc3RzLyoqJywgJ3RoaXJkX3Bh cnR5L2JsaW5rL3dlYl90ZXN0cy8qKiddLAorICAgICAgIGNvbW1pdHRlcl9uYW1lPSJFbGVjdHJv biBTY3JpcHRzIiwgY29tbWl0dGVyX2VtYWlsPSJzY3JpcHRzQGVsZWN0cm9uIikKKyAKKyAKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL3gxMS1vem9uZS1maXgt dHdvLWVkZ2UtY2FzZXMucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy94 MTEtb3pvbmUtZml4LXR3by1lZGdlLWNhc2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uN2ZiNTg2ZGExNjlhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMveDExLW96b25lLWZpeC10d28tZWRnZS1jYXNlcy5w YXRjaApAQCAtMCwwICsxLDEzNSBAQAorRnJvbSA1ZTNhNzM4YjEyMDQ5NDFhYWI5ZjE1YzBlYjNk MDZlMjBmZWZkOTZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2NvdHQgVmlvbGV0 IDxza3lAY2hyb21pdW0ub3JnPgorRGF0ZTogTW9uLCA4IE1hciAyMDIxIDIxOjA3OjM5ICswMDAw CitTdWJqZWN0OiBbUEFUQ0hdIHgxMS9vem9uZTogZml4IHR3byBlZGdlIGNhc2VzCisKK1dpbmRv d1RyZWVIb3N0OjpPbkhvc3RNb3ZlZEluUGl4ZWxzKCkgbWF5IHRyaWdnZXIgYSBuZXN0ZWQgbWVz c2FnZQorbG9vcCAodGFiIGRyYWdnaW5nKSwgd2hpY2ggd2hlbiB0aGUgc3RhY2sgdW5yYXZlbHMg bWVhbnMgdGhpcyBtYXkKK2JlIGRlbGV0ZWQuIFRoaXMgYWRkcyBhbiBlYXJseSBvdXQgaWYgdGhp cyBoYXBwZW5zLgorCitYMTFXaG9sZVNjcmVlbk1vdmVMb29wIGhhcyBhIHNpbWlsYXIgaXNzdWUs IGluIHNvIGZhciBhcyBub3RpZnlpbmcKK3RoZSBkZWxlZ2F0ZSBtYXkgZGVsZXRlIHRoaXMuCisK K0JVRz0xMTg1NDgyCitURVNUPVdpbmRvd1RyZWVIb3N0UGxhdGZvcm0uRGVsZXRlSG9zdEZyb21P bkhvc3RNb3ZlZEluUGl4ZWxzCisKK0NoYW5nZS1JZDogSWVjYTFjOTBiM2U0MzU4ZGE1MGIzMzJh YmUyOTQxZmRiYjUwYzVjMjUKK1Jldmlld2VkLW9uOiBodHRwczovL2Nocm9taXVtLXJldmlldy5n b29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysvMjc0MzU1NQorUmV2aWV3ZWQtYnk6IFRo b21hcyBBbmRlcnNvbiA8dGhvbWFzYW5kZXJzb25AY2hyb21pdW0ub3JnPgorQ29tbWl0LVF1ZXVl OiBTY290dCBWaW9sZXQgPHNreUBjaHJvbWl1bS5vcmc+CitDci1Db21taXQtUG9zaXRpb246IHJl ZnMvaGVhZHMvbWFzdGVyQHsjODYwODUyfQorLS0tCisgdWkvYXVyYS93aW5kb3dfdHJlZV9ob3N0 X3BsYXRmb3JtLmNjICAgICAgICAgIHwgMTAgKysrKy0KKyB1aS9hdXJhL3dpbmRvd190cmVlX2hv c3RfcGxhdGZvcm1fdW5pdHRlc3QuY2MgfCA0MCArKysrKysrKysrKysrKysrKystCisgdWkvYmFz ZS94L3gxMV93aG9sZV9zY3JlZW5fbW92ZV9sb29wLmNjICAgICAgIHwgIDQgKysKKyAzIGZpbGVz IGNoYW5nZWQsIDUxIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQg YS91aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZvcm0uY2MgYi91aS9hdXJhL3dpbmRvd190 cmVlX2hvc3RfcGxhdGZvcm0uY2MKK2luZGV4IGNlODM5NWZlMDcuLjc1ODk1NDIwMjYgMTAwNjQ0 CistLS0gdWkvYXVyYS93aW5kb3dfdHJlZV9ob3N0X3BsYXRmb3JtLmNjCisrKysgdWkvYXVyYS93 aW5kb3dfdHJlZV9ob3N0X3BsYXRmb3JtLmNjCitAQCAtMjE0LDEzICsyMTQsMjEgQEAgdm9pZCBX aW5kb3dUcmVlSG9zdFBsYXRmb3JtOjpPbkJvdW5kc0NoYW5nZWQoY29uc3QgZ2Z4OjpSZWN0JiBu ZXdfYm91bmRzKSB7CisgICBmbG9hdCBjdXJyZW50X3NjYWxlID0gY29tcG9zaXRvcigpLT5kZXZp Y2Vfc2NhbGVfZmFjdG9yKCk7CisgICBmbG9hdCBuZXdfc2NhbGUgPSB1aTo6R2V0U2NhbGVGYWN0 b3JGb3JOYXRpdmVWaWV3KHdpbmRvdygpKTsKKyAgIGdmeDo6UmVjdCBvbGRfYm91bmRzID0gYm91 bmRzX2luX3BpeGVsc187CisrICBhdXRvIHdlYWtfcmVmID0gR2V0V2Vha1B0cigpOworICAgYm91 bmRzX2luX3BpeGVsc18gPSBuZXdfYm91bmRzOworLSAgaWYgKGJvdW5kc19pbl9waXhlbHNfLm9y aWdpbigpICE9IG9sZF9ib3VuZHMub3JpZ2luKCkpCisrICBpZiAoYm91bmRzX2luX3BpeGVsc18u b3JpZ2luKCkgIT0gb2xkX2JvdW5kcy5vcmlnaW4oKSkgeworICAgICBPbkhvc3RNb3ZlZEluUGl4 ZWxzKGJvdW5kc19pbl9waXhlbHNfLm9yaWdpbigpKTsKKysgICAgLy8gQ2hhbmdpbmcgdGhlIGJv dW5kcyBtYXkgZGVzdHJveSB0aGlzLgorKyAgICBpZiAoIXdlYWtfcmVmKQorKyAgICAgIHJldHVy bjsKKysgIH0KKyAgIGlmIChib3VuZHNfaW5fcGl4ZWxzXy5zaXplKCkgIT0gb2xkX2JvdW5kcy5z aXplKCkgfHwKKyAgICAgICBjdXJyZW50X3NjYWxlICE9IG5ld19zY2FsZSkgeworICAgICBwZW5k aW5nX3NpemVfID0gZ2Z4OjpTaXplKCk7CisgICAgIE9uSG9zdFJlc2l6ZWRJblBpeGVscyhib3Vu ZHNfaW5fcGl4ZWxzXy5zaXplKCkpOworKyAgICAvLyBDaGFuZ2luZyB0aGUgc2l6ZSBtYXkgZGVz dHJveSB0aGlzLgorKyAgICBpZiAoIXdlYWtfcmVmKQorKyAgICAgIHJldHVybjsKKyAgIH0KKyAg IERDSEVDS19HVChvbl9ib3VuZHNfY2hhbmdlZF9yZWN1cnNpb25fZGVwdGhfLCAwKTsKKyAgIGlm ICgtLW9uX2JvdW5kc19jaGFuZ2VkX3JlY3Vyc2lvbl9kZXB0aF8gPT0gMCkgeworZGlmZiAtLWdp dCBhL3VpL2F1cmEvd2luZG93X3RyZWVfaG9zdF9wbGF0Zm9ybV91bml0dGVzdC5jYyBiL3VpL2F1 cmEvd2luZG93X3RyZWVfaG9zdF9wbGF0Zm9ybV91bml0dGVzdC5jYworaW5kZXggZWRhMTRlMmYw Yy4uNGRlMDM5Yzg4YSAxMDA2NDQKKy0tLSB1aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZv cm1fdW5pdHRlc3QuY2MKKysrKyB1aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZvcm1fdW5p dHRlc3QuY2MKK0BAIC0zNCw3ICszNCw3IEBAIGNsYXNzIFRlc3RXaW5kb3dUcmVlSG9zdCA6IHB1 YmxpYyBXaW5kb3dUcmVlSG9zdFBsYXRmb3JtIHsKKyAvLyBPbkhvc3RXaWxsL0RpZFByb2Nlc3NC b3VuZHNDaGFuZ2UuIEFkZGl0aW9uYWxseSwgdGhpcyB0cmlnZ2VycyBhIGJvdW5kcworIC8vIGNo YW5nZSBmcm9tIHdpdGhpbiBPbkhvc3RSZXNpemVkKCkuIFN1Y2ggYSBzY2VuYXJpbyBoYXBwZW5z IGluIHByb2R1Y3Rpb24KKyAvLyBjb2RlLgorLWNsYXNzIFRlc3RXaW5kb3dUcmVlSG9zdE9ic2Vy dmVyIDogcHVibGljIGF1cmE6OldpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIgeworK2NsYXNzIFRlc3RX aW5kb3dUcmVlSG9zdE9ic2VydmVyIDogcHVibGljIFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIgewor ICBwdWJsaWM6CisgICBUZXN0V2luZG93VHJlZUhvc3RPYnNlcnZlcihXaW5kb3dUcmVlSG9zdFBs YXRmb3JtKiBob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWk6OlBsYXRmb3Jt V2luZG93KiBwbGF0Zm9ybV93aW5kb3cpCitAQCAtNTEsNyArNTEsNyBAQCBjbGFzcyBUZXN0V2lu ZG93VHJlZUhvc3RPYnNlcnZlciA6IHB1YmxpYyBhdXJhOjpXaW5kb3dUcmVlSG9zdE9ic2VydmVy IHsKKyAgICAgcmV0dXJuIG9uX2hvc3Rfd2lsbF9wcm9jZXNzX2JvdW5kc19jaGFuZ2VfY291bnRf OworICAgfQorIAorLSAgLy8gYXVyYTo6V2luZG93VHJlZUhvc3RPYnNlcnZlcjoKKysgIC8vIFdp bmRvd1RyZWVIb3N0T2JzZXJ2ZXI6CisgICB2b2lkIE9uSG9zdFJlc2l6ZWQoV2luZG93VHJlZUhv c3QqIGhvc3QpIG92ZXJyaWRlIHsKKyAgICAgaWYgKCFzaG91bGRfY2hhbmdlX2JvdW5kc19pbl9v bl9yZXNpemVkXykKKyAgICAgICByZXR1cm47CitAQCAtOTIsNSArOTIsNDEgQEAgVEVTVF9GKFdp bmRvd1RyZWVIb3N0UGxhdGZvcm1UZXN0LCBIb3N0V2lsbFByb2Nlc3NCb3VuZHNDaGFuZ2VSZWN1 cnNpb24pIHsKKyAgIEVYUEVDVF9FUSgxLCBvYnNlcnZlci5vbl9ob3N0X3dpbGxfcHJvY2Vzc19i b3VuZHNfY2hhbmdlX2NvdW50KCkpOworIH0KKyAKKysvLyBEZWxldGVzIFdpbmRvd1RyZWVIb3N0 UGxhdGZvcm0gZnJvbSBPbkhvc3RNb3ZlZEluUGl4ZWxzKCkuCisrY2xhc3MgRGVsZXRlSG9zdFdp bmRvd1RyZWVIb3N0T2JzZXJ2ZXIgOiBwdWJsaWMgV2luZG93VHJlZUhvc3RPYnNlcnZlciB7Cisr IHB1YmxpYzoKKysgIGV4cGxpY2l0IERlbGV0ZUhvc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyKAor KyAgICAgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0V2luZG93VHJlZUhvc3Q+IGhvc3QpCisrICAgICAg OiBob3N0XyhzdGQ6Om1vdmUoaG9zdCkpIHsKKysgICAgaG9zdF8tPkFkZE9ic2VydmVyKHRoaXMp OworKyAgfQorKyAgfkRlbGV0ZUhvc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyKCkgb3ZlcnJpZGUg PSBkZWZhdWx0OworKworKyAgVGVzdFdpbmRvd1RyZWVIb3N0KiBob3N0KCkgeyByZXR1cm4gaG9z dF8uZ2V0KCk7IH0KKysKKysgIC8vIFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXI6CisrICB2b2lkIE9u SG9zdE1vdmVkSW5QaXhlbHMoV2luZG93VHJlZUhvc3QqIGhvc3QsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgZ2Z4OjpQb2ludCYgbmV3X29yaWdpbl9pbl9waXhlbHMpIG92ZXJy aWRlIHsKKysgICAgaG9zdF8tPlJlbW92ZU9ic2VydmVyKHRoaXMpOworKyAgICBob3N0Xy5yZXNl dCgpOworKyAgfQorKworKyBwcml2YXRlOgorKyAgc3RkOjp1bmlxdWVfcHRyPFRlc3RXaW5kb3dU cmVlSG9zdD4gaG9zdF87CisrCisrICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oRGVsZXRlSG9z dFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIpOworK307CisrCisrLy8gVmVyaWZpZXMgV2luZG93VHJl ZUhvc3RQbGF0Zm9ybSBjYW4gYmUgc2FmZWx5IGRlbGV0ZWQgd2hlbiBjYWxsaW5nCisrLy8gT25I b3N0TW92ZWRJblBpeGVscygpLgorKy8vIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaHR0cHM6Ly9jcmJ1 Zy5jb20vMTE4NTQ4MgorK1RFU1RfRihXaW5kb3dUcmVlSG9zdFBsYXRmb3JtVGVzdCwgRGVsZXRl SG9zdEZyb21Pbkhvc3RNb3ZlZEluUGl4ZWxzKSB7CisrICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFdp bmRvd1RyZWVIb3N0PiBob3N0ID0KKysgICAgICBzdGQ6Om1ha2VfdW5pcXVlPFRlc3RXaW5kb3dU cmVlSG9zdD4oKTsKKysgIERlbGV0ZUhvc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyIG9ic2VydmVy KHN0ZDo6bW92ZShob3N0KSk7CisrICBvYnNlcnZlci5ob3N0KCktPlNldEJvdW5kc0luUGl4ZWxz KGdmeDo6UmVjdCgxLCAyLCAzLCA0KSk7CisrICBFWFBFQ1RfRVEobnVsbHB0ciwgb2JzZXJ2ZXIu aG9zdCgpKTsKKyt9CisrCisgfSAgLy8gbmFtZXNwYWNlCisgfSAgLy8gbmFtZXNwYWNlIGF1cmEK K2RpZmYgLS1naXQgYS91aS9iYXNlL3gveDExX3dob2xlX3NjcmVlbl9tb3ZlX2xvb3AuY2MgYi91 aS9iYXNlL3gveDExX3dob2xlX3NjcmVlbl9tb3ZlX2xvb3AuY2MKK2luZGV4IDVlZDIxNWRiNjYu LmRiNjc4Nzk5ZGIgMTAwNjQ0CistLS0gdWkvYmFzZS94L3gxMV93aG9sZV9zY3JlZW5fbW92ZV9s b29wLmNjCisrKysgdWkvYmFzZS94L3gxMV93aG9sZV9zY3JlZW5fbW92ZV9sb29wLmNjCitAQCAt NzgsOSArNzgsMTMgQEAgWDExV2hvbGVTY3JlZW5Nb3ZlTG9vcDo6flgxMVdob2xlU2NyZWVuTW92 ZUxvb3AoKSB7Cisgdm9pZCBYMTFXaG9sZVNjcmVlbk1vdmVMb29wOjpEaXNwYXRjaE1vdXNlTW92 ZW1lbnQoKSB7CisgICBpZiAoIWxhc3RfbW90aW9uX2luX3NjcmVlbl8pCisgICAgIHJldHVybjsK KysgIGF1dG8gd2Vha19yZWYgPSB3ZWFrX2ZhY3RvcnlfLkdldFdlYWtQdHIoKTsKKyAgIGRlbGVn YXRlXy0+T25Nb3VzZU1vdmVtZW50KGxhc3RfbW90aW9uX2luX3NjcmVlbl8tPnJvb3RfbG9jYXRp b24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfbW90aW9uX2luX3NjcmVl bl8tPmZsYWdzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0X21vdGlvbl9p bl9zY3JlZW5fLT50aW1lX3N0YW1wKCkpOworKyAgLy8gVGhlIGRlbGVnYXRlIG1heSBkZWxldGUg dGhpcyBkdXJpbmcgZGlzcGF0Y2guCisrICBpZiAoIXdlYWtfcmVmKQorKyAgICByZXR1cm47Cisg ICBsYXN0X21vdGlvbl9pbl9zY3JlZW5fLnJlc2V0KCk7CisgfQorIApkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5j YyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29w ZW5ic2QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4yYzdhYThl ZmE2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8t ZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmNjCkBAIC0wLDAgKzEsMTQ4IEBACisvLyBDb3B5 cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5j bHVkZSAiYmFzZS9tZXRyaWNzL2hpc3RvZ3JhbV9tYWNyb3MuaCIKKyNpbmNsdWRlICJiYXNlL21l bW9yeS9wdHJfdXRpbC5oIgorCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vb3BlbmJzZC9hdWRpb19t YW5hZ2VyX29wZW5ic2QuaCIKKworI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2RldmljZV9k ZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX291dHB1dF9kaXNwYXRj aGVyLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9faW5wdXQuaCIKKyNpbmNs dWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaCIKKyNpbmNsdWRlICJtZWRpYS9i YXNlL2xpbWl0cy5oIgorI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFfc3dpdGNoZXMuaCIKKwor bmFtZXNwYWNlIG1lZGlhIHsKKworLy8gTWF4aW11bSBudW1iZXIgb2Ygb3V0cHV0IHN0cmVhbXMg dGhhdCBjYW4gYmUgb3BlbiBzaW11bHRhbmVvdXNseS4KK3N0YXRpYyBjb25zdCBpbnQga01heE91 dHB1dFN0cmVhbXMgPSA0OworCisvLyBEZWZhdWx0IHNhbXBsZSByYXRlIGZvciBpbnB1dCBhbmQg b3V0cHV0IHN0cmVhbXMuCitzdGF0aWMgY29uc3QgaW50IGtEZWZhdWx0U2FtcGxlUmF0ZSA9IDQ4 MDAwOworCit2b2lkIEFkZERlZmF1bHREZXZpY2UoQXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25h bWVzKSB7CisgIERDSEVDSyhkZXZpY2VfbmFtZXMtPmVtcHR5KCkpOworICBkZXZpY2VfbmFtZXMt PnB1c2hfZnJvbnQoQXVkaW9EZXZpY2VOYW1lOjpDcmVhdGVEZWZhdWx0KCkpOworfQorCitib29s IEF1ZGlvTWFuYWdlck9wZW5CU0Q6Okhhc0F1ZGlvT3V0cHV0RGV2aWNlcygpIHsKKyAgcmV0dXJu IHRydWU7Cit9CisKK2Jvb2wgQXVkaW9NYW5hZ2VyT3BlbkJTRDo6SGFzQXVkaW9JbnB1dERldmlj ZXMoKSB7CisgIHJldHVybiB0cnVlOworfQorCit2b2lkIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Okdl dEF1ZGlvSW5wdXREZXZpY2VOYW1lcygKKyAgICBBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFt ZXMpIHsKKyAgRENIRUNLKGRldmljZV9uYW1lcy0+ZW1wdHkoKSk7CisgIEFkZERlZmF1bHREZXZp Y2UoZGV2aWNlX25hbWVzKTsKK30KKwordm9pZCBBdWRpb01hbmFnZXJPcGVuQlNEOjpHZXRBdWRp b091dHB1dERldmljZU5hbWVzKAorICAgIEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykg eworICBBZGREZWZhdWx0RGV2aWNlKGRldmljZV9uYW1lcyk7Cit9CisKK2NvbnN0IGNoYXIqIEF1 ZGlvTWFuYWdlck9wZW5CU0Q6OkdldE5hbWUoKSB7CisgIHJldHVybiAiU05ESU8iOworfQorCitB dWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2VyT3BlbkJTRDo6R2V0SW5wdXRTdHJlYW1QYXJhbWV0 ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQpIHsKKyAgc3RhdGljIGNvbnN0 IGludCBrRGVmYXVsdElucHV0QnVmZmVyU2l6ZSA9IDEwMjQ7CisKKyAgaW50IHVzZXJfYnVmZmVy X3NpemUgPSBHZXRVc2VyQnVmZmVyU2l6ZSgpOworICBpbnQgYnVmZmVyX3NpemUgPSB1c2VyX2J1 ZmZlcl9zaXplID8KKyAgICAgIHVzZXJfYnVmZmVyX3NpemUgOiBrRGVmYXVsdElucHV0QnVmZmVy U2l6ZTsKKworICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJzKAorICAgICAgQXVkaW9QYXJhbWV0ZXJz OjpBVURJT19QQ01fTE9XX0xBVEVOQ1ksIENIQU5ORUxfTEFZT1VUX1NURVJFTywKKyAgICAgIGtE ZWZhdWx0U2FtcGxlUmF0ZSwgYnVmZmVyX3NpemUpOworfQorCitBdWRpb01hbmFnZXJPcGVuQlNE OjpBdWRpb01hbmFnZXJPcGVuQlNEKHN0ZDo6dW5pcXVlX3B0cjxBdWRpb1RocmVhZD4gYXVkaW9f dGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0xv Z0ZhY3RvcnkqIGF1ZGlvX2xvZ19mYWN0b3J5KQorICAgIDogQXVkaW9NYW5hZ2VyQmFzZShzdGQ6 Om1vdmUoYXVkaW9fdGhyZWFkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fbG9nX2Zh Y3RvcnkpIHsKKyAgRExPRyhXQVJOSU5HKSA8PCAiQXVkaW9NYW5hZ2VyT3BlbkJTRCI7CisgIFNl dE1heE91dHB1dFN0cmVhbXNBbGxvd2VkKGtNYXhPdXRwdXRTdHJlYW1zKTsKK30KKworQXVkaW9N YW5hZ2VyT3BlbkJTRDo6fkF1ZGlvTWFuYWdlck9wZW5CU0QoKSB7CisgIFNodXRkb3duKCk7Cit9 CisKK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01hbmFnZXJPcGVuQlNEOjpNYWtlTGluZWFyT3V0 cHV0U3RyZWFtKAorICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgIGNvbnN0 IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKKyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVy czo6QVVESU9fUENNX0xJTkVBUiwgcGFyYW1zLmZvcm1hdCgpKTsKKyAgcmV0dXJuIE1ha2VPdXRw dXRTdHJlYW0ocGFyYW1zKTsKK30KKworQXVkaW9PdXRwdXRTdHJlYW0qIEF1ZGlvTWFuYWdlck9w ZW5CU0Q6Ok1ha2VMb3dMYXRlbmN5T3V0cHV0U3RyZWFtKAorICAgIGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgcGFyYW1zLAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisgICAgY29u c3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgeworICBETE9HX0lGKEVSUk9SLCAhZGV2aWNl X2lkLmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKyAgRENIRUNLX0VRKEF1ZGlvUGFy YW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBwYXJhbXMuZm9ybWF0KCkpOworICByZXR1 cm4gTWFrZU91dHB1dFN0cmVhbShwYXJhbXMpOworfQorCitBdWRpb0lucHV0U3RyZWFtKiBBdWRp b01hbmFnZXJPcGVuQlNEOjpNYWtlTGluZWFySW5wdXRTdHJlYW0oCisgICAgY29uc3QgQXVkaW9Q YXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAg ICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisgIERDSEVDS19FUShBdWRpb1Bh cmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIsIHBhcmFtcy5mb3JtYXQoKSk7CisgIHJldHVybiBN YWtlSW5wdXRTdHJlYW0ocGFyYW1zKTsKK30KKworQXVkaW9JbnB1dFN0cmVhbSogQXVkaW9NYW5h Z2VyT3BlbkJTRDo6TWFrZUxvd0xhdGVuY3lJbnB1dFN0cmVhbSgKKyAgICBjb25zdCBBdWRpb1Bh cmFtZXRlcnMmIHBhcmFtcywKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorICAg IGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKKyAgRENIRUNLX0VRKEF1ZGlvUGFy YW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBwYXJhbXMuZm9ybWF0KCkpOworICByZXR1 cm4gTWFrZUlucHV0U3RyZWFtKHBhcmFtcyk7Cit9CisKK0F1ZGlvUGFyYW1ldGVycyBBdWRpb01h bmFnZXJPcGVuQlNEOjpHZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0ZXJzKAorICAgIGNv bnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkLAorICAgIGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgaW5wdXRfcGFyYW1zKSB7CisgIC8vIFRPRE8odG9tbWkpOiBTdXBwb3J0IHxvdXRwdXRf ZGV2aWNlX2lkfC4KKyAgRExPR19JRihFUlJPUiwgIW91dHB1dF9kZXZpY2VfaWQuZW1wdHkoKSkg PDwgIk5vdCBpbXBsZW1lbnRlZCEiOworICBzdGF0aWMgY29uc3QgaW50IGtEZWZhdWx0T3V0cHV0 QnVmZmVyU2l6ZSA9IDIwNDg7CisKKyAgQ2hhbm5lbExheW91dCBjaGFubmVsX2xheW91dCA9IENI QU5ORUxfTEFZT1VUX1NURVJFTzsKKyAgaW50IHNhbXBsZV9yYXRlID0ga0RlZmF1bHRTYW1wbGVS YXRlOworICBpbnQgYnVmZmVyX3NpemUgPSBrRGVmYXVsdE91dHB1dEJ1ZmZlclNpemU7CisgIGlm IChpbnB1dF9wYXJhbXMuSXNWYWxpZCgpKSB7CisgICAgc2FtcGxlX3JhdGUgPSBpbnB1dF9wYXJh bXMuc2FtcGxlX3JhdGUoKTsKKyAgICBjaGFubmVsX2xheW91dCA9IGlucHV0X3BhcmFtcy5jaGFu bmVsX2xheW91dCgpOworICAgIGJ1ZmZlcl9zaXplID0gc3RkOjptaW4oYnVmZmVyX3NpemUsIGlu cHV0X3BhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpKTsKKyAgfQorCisgIGludCB1c2VyX2J1ZmZl cl9zaXplID0gR2V0VXNlckJ1ZmZlclNpemUoKTsKKyAgaWYgKHVzZXJfYnVmZmVyX3NpemUpCisg ICAgYnVmZmVyX3NpemUgPSB1c2VyX2J1ZmZlcl9zaXplOworCisgIHJldHVybiBBdWRpb1BhcmFt ZXRlcnMoCisgICAgICBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgY2hh bm5lbF9sYXlvdXQsCisgICAgICBzYW1wbGVfcmF0ZSwgYnVmZmVyX3NpemUpOworfQorCitBdWRp b0lucHV0U3RyZWFtKiBBdWRpb01hbmFnZXJPcGVuQlNEOjpNYWtlSW5wdXRTdHJlYW0oCisgICAg Y29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgRExPRyhXQVJOSU5HKSA8PCAiTWFr ZUlucHV0U3RyZWFtIjsKKyAgcmV0dXJuIG5ldyBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0odGhpcywK KyAgICAgICAgICAgICBBdWRpb0RldmljZURlc2NyaXB0aW9uOjprRGVmYXVsdERldmljZUlkLCBw YXJhbXMpOworfQorCitBdWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyT3BlbkJTRDo6TWFr ZU91dHB1dFN0cmVhbSgKKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcykgeworICBE TE9HKFdBUk5JTkcpIDw8ICJNYWtlT3V0cHV0U3RyZWFtIjsKKyAgcmV0dXJuIG5ldyBTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtKHBhcmFtcywgdGhpcyk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBtZWRp YQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlv X21hbmFnZXJfb3BlbmJzZC5oIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVz L2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uOGM5OWRiOTY2ZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJv bjEyL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oCkBAIC0wLDAgKzEs NjUgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJp Z2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5 IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNF IGZpbGUuCisKKyNpZm5kZWYgTUVESUFfQVVESU9fT1BFTkJTRF9BVURJT19NQU5BR0VSX09QRU5C U0RfSF8KKyNkZWZpbmUgTUVESUFfQVVESU9fT1BFTkJTRF9BVURJT19NQU5BR0VSX09QRU5CU0Rf SF8KKworI2luY2x1ZGUgPHNldD4KKworI2luY2x1ZGUgImJhc2UvY29tcGlsZXJfc3BlY2lmaWMu aCIKKyNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImJhc2UvbWVtb3J5L3JlZl9j b3VudGVkLmgiCisjaW5jbHVkZSAiYmFzZS90aHJlYWRpbmcvdGhyZWFkLmgiCisjaW5jbHVkZSAi bWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdlcl9iYXNlLmgiCisKK25hbWVzcGFjZSBtZWRpYSB7CisK K2NsYXNzIE1FRElBX0VYUE9SVCBBdWRpb01hbmFnZXJPcGVuQlNEIDogcHVibGljIEF1ZGlvTWFu YWdlckJhc2UgeworIHB1YmxpYzoKKyAgQXVkaW9NYW5hZ2VyT3BlbkJTRChzdGQ6OnVuaXF1ZV9w dHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICBBdWRpb0xv Z0ZhY3RvcnkqIGF1ZGlvX2xvZ19mYWN0b3J5KTsKKyAgfkF1ZGlvTWFuYWdlck9wZW5CU0QoKSBv dmVycmlkZTsKKworICAvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb01hbmFnZXIuCisgIGJvb2wg SGFzQXVkaW9PdXRwdXREZXZpY2VzKCkgb3ZlcnJpZGU7CisgIGJvb2wgSGFzQXVkaW9JbnB1dERl dmljZXMoKSBvdmVycmlkZTsKKyAgdm9pZCBHZXRBdWRpb0lucHV0RGV2aWNlTmFtZXMoQXVkaW9E ZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSBvdmVycmlkZTsKKyAgdm9pZCBHZXRBdWRpb091dHB1 dERldmljZU5hbWVzKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgb3ZlcnJpZGU7Cisg IEF1ZGlvUGFyYW1ldGVycyBHZXRJbnB1dFN0cmVhbVBhcmFtZXRlcnMoCisgICAgICBjb25zdCBz dGQ6OnN0cmluZyYgZGV2aWNlX2lkKSBvdmVycmlkZTsKKyAgY29uc3QgY2hhciogR2V0TmFtZSgp IG92ZXJyaWRlOworCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvTWFuYWdlckJhc2UuCisg IEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTGluZWFyT3V0cHV0U3RyZWFtKAorICAgICAgY29uc3Qg QXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2Nh bGxiYWNrKSBvdmVycmlkZTsKKyAgQXVkaW9PdXRwdXRTdHJlYW0qIE1ha2VMb3dMYXRlbmN5T3V0 cHV0U3RyZWFtKAorICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICBj b25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxv Z19jYWxsYmFjaykgb3ZlcnJpZGU7CisgIEF1ZGlvSW5wdXRTdHJlYW0qIE1ha2VMaW5lYXJJbnB1 dFN0cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgICAgY29u c3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAgICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2df Y2FsbGJhY2spIG92ZXJyaWRlOworICBBdWRpb0lucHV0U3RyZWFtKiBNYWtlTG93TGF0ZW5jeUlu cHV0U3RyZWFtKAorICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICBj b25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxv Z19jYWxsYmFjaykgb3ZlcnJpZGU7CisKKyBwcm90ZWN0ZWQ6CisgIEF1ZGlvUGFyYW1ldGVycyBH ZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0ZXJzKAorICAgICAgY29uc3Qgc3RkOjpzdHJp bmcmIG91dHB1dF9kZXZpY2VfaWQsCisgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIGlucHV0 X3BhcmFtcykgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorICAvLyBDYWxsZWQgYnkgTWFrZUxpbmVh ck91dHB1dFN0cmVhbSBhbmQgTWFrZUxvd0xhdGVuY3lPdXRwdXRTdHJlYW0uCisgIEF1ZGlvT3V0 cHV0U3RyZWFtKiBNYWtlT3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1z KTsKKyAgQXVkaW9JbnB1dFN0cmVhbSogTWFrZUlucHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgcGFyYW1zKTsKKworICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQXVkaW9NYW5hZ2Vy T3BlbkJTRCk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKworI2VuZGlmICAvLyBNRURJ QV9BVURJT19PUEVOQlNEX0FVRElPX01BTkFHRVJfT1BFTkJTRF9IXwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNjIGIvc3JjcGtn cy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNjCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWY1NDM5YjQ5YTA3Ci0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNj CkBAIC0wLDAgKzEsMjAwIEBACisvLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9y cy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv dmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRo ZSBMSUNFTlNFIGZpbGUuCisKKyNpbmNsdWRlICJiYXNlL2JpbmQuaCIKKyNpbmNsdWRlICJiYXNl L2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgIm1lZGlhL2Jh c2UvYXVkaW9fdGltZXN0YW1wX2hlbHBlci5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL29wZW5i c2QvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9f bWFuYWdlci5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmgiCisK K25hbWVzcGFjZSBtZWRpYSB7CisKK3N0YXRpYyBjb25zdCBTYW1wbGVGb3JtYXQga1NhbXBsZUZv cm1hdCA9IGtTYW1wbGVGb3JtYXRTMTY7CisKK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpP bk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSkKK3sKKyAgU25kaW9BdWRpb0lucHV0 U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb0lucHV0U3RyZWFtKj4oYXJnKTsK KworICBzZWxmLT5od19kZWxheSArPSBkZWx0YTsKK30KKwordm9pZCAqU25kaW9BdWRpb0lucHV0 U3RyZWFtOjpUaHJlYWRFbnRyeSh2b2lkICphcmcpIHsKKyAgU25kaW9BdWRpb0lucHV0U3RyZWFt KiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb0lucHV0U3RyZWFtKj4oYXJnKTsKKworICBz ZWxmLT5UaHJlYWRMb29wKCk7CisgIHJldHVybiBOVUxMOworfQorCitTbmRpb0F1ZGlvSW5wdXRT dHJlYW06OlNuZGlvQXVkaW9JbnB1dFN0cmVhbShBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpz dHJpbmcmIGRldmljZV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpCisgICAgOiBtYW5hZ2VyKG1h bmFnZXIpLAorICAgICAgcGFyYW1zKHBhcmFtcyksCisgICAgICBhdWRpb19idXMoQXVkaW9CdXM6 OkNyZWF0ZShwYXJhbXMpKSwKKyAgICAgIHN0YXRlKGtDbG9zZWQpIHsKK30KKworU25kaW9BdWRp b0lucHV0U3RyZWFtOjp+U25kaW9BdWRpb0lucHV0U3RyZWFtKCkgeworICBpZiAoc3RhdGUgIT0g a0Nsb3NlZCkKKyAgICBDbG9zZSgpOworfQorCitib29sIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6 T3BlbigpIHsKKyAgc3RydWN0IHNpb19wYXIgcGFyOworICBpbnQgc2lnOworCisgIGlmIChzdGF0 ZSAhPSBrQ2xvc2VkKQorICAgIHJldHVybiBmYWxzZTsKKworICBpZiAocGFyYW1zLmZvcm1hdCgp ICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgorICAgICAgcGFyYW1zLmZv cm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZKSB7CisgICAg TE9HKFdBUk5JTkcpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBmb3JtYXQuIjsKKyAgICByZXR1cm4g ZmFsc2U7CisgIH0KKworICBzaW9faW5pdHBhcigmcGFyKTsKKyAgcGFyLnJhdGUgPSBwYXJhbXMu c2FtcGxlX3JhdGUoKTsKKyAgcGFyLnJjaGFuID0gcGFyYW1zLmNoYW5uZWxzKCk7CisgIHBhci5i aXRzID0gU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KTsKKyAgcGFy LmJwcyA9IHBhci5iaXRzIC8gODsKKyAgcGFyLnNpZyA9IHNpZyA9IHBhci5iaXRzICE9IDggPyAx IDogMDsKKyAgcGFyLmxlID0gU0lPX0xFX05BVElWRTsKKyAgcGFyLmFwcGJ1ZnN6ID0gcGFyYW1z LmZyYW1lc19wZXJfYnVmZmVyKCk7CisKKyAgaGRsID0gc2lvX29wZW4oU0lPX0RFVkFOWSwgU0lP X1JFQywgMCk7CisKKyAgaWYgKGhkbCA9PSBOVUxMKSB7CisgICAgTE9HKEVSUk9SKSA8PCAiQ291 bGRuJ3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBp ZiAoIXNpb19zZXRwYXIoaGRsLCAmcGFyKSB8fCAhc2lvX2dldHBhcihoZGwsICZwYXIpKSB7Cisg ICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgc2V0IGF1ZGlvIHBhcmFtZXRlcnMuIjsKKyAgICBn b3RvIGJhZF9jbG9zZTsKKyAgfQorCisgIGlmIChwYXIucmF0ZSAgIT0gKHVuc2lnbmVkIGludClw YXJhbXMuc2FtcGxlX3JhdGUoKSB8fAorICAgICAgcGFyLnJjaGFuICE9ICh1bnNpZ25lZCBpbnQp cGFyYW1zLmNoYW5uZWxzKCkgfHwKKyAgICAgIHBhci5iaXRzICAhPSAodW5zaWduZWQgaW50KVNh bXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCkgfHwKKyAgICAgIHBhci5z aWcgICAhPSAodW5zaWduZWQgaW50KXNpZyB8fAorICAgICAgKHBhci5icHMgPiAxICYmIHBhci5s ZSAhPSBTSU9fTEVfTkFUSVZFKSB8fAorICAgICAgKHBhci5iaXRzICE9IHBhci5icHMgKiA4KSkg eworICAgIExPRyhFUlJPUikgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKKyAg ICBnb3RvIGJhZF9jbG9zZTsKKyAgfQorICBzdGF0ZSA9IGtTdG9wcGVkOworICBidWZmZXIgPSBu ZXcgY2hhclthdWRpb19idXMtPmZyYW1lcygpICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1Nh bXBsZUZvcm1hdCldOworICBzaW9fb25tb3ZlKGhkbCwgJk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsK KyAgcmV0dXJuIHRydWU7CitiYWRfY2xvc2U6CisgIHNpb19jbG9zZShoZGwpOworICByZXR1cm4g ZmFsc2U7Cit9CisKK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTdGFydChBdWRpb0lucHV0 Q2FsbGJhY2sqIGNiKSB7CisKKyAgU3RhcnRBZ2MoKTsKKworICBzdGF0ZSA9IGtSdW5uaW5nOwor ICBod19kZWxheSA9IDA7CisgIGNhbGxiYWNrID0gY2I7CisgIHNpb19zdGFydChoZGwpOworICBp ZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVMTCwgJlRocmVhZEVudHJ5LCB0aGlzKSAhPSAw KSB7CisgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFk IGZvciByZWNvcmRpbmcuIjsKKyAgICBzaW9fc3RvcChoZGwpOworICAgIHN0YXRlID0ga1N0b3Bw ZWQ7CisgIH0KK30KKwordm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlN0b3AoKSB7CisKKyAg aWYgKHN0YXRlID09IGtTdG9wcGVkKQorICAgIHJldHVybjsKKworICBzdGF0ZSA9IGtTdG9wV2Fp dDsKKyAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CisgIHNpb19zdG9wKGhkbCk7CisgIHN0 YXRlID0ga1N0b3BwZWQ7CisKKyAgU3RvcEFnYygpOworfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1 dFN0cmVhbTo6Q2xvc2UoKSB7CisKKyAgaWYgKHN0YXRlID09IGtDbG9zZWQpCisgICAgcmV0dXJu OworCisgIGlmIChzdGF0ZSA9PSBrUnVubmluZykKKyAgICBTdG9wKCk7CisKKyAgc3RhdGUgPSBr Q2xvc2VkOworICBkZWxldGUgW10gYnVmZmVyOworICBzaW9fY2xvc2UoaGRsKTsKKworICBtYW5h Z2VyLT5SZWxlYXNlSW5wdXRTdHJlYW0odGhpcyk7Cit9CisKK2RvdWJsZSBTbmRpb0F1ZGlvSW5w dXRTdHJlYW06OkdldE1heFZvbHVtZSgpIHsKKyAgLy8gTm90IHN1cHBvcnRlZAorICByZXR1cm4g MC4wOworfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U2V0Vm9sdW1lKGRvdWJsZSB2 b2x1bWUpIHsKKyAgLy8gTm90IHN1cHBvcnRlZC4gRG8gbm90aGluZy4KK30KKworZG91YmxlIFNu ZGlvQXVkaW9JbnB1dFN0cmVhbTo6R2V0Vm9sdW1lKCkgeworICAvLyBOb3Qgc3VwcG9ydGVkLgor ICByZXR1cm4gMC4wOworfQorCitib29sIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6SXNNdXRlZCgp IHsKKyAgLy8gTm90IHN1cHBvcnRlZC4KKyAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNuZGlv QXVkaW9JbnB1dFN0cmVhbTo6U2V0T3V0cHV0RGV2aWNlRm9yQWVjKAorICAgIGNvbnN0IHN0ZDo6 c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkKSB7CisgIC8vIE5vdCBzdXBwb3J0ZWQuCit9CisKK3Zv aWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpUaHJlYWRMb29wKHZvaWQpIHsKKyAgc2l6ZV90IHRv ZG8sIG47CisgIGNoYXIgKmRhdGE7CisgIHVuc2lnbmVkIGludCBuZnJhbWVzOworICBkb3VibGUg bm9ybWFsaXplZF92b2x1bWUgPSAwLjA7CisKKyAgbmZyYW1lcyA9IGF1ZGlvX2J1cy0+ZnJhbWVz KCk7CisKKyAgd2hpbGUgKHN0YXRlID09IGtSdW5uaW5nICYmICFzaW9fZW9mKGhkbCkpIHsKKwor ICAgIEdldEFnY1ZvbHVtZSgmbm9ybWFsaXplZF92b2x1bWUpOworCisgICAgLy8gcmVhZCBvbmUg YmxvY2sKKyAgICB0b2RvID0gbmZyYW1lcyAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1w bGVGb3JtYXQpOworICAgIGRhdGEgPSBidWZmZXI7CisgICAgd2hpbGUgKHRvZG8gPiAwKSB7Cisg ICAgICBuID0gc2lvX3JlYWQoaGRsLCBkYXRhLCB0b2RvKTsKKyAgICAgIGlmIChuID09IDApCisg ICAgICAgIHJldHVybjsJLy8gdW5yZWNvdmVyYWJsZSBJL08gZXJyb3IKKyAgICAgIHRvZG8gLT0g bjsKKyAgICAgIGRhdGEgKz0gbjsKKyAgICB9CisgICAgaHdfZGVsYXkgLT0gbmZyYW1lczsKKwor ICAgIC8vIGNvbnZlcnQgZnJhbWVzIGNvdW50IHRvIFRpbWVEZWx0YQorICAgIGNvbnN0IGJhc2U6 OlRpbWVEZWx0YSBkZWxheSA9IEF1ZGlvVGltZXN0YW1wSGVscGVyOjpGcmFtZXNUb1RpbWUoaHdf ZGVsYXksCisgICAgICBwYXJhbXMuc2FtcGxlX3JhdGUoKSk7CisKKyAgICAvLyBwdXNoIGludG8g YnVzCisgICAgYXVkaW9fYnVzLT5Gcm9tSW50ZXJsZWF2ZWQoYnVmZmVyLCBuZnJhbWVzLCBTYW1w bGVGb3JtYXRUb0J5dGVzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KSk7CisKKyAgICAvLyBpbnZv a2UgY2FsbGJhY2sKKyAgICBjYWxsYmFjay0+T25EYXRhKGF1ZGlvX2J1cy5nZXQoKSwgYmFzZTo6 VGltZVRpY2tzOjpOb3coKSAtIGRlbGF5LCAxLik7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNl IG1lZGlhCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMv c25kaW9faW5wdXQuaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1maWxlcy9zbmRp b19pbnB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZDg2OGUw NDY5ZGI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlv LWZpbGVzL3NuZGlvX2lucHV0LmgKQEAgLTAsMCArMSw5MSBAQAorLy8gQ29weXJpZ2h0IDIwMTMg VGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhp cyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2Fu IGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaWZuZGVmIE1FRElBX0FVRElP X1NORElPX1NORElPX0lOUFVUX0hfCisjZGVmaW5lIE1FRElBX0FVRElPX1NORElPX1NORElPX0lO UFVUX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVk ZSA8c25kaW8uaD4KKworI2luY2x1ZGUgImJhc2UvY29tcGlsZXJfc3BlY2lmaWMuaCIKKyNpbmNs dWRlICJiYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUgImJhc2UvbWVtb3J5L3dlYWtfcHRyLmgiCisj aW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hZ2NfYXVk aW9fc3RyZWFtLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKKyNpbmNsdWRl ICJtZWRpYS9hdWRpby9hdWRpb19kZXZpY2VfZGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJtZWRp YS9iYXNlL2F1ZGlvX3BhcmFtZXRlcnMuaCIKKworbmFtZXNwYWNlIG1lZGlhIHsKKworY2xhc3Mg QXVkaW9NYW5hZ2VyQmFzZTsKKworLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJl YW0gdXNpbmcgc25kaW8oNykKK2NsYXNzIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSA6IHB1YmxpYyBB Z2NBdWRpb1N0cmVhbTxBdWRpb0lucHV0U3RyZWFtPiB7CisgcHVibGljOgorICAvLyBQYXNzIHRo aXMgdG8gdGhlIGNvbnN0cnVjdG9yIGlmIHlvdSB3YW50IHRvIGF0dGVtcHQgYXV0by1zZWxlY3Rp b24KKyAgLy8gb2YgdGhlIGF1ZGlvIHJlY29yZGluZyBkZXZpY2UuCisgIHN0YXRpYyBjb25zdCBj aGFyIGtBdXRvU2VsZWN0RGV2aWNlW107CisKKyAgLy8gQ3JlYXRlIGEgUENNIE91dHB1dCBzdHJl YW0gZm9yIHRoZSBTTkRJTyBkZXZpY2UgaWRlbnRpZmllZCBieQorICAvLyB8ZGV2aWNlX25hbWV8 LiBJZiB1bnN1cmUgb2Ygd2hhdCB0byB1c2UgZm9yIHxkZXZpY2VfbmFtZXwsIHVzZQorICAvLyB8 a0F1dG9TZWxlY3REZXZpY2V8LgorICBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5hZ2Vy QmFzZSogYXVkaW9fbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3Ry aW5nJiBkZXZpY2VfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgcGFyYW1zKTsKKworICB+U25kaW9BdWRpb0lucHV0U3RyZWFtKCkgb3ZlcnJpZGU7CisK KyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9JbnB1dFN0cmVhbS4KKyAgYm9vbCBPcGVuKCkg b3ZlcnJpZGU7CisgIHZvaWQgU3RhcnQoQXVkaW9JbnB1dENhbGxiYWNrKiBjYWxsYmFjaykgb3Zl cnJpZGU7CisgIHZvaWQgU3RvcCgpIG92ZXJyaWRlOworICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7 CisgIGRvdWJsZSBHZXRNYXhWb2x1bWUoKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRWb2x1bWUoZG91 YmxlIHZvbHVtZSkgb3ZlcnJpZGU7CisgIGRvdWJsZSBHZXRWb2x1bWUoKSBvdmVycmlkZTsKKyAg Ym9vbCBJc011dGVkKCkgb3ZlcnJpZGU7CisgIHZvaWQgU2V0T3V0cHV0RGV2aWNlRm9yQWVjKGNv bnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkKSBvdmVycmlkZTsKKworIHByaXZhdGU6 CisKKyAgZW51bSBTdHJlYW1TdGF0ZSB7CisgICAga0Nsb3NlZCwgICAgICAgICAgICAvLyBOb3Qg b3BlbmVkIHlldAorICAgIGtTdG9wcGVkLCAgICAgICAgICAgLy8gRGV2aWNlIG9wZW5lZCwgYnV0 IG5vdCBzdGFydGVkIHlldAorICAgIGtSdW5uaW5nLCAgICAgICAgICAgLy8gU3RhcnRlZCwgZGV2 aWNlIHBsYXlpbmcKKyAgICBrU3RvcFdhaXQgICAgICAgICAgIC8vIFN0b3BwaW5nLCB3YWl0aW5n IGZvciB0aGUgcmVhbC10aW1lIHRocmVhZCB0byBleGl0CisgIH07CisKKyAgLy8gQy1zdHlsZSBj YWxsLWJhY2tzCisgIHN0YXRpYyB2b2lkIE9uTW92ZUNhbGxiYWNrKHZvaWQgKmFyZywgaW50IGRl bHRhKTsKKyAgc3RhdGljIHZvaWQqIFRocmVhZEVudHJ5KHZvaWQgKmFyZyk7CisKKyAgLy8gQ29u dGludW91c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUgZGV2aWNlIHRvIHRoZSBjb25zdW1lcgorICB2 b2lkIFRocmVhZExvb3AoKTsKKyAgLy8gT3VyIGNyZWF0b3IsIHRoZSBhdWRpbyBtYW5hZ2VyIG5l ZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xvc2UuCisgIEF1ZGlvTWFuYWdlckJhc2UqIG1h bmFnZXI7CisgIC8vIFBhcmFtZXRlcnMgb2YgdGhlIHNvdXJjZQorICBBdWRpb1BhcmFtZXRlcnMg cGFyYW1zOworICAvLyBXZSBzdG9yZSBkYXRhIGhlcmUgZm9yIGNvbnN1bWVyCisgIHN0ZDo6dW5p cXVlX3B0cjxBdWRpb0J1cz4gYXVkaW9fYnVzOworICAvLyBDYWxsLWJhY2sgdGhhdCBjb25zdW1l cyByZWNvcmRlZCBkYXRhCisgIEF1ZGlvSW5wdXRDYWxsYmFjayogY2FsbGJhY2s7ICAvLyBWYWxp ZCBkdXJpbmcgYSByZWNvcmRpbmcgc2Vzc2lvbi4KKyAgLy8gSGFuZGxlIG9mIHRoZSBhdWRpbyBk ZXZpY2UKKyAgc3RydWN0IHNpb19oZGwqIGhkbDsKKyAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUg c3RyZWFtCisgIGVudW0gU3RyZWFtU3RhdGUgc3RhdGU7CisgIC8vIEhpZ2ggcHJpb3JpdHkgdGhy ZWFkIHJ1bm5pbmcgVGhyZWFkTG9vcCgpCisgIHB0aHJlYWRfdCB0aHJlYWQ7CisgIC8vIE51bWJl ciBvZiBmcmFtZXMgYnVmZmVyZWQgaW4gdGhlIGhhcmR3YXJlCisgIGludCBod19kZWxheTsKKyAg Ly8gVGVtcG9yYXJ5IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1jb21wYXRpYmxl IGZvcm1hdAorICBjaGFyKiBidWZmZXI7CisKKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNu ZGlvQXVkaW9JbnB1dFN0cmVhbSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKworI2Vu ZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXwpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5jYyBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19vdXRwdXQuY2MKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5hNjcxOWY5YWFjOGQKLS0tIC9kZXYvbnVs bAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0 LmNjCkBAIC0wLDAgKzEsMTgzIEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVt IEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3Vu ZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCisjaW5j bHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKyNpbmNsdWRlICJiYXNlL3RpbWUvZGVmYXVsdF90aWNr X2Nsb2NrLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdlcl9iYXNlLmgiCisj aW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb190aW1lc3RhbXBfaGVscGVyLmgiCisjaW5jbHVkZSAi bWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgiCisKK25hbWVzcGFjZSBtZWRpYSB7CisK K3N0YXRpYyBjb25zdCBTYW1wbGVGb3JtYXQga1NhbXBsZUZvcm1hdCA9IGtTYW1wbGVGb3JtYXRT MTY7CisKK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAq YXJnLCBpbnQgZGVsdGEpIHsKKyAgU25kaW9BdWRpb091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRp Y19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qPihhcmcpOworCisgIHNlbGYtPmh3X2RlbGF5 IC09IGRlbHRhOworfQorCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06Ok9uVm9sQ2FsbGJh Y2sodm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9sKSB7CisgIFNuZGlvQXVkaW9PdXRwdXRTdHJl YW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKwor ICBzZWxmLT52b2wgPSB2b2w7Cit9CisKK3ZvaWQgKlNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlRo cmVhZEVudHJ5KHZvaWQgKmFyZykgeworICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKiBzZWxmID0g c3RhdGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0cmVhbSo+KGFyZyk7CisKKyAgc2VsZi0+VGhy ZWFkTG9vcCgpOworICByZXR1cm4gTlVMTDsKK30KKworU25kaW9BdWRpb091dHB1dFN0cmVhbTo6 U25kaW9BdWRpb091dHB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2Vy QmFzZSogbWFuYWdlcikKKyAgICA6IG1hbmFnZXIobWFuYWdlciksCisgICAgICBwYXJhbXMocGFy YW1zKSwKKyAgICAgIGF1ZGlvX2J1cyhBdWRpb0J1czo6Q3JlYXRlKHBhcmFtcykpLAorICAgICAg c3RhdGUoa0Nsb3NlZCksCisgICAgICBtdXRleChQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSKSB7 Cit9CisKK1NuZGlvQXVkaW9PdXRwdXRTdHJlYW06On5TbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCkg eworICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKyAgICBDbG9zZSgpOworfQorCitib29sIFNuZGlv QXVkaW9PdXRwdXRTdHJlYW06Ok9wZW4oKSB7CisgIHN0cnVjdCBzaW9fcGFyIHBhcjsKKyAgaW50 IHNpZzsKKworICBpZiAocGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9f UENNX0xJTkVBUiAmJgorICAgICAgcGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6 QVVESU9fUENNX0xPV19MQVRFTkNZKSB7CisgICAgTE9HKFdBUk5JTkcpIDw8ICJVbnN1cHBvcnRl ZCBhdWRpbyBmb3JtYXQuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgc2lvX2luaXRwYXIo JnBhcik7CisgIHBhci5yYXRlID0gcGFyYW1zLnNhbXBsZV9yYXRlKCk7CisgIHBhci5wY2hhbiA9 IHBhcmFtcy5jaGFubmVscygpOworICBwYXIuYml0cyA9IFNhbXBsZUZvcm1hdFRvQml0c1BlckNo YW5uZWwoa1NhbXBsZUZvcm1hdCk7CisgIHBhci5icHMgPSBwYXIuYml0cyAvIDg7CisgIHBhci5z aWcgPSBzaWcgPSBwYXIuYml0cyAhPSA4ID8gMSA6IDA7CisgIHBhci5sZSA9IFNJT19MRV9OQVRJ VkU7CisgIHBhci5hcHBidWZzeiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOworCisgIGhk bCA9IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19QTEFZLCAwKTsKKyAgaWYgKGhkbCA9PSBOVUxM KSB7CisgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKKyAg ICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNp b19nZXRwYXIoaGRsLCAmcGFyKSkgeworICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBh dWRpbyBwYXJhbWV0ZXJzLiI7CisgICAgZ290byBiYWRfY2xvc2U7CisgIH0KKyAgaWYgKHBhci5y YXRlICAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5zYW1wbGVfcmF0ZSgpIHx8CisgICAgICBwYXIu cGNoYW4gIT0gKHVuc2lnbmVkIGludClwYXJhbXMuY2hhbm5lbHMoKSB8fAorICAgICAgcGFyLmJp dHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxl Rm9ybWF0KSB8fAorICAgICAgcGFyLnNpZyAgICE9ICh1bnNpZ25lZCBpbnQpc2lnIHx8CisgICAg ICAocGFyLmJwcyA+IDEgJiYgcGFyLmxlICE9IFNJT19MRV9OQVRJVkUpIHx8CisgICAgICAocGFy LmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7CisgICAgTE9HKEVSUk9SKSA8PCAiVW5zdXBwb3J0ZWQg YXVkaW8gcGFyYW1ldGVycy4iOworICAgIGdvdG8gYmFkX2Nsb3NlOworICB9CisgIHN0YXRlID0g a1N0b3BwZWQ7CisgIHZvbHBlbmRpbmcgPSAwOworICB2b2wgPSAwOworICBidWZmZXIgPSBuZXcg Y2hhclthdWRpb19idXMtPmZyYW1lcygpICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBs ZUZvcm1hdCldOworICBzaW9fb25tb3ZlKGhkbCwgJk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsKKyAg c2lvX29udm9sKGhkbCwgJk9uVm9sQ2FsbGJhY2ssIHRoaXMpOworICByZXR1cm4gdHJ1ZTsKKyBi YWRfY2xvc2U6CisgIHNpb19jbG9zZShoZGwpOworICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQg U25kaW9BdWRpb091dHB1dFN0cmVhbTo6Q2xvc2UoKSB7CisgIGlmIChzdGF0ZSA9PSBrQ2xvc2Vk KQorICAgIHJldHVybjsKKyAgaWYgKHN0YXRlID09IGtSdW5uaW5nKQorICAgIFN0b3AoKTsKKyAg c3RhdGUgPSBrQ2xvc2VkOworICBkZWxldGUgW10gYnVmZmVyOworICBzaW9fY2xvc2UoaGRsKTsK KyAgbWFuYWdlci0+UmVsZWFzZU91dHB1dFN0cmVhbSh0aGlzKTsgIC8vIENhbGxzIHRoZSBkZXN0 cnVjdG9yCit9CisKK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U3RhcnQoQXVkaW9Tb3Vy Y2VDYWxsYmFjayogY2FsbGJhY2spIHsKKyAgc3RhdGUgPSBrUnVubmluZzsKKyAgaHdfZGVsYXkg PSAwOworICBzb3VyY2UgPSBjYWxsYmFjazsKKyAgc2lvX3N0YXJ0KGhkbCk7CisgIGlmIChwdGhy ZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhyZWFkRW50cnksIHRoaXMpICE9IDApIHsKKyAg ICBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gY3JlYXRlIHJlYWwtdGltZSB0aHJlYWQuIjsKKyAg ICBzaW9fc3RvcChoZGwpOworICAgIHN0YXRlID0ga1N0b3BwZWQ7CisgIH0KK30KKwordm9pZCBT bmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpTdG9wKCkgeworICBpZiAoc3RhdGUgPT0ga1N0b3BwZWQp CisgICAgcmV0dXJuOworICBzdGF0ZSA9IGtTdG9wV2FpdDsKKyAgcHRocmVhZF9qb2luKHRocmVh ZCwgTlVMTCk7CisgIHNpb19zdG9wKGhkbCk7CisgIHN0YXRlID0ga1N0b3BwZWQ7Cit9CisKK3Zv aWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U2V0Vm9sdW1lKGRvdWJsZSB2KSB7CisgIHB0aHJl YWRfbXV0ZXhfbG9jaygmbXV0ZXgpOworICB2b2wgPSB2ICogU0lPX01BWFZPTDsKKyAgdm9scGVu ZGluZyA9IDE7CisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7Cit9CisKK3ZvaWQgU25k aW9BdWRpb091dHB1dFN0cmVhbTo6R2V0Vm9sdW1lKGRvdWJsZSogdikgeworICBwdGhyZWFkX211 dGV4X2xvY2soJm11dGV4KTsKKyAgKnYgPSB2b2wgKiAoMS4gLyBTSU9fTUFYVk9MKTsKKyAgcHRo cmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKK30KKworLy8gVGhpcyBzdHJlYW0gaXMgYWx3YXlz IHVzZWQgd2l0aCBzdWIgc2Vjb25kIGJ1ZmZlciBzaXplcywgd2hlcmUgaXQncworLy8gc3VmZmlj aWVudCB0byBzaW1wbHkgYWx3YXlzIGZsdXNoIHVwb24gU3RhcnQoKS4KK3ZvaWQgU25kaW9BdWRp b091dHB1dFN0cmVhbTo6Rmx1c2goKSB7fQorCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06 OlRocmVhZExvb3Aodm9pZCkgeworICBpbnQgYXZhaWwsIGNvdW50LCByZXN1bHQ7CisKKyAgd2hp bGUgKHN0YXRlID09IGtSdW5uaW5nKSB7CisgICAgLy8gVXBkYXRlIHZvbHVtZSBpZiBuZWVkZWQK KyAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKKyAgICBpZiAodm9scGVuZGluZykgewor ICAgICAgdm9scGVuZGluZyA9IDA7CisgICAgICBzaW9fc2V0dm9sKGhkbCwgdm9sKTsKKyAgICB9 CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKKworICAgIC8vIEdldCBkYXRhIHRv IHBsYXkKKyAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhl bHBlcjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAorCXBhcmFtcy5zYW1wbGVfcmF0ZSgpKTsKKyAg ICBjb3VudCA9IHNvdXJjZS0+T25Nb3JlRGF0YShkZWxheSwgYmFzZTo6VGltZVRpY2tzOjpOb3co KSwgMCwgYXVkaW9fYnVzLmdldCgpKTsKKyAgICBhdWRpb19idXMtPlRvSW50ZXJsZWF2ZWQoY291 bnQsIFNhbXBsZUZvcm1hdFRvQnl0ZXNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQpLCBidWZmZXIp OworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAvLyBXZSBoYXZlIHRvIHN1Ym1pdCBzb21l dGhpbmcgdG8gdGhlIGRldmljZQorICAgICAgY291bnQgPSBhdWRpb19idXMtPmZyYW1lcygpOwor ICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgY291bnQgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShr U2FtcGxlRm9ybWF0KSk7CisgICAgICBMT0coV0FSTklORykgPDwgIk5vIGRhdGEgdG8gcGxheSwg cnVubmluZyBlbXB0eSBjeWNsZS4iOworICAgIH0KKworICAgIC8vIFN1Ym1pdCBkYXRhIHRvIHRo ZSBkZXZpY2UKKyAgICBhdmFpbCA9IGNvdW50ICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1Nh bXBsZUZvcm1hdCk7CisgICAgcmVzdWx0ID0gc2lvX3dyaXRlKGhkbCwgYnVmZmVyLCBhdmFpbCk7 CisgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAgICBMT0coV0FSTklORykgPDwgIkF1ZGlvIGRl dmljZSBkaXNjb25uZWN0ZWQuIjsKKyAgICAgIGJyZWFrOworICAgIH0KKworICAgIC8vIFVwZGF0 ZSBoYXJkd2FyZSBwb2ludGVyCisgICAgaHdfZGVsYXkgKz0gY291bnQ7CisgIH0KK30KKworfSAg Ly8gbmFtZXNwYWNlIG1lZGlhCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv c25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25k aW8tZmlsZXMvc25kaW9fb3V0cHV0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5lYWQyMjBjYTk2ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmgKQEAgLTAsMCArMSw4NiBAQAorLy8g Q29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5 bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKwor I2lmbmRlZiBNRURJQV9BVURJT19TTkRJT19TTkRJT19PVVRQVVRfSF8KKyNkZWZpbmUgTUVESUFf QVVESU9fU05ESU9fU05ESU9fT1VUUFVUX0hfCisKKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW5j bHVkZSA8c25kaW8uaD4KKworI2luY2x1ZGUgImJhc2UvdGltZS90aWNrX2Nsb2NrLmgiCisjaW5j bHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19pby5o IgorCituYW1lc3BhY2UgbWVkaWEgeworCitjbGFzcyBBdWRpb01hbmFnZXJCYXNlOworCisvLyBJ bXBsZW1lbnRhdGlvbiBvZiBBdWRpb091dHB1dFN0cmVhbSB1c2luZyBzbmRpbyg3KQorY2xhc3Mg U25kaW9BdWRpb091dHB1dFN0cmVhbSA6IHB1YmxpYyBBdWRpb091dHB1dFN0cmVhbSB7CisgcHVi bGljOgorICAvLyBUaGUgbWFuYWdlciBpcyBjcmVhdGluZyB0aGlzIG9iamVjdAorICBTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgICAgICAg ICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXIpOworICB2aXJ0dWFsIH5T bmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCk7CisKKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9P dXRwdXRTdHJlYW0uCisgIGJvb2wgT3BlbigpIG92ZXJyaWRlOworICB2b2lkIENsb3NlKCkgb3Zl cnJpZGU7CisgIHZvaWQgU3RhcnQoQXVkaW9Tb3VyY2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJy aWRlOworICB2b2lkIFN0b3AoKSBvdmVycmlkZTsKKyAgdm9pZCBTZXRWb2x1bWUoZG91YmxlIHZv bHVtZSkgb3ZlcnJpZGU7CisgIHZvaWQgR2V0Vm9sdW1lKGRvdWJsZSogdm9sdW1lKSBvdmVycmlk ZTsKKyAgdm9pZCBGbHVzaCgpIG92ZXJyaWRlOworCisgIGZyaWVuZCB2b2lkIHNuZGlvX29ubW92 ZSh2b2lkICphcmcsIGludCBkZWx0YSk7CisgIGZyaWVuZCB2b2lkIHNuZGlvX29udm9sKHZvaWQg KmFyZywgdW5zaWduZWQgaW50IHZvbCk7CisgIGZyaWVuZCB2b2lkICpzbmRpb190aHJlYWRzdGFy dCh2b2lkICphcmcpOworCisgcHJpdmF0ZToKKyAgZW51bSBTdHJlYW1TdGF0ZSB7CisgICAga0Ns b3NlZCwgICAgICAgICAgICAvLyBOb3Qgb3BlbmVkIHlldAorICAgIGtTdG9wcGVkLCAgICAgICAg ICAgLy8gRGV2aWNlIG9wZW5lZCwgYnV0IG5vdCBzdGFydGVkIHlldAorICAgIGtSdW5uaW5nLCAg ICAgICAgICAgLy8gU3RhcnRlZCwgZGV2aWNlIHBsYXlpbmcKKyAgICBrU3RvcFdhaXQgICAgICAg ICAgIC8vIFN0b3BwaW5nLCB3YWl0aW5nIGZvciB0aGUgcmVhbC10aW1lIHRocmVhZCB0byBleGl0 CisgIH07CisKKyAgLy8gQy1zdHlsZSBjYWxsLWJhY2tzCisgIHN0YXRpYyB2b2lkIE9uTW92ZUNh bGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKTsKKyAgc3RhdGljIHZvaWQgT25Wb2xDYWxsYmFj ayh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpOworICBzdGF0aWMgdm9pZCogVGhyZWFkRW50 cnkodm9pZCAqYXJnKTsKKworICAvLyBDb250aW51b3VzbHkgbW92ZXMgZGF0YSBmcm9tIHRoZSBw cm9kdWNlciB0byB0aGUgZGV2aWNlCisgIHZvaWQgVGhyZWFkTG9vcCh2b2lkKTsKKworICAvLyBP dXIgY3JlYXRvciwgdGhlIGF1ZGlvIG1hbmFnZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiB3 ZSBjbG9zZS4KKyAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcjsKKyAgLy8gUGFyYW1ldGVycyBv ZiB0aGUgc291cmNlCisgIEF1ZGlvUGFyYW1ldGVycyBwYXJhbXM7CisgIC8vIFNvdXJjZSBzdG9y ZXMgZGF0YSBoZXJlCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1cz4gYXVkaW9fYnVzOworICAv LyBDYWxsLWJhY2sgdGhhdCBwcm9kdWNlcyBkYXRhIHRvIHBsYXkKKyAgQXVkaW9Tb3VyY2VDYWxs YmFjayogc291cmNlOworICAvLyBIYW5kbGUgb2YgdGhlIGF1ZGlvIGRldmljZQorICBzdHJ1Y3Qg c2lvX2hkbCogaGRsOworICAvLyBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdHJlYW0KKyAgZW51bSBT dHJlYW1TdGF0ZSBzdGF0ZTsKKyAgLy8gSGlnaCBwcmlvcml0eSB0aHJlYWQgcnVubmluZyBUaHJl YWRMb29wKCkKKyAgcHRocmVhZF90IHRocmVhZDsKKyAgLy8gUHJvdGVjdHMgdm9sLCB2b2xwZW5k aW5nIGFuZCBod19kZWxheQorICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7CisgIC8vIEN1cnJlbnQg dm9sdW1lIGluIHRoZSAwLi5TSU9fTUFYVk9MIHJhbmdlCisgIGludCB2b2w7CisgIC8vIFNldCB0 byAxIGlmIHZvbHVtZXMgbXVzdCBiZSByZWZyZXNoZWQgaW4gdGhlIHJlYWx0aW1lIHRocmVhZAor ICBpbnQgdm9scGVuZGluZzsKKyAgLy8gTnVtYmVyIG9mIGZyYW1lcyBidWZmZXJlZCBpbiB0aGUg aGFyZHdhcmUKKyAgaW50IGh3X2RlbGF5OworICAvLyBUZW1wb3JhcnkgYnVmZmVyIHdoZXJlIGRh dGEgaXMgc3RvcmVkIHNuZGlvLWNvbXBhdGlibGUgZm9ybWF0CisgIGNoYXIqIGJ1ZmZlcjsKKwor ICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU25kaW9BdWRpb091dHB1dFN0cmVhbSk7Cit9Owor Cit9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKworI2VuZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19T TkRJT19PVVRQVVRfSF8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRp by1wYXRjaGVzL21lZGlhX2F1ZGlvX2xpbnV4X2F1ZGlvX21hbmFnZXJfbGludXguY2MucGF0Y2gg Yi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tcGF0Y2hlcy9tZWRpYV9hdWRpb19saW51 eF9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uY2Y4ZTgxYjExZDY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL3NuZGlvLXBhdGNoZXMvbWVkaWFfYXVkaW9fbGludXhfYXVkaW9fbWFu YWdlcl9saW51eC5jYy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitkaWZmIC0tZ2l0IGEvY2hyb21p dW0vbWVkaWEvYXVkaW8vbGludXgvYXVkaW9fbWFuYWdlcl9saW51eC5jYyBiL2Nocm9taXVtL21l ZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MKK2luZGV4IDVkNzAzNTQ5Mzcy Li45ZTYwYjQwYzc0OSAxMDA2NDQKKy0tLSBtZWRpYS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2Vy X2xpbnV4LmNjCisrKysgbWVkaWEvYXVkaW8vbGludXgvYXVkaW9fbWFuYWdlcl9saW51eC5jYwor QEAgLTIwLDYgKzIwLDEwIEBACisgI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3B1bHNlL2F1ZGlvX21h bmFnZXJfcHVsc2UuaCIKKyAjaW5jbHVkZSAibWVkaWEvYXVkaW8vcHVsc2UvcHVsc2VfdXRpbC5o IgorICNlbmRpZgorKyNpZiBkZWZpbmVkKFVTRV9TTkRJTykKKysjaW5jbHVkZSA8c25kaW8uaD4K KysjaW5jbHVkZSAibWVkaWEvYXVkaW8vb3BlbmJzZC9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaCIK KysjZW5kaWYKKyAKKyBuYW1lc3BhY2UgbWVkaWEgeworIAorQEAgLTI3LDcgKzMxLDggQEAgZW51 bSBMaW51eEF1ZGlvSU8geworICAga1B1bHNlLAorICAga0Fsc2EsCisgICBrQ3JhcywKKy0gIGtB dWRpb0lPTWF4ID0ga0NyYXMgIC8vIE11c3QgYWx3YXlzIGJlIGVxdWFsIHRvIGxhcmdlc3QgbG9n Z2VkIGVudHJ5LgorKyAga1NuZGlvLAorKyAga0F1ZGlvSU9NYXggPSBrU25kaW8gIC8vIE11c3Qg YWx3YXlzIGJlIGVxdWFsIHRvIGxhcmdlc3QgbG9nZ2VkIGVudHJ5LgorIH07CisgCisgc3RkOjp1 bmlxdWVfcHRyPG1lZGlhOjpBdWRpb01hbmFnZXI+IENyZWF0ZUF1ZGlvTWFuYWdlcigKK0BAIC00 MSw2ICs0NiwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8bWVkaWE6OkF1ZGlvTWFuYWdlcj4gQ3JlYXRl QXVkaW9NYW5hZ2VyKAorICAgfQorICNlbmRpZgorIAorKyNpZiBkZWZpbmVkKFVTRV9TTkRJTykK KysgIHN0cnVjdCBzaW9faGRsICogaGRsID0gTlVMTDsKKysgIGlmICgoaGRsPXNpb19vcGVuKFNJ T19ERVZBTlksIFNJT19QTEFZLCAxKSkgIT0gTlVMTCkgeworKyAgICBzaW9fY2xvc2UoaGRsKTsK KysgICAgVU1BX0hJU1RPR1JBTV9FTlVNRVJBVElPTigiTWVkaWEuTGludXhBdWRpb0lPIiwga1Nu ZGlvLCBrQXVkaW9JT01heCArMSk7CisrICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlv TWFuYWdlck9wZW5CU0Q+KHN0ZDo6bW92ZShhdWRpb190aHJlYWQpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fbG9nX2ZhY3RvcnkpOworKyAg fQorKyAgRFZMT0coMSkgPDwgIlNuZGlvIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIE9TIjsKKysj ZW5kaWYKKysKKyAjaWYgZGVmaW5lZChVU0VfUFVMU0VBVURJTykKKyAgIHBhX3RocmVhZGVkX21h aW5sb29wKiBwYV9tYWlubG9vcCA9IG51bGxwdHI7CisgICBwYV9jb250ZXh0KiBwYV9jb250ZXh0 ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1w YXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9CVUlMRC5nbi5wYXRjaCBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9t ZWRpYV9CVUlMRC5nbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmVjNjA0MDAyNjY4OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9CVUlMRC5nbi5w YXRjaApAQCAtMCwwICsxLDEyIEBACistLS0gbWVkaWEvQlVJTEQuZ24JMjAyMC0wMy0yNCAxMDox NjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyAtCTIwMjAtMDQtMDYgMTQ6MzI6MjcuOTYwODE3NTEz ICswMjAwCitAQCAtNjUsNiArNjUsOSBAQAorICAgaWYgKHVzZV9jcmFzKSB7CisgICAgIGRlZmlu ZXMgKz0gWyAiVVNFX0NSQVMiIF0KKyAgIH0KKysgIGlmICh1c2Vfc25kaW8pIHsKKysgICAgZGVm aW5lcyArPSBbICJVU0VfU05ESU8iIF0KKysgIH0KKyB9CisgCisgIyBJbnRlcm5hbCBncm91cGlu ZyBvZiB0aGUgY29uZmlncyBuZWNlc3NhcnkgdG8gc3VwcG9ydCBzdWItZm9sZGVycyBoYXZpbmcg dGhlaXIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVz L3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRpb19CVUlMRC5nbi5wYXRjaCBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9t ZWRpYV9hdWRpb19CVUlMRC5nbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLmM4NTZkZTBiZjJlYwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRp b19CVUlMRC5nbi5wYXRjaApAQCAtMCwwICsxLDIzIEBACistLS0gbWVkaWEvYXVkaW8vQlVJTEQu Z24JMjAyMC0wMy0yNCAxMDoxNjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyAtCTIwMjAtMDQtMDYg MTQ6MzE6MjguODcxNDUwMjE3ICswMjAwCitAQCAtMjMyLDkgKzIzMiwxOSBAQAorICAgICBkZXBz ICs9IFsgIi8vbWVkaWEvYmFzZS9hbmRyb2lkOm1lZGlhX2puaV9oZWFkZXJzIiBdCisgICB9Cisg CistICBpZiAoaXNfbGludXgpIHsKKysgIGlmIChpc19saW51eCkgeworICAgICBzb3VyY2VzICs9 IFsgImxpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MiIF0KKyAgIH0KKysgIGlmICh1c2Vfc25k aW8pIHsKKysgICAgbGlicyArPSBbICJzbmRpbyIgXQorKyAgICBzb3VyY2VzICs9IFsKKysgICAg ICAib3BlbmJzZC9hdWRpb19tYW5hZ2VyX29wZW5ic2QuY2MiLAorKyAgICAgICJzbmRpby9zbmRp b19pbnB1dC5jYyIsCisrICAgICAgInNuZGlvL3NuZGlvX2lucHV0LmgiLAorKyAgICAgICJzbmRp by9zbmRpb19vdXRwdXQuY2MiLAorKyAgICAgICJzbmRpby9zbmRpb19vdXRwdXQuaCIKKysgICBd CisrIH0KKyAKKyAgIGlmICh1c2VfYWxzYSkgeworICAgICBsaWJzICs9IFsgImFzb3VuZCIgXQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLXBhdGNoZXMvc3JjXzNy ZHBhcnR5X2Nocm9taXVtX21lZGlhX21lZGlhX19vcHRpb25zLmduaS5wYXRjaCBiL3NyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRp YV9tZWRpYV9fb3B0aW9ucy5nbmkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi4xNDgwN2Q4ZTFkMzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0 cm9uMTIvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVk aWFfX29wdGlvbnMuZ25pLnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBtZWRpYS9tZWRpYV9v cHRpb25zLmduaQkyMDIwLTAzLTI0IDEwOjE2OjMwLjAwMDAwMDAwMCArMDEwMAorKysrIC0JMjAy MC0wNC0wNiAxNDoyOToyMi45NTg2MzA3ODMgKzAyMDAKK0BAIC0xMTQsNiArMTE0LDkgQEAKKyAg ICMgRW5hYmxlcyBydW50aW1lIHNlbGVjdGlvbiBvZiBBTFNBIGxpYnJhcnkgZm9yIGF1ZGlvLgor ICAgdXNlX2Fsc2EgPSBmYWxzZQorIAorKyAgIyBFbmFibGVzIHJ1bnRpbWUgc2VsZWN0aW9uIG9m IHNuZGlvIGxpYnJhcnkgZm9yIGF1ZGlvLgorKyAgdXNlX3NuZGlvID0gZmFsc2UKKysKKyAgICMg QWxzYSBzaG91bGQgYmUgdXNlZCBvbiBub24tQW5kcm9pZCwgbm9uLU1hYyBQT1NJWCBzeXN0ZW1z LgorICAgIyBBbHNhIHNob3VsZCBiZSB1c2VkIG9uIGRlc2t0b3AgQ2hyb21lY2FzdCBhbmQgYXVk aW8tb25seSBDaHJvbWVjYXN0IGJ1aWxkcy4KKyAgIGlmIChpc19wb3NpeCAmJiAhaXNfYW5kcm9p ZCAmJiAhaXNfbWFjICYmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvdGVtcGxhdGUg Yi9zcmNwa2dzL2VsZWN0cm9uMTIvdGVtcGxhdGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwMDAwLi4zNDk4NThlMTE4NDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2Vs ZWN0cm9uMTIvdGVtcGxhdGUKQEAgLTAsMCArMSwzNzcgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3Ig J2VsZWN0cm9uMTInCitwa2duYW1lPWVsZWN0cm9uMTIKK3ZlcnNpb249MTIuMC4xCitfbm9kZXZl cj0xNC4xNi4wCitfY2hyb21pdW12ZXI9ODkuMC40Mzg5LjgyCityZXZpc2lvbj0xCithcmNocz0i eDg2XzY0KiBpNjg2KiBhYXJjaDY0KiBwcGM2NGxlKiIKK2J1aWxkX3dya3NyYz0ic3JjIgorY3Jl YXRlX3dya3NyYz15ZXMKK2hvc3RtYWtlZGVwZW5kcz0iJCh2b3B0X2lmIGNsYW5nIGNsYW5nKSBw eXRob24gcGtnY29uZiBwZXJsIGdwZXJmIGJpc29uIG5pbmphIG5vZGVqcyBod2lkcworIGxpYndl YnAtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgaGFyZmJ1enotZGV2ZWwgbGlicG5nLWRldmVsIG5zcy1k ZXZlbCB3aGljaCBnaXQgbGliZXZlbnQtZGV2ZWwKKyBwY2l1dGlscy1kZXZlbCBsaWJhdG9taWMt ZGV2ZWwgZmZtcGVnLWRldmVsIGxpYnhtbDItZGV2ZWwgbGliZ2xpYi1kZXZlbCB5YXJuIG9wZW5q ZGsgbGlieHNsdC1kZXZlbAorIG9wdXMtZGV2ZWwgbGliWGN1cnNvci1kZXZlbCBsaWJYY29tcG9z aXRlLWRldmVsIGxpYlh0c3QtZGV2ZWwgbGliWHJhbmRyLWRldmVsIGxpYlhTY3JuU2F2ZXItZGV2 ZWwKKyBhbHNhLWxpYi1kZXZlbCByZTItZGV2ZWwgc25hcHB5LWRldmVsIG1pdC1rcmI1LWRldmVs ICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8tZGV2ZWwpCisgJCh2b3B0X2lmIHNuZGlv IHNuZGlvLWRldmVsKSBqcSIKK21ha2VkZXBlbmRzPSJsaWJwbmctZGV2ZWwgZ3RrKy1kZXZlbCBn dGsrMy1kZXZlbCBuc3MtZGV2ZWwgcGNpdXRpbHMtZGV2ZWwKKyBsaWJYaS1kZXZlbCBsaWJnY3J5 cHQtZGV2ZWwgbGliZ25vbWUta2V5cmluZy1kZXZlbCBjdXBzLWRldmVsIGVsZnV0aWxzLWRldmVs CisgbGliWGNvbXBvc2l0ZS1kZXZlbCBzcGVlY2gtZGlzcGF0Y2hlci1kZXZlbCBsaWJYcmFuZHIt ZGV2ZWwgbWl0LWtyYjUtZGV2ZWwKKyBsaWJYU2NyblNhdmVyLWRldmVsIGFsc2EtbGliLWRldmVs IHNuYXBweS1kZXZlbCBsaWJkcm0tZGV2ZWwKKyBsaWJ4bWwyLWRldmVsIGxpYnhzbHQtZGV2ZWwg JCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2VhdWRpby1kZXZlbCkgbGliZXhpZi1kZXZlbAorIGxp YlhjdXJzb3ItZGV2ZWwgbGliZmxhYy1kZXZlbCBzcGVleC1kZXZlbCBsaWJtdHAtZGV2ZWwgbGli d2VicC1kZXZlbAorIGxpYmpwZWctdHVyYm8tZGV2ZWwgbGliZXZlbnQtZGV2ZWwganNvbi1jLWRl dmVsIGhhcmZidXp6LWRldmVsCisgbWluaXppcC1kZXZlbCBqc29uY3BwLWRldmVsIHpsaWItZGV2 ZWwgbGliY2FwLWRldmVsIGxpYlhkYW1hZ2UtZGV2ZWwKKyByZTItZGV2ZWwgZm9udGNvbmZpZy1k ZXZlbCBmcmVldHlwZS1kZXZlbCBvcHVzLWRldmVsIGxpYmF0b21pYy1kZXZlbAorICQodm9wdF9p ZiBzbmRpbyBzbmRpby1kZXZlbCkgZmZtcGVnLWRldmVsIGxpYnZhLWRldmVsIGxpYnV2LWRldmVs IGMtYXJlcy1kZXZlbCBsaWJub3RpZnktZGV2ZWwKKyAkKHZvcHRfaWYgcGlwZXdpcmUgcGlwZXdp cmUtZGV2ZWwpICQodm9wdF9pZiBvem9uZSAnd2F5bGFuZC1kZXZlbCcpIgorc2hvcnRfZGVzYz0i Q3Jvc3MgcGxhdGZvcm0gYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgZnJhbWV3b3JrIGJhc2VkIG9u IHdlYiB0ZWNobm9sb2dpZXMiCittYWludGFpbmVyPSJKb2huIDxtZUBqb2hubnluYXRvci5kZXY+ IgorbGljZW5zZT0iQlNELTMtQ2xhdXNlIgoraG9tZXBhZ2U9Imh0dHBzOi8vZWxlY3Ryb25qcy5v cmciCitkaXN0ZmlsZXM9Imh0dHBzOi8vZ2l0aHViLmNvbS9lbGVjdHJvbi9lbGVjdHJvbi9hcmNo aXZlL3YkdmVyc2lvbi50YXIuZ3o+ZWxlY3Ryb24tJHt2ZXJzaW9ufS50YXIuZ3oKKyBodHRwczov L2NvbW1vbmRhdGFzdG9yYWdlLmdvb2dsZWFwaXMuY29tL2Nocm9taXVtLWJyb3dzZXItb2ZmaWNp YWwvY2hyb21pdW0tJF9jaHJvbWl1bXZlci50YXIueHoKKyBodHRwczovL2dpdGh1Yi5jb20vbm9k ZWpzL25vZGUvYXJjaGl2ZS92JF9ub2RldmVyLnRhci5nej5ub2RlLSRfbm9kZXZlci50YXIuZ3oi CitjaGVja3N1bT0iM2E5ZGI1Njg0NjNlOGFlMGM1NDcxYmUwMTIzZjQzYzJiNDVlN2Q4ZDdlZGQz ZjhiZTU5ZWQyMmE5NDFhMWU2MgorIGRmNDkxNDQwN2I2OGFmZGM2NDQ5Y2I4ZTNmMWIwOGQxMTBl Yjg2ODlhYzQxZjg2NDkwZTMzN2ZhNGQxYmUzNzkKKyBiY2RmODY5YjA3NDM0MDU1MTVlZTg5N2Ix MDQ3YjVlODUxYTcxN2U0MjZiNDk3NGQyNjUzN2M5YjEwZGZkNTNhIgorCitjYXNlICIkWEJQU19U QVJHRVRfTUFDSElORSIgaW4KKwlwcGM2NCotbXVzbCkgbWFrZWRlcGVuZHMrPSIgbGlidWNvbnRl eHQtZGV2ZWwiIDs7Citlc2FjCisKK25vX2dlbmVyaWNfcGtnY29uZmlnX2xpbms9eWVzCitsaWIz MmRpc2FibGVkPXllcworbm9waWU9eWVzICAjIGNvbnRhaW5zIHRvb2xzIHRoYXQgYXJlIG5vdCBQ SUUsIGVuYWJsZXMgUElFIGl0c2VsZgorCitidWlsZF9vcHRpb25zPSJwdWxzZWF1ZGlvIHNuZGlv IGNsYW5nIHBpcGV3aXJlIG96b25lIgorYnVpbGRfb3B0aW9uc19kZWZhdWx0PSJwdWxzZWF1ZGlv IGNsYW5nIHBpcGV3aXJlIG96b25lIgorCitpZiBbICIkYnVpbGRfb3B0aW9uX2NsYW5nIiBdOyB0 aGVuCisJbm9jcm9zcz0iTm8gcHJvcGVyIHNldHVwIGZvciB1c2luZyBjbGFuZyBhcyBjcm9zcyBj b21waWxlciBpbiB2b2lkIHlldCIKK2VsaWYgWyAiJHtYQlBTX1RBUkdFVF9NQUNISU5FJSUtbXVz bH0iID0gImFhcmNoNjQiIF07IHRoZW4KKwlicm9rZW49IkZhbGxzIGFwYXJ0IGF0IHJ1bnRpbWUg d2hlbiBjb21waWxlZCB3aXRoIGdjYyIKK2ZpCisKK19idWlsZHR5cGU9UmVsZWFzZQorX2lzX2Rl YnVnPWZhbHNlCisKK0NGTEFHUz0iLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIC1mUElDIgor Q1hYRkxBR1M9Ii1Xbm8tdW5rbm93bi13YXJuaW5nLW9wdGlvbiAtZlBJQyIKKworX2FwcGx5X3Bh dGNoKCkgeworCWxvY2FsIGFyZ3M9IiQxIiBwbmFtZT0iJChiYXNlbmFtZSAkMikiCisKKwlpZiBb ICEgLWYgIi4ke3BuYW1lfV9kb25lIiBdOyB0aGVuCisJCW1zZ19ub3JtYWwgIiRwa2d2ZXI6IHBh dGNoaW5nOiAke3BuYW1lfS5cbiIKKwkJcGF0Y2ggLU4gJGFyZ3MgLWkgJDIKKwkJdG91Y2ggLiR7 cG5hbWV9X2RvbmUKKwlmaQorfQorCitfZ2V0X2Nocm9taXVtX2FyY2goKSB7CisJY2FzZSAiJDEi IGluCisJCXg4Nl82NCopIGVjaG8geDY0IDs7CisJCWk2ODYqKSBlY2hvIHg4NiA7OworCQlhcm0q KSBlY2hvIGFybSA7OworCQlhYXJjaDY0KikgZWNobyBhcm02NCA7OworCQlwcGM2NCopIGVjaG8g cHBjNjQgOzsKKwkJcHBjKikgZWNobyBwcGMgOzsKKwkJbWlwc2VsKikgZWNobyBtaXBzZWwgOzsK KwkJbWlwcyopIGVjaG8gbWlwcyA7OworCQkqKSBtc2dfZXJyb3IgIiRwa2d2ZXI6IGNhbm5vdCBi ZSBjb21waWxlZCBmb3IgJHtYQlBTX1RBUkdFVF9NQUNISU5FfS5cbiIgOzsKKwllc2FjCit9CisK K3Bvc3RfZXh0cmFjdCgpIHsKKwlsbiAtcyBjaHJvbWl1bS0kX2Nocm9taXVtdmVyIHNyYworCW1r ZGlyIC1wIHNyYy90aGlyZF9wYXJ0eS8KKwlsbiAtcyAuLi8uLi9ub2RlLSRfbm9kZXZlciBzcmMv dGhpcmRfcGFydHkvZWxlY3Ryb25fbm9kZQorCWxuIC1zIC4uL2VsZWN0cm9uLSR7dmVyc2lvbn0g c3JjL2VsZWN0cm9uCisKK30KK3Bvc3RfcGF0Y2goKSB7CisJY2QgJHdya3NyYworCWZvciB4IGlu ICRGSUxFU0RJUi9wYXRjaGVzLyo7IGRvCisJCWNhc2UgIiR7eCMjKi99IiBpbgorCQkJZWxlY3Ry b24qLnBhdGNoKQorCQkJCWNkIHNyYy9lbGVjdHJvbgorCQkJCV9hcHBseV9wYXRjaCAtcDEgIiR4 IgorCQkJCWNkICIkd3Jrc3JjIjs7CisJCWVzYWMKKwlkb25lCisKKwkjIFNpZ2gsIGVsZWN0cm9u IHVzZXMgZ2l0IGFtLi4uCisJaWYgWyAhIC1mICIuZWxlY3Ryb25fcGF0Y2hlc19kb25lIiBdOyB0 aGVuCisJbXYgc3JjL2VsZWN0cm9uL3BhdGNoZXMvY29uZmlnLmpzb24gY29uZmlnLmpzb24ub2xk CisJanEgJ2RlbCguInNyYy9lbGVjdHJvbi9wYXRjaGVzL01hbnRsZSIsIC4ic3JjL2VsZWN0cm9u L3BhdGNoZXMvUmVhY3RpdmVPYmpDIiwKKwkJLiJzcmMvZWxlY3Ryb24vcGF0Y2hlcy9zcXVpcnJl bC5tYWMiLCAuInNyYy9lbGVjdHJvbi9wYXRjaGVzL25hbiIpJyBcCisJCWNvbmZpZy5qc29uLm9s ZCA+IHNyYy9lbGVjdHJvbi9wYXRjaGVzL2NvbmZpZy5qc29uCisJCisJcHl0aG9uMiBzcmMvZWxl Y3Ryb24vc2NyaXB0L2xpc3RfcGF0Y2hfdGFyZ2V0cy5weSBzcmMvZWxlY3Ryb24vcGF0Y2hlcy9j b25maWcuanNvbiB8IHdoaWxlIHJlYWQgLXIgcmVwb3BhdGg7IGRvCisJCWNkICIkd3Jrc3JjIi8i JHJlcG9wYXRoIgorCQlnaXQgaW5pdCAtcQorCQlnaXQgY29uZmlnICJnYy5hdXRvIiAwCisJCWlm IFsgIiRyZXBvcGF0aCIgIT0gInNyYyIgXTsgdGhlbgorCQkJZWNobyAiLyR7cmVwb3BhdGgjc3Jj L30iID4+ICIkd3Jrc3JjLyRidWlsZF93cmtzcmMvLmdpdGlnbm9yZSIKKwkJZmkKKwkJZ2l0IGFk ZCAuCisJCWdpdCAtYyAndXNlci5uYW1lPUVsZWN0cm9uIGJ1aWxkJyAtYyAndXNlci5lbWFpbD1l bGVjdHJvbkBlYnVpbGQnIFwKKwkJCWNvbW1pdCAtcSAtbSAiLiIgfHwgdHJ1ZQorCWRvbmUKKwlj ZCAkd3Jrc3JjCisJcHl0aG9uMiBzcmMvZWxlY3Ryb24vc2NyaXB0L2FwcGx5X2FsbF9wYXRjaGVz LnB5IHNyYy9lbGVjdHJvbi9wYXRjaGVzL2NvbmZpZy5qc29uCisJdG91Y2ggLmVsZWN0cm9uX3Bh dGNoZXNfZG9uZQorCWZpCisKKwlmb3IgeCBpbiAkRklMRVNESVIvcGF0Y2hlcy8qOyBkbworCQlj YXNlICIke3gjIyovfSIgaW4KKwkJCWNocm9taXVtKi5wYXRjaCkKKwkJCQljZCBzcmMKKwkJCQlf YXBwbHlfcGF0Y2ggLXAwICIkeCIKKwkJCQljZCAiJHdya3NyYyI7OworCQllc2FjCisJZG9uZQor CisJaWYgWyAiJFhCUFNfVEFSR0VUX0xJQkMiID0gIm11c2wiIF07IHRoZW4KKwlmb3IgeCBpbiAk RklMRVNESVIvbXVzbC1wYXRjaGVzLyo7IGRvCisJCWNhc2UgIiR7eCMjKi99IiBpbgorCQkJY2hy b21pdW0qLnBhdGNoKQorCQkJCWNkIHNyYworCQkJCV9hcHBseV9wYXRjaCAtcDAgIiR4IgorCQkJ CWNkICIkd3Jrc3JjIjs7CisJCQllbGVjdHJvbioucGF0Y2gpCisJCQkJY2Qgc3JjL2VsZWN0cm9u CisJCQkJX2FwcGx5X3BhdGNoIC1wMSAiJHgiCisJCQkJY2QgIiR3cmtzcmMiOzsKKwkJZXNhYwor CWRvbmUKKwlmaQorCWlmIFsgIiRidWlsZF9vcHRpb25fc25kaW8iIF07IHRoZW4KKwkJbWtkaXIg LXAgJHt3cmtzcmN9LyR7YnVpbGRfd3Jrc3JjfS9tZWRpYS9hdWRpby97c25kaW8sb3BlbmJzZH0K KwkJY3AgJHtGSUxFU0RJUn0vc25kaW8tZmlsZXMvc25kaW9fKnB1dC4qIFwKKwkJCSR7d3Jrc3Jj fS8ke2J1aWxkX3dya3NyY30vbWVkaWEvYXVkaW8vc25kaW8KKwkJY3AgJHtGSUxFU0RJUn0vc25k aW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLiogXAorCQkJJHt3cmtzcmN9LyR7YnVpbGRf d3Jrc3JjfS9tZWRpYS9hdWRpby9vcGVuYnNkCisJCWZvciBmIGluICIke0ZJTEVTRElSfSIvc25k aW8tcGF0Y2hlcy8qLnBhdGNoOyBkbworCQkJY2Qgc3JjCisJCQlfYXBwbHlfcGF0Y2ggLXAwICIk ZiIKKwkJCWNkICIkd3Jrc3JjIgorCQlkb25lCisJZmkKK30KKworcHJlX2NvbmZpZ3VyZSgpIHsK KwljZCAiJHdya3NyYy8kYnVpbGRfd3Jrc3JjIgorCisJIyBodHRwczovL2dyb3Vwcy5nb29nbGUu Y29tL2EvY2hyb21pdW0ub3JnL2QvdG9waWMvY2hyb21pdW0tcGFja2FnZXJzLzlKWDFOMm5mNFBV L2Rpc2N1c3Npb24KKwl0b3VjaCBjaHJvbWUvdGVzdC9kYXRhL3dlYnVpL2kxOG5fcHJvY2Vzc19j c3NfdGVzdC5odG1sCisJIyBVc2UgdGhlIGZpbGUgYXQgcnVuIHRpbWUgaW5zdGVhZCBvZiBlZmZl Y3RpdmVseSBjb21waWxpbmcgaXQgaW4KKwlzZWQgJ3N8Ly90aGlyZF9wYXJ0eS91c2JfaWRzL3Vz Yi5pZHN8L3Vzci9zaGFyZS9od2RhdGEvdXNiLmlkc3xnJyBcCisJCS1pIHNlcnZpY2VzL2Rldmlj ZS9wdWJsaWMvY3BwL3VzYi9CVUlMRC5nbgorCisJbWtkaXIgLXAgdGhpcmRfcGFydHkvbm9kZS9s aW51eC9ub2RlLWxpbnV4LXg2NC9iaW4KKwlsbiAtcyAvdXNyL2Jpbi9ub2RlIHRoaXJkX3BhcnR5 L25vZGUvbGludXgvbm9kZS1saW51eC14NjQvYmluLworCisJIyByZXVzYWJsZSBzeXN0ZW0gbGli cmFyeSBzZXR0aW5ncworCWxvY2FsIHVzZV9zeXN0ZW09IgorCQlmZm1wZWcKKwkJZmxhYworCQlm b250Y29uZmlnCisJCWZyZWV0eXBlCisJCWhhcmZidXp6LW5nCisJCWxpYmRybQorCQlsaWJldmVu dAorCQlsaWJqcGVnCisJCWxpYnBuZworCQlsaWJ3ZWJwCisJCWxpYnhtbAorCQlsaWJ4c2x0CisJ CW9wdXMKKwkJcmUyCisJCXNuYXBweQorCQkiCisJZm9yIF9saWIgaW4gJHVzZV9zeXN0ZW0gbGli anBlZ190dXJibzsgZG8KKwkJbXNnX25vcm1hbCAiUmVtb3ZpbmcgYnVpbGRzY3JpcHRzIGZvciBz eXN0ZW0gcHJvdmlkZWQgJF9saWJcbiIKKwkJZmluZCAtdHlwZSBmIC1wYXRoICIqdGhpcmRfcGFy dHkvJF9saWIvKiIgXAorCQkJXCEgLXBhdGggIip0aGlyZF9wYXJ0eS8kX2xpYi9jaHJvbWl1bS8q IiBcCisJCQlcISAtcGF0aCAiKnRoaXJkX3BhcnR5LyRfbGliL2dvb2dsZS8qIiBcCisJCQlcISAt cGF0aCAnLi9iYXNlL3RoaXJkX3BhcnR5L2ljdS8qJyBcCisJCQlcISAtcGF0aCAnLi90aGlyZF9w YXJ0eS9wZGZpdW0vdGhpcmRfcGFydHkvZnJlZXR5cGUvaW5jbHVkZS9wc3RhYmxlcy5oJyBcCisJ CQlcISAtcGF0aCAnLi90aGlyZF9wYXJ0eS9oYXJmYnV6ei1uZy91dGlscy9oYl9zY29wZWQuaCcg XAorCQkJXCEgLXJlZ2V4ICcuKlwuXChnblx8Z25pXHxpc29sYXRlXHxweVwpJyBcCisJCQktZGVs ZXRlCisJZG9uZQorCisKKwltc2dfbm9ybWFsICJSZXBsYWNpbmcgZ24gZmlsZXNcbiIKKwlweXRo b24yIGJ1aWxkL2xpbnV4L3VuYnVuZGxlL3JlcGxhY2VfZ25fZmlsZXMucHkgLS1zeXN0ZW0tbGli cmFyaWVzIFwKKwkJJHVzZV9zeXN0ZW0KKwl0aGlyZF9wYXJ0eS9saWJhZGRyZXNzaW5wdXQvY2hy b21pdW0vdG9vbHMvdXBkYXRlLXN0cmluZ3MucHkKK30KKworZG9fY29uZmlndXJlKCkgeworCWxv Y2FsIHRhcmdldF9hcmNoPSIkKF9nZXRfY2hyb21pdW1fYXJjaCAke1hCUFNfVEFSR0VUX01BQ0hJ TkV9KSIKKwlsb2NhbCBob3N0X2FyY2g9IiQoX2dldF9jaHJvbWl1bV9hcmNoICR7WEJQU19NQUNI SU5FfSkiCisJIyB0aGUgYnVpbGQgc3lzdGVtIHdpbGwgc2V0IG1hcmNoIGZvciB1c2UsIGFkZGlu ZyBpdCB0byBjZmxhZ3Mgd2lsbCBicmVhayBidWlsZHMKKwlleHBvcnQgQ1hYRkxBR1M9JCggc2hv cHQgLXMgZXh0Z2xvYjsgZWNobyAke0NYWEZMQUdTLy1tYXJjaD0qKFteIF0pfSApCisJZXhwb3J0 IENGTEFHUz0kKCBzaG9wdCAtcyBleHRnbG9iOyBlY2hvICR7Q0ZMQUdTLy1tYXJjaD0qKFteIF0p fSApCisJZXhwb3J0IENGTEFHUz0ke0NGTEFHUy8tZy99CisJZXhwb3J0IENYWEZMQUdTPSR7Q1hY RkxBR1MvLWcvfQorCWxvY2FsIGNvbmY9KCkKKwljZCB0aGlyZF9wYXJ0eS9lbGVjdHJvbl9ub2Rl CisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCWNvbmZfYXJncz0iIC0tZGVzdC1jcHU9 JHt0YXJnZXRfYXJjaH0gLS1jcm9zcy1jb21waWxpbmciCisJZmkKKwkuL2NvbmZpZ3VyZSAtLXBy ZWZpeD0vdXNyIFwKKwkJLS1zaGFyZWQtemxpYiBcCisJCS0tc2hhcmVkLWxpYnV2IFwKKwkJLS1z aGFyZWQtb3BlbnNzbCBcCisJCS0tc2hhcmVkLWNhcmVzIFwKKwkJLS1vcGVuc3NsLXVzZS1kZWYt Y2Etc3RvcmUgXAorCQktLXdpdGhvdXQtbnBtIFwKKwkJLS13aXRob3V0LWR0cmFjZSBcCisJCS0t d2l0aG91dC1idW5kbGVkLXY4IFwKKwkJJHtjb25mX2FyZ3N9CisKKwljZCAiJHdya3NyYy8kYnVp bGRfd3Jrc3JjIi9lbGVjdHJvbgorCXlhcm4gaW5zdGFsbAorCWNkICIkd3Jrc3JjLyRidWlsZF93 cmtzcmMiCisKKwlpZiBbICIkYnVpbGRfb3B0aW9uX2NsYW5nIiBdOyB0aGVuCisJCWV4cG9ydCBD Qz1jbGFuZworCQlleHBvcnQgQ1hYPWNsYW5nKysKKwkJZXhwb3J0IEhPU1RfQ0M9Y2xhbmcKKwkJ ZXhwb3J0IEhPU1RfQ1hYPWNsYW5nKysKKwllbHNlCisJCWV4cG9ydCBDWFhGTEFHUz0iJENYWEZM QUdTIC1mcGVybWlzc2l2ZSIKKwkJZXhwb3J0IEJVSUxEX0NYWEZMQUdTPSIkQlVJTERfQ1hYRkxB R1MgLWZwZXJtaXNzaXZlIgorCQlleHBvcnQgQlVJTERfQVI9IiRBUl9ob3N0IgorCQlleHBvcnQg QlVJTERfTk09IiROTV9ob3N0IgorCWZpCisKKwkjIEdvb2dsZSBBUEkga2V5cyAoc2VlIGh0dHA6 Ly93d3cuY2hyb21pdW0ub3JnL2RldmVsb3BlcnMvaG93LXRvcy9hcGkta2V5cykKKwkjIE5vdGU6 IFRoZXNlIGFyZSBmb3IgVm9pZCBMaW51eCB1c2UgT05MWS4KKwljb25mKz0oCisJCSdnb29nbGVf YXBpX2tleT0iQUl6YVN5QTlnV2F6S2FIYU5JUFBnMmhyTWo2X1pTRzhBRm1xNzM4IicKKwkJJ2dv b2dsZV9kZWZhdWx0X2NsaWVudF9pZD0iMTI2NjU5MTQ5NDIzLWhvbzZpY2tiazNwMXUycWpzZHNw MGRkY2l1cmZ2YjR0LmFwcHMuZ29vZ2xldXNlcmNvbnRlbnQuY29tIicKKwkJJ2dvb2dsZV9kZWZh dWx0X2NsaWVudF9zZWNyZXQ9Il9vekl4MkQtREttX3NlXzJOUHdWNGw1YiInCisJKQorCisJY29u Zis9KAorCQknYmxpbmtfc3ltYm9sX2xldmVsPTAnCisJCSdjbGFuZ191c2VfY2hyb21lX3BsdWdp bnM9ZmFsc2UnCisJCSdjdXN0b21fdG9vbGNoYWluPSIvL2J1aWxkL3Rvb2xjaGFpbi9saW51eC91 bmJ1bmRsZTpkZWZhdWx0IicKKwkpCisJaWYgWyAiJENST1NTX0JVSUxEIiBdOyB0aGVuCisJCWNv bmYrPSgKKwkJCSdob3N0X3Rvb2xjaGFpbj0iLy9idWlsZC90b29sY2hhaW4vbGludXgvdW5idW5k bGU6aG9zdCInCisJCQkndjhfc25hcHNob3RfdG9vbGNoYWluPSIvL2J1aWxkL3Rvb2xjaGFpbi9s aW51eC91bmJ1bmRsZTpob3N0IicKKwkJCSJob3N0X3BrZ19jb25maWc9XCIkUEtHX0NPTkZJR19G T1JfQlVJTERcIiIKKwkJCSJwa2dfY29uZmlnPVwiJFBLR19DT05GSUdcIiIKKwkJKQorCWVsc2UK KwkJY29uZis9KAorCQkJJ2hvc3RfdG9vbGNoYWluPSIvL2J1aWxkL3Rvb2xjaGFpbi9saW51eC91 bmJ1bmRsZTpkZWZhdWx0IicKKwkJCSd2OF9zbmFwc2hvdF90b29sY2hhaW49Ii8vYnVpbGQvdG9v bGNoYWluL2xpbnV4L3VuYnVuZGxlOmRlZmF1bHQiJworCQkpCisJZmkKKwlpZiBbICIkYnVpbGRf b3B0aW9uX3NuZGlvIiBdOyB0aGVuCisJCWNvbmYrPSgKKwkJCSd1c2Vfc25kaW89dHJ1ZScKKwkJ KQorCWZpCisJaWYgWyAiJGJ1aWxkX29wdGlvbl9vem9uZSIgXTsgdGhlbgorCQljb25mKz0oCisJ CQkndXNlX296b25lID0gdHJ1ZScKKwkJCSdvem9uZV9hdXRvX3BsYXRmb3JtcyA9IHRydWUnCisJ CQknb3pvbmVfcGxhdGZvcm1fd2F5bGFuZCA9IHRydWUnCisJCQknb3pvbmVfcGxhdGZvcm1feDEx ID0gdHJ1ZScKKwkJCSd1c2Vfc3lzdGVtX2xpYndheWxhbmQgPSB0cnVlJworCQkpCisJZmkKKwlp ZiBbIC1uICIkWEJQU19ERUJVR19QS0dTIiBdOyB0aGVuCisJCWNvbmYrPSgnc3ltYm9sX2xldmVs PTEnKQorCWVsc2UKKwkJY29uZis9KCdzeW1ib2xfbGV2ZWw9MCcpCisJZmkKKwljb25mKz0oCisJ CSdlbmFibGVfaGFuZ291dF9zZXJ2aWNlc19leHRlbnNpb249dHJ1ZScKKwkJJ2VuYWJsZV9uYWNs X25vbnNmaT1mYWxzZScKKwkJJ2VuYWJsZV9uYWNsPWZhbHNlJworCQknZW5hYmxlX3ByZWNvbXBp bGVkX2hlYWRlcnM9ZmFsc2UnCisJCSdmYXRhbF9saW5rZXJfd2FybmluZ3M9ZmFsc2UnCisJCSdm Zm1wZWdfYnJhbmRpbmc9IkNocm9tZSInCisJCSdmaWVsZHRyaWFsX3Rlc3RpbmdfbGlrZV9vZmZp Y2lhbF9idWlsZD10cnVlJworCQknZ29sZF9wYXRoPSIvdXNyL2Jpbi9sZC5nb2xkIicKKwkJJ2lj dV91c2VfZGF0YV9maWxlPXRydWUnCisJCSJpc19jbGFuZz0kKHZvcHRfaWYgY2xhbmcgdHJ1ZSBm YWxzZSkiCisJCSdpc19jb21wb25lbnRfYnVpbGQ9ZmFsc2UnCisJCSJpc19kZWJ1Zz0kX2lzX2Rl YnVnIgorCQkncHJvcHJpZXRhcnlfY29kZWNzPXRydWUnCisJCSd0cmVhdF93YXJuaW5nc19hc19l cnJvcnM9ZmFsc2UnCisJCSd1c2VfYWxsb2NhdG9yX3NoaW09ZmFsc2UnCisJCSd1c2VfYWxsb2Nh dG9yPSJub25lIicKKwkJJ3VzZV9jdXBzPXRydWUnCisJCSd1c2VfY3VzdG9tX2xpYmN4eD1mYWxz ZScKKwkJJ3VzZV9nbm9tZV9rZXlyaW5nPWZhbHNlJworCQkndXNlX2dvbGQ9ZmFsc2UnCisJCSd1 c2VfbGxkPWZhbHNlJworCQkidXNlX3B1bHNlYXVkaW89JCh2b3B0X2lmIHB1bHNlYXVkaW8gJ3Ry dWUnICdmYWxzZScpIgorCQkicnRjX3VzZV9waXBld2lyZT0kKHZvcHRfaWYgcGlwZXdpcmUgdHJ1 ZSBmYWxzZSkiCisJCSdydGNfcGlwZXdpcmVfdmVyc2lvbj0iMC4zIicKKwkJJ3VzZV9zeXNyb290 PWZhbHNlJworCQkndXNlX3N5c3RlbV9oYXJmYnV6ej10cnVlJworCQkidGFyZ2V0X2NwdT1cIiR0 YXJnZXRfYXJjaFwiIgorCQkiaG9zdF9jcHU9XCIkaG9zdF9hcmNoXCIiCisJCSdpbXBvcnQoIi8v ZWxlY3Ryb24vYnVpbGQvYXJncy9yZWxlYXNlLmduIiknCisJKQorCisJbXNnX25vcm1hbCAiQm9v dHN0cmFwcGluZyBHTlxuIgorCUNDPSIke0NDX0ZPUl9CVUlMRDotJENDfSIgQ1hYPSIke0NYWF9G T1JfQlVJTEQ6LSRDWFh9IiBMRD0iJHtMRF9GT1JfQlVJTEQ6LSRMRH0iIFwKKwlDRkxBR1M9IiR7 Q0ZMQUdTX0ZPUl9CVUlMRDotJENGTEFHU30iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlM RDotJENYWEZMQUdTfSIgXAorCUxERkxBR1M9IiR7WEJQU19MREZMQUdTfSIgXAorCQlweXRob24y IHRvb2xzL2duL2Jvb3RzdHJhcC9ib290c3RyYXAucHkgLXMgLXYgLS1za2lwLWdlbmVyYXRlLWJ1 aWxkZmlsZXMKKworCW1zZ19ub3JtYWwgIkNvbmZpZ3VyaW5nIGJ1aWxkXG4iCisJb3V0L1JlbGVh c2UvZ24gZ2VuIG91dC8kX2J1aWxkdHlwZSAtLWFyZ3M9IiR7Y29uZlsqXX0iCit9CisKK2RvX2J1 aWxkKCkgeworCWV4cG9ydCBDWFhGTEFHUz0kKCBzaG9wdCAtcyBleHRnbG9iOyBlY2hvICR7Q1hY RkxBR1MvLW1hcmNoPSooW14gXSl9ICkKKwlleHBvcnQgQ0ZMQUdTPSQoIHNob3B0IC1zIGV4dGds b2I7IGVjaG8gJHtDRkxBR1MvLW1hcmNoPSooW14gXSl9ICkKKwlleHBvcnQgQ0ZMQUdTPSR7Q0ZM QUdTLy1nL30KKwlleHBvcnQgQ1hYRkxBR1M9JHtDWFhGTEFHUy8tZy99CisJaWYgWyAiJGJ1aWxk X29wdGlvbl9jbGFuZyIgXTsgdGhlbgorCQlleHBvcnQgQ0M9Y2xhbmcKKwkJZXhwb3J0IENYWD1j bGFuZysrCisJCWV4cG9ydCBIT1NUX0NDPWNsYW5nCisJCWV4cG9ydCBIT1NUX0NYWD1jbGFuZysr CisJZWxzZQorCQlleHBvcnQgQlVJTERfQ1hYRkxBR1M9IiRCVUlMRF9DWFhGTEFHUyAtZnBlcm1p c3NpdmUiCisJCWV4cG9ydCBDWFhGTEFHUz0iJENYWEZMQUdTIC1mcGVybWlzc2l2ZSIKKwkJZXhw b3J0IEJVSUxEX0FSPSIkQVJfaG9zdCIKKwkJZXhwb3J0IEJVSUxEX05NPSIkTk1faG9zdCIKKwlm aQorCW1zZ19ub3JtYWwgIk5pbmphIHR1cnRsZXMgR08hXG4iCisJbmluamEgJHttYWtlam9ic30g LUMgb3V0LyRfYnVpbGR0eXBlIGVsZWN0cm9uIHRoaXJkX3BhcnR5L2VsZWN0cm9uX25vZGU6aGVh ZGVycworCSMgZmluaXNoIHJlc3Qgb2YgdGhlIGJ1aWxkCisJc3RyaXAgLXMgb3V0LyRfYnVpbGR0 eXBlL2VsZWN0cm9uCisJbmluamEgJHttYWtlam9ic30gLUMgb3V0LyRfYnVpbGR0eXBlIGVsZWN0 cm9uX2Rpc3RfemlwCit9CisKK2RvX2luc3RhbGwoKSB7CisJdm1rZGlyIC91c3IvbGliLyRwa2du YW1lCisJdm1rZGlyIC91c3IvaW5jbHVkZS8kcGtnbmFtZQorCWJzZHRhciAteGYgb3V0LyRfYnVp bGR0eXBlL2Rpc3QuemlwIC1DICIkREVTVERJUi91c3IvbGliLyRwa2duYW1lIgorCisJY2htb2Qg dStzICIkREVTVERJUi91c3IvbGliLyRwa2duYW1lL2Nocm9tZS1zYW5kYm94IgorCisJY3Agb3V0 LyRfYnVpbGR0eXBlL2dlbi9ub2RlX2hlYWRlcnMudGFyLmd6ICIkREVTVERJUiIvdXNyL2luY2x1 ZGUvJHBrZ25hbWUKKworCXZsaWNlbnNlICR7d3Jrc3JjfS9zcmMvTElDRU5TRSBjaHJvbWl1bS5M SUNFTlNFCisJdmxpY2Vuc2UgJHt3cmtzcmN9L3NyYy9lbGVjdHJvbi9MSUNFTlNFIGVsZWN0cm9u LkxJQ0VOU0UKKwl2bGljZW5zZSAke3dya3NyY30vc3JjL3RoaXJkX3BhcnR5L2VsZWN0cm9uX25v ZGUvTElDRU5TRSBub2RlLkxJQ0VOU0UKKworCXZta2RpciAvdXNyL2JpbgorCWxuIC1zIC4uL2xp Yi8kcGtnbmFtZS9lbGVjdHJvbiAiJERFU1RESVIiL3Vzci9iaW4vJHBrZ25hbWUKK30KZGlmZiAt LWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi91cGRhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMTIvdXBk YXRlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uM2FmOGU1OGI1MzU4 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL3VwZGF0ZQpAQCAtMCwwICsx LDIgQEAKK3NpdGU9aHR0cHM6Ly93d3cuZWxlY3Ryb25qcy5vcmcvcmVsZWFzZXMvc3RhYmxlP3Zl cnNpb249JHt2ZXJzaW9uJSUuKn0KK3BhdHRlcm49J3RhZy92XEtbXGRcLl0rKD89IiknCg== --===============5185885199839731712==--