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 28971 invoked from network); 26 May 2021 19:41:18 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 26 May 2021 19:41:18 -0000 Content-Type: multipart/mixed; boundary="===============7605097166153859255==" MIME-Version: 1.0 Subject: =?utf8?q?=5BPR_PATCH=5D_=5BWiP=5D_New_package=3A_electron13-13=2E0=2E0?= To: ml@inbox.vuxu.org From: Johnnynator Reply-to: ml@inbox.vuxu.org Message-ID: Date: Wed, 26 May 2021 21:41:18 +0200 List-Id: GitHub notification mails are now in MIME to allow UTF8. --===============7605097166153859255== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYSBuZXcgcHVsbCByZXF1ZXN0IGJ5IEpvaG5ueW5hdG9yIGFnYWluc3QgbWFzdGVy IG9uIHRoZSB2b2lkLXBhY2thZ2VzIHJlcG9zaXRvcnkKCmh0dHBzOi8vZ2l0aHViLmNvbS9Kb2hu bnluYXRvci92b2lkLXBhY2thZ2VzIGVsZWN0cm9uMTMKaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQt bGludXgvdm9pZC1wYWNrYWdlcy9wdWxsLzMxMTM2CgpbV2lQXSBOZXcgcGFja2FnZTogZWxlY3Ry b24xMy0xMy4wLjAKPCEtLSBNYXJrIGl0ZW1zIHdpdGggW3hdIHdoZXJlIGFwcGxpY2FibGUgLS0+ DQoNCiMjIyMgR2VuZXJhbA0KLSBbIF0gVGhpcyBpcyBhIG5ldyBwYWNrYWdlIGFuZCBpdCBjb25m b3JtcyB0byB0aGUgW3F1YWxpdHkgcmVxdWlyZW1lbnRzXShodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL01hbnVhbC5tZCNxdWFsaXR5LXJlcXVp cmVtZW50cykNCg0KIyMjIyBIYXZlIHRoZSByZXN1bHRzIG9mIHRoZSBwcm9wb3NlZCBjaGFuZ2Vz IGJlZW4gdGVzdGVkPw0KLSBbIF0gSSB1c2UgdGhlIHBhY2thZ2VzIGFmZmVjdGVkIGJ5IHRoZSBw cm9wb3NlZCBjaGFuZ2VzIG9uIGEgcmVndWxhciBiYXNpcyBhbmQgY29uZmlybSB0aGlzIFBSIHdv cmtzIGZvciBtZQ0KLSBbIF0gSSBnZW5lcmFsbHkgZG9uJ3QgdXNlIHRoZSBhZmZlY3RlZCBwYWNr YWdlcyBidXQgYnJpZWZseSB0ZXN0ZWQgdGhpcyBQUg0KDQotIFRoaXMgZG9lc24ndCBjb21waWxl IHlldCBvbiBtdXNsLCB0aGV5IG1vdmUgYSBsb3Qgb2YgZG5zIHN0dWZmIGZyb20gZ2VuZXJpYyBw b3NpeCB0byBhIGxpbnV4IHNwZWNpZmljIGZpbGUsIHRoYXQgb2ZjIG9ubHkgd29ya3MgZm9yIGds aWJjLg0KDQo8IS0tDQpJZiBHaXRIdWIgQ0kgY2Fubm90IGJlIHVzZWQgdG8gdmFsaWRhdGUgdGhl IGJ1aWxkIHJlc3VsdCAoZm9yIGV4YW1wbGUsIGlmIHRoZQ0KYnVpbGQgaXMgbGlrZWx5IHRvIHRh a2Ugc2V2ZXJhbCBob3VycyksIG1ha2Ugc3VyZSB0bw0KW3NraXAgQ0ldKGh0dHBzOi8vZ2l0aHVi LmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvQ09OVFJJQlVUSU5HLm1k I2NvbnRpbnVvdXMtaW50ZWdyYXRpb24pLg0KV2hlbiBza2lwcGluZyBDSSwgdW5jb21tZW50IGFu ZCBmaWxsIG91dCB0aGUgZm9sbG93aW5nIHNlY3Rpb24uDQpOb3RlOiBmb3IgYnVpbGRzIHRoYXQg YXJlIGxpa2VseSB0byBjb21wbGV0ZSBpbiBsZXNzIHRoYW4gMiBob3VycywgaXQgaXMgbm90DQph Y2NlcHRhYmxlIHRvIHNraXAgQ0kuDQotLT4NCjwhLS0gDQojIyMjIERvZXMgaXQgYnVpbGQgYW5k IHJ1biBzdWNjZXNzZnVsbHk/IA0KKFBsZWFzZSBjaG9vc2UgYXQgbGVhc3Qgb25lIG5hdGl2ZSBi dWlsZCBhbmQsIGlmIHN1cHBvcnRlZCwgYXQgbGVhc3Qgb25lIGNyb3NzIGJ1aWxkLiBNb3JlIGFy ZSBiZXR0ZXIuKQ0KLSBbIF0gSSBidWlsdCB0aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBh cmNoaXRlY3R1cmUsIChBUkNILUxJQkMpDQotIFsgXSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxseSBm b3IgdGhlc2UgYXJjaGl0ZWN0dXJlcyAoaWYgc3VwcG9ydGVkLiBtYXJrIGNyb3NzYnVpbGRzKToN CiAgLSBbIF0gYWFyY2g2NC1tdXNsDQogIC0gWyBdIGFybXY3bA0KICAtIFsgXSBhcm12NmwtbXVz bA0KLS0+DQoKCkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4 L3ZvaWQtcGFja2FnZXMvcHVsbC8zMTEzNi5wYXRjaCBpcyBhdHRhY2hlZA== --===============7605097166153859255== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-electron13-31136.patch" RnJvbSBmYjQ4ZTA2YTM3YjZkODdlYTM0MjAyZDc1MGZhZTRhZjUwNDMzODg4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hubnluYXRvci5kZXY+CkRhdGU6IFdlZCwg MjYgTWF5IDIwMjEgMjE6Mzg6MzIgKzAyMDAKU3ViamVjdDogW1BBVENIXSBOZXcgcGFja2FnZTog ZWxlY3Ryb24xMy0xMy4wLjAKCi0tLQogLi4uL2Nocm9taXVtLWRlZmF1bHQtcHRocmVhZC1zdGFj a3NpemUucGF0Y2ggIHwgICAyOSArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtY3Jh c2hwYWQucGF0Y2ggfCAgIDIzICsKIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1kbnMu cGF0Y2ggICAgICB8ICAgMzIgKwogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWZpeGVz LnBhdGNoICAgIHwgIDIwMSArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtaGFja3Mu cGF0Y2ggICAgfCAgIDIyICsKIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1saWJjKysu cGF0Y2ggICB8ICAgNTUgKwogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXNhbmRib3gu cGF0Y2ggIHwgICA5MiArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc3luYy5wYXRj aCAgICAgfCAgIDMwICsKIC4uLi9jaHJvbWl1bS1tdXNsLXh4eC1wcGM2NGxlLnBhdGNoICAgICAg ICAgICB8ICAxOTAgKwogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1uby1tYWxsaW5mby5wYXRj aCAgIHwgICA1NCArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLXJlc29sdmVyLnBhdGNoICAg ICAgfCAgIDM4ICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLTg4LWdsaWJjLTIuMzMucGF0Y2ggICAg ICB8ICAxNDQgKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tYnJvd3Nlci1zaXplX3QucGF0Y2ggICAg IHwgICAxMCArCiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaCAg fCAgIDI2ICsKIC4uLi12OC1tb25vdG9uaWMtcHRocmVhZC1jb250X3RpbWVkd2FpdC5wYXRjaCB8 ICAgMjQgKwogLi4uL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZXhlY2luZm8ucGF0Y2ggIHwg ICA3MiArCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRjb250ZXh0LnBhdGNoICAgICAgfCAg IDI3ICsKIC4uLi9jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0ZW0tamF2YS5wYXRjaCB8ICAg MTUgKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoIHwgICAx MCArCiAuLi4vY2hyb21pdW0tc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCAgICAgfCAgIDIw ICsKIC4uLi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoICAgICAgICB8ICA4ODYg KysrKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tc3lzdGVtLW5vZGVqcy5wYXRjaCAgICAgIHwgICAy MCArCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtaW5jbHVkZS5wYXRjaCAgICAgfCAgIDEw ICsKIC4uLi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1yMC5wYXRjaCAgICB8ICAgMzMg KwogLi4uL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaCAgICAgIHwgICAxMCAr CiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1saWJ2cHgucGF0Y2ggfCAgIDcyICsK IC4uLi9jaHJvbWl1bS14eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoICAgICAgICB8IDM2MzYgKysr KysrKysrKysrKysrKysKIC4uLi9jaHJvbWl1bS14eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5wYXRj aCAgICB8ICAgMTggKwogLi4uYS1zY3JpcHQtdG8tbGlzdC1wYXRjaC10YXJnZXRzLnBhdGNoLnBh dGNoIHwgICA0MiArCiAuLi4vcGF0Y2hlcy9lbGVjdHJvbi1CdWlsZC1maXhlcy5wYXRjaC5wYXRj aCAgfCAgIDQ3ICsKIC4uLmVjdHJvbi1kb250LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5wYXRj aCB8ICAgMTcgKwogLi4ubGVjdHJvbi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRjaGVzLnBhdGNo IHwgICAxMCArCiAuLi4vc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmNjICAgICAg fCAgMTQ4ICsKIC4uLi9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaCB8 ICAgNjUgKwogLi4uL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNjICAgICAgICAgIHwg IDIwMCArCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5wdXQuaCAgICAgICAgICAgfCAg IDkxICsKIC4uLi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19vdXRwdXQuY2MgICAgICAgICB8ICAx ODMgKwogLi4uL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5oICAgICAgICAgIHwgICA4 NiArCiAuLi5hX2F1ZGlvX2xpbnV4X2F1ZGlvX21hbmFnZXJfbGludXguY2MucGF0Y2ggfCAgIDQz ICsKIC4uLnNyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9CVUlMRC5nbi5wYXRjaCB8ICAgMTIg KwogLi4uZHBhcnR5X2Nocm9taXVtX21lZGlhX2F1ZGlvX0JVSUxELmduLnBhdGNoIHwgICAyMyAr CiAuLi50eV9jaHJvbWl1bV9tZWRpYV9tZWRpYV9fb3B0aW9ucy5nbmkucGF0Y2ggfCAgIDEyICsK IHNyY3BrZ3MvZWxlY3Ryb24xMy90ZW1wbGF0ZSAgICAgICAgICAgICAgICAgICB8ICAzODUgKysK IHNyY3BrZ3MvZWxlY3Ryb24xMy91cGRhdGUgICAgICAgICAgICAgICAgICAgICB8ICAgIDIgKwog NDQgZmlsZXMgY2hhbmdlZCwgNzE2NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1kZWZhdWx0LXB0 aHJlYWQtc3RhY2tzaXplLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWNyYXNocGFkLnBhdGNoCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJv bWl1bS1tdXNsLWRucy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1maXhlcy5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0t bXVzbC1oYWNrcy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9m aWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1saWJjKysucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11 c2wtc2FuZGJveC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9m aWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zeW5jLnBhdGNoCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNs LXh4eC1wcGM2NGxlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEz L2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1uby1tYWxsaW5mby5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0t cmVzb2x2ZXIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS04OC1nbGliYy0yLjMzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tYnJvd3Nlci1zaXpl X3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW11c2wtdjgtbW9ub3RvbmljLXB0 aHJlYWQtY29udF90aW1lZHdhaXQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2Vs ZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1leGVjaW5mby5wYXRjaAogY3JlYXRl IG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW5v LWdldGNvbnRleHQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0ZW0tamF2YS5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9t aXVtLXNhbmRib3gtbWVtYmFycmllci5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRib3gtc2NoZWRfZ2V0cGFyYW0u cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1zbmRpby5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ry b24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJy dGMtaW5jbHVkZS5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1yMC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0 IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1zaXplX3Qu cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS14eHgtcHBjNjRsZS1saWJ2cHgucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zdXBw b3J0LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1BZGQtYS1z Y3JpcHQtdG8tbGlzdC1wYXRjaC10YXJnZXRzLnBhdGNoLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2 NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQnVpbGQtZml4ZXMu cGF0Y2gucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9lbGVjdHJvbi1kb250LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2VsZWN0cm9u LWV4Y2x1ZGUtY29udGVudC10ZXN0LXBhdGNoZXMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNk LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZp bGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9l bGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNjCiBjcmVhdGUgbW9kZSAx MDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmgK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMv c25kaW9fb3V0cHV0LmNjCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEzL2Zp bGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLXBhdGNoZXMvbWVkaWFfYXVkaW9fbGludXhfYXVkaW9f bWFuYWdlcl9saW51eC5jYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ry b24xMy9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9CVUlM RC5nbi5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9z bmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRpb19CVUlMRC5nbi5w YXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1w YXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9tZWRpYV9fb3B0aW9ucy5nbmkucGF0 Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvdGVtcGxhdGUKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTMvdXBkYXRlCgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1kZWZhdWx0LXB0aHJl YWQtc3RhY2tzaXplLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hl cy9jaHJvbWl1bS1kZWZhdWx0LXB0aHJlYWQtc3RhY2tzaXplLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTZlNGQyMWU2ZWQ4Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1kZWZhdWx0 LXB0aHJlYWQtc3RhY2tzaXplLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKKy0tLSBiYXNlL3RocmVh ZGluZy9wbGF0Zm9ybV90aHJlYWRfbGludXguY2Mub3JpZworKysrIGJhc2UvdGhyZWFkaW5nL3Bs YXRmb3JtX3RocmVhZF9saW51eC5jYworQEAgLTk5ICs5OSwyIEBAIHNpemVfdCBHZXREZWZhdWx0 VGhyZWFkU3RhY2tTaXplKGNvbnN0IHAKKy0gIHJldHVybiAwOworKyAgLy8gdXNlIDhtYiBsaWtl IGdsaWJjIHRvIGF2b2lkIHJ1bm5pbmcgb3V0IG9mIHNwYWNlCisrICByZXR1cm4gKDEgPDwgMjMp OworLS0tIGNocm9tZS9hcHAvc2h1dGRvd25fc2lnbmFsX2hhbmRsZXJzX3Bvc2l4LmNjLm9yaWcK KysrKyBjaHJvbWUvYXBwL3NodXRkb3duX3NpZ25hbF9oYW5kbGVyc19wb3NpeC5jYworQEAgLTE4 NCwxMSArMTg0LDE5IEBACisgICBnX3NodXRkb3duX3BpcGVfcmVhZF9mZCA9IHBpcGVmZFswXTsK KyAgIGdfc2h1dGRvd25fcGlwZV93cml0ZV9mZCA9IHBpcGVmZFsxXTsKKyAjaWYgIWRlZmluZWQo QUREUkVTU19TQU5JVElaRVIpCisrIyBpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIGNvbnN0IHNp emVfdCBrU2h1dGRvd25EZXRlY3RvclRocmVhZFN0YWNrU2l6ZSA9IFBUSFJFQURfU1RBQ0tfTUlO ICogMjsKKysjIGVsc2UKKysgIGNvbnN0IHNpemVfdCBrU2h1dGRvd25EZXRlY3RvclRocmVhZFN0 YWNrU2l6ZSA9IFBUSFJFQURfU1RBQ0tfTUlOICogMiAqIDg7IC8vIG1hdGNoIHVwIG11c2xzIDJr IFBUSFJFQURfU1RBQ0tfTUlOIHdpdGggZ2xpYmNzIDE2aworKyMgZW5kaWYKKyAjZWxzZQorICAg Ly8gQVNhbiBpbnN0cnVtZW50YXRpb24gYmxvYXRzIHRoZSBzdGFjayBmcmFtZXMsIHNvIHdlIG5l ZWQgdG8gaW5jcmVhc2UgdGhlCisgICAvLyBzdGFjayBzaXplIHRvIGF2b2lkIGhpdHRpbmcgdGhl IGd1YXJkIHBhZ2UuCisrIyBpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIGNvbnN0IHNpemVfdCBr U2h1dGRvd25EZXRlY3RvclRocmVhZFN0YWNrU2l6ZSA9IFBUSFJFQURfU1RBQ0tfTUlOICogNDsK KysjIGVsc2UKKysgIGNvbnN0IHNpemVfdCBrU2h1dGRvd25EZXRlY3RvclRocmVhZFN0YWNrU2l6 ZSA9IFBUSFJFQURfU1RBQ0tfTUlOICogNCAqIDg7IC8vIG1hdGNoIHVwIG11c2xzIDJrIFBUSFJF QURfU1RBQ0tfTUlOIHdpdGggZ2xpYmNzIDE2aworKyMgZW5kaWYKKyAjZW5kaWYKKyAgIFNodXRk b3duRGV0ZWN0b3IqIGRldGVjdG9yID0gbmV3IFNodXRkb3duRGV0ZWN0b3IoCisgICAgICAgZ19z aHV0ZG93bl9waXBlX3JlYWRfZmQsIHNodXRkb3duX2NhbGxiYWNrLCB0YXNrX3J1bm5lcik7CisK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21p dW0tbXVzbC1jcmFzaHBhZC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBh dGNoZXMvY2hyb21pdW0tbXVzbC1jcmFzaHBhZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjAzYTBjMDZmM2NhNgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1jcmFzaHBhZC5w YXRjaApAQCAtMCwwICsxLDIzIEBACistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9saW51eC9wdHJhY2VyLmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9saW51eC9wdHJhY2VyLmNjCitAQCAtMjYsNiArMjYsNyBAQAorIAorICNpZiBkZWZpbmVk KEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpCisgI2luY2x1ZGUgPGFzbS9sZHQuaD4KKysjaW5jbHVkZSA8 YXNtL3B0cmFjZS1hYmkuaD4KKyAjZW5kaWYKKyAKKyBuYW1lc3BhY2UgY3Jhc2hwYWQgeworCist LS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xpbnV4L3N5cy9wdHJhY2Uu aAorKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMvcHRy YWNlLmgKK0BAIC0xNyw3ICsxNyw5IEBACisgCisgI2luY2x1ZGVfbmV4dCA8c3lzL3B0cmFjZS5o PgorIAorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Cisr I2VuZGlmCisgCisgLy8gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5j Z2k/aWQ9MjI0MzMKKyAjaWYgIWRlZmluZWQoUFRSQUNFX0dFVF9USFJFQURfQVJFQSkgJiYgIWRl ZmluZWQoUFRfR0VUX1RIUkVBRF9BUkVBKSAmJiBcCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0 cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtZG5zLnBhdGNoIGIvc3JjcGtn cy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWRucy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU3Y2MwYWM2YzE4YQotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hy b21pdW0tbXVzbC1kbnMucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorLS0tIG5ldC9mZWF0dXJlcy5n bmkJMjAyMS0wNS0yMCAwNDoxNzoxMS4wMDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMjEtMDUtMjYg MTY6MDM6MjUuODI2MTEzNjA4ICswMjAwCitAQCAtMjgsNiArMjgsOSBAQAorICAgIyBSZXBvcnRp bmcgbm90IHVzZWQgb24gaU9TLgorICAgZW5hYmxlX3JlcG9ydGluZyA9ICFpc19pb3MKKyAKKysg ICMgRm9yY2UgUG9zaXggZG5zIGNvbmZpZworKyAgZm9yY2VfcG9zaXhfZG5zID0gdHJ1ZQorKwor ICAgIyBJbmNsdWRlcyB0aGUgdHJhbnNwb3J0IHNlY3VyaXR5IHN0YXRlIHByZWxvYWQgbGlzdC4g VGhpcyBsaXN0IGluY2x1ZGVzCisgICAjIG1lY2hhbmlzbXMgKGUuZy4gSFNUUywgSFBLUCkgdG8g ZW5mb3JjZSB0cnVzdGVkIGNvbm5lY3Rpb25zIHRvIGEgc2lnbmlmaWNhbnQKKyAgICMgc2V0IG9m IGhhcmRjb2RlZCBkb21haW5zLiBXaGlsZSB0aGlzIGxpc3QgaGFzIGEgc2V2ZXJhbCBodW5kcmVk IEtCIG9mIGJpbmFyeQorLS0tIG5ldC9kbnMvQlVJTEQuZ24JMjAyMS0wNS0yMCAwNDoxNzoxMS4w MDAwMDAwMDAgKzAyMDAKKysrKyAtCTIwMjEtMDUtMjYgMTY6MDU6MDEuNTEwNjIyMTAyICswMjAw CitAQCAtMTE0LDcgKzExNCw3IEBACisgICAgICAgICAiZG5zX2NvbmZpZ19zZXJ2aWNlX2FuZHJv aWQuY2MiLAorICAgICAgICAgImRuc19jb25maWdfc2VydmljZV9hbmRyb2lkLmgiLAorICAgICAg IF0KKy0gICAgfSBlbHNlIGlmIChpc19saW51eCkgeworKyAgICB9IGVsc2UgaWYgKGlzX2xpbnV4 ICYmICFmb3JjZV9wb3NpeF9kbnMpIHsKKyAgICAgICBzb3VyY2VzICs9IFsKKyAgICAgICAgICJk bnNfY29uZmlnX3NlcnZpY2VfbGludXguY2MiLAorICAgICAgICAgImRuc19jb25maWdfc2Vydmlj ZV9saW51eC5oIiwKK0BAIC00MzMsNyArNDMzLDcgQEAKKyAKKyAgIGlmIChpc19hbmRyb2lkKSB7 CisgICAgIHNvdXJjZXMgKz0gWyAiZG5zX2NvbmZpZ19zZXJ2aWNlX2FuZHJvaWRfdW5pdHRlc3Qu Y2MiIF0KKy0gIH0gZWxzZSBpZiAoaXNfbGludXgpIHsKKysgIH0gZWxzZSBpZiAoaXNfbGludXgg JiYgIWZvcmNlX3Bvc2l4X2RucykgeworICAgICBzb3VyY2VzICs9IFsgImRuc19jb25maWdfc2Vy dmljZV9saW51eF91bml0dGVzdC5jYyIgXQorICAgfSBlbHNlIGlmIChpc19wb3NpeCkgeworICAg ICBzb3VyY2VzICs9IFsgImRuc19jb25maWdfc2VydmljZV9wb3NpeF91bml0dGVzdC5jYyIgXQpk aWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1 bS1tdXNsLWZpeGVzLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hl cy9jaHJvbWl1bS1tdXNsLWZpeGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uZDRlYWJjOTNkYjU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVj dHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWZpeGVzLnBhdGNoCkBAIC0w LDAgKzEsMjAxIEBACistLS0gLi90aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0 Lmgub3JpZworKysrIC4vdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitA QCAtMTEyNyw2ICsxMTI3LDEyIEBACisgI2lmbmRlZiBfX05SX2ZhbGxvY2F0ZQorICNkZWZpbmUg X19OUl9mYWxsb2NhdGUgICAgICAgICAgMjg1CisgI2VuZGlmCisrCisrI3VuZGVmIF9fTlJfcHJl YWQKKysjZGVmaW5lIF9fTlJfcHJlYWQgX19OUl9wcmVhZDY0CisrI3VuZGVmIF9fTlJfcHdyaXRl CisrI2RlZmluZSBfX05SX3B3cml0ZSBfX05SX3B3cml0ZTY0CisrCisgLyogRW5kIG9mIHg4Ni02 NCBkZWZpbml0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAqLworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgI2lmIF9NSVBTX1NJTSA9PSBfTUlQ U19TSU1fQUJJMzIKKy0tLSAuL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oLm9yaWcKKysrKyAu L3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0 ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCitAQCAtMzcsNiArMzcsMTAgQEAKKyAjaW5jbHVk ZSAiY29tbW9uL21lbW9yeS5oIgorICNpbmNsdWRlICJnb29nbGVfYnJlYWtwYWQvY29tbW9uL21p bmlkdW1wX2Zvcm1hdC5oIgorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrCSNkZWZpbmUg X2xpYmNfZnBzdGF0ZSBfZnBzdGF0ZQorKyNlbmRpZgorKworIG5hbWVzcGFjZSBnb29nbGVfYnJl YWtwYWQgeworIAorIC8vIFdyYXBzIHBsYXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMg b2YgYWNjZXNzb3JzIHRvIHVjb250ZXh0X3Qgc3RydWN0cy4KKy0tLSAuL3RoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oLm9yaWcKKysr KyAuL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2Nv cmVfZHVtcC5oCitAQCAtMzYsNiArMzYsNyBAQAorICNpbmNsdWRlIDxlbGYuaD4KKyAjaW5jbHVk ZSA8bGluay5oPgorICNpbmNsdWRlIDxzdGRkZWYuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+Cisg CisgI2luY2x1ZGUgImNvbW1vbi9tZW1vcnlfcmFuZ2UuaCIKKyAKKy0tLSAuL3NhbmRib3gvbGlu dXgvc3VpZC9wcm9jZXNzX3V0aWwuaC5vcmlnCisrKysgLi9zYW5kYm94L2xpbnV4L3N1aWQvcHJv Y2Vzc191dGlsLmgKK0BAIC0xMSw2ICsxMSwxNCBAQAorICNpbmNsdWRlIDxzdGRib29sLmg+Cisg I2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorKy8vIFNvbWUgYWRkaXRpb25hbCBmdW5jdGlvbnMK KysjIGRlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwcmVzc2lvbikgXAorKwkoX19leHRlbnNp b25fXwkJCVwKKysJICh7IGxvbmcgaW50IF9fcmVzdWx0OwkJXAorKwkgIGRvIF9fcmVzdWx0ID0g KGxvbmcgaW50KSAoZXhwcmVzc2lvbik7IFwKKysJICB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYm IGVycm5vID09IEVJTlRSKTsgXAorKwkgIF9fcmVzdWx0OyB9KSkKKysKKyAvLyBUaGlzIGFkanVz dHMgL3Byb2MvcHJvY2Vzcy9vb21fc2NvcmVfYWRqIHNvIHRoZSBMaW51eCBPT00ga2lsbGVyCisg Ly8gd2lsbCBwcmVmZXIgY2VydGFpbiBwcm9jZXNzIHR5cGVzIG92ZXIgb3RoZXJzLiBUaGUgcmFu Z2UgZm9yIHRoZQorIC8vIGFkanVzdG1lbnQgaXMgWy0xMDAwLCAxMDAwXSwgd2l0aCBbMCwgMTAw MF0gYmVpbmcgdXNlciBhY2Nlc3NpYmxlLgorLS0tIC4vc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi90cmFwLmNjLm9yaWcJMjAyMC0wNC0xMiAwODoyNjo0MC4xODQxNTkyMTcgLTA0MDAKKysrKyAu L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYvdHJhcC5jYwkyMDIwLTA0LTEyIDA4OjQ2OjE2Ljcz NzE5MTIyMiAtMDQwMAorQEAgLTE3NCw3ICsxNzQsNyBAQAorICAgLy8gSWYgdGhlIHZlcnNpb24g b2YgZ2xpYmMgZG9lc24ndCBpbmNsdWRlIHRoaXMgaW5mb3JtYXRpb24gaW4KKyAgIC8vIHNpZ2lu Zm9fdCAob2xkZXIgdGhhbiAyLjE3KSwgd2UgbmVlZCB0byBleHBsaWNpdGx5IGNvcHkgaXQKKyAg IC8vIGludG8gYW4gYXJjaF9zaWdzeXMgc3RydWN0dXJlLgorLSAgbWVtY3B5KCZzaWdzeXMsICZp bmZvLT5fc2lmaWVsZHMsIHNpemVvZihzaWdzeXMpKTsKKysgIG1lbWNweSgmc2lnc3lzLCAmaW5m by0+X19zaWZpZWxkcywgc2l6ZW9mKHNpZ3N5cykpOworICNlbmRpZgorIAorICNpZiBkZWZpbmVk KF9fbWlwc19fKQorLS0tIC4vdGhpcmRfcGFydHkvZmZtcGVnL2xpYmF2dXRpbC9jcHUuYy5vcmln CisrKysgLi90aGlyZF9wYXJ0eS9mZm1wZWcvbGliYXZ1dGlsL2NwdS5jCitAQCAtMzgsNyArMzgs NiBAQAorICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3R5 cGVzLmg+CistI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyAjZW5kaWYKKyAjaWYgSEFWRV9VTklT VERfSAorICNpbmNsdWRlIDx1bmlzdGQuaD4KK2RpZmYgLS1naXQgYS9jaHJvbWUvYnJvd3Nlci9t ZXRyaWNzL2Nocm9tZV9icm93c2VyX21haW5fZXh0cmFfcGFydHNfbWV0cmljcy5jYyBiL2Nocm9t ZS9icm93c2VyL21ldHJpY3MvY2hyb21lX2Jyb3dzZXJfbWFpbl9leHRyYV9wYXJ0c19tZXRyaWNz LmNjCistLS0gY2hyb21lL2Jyb3dzZXIvbWV0cmljcy9jaHJvbWVfYnJvd3Nlcl9tYWluX2V4dHJh X3BhcnRzX21ldHJpY3MuY2Mub3JpZwkyMDIxLTAzLTEwIDA3OjIzOjAwLjE0NTgxMDA4OCAtMDUw MAorKysrIGNocm9tZS9icm93c2VyL21ldHJpY3MvY2hyb21lX2Jyb3dzZXJfbWFpbl9leHRyYV9w YXJ0c19tZXRyaWNzLmNjCTIwMjEtMDMtMTAgMTA6NTc6MTkuNDA1OTYyNjcxIC0wNTAwCitAQCAt NTUsNyArNTUsOSBAQAorIC8vIFRPRE8oY3JidWcuY29tLzEwNTIzOTcpOiBSZXZpc2l0IHRoZSBt YWNybyBleHByZXNzaW9uIG9uY2UgYnVpbGQgZmxhZyBzd2l0Y2gKKyAvLyBvZiBsYWNyb3MtY2hy b21lIGlzIGNvbXBsZXRlLgorICNpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNf Q0hST01FT1NfTEFDUk9TKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8Z251 L2xpYmMtdmVyc2lvbi5oPgorKyNlbmRpZgorIAorICNpbmNsdWRlICJiYXNlL2xpbnV4X3V0aWwu aCIKKyAjaW5jbHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19zcGxpdC5oIgorQEAgLTMxNiw3ICsz MTgsNyBAQAorIHZvaWQgUmVjb3JkTGludXhHbGliY1ZlcnNpb24oKSB7CisgLy8gVE9ETyhjcmJ1 Zy5jb20vMTA1MjM5Nyk6IFJldmlzaXQgdGhlIG1hY3JvIGV4cHJlc3Npb24gb25jZSBidWlsZCBm bGFnIHN3aXRjaAorIC8vIG9mIGxhY3Jvcy1jaHJvbWUgaXMgY29tcGxldGUuCistI2lmIGRlZmlu ZWQoT1NfTElOVVgpIHx8IEJVSUxERkxBRyhJU19DSFJPTUVPU19MQUNST1MpCisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1NfTEFDUk9TKQorICAgYmFzZTo6 VmVyc2lvbiB2ZXJzaW9uKGdudV9nZXRfbGliY192ZXJzaW9uKCkpOworIAorICAgVU1BTGludXhH bGliY1ZlcnNpb24gZ2xpYmNfdmVyc2lvbl9yZXN1bHQgPSBVTUFfTElOVVhfR0xJQkNfTk9UX1BB UlNFQUJMRTsKKy0tLSBzZXJ2aWNlcy9kZXZpY2Uvc2VyaWFsL3NlcmlhbF9pb19oYW5kbGVyX3Bv c2l4LmNjLm9yaWcJMjAxOS0wNy0wMyAxMDo1NzozMi41NjgxNzE4MzUgLTA0MDAKKysrKyBzZXJ2 aWNlcy9kZXZpY2Uvc2VyaWFsL3NlcmlhbF9pb19oYW5kbGVyX3Bvc2l4LmNjCTIwMTktMDctMDMg MTA6NTc6MTYuODY3OTgzMDMxIC0wNDAwCitAQCAtNiw2ICs2LDcgQEAKKyAKKyAjaW5jbHVkZSA8 c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUgPHRlcm1pb3MuaD4KKysjaW5jbHVkZSA8YXNtLWdlbmVy aWMvaW9jdGxzLmg+CisgCisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAjaW5jbHVkZSA8dXRpbGl0 eT4KK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9vdHMvaW5jbHVkZS9vcGVudHlwZS1zYW5pdGlz ZXIuaCBiL3RoaXJkX3BhcnR5L290cy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCistLS0g dGhpcmRfcGFydHkvb3RzL3NyYy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCisrKysgdGhp cmRfcGFydHkvb3RzL3NyYy9pbmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCitAQCAtMjAsNiAr MjAsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludDY0X3Q7CisgI2RlZmluZSBodG9u bCh4KSBfYnl0ZXN3YXBfdWxvbmcgKHgpCisgI2RlZmluZSBodG9ucyh4KSBfYnl0ZXN3YXBfdXNo b3J0ICh4KQorICNlbHNlCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxhcnBh L2luZXQuaD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2VuZGlmCistLS0gLi9iYXNlL2xvZ2dp bmcuY2Mub3JpZwkyMDIxLTAxLTIwIDEyOjA5OjU0LjIyNzAzODc1NyAtMDUwMAorKysrIC4vYmFz ZS9sb2dnaW5nLmNjCTIwMjEtMDEtMjAgMTI6MjQ6MzIuNjAwMzAxMzUxIC0wNTAwCitAQCAtNTU3 LDggKzU1Nyw3IEBACisgCisgTG9nTWVzc2FnZTo6fkxvZ01lc3NhZ2UoKSB7CisgICBzaXplX3Qg c3RhY2tfc3RhcnQgPSBzdHJlYW1fLnRlbGxwKCk7CistI2lmICFkZWZpbmVkKE9GRklDSUFMX0JV SUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiBcCist ICAgICFkZWZpbmVkKE9TX0FJWCkKKysjaWYgIWRlZmluZWQoT0ZGSUNJQUxfQlVJTEQpICYmICFk ZWZpbmVkKE9TX05BQ0wpICYmIGRlZmluZWQoX19HTElCQ19fKQorICAgaWYgKHNldmVyaXR5XyA9 PSBMT0dHSU5HX0ZBVEFMICYmICFiYXNlOjpkZWJ1Zzo6QmVpbmdEZWJ1Z2dlZCgpKSB7CisgICAg IC8vIEluY2x1ZGUgYSBzdGFjayB0cmFjZSBvbiBhIGZhdGFsLCB1bmxlc3MgYSBkZWJ1Z2dlciBp cyBhdHRhY2hlZC4KKyAgICAgYmFzZTo6ZGVidWc6OlN0YWNrVHJhY2Ugc3RhY2tfdHJhY2U7Cist LS0gLi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3RhY2tfdXRpbC5j Yy5vcmlnCisrKysgLi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvc3Rh Y2tfdXRpbC5jYworQEAgLTI4LDcgKzI4LDcgQEAKKyAvLyBGSVhNRTogT24gTWFjIE9TWCBhbmQg TGludXgsIHRoaXMgbWV0aG9kIGNhbm5vdCBlc3RpbWF0ZSBzdGFjayBzaXplCisgLy8gY29ycmVj dGx5IGZvciB0aGUgbWFpbiB0aHJlYWQuCisgCistI2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8 IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCisrI2VsaWYg ZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZS RUVCU0QpIHx8IFwKKyAgICAgZGVmaW5lZChPU19GVUNIU0lBKQorICAgLy8gcHRocmVhZF9nZXRh dHRyX25wKCkgY2FuIGZhaWwgaWYgdGhlIHRocmVhZCBpcyBub3QgaW52b2tlZCBieQorICAgLy8g cHRocmVhZF9jcmVhdGUoKSAoZS5nLiwgdGhlIG1haW4gdGhyZWFkIG9mIGJsaW5rX3VuaXR0ZXN0 cykuCitAQCAtOTYsNyArOTYsNyBAQAorIH0KKyAKKyB2b2lkKiBHZXRTdGFja1N0YXJ0KCkgewor LSNpZiBkZWZpbmVkKF9fR0xJQkNfXykgfHwgZGVmaW5lZChPU19BTkRST0lEKSB8fCBkZWZpbmVk KE9TX0ZSRUVCU0QpIHx8IFwKKysjaWYgZGVmaW5lZChPU19MSU5VWCkgfHwgZGVmaW5lZChPU19B TkRST0lEKSB8fCBkZWZpbmVkKE9TX0ZSRUVCU0QpIHx8IFwKKyAgICAgZGVmaW5lZChPU19GVUNI U0lBKQorICAgcHRocmVhZF9hdHRyX3QgYXR0cjsKKyAgIGludCBlcnJvcjsKKy0tLSB0aGlyZF9w YXJ0eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLXN1Ynplcm8vbGliL1N1cHBvcnQvVW5p eC9TaWduYWxzLmluYy5vcmlnCTIwMTktMDYtMTggMTE6NTE6MTcuMDAwMDAwMDAwIC0wNDAwCisr KysgdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS1zdWJ6ZXJvL2xpYi9T dXBwb3J0L1VuaXgvU2lnbmFscy5pbmMJMjAxOS0wNy0wMyAxMjozMjo1MC45Mzg3NTgxODYgLTA0 MDAKK0BAIC0yNSw3ICsyNSw3IEBACisgI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9yYXdfb3N0cmVh bS5oIgorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgI2luY2x1ZGUgPHN0cmluZz4KKy0jaWYgSEFW RV9FWEVDSU5GT19ICisrI2lmIEhBVkVfRVhFQ0lORk9fSCAmJiBkZWZpbmVkKF9fR0xJQkNfXykK KyAjIGluY2x1ZGUgPGV4ZWNpbmZvLmg+ICAgICAgICAgLy8gRm9yIGJhY2t0cmFjZSgpLgorICNl bmRpZgorICNpZiBIQVZFX1NJR05BTF9ICitAQCAtNTIsNiArNTIsNyBAQAorICNpbmNsdWRlIDx1 bndpbmQuaD4KKyAjZWxzZQorICN1bmRlZiBIQVZFX19VTldJTkRfQkFDS1RSQUNFCisrI3VuZGVm IEhBVkVfQkFDS1RSQUNFCisgI2VuZGlmCisgI2VuZGlmCisgCistLS0gdGhpcmRfcGFydHkvbmFz bS9uYXNtbGliL3JlYWxwYXRoLmMub3JpZwkyMDE5LTA3LTAzIDEyOjIzOjA1LjAyMTk0OTg5NSAt MDQwMAorKysrIHRoaXJkX3BhcnR5L25hc20vbmFzbWxpYi9yZWFscGF0aC5jCTIwMTktMDctMDMg MTI6MjQ6MjQuMjQ2ODYyNjY1IC0wNDAwCitAQCAtNDksNyArNDksNyBAQAorIAorICNpbmNsdWRl ICJuYXNtbGliLmgiCisgCistI2lmZGVmIEhBVkVfQ0FOT05JQ0FMSVpFX0ZJTEVfTkFNRQorKyNp ZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAKKyAvKgorICAqIEdOVS1zcGVjaWZpYywgYnV0IGF2b2lk cyB0aGUgcmVhbHBhdGgoLi4uLCBOVUxMKQorLS0tIHRoaXJkX3BhcnR5L3BlcmZldHRvL2luY2x1 ZGUvcGVyZmV0dG8vZXh0L2Jhc2UvdGhyZWFkX3V0aWxzLmgKKysrKyB0aGlyZF9wYXJ0eS9wZXJm ZXR0by9pbmNsdWRlL3BlcmZldHRvL2V4dC9iYXNlL3RocmVhZF91dGlscy5oCitAQCAtMjksNyAr MjksNyBAQAorICNpbmNsdWRlIDxhbGdvcml0aG0+CisgI2VuZGlmCisgCistI2lmIFBFUkZFVFRP X0JVSUxERkxBRyhQRVJGRVRUT19PU19BTkRST0lEKQorKyNpZiAxCisgI2luY2x1ZGUgPHN5cy9w cmN0bC5oPgorICNlbmRpZgorIAorQEAgLTU4LDcgKzU4LDcgQEAgaW5saW5lIGJvb2wgTWF5YmVT ZXRUaHJlYWROYW1lKGNvbnN0IHN0ZDo6c3RyaW5nJiBuYW1lKSB7CisgCisgaW5saW5lIGJvb2wg R2V0VGhyZWFkTmFtZShzdGQ6OnN0cmluZyYgb3V0X3Jlc3VsdCkgeworICAgY2hhciBidWZbMTZd ID0ge307CistI2lmIFBFUkZFVFRPX0JVSUxERkxBRyhQRVJGRVRUT19PU19BTkRST0lEKQorKyNp ZiAxCisgICBpZiAocHJjdGwoUFJfR0VUX05BTUUsIGJ1ZikgIT0gMCkKKyAgICAgcmV0dXJuIGZh bHNlOworICNlbHNlCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1w YXRjaGVzL2Nocm9taXVtLW11c2wtaGFja3MucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmls ZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtaGFja3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lZGMxYjA2MGRmYjAKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtaGFj a3MucGF0Y2gKQEAgLTAsMCArMSwyMiBAQAorLS0tIGJhc2UvZGVidWcvc3RhY2tfdHJhY2UuY2Mu b3JpZwkyMDE4LTEyLTA4IDE0OjExOjI1LjMwMzQ3NTExNiArMDEwMAorKysrIGJhc2UvZGVidWcv c3RhY2tfdHJhY2UuY2MJMjAxOC0xMi0wOCAxODowMDo0My44NzQ5NDY5OTkgKzAxMDAKK0BAIC0y MjksNyArMjI5LDcgQEAKKyB9Cisgc3RkOjpzdHJpbmcgU3RhY2tUcmFjZTo6VG9TdHJpbmdXaXRo UHJlZml4KGNvbnN0IGNoYXIqIHByZWZpeF9zdHJpbmcpIGNvbnN0IHsKKyAgIHN0ZDo6c3RyaW5n c3RyZWFtIHN0cmVhbTsKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJ WCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgICBPdXRwdXRU b1N0cmVhbVdpdGhQcmVmaXgoJnN0cmVhbSwgcHJlZml4X3N0cmluZyk7CisgI2VuZGlmCisgICBy ZXR1cm4gc3RyZWFtLnN0cigpOworLS0tIG5ldC9zb2NrZXQvdWRwX3NvY2tldF9wb3NpeC5jYy5v cmlnCTIwMTktMDctMDMgMTM6MTM6NDYuMDM0MzQyNjQ5IC0wNDAwCisrKysgbmV0L3NvY2tldC91 ZHBfc29ja2V0X3Bvc2l4LmNjCTIwMTktMDctMDMgMTM6MjM6NTMuMTE3MDgxOTA5IC0wNDAwCitA QCAtMTE5NCw3ICsxMTk0LDcgQEAKKyAgICAgbXNnX2lvdi0+cHVzaF9iYWNrKHtjb25zdF9jYXN0 PGNoYXIqPihidWZmZXItPmRhdGEoKSksIGJ1ZmZlci0+bGVuZ3RoKCl9KTsKKyAgIG1zZ3ZlYy0+ cmVzZXJ2ZShidWZmZXJzLnNpemUoKSk7CisgICBmb3IgKHNpemVfdCBqID0gMDsgaiA8IGJ1ZmZl cnMuc2l6ZSgpOyBqKyspCistICAgIG1zZ3ZlYy0+cHVzaF9iYWNrKHt7bnVsbHB0ciwgMCwgJm1z Z19pb3Zbal0sIDEsIG51bGxwdHIsIDAsIDB9LCAwfSk7CisrICAgIG1zZ3ZlYy0+cHVzaF9iYWNr KHt7bnVsbHB0ciwgMCwgJm1zZ19pb3Zbal0sIDEsIDAsIDAsIDB9LCAwfSk7CisgICBpbnQgcmVz dWx0ID0gSEFORExFX0VJTlRSKFNlbmRtbXNnKGZkLCAmbXNndmVjWzBdLCBidWZmZXJzLnNpemUo KSwgMCkpOworICAgU2VuZFJlc3VsdCBzZW5kX3Jlc3VsdCgwLCAwLCBzdGQ6Om1vdmUoYnVmZmVy cykpOworICAgaWYgKHJlc3VsdCA8IDApIHsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1saWJjKysucGF0Y2ggYi9zcmNwa2dz L2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtbGliYysrLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMDg4ZDgwZmFkNTJiCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9j aHJvbWl1bS1tdXNsLWxpYmMrKy5wYXRjaApAQCAtMCwwICsxLDU1IEBACitkaWZmIC0tZ2l0IGEv YnVpbGR0b29scy90aGlyZF9wYXJ0eS9saWJjKysvdHJ1bmsvaW5jbHVkZS9sb2NhbGUgYi9idWls ZHRvb2xzL3RoaXJkX3BhcnR5L2xpYmMrKy90cnVuay9pbmNsdWRlL2xvY2FsZQoraW5kZXggZDI5 YTJkYy4uNTM5OThiYyAxMDA2NDQKKy0tLSBidWlsZHRvb2xzL3RoaXJkX3BhcnR5L2xpYmMrKy90 cnVuay9pbmNsdWRlL2xvY2FsZQorKysrIGJ1aWxkdG9vbHMvdGhpcmRfcGFydHkvbGliYysrL3Ry dW5rL2luY2x1ZGUvbG9jYWxlCitAQCAtMTEsNiArMTEsMTUgQEAKKyAjaWZuZGVmIF9MSUJDUFBf TE9DQUxFCisgI2RlZmluZSBfTElCQ1BQX0xPQ0FMRQorIAorKy8vIG11c2wgZG9lc24ndCBkZWZp bmUgX2wgKHdpdGggbG9jYWxlKSB2YXJpYW50cyBvZiBmdW5jdGlvbnMsIGFzIGl0IG9ubHkgc3Vw cG9ydHMgVVRGLTguCisrLy8gd2UgY2FuIHNpbXBseSBtYWtlIG1hY3JvcyB0aGF0IHdpbGwgY2Fs bCB0aGUgbm9uLWxvY2FsYXRlZCBvbmVzIGlmIHdlJ3JlIHVzaW5nIG11c2wsIG9yIHJhdGhlciBu b3QtdXNpbmcgc29tZXRoaW5nIHRoYXQgaGFzIHRoZSBfbCBvbmVzLgorKy8vIGNvdWxkbid0IGZp bmQgYW55dGhpbmcgZ2xpYmMgI2RlZmluZXMgd2hlbiBpdCBjcmVhdGVzIHN0cnRvdWxsX2wgKHRo YXQgaXQgZG9lc24ndCB1bmRlZmluZSBhIGZldyBsaW5lcyBsYXRlciksIHNvIGxldCdzIHRlc3Qg YWdhaW5zdCBnbGliYyBhbmQgZ2xpYmMtbGlrZXMuCisrLy8gYWxtb3N0IGFsbCBnbGliYy1saWtl cyBkZWZpbmUgX19HTlVfTElCUkFSWV9fIGZvciBjb21wYXRpYmlsaXR5CisrI2lmbmRlZiBfX0dO VV9MSUJSQVJZX18KKysjZGVmaW5lIHN0cnRvdWxsX2woQSwgQiwgQywgTE9DKSBzdHJ0b3VsbChB LEIsQykKKysjZGVmaW5lIHN0cnRvbGxfbChBLCBCLCBDLCBMT0MpIHN0cnRvbGwoQSxCLEMpCisr I2VuZGlmCisrCisgLyoKKyAgICAgbG9jYWxlIHN5bm9wc2lzCisgCitkaWZmIC0tZ2l0IGEvYnVp bGR0b29scy90aGlyZF9wYXJ0eS9saWJjKysvdHJ1bmsvc3JjL2xvY2FsZS5jcHAgYi9idWlsZHRv b2xzL3RoaXJkX3BhcnR5L2xpYmMrKy90cnVuay9zcmMvbG9jYWxlLmNwcAoraW5kZXggNDE2M2My Yy4uM2QxOTAyYSAxMDA2NDQKKy0tLSBhL2J1aWxkdG9vbHMvdGhpcmRfcGFydHkvbGliYysrL3Ry dW5rL3NyYy9sb2NhbGUuY3BwCisrKysgYnVpbGR0b29scy90aGlyZF9wYXJ0eS9saWJjKysvdHJ1 bmsvc3JjL2xvY2FsZS5jcHAKK0BAIC0xMDI4LDExICsxMDI4LDExIEBAIGN0eXBlPGNoYXI+Ojpk b19uYXJyb3coY29uc3QgY2hhcl90eXBlKiBsb3csIGNvbnN0IGNoYXJfdHlwZSogaGlnaCwgY2hh ciBkZmF1bHQsCisgICAgIHJldHVybiBsb3c7CisgfQorIAorLSNpZiBkZWZpbmVkKF9fRU1TQ1JJ UFRFTl9fKQorKy8vI2lmIGRlZmluZWQoX19FTVNDUklQVEVOX18pCisgZXh0ZXJuICJDIiBjb25z dCB1bnNpZ25lZCBzaG9ydCAqKiBfX2N0eXBlX2JfbG9jKCk7CisgZXh0ZXJuICJDIiBjb25zdCBp bnQgKiogX19jdHlwZV90b2xvd2VyX2xvYygpOworIGV4dGVybiAiQyIgY29uc3QgaW50ICoqIF9f Y3R5cGVfdG91cHBlcl9sb2MoKTsKKy0jZW5kaWYKKysvLyNlbmRpZgorIAorICNpZmRlZiBfTElC Q1BQX1BST1ZJREVTX0RFRkFVTFRfUlVORV9UQUJMRQorIGNvbnN0IGN0eXBlPGNoYXI+OjptYXNr KgorQEAgLTExMzYsMTIgKzExMzYsMTAgQEAgY3R5cGU8Y2hhcj46OmNsYXNzaWNfdGFibGUoKSAg X05PRVhDRVBUCisgI2VsaWYgZGVmaW5lZChfQUlYKQorICAgICByZXR1cm4gKGNvbnN0IHVuc2ln bmVkIGludCAqKV9fbGNfY3R5cGVfcHRyLT5vYmotPm1hc2s7CisgI2Vsc2UKKy0gICAgLy8gUGxh dGZvcm0gbm90IHN1cHBvcnRlZDogYWJvcnQgc28gdGhlIHBlcnNvbiBkb2luZyB0aGUgcG9ydCBr bm93cyB3aGF0IHRvCistICAgIC8vIGZpeAorLSMgd2FybmluZyAgY3R5cGU8Y2hhcj46OmNsYXNz aWNfdGFibGUoKSBpcyBub3QgaW1wbGVtZW50ZWQKKy0gICAgcHJpbnRmKCJjdHlwZTxjaGFyPjo6 Y2xhc3NpY190YWJsZSgpIGlzIG5vdCBpbXBsZW1lbnRlZFxuIik7CistICAgIGFib3J0KCk7Cist ICAgIHJldHVybiBOVUxMOworKy8vIG5vdCBzdXJlIGFueSBvdGhlciBsaWJjIGxpa2UgdGhpcyBl eGlzdHMsIGJ1dCB0aGVyZSBpcyBubyB3YXkgdG8gZGlmZmVyZW50aWF0ZSBtdXNsIGFzIG9mIHJp Z2h0IG5vdworKy8vIHRvIGJlIGZhaXIsIHdpdGggdGhlIGNoYW5nZSBhYm92ZSwgdGhpcyBzaG91 bGQgYWx3YXlzIHdvcmsKKysvLyBhbHNvLCAjd2FybmluZyBpcyBhIGdjYyBleHRlbnNpb24KKysg ICAgcmV0dXJuIChjb25zdCB1bnNpZ25lZCBsb25nICopKl9fY3R5cGVfYl9sb2MoKTsKKyAjZW5k aWYKKyB9CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVz bC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc2FuZGJveC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zYW5kYm94LnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMjMwYmI3YmJkMjk3Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1t dXNsLXNhbmRib3gucGF0Y2gKQEAgLTAsMCArMSw5MiBAQAorLS0tIC4vc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2Mub3Jp ZwkyMDE5LTA3LTAzIDExOjUzOjIxLjIxMzQ3OTczNiAtMDQwMAorKysrIC4vc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MJ MjAxOS0wNy0wMyAxMTo1NzowMS4zMDQ5OTgyNTMgLTA0MDAKK0BAIC0xNDAsMzEgKzE0MCwxNCBA QAorIFJlc3VsdEV4cHIgUmVzdHJpY3RDbG9uZVRvVGhyZWFkc0FuZEVQRVJNRm9yaygpIHsKKyAg IGNvbnN0IEFyZzx1bnNpZ25lZCBsb25nPiBmbGFncygwKTsKKyAKKy0gIC8vIFRPRE8obWRlbXBz a3kpOiBFeHRlbmQgRFNMIHRvIHN1cHBvcnQgKGZsYWdzICYgfm1hc2sxKSA9PSBtYXNrMi4KKy0g IGNvbnN0IHVpbnQ2NF90IGtBbmRyb2lkQ2xvbmVNYXNrID0gQ0xPTkVfVk0gfCBDTE9ORV9GUyB8 IENMT05FX0ZJTEVTIHwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0xP TkVfU0lHSEFORCB8IENMT05FX1RIUkVBRCB8CistICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIENMT05FX1NZU1ZTRU07CistICBjb25zdCB1aW50NjRfdCBrT2Jzb2xldGVBbmRy b2lkQ2xvbmVNYXNrID0ga0FuZHJvaWRDbG9uZU1hc2sgfCBDTE9ORV9ERVRBQ0hFRDsKKysgIGNv bnN0IGludCByZXF1aXJlZCA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENM T05FX1NJR0hBTkQgfAorKyAgICAgICAgICAgICAgICAgICAgICAgQ0xPTkVfVEhSRUFEIHwgQ0xP TkVfU1lTVlNFTTsKKysgIGNvbnN0IGludCBzYWZlID0gQ0xPTkVfU0VUVExTIHwgQ0xPTkVfUEFS RU5UX1NFVFRJRCB8IENMT05FX0NISUxEX0NMRUFSVElEIHwgCisrICAgICAgICAgICAgICAgICAg IENMT05FX0RFVEFDSEVEOworKyAgY29uc3QgQm9vbEV4cHIgdGhyZWFkX2Nsb25lX29rID0gKGZs YWdzJn5zYWZlKT09cmVxdWlyZWQ7CisgCistICBjb25zdCB1aW50NjRfdCBrR2xpYmNQdGhyZWFk RmxhZ3MgPQorLSAgICAgIENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8IENMT05F X1NJR0hBTkQgfCBDTE9ORV9USFJFQUQgfAorLSAgICAgIENMT05FX1NZU1ZTRU0gfCBDTE9ORV9T RVRUTFMgfCBDTE9ORV9QQVJFTlRfU0VUVElEIHwgQ0xPTkVfQ0hJTERfQ0xFQVJUSUQ7CistICBj b25zdCBCb29sRXhwciBnbGliY190ZXN0ID0gZmxhZ3MgPT0ga0dsaWJjUHRocmVhZEZsYWdzOwor LQorLSAgY29uc3QgQm9vbEV4cHIgYW5kcm9pZF90ZXN0ID0KKy0gICAgICBBbnlPZihmbGFncyA9 PSBrQW5kcm9pZENsb25lTWFzaywgZmxhZ3MgPT0ga09ic29sZXRlQW5kcm9pZENsb25lTWFzaywK Ky0gICAgICAgICAgICBmbGFncyA9PSBrR2xpYmNQdGhyZWFkRmxhZ3MpOworLQorLSAgLy8gVGhl IGZvbGxvd2luZyB0d28gZmxhZ3MgYXJlIHRoZSB0d28gaW1wb3J0YW50IGZsYWdzIGluIGFueSB2 Zm9yay1lbXVsYXRpbmcKKy0gIC8vIGNsb25lIGNhbGwuIEVQRVJNIGFueSBjbG9uZSBjYWxsIHRo YXQgY29udGFpbnMgYm90aCBvZiB0aGVtLgorLSAgY29uc3QgdWludDY0X3Qga0ltcG9ydGFudENs b25lVmZvcmtGbGFncyA9IENMT05FX1ZGT1JLIHwgQ0xPTkVfVk07CistCistICBjb25zdCBCb29s RXhwciBpc19mb3JrX29yX2Nsb25lX3Zmb3JrID0KKy0gICAgICBBbnlPZigoZmxhZ3MgJiAoQ0xP TkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLAorLSAgICAgICAgICAgIChmbGFncyAmIGtJbXBv cnRhbnRDbG9uZVZmb3JrRmxhZ3MpID09IGtJbXBvcnRhbnRDbG9uZVZmb3JrRmxhZ3MpOworLQor LSAgcmV0dXJuIElmKElzQW5kcm9pZCgpID8gYW5kcm9pZF90ZXN0IDogZ2xpYmNfdGVzdCwgQWxs b3coKSkKKy0gICAgICAuRWxzZUlmKGlzX2Zvcmtfb3JfY2xvbmVfdmZvcmssIEVycm9yKEVQRVJN KSkKKysgIHJldHVybiBJZih0aHJlYWRfY2xvbmVfb2ssIEFsbG93KCkpCisrICAgICAgLkVsc2VJ ZigoZmxhZ3MgJiAoQ0xPTkVfVk0gfCBDTE9ORV9USFJFQUQpKSA9PSAwLCBFcnJvcihFUEVSTSkp CisgICAgICAgLkVsc2UoQ3Jhc2hTSUdTWVNDbG9uZSgpKTsKKyB9CisgCistLS0gLi9zYW5kYm94 L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjLm9yaWcKKysrKyAuL3Nh bmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKK0BAIC00OTQs NiArNDk0LDcgQEAKKyAgICAgY2FzZSBfX05SX21sb2NrOgorICAgICBjYXNlIF9fTlJfbXVubG9j azoKKyAgICAgY2FzZSBfX05SX211bm1hcDoKKysgICAgY2FzZSBfX05SX21yZW1hcDoKKyAgICAg ICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBfX05SX21hZHZpc2U6CisgICAgIGNhc2UgX19OUl9t aW5jb3JlOgorQEAgLTUwOSw3ICs1MTAsNiBAQAorICAgICBjYXNlIF9fTlJfbW9kaWZ5X2xkdDoK KyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX21wcm90ZWN0OgorLSAgICBjYXNlIF9fTlJfbXJlbWFw OgorICAgICBjYXNlIF9fTlJfbXN5bmM6CisgICAgIGNhc2UgX19OUl9tdW5sb2NrYWxsOgorICAg ICBjYXNlIF9fTlJfcmVhZGFoZWFkOgorZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MgYi9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBm LWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitpbmRleCA4MGYwMmMwLi4yMWZiZTIxIDEwMDY0NAor LS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKKysr KyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAt MzczLDYgKzM3Myw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NTdGFydE9y RGVhdGgoaW50IHN5c25vKSB7CisgI2lmIGRlZmluZWQoX19pMzg2X18pCisgICAgIGNhc2UgX19O Ul93YWl0cGlkOgorICNlbmRpZgorKyAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRyZXNzOgorICAg ICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9fTlJfY2xvbmU6ICAvLyBTaG91bGQgYmUgcGFy YW1ldGVyLXJlc3RyaWN0ZWQuCisgICAgIGNhc2UgX19OUl9zZXRuczogIC8vIFByaXZpbGVnZWQu CitAQCAtMzg1LDcgKzM4Niw2IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFByb2Nlc3NT dGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKyAgICAgY2FzZSBfX05SX3NldF90 aHJlYWRfYXJlYToKKyAjZW5kaWYKKy0gICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKKyAg ICAgY2FzZSBfX05SX3Vuc2hhcmU6CisgI2lmICFkZWZpbmVkKF9fbWlwc19fKSAmJiAhZGVmaW5l ZChfX2FhcmNoNjRfXykKKyAgICAgY2FzZSBfX05SX3Zmb3JrOgorLS0tIHNhbmRib3gvcG9saWN5 L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKKysrKyBzYW5kYm94L3BvbGljeS9s aW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCitAQCAtMTAwLDkgKzEwMCw5IEBACisg ICAgIGNhc2UgX19OUl91bmFtZToKKyAgICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFtOgorICAg ICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyOgorKyAgICBjYXNlIF9fTlJfc2NoZWRfc2V0 c2NoZWR1bGVyOgorICAgICAgIHJldHVybiBBbGxvdygpOworICAgICBjYXNlIF9fTlJfc2NoZWRf Z2V0YWZmaW5pdHk6CistICAgIGNhc2UgX19OUl9zY2hlZF9zZXRzY2hlZHVsZXI6CisgICAgICAg cmV0dXJuIFJlc3RyaWN0U2NoZWRUYXJnZXQoR2V0UG9saWN5UGlkKCksIHN5c25vKTsKKyAgICAg Y2FzZSBfX05SX3BybGltaXQ2NDoKKyAgICAgICAvLyBTZWUgY3JidWcuY29tLzY2MjQ1MCBhbmQg c2V0cmxpbWl0IGNvbW1lbnQgYWJvdmUuCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMv ZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc3luYy5wYXRjaCBiL3NyY3BrZ3MvZWxl Y3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zeW5jLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYmMyZmExOTM3YmQzCi0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1 bS1tdXNsLXN5bmMucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorLS0tIHRoaXJkX3BhcnR5L2xpYnN5 bmMvc3JjL2luY2x1ZGUvc3luYy9zeW5jLmgub3JpZwkyMDIwLTAyLTIxIDA3OjQzOjMzLjc0ODMy NTE3NSAtMDUwMAorKysrIHRoaXJkX3BhcnR5L2xpYnN5bmMvc3JjL2luY2x1ZGUvc3luYy9zeW5j LmgJMjAyMC0wMi0yMSAwNzo0NDowNy4yODgzMjg3ODQgLTA1MDAKK0BAIC0xOSwxMiArMTksMTYg QEAKKyAjaWZuZGVmIF9fU1lTX0NPUkVfU1lOQ19ICisgI2RlZmluZSBfX1NZU19DT1JFX1NZTkNf SAorIAorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Cisr I2VuZGlmCisgI2luY2x1ZGUgPHN0ZGludC5oPgorIAorICNpbmNsdWRlIDxsaW51eC90eXBlcy5o PgorIAorLV9fQkVHSU5fREVDTFMKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsK KysjZW5kaWYKKyAKKyBzdHJ1Y3Qgc3luY19sZWdhY3lfbWVyZ2VfZGF0YSB7CisgIGludDMyX3Qg ZmQyOworQEAgLTE1OCw2ICsxNjIsOCBAQAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3Qgc3luY19wdF9pbmZvICppdHIpOworIHZvaWQgc3luY19mZW5jZV9pbmZvX2Zy ZWUoc3RydWN0IHN5bmNfZmVuY2VfaW5mb19kYXRhICppbmZvKTsKKyAKKy1fX0VORF9ERUNMUwor KyNpZmRlZiBfX2NwbHVzcGx1cworK30KKysjZW5kaWYKKyAKKyAjZW5kaWYgLyogX19TWVNfQ09S RV9TWU5DX0ggKi8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBh dGNoZXMvY2hyb21pdW0tbXVzbC14eHgtcHBjNjRsZS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC14eHgtcHBjNjRsZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjkwMDFhMmE4NTRkMAotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21p dW0tbXVzbC14eHgtcHBjNjRsZS5wYXRjaApAQCAtMCwwICsxLDE5MCBAQAorZGlmZiAtLWdpdCBz YW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaCBzYW5kYm94L2xpbnV4L2JwZl9k c2wvc2VjY29tcF9tYWNyb3MuaAoraW5kZXggYTZhZWM1NDRlLi4yYTRhN2YxYmMgMTAwNjQ0Cist LS0gc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKKysrKyBzYW5kYm94L2xp bnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAorQEAgLTE2LDcgKzE2LDcgQEAKKyAjaWYgZGVm aW5lZChfX21pcHNfXykKKyAvLyBzeXMvdXNlci5oIGluIGVnbGliYyBtaXNzZXMgc2l6ZV90IGRl ZmluaXRpb24KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CistI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgZGVmaW5lZChfX0dMSUJDX18p CisgLy8gTWFudWFsbHkgZGVmaW5lIGdyZWdfdCBvbiBwcGM2NAorIHR5cGVkZWYgdW5zaWduZWQg bG9uZyBsb25nIGdyZWdfdDsKKyAjZW5kaWYKK0BAIC0zNjEsMTEgKzM2MSwxMSBAQCB0eXBlZGVm IHN0cnVjdCBwdF9yZWdzIHJlZ3Nfc3RydWN0OworICNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElU X0FSQ0hfUFBDNjQKKyAjZW5kaWYKKyAKKy0jZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgsIF9yZWcp ICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVnXSkKKysjZGVmaW5lIFNFQ0NPTVBf UkVHKF9jdHgsIF9yZWcpICgoKHN0cnVjdCBwdF9yZWdzICopKF9jdHgpLT51Y19tY29udGV4dC5y ZWdzKS0+Z3ByW19yZWddKQorIAorICNkZWZpbmUgU0VDQ09NUF9SRVNVTFQoX2N0eCkgU0VDQ09N UF9SRUcoX2N0eCwgMykKKyAjZGVmaW5lIFNFQ0NPTVBfU1lTQ0FMTChfY3R4KSBTRUNDT01QX1JF RyhfY3R4LCAwKQorLSNkZWZpbmUgU0VDQ09NUF9JUChfY3R4KSAoX2N0eCktPnVjX21jb250ZXh0 LnJlZ3MtPm5pcAorKyNkZWZpbmUgU0VDQ09NUF9JUChfY3R4KSAoKHN0cnVjdCBwdF9yZWdzICop KF9jdHgpLT51Y19tY29udGV4dC5yZWdzKS0+bmlwCisgI2RlZmluZSBTRUNDT01QX1BBUk0xKF9j dHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCisgI2RlZmluZSBTRUNDT01QX1BBUk0yKF9jdHgpIFNF Q0NPTVBfUkVHKF9jdHgsIDQpCisgI2RlZmluZSBTRUNDT01QX1BBUk0zKF9jdHgpIFNFQ0NPTVBf UkVHKF9jdHgsIDUpCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2Fs bC5jYyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKK2luZGV4IGQ1M2E3ZmY1 Ni4uYzI5MGYwZTkyIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2Fs bC5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYworQEAgLTQ5OSw5 ICs0OTksOSBAQCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4dChpbnRwdHJfdCByZXRf dmFsLCB1Y29udGV4dF90KiBjdHgpIHsKKyAgIC8vIFNhbWUgYXMgTUlQUywgbmVlZCB0byBpbnZl cnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIgKGNyMC5TTykKKyAgIGlmIChyZXRfdmFsIDw9 IC0xICYmIHJldF92YWwgPj0gLTQwOTUpIHsKKyAgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOworLSAg ICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciB8PSAoMSA8PCAyOCk7CisrICAgICgoc3RydWN0 IHB0X3JlZ3MgKiljdHgtPnVjX21jb250ZXh0LnJlZ3MpLT5jY3IgfD0gKDEgPDwgMjgpOworICAg fSBlbHNlIHsKKy0gICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4KTsK KysgICAgKChzdHJ1Y3QgcHRfcmVncyAqKWN0eC0+dWNfbWNvbnRleHQucmVncyktPmNjciAmPSB+ KDEgPDwgMjgpOworICAgfQorICNlbmRpZgorICAgU0VDQ09NUF9SRVNVTFQoY3R4KSA9IHN0YXRp Y19jYXN0PGdyZWdfdD4ocmV0X3ZhbCk7CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2Fic2VpbC1j cHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oIHRoaXJkX3BhcnR5L2Fi c2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCitpbmRleCBj ZGNlOWJmOC4uNzNkNzdkZGEgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNs L2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNsZWNsb2NrLmgKKysrKyB0aGlyZF9wYXJ0eS9hYnNl aWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xvY2suaAorQEAgLTQ2LDcg KzQ2LDcgQEAKKyAKKyAvLyBUaGUgZm9sbG93aW5nIHBsYXRmb3JtcyBoYXZlIGFuIGltcGxlbWVu dGF0aW9uIG9mIGEgaGFyZHdhcmUgY291bnRlci4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcCistICBkZWZp bmVkKF9fcG93ZXJwY19fKSB8fCBkZWZpbmVkKF9fcHBjX18pIHx8IFwKKysgICgoZGVmaW5lZChf X3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSkgJiYgZGVmaW5lZChfX0dMSUJDX18pKSB8 fCBcCisgICBkZWZpbmVkKF9NX0lYODYpIHx8IGRlZmluZWQoX01fWDY0KQorICNkZWZpbmUgQUJT TF9IQVZFX1VOU0NBTEVEX0NZQ0xFQ0xPQ0tfSU1QTEVNRU5UQVRJT04gMQorICNlbHNlCistLS0g dGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNl X2NvbmZpZy5oCisrKysgdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2RlYnVnZ2luZy9pbnRl cm5hbC9zdGFja3RyYWNlX2NvbmZpZy5oCitAQCAtNjQsNyArNjQsNyBAQAorICNlbGlmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKyAjZGVmaW5lIEFCU0xfU1RBQ0tU UkFDRV9JTkxfSEVBREVSIFwKKyAgICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNl X3g4Ni1pbmwuaW5jIgorLSNlbGlmIGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZChfX1BQQ19f KQorKyNlbGlmIChkZWZpbmVkKF9fcHBjX18pIHx8IGRlZmluZWQoX19QUENfXykpICYmIGRlZmlu ZWQoX19HTElCQ19fKQorICNkZWZpbmUgQUJTTF9TVEFDS1RSQUNFX0lOTF9IRUFERVIgXAorICAg ImFic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfcG93ZXJwYy1pbmwuaW5jIgorICNl bGlmIGRlZmluZWQoX19hYXJjaDY0X18pCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFk L0JVSUxELmduIHRoaXJkX3BhcnR5L2JyZWFrcGFkL0JVSUxELmduCitpbmRleCBmOWE2MGUzNy4u MjVmM2EwYjcgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvQlVJTEQuZ24KKysrKyB0 aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbgorQEAgLTYzNyw2ICs2MzcsNyBAQCBpZiAoaXNf bGludXggfHwgaXNfYW5kcm9pZCkgeworIAorICAgICBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0 IikgeworICAgICAgICAgZGVmaW5lcyA9IFsgIkhBVkVfR0VUQ09OVEVYVCIgXQorKyAgICAgICAg bGlicyArPSBbICJ1Y29udGV4dCIgXQorICAgICB9IGVsc2UgeworICAgICAgICAgc291cmNlcyAr PSBbCisgICAgICAgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvYnJlYWtwYWRfZ2V0 Y29udGV4dC5TIgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYyB0aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90 aHJlYWRfaW5mby5jYworaW5kZXggMDNhZmVjN2EuLjAyNjRlY2YxIDEwMDY0NAorLS0tIHRoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3RocmVhZF9pbmZvLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKK0BAIC0yNzMs NiArMjczLDkgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BV KiBvdXQpIGNvbnN0IHsKKyAKKyAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgCisrI2lu Y2x1ZGUgPGFzbS9lbGYuaD4KKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKworIHVpbnRwdHJf dCBUaHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7CisgICAgIHJldHVy biBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07CisgfQorQEAgLTI5MCw5ICsyOTMsOSBAQCB2b2lk IFRocmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCkgY29uc3Qgewor ICAgICBvdXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKyAgICAgCisgICAgIGZv ciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKysp CistICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tp XTsKKysgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJm1j b250ZXh0LmZwX3JlZ3MpW2ldOworIAorLSAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSBtY29u dGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKKysgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gKCh1 aW50NjRfdCAqKSZtY29udGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOworIAorICAgICBmb3Ig KGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorICAg ICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0gXAorZGlmZiAtLWdpdCB0aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1v bi91Y29udGV4dF9yZWFkZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitpbmRleCAx MDkwNDcwZi4uZTU4MDIzM2QgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNj CisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1w X3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitAQCAtMjU3LDYgKzI1Nyw5IEBAIHZv aWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUgKm91dCwgY29u c3QgdWNvbnRleHRfdCAqdWMpIHsKKyAKKyAjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg CisrI2luY2x1ZGUgPGFzbS9lbGYuaD4KKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKworIHVp bnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2ludGVyKGNvbnN0IHVjb250ZXh0X3Qq IHVjKSB7CisgICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQ QzY0X1JFR19TUF07CisgfQorQEAgLTI4MCw5ICsyODMsOSBAQCB2b2lkIFVDb250ZXh0UmVhZGVy OjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250ZXh0X3QqIHVj LAorICAgICBvdXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl07CisgICAg IAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9D T1VOVDsgaSsrKQorLSAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IHVjLT51Y19t Y29udGV4dC5mcF9yZWdzW2ldOworKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9 ICgodWludDY0X3QgKikmdWMtPnVjX21jb250ZXh0LmZwX3JlZ3MpW2ldOworIAorLSAgICBvdXQt PmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07Cisr ICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHNjciA9ICgodWludDY0X3QgKikmdWMtPnVjX21jb250ZXh0 LmZwX3JlZ3MpW0VMRl9ORlBSRUctMV07CisgCisgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURf VkVDVE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCisgICAgICAgICBvdXQtPnZlY3Rvcl9z YXZlLnNhdmVfdnJbaV0gPQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MgdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyLmNjCitpbmRleCA1YTdhYjUwYy4uZWU4Yjg1OGMgMTAwNjQ0CistLS0gdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtMTA1LDYgKzEwNSwxMSBAQAor ICNkZWZpbmUgUFJfU0VUX1BUUkFDRVIgMHg1OTYxNmQ2MQorICNlbmRpZgorIAorKy8qIG11c2wg aGFjaywgY2FuJ3QgaW5jbHVkZSBhc20vcHRyYWNlLmggYXMgdGhhdCBjYXVzZXMgY29uZmxpY3Rz ICovCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgIWRlZmluZWQoUFRfTklQKQorKyNk ZWZpbmUgUFRfTklQIDMyCisrI2VuZGlmCisrCisgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7 CisgCisgbmFtZXNwYWNlIHsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCitpbmRleCA4ZTMzNWEwOS4u YjJhMGYxNTUgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNo b3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAorKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKK0BAIC00NjksNyArNDY5LDcgQEAg c3RydWN0IE1Db250ZXh0NjQgeworICAgU2lnbmFsVGhyZWFkQ29udGV4dDY0IGdwX3JlZ3M7Cisg ICBTaWduYWxGbG9hdENvbnRleHQ2NCAgZnBfcmVnczsKKyAgIFNpZ25hbFZlY3RvckNvbnRleHQ2 NCAqdl9yZWdzOworLSAgaW50NjRfdCB2bXhfcmVzZXJ2ZVs2OV07CisrICBpbnQ2NF90IHZteF9y ZXNlcnZlWzEwMV07CisgfTsKKyAKKyBzdHJ1Y3QgQ29udGV4dFRyYWl0czY0IDogcHVibGljIFRy YWl0czY0IHsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9s aW51eC90aHJlYWRfaW5mby5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGlu dXgvdGhyZWFkX2luZm8uaAoraW5kZXggZGVhMGQxZjMuLmIyMDNlNWIyIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAorKysr IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAor QEAgLTMwLDYgKzMwLDcgQEAKKyAKKyAjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisgI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgorKyNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Cisg I2VuZGlmCisgCisgbmFtZXNwYWNlIGNyYXNocGFkIHsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkv bHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIHRoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxs X3N1cHBvcnQuaAoraW5kZXggOTk1NWNlNDQuLjRjMWNjNDg4IDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIHRoaXJkX3BhcnR5L2xzcy9saW51 eF9zeXNjYWxsX3N1cHBvcnQuaAorQEAgLTQyMTYsOSArNDIxNiwxMyBAQCBzdHJ1Y3Qga2VybmVs X3N0YXRmcyB7CisgICAgIH0KKyAgICNlbmRpZgorICAgI2lmIGRlZmluZWQoX19OUl9mc3RhdGF0 NjQpCisrICAgIC8vIG11c2wgZG9lcyAjZGVmaW5lIGZzdGF0YXQ2NCBmc3RhdGF0CisrICAgICN1 bmRlZiBmc3RhdGF0NjQKKyAgICAgTFNTX0lOTElORSBfc3lzY2FsbDQoaW50LCAgIGZzdGF0YXQ2 NCwgICAgICAgIGludCwgICBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy ICosICAgICAgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGtlcm5lbF9zdGF0 NjQgKiwgICBiLCAgICBpbnQsICAgZikKKysgICAgLy8gc2V0IGl0IGJhY2sgbGlrZSBpdCB3YXMK KysgICAgI2RlZmluZSBmc3RhdGF0NjQgZnN0YXRhdAorICAgI2VuZGlmCisgICAjaWYgZGVmaW5l ZChfX05SX3dhaXRwaWQpCisgICAgIC8vIHdhaXRwaWQgaXMgcG9seWZpbGxlZCBiZWxvdyB3aGVu IG5vdCBhdmFpbGFibGUuCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVz bC1wYXRjaGVzL2Nocm9taXVtLW5vLW1hbGxpbmZvLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEz L2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1uby1tYWxsaW5mby5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjI1NGExZjYzMmRhNQotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbm8t bWFsbGluZm8ucGF0Y2gKQEAgLTAsMCArMSw1NCBAQAorLS0tIGJhc2UvdHJhY2VfZXZlbnQvbWFs bG9jX2R1bXBfcHJvdmlkZXIuY2Mub3JpZworKysrIGJhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1 bXBfcHJvdmlkZXIuY2MKK0BAIC0yNDMsNyArMjQzLDcgQEAKKyAgIGFsbG9jYXRlZF9vYmplY3Rz X2NvdW50ID0gbWFpbl9oZWFwX2luZm8uYmxvY2tfY291bnQ7CisgI2VsaWYgZGVmaW5lZChPU19G VUNIU0lBKQorIC8vIFRPRE8oZnVjaHNpYSk6IFBvcnQsIHNlZSBodHRwczovL2NyYnVnLmNvbS83 MDY1OTIuCistI2Vsc2UKKysjZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHN0cnVjdCBtYWxs aW5mbyBpbmZvID0gbWFsbGluZm8oKTsKKyAgIERDSEVDS19HRShpbmZvLmFyZW5hICsgaW5mby5o YmxraGQsIGluZm8udW9yZGJsa3MpOworIAorLS0tIGJhc2UvcHJvY2Vzcy9wcm9jZXNzX21ldHJp Y3NfcG9zaXguY2Mub3JpZwkyMDIwLTExLTE4IDIzOjUwOjMzLjk1ODIyMzQ5NyAtMDUwMAorKysr IGJhc2UvcHJvY2Vzcy9wcm9jZXNzX21ldHJpY3NfcG9zaXguY2MJMjAyMC0xMS0xOCAyMzo1Mzo1 Mi4wMjQ1ODkzMTYgLTA1MDAKK0BAIC0xMTksMTQgKzExOSwxNCBAQAorICAgbWFsbG9jX3N0YXRp c3RpY3NfdCBzdGF0cyA9IHswfTsKKyAgIG1hbGxvY196b25lX3N0YXRpc3RpY3MobnVsbHB0ciwg JnN0YXRzKTsKKyAgIHJldHVybiBzdGF0cy5zaXplX2luX3VzZTsKKy0jZWxpZiBkZWZpbmVkKE9T X0xJTlVYKSB8fCBkZWZpbmVkKE9TX0NIUk9NRU9TKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpCisr I2VsaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmluZWQoT1NfQ0hST01FT1MpIHx8IGRlZmlu ZWQoT1NfQU5EUk9JRCkKKyAgIHN0cnVjdCBtYWxsaW5mbyBtaW5mbyA9IG1hbGxpbmZvKCk7Cisg I2lmIEJVSUxERkxBRyhVU0VfVENNQUxMT0MpCisgICByZXR1cm4gbWluZm8udW9yZGJsa3M7Cisg I2Vsc2UKKyAgIHJldHVybiBtaW5mby5oYmxraGQgKyBtaW5mby5hcmVuYTsKKyAjZW5kaWYKKy0j ZWxpZiBkZWZpbmVkKE9TX0ZVQ0hTSUEpCisrI2Vsc2UKKyAgIC8vIFRPRE8oZnVjaHNpYSk6IE5v dCBjdXJyZW50bHkgZXhwb3NlZC4gaHR0cHM6Ly9jcmJ1Zy5jb20vNzM1MDg3LgorICAgcmV0dXJu IDA7CisgI2VuZGlmCistLS0gdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2 bS1zdWJ6ZXJvL2xpYi9TdXBwb3J0L1VuaXgvUHJvY2Vzcy5pbmMKKysrKyB0aGlyZF9wYXJ0eS9z d2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLXN1Ynplcm8vbGliL1N1cHBvcnQvVW5peC9Qcm9j ZXNzLmluYy5vcmlnCitAQCAtODQsNyArODQsNyBAQAorIH0KKyAKKyBzaXplX3QgUHJvY2Vzczo6 R2V0TWFsbG9jVXNhZ2UoKSB7CistI2lmIGRlZmluZWQoSEFWRV9NQUxMSU5GTykKKysjaWYgZGVm aW5lZChIQVZFX01BTExJTkZPKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHN0cnVjdCBtYWxs aW5mbyBtaTsKKyAgIG1pID0gOjptYWxsaW5mbygpOworICAgcmV0dXJuIG1pLnVvcmRibGtzOwor CistLS0gdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS0xMC4wL2NvbmZp Z3MvbGludXgvaW5jbHVkZS9sbHZtL0NvbmZpZy9jb25maWcuaC5vcmlnCTIwMTktMDktMzAgMTM6 MDM6NDIuNTU2ODgwNTM3IC0wNDAwCisrKysgdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRf cGFydHkvbGx2bS0xMC4wL2NvbmZpZ3MvbGludXgvaW5jbHVkZS9sbHZtL0NvbmZpZy9jb25maWcu aAkyMDE5LTA5LTMwIDEzOjA3OjI3Ljk4OTgyMTIyNyAtMDQwMAorQEAgLTEyMiw3ICsxMjIsOSBA QAorIC8qICN1bmRlZiBIQVZFX01BTExDVEwgKi8KKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3Ug aGF2ZSB0aGUgYG1hbGxpbmZvJyBmdW5jdGlvbi4gKi8KKysjaWYgZGVmaW5lZChfX0dMSUJDX18p CisgI2RlZmluZSBIQVZFX01BTExJTkZPIDEKKysjZW5kaWYKKyAKKyAvKiBEZWZpbmUgdG8gMSBp ZiB5b3UgaGF2ZSB0aGUgPG1hbGxvYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjZGVmaW5lIEhBVkVf TUFMTE9DX0ggMQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL211c2wtcGF0 Y2hlcy9jaHJvbWl1bS1yZXNvbHZlci5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9t dXNsLXBhdGNoZXMvY2hyb21pdW0tcmVzb2x2ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4yOWZlMmQyZjFmM2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2VsZWN0cm9uMTMvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLXJlc29sdmVyLnBhdGNo CkBAIC0wLDAgKzEsMzggQEAKKy0tLSBuZXQvZG5zL2hvc3RfcmVzb2x2ZXJfbWFuYWdlci5jYy5v cmlnCTIwMjAtMTAtMDkgMTY6Mzk6MTIuMDY0MDY5ODM1IC0wNDAwCisrKysgbmV0L2Rucy9ob3N0 X3Jlc29sdmVyX21hbmFnZXIuY2MJMjAyMC0xMC0wOSAxNjo0Mjo0OS43MzgzMDI3NzIgLTA0MDAK K0BAIC0yNzc5LDggKzI3NzksNyBAQAorICAgTmV0d29ya0NoYW5nZU5vdGlmaWVyOjpBZGRDb25u ZWN0aW9uVHlwZU9ic2VydmVyKHRoaXMpOworICAgaWYgKHN5c3RlbV9kbnNfY29uZmlnX25vdGlm aWVyXykKKyAgICAgc3lzdGVtX2Ruc19jb25maWdfbm90aWZpZXJfLT5BZGRPYnNlcnZlcih0aGlz KTsKKy0jaWYgZGVmaW5lZChPU19QT1NJWCkgJiYgIWRlZmluZWQoT1NfQVBQTEUpICYmICFkZWZp bmVkKE9TX09QRU5CU0QpICYmIFwKKy0gICAgIWRlZmluZWQoT1NfQU5EUk9JRCkKKysjaWYgZGVm aW5lZChfX0dMSUJDX18pCisgICBFbnN1cmVEbnNSZWxvYWRlckluaXQoKTsKKyAjZW5kaWYKKyAK Ky0tLSBuZXQvZG5zL2Ruc19yZWxvYWRlci5jYy5vcmlnCTIwMjAtMTAtMDkgMTY6Mzk6MTIuMDY0 MDY5ODM1IC0wNDAwCisrKysgbmV0L2Rucy9kbnNfcmVsb2FkZXIuY2MJMjAyMC0xMC0wOSAxNjo0 NDozMC40NDI0MTk4MjMgLTA0MDAKK0BAIC00LDkgKzQsOCBAQAorIAorICNpbmNsdWRlICJuZXQv ZG5zL2Ruc19yZWxvYWRlci5oIgorIAorLSNpZiBkZWZpbmVkKE9TX1BPU0lYKSAmJiAhZGVmaW5l ZChPU19BUFBMRSkgJiYgIWRlZmluZWQoT1NfT1BFTkJTRCkgJiYgXAorLSAgICAhZGVmaW5lZChP U19BTkRST0lEKSAmJiAhZGVmaW5lZChPU19GVUNIU0lBKQorLQorKyNpZiBkZWZpbmVkKF9fR0xJ QkNfXykKKysgCisgI2luY2x1ZGUgPHJlc29sdi5oPgorIAorICNpbmNsdWRlICJiYXNlL2xhenlf aW5zdGFuY2UuaCIKKy0tLSBuZXQvZG5zL2hvc3RfcmVzb2x2ZXJfcHJvYy5jYy5vcmlnCTIwMjAt MTAtMDkgMTY6Mzk6MTIuMDY1MDY5ODM2IC0wNDAwCisrKysgbmV0L2Rucy9ob3N0X3Jlc29sdmVy X3Byb2MuY2MJMjAyMC0xMC0wOSAxNjo0NTowOS42NDE0NjY2NDQgLTA0MDAKK0BAIC0xNTksOCAr MTU5LDcgQEAKKyAgIGJhc2U6OlNjb3BlZEJsb2NraW5nQ2FsbCBzY29wZWRfYmxvY2tpbmdfY2Fs bChGUk9NX0hFUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYmFzZTo6QmxvY2tpbmdUeXBlOjpXSUxMX0JMT0NLKTsKKyAKKy0jaWYgZGVmaW5lZChP U19QT1NJWCkgJiYgIWRlZmluZWQoT1NfQVBQTEUpICYmICFkZWZpbmVkKE9TX09QRU5CU0QpICYm IFwKKy0gICAgIWRlZmluZWQoT1NfQU5EUk9JRCkgJiYgIWRlZmluZWQoT1NfRlVDSFNJQSkKKysj aWYgZGVmaW5lZChfX0dMSUJDX18pCisgICBEbnNSZWxvYWRlck1heWJlUmVsb2FkKCk7CisgI2Vu ZGlmCisgICBiYXNlOjpPcHRpb25hbDxBZGRyZXNzSW5mbz4gYWk7CmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OC1nbGliYy0yLjMzLnBhdGNo IGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODgtZ2xpYmMtMi4z My5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjY0MzA2ZDVl NDI5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVz L2Nocm9taXVtLTg4LWdsaWJjLTIuMzMucGF0Y2gKQEAgLTAsMCArMSwxNDQgQEAKKyMgUGF0Y2gg bWFkZSBieSBLZXZpbiBLb2ZsZXIgPEtldmluQHRpZ2NjLnRpY2FsYy5vcmc+CisjIGh0dHBzOi8v YnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTkwNDY1MgorCitkaWZmIC11cCBj aHJvbWl1bS04OC4wLjQzMjQuOTYvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jh c2VsaW5lX3BvbGljeS5jYy5mc3RhdGZpeCBjaHJvbWl1bS04OC4wLjQzMjQuOTYvc2FuZGJveC9s aW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYworLS0tIHNhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MuZnN0YXRmaXgJMjAy MS0wMS0yNSAxMDoxMTo0NS40Mjc0MzYzOTggLTA1MDAKKysrKyBzYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCTIwMjEtMDEtMjUgMTA6MTI6NTEuMzM3 Njk5MDAzIC0wNTAwCitAQCAtMjU3LDYgKzI1NywxOCBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lz Y2FsbEltcGwoaW50IGZzX2RlCisgICAgIHJldHVybiBSZXN0cmljdEtpbGxUYXJnZXQoY3VycmVu dF9waWQsIHN5c25vKTsKKyAgIH0KKyAKKysjaWYgZGVmaW5lZChfX05SX25ld2ZzdGF0YXQpCisr ICBpZiAoc3lzbm8gPT0gX19OUl9uZXdmc3RhdGF0KSB7CisrICAgIHJldHVybiBSZXdyaXRlRnN0 YXRhdFNJR1NZUygpOworKyAgfQorKyNlbmRpZgorKworKyNpZiBkZWZpbmVkKF9fTlJfZnN0YXRh dDY0KQorKyAgaWYgKHN5c25vID09IF9fTlJfZnN0YXRhdDY0KSB7CisrICAgIHJldHVybiBSZXdy aXRlRnN0YXRhdFNJR1NZUygpOworKyAgfQorKyNlbmRpZgorKworICAgaWYgKFN5c2NhbGxTZXRz OjpJc0ZpbGVTeXN0ZW0oc3lzbm8pIHx8CisgICAgICAgU3lzY2FsbFNldHM6OklzQ3VycmVudERp cmVjdG9yeShzeXNubykpIHsKKyAgICAgcmV0dXJuIEVycm9yKGZzX2RlbmllZF9lcnJubyk7Citk aWZmIC11cCBjaHJvbWl1bS04OC4wLjQzMjQuOTYvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1o ZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5jYy5mc3RhdGZpeCBjaHJvbWl1bS04OC4wLjQzMjQuOTYv c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5jYworLS0t IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuY2MuZnN0 YXRmaXgJMjAyMS0wMS0yNSAxMDoxMzoxMC4xNzk3NzQwODEgLTA1MDAKKysrKyBzYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2lnc3lzX2hhbmRsZXJzLmNjCTIwMjEtMDEtMjUgMTA6 MTY6MTguNzkwNTI1NzQ2IC0wNTAwCitAQCAtNiw2ICs2LDggQEAKKyAKKyAjaW5jbHVkZSAic2Fu ZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5oIgorIAorKyNp bmNsdWRlIDxlcnJuby5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDxzdGRkZWYu aD4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorQEAgLTM1NSw2 ICszNTcsMzUgQEAgaW50cHRyX3QgU0lHU1lTU2NoZWRIYW5kbGVyKGNvbnN0IHN0cnVjdAorICAg cmV0dXJuIC1FTk9TWVM7CisgfQorIAorK2ludHB0cl90IFNJR1NZU0ZzdGF0YXRIYW5kbGVyKGNv bnN0IHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSYgYXJncywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2b2lkKiBhdXgpIHsKKysgIHN3aXRjaCAoYXJncy5ucikgeworKyNpZiBkZWZp bmVkKF9fTlJfbmV3ZnN0YXRhdCkKKysgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6CisrI2VuZGlm CisrI2lmIGRlZmluZWQoX19OUl9mc3RhdGF0NjQpCisrICAgIGNhc2UgX19OUl9mc3RhdGF0NjQ6 CisrI2VuZGlmCisrI2lmIGRlZmluZWQoX19OUl9uZXdmc3RhdGF0KSB8fCBkZWZpbmVkKF9fTlJf ZnN0YXRhdDY0KQorKyAgICAgIGlmICgqcmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyICo+KGFy Z3MuYXJnc1sxXSkgPT0gJ1wwJworKyAgICAgICAgICAmJiBhcmdzLmFyZ3NbM10gPT0gc3RhdGlj X2Nhc3Q8dWludDY0X3Q+KEFUX0VNUFRZX1BBVEgpKSB7CisrICAgICAgICByZXR1cm4gc2FuZGJv eDo6c3lzX2ZzdGF0NjQoc3RhdGljX2Nhc3Q8aW50PihhcmdzLmFyZ3NbMF0pLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8c3RydWN0IHN0YXQ2 NCAqPihhcmdzLmFyZ3NbMl0pKTsKKysgICAgICB9IGVsc2UgeworKyAgICAgICAgZXJybm8gPSBF QUNDRVM7CisrICAgICAgICByZXR1cm4gLTE7CisrICAgICAgfQorKyAgICAgIGJyZWFrOworKyNl bmRpZgorKyAgfQorKworKyAgQ3Jhc2hTSUdTWVNfSGFuZGxlcihhcmdzLCBhdXgpOworKworKyAg Ly8gU2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQuCisrICBSQVdfQ0hFQ0soZmFsc2UpOworKyAgcmV0 dXJuIC1FTk9TWVM7CisrfQorKworIGJwZl9kc2w6OlJlc3VsdEV4cHIgQ3Jhc2hTSUdTWVMoKSB7 CisgICByZXR1cm4gYnBmX2RzbDo6VHJhcChDcmFzaFNJR1NZU19IYW5kbGVyLCBOVUxMKTsKKyB9 CitAQCAtMzg3LDYgKzQxOCwxMCBAQCBicGZfZHNsOjpSZXN1bHRFeHByIFJld3JpdGVTY2hlZFNJ R1NZUygpCisgICByZXR1cm4gYnBmX2RzbDo6VHJhcChTSUdTWVNTY2hlZEhhbmRsZXIsIE5VTEwp OworIH0KKyAKKyticGZfZHNsOjpSZXN1bHRFeHByIFJld3JpdGVGc3RhdGF0U0lHU1lTKCkgewor KyAgcmV0dXJuIGJwZl9kc2w6OlRyYXAoU0lHU1lTRnN0YXRhdEhhbmRsZXIsIE5VTEwpOworK30K KysKKyB2b2lkIEFsbG9jYXRlQ3Jhc2hLZXlzKCkgeworICNpZiAhZGVmaW5lZChPU19OQUNMX05P TlNGSSkKKyAgIGlmIChzZWNjb21wX2NyYXNoX2tleSkKK2RpZmYgLXVwIGNocm9taXVtLTg4LjAu NDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2lnc3lzX2hhbmRsZXJz LmguZnN0YXRmaXggY2hyb21pdW0tODguMC40MzI0Ljk2L3NhbmRib3gvbGludXgvc2VjY29tcC1i cGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuaAorLS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1i cGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuaC5mc3RhdGZpeAkyMDIxLTAxLTI1IDEwOjE2OjM2 Ljk4MjU5ODIzNiAtMDUwMAorKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9z aWdzeXNfaGFuZGxlcnMuaAkyMDIxLTAxLTI1IDEwOjE4OjQ1LjcwNTExMTAyNyAtMDUwMAorQEAg LTYyLDYgKzYyLDEwIEBAIFNBTkRCT1hfRVhQT1JUIGludHB0cl90IFNJR1NZU1B0cmFjZUZhaWwK KyAvLyBzY2hlZF9zZXRwYXJhbSgpLCBzY2hlZF9zZXRzY2hlZHVsZXIoKQorIFNBTkRCT1hfRVhQ T1JUIGludHB0cl90IFNJR1NZU1NjaGVkSGFuZGxlcihjb25zdCBhcmNoX3NlY2NvbXBfZGF0YSYg YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCog YXV4KTsKKysvLyBJZiB0aGUgZnN0YXRhdCBzeXNjYWxsIGlzIGFjdHVhbGx5IGEgZGlzZ3Vpc2Vk IGZzdGF0LCBjYWxscyB0aGUgcmVndWxhciBmc3RhdAorKy8vIHN5c2NhbGwsIG90aGVyd2lzZSwg Y3Jhc2hlcyBpbiB0aGUgc2FtZSB3YXkgYXMgQ3Jhc2hTSUdTWVNfSGFuZGxlci4KKytTQU5EQk9Y X0VYUE9SVCBpbnRwdHJfdCBTSUdTWVNGc3RhdGF0SGFuZGxlcihjb25zdCBzdHJ1Y3QgYXJjaF9z ZWNjb21wX2RhdGEmIGFyZ3MsIAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQqIGF1eCk7CisgCisgLy8gVmFyaWFudHMgb2YgdGhlIGFib3ZlIGZ1bmN0 aW9ucyBmb3IgdXNlIHdpdGggYnBmX2RzbC4KKyBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1 bHRFeHByIENyYXNoU0lHU1lTKCk7CitAQCAtNzIsNiArNzYsNyBAQCBTQU5EQk9YX0VYUE9SVCBi cGZfZHNsOjpSZXN1bHRFeHByIENyYXNoCisgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0 RXhwciBDcmFzaFNJR1NZU0Z1dGV4KCk7CisgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0 RXhwciBDcmFzaFNJR1NZU1B0cmFjZSgpOworIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3Vs dEV4cHIgUmV3cml0ZVNjaGVkU0lHU1lTKCk7CisrU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVz dWx0RXhwciBSZXdyaXRlRnN0YXRhdFNJR1NZUygpOworIAorIC8vIEFsbG9jYXRlcyBhIGNyYXNo IGtleSBzbyB0aGF0IFNlY2NvbXAgaW5mb3JtYXRpb24gY2FuIGJlIHJlY29yZGVkLgorIHZvaWQg QWxsb2NhdGVDcmFzaEtleXMoKTsKK2RpZmYgLXVwIGNocm9taXVtLTg4LjAuNDMyNC45Ni9zYW5k Ym94L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuY2MuZnN0YXRmaXggY2hyb21pdW0t ODguMC40MzI0Ljk2L3NhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5jYwor LS0tIHNhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5jYy5mc3RhdGZpeAky MDIxLTAxLTI1IDEwOjE4OjUzLjMwNzE0MTMxMSAtMDUwMAorKysrIHNhbmRib3gvbGludXgvc2Vy dmljZXMvc3lzY2FsbF93cmFwcGVycy5jYwkyMDIxLTAxLTI1IDEwOjE5OjQ2Ljk4MjM1NTI5MyAt MDUwMAorQEAgLTI2MSw0ICsyNjEsMTMgQEAgaW50IHN5c19zaWdhY3Rpb24oaW50IHNpZ251bSwK KyAKKyAjZW5kaWYgIC8vIGRlZmluZWQoTUVNT1JZX1NBTklUSVpFUikKKyAKKytTQU5EQk9YX0VY UE9SVCBpbnQgc3lzX2ZzdGF0NjQoaW50IGZkLCBzdHJ1Y3Qgc3RhdDY0ICpidWYpCisreworKyNp ZiBkZWZpbmVkKF9fTlJfZnN0YXQ2NCkKKysgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9mc3RhdDY0 LCBmZCwgYnVmKTsKKysjZWxzZQorKyAgICByZXR1cm4gc3lzY2FsbChfX05SX2ZzdGF0LCBmZCwg YnVmKTsKKysjZW5kaWYKKyt9CisrCisgfSAgLy8gbmFtZXNwYWNlIHNhbmRib3gKK2RpZmYgLXVw IGNocm9taXVtLTg4LjAuNDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3Jh cHBlcnMuaC5mc3RhdGZpeCBjaHJvbWl1bS04OC4wLjQzMjQuOTYvc2FuZGJveC9saW51eC9zZXJ2 aWNlcy9zeXNjYWxsX3dyYXBwZXJzLmgKKy0tLSBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL3N5c2Nh bGxfd3JhcHBlcnMuaC5mc3RhdGZpeAkyMDIxLTAxLTI1IDEwOjE5OjUzLjExNTM3OTc0MSAtMDUw MAorKysrIHNhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5oCTIwMjEtMDEt MjUgMTA6MjA6NDUuNDg1NTg4NDIxIC0wNTAwCitAQCAtMTcsNiArMTcsNyBAQCBzdHJ1Y3Qgc29j a19mcHJvZzsKKyBzdHJ1Y3QgcmxpbWl0NjQ7Cisgc3RydWN0IGNhcF9oZHI7Cisgc3RydWN0IGNh cF9kYXRhOworK3N0cnVjdCBzdGF0NjQ7CisgCisgbmFtZXNwYWNlIHNhbmRib3ggeworIAorQEAg LTg0LDYgKzg1LDkgQEAgU0FOREJPWF9FWFBPUlQgaW50IHN5c19zaWdhY3Rpb24oaW50IHNpZwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCBzaWdhY3Rpb24q IGFjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2lnYWN0aW9u KiBvbGRhY3QpOworIAorKy8vIFJlY2VudCBnbGliYyByZXdyaXRlcyBmc3RhdCB0byBmc3RhdGF0 LgorK1NBTkRCT1hfRVhQT1JUIGludCBzeXNfZnN0YXQ2NChpbnQgZmQsIHN0cnVjdCBzdGF0NjQg KmJ1Zik7CisrCisgfSAgLy8gbmFtZXNwYWNlIHNhbmRib3gKKyAKKyAjZW5kaWYgIC8vIFNBTkRC T1hfTElOVVhfU0VSVklDRVNfU1lTQ0FMTF9XUkFQUEVSU19IXwpkaWZmIC0tZ2l0IGEvc3JjcGtn cy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tYnJvd3Nlci1zaXplX3QucGF0Y2gg Yi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1icm93c2VyLXNpemVf dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZhMjE0ZDk4 N2Q2MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVz L2Nocm9taXVtLWJyb3dzZXItc2l6ZV90LnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBjaHJv bWUvYnJvd3Nlci9zZWFyY2gvYmFja2dyb3VuZC9udHBfYmFja2dyb3VuZHMuaAkyMDIwLTA4LTEw IDIwOjM5OjIwLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9tZS9icm93c2VyL3NlYXJjaC9iYWNr Z3JvdW5kL250cF9iYWNrZ3JvdW5kcy5oCTIwMjAtMDktMDQgMTM6NDg6MjIuNjQwMDIzMjU2ICsw MjAwCitAQCAtNiw2ICs2LDcgQEAKKyAjZGVmaW5lIENIUk9NRV9CUk9XU0VSX1NFQVJDSF9CQUNL R1JPVU5EX05UUF9CQUNLR1JPVU5EU19IXworIAorICNpbmNsdWRlIDxhcnJheT4KKysjaW5jbHVk ZSA8Y3N0ZGRlZj4KKyAKKyBjbGFzcyBHVVJMOworIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbGliY19tYWxsb2MucGF0Y2ggYi9zcmNwa2dz L2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVkYTExZWM4NjYzNwotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWxp YmNfbWFsbG9jLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKKy0tLSBiYXNlL3Byb2Nlc3MvbWVtb3J5 X2xpbnV4LmNjLm9yaWcJMjAxNy0wOS0xNSAwODo0MTo0My4wMDAwMDAwMDAgKzAwMDAKKysrKyBi YXNlL3Byb2Nlc3MvbWVtb3J5X2xpbnV4LmNjCTIwMTctMDktMTUgMDg6NDQ6MzkuODA0OTk1NDY5 ICswMDAwCitAQCAtMjEsNiArMjEsMTIgQEAKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvdGNtYWxs b2MvY2hyb21pdW0vc3JjL2dwZXJmdG9vbHMvdGNtYWxsb2MuaCIKKyAjZW5kaWYKKyAKKysjaWYg ZGVmaW5lZChMSUJDX0dMSUJDKQorK2V4dGVybiAiQyIgeworK2V4dGVybiB2b2lkICpfX2xpYmNf bWFsbG9jKHNpemVfdCBzaXplKTsKKyt9CisrI2VuZGlmCisrCisgbmFtZXNwYWNlIGJhc2Ugewor IAorIHNpemVfdCBnX29vbV9zaXplID0gMFU7CistLS0gYmFzZS9wcm9jZXNzL21lbW9yeV9saW51 eC5jYy5vcmlnCTIwMjAtMDgtMzAgMTQ6MTg6MzUuNDAxMTMyNTkzIC0wNDAwCisrKysgYmFzZS9w cm9jZXNzL21lbW9yeV9saW51eC5jYwkyMDIwLTA4LTMwIDE0OjE5OjA4LjAzMDE5OTE4OSAtMDQw MAorQEAgLTE0MSw3ICsxNDEsNyBAQAorICAgICAoIWRlZmluZWQoTElCQ19HTElCQykgJiYgIUJV SUxERkxBRyhVU0VfVENNQUxMT0MpKQorICAgKnJlc3VsdCA9IG1hbGxvYyhzaXplKTsKKyAjZWxp ZiBkZWZpbmVkKExJQkNfR0xJQkMpICYmICFCVUlMREZMQUcoVVNFX1RDTUFMTE9DKQorLSAgKnJl c3VsdCA9IF9fbGliY19tYWxsb2Moc2l6ZSk7CisrICAqcmVzdWx0ID0gOjpfX2xpYmNfbWFsbG9j KHNpemUpOworICNlbGlmIEJVSUxERkxBRyhVU0VfVENNQUxMT0MpCisgICAqcmVzdWx0ID0gdGNf bWFsbG9jX3NraXBfbmV3X2hhbmRsZXIoc2l6ZSk7CisgI2VuZGlmCmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXY4LW1vbm90b25pYy1w dGhyZWFkLWNvbnRfdGltZWR3YWl0LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0tbXVzbC12OC1tb25vdG9uaWMtcHRocmVhZC1jb250X3RpbWVkd2FpdC5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjMzYThlYTMyYzlj MQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2No cm9taXVtLW11c2wtdjgtbW9ub3RvbmljLXB0aHJlYWQtY29udF90aW1lZHdhaXQucGF0Y2gKQEAg LTAsMCArMSwyNCBAQAorVXNlIG1vbm90b25pYyBjbG9jayBmb3IgcHRocmVhZF9jb25kX3RpbWVk d2FpdCB3aXRoIG11c2wgdG9vLgorCitkaWZmIC0tZ2l0IGEvdjgvc3JjL2Jhc2UvcGxhdGZvcm0v Y29uZGl0aW9uLXZhcmlhYmxlLmNjIGIvdjgvc3JjL2Jhc2UvcGxhdGZvcm0vY29uZGl0aW9uLXZh cmlhYmxlLmNjCitpbmRleCA1ZWE3MDgzLi5jMTMwMjdlIDEwMDY0NAorLS0tIC4vdjgvc3JjL2Jh c2UvcGxhdGZvcm0vY29uZGl0aW9uLXZhcmlhYmxlLmNjCisrKysgLi92OC9zcmMvYmFzZS9wbGF0 Zm9ybS9jb25kaXRpb24tdmFyaWFibGUuY2MKK0BAIC0xNiw3ICsxNiw3IEBAIG5hbWVzcGFjZSBi YXNlIHsKKyAKKyBDb25kaXRpb25WYXJpYWJsZTo6Q29uZGl0aW9uVmFyaWFibGUoKSB7CisgI2lm IChWOF9PU19GUkVFQlNEIHx8IFY4X09TX05FVEJTRCB8fCBWOF9PU19PUEVOQlNEIHx8IFwKKy0g ICAgIChWOF9PU19MSU5VWCAmJiBWOF9MSUJDX0dMSUJDKSkKKysgICAgIFY4X09TX0xJTlVYKQor ICAgLy8gT24gRnJlZS9OZXQvT3BlbkJTRCBhbmQgTGludXggd2l0aCBnbGliYyB3ZSBjYW4gY2hh bmdlIHRoZSB0aW1lCisgICAvLyBzb3VyY2UgZm9yIHB0aHJlYWRfY29uZF90aW1lZHdhaXQoKSB0 byB1c2UgdGhlIG1vbm90b25pYyBjbG9jay4KKyAgIHB0aHJlYWRfY29uZGF0dHJfdCBhdHRyOwor QEAgLTkyLDcgKzkyLDcgQEAgYm9vbCBDb25kaXRpb25WYXJpYWJsZTo6V2FpdEZvcihNdXRleCog bXV0ZXgsIGNvbnN0IFRpbWVEZWx0YSYgcmVsX3RpbWUpIHsKKyAgICAgICAmbmF0aXZlX2hhbmRs ZV8sICZtdXRleC0+bmF0aXZlX2hhbmRsZSgpLCAmdHMpOworICNlbHNlCisgI2lmIChWOF9PU19G UkVFQlNEIHx8IFY4X09TX05FVEJTRCB8fCBWOF9PU19PUEVOQlNEIHx8IFwKKy0gICAgIChWOF9P U19MSU5VWCAmJiBWOF9MSUJDX0dMSUJDKSkKKysgICAgIFY4X09TX0xJTlVYKQorICAgLy8gT24g RnJlZS9OZXQvT3BlbkJTRCBhbmQgTGludXggd2l0aCBnbGliYyB3ZSBjYW4gY2hhbmdlIHRoZSB0 aW1lCisgICAvLyBzb3VyY2UgZm9yIHB0aHJlYWRfY29uZF90aW1lZHdhaXQoKSB0byB1c2UgdGhl IG1vbm90b25pYyBjbG9jay4KKyAgIHJlc3VsdCA9IGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RP TklDLCAmdHMpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMv Y2hyb21pdW0tbm8tZXhlY2luZm8ucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS1uby1leGVjaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjM4Njk5N2U4ZWQxNAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3Mv ZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW5vLWV4ZWNpbmZvLnBhdGNoCkBAIC0w LDAgKzEsNzIgQEAKKy0tLSBiYXNlL2RlYnVnL3N0YWNrX3RyYWNlX3Bvc2l4LmNjLm9yaWcJMjAx OS0wNS0xNCAxNDo0OTo0NC4wMDAwMDAwMDAgLTA0MDAKKysrKyBiYXNlL2RlYnVnL3N0YWNrX3Ry YWNlX3Bvc2l4LmNjCTIwMTktMDctMDIgMTA6NDM6NDMuNDkwMDQ1MDEzIC0wNDAwCitAQCAtMjcs NyArMjcsNyBAQAorICNpZiAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorICNpbmNsdWRlIDxjeHhh YmkuaD4KKyAjZW5kaWYKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJ WCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisgI2luY2x1ZGUg PGV4ZWNpbmZvLmg+CisgI2VuZGlmCisgCitAQCAtODYsNyArODYsNyBAQAorICAgLy8gTm90ZTog Y29kZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIE5PVCBhc3luYy1zaWduYWwgc2FmZSAoc3RkOjpzdHJp bmcgdXNlcworICAgLy8gbWFsbG9jIGludGVybmFsbHkpLgorIAorLSNpZiAhZGVmaW5lZChfX1VD TElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRl ZmluZWQoX0FJWCkKKyAgIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgc2VhcmNoX2Zyb20gPSAwOwor ICAgd2hpbGUgKHNlYXJjaF9mcm9tIDwgdGV4dC0+c2l6ZSgpKSB7CisgICAgIC8vIExvb2sgZm9y IHRoZSBzdGFydCBvZiBhIG1hbmdsZWQgc3ltYm9sLCBmcm9tIHNlYXJjaF9mcm9tLgorQEAgLTEy MSw3ICsxMjEsNyBAQAorICAgICAgIHNlYXJjaF9mcm9tID0gbWFuZ2xlZF9zdGFydCArIDI7Cisg ICAgIH0KKyAgIH0KKy0jZW5kaWYgIC8vICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVk KF9BSVgpCisrI2VuZGlmICAvLyBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkK KyB9CisgI2VuZGlmICAvLyAhZGVmaW5lZChVU0VfU1lNQk9MSVpFKQorIAorQEAgLTEzMyw3ICsx MzMsNyBAQAorICAgdmlydHVhbCB+QmFja3RyYWNlT3V0cHV0SGFuZGxlcigpID0gZGVmYXVsdDsK KyB9OworIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNp ZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyB2b2lkIE91dHB1dFBvaW50 ZXIodm9pZCogcG9pbnRlciwgQmFja3RyYWNlT3V0cHV0SGFuZGxlciogaGFuZGxlcikgeworICAg Ly8gVGhpcyBzaG91bGQgYmUgbW9yZSB0aGFuIGVub3VnaCB0byBzdG9yZSBhIDY0LWJpdCBudW1i ZXIgaW4gaGV4OgorICAgLy8gMTYgaGV4IGRpZ2l0cyArIDEgZm9yIG51bGwtdGVybWluYXRvci4K K0BAIC0yMTYsNyArMjE2LDcgQEAKKyAgIH0KKyAjZW5kaWYgIC8vIGRlZmluZWQoVVNFX1NZTUJP TElaRSkKKyB9CistI2VuZGlmICAvLyAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChf QUlYKQorKyNlbmRpZiAgLy8gZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisg Cisgdm9pZCBQcmludFRvU3RkZXJyKGNvbnN0IGNoYXIqIG91dHB1dCkgeworICAgLy8gTk9URTog VGhpcyBjb2RlIE1VU1QgYmUgYXN5bmMtc2lnbmFsIHNhZmUgKGl0J3MgdXNlZCBieSBpbi1wcm9j ZXNzCitAQCAtODEyLDcgKzgxMiw3IEBACisgICAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBh c3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKKyAgIC8vIHN0YWNrIGR1 bXBpbmcgc2lnbmFsIGhhbmRsZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxsb3dlZCBoZXJl LgorIAorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBk ZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAgIC8vIFRob3VnaCB0aGUgYmFj a3RyYWNlIEFQSSBtYW4gcGFnZSBkb2VzIG5vdCBsaXN0IGFueSBwb3NzaWJsZSBuZWdhdGl2ZQor ICAgLy8gcmV0dXJuIHZhbHVlcywgd2UgdGFrZSBubyBjaGFuY2UuCisgICByZXR1cm4gYmFzZTo6 c2F0dXJhdGVkX2Nhc3Q8c2l6ZV90PihiYWNrdHJhY2UodHJhY2UsIGNvdW50KSk7CitAQCAtODI1 LDEzICs4MjUsMTMgQEAKKyAvLyBOT1RFOiBUaGlzIGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwg c2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MKKyAvLyBzdGFjayBkdW1waW5nIHNpZ25hbCBo YW5kbGVyKS4gTk8gbWFsbG9jIG9yIHN0ZGlvIGlzIGFsbG93ZWQgaGVyZS4KKyAKKy0jaWYgIWRl ZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpCisgICBQcmludEJhY2t0cmFjZU91dHB1dEhhbmRsZXIgaGFu ZGxlcjsKKyAgIFByb2Nlc3NCYWNrdHJhY2UodHJhY2VfLCBjb3VudF8sIHByZWZpeF9zdHJpbmcs ICZoYW5kbGVyKTsKKyAjZW5kaWYKKyB9CisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYm ICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlY KQorIHZvaWQgU3RhY2tUcmFjZTo6T3V0cHV0VG9TdHJlYW1XaXRoUHJlZml4KHN0ZDo6b3N0cmVh bSogb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciogcHJlZml4X3N0cmluZykgY29uc3QgeworICAgU3RyZWFtQmFja3RyYWNlT3V0cHV0SGFu ZGxlciBoYW5kbGVyKG9zKTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9w YXRjaGVzL2Nocm9taXVtLW5vLWdldGNvbnRleHQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRjb250ZXh0LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjJhNDk4NzM0YzkzCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZ2V0Y29udGV4 dC5wYXRjaApAQCAtMCwwICsxLDI3IEBACistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjLm9yaWcJMjAx NS0xMi0wNiAwOTo1OTo1NS41NTQ1MzY2NDYgKzAxMDAKKysrKyB0aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MJ MjAxNS0xMi0wNiAxMDowMToxNi44MTgyMzgwMzUgKzAxMDAKK0BAIC00NzcsNyArNDc3LDkgQEAg Ym9vbCBFeGNlcHRpb25IYW5kbGVyOjpTaW11bGF0ZVNpZ25hbERlbAorICAgc2lnaW5mby5zaV9j b2RlID0gU0lfVVNFUjsKKyAgIHNpZ2luZm8uc2lfcGlkID0gZ2V0cGlkKCk7CisgICB1Y29udGV4 dF90IGNvbnRleHQ7CisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorICAgZ2V0Y29udGV4dCgmY29u dGV4dCk7CisrI2VuZGlmCisgICByZXR1cm4gSGFuZGxlU2lnbmFsKHNpZywgJnNpZ2luZm8sICZj b250ZXh0KTsKKyB9CisgCitAQCAtNjQ3LDkgKzY0OSwxNCBAQCBib29sIEV4Y2VwdGlvbkhhbmRs ZXI6OldyaXRlTWluaWR1bXAoKSB7CisgICBzeXNfcHJjdGwoUFJfU0VUX0RVTVBBQkxFLCAxLCAw LCAwLCAwKTsKKyAKKyAgIENyYXNoQ29udGV4dCBjb250ZXh0OworKworKyNpZiBkZWZpbmVkKF9f R0xJQkNfXykKKyAgIGludCBnZXRjb250ZXh0X3Jlc3VsdCA9IGdldGNvbnRleHQoJmNvbnRleHQu Y29udGV4dCk7CisgICBpZiAoZ2V0Y29udGV4dF9yZXN1bHQpCisgICAgIHJldHVybiBmYWxzZTsK KysjZWxzZQorKyAgcmV0dXJuIGZhbHNlOworKyNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9faTM4 Nl9fKQorICAgLy8gSW4gQ1BVRmlsbEZyb21VQ29udGV4dCBpbiBtaW5pZHVtcHdyaXRlci5jYyB0 aGUgc3RhY2sgcG9pbnRlciBpcyByZXRyaWV2ZWQKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ry b24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXJldmVydC1kcm9wLW9mLXN5c3RlbS1qYXZhLnBh dGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tcmV2ZXJ0LWRy b3Atb2Ytc3lzdGVtLWphdmEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi42OWMxNmZjMGM0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9u MTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1yZXZlcnQtZHJvcC1vZi1zeXN0ZW0tamF2YS5wYXRj aApAQCAtMCwwICsxLDE1IEBACitUaGlzIHdhcyBkcm9wcGVkIGZvciBzb21lIHJlYXNvbiBpbiA2 OTUxYzM3Y2VjZDA1OTc5YjIzMmEzOWU1YzEwZTYzNDZhMGY3NGVmCistLS0gdGhpcmRfcGFydHkv Y2xvc3VyZV9jb21waWxlci9jb21waWxlci5weQkyMDIxLTA1LTIwIDA0OjE3OjUzLjAwMDAwMDAw MCArMDIwMAorKysrIC0JMjAyMS0wNS0yNSAyMDozMToxMC4xMDI5NzE3NjUgKzAyMDAKK0BAIC0x Myw4ICsxMyw5IEBACisgCisgCisgX0NVUlJFTlRfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGgu ZGlybmFtZShfX2ZpbGVfXykpCistX0pBVkFfUEFUSCA9IG9zLnBhdGguam9pbihfQ1VSUkVOVF9E SVIsICIuLiIsICJqZGsiLCAiY3VycmVudCIsICJiaW4iLCAiamF2YSIpCistYXNzZXJ0IG9zLnBh dGguaXNmaWxlKF9KQVZBX1BBVEgpLCAiamF2YSBvbmx5IGFsbG93ZWQgaW4gYW5kcm9pZCBidWls ZHMiCisrX0pBVkFfQklOID0gImphdmEiCisrX0pES19QQVRIID0gb3MucGF0aC5qb2luKF9DVVJS RU5UX0RJUiwgIi4uIiwgImpkayIsICJjdXJyZW50IiwgImJpbiIsICJqYXZhIikKKytfSkFWQV9Q QVRIID0gX0pES19QQVRIIGlmIG9zLnBhdGguaXNmaWxlKF9KREtfUEFUSCkgZWxzZSBfSkFWQV9C SU4KKyAKKyBjbGFzcyBDb21waWxlcihvYmplY3QpOgorICAgIiIiUnVucyB0aGUgQ2xvc3VyZSBj b21waWxlciBvbiBnaXZlbiBzb3VyY2UgZmlsZXMgdG8gdHlwZWNoZWNrIHRoZW0KZGlmZiAtLWdp dCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRib3gtbWVt YmFycmllci5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVt LXNhbmRib3gtbWVtYmFycmllci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjg2Y2ExNmZjMmQ3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ry b24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRib3gtbWVtYmFycmllci5wYXRjaApAQCAt MCwwICsxLDEwIEBACistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2Nh bGxfc2V0cy5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3NldHMuY2MKK0BAIC0zNzAsNiArMzcwLDcgQEAKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAg Y2FzZSBfX05SX2V4aXQ6CisgICAgIGNhc2UgX19OUl9leGl0X2dyb3VwOgorKyAgICBjYXNlIF9f TlJfbWVtYmFycmllcjoKKyAgICAgY2FzZSBfX05SX3dhaXQ0OgorICAgICBjYXNlIF9fTlJfd2Fp dGlkOgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJv bjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCBi L3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRib3gtc2NoZWRf Z2V0cGFyYW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5i YThhZjQ5YzVmOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoCkBAIC0wLDAgKzEs MjAgQEAKK0FsbG93IFNZU19zY2hlZF9nZXRwYXJhbSBhbmQgU1lTX3NjaGVkX2dldHNjaGVkdWxl cgorbXVzbCB1c2VzIHRoZW0gZm9yIHB0aHJlYWRfZ2V0c2NoZWRwYXJhbSgpCisKK3NvdXJjZTog aHR0cHM6Ly9naXQuYWxwaW5lbGludXgub3JnL2Fwb3J0cy9jb21taXQvY29tbXVuaXR5L2Nocm9t aXVtP2lkPTU0YWY5ZjhhYzI0ZjUyZDM4MmM1NzU4ZTI0NDViZjAyMDZlZmY0MGUKKworLS0tIHNh bmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2Mub3JpZwkyMDE5 LTEwLTA4IDIxOjAzOjE4LjI1MzA4MDQyNSArMDIwMAorKysrIHNhbmRib3gvcG9saWN5L2xpbnV4 L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MJMjAxOS0xMC0wOCAyMTowNDoxOS42NDg1NDk3 MTggKzAyMDAKK0BAIC04OCwxMCArODgsMTAgQEAKKyAgICAgY2FzZSBfX05SX3N5c2luZm86Cisg ICAgIGNhc2UgX19OUl90aW1lczoKKyAgICAgY2FzZSBfX05SX3VuYW1lOgorLSAgICAgIHJldHVy biBBbGxvdygpOworLSAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHk6CisgICAgIGNhc2Ug X19OUl9zY2hlZF9nZXRwYXJhbToKKyAgICAgY2FzZSBfX05SX3NjaGVkX2dldHNjaGVkdWxlcjoK KysgICAgICByZXR1cm4gQWxsb3coKTsKKysgICAgY2FzZSBfX05SX3NjaGVkX2dldGFmZmluaXR5 OgorICAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyOgorICAgICAgIHJldHVybiBzYW5k Ym94OjpSZXN0cmljdFNjaGVkVGFyZ2V0KEdldFBvbGljeVBpZCgpLCBzeXNubyk7CisgICAgIGNh c2UgX19OUl9wcmxpbWl0NjQ6CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1zbmRpby5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9w YXRjaGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uZDMxM2I0YTY2N2M3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVj dHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc25kaW8ucGF0Y2gKQEAgLTAsMCArMSw4ODYg QEAKK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvQlVJTEQuZ24g Y2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL0JVSUxELmduCistLS0gbWVkaWEvQlVJTEQuZ24u b3JpZwkyMDIwLTA2LTAzIDIwOjQwOjI2LjAwMDAwMDAwMCArMDIwMAorKysrIG1lZGlhL0JVSUxE LmduCTIwMjAtMDYtMTMgMTc6MzI6MjguNTEwMzk1OTc1ICswMjAwCitAQCAtNjUsNiArNjUsOSBA QAorICAgICAgIGRlZmluZXMgKz0gWyAiRExPUEVOX1BVTFNFQVVESU8iIF0KKyAgICAgfQorICAg fQorKyAgaWYgKHVzZV9zbmRpbykgeworKyAgICBkZWZpbmVzICs9IFsgIlVTRV9TTkRJTyIgXQor KyAgfQorICAgaWYgKHVzZV9jcmFzKSB7CisgICAgIGRlZmluZXMgKz0gWyAiVVNFX0NSQVMiIF0K KyAgIH0KK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvYXVkaW8v QlVJTEQuZ24gY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1ZGlvL0JVSUxELmduCistLS0g bWVkaWEvYXVkaW8vQlVJTEQuZ24ub3JpZwkyMDIwLTA2LTAzIDIwOjM5OjM3LjAwMDAwMDAwMCAr MDIwMAorKysrIG1lZGlhL2F1ZGlvL0JVSUxELmduCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1 OTY5ICswMjAwCitAQCAtMjM2LDYgKzIzNiwxNyBAQAorICAgICBzb3VyY2VzICs9IFsgImxpbnV4 L2F1ZGlvX21hbmFnZXJfbGludXguY2MiIF0KKyAgIH0KKyAKKysgIGlmICh1c2Vfc25kaW8pIHsK KysgICAgbGlicyArPSBbICJzbmRpbyIgXQorKyAgICBzb3VyY2VzICs9IFsKKysgICAgICAic25k aW8vYXVkaW9fbWFuYWdlcl9zbmRpby5jYyIsCisrICAgICAgInNuZGlvL3NuZGlvX2lucHV0LmNj IiwKKysgICAgICAic25kaW8vc25kaW9faW5wdXQuaCIsCisrICAgICAgInNuZGlvL3NuZGlvX291 dHB1dC5jYyIsCisrICAgICAgInNuZGlvL3NuZGlvX291dHB1dC5oIgorKyAgICBdCisrICB9Cisr CisgICBpZiAodXNlX2Fsc2EpIHsKKyAgICAgbGlicyArPSBbICJhc291bmQiIF0KKyAgICAgc291 cmNlcyArPSBbCitkaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1 ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MgY2hyb21pdW0tODMuMC40MTAzLjk3L21l ZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MKKy0tLSBtZWRpYS9hdWRpby9s aW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjLm9yaWcJMjAyMC0wNi0wMyAyMDozOTozNy4wMDAw MDAwMDAgKzAyMDAKKysrKyBtZWRpYS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNj CTIwMjAtMDYtMTMgMTg6MDk6NDMuNjIzMzMzMTY3ICswMjAwCitAQCAtMTksNiArMTksMTEgQEAK KyAjaW5jbHVkZSAibWVkaWEvYXVkaW8vcHVsc2UvYXVkaW9fbWFuYWdlcl9wdWxzZS5oIgorICNp bmNsdWRlICJtZWRpYS9hdWRpby9wdWxzZS9wdWxzZV91dGlsLmgiCisgI2VuZGlmCisrI2lmIGRl ZmluZWQoVVNFX1NORElPKQorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5h Z2VyX3NuZGlvLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0Lmgi CisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5oIgorKyNlbmRpZgor IAorIG5hbWVzcGFjZSBtZWRpYSB7CisgCitAQCAtMjYsNyArMzEsOCBAQAorICAga1B1bHNlLAor ICAga0Fsc2EsCisgICBrQ3JhcywKKy0gIGtBdWRpb0lPTWF4ID0ga0NyYXMgIC8vIE11c3QgYWx3 YXlzIGJlIGVxdWFsIHRvIGxhcmdlc3QgbG9nZ2VkIGVudHJ5LgorKyAga1NuZGlvLAorKyAga0F1 ZGlvSU9NYXggPSBrU25kaW8gLy8gTXVzdCBhbHdheXMgYmUgZXF1YWwgdG8gbGFyZ2VzdCBsb2dn ZWQgZW50cnkuCisgfTsKKyAKKyBzdGQ6OnVuaXF1ZV9wdHI8bWVkaWE6OkF1ZGlvTWFuYWdlcj4g Q3JlYXRlQXVkaW9NYW5hZ2VyKAorQEAgLTM5LDYgKzQ1LDE2IEBACisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2xvZ19mYWN0b3J5KTsKKyAgIH0K KyAKKysjaWYgZGVmaW5lZChVU0VfU05ESU8pCisrICBzdHJ1Y3Qgc2lvX2hkbCAqaGRsID0gc2lv X29wZW4oU0lPX0RFVkFOWSwgU0lPX1BMQVksIDApOworKyAgaWYgKGhkbCAhPSBOVUxMKSB7Cisr ICAgIHNpb19jbG9zZShoZGwpOworKyAgICBVTUFfSElTVE9HUkFNX0VOVU1FUkFUSU9OKCJNZWRp YS5MaW51eEF1ZGlvSU8iLCBrU25kaW8sIGtBdWRpb0lPTWF4ICsgMSk7CisrICAgIHJldHVybiBz dGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTWFuYWdlclNuZGlvPihzdGQ6Om1vdmUoYXVkaW9fdGhyZWFk KSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1 ZGlvX2xvZ19mYWN0b3J5KTsKKysgIH0KKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChVU0VfQ1JB UykKKyAgIGlmIChiYXNlOjpDb21tYW5kTGluZTo6Rm9yQ3VycmVudFByb2Nlc3MoKS0+SGFzU3dp dGNoKHN3aXRjaGVzOjprVXNlQ3JhcykpIHsKKyAgICAgVU1BX0hJU1RPR1JBTV9FTlVNRVJBVElP TigiTWVkaWEuTGludXhBdWRpb0lPIiwga0NyYXMsIGtBdWRpb0lPTWF4ICsgMSk7CitkaWZmIC1O YXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21h bmFnZXJfc25kaW8uY2MgY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1ZGlvL3NuZGlvL2F1 ZGlvX21hbmFnZXJfc25kaW8uY2MKKy0tLSBtZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2Vy X3NuZGlvLmNjLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBt ZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmNjCTIwMjAtMDYtMTMgMTc6MzI6 MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDE0OCBAQAorKy8vIENvcHlyaWdodCAoYykg MjAxMiBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ug b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo YXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaW5jbHVkZSAi bWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5oIgorKworKyNpbmNsdWRlICJi YXNlL21ldHJpY3MvaGlzdG9ncmFtX21hY3Jvcy5oIgorKyNpbmNsdWRlICJiYXNlL21lbW9yeS9w dHJfdXRpbC5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19kZXZpY2VfZGVzY3JpcHRp b24uaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fb3V0cHV0X2Rpc3BhdGNoZXIuaCIK KysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9faW5wdXQuaCIKKysjaW5jbHVkZSAi bWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2Uv bGltaXRzLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvbWVkaWFfc3dpdGNoZXMuaCIKKysKKytu YW1lc3BhY2UgbWVkaWEgeworKworKworKy8vIE1heGltdW0gbnVtYmVyIG9mIG91dHB1dCBzdHJl YW1zIHRoYXQgY2FuIGJlIG9wZW4gc2ltdWx0YW5lb3VzbHkuCisrc3RhdGljIGNvbnN0IGludCBr TWF4T3V0cHV0U3RyZWFtcyA9IDQ7CisrCisrLy8gRGVmYXVsdCBzYW1wbGUgcmF0ZSBmb3IgaW5w dXQgYW5kIG91dHB1dCBzdHJlYW1zLgorK3N0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRTYW1wbGVS YXRlID0gNDgwMDA7CisrCisrdm9pZCBBZGREZWZhdWx0RGV2aWNlKEF1ZGlvRGV2aWNlTmFtZXMq IGRldmljZV9uYW1lcykgeworKyAgRENIRUNLKGRldmljZV9uYW1lcy0+ZW1wdHkoKSk7CisrICBk ZXZpY2VfbmFtZXMtPnB1c2hfZnJvbnQoQXVkaW9EZXZpY2VOYW1lOjpDcmVhdGVEZWZhdWx0KCkp OworK30KKysKKytib29sIEF1ZGlvTWFuYWdlclNuZGlvOjpIYXNBdWRpb091dHB1dERldmljZXMo KSB7CisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrYm9vbCBBdWRpb01hbmFnZXJTbmRpbzo6SGFz QXVkaW9JbnB1dERldmljZXMoKSB7CisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrdm9pZCBBdWRp b01hbmFnZXJTbmRpbzo6R2V0QXVkaW9JbnB1dERldmljZU5hbWVzKAorKyAgICBBdWRpb0Rldmlj ZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKysgIERDSEVDSyhkZXZpY2VfbmFtZXMtPmVtcHR5KCkp OworKyAgQWRkRGVmYXVsdERldmljZShkZXZpY2VfbmFtZXMpOworK30KKysKKyt2b2lkIEF1ZGlv TWFuYWdlclNuZGlvOjpHZXRBdWRpb091dHB1dERldmljZU5hbWVzKAorKyAgICBBdWRpb0Rldmlj ZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKysgIEFkZERlZmF1bHREZXZpY2UoZGV2aWNlX25hbWVz KTsKKyt9CisrCisrY29uc3QgY2hhciogQXVkaW9NYW5hZ2VyU25kaW86OkdldE5hbWUoKSB7Cisr ICByZXR1cm4gIlNORElPIjsKKyt9CisrCisrQXVkaW9QYXJhbWV0ZXJzIEF1ZGlvTWFuYWdlclNu ZGlvOjpHZXRJbnB1dFN0cmVhbVBhcmFtZXRlcnMoCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBk ZXZpY2VfaWQpIHsKKysgIHN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRJbnB1dEJ1ZmZlclNpemUg PSAxMDI0OworKworKyAgaW50IHVzZXJfYnVmZmVyX3NpemUgPSBHZXRVc2VyQnVmZmVyU2l6ZSgp OworKyAgaW50IGJ1ZmZlcl9zaXplID0gdXNlcl9idWZmZXJfc2l6ZSA/CisrICAgICAgdXNlcl9i dWZmZXJfc2l6ZSA6IGtEZWZhdWx0SW5wdXRCdWZmZXJTaXplOworKworKyAgcmV0dXJuIEF1ZGlv UGFyYW1ldGVycygKKysgICAgICBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5D WSwgQ0hBTk5FTF9MQVlPVVRfU1RFUkVPLAorKyAgICAgIGtEZWZhdWx0U2FtcGxlUmF0ZSwgYnVm ZmVyX3NpemUpOworK30KKysKKytBdWRpb01hbmFnZXJTbmRpbzo6QXVkaW9NYW5hZ2VyU25kaW8o c3RkOjp1bmlxdWVfcHRyPEF1ZGlvVGhyZWFkPiBhdWRpb190aHJlYWQsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb0xvZ0ZhY3RvcnkqIGF1ZGlvX2xvZ19m YWN0b3J5KQorKyAgICA6IEF1ZGlvTWFuYWdlckJhc2Uoc3RkOjptb3ZlKGF1ZGlvX3RocmVhZCks CisrICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19sb2dfZmFjdG9yeSkgeworKyAgRExPRyhX QVJOSU5HKSA8PCAiQXVkaW9NYW5hZ2VyU25kaW8iOworKyAgU2V0TWF4T3V0cHV0U3RyZWFtc0Fs bG93ZWQoa01heE91dHB1dFN0cmVhbXMpOworK30KKysKKytBdWRpb01hbmFnZXJTbmRpbzo6fkF1 ZGlvTWFuYWdlclNuZGlvKCkgeworKyAgU2h1dGRvd24oKTsKKyt9CisrCisrQXVkaW9PdXRwdXRT dHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTGluZWFyT3V0cHV0U3RyZWFtKAorKyAgICBj b25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxv Z19jYWxsYmFjaykgeworKyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJ TkVBUiwgcGFyYW1zLmZvcm1hdCgpKTsKKysgIHJldHVybiBNYWtlT3V0cHV0U3RyZWFtKHBhcmFt cyk7CisrfQorKworK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZUxv d0xhdGVuY3lPdXRwdXRTdHJlYW0oCisrICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1z LAorKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorKyAgICBjb25zdCBMb2dDYWxs YmFjayYgbG9nX2NhbGxiYWNrKSB7CisrICBETE9HX0lGKEVSUk9SLCAhZGV2aWNlX2lkLmVtcHR5 KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKysgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6 OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgcGFyYW1zLmZvcm1hdCgpKTsKKysgIHJldHVybiBNYWtl T3V0cHV0U3RyZWFtKHBhcmFtcyk7CisrfQorKworK0F1ZGlvSW5wdXRTdHJlYW0qIEF1ZGlvTWFu YWdlclNuZGlvOjpNYWtlTGluZWFySW5wdXRTdHJlYW0oCisrICAgIGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgcGFyYW1zLAorKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorKyAgICBj b25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisrICBEQ0hFQ0tfRVEoQXVkaW9QYXJh bWV0ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9ybWF0KCkpOworKyAgcmV0dXJuIE1h a2VJbnB1dFN0cmVhbShwYXJhbXMpOworK30KKysKKytBdWRpb0lucHV0U3RyZWFtKiBBdWRpb01h bmFnZXJTbmRpbzo6TWFrZUxvd0xhdGVuY3lJbnB1dFN0cmVhbSgKKysgICAgY29uc3QgQXVkaW9Q YXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisr ICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsKKysgIERDSEVDS19FUShBdWRp b1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgcGFyYW1zLmZvcm1hdCgpKTsKKysg IHJldHVybiBNYWtlSW5wdXRTdHJlYW0ocGFyYW1zKTsKKyt9CisrCisrQXVkaW9QYXJhbWV0ZXJz IEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0ZXJzKAor KyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9pZCwKKysgICAgY29uc3QgQXVk aW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJhbXMpIHsKKysgIC8vIFRPRE8odG9tbWkpOiBTdXBwb3J0 IHxvdXRwdXRfZGV2aWNlX2lkfC4KKysgIERMT0dfSUYoRVJST1IsICFvdXRwdXRfZGV2aWNlX2lk LmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKysgIHN0YXRpYyBjb25zdCBpbnQga0Rl ZmF1bHRPdXRwdXRCdWZmZXJTaXplID0gMjA0ODsKKysKKysgIENoYW5uZWxMYXlvdXQgY2hhbm5l bF9sYXlvdXQgPSBDSEFOTkVMX0xBWU9VVF9TVEVSRU87CisrICBpbnQgc2FtcGxlX3JhdGUgPSBr RGVmYXVsdFNhbXBsZVJhdGU7CisrICBpbnQgYnVmZmVyX3NpemUgPSBrRGVmYXVsdE91dHB1dEJ1 ZmZlclNpemU7CisrICBpZiAoaW5wdXRfcGFyYW1zLklzVmFsaWQoKSkgeworKyAgICBzYW1wbGVf cmF0ZSA9IGlucHV0X3BhcmFtcy5zYW1wbGVfcmF0ZSgpOworKyAgICBjaGFubmVsX2xheW91dCA9 IGlucHV0X3BhcmFtcy5jaGFubmVsX2xheW91dCgpOworKyAgICBidWZmZXJfc2l6ZSA9IHN0ZDo6 bWluKGJ1ZmZlcl9zaXplLCBpbnB1dF9wYXJhbXMuZnJhbWVzX3Blcl9idWZmZXIoKSk7CisrICB9 CisrCisrICBpbnQgdXNlcl9idWZmZXJfc2l6ZSA9IEdldFVzZXJCdWZmZXJTaXplKCk7CisrICBp ZiAodXNlcl9idWZmZXJfc2l6ZSkKKysgICAgYnVmZmVyX3NpemUgPSB1c2VyX2J1ZmZlcl9zaXpl OworKworKyAgcmV0dXJuIEF1ZGlvUGFyYW1ldGVycygKKysgICAgICBBdWRpb1BhcmFtZXRlcnM6 OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgY2hhbm5lbF9sYXlvdXQsCisrICAgICAgc2FtcGxlX3Jh dGUsIGJ1ZmZlcl9zaXplKTsKKyt9CisrCisrQXVkaW9JbnB1dFN0cmVhbSogQXVkaW9NYW5hZ2Vy U25kaW86Ok1ha2VJbnB1dFN0cmVhbSgKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJh bXMpIHsKKysgIERMT0coV0FSTklORykgPDwgIk1ha2VJbnB1dFN0cmVhbSI7CisrICByZXR1cm4g bmV3IFNuZGlvQXVkaW9JbnB1dFN0cmVhbSh0aGlzLAorKyAgICAgICAgICAgICBBdWRpb0Rldmlj ZURlc2NyaXB0aW9uOjprRGVmYXVsdERldmljZUlkLCBwYXJhbXMpOworK30KKysKKytBdWRpb091 dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VPdXRwdXRTdHJlYW0oCisrICAgIGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKSB7CisrICBETE9HKFdBUk5JTkcpIDw8ICJNYWtl T3V0cHV0U3RyZWFtIjsKKysgIHJldHVybiBuZXcgU25kaW9BdWRpb091dHB1dFN0cmVhbShwYXJh bXMsIHRoaXMpOworK30KKysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKK2RpZmYgLU5hdXIgY2hy b21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9z bmRpby5oIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5h Z2VyX3NuZGlvLmgKKy0tLSBtZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgu b3JpZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG1lZGlhL2F1ZGlv L3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaAkyMDIwLTA2LTEzIDE3OjMyOjI4LjUxMTM5NTk2 OSArMDIwMAorQEAgLTAsMCArMSw2NSBAQAorKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hy b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3Vy Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisr Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIE1FRElBX0FVRElPX1NO RElPX0FVRElPX01BTkFHRVJfU05ESU9fSF8KKysjZGVmaW5lIE1FRElBX0FVRElPX1NORElPX0FV RElPX01BTkFHRVJfU05ESU9fSF8KKysKKysjaW5jbHVkZSA8c2V0PgorKworKyNpbmNsdWRlICJi YXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisrI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgiCisrI2lu Y2x1ZGUgImJhc2UvbWVtb3J5L3JlZl9jb3VudGVkLmgiCisrI2luY2x1ZGUgImJhc2UvdGhyZWFk aW5nL3RocmVhZC5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19tYW5hZ2VyX2Jhc2Uu aCIKKysKKytuYW1lc3BhY2UgbWVkaWEgeworKworK2NsYXNzIE1FRElBX0VYUE9SVCBBdWRpb01h bmFnZXJTbmRpbyA6IHB1YmxpYyBBdWRpb01hbmFnZXJCYXNlIHsKKysgcHVibGljOgorKyAgQXVk aW9NYW5hZ2VyU25kaW8oc3RkOjp1bmlxdWVfcHRyPEF1ZGlvVGhyZWFkPiBhdWRpb190aHJlYWQs CisrICAgICAgICAgICAgICAgICAgIEF1ZGlvTG9nRmFjdG9yeSogYXVkaW9fbG9nX2ZhY3Rvcnkp OworKyAgfkF1ZGlvTWFuYWdlclNuZGlvKCkgb3ZlcnJpZGU7CisrCisrICAvLyBJbXBsZW1lbnRh dGlvbiBvZiBBdWRpb01hbmFnZXIuCisrICBib29sIEhhc0F1ZGlvT3V0cHV0RGV2aWNlcygpIG92 ZXJyaWRlOworKyAgYm9vbCBIYXNBdWRpb0lucHV0RGV2aWNlcygpIG92ZXJyaWRlOworKyAgdm9p ZCBHZXRBdWRpb0lucHV0RGV2aWNlTmFtZXMoQXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVz KSBvdmVycmlkZTsKKysgIHZvaWQgR2V0QXVkaW9PdXRwdXREZXZpY2VOYW1lcyhBdWRpb0Rldmlj ZU5hbWVzKiBkZXZpY2VfbmFtZXMpIG92ZXJyaWRlOworKyAgQXVkaW9QYXJhbWV0ZXJzIEdldElu cHV0U3RyZWFtUGFyYW1ldGVycygKKysgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lk KSBvdmVycmlkZTsKKysgIGNvbnN0IGNoYXIqIEdldE5hbWUoKSBvdmVycmlkZTsKKysKKysgIC8v IEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvTWFuYWdlckJhc2UuCisrICBBdWRpb091dHB1dFN0cmVh bSogTWFrZUxpbmVhck91dHB1dFN0cmVhbSgKKysgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMm IHBhcmFtcywKKysgICAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlk ZTsKKysgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbSgKKysg ICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAgICBjb25zdCBzdGQ6OnN0 cmluZyYgZGV2aWNlX2lkLAorKyAgICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2sp IG92ZXJyaWRlOworKyAgQXVkaW9JbnB1dFN0cmVhbSogTWFrZUxpbmVhcklucHV0U3RyZWFtKAor KyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICAgIGNvbnN0IHN0ZDo6 c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFj aykgb3ZlcnJpZGU7CisrICBBdWRpb0lucHV0U3RyZWFtKiBNYWtlTG93TGF0ZW5jeUlucHV0U3Ry ZWFtKAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICAgIGNvbnN0 IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19j YWxsYmFjaykgb3ZlcnJpZGU7CisrCisrIHByb3RlY3RlZDoKKysgIEF1ZGlvUGFyYW1ldGVycyBH ZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0ZXJzKAorKyAgICAgIGNvbnN0IHN0ZDo6c3Ry aW5nJiBvdXRwdXRfZGV2aWNlX2lkLAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgaW5w dXRfcGFyYW1zKSBvdmVycmlkZTsKKysKKysgcHJpdmF0ZToKKysgIC8vIENhbGxlZCBieSBNYWtl TGluZWFyT3V0cHV0U3RyZWFtIGFuZCBNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbS4KKysgIEF1 ZGlvT3V0cHV0U3RyZWFtKiBNYWtlT3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYg cGFyYW1zKTsKKysgIEF1ZGlvSW5wdXRTdHJlYW0qIE1ha2VJbnB1dFN0cmVhbShjb25zdCBBdWRp b1BhcmFtZXRlcnMmIHBhcmFtcyk7CisrCisrICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oQXVk aW9NYW5hZ2VyU25kaW8pOworK307CisrCisrfSAgLy8gbmFtZXNwYWNlIG1lZGlhCisrCisrI2Vu ZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19BVURJT19NQU5BR0VSX1NORElPX0hfCitkaWZmIC1O YXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lu cHV0LmNjIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1 dC5jYworLS0tIG1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmNjLm9yaWcJMTk3MC0wMS0w MSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBtZWRpYS9hdWRpby9zbmRpby9zbmRpb19p bnB1dC5jYwkyMDIwLTA2LTEzIDE3OjMyOjI4LjUxMTM5NTk2OSArMDIwMAorQEAgLTAsMCArMSwy MDAgQEAKKysvLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KKysKKysjaW5jbHVkZSAiYmFzZS9iaW5kLmgiCisrI2luY2x1ZGUgImJhc2UvbG9nZ2lu Zy5oIgorKyNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgorKyNpbmNsdWRlICJtZWRpYS9iYXNlL2F1 ZGlvX3RpbWVzdGFtcF9oZWxwZXIuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vYXVk aW9fbWFuYWdlcl9zbmRpby5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19tYW5hZ2Vy LmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmgiCisrCisrbmFt ZXNwYWNlIG1lZGlhIHsKKysKKytzdGF0aWMgY29uc3QgU2FtcGxlRm9ybWF0IGtTYW1wbGVGb3Jt YXQgPSBrU2FtcGxlRm9ybWF0UzE2OworKworK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpP bk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSkKKyt7CisrICBTbmRpb0F1ZGlvSW5w dXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1ZGlvSW5wdXRTdHJlYW0qPihhcmcp OworKworKyAgc2VsZi0+aHdfZGVsYXkgKz0gZGVsdGE7CisrfQorKworK3ZvaWQgKlNuZGlvQXVk aW9JbnB1dFN0cmVhbTo6VGhyZWFkRW50cnkodm9pZCAqYXJnKSB7CisrICBTbmRpb0F1ZGlvSW5w dXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1ZGlvSW5wdXRTdHJlYW0qPihhcmcp OworKworKyAgc2VsZi0+VGhyZWFkTG9vcCgpOworKyAgcmV0dXJuIE5VTEw7CisrfQorKworK1Nu ZGlvQXVkaW9JbnB1dFN0cmVhbTo6U25kaW9BdWRpb0lucHV0U3RyZWFtKEF1ZGlvTWFuYWdlckJh c2UqIG1hbmFnZXIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9uYW1lLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKQor KyAgICA6IG1hbmFnZXIobWFuYWdlciksCisrICAgICAgcGFyYW1zKHBhcmFtcyksCisrICAgICAg YXVkaW9fYnVzKEF1ZGlvQnVzOjpDcmVhdGUocGFyYW1zKSksCisrICAgICAgc3RhdGUoa0Nsb3Nl ZCkgeworK30KKysKKytTbmRpb0F1ZGlvSW5wdXRTdHJlYW06On5TbmRpb0F1ZGlvSW5wdXRTdHJl YW0oKSB7CisrICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKysgICAgQ2xvc2UoKTsKKyt9CisrCisr Ym9vbCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06Ok9wZW4oKSB7CisrICBzdHJ1Y3Qgc2lvX3BhciBw YXI7CisrICBpbnQgc2lnOworKworKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCisrICAgIHJldHVy biBmYWxzZTsKKysKKysgIGlmIChwYXJhbXMuZm9ybWF0KCkgIT0gQXVkaW9QYXJhbWV0ZXJzOjpB VURJT19QQ01fTElORUFSICYmCisrICAgICAgcGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1l dGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZKSB7CisrICAgIExPRyhXQVJOSU5HKSA8PCAiVW5z dXBwb3J0ZWQgYXVkaW8gZm9ybWF0LiI7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysKKysg IHNpb19pbml0cGFyKCZwYXIpOworKyAgcGFyLnJhdGUgPSBwYXJhbXMuc2FtcGxlX3JhdGUoKTsK KysgIHBhci5yY2hhbiA9IHBhcmFtcy5jaGFubmVscygpOworKyAgcGFyLmJpdHMgPSBTYW1wbGVG b3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQpOworKyAgcGFyLmJwcyA9IHBhci5i aXRzIC8gODsKKysgIHBhci5zaWcgPSBzaWcgPSBwYXIuYml0cyAhPSA4ID8gMSA6IDA7CisrICBw YXIubGUgPSBTSU9fTEVfTkFUSVZFOworKyAgcGFyLmFwcGJ1ZnN6ID0gcGFyYW1zLmZyYW1lc19w ZXJfYnVmZmVyKCk7CisrCisrICBoZGwgPSBzaW9fb3BlbihTSU9fREVWQU5ZLCBTSU9fUkVDLCAw KTsKKysKKysgIGlmIChoZGwgPT0gTlVMTCkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4n dCBvcGVuIGF1ZGlvIGRldmljZS4iOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrCisrICBp ZiAoIXNpb19zZXRwYXIoaGRsLCAmcGFyKSB8fCAhc2lvX2dldHBhcihoZGwsICZwYXIpKSB7Cisr ICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBhdWRpbyBwYXJhbWV0ZXJzLiI7CisrICAg IGdvdG8gYmFkX2Nsb3NlOworKyAgfQorKworKyAgaWYgKHBhci5yYXRlICAhPSAodW5zaWduZWQg aW50KXBhcmFtcy5zYW1wbGVfcmF0ZSgpIHx8CisrICAgICAgcGFyLnJjaGFuICE9ICh1bnNpZ25l ZCBpbnQpcGFyYW1zLmNoYW5uZWxzKCkgfHwKKysgICAgICBwYXIuYml0cyAgIT0gKHVuc2lnbmVk IGludClTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQpIHx8CisrICAg ICAgcGFyLnNpZyAgICE9ICh1bnNpZ25lZCBpbnQpc2lnIHx8CisrICAgICAgKHBhci5icHMgPiAx ICYmIHBhci5sZSAhPSBTSU9fTEVfTkFUSVZFKSB8fAorKyAgICAgIChwYXIuYml0cyAhPSBwYXIu YnBzICogOCkpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gcGFyYW1l dGVycy4iOworKyAgICBnb3RvIGJhZF9jbG9zZTsKKysgIH0KKysgIHN0YXRlID0ga1N0b3BwZWQ7 CisrICBidWZmZXIgPSBuZXcgY2hhclthdWRpb19idXMtPmZyYW1lcygpICogcGFyYW1zLkdldEJ5 dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCldOworKyAgc2lvX29ubW92ZShoZGwsICZPbk1vdmVD YWxsYmFjaywgdGhpcyk7CisrICByZXR1cm4gdHJ1ZTsKKytiYWRfY2xvc2U6CisrICBzaW9fY2xv c2UoaGRsKTsKKysgIHJldHVybiBmYWxzZTsKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvSW5wdXRT dHJlYW06OlN0YXJ0KEF1ZGlvSW5wdXRDYWxsYmFjayogY2IpIHsKKysKKysgIFN0YXJ0QWdjKCk7 CisrCisrICBzdGF0ZSA9IGtSdW5uaW5nOworKyAgaHdfZGVsYXkgPSAwOworKyAgY2FsbGJhY2sg PSBjYjsKKysgIHNpb19zdGFydChoZGwpOworKyAgaWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWQs IE5VTEwsICZUaHJlYWRFbnRyeSwgdGhpcykgIT0gMCkgeworKyAgICBMT0coRVJST1IpIDw8ICJG YWlsZWQgdG8gY3JlYXRlIHJlYWwtdGltZSB0aHJlYWQgZm9yIHJlY29yZGluZy4iOworKyAgICBz aW9fc3RvcChoZGwpOworKyAgICBzdGF0ZSA9IGtTdG9wcGVkOworKyAgfQorK30KKysKKyt2b2lk IFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U3RvcCgpIHsKKysKKysgIGlmIChzdGF0ZSA9PSBrU3Rv cHBlZCkKKysgICAgcmV0dXJuOworKworKyAgc3RhdGUgPSBrU3RvcFdhaXQ7CisrICBwdGhyZWFk X2pvaW4odGhyZWFkLCBOVUxMKTsKKysgIHNpb19zdG9wKGhkbCk7CisrICBzdGF0ZSA9IGtTdG9w cGVkOworKworKyAgU3RvcEFnYygpOworK30KKysKKyt2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVh bTo6Q2xvc2UoKSB7CisrCisrICBpZiAoc3RhdGUgPT0ga0Nsb3NlZCkKKysgICAgcmV0dXJuOwor KworKyAgaWYgKHN0YXRlID09IGtSdW5uaW5nKQorKyAgICBTdG9wKCk7CisrCisrICBzdGF0ZSA9 IGtDbG9zZWQ7CisrICBkZWxldGUgW10gYnVmZmVyOworKyAgc2lvX2Nsb3NlKGhkbCk7CisrCisr ICBtYW5hZ2VyLT5SZWxlYXNlSW5wdXRTdHJlYW0odGhpcyk7CisrfQorKworK2RvdWJsZSBTbmRp b0F1ZGlvSW5wdXRTdHJlYW06OkdldE1heFZvbHVtZSgpIHsKKysgIC8vIE5vdCBzdXBwb3J0ZWQK KysgIHJldHVybiAwLjA7CisrfQorKworK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTZXRW b2x1bWUoZG91YmxlIHZvbHVtZSkgeworKyAgLy8gTm90IHN1cHBvcnRlZC4gRG8gbm90aGluZy4K Kyt9CisrCisrZG91YmxlIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6R2V0Vm9sdW1lKCkgeworKyAg Ly8gTm90IHN1cHBvcnRlZC4KKysgIHJldHVybiAwLjA7CisrfQorKworK2Jvb2wgU25kaW9BdWRp b0lucHV0U3RyZWFtOjpJc011dGVkKCkgeworKyAgLy8gTm90IHN1cHBvcnRlZC4KKysgIHJldHVy biBmYWxzZTsKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNldE91dHB1dERl dmljZUZvckFlYygKKysgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQpIHsK KysgIC8vIE5vdCBzdXBwb3J0ZWQuCisrfQorKworK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFt OjpUaHJlYWRMb29wKHZvaWQpIHsKKysgIHNpemVfdCB0b2RvLCBuOworKyAgY2hhciAqZGF0YTsK KysgIHVuc2lnbmVkIGludCBuZnJhbWVzOworKyAgZG91YmxlIG5vcm1hbGl6ZWRfdm9sdW1lID0g MC4wOworKworKyAgbmZyYW1lcyA9IGF1ZGlvX2J1cy0+ZnJhbWVzKCk7CisrCisrICB3aGlsZSAo c3RhdGUgPT0ga1J1bm5pbmcgJiYgIXNpb19lb2YoaGRsKSkgeworKworKyAgICBHZXRBZ2NWb2x1 bWUoJm5vcm1hbGl6ZWRfdm9sdW1lKTsKKysKKysgICAgLy8gcmVhZCBvbmUgYmxvY2sKKysgICAg dG9kbyA9IG5mcmFtZXMgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KTsK KysgICAgZGF0YSA9IGJ1ZmZlcjsKKysgICAgd2hpbGUgKHRvZG8gPiAwKSB7CisrICAgICAgbiA9 IHNpb19yZWFkKGhkbCwgZGF0YSwgdG9kbyk7CisrICAgICAgaWYgKG4gPT0gMCkKKysgICAgICAg IHJldHVybjsJLy8gdW5yZWNvdmVyYWJsZSBJL08gZXJyb3IKKysgICAgICB0b2RvIC09IG47Cisr ICAgICAgZGF0YSArPSBuOworKyAgICB9CisrICAgIGh3X2RlbGF5IC09IG5mcmFtZXM7CisrCisr ICAgIC8vIGNvbnZlcnQgZnJhbWVzIGNvdW50IHRvIFRpbWVEZWx0YQorKyAgICBjb25zdCBiYXNl OjpUaW1lRGVsdGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhlbHBlcjo6RnJhbWVzVG9UaW1lKGh3 X2RlbGF5LAorKyAgICAgIHBhcmFtcy5zYW1wbGVfcmF0ZSgpKTsKKysKKysgICAgLy8gcHVzaCBp bnRvIGJ1cworKyAgICBhdWRpb19idXMtPkZyb21JbnRlcmxlYXZlZChidWZmZXIsIG5mcmFtZXMs IFNhbXBsZUZvcm1hdFRvQnl0ZXNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQpKTsKKysKKysgICAg Ly8gaW52b2tlIGNhbGxiYWNrCisrICAgIGNhbGxiYWNrLT5PbkRhdGEoYXVkaW9fYnVzLmdldCgp LCBiYXNlOjpUaW1lVGlja3M6Ok5vdygpIC0gZGVsYXksIDEuKTsKKysgIH0KKyt9CisrCisrfSAg Ly8gbmFtZXNwYWNlIG1lZGlhCitkaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmln L21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmggY2hyb21pdW0tODMuMC40MTAzLjk3L21l ZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmgKKy0tLSBtZWRpYS9hdWRpby9zbmRpby9zbmRp b19pbnB1dC5oLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBt ZWRpYS9hdWRpby9zbmRpby9zbmRpb19pbnB1dC5oCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1 OTY5ICswMjAwCitAQCAtMCwwICsxLDkxIEBACisrLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENocm9t aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291cmNl IGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorKy8v IGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2lmbmRlZiBNRURJQV9BVURJT19TTkRJ T19TTkRJT19JTlBVVF9IXworKyNkZWZpbmUgTUVESUFfQVVESU9fU05ESU9fU05ESU9fSU5QVVRf SF8KKysKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1ZGUgPHN0cmluZz4KKysjaW5jbHVk ZSA8c25kaW8uaD4KKysKKysjaW5jbHVkZSAiYmFzZS9jb21waWxlcl9zcGVjaWZpYy5oIgorKyNp bmNsdWRlICJiYXNlL21hY3Jvcy5oIgorKyNpbmNsdWRlICJiYXNlL21lbW9yeS93ZWFrX3B0ci5o IgorKyNpbmNsdWRlICJiYXNlL3RpbWUvdGltZS5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9h Z2NfYXVkaW9fc3RyZWFtLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2lvLmgiCisr I2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX2RldmljZV9kZXNjcmlwdGlvbi5oIgorKyNpbmNs dWRlICJtZWRpYS9iYXNlL2F1ZGlvX3BhcmFtZXRlcnMuaCIKKysKKytuYW1lc3BhY2UgbWVkaWEg eworKworK2NsYXNzIEF1ZGlvTWFuYWdlckJhc2U7CisrCisrLy8gSW1wbGVtZW50YXRpb24gb2Yg QXVkaW9PdXRwdXRTdHJlYW0gdXNpbmcgc25kaW8oNykKKytjbGFzcyBTbmRpb0F1ZGlvSW5wdXRT dHJlYW0gOiBwdWJsaWMgQWdjQXVkaW9TdHJlYW08QXVkaW9JbnB1dFN0cmVhbT4geworKyBwdWJs aWM6CisrICAvLyBQYXNzIHRoaXMgdG8gdGhlIGNvbnN0cnVjdG9yIGlmIHlvdSB3YW50IHRvIGF0 dGVtcHQgYXV0by1zZWxlY3Rpb24KKysgIC8vIG9mIHRoZSBhdWRpbyByZWNvcmRpbmcgZGV2aWNl LgorKyAgc3RhdGljIGNvbnN0IGNoYXIga0F1dG9TZWxlY3REZXZpY2VbXTsKKysKKysgIC8vIENy ZWF0ZSBhIFBDTSBPdXRwdXQgc3RyZWFtIGZvciB0aGUgU05ESU8gZGV2aWNlIGlkZW50aWZpZWQg YnkKKysgIC8vIHxkZXZpY2VfbmFtZXwuIElmIHVuc3VyZSBvZiB3aGF0IHRvIHVzZSBmb3IgfGRl dmljZV9uYW1lfCwgdXNlCisrICAvLyB8a0F1dG9TZWxlY3REZXZpY2V8LgorKyAgU25kaW9BdWRp b0lucHV0U3RyZWFtKEF1ZGlvTWFuYWdlckJhc2UqIGF1ZGlvX21hbmFnZXIsCisrICAgICAgICAg ICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9uYW1lLAorKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKKysKKysgIH5TbmRpb0F1 ZGlvSW5wdXRTdHJlYW0oKSBvdmVycmlkZTsKKysKKysgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1 ZGlvSW5wdXRTdHJlYW0uCisrICBib29sIE9wZW4oKSBvdmVycmlkZTsKKysgIHZvaWQgU3RhcnQo QXVkaW9JbnB1dENhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CisrICB2b2lkIFN0b3AoKSBv dmVycmlkZTsKKysgIHZvaWQgQ2xvc2UoKSBvdmVycmlkZTsKKysgIGRvdWJsZSBHZXRNYXhWb2x1 bWUoKSBvdmVycmlkZTsKKysgIHZvaWQgU2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIG92ZXJyaWRl OworKyAgZG91YmxlIEdldFZvbHVtZSgpIG92ZXJyaWRlOworKyAgYm9vbCBJc011dGVkKCkgb3Zl cnJpZGU7CisrICB2b2lkIFNldE91dHB1dERldmljZUZvckFlYyhjb25zdCBzdGQ6OnN0cmluZyYg b3V0cHV0X2RldmljZV9pZCkgb3ZlcnJpZGU7CisrCisrIHByaXZhdGU6CisrCisrICBlbnVtIFN0 cmVhbVN0YXRlIHsKKysgICAga0Nsb3NlZCwgICAgICAgICAgICAvLyBOb3Qgb3BlbmVkIHlldAor KyAgICBrU3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBvcGVuZWQsIGJ1dCBub3Qgc3RhcnRl ZCB5ZXQKKysgICAga1J1bm5pbmcsICAgICAgICAgICAvLyBTdGFydGVkLCBkZXZpY2UgcGxheWlu ZworKyAgICBrU3RvcFdhaXQgICAgICAgICAgIC8vIFN0b3BwaW5nLCB3YWl0aW5nIGZvciB0aGUg cmVhbC10aW1lIHRocmVhZCB0byBleGl0CisrICB9OworKworKyAgLy8gQy1zdHlsZSBjYWxsLWJh Y2tzCisrICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSk7 CisrICBzdGF0aWMgdm9pZCogVGhyZWFkRW50cnkodm9pZCAqYXJnKTsKKysKKysgIC8vIENvbnRp bnVvdXNseSBtb3ZlcyBkYXRhIGZyb20gdGhlIGRldmljZSB0byB0aGUgY29uc3VtZXIKKysgIHZv aWQgVGhyZWFkTG9vcCgpOworKyAgLy8gT3VyIGNyZWF0b3IsIHRoZSBhdWRpbyBtYW5hZ2VyIG5l ZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xvc2UuCisrICBBdWRpb01hbmFnZXJCYXNlKiBt YW5hZ2VyOworKyAgLy8gUGFyYW1ldGVycyBvZiB0aGUgc291cmNlCisrICBBdWRpb1BhcmFtZXRl cnMgcGFyYW1zOworKyAgLy8gV2Ugc3RvcmUgZGF0YSBoZXJlIGZvciBjb25zdW1lcgorKyAgc3Rk Ojp1bmlxdWVfcHRyPEF1ZGlvQnVzPiBhdWRpb19idXM7CisrICAvLyBDYWxsLWJhY2sgdGhhdCBj b25zdW1lcyByZWNvcmRlZCBkYXRhCisrICBBdWRpb0lucHV0Q2FsbGJhY2sqIGNhbGxiYWNrOyAg Ly8gVmFsaWQgZHVyaW5nIGEgcmVjb3JkaW5nIHNlc3Npb24uCisrICAvLyBIYW5kbGUgb2YgdGhl IGF1ZGlvIGRldmljZQorKyAgc3RydWN0IHNpb19oZGwqIGhkbDsKKysgIC8vIEN1cnJlbnQgc3Rh dGUgb2YgdGhlIHN0cmVhbQorKyAgZW51bSBTdHJlYW1TdGF0ZSBzdGF0ZTsKKysgIC8vIEhpZ2gg cHJpb3JpdHkgdGhyZWFkIHJ1bm5pbmcgVGhyZWFkTG9vcCgpCisrICBwdGhyZWFkX3QgdGhyZWFk OworKyAgLy8gTnVtYmVyIG9mIGZyYW1lcyBidWZmZXJlZCBpbiB0aGUgaGFyZHdhcmUKKysgIGlu dCBod19kZWxheTsKKysgIC8vIFRlbXBvcmFyeSBidWZmZXIgd2hlcmUgZGF0YSBpcyBzdG9yZWQg c25kaW8tY29tcGF0aWJsZSBmb3JtYXQKKysgIGNoYXIqIGJ1ZmZlcjsKKysKKysgIERJU0FMTE9X X0NPUFlfQU5EX0FTU0lHTihTbmRpb0F1ZGlvSW5wdXRTdHJlYW0pOworK307CisrCisrfSAgLy8g bmFtZXNwYWNlIG1lZGlhCisrCisrI2VuZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19TTkRJT19J TlBVVF9IXworZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9hdWRp by9zbmRpby9zbmRpb19vdXRwdXQuY2MgY2hyb21pdW0tODMuMC40MTAzLjk3L21lZGlhL2F1ZGlv L3NuZGlvL3NuZGlvX291dHB1dC5jYworLS0tIG1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1 dC5jYy5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbWVkaWEv YXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmNjCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1OTY5 ICswMjAwCitAQCAtMCwwICsxLDE4MyBAQAorKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hy b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3Vy Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisr Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaW5jbHVkZSAiYmFzZS9sb2dnaW5n LmgiCisrI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCisrI2luY2x1ZGUgImJhc2UvdGltZS9k ZWZhdWx0X3RpY2tfY2xvY2suaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdl cl9iYXNlLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fdGltZXN0YW1wX2hlbHBlci5o IgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaCIKKysKKytuYW1l c3BhY2UgbWVkaWEgeworKworK3N0YXRpYyBjb25zdCBTYW1wbGVGb3JtYXQga1NhbXBsZUZvcm1h dCA9IGtTYW1wbGVGb3JtYXRTMTY7CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpP bk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSkgeworKyAgU25kaW9BdWRpb091dHB1 dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qPihhcmcp OworKworKyAgc2VsZi0+aHdfZGVsYXkgLT0gZGVsdGE7CisrfQorKworK3ZvaWQgU25kaW9BdWRp b091dHB1dFN0cmVhbTo6T25Wb2xDYWxsYmFjayh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wp IHsKKysgIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKysKKysgIHNlbGYtPnZvbCA9IHZvbDsKKyt9CisrCisr dm9pZCAqU25kaW9BdWRpb091dHB1dFN0cmVhbTo6VGhyZWFkRW50cnkodm9pZCAqYXJnKSB7Cisr ICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb091 dHB1dFN0cmVhbSo+KGFyZyk7CisrCisrICBzZWxmLT5UaHJlYWRMb29wKCk7CisrICByZXR1cm4g TlVMTDsKKyt9CisrCisrU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U25kaW9BdWRpb091dHB1dFN0 cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXIpCisr ICAgIDogbWFuYWdlcihtYW5hZ2VyKSwKKysgICAgICBwYXJhbXMocGFyYW1zKSwKKysgICAgICBh dWRpb19idXMoQXVkaW9CdXM6OkNyZWF0ZShwYXJhbXMpKSwKKysgICAgICBzdGF0ZShrQ2xvc2Vk KSwKKysgICAgICBtdXRleChQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSKSB7CisrfQorKworK1Nu ZGlvQXVkaW9PdXRwdXRTdHJlYW06On5TbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCkgeworKyAgaWYg KHN0YXRlICE9IGtDbG9zZWQpCisrICAgIENsb3NlKCk7CisrfQorKworK2Jvb2wgU25kaW9BdWRp b091dHB1dFN0cmVhbTo6T3BlbigpIHsKKysgIHN0cnVjdCBzaW9fcGFyIHBhcjsKKysgIGludCBz aWc7CisrCisrICBpZiAocGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9f UENNX0xJTkVBUiAmJgorKyAgICAgIHBhcmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6 OkFVRElPX1BDTV9MT1dfTEFURU5DWSkgeworKyAgICBMT0coV0FSTklORykgPDwgIlVuc3VwcG9y dGVkIGF1ZGlvIGZvcm1hdC4iOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBzaW9faW5p dHBhcigmcGFyKTsKKysgIHBhci5yYXRlID0gcGFyYW1zLnNhbXBsZV9yYXRlKCk7CisrICBwYXIu cGNoYW4gPSBwYXJhbXMuY2hhbm5lbHMoKTsKKysgIHBhci5iaXRzID0gU2FtcGxlRm9ybWF0VG9C aXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KTsKKysgIHBhci5icHMgPSBwYXIuYml0cyAvIDg7 CisrICBwYXIuc2lnID0gc2lnID0gcGFyLmJpdHMgIT0gOCA/IDEgOiAwOworKyAgcGFyLmxlID0g U0lPX0xFX05BVElWRTsKKysgIHBhci5hcHBidWZzeiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZl cigpOworKworKyAgaGRsID0gc2lvX29wZW4oU0lPX0RFVkFOWSwgU0lPX1BMQVksIDApOworKyAg aWYgKGhkbCA9PSBOVUxMKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IG9wZW4gYXVk aW8gZGV2aWNlLiI7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIGlmICghc2lvX3NldHBh cihoZGwsICZwYXIpIHx8ICFzaW9fZ2V0cGFyKGhkbCwgJnBhcikpIHsKKysgICAgTE9HKEVSUk9S KSA8PCAiQ291bGRuJ3Qgc2V0IGF1ZGlvIHBhcmFtZXRlcnMuIjsKKysgICAgZ290byBiYWRfY2xv c2U7CisrICB9CisrICBpZiAocGFyLnJhdGUgICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLnNhbXBs ZV9yYXRlKCkgfHwKKysgICAgICBwYXIucGNoYW4gIT0gKHVuc2lnbmVkIGludClwYXJhbXMuY2hh bm5lbHMoKSB8fAorKyAgICAgIHBhci5iaXRzICAhPSAodW5zaWduZWQgaW50KVNhbXBsZUZvcm1h dFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCkgfHwKKysgICAgICBwYXIuc2lnICAgIT0g KHVuc2lnbmVkIGludClzaWcgfHwKKysgICAgICAocGFyLmJwcyA+IDEgJiYgcGFyLmxlICE9IFNJ T19MRV9OQVRJVkUpIHx8CisrICAgICAgKHBhci5iaXRzICE9IHBhci5icHMgKiA4KSkgeworKyAg ICBMT0coRVJST1IpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBwYXJhbWV0ZXJzLiI7CisrICAgIGdv dG8gYmFkX2Nsb3NlOworKyAgfQorKyAgc3RhdGUgPSBrU3RvcHBlZDsKKysgIHZvbHBlbmRpbmcg PSAwOworKyAgdm9sID0gMDsKKysgIGJ1ZmZlciA9IG5ldyBjaGFyW2F1ZGlvX2J1cy0+ZnJhbWVz KCkgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KV07CisrICBzaW9fb25t b3ZlKGhkbCwgJk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsKKysgIHNpb19vbnZvbChoZGwsICZPblZv bENhbGxiYWNrLCB0aGlzKTsKKysgIHJldHVybiB0cnVlOworKyBiYWRfY2xvc2U6CisrICBzaW9f Y2xvc2UoaGRsKTsKKysgIHJldHVybiBmYWxzZTsKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0 cHV0U3RyZWFtOjpDbG9zZSgpIHsKKysgIGlmIChzdGF0ZSA9PSBrQ2xvc2VkKQorKyAgICByZXR1 cm47CisrICBpZiAoc3RhdGUgPT0ga1J1bm5pbmcpCisrICAgIFN0b3AoKTsKKysgIHN0YXRlID0g a0Nsb3NlZDsKKysgIGRlbGV0ZSBbXSBidWZmZXI7CisrICBzaW9fY2xvc2UoaGRsKTsKKysgIG1h bmFnZXItPlJlbGVhc2VPdXRwdXRTdHJlYW0odGhpcyk7ICAvLyBDYWxscyB0aGUgZGVzdHJ1Y3Rv cgorK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlN0YXJ0KEF1ZGlvU291cmNl Q2FsbGJhY2sqIGNhbGxiYWNrKSB7CisrICBzdGF0ZSA9IGtSdW5uaW5nOworKyAgaHdfZGVsYXkg PSAwOworKyAgc291cmNlID0gY2FsbGJhY2s7CisrICBzaW9fc3RhcnQoaGRsKTsKKysgIGlmIChw dGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhyZWFkRW50cnksIHRoaXMpICE9IDApIHsK KysgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFkLiI7 CisrICAgIHNpb19zdG9wKGhkbCk7CisrICAgIHN0YXRlID0ga1N0b3BwZWQ7CisrICB9CisrfQor KworK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U3RvcCgpIHsKKysgIGlmIChzdGF0ZSA9 PSBrU3RvcHBlZCkKKysgICAgcmV0dXJuOworKyAgc3RhdGUgPSBrU3RvcFdhaXQ7CisrICBwdGhy ZWFkX2pvaW4odGhyZWFkLCBOVUxMKTsKKysgIHNpb19zdG9wKGhkbCk7CisrICBzdGF0ZSA9IGtT dG9wcGVkOworK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlNldFZvbHVtZShk b3VibGUgdikgeworKyAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCk7CisrICB2b2wgPSB2ICog U0lPX01BWFZPTDsKKysgIHZvbHBlbmRpbmcgPSAxOworKyAgcHRocmVhZF9tdXRleF91bmxvY2so Jm11dGV4KTsKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpHZXRWb2x1bWUo ZG91YmxlKiB2KSB7CisrICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKKysgICp2ID0gdm9s ICogKDEuIC8gU0lPX01BWFZPTCk7CisrICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOwor K30KKysKKysvLyBUaGlzIHN0cmVhbSBpcyBhbHdheXMgdXNlZCB3aXRoIHN1YiBzZWNvbmQgYnVm ZmVyIHNpemVzLCB3aGVyZSBpdCdzCisrLy8gc3VmZmljaWVudCB0byBzaW1wbHkgYWx3YXlzIGZs dXNoIHVwb24gU3RhcnQoKS4KKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkZsdXNoKCkg e30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlRocmVhZExvb3Aodm9pZCkgewor KyAgaW50IGF2YWlsLCBjb3VudCwgcmVzdWx0OworKworKyAgd2hpbGUgKHN0YXRlID09IGtSdW5u aW5nKSB7CisrICAgIC8vIFVwZGF0ZSB2b2x1bWUgaWYgbmVlZGVkCisrICAgIHB0aHJlYWRfbXV0 ZXhfbG9jaygmbXV0ZXgpOworKyAgICBpZiAodm9scGVuZGluZykgeworKyAgICAgIHZvbHBlbmRp bmcgPSAwOworKyAgICAgIHNpb19zZXR2b2woaGRsLCB2b2wpOworKyAgICB9CisrICAgIHB0aHJl YWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisrCisrICAgIC8vIEdldCBkYXRhIHRvIHBsYXkKKysg ICAgY29uc3QgYmFzZTo6VGltZURlbHRhIGRlbGF5ID0gQXVkaW9UaW1lc3RhbXBIZWxwZXI6OkZy YW1lc1RvVGltZShod19kZWxheSwKKysJcGFyYW1zLnNhbXBsZV9yYXRlKCkpOworKyAgICBjb3Vu dCA9IHNvdXJjZS0+T25Nb3JlRGF0YShkZWxheSwgYmFzZTo6VGltZVRpY2tzOjpOb3coKSwgMCwg YXVkaW9fYnVzLmdldCgpKTsKKysgICAgYXVkaW9fYnVzLT5Ub0ludGVybGVhdmVkKGNvdW50LCBT YW1wbGVGb3JtYXRUb0J5dGVzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KSwgYnVmZmVyKTsKKysg ICAgaWYgKGNvdW50ID09IDApIHsKKysgICAgICAvLyBXZSBoYXZlIHRvIHN1Ym1pdCBzb21ldGhp bmcgdG8gdGhlIGRldmljZQorKyAgICAgIGNvdW50ID0gYXVkaW9fYnVzLT5mcmFtZXMoKTsKKysg ICAgICBtZW1zZXQoYnVmZmVyLCAwLCBjb3VudCAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1lKGtT YW1wbGVGb3JtYXQpKTsKKysgICAgICBMT0coV0FSTklORykgPDwgIk5vIGRhdGEgdG8gcGxheSwg cnVubmluZyBlbXB0eSBjeWNsZS4iOworKyAgICB9CisrCisrICAgIC8vIFN1Ym1pdCBkYXRhIHRv IHRoZSBkZXZpY2UKKysgICAgYXZhaWwgPSBjb3VudCAqIHBhcmFtcy5HZXRCeXRlc1BlckZyYW1l KGtTYW1wbGVGb3JtYXQpOworKyAgICByZXN1bHQgPSBzaW9fd3JpdGUoaGRsLCBidWZmZXIsIGF2 YWlsKTsKKysgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisrICAgICAgTE9HKFdBUk5JTkcpIDw8ICJB dWRpbyBkZXZpY2UgZGlzY29ubmVjdGVkLiI7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKysg ICAgLy8gVXBkYXRlIGhhcmR3YXJlIHBvaW50ZXIKKysgICAgaHdfZGVsYXkgKz0gY291bnQ7Cisr ICB9CisrfQorKworK30gIC8vIG5hbWVzcGFjZSBtZWRpYQorZGlmZiAtTmF1ciBjaHJvbWl1bS04 My4wLjQxMDMuOTcub3JpZy9tZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaCBjaHJvbWl1 bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgKKy0tLSBtZWRp YS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaC5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAw MDAwMDAwICswMTAwCisrKysgbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmgJMjAyMC0w Ni0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKK0BAIC0wLDAgKzEsODYgQEAKKysvLyBDb3B5 cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CisrLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUg bGljZW5zZSB0aGF0IGNhbiBiZQorKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisr I2lmbmRlZiBNRURJQV9BVURJT19TTkRJT19TTkRJT19PVVRQVVRfSF8KKysjZGVmaW5lIE1FRElB X0FVRElPX1NORElPX1NORElPX09VVFBVVF9IXworKworKyNpbmNsdWRlIDxwdGhyZWFkLmg+Cisr I2luY2x1ZGUgPHNuZGlvLmg+CisrCisrI2luY2x1ZGUgImJhc2UvdGltZS90aWNrX2Nsb2NrLmgi CisrI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1 ZGlvX2lvLmgiCisrCisrbmFtZXNwYWNlIG1lZGlhIHsKKysKKytjbGFzcyBBdWRpb01hbmFnZXJC YXNlOworKworKy8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtIHVzaW5nIHNu ZGlvKDcpCisrY2xhc3MgU25kaW9BdWRpb091dHB1dFN0cmVhbSA6IHB1YmxpYyBBdWRpb091dHB1 dFN0cmVhbSB7CisrIHB1YmxpYzoKKysgIC8vIFRoZSBtYW5hZ2VyIGlzIGNyZWF0aW5nIHRoaXMg b2JqZWN0CisrICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYg cGFyYW1zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXJCYXNlKiBtYW5h Z2VyKTsKKysgIHZpcnR1YWwgflNuZGlvQXVkaW9PdXRwdXRTdHJlYW0oKTsKKysKKysgIC8vIElt cGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtLgorKyAgYm9vbCBPcGVuKCkgb3ZlcnJp ZGU7CisrICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7CisrICB2b2lkIFN0YXJ0KEF1ZGlvU291cmNl Q2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKysgIHZvaWQgU3RvcCgpIG92ZXJyaWRlOwor KyAgdm9pZCBTZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkgb3ZlcnJpZGU7CisrICB2b2lkIEdldFZv bHVtZShkb3VibGUqIHZvbHVtZSkgb3ZlcnJpZGU7CisrICB2b2lkIEZsdXNoKCkgb3ZlcnJpZGU7 CisrCisrICBmcmllbmQgdm9pZCBzbmRpb19vbm1vdmUodm9pZCAqYXJnLCBpbnQgZGVsdGEpOwor KyAgZnJpZW5kIHZvaWQgc25kaW9fb252b2wodm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9sKTsK KysgIGZyaWVuZCB2b2lkICpzbmRpb190aHJlYWRzdGFydCh2b2lkICphcmcpOworKworKyBwcml2 YXRlOgorKyAgZW51bSBTdHJlYW1TdGF0ZSB7CisrICAgIGtDbG9zZWQsICAgICAgICAgICAgLy8g Tm90IG9wZW5lZCB5ZXQKKysgICAga1N0b3BwZWQsICAgICAgICAgICAvLyBEZXZpY2Ugb3BlbmVk LCBidXQgbm90IHN0YXJ0ZWQgeWV0CisrICAgIGtSdW5uaW5nLCAgICAgICAgICAgLy8gU3RhcnRl ZCwgZGV2aWNlIHBsYXlpbmcKKysgICAga1N0b3BXYWl0ICAgICAgICAgICAvLyBTdG9wcGluZywg d2FpdGluZyBmb3IgdGhlIHJlYWwtdGltZSB0aHJlYWQgdG8gZXhpdAorKyAgfTsKKysKKysgIC8v IEMtc3R5bGUgY2FsbC1iYWNrcworKyAgc3RhdGljIHZvaWQgT25Nb3ZlQ2FsbGJhY2sodm9pZCAq YXJnLCBpbnQgZGVsdGEpOworKyAgc3RhdGljIHZvaWQgT25Wb2xDYWxsYmFjayh2b2lkICphcmcs IHVuc2lnbmVkIGludCB2b2wpOworKyAgc3RhdGljIHZvaWQqIFRocmVhZEVudHJ5KHZvaWQgKmFy Zyk7CisrCisrICAvLyBDb250aW51b3VzbHkgbW92ZXMgZGF0YSBmcm9tIHRoZSBwcm9kdWNlciB0 byB0aGUgZGV2aWNlCisrICB2b2lkIFRocmVhZExvb3Aodm9pZCk7CisrCisrICAvLyBPdXIgY3Jl YXRvciwgdGhlIGF1ZGlvIG1hbmFnZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiB3ZSBjbG9z ZS4KKysgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXI7CisrICAvLyBQYXJhbWV0ZXJzIG9mIHRo ZSBzb3VyY2UKKysgIEF1ZGlvUGFyYW1ldGVycyBwYXJhbXM7CisrICAvLyBTb3VyY2Ugc3RvcmVz IGRhdGEgaGVyZQorKyAgc3RkOjp1bmlxdWVfcHRyPEF1ZGlvQnVzPiBhdWRpb19idXM7CisrICAv LyBDYWxsLWJhY2sgdGhhdCBwcm9kdWNlcyBkYXRhIHRvIHBsYXkKKysgIEF1ZGlvU291cmNlQ2Fs bGJhY2sqIHNvdXJjZTsKKysgIC8vIEhhbmRsZSBvZiB0aGUgYXVkaW8gZGV2aWNlCisrICBzdHJ1 Y3Qgc2lvX2hkbCogaGRsOworKyAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RyZWFtCisrICBl bnVtIFN0cmVhbVN0YXRlIHN0YXRlOworKyAgLy8gSGlnaCBwcmlvcml0eSB0aHJlYWQgcnVubmlu ZyBUaHJlYWRMb29wKCkKKysgIHB0aHJlYWRfdCB0aHJlYWQ7CisrICAvLyBQcm90ZWN0cyB2b2ws IHZvbHBlbmRpbmcgYW5kIGh3X2RlbGF5CisrICBwdGhyZWFkX211dGV4X3QgbXV0ZXg7CisrICAv LyBDdXJyZW50IHZvbHVtZSBpbiB0aGUgMC4uU0lPX01BWFZPTCByYW5nZQorKyAgaW50IHZvbDsK KysgIC8vIFNldCB0byAxIGlmIHZvbHVtZXMgbXVzdCBiZSByZWZyZXNoZWQgaW4gdGhlIHJlYWx0 aW1lIHRocmVhZAorKyAgaW50IHZvbHBlbmRpbmc7CisrICAvLyBOdW1iZXIgb2YgZnJhbWVzIGJ1 ZmZlcmVkIGluIHRoZSBoYXJkd2FyZQorKyAgaW50IGh3X2RlbGF5OworKyAgLy8gVGVtcG9yYXJ5 IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1jb21wYXRpYmxlIGZvcm1hdAorKyAg Y2hhciogYnVmZmVyOworKworKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNuZGlvQXVkaW9P dXRwdXRTdHJlYW0pOworK307CisrCisrfSAgLy8gbmFtZXNwYWNlIG1lZGlhCisrCisrI2VuZGlm ICAvLyBNRURJQV9BVURJT19TTkRJT19TTkRJT19PVVRQVVRfSF8KK2RpZmYgLU5hdXIgY2hyb21p dW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvbWVkaWFfb3B0aW9ucy5nbmkgY2hyb21pdW0tODMu MC40MTAzLjk3L21lZGlhL21lZGlhX29wdGlvbnMuZ25pCistLS0gbWVkaWEvbWVkaWFfb3B0aW9u cy5nbmkub3JpZwkyMDIwLTA2LTAzIDIwOjQwOjI2LjAwMDAwMDAwMCArMDIwMAorKysrIG1lZGlh L21lZGlhX29wdGlvbnMuZ25pCTIwMjAtMDYtMTMgMTc6MzI6MjguNTEyMzk1OTYzICswMjAwCitA QCAtMTE5LDYgKzExOSw5IEBACisgICAjIEVuYWJsZXMgcnVudGltZSBzZWxlY3Rpb24gb2YgQUxT QSBsaWJyYXJ5IGZvciBhdWRpby4KKyAgIHVzZV9hbHNhID0gZmFsc2UKKyAKKysgICMgRW5hYmxl IHJ1bnRpbWUgc2VsZWN0aW9uIG9mIHNuZGlvKDcpCisrICB1c2Vfc25kaW8gPSBmYWxzZQorKwor ICAgIyBBbHNhIHNob3VsZCBiZSB1c2VkIG9uIG5vbi1BbmRyb2lkLCBub24tTWFjIFBPU0lYIHN5 c3RlbXMuCisgICAjIEFsc2Egc2hvdWxkIGJlIHVzZWQgb24gZGVza3RvcCBDaHJvbWVjYXN0IGFu ZCBhdWRpby1vbmx5IENocm9tZWNhc3QgYnVpbGRzLgorICAgaWYgKGlzX3Bvc2l4ICYmICFpc19h bmRyb2lkICYmICFpc19tYWMgJiYKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxl cy9wYXRjaGVzL2Nocm9taXVtLXN5c3RlbS1ub2RlanMucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9u MTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zeXN0ZW0tbm9kZWpzLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODY2YjUxNjY1NmZkCi0tLSAvZGV2L251bGwK KysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc3lzdGVtLW5v ZGVqcy5wYXRjaApAQCAtMCwwICsxLDIwIEBACistLS0gdGhpcmRfcGFydHkvbm9kZS9ub2RlLnB5 CTIwMjEtMDUtMjAgMDQ6MTc6NTQuMDAwMDAwMDAwICswMjAwCisrKysgLQkyMDIxLTA1LTI1IDEx OjU3OjMyLjg5NTIyMjU1OSArMDIwMAorQEAgLTE3LDExICsxNywxMiBAQAorICAgaWYgcGxhdGZv cm0uc3lzdGVtKCkgPT0gJ0RhcndpbicgYW5kIHBsYXRmb3JtLm1hY2hpbmUoKSA9PSAnYXJtNjQn OgorICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4ob3NfcGF0aC5qb2luKG9zX3BhdGguZGlybmFt ZShfX2ZpbGVfXyksICdtYWMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vZGUtZGFy d2luLWFybTY0JywgJ2JpbicsICdub2RlJykpCistICByZXR1cm4gb3NfcGF0aC5qb2luKG9zX3Bh dGguZGlybmFtZShfX2ZpbGVfXyksICp7CistICAgICdEYXJ3aW4nOiAoJ21hYycsICdub2RlLWRh cndpbi14NjQnLCAnYmluJywgJ25vZGUnKSwKKy0gICAgJ0xpbnV4JzogKCdsaW51eCcsICdub2Rl LWxpbnV4LXg2NCcsICdiaW4nLCAnbm9kZScpLAorLSAgICAnV2luZG93cyc6ICgnd2luJywgJ25v ZGUuZXhlJyksCistICB9W3BsYXRmb3JtLnN5c3RlbSgpXSkKKysgIHJldHVybiAiL3Vzci9iaW4v bm9kZSIKKysgICNyZXR1cm4gb3NfcGF0aC5qb2luKG9zX3BhdGguZGlybmFtZShfX2ZpbGVfXyks ICp7CisrICAjICAnRGFyd2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdu b2RlJyksCisrICAjICAnTGludXgnOiAoJ2xpbnV4JywgJ25vZGUtbGludXgteDY0JywgJ2Jpbics ICdub2RlJyksCisrICAjICAnV2luZG93cyc6ICgnd2luJywgJ25vZGUuZXhlJyksCisrICAjfVtw bGF0Zm9ybS5zeXN0ZW0oKV0pCisgCisgCisgZGVmIFJ1bk5vZGUoY21kX3BhcnRzLCBzdGRvdXQ9 Tm9uZSk6CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS13ZWJydGMtaW5jbHVkZS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRj aGVzL2Nocm9taXVtLXdlYnJ0Yy1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uOTJlYzI3MmE4OWFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLWluY2x1ZGUucGF0Y2gK QEAgLTAsMCArMSwxMCBAQAorLS0tIHRoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3Bf Y2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfeDExLmNjLm9yaWcJMjAxOS0wMi0yMSAyMToy MToyNC40ODgwNTg5OTAgKzAxMDAKKysrKyB0aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNr dG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVyX3gxMS5jYwkyMDE5LTAyLTIxIDIxOjIx OjM2LjE1MTk2MTA2NCArMDEwMAorQEAgLTE2LDYgKzE2LDcgQEAKKyAKKyAjaW5jbHVkZSA8bWVt b3J5PgorICNpbmNsdWRlIDxzdHJpbmc+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRl IDx1dGlsaXR5PgorIAorICNpbmNsdWRlICJtb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9w X2ZyYW1lLmgiCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9j aHJvbWl1bS13ZWJydGMtcjAucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS13ZWJydGMtcjAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi43MGJiZWRlNDcyZjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0 cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtcjAucGF0Y2gKQEAgLTAsMCArMSwz MyBAQAorVXBzdHJlYW06IFllcywgaHR0cHM6Ly93ZWJydGMtcmV2aWV3Lmdvb2dsZXNvdXJjZS5j b20vOTM4NAorUmVhc29uOiBGaXhlcyBtdXNsIGJ1aWxkcyBvZiB3ZWJydGMKKworRnJvbSA3Zjkw ZTJjY2VkYTA0NThjZjU2MDI2ZWI2Y2NmZmI5NjFhNDc4MDRiIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogUmFwaGFlbCBLdWJvIGRhIENvc3RhIDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFA aW50ZWwuY29tPgorRGF0ZTogRnJpLCAxMyBPY3QgMjAxNyAxNTo0OTozMiArMDIwMAorU3ViamVj dDogW1BBVENIXSBJV1lVOiBJbmNsdWRlIG1hdGguaCBmb3Igcm91bmQoMykuCisKK21hdGguaCB3 YXMgYmVpbmcgaW1wbGljaXRseSBpbmNsdWRlZCwgd2hpY2ggY2FuIGJyZWFrIHRoZSBidWlsZCB3 aXRoCithbHRlcm5hdGl2ZSBsaWJjIGltcGxlbWVudGF0aW9ucy4KKworQnVnOiBOb25lCitDaGFu Z2UtSWQ6IEk5NjliMzIwYjY1ZDBmNDRhYmIzM2QzZTEwMzZjZmJjYjg1OWE0OTUyCitSZXZpZXdl ZC1vbjogaHR0cHM6Ly93ZWJydGMtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vOTM4NAorUmV2aWV3 ZWQtYnk6IFRvbW1pIDx0b21taUB3ZWJydGMub3JnPgorQ29tbWl0LVF1ZXVlOiBSYXBoYWVsIEt1 Ym8gZGEgQ29zdGEgKHJha3VjbykgPHJhcGhhZWwua3Viby5kYS5jb3N0YUBpbnRlbC5jb20+CitD ci1Db21taXQtUG9zaXRpb246IHJlZnMvaGVhZHMvbWFzdGVyQHsjMjAyOTJ9CistLS0KKworLS0t IHRoaXJkX3BhcnR5L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0LmNjCisrKysgdGhpcmRfcGFydHkvd2Vi cnRjL3AycC9iYXNlL3BvcnQuY2MKK0BAIC0xMCw2ICsxMCw4IEBACisgCisgI2luY2x1ZGUgInAy cC9iYXNlL3BvcnQuaCIKKyAKKysjaW5jbHVkZSA8bWF0aC5oPgorKworICNpbmNsdWRlIDxhbGdv cml0aG0+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy0tIAorMi4xNS4wLnJjMgorCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtc2l6 ZV90LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2Vi cnRjLXNpemVfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmVmN2VhMDljZjYzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxl cy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1zaXplX3QucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAor LS0tIHRoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2F1ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9j a2RyaWZ0X2RldGVjdG9yLmgJMjAyMC0wOC0xMCAyMDo0MjoyOS4wMDAwMDAwMDAgKzAyMDAKKysr KyB0aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9hdWRpb19wcm9jZXNzaW5nL2FlYzMvY2xvY2tk cmlmdF9kZXRlY3Rvci5oCTIwMjAtMDktMDQgMTI6NDc6MDcuMDE0ODMzNjMzICswMjAwCitAQCAt MTIsNiArMTIsNyBAQAorICNkZWZpbmUgTU9EVUxFU19BVURJT19QUk9DRVNTSU5HX0FFQzNfQ0xP Q0tEUklGVF9ERVRFQ1RPUl9IXworIAorICNpbmNsdWRlIDxhcnJheT4KKysjaW5jbHVkZSA8Y3N0 ZGRlZj4KKyAKKyBuYW1lc3BhY2Ugd2VicnRjIHsKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxl Y3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLWxpYnZweC5wYXRjaCBi L3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLWxp YnZweC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjc5MmJl ZmIzYTM5ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRj aGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLWxpYnZweC5wYXRjaApAQCAtMCwwICsxLDcyIEBACitV c2VzIGdlbmVyaWMgdGFyZ2V0IGZvciBub3cuIFRvIHVzZSBwcGM2NGxlLCBjaGFuZ2UgLS10YXJn ZXQgdG8gcHBjNjRsZS1nbnUKK2FuZCBhZGQgLS1lbmFibGUtdnN4LCBhbmQgY2hhbmdlIGdlbmVy aWMgdG8gcHBjIGZvciB0aGUgcnRjZCBoZWFkZXIuCisKK0Zyb20gMThlNmM1YzU1Y2ZhZTBjZmI0 NThkODIxMGQ3YmM3MDkzNjBhMGU5MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHE2 NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+CitEYXRlOiBXZWQsIDkgU2VwIDIwMjAgMTk6MDg6MjUg KzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZW5hYmxlIGdlbmVyYXRpb24gb2YgcHBjNjQgbGlidnB4 IGJpdHMKKwordGhpcyBkb2Vzbid0IHVwZGF0ZSB0aGUgZ25pIGZpbGUsIHRoYXQncyBkb25lIGZy b20KK3RoZSB0ZW1wbGF0ZSBieSBydW5uaW5nIHRoZSBhcHByb3ByaWF0ZSBzY3JpcHRzCistLS0K KyB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJTEQuZ24gICAgICAgIHwgNCArKysrCisgdGhpcmRfcGFy dHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaCB8IDkgKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2Vk LCAxMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvbGlidnB4L0JVSUxE LmduIHRoaXJkX3BhcnR5L2xpYnZweC9CVUlMRC5nbgoraW5kZXggNzE5OGU1OS4uMzMwMDQ4NSAx MDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJTEQuZ24KKysrKyB0aGlyZF9wYXJ0eS9s aWJ2cHgvQlVJTEQuZ24KK0BAIC0zMzYsNiArMzM2LDggQEAgc3RhdGljX2xpYnJhcnkoImxpYnZw eCIpIHsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBzb3VyY2VzID0gbGlidnB4X3NyY3NfYXJtNjQK KyAgICAgfQorKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAgIHNv dXJjZXMgPSBsaWJ2cHhfc3Jjc19wcGM2NAorICAgfQorIAorICAgY29uZmlncyAtPSBbICIvL2J1 aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCitkaWZmIC0tZ2l0IHRoaXJkX3Bh cnR5L2xpYnZweC9nZW5lcmF0ZV9nbmkuc2ggdGhpcmRfcGFydHkvbGlidnB4L2dlbmVyYXRlX2du aS5zaAoraW5kZXggYmNmODRiMC4uOGEzZjRmMSAxMDA3NTUKKy0tLSB0aGlyZF9wYXJ0eS9saWJ2 cHgvZ2VuZXJhdGVfZ25pLnNoCisrKysgdGhpcmRfcGFydHkvbGlidnB4L2dlbmVyYXRlX2duaS5z aAorQEAgLTM2MSw2ICszNjEsNyBAQCBnZW5fY29uZmlnX2ZpbGVzIGxpbnV4L2FybS1uZW9uLWhp Z2hiZCAiLS10YXJnZXQ9YXJtdjctbGludXgtZ2NjICR7YWxsX3BsYXRmb3JtcworIGdlbl9jb25m aWdfZmlsZXMgbGludXgvYXJtNjQtaGlnaGJkICItLXRhcmdldD1hcm12OC1saW51eC1nY2MgJHth bGxfcGxhdGZvcm1zfSAke0hJR0hCRH0iCisgZ2VuX2NvbmZpZ19maWxlcyBsaW51eC9taXBzZWwg Ii0tdGFyZ2V0PW1pcHMzMi1saW51eC1nY2MgJHthbGxfcGxhdGZvcm1zfSIKKyBnZW5fY29uZmln X2ZpbGVzIGxpbnV4L21pcHM2NGVsICItLXRhcmdldD1taXBzNjQtbGludXgtZ2NjICR7YWxsX3Bs YXRmb3Jtc30iCisrZ2VuX2NvbmZpZ19maWxlcyBsaW51eC9wcGM2NCAiLS10YXJnZXQ9Z2VuZXJp Yy1nbnUgJEhJR0hCRCAke2FsbF9wbGF0Zm9ybXN9IgorIGdlbl9jb25maWdfZmlsZXMgbGludXgv Z2VuZXJpYyAiLS10YXJnZXQ9Z2VuZXJpYy1nbnUgJEhJR0hCRCAke2FsbF9wbGF0Zm9ybXN9Igor IGdlbl9jb25maWdfZmlsZXMgd2luL2FybTY0ICItLXRhcmdldD1hcm02NC13aW42NC12czE1ICR7 YWxsX3BsYXRmb3Jtc30gJHtISUdIQkR9IgorIGdlbl9jb25maWdfZmlsZXMgd2luL2lhMzIgIi0t dGFyZ2V0PXg4Ni13aW4zMi12czE0ICR7YWxsX3BsYXRmb3Jtc30gJHt4ODZfcGxhdGZvcm1zfSIK K0BAIC0zODYsNiArMzg3LDcgQEAgbGludF9jb25maWcgbGludXgvYXJtLW5lb24taGlnaGJkCisg bGludF9jb25maWcgbGludXgvYXJtNjQtaGlnaGJkCisgbGludF9jb25maWcgbGludXgvbWlwc2Vs CisgbGludF9jb25maWcgbGludXgvbWlwczY0ZWwKKytsaW50X2NvbmZpZyBsaW51eC9wcGM2NAor IGxpbnRfY29uZmlnIGxpbnV4L2dlbmVyaWMKKyBsaW50X2NvbmZpZyB3aW4vYXJtNjQKKyBsaW50 X2NvbmZpZyB3aW4vaWEzMgorQEAgLTQxNSw2ICs0MTcsNyBAQCBnZW5fcnRjZF9oZWFkZXIgbGlu dXgvYXJtLW5lb24taGlnaGJkIGFybXY3CisgZ2VuX3J0Y2RfaGVhZGVyIGxpbnV4L2FybTY0LWhp Z2hiZCBhcm12OAorIGdlbl9ydGNkX2hlYWRlciBsaW51eC9taXBzZWwgbWlwc2VsCisgZ2VuX3J0 Y2RfaGVhZGVyIGxpbnV4L21pcHM2NGVsIG1pcHM2NGVsCisrZ2VuX3J0Y2RfaGVhZGVyIGxpbnV4 L3BwYzY0IGdlbmVyaWMKKyBnZW5fcnRjZF9oZWFkZXIgbGludXgvZ2VuZXJpYyBnZW5lcmljCisg Z2VuX3J0Y2RfaGVhZGVyIHdpbi9hcm02NCBhcm12OAorIGdlbl9ydGNkX2hlYWRlciB3aW4vaWEz MiB4ODYgIiR7cmVxdWlyZV9zc2UyfSIKK0BAIC01MDAsNiArNTAzLDEyIEBAIGlmIFsgLXogJE9O TFlfQ09ORklHUyBdOyB0aGVuCisgCisgICBlY2hvICJNSVBTNjQgc291cmNlIGxpc3QgaXMgaWRl bnRpY2FsIHRvIE1JUFMgc291cmNlIGxpc3QuIE5vIG5lZWQgdG8gZ2VuZXJhdGUgaXQuIgorIAor KyAgZWNobyAiR2VuZXJhdGUgcHBjNjQgc291cmNlIGxpc3QuIgorKyAgY29uZmlnPSQocHJpbnRf Y29uZmlnX2Jhc2ljIGxpbnV4L3BwYzY0KQorKyAgbWFrZV9jbGVhbgorKyAgbWFrZSBsaWJ2cHhf c3Jjcy50eHQgdGFyZ2V0PWxpYnMgJGNvbmZpZyA+IC9kZXYvbnVsbAorKyAgY29udmVydF9zcmNz X3RvX3Byb2plY3RfZmlsZXMgbGlidnB4X3NyY3MudHh0IGxpYnZweF9zcmNzX3BwYzY0CisrCisg ICBlY2hvICJHZW5lcmF0ZSBOYUNsIHNvdXJjZSBsaXN0LiIKKyAgIGNvbmZpZz0kKHByaW50X2Nv bmZpZ19iYXNpYyBuYWNsKQorICAgbWFrZV9jbGVhbgorLS0gCisyLjI4LjAKKwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUt c3VwcG9ydC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Nocm9taXVt LXh4eC1wcGM2NGxlLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi5iZDBiMGY2NTRhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0 cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoCkBA IC0wLDAgKzEsMzYzNiBAQAorY29tbWl0IDJjMDEzYTMxN2IxMTE0ZWY2N2NkYmJjMzA4MjRiMjg5 MDdiOWVhOTQKK0F1dGhvcjogRGFuaWVsIEtvbGVzYSA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+CitE YXRlOiAgIFdlZCBNYXIgMyAxOTowODoyOSAyMDIxICswMTAwCisKKyAgICBwcGM2NGxlIHN1cHBv cnQKKworZGlmZiAtLWdpdCBidWlsZC9kb3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkgYnVpbGQv ZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5CitpbmRleCAyODZhOTJhMjcuLmVjMzZhODVkMyAx MDA3NTUKKy0tLSBidWlsZC9kb3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKKysrKyBidWlsZC9k b3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKK0BAIC0xMyw2ICsxMywxMCBAQCBpbXBvcnQgc3lz CisgCisgCisgZGVmIE1haW4oYXJncyk6CisrICAjIElmIGBkaXNhYmxlX25hY2w9MWAgaXMgaW4g R1lQX0RFRklORVMsIGV4aXQKKysgIGlmICdkaXNhYmxlX25hY2w9MScgaW4gb3MuZW52aXJvbi5n ZXQoJ0dZUF9ERUZJTkVTJywgJycpOgorKyAgICByZXR1cm4gMAorKworICAgc2NyaXB0X2RpciA9 IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICAgc3JjX2RpciA9 IG9zLnBhdGguZGlybmFtZShzY3JpcHRfZGlyKQorICAgbmFjbF9kaXIgPSBvcy5wYXRoLmpvaW4o c3JjX2RpciwgJ25hdGl2ZV9jbGllbnQnKQorZGlmZiAtLWdpdCBjaHJvbWUvaW5zdGFsbGVyL2xp bnV4L0JVSUxELmduIGNocm9tZS9pbnN0YWxsZXIvbGludXgvQlVJTEQuZ24KK2luZGV4IDM1ZjAx ZDBhNC4uMjhmMmU3NDc1IDEwMDY0NAorLS0tIGNocm9tZS9pbnN0YWxsZXIvbGludXgvQlVJTEQu Z24KKysrKyBjaHJvbWUvaW5zdGFsbGVyL2xpbnV4L0JVSUxELmduCitAQCAtOTQsOCArOTQsNiBA QCBwYWNrYWdpbmdfZmlsZXMgPSBwYWNrYWdpbmdfZmlsZXNfYmluYXJpZXMgKyBbCisgICAgICAg ICAgICAgICAgICAgICAiJHJvb3Rfb3V0X2Rpci94ZGctbWltZSIsCisgICAgICAgICAgICAgICAg ICAgICAiJHJvb3Rfb3V0X2Rpci94ZGctc2V0dGluZ3MiLAorICAgICAgICAgICAgICAgICAgICAg IiRyb290X291dF9kaXIvbG9jYWxlcy9lbi1VUy5wYWsiLAorLSAgICAgICAgICAgICAgICAgICAg IiRyb290X291dF9kaXIvTUVJUHJlbG9hZC9tYW5pZmVzdC5qc29uIiwKKy0gICAgICAgICAgICAg ICAgICAgICIkcm9vdF9vdXRfZGlyL01FSVByZWxvYWQvcHJlbG9hZGVkX2RhdGEucGIiLAorICAg ICAgICAgICAgICAgICAgIF0KKyAKKyBhY3Rpb25fZm9yZWFjaCgiY2FsY3VsYXRlX2RlYl9kZXBl bmRlbmNpZXMiKSB7CitAQCAtMzE1LDcgKzMxMyw2IEBAIGdyb3VwKCJpbnN0YWxsZXJfZGVwcyIp IHsKKyAgICAgIjp0aGVtZV9maWxlcyIsCisgICAgICIvL2Nocm9tZSIsCisgICAgICIvL2Nocm9t ZTpwYWNrZWRfcmVzb3VyY2VzIiwKKy0gICAgIi8vY2hyb21lL2Jyb3dzZXIvcmVzb3VyY2VzL21l ZGlhL21laV9wcmVsb2FkOmNvbXBvbmVudCIsCisgICAgICIvL3NhbmRib3gvbGludXg6Y2hyb21l X3NhbmRib3giLAorICAgICAiLy90aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9oYW5kbGVy OmNyYXNocGFkX2hhbmRsZXIiLAorICAgXQorZGlmZiAtLWdpdCBzYW5kYm94L2ZlYXR1cmVzLmdu aSBzYW5kYm94L2ZlYXR1cmVzLmduaQoraW5kZXggZGIzMGFlNmQ2Li45ZGMwOWJmNTMgMTAwNjQ0 CistLS0gc2FuZGJveC9mZWF0dXJlcy5nbmkKKysrKyBzYW5kYm94L2ZlYXR1cmVzLmduaQorQEAg LTExLDcgKzExLDggQEAgaW1wb3J0KCIvL2J1aWxkL2NvbmZpZy9uYWNsL2NvbmZpZy5nbmkiKQor IHVzZV9zZWNjb21wX2JwZiA9IChpc19saW51eCB8fCBpc19jaHJvbWVvcyB8fCBpc19hbmRyb2lk KSAmJgorICAgICAgICAgICAgICAgICAgIChjdXJyZW50X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50 X2NwdSA9PSAieDY0IiB8fAorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X2NwdSA9PSAiYXJt IiB8fCBjdXJyZW50X2NwdSA9PSAiYXJtNjQiIHx8CistICAgICAgICAgICAgICAgICAgIGN1cnJl bnRfY3B1ID09ICJtaXBzZWwiIHx8IGN1cnJlbnRfY3B1ID09ICJtaXBzNjRlbCIpCisrICAgICAg ICAgICAgICAgICAgIGN1cnJlbnRfY3B1ID09ICJtaXBzZWwiIHx8IGN1cnJlbnRfY3B1ID09ICJt aXBzNjRlbCIgfHwKKysgICAgICAgICAgICAgICAgICAgY3VycmVudF9jcHUgPT0gInBwYzY0IikK KyAKKyB1c2Vfc2VjY29tcF9icGYgPSB1c2Vfc2VjY29tcF9icGYgfHwgaXNfbmFjbF9ub25zZmkK KyAKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9CVUlMRC5nbiBzYW5kYm94L2xpbnV4L0JVSUxE LmduCitpbmRleCBlOWE5NGI0NjEuLmNjYTFhNWRhNSAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4 L0JVSUxELmduCisrKysgc2FuZGJveC9saW51eC9CVUlMRC5nbgorQEAgLTQyNyw2ICs0MjcsOCBA QCBjb21wb25lbnQoInNhbmRib3hfc2VydmljZXMiKSB7CisgCisgc291cmNlX3NldCgic2FuZGJv eF9zZXJ2aWNlc19oZWFkZXJzIikgeworICAgc291cmNlcyA9IFsKKysgICAgInN5c3RlbV9oZWFk ZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiLAorKyAgICAic3lzdGVtX2hlYWRlcnMvcHBjNjRf bGludXhfdWNvbnRleHQuaCIsCisgICAgICJzeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNj YWxscy5oIiwKKyAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF9zeXNjYWxscy5oIiwKKyAg ICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIiwKK2RpZmYgLS1naXQgc2Fu ZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmggc2FuZGJveC9saW51eC9i cGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKK2luZGV4IDMxMzUxMWYyMi4uMGNhM2EzMjZm IDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5o CisrKysgc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKK0BAIC01 Niw2ICs1NiwxMyBAQAorICNkZWZpbmUgTUFYX1BVQkxJQ19TWVNDQUxMIF9fTlJfc3lzY2FsbHMK KyAjZGVmaW5lIE1BWF9TWVNDQUxMIE1BWF9QVUJMSUNfU1lTQ0FMTAorIAorKyNlbGlmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKysKKysjaW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgorKyNkZWZpbmUg TUlOX1NZU0NBTEwgMHUKKysjZGVmaW5lIE1BWF9QVUJMSUNfU1lTQ0FMTCAzODZ1CisrI2RlZmlu ZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZU0NBTEwKKysKKyAjZWxzZQorICNlcnJvciAiVW5z dXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgorICNlbmRpZgorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4 L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaCBzYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9t YWNyb3MuaAoraW5kZXggMWE0MDdiOTUyLi5hNmFlYzU0NGUgMTAwNjQ0CistLS0gc2FuZGJveC9s aW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKKysrKyBzYW5kYm94L2xpbnV4L2JwZl9kc2wv c2VjY29tcF9tYWNyb3MuaAorQEAgLTE2LDYgKzE2LDkgQEAKKyAjaWYgZGVmaW5lZChfX21pcHNf XykKKyAvLyBzeXMvdXNlci5oIGluIGVnbGliYyBtaXNzZXMgc2l6ZV90IGRlZmluaXRpb24KKyAj aW5jbHVkZSA8c3RkZGVmLmg+CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKy8vIE1h bnVhbGx5IGRlZmluZSBncmVnX3Qgb24gcHBjNjQKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u ZyBncmVnX3Q7CisgI2VuZGlmCisgI2VuZGlmCisgCitAQCAtMzQ2LDYgKzM0OSw1MSBAQCBzdHJ1 Y3QgcmVnc19zdHJ1Y3QgeworICNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNChfcmVncykgKF9yZWdz KS5yZWdzWzNdCisgI2RlZmluZSBTRUNDT01QX1BUX1BBUk01KF9yZWdzKSAoX3JlZ3MpLnJlZ3Nb NF0KKyAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3MpIChfcmVncykucmVnc1s1XQorKwor KyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgor KworK3R5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19zdHJ1Y3Q7CisrCisrI2lmZGVmIEFSQ0hf Q1BVX0xJVFRMRV9FTkRJQU4KKysjZGVmaW5lIFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0 TEUKKysjZWxzZQorKyNkZWZpbmUgU0VDQ09NUF9BUkNIIEFVRElUX0FSQ0hfUFBDNjQKKysjZW5k aWYKKysKKysjZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgsIF9yZWcpICgoX2N0eCktPnVjX21jb250 ZXh0LnJlZ3MtPmdwcltfcmVnXSkKKysKKysjZGVmaW5lIFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNF Q0NPTVBfUkVHKF9jdHgsIDMpCisrI2RlZmluZSBTRUNDT01QX1NZU0NBTEwoX2N0eCkgU0VDQ09N UF9SRUcoX2N0eCwgMCkKKysjZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkgKF9jdHgpLT51Y19tY29u dGV4dC5yZWdzLT5uaXAKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTEoX2N0eCkgU0VDQ09NUF9SRUco X2N0eCwgMykKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTIoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwg NCkKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNSkKKysj ZGVmaW5lIFNFQ0NPTVBfUEFSTTQoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNikKKysjZGVmaW5l IFNFQ0NPTVBfUEFSTTUoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNykKKysjZGVmaW5lIFNFQ0NP TVBfUEFSTTYoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgOCkKKysKKysjZGVmaW5lIFNFQ0NPTVBf TlJfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIG5yKSkKKysjZGVmaW5l IFNFQ0NPTVBfQVJDSF9JRFggKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJj aCkpCisrI2RlZmluZSBTRUNDT01QX0lQX01TQl9JRFggXAorKyAgKG9mZnNldG9mKHN0cnVjdCBh cmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9pbnRlcikgKyA0KQorKyNkZWZpbmUgU0VD Q09NUF9JUF9MU0JfSURYIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEs IGluc3RydWN0aW9uX3BvaW50ZXIpICsgMCkKKysjZGVmaW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgo bnIpIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAq IChucikgKyA0KQorKyNkZWZpbmUgU0VDQ09NUF9BUkdfTFNCX0lEWChucikgXAorKyAgKG9mZnNl dG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJncykgKyA4ICogKG5yKSArIDApCisrCisr I2RlZmluZSBTRUNDT01QX1BUX1JFU1VMVChfcmVncykgKF9yZWdzKS5ncHJbM10KKysjZGVmaW5l IFNFQ0NPTVBfUFRfU1lTQ0FMTChfcmVncykgKF9yZWdzKS5ncHJbMF0KKysjZGVmaW5lIFNFQ0NP TVBfUFRfSVAoX3JlZ3MpIChfcmVncykubmlwCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk0xKF9y ZWdzKSAoX3JlZ3MpLmdwclszXQorKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNMihfcmVncykgKF9y ZWdzKS5ncHJbNF0KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTMoX3JlZ3MpIChfcmVncykuZ3By WzVdCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9yZWdzKSAoX3JlZ3MpLmdwcls2XQorKyNk ZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9yZWdzKS5ncHJbN10KKysjZGVmaW5lIFNF Q0NPTVBfUFRfUEFSTTYoX3JlZ3MpIChfcmVncykuZ3ByWzhdCisrCisgI2Vsc2UKKyAjZXJyb3Ig VW5zdXBwb3J0ZWQgdGFyZ2V0IHBsYXRmb3JtCisgCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2Mgc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYworaW5kZXggNmExZWMyMzg5Li5mMjBj NTgyZGQgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2Vs aW5lX3BvbGljeS5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNl bGluZV9wb2xpY3kuY2MKK0BAIC04OCw3ICs4OCw4IEBAIGJvb2wgSXNCYXNlbGluZVBvbGljeVdh dGNoZWQoaW50IHN5c25vKSB7CisgICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJjdGwoc3lzbm8p IHx8CisgICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJvY2Vzc0dyb3VwT3JTZXNzaW9uKHN5c25v KSB8fAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgICAgICAgU3lzY2FsbFNldHM6Oklz U29ja2V0Q2FsbChzeXNubykgfHwKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2FybV9fKQorQEAg LTIyNyw3ICsyMjgsNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2Rl bmllZF9lcnJubywKKyAgIH0KKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJj aDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgIGlmIChzeXNubyA9PSBfX05SX21tYXApCisgICAgIHJldHVybiBSZXN0cmljdE1tYXBG bGFncygpOworICNlbmRpZgorQEAgLTI0NSw3ICsyNDYsNyBAQCBSZXN1bHRFeHByIEV2YWx1YXRl U3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywKKyAgICAgcmV0dXJuIFJlc3RyaWN0UHJj dGwoKTsKKyAKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8 IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAg ZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgaWYgKHN5 c25vID09IF9fTlJfc29ja2V0cGFpcikgeworICAgICAvLyBPbmx5IGFsbG93IEFGX1VOSVgsIFBG X1VOSVguIENyYXNoIGlmIGFueXRoaW5nIGVsc2UgaXMgc2Vlbi4KKyAgICAgc3RhdGljX2Fzc2Vy dChBRl9VTklYID09IFBGX1VOSVgsCitAQCAtMjg1LDcgKzI4Niw4IEBAIFJlc3VsdEV4cHIgRXZh bHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vycm5vLAorICAgfQorIAorICNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICBpZiAoU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChzeXNubykp CisgICAgIHJldHVybiBSZXN0cmljdFNvY2tldGNhbGxDb21tYW5kKCk7CisgI2VuZGlmCitkaWZm IC0tZ2l0IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3lf dW5pdHRlc3QuY2Mgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3Bv bGljeV91bml0dGVzdC5jYworaW5kZXggMDFjMDQ2ZGRhLi43ZTVhNmJlODIgMTAwNjQ0CistLS0g c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVz dC5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xp Y3lfdW5pdHRlc3QuY2MKK0BAIC0zMDIsNyArMzAyLDcgQEAKKyBURVNUX0JBU0VMSU5FX1NJR1NZ UyhfX05SX3N5c2xvZykKKyBURVNUX0JBU0VMSU5FX1NJR1NZUyhfX05SX3RpbWVyX2NyZWF0ZSkK KyAKKy0jaWYgIWRlZmluZWQoX19hYXJjaDY0X18pCisrI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9f KSAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJf aW5vdGlmeV9pbml0KQorIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdnNlcnZlcikKKyAjZW5k aWYKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxf cGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2Mgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxw ZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKK2luZGV4IDJhOTdkMzkxNi4u OGU4MWFhNmNmIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9z eXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCisrKysgc2FuZGJveC9saW51eC9zZWNj b21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2MKK0BAIC00 MCw3ICs0MCw4IEBACisgI2luY2x1ZGUgPHN5cy9wdHJhY2UuaD4KKyAjaWYgKGRlZmluZWQoT1Nf TElOVVgpIHx8IEJVSUxERkxBRyhJU19DSFJPTUVPU19MQUNST1MpKSAmJiBcCisgICAgICFkZWZp bmVkKF9fYXJtX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiAgICAgICAgICAgXAorLSAg ICAhZGVmaW5lZChQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBKQorKyAgICAhZGVmaW5lZChQVFJBQ0Vf R0VUX1RIUkVBRF9BUkVBKSAmJgkJCSAgICBcCisrICAgICFkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisgLy8gQWxzbyBpbmNsdWRlIGFzbS9wdHJhY2UtYWJpLmggc2luY2UgcHRyYWNlLmggaW4gb2xk ZXIgbGliYyAoZm9yIGluc3RhbmNlCisgLy8gdGhlIG9uZSBpbiBVYnVudHUgMTYuMDQgTFRTKSBp cyBtaXNzaW5nIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEuCisgLy8gYXNtL3B0cmFjZS1hYmkuaCBk b2Vzbid0IGV4aXN0IG9uIGFybTMyIGFuZCBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIGlzbid0CitA QCAtNDksNiArNTAsMTEgQEAKKyAjZW5kaWYKKyAjZW5kaWYgIC8vICFPU19OQUNMX05PTlNGSQor IAorKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVy bWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAorKyNpZmRlZiBfX3Bvd2VycGM2NF9f CisrI2luY2x1ZGUgPHRlcm1pb3MuaD4KKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChPU19BTkRS T0lEKQorIAorICNpZiAhZGVmaW5lZChGX0RVUEZEX0NMT0VYRUMpCitAQCAtOTgsNiArMTA0LDE1 IEBAIGlubGluZSBib29sIElzQXJjaGl0ZWN0dXJlTWlwcygpIHsKKyAjZW5kaWYKKyB9CisgCisr aW5saW5lIGJvb2wgSXNBcmNoaXRlY3R1cmVQUEM2NCgpIHsKKysjaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorKyAgcmV0dXJuIHRydWU7CisrI2Vsc2UKKysgIHJldHVybiBmYWxzZTsKKysjZW5k aWYKKyt9CisrCisrCisgLy8gVWJ1bnR1J3MgdmVyc2lvbiBvZiBnbGliYyBoYXMgYSByYWNlIGNv bmRpdGlvbiBpbiBzZW1fcG9zdCB0aGF0IGNhbiBjYXVzZQorIC8vIGl0IHRvIGNhbGwgZnV0ZXgo Mikgd2l0aCBib2d1cyBvcCBhcmd1bWVudHMuIFRvIHdvcmthcm91bmQgdGhpcywgd2UgbmVlZAor IC8vIHRvIGFsbG93IHRob3NlIGZ1dGV4KDIpIGNhbGxzIHRvIGZhaWwgd2l0aCBFSU5WQUwsIGlu c3RlYWQgb2YgY3Jhc2hpbmcgdGhlCitAQCAtMjM5LDYgKzI1NCw4IEBAIFJlc3VsdEV4cHIgUmVz dHJpY3RGY250bENvbW1hbmRzKCkgeworICAgdWludDY0X3Qga09MYXJnZUZpbGVGbGFnID0gT19M QVJHRUZJTEU7CisgICBpZiAoSXNBcmNoaXRlY3R1cmVYODZfNjQoKSB8fCBJc0FyY2hpdGVjdHVy ZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1pcHMoKSkKKyAgICAga09MYXJnZUZpbGVGbGFnID0g MDEwMDAwMDsKKysgIGVsc2UgaWYgKElzQXJjaGl0ZWN0dXJlUFBDNjQoKSkKKysgICAga09MYXJn ZUZpbGVGbGFnID0gMDIwMDAwMDsKKyAKKyAgIGNvbnN0IEFyZzxpbnQ+IGNtZCgxKTsKKyAgIGNv bnN0IEFyZzxsb25nPiBsb25nX2FyZygyKTsKK0BAIC0yNzcsNyArMjc3LDE1IEBACisgICAgICAg ICAgICAgICBGX1NFVExLVywKKyAgICAgICAgICAgICAgIEZfR0VUTEssCisgICAgICAgICAgICAg ICBGX0RVUEZELAorLSAgICAgICAgICAgICAgRl9EVVBGRF9DTE9FWEVDKSwKKysgICAgICAgICAg ICAgIEZfRFVQRkRfQ0xPRVhFQworKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrLy8gT24g UFBDNjQsIEZfU0VUTEssIEZfR0VUTEssIEZfU0VUTEtXIGFyZSBkZWZpbmVkIGFzIHRoZSA2NC1i aXQgdmFyaWFudHMKKysvLyBidXQgZ2xpYmMgd2lsbCBzb21ldGltZXMgc3RpbGwgdXNlIHRoZSAz Mi1iaXQgdmVyc2lvbnMuIEFsbG93IGJvdGguCisrICAgICAgICAgICAgICA1LCAvKiBGX0dFVExL ICgzMikgKi8KKysgICAgICAgICAgICAgIDYsIC8qIEZfU0VUTEsgKDMyKSAqLworKyAgICAgICAg ICAgICAgNywgLyogRl9TRVRMS1cgKDMyKSAqLworKyNlbmRpZgorKyAgICAgICAgICAgICAgKSwK KyAgICAgICAgICAgICAgQWxsb3coKSkKKyAgICAgICAuQ2FzZShGX1NFVEZMLAorICAgICAgICAg ICAgIElmKChsb25nX2FyZyAmIH5rQWxsb3dlZE1hc2spID09IDAsIEFsbG93KCkpLkVsc2UoQ3Jh c2hTSUdTWVMoKSkpCitAQCAtMjg3LDcgKzI5NSw3IEBACisgICAvLyBjbGFuZy1mb3JtYXQgb24K KyB9CisgCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorIFJlc3VsdEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpIHsKKyAgIC8v IFVuZm9ydHVuYXRlbHksIHdlIGFyZSB1bmFibGUgdG8gcmVzdHJpY3QgdGhlIGZpcnN0IHBhcmFt ZXRlciB0bworICAgLy8gc29ja2V0cGFpcigyKS4gV2hpbHN0IGluaXRpYWxseSBzb3VuZGluZyBi YWQsIGl0J3Mgbm90ZXdvcnRoeSB0aGF0IHZlcnkKK0BAIC00MTMsNyArNDM5LDcgQEAgUmVzdWx0 RXhwciBSZXN0cmljdFB0cmFjZSgpIHsKKyAjZW5kaWYKKyAgIHJldHVybiBTd2l0Y2gocmVxdWVz dCkKKyAgICAgICAuQ0FTRVMoKAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgIWRl ZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgICAgICAg ICAgICAgICBQVFJBQ0VfR0VUUkVHUywgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNFX0dFVF9USFJF QURfQVJFQSwKKyAgICAgICAgICAgICAgICAgIFBUUkFDRV9HRVRSRUdTRVQsCisgI2VuZGlmCitk aWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFt ZXRlcnNfcmVzdHJpY3Rpb25zLmggc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5 c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAoraW5kZXggYmE0Mjg5ZjA1Li45YTRkNWFi MmQgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxf cGFyYW1ldGVyc19yZXN0cmljdGlvbnMuaAorKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKK0BAIC00OCw3ICs0OCw3 IEBAIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RNcHJvdGVjdEZs YWdzKCk7CisgLy8gT19OT05CTE9DSyB8IE9fU1lOQyB8IE9fTEFSR0VGSUxFIHwgT19DTE9FWEVD IHwgT19OT0FUSU1FLgorIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJp Y3RGY250bENvbW1hbmRzKCk7CisgCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQo X19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAvLyBSZXN0cmljdCBzb2NrZXRjYWxsKDIpIHRvIG9u bHkgYWxsb3cgc29ja2V0cGFpcigyKSwgc2VuZCgyKSwgcmVjdigyKSwKKyAvLyBzZW5kdG8oMiks IHJlY3Zmcm9tKDIpLCBzaHV0ZG93bigyKSwgc2VuZG1zZygyKSBhbmQgcmVjdm1zZygyKS4KKyBT QU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1h bmQoKTsKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2Nh bGxfc2V0cy5jYyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRz LmNjCitpbmRleCA2NDJkZjcyMDcuLjM0ZjQ3ZWI3MyAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworQEAgLTI5LDcgKzI5LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAo c3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2dldHRpbWVvZmRheToKKyAjaWYgZGVmaW5lZChfX2kz ODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl90aW1lOgorICNl bmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAgLTQ1LDEyICs0NiwxNCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0FsbG93ZWRHZXR0aW1lKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfY2xv Y2tfbmFub3NsZWVwOiAgLy8gUGFyYW1ldGVycyBmaWx0ZXJlZCBieSBSZXN0cmljdENsb2NrSUQo KS4KKyAgICAgY2FzZSBfX05SX2Nsb2NrX3NldHRpbWU6ICAgIC8vIFByaXZpbGVnZWQuCisgI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2Z0aW1lOiAgLy8gT2Jzb2xldGUu CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zZXR0aW1lb2ZkYXk6ICAvLyBQcml2aWxlZ2VkLgor ICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAg ICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zdGltZToKKyAjZW5kaWYK KyAgICAgZGVmYXVsdDoKK0BAIC0xMTYsNyArMTE5LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNG aWxlU3lzdGVtKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfZmFjY2Vzc2F0OiAgLy8gRVBF Uk0gbm90IGEgdmFsaWQgZXJybm8uCisgICAgIGNhc2UgX19OUl9mY2htb2RhdDoKKyAgICAgY2Fz ZSBfX05SX2ZjaG93bmF0OiAgLy8gU2hvdWxkIGJlIGNhbGxlZCBjaG93bmF0ID8KKy0jaWYgZGVm aW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX25ld2ZzdGF0YXQ6ICAvLyBmc3RhdGF0KCkuIEVQRVJNIG5vdCBh IHZhbGlkIGVycm5vLgorICNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1f XykgfHwgXAorICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkKK0BAIC0xMzUsNyArMTM4LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNGaWxlU3lzdGVtKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfbWVtZmRfY3JlYXRlOgor ICAgICBjYXNlIF9fTlJfbWtkaXJhdDoKKyAgICAgY2FzZSBfX05SX21rbm9kYXQ6CistI2lmIGRl ZmluZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgICAgY2FzZSBfX05SX29sZGxzdGF0OgorICAgICBjYXNlIF9fTlJfb2xkc3Rh dDoKKyAjZW5kaWYKK0BAIC0xNDksNyArMTUyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxl U3lzdGVtKGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc3RhdGZzOiAgLy8g RVBFUk0gbm90IGEgdmFsaWQgZXJybm8uCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc3RhdGZzNjQ6CisgI2VuZGlmCisgICAgIGNh c2UgX19OUl9zeW1saW5rYXQ6CitAQCAtMTU5LDcgKzE2Myw4IEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzRmlsZVN5c3RlbShpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3RydW5jYXRlNjQ6Cisg I2VuZGlmCisgICAgIGNhc2UgX19OUl91bmxpbmthdDoKKy0jaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8 IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdXRpbWU6Cisg I2VuZGlmCisgICAgIGNhc2UgX19OUl91dGltZW5zYXQ6ICAvLyBOZXcuCitAQCAtMTgxLDcgKzE4 Niw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChp bnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAvLyBUT0RPKGpsbik6 IHRoZXNlIHNob3VsZCBiZSBkZW5pZWQgZ3JhY2VmdWxseSBhcyB3ZWxsIChtb3ZlZCBiZWxvdyku CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5l ZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KyAgICAgY2FzZSBfX05SX2ZhZHZpc2U2NDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgor ICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorQEAgLTE5NCwxMSArMjAwLDEyIEBAIGJv b2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8p IHsKKyAgICAgY2FzZSBfX05SX2Zsb2NrOiAgICAgIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5v LgorICAgICBjYXNlIF9fTlJfZnN0YXRmczogICAgLy8gR2l2ZSBpbmZvcm1hdGlvbiBhYm91dCB0 aGUgd2hvbGUgZmlsZXN5c3RlbS4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9mc3RhdGZzNjQ6CisgI2VuZGlmCisgICAgIGNhc2Ug X19OUl9mc3luYzogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorLSNpZiBkZWZpbmVkKF9f aTM4Nl9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisgICAgIGNhc2UgX19OUl9vbGRmc3RhdDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCitAQCAt MjA2LDYgKzIxMyw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nl c3NWaWFGZChpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3N5bmNfZmlsZV9yYW5nZTogIC8v IEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICNlbGlmIGRlZmluZWQoX19hcm1fXykKKyAgICAg Y2FzZSBfX05SX2FybV9zeW5jX2ZpbGVfcmFuZ2U6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJu by4KKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIGNhc2UgX19OUl9zeW5jX2Zp bGVfcmFuZ2UyOiAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZW5kaWYKKyAgICAgZGVm YXVsdDoKKyAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtMjMxLDcgKzI0MCw4IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzRGVuaWVkRmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgeworICNl bmRpZgorICAgICBjYXNlIF9fTlJfZ2V0ZGVudHM2NDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVy cm5vLgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9yZWFkZGlyOgor ICNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAgLTI3Miw3ICsyODIsNyBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc0dldFNpbXBsZUlkKGludCBzeXNubykgeworIGJvb2wgU3lzY2FsbFNldHM6 OklzUHJvY2Vzc1ByaXZpbGVnZUNoYW5nZShpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8p IHsKKyAgICAgY2FzZSBfX05SX2NhcHNldDoKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVm aW5lZChfX3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2 XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2lvcGVybTog IC8vIEludGVsIHByaXZpbGVnZS4KKyAgICAgY2FzZSBfX05SX2lvcGw6ICAgIC8vIEludGVsIHBy aXZpbGVnZS4KKyAjZW5kaWYKK0BAIC0zNTAsNyArMzUwLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNBbGxvd2VkU2lnbmFsSGFuZGxpbmcoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9ydF9z aWdyZXR1cm46CisgICAgIGNhc2UgX19OUl9ydF9zaWd0aW1lZHdhaXQ6CisgI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfcnRfc2lndGlt ZWR3YWl0X3RpbWU2NDoKKyAgICAgY2FzZSBfX05SX3NpZ2FjdGlvbjoKKyAgICAgY2FzZSBfX05S X3NpZ3Byb2NtYXNrOgorQEAgLTMzOSw3ICszNTAsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0Fs bG93ZWRTaWduYWxIYW5kbGluZyhpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05S X3NpZ25hbGZkNDoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8 fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVm aW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisgICAgIGNhc2UgX19OUl9zaWdwZW5kaW5nOgorICAgICBjYXNlIF9fTlJfc2lnc3VzcGVuZDoK KyAjZW5kaWYKK0BAIC0zNjMsNyArMzc1LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2Vk T3BlcmF0aW9uT25GZChpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX2R1cDM6 CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3No dXRkb3duOgorICNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAgLTM5Nyw3ICs0MDksNyBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRlYXRoKGludCBzeXNu bykgeworICAgICBjYXNlIF9fTlJfbWVtYmFycmllcjoKKyAgICAgY2FzZSBfX05SX3dhaXQ0Ogor ICAgICBjYXNlIF9fTlJfd2FpdGlkOgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQorKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl93 YWl0cGlkOgorICNlbmRpZgorICAgICAgIHJldHVybiB0cnVlOworQEAgLTQxNCw3ICs0MjYsNyBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRlYXRoKGludCBzeXNu bykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc2V0X3RpZF9hZGRyZXNzOgorICAgICBjYXNl IF9fTlJfdW5zaGFyZToKKy0jaWYgIWRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fYWFy Y2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3Zmb3JrOgorICNlbmRp ZgorICAgICBkZWZhdWx0OgorQEAgLTQ2Myw3ICs0NzUsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJ c0FsbG93ZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKKyAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgZGVmYXVsdDoKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRf XykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgICBjYXNlIF9fTlJfc29ja2V0cGFpcjogIC8vIFdlIHdpbGwgd2FudCB0byBpbnNwZWN0IGl0 cyBhcmd1bWVudC4KKyAjZW5kaWYKKyAgICAgICByZXR1cm4gZmFsc2U7CitAQCAtNDczLDcgKzQ4 NSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldE9yTW9kaWZ5U29ja2V0KGludCBz eXNubykgeworIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkR2V0T3JNb2RpZnlTb2NrZXQoaW50 IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgI2lmIGRlZmluZWQoX194ODZfNjRfXykg fHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCistICAgIGRlZmlu ZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2FjY2VwdDoKKyAgICAgY2FzZSBfX05SX2FjY2Vw dDQ6CisgICAgIGNhc2UgX19OUl9iaW5kOgorQEAgLTQ4OCw3ICs1MDAsOCBAQCBib29sIFN5c2Nh bGxTZXRzOjpJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubykgeworIH0KKyAKKyAj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZB TUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAg ZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIC8vIEJpZyBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwg Zm9yIHNvY2tldHMuCisgYm9vbCBTeXNjYWxsU2V0czo6SXNTb2NrZXRDYWxsKGludCBzeXNubykg eworICAgc3dpdGNoIChzeXNubykgeworQEAgLTUwMiw3ICs1MTUsOCBAQCBib29sIFN5c2NhbGxT ZXRzOjpJc1NvY2tldENhbGwoaW50IHN5c25vKSB7CisgfQorICNlbmRpZgorIAorLSNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykK KysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQo X19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIGJvb2wgU3lzY2Fs bFNldHM6OklzTmV0d29ya1NvY2tldEluZm9ybWF0aW9uKGludCBzeXNubykgeworICAgc3dpdGNo IChzeXNubykgeworICAgICBjYXNlIF9fTlJfZ2V0cGVlcm5hbWU6CitAQCAtNTI3LDcgKzU0MSw3 IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEFkZHJlc3NTcGFjZUFjY2VzcyhpbnQgc3lz bm8pIHsKKyAgICAgY2FzZSBfX05SX21pbmNvcmU6CisgICAgIGNhc2UgX19OUl9tbG9ja2FsbDoK KyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQo X19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX21t YXA6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykg fHwgXAorQEAgLTU1Nyw3ICs1NzEsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZW5l cmFsSW8oaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9s c2VlazoKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCist ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAg IGNhc2UgX19OUl9fbGxzZWVrOgorICNlbmRpZgorICNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykK K0BAIC01NjksMjYgKzU4NCwyOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRHZW5lcmFs SW8oaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9yZWFkdjoKKyAgICAgY2FzZSBfX05SX3By ZWFkNjQ6CisgI2lmIGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfcmVjdjoKKyAj ZW5kaWYKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRl ZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVm aW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9f TlJfcmVjdmZyb206ICAvLyBDb3VsZCBzcGVjaWZ5IHNvdXJjZS4KKyAgICAgY2FzZSBfX05SX3Jl Y3Ztc2c6ICAgLy8gQ291bGQgc3BlY2lmeSBzb3VyY2UuCisgI2VuZGlmCistI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNh c2UgX19OUl9zZWxlY3Q6CisgI2VuZGlmCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9fbmV3c2VsZWN0OgorICNlbmRpZgorICNpZiBkZWZp bmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYm IGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NlbmQ6CisgI2VuZGlmCisgI2lmIGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NlbmRtc2c6ICAvLyBD b3VsZCBzcGVjaWZ5IGRlc3RpbmF0aW9uLgorICAgICBjYXNlIF9fTlJfc2VuZHRvOiAgIC8vIENv dWxkIHNwZWNpZnkgZGVzdGluYXRpb24uCisgI2VuZGlmCitAQCAtNjQ1LDcgKzY2Miw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEJhc2ljU2NoZWR1bGVyKGludCBzeXNubykgeworICAg ICAgIHJldHVybiB0cnVlOworICAgICBjYXNlIF9fTlJfZ2V0cHJpb3JpdHk6CisgI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfbmljZToK KyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX3NldHByaW9yaXR5OgorQEAgLTY1Nyw3ICs2NzUsOCBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRCYXNpY1NjaGVkdWxlcihpbnQgc3lzbm8pIHsK KyBib29sIFN5c2NhbGxTZXRzOjpJc0FkbWluT3BlcmF0aW9uKGludCBzeXNubykgeworICAgc3dp dGNoIChzeXNubykgeworICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJD SF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBk ZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX2JkZmx1c2g6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9rZXhl Y19sb2FkOgorQEAgLTY3Myw3ICs2OTIsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FkbWluT3Bl cmF0aW9uKGludCBzeXNubykgeworIAorIGJvb2wgU3lzY2FsbFNldHM6OklzS2VybmVsTW9kdWxl KGludCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworLSNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmlu ZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9jcmVhdGVf bW9kdWxlOgorICAgICBjYXNlIF9fTlJfZ2V0X2tlcm5lbF9zeW1zOiAgLy8gU2hvdWxkIEVOT1NZ Uy4KKyAgICAgY2FzZSBfX05SX3F1ZXJ5X21vZHVsZToKK0BAIC03MDYsNyArNzI2LDggQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNGc0NvbnRyb2woaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9z d2Fwb2ZmOgorICAgICBjYXNlIF9fTlJfc3dhcG9uOgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8 fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hf Q1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVm aW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisgICAgIGNhc2UgX19OUl91bW91bnQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl91bW91bnQy OgorQEAgLTcyMiw3ICs3NDMsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc051bWEoaW50IHN5c25v KSB7CisgICAgIGNhc2UgX19OUl9nZXRjcHU6CisgICAgIGNhc2UgX19OUl9tYmluZDoKKyAjaWYg ZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlw c19fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJj aDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX21pZ3JhdGVf cGFnZXM6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9tb3ZlX3BhZ2VzOgorQEAgLTc1MSwxNCAr NzcyLDE1IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsUHJvY2Vzc0Vudmlyb25tZW50KGlu dCBzeXNubykgeworICAgc3dpdGNoIChzeXNubykgeworICAgICBjYXNlIF9fTlJfYWNjdDogIC8v IFByaXZpbGVnZWQuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQor KyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAg IGNhc2UgX19OUl9nZXRybGltaXQ6CisgI2VuZGlmCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 IGRlZmluZWQoX19hcm1fXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl91Z2V0cmxpbWl0 OgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFS Q0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl91bGlt aXQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9nZXRydXNhZ2U6CitAQCAtNzkyLDcgKzgxNCw3 IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzR2xvYmFsU3lzdGVtU3RhdHVzKGludCBzeXNubykgewor ICNlbmRpZgorICAgICBjYXNlIF9fTlJfc3lzaW5mbzoKKyAgICAgY2FzZSBfX05SX3VuYW1lOgor LSNpZiBkZWZpbmVkKF9faTM4Nl9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9vbGR1bmFtZToKKyAgICAgY2FzZSBfX05S X29sZG9sZHVuYW1lOgorICNlbmRpZgorQEAgLTg1NCw4ICs4NzYsMTYgQEAgYm9vbCBTeXNjYWxs U2V0czo6SXNTeXN0ZW1WU2VtYXBob3JlcyhpbnQgc3lzbm8pIHsKKyB9CisgI2VuZGlmCisgCisr Lyogc2hpdHR5IGhhY2sgYXJvdW5kIFZvaWQncyA0LjE5IGtlcm5lbCBoZWFkZXJzIG1pc3Npbmcg dGhvc2UgbnVtYmVycyAqLworKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmICFkZWZpbmVk KF9fTlJfc2htZ2V0KQorKyNkZWZpbmUgX19OUl9zaG1nZXQgMzk1CisrI2RlZmluZSBfX05SX3No bWN0bCAzOTYKKysjZGVmaW5lIF9fTlJfc2htYXQgMzk3CisrI2RlZmluZSBfX05SX3NobWR0IDM5 OAorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8 fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICBkZWZpbmVk KF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pIHx8IFwKKyAgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfNjRfQklUUykpCisg Ly8gVGhlc2UgZ2l2ZSBhIGxvdCBvZiBhbWJpZW50IGF1dGhvcml0eSBhbmQgYnlwYXNzIHRoZSBz ZXR1aWQgc2FuZGJveC4KKyBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZTaGFyZWRNZW1vcnko aW50IHN5c25vKSB7CitAQCAtODg3LDcgKzkxNyw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzU3lz dGVtVk1lc3NhZ2VRdWV1ZShpbnQgc3lzbm8pIHsKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVm aW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1J TFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorIC8vIEJpZyBzeXN0ZW0gViBtdWx0aXBsZXhpbmcgc3lzdGVtIGNhbGwuCisg Ym9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WSXBjKGludCBzeXNubykgeworICAgc3dpdGNoIChz eXNubykgeworQEAgLTkwNyw3ICs5MzgsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FueVN5c3Rl bVYoaW50IHN5c25vKSB7CisgICByZXR1cm4gSXNTeXN0ZW1WTWVzc2FnZVF1ZXVlKHN5c25vKSB8 fCBJc1N5c3RlbVZTZW1hcGhvcmVzKHN5c25vKSB8fAorICAgICAgICAgIElzU3lzdGVtVlNoYXJl ZE1lbW9yeShzeXNubyk7CisgI2VsaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkK KysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgcmV0dXJuIElz U3lzdGVtVklwYyhzeXNubyk7CisgI2VuZGlmCisgfQorQEAgLTk2MCw3ICs5OTIsOCBAQCBib29s IFN5c2NhbGxTZXRzOjpJc0ZhTm90aWZ5KGludCBzeXNubykgeworIGJvb2wgU3lzY2FsbFNldHM6 OklzVGltZXIoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19O Ul9nZXRpdGltZXI6CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2FsYXJtOgorICNlbmRpZgorICAgICBjYXNlIF9f TlJfc2V0aXRpbWVyOgorQEAgLTEwMTksMTggKzEwNTIsMjIgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNNaXNjKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfc3luY2ZzOgorICAgICBjYXNlIF9f TlJfdmhhbmd1cDoKKyAvLyBUaGUgc3lzdGVtIGNhbGxzIGJlbG93IGFyZSBub3QgaW1wbGVtZW50 ZWQuCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVm aW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX2Fmc19zeXNjYWxsOgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9icmVhazoKKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19t aXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJf Z2V0cG1zZzoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkK KysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9f TlJfZ3R0eToKKyAgICAgY2FzZSBfX05SX2lkbGU6CisgICAgIGNhc2UgX19OUl9sb2NrOgorQEAg LTEwMzgsMjAgKzEwNzUsMjIgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNNaXNjKGludCBzeXNubykg eworICAgICBjYXNlIF9fTlJfcHJvZjoKKyAgICAgY2FzZSBfX05SX3Byb2ZpbDoKKyAjZW5kaWYK Ky0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgICBjYXNlIF9fTlJfcHV0cG1zZzoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9f KQorICAgICBjYXNlIF9fTlJfc2VjdXJpdHk6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgICAgY2FzZSBfX05SX3N0dHk6CisgI2VuZGlmCistI2lmIGRlZmluZWQoX194ODZf NjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisgICAgIGNhc2UgX19OUl90dXhjYWxsOgorICNlbmRpZgorLSNpZiAhZGVmaW5lZChfX2FhcmNo NjRfXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgICAgIGNhc2UgX19OUl92c2VydmVyOgorICNlbmRpZgorICAgICAgIHJldHVybiB0cnVl OworZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9z ZXRzLmggc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5oCitp bmRleCA5MjM1MzNlYzkuLjQxMWY3MmFjZCAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKKysrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKK0BAIC00MywxMyArNDMsMTQgQEAgY2xhc3MgU0FO REJPWF9FWFBPUlQgU3lzY2FsbFNldHMgeworICAgc3RhdGljIGJvb2wgSXNEZW5pZWRHZXRPck1v ZGlmeVNvY2tldChpbnQgc3lzbm8pOworIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCist ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAv LyBCaWcgbXVsdGlwbGV4aW5nIHN5c3RlbSBjYWxsIGZvciBzb2NrZXRzLgorICAgc3RhdGljIGJv b2wgSXNTb2NrZXRDYWxsKGludCBzeXNubyk7CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCist ICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIHN0YXRpYyBib29sIElzTmV0d29ya1NvY2tldEluZm9y bWF0aW9uKGludCBzeXNubyk7CisgI2VuZGlmCisgCitAQCAtNzYsNyArNzcsNyBAQCBjbGFzcyBT QU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7CisgICBzdGF0aWMgYm9vbCBJc1N5c3RlbVZTZW1h cGhvcmVzKGludCBzeXNubyk7CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIGRlZmluZWQo X19hYXJjaDY0X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc CisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgfHwg XAorICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQ VV82NF9CSVRTKSkKKyAgIC8vIFRoZXNlIGdpdmUgYSBsb3Qgb2YgYW1iaWVudCBhdXRob3JpdHkg YW5kIGJ5cGFzcyB0aGUgc2V0dWlkIHNhbmRib3guCisgICBzdGF0aWMgYm9vbCBJc1N5c3RlbVZT aGFyZWRNZW1vcnkoaW50IHN5c25vKTsKK0BAIC04OCw3ICs4OSw4IEBAIGNsYXNzIFNBTkRCT1hf RVhQT1JUIFN5c2NhbGxTZXRzIHsKKyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX2kzODZfXykg fHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNI X0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRl ZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgLy8gQmlnIHN5c3RlbSBWIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbC4KKyAgIHN0YXRp YyBib29sIElzU3lzdGVtVklwYyhpbnQgc3lzbm8pOworICNlbmRpZgorZGlmZiAtLWdpdCBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2Mgc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi9zeXNjYWxsLmNjCitpbmRleCBlNDdlOThiZjUuLmQ1M2E3ZmY1NiAxMDA2NDQKKy0tLSBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKKysrKyBzYW5kYm94L2xpbnV4L3NlY2Nv bXAtYnBmL3N5c2NhbGwuY2MKK0BAIC0xOCw3ICsxOCw3IEBAIG5hbWVzcGFjZSBzYW5kYm94IHsK KyBuYW1lc3BhY2UgeworIAorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRl ZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAorLSAgICBkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKQorKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBkZWZpbmVk IChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisgLy8gTnVtYmVyIHRoYXQncyBub3QgY3VycmVudGx5 IHVzZWQgYnkgYW55IExpbnV4IGtlcm5lbCBBQklzLgorIGNvbnN0IGludCBrSW52YWxpZFN5c2Nh bGxOdW1iZXIgPSAweDM1MWQzOworICNlbHNlCitAQCAtMzEwLDEyICszMTAsNTYgQEAgYXNtKC8v IFdlIG5lZWQgdG8gYmUgYWJsZSB0byB0ZWxsIHRoZSBrZXJuZWwgZXhhY3RseSB3aGVyZSB3ZSBt YWRlIGEKKyAgICAgLy8gRW50ZXIgdGhlIGtlcm5lbAorICAgICAic3ZjIDBcbiIKKyAgICAgIjI6 cmV0XG4iCisrICAgICIuY2ZpX2VuZHByb2NcbiIKKysgICAgIi5zaXplIFN5c2NhbGxBc20sIC4t U3lzY2FsbEFzbVxuIgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgIi50ZXh0 XG4iCisrICAgICIuYWxpZ24gNFxuIgorKyAgICAiLnR5cGUgU3lzY2FsbEFzbSBAZnVuY3Rpb25c biIKKysgICAgIlN5c2NhbGxBc206XG4iCisrICAgICIuY2ZpX3N0YXJ0cHJvY1xuIgorKworKyAg ICAvLyBDaGVjayBpZiByMyBpcyBuZWdhdGl2ZQorKyAgICAiY21wZGkgMywgMFxuIgorKyAgICAi Ymd0IDJmXG4iCisrCisrICAgIC8vIExvYWQgYWRkcmVzcyBvZiAzZiBpbnRvIHIzIGFuZCByZXR1 cm4KKysgICAgIm1mbHIgMTBcbiIKKysgICAgImJsIDFmXG4iCisrICAgICIxOiBtZmxyIDNcbiIK KysgICAgIm10bHIgMTBcbiIKKysgICAgImFkZGkgMywgMywgNCoxM1xuIgorKyAgICAiYmxyXG4i CisrCisrICAgIC8vIExvYWQgYXJndW1lbnRzIGZyb20gYXJyYXkgaW50byByMy04CisrICAgIC8v IHNhdmUgcGFyYW0gMyBpbiByMTAKKysgICAgIjI6XG4iCisrICAgICJtciAwLCAzXG4iCisrICAg ICJsZCAzLCAwKDQpXG4iCisrICAgICJsZCA1LCAxNig0KVxuIgorKyAgICAibGQgNiwgMjQoNClc biIKKysgICAgImxkIDcsIDMyKDQpXG4iCisrICAgICJsZCA4LCA0MCg0KVxuIgorKyAgICAibGQg NCwgOCg0KVxuIgorKyAgICAibGkgOSwgMFxuIgorKworKyAgICAvLyBFbnRlciBrZXJuZWwKKysg ICAgInNjXG4iCisrCisrICAgIC8vIE1hZ2ljIHJldHVybiBhZGRyZXNzCisrICAgICIzOlxuIgor KyAgICAvLyBMaWtlIE1JUFMsIHBwYzY0IHJldHVybiB2YWx1ZXMgYXJlIGFsd2F5cyBwb3NpdGl2 ZS4KKysgICAgLy8gQ2hlY2sgZm9yIGVycm9yIGluIGNyMC5TTyBhbmQgbmVnYXRlIHVwb24gZXJy b3IKKysgICAgImJjIDQsIDMsIDRmXG4iCisrICAgICJuZWcgMywgM1xuIgorKyAgICAiNDogYmxy XG4iCisrCisgICAgICIuY2ZpX2VuZHByb2NcbiIKKyAgICAgIi5zaXplIFN5c2NhbGxBc20sIC4t U3lzY2FsbEFzbVxuIgorICNlbmRpZgorICAgICApOyAgLy8gYXNtCisgCistI2lmIGRlZmluZWQo X194ODZfNjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgZXh0ZXJuICJDIiB7CisgaW50cHRyX3QgU3lzY2FsbEFzbShpbnRwdHJfdCBuciwg Y29uc3QgaW50cHRyX3QgYXJnc1s2XSk7CisgfQorQEAgLTQyOSw2ICs0NzMsOCBAQCBpbnRwdHJf dCBTeXNjYWxsOjpDYWxsKGludCBuciwKKyAgICAgcmV0ID0gaW5vdXQ7CisgICB9CisgCisrI2Vs aWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgaW50cHRyX3QgcmV0ID0gU3lzY2FsbEFzbShu ciwgYXJncyk7CisgI2Vsc2UKKyAjZXJyb3IgIlVuaW1wbGVtZW50ZWQgYXJjaGl0ZWN0dXJlIgor ICNlbmRpZgorQEAgLTQ0NSw4ICs0OTEsMTggQEAgdm9pZCBTeXNjYWxsOjpQdXRWYWx1ZUluVWNv bnRleHQoaW50cHRyX3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7CisgICAgIC8vIG5lZWRz IHRvIGJlIGNoYW5nZWQgYmFjay4KKyAgICAgcmV0X3ZhbCA9IC1yZXRfdmFsOworICAgICBTRUND T01QX1BBUk00KGN0eCkgPSAxOworLSAgfSBlbHNlCisrICB9IGVsc2UgeworICAgICBTRUNDT01Q X1BBUk00KGN0eCkgPSAwOworKyAgfQorKyNlbmRpZgorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisrICAvLyBTYW1lIGFzIE1JUFMsIG5lZWQgdG8gaW52ZXJ0IHJldCBhbmQgc2V0IGVycm9y IHJlZ2lzdGVyIChjcjAuU08pCisrICBpZiAocmV0X3ZhbCA8PSAtMSAmJiByZXRfdmFsID49IC00 MDk1KSB7CisrICAgIHJldF92YWwgPSAtcmV0X3ZhbDsKKysgICAgY3R4LT51Y19tY29udGV4dC5y ZWdzLT5jY3IgfD0gKDEgPDwgMjgpOworKyAgfSBlbHNlIHsKKysgICAgY3R4LT51Y19tY29udGV4 dC5yZWdzLT5jY3IgJj0gfigxIDw8IDI4KTsKKysgIH0KKyAjZW5kaWYKKyAgIFNFQ0NPTVBfUkVT VUxUKGN0eCkgPSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwpOworIH0KK2RpZmYgLS1naXQg c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjIHNhbmRib3gvbGludXgvc2VjY29tcC1i cGYvdHJhcC5jYworaW5kZXggZjViODZhNzNhLi41ZTZjNGEwNjggMTAwNjQ0CistLS0gc2FuZGJv eC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCisrKysgc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi90cmFwLmNjCitAQCAtMjMyLDYgKzIzMiwyMCBAQCB2b2lkIFRyYXA6OlNpZ1N5cyhpbnQgbnIs IExpbnV4U2lnSW5mbyogaW5mbywgdWNvbnRleHRfdCogY3R4KSB7CisgICAgICAgU2V0SXNJblNp Z0hhbmRsZXIoKTsKKyAgICAgfQorIAorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAg IC8vIE9uIHBwYzY0K2dsaWJjLCBzb21lIHN5c2NhbGxzIHNlZW0gdG8gYWNjaWRlbnRhbGx5IG5l Z2F0ZSB0aGUgZmlyc3QKKysgICAgLy8gcGFyYW1ldGVyIHdoaWNoIGNhdXNlcyBjaGVja3MgYWdh aW5zdCBpdCB0byBmYWlsLiBGb3Igbm93LCBtYW51YWxseQorKyAgICAvLyBuZWdhdGUgdGhlbSBi YWNrLgorKyAgICAvLyBUT0RPKHNoYXduQGFuYXN0YXMuaW8pOiBpbnZlc3RpZ2F0ZSB0aGlzIGlz c3VlIGZ1cnRoZXIKKysgICAgYXV0byBuciA9IFNFQ0NPTVBfU1lTQ0FMTChjdHgpOworKyAgICBp ZiAobnIgPT0gX19OUl9vcGVuYXQgfHwgbnIgPT0gX19OUl9ta2RpcmF0IHx8IG5yID09IF9fTlJf ZmFjY2Vzc2F0IHx8IG5yID09IF9fTlJfcmVhZGxpbmthdCB8fAorKyAgICAgICAgbnIgPT0gX19O Ul9yZW5hbWVhdCB8fCBuciA9PSBfX05SX3JlbmFtZWF0MiB8fCBuciA9PSBfX05SX25ld2ZzdGF0 YXQgfHwgbnIgPT0gX19OUl91bmxpbmthdCkgeworKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PGlu dD4oU0VDQ09NUF9QQVJNMShjdHgpKSA+IDApIHsKKysgICAgICAgICAgICBTRUNDT01QX1BBUk0x KGN0eCkgPSAtU0VDQ09NUF9QQVJNMShjdHgpOworKyAgICAgICAgfQorKyAgICB9CisrI2VuZGlm CisrCisgICAgIC8vIENvcHkgdGhlIHNlY2NvbXAtc3BlY2lmaWMgZGF0YSBpbnRvIGEgYXJjaF9z ZWNjb21wX2RhdGEgc3RydWN0dXJlLiBUaGlzCisgICAgIC8vIGlzIHdoYXQgd2UgYXJlIHNob3dp bmcgdG8gVHJhcEZuYyBjYWxsYmFja3MgdGhhdCB0aGUgc3lzdGVtIGNhbGwKKyAgICAgLy8gZXZh bHVhdG9yIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc2FuZGJveC4KK2RpZmYgLS1naXQgc2FuZGJveC9s aW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYyBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRl bnRpYWxzLmNjCitpbmRleCBkN2I1ZDhjNDQuLjRhZGM2ZDBkNCAxMDA2NDQKKy0tLSBzYW5kYm94 L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCisrKysgc2FuZGJveC9saW51eC9zZXJ2aWNl cy9jcmVkZW50aWFscy5jYworQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBDaHJvb3RUb1NhZmVFbXB0 eURpcigpIHsKKyAgIHBpZF90IHBpZCA9IC0xOworICAgYWxpZ25hcygxNikgY2hhciBzdGFja19i dWZbUFRIUkVBRF9TVEFDS19NSU5dOworICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkp IHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNX0ZBTUlMWSkgfHwgXAorLSAgICBkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKQorKyAgICBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSB8fCBk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyAgIC8vIFRoZSBzdGFjayBncm93cyBkb3du d2FyZC4KKyAgIHZvaWQqIHN0YWNrID0gc3RhY2tfYnVmICsgc2l6ZW9mKHN0YWNrX2J1Zik7Cisg I2Vsc2UKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBwZXJz LmNjIHNhbmRib3gvbGludXgvc2VydmljZXMvc3lzY2FsbF93cmFwcGVycy5jYworaW5kZXggZmNm ZDJhYTEyLi5mNmViMzJmYjcgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9zZXJ2aWNlcy9zeXNj YWxsX3dyYXBwZXJzLmNjCisrKysgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBw ZXJzLmNjCitAQCAtNTgsNyArNTgsNyBAQCBsb25nIHN5c19jbG9uZSh1bnNpZ25lZCBsb25nIGZs YWdzLAorICNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl82NCkKKyAgIHJldHVybiBzeXNjYWxsKF9f TlJfY2xvbmUsIGZsYWdzLCBjaGlsZF9zdGFjaywgcHRpZCwgY3RpZCwgdGxzKTsKKyAjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1g4NikgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBc CistICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisrICAgIGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorICAgLy8g Q09ORklHX0NMT05FX0JBQ0tXQVJEUyBkZWZpbmVkLgorICAgcmV0dXJuIHN5c2NhbGwoX19OUl9j bG9uZSwgZmxhZ3MsIGNoaWxkX3N0YWNrLCBwdGlkLCB0bHMsIGN0aWQpOworICNlbmRpZgorZGlm ZiAtLWdpdCBzYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9wcm9jZXNzLmNjIHNh bmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3MuY2MKK2luZGV4IGQ3MmM5 ZDIzOC4uNzdmMWQ5NWY1IDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc3lzY2FsbF9icm9rZXIv YnJva2VyX3Byb2Nlc3MuY2MKKysrKyBzYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tl cl9wcm9jZXNzLmNjCitAQCAtMTY5LDcgKzE2OSw3IEBAIGJvb2wgQnJva2VyUHJvY2Vzczo6SXNT eXNjYWxsQnJva2VyYWJsZShpbnQgc3lzbm8sIGJvb2wgZmFzdF9jaGVjaykgY29uc3QgeworICNp ZiBkZWZpbmVkKF9fTlJfZnN0YXRhdDY0KQorICAgICBjYXNlIF9fTlJfZnN0YXRhdDY0OgorICNl bmRpZgorLSNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hYXJjaDY0X18pCisr I2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfbmV3ZnN0YXRhdDoKKyAjZW5kaWYKKyAg ICAgICByZXR1cm4gIWZhc3RfY2hlY2sgfHwgYWxsb3dlZF9jb21tYW5kX3NldF8udGVzdChDT01N QU5EX1NUQVQpOworZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4 X3NlY2NvbXAuaCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NlY2NvbXAuaAor aW5kZXggMWZhNDdlZDA5Li4zOWNjOWFiNTMgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy9saW51eF9zZWNjb21wLmgKKysrKyBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFk ZXJzL2xpbnV4X3NlY2NvbXAuaAorQEAgLTQxLDYgKzQxLDkgQEAKKyAjaWZuZGVmIEVNX0FBUkNI NjQKKyAjZGVmaW5lIEVNX0FBUkNINjQgMTgzCisgI2VuZGlmCisrI2lmbmRlZiBFTV9QUEM2NAor KyNkZWZpbmUgRU1fUFBDNjQgMjEKKysjZW5kaWYKKyAKKyAjaWZuZGVmIF9fQVVESVRfQVJDSF82 NEJJVAorICNkZWZpbmUgX19BVURJVF9BUkNIXzY0QklUIDB4ODAwMDAwMDAKK0BAIC03Myw2ICs3 NiwxMiBAQAorICNpZm5kZWYgQVVESVRfQVJDSF9BQVJDSDY0CisgI2RlZmluZSBBVURJVF9BUkNI X0FBUkNINjQgKEVNX0FBUkNINjQgfCBfX0FVRElUX0FSQ0hfNjRCSVQgfCBfX0FVRElUX0FSQ0hf TEUpCisgI2VuZGlmCisrI2lmbmRlZiBBVURJVF9BUkNIX1BQQzY0CisrI2RlZmluZSBBVURJVF9B UkNIX1BQQzY0IChFTV9QUEM2NCB8IF9fQVVESVRfQVJDSF82NEJJVCkKKysjZW5kaWYKKysjaWZu ZGVmIEFVRElUX0FSQ0hfUFBDNjRMRQorKyNkZWZpbmUgQVVESVRfQVJDSF9QUEM2NExFIChFTV9Q UEM2NCB8IF9fQVVESVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9MRSkKKysjZW5kaWYKKyAK KyAvLyBGb3IgcHJjdGwuaAorICNpZm5kZWYgUFJfU0VUX1NFQ0NPTVAKK2RpZmYgLS1naXQgc2Fu ZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaCBzYW5kYm94L2xpbnV4L3N5 c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oCitpbmRleCBmNWE3MzY3NjEuLjUxNWIyMWE1ZiAx MDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NpZ25hbC5oCisr Kysgc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF9zaWduYWwuaAorQEAgLTEzLDcg KzEzLDcgQEAKKyAvLyAobm90IHVuZGVmaW5lZCwgYnV0IGRlZmluZWQgZGlmZmVyZW50IHZhbHVl cyBhbmQgaW4gZGlmZmVyZW50IG1lbW9yeQorIC8vIGxheW91dHMpLiBTbywgZmlsbCB0aGUgZ2Fw IGhlcmUuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX2FybV9fKSB8fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAKKyAjZGVmaW5l IExJTlVYX1NJR0hVUCAxCisgI2RlZmluZSBMSU5VWF9TSUdJTlQgMgorZGlmZiAtLWdpdCBzYW5k Ym94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmggc2FuZGJveC9saW51eC9z eXN0ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oCitpbmRleCAyYjc4YTBjYzMuLjBhNzBmNWVh NSAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxz LmgKKysrKyBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxzLmgKK0BA IC0zNSw1ICszNSw5IEBACisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMv YXJtNjRfbGludXhfc3lzY2FsbHMuaCIKKyAjZW5kaWYKKyAKKysjaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xp bnV4X3N5c2NhbGxzLmgiCisrI2VuZGlmCisrCisgI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZ U1RFTV9IRUFERVJTX0xJTlVYX1NZU0NBTExTX0hfCisgCitkaWZmIC0tZ2l0IHNhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaCBzYW5kYm94L2xpbnV4L3N5c3RlbV9o ZWFkZXJzL2xpbnV4X3Vjb250ZXh0LmgKK2luZGV4IDIyY2U3ODAyNy4uYTY5YjAyNGMyIDEwMDY0 NAorLS0tIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAorKysr IHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAorQEAgLTExLDYg KzExLDggQEAKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm1fbGlu dXhfdWNvbnRleHQuaCIKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorICNpbmNsdWRlICJzYW5k Ym94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2kzODZfbGludXhfdWNvbnRleHQuaCIKKysjZWxpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hl YWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCIKKyAjZWxzZQorICNlcnJvciAiTm8gc3VwcG9y dCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gUE5hQ2wgaGVhZGVyIgorICNlbmRpZgorZGlmZiAt LWdpdCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgg c2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF9zeXNjYWxscy5oCituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwLi5jY2FjZmZlMjIKKy0tLSAvZGV2L251 bGwKKysrKyBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxz LmgKK0BAIC0wLDAgKzEsMTIgQEAKKysvLyBDb3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0 aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQg aW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hF QURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysjZGVmaW5lIFNBTkRCT1hfTElOVVhfU1lT VEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNfSF8KKysKKysjaW5jbHVkZSA8YXNtL3Vu aXN0ZC5oPgorKworKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVmaW5lIHN5c2NhbGwg bnVtYmVycyBmb3IgUFBDNjQ/CisrCisrI2VuZGlmICAvLyBTQU5EQk9YX0xJTlVYX1NZU1RFTV9I RUFERVJTX1BQQzY0X0xJTlVYX1NZU0NBTExTX0hfCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCBzYW5kYm94L2xpbnV4L3N5c3Rl bV9oZWFkZXJzL3BwYzY0X2xpbnV4X3Vjb250ZXh0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwMDAuLjA3NzI4ZTA4NworLS0tIC9kZXYvbnVsbAorKysrIHNhbmRib3gvbGlu dXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaAorQEAgLTAsMCArMSwxMiBA QAorKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJl c2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNE LXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxl LgorKworKyNpZm5kZWYgU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9V Q09OVEVYVF9IXworKyNkZWZpbmUgU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9M SU5VWF9VQ09OVEVYVF9IXworKworKyNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KKysKKysvL1RP RE86IGlzIGl0IG5lY2Vzc2FyeSB0byByZWRlZmluZSB1Y29udGV4dCBvbiBQUEM2ND8KKysKKysj ZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfVUNPTlRF WFRfSF8KK2RpZmYgLS1naXQgc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX3JlbmRlcmVyX3BvbGlj eV9saW51eC5jYyBzYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4 LmNjCitpbmRleCAyNTg4ZmM3OTIuLmQ0NTVjNDYwMSAxMDA2NDQKKy0tLSBzYW5kYm94L3BvbGlj eS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCisrKysgc2FuZGJveC9wb2xpY3kv bGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYworQEAgLTE1LDYgKzE1LDExIEBACisg I2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaCIK KyAjaW5jbHVkZSAic2FuZGJveC9wb2xpY3kvbGludXgvc2FuZGJveF9saW51eC5oIgorIAorKy8v IE9uIFBQQzY0LCBUQ0dFVFMgaXMgZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywg c28gd2UgbXVzdCBpbmNsdWRlIHRlcm1pb3MuaAorKyNpZmRlZiBfX3Bvd2VycGM2NF9fCisrI2lu Y2x1ZGUgPHRlcm1pb3MuaD4KKysjZW5kaWYKKysKKyAvLyBUT0RPKHZpZ25hdHRpKTogcmVwbGFj ZSB0aGUgbG9jYWwgZGVmaW5pdGlvbnMgYmVsb3cgd2l0aCAjaW5jbHVkZQorIC8vIDxsaW51eC9k bWEtYnVmLmg+IG9uY2Uga2VybmVsIHZlcnNpb24gNC42IGJlY29tZXMgd2lkZWx5IHVzZWQuCisg I2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2FuZ2xlL3Ny Yy9jb21waWxlci90cmFuc2xhdG9yL0luZm9TaW5rLmggdGhpcmRfcGFydHkvYW5nbGUvc3JjL2Nv bXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaAoraW5kZXggM2E4MDdlMWUzLi41MjU4NjE3YTcg MTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYW5nbGUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5m b1NpbmsuaAorKysrIHRoaXJkX3BhcnR5L2FuZ2xlL3NyYy9jb21waWxlci90cmFuc2xhdG9yL0lu Zm9TaW5rLmgKK0BAIC05Miw3ICs5MiwxNiBAQCBjbGFzcyBUSW5mb1NpbmtCYXNlCisgICAgICAg ICAgICAgc3RyZWFtLnByZWNpc2lvbig4KTsKKyAgICAgICAgICAgICBzdHJlYW0gPDwgZjsKKyAg ICAgICAgIH0KKy0gICAgICAgIHNpbmsuYXBwZW5kKHN0cmVhbS5zdHIoKSk7CisrCisrICAgICAg ICAvLyBIYWNrIHRvIHdvcmsgYXJvdW5kIGEgYnVnIHdoZXJlIG5lZ2F0aXZlIGZsb2F0aW5nIHBv aW50IHZhbHVlcworKyAgICAgICAgLy8gYXJlIHJlbmRlcmVkIGxpa2UgJy4wLjUnIGluc3RlYWQg b2YgJy0wLjUnCisrICAgICAgICBzdGQ6OnN0cmluZyByZXMoc3RyZWFtLnN0cigpKTsKKysKKysg ICAgICAgIGlmIChzaWduYml0KGYpKSB7IC8vIHRlc3QgaWYgZiBpcyBuZWdhdGl2ZQorKyAgICAg ICAgICAgIHJlc1swXSA9ICctJzsKKysgICAgICAgIH0KKysKKysgICAgICAgIHNpbmsuYXBwZW5k KHJlcyk7CisgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgIH0KKyAgICAgLy8gV3JpdGUgYm9v bGVhbiB2YWx1ZXMgYXMgdGhlaXIgbmFtZXMgaW5zdGVhZCBvZiBpbnRlZ3JhbCB2YWx1ZS4KK2Rp ZmYgLS1naXQgdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0NvbnN0YW50cy5oIHRoaXJk X3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9Db25zdGFudHMuaAoraW5kZXggZmNiYzkyNDZhLi4z OWFlNjYxNDggMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0NvbnN0 YW50cy5oCisrKysgdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0NvbnN0YW50cy5oCitA QCAtOSw2ICs5LDcgQEAKKyAjaWZuZGVmIExJQkFOR0xFX0NPTlNUQU5UU19IXworICNkZWZpbmUg TElCQU5HTEVfQ09OU1RBTlRTX0hfCisgCisrI2luY2x1ZGUgPGNzdGRkZWY+CisgI2luY2x1ZGUg ImNvbW1vbi9wbGF0Zm9ybS5oIgorIAorICNpbmNsdWRlIDxzdGRpbnQuaD4KK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduIHRoaXJkX3BhcnR5L2JvcmluZ3NzbC9CVUlM RC5nbgoraW5kZXggMTdjZjljZGE5Li44Y2U5NmJkMzIgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkv Ym9yaW5nc3NsL0JVSUxELmduCisrKysgdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCitA QCAtMTAzLDYgKzEwMywxMyBAQCBpZiAoaXNfd2luICYmICFpc19tc2FuICYmIGN1cnJlbnRfY3B1 ICE9ICJhcm02NCIpIHsKKyAgICAgICB9IGVsc2UgeworICAgICAgICAgcHVibGljX2NvbmZpZ3Mg PSBbICI6bm9fYXNtX2NvbmZpZyIgXQorICAgICAgIH0KKysgICAgfSBlbHNlIGlmIChjdXJyZW50 X2NwdSA9PSAicHBjNjQiKSB7CisrICAgICAgaWYgKGlzX2xpbnV4KSB7CisrICAgICAgICAjIFRP RE86IHBwYzY0IChiZSkgY2hlY2sKKysgICAgICAgIHNvdXJjZXMgKz0gY3J5cHRvX3NvdXJjZXNf bGludXhfcHBjNjRsZQorKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBwdWJsaWNfY29uZmlncyA9 IFsgIjpub19hc21fY29uZmlnIiBdCisrICAgICAgfQorICAgICB9IGVsc2UgeworICAgICAgIHB1 YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9jb25maWciIF0KKyAgICAgfQorZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbiB0aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5n bgoraW5kZXggNGFmM2Q3YmJmLi5hZGJmNTQxNTkgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJl YWtwYWQvQlVJTEQuZ24KKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbgorQEAgLTU5 Niw3ICs1OTYsNiBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3MgfHwgaXNfYW5kcm9pZCkg eworICAgICAgICJicmVha3BhZC9zcmMvY2xpZW50L21pbmlkdW1wX2ZpbGVfd3JpdGVyLmgiLAor ICAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2NvbnZlcnRfVVRGLmNjIiwKKyAgICAgICAiYnJl YWtwYWQvc3JjL2NvbW1vbi9jb252ZXJ0X1VURi5oIiwKKy0gICAgICAiYnJlYWtwYWQvc3JjL2Nv bW1vbi9saW51eC9icmVha3BhZF9nZXRjb250ZXh0LlMiLAorICAgICAgICJicmVha3BhZC9zcmMv Y29tbW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuY2MiLAorICAgICAgICJicmVha3BhZC9zcmMvY29t bW9uL2xpbnV4L2VsZl9jb3JlX2R1bXAuaCIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24v bGludXgvZWxmdXRpbHMuY2MiLAorQEAgLTYzNCw2ICs2MzMsMTQgQEAgaWYgKGlzX2xpbnV4IHx8 IGlzX2Nocm9tZW9zIHx8IGlzX2FuZHJvaWQpIHsKKyAKKyAgICAgbGlicyA9IFsgImRsIiBdCisg CisrICAgIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAgICAgICBkZWZpbmVzID0g WyAiSEFWRV9HRVRDT05URVhUIiBdCisrICAgIH0gZWxzZSB7CisrICAgICAgICBzb3VyY2VzICs9 IFsKKysgICAgICAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9icmVha3BhZF9nZXRj b250ZXh0LlMiCisrICAgICAgICBdCisrICAgIH0KKysKKyAgICAgaW5jbHVkZV9kaXJzID0gWwor ICAgICAgICIuIiwKKyAgICAgICAiYnJlYWtwYWQvc3JjIiwKK0BAIC02ODIsNyArNjg5LDYgQEAg aWYgKGlzX2xpbnV4IHx8IGlzX2Nocm9tZW9zIHx8IGlzX2FuZHJvaWQpIHsKKyAgICAgICAiYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3Vu aXR0ZXN0LmNjIiwKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0X3V0aWxzLmNjIiwKKyAgICAgICAiYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvcHJvY19jcHVpbmZvX3JlYWRlcl91 bml0dGVzdC5jYyIsCistICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvYnJlYWtwYWRf Z2V0Y29udGV4dF91bml0dGVzdC5jYyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGlu dXgvZWxmX2NvcmVfZHVtcF91bml0dGVzdC5jYyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21t b24vbGludXgvZmlsZV9pZF91bml0dGVzdC5jYyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21t b24vbGludXgvbGludXhfbGliY19zdXBwb3J0X3VuaXR0ZXN0LmNjIiwKK2RpZmYgLS1naXQgdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vcmF3X2NvbnRleHRfY3B1LmggdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKK2luZGV4 IDA3ZDkxNzFhMC4uOWFlZDRjYjM2IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Jhd19jb250ZXh0X2Nw dS5oCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9k dW1wX3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKK0BAIC00NCw2ICs0NCw4IEBAIHR5 cGVkZWYgTURSYXdDb250ZXh0QVJNIFJhd0NvbnRleHRDUFU7CisgdHlwZWRlZiBNRFJhd0NvbnRl eHRBUk02NF9PbGQgUmF3Q29udGV4dENQVTsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorIHR5 cGVkZWYgTURSYXdDb250ZXh0TUlQUyBSYXdDb250ZXh0Q1BVOworKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyt0eXBlZGVmIE1EUmF3Q29udGV4dFBQQzY0IFJhd0NvbnRleHRDUFU7Cisg I2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxh dGZvcm0geWV0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2Mg dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vdGhyZWFkX2luZm8uY2MKK2luZGV4IGFhZTFkYzEzYi4uMDNhZmVjN2E1IDEwMDY0 NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVt cF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8u Y2MKK0BAIC0yNzAsNyArMjcwLDQyIEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNvbnRleHQo UmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7CisgICBvdXQtPmZsb2F0X3NhdmUuZmlyID0gbWNv bnRleHQuZnBjX2VpcjsKKyAjZW5kaWYKKyB9CistI2VuZGlmICAvLyBfX21pcHNfXworKworKyNl bGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysKKyt1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0 SW5zdHJ1Y3Rpb25Qb2ludGVyKCkgY29uc3QgeworKyAgICByZXR1cm4gbWNvbnRleHQuZ3BfcmVn c1tQVF9OSVBdOworK30KKysKKyt2b2lkIFRocmVhZEluZm86OkZpbGxDUFVDb250ZXh0KFJhd0Nv bnRleHRDUFUqIG91dCkgY29uc3QgeworKyAgICBvdXQtPmNvbnRleHRfZmxhZ3MgPSBNRF9DT05U RVhUX1BQQzY0X0ZVTEw7CisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfQ09OVEVYVF9QUEM2 NF9HUFJfQ09VTlQ7IGkrKykKKysgICAgICAgIG91dC0+Z3ByW2ldID0gbWNvbnRleHQuZ3BfcmVn c1tpXTsKKysKKysgICAgb3V0LT5sciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsKKysgICAg b3V0LT5zcnIwID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworKyAgICBvdXQtPnNycjEgPSBt Y29udGV4dC5ncF9yZWdzW1BUX01TUl07CisrICAgIG91dC0+Y3IgPSBtY29udGV4dC5ncF9yZWdz W1BUX0NDUl07CisrICAgIG91dC0+eGVyID0gbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOworKyAg ICBvdXQtPmN0ciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXTsKKysgICAgCisrICAgIGZvciAo aW50IGkgPSAwOyBpIDwgTURfRkxPQVRJTkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCisr ICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ldID0gbWNvbnRleHQuZnBfcmVnc1tpXTsK KysKKysgICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUct MV07CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVDVE9SU0FWRUFSRUFfUFBDX1ZS X0NPVU5UOyBpKyspCisrICAgICAgICBvdXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJbaV0gPSBcCisr ICAgICAgICAgICAgeygoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVswXSkgPDwgMzIpIAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy52cnJlZ3NbaV1bMV0sIAorKyAgICAgICAg ICAgICgoKHVpbnQ2NF90KXZyZWdzLnZycmVnc1tpXVsyXSkgPDwgMzIpCisrICAgICAgICAgICAg ICAgICAgICAgICAgIHwgdnJlZ3MudnJyZWdzW2ldWzNdfTsKKysKKysgICAgb3V0LT52cnNhdmUg PSB2cmVncy52cnNhdmU7CisrICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyID0gezAsIHZy ZWdzLnZzY3IudnNjcl93b3JkfTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQg PSAweEZGRkZGRkZGOyAKKyt9CisrI2VuZGlmICAvLyBfX3Bvd2VycGM2NF9fCisgCisgdm9pZCBU aHJlYWRJbmZvOjpHZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6 ZV90KiBzaXplKSB7CisgICBhc3NlcnQoZ3BfcmVncyB8fCBzaXplKTsKK0BAIC0yNzksNiArMzE0 LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnModm9pZCoq IGdwX3JlZ3MsIHNpemVfdCogc2l6ZSkgeworICAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdyZWdz OworICAgaWYgKHNpemUpCisgICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmdyZWdzKTsKKysj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBpZiAoZ3BfcmVncykKKysgICAgKmdwX3Jl Z3MgPSBtY29udGV4dC5ncF9yZWdzOworKyAgaWYgKHNpemUpCisrICAgICpzaXplID0gc2l6ZW9m KG1jb250ZXh0LmdwX3JlZ3MpOworICNlbHNlCisgICBpZiAoZ3BfcmVncykKKyAgICAgKmdwX3Jl Z3MgPSAmcmVnczsKK0BAIC0yOTQsNiArMzM0LDExIEBAIHZvaWQgVGhyZWFkSW5mbzo6R2V0Rmxv YXRpbmdQb2ludFJlZ2lzdGVycyh2b2lkKiogZnBfcmVncywgc2l6ZV90KiBzaXplKSB7CisgICAg ICpmcF9yZWdzID0gJm1jb250ZXh0LmZwcmVnczsKKyAgIGlmIChzaXplKQorICAgICAqc2l6ZSA9 IHNpemVvZihtY29udGV4dC5mcHJlZ3MpOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysgIGlmIChmcF9yZWdzKQorKyAgICAqZnBfcmVncyA9ICZtY29udGV4dC5mcF9yZWdzOworKyAg aWYgKHNpemUpCisrICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZwX3JlZ3MpOworICNlbHNl CisgICBpZiAoZnBfcmVncykKKyAgICAgKmZwX3JlZ3MgPSAmZnByZWdzOworQEAgLTMwMiw0ICsz NDcsMTMgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQq KiBmcF9yZWdzLCBzaXplX3QqIHNpemUpIHsKKyAjZW5kaWYKKyB9CisgCisrI2lmIGRlZmluZWQo X19wb3dlcnBjNjRfXykKKyt2b2lkIFRocmVhZEluZm86OkdldFZlY3RvclJlZ2lzdGVycyh2b2lk Kiogdl9yZWdzLCBzaXplX3QqIHNpemUpIHsKKysgICAgaWYgKHZfcmVncykKKysgICAgICAgICp2 X3JlZ3MgPSAmdnJlZ3M7CisrICAgIGlmIChzaXplKQorKyAgICAgICAgKnNpemUgPSBzaXplb2Yo dnJlZ3MpOworK30KKysjZW5kaWYKKysKKyB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFrcGFk CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmggdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8u aAoraW5kZXggZmIyMTZmYTZkLi41OTNhYWM4MjIgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFk X2luZm8uaAorKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVhZF9pbmZvLmgKK0BAIC02OCw2ICs2OCwxMCBAQCBz dHJ1Y3QgVGhyZWFkSW5mbyB7CisgICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8 c3lzL3VzZXIuaD4KKyAgIHN0cnVjdCB1c2VyX3JlZ3Nfc3RydWN0IHJlZ3M7CisgICBzdHJ1Y3Qg dXNlcl9mcHNpbWRfc3RydWN0IGZwcmVnczsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICAvLyBVc2UgdGhlIHN0cnVjdHVyZXMgZGVmaW5lZCBpbiA8c3lzL3Vjb250ZXh0Lmg+Lgor KyAgbWNvbnRleHRfdCBtY29udGV4dDsKKysgIHZycmVnc2V0X3QgdnJlZ3M7CisgI2VsaWYgZGVm aW5lZChfX21pcHNfXykKKyAgIC8vIFVzZSB0aGUgc3RydWN0dXJlIGRlZmluZWQgaW4gPHN5cy91 Y29udGV4dC5oPi4KKyAgIG1jb250ZXh0X3QgbWNvbnRleHQ7CitAQCAtODQsNiArODgsMTEgQEAg c3RydWN0IFRocmVhZEluZm8geworIAorICAgLy8gUmV0dXJucyB0aGUgcG9pbnRlciBhbmQgc2l6 ZSBvZiBmbG9hdCBwb2ludCByZWdpc3RlciBhcmVhLgorICAgdm9pZCBHZXRGbG9hdGluZ1BvaW50 UmVnaXN0ZXJzKHZvaWQqKiBmcF9yZWdzLCBzaXplX3QqIHNpemUpOworKworKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICAvLyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9mIHRo ZSB2ZWN0b3IgcmVnaXN0ZXIgYXJlYS4gKFBQQzY0IG9ubHkpCisrICB2b2lkIEdldFZlY3RvclJl Z2lzdGVycyh2b2lkKiogdl9yZWdzLCBzaXplX3QqIHNpemUpOworKyNlbmRpZgorIH07CisgCisg fSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29u dGV4dF9yZWFkZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjCitpbmRleCA2ZWVjMWJl MjQuLjc0MTk4M2ExYSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKKysr KyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3Jp dGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuY2MKK0BAIC0yNTQsNiArMjU0LDQ4IEBAIHZvaWQg VUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3Qg dWNvbnRleHRfdCogdWMpIHsKKyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSB1Yy0+dWNfbWNvbnRl eHQuZnBjX2VpcjsgIC8vIFVudXNlZC4KKyAjZW5kaWYKKyB9CisrCisrI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKworK3VpbnRwdHJfdCBVQ29udGV4dFJlYWRlcjo6R2V0U3RhY2tQb2lu dGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7CisrICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQu Z3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF07CisrfQorKworK3VpbnRwdHJfdCBVQ29u dGV4dFJlYWRlcjo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKGNvbnN0IHVjb250ZXh0X3QqIHVjKSB7 CisrICAgIHJldHVybiB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworK30KKysKKyt2 b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNv bnN0IHVjb250ZXh0X3QqIHVjLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IHZycmVnc2V0X3QqIHZyZWdzKSB7CisrICAgIG91dC0+Y29udGV4dF9mbGFncyA9IE1E X0NPTlRFWFRfUFBDNjRfRlVMTDsKKysKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9DT05U RVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQorKyAgICAgICAgb3V0LT5ncHJbaV0gPSB1Yy0+dWNf bWNvbnRleHQuZ3BfcmVnc1tpXTsKKysKKysgICAgb3V0LT5sciA9IHVjLT51Y19tY29udGV4dC5n cF9yZWdzW1BUX0xOS107ICAgIAorKyAgICBvdXQtPnNycjAgPSB1Yy0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tQVF9OSVBdOworKyAgICBvdXQtPnNycjEgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQ VF9NU1JdOworKyAgICBvdXQtPmNyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsK KysgICAgb3V0LT54ZXIgPSB1Yy0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9YRVJdOworKyAgICBv dXQtPmN0ciA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX0NUUl07CisrICAgIAorKyAgICBm b3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsgaSsr KQorKyAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9IHVjLT51Y19tY29udGV4dC5m cF9yZWdzW2ldOworKworKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSB1Yy0+dWNfbWNvbnRl eHQuZnBfcmVnc1tORlBSRUctMV07CisrCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfVkVD VE9SU0FWRUFSRUFfUFBDX1ZSX0NPVU5UOyBpKyspCisrICAgICAgICBvdXQtPnZlY3Rvcl9zYXZl LnNhdmVfdnJbaV0gPQorKyAgICAgICAgICAgIHsoKCh1aW50NjRfdCl2cmVncy0+dnJyZWdzW2ld WzBdKSA8PCAzMikgCisrICAgICAgICAgICAgICAgICAgICAgICAgIHwgdnJlZ3MtPnZycmVnc1tp XVsxXSwgCisrICAgICAgICAgICAgICgoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMl0pIDw8 IDMyKQorKyAgICAgICAgICAgICAgICAgICAgICAgICB8IHZyZWdzLT52cnJlZ3NbaV1bM119Owor KworKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLT52cnNhdmU7CisrICAgIG91dC0+dmVjdG9yX3Nh dmUuc2F2ZV92c2NyID0gezAsIHZyZWdzLT52c2NyLnZzY3Jfd29yZH07CisrICAgIG91dC0+dmVj dG9yX3NhdmUuc2F2ZV92cnZhbGlkID0gMHhGRkZGRkZGRjsgCisrfQorKworICNlbmRpZgorIAor IH0gIC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNv bnRleHRfcmVhZGVyLmggdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKK2luZGV4IDdkNDEwMDg4 MS4uYzEyMmFjOTJlIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5oCisrKysg dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRl cl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmgKK0BAIC01NSw2ICs1NSw5IEBAIHN0cnVjdCBVQ29u dGV4dFJlYWRlciB7CisgI2VsaWYgZGVmaW5lZChfX2FhcmNoNjRfXykKKyAgIHN0YXRpYyB2b2lk IEZpbGxDUFVDb250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgZnBzaW1kX2NvbnRl eHQqIGZwcmVncyk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgc3RhdGljIHZv aWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSAqb3V0LCBjb25zdCB1Y29udGV4dF90ICp1 YywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZycmVnc2V0X3QqIHZyZWdz KTsKKyAjZWxzZQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSog b3V0LCBjb25zdCB1Y29udGV4dF90KiB1Yyk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IHRoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25f aGFuZGxlci5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2MKK2luZGV4IGE2Y2I1Zjk4NC4uYWUxNmI2NGQ5 IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwor QEAgLTQ2MSw5ICs0NjEsMTYgQEAgYm9vbCBFeGNlcHRpb25IYW5kbGVyOjpIYW5kbGVTaWduYWwo aW50IC8qc2lnKi8sIHNpZ2luZm9fdCogaW5mbywgdm9pZCogdWMpIHsKKyAgICAgbWVtY3B5KCZn X2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRlLCBmcF9wdHIsCisgICAgICAgICAgICBzaXplb2Yo Z19jcmFzaF9jb250ZXh0Xy5mbG9hdF9zdGF0ZSkpOworICAgfQorKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgIC8vIE9uIFBQQzY0LCB3ZSBtdXN0IGNvcHkgVlIgc3RhdGUKKysgIHVj b250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4dF90Kil1YzsKKysgIGlmICh1Y19wdHItPnVjX21j b250ZXh0LnZfcmVncykgeworKyAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0 YXRlLCB1Y19wdHItPnVjX21jb250ZXh0LnZfcmVncywKKysgICAgICAgICAgIHNpemVvZihnX2Ny YXNoX2NvbnRleHRfLnZlY3Rvcl9zdGF0ZSkpOworKyAgfQorICNlbGlmICFkZWZpbmVkKF9fQVJN X0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAvLyBGUCBzdGF0ZSBpcyBub3QgcGFy dCBvZiB1c2VyIEFCSSBvbiBBUk0gTGludXguCistICAvLyBJbiBjYXNlIG9mIE1JUFMgTGludXgg RlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKysgIC8vIEluIGNhc2Ugb2Yg TUlQUywgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3QKKyAgIC8v IGFuZCAnZmxvYXRfc3RhdGUnIGlzIG5vdCBhIG1lbWJlciBvZiBDcmFzaENvbnRleHQuCisgICB1 Y29udGV4dF90KiB1Y19wdHIgPSAodWNvbnRleHRfdCopdWM7CisgICBpZiAodWNfcHRyLT51Y19t Y29udGV4dC5mcHJlZ3MpIHsKK0BAIC03MDgsMTEgKzcxNSwxOSBAQCBib29sIEV4Y2VwdGlvbkhh bmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgICB9CisgI2VuZGlmCisgCistI2lmICFkZWZpbmVk KF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlw c19fKQorKyNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fYWFyY2g2NF9f KSAmJiAhZGVmaW5lZChfX21pcHNfXykgXAorKyAgICAmJiAhZGVmaW5lZChfX3Bvd2VycGM2NF9f KQorICAgLy8gRlBVIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIEFSTSBFQUJJIHVjb250ZXh0X3QuCisg ICBtZW1jcHkoJmNvbnRleHQuZmxvYXRfc3RhdGUsIGNvbnRleHQuY29udGV4dC51Y19tY29udGV4 dC5mcHJlZ3MsCisgICAgICAgICAgc2l6ZW9mKGNvbnRleHQuZmxvYXRfc3RhdGUpKTsKKyAjZW5k aWYKKysKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gVmVjdG9yIHJlZ2lzdGVy cyBtdXN0IGJlIGNvcGllZCBvbiBQUEM2NAorKyAgbWVtY3B5KCZjb250ZXh0LnZlY3Rvcl9zdGF0 ZSwgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LnZfcmVncywKKysgICAgICAgICBzaXplb2Yo Y29udGV4dC52ZWN0b3Jfc3RhdGUpKTsKKysjZW5kaWYKKysKKyAgIGNvbnRleHQudGlkID0gc3lz X2dldHRpZCgpOworIAorICAgLy8gQWRkIGFuIGV4Y2VwdGlvbiBzdHJlYW0gdG8gdGhlIG1pbmlk dW1wIGZvciBiZXR0ZXIgcmVwb3J0aW5nLgorQEAgLTczMyw2ICs3NDgsOSBAQCBib29sIEV4Y2Vw dGlvbkhhbmRsZXI6OldyaXRlTWluaWR1bXAoKSB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykK KyAgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KKyAgICAgICByZWludGVycHJldF9jYXN0PHZv aWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQucGMpOworKyNlbGlmIGRlZmluZWQoX19w b3dlcnBjNjRfXykKKysgIGNvbnRleHQuc2lnaW5mby5zaV9hZGRyID0KKysgICAgICByZWludGVy cHJldF9jYXN0PHZvaWQqPihjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9O SVBdKTsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8g eW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIu aCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIv ZXhjZXB0aW9uX2hhbmRsZXIuaAoraW5kZXggZjgwODQzZWE3Li4yNjBkZDEwZjcgMTAwNjQ0Cist LS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVy L2V4Y2VwdGlvbl9oYW5kbGVyLmgKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaAorQEAgLTE5Miw3ICsx OTIsMTEgQEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlciB7CisgICAgIHNpZ2luZm9fdCBzaWdpbmZv OworICAgICBwaWRfdCB0aWQ7ICAvLyB0aGUgY3Jhc2hpbmcgdGhyZWFkLgorICAgICB1Y29udGV4 dF90IGNvbnRleHQ7CistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19t aXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgLy8gUFBDNjQncyBGUCBz dGF0ZSBpcyBhIHBhcnQgb2YgdWNvbnRleHRfdCBsaWtlIE1JUFMgYnV0IHRoZSB2ZWN0b3IKKysg ICAgLy8gc3RhdGUgaXMgbm90LCBzbyBhIHN0cnVjdCBpcyBuZWVkZWQuCisrICAgIHZzdGF0ZV90 IHZlY3Rvcl9zdGF0ZTsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVk KF9fbWlwc19fKQorICAgICAvLyAjaWZkZWYgdGhpcyBvdXQgYmVjYXVzZSBGUCBzdGF0ZSBpcyBu b3QgcGFydCBvZiB1c2VyIEFCSSBmb3IgTGludXggQVJNLgorICAgICAvLyBJbiBjYXNlIG9mIE1J UFMgTGludXggRlAgc3RhdGUgaXMgYWxyZWFkeSBwYXJ0IG9mIHVjb250ZXh0X3Qgc28KKyAgICAg Ly8gJ2Zsb2F0X3N0YXRlJyBpcyBub3QgcmVxdWlyZWQuCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFu ZGxlcl91bml0dGVzdC5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXJfdW5pdHRlc3QuY2MKK2luZGV4IDM1ZGNi ZmQ0ZC4uNzkzNDM3MGZkIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlcl91bml0dGVzdC5jYwor KysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxl ci9leGNlcHRpb25faGFuZGxlcl91bml0dGVzdC5jYworQEAgLTMwNyw3ICszMDcsNyBAQCBURVNU KEV4Y2VwdGlvbkhhbmRsZXJUZXN0LCBQYXJhbGxlbENoaWxkQ3Jhc2hlc0RvbnRIYW5nKSB7Cisg ICB9CisgCisgICAvLyBXYWl0IGEgd2hpbGUgdW50aWwgdGhlIGNoaWxkIHNob3VsZCBoYXZlIGNy YXNoZWQuCistICB1c2xlZXAoMTAwMDAwMCk7CisrICB1c2xlZXAoMjAwMDAwMCk7CisgICAvLyBL aWxsIHRoZSBjaGlsZCBpZiBpdCBpcyBzdGlsbCBydW5uaW5nLgorICAga2lsbChjaGlsZCwgU0lH S0lMTCk7CisgCitAQCAtNTU5LDYgKzU1OSw4IEBAIGNvbnN0IHVuc2lnbmVkIGNoYXIga0lsbGVn YWxJbnN0cnVjdGlvbltdID0geworICNpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgLy8gbWZjMiB6 ZXJvLEltcGwgLSB1c3VhbGx5IGlsbGVnYWwgaW4gdXNlcnNwYWNlLgorICAgMHg0OCwgMHgwMCwg MHgwMCwgMHg0OAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIDB4MDEsIDB4MDEs IDB4MDEsIDB4MDEgLy8gQ3Jhc2hlcyBvbiBhIHRlc3RlZCBQT1dFUjkgY3B1CisgI2Vsc2UKKyAg IC8vIFRoaXMgY3Jhc2hlcyB3aXRoIFNJR0lMTCBvbiB4ODYveDg2LTY0L2FybS4KKyAgIDB4ZmYs IDB4ZmYsIDB4ZmYsIDB4ZmYKK0BAIC03NTQsMTAgKzc1NiwxMCBAQCBURVNUKEV4Y2VwdGlvbkhh bmRsZXJUZXN0LCBJbnN0cnVjdGlvblBvaW50ZXJNZW1vcnlNYXhCb3VuZCkgeworIAorICAgLy8g VGhlc2UgYXJlIGRlZmluZWQgaGVyZSBzbyB0aGUgcGFyZW50IGNhbiB1c2UgdGhlbSB0byBjaGVj ayB0aGUKKyAgIC8vIGRhdGEgZnJvbSB0aGUgbWluaWR1bXAgYWZ0ZXJ3YXJkcy4KKy0gIC8vIFVz ZSA0ayBoZXJlIGJlY2F1c2UgdGhlIE9TIHdpbGwgaGFuZCBvdXQgYSBzaW5nbGUgcGFnZSBldmVu CisrICAvLyBVc2UgdGhlIHBhZ2Ugc2l6ZSBoZXJlIGJlY2F1c2UgdGhlIE9TIHdpbGwgaGFuZCBv dXQgYSBzaW5nbGUgcGFnZSBldmVuCisgICAvLyBpZiBhIHNtYWxsZXIgc2l6ZSBpcyByZXF1ZXN0 ZWQsIGFuZCB0aGlzIHRlc3Qgd2FudHMgdG8KKyAgIC8vIHRlc3QgdGhlIHVwcGVyIGJvdW5kIG9m IHRoZSBtZW1vcnkgcmFuZ2UuCistICBjb25zdCB1aW50MzJfdCBrTWVtb3J5U2l6ZSA9IDQwOTY7 ICAvLyBieXRlcworKyAgY29uc3QgdWludDMyX3Qga01lbW9yeVNpemUgPSBnZXRwYWdlc2l6ZSgp OyAgLy8gYnl0ZXMKKyAgIGNvbnN0IGludCBrT2Zmc2V0ID0ga01lbW9yeVNpemUgLSBzaXplb2Yo a0lsbGVnYWxJbnN0cnVjdGlvbik7CisgCisgICBjb25zdCBwaWRfdCBjaGlsZCA9IGZvcmsoKTsK K2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93 cml0ZXIuY2MKK2luZGV4IGZhM2MxNzEzYS4uNmNlNzA5ZTJmIDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9t aWNyb2R1bXBfd3JpdGVyLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKK0BAIC0x MzgsNyArMTM4LDkgQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAgICAgICAgICAgICAgICAg ICBjb25zdCBNaWNyb2R1bXBFeHRyYUluZm8mIG1pY3JvZHVtcF9leHRyYV9pbmZvLAorICAgICAg ICAgICAgICAgICAgIExpbnV4RHVtcGVyKiBkdW1wZXIpCisgICAgICAgOiB1Y29udGV4dF8oY29u dGV4dCA/ICZjb250ZXh0LT5jb250ZXh0IDogTlVMTCksCistI2lmICFkZWZpbmVkKF9fQVJNX0VB QklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysgICAgICAgIHZlY3Rvcl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUg OiBOVUxMKSwKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlw c19fKQorICAgICAgICAgZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3Rh dGUgOiBOVUxMKSwKKyAjZW5kaWYKKyAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKK0BAIC0zMzcs NiArMzM5LDggQEAgY2xhc3MgTWljcm9kdW1wV3JpdGVyIHsKKyAjIGVsc2UKKyAjICBlcnJvciAi VGhpcyBtaXBzIEFCSSBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZCAobjMyKSIKKyAjZW5kaWYK KysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIGNvbnN0IGNoYXIga0FyY2hbXSA9 ICJwcGM2NCI7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVk IHRvIHlvdXIgcGxhdGZvcm0geWV0IgorICNlbmRpZgorQEAgLTQwOSw3ICs0MTMsOSBAQCBjbGFz cyBNaWNyb2R1bXBXcml0ZXIgeworICAgdm9pZCBEdW1wQ1BVU3RhdGUoKSB7CisgICAgIFJhd0Nv bnRleHRDUFUgY3B1OworICAgICBteV9tZW1zZXQoJmNwdSwgMCwgc2l6ZW9mKFJhd0NvbnRleHRD UFUpKTsKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykK KysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQ VUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCB2ZWN0b3Jfc3RhdGVfKTsKKysjZWxpZiAhZGVmaW5l ZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgICBVQ29udGV4dFJlYWRl cjo6RmlsbENQVUNvbnRleHQoJmNwdSwgdWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOworICNlbHNl CisgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8pOwor QEAgLTYwNSw3ICs2MTEsOSBAQCBjbGFzcyBNaWNyb2R1bXBXcml0ZXIgeworICAgdm9pZCogQWxs b2ModW5zaWduZWQgYnl0ZXMpIHsgcmV0dXJuIGR1bXBlcl8tPmFsbG9jYXRvcigpLT5BbGxvYyhi eXRlcyk7IH0KKyAKKyAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsKKy0jaWYg IWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorKyAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjp2c3RhdGVfdCogY29u c3QgdmVjdG9yX3N0YXRlXzsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZp bmVkKF9fbWlwc19fKQorICAgY29uc3QgZ29vZ2xlX2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0 IGZsb2F0X3N0YXRlXzsKKyAjZW5kaWYKKyAgIExpbnV4RHVtcGVyKiBkdW1wZXJfOworZGlmZiAt LWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3Jv ZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91bml0dGVzdC5jYyB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1w X3dyaXRlcl91bml0dGVzdC5jYworaW5kZXggNjMzOWFjMGNkLi4yOTFhZjEwNmIgMTAwNjQ0Cist LS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taWNyb2R1 bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKKysrKyB0aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9k dW1wX3dyaXRlcl91bml0dGVzdC5jYworQEAgLTI3OSwxMCArMjc5LDE5IEBAIFRFU1QoTWljcm9k dW1wV3JpdGVyVGVzdCwgQmFzaWNXaXRoTWFwcGluZ3MpIHsKKyAgIENyYXNoQW5kR2V0TWljcm9k dW1wKG1hcHBpbmdzLCBNaWNyb2R1bXBFeHRyYUluZm8oKSwgJmJ1Zik7CisgICBBU1NFUlRfVFJV RShDb250YWluc01pY3JvZHVtcChidWYpKTsKKyAKKysgIGludCBwYWdlX3NpemUgPSBnZXRwYWdl c2l6ZSgpOworICNpZmRlZiBfX0xQNjRfXworLSAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9z LAorLSAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMDEwMDAgMDAwMDAwMDAwMDAw MDAyQSAwMDAwMDAwMDAwMDAxMDAwICIKKy0gICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1 NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYwIGxpYmZvby5zbyIpKTsKKysgIC8vIFRoaXMgdGVzdCBp cyBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIGZvbGxvd2luZyBwYWdlIHNpemVzCisrICBBU1NFUlRf VFJVRSgocGFnZV9zaXplID09IDQwOTYpIHx8IChwYWdlX3NpemUgPT0gNjU1MzYpKTsKKysgIGlm IChwYWdlX3NpemUgPT0gNDA5NikgeyAKKysgICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5nOjpucG9z LAorKyAgICAgICAgICAgICAgYnVmLmZpbmQoIk0gMDAwMDAwMDAwMDAwMTAwMCAwMDAwMDAwMDAw MDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgorKyAgICAgICAgICAgICAgICAgICAgICAgIjMzMjIx MTAwNTU0NDc3NjY4ODk5QUFCQkNDRERFRUZGMCBsaWJmb28uc28iKSk7CisrICB9IGVsc2Ugewor KyAgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisrICAgICAgICAgICAgICBidWYuZmlu ZCgiTSAwMDAwMDAwMDAwMDEwMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAxMDAwMCAi CisrICAgICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVF RkYwIGxpYmZvby5zbyIpKTsKKysgIH0KKyAjZWxzZQorICAgQVNTRVJUX05FKHN0ZDo6c3RyaW5n OjpucG9zLAorICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAxMDAwIDAwMDAwMDJBIDAwMDAx MDAwICIKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MgdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhf Y29yZV9kdW1wZXIuY2MKK2luZGV4IDQxNTA2ODk4My4uYjkzZTRhZmNmIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X2NvcmVfZHVtcGVyLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MK K0BAIC0xMTIsNiArMTEyLDkgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6OkdldFRocmVhZEluZm9C eUluZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5mbyogaW5mbykgeworICNlbGlmIGRlZmluZWQo X19taXBzX18pCisgICBzdGFja19wb2ludGVyID0KKyAgICAgICByZWludGVycHJldF9jYXN0PHVp bnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tNRF9DT05URVhUX01JUFNfUkVHX1NQXSk7Cisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgc3RhY2tfcG9pbnRlciA9CisrICAgICAg cmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5mby0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05U RVhUX1BQQzY0X1JFR19TUF0pOworICNlbHNlCisgI2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJl ZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0LiIKKyAjZW5kaWYKK0BAIC0xOTcsNyArMjAw LDEwIEBAIGJvb2wgTGludXhDb3JlRHVtcGVyOjpFbnVtZXJhdGVUaHJlYWRzKCkgeworICAgICAg ICAgbWVtc2V0KCZpbmZvLCAwLCBzaXplb2YoVGhyZWFkSW5mbykpOworICAgICAgICAgaW5mby50 Z2lkID0gc3RhdHVzLT5wcl9wZ3JwOworICAgICAgICAgaW5mby5wcGlkID0gc3RhdHVzLT5wcl9w cGlkOworLSNpZiBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDMxOyBpKyspCisrICAgICAgICAgICAgaW5m by5tY29udGV4dC5ncF9yZWdzW2ldID0gc3RhdHVzLT5wcl9yZWdbaV07CisrI2VsaWYgZGVmaW5l ZChfX21pcHNfXykKKyAjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgICAgICAgIGZvciAoaW50 IGkgPSBFRl9SMDsgaSA8PSBFRl9SMzE7IGkrKykKKyAgICAgICAgICAgaW5mby5tY29udGV4dC5n cmVnc1tpIC0gRUZfUjBdID0gc3RhdHVzLT5wcl9yZWdbaV07CitkaWZmIC0tZ2l0IHRoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xp bnV4X2R1bXBlci5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuY2MKK2luZGV4IDdmZDY1MzJhZC4uMTk5 Y2JmZmZkIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGll bnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5jYworKysrIHRoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4 X2R1bXBlci5jYworQEAgLTc2NSw3ICs3NjUsOSBAQCBib29sIExpbnV4RHVtcGVyOjpHZXRTdGFj a0luZm8oY29uc3Qgdm9pZCoqIHN0YWNrLCBzaXplX3QqIHN0YWNrX2xlbiwKKyAgICAgICByZWlu dGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbnRfc3RhY2tfcG9pbnRlciAmIH4ocGFnZV9zaXplIC0g MSkpOworIAorICAgLy8gVGhlIG51bWJlciBvZiBieXRlcyBvZiBzdGFjayB3aGljaCB3ZSB0cnkg dG8gY2FwdHVyZS4KKy0gIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0YWNrVG9DYXB0dXJlID0g MzIgKiAxMDI0OworKyAgLy8gVGhpcyBub3cgZGVwZW5kcyBvbiBwYWdlX3NpemUgdG8gYXZvaWQg bWlzc2luZyBkYXRhCisrICAvLyBvbiBzeXN0ZW1zIHdpdGggbGFyZ2VyIHBhZ2Ugc2l6ZXMuCisr ICBzdGF0aWMgY29uc3QgcHRyZGlmZl90IGtTdGFja1RvQ2FwdHVyZSA9IDggKiBwYWdlX3NpemU7 CisgCisgICBjb25zdCBNYXBwaW5nSW5mbyogbWFwcGluZyA9IEZpbmRNYXBwaW5nKHN0YWNrX3Bv aW50ZXIpOworICAgaWYgKCFtYXBwaW5nKQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIu aCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9saW51eF9kdW1wZXIuaAoraW5kZXggN2JlZTE2MGYxLi4wN2JiMmI4MWEgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5p ZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmgKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAorQEAg LTYzLDcgKzYzLDggQEAgbmFtZXNwYWNlIGdvb2dsZV9icmVha3BhZCB7CisgIChkZWZpbmVkKF9f bWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSU8zMikKKyB0eXBlZGVmIEVsZjMyX2F1eHZfdCBl bGZfYXV4X2VudHJ5OworICNlbGlmIGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19hYXJj aDY0X18pIHx8IFwKKy0gICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FC SU8zMikKKysgICAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gIT0gX0FCSU8zMikg fHwgXAorKyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIHR5cGVkZWYgRWxmNjRfYXV4dl90 IGVsZl9hdXhfZW50cnk7CisgI2VuZGlmCisgCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBl cl91bml0dGVzdF9oZWxwZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5j YworaW5kZXggMzMxZjRiYjM0Li4zZjcyMjk0N2YgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVt cGVyX3VuaXR0ZXN0X2hlbHBlci5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlcl91bml0dGVzdF9o ZWxwZXIuY2MKK0BAIC01MSw2ICs1MSw4IEBACisgI2RlZmluZSBUSURfUFRSX1JFR0lTVEVSICJy Y3giCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIg IiQxIgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjZGVmaW5lIFRJRF9QVFJfUkVH SVNURVIgInI4IgorICNlbHNlCisgI2Vycm9yIFRoaXMgdGVzdCBoYXMgbm90IGJlZW4gcG9ydGVk IHRvIHRoaXMgcGxhdGZvcm0uCisgI2VuZGlmCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFj ZV9kdW1wZXIuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYworaW5kZXggZTNkZGI4MWE2 Li5mYTI4NTc1ZWYgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYworKysr IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBf d3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1wZXIuY2MKK0BAIC0xNDksMTkgKzE0OSwyNyBAQCBib29s IExpbnV4UHRyYWNlRHVtcGVyOjpDb3B5RnJvbVByb2Nlc3Modm9pZCogZGVzdCwgcGlkX3QgY2hp bGQsCisgICByZXR1cm4gdHJ1ZTsKKyB9CisgCistYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6UmVh ZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRpZCkKKy17CisrYm9vbCBMaW51 eFB0cmFjZUR1bXBlcjo6UmVhZFJlZ2lzdGVyU2V0KFRocmVhZEluZm8qIGluZm8sIHBpZF90IHRp ZCkgeworICNpZmRlZiBQVFJBQ0VfR0VUUkVHU0VUCisgICBzdHJ1Y3QgaW92ZWMgaW87CisgICBp bmZvLT5HZXRHZW5lcmFsUHVycG9zZVJlZ2lzdGVycygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVu KTsKKy0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BS U1RBVFVTLCAodm9pZCopJmlvKSA9PSAtMSkgeworKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVH U0VULCB0aWQsICh2b2lkKilOVF9QUlNUQVRVUywgKHZvaWQqKSZpbykgPT0gLTEpIHsKKyAgICAg cmV0dXJuIGZhbHNlOworICAgfQorIAorICAgaW5mby0+R2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVy cygmaW8uaW92X2Jhc2UsICZpby5pb3ZfbGVuKTsKKy0gIGlmIChzeXNfcHRyYWNlKFBUUkFDRV9H RVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VULCAodm9pZCopJmlvKSA9PSAtMSkgewor KyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilOVF9GUFJFR1NFVCwg KHZvaWQqKSZpbykgPT0gLTEpIHsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorKworKyNpZiBk ZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAvLyBHcmFiIHRoZSB2ZWN0b3IgcmVnaXN0ZXJzIG9u IFBQQzY0IHRvbworKyAgaW5mby0+R2V0VmVjdG9yUmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlv Lmlvdl9sZW4pOworKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVHU0VULCB0aWQsICh2b2lkKilO VF9QUENfVk1YLCAodm9pZCopJmlvKSA9PSAtMSkgeworKyAgICByZXR1cm4gZmFsc2U7CisrICB9 CisrI2VuZGlmIC8vIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysKKyAgIHJldHVybiB0cnVlOwor ICNlbHNlCisgICByZXR1cm4gZmFsc2U7CitAQCAtMjk4LDYgKzMwNiw5IEBAIGJvb2wgTGludXhQ dHJhY2VEdW1wZXI6OkdldFRocmVhZEluZm9CeUluZGV4KHNpemVfdCBpbmRleCwgVGhyZWFkSW5m byogaW5mbykgeworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICBzdGFja19wb2ludGVyID0K KyAgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncmVnc1tN RF9DT05URVhUX01JUFNfUkVHX1NQXSk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KyAgc3RhY2tfcG9pbnRlciA9CisrICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oaW5m by0+bWNvbnRleHQuZ3BfcmVnc1tNRF9DT05URVhUX1BQQzY0X1JFR19TUF0pOworICNlbHNlCisg I2Vycm9yICJUaGlzIGNvZGUgaGFzbid0IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0geWV0 LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3Jj L2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVz dC5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNjCitpbmRleCBkYTcxZTE1 ZGMuLjEyYmZiMzE3YSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0 ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlcl91bml0dGVzdC5jYworQEAgLTQ2 Miw2ICs0NjIsOSBAQCBURVNUKExpbnV4UHRyYWNlRHVtcGVyVGVzdCwgVmVyaWZ5U3RhY2tSZWFk V2l0aE11bHRpcGxlVGhyZWFkcykgeworICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgICAgIHBp ZF90KiBwcm9jZXNzX3RpZF9sb2NhdGlvbiA9CisgICAgICAgICByZWludGVycHJldF9jYXN0PHBp ZF90Kj4ob25lX3RocmVhZC5tY29udGV4dC5ncmVnc1sxXSk7CisrI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorKyAgICBwaWRfdCogcHJvY2Vzc190aWRfbG9jYXRpb24gPQorKyAgICAgICAg cmVpbnRlcnByZXRfY2FzdDxwaWRfdCo+KG9uZV90aHJlYWQubWNvbnRleHQuZ3BfcmVnc1s4XSk7 CisgI2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBw bGF0Zm9ybS4KKyAjZW5kaWYKK0BAIC01NTksNiArNTYyLDggQEAgVEVTVF9GKExpbnV4UHRyYWNl RHVtcGVyVGVzdCwgU2FuaXRpemVTdGFja0NvcHkpIHsKKyAgIHVpbnRwdHJfdCBoZWFwX2FkZHIg PSB0aHJlYWRfaW5mby5yZWdzLnJjeDsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgdWlu dHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdyZWdzWzFdOworKyNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIHVpbnRwdHJfdCBoZWFwX2FkZHIgPSB0aHJlYWRf aW5mby5tY29udGV4dC5ncF9yZWdzWzhdOworICNlbHNlCisgI2Vycm9yIFRoaXMgdGVzdCBoYXMg bm90IGJlZW4gcG9ydGVkIHRvIHRoaXMgcGxhdGZvcm0uCisgI2VuZGlmCitkaWZmIC0tZ2l0IHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL21pbmlkdW1wX3dyaXRlci5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMv Y2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuY2MKK2luZGV4IDMy NjM0ZWYwMC4uMmE1Njk0OGRlIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYwor KysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5jYworQEAgLTEzNiw3ICsxMzYsOSBAQCBjbGFzcyBN aW5pZHVtcFdyaXRlciB7CisgICAgICAgOiBmZF8obWluaWR1bXBfZmQpLAorICAgICAgICAgcGF0 aF8obWluaWR1bXBfcGF0aCksCisgICAgICAgICB1Y29udGV4dF8oY29udGV4dCA/ICZjb250ZXh0 LT5jb250ZXh0IDogTlVMTCksCistI2lmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgICAgIHZlY3Rv cl9zdGF0ZV8oY29udGV4dCA/ICZjb250ZXh0LT52ZWN0b3Jfc3RhdGUgOiBOVUxMKSwKKysjZWxp ZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgICAgICAg ZmxvYXRfc3RhdGVfKGNvbnRleHQgPyAmY29udGV4dC0+ZmxvYXRfc3RhdGUgOiBOVUxMKSwKKyAj ZW5kaWYKKyAgICAgICAgIGR1bXBlcl8oZHVtcGVyKSwKK0BAIC00NjgsNyArNDcwLDkgQEAgY2xh c3MgTWluaWR1bXBXcml0ZXIgeworICAgICAgICAgaWYgKCFjcHUuQWxsb2NhdGUoKSkKKyAgICAg ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgbXlfbWVtc2V0KGNwdS5nZXQoKSwgMCwgc2l6 ZW9mKFJhd0NvbnRleHRDUFUpKTsKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAgVUNv bnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwgdWNvbnRleHRfLCB2ZWN0b3Jf c3RhdGVfKTsKKysjZWxpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlw c19fKQorICAgICAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVDb250ZXh0KGNwdS5nZXQoKSwg dWNvbnRleHRfLCBmbG9hdF9zdGF0ZV8pOworICNlbHNlCisgICAgICAgICBVQ29udGV4dFJlYWRl cjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8pOworQEAgLTg5Nyw3ICs5MDEs NyBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICAgIGRpcmVudC0+bG9jYXRpb24ucnZhID0g MDsKKyAgIH0KKyAKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgIGJvb2wgV3JpdGVDUFVJbmZvcm1hdGlvbihNRFJhd1N5c3RlbUluZm8qIHN5c19pbmZv KSB7CisgICAgIGNoYXIgdmVuZG9yX2lkW3NpemVvZihzeXNfaW5mby0+Y3B1Lng4Nl9jcHVfaW5m by52ZW5kb3JfaWQpICsgMV0gPSB7MH07CisgICAgIHN0YXRpYyBjb25zdCBjaGFyIHZlbmRvcl9p ZF9uYW1lW10gPSAidmVuZG9yX2lkIjsKK0BAIC05MTcsNyArOTIxLDkgQEAgY2xhc3MgTWluaWR1 bXBXcml0ZXIgeworIAorICAgICAvLyBwcm9jZXNzb3JfYXJjaGl0ZWN0dXJlIHNob3VsZCBhbHdh eXMgYmUgc2V0LCBkbyB0aGlzIGZpcnN0CisgICAgIHN5c19pbmZvLT5wcm9jZXNzb3JfYXJjaGl0 ZWN0dXJlID0KKy0jaWYgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorKyAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9QUEM2NDsKKysjZWxpZiBkZWZpbmVk KF9fbWlwc19fKQorICMgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgIE1EX0NQVV9B UkNISVRFQ1RVUkVfTUlQUzsKKyAjIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorQEAgLTEzMzMs NyArMTMzOSw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKKyAgIGNvbnN0IGNoYXIqIHBhdGhf OyAgLy8gUGF0aCB0byB0aGUgZmlsZSB3aGVyZSB0aGUgbWluaWR1bSBzaG91bGQgYmUgd3JpdHRl bi4KKyAKKyAgIGNvbnN0IHVjb250ZXh0X3QqIGNvbnN0IHVjb250ZXh0XzsgIC8vIGFsc28gZnJv bSB0aGUgc2lnbmFsIGhhbmRsZXIKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29uc3QgZ29v Z2xlX2JyZWFrcGFkOjp2c3RhdGVfdCogY29uc3QgdmVjdG9yX3N0YXRlXzsKKysjZWxpZiAhZGVm aW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorICAgY29uc3QgZ29vZ2xl X2JyZWFrcGFkOjpmcHN0YXRlX3QqIGNvbnN0IGZsb2F0X3N0YXRlXzsgIC8vIGRpdHRvCisgI2Vu ZGlmCisgICBMaW51eER1bXBlciogZHVtcGVyXzsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBf d3JpdGVyLmggdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9t aW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmgKK2luZGV4IGUzYjBiMTZkYS4uY2NkOGFh MGE0IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlci5oCisrKysgdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1 bXBfd3JpdGVyLmgKK0BAIC00OCw2ICs0OCw4IEBAIGNsYXNzIEV4Y2VwdGlvbkhhbmRsZXI7Cisg CisgI2lmIGRlZmluZWQoX19hYXJjaDY0X18pCisgdHlwZWRlZiBzdHJ1Y3QgZnBzaW1kX2NvbnRl eHQgZnBzdGF0ZV90OworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyt0eXBlZGVmIHZy cmVnc2V0X3QgdnN0YXRlX3Q7CisgI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVm aW5lZChfX21pcHNfXykKKyB0eXBlZGVmIHN0ZDo6cmVtb3ZlX3BvaW50ZXI8ZnByZWdzZXRfdD46 OnR5cGUgZnBzdGF0ZV90OworICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXJfdW5pdHRlc3QuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9s aW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCitpbmRleCBk MTkyZTVjYmIuLmZjMWJmYThkNyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5p dHRlc3QuY2MKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MKK0BAIC03MTUs NiArNzE1LDkgQEAgVEVTVChNaW5pZHVtcFdyaXRlclRlc3QsIEludmFsaWRTdGFja1BvaW50ZXIp IHsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgY29udGV4dC5jb250ZXh0LnVjX21jb250 ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdID0KKyAgICAgICBpbnZhbGlkX3N0YWNr X3BvaW50ZXI7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29udGV4dC5jb250 ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdID0KKysgICAg ICBpbnZhbGlkX3N0YWNrX3BvaW50ZXI7CisgI2Vsc2UKKyAjIGVycm9yICJUaGlzIGNvZGUgaGFz IG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCisgI2VuZGlmCitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5 X21hcHBlZF9maWxlLmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24v bGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCitpbmRleCA5OTM2Mjk0NWMuLmM1NGJhNzE0NSAx MDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4 L21lbW9yeV9tYXBwZWRfZmlsZS5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFk L3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCitAQCAtNjUsOCArNjUsNyBA QCBib29sIE1lbW9yeU1hcHBlZEZpbGU6Ok1hcChjb25zdCBjaGFyKiBwYXRoLCBzaXplX3Qgb2Zm c2V0KSB7CisgICB9CisgCisgI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2Fh cmNoNjRfXykgfHwgXAorLSAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FC STY0KQorLQorKyAgIChkZWZpbmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX0FCSTY0KSB8 fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICBzdHJ1Y3Qga2VybmVsX3N0YXQgc3Q7CisgICBp ZiAoc3lzX2ZzdGF0KGZkLCAmc3QpID09IC0xIHx8IHN0LnN0X3NpemUgPCAwKSB7CisgI2Vsc2UK K2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51 eC9tZW1vcnlfbWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MKK2lu ZGV4IGZhZDU5ZjQwYy4uNjE2NDk2ZDY3IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlX3VuaXR0ZXN0LmNj CisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1v cnlfbWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MKK0BAIC0xNzYsOSArMTc2LDEwIEBAIFRFU1RfRihN ZW1vcnlNYXBwZWRGaWxlVGVzdCwgUmVtYXBBZnRlck1hcCkgeworIFRFU1RfRihNZW1vcnlNYXBw ZWRGaWxlVGVzdCwgTWFwV2l0aE9mZnNldCkgeworICAgLy8gUHV0IG1vcmUgZGF0YSBpbiB0aGUg dGVzdCBmaWxlIHRoaXMgdGltZS4gT2Zmc2V0cyBjYW4gb25seSBiZQorICAgLy8gZG9uZSBvbiBw YWdlIGJvdW5kYXJpZXMsIHNvIHdlIG5lZWQgYSB0d28gcGFnZSBmaWxlIHRvIHRlc3QgdGhpcy4K Ky0gIGNvbnN0IGludCBwYWdlX3NpemUgPSA0MDk2OworLSAgY2hhciBkYXRhMVsyICogcGFnZV9z aXplXTsKKy0gIHNpemVfdCBkYXRhMV9zaXplID0gc2l6ZW9mKGRhdGExKTsKKysgIGNvbnN0IGlu dCBwYWdlX3NpemUgPSBnZXRwYWdlc2l6ZSgpOworKyAgY2hhciAqZGF0YTEgPSBzdGF0aWNfY2Fz dDxjaGFyKj4obWFsbG9jKDIgKiBwYWdlX3NpemUpKTsKKysgIEVYUEVDVF9UUlVFKGRhdGExICE9 IE5VTEwpOworKyAgc2l6ZV90IGRhdGExX3NpemUgPSAoMiAqIHBhZ2Vfc2l6ZSk7CisgICBmb3Ig KHNpemVfdCBpID0gMDsgaSA8IGRhdGExX3NpemU7ICsraSkgeworICAgICBkYXRhMVtpXSA9IGkg JiAweDdmOworICAgfQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MgdGhpcmRfcGFydHkvYnJlYWtw YWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9tZW1vcnlfYWxsb2NhdG9yX3VuaXR0ZXN0LmNjCitpbmRl eCA1ODAzYjkwZDUuLjJhMWNmMTRmMCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKKysrKyB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9yeV9hbGxvY2F0b3JfdW5p dHRlc3QuY2MKK0BAIC01Nyw4ICs1Nyw5IEBAIFRFU1QoUGFnZUFsbG9jYXRvclRlc3QsIExhcmdl T2JqZWN0KSB7CisgCisgICBFWFBFQ1RfRVEoMFUsIGFsbG9jYXRvci5wYWdlc19hbGxvY2F0ZWQo KSk7CisgICB1aW50OF90KiBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYWxsb2NhdG9y LkFsbG9jKDEwMDAwKSk7CisrICB1aW50NjRfdCBleHBlY3RlZF9wYWdlcyA9IDEgKyAoKDEwMDAw IC0gMSkgLyBnZXRwYWdlc2l6ZSgpKTsKKyAgIEFTU0VSVF9GQUxTRShwID09IE5VTEwpOworLSAg RVhQRUNUX0VRKDNVLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOworKyAgRVhQRUNUX0VR KGV4cGVjdGVkX3BhZ2VzLCBhbGxvY2F0b3IucGFnZXNfYWxsb2NhdGVkKCkpOworICAgZm9yICh1 bnNpZ25lZCBpID0gMTsgaSA8IDEwOyArK2kpIHsKKyAgICAgdWludDhfdCogcCA9IHJlaW50ZXJw cmV0X2Nhc3Q8dWludDhfdCo+KGFsbG9jYXRvci5BbGxvYyhpKSk7CisgICAgIEFTU0VSVF9GQUxT RShwID09IE5VTEwpOworZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKK2luZGV4IDc5 ODA1NmRmYS4uMjJiZDgxZmZmIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKKysrKyB0aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29yL2V4cGxvaXRhYmlsaXR5X2xpbnV4LmNj CitAQCAtMjAyLDEyICsyMDIsMTQgQEAgYm9vbCBFeHBsb2l0YWJpbGl0eUxpbnV4OjpFbmRlZE9u SWxsZWdhbFdyaXRlKHVpbnQ2NF90IGluc3RydWN0aW9uX3B0cikgeworICAgLy8gQ2hlY2sgYXJj aGl0ZWN0dXJlIGFuZCBzZXQgYXJjaGl0ZWN0dXJlIHZhcmlhYmxlIHRvIGNvcnJlc3BvbmRpbmcg ZmxhZworICAgLy8gaW4gb2JqZHVtcC4KKyAgIHN3aXRjaCAoY29udGV4dC0+R2V0Q29udGV4dENQ VSgpKSB7CisrI2lmIGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KQorICAgICBj YXNlIE1EX0NPTlRFWFRfWDg2OgorICAgICAgIGFyY2hpdGVjdHVyZSA9ICJpMzg2IjsKKyAgICAg ICBicmVhazsKKyAgICAgY2FzZSBNRF9DT05URVhUX0FNRDY0OgorICAgICAgIGFyY2hpdGVjdHVy ZSA9ICJpMzg2Ong4Ni02NCI7CisgICAgICAgYnJlYWs7CisrI2VuZGlmCisgICAgIGRlZmF1bHQ6 CisgICAgICAgLy8gVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLiBOb3RlIHRoYXQgQVJNIGFyY2hp dGVjdHVyZXMgYXJlIG5vdAorICAgICAgIC8vIHN1cHBvcnRlZCBiZWNhdXNlIG9iamR1bXAgZG9l cyBub3Qgc3VwcG9ydCBBUk0uCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlfdW5pdHRlc3QuY2MgdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5j YworaW5kZXggNTI4ZWU1ZjIxLi43Mjc2NGQ2YzEgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYwor KysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFi aWxpdHlfdW5pdHRlc3QuY2MKK0BAIC0xMDQsNiArMTA0LDggQEAgRXhwbG9pdGFiaWxpdHlGb3Io Y29uc3Qgc3RyaW5nJiBmaWxlbmFtZSkgeworIH0KKyAKKyBURVNUKEV4cGxvaXRhYmlsaXR5VGVz dCwgVGVzdFdpbmRvd3NFbmdpbmUpIHsKKysvLyBUaGUgZm9sbG93aW5nIHRlc3RzIGFyZSBvbmx5 IGV4ZWN1dGFibGUgb24gYW4geDg2LWNsYXNzIGxpbnV4IG1hY2hpbmUuCisrI2lmICFkZWZpbmVk KF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVkKF9feDg2XzY0KSkKKyAgIEFT U0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCisgICAgICAgICAg ICAgRXhwbG9pdGFiaWxpdHlGb3IoImFzY2lpX3JlYWRfYXYuZG1wIikpOworICAgQVNTRVJUX0VR KGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKK0BAIC0xMzYsOSArMTM4LDEy IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2luZSkgeworICAgICAg ICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2Nsb2JiZXJfd3JpdGUuZG1wIikpOwor ICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfTE9XLAorICAgICAg ICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJyZWFkX2F2X2NvbmRpdGlvbmFsLmRtcCIpKTsKKysj ZW5kaWYKKyB9CisgCisgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkg eworKy8vIFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4ODYt Y2xhc3MgbGludXggbWFjaGluZS4KKysjaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194 ODZfNjQpCisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJTElUWV9JTlRF UkVTVElORywKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfbnVsbF9yZWFk X2F2LmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZ X0hJR0gsCitAQCAtMTcxLDcgKzE3Niw4IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0 TGludXhFbmdpbmUpIHsKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfZXhl Y3V0YWJsZV9oZWFwLmRtcCIpKTsKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExP SVRBQklMSVRZX0hJR0gsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X2pt cF90b19tb2R1bGVfbm90X2V4ZV9yZWdpb24uZG1wIikpOworLSNpZm5kZWYgX1dJTjMyCisrI2Vu ZGlmCisrI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBkZWZpbmVk KF9feDg2XzY0KSkKKyAgIEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZ X0hJR0gsCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX25v bndyaXRhYmxlX21vZHVsZS5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpF WFBMT0lUQUJJTElUWV9ISUdILAorQEAgLTE4MiwxMCArMTg4LDEwIEBAIFRFU1QoRXhwbG9pdGFi aWxpdHlUZXN0LCBUZXN0TGludXhFbmdpbmUpIHsKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0 eUZvcigibGludXhfd3JpdGVfdG9fb3V0c2lkZV9tb2R1bGVfdmlhX21hdGguZG1wIikpOworICAg QVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSU5URVJFU1RJTkcsCisg ICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoImxpbnV4X3dyaXRlX3RvX3VuZGVyXzRrLmRt cCIpKTsKKy0jZW5kaWYgIC8vIF9XSU4zMgorKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAm JiAoIWRlZmluZWQoX19pMzg2KSAmJiAhZGVmaW5lZChfX3g4Nl82NCkpCisgfQorIAorLSNpZm5k ZWYgX1dJTjMyCisrI2lmICFkZWZpbmVkKF9XSU4zMikgJiYgKGRlZmluZWQoX19pMzg2KSB8fCBk ZWZpbmVkKF9feDg2XzY0KSkKKyBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rlc3QsIERp c2Fzc2VtYmxlQnl0ZXNUZXN0KSB7CisgICBBU1NFUlRfRkFMU0UoRXhwbG9pdGFiaWxpdHlMaW51 eFRlc3Q6OkRpc2Fzc2VtYmxlQnl0ZXMoIiIsIE5VTEwsIDUsIE5VTEwpKTsKKyAgIHVpbnQ4X3Qg Ynl0ZXNbNl0gPSB7MHhjNywgMHgwLCAweDUsIDB4MCwgMHgwLCAweDB9OworQEAgLTMwMSw2ICsz MDcsNyBAQCBURVNUKEV4cGxvaXRhYmlsaXR5TGludXhVdGlsc1Rlc3QsIENhbGN1bGF0ZUFkZHJl c3NUZXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVfYWRkcmVzcykpOworIH0KKy0jZW5kaWYgIC8v IF9XSU4zMgorKyNlbmRpZiAgLy8gIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYp IHx8IGRlZmluZWQoX194ODZfNjQpKQorKworIAorIH0gIC8vIG5hbWVzcGFjZQorZGlmZiAtLWdp dCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9t aW5pZHVtcC0yLWNvcmUuY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Rvb2xz L2xpbnV4L21kMmNvcmUvbWluaWR1bXAtMi1jb3JlLmNjCitpbmRleCBhYWRlODJjOTkuLjE5NWFh NzNmMyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMv bGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKKysrKyB0aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNvcmUuY2MKK0BA IC03Nyw2ICs3Nyw4IEBACisgICAjZGVmaW5lIEVMRl9BUkNIICBFTV9NSVBTCisgI2VsaWYgZGVm aW5lZChfX2FhcmNoNjRfXykKKyAgICNkZWZpbmUgRUxGX0FSQ0ggIEVNX0FBUkNINjQKKysjZWxp ZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAjZGVmaW5lIEVMRl9BUkNIICBFTV9QUEM2NAor ICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9fYXJtX18pCitAQCAtODcsNiArODksOCBAQCB0eXBl ZGVmIHVzZXJfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OworICNlbGlmIGRlZmluZWQgKF9fbWlwc19f KQorIC8vIFRoaXMgZmlsZS1sb2NhbCB0eXBlZGVmIHNpbXBsaWZpZXMgdGhlIHNvdXJjZSBjb2Rl LgorIHR5cGVkZWYgZ3JlZ3NldF90IHVzZXJfcmVnc19zdHJ1Y3Q7CisrI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorK3R5cGVkZWYgc3RydWN0IHB0X3JlZ3MgdXNlcl9yZWdzX3N0cnVjdDsK KyAjZW5kaWYKKyAKKyB1c2luZyBnb29nbGVfYnJlYWtwYWQ6Ok1EVHlwZUhlbHBlcjsKK0BAIC0z MjEsNiArMzI1LDkgQEAgc3RydWN0IENyYXNoZWRQcm9jZXNzIHsKKyAjZW5kaWYKKyAjaWYgZGVm aW5lZChfX2FhcmNoNjRfXykKKyAgICAgdXNlcl9mcHNpbWRfc3RydWN0IGZwcmVnczsKKysjZW5k aWYKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICBtY29udGV4dF90IG1jb250ZXh0 OworICNlbmRpZgorICAgICB1aW50cHRyX3Qgc3RhY2tfYWRkcjsKKyAgICAgY29uc3QgdWludDhf dCogc3RhY2s7CitAQCAtNTM1LDYgKzU0MiwzOCBAQCBQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFz aGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCisgICB0aHJlYWQtPm1jb250ZXh0LmZwY19laXIg PSByYXdyZWdzLT5mbG9hdF9zYXZlLmZpcjsKKyAjZW5kaWYKKyB9CisrI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorK3N0YXRpYyB2b2lkCisrUGFyc2VUaHJlYWRSZWdpc3RlcnMoQ3Jhc2hl ZFByb2Nlc3M6OlRocmVhZCogdGhyZWFkLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IE1p bmlkdW1wTWVtb3J5UmFuZ2UmIHJhbmdlKSB7CisrICBjb25zdCBNRFJhd0NvbnRleHRQUEM2NCog cmF3cmVncyA9IHJhbmdlLkdldERhdGE8TURSYXdDb250ZXh0UFBDNjQ+KDApOworKworKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQorKyAgICB0 aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbaV0gPSByYXdyZWdzLT5ncHJbaV07CisrCisrICB0aHJl YWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXSA9IHJhd3JlZ3MtPmxyOworKyAgdGhyZWFkLT5t Y29udGV4dC5ncF9yZWdzW1BUX05JUF0gPSByYXdyZWdzLT5zcnIwOworKyAgdGhyZWFkLT5tY29u dGV4dC5ncF9yZWdzW1BUX01TUl0gPSByYXdyZWdzLT5zcnIxOworKyAgdGhyZWFkLT5tY29udGV4 dC5ncF9yZWdzW1BUX0NDUl0gPSByYXdyZWdzLT5jcjsKKysgIHRocmVhZC0+bWNvbnRleHQuZ3Bf cmVnc1tQVF9YRVJdID0gcmF3cmVncy0+eGVyOworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdz W1BUX0NUUl0gPSByYXdyZWdzLT5jdHI7CisrICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJz YXZlID0gcmF3cmVncy0+dnJzYXZlOworKworKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9B VElOR1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKysgICAgICB0aHJlYWQtPm1jb250ZXh0 LmZwX3JlZ3NbaV0gPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZwcmVnc1tpXTsKKysKKysgIHRocmVh ZC0+bWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV0gPSByYXdyZWdzLT5mbG9hdF9zYXZlLmZwc2Ny OworKworKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09V TlQ7IGkrKykgeworKyAgICAgIHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMF0g PSByYXdyZWdzLT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldLmhpZ2ggPj4gMzI7CisrICAgICAgdGhy ZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVsxXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZl LnNhdmVfdnJbaV0uaGlnaDsKKysgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdz W2ldWzJdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5sb3cgPj4gMzI7CisrICAg ICAgdGhyZWFkLT5tY29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVszXSA9IHJhd3JlZ3MtPnZlY3Rv cl9zYXZlLnNhdmVfdnJbaV0ubG93OworKyAgfQorKworKyAgdGhyZWFkLT5tY29udGV4dC52X3Jl Z3MtPnZzY3IudnNjcl93b3JkID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92c2NyLmxvdyAm IDB4RkZGRkZGRkY7CisrfQorKworICNlbHNlCisgI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBi ZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldCIKKyAjZW5kaWYKK0BAIC02MjMsNiArNjYy LDEyIEBAIFBhcnNlU3lzdGVtSW5mbyhjb25zdCBPcHRpb25zJiBvcHRpb25zLCBDcmFzaGVkUHJv Y2VzcyogY3Jhc2hpbmZvLAorICMgZWxzZQorICMgIGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1 cnJlbnRseSBub3Qgc3VwcG9ydGVkIChuMzIpIgorICMgZW5kaWYKKysjZWxpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisrICBpZiAoc3lzaW5mby0+cHJvY2Vzc29yX2FyY2hpdGVjdHVyZSAhPSBN RF9DUFVfQVJDSElURUNUVVJFX1BQQzY0KSB7CisrICAgIGZwcmludGYoc3RkZXJyLAorKyAgICAg ICAgICAgICJUaGlzIHZlcnNpb24gb2YgbWluaWR1bXAtMi1jb3JlIG9ubHkgc3VwcG9ydHMgUFBD NjQuXG4iKTsKKysgICAgZXhpdCgxKTsKKysgIH0KKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2Rl IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQiCisgI2VuZGlmCitkaWZm IC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUyB0aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9DT05UUklCVVRPUlMKK2luZGV4IDg3MjRiN2YzMi4uOGUy OTQyNGVmIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJV VE9SUworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRSSUJVVE9SUworQEAg LTEzLDMgKzEzLDQgQEAgTWFyayBNZW50b3ZhaSA8bWFya0BjaHJvbWl1bS5vcmc+CisgUm9iZXJ0 IFNlc2VrIDxyc2VzZWtAY2hyb21pdW0ub3JnPgorIFNjb3R0IEdyYWhhbSA8c2NvdHRtZ0BjaHJv bWl1bS5vcmc+CisgSm9zaHVhIFBlcmF6YSA8anBlcmF6YUBjaHJvbWl1bS5vcmc+CisrU2hhd24g QW5hc3Rhc2lvIDxzaGF3bkBhbmFzdGFzLmlvPgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaCB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAoraW5kZXggNmVkNzdhOThlLi4xZmQ4 MzQ2OWEgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvY29tcGF0L2xp bnV4L3N5cy91c2VyLmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQv bGludXgvc3lzL3VzZXIuaAorQEAgLTE1LDYgKzE1LDcgQEAKKyAjaWZuZGVmIENSQVNIUEFEX0NP TVBBVF9MSU5VWF9TWVNfVVNFUl9IXworICNkZWZpbmUgQ1JBU0hQQURfQ09NUEFUX0xJTlVYX1NZ U19VU0VSX0hfCisgCisrI2luY2x1ZGUgPGNzdGRkZWY+CisgI2luY2x1ZGVfbmV4dCA8c3lzL3Vz ZXIuaD4KKyAKKyAjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oIHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHQuaAoraW5kZXggM2Ez ZTYwM2NiLi4zMTE4ZDllOWYgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dC5oCitAQCAtNTkyLDYgKzU5Miw3MCBA QCBzdHJ1Y3QgTWluaWR1bXBDb250ZXh0TUlQUzY0IHsKKyAgIHVpbnQ2NF90IGZpcjsKKyB9Owor IAorKy8vISBcYnJpZWYgcHBjNjQtc3BlY2lmaWMgZmxhZ3MgZm9yIE1pbmlkdW1wUFBDNjQ6OmNv bnRleHRfZmxhZ3MKKysvLyEgQmFzZWQgb24gbWluaWR1bXBfY3B1X3BwYzY0LmggZnJvbSBicmVh a3BhZAorK2VudW0gTWluaWR1bXBDb250ZXh0UFBDNjRGbGFncyA6IHVpbnQzMl90IHsKKysgIC8v ISBcYnJpZWYgSWRlbnRpZmllcyB0aGUgY29udGV4dCBhcyBQUEM2NC4KKysgIGtNaW5pZHVtcENv bnRleHRQUEM2NCA9IDB4MDEwMDAwMDAsCisrCisrICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUg dmFsaWRpdHkgb2YgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycy4KKysgIC8vIQorKyAgLy8hIFJl Z2lzdGVycyBgcjBgLWByMzFgLCBgbmlwYCwgYG1zcmAsIGBscmAsIGV0Yy4gYXJlIHZhbGlkLgor KyAga01pbmlkdW1wQ29udGV4dFBQQzY0QmFzZSA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4 MDAwMDAwMDEsCisrCisrICAvLyEgXGJyaWVmIEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgZmxv YXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgorKyAgLy8hCisrICAvLyEgUmVnaXN0ZXJzIGBmcDBgLWBm cDMxYCwgYGZwc2NyYCBhcmUgdmFsaWQuCisrICBrTWluaWR1bXBDb250ZXh0UFBDNjRGbG9hdGlu ZyA9IGtNaW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMDgsCisrCisrICAvLyEgXGJyaWVm IEluZGljYXRlcyB0aGUgdmFsaWRpdHkgb2YgQWx0aXZlYy9WTVggcmVnaXN0ZXJzLgorKyAgLy8h CisrICAvLyEgUmVnaXN0ZXJzIGB2MGAtYHYzMWAsIGB2c2NyYCwgYHZyc2F2ZWAuCisrICBrTWlu aWR1bXBDb250ZXh0UFBDNjRWZWN0b3IgPSBrTWluaWR1bXBDb250ZXh0UFBDNjQgfCAweDAwMDAw MDIwLAorKworKyAgLy8hIFxicmllZiBJbmRpY2F0ZXMgdGhlIHZhbGlkaXR5IG9mIGFsbCByZWdp c3RlcnMKKysgIGtNaW5pZHVtcENvbnRleHRQUEM2NEFsbCA9IGtNaW5pZHVtcENvbnRleHRQUEM2 NEJhc2UgICAgIHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNaW5pZHVtcENvbnRl eHRQUEM2NEZsb2F0aW5nIHwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtNaW5pZHVt cENvbnRleHRQUEM2NFZlY3RvcgorK307CisrCisrLy8hIFxicmllZiBBIFBQQzY0IENQVSBjb250 ZXh0IGNhcnJpZWQgaW4gYSBtaW5pZHVtcCBmaWxlLgorKy8vISBCYXNlZCBvbiBtaW5pZHVtcF9j cHVfcHBjNjQuaCBmcm9tIGJyZWFrcGFkLgorK3N0cnVjdCBNaW5pZHVtcENvbnRleHRQUEM2NCB7 CisrICB1aW50NjRfdCBjb250ZXh0X2ZsYWdzOworKworKyAgLy8hIFxicmllZiBHZW5lcmFsIHB1 cnBvc2UgcmVnaXN0ZXJzLgorKyAgdWludDY0X3QgbmlwOworKyAgdWludDY0X3QgbXNyOworKyAg dWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRfdCBjY3I7CisrICB1aW50NjRfdCB4ZXI7Cisr ICB1aW50NjRfdCBsbms7CisrICB1aW50NjRfdCBjdHI7CisrCisrICAvLyEgXGJyaWVmIEZsb2F0 aW5nIHBvaW50IHJlZ2lzdGVycy4KKysgIGRvdWJsZSBmcHJlZ3NbMzJdOworKworKyAgLy8hIFxi cmllZiBGUFUgc3RhdHVzIHJlZ2lzdGVyLgorKyAgZG91YmxlIGZwc2NyOworKworKyAgLy8hIFxi cmllZiBBbHRpdmVjL1ZNWCB2ZWN0b3IgcmVnaXN0ZXJzLgorKyAgc3RydWN0IHsKKysgICAgICAv LyEgXGJyaWVmIFZlY3RvciByZWdpc3RlcnMgYXJlIDEyOGJpdHMuCisrICAgICAgdWludDEyOF9z dHJ1Y3Qgc2F2ZV92clszMl07CisrICAgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92c2NyOworKwor KyAgICAgIC8vISBcYnJpZWYgUGFkZGluZyBpbmNsdWRlZCBmb3IgYnJlYWtwYWQgY29tcGF0aWJp bHRpeS4KKysgICAgICB1aW50MzJfdCBzYXZlX3BhZDVbNF07CisrCisrICAgICAgLy8hIFxicmll ZiBWUlNBVkUgcmVnaXN0ZXIuCisrICAgICAgdWludDMyX3Qgc2F2ZV92cnNhdmU7CisrCisrICAg ICAgLy8hIFxicmllZiBQYWRkaW5nIGluY2x1ZGVkIGZvciBicmVha3BhZCBjb21wYXRpYmlsdGl5 LgorKyAgICAgIHVpbnQzMl90IHNhdmVfcGFkNls3XTsKKysgIH0gdnJlZ3M7CisrfTsKKysKKyB9 ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAjZW5kaWYgIC8vIENSQVNIUEFEX01JTklEVU1Q X01JTklEVU1QX0NPTlRFWFRfSF8KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MgdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MKK2luZGV4 IGQ3ZTUzYTQ5My4uZDg5ZWI5ZTAxIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmNjCisrKysgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuY2MK K0BAIC0xMDEsNiArMTAxLDEzIEBAIE1pbmlkdW1wQ29udGV4dFdyaXRlcjo6Q3JlYXRlRnJvbVNu YXBzaG90KGNvbnN0IENQVUNvbnRleHQqIGNvbnRleHRfc25hcHNob3QpIHsKKyAgICAgICBicmVh azsKKyAgICAgfQorIAorKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDogeworKyAgICAg IGNvbnRleHQgPSBzdGQ6Om1ha2VfdW5pcXVlPE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyPigp OworKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIqPihj b250ZXh0LmdldCgpKQorKyAgICAgICAgICAtPkluaXRhbGl6ZUZyb21TbmFwc2hvdChjb250ZXh0 X3NuYXBzaG90LT5wcGM2NCk7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKyAgICAgZGVmYXVs dDogeworICAgICAgIExPRyhFUlJPUikgPDwgInVua25vd24gY29udGV4dCBhcmNoaXRlY3R1cmUg IgorICAgICAgICAgICAgICAgICAgPDwgY29udGV4dF9zbmFwc2hvdC0+YXJjaGl0ZWN0dXJlOwor QEAgLTQ1Myw0ICs0NjAsNDcgQEAgc2l6ZV90IE1pbmlkdW1wQ29udGV4dE1JUFM2NFdyaXRlcjo6 Q29udGV4dFNpemUoKSBjb25zdCB7CisgICByZXR1cm4gc2l6ZW9mKGNvbnRleHRfKTsKKyB9Cisg CisrTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6Ok1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVy KCkKKysgIDogTWluaWR1bXBDb250ZXh0V3JpdGVyKCksIGNvbnRleHRfKCkgeworKyAgICBjb250 ZXh0Xy5jb250ZXh0X2ZsYWdzID0ga01pbmlkdW1wQ29udGV4dFBQQzY0OworK30KKysKKytNaW5p ZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6fk1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyKCkgPSBk ZWZhdWx0OworKworK3ZvaWQgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6OkluaXRhbGl6ZUZy b21TbmFwc2hvdCgKKysgICAgY29uc3QgQ1BVQ29udGV4dFBQQzY0KiBjb250ZXh0X3NuYXBzaG90 KSB7CisrICBEQ0hFQ0tfRVEoc3RhdGUoKSwga1N0YXRlTXV0YWJsZSk7CisrICBEQ0hFQ0tfRVEo Y29udGV4dF8uY29udGV4dF9mbGFncywga01pbmlkdW1wQ29udGV4dFBQQzY0KTsKKysKKysgIGNv bnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1bXBDb250ZXh0UFBDNjRBbGw7CisrCisrICBt ZW1jcHkoY29udGV4dF8ucmVncywgY29udGV4dF9zbmFwc2hvdC0+cmVncywgc2l6ZW9mKGNvbnRl eHRfLnJlZ3MpKTsKKysgIGNvbnRleHRfLm5pcCA9IGNvbnRleHRfc25hcHNob3QtPm5pcDsKKysg IGNvbnRleHRfLm1zciA9IGNvbnRleHRfc25hcHNob3QtPm1zcjsKKysgIGNvbnRleHRfLmNjciA9 IGNvbnRleHRfc25hcHNob3QtPmNjcjsKKysgIGNvbnRleHRfLnhlciA9IGNvbnRleHRfc25hcHNo b3QtPnhlcjsKKysgIGNvbnRleHRfLmxuayA9IGNvbnRleHRfc25hcHNob3QtPmxuazsKKysgIGNv bnRleHRfLmN0ciA9IGNvbnRleHRfc25hcHNob3QtPmN0cjsKKysKKysgIG1lbWNweShjb250ZXh0 Xy5mcHJlZ3MsIGNvbnRleHRfc25hcHNob3QtPmZwcmVncywgc2l6ZW9mKGNvbnRleHRfLmZwcmVn cykpOworKyAgY29udGV4dF8uZnBzY3IgPSBjb250ZXh0X3NuYXBzaG90LT5mcHNjcjsKKysKKysg IG1lbWNweShjb250ZXh0Xy52cmVncy5zYXZlX3ZyLCBjb250ZXh0X3NuYXBzaG90LT52cmVncy5z YXZlX3ZyLAorKyAgICAgICAgIHNpemVvZihjb250ZXh0Xy52cmVncy5zYXZlX3ZyKSk7CisrICBt ZW1jcHkoJmNvbnRleHRfLnZyZWdzLnNhdmVfdnNjciwgJmNvbnRleHRfc25hcHNob3QtPnZyZWdz LnNhdmVfdnNjciwKKysgICAgICAgICBzaXplb2YoY29udGV4dF8udnJlZ3Muc2F2ZV92c2NyKSk7 CisrICBjb250ZXh0Xy52cmVncy5zYXZlX3Zyc2F2ZSA9IGNvbnRleHRfc25hcHNob3QtPnZyZWdz LnNhdmVfdnJzYXZlOworK30KKysKKytib29sIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpX cml0ZU9iamVjdCgKKysgICAgRmlsZVdyaXRlckludGVyZmFjZSogZmlsZV93cml0ZXIpIHsKKysg IERDSEVDS19FUShzdGF0ZSgpLCBrU3RhdGVXcml0YWJsZSk7CisrICByZXR1cm4gZmlsZV93cml0 ZXItPldyaXRlKCZjb250ZXh0Xywgc2l6ZW9mKGNvbnRleHRfKSk7CisrfQorKworK3NpemVfdCBN aW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcjo6Q29udGV4dFNpemUoKSBjb25zdCB7CisrICBEQ0hF Q0tfR0Uoc3RhdGUoKSwga1N0YXRlRnJvemVuKTsKKysgIHJldHVybiBzaXplb2YoY29udGV4dF8p OworK30KKysKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKK2RpZmYgLS1naXQgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXIuaCB0 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dy aXRlci5oCitpbmRleCBkNGFiOTM2ZWUuLjFkMjJmYzU5YyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCisr KysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4 dF93cml0ZXIuaAorQEAgLTMxNSw2ICszMTUsNDUgQEAgY2xhc3MgTWluaWR1bXBDb250ZXh0TUlQ UzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1pbmlkdW1wQ29udGV4dFdyaXRlciB7CisgICBESVNB TExPV19DT1BZX0FORF9BU1NJR04oTWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyKTsKKyB9Owor IAorK2NsYXNzIE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyIGZpbmFsIDogcHVibGljIE1pbmlk dW1wQ29udGV4dFdyaXRlciB7CisrIHB1YmxpYzoKKysgIE1pbmlkdW1wQ29udGV4dFBQQzY0V3Jp dGVyKCk7CisrICB+TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKSBvdmVycmlkZTsKKysKKysg IC8vISBcYnJpZWYgSW5pdGFsaXplcyB0aGUgTWluaWR1bXBDb250ZXh0UFBDNjQgYmFzZWQgb24g XGEgY29udGV4dF9zbmFwc2hvdC4KKysgIC8vIQorKyAgLy8hIFxwYXJhbVtpbl0gY29udGV4dF9z bmFwc2hvdCBUaGUgY29udGV4dCBzbmFwc2hvdCB0byB1c2UgYXMgc291cmNlIGRhdGEuCisrICAv LyEKKysgIC8vISBcbm90ZSBWYWxpZCBpbiAja1N0YXRlTXV0YWJsZS4gTm8gbXV0YXRpb24gb2Yg Y29udGV4dCgpIG1heSBiZSBkb25lIGJlZm9yZQorKyAgLy8hICAgICBjYWxsaW5nIHRoaXMgbWV0 aG9kLCBhbmQgaXQgaXMgbm90IG5vcm1hbGx5IG5lY2Vzc2FyeSB0byBhbHRlcgorKyAgLy8hICAg ICBjb250ZXh0KCkgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZC4KKysgIHZvaWQgSW5pdGFsaXpl RnJvbVNuYXBzaG90KGNvbnN0IENQVUNvbnRleHRQUEM2NCogY29udGV4dF9zbmFwc2hvdCk7Cisr CisrICAvLyEgXGJyaWVmIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBjb250ZXh0IHN0cnVjdHVy ZSB0aGF0IHRoaXMgb2JqZWN0IHdpbGwKKysgIC8vISAgICAgd3JpdGUuCisrICAvLyEKKysgIC8v ISBcYXR0ZW50aW9uIFRoaXMgcmV0dXJucyBhIG5vbi1gY29uc3RgIHBvaW50ZXIgdG8gdGhpcyBv YmplY3TigJlzIHByaXZhdGUKKysgIC8vISAgICAgZGF0YSBzbyB0aGF0IGEgY2FsbGVyIGNhbiBw b3B1bGF0ZSB0aGUgY29udGV4dCBzdHJ1Y3R1cmUgZGlyZWN0bHkuCisrICAvLyEgICAgIFRoaXMg aXMgZG9uZSBiZWNhdXNlIHByb3ZpZGluZyBzZXR0ZXIgaW50ZXJmYWNlcyB0byBlYWNoIGZpZWxk IGluIHRoZQorKyAgLy8hICAgICBjb250ZXh0IHN0cnVjdHVyZSB3b3VsZCBiZSB1bndpZWxkeSBh bmQgY3VtYmVyc29tZS4gQ2FyZSBtdXN0IGJlIHRha2VuCisrICAvLyEgICAgIHRvIHBvcHVsYXRl IHRoZSBjb250ZXh0IHN0cnVjdHVyZSBjb3JyZWN0bHkuIFRoZSBjb250ZXh0IHN0cnVjdHVyZQor KyAgLy8hICAgICBtdXN0IG9ubHkgYmUgbW9kaWZpZWQgd2hpbGUgdGhpcyBvYmplY3QgaXMgaW4g dGhlICNrU3RhdGVNdXRhYmxlCisrICAvLyEgICAgIHN0YXRlLgorKyAgTWluaWR1bXBDb250ZXh0 UFBDNjQqIGNvbnRleHQoKSB7IHJldHVybiAmY29udGV4dF87IH0KKysKKysgcHJvdGVjdGVkOgor KyAgLy8gTWluaWR1bXBXcml0YWJsZToKKysgIGJvb2wgV3JpdGVPYmplY3QoRmlsZVdyaXRlcklu dGVyZmFjZSogZmlsZV93cml0ZXIpIG92ZXJyaWRlOworKworKyAgLy8gTWluaWR1bXBDb250ZXh0 V3JpdGVyOgorKyAgc2l6ZV90IENvbnRleHRTaXplKCkgY29uc3Qgb3ZlcnJpZGU7CisrCisrIHBy aXZhdGU6CisrICBNaW5pZHVtcENvbnRleHRQUEM2NCBjb250ZXh0XzsKKysKKysgIERJU0FMTE9X X0NPUFlfQU5EX0FTU0lHTihNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcik7CisrfTsKKysKKyB9 ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKKyAjZW5kaWYgIC8vIENSQVNIUEFEX01JTklEVU1Q X01JTklEVU1QX0NPTlRFWFRfV1JJVEVSX0hfCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MgdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0 ZXJfdGVzdC5jYworaW5kZXggMzIxNmE5MDZiLi5hOWZjYmU5ZDggMTAwNjQ0CistLS0gdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXJf dGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlk dW1wX2NvbnRleHRfd3JpdGVyX3Rlc3QuY2MKK0BAIC0yMTMsNiArMjEzLDIxIEBAIFRFU1QoTWlu aWR1bXBDb250ZXh0V3JpdGVyLCBNSVBTNjRfRnJvbVNuYXBzaG90KSB7CisgICAgICAgY29udGV4 dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0TUlQUzY0LCBrU2VlZCk7CisgfQorIAorK1RFU1QoTWlu aWR1bXBDb250ZXh0V3JpdGVyLCBQUEM2NF9aZXJvcykgeworKyAgRW1wdHlDb250ZXh0VGVzdDxN aW5pZHVtcENvbnRleHRQUEM2NFdyaXRlciwgTWluaWR1bXBDb250ZXh0UFBDNjQ+KAorKyAgICBF eHBlY3RNaW5pZHVtcENvbnRleHRQUEM2NCk7CisrfQorKworK1RFU1QoTWluaWR1bXBDb250ZXh0 V3JpdGVyLCBQUEM2NF9Gcm9tU25hcHNob3QpIHsKKysgIGNvbnN0ZXhwciB1aW50MzJfdCBrU2Vl ZCA9IDY0OworKyAgQ1BVQ29udGV4dFBQQzY0IGNvbnRleHRfcHBjNjQ7CisrICBDUFVDb250ZXh0 IGNvbnRleHQ7CisrICBjb250ZXh0LnBwYzY0ID0gJmNvbnRleHRfcHBjNjQ7CisrICBJbml0aWFs aXplQ1BVQ29udGV4dFBQQzY0KCZjb250ZXh0LCBrU2VlZCk7CisrICBGcm9tU25hcHNob3RUZXN0 PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBNaW5pZHVtcENvbnRleHRQUEM2ND4oCisrICAg ICAgY29udGV4dCwgRXhwZWN0TWluaWR1bXBDb250ZXh0UFBDNjQsIGtTZWVkKTsKKyt9CisrCisg fSAgLy8gbmFtZXNwYWNlCisgfSAgLy8gbmFtZXNwYWNlIHRlc3QKKyB9ICAvLyBuYW1lc3BhY2Ug Y3Jhc2hwYWQKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1 bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRlci5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCitpbmRleCAwOTc0ZTNk ZGYuLmI3MWVjNTg4MCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9t aW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCisrKysgdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfbWlzY19pbmZvX3dyaXRlci5jYworQEAg LTEzNSw2ICsxMzUsOCBAQCBzdGQ6OnN0cmluZyBNaW5pZHVtcE1pc2NJbmZvRGVidWdCdWlsZFN0 cmluZygpIHsKKyAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrQ1BVW10gPSAibWlwcyI7CisgI2Vs aWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTNjRFTCkKKyAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBr Q1BVW10gPSAibWlwczY0IjsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorKyAgc3Rh dGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJwcGM2NCI7CisgI2Vsc2UKKyAjZXJyb3IgZGVm aW5lIGtDUFUgZm9yIHRoaXMgQ1BVCisgI2VuZGlmCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNjIHRoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNjCitpbmRleCA3YTFiMjc2 M2MuLmJlZGE4ZGE5ZSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9z bmFwc2hvdC9jYXB0dXJlX21lbW9yeS5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNjCitAQCAtMTEyLDYgKzExMiwxMSBAQCB2b2lk IENhcHR1cmVNZW1vcnk6OlBvaW50ZWRUb0J5Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBjb250 ZXh0LAorICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNlOjpzaXplKGNvbnRleHQubWlwc2Vs LT5yZWdzKTsgKytpKSB7CisgICAgIE1heWJlQ2FwdHVyZU1lbW9yeUFyb3VuZChkZWxlZ2F0ZSwg Y29udGV4dC5taXBzZWwtPnJlZ3NbaV0pOworICAgfQorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVf UFBDNjRfRkFNSUxZKQorKyAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250 ZXh0LnBwYzY0LT5uaXApOworKyAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBiYXNlOjpzaXplKGNv bnRleHQucHBjNjQtPnJlZ3MpOyArK2kpIHsKKysgICAgTWF5YmVDYXB0dXJlTWVtb3J5QXJvdW5k KGRlbGVnYXRlLCBjb250ZXh0LnBwYzY0LT5yZWdzW2ldKTsKKysgIH0KKyAjZWxzZQorICNlcnJv ciBQb3J0LgorICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJlLmggdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvY3B1X2FyY2hpdGVjdHVyZS5oCitpbmRleCA4MTFhNzIwOTUuLmY0ZjgzOTgx ZCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVf YXJjaGl0ZWN0dXJlLmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9jcHVfYXJjaGl0ZWN0dXJlLmgKK0BAIC00Myw3ICs0MywxMCBAQCBlbnVtIENQVUFyY2hpdGVj dHVyZSB7CisgICBrQ1BVQXJjaGl0ZWN0dXJlTUlQU0VMLAorIAorICAgLy8hIFxicmllZiA2NC1i aXQgTUlQU0VMLgorLSAga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMCisrICBrQ1BVQXJjaGl0ZWN0 dXJlTUlQUzY0RUwsCisrCisrICAvLyEgXGJyaWVmIDY0LWJpdCBQUEM2NC4KKysgIGtDUFVBcmNo aXRlY3R1cmVQUEM2NAorIH07CisgCisgfSAgLy8gbmFtZXNwYWNlIGNyYXNocGFkCitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNj IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCitp bmRleCBjNzViNTU1NWUuLmFlYWRlNTc3YSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmNjCitAQCAtMTY5LDYgKzE2OSw4IEBA IHVpbnQ2NF90IENQVUNvbnRleHQ6Okluc3RydWN0aW9uUG9pbnRlcigpIGNvbnN0IHsKKyAgICAg ICByZXR1cm4gYXJtLT5wYzsKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNNjQ6CisgICAg ICAgcmV0dXJuIGFybTY0LT5wYzsKKysgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6Cisr ICAgICAgcmV0dXJuIHBwYzY0LT5uaXA7CisgICAgIGRlZmF1bHQ6CisgICAgICAgTk9UUkVBQ0hF RCgpOworICAgICAgIHJldHVybiB+MHVsbDsKK0BAIC0xODUsNiArMTg3LDggQEAgdWludDY0X3Qg Q1BVQ29udGV4dDo6U3RhY2tQb2ludGVyKCkgY29uc3QgeworICAgICAgIHJldHVybiBhcm0tPnNw OworICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKKyAgICAgICByZXR1cm4gYXJtNjQt PnNwOworKyAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoKKysgICAgICByZXR1cm4gcHBj NjQtPnJlZ3NbMV07CisgICAgIGRlZmF1bHQ6CisgICAgICAgTk9UUkVBQ0hFRCgpOworICAgICAg IHJldHVybiB+MHVsbDsKK0BAIC0xOTYsNiArMjAwLDcgQEAgYm9vbCBDUFVDb250ZXh0OjpJczY0 Qml0KCkgY29uc3QgeworICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVYODZfNjQ6CisgICAgIGNh c2Uga0NQVUFyY2hpdGVjdHVyZUFSTTY0OgorICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVNSVBT NjRFTDoKKysgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ6CisgICAgICAgcmV0dXJuIHRy dWU7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZVg4NjoKKyAgICAgY2FzZSBrQ1BVQXJjaGl0 ZWN0dXJlQVJNOgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9jcHVfY29udGV4dC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2NwdV9jb250ZXh0LmgKK2luZGV4IGZiMjNjNDY3OS4uZWViZWRlNjNjIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmgKKysrKyB0 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfY29udGV4dC5oCitAQCAt MzUyLDYgKzM1MiwyNCBAQCBzdHJ1Y3QgQ1BVQ29udGV4dE1JUFM2NCB7CisgICB1aW50NjRfdCBm aXI7CisgfTsKKyAKKysvLyEgXGJyaWVmIEEgY29udGV4dCBzdHJ1Y3R1cmUgY2FycnlpbmcgUFBD NjQgQ1BVIHN0YXRlLgorK3N0cnVjdCBDUFVDb250ZXh0UFBDNjQgeworKyAgdWludDY0X3Qgbmlw OworKyAgdWludDY0X3QgbXNyOworKyAgdWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRfdCBj Y3I7CisrICB1aW50NjRfdCB4ZXI7CisrICB1aW50NjRfdCBsbms7CisrICB1aW50NjRfdCBjdHI7 CisrICBkb3VibGUgZnByZWdzWzMyXTsKKysgIGRvdWJsZSBmcHNjcjsKKysgIHN0cnVjdCB7Cisr ICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnJbMzJdOworKyAgICB1aW50MTI4X3N0cnVjdCBzYXZl X3ZzY3I7CisrICAgIHVpbnQzMl90IHNhdmVfdnJzYXZlOworKyAgfSB2cmVnczsKKyt9OworKwor IC8vISBcYnJpZWYgQSBjb250ZXh0IHN0cnVjdHVyZSBjYXBhYmxlIG9mIGNhcnJ5aW5nIHRoZSBj b250ZXh0IG9mIGFueSBzdXBwb3J0ZWQKKyAvLyEgICAgIENQVSBhcmNoaXRlY3R1cmUuCisgc3Ry dWN0IENQVUNvbnRleHQgeworQEAgLTM4Miw2ICs0MDAsNyBAQCBzdHJ1Y3QgQ1BVQ29udGV4dCB7 CisgICAgIENQVUNvbnRleHRBUk02NCogYXJtNjQ7CisgICAgIENQVUNvbnRleHRNSVBTKiBtaXBz ZWw7CisgICAgIENQVUNvbnRleHRNSVBTNjQqIG1pcHM2NDsKKysgICAgQ1BVQ29udGV4dFBQQzY0 KiBwcGM2NDsKKyAgIH07CisgfTsKKyAKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXguaCB0aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCitpbmRl eCA5ZjQ2YTQ4OTcuLmFhNjc3YzRlYiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCisrKysgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvY3B1X2NvbnRleHRfbGludXguaAor QEAgLTE1LDYgKzE1LDcgQEAKKyAjaWZuZGVmIENSQVNIUEFEX1NOQVBTSE9UX0xJTlVYX0NQVV9D T05URVhUX0xJTlVYX0hfCisgI2RlZmluZSBDUkFTSFBBRF9TTkFQU0hPVF9MSU5VWF9DUFVfQ09O VEVYVF9MSU5VWF9IXworIAorKyNpbmNsdWRlIDxjc3RyaW5nPgorICNpbmNsdWRlICJidWlsZC9i dWlsZF9jb25maWcuaCIKKyAjaW5jbHVkZSAic25hcHNob3QvY3B1X2NvbnRleHQuaCIKKyAjaW5j bHVkZSAic25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaCIKK0BAIC0xNzQsNiArMTc1LDc4 IEBAIHZvaWQgSW5pdGlhbGl6ZUNQVUNvbnRleHRNSVBTKAorIAorICNlbmRpZiAgLy8gQVJDSF9D UFVfTUlQU19GQU1JTFkgfHwgRE9YWUdFTgorIAorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0 X0ZBTUlMWSkgfHwgRE9YWUdFTgorKworKy8vISBcYnJpZWYgSW5pdGFsaXplcyBhIENQVUNvbnRl eHRQUEM2NCBzdHJ1Y3R1cmUgZnJvbSBuYXRpdmUgY29udGV4dAorKy8vISAgICAgc3RydWN0dXJl cyBvbiBMaW51eC4KKysvLyEKKysvLyEgXHBhcmFtW2luXSB0aHJlYWRfY29udGV4dCBUaGUgbmF0 aXZlIHRocmVhZCBjb250ZXh0LgorKy8vISBccGFyYW1baW5dIGZsb2F0X2NvbnRleHQgVGhlIG5h dGl2ZSBmbG9hdCBjb250ZXh0LgorKy8vISBccGFyYW1baW5dIHZlY3Rvcl9jb250ZXh0IFRoZSBu YXRpdmUgdmVjdG9yIGNvbnRleHQuCisrLy8hIFxwYXJhbVtvdXRdIGNvbnRleHQgVGhlIENQVUNv bnRleHRQUEM2NCBzdHJ1Y3R1cmUgdG8gaW5pdGFsaXplLgorK3RlbXBsYXRlIDx0eXBlbmFtZSBU cmFpdHM+Cisrdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KAorKyAgICBjb25zdCBUaHJl YWRDb250ZXh0Ojp0NjRfdCYgdGhyZWFkX2NvbnRleHQsCisrICAgIGNvbnN0IEZsb2F0Q29udGV4 dDo6ZjY0X3QmIGZsb2F0X2NvbnRleHQsCisrICAgIGNvbnN0IFZlY3RvckNvbnRleHQ6OnY2NF90 JiB2ZWN0b3JfY29udGV4dCwKKysgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBjb250 ZXh0KSB7CisrCisrICBtZW1jcHkoY29udGV4dC0+cmVncywgdGhyZWFkX2NvbnRleHQuZ3ByLCBz aXplb2YoY29udGV4dC0+cmVncykpOworKyAgY29udGV4dC0+bmlwID0gdGhyZWFkX2NvbnRleHQu bmlwOworKyAgY29udGV4dC0+bXNyID0gdGhyZWFkX2NvbnRleHQubXNyOworKyAgY29udGV4dC0+ Y2NyID0gdGhyZWFkX2NvbnRleHQuY2NyOworKyAgY29udGV4dC0+eGVyID0gdGhyZWFkX2NvbnRl eHQueGVyOworKyAgY29udGV4dC0+bG5rID0gdGhyZWFkX2NvbnRleHQubG5rOworKyAgY29udGV4 dC0+Y3RyID0gdGhyZWFkX2NvbnRleHQuY3RyOworKworKyAgbWVtY3B5KGNvbnRleHQtPmZwcmVn cywgZmxvYXRfY29udGV4dC5mcHJlZ3MsIHNpemVvZihjb250ZXh0LT5mcHJlZ3MpKTsKKysgIGNv bnRleHQtPmZwc2NyID0gZmxvYXRfY29udGV4dC5mcHNjcjsKKysKKysgIGZvciAodWludDhfdCBp ID0gMDsgaSA8IDMyOyBpKyspIHsKKysgICAgY29udGV4dC0+dnJlZ3Muc2F2ZV92cltpXSA9IHsK KysgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMF0pIDw8IDMyKSB8 CisrICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMV0sCisrICAgICAgKCgodWludDY0 X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzJdKSA8PCAzMikgfAorKyAgICAgICAgdmVjdG9y X2NvbnRleHQudnJyZWdzW2ldWzNdCisrICAgIH07CisrICB9CisrICBjb250ZXh0LT52cmVncy5z YXZlX3Zyc2F2ZSA9IHZlY3Rvcl9jb250ZXh0LnZyc2F2ZTsKKysgIGNvbnRleHQtPnZyZWdzLnNh dmVfdnNjciA9IHswLCAodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnNjci52c2NyX3dvcmR9Owor K30KKysKKyt0ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgorK3ZvaWQgSW5pdGlhbGl6ZUNQVUNv bnRleHRQUEM2NCgKKysgICAgY29uc3QgU2lnbmFsVGhyZWFkQ29udGV4dDY0ICZ0aHJlYWRfY29u dGV4dCwKKysgICAgY29uc3QgU2lnbmFsRmxvYXRDb250ZXh0NjQgJmZsb2F0X2NvbnRleHQsCisr ICAgIGNvbnN0IFNpZ25hbFZlY3RvckNvbnRleHQ2NCAmdmVjdG9yX2NvbnRleHQsCisrICAgIHR5 cGVuYW1lIFRyYWl0czo6Q1BVQ29udGV4dCogY29udGV4dCkgeworKworKyAgbWVtY3B5KGNvbnRl eHQtPnJlZ3MsIHRocmVhZF9jb250ZXh0LnJlZ3MsIHNpemVvZihjb250ZXh0LT5yZWdzKSk7Cisr ICBjb250ZXh0LT5uaXAgPSB0aHJlYWRfY29udGV4dC5uaXA7CisrICBjb250ZXh0LT5tc3IgPSB0 aHJlYWRfY29udGV4dC5tc3I7CisrICBjb250ZXh0LT5jY3IgPSB0aHJlYWRfY29udGV4dC5jY3I7 CisrICBjb250ZXh0LT54ZXIgPSB0aHJlYWRfY29udGV4dC54ZXI7CisrICBjb250ZXh0LT5sbmsg PSB0aHJlYWRfY29udGV4dC5sbms7CisrICBjb250ZXh0LT5jdHIgPSB0aHJlYWRfY29udGV4dC5j dHI7CisrCisrICBtZW1jcHkoY29udGV4dC0+ZnByZWdzLCBmbG9hdF9jb250ZXh0LnJlZ3MsIHNp emVvZihjb250ZXh0LT5mcHJlZ3MpKTsKKysgIGNvbnRleHQtPmZwc2NyID0gZmxvYXRfY29udGV4 dC5mcHNjcjsKKysKKysgIGZvciAodWludDhfdCBpID0gMDsgaSA8IDMyOyBpKyspIHsKKysgICAg Y29udGV4dC0+dnJlZ3Muc2F2ZV92cltpXSA9IHsKKysgICAgICAoKCh1aW50NjRfdCl2ZWN0b3Jf Y29udGV4dC52cnJlZ3NbaV1bMF0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29udGV4dC52 cnJlZ3NbaV1bMV0sCisrICAgICAgKCgodWludDY0X3QpdmVjdG9yX2NvbnRleHQudnJyZWdzW2ld WzJdKSA8PCAzMikgfAorKyAgICAgICAgdmVjdG9yX2NvbnRleHQudnJyZWdzW2ldWzNdCisrICAg IH07CisrICB9CisrICBjb250ZXh0LT52cmVncy5zYXZlX3Zyc2F2ZSA9IHZlY3Rvcl9jb250ZXh0 LnZyc2F2ZTsKKysgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnNjciA9IHswLCAodWludDY0X3QpdmVj dG9yX2NvbnRleHQudnNjci52c2NyX3dvcmR9OworK30KKysKKysKKysjZW5kaWYKKysKKyB9ICAv LyBuYW1lc3BhY2UgaW50ZXJuYWwKKyB9ICAvLyBuYW1lc3BhY2UgY3Jhc2hwYWQKKyAKK2RpZmYg LS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZGVidWdf cmVuZGV6dm91c190ZXN0LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90 L2xpbnV4L2RlYnVnX3JlbmRlenZvdXNfdGVzdC5jYworaW5kZXggZDMyYmQxOTM3Li4yZGQ1Mzhj MmIgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGlu dXgvZGVidWdfcmVuZGV6dm91c190ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0LmNjCitAQCAtMTkyLDYg KzE5Miw4IEBAIHZvaWQgVGVzdEFnYWluc3RUYXJnZXQoUHRyYWNlQ29ubmVjdGlvbiogY29ubmVj dGlvbikgeworICAgICAgICAgICAgICAgZGV2aWNlID09IDAgJiYgaW5vZGUgPT0gMCAmJiBtYXBw aW5nX25hbWUgPT0gIlt2ZHNvXSI7CisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2KQorICAgICAg ICAgICBzdGF0aWMgY29uc3RleHByIGNoYXIga1ByZWZpeFtdID0gImxpbnV4LWdhdGUuc28uIjsK KysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorKyAgICAgICAgICBzdGF0aWMgY29uc3Rl eHByIGNoYXIga1ByZWZpeFtdID0gImxpbnV4LXZkc282NC5zby4iOworICNlbHNlCisgICAgICAg ICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4W10gPSAibGludXgtdmRzby5zby4iOwor ICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4LmNjCitpbmRl eCBjZDQwYjNiMTIuLjZiY2YyM2I2ZiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguY2MKKysrKyB0 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25h cHNob3RfbGludXguY2MKK0BAIC0zMjMsNiArMzIzLDY5IEBAIGJvb2wgRXhjZXB0aW9uU25hcHNo b3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKKyAgICAgICByZWFkZXIsIGNv bnRleHRfYWRkcmVzcywgY29udGV4dF8ubWlwczY0KTsKKyB9CisgCisrI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrCisrdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KKytz dGF0aWMgYm9vbCBSZWFkQ29udGV4dChQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKKysgICAg ICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyBjb250ZXh0X2FkZHJlc3MsCisrICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBkZXN0X2Nv bnRleHQpIHsKKysgIGNvbnN0IFByb2Nlc3NNZW1vcnkqIG1lbW9yeSA9IHJlYWRlci0+TWVtb3J5 KCk7CisrCisrICBMaW51eFZNQWRkcmVzcyBncF9yZWdzX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJl c3MgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRl eHQsIG1jb250ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZz ZXRvZih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBncF9yZWdzKTsKKysKKysgIHR5cGVuYW1l IFRyYWl0czo6U2lnbmFsVGhyZWFkQ29udGV4dCB0aHJlYWRfY29udGV4dDsKKysgIGlmICghbWVt b3J5LT5SZWFkKGdwX3JlZ3NfYWRkcmVzcywgc2l6ZW9mKHRocmVhZF9jb250ZXh0KSwgJnRocmVh ZF9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIGdwX3JlZ3Mh IjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgTGludXhWTUFkZHJlc3MgZnBfcmVn c19hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIG9mZnNldG9mKFVDb250ZXh0LCBtY29udGV4dCkgKworKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwg ZnBfcmVncyk7CisrCisrICB0eXBlbmFtZSBUcmFpdHM6OlNpZ25hbEZsb2F0Q29udGV4dCBmcF9j b250ZXh0OworKyAgaWYgKCFtZW1vcnktPlJlYWQoZnBfcmVnc19hZGRyZXNzLCBzaXplb2YoZnBf Y29udGV4dCksICZmcF9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCBy ZWFkIGZwX3JlZ3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgTGludXhWTUFk ZHJlc3Mgdl9yZWdzX3B0cl9hZGRyZXNzID0gY29udGV4dF9hZGRyZXNzICsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQsIG1jb250ZXh0KSArCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1lIFRyYWl0 czo6TUNvbnRleHQsIHZteF9yZXNlcnZlKSArIDg7CisrCisrICB0eXBlbmFtZSBUcmFpdHM6OlNp Z25hbFZlY3RvckNvbnRleHQgdl9jb250ZXh0OworKyAgaWYgKCFtZW1vcnktPlJlYWQodl9yZWdz X3B0cl9hZGRyZXNzLCBzaXplb2Yodl9jb250ZXh0KSwgJnZfY29udGV4dCkpIHsKKysgICAgTE9H KEVSUk9SKSA8PCAiQ291bGRuJ3QgcmVhZCB2X3JlZ3MhIjsKKysgICAgcmV0dXJuIGZhbHNlOwor KyAgfQorKworKyAgSW5pdGlhbGl6ZUNQVUNvbnRleHRQUEM2NDxDb250ZXh0VHJhaXRzNjQ+KHRo cmVhZF9jb250ZXh0LCBmcF9jb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2 X2NvbnRleHQsIGRlc3RfY29udGV4dCk7CisrCisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrdGVt cGxhdGU8PgorK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENvbnRleHQ8Q29udGV4 dFRyYWl0czY0PigKKysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIsCisrICAgIExpbnV4 Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgeworKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0g a0NQVUFyY2hpdGVjdHVyZVBQQzY0OworKyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4dF91bmlv bl8ucHBjNjQ7CisrCisrICByZXR1cm4gaW50ZXJuYWw6OlJlYWRDb250ZXh0PENvbnRleHRUcmFp dHM2ND4oCisrICAgICAgcmVhZGVyLCBjb250ZXh0X2FkZHJlc3MsIGNvbnRleHRfLnBwYzY0KTsK Kyt9CisrCisrdGVtcGxhdGU8PgorK2Jvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6UmVhZENv bnRleHQ8Q29udGV4dFRyYWl0czMyPigKKysgICAgUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFkZXIs CisrICAgIExpbnV4Vk1BZGRyZXNzIGNvbnRleHRfYWRkcmVzcykgeworKyAgLy8gUFBDNjQgaXMg NjQtYml0CisrICByZXR1cm4gZmFsc2U7CisrfQorKworICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2 X0ZBTUlMWQorIAorIGJvb2wgRXhjZXB0aW9uU25hcHNob3RMaW51eDo6SW5pdGlhbGl6ZShQcm9j ZXNzUmVhZGVyTGludXgqIHByb2Nlc3NfcmVhZGVyLAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXgu aCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25f c25hcHNob3RfbGludXguaAoraW5kZXggZWEwY2QyMTA2Li5lNDJkZjUyMGYgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3Nu YXBzaG90X2xpbnV4LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAorQEAgLTg0LDYgKzg0LDggQEAgY2xh c3MgRXhjZXB0aW9uU25hcHNob3RMaW51eCBmaW5hbCA6IHB1YmxpYyBFeGNlcHRpb25TbmFwc2hv dCB7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgICAgQ1BVQ29udGV4 dE1JUFMgbWlwc2VsOworICAgICBDUFVDb250ZXh0TUlQUzY0IG1pcHM2NDsKKysjZWxpZiBkZWZp bmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgQ1BVQ29udGV4dFBQQzY0IHBwYzY0Owor ICNlbmRpZgorICAgfSBjb250ZXh0X3VuaW9uXzsKKyAgIENQVUNvbnRleHQgY29udGV4dF87Citk aWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4 Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCitpbmRl eCBjMTcxNzBiNDMuLmI2YTcxNGNjNiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXhfdGVzdC5jYwor KysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlv bl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCitAQCAtMjk2LDcgKzI5NiwyOCBAQCB2b2lkIEV4cGVj dENvbnRleHQoY29uc3QgQ1BVQ29udGV4dCYgYWN0dWFsLCBjb25zdCBOYXRpdmVDUFVDb250ZXh0 JiBleHBlY3RlZCkgeworICAgICAgICAgICAgIDApOworICN1bmRlZiBDUFVfQVJDSF9OQU1FCisg fQorKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorK3VzaW5nIE5hdGl2ZUNQ VUNvbnRleHQgPSB1Y29udGV4dF90OworKworK3ZvaWQgSW5pdGlhbGl6ZUNvbnRleHQoTmF0aXZl Q1BVQ29udGV4dCogY29udGV4dCkgeworKyAgZm9yIChzaXplX3QgcmVnID0gMDsgcmVnIDwgMzI7 ICsrcmVnKSB7CisrICAgIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbcmVnXSA9IHJlZzsK KysgIH0KKysKKysgIG1lbXNldCgmY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVncywgNDQsCisr ICAgICAgc2l6ZW9mKGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3MpKTsKKyt9CisgCisrdm9p ZCBFeHBlY3RDb250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGFjdHVhbCwgY29uc3QgTmF0aXZlQ1BV Q29udGV4dCYgZXhwZWN0ZWQpIHsKKysgIEVYUEVDVF9FUShhY3R1YWwuYXJjaGl0ZWN0dXJlLCBr Q1BVQXJjaGl0ZWN0dXJlUFBDNjQpOworKworKyAgZm9yIChzaXplX3QgcmVnID0gMDsgcmVnIDwg MzI7ICsrcmVnKSB7CisrICAgIEVYUEVDVF9FUShhY3R1YWwucHBjNjQtPnJlZ3NbcmVnXSwgZXhw ZWN0ZWQudWNfbWNvbnRleHQuZ3BfcmVnc1tyZWddKTsKKysgIH0KKysKKysgIEVYUEVDVF9FUSht ZW1jbXAoYWN0dWFsLnBwYzY0LT5mcHJlZ3MsIGV4cGVjdGVkLnVjX21jb250ZXh0LmZwX3JlZ3Ms CisrICAgICAgICAgICAgc2l6ZW9mKGFjdHVhbC5wcGM2NC0+ZnByZWdzKSksIDApOworK30KKyAj ZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYyB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9jZXNzX3JlYWRlcl9s aW51eC5jYworaW5kZXggZWUyNDZlOGJjLi45NTU1ZGNlMDQgMTAwNjQ0CistLS0gdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvcHJvY2Vzc19yZWFkZXJfbGludXgu Y2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9wcm9j ZXNzX3JlYWRlcl9saW51eC5jYworQEAgLTEwOCw2ICsxMDgsOCBAQCB2b2lkIFByb2Nlc3NSZWFk ZXJMaW51eDo6VGhyZWFkOjpJbml0aWFsaXplU3RhY2soUHJvY2Vzc1JlYWRlckxpbnV4KiByZWFk ZXIpIHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgc3RhY2tfcG9p bnRlciA9IHJlYWRlci0+SXM2NEJpdCgpID8gdGhyZWFkX2luZm8udGhyZWFkX2NvbnRleHQudDY0 LnJlZ3NbMjldCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiB0aHJlYWRf aW5mby50aHJlYWRfY29udGV4dC50MzIucmVnc1syOV07CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQ VV9QUEM2NF9GQU1JTFkpCisrICBzdGFja19wb2ludGVyID0gdGhyZWFkX2luZm8udGhyZWFkX2Nv bnRleHQudDY0LmdwclsxXTsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZgorZGlmZiAt LWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxf Y29udGV4dC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Np Z25hbF9jb250ZXh0LmgKK2luZGV4IDExMDAyNDY4MC4uYTFmMmRhMjU5IDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0 LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWdu YWxfY29udGV4dC5oCitAQCAtNDIyLDYgKzQyMiw4OSBAQCBzdGF0aWNfYXNzZXJ0KG9mZnNldG9m KFVDb250ZXh0PENvbnRleHRUcmFpdHM2ND4sIG1jb250ZXh0LmZwcmVncykgPT0KKyAgICAgICAg ICAgICAgICJjb250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworICNlbmRpZgorIAorKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKworK3N0cnVjdCBTaWduYWxUaHJlYWRDb250 ZXh0NjQgeworKyAgdWludDY0X3QgcmVnc1szMl07CisrICB1aW50NjRfdCBuaXA7CisrICB1aW50 NjRfdCBtc3I7CisrICB1aW50NjRfdCBvcmlnX3IzOworKyAgdWludDY0X3QgY3RyOworKyAgdWlu dDY0X3QgbG5rOworKyAgdWludDY0X3QgeGVyOworKyAgdWludDY0X3QgY2NyOworKyAgdWludDY0 X3Qgc29mdGU7CisrICB1aW50NjRfdCB0cmFwOworKyAgdWludDY0X3QgZGFyOworKyAgdWludDY0 X3QgZHNpc3I7CisrICB1aW50NjRfdCByZXN1bHQ7CisrICB1aW50NjRfdCBkc2NyOworKyAgdWlu dDY0X3QgZnByMFszXTsKKyt9OworKworK3N0cnVjdCBTaWduYWxGbG9hdENvbnRleHQ2NCB7Cisr ICBkb3VibGUgcmVnc1szMl07CisrICBkb3VibGUgZnBzY3I7CisrfTsKKysKKytzdHJ1Y3QgU2ln bmFsVmVjdG9yQ29udGV4dDY0IHsKKysgIGludDMyX3QgdnJyZWdzWzMyXVs0XTsKKysgIHN0cnVj dCB7CisrICAgIGludDMyX3QgX19wYWRbM107CisrICAgIGludDMyX3QgdnNjcl93b3JkOworKyAg fSB2c2NyOworKyAgaW50MzJfdCB2cnNhdmU7CisrICBpbnQzMl90IF9fcGFkWzNdOworK30gX19h dHRyaWJ1dGVfXygoX19hbGlnbmVkX18oMTYpKSk7CisrCisrCisrI3ByYWdtYSBwYWNrKHBvcCkK KytzdHJ1Y3QgTUNvbnRleHQ2NCB7CisrICB1aW50NjRfdCByZXNlcnZlZFs0XTsKKysgIGludDMy X3Qgc2lnbmFsOworKyAgaW50MzJfdCBfX3BhZDA7CisrICB1aW50NjRfdCBoYW5kbGVyOworKyAg dWludDY0X3Qgb2xkbWFzazsKKysgIHVpbnQ2NF90IHB0X3JlZ3NfcHRyOworKyAgU2lnbmFsVGhy ZWFkQ29udGV4dDY0IGdwX3JlZ3M7CisrICBTaWduYWxGbG9hdENvbnRleHQ2NCAgZnBfcmVnczsK KysgIFNpZ25hbFZlY3RvckNvbnRleHQ2NCAqdl9yZWdzOworKyAgaW50NjRfdCB2bXhfcmVzZXJ2 ZVs2OV07CisrfTsKKysKKytzdHJ1Y3QgQ29udGV4dFRyYWl0czY0IDogcHVibGljIFRyYWl0czY0 IHsKKysgIHVzaW5nIE1Db250ZXh0ID0gTUNvbnRleHQ2NDsKKysgIHVzaW5nIFNpZ25hbFRocmVh ZENvbnRleHQgPSBTaWduYWxUaHJlYWRDb250ZXh0NjQ7CisrICB1c2luZyBTaWduYWxGbG9hdENv bnRleHQgPSBTaWduYWxGbG9hdENvbnRleHQ2NDsKKysgIHVzaW5nIFNpZ25hbFZlY3RvckNvbnRl eHQgPSBTaWduYWxWZWN0b3JDb250ZXh0NjQ7CisrICB1c2luZyBDUFVDb250ZXh0ID0gQ1BVQ29u dGV4dFBQQzY0OworK307CisrCisrc3RydWN0IENvbnRleHRUcmFpdHMzMiA6IHB1YmxpYyBUcmFp dHMzMiB7fTsKKysKKytzdHJ1Y3QgVUNvbnRleHQgeworKyAgdWludDY0X3QgZmxhZ3M7CisrICB1 aW50NjRfdCBsaW5rOworKyAgU2lnbmFsU3RhY2s8Q29udGV4dFRyYWl0czY0PiBzdGFjazsKKysg IFNpZ3NldDxDb250ZXh0VHJhaXRzNjQ+IHNpZ21hc2s7CisrICBNQ29udGV4dDY0IG1jb250ZXh0 OworK307CisrI3ByYWdtYSBwYWNrKHB1c2gsIDEpCisrCisrc3RhdGljX2Fzc2VydChzaXplb2Yo VUNvbnRleHQpID09IHNpemVvZih1Y29udGV4dF90KSwKKysgICAgICAgICAgICAgICJ1Y29udGV4 dF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNpemVvZihNQ29udGV4dDY0KSA9 PSBzaXplb2YobWNvbnRleHRfdCksCisrICAgICAgICAgICAgICAibWNvbnRleHRfdCBzaXplIG1p c21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsVGhyZWFkQ29udGV4dDY0KSA9 PSBzaXplb2YoZ3JlZ3NldF90KSwKKysgICAgICAgICAgICAgICJncmVnc2V0X3Qgc2l6ZSBtaXNt YXRjaCIpOworK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFNpZ25hbEZsb2F0Q29udGV4dDY0KSA9PSBz aXplb2YoZnByZWdzZXRfdCksCisrICAgICAgICAgICAgICAiZnByZWdzZXRfdCBzaXplIG1pc21h dGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXplb2YoU2lnbmFsVmVjdG9yQ29udGV4dDY0KSA9PSBz aXplb2YodnJyZWdzZXRfdCksCisrICAgICAgICAgICAgICAidnJyZWdzZXRfdCBzaXplIG1pc21h dGNoIik7Cisrc3RhdGljX2Fzc2VydChvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpID09Cisr ICAgICAgICAgICAgICBvZmZzZXRvZih1Y29udGV4dF90LCB1Y19tY29udGV4dCksICJtY29udGV4 dCBvZmZzZXQgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KG9mZnNldG9mKE1Db250ZXh0NjQs IGdwX3JlZ3MpID09CisrICAgICAgICAgICAgICBvZmZzZXRvZihtY29udGV4dF90LCBncF9yZWdz KSwgImdwX3JlZ3Mgb2Zmc2V0IG1pc21hdGNoIik7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAj ZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3N5c3RlbV9zbmFwc2hv dF9saW51eC5jYworaW5kZXggYTk5ZGEzZTRiLi4wM2I5NzMwODMgMTAwNjQ0CistLS0gdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBzaG90X2xp bnV4LmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgv c3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCitAQCAtMjA0LDYgKzIwNCw4IEBAIENQVUFyY2hpdGVj dHVyZSBTeXN0ZW1TbmFwc2hvdExpbnV4OjpHZXRDUFVBcmNoaXRlY3R1cmUoKSBjb25zdCB7Cisg I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIHJldHVybiBwcm9jZXNzX3Jl YWRlcl8tPklzNjRCaXQoKSA/IGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDoga0NQVUFyY2hpdGVjdHVyZU1JUFNFTDsKKysjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHJldHVybiBrQ1BVQXJjaGl0ZWN0 dXJlUFBDNjQ7CisgI2Vsc2UKKyAjZXJyb3IgcG9ydCB0byB5b3VyIGFyY2hpdGVjdHVyZQorICNl bmRpZgorQEAgLTIxOSw2ICsyMjEsOSBAQCB1aW50MzJfdCBTeXN0ZW1TbmFwc2hvdExpbnV4OjpD UFVSZXZpc2lvbigpIGNvbnN0IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KQorICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUworICAgcmV0dXJuIDA7CisrI2VsaWYg ZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAvLyBOb3QgeWV0IGltcGxlbWVudGVk IG9uIFBQQzY0CisrICByZXR1cm4gMDsKKyAjZWxzZQorICNlcnJvciBwb3J0IHRvIHlvdXIgYXJj aGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMjM5LDYgKzI0NCw5IEBAIHN0ZDo6c3RyaW5nIFN5c3Rl bVNuYXBzaG90TGludXg6OkNQVVZlbmRvcigpIGNvbnN0IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKQorICAgLy8gTm90IGltcGxlbWVudGFibGUgb24gTUlQUworICAgcmV0 dXJuIHN0ZDo6c3RyaW5nKCk7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQQzY0CisrICByZXR1cm4gc3RkOjpzdHJp bmcoKTsKKyAjZWxzZQorICNlcnJvciBwb3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlm CitAQCAtMzcyLDYgKzM4MCw5IEBAIGJvb2wgU3lzdGVtU25hcHNob3RMaW51eDo6TlhFbmFibGVk KCkgY29uc3QgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICAvLyBO b3QgaW1wbGVtZW50YWJsZSBvbiBNSVBTCisgICByZXR1cm4gZmFsc2U7CisrI2VsaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAvLyBOb3QgeWV0IGltcGxlbWVudGVkIG9uIFBQ QzY0CisrICByZXR1cm4gZmFsc2U7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8v IEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjIHRoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Rlc3RfbW9kdWxlcy5jYworaW5kZXggYjI0NTBjMjA2 Li43YmE3OGIyYWUgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25h cHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvdGVzdF9tb2R1bGVzLmNjCitAQCAtMTEwLDYgKzExMCw4IEBA IGJvb2wgV3JpdGVUZXN0TW9kdWxlKGNvbnN0IGJhc2U6OkZpbGVQYXRoJiBtb2R1bGVfcGF0aCwK KyAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX0FBUkNINjQ7CisgI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9NSVBTRUwpIHx8IGRlZmluZWQoQVJDSF9DUFVfTUlQUzY0RUwpCisgICBtb2R1bGUu ZWhkci5lX21hY2hpbmUgPSBFTV9NSVBTOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjQp CisrICBtb2R1bGUuZWhkci5lX21hY2hpbmUgPSBFTV9QUEM2NDsKKyAjZW5kaWYKKyAKKyAgIG1v ZHVsZS5laGRyLmVfdmVyc2lvbiA9IEVWX0NVUlJFTlQ7CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5j YyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25h cHNob3RfbGludXguY2MKK2luZGV4IGUzZTJiZWJkZC4uOGVmNDM3NTJlIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hv dF9saW51eC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYworQEAgLTE4Niw2ICsxODYsMTQgQEAgYm9vbCBU aHJlYWRTbmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFkZXJMaW51eCogcHJvY2Vz c19yZWFkZXIsCisgICAgICAgICB0aHJlYWQudGhyZWFkX2luZm8uZmxvYXRfY29udGV4dC5mMzIs CisgICAgICAgICBjb250ZXh0Xy5taXBzZWwpOworICAgfQorKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQorKyAgY29udGV4dF8uYXJjaGl0ZWN0dXJlID0ga0NQVUFyY2hpdGVj dHVyZVBQQzY0OworKyAgY29udGV4dF8ucHBjNjQgPSAmY29udGV4dF91bmlvbl8ucHBjNjQ7Cisr ICBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0PENvbnRleHRUcmFpdHM2ND4oCisrICAgICAgdGhy ZWFkLnRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQ2NCwKKysgICAgICB0aHJlYWQudGhyZWFk X2luZm8uZmxvYXRfY29udGV4dC5mNjQsCisrICAgICAgdGhyZWFkLnRocmVhZF9pbmZvLnZlY3Rv cl9jb250ZXh0LnY2NCwKKysgICAgICBjb250ZXh0Xy5wcGM2NCk7CisgI2Vsc2UKKyAjZXJyb3Ig UG9ydC4KKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmggdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmgKK2luZGV4 IDQ0Y2M2ZjZkOS4uZDQxMzY0NjFlIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5oCisrKysgdGhpcmRf cGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xp bnV4LmgKK0BAIC02OCw2ICs2OCw4IEBAIGNsYXNzIFRocmVhZFNuYXBzaG90TGludXggZmluYWwg OiBwdWJsaWMgVGhyZWFkU25hcHNob3QgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpCisgICAgIENQVUNvbnRleHRNSVBTIG1pcHNlbDsKKyAgICAgQ1BVQ29udGV4dE1JUFM2 NCBtaXBzNjQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIENQ VUNvbnRleHRQUEM2NCBwcGM2NDsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8g QVJDSF9DUFVfWDg2X0ZBTUlMWQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvdXRpbC9saW51eC9hdXhpbGlhcnlfdmVjdG9yLmNjCitpbmRleCBkM2Q1ZWJkZmIu LjNmZDczMGNiNSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGls L2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC91dGlsL2xpbnV4L2F1eGlsaWFyeV92ZWN0b3IuY2MKK0BAIC01Niw2ICs1NiwxMSBAQCBi b29sIEF1eGlsaWFyeVZlY3Rvcjo6UmVhZChQdHJhY2VDb25uZWN0aW9uKiBjb25uZWN0aW9uKSB7 CisgICAgIGlmICh0eXBlID09IEFUX0lHTk9SRSkgeworICAgICAgIGNvbnRpbnVlOworICAgICB9 CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICBpZiAodHlwZSA9PSBB VF9JR05PUkVQUEMpIHsKKysgICAgICBjb250aW51ZTsKKysgICAgfQorKyNlbmRpZgorICAgICBp ZiAoIU1hcEluc2VydE9yUmVwbGFjZSgmdmFsdWVzXywgdHlwZSwgdmFsdWUsIG51bGxwdHIpKSB7 CisgICAgICAgTE9HKEVSUk9SKSA8PCAiZHVwbGljYXRlIGF1eHYgZW50cnkiOworICAgICAgIHJl dHVybiBmYWxzZTsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRp bC9saW51eC9wdHJhY2VyLmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGlu dXgvcHRyYWNlci5jYworaW5kZXggNTU3ZTBkMzYzLi4wOGFlNDM0YjggMTAwNjQ0CistLS0gdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCisrKysgdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCitAQCAtMzk4 LDYgKzM5OCw2NCBAQCBib29sIEdldFRocmVhZEFyZWE2NChwaWRfdCB0aWQsCisgICByZXR1cm4g dHJ1ZTsKKyB9CisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrLy8g UFBDNjQgaGFzIGhhZCBIQVZFX0FSQ0hfVFJBQ0VIT09LIHNldCBzaW5jZSAyLjYuMjcgKGV2ZW4g YmVmb3JlIHg4NiBoYWQgaXQpLgorKy8vIFRoYXQgbWVhbnMgd2UgY2FuIHNpbXBseSB1c2UgUFRS QUNFX0dFVFJFR0VTRVQuCisrCisrdGVtcGxhdGUgPHR5cGVuYW1lIERlc3RpbmF0aW9uPgorK2Jv b2wgR2V0UmVnaXN0ZXJTZXQocGlkX3QgdGlkLCBpbnQgc2V0LCBEZXN0aW5hdGlvbiogZGVzdCwg Ym9vbCBjYW5fbG9nKSB7CisrICBpb3ZlYyBpb3Y7CisrICBpb3YuaW92X2Jhc2UgPSByZWludGVy cHJldF9jYXN0PHZvaWQqPihkZXN0KTsKKysgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mKCpkZXN0KTsK KysgIGlmIChwdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCByZWludGVycHJldF9jYXN0PHZv aWQqPihzZXQpLCAmaW92KSAhPSAwKSB7CisrICAgIFBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8 ICJwdHJhY2UiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrICBpZiAoaW92Lmlvdl9sZW4g IT0gc2l6ZW9mKCpkZXN0KSkgeworKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8ICJVbmV4 cGVjdGVkIHJlZ2lzdGVycyBzaXplIjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKyAgcmV0 dXJuIHRydWU7CisrfQorKworK2Jvb2wgR2V0VmVjdG9yUmVnaXN0ZXJzNjQocGlkX3QgdGlkLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yQ29udGV4dCogY29udGV4dCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykgeworKyAgcmV0dXJuIEdldFJlZ2lz dGVyU2V0KHRpZCwgTlRfUFBDX1ZNWCwgJmNvbnRleHQtPnY2NCwgY2FuX2xvZyk7CisrfQorKwor K2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczY0KHBpZF90IHRpZCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7CisrICByZXR1cm4gR2V0UmVn aXN0ZXJTZXQodGlkLCBOVF9QUkZQUkVHLCAmY29udGV4dC0+ZjY0LCBjYW5fbG9nKTsKKyt9Cisr CisrYm9vbCBHZXRUaHJlYWRBcmVhNjQocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAg IGNvbnN0IFRocmVhZENvbnRleHQmIGNvbnRleHQsCisrICAgICAgICAgICAgICAgICAgICAgTGlu dXhWTUFkZHJlc3MqIGFkZHJlc3MsCisrICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9n KSB7CisrICAvLyBQUEM2NCBkb2Vzbid0IGhhdmUgUFRSQUNFX0dFVF9USFJFQURfQVJFQSBzaW5j ZSB0aGUgdGhyZWFkIHBvaW50ZXIKKysgIC8vIGlzIHN0b3JlZCBpbiBHUFIgMTMuCisrICBUaHJl YWRDb250ZXh0Ojp0NjRfdCB0YzsKKysgIGlmICghR2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUlNU QVRVUywgJnRjLCBjYW5fbG9nKSkgeworKyAgICBMT0dfSUYoRVJST1IsIGNhbl9sb2cpIDw8ICJV bmFibGUgdG8gZ2V0IHRocmVhZCBwb2ludGVyISI7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0K KysKKysgICphZGRyZXNzID0gdGMuZ3ByWzEzXTsKKysKKysgIHJldHVybiB0cnVlOworK30KKysK KysvLyBTdHVicyBmb3IgMzItYml0IGZ1bmN0aW9ucyBub3QgYXBwbGljYWJsZSBvbiBQUEM2NAor K2Jvb2wgR2V0RmxvYXRpbmdQb2ludFJlZ2lzdGVyczMyKHBpZF90IHRpZCwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBGbG9hdENvbnRleHQqIGNvbnRleHQsCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBmYWxzZTsgfQor K2Jvb2wgR2V0VGhyZWFkQXJlYTMyKHBpZF90IHRpZCwKKysgICAgICAgICAgICAgICAgICAgICBj b25zdCBUaHJlYWRDb250ZXh0ICZjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgIExpbnV4 Vk1BZGRyZXNzICphZGRyZXNzLAorKyAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuX2xvZykg eyByZXR1cm4gZmFsc2U7IH0KKysKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8g QVJDSF9DUFVfWDg2X0ZBTUlMWQorQEAgLTQ5NCw2ICs1NTIsOSBAQCBib29sIFB0cmFjZXI6Okdl dFRocmVhZEluZm8ocGlkX3QgdGlkLCBUaHJlYWRJbmZvKiBpbmZvKSB7CisgICBpZiAoaXNfNjRf Yml0XykgeworICAgICByZXR1cm4gR2V0R2VuZXJhbFB1cnBvc2VSZWdpc3RlcnM2NCh0aWQsICZp bmZvLT50aHJlYWRfY29udGV4dCwgY2FuX2xvZ18pICYmCisgICAgICAgICAgICBHZXRGbG9hdGlu Z1BvaW50UmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+ZmxvYXRfY29udGV4dCwgY2FuX2xvZ18pICYm CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAgICAgICAgR2V0VmVj dG9yUmVnaXN0ZXJzNjQodGlkLCAmaW5mby0+dmVjdG9yX2NvbnRleHQsIGNhbl9sb2dfKSAmJgor KyNlbmRpZgorICAgICAgICAgICAgR2V0VGhyZWFkQXJlYTY0KHRpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbmZvLT50aHJlYWRfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmaW5mby0+dGhyZWFkX3NwZWNpZmljX2RhdGFfYWRkcmVzcywKK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaAoraW5k ZXggNWI1NWMyNGE3Li5kZWEwZDFmMzkgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCisrKysgdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvdXRpbC9saW51eC90aHJlYWRfaW5mby5oCitAQCAtMjgsNiArMjgsMTAgQEAK KyAjaW5jbHVkZSA8YW5kcm9pZC9hcGktbGV2ZWwuaD4KKyAjZW5kaWYKKyAKKysjaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrI2luY2x1ZGUgPHN5cy91Y29udGV4dC5oPgorKyNl bmRpZgorKworIG5hbWVzcGFjZSBjcmFzaHBhZCB7CisgCisgLy8hIFxicmllZiBUaGUgc2V0IG9m IGdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMgZm9yIGFuIGFyY2hpdGVjdHVyZSBmYW1pbHkuCitA QCAtNzksNiArODMsOCBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKKyAgICAgdWludDMyX3QgY3Aw X3N0YXR1czsKKyAgICAgdWludDMyX3QgY3AwX2NhdXNlOworICAgICB1aW50MzJfdCBwYWRkaW5n MV87CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIC8vIFBQQzY0 IGlzIDY0LWJpdAorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9Y ODZfRkFNSUxZCitAQCAtMTMyLDYgKzEzOCwyMSBAQCB1bmlvbiBUaHJlYWRDb250ZXh0IHsKKyAg ICAgdWludDY0X3QgY3AwX2JhZHZhZGRyOworICAgICB1aW50NjRfdCBjcDBfc3RhdHVzOworICAg ICB1aW50NjRfdCBjcDBfY2F1c2U7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1J TFkpCisrICAgIC8vIFJlZmxlY3RzIHN0cnVjdCBwdF9yZWdzIGluIGFzbS9wdHJhY2UuaC4KKysg ICAgdWludDY0X3QgZ3ByWzMyXTsKKysgICAgdWludDY0X3QgbmlwOworKyAgICB1aW50NjRfdCBt c3I7CisrICAgIHVpbnQ2NF90IG9yaWdfZ3ByMzsKKysgICAgdWludDY0X3QgY3RyOworKyAgICB1 aW50NjRfdCBsbms7CisrICAgIHVpbnQ2NF90IHhlcjsKKysgICAgdWludDY0X3QgY2NyOworKyAg ICB1aW50NjRfdCBzb2Z0ZTsKKysgICAgdWludDY0X3QgdHJhcDsKKysgICAgdWludDY0X3QgZGFy OworKyAgICB1aW50NjRfdCBkc2lzcjsKKysgICAgdWludDY0X3QgcmVzdWx0OworICNlbHNlCisg I2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMTQzLDYg KzE2NCw4IEBAIHVuaW9uIFRocmVhZENvbnRleHQgeworICAgdXNpbmcgTmF0aXZlVGhyZWFkQ29u dGV4dCA9IHVzZXJfcmVnczsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQor IC8vIE5vIGFwcHJvcHJpYXRlIE5hdGl2ZVRocmVhZHNDb250ZXh0IHR5cGUgYXZhaWxhYmxlIGZv ciBNSVBTCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICB1c2luZyBO YXRpdmVUaHJlYWRDb250ZXh0ID0gc3RydWN0IHB0X3JlZ3M7CisgI2Vsc2UKKyAjZXJyb3IgUG9y dC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkgfHwgQVJDSF9DUFVfQVJNNjQKK0BA IC0yMTgsNiArMjQxLDkgQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKKyAgICAgfSBmcHJlZ3NbMzJd OworICAgICB1aW50MzJfdCBmcGNzcjsKKyAgICAgdWludDMyX3QgZnB1X2lkOworKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBDcmFzaHBhZCdzIFBQQyBzdXBw b3J0IGlzIDY0LWJpdCBvbmx5LCBzbyB0aGlzCisrICAgIC8vIDMyYml0LW9ubHkgc3RydWN0IGlz IGRlY2xhcmVkIGFzIGVtcHR5LgorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBB UkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMjUyLDYgKzI3OCwxMCBAQCB1bmlvbiBGbG9hdENvbnRl eHQgeworICAgICBkb3VibGUgZnByZWdzWzMyXTsKKyAgICAgdWludDMyX3QgZnBjc3I7CisgICAg IHVpbnQzMl90IGZwdV9pZDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK KysgICAgLy8gUmVmbGVjdHMgZnByZWdzZXRfdCBpbiBzeXMvdWNvbnRleHQuaAorKyAgICBkb3Vi bGUgZnByZWdzWzMyXTsKKysgICAgZG91YmxlIGZwc2NyOworICNlbHNlCisgI2Vycm9yIFBvcnQu CisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtMjgwLDYgKzMxMCw4IEBAIHVu aW9uIEZsb2F0Q29udGV4dCB7CisgICBzdGF0aWNfYXNzZXJ0KHNpemVvZihmNjQpID09IHNpemVv Zih1c2VyX2Zwc2ltZF9zdHJ1Y3QpLCAiU2l6ZSBtaXNtYXRjaCIpOworICNlbGlmIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpCisgLy8gTm8gYXBwcm9wcmlhdGUgZmxvYXRpbmcgcG9pbnQg Y29udGV4dCBuYXRpdmUgdHlwZSBmb3IgYXZhaWxhYmxlIE1JUFMuCisrI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBzdGF0aWNfYXNzZXJ0KHNpemVvZihmNjQpID09IHNp emVvZihmcHJlZ3NldF90KSwgIlNpemUgbWlzbWF0Y2giKTsKKyAjZWxzZQorICNlcnJvciBQb3J0 LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2CitAQCAtMjg3LDYgKzMxOSwyNiBAQCB1bmlvbiBG bG9hdENvbnRleHQgeworIHN0YXRpY19hc3NlcnQoc3RkOjppc19zdGFuZGFyZF9sYXlvdXQ8Rmxv YXRDb250ZXh0Pjo6dmFsdWUsCisgICAgICAgICAgICAgICAiTm90IHN0YW5kYXJkIGxheW91dCIp OworIAorKy8vISBcYnJpZWYgVGhlIHZlY3RvciByZWdpc3RlcnMgdXNlZCBmb3IgYW4gYXJjaGl0 ZWN0dXJlIGZhbWlseQorK3VuaW9uIFZlY3RvckNvbnRleHQgeworKyAgc3RydWN0IHYzMl90IHt9 IHYzMjsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBfX2F0dHJpYnV0 ZV9fKChfX2FsaWduZWRfXygxNikpKSAvLyBWZWN0b3IgY29udGV4dCBtdXN0IGJlIGRvdWJsZXdv cmQgYWxpZ25lZC4KKysjZW5kaWYKKysgIHN0cnVjdCB2NjRfdCB7CisrI2lmIGRlZmluZWQoQVJD SF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBSZWZsZWN0cyB2cnJlZ3NldF90IGluIHN5cy91 Y29udGV4dC5oCisrICAgIHVpbnQzMl90IHZycmVnc1szMl1bNF07CisrICAgIHN0cnVjdCB7Cisr ICAgICAgdWludDMyX3QgX19wYWRbM107CisrICAgICAgdWludDMyX3QgdnNjcl93b3JkOworKyAg ICB9IHZzY3I7CisrICAgIHVpbnQzMl90IHZyc2F2ZTsKKysgICAgdWludDMyX3QgX19wYWRbM107 CisrI2VuZGlmCisrICB9IHY2NDsKKyt9OworKworIC8vISBcYnJpZWYgQSBjb2xsZWN0aW9uIG9m IGBwdHJhY2VgLWFibGUgaW5mb3JtYXRpb24gYWJvdXQgYSB0aHJlYWQuCisgc3RydWN0IFRocmVh ZEluZm8geworICAgVGhyZWFkSW5mbygpOworQEAgLTI5OCw2ICszNTAsOSBAQCBzdHJ1Y3QgVGhy ZWFkSW5mbyB7CisgICAvLyEgXGJyaWVmIFRoZSBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMgZm9y IHRoZSB0aHJlYWQuCisgICBGbG9hdENvbnRleHQgZmxvYXRfY29udGV4dDsKKyAKKysgIC8vISBc YnJpZWYgKE9wdGlvbmFsKSBUaGUgdmVjdG9yIHJlZ2lzdGVycyB1c2VkIGZvciB0aGUgdGhyZWFk LgorKyAgVmVjdG9yQ29udGV4dCB2ZWN0b3JfY29udGV4dDsKKysKKyAgIC8vISBcYnJpZWYgVGhl IHRocmVhZC1sb2NhbCBzdG9yYWdlIGFkZHJlc3MgZm9yIHRoZSB0aHJlYWQuCisgICBMaW51eFZN QWRkcmVzcyB0aHJlYWRfc3BlY2lmaWNfZGF0YV9hZGRyZXNzOworIH07CitkaWZmIC0tZ2l0IHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaCB0 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0LmgK K2luZGV4IGQyMWEyNGYxOS4uYWNjMzI1MzQ5IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAorKysrIHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAorQEAgLTY5LDYg KzY5LDcgQEAgdXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7CisgLy8hICAgICBt YWNPUy9MaW51eC9GdWNoc2lhIHwgeDg2XzY0ICAgICAgIHwgYCUlcmRpYAorIC8vISAgICAgTGlu dXggICAgICAgICAgICAgICB8IEFSTS9BUk02NCAgICB8IGByMGAvYHgwYAorIC8vISAgICAgTGlu dXggICAgICAgICAgICAgICB8IE1JUFMvTUlQUzY0ICB8IGAkYTBgCisrLy8hICAgICBMaW51eCAg ICAgICAgICAgICAgIHwgUFBDNjQgICAgICAgIHwgYHIzYAorIC8vIQorIC8vISAgICAgQWRkaXRp b25hbGx5LCB0aGUgdmFsdWUgYExSYCBvbiBBUk0vQVJNNjQgd2lsbCBiZSB0aGUgcmV0dXJuIGFk ZHJlc3Mgb2YKKyAvLyEgICAgIHRoaXMgZnVuY3Rpb24uCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5 L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGludXguUyB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X2xpbnV4 LlMKK2luZGV4IDUyMjE1ZWU1ZC4uYjNlNGEzZWM3IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGludXguUworKysrIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGlu dXguUworQEAgLTMyLDcgKzMyLDcgQEAKKyAgIC5iYWxpZ24gNCwgMHgwCisgICAudHlwZSBDQVBU VVJFQ09OVEVYVF9TWU1CT0wsICVmdW5jdGlvbgorICAgLnR5cGUgQ0FQVFVSRUNPTlRFWFRfU1lN Qk9MMiwgJWZ1bmN0aW9uCistI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKysjZWxpZiBkZWZpbmVk KF9fbWlwc19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAuYmFsaWduIDQsIDB4MAor ICNlbmRpZgorIAorQEAgLTQyMyw0ICs0MjMsMjE0IEBAIENBUFRVUkVDT05URVhUX1NZTUJPTDI6 CisgICBqciAkcmEKKyAKKyAgIC5zZXQgYXQKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICAvLyBTdG9yZSByMC1yMzEKKysgIHN0ZCAwLCAweGU4KDMpICAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQuZ3BfcmVnc1swXQorKyAgc3RkIDEsIDB4ZjAoMykgICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC5ncF9yZWdzWzFdCisrICBzdGQgMiwgMHhmOCgzKSAgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LmdwX3JlZ3NbMl0KKysgIC8vIG5vdGUgdGhhdCByMydzIG9yaWdpbmFsIHZhbHVlIHdh cyBsb3N0CisrICBzdGQgMywgMHgxMDAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3Jl Z3NbM10KKysgIHN0ZCA0LCAweDEwOCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVn c1s0XQorKyAgc3RkIDUsIDB4MTEwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdz WzVdCisrICBzdGQgNiwgMHgxMTgoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3Nb Nl0KKysgIHN0ZCA3LCAweDEyMCgzKSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s3 XQorKyAgc3RkIDgsIDB4MTI4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzhd CisrICBzdGQgOSwgMHgxMzAoMykgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbOV0K KysgIHN0ZCAxMCwgMHgxMzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMF0K KysgIHN0ZCAxMSwgMHgxNDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMV0K KysgIHN0ZCAxMiwgMHgxNDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxMl0K KysgIHN0ZCAxMywgMHgxNTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxM10K KysgIHN0ZCAxNCwgMHgxNTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNF0K KysgIHN0ZCAxNSwgMHgxNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNV0K KysgIHN0ZCAxNiwgMHgxNjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxNl0K KysgIHN0ZCAxNywgMHgxNzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxN10K KysgIHN0ZCAxOCwgMHgxNzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxOF0K KysgIHN0ZCAxOSwgMHgxODAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1sxOV0K KysgIHN0ZCAyMCwgMHgxODgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMF0K KysgIHN0ZCAyMSwgMHgxOTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMV0K KysgIHN0ZCAyMiwgMHgxOTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syMl0K KysgIHN0ZCAyMywgMHgxYTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syM10K KysgIHN0ZCAyNCwgMHgxYTgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNF0K KysgIHN0ZCAyNSwgMHgxYjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNV0K KysgIHN0ZCAyNiwgMHgxYjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syNl0K KysgIHN0ZCAyNywgMHgxYzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syN10K KysgIHN0ZCAyOCwgMHgxYzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syOF0K KysgIHN0ZCAyOSwgMHgxZDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syOV0K KysgIHN0ZCAzMCwgMHgxZDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMF0K KysgIHN0ZCAzMSwgMHgxZTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMV0K KysKKysgIC8vIEZvciBOSVAsIHdlIGNhbiB1c2UgdGhlIHZhbHVlIGluIHRoZSBsaW5rIHJlZ2lz dGVyCisrICBtZmxyIDAKKysgIHN0ZCAwLCAweDFlOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX05JUF0KKysKKysgIC8vIENUUgorKyAgbWZjdHIgMAorKyAgc3RkIDAsIDB4 MjAwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXQorKworKyAgLy8g Rm9yIExOSywgd2UnbGwgdXNlIHRoZSBjYWxsZXIncyBMUiBzYXZlIGFyZWEgKDIgc3RhY2sgZnJh bWVzIHVwKS4KKysgIC8vIHI0IGNhbiBiZSB1c2VkIGFzIGEgc2NyYXRjaCByZWdpc3RlciBzaW5j ZSBpdCBoYXMgYWxyZWFkeSBiZWVuIHNhdmVkLgorKyAgbGQgNCwgMCgxKQorKyAgbGQgNCwgMTYo NCkKKysgIHN0ZCA0LCAweDIwOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BU X0xOS10KKysKKysgIC8vIFhFUgorKyAgbWZ4ZXIgMAorKyAgc3RkIDAsIDB4MjEwKDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfWEVSXQorKworKyAgLy8gQ0NSCisrICBtZmNy IDAKKysgIHN0ZCAwLCAweDIxOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BU X0NDUl0KKysKKysgIC8vIE1TUiwgb3JpZ19yMywgTVEsIFRSQVAsIERBUiwgRFNJU1IsIFJFU1VM VCwgRFNDUiwKKysgIC8vIG5vdCB1c2VkIG9yIG5vdCByZWxldmFudCwgIHplcm8gdGhlbSBvdXQu CisrICBsaSA0LCAwCisrICBzdGQgNCwgMHgxZjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu Z3BfcmVnc1tQVF9NU1JdCisrICBzdGQgNCwgMHgxZjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1tQVF9PUklHX1IzXQorKyAgc3RkIDQsIDB4MjIwKDMpIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LmdwX3JlZ3NbUFRfTVFdCisrICBzdGQgNCwgMHgyMjgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9UUkFQXQorKyAgc3RkIDQsIDB4MjMwKDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfREFSXQorKyAgc3RkIDQsIDB4MjM4KDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfRFNJU1JdCisrICBzdGQgNCwgMHgyNDAoMykg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9SRVNVTFRdCisrICBzdGQgNCwgMHgy NDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9EU0NSXQorKworKyAgLy8g VXBkYXRlIGNvbnRleHQtPnVjX21jb250ZXh0LnJlZ3MgdG8gcG9pbnQgdG8gZ3BfcmVncworKyAg YWRkaSAwLCAzLCAweGU4CisrICBzdGQgMCwgMHhlMCgzKQorKworKyAgLy8gU2F2ZSBmbG9hdGlu ZyBwb2ludCByZWdpc3RlcnMgMC0zMQorKyAgc3RmZCAwLCAweDI2OCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1swXQorKyAgc3RmZCAxLCAweDI3MCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1sxXQorKyAgc3RmZCAyLCAweDI3OCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1syXQorKyAgc3RmZCAzLCAweDI4MCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1szXQorKyAgc3RmZCA0LCAweDI4OCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1s0XQorKyAgc3RmZCA1LCAweDI5MCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1s1XQorKyAgc3RmZCA2LCAweDI5OCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1s2XQorKyAgc3RmZCA3LCAweDJhMCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1s3XQorKyAgc3RmZCA4LCAweDJhOCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1s4XQorKyAgc3RmZCA5LCAweDJiMCgzKSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1s5XQorKyAgc3RmZCAxMCwgMHgyYjgoMykgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQuZnBfcmVnc1sxMF0KKysgIHN0ZmQgMTEsIDB4MmMwKDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmZwX3JlZ3NbMTFdCisrICBzdGZkIDEyLCAweDJjOCgzKSAvLyBjb250ZXh0 LT51Y19tY29udGV4dC5mcF9yZWdzWzEyXQorKyAgc3RmZCAxMywgMHgyZDAoMykgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxM10KKysgIHN0ZmQgMTQsIDB4MmQ4KDMpIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTRdCisrICBzdGZkIDE1LCAweDJlMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE1XQorKyAgc3RmZCAxNiwgMHgyZTgoMykgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNl0KKysgIHN0ZmQgMTcsIDB4MmYwKDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTddCisrICBzdGZkIDE4LCAweDJmOCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE4XQorKyAgc3RmZCAxOSwgMHgzMDAoMykgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxOV0KKysgIHN0ZmQgMjAsIDB4MzA4KDMpIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjBdCisrICBzdGZkIDIxLCAweDMxMCgzKSAv LyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzIxXQorKyAgc3RmZCAyMiwgMHgzMTgoMykg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syMl0KKysgIHN0ZmQgMjMsIDB4MzIwKDMp IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjNdCisrICBzdGZkIDI0LCAweDMyOCgz KSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI0XQorKyAgc3RmZCAyNSwgMHgzMzAo MykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syNV0KKysgIHN0ZmQgMjYsIDB4MzM4 KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjZdCisrICBzdGZkIDI3LCAweDM0 MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzI3XQorKyAgc3RmZCAyOCwgMHgz NDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1syOF0KKysgIHN0ZmQgMjksIDB4 MzUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMjldCisrICBzdGZkIDMwLCAw eDM1OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzMwXQorKyAgc3RmZCAzMSwg MHgzNjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1szMV0KKysKKysgIC8vIEZQ U0NSCisrICBtZmZzIDAKKysgIHN0ZmQgMCwgMHgzNjgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVnc1szMl0KKysKKysgIC8vIFNhdmUgVk1YIFZlY3RvciByZWdpc3RlcnMKKysgIC8v IFVwZGF0ZSByNCB0byBjb250YWluIHRoZSBiYXNlIGFkZHJlc3Mgb2Ygdm14X3Jlc2VydmUKKysg IGFkZGkgNCwgMywgMHgzNzgKKysgIC8vIEVuc3VyZSB0aGF0IGl0IGlzIHF1YWR3b3JkIGFsaWdu ZWQKKysgIGFuZGkuIDUsIDQsIDB4RgorKyAgYmVxIDFmIC8vIE5vIGFsaWdubWVudCBpcyBuZWNl c3NhcnkKKysgIC8vIEFkZHJlc3MgaXMgZG91Ymxld29yZCBhbGlnbmVkIGFuZCBub3QgcXVhZHdv cmQgYWxpZ25lZCwgYWRkIDgKKysgIGFkZGkgNCwgNCwgOAorKworKzE6CisrICAvLyBTdG9yZSBW TVggcmVnaXN0ZXJzIDAtMzEKKysgIC8vIHI0IHdpbGwgY29udGFpbiB0aGUgYmFzZSBhZGRyZXNz CisrICAvLyByNSB3aWxsIGNvbnRhaW4gdGhlIGluZGV4CisrICBsaSA1LCAwCisrICBzdHZ4IDAs IDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMF0K KysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMSwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAy LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDJd CisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDMsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgM10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dngg NCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA0 XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCA1LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDVdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4 IDYsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg Nl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggNywgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA3XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2 eCA4LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSAr IDhdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDksIDQsIDUgICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgOV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0 dnggMTAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAxMF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTEsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxMV0KKysgIGFkZGkgNSwgNSwgMTYKKysg IHN0dnggMTIsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAxMl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTMsIDQsIDUgIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxM10KKysgIGFkZGkgNSwgNSwgMTYK KysgIHN0dnggMTQsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhh bGlnbikgKyAxNF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTUsIDQsIDUgIC8vIGNvbnRl eHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxNV0KKysgIGFkZGkgNSwgNSwg MTYKKysgIHN0dnggMTYsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZl WyhhbGlnbikgKyAxNl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTcsIDQsIDUgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxN10KKysgIGFkZGkgNSwg NSwgMTYKKysgIHN0dnggMTgsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNl cnZlWyhhbGlnbikgKyAxOF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMTksIDQsIDUgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAxOV0KKysgIGFkZGkg NSwgNSwgMTYKKysgIHN0dnggMjAsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9y ZXNlcnZlWyhhbGlnbikgKyAyMF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjEsIDQsIDUg IC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyMV0KKysgIGFk ZGkgNSwgNSwgMTYKKysgIHN0dnggMjIsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZt eF9yZXNlcnZlWyhhbGlnbikgKyAyMl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjMsIDQs IDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyM10KKysg IGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjQsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjUs IDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNV0K KysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjYsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyNl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dngg MjcsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAy N10KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMjgsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAyOF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0 dnggMjksIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyAyOV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggMzAsIDQsIDUgIC8vIGNvbnRleHQtPnVj X21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAzMF0KKysgIGFkZGkgNSwgNSwgMTYKKysg IHN0dnggMzEsIDQsIDUgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGln bikgKyAzMV0KKysgIGFkZGkgNSwgNSwgMTYKKysKKysgIC8vIFZTQ1IKKysgIG1mdnNjciAwCisr ICBzdHZ4IDAsIDQsIDUKKysgIGFkZGkgNSwgNSwgMTYKKysKKysgIC8vIFZSU0FWRQorKyAgbWZ2 cnNhdmUgMAorKyAgc3R3eCAwLCA0LCA1CisrCisrICAvLyBVcGRhdGUgY29udGV4dC0+dWNfbWNv bnRleHQudl9yZWdzIHRvIHBvaW50IHRvIHZteF9yZXNlcnZlICsgYWxpZ25tZW50LgorKyAgc3Rk IDQsIDB4MzcwKDMpCisrCisrICAvLyBaZXJvIG91dCBhbGwgdW51c2VkIGZpZWxkcworKyAgbGkg NCwgMAorKyAgc3RkIDQsIDB4YzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuc2lnbmFsCisr ICBzdGQgNCwgMHhkMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5oYW5kbGVyCisrICBzdGQg NCwgMHhkOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5vbGRtYXNrCisrCisrICBibHIKKyAj ZW5kaWYgIC8vIF9faTM4Nl9fCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3QuY2MKK2luZGV4IGNmMjNj MmRlZi4uNWYyNjRiYzkyIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdC5jYworQEAgLTU3LDcg KzU3LDcgQEAgdm9pZCBUZXN0Q2FwdHVyZUNvbnRleHQoKSB7CisgICB1aW50cHRyX3QgcGMgPSBQ cm9ncmFtQ291bnRlckZyb21Db250ZXh0KGNvbnRleHRfMSk7CisgCisgI2lmICFkZWZpbmVkKEFE RFJFU1NfU0FOSVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgXAor LSAgICAhZGVmaW5lZChNRU1PUllfU0FOSVRJWkVSKQorKyAgICAhZGVmaW5lZChNRU1PUllfU0FO SVRJWkVSKSAmJiAhZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisgICAvLyBTYW5pdGl6 ZXJzIGNhbiBjYXVzZSBlbm91Z2ggY29kZSBibG9hdCB0aGF0IHRoZSDigJxuZWFyYnnigJ0gY2hl Y2sgd291bGQKKyAgIC8vIGxpa2VseSBmYWlsLgorICAgY29uc3QgdWludHB0cl90IGtSZWZlcmVu Y2VQQyA9CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlz Yy9jYXB0dXJlX2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNjCitp bmRleCAzMGEyYWIyMWQuLjYwNTA5ZjIxZCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC91dGlsL21pc2MvY2FwdHVyZV9jb250ZXh0X3Rlc3RfdXRpbF9saW51eC5jYwor KysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRl eHRfdGVzdF91dGlsX2xpbnV4LmNjCitAQCAtMzUsNiArMzUsOCBAQCB2b2lkIFNhbml0eUNoZWNr Q29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7CisgICBFWFBFQ1RfRVEo Y29udGV4dC51Y19tY29udGV4dC5yZWdzWzBdLCBGcm9tUG9pbnRlckNhc3Q8dWludHB0cl90Pigm Y29udGV4dCkpOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICBFWFBF Q1RfRVEoY29udGV4dC51Y19tY29udGV4dC5ncmVnc1s0XSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRw dHJfdD4oJmNvbnRleHQpKTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkK KysgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LmdwX3JlZ3NbM10sIEZyb21Qb2ludGVy Q2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7CisgI2VuZGlmCisgfQorIAorQEAgLTQ5LDYgKzUx LDggQEAgdWludHB0cl90IFByb2dyYW1Db3VudGVyRnJvbUNvbnRleHQoY29uc3QgTmF0aXZlQ1BV Q29udGV4dCYgY29udGV4dCkgeworICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQucGM7Cisg I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIHJldHVybiBjb250ZXh0LnVj X21jb250ZXh0LnBjOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAg cmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworICNlbmRpZgorIH0K KyAKK0BAIC02Myw2ICs2Nyw4IEBAIHVpbnRwdHJfdCBTdGFja1BvaW50ZXJGcm9tQ29udGV4dChj b25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7CisgICByZXR1cm4gY29udGV4dC51Y19t Y29udGV4dC5zcDsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKQorICAgcmV0 dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbMjldOworKyNlbGlmIGRlZmluZWQoQVJDSF9D UFVfUFBDNjRfRkFNSUxZKQorKyAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1sx XTsKKyAjZW5kaWYKKyB9CisgCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCitpbmRleCA1NGNjMmYxOWYuLjI5OGI1Yzk5 MyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL3Bvc2l4L3Np Z25hbHNfdGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvcG9z aXgvc2lnbmFsc190ZXN0LmNjCitAQCAtNDYsOSArNDYsOSBAQCBib29sIENhbkNhdXNlU2lnbmFs KGludCBzaWcpIHsKKyAgIHJldHVybiBzaWcgPT0gU0lHQUJSVCB8fAorICAgICAgICAgIHNpZyA9 PSBTSUdBTFJNIHx8CisgICAgICAgICAgc2lnID09IFNJR0JVUyB8fAorLSNpZiAhZGVmaW5lZChB UkNIX0NQVV9BUk02NCkKKysjaWYgIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0KQorICAgICAgICAgIHNpZyA9PSBTSUdGUEUgfHwKKy0jZW5kaWYgIC8v ICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQorKyNlbmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVf QVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorICNpZiBkZWZpbmVkKEFSQ0hfQ1BV X1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwpCisgICAgICAgICAgc2lnID09 IFNJR0lMTCB8fAorICNlbmRpZiAgLy8gZGVmaW5lZChBUkNIX0NQVV9YODZfRkFNSUxZKSB8fCBk ZWZpbmVkKEFSQ0hfQ1BVX0FSTUVMKQorQEAgLTExNyw5ICsxMTcsMTEgQEAgdm9pZCBDYXVzZVNp Z25hbChpbnQgc2lnKSB7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKy0jaWYgIWRlZmluZWQo QVJDSF9DUFVfQVJNNjQpCisrI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KSAmJiAhZGVmaW5l ZChBUkNIX0NQVV9QUEM2NCkKKyAgICAgLy8gQVJNNjQgaGFzIGhhcmR3YXJlIGludGVnZXIgZGl2 aXNpb24gaW5zdHJ1Y3Rpb25zIHRoYXQgZG9u4oCZdCBnZW5lcmF0ZSBhCisgICAgIC8vIHRyYXAg Zm9yIGRpdmlkZS1ieS16ZXJvLCBzbyB0aGlzIGRvZXNu4oCZdCBwcm9kdWNlIFNJR0ZQRS4KKysg ICAgLy8KKysgICAgLy8gUFBDNjQgZml4ZWQtcG9pbnQgZGl2aXNpb24gYnkgemVybyBhbHNvIGRv ZXNuJ3QgcHJvZHVjZSBhIFNJR0ZQRS4KKyAgICAgY2FzZSBTSUdGUEU6IHsKKyAgICAgICAvLyBP cHRpbWl6YXRpb24gbWFrZXMgdGhpcyB0cmlja3ksIHNvIGdldCB6ZXJvIGZyb20gYSBzeXN0ZW0g Y2FsbCBsaWtlbHkKKyAgICAgICAvLyB0byBzdWNjZWVkLCBhbmQgdHJ5IHRvIGRvIHNvbWV0aGlu ZyB3aXRoIHRoZSByZXN1bHQuCitAQCAtMTM3LDcgKzEzOSw3IEBAIHZvaWQgQ2F1c2VTaWduYWwo aW50IHNpZykgeworICAgICAgIGZzdGF0KHF1b3RpZW50LCAmc3RhdF9idWYpOworICAgICAgIGJy ZWFrOworICAgICB9CistI2VuZGlmICAvLyBBUkNIX0NQVV9BUk02NAorKyNlbmRpZiAgLy8gIWRl ZmluZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorIAorICNp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwp CisgICAgIGNhc2UgU0lHSUxMOiB7CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2RhdjFkL0JVSUxE LmduIHRoaXJkX3BhcnR5L2RhdjFkL0JVSUxELmduCitpbmRleCA2YjQ1NjZmYzMuLmMwN2Y3MzJh ZCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9kYXYxZC9CVUlMRC5nbgorKysrIHRoaXJkX3BhcnR5 L2RhdjFkL0JVSUxELmduCitAQCAtMTg0LDYgKzE4NCw4IEBAIHN0YXRpY19saWJyYXJ5KCJkYXYx ZF84Yml0IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9zb3VyY2VzCisgICB9IGVs c2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgc291cmNlcyArPSBhcm1fdGVt cGxhdGVfc291cmNlcworKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Cisr ICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxhdGVfc291cmNlcworICAgfQorIAorICAgY2ZsYWdz ID0gZGF2MWRfY29wdHMKK0BAIC0yMTIsNiArMjE0LDggQEAgc3RhdGljX2xpYnJhcnkoImRhdjFk XzEwYml0IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9zb3VyY2VzCisgICB9IGVs c2UgaWYgKGN1cnJlbnRfY3B1ID09ICJhcm02NCIpIHsKKyAgICAgc291cmNlcyArPSBhcm1fdGVt cGxhdGVfc291cmNlcworKyAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQiKSB7Cisr ICAgIHNvdXJjZXMgKz0gcHBjNjRfdGVtcGxhdGVfc291cmNlcworICAgfQorIAorICAgY2ZsYWdz ID0gZGF2MWRfY29wdHMKK0BAIC0yNjMsNiArMjY3LDIxIEBAIGlmIChjdXJyZW50X2NwdSA9PSAi eDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0IikgeworICAgICAgIGRlZmluZXMgPSBbICJQUkVG SVgiIF0KKyAgICAgfQorIAorKyAgICBjZmxhZ3MgPSBkYXYxZF9jb3B0cworKyAgfQorK30gZWxz ZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgeworKyAgc3RhdGljX2xpYnJhcnkoImRhdjFk X3BwYyIpIHsKKysgICAgc291cmNlcyA9IFsKKysgICAgICAibGliZGF2MWQvc3JjL3BwYy9jcHUu YyIsCisrICAgICAgImxpYmRhdjFkL3NyYy9wcGMvY3B1LmgiLAorKyAgICBdCisrCisrICAgIGNv bmZpZ3MgLT0gWyAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6Y2hyb21pdW1fY29kZSIgXQorKyAg ICBjb25maWdzICs9IFsKKysgICAgICAiLy9idWlsZC9jb25maWcvY29tcGlsZXI6bm9fY2hyb21p dW1fY29kZSIsCisrICAgICAgIjpkYXYxZF9jb25maWciLAorKyAgICBdCisrCisgICAgIGNmbGFn cyA9IGRhdjFkX2NvcHRzCisgICB9CisgfQorQEAgLTI5Miw1ICszMTEsNyBAQCBzdGF0aWNfbGli cmFyeSgiZGF2MWQiKSB7CisgICAgIH0KKyAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gImFy bSIgfHwgY3VycmVudF9jcHUgPT0gImFybTY0IikgeworICAgICBkZXBzICs9IFsgIjpkYXYxZF9h cm0iIF0KKysgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgeworKyAgICBkZXBz ICs9IFsgIjpkYXYxZF9wcGMiIF0KKyAgIH0KKyB9CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2Rh djFkL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcuaCB0aGlyZF9wYXJ0eS9kYXYxZC9jb25maWcv bGludXgvcHBjNjQvY29uZmlnLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw MDAuLjlmYmJmNzVjYworLS0tIC9kZXYvbnVsbAorKysrIHRoaXJkX3BhcnR5L2RhdjFkL2NvbmZp Zy9saW51eC9wcGM2NC9jb25maWcuaAorQEAgLTAsMCArMSwzOSBAQAorKy8qCisrICogQXV0b2dl bmVyYXRlZCBieSB0aGUgTWVzb24gYnVpbGQgc3lzdGVtLgorKyAqIERvIG5vdCBlZGl0LCB5b3Vy IGNoYW5nZXMgd2lsbCBiZSBsb3N0LgorKyAqLworKworKyNwcmFnbWEgb25jZQorKworKyNkZWZp bmUgQVJDSF9BQVJDSDY0IDAKKysKKysjZGVmaW5lIEFSQ0hfQVJNIDAKKysKKysjZGVmaW5lIEFS Q0hfUFBDNjRMRSAxCisrCisrI2RlZmluZSBBUkNIX1g4NiAwCisrCisrI2RlZmluZSBBUkNIX1g4 Nl8zMiAwCisrCisrI2RlZmluZSBBUkNIX1g4Nl82NCAwCisrCisrI2RlZmluZSBDT05GSUdfMTZC UEMgMQorKworKyNkZWZpbmUgQ09ORklHXzhCUEMgMQorKworKy8vICNkZWZpbmUgQ09ORklHX0xP RyAxIC0tIExvZ2dpbmcgaXMgY29udHJvbGxlZCBieSBDaHJvbWl1bQorKworKyNkZWZpbmUgRU5E SUFOTkVTU19CSUcgMAorKworKyNkZWZpbmUgSEFWRV9BU00gMQorKworKyNkZWZpbmUgSEFWRV9D TE9DS19HRVRUSU1FIDEKKysKKysjZGVmaW5lIEhBVkVfRExTWU0gMQorKworKyNkZWZpbmUgSEFW RV9HRVRBVVhWQUwgMQorKworKyNkZWZpbmUgSEFWRV9QT1NJWF9NRU1BTElHTiAxCisrCisrI2Rl ZmluZSBIQVZFX1VOSVNURF9IIDEKKysKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvZGF2MWQvZGF2 MWRfZ2VuZXJhdGVkLmduaSB0aGlyZF9wYXJ0eS9kYXYxZC9kYXYxZF9nZW5lcmF0ZWQuZ25pCitp bmRleCBjNTljYjA4MjEuLjMwNjAyODRhOCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9kYXYxZC9k YXYxZF9nZW5lcmF0ZWQuZ25pCisrKysgdGhpcmRfcGFydHkvZGF2MWQvZGF2MWRfZ2VuZXJhdGVk LmduaQorQEAgLTgyLDYgKzgyLDExIEBAIGFybV90ZW1wbGF0ZV9zb3VyY2VzID0gWworICAgImxp YmRhdjFkL3NyYy9hcm0vbWNfaW5pdF90bXBsLmMiLAorIF0KKyAKKytwcGM2NF90ZW1wbGF0ZV9z b3VyY2VzID0gWworKyAgImxpYmRhdjFkL3NyYy9wcGMvY2RlZl9pbml0X3RtcGwuYyIsCisrICAi bGliZGF2MWQvc3JjL3BwYy9sb29wcmVzdG9yYXRpb25faW5pdF90bXBsLmMiLAorK10KKysKKyB0 ZW1wbGF0ZV9zb3VyY2VzID0gWworICAgImxpYmRhdjFkL3NyYy9jZGVmX2FwcGx5X3RtcGwuYyIs CisgICAibGliZGF2MWQvc3JjL2NkZWZfdG1wbC5jIiwKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkv ZGF2MWQvZ2VuZXJhdGVfc291cmNlLnB5IHRoaXJkX3BhcnR5L2RhdjFkL2dlbmVyYXRlX3NvdXJj ZS5weQoraW5kZXggOWFiNWUwMGI4Li5hZDNmZWZmZWUgMTAwNzU1CistLS0gdGhpcmRfcGFydHkv ZGF2MWQvZ2VuZXJhdGVfc291cmNlLnB5CisrKysgdGhpcmRfcGFydHkvZGF2MWQvZ2VuZXJhdGVf c291cmNlLnB5CitAQCAtNTcsNiArNTcsOCBAQAorICAgX1dyaXRlQXJyYXkoZmQsICJhcm02NF9h c21fc291cmNlcyIsIF9HbG9iKCJsaWJkYXYxZC9zcmMvYXJtLzY0LyouUyIpKQorICAgX1dyaXRl QXJyYXkoZmQsICJhcm1fdGVtcGxhdGVfc291cmNlcyIsIF9HbG9iKCJsaWJkYXYxZC9zcmMvYXJt LypfdG1wbC5jIikpCisgCisrICBfV3JpdGVBcnJheShmZCwgInBwYzY0X3RlbXBsYXRlX3NvdXJj ZXMiLCBfR2xvYigibGliZGF2MWQvc3JjL3BwYy8qX3RtcGwuYyIpKQorKworICAgdGVtcGxhdGVf c291cmNlcyA9IF9HbG9iKCJsaWJkYXYxZC9zcmMvKl90bXBsLmMiKQorICAgX1dyaXRlQXJyYXko ZmQsICJ0ZW1wbGF0ZV9zb3VyY2VzIiwgdGVtcGxhdGVfc291cmNlcykKKyAKK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oIHRoaXJkX3BhcnR5L2Rh djFkL2xpYmRhdjFkL3NyYy9wcGMvdHlwZXMuaAoraW5kZXggMGI0YmQ3MmYwLi5hMGNhYTVlNzEg MTAwNjQ0CistLS0gdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oCisr KysgdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oCitAQCAtNTEsNCAr NTEsMTkgQEAKKyAjZGVmaW5lIHUxNmxfdG9faTMyKHYpICgoaTMyeDQpIHZlY19tZXJnZWwoKHUx Nng4KSB2LCB2ZWNfc3BsYXRfdTE2KDApKSkKKyAjZGVmaW5lIGkxNmxfdG9faTMyKHYpICgoaTMy eDQpIHZlY191bnBhY2tsKChpMTZ4OCl2KSkKKyAKKysjaWYgZGVmaW5lZChfX2NsYW5nX18pCisr I3VuZGVmIHZlY19zcGxhdHMKKysjZGVmaW5lIHZlY19zcGxhdHMoTikgICAgICAgICAgICAgICAg ICAgICBcCisrICAgIF9HZW5lcmljKChOKSwgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAg ICAgICAgdW5zaWduZWQgY2hhcjogICAgICAoKHU4eDE2KShOKSksIFwKKysgICAgICAgIHNpZ25l ZCBjaGFyOiAgICAgICAgKChpOHgxNikoTikpLCBcCisrICAgICAgICB1bnNpZ25lZCBzaG9ydDog ICAgICgodTE2eDgpKE4pKSwgXAorKyAgICAgICAgc2lnbmVkIHNob3J0OiAgICAgICAoKGkxNng4 KShOKSksIFwKKysgICAgICAgIHVuc2lnbmVkIGludDogICAgICAgKCh1MzJ4NCkoTikpLCBcCisr ICAgICAgICBzaWduZWQgaW50OiAgICAgICAgICgoaTMyeDQpKE4pKSwgXAorKyAgICAgICAgdW5z aWduZWQgbG9uZyBsb25nOiAoKHU2NHgyKShOKSksIFwKKysgICAgICAgIHNpZ25lZCBsb25nIGxv bmc6ICAgKChpNjR4MikoTikpICBcCisrICAgICkKKysjZW5kaWYKKysKKyAjZW5kaWYgLyogREFW MURfU1JDX1BQQ19UWVBFU19IICovCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2xzcy9saW51eF9z eXNjYWxsX3N1cHBvcnQuaCB0aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgK K2luZGV4IGU0YWMyMjY0NC4uMWM1NzAxNWRiIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2xzcy9s aW51eF9zeXNjYWxsX3N1cHBvcnQuaAorKysrIHRoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxs X3N1cHBvcnQuaAorQEAgLTM5NDcsNyArMzk0Nyw3IEBAIHN0cnVjdCBrZXJuZWxfc3RhdGZzIHsK KyAgICAgICBMU1NfUkVHKDIsIGJ1Zik7CisgICAgICAgTFNTX0JPRFkodm9pZCosIG1tYXAyLCAi MCIoX19yMikpOworICAgICB9CistI2Vsc2UKKysjZWxpZiAhZGVmaW5lZChfX3Bvd2VycGM2NF9f KSAvKiBwcGM2NCBkb2Vzbid0IGhhdmUgbW1hcDIgKi8KKyAgICAgI2RlZmluZSBfX05SX19tbWFw MiBfX05SX21tYXAyCisgICAgIExTU19JTkxJTkUgX3N5c2NhbGw2KHZvaWQqLCBfbW1hcDIsICAg ICAgICAgICAgdm9pZCosIHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgICAg ICAgICAgICAgICAgICAgbCwgaW50LCAgICAgICAgICAgICAgIHAsCitAQCAtNDA1OCw3ICs0MDU4 LDcgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICAgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg ICAgICBkZWZpbmVkKF9fQVJNX0FSQ0hfM19fKSB8fCBkZWZpbmVkKF9fQVJNX0VBQklfXykgfHwg ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoZGVmaW5lZChfX21pcHNfXykgJiYgX01JUFNf U0lNID09IF9NSVBTX1NJTV9BQkkzMikgfHwgICAgICAgICAgICAgICAgICAgXAorLSAgICAgIGRl ZmluZWQoX19QUENfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwKKysgICAgIChkZWZpbmVkKF9fUFBDX18pICYmICFkZWZpbmVkKF9fcG93 ZXJwYzY0X18pKSB8fCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXAorICAgICAgKGRlZmluZWQoX19zMzkwX18pICYmICFkZWZpbmVkKF9fczM5MHhf XykpCisgICAgIC8qIE9uIHRoZXNlIGFyY2hpdGVjdHVyZXMsIGltcGxlbWVudCBtbWFwKCkgd2l0 aCBtbWFwMigpLiAqLworICAgICBMU1NfSU5MSU5FIHZvaWQqIExTU19OQU1FKG1tYXApKHZvaWQg KnMsIHNpemVfdCBsLCBpbnQgcCwgaW50IGYsIGludCBkLAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0 eS9wZmZmdC9zcmMvcGZmZnQuYyB0aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYworaW5kZXgg YmRhYzRkNzg0Li41MWUwZjJjYWMgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvcGZmZnQvc3JjL3Bm ZmZ0LmMKKysrKyB0aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYworQEAgLTEwMCw2ICsxMDAs NyBAQAorICAgIEFsdGl2ZWMgc3VwcG9ydCBtYWNyb3MgCisgKi8KKyAjaWYgIWRlZmluZWQoUEZG RlRfU0lNRF9ESVNBQkxFKSAmJiAoZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVkKF9fcHBjNjRf XykpCisrI2luY2x1ZGUgPGFsdGl2ZWMuaD4KKyB0eXBlZGVmIHZlY3RvciBmbG9hdCB2NHNmOwor ICMgIGRlZmluZSBTSU1EX1NaIDQKKyAjICBkZWZpbmUgVlpFUk8oKSAoKHZlY3RvciBmbG9hdCkg dmVjX3NwbGF0X3U4KDApKQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9za2lhL3NyYy9za3NsL1Nr U0xTdHJpbmcuY3BwIHRoaXJkX3BhcnR5L3NraWEvc3JjL3Nrc2wvU2tTTFN0cmluZy5jcHAKK2lu ZGV4IGVjM2U1Njk2NC4uNGNmODk5OWEyIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L3NraWEvc3Jj L3Nrc2wvU2tTTFN0cmluZy5jcHAKKysrKyB0aGlyZF9wYXJ0eS9za2lhL3NyYy9za3NsL1NrU0xT dHJpbmcuY3BwCitAQCAtMjM0LDcgKzIzNCwxMiBAQCBTdHJpbmcgdG9fc3RyaW5nKGRvdWJsZSB2 YWx1ZSkgeworICAgICBpZiAobmVlZHNEb3RaZXJvKSB7CisgICAgICAgICBidWZmZXIgPDwgIi4w IjsKKyAgICAgfQorLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5zdHIoKS5jX3N0cigpKTsKKysK KysgICAgc3RkOjpzdHJpbmcgcmV0KGJ1ZmZlci5zdHIoKSk7CisrICAgIGlmIChzaWduYml0KHZh bHVlKSAmJiByZXRbMF0gPT0gJy4nKSB7CisrICAgICAgICByZXRbMF0gPSAnLSc7CisrICAgIH0K KysgICAgcmV0dXJuIFN0cmluZyhyZXQuY19zdHIoKSk7CisgfQorIAorIGJvb2wgc3RvZChjb25z dCBTdHJpbmdGcmFnbWVudCYgcywgU0tTTF9GTE9BVCogdmFsdWUpIHsKK2RpZmYgLS1naXQgdGhp cmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jIHRoaXJkX3BhcnR5L3Nx bGl0ZS9zcmMvYW1hbGdhbWF0aW9uL3NxbGl0ZTMuYworaW5kZXggNmI0YTc4OTlkLi5iOGM3ZmU0 MTQgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3FsaXRl My5jCisrKysgdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jCitA QCAtMTQ0NzQsNyArMTQ0NzQsOCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0OworICMgaWYg ZGVmaW5lZChpMzg2KSAgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgICAgfHwgZGVmaW5lZChf TV9JWDg2KSB8fCAgICBcCisgICAgICBkZWZpbmVkKF9feDg2XzY0KSAgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSAgICB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKKyAgICAgIGRlZmluZWQoX01f QU1ENjQpICB8fCBkZWZpbmVkKF9NX0FSTSkgICAgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwg ICAgXAorLSAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxfXykg fHwgZGVmaW5lZChfTV9BUk02NCkKKysgICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZpbmVk KF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpIHx8ICAgXAorKyAgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKSAmJiAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5E SUFOX18pCisgIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQKKyAjIGVsaWYgZGVm aW5lZChzcGFyYykgICAgIHx8IGRlZmluZWQoX19wcGNfXykgfHwgXAorICAgICAgICBkZWZpbmVk KF9fQVJNRUJfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFQl9fKQorZGlmZiAtLWdpdCB0aGlyZF9w YXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1hdGlvbl9kZXYvc3FsaXRlMy5jIHRoaXJkX3BhcnR5L3Nx bGl0ZS9zcmMvYW1hbGdhbWF0aW9uX2Rldi9zcWxpdGUzLmMKK2luZGV4IGQzMGM5YjdkZS4uY2Y3 NWE2OWQ5IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvYW1hbGdhbWF0aW9uX2Rl di9zcWxpdGUzLmMKKysrKyB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1hdGlvbl9kZXYv c3FsaXRlMy5jCitAQCAtMTQ0ODcsNyArMTQ0ODcsOCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9n RXN0OworICMgaWYgZGVmaW5lZChpMzg2KSAgICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgICAg fHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBcCisgICAgICBkZWZpbmVkKF9feDg2XzY0KSAgfHwg ZGVmaW5lZChfX3g4Nl82NF9fKSAgICB8fCBkZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKKyAgICAg IGRlZmluZWQoX01fQU1ENjQpICB8fCBkZWZpbmVkKF9NX0FSTSkgICAgICAgIHx8IGRlZmluZWQo X194ODYpICAgfHwgICAgXAorLSAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19B QVJDSDY0RUxfXykgfHwgZGVmaW5lZChfTV9BUk02NCkKKysgICAgIGRlZmluZWQoX19BUk1FTF9f KSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpIHx8ICAgXAor KyAgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSAmJiAoX19CWVRFX09SREVSX18gPT0gX19PUkRF Ul9MSVRUTEVfRU5ESUFOX18pCisgIyAgIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDEyMzQK KyAjIGVsaWYgZGVmaW5lZChzcGFyYykgICAgIHx8IGRlZmluZWQoX19wcGNfXykgfHwgXAorICAg ICAgICBkZWZpbmVkKF9fQVJNRUJfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFQl9fKQorZGlmZiAt LWdpdCB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2V4dC9ydHJlZS9ydHJlZS5jIHRoaXJkX3BhcnR5 L3NxbGl0ZS9zcmMvZXh0L3J0cmVlL3J0cmVlLmMKK2luZGV4IGY1YjU3YTVlMi4uODBhMmQwYWQ4 IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0cmVlL3J0cmVlLmMKKysr KyB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2V4dC9ydHJlZS9ydHJlZS5jCitAQCAtNDUwLDcgKzQ1 MCw3IEBAIHN0cnVjdCBSdHJlZU1hdGNoQXJnIHsKKyAjaWYgZGVmaW5lZChpMzg2KSAgICAgfHwg ZGVmaW5lZChfX2kzODZfXykgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKKyAgICAgZGVm aW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9NX1g2NCkg IHx8ICAgIFwKKyAgICAgZGVmaW5lZChfTV9BTUQ2NCkgfHwgZGVmaW5lZChfTV9BUk0pICAgICB8 fCBkZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKKy0gICAgZGVmaW5lZChfX2FybV9fKQorKyAgICBk ZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykgJiYgKF9fQllURV9PUkRF Ul9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQorICMgZGVmaW5lIFNRTElURV9CWVRFT1JE RVIgICAgMTIzNAorICNlbGlmIGRlZmluZWQoc3BhcmMpICAgIHx8IGRlZmluZWQoX19wcGNfXykK KyAjIGRlZmluZSBTUUxJVEVfQllURU9SREVSICAgIDQzMjEKK2RpZmYgLS1naXQgdGhpcmRfcGFy dHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmggdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMv c3FsaXRlSW50LmgKK2luZGV4IDI0NTA3MGQ0Zi4uYjI1MTY0ZTk1IDEwMDY0NAorLS0tIHRoaXJk X3BhcnR5L3NxbGl0ZS9zcmMvc3JjL3NxbGl0ZUludC5oCisrKysgdGhpcmRfcGFydHkvc3FsaXRl L3NyYy9zcmMvc3FsaXRlSW50LmgKK0BAIC04NzcsNyArODc3LDggQEAgdHlwZWRlZiBJTlQxNl9U WVBFIExvZ0VzdDsKKyAjIGlmIGRlZmluZWQoaTM4NikgICAgICB8fCBkZWZpbmVkKF9faTM4Nl9f KSAgICAgIHx8IGRlZmluZWQoX01fSVg4NikgfHwgICAgXAorICAgICAgZGVmaW5lZChfX3g4Nl82 NCkgIHx8IGRlZmluZWQoX194ODZfNjRfXykgICAgfHwgZGVmaW5lZChfTV9YNjQpICB8fCAgICBc CisgICAgICBkZWZpbmVkKF9NX0FNRDY0KSAgfHwgZGVmaW5lZChfTV9BUk0pICAgICAgICB8fCBk ZWZpbmVkKF9feDg2KSAgIHx8ICAgIFwKKy0gICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZp bmVkKF9fQUFSQ0g2NEVMX18pIHx8IGRlZmluZWQoX01fQVJNNjQpCisrICAgICBkZWZpbmVkKF9f QVJNRUxfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9NX0FSTTY0KSB8 fCBcCisrICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIChfX0JZVEVfT1JERVJfXyA9PSBf X09SREVSX0xJVFRMRV9FTkRJQU5fXykKKyAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAg MTIzNAorICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICAgfHwgZGVmaW5lZChfX3BwY19fKSB8fCBc CisgICAgICAgIGRlZmluZWQoX19BUk1FQl9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVCX18pCitk aWZmIC0tZ2l0IHRoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZm ZXJfYmxvY2suY2MgdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2Rp ZmZlcl9ibG9jay5jYworaW5kZXggNGYwYzU0MzBjLi41NGVlMDgyOWUgMTAwNjQ0CistLS0gdGhp cmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9ibG9jay5jYwor KysrIHRoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9kaWZmZXJfYmxv Y2suY2MKK0BAIC0zMCwxMSArMzAsNyBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWlu dDhfdCogaW1hZ2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKKyAgIHN0YXRpYyBib29sICgq ZGlmZl9wcm9jKShjb25zdCB1aW50OF90KiwgY29uc3QgdWludDhfdCopID0gbnVsbHB0cjsKKyAK KyAgIGlmICghZGlmZl9wcm9jKSB7CistI2lmIGRlZmluZWQoV0VCUlRDX0FSQ0hfQVJNX0ZBTUlM WSkgfHwgZGVmaW5lZChXRUJSVENfQVJDSF9NSVBTX0ZBTUlMWSkKKy0gICAgLy8gRm9yIEFSTSBh bmQgTUlQUyBwcm9jZXNzb3JzLCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KKy0gICAgLy8gVE9ETyho Y2xhbSk6IEltcGxlbWVudCBhIE5FT04gdmVyc2lvbi4KKy0gICAgZGlmZl9wcm9jID0gJlZlY3Rv ckRpZmZlcmVuY2VfQzsKKy0jZWxzZQorKyNpZiBkZWZpbmVkKFdFQlJUQ19BUkNIX1g4Nl9GQU1J TFkpCisgICAgIGJvb2wgaGF2ZV9zc2UyID0gR2V0Q1BVSW5mbyhrU1NFMikgIT0gMDsKKyAgICAg Ly8gRm9yIHg4NiBwcm9jZXNzb3JzLCBjaGVjayBpZiBTU0UyIGlzIHN1cHBvcnRlZC4KKyAgICAg aWYgKGhhdmVfc3NlMiAmJiBrQmxvY2tTaXplID09IDMyKSB7CitAQCAtNDQsNiArNDAsMTAgQEAg Ym9vbCBWZWN0b3JEaWZmZXJlbmNlKGNvbnN0IHVpbnQ4X3QqIGltYWdlMSwgY29uc3QgdWludDhf dCogaW1hZ2UyKSB7CisgICAgIH0gZWxzZSB7CisgICAgICAgZGlmZl9wcm9jID0gJlZlY3RvckRp ZmZlcmVuY2VfQzsKKyAgICAgfQorKyNlbHNlCisrICAgIC8vIEZvciBvdGhlciBwcm9jZXNzb3Jz LCBhbHdheXMgdXNlIEMgdmVyc2lvbi4KKysgICAgLy8gVE9ETyhoY2xhbSk6IEltcGxlbWVudCBh IE5FT04gdmVyc2lvbi4KKysgICAgZGlmZl9wcm9jID0gJlZlY3RvckRpZmZlcmVuY2VfQzsKKyAj ZW5kaWYKKyAgIH0KKyAKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5 c3RlbS9hcmNoLmggdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgKK2lu ZGV4IGJlMjM2N2I4NS4uYmU0ZWU0MjMzIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L3dlYnJ0Yy9y dGNfYmFzZS9zeXN0ZW0vYXJjaC5oCisrKysgdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5 c3RlbS9hcmNoLmgKK0BAIC03OSw2ICs3OSwxOCBAQAorICNlbGlmIGRlZmluZWQoX19FTVNDUklQ VEVOX18pCisgI2RlZmluZSBXRUJSVENfQVJDSF8zMl9CSVRTCisgI2RlZmluZSBXRUJSVENfQVJD SF9MSVRUTEVfRU5ESUFOCisrI2VsaWYgZGVmaW5lZChfX1BQQ19fKQorKyNkZWZpbmUgV0VCUlRD X0FSQ0hfUFBDX0ZBTUlMWQorKyNpZiBfX0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9F TkRJQU5fXworKyNkZWZpbmUgV0VCUlRDX0FSQ0hfTElUVExFX0VORElBTgorKyNlbHNlCisrI2Rl ZmluZSBXRUJSVENfQVJDSF9CSUdfRU5ESUFOCisrI2VuZGlmCisrI2lmIGRlZmluZWQoX19MUDY0 X18pCisrI2RlZmluZSBXRUJSVENfQVJDSF82NF9CSVRTCisrI2Vsc2UKKysjZGVmaW5lIFdFQlJU Q19BUkNIXzMyX0JJVFMKKysjZW5kaWYKKyAjZWxzZQorICNlcnJvciBQbGVhc2UgYWRkIHN1cHBv cnQgZm9yIHlvdXIgYXJjaGl0ZWN0dXJlIGluIHJ0Y19iYXNlL3N5c3RlbS9hcmNoLmgKKyAjZW5k aWYKK2RpZmYgLS1naXQgdjgvQlVJTEQuZ24gdjgvQlVJTEQuZ24KK2luZGV4IGYzOTUyOWEzYS4u ZTg0ZmM0NDllIDEwMDY0NAorLS0tIHY4L0JVSUxELmduCisrKysgdjgvQlVJTEQuZ24KK0BAIC04 NTAsNiArODUwLDEyIEBAIGNvbmZpZygidG9vbGNoYWluIikgeworICAgICB9CisgICAgIGlmICho b3N0X2J5dGVvcmRlciA9PSAibGl0dGxlIikgeworICAgICAgIGRlZmluZXMgKz0gWyAiVjhfVEFS R0VUX0FSQ0hfUFBDX0xFIiBdCisrICAgICAgY2ZsYWdzICs9IFsKKysgICAgICAgICMgRW5hYmxl IHVzYWdlIG9mIEFsdGlWZWMsIFZTWCwgYW5kIG90aGVyIFBPV0VSOCBhbmQgaGlnaGVyIGZlYXR1 cmVzCisrICAgICAgICAiLW1jcHU9cG93ZXI4IiwKKysgICAgICAgICItbWFsdGl2ZWMiLAorKyAg ICAgICAgIi1tdnN4IiwKKysgICAgICBdCisgICAgIH0gZWxzZSBpZiAoaG9zdF9ieXRlb3JkZXIg PT0gImJpZyIpIHsKKyAgICAgICBkZWZpbmVzICs9IFsgIlY4X1RBUkdFVF9BUkNIX1BQQ19CRSIg XQorICAgICAgIGlmIChjdXJyZW50X29zID09ICJhaXgiKSB7CitkaWZmIC0tZ2l0IHVpL2dsL2Zl YXR1cmVzLmduaSB1aS9nbC9mZWF0dXJlcy5nbmkKK2luZGV4IDVmZGE5YjYuLjNkMmRkOGIgMTAw NjQ0CistLS0gdWkvZ2wvZmVhdHVyZXMuZ25pCisrKysgdWkvZ2wvZmVhdHVyZXMuZ25pCitAQCAt MzIsNSArMzIsNiBAQCBkZWNsYXJlX2FyZ3MoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg KGlzX21hYyAmJiB1c2VfZWdsKSB8fCBpc19jaHJvbWVvc19hc2ggfHwgaXNfZnVjaHNpYSkgJiYK KyAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRfY3B1ID09ICJ4ODYiIHx8IHRhcmdldF9j cHUgPT0gIng2NCIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfY3B1ID09ICJh cm0iIHx8IHRhcmdldF9jcHUgPT0gImFybTY0IiB8fAorLSAgICAgICAgICAgICAgICAgICAgICAg IHRhcmdldF9jcHUgPT0gIm1pcHNlbCIgfHwgdGFyZ2V0X2NwdSA9PSAibWlwczY0ZWwiKQorKyAg ICAgICAgICAgICAgICAgICAgICAgIHRhcmdldF9jcHUgPT0gIm1pcHNlbCIgfHwgdGFyZ2V0X2Nw dSA9PSAibWlwczY0ZWwiIHx8CisrICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NwdSA9 PSAicHBjNjQiKQorIH0KK2RpZmYgLS1naXQgdjgvdGVzdC9CVUlMRC5nbiB2OC90ZXN0L0JVSUxE LmduCitpbmRleCBmYjg3MmFkMzkuLjQ1ZmM1ODVkZCAxMDA2NDQKKy0tLSB2OC90ZXN0L0JVSUxE LmduCisrKysgdjgvdGVzdC9CVUlMRC5nbgorQEAgLTM2LDcgKzM2LDcgQEAgZ3JvdXAoImduX2Fs bCIpIHsKKyAgICAgICAiYmVuY2htYXJrcy9jcHA6Z25fYWxsIiwKKyAgICAgICAiY2N0ZXN0OmNj dGVzdCIsCisgICAgICAgImNjdGVzdDpnZW5lcmF0ZS1ieXRlY29kZS1leHBlY3RhdGlvbnMiLAor LSAgICAgICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKysgICAgICAjInVuaXR0ZXN0czp1bml0dGVz dHMiLAorICAgICBdCisgICB9CisgfQorQEAgLTgzLDcgKzgzLDcgQEAKKyAgICAgIm1lc3NhZ2U6 djhfbWVzc2FnZSIsCisgICAgICJtanN1bml0OnY4X21qc3VuaXQiLAorICAgICAibWtncm9rZHVt cDpta2dyb2tkdW1wIiwKKy0gICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAorKyAgICAjInVuaXR0 ZXN0czp1bml0dGVzdHMiLAorICAgICAid2Via2l0OnY4X3dlYmtpdCIsCisgICBdCisgCitAQCAt MTA4LDcgKzEwOCw3IEBACisgICAgICJtZXNzYWdlOnY4X21lc3NhZ2UiLAorICAgICAibWpzdW5p dDp2OF9tanN1bml0IiwKKyAgICAgIm1rZ3Jva2R1bXA6bWtncm9rZHVtcCIsCistICAgICJ1bml0 dGVzdHM6dW5pdHRlc3RzIiwKKysgICAgIyJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKyAgIF0KKyAK KyAgIGlmICh2OF9lbmFibGVfd2ViYXNzZW1ibHkpIHsKKworLS0tIHNhbmRib3gvbGludXgvc2Vj Y29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCTIwMjEt MDUtMjUgMTc6NDI6MjAuNDMxMjE5NDA3ICswMjAwCisrKysgLQkyMDIxLTA1LTI1IDE4OjMzOjA2 LjgwMTg2NjE0NSArMDIwMApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3Bh dGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2ggYi9zcmNwa2dzL2Vs ZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjUzNTQ5ZDE3ZjVh YwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2No cm9taXVtLXh4eC1wcGM2NGxlLXN3aWZ0c2hhZGVyLnBhdGNoCkBAIC0wLDAgKzEsMTggQEAKKy0t LSB0aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLTEwLjAvQlVJTEQuZ24K KysrKyB0aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9wYXJ0eS9sbHZtLTEwLjAvQlVJTEQu Z24KK0BAIC01NzQsNiArNTc0LDcgQEAgc3dpZnRzaGFkZXJfbGx2bV9zb3VyY2Vfc2V0KCJzd2lm dHNoYWRlcgorICAgICAibGx2bS9saWIvTUMvTUNBc21JbmZvQ09GRi5jcHAiLAorICAgICAibGx2 bS9saWIvTUMvTUNBc21JbmZvRGFyd2luLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9NQ0FzbUlu Zm9FTEYuY3BwIiwKKysgICAgImxsdm0vbGliL01DL01DQXNtSW5mb1hDT0ZGLmNwcCIsCisgICAg ICJsbHZtL2xpYi9NQy9NQ0FzbU1hY3JvLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9NQ0FzbVN0 cmVhbWVyLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9NQ0Fzc2VtYmxlci5jcHAiLAorQEAgLTYy OSw2ICs2MzAsNyBAQCBzd2lmdHNoYWRlcl9sbHZtX3NvdXJjZV9zZXQoInN3aWZ0c2hhZGVyCisg ICAgICJsbHZtL2xpYi9NQy9NQ1dpbkNPRkZTdHJlYW1lci5jcHAiLAorICAgICAibGx2bS9saWIv TUMvTUNXaW5FSC5jcHAiLAorICAgICAibGx2bS9saWIvTUMvTUNYQ09GRlN0cmVhbWVyLmNwcCIs CisrICAgICJsbHZtL2xpYi9NQy9NQ1hDT0ZGT2JqZWN0VGFyZ2V0V3JpdGVyLmNwcCIsCisgICAg ICJsbHZtL2xpYi9NQy9NYWNoT2JqZWN0V3JpdGVyLmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9T dHJpbmdUYWJsZUJ1aWxkZXIuY3BwIiwKKyAgICAgImxsdm0vbGliL01DL1N1YnRhcmdldEZlYXR1 cmUuY3BwIiwKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2Vs ZWN0cm9uLUFkZC1hLXNjcmlwdC10by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gucGF0Y2ggYi9z cmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1BZGQtYS1zY3JpcHQtdG8t bGlzdC1wYXRjaC10YXJnZXRzLnBhdGNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uOTE2ZGJhOWRjM2JjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9l bGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQWRkLWEtc2NyaXB0LXRvLWxpc3QtcGF0 Y2gtdGFyZ2V0cy5wYXRjaC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIGZmNDEyMmYyMzZi NzBjMjcyYzc0NmQwYzMzNmNkYmQ1ODhkNzhjZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitG cm9tOiBFbHZpcyBQcmFuc2tldmljaHVzIDxlbHZpc0BtYWdpYy5pbz4KK0RhdGU6IFRodSwgMTIg RGVjIDIwMTkgMTY6MTI6MTggLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGEgc2NyaXB0IHRv IGxpc3QgcGF0Y2ggdGFyZ2V0cworCistLS0KKyBzY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5 IHwgMjMgKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMjMgaW5zZXJ0 aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDc1NSBzY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5 CisKK2RpZmYgLS1naXQgYS9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5IGIvc2NyaXB0L2xp c3RfcGF0Y2hfdGFyZ2V0cy5weQorbmV3IGZpbGUgbW9kZSAxMDA3NTUKK2luZGV4IDAwMDAwMDAw MC4uNTUxNzNiYWM5CistLS0gL2Rldi9udWxsCisrKysgYi9zY3JpcHQvbGlzdF9wYXRjaF90YXJn ZXRzLnB5CitAQCAtMCwwICsxLDIzIEBACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrCisraW1w b3J0IGFyZ3BhcnNlCisraW1wb3J0IGpzb24KKysKKysKKytkZWYgcGFyc2VfYXJncygpOgorKyAg cGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVzY3JpcHRpb249J0FwcGx5IEVsZWN0 cm9uIHBhdGNoZXMnKQorKyAgcGFyc2VyLmFkZF9hcmd1bWVudCgnY29uZmlnJywgbmFyZ3M9Jysn LAorKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPWFyZ3BhcnNlLkZpbGVUeXBlKCdyJyksCisr ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3BhdGNoZXNcJyBjb25maWcocykgaW4gdGhlIEpT T04gZm9ybWF0JykKKysgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncygpCisrCisrCisrZGVmIG1h aW4oKToKKysgIGNvbmZpZ3MgPSBwYXJzZV9hcmdzKCkuY29uZmlnCisrICBmb3IgY29uZmlnX2pz b24gaW4gY29uZmlnczoKKysgICAgZm9yIHBhdGNoX2RpciwgcmVwbyBpbiBqc29uLmxvYWQoY29u ZmlnX2pzb24pLml0ZXJpdGVtcygpOgorKyAgICAgIHByaW50KHJlcG8pCisrCisrCisraWYgX19u YW1lX18gPT0gJ19fbWFpbl9fJzoKKysgIG1haW4oKQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0 IGEvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQnVpbGQtZml4ZXMu cGF0Y2gucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1C dWlsZC1maXhlcy5wYXRjaC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjI5OGJmYTliY2IyYgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLUJ1aWxkLWZpeGVzLnBhdGNoLnBhdGNoCkBAIC0wLDAg KzEsNDcgQEAKK2RpZmYgLS1naXQgYS9idWlsZC9hcmdzL3JlbGVhc2UuZ24gYi9idWlsZC9hcmdz L3JlbGVhc2UuZ24KK2luZGV4IGU1MDE3ZjZlMS4uNTkyMDdiMzg5IDEwMDY0NAorLS0tIGEvYnVp bGQvYXJncy9yZWxlYXNlLmduCisrKysgYi9idWlsZC9hcmdzL3JlbGVhc2UuZ24KK0BAIC0xLDYg KzEsNCBAQAorIGltcG9ydCgiYWxsLmduIikKKy1pc19jb21wb25lbnRfYnVpbGQgPSBmYWxzZQor LWlzX29mZmljaWFsX2J1aWxkID0gdHJ1ZQorIAorICMgVGhpcyBtYXkgYmUgZ3VhcmRlZCBiZWhp bmQgaXNfY2hyb21lX2JyYW5kZWQgYWxvbmdzaWRlCisgIyBwcm9wcmlldGFyeV9jb2RlY3MgaHR0 cHM6Ly93ZWJydGMtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9zcmMvKy8zNjMyMSwKK0BAIC04 LDkgKzYsMyBAQCBpc19vZmZpY2lhbF9idWlsZCA9IHRydWUKKyAjIFRoZSBpbml0aWFsaXphdGlv biBvZiB0aGUgZGVjb2RlciBkZXBlbmRzIG9uIHdoZXRoZXIgZmZtcGVnIGhhcworICMgYmVlbiBi dWlsdCB3aXRoIEguMjY0IHN1cHBvcnQuCisgcnRjX3VzZV9oMjY0ID0gcHJvcHJpZXRhcnlfY29k ZWNzCistCistIyBCeSBkZWZhdWx0LCBFbGVjdHJvbiBidWlsZHMgZmZtcGVnIHdpdGggcHJvcHJp ZXRhcnkgY29kZWNzIGVuYWJsZWQuIEluIG9yZGVyCistIyB0byBmYWNpbGl0YXRlIHVzZXJzIHdo byBkb24ndCB3YW50IHRvIHNoaXAgcHJvcHJpZXRhcnkgY29kZWNzIGluIGZmbXBlZywgb3IKKy0j IHdobyBoYXZlIGFuIExHUEwgcmVxdWlyZW1lbnQgdG8gc2hpcCBmZm1wZWcgYXMgYSBkeW5hbWlj YWxseSBsaW5rZWQgbGlicmFyeSwKKy0jIHdlIGJ1aWxkIGZmbXBlZyBhcyBhIHNoYXJlZCBsaWJy YXJ5LgorLWlzX2NvbXBvbmVudF9mZm1wZWcgPSB0cnVlCitkaWZmIC0tZ2l0IGEvYnVpbGQvbnBt LmduaSBiL2J1aWxkL25wbS5nbmkKK2luZGV4IGExOTg3ZDA5NS4uZmIzM2ExNGMzIDEwMDY0NAor LS0tIGEvYnVpbGQvbnBtLmduaQorKysrIGIvYnVpbGQvbnBtLmduaQorQEAgLTM1LDcgKzM1LDYg QEAgdGVtcGxhdGUoIm5wbV9hY3Rpb24iKSB7CisgICAgIGlmICghZGVmaW5lZChkZXBzKSkgewor ICAgICAgIGRlcHMgPSBbXQorICAgICB9CistICAgIGRlcHMgKz0gWyAiOm5wbV9wcmVfZmxpZ2h0 XyIgKyB0YXJnZXRfbmFtZSBdCisgCisgICAgIHNjcmlwdCA9ICIvL2VsZWN0cm9uL2J1aWxkL25w bS1ydW4ucHkiCisgICAgIGFyZ3MgPSBbCitkaWZmIC0tZ2l0IGEvcGF0Y2hlcy9ub2RlL2ZpeF9h ZGRfZGVmYXVsdF92YWx1ZXNfZm9yX2VuYWJsZV9sdG9fYW5kX2J1aWxkX3Y4X3dpdGhfZ25faW4u cGF0Y2ggYi9wYXRjaGVzL25vZGUvZml4X2FkZF9kZWZhdWx0X3ZhbHVlc19mb3JfZW5hYmxlX2x0 b19hbmRfYnVpbGRfdjhfd2l0aF9nbl9pbi5wYXRjaAoraW5kZXggMGRjOTkxNmJlLi43ZWFhNDZi ZjUgMTAwNjQ0CistLS0gYS9wYXRjaGVzL25vZGUvZml4X2FkZF9kZWZhdWx0X3ZhbHVlc19mb3Jf ZW5hYmxlX2x0b19hbmRfYnVpbGRfdjhfd2l0aF9nbl9pbi5wYXRjaAorKysrIGIvcGF0Y2hlcy9u b2RlL2ZpeF9hZGRfZGVmYXVsdF92YWx1ZXNfZm9yX2VuYWJsZV9sdG9fYW5kX2J1aWxkX3Y4X3dp dGhfZ25faW4ucGF0Y2gKK0BAIC0zMCw3ICszMCw3IEBACisgKyAgICAjIHRoZXNlIHZhbHVlcyBi ZWluZyBhY2N1cmF0ZS4KKyArICAgICdidWlsZF92OF93aXRoX2duJzogJ2ZhbHNlJywKKyArICAg ICdlbmFibGVfbHRvJSc6ICdmYWxzZScsCistKworKysgICAgJ29wZW5zc2xfZmlwcyc6ICcnLAor ICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgIFsndGFyZ2V0X2FyY2g9PSJhcm02NCInLCB7 CisgICAgICAgICAgIyBEaXNhYmxlZCBwZW5kaW5nIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMv bm9kZS9pc3N1ZXMvMjM5MTMuCisKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxl cy9wYXRjaGVzL2VsZWN0cm9uLWRvbnQtYXNzdW1lLXB5dGhvbi1pcy1weXRob24yLnBhdGNoIGIv c3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZG9udC1hc3N1bWUtcHl0 aG9uLWlzLXB5dGhvbjIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAwLi5mYjEzNDc0ODAyNWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTMv ZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1kb250LWFzc3VtZS1weXRob24taXMtcHl0aG9uMi5wYXRj aApAQCAtMCwwICsxLDE3IEBACistLS0gYS9idWlsZC96aXAucHkub3JpZwkyMDIwLTA0LTI3IDE3 OjU5OjUzLjQ5OTI4MTY2NyArMDIwMAorKysrIGIvYnVpbGQvemlwLnB5CTIwMjAtMDQtMjcgMTc6 NTk6NTcuNjU1ODM5MTQzICswMjAwCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBw eXRob24KKysjIS91c3IvYmluL2VudiBweXRob24yCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBw cmludF9mdW5jdGlvbgorIGltcG9ydCBvcworIGltcG9ydCBzdWJwcm9jZXNzCisKKy0tLSBhL2J1 aWxkL25wbS1ydW4ucHkub3JpZwkyMDIwLTA0LTI3IDE3OjU5OjUwLjgyOTM1MTgwNyArMDIwMAor KysrIGIvYnVpbGQvbnBtLXJ1bi5weQkyMDIwLTA0LTI3IDE4OjAwOjAyLjcwMjM3MzI1NiArMDIw MAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9l bnYgcHl0aG9uMgorIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyBpbXBv cnQgb3MKKyBpbXBvcnQgc3VicHJvY2VzcwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEz L2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZXhjbHVkZS1jb250ZW50LXRlc3QtcGF0Y2hlcy5wYXRj aCBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWV4Y2x1ZGUtY29u dGVudC10ZXN0LXBhdGNoZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi40NTYyMjM2NDQyNzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9u MTMvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRjaGVzLnBh dGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL3NjcmlwdC9hcHBseV9hbGxfcGF0Y2hlcy5weQky MDIwLTA4LTIyIDE3OjQ2OjQxLjc5NjcwNzUwNiArMDIwMAorKysrIC0JMjAyMC0wOC0yMiAxNzo0 NzowNS44ODc4MTM1MTIgKzAyMDAKK0BAIC0xNCw2ICsxNCw3IEBACisgICBmb3IgcGF0Y2hfZGly LCByZXBvIGluIGRpcnMuaXRlbXMoKToKKyAgICAgZ2l0LmltcG9ydF9wYXRjaGVzKHJlcG89cmVw bywgcGF0Y2hfZGF0YT1wYXRjaF9mcm9tX2RpcihwYXRjaF9kaXIpLAorICAgICAgIHRocmVld2F5 PXRocmVld2F5IGlzIG5vdCBOb25lLAorKyAgICAgIGV4Y2x1ZGU9Wyd0ZXN0L21qc3VuaXQvKion LCAnY29udGVudC90ZXN0LyoqJywgJ3Rlc3QvY2N0ZXN0LyoqJywgJ3Rlc3QvdW5pdHRlc3RzLyoq JywgJ3RoaXJkX3BhcnR5L2JsaW5rL3dlYl90ZXN0cy8qKiddLAorICAgICAgIGNvbW1pdHRlcl9u YW1lPSJFbGVjdHJvbiBTY3JpcHRzIiwgY29tbWl0dGVyX2VtYWlsPSJzY3JpcHRzQGVsZWN0cm9u IikKKyAKKyAKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxl cy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuY2MgYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25k aW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwMC4uMmM3YWE4ZWZhNjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtn cy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5jYwpA QCAtMCwwICsxLDE0OCBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRo b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMg Z292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4g dGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1ZGUgImJhc2UvbWV0cmljcy9oaXN0b2dyYW1fbWFj cm9zLmgiCisjaW5jbHVkZSAiYmFzZS9tZW1vcnkvcHRyX3V0aWwuaCIKKworI2luY2x1ZGUgIm1l ZGlhL2F1ZGlvL29wZW5ic2QvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmgiCisKKyNpbmNsdWRlICJt ZWRpYS9hdWRpby9hdWRpb19kZXZpY2VfZGVzY3JpcHRpb24uaCIKKyNpbmNsdWRlICJtZWRpYS9h dWRpby9hdWRpb19vdXRwdXRfZGlzcGF0Y2hlci5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3Nu ZGlvL3NuZGlvX2lucHV0LmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0 cHV0LmgiCisjaW5jbHVkZSAibWVkaWEvYmFzZS9saW1pdHMuaCIKKyNpbmNsdWRlICJtZWRpYS9i YXNlL21lZGlhX3N3aXRjaGVzLmgiCisKK25hbWVzcGFjZSBtZWRpYSB7CisKKy8vIE1heGltdW0g bnVtYmVyIG9mIG91dHB1dCBzdHJlYW1zIHRoYXQgY2FuIGJlIG9wZW4gc2ltdWx0YW5lb3VzbHku CitzdGF0aWMgY29uc3QgaW50IGtNYXhPdXRwdXRTdHJlYW1zID0gNDsKKworLy8gRGVmYXVsdCBz YW1wbGUgcmF0ZSBmb3IgaW5wdXQgYW5kIG91dHB1dCBzdHJlYW1zLgorc3RhdGljIGNvbnN0IGlu dCBrRGVmYXVsdFNhbXBsZVJhdGUgPSA0ODAwMDsKKwordm9pZCBBZGREZWZhdWx0RGV2aWNlKEF1 ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgeworICBEQ0hFQ0soZGV2aWNlX25hbWVzLT5l bXB0eSgpKTsKKyAgZGV2aWNlX25hbWVzLT5wdXNoX2Zyb250KEF1ZGlvRGV2aWNlTmFtZTo6Q3Jl YXRlRGVmYXVsdCgpKTsKK30KKworYm9vbCBBdWRpb01hbmFnZXJPcGVuQlNEOjpIYXNBdWRpb091 dHB1dERldmljZXMoKSB7CisgIHJldHVybiB0cnVlOworfQorCitib29sIEF1ZGlvTWFuYWdlck9w ZW5CU0Q6Okhhc0F1ZGlvSW5wdXREZXZpY2VzKCkgeworICByZXR1cm4gdHJ1ZTsKK30KKwordm9p ZCBBdWRpb01hbmFnZXJPcGVuQlNEOjpHZXRBdWRpb0lucHV0RGV2aWNlTmFtZXMoCisgICAgQXVk aW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSB7CisgIERDSEVDSyhkZXZpY2VfbmFtZXMtPmVt cHR5KCkpOworICBBZGREZWZhdWx0RGV2aWNlKGRldmljZV9uYW1lcyk7Cit9CisKK3ZvaWQgQXVk aW9NYW5hZ2VyT3BlbkJTRDo6R2V0QXVkaW9PdXRwdXREZXZpY2VOYW1lcygKKyAgICBBdWRpb0Rl dmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKyAgQWRkRGVmYXVsdERldmljZShkZXZpY2VfbmFt ZXMpOworfQorCitjb25zdCBjaGFyKiBBdWRpb01hbmFnZXJPcGVuQlNEOjpHZXROYW1lKCkgewor ICByZXR1cm4gIlNORElPIjsKK30KKworQXVkaW9QYXJhbWV0ZXJzIEF1ZGlvTWFuYWdlck9wZW5C U0Q6OkdldElucHV0U3RyZWFtUGFyYW1ldGVycygKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2 aWNlX2lkKSB7CisgIHN0YXRpYyBjb25zdCBpbnQga0RlZmF1bHRJbnB1dEJ1ZmZlclNpemUgPSAx MDI0OworCisgIGludCB1c2VyX2J1ZmZlcl9zaXplID0gR2V0VXNlckJ1ZmZlclNpemUoKTsKKyAg aW50IGJ1ZmZlcl9zaXplID0gdXNlcl9idWZmZXJfc2l6ZSA/CisgICAgICB1c2VyX2J1ZmZlcl9z aXplIDoga0RlZmF1bHRJbnB1dEJ1ZmZlclNpemU7CisKKyAgcmV0dXJuIEF1ZGlvUGFyYW1ldGVy cygKKyAgICAgIEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBDSEFOTkVM X0xBWU9VVF9TVEVSRU8sCisgICAgICBrRGVmYXVsdFNhbXBsZVJhdGUsIGJ1ZmZlcl9zaXplKTsK K30KKworQXVkaW9NYW5hZ2VyT3BlbkJTRDo6QXVkaW9NYW5hZ2VyT3BlbkJTRChzdGQ6OnVuaXF1 ZV9wdHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQXVkaW9Mb2dGYWN0b3J5KiBhdWRpb19sb2dfZmFjdG9yeSkKKyAg ICA6IEF1ZGlvTWFuYWdlckJhc2Uoc3RkOjptb3ZlKGF1ZGlvX3RocmVhZCksCisgICAgICAgICAg ICAgICAgICAgICAgIGF1ZGlvX2xvZ19mYWN0b3J5KSB7CisgIERMT0coV0FSTklORykgPDwgIkF1 ZGlvTWFuYWdlck9wZW5CU0QiOworICBTZXRNYXhPdXRwdXRTdHJlYW1zQWxsb3dlZChrTWF4T3V0 cHV0U3RyZWFtcyk7Cit9CisKK0F1ZGlvTWFuYWdlck9wZW5CU0Q6On5BdWRpb01hbmFnZXJPcGVu QlNEKCkgeworICBTaHV0ZG93bigpOworfQorCitBdWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5h Z2VyT3BlbkJTRDo6TWFrZUxpbmVhck91dHB1dFN0cmVhbSgKKyAgICBjb25zdCBBdWRpb1BhcmFt ZXRlcnMmIHBhcmFtcywKKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7Cisg IERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIsIHBhcmFtcy5mb3Jt YXQoKSk7CisgIHJldHVybiBNYWtlT3V0cHV0U3RyZWFtKHBhcmFtcyk7Cit9CisKK0F1ZGlvT3V0 cHV0U3RyZWFtKiBBdWRpb01hbmFnZXJPcGVuQlNEOjpNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVh bSgKKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICBjb25zdCBzdGQ6OnN0 cmluZyYgZGV2aWNlX2lkLAorICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsK KyAgRExPR19JRihFUlJPUiwgIWRldmljZV9pZC5lbXB0eSgpKSA8PCAiTm90IGltcGxlbWVudGVk ISI7CisgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwg cGFyYW1zLmZvcm1hdCgpKTsKKyAgcmV0dXJuIE1ha2VPdXRwdXRTdHJlYW0ocGFyYW1zKTsKK30K KworQXVkaW9JbnB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyT3BlbkJTRDo6TWFrZUxpbmVhcklucHV0 U3RyZWFtKAorICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgIGNvbnN0IHN0 ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFj aykgeworICBEQ0hFQ0tfRVEoQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJh bXMuZm9ybWF0KCkpOworICByZXR1cm4gTWFrZUlucHV0U3RyZWFtKHBhcmFtcyk7Cit9CisKK0F1 ZGlvSW5wdXRTdHJlYW0qIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Ok1ha2VMb3dMYXRlbmN5SW5wdXRT dHJlYW0oCisgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgY29uc3Qgc3Rk OjpzdHJpbmcmIGRldmljZV9pZCwKKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNr KSB7CisgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSwg cGFyYW1zLmZvcm1hdCgpKTsKKyAgcmV0dXJuIE1ha2VJbnB1dFN0cmVhbShwYXJhbXMpOworfQor CitBdWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2VyT3BlbkJTRDo6R2V0UHJlZmVycmVkT3V0cHV0 U3RyZWFtUGFyYW1ldGVycygKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9p ZCwKKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIGlucHV0X3BhcmFtcykgeworICAvLyBUT0RP KHRvbW1pKTogU3VwcG9ydCB8b3V0cHV0X2RldmljZV9pZHwuCisgIERMT0dfSUYoRVJST1IsICFv dXRwdXRfZGV2aWNlX2lkLmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50ZWQhIjsKKyAgc3RhdGlj IGNvbnN0IGludCBrRGVmYXVsdE91dHB1dEJ1ZmZlclNpemUgPSAyMDQ4OworCisgIENoYW5uZWxM YXlvdXQgY2hhbm5lbF9sYXlvdXQgPSBDSEFOTkVMX0xBWU9VVF9TVEVSRU87CisgIGludCBzYW1w bGVfcmF0ZSA9IGtEZWZhdWx0U2FtcGxlUmF0ZTsKKyAgaW50IGJ1ZmZlcl9zaXplID0ga0RlZmF1 bHRPdXRwdXRCdWZmZXJTaXplOworICBpZiAoaW5wdXRfcGFyYW1zLklzVmFsaWQoKSkgeworICAg IHNhbXBsZV9yYXRlID0gaW5wdXRfcGFyYW1zLnNhbXBsZV9yYXRlKCk7CisgICAgY2hhbm5lbF9s YXlvdXQgPSBpbnB1dF9wYXJhbXMuY2hhbm5lbF9sYXlvdXQoKTsKKyAgICBidWZmZXJfc2l6ZSA9 IHN0ZDo6bWluKGJ1ZmZlcl9zaXplLCBpbnB1dF9wYXJhbXMuZnJhbWVzX3Blcl9idWZmZXIoKSk7 CisgIH0KKworICBpbnQgdXNlcl9idWZmZXJfc2l6ZSA9IEdldFVzZXJCdWZmZXJTaXplKCk7Cisg IGlmICh1c2VyX2J1ZmZlcl9zaXplKQorICAgIGJ1ZmZlcl9zaXplID0gdXNlcl9idWZmZXJfc2l6 ZTsKKworICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJzKAorICAgICAgQXVkaW9QYXJhbWV0ZXJzOjpB VURJT19QQ01fTE9XX0xBVEVOQ1ksIGNoYW5uZWxfbGF5b3V0LAorICAgICAgc2FtcGxlX3JhdGUs IGJ1ZmZlcl9zaXplKTsKK30KKworQXVkaW9JbnB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyT3BlbkJT RDo6TWFrZUlucHV0U3RyZWFtKAorICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKSB7 CisgIERMT0coV0FSTklORykgPDwgIk1ha2VJbnB1dFN0cmVhbSI7CisgIHJldHVybiBuZXcgU25k aW9BdWRpb0lucHV0U3RyZWFtKHRoaXMsCisgICAgICAgICAgICAgQXVkaW9EZXZpY2VEZXNjcmlw dGlvbjo6a0RlZmF1bHREZXZpY2VJZCwgcGFyYW1zKTsKK30KKworQXVkaW9PdXRwdXRTdHJlYW0q IEF1ZGlvTWFuYWdlck9wZW5CU0Q6Ok1ha2VPdXRwdXRTdHJlYW0oCisgICAgY29uc3QgQXVkaW9Q YXJhbWV0ZXJzJiBwYXJhbXMpIHsKKyAgRExPRyhXQVJOSU5HKSA8PCAiTWFrZU91dHB1dFN0cmVh bSI7CisgIHJldHVybiBuZXcgU25kaW9BdWRpb091dHB1dFN0cmVhbShwYXJhbXMsIHRoaXMpOwor fQorCit9ICAvLyBuYW1lc3BhY2UgbWVkaWEKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24x My9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaCBiL3NyY3BrZ3MvZWxl Y3Ryb24xMy9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjhjOTlkYjk2NmQ2NQotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxlcy9hdWRpb19tYW5h Z2VyX29wZW5ic2QuaApAQCAtMCwwICsxLDY1IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhl IENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBz b3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJl CisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaWZuZGVmIE1FRElBX0FVRElPX09Q RU5CU0RfQVVESU9fTUFOQUdFUl9PUEVOQlNEX0hfCisjZGVmaW5lIE1FRElBX0FVRElPX09QRU5C U0RfQVVESU9fTUFOQUdFUl9PUEVOQlNEX0hfCisKKyNpbmNsdWRlIDxzZXQ+CisKKyNpbmNsdWRl ICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKyNp bmNsdWRlICJiYXNlL21lbW9yeS9yZWZfY291bnRlZC5oIgorI2luY2x1ZGUgImJhc2UvdGhyZWFk aW5nL3RocmVhZC5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFnZXJfYmFzZS5o IgorCituYW1lc3BhY2UgbWVkaWEgeworCitjbGFzcyBNRURJQV9FWFBPUlQgQXVkaW9NYW5hZ2Vy T3BlbkJTRCA6IHB1YmxpYyBBdWRpb01hbmFnZXJCYXNlIHsKKyBwdWJsaWM6CisgIEF1ZGlvTWFu YWdlck9wZW5CU0Qoc3RkOjp1bmlxdWVfcHRyPEF1ZGlvVGhyZWFkPiBhdWRpb190aHJlYWQsCisg ICAgICAgICAgICAgICAgICAgQXVkaW9Mb2dGYWN0b3J5KiBhdWRpb19sb2dfZmFjdG9yeSk7Cisg IH5BdWRpb01hbmFnZXJPcGVuQlNEKCkgb3ZlcnJpZGU7CisKKyAgLy8gSW1wbGVtZW50YXRpb24g b2YgQXVkaW9NYW5hZ2VyLgorICBib29sIEhhc0F1ZGlvT3V0cHV0RGV2aWNlcygpIG92ZXJyaWRl OworICBib29sIEhhc0F1ZGlvSW5wdXREZXZpY2VzKCkgb3ZlcnJpZGU7CisgIHZvaWQgR2V0QXVk aW9JbnB1dERldmljZU5hbWVzKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgb3ZlcnJp ZGU7CisgIHZvaWQgR2V0QXVkaW9PdXRwdXREZXZpY2VOYW1lcyhBdWRpb0RldmljZU5hbWVzKiBk ZXZpY2VfbmFtZXMpIG92ZXJyaWRlOworICBBdWRpb1BhcmFtZXRlcnMgR2V0SW5wdXRTdHJlYW1Q YXJhbWV0ZXJzKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCkgb3ZlcnJpZGU7 CisgIGNvbnN0IGNoYXIqIEdldE5hbWUoKSBvdmVycmlkZTsKKworICAvLyBJbXBsZW1lbnRhdGlv biBvZiBBdWRpb01hbmFnZXJCYXNlLgorICBBdWRpb091dHB1dFN0cmVhbSogTWFrZUxpbmVhck91 dHB1dFN0cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgICAg Y29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisgIEF1ZGlvT3V0cHV0 U3RyZWFtKiBNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlvUGFy YW1ldGVycyYgcGFyYW1zLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAg ICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOworICBBdWRpb0lu cHV0U3RyZWFtKiBNYWtlTGluZWFySW5wdXRTdHJlYW0oCisgICAgICBjb25zdCBBdWRpb1BhcmFt ZXRlcnMmIHBhcmFtcywKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisgICAg ICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKyAgQXVkaW9JbnB1 dFN0cmVhbSogTWFrZUxvd0xhdGVuY3lJbnB1dFN0cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlvUGFy YW1ldGVycyYgcGFyYW1zLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAg ICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOworCisgcHJvdGVj dGVkOgorICBBdWRpb1BhcmFtZXRlcnMgR2V0UHJlZmVycmVkT3V0cHV0U3RyZWFtUGFyYW1ldGVy cygKKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkLAorICAgICAgY29u c3QgQXVkaW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJhbXMpIG92ZXJyaWRlOworCisgcHJpdmF0ZToK KyAgLy8gQ2FsbGVkIGJ5IE1ha2VMaW5lYXJPdXRwdXRTdHJlYW0gYW5kIE1ha2VMb3dMYXRlbmN5 T3V0cHV0U3RyZWFtLgorICBBdWRpb091dHB1dFN0cmVhbSogTWFrZU91dHB1dFN0cmVhbShjb25z dCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcyk7CisgIEF1ZGlvSW5wdXRTdHJlYW0qIE1ha2VJbnB1 dFN0cmVhbShjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcyk7CisKKyAgRElTQUxMT1dfQ09Q WV9BTkRfQVNTSUdOKEF1ZGlvTWFuYWdlck9wZW5CU0QpOworfTsKKworfSAgLy8gbmFtZXNwYWNl IG1lZGlhCisKKyNlbmRpZiAgLy8gTUVESUFfQVVESU9fT1BFTkJTRF9BVURJT19NQU5BR0VSX09Q RU5CU0RfSF8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxl cy9zbmRpb19pbnB1dC5jYyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxlcy9z bmRpb19pbnB1dC5jYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVm NTQzOWI0OWEwNwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9z bmRpby1maWxlcy9zbmRpb19pbnB1dC5jYwpAQCAtMCwwICsxLDIwMCBAQAorLy8gQ29weXJpZ2h0 IDIwMTMgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ug b2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRo YXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSAiYmFz ZS9iaW5kLmgiCisjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAiYmFzZS9tYWNy b3MuaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL2F1ZGlvX3RpbWVzdGFtcF9oZWxwZXIuaCIKKyNp bmNsdWRlICJtZWRpYS9hdWRpby9vcGVuYnNkL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oIgorI2lu Y2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFnZXIuaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRp by9zbmRpby9zbmRpb19pbnB1dC5oIgorCituYW1lc3BhY2UgbWVkaWEgeworCitzdGF0aWMgY29u c3QgU2FtcGxlRm9ybWF0IGtTYW1wbGVGb3JtYXQgPSBrU2FtcGxlRm9ybWF0UzE2OworCit2b2lk IFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVs dGEpCit7CisgIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlv QXVkaW9JbnB1dFN0cmVhbSo+KGFyZyk7CisKKyAgc2VsZi0+aHdfZGVsYXkgKz0gZGVsdGE7Cit9 CisKK3ZvaWQgKlNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFkRW50cnkodm9pZCAqYXJnKSB7 CisgIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9J bnB1dFN0cmVhbSo+KGFyZyk7CisKKyAgc2VsZi0+VGhyZWFkTG9vcCgpOworICByZXR1cm4gTlVM TDsKK30KKworU25kaW9BdWRpb0lucHV0U3RyZWFtOjpTbmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVk aW9NYW5hZ2VyQmFzZSogbWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYg cGFyYW1zKQorICAgIDogbWFuYWdlcihtYW5hZ2VyKSwKKyAgICAgIHBhcmFtcyhwYXJhbXMpLAor ICAgICAgYXVkaW9fYnVzKEF1ZGlvQnVzOjpDcmVhdGUocGFyYW1zKSksCisgICAgICBzdGF0ZShr Q2xvc2VkKSB7Cit9CisKK1NuZGlvQXVkaW9JbnB1dFN0cmVhbTo6flNuZGlvQXVkaW9JbnB1dFN0 cmVhbSgpIHsKKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCisgICAgQ2xvc2UoKTsKK30KKworYm9v bCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06Ok9wZW4oKSB7CisgIHN0cnVjdCBzaW9fcGFyIHBhcjsK KyAgaW50IHNpZzsKKworICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKyAgICByZXR1cm4gZmFsc2U7 CisKKyAgaWYgKHBhcmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9M SU5FQVIgJiYKKyAgICAgIHBhcmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElP X1BDTV9MT1dfTEFURU5DWSkgeworICAgIExPRyhXQVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgYXVk aW8gZm9ybWF0LiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisKKyAgc2lvX2luaXRwYXIoJnBh cik7CisgIHBhci5yYXRlID0gcGFyYW1zLnNhbXBsZV9yYXRlKCk7CisgIHBhci5yY2hhbiA9IHBh cmFtcy5jaGFubmVscygpOworICBwYXIuYml0cyA9IFNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5u ZWwoa1NhbXBsZUZvcm1hdCk7CisgIHBhci5icHMgPSBwYXIuYml0cyAvIDg7CisgIHBhci5zaWcg PSBzaWcgPSBwYXIuYml0cyAhPSA4ID8gMSA6IDA7CisgIHBhci5sZSA9IFNJT19MRV9OQVRJVkU7 CisgIHBhci5hcHBidWZzeiA9IHBhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpOworCisgIGhkbCA9 IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19SRUMsIDApOworCisgIGlmIChoZGwgPT0gTlVMTCkg eworICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IG9wZW4gYXVkaW8gZGV2aWNlLiI7CisgICAg cmV0dXJuIGZhbHNlOworICB9CisKKyAgaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNp b19nZXRwYXIoaGRsLCAmcGFyKSkgeworICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBh dWRpbyBwYXJhbWV0ZXJzLiI7CisgICAgZ290byBiYWRfY2xvc2U7CisgIH0KKworICBpZiAocGFy LnJhdGUgICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLnNhbXBsZV9yYXRlKCkgfHwKKyAgICAgIHBh ci5yY2hhbiAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5jaGFubmVscygpIHx8CisgICAgICBwYXIu Yml0cyAgIT0gKHVuc2lnbmVkIGludClTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1w bGVGb3JtYXQpIHx8CisgICAgICBwYXIuc2lnICAgIT0gKHVuc2lnbmVkIGludClzaWcgfHwKKyAg ICAgIChwYXIuYnBzID4gMSAmJiBwYXIubGUgIT0gU0lPX0xFX05BVElWRSkgfHwKKyAgICAgIChw YXIuYml0cyAhPSBwYXIuYnBzICogOCkpIHsKKyAgICBMT0coRVJST1IpIDw8ICJVbnN1cHBvcnRl ZCBhdWRpbyBwYXJhbWV0ZXJzLiI7CisgICAgZ290byBiYWRfY2xvc2U7CisgIH0KKyAgc3RhdGUg PSBrU3RvcHBlZDsKKyAgYnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVzLT5mcmFtZXMoKSAqIHBh cmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKKyAgc2lvX29ubW92ZShoZGws ICZPbk1vdmVDYWxsYmFjaywgdGhpcyk7CisgIHJldHVybiB0cnVlOworYmFkX2Nsb3NlOgorICBz aW9fY2xvc2UoaGRsKTsKKyAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1 dFN0cmVhbTo6U3RhcnQoQXVkaW9JbnB1dENhbGxiYWNrKiBjYikgeworCisgIFN0YXJ0QWdjKCk7 CisKKyAgc3RhdGUgPSBrUnVubmluZzsKKyAgaHdfZGVsYXkgPSAwOworICBjYWxsYmFjayA9IGNi OworICBzaW9fc3RhcnQoaGRsKTsKKyAgaWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWQsIE5VTEws ICZUaHJlYWRFbnRyeSwgdGhpcykgIT0gMCkgeworICAgIExPRyhFUlJPUikgPDwgIkZhaWxlZCB0 byBjcmVhdGUgcmVhbC10aW1lIHRocmVhZCBmb3IgcmVjb3JkaW5nLiI7CisgICAgc2lvX3N0b3Ao aGRsKTsKKyAgICBzdGF0ZSA9IGtTdG9wcGVkOworICB9Cit9CisKK3ZvaWQgU25kaW9BdWRpb0lu cHV0U3RyZWFtOjpTdG9wKCkgeworCisgIGlmIChzdGF0ZSA9PSBrU3RvcHBlZCkKKyAgICByZXR1 cm47CisKKyAgc3RhdGUgPSBrU3RvcFdhaXQ7CisgIHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwp OworICBzaW9fc3RvcChoZGwpOworICBzdGF0ZSA9IGtTdG9wcGVkOworCisgIFN0b3BBZ2MoKTsK K30KKwordm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkNsb3NlKCkgeworCisgIGlmIChzdGF0 ZSA9PSBrQ2xvc2VkKQorICAgIHJldHVybjsKKworICBpZiAoc3RhdGUgPT0ga1J1bm5pbmcpCisg ICAgU3RvcCgpOworCisgIHN0YXRlID0ga0Nsb3NlZDsKKyAgZGVsZXRlIFtdIGJ1ZmZlcjsKKyAg c2lvX2Nsb3NlKGhkbCk7CisKKyAgbWFuYWdlci0+UmVsZWFzZUlucHV0U3RyZWFtKHRoaXMpOwor fQorCitkb3VibGUgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpHZXRNYXhWb2x1bWUoKSB7CisgIC8v IE5vdCBzdXBwb3J0ZWQKKyAgcmV0dXJuIDAuMDsKK30KKwordm9pZCBTbmRpb0F1ZGlvSW5wdXRT dHJlYW06OlNldFZvbHVtZShkb3VibGUgdm9sdW1lKSB7CisgIC8vIE5vdCBzdXBwb3J0ZWQuIERv IG5vdGhpbmcuCit9CisKK2RvdWJsZSBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkdldFZvbHVtZSgp IHsKKyAgLy8gTm90IHN1cHBvcnRlZC4KKyAgcmV0dXJuIDAuMDsKK30KKworYm9vbCBTbmRpb0F1 ZGlvSW5wdXRTdHJlYW06OklzTXV0ZWQoKSB7CisgIC8vIE5vdCBzdXBwb3J0ZWQuCisgIHJldHVy biBmYWxzZTsKK30KKwordm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNldE91dHB1dERldmlj ZUZvckFlYygKKyAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9pZCkgeworICAv LyBOb3Qgc3VwcG9ydGVkLgorfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6VGhyZWFk TG9vcCh2b2lkKSB7CisgIHNpemVfdCB0b2RvLCBuOworICBjaGFyICpkYXRhOworICB1bnNpZ25l ZCBpbnQgbmZyYW1lczsKKyAgZG91YmxlIG5vcm1hbGl6ZWRfdm9sdW1lID0gMC4wOworCisgIG5m cmFtZXMgPSBhdWRpb19idXMtPmZyYW1lcygpOworCisgIHdoaWxlIChzdGF0ZSA9PSBrUnVubmlu ZyAmJiAhc2lvX2VvZihoZGwpKSB7CisKKyAgICBHZXRBZ2NWb2x1bWUoJm5vcm1hbGl6ZWRfdm9s dW1lKTsKKworICAgIC8vIHJlYWQgb25lIGJsb2NrCisgICAgdG9kbyA9IG5mcmFtZXMgKiBwYXJh bXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KTsKKyAgICBkYXRhID0gYnVmZmVyOwor ICAgIHdoaWxlICh0b2RvID4gMCkgeworICAgICAgbiA9IHNpb19yZWFkKGhkbCwgZGF0YSwgdG9k byk7CisgICAgICBpZiAobiA9PSAwKQorICAgICAgICByZXR1cm47CS8vIHVucmVjb3ZlcmFibGUg SS9PIGVycm9yCisgICAgICB0b2RvIC09IG47CisgICAgICBkYXRhICs9IG47CisgICAgfQorICAg IGh3X2RlbGF5IC09IG5mcmFtZXM7CisKKyAgICAvLyBjb252ZXJ0IGZyYW1lcyBjb3VudCB0byBU aW1lRGVsdGEKKyAgICBjb25zdCBiYXNlOjpUaW1lRGVsdGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFt cEhlbHBlcjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAorICAgICAgcGFyYW1zLnNhbXBsZV9yYXRl KCkpOworCisgICAgLy8gcHVzaCBpbnRvIGJ1cworICAgIGF1ZGlvX2J1cy0+RnJvbUludGVybGVh dmVkKGJ1ZmZlciwgbmZyYW1lcywgU2FtcGxlRm9ybWF0VG9CeXRlc1BlckNoYW5uZWwoa1NhbXBs ZUZvcm1hdCkpOworCisgICAgLy8gaW52b2tlIGNhbGxiYWNrCisgICAgY2FsbGJhY2stPk9uRGF0 YShhdWRpb19idXMuZ2V0KCksIGJhc2U6OlRpbWVUaWNrczo6Tm93KCkgLSBkZWxheSwgMS4pOwor ICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBtZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmggYi9zcmNwa2dzL2VsZWN0cm9u MTMvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5wdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLmQ4NjhlMDQ2OWRiNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5oCkBAIC0wLDAgKzEs OTEgQEAKKy8vIENvcHlyaWdodCAyMDEzIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRz IHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBC U0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmls ZS4KKworI2lmbmRlZiBNRURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXworI2RlZmluZSBN RURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+Cisj aW5jbHVkZSA8c3RyaW5nPgorI2luY2x1ZGUgPHNuZGlvLmg+CisKKyNpbmNsdWRlICJiYXNlL2Nv bXBpbGVyX3NwZWNpZmljLmgiCisjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKyNpbmNsdWRlICJi YXNlL21lbW9yeS93ZWFrX3B0ci5oIgorI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCisjaW5j bHVkZSAibWVkaWEvYXVkaW8vYWdjX2F1ZGlvX3N0cmVhbS5oIgorI2luY2x1ZGUgIm1lZGlhL2F1 ZGlvL2F1ZGlvX2lvLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fZGV2aWNlX2Rlc2Ny aXB0aW9uLmgiCisjaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb19wYXJhbWV0ZXJzLmgiCisKK25h bWVzcGFjZSBtZWRpYSB7CisKK2NsYXNzIEF1ZGlvTWFuYWdlckJhc2U7CisKKy8vIEltcGxlbWVu dGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtIHVzaW5nIHNuZGlvKDcpCitjbGFzcyBTbmRpb0F1 ZGlvSW5wdXRTdHJlYW0gOiBwdWJsaWMgQWdjQXVkaW9TdHJlYW08QXVkaW9JbnB1dFN0cmVhbT4g eworIHB1YmxpYzoKKyAgLy8gUGFzcyB0aGlzIHRvIHRoZSBjb25zdHJ1Y3RvciBpZiB5b3Ugd2Fu dCB0byBhdHRlbXB0IGF1dG8tc2VsZWN0aW9uCisgIC8vIG9mIHRoZSBhdWRpbyByZWNvcmRpbmcg ZGV2aWNlLgorICBzdGF0aWMgY29uc3QgY2hhciBrQXV0b1NlbGVjdERldmljZVtdOworCisgIC8v IENyZWF0ZSBhIFBDTSBPdXRwdXQgc3RyZWFtIGZvciB0aGUgU05ESU8gZGV2aWNlIGlkZW50aWZp ZWQgYnkKKyAgLy8gfGRldmljZV9uYW1lfC4gSWYgdW5zdXJlIG9mIHdoYXQgdG8gdXNlIGZvciB8 ZGV2aWNlX25hbWV8LCB1c2UKKyAgLy8gfGtBdXRvU2VsZWN0RGV2aWNlfC4KKyAgU25kaW9BdWRp b0lucHV0U3RyZWFtKEF1ZGlvTWFuYWdlckJhc2UqIGF1ZGlvX21hbmFnZXIsCisgICAgICAgICAg ICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX25hbWUsCisgICAgICAgICAgICAg ICAgICAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcyk7CisKKyAgflNuZGlvQXVkaW9J bnB1dFN0cmVhbSgpIG92ZXJyaWRlOworCisgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvSW5w dXRTdHJlYW0uCisgIGJvb2wgT3BlbigpIG92ZXJyaWRlOworICB2b2lkIFN0YXJ0KEF1ZGlvSW5w dXRDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOworICB2b2lkIFN0b3AoKSBvdmVycmlkZTsK KyAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOworICBkb3VibGUgR2V0TWF4Vm9sdW1lKCkgb3ZlcnJp ZGU7CisgIHZvaWQgU2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIG92ZXJyaWRlOworICBkb3VibGUg R2V0Vm9sdW1lKCkgb3ZlcnJpZGU7CisgIGJvb2wgSXNNdXRlZCgpIG92ZXJyaWRlOworICB2b2lk IFNldE91dHB1dERldmljZUZvckFlYyhjb25zdCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9p ZCkgb3ZlcnJpZGU7CisKKyBwcml2YXRlOgorCisgIGVudW0gU3RyZWFtU3RhdGUgeworICAgIGtD bG9zZWQsICAgICAgICAgICAgLy8gTm90IG9wZW5lZCB5ZXQKKyAgICBrU3RvcHBlZCwgICAgICAg ICAgIC8vIERldmljZSBvcGVuZWQsIGJ1dCBub3Qgc3RhcnRlZCB5ZXQKKyAgICBrUnVubmluZywg ICAgICAgICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBwbGF5aW5nCisgICAga1N0b3BXYWl0ICAgICAg ICAgICAvLyBTdG9wcGluZywgd2FpdGluZyBmb3IgdGhlIHJlYWwtdGltZSB0aHJlYWQgdG8gZXhp dAorICB9OworCisgIC8vIEMtc3R5bGUgY2FsbC1iYWNrcworICBzdGF0aWMgdm9pZCBPbk1vdmVD YWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSk7CisgIHN0YXRpYyB2b2lkKiBUaHJlYWRFbnRy eSh2b2lkICphcmcpOworCisgIC8vIENvbnRpbnVvdXNseSBtb3ZlcyBkYXRhIGZyb20gdGhlIGRl dmljZSB0byB0aGUgY29uc3VtZXIKKyAgdm9pZCBUaHJlYWRMb29wKCk7CisgIC8vIE91ciBjcmVh dG9yLCB0aGUgYXVkaW8gbWFuYWdlciBuZWVkcyB0byBiZSBub3RpZmllZCB3aGVuIHdlIGNsb3Nl LgorICBBdWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyOworICAvLyBQYXJhbWV0ZXJzIG9mIHRoZSBz b3VyY2UKKyAgQXVkaW9QYXJhbWV0ZXJzIHBhcmFtczsKKyAgLy8gV2Ugc3RvcmUgZGF0YSBoZXJl IGZvciBjb25zdW1lcgorICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdXM+IGF1ZGlvX2J1czsKKyAg Ly8gQ2FsbC1iYWNrIHRoYXQgY29uc3VtZXMgcmVjb3JkZWQgZGF0YQorICBBdWRpb0lucHV0Q2Fs bGJhY2sqIGNhbGxiYWNrOyAgLy8gVmFsaWQgZHVyaW5nIGEgcmVjb3JkaW5nIHNlc3Npb24uCisg IC8vIEhhbmRsZSBvZiB0aGUgYXVkaW8gZGV2aWNlCisgIHN0cnVjdCBzaW9faGRsKiBoZGw7Cisg IC8vIEN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0cmVhbQorICBlbnVtIFN0cmVhbVN0YXRlIHN0YXRl OworICAvLyBIaWdoIHByaW9yaXR5IHRocmVhZCBydW5uaW5nIFRocmVhZExvb3AoKQorICBwdGhy ZWFkX3QgdGhyZWFkOworICAvLyBOdW1iZXIgb2YgZnJhbWVzIGJ1ZmZlcmVkIGluIHRoZSBoYXJk d2FyZQorICBpbnQgaHdfZGVsYXk7CisgIC8vIFRlbXBvcmFyeSBidWZmZXIgd2hlcmUgZGF0YSBp cyBzdG9yZWQgc25kaW8tY29tcGF0aWJsZSBmb3JtYXQKKyAgY2hhciogYnVmZmVyOworCisgIERJ U0FMTE9XX0NPUFlfQU5EX0FTU0lHTihTbmRpb0F1ZGlvSW5wdXRTdHJlYW0pOworfTsKKworfSAg Ly8gbmFtZXNwYWNlIG1lZGlhCisKKyNlbmRpZiAgLy8gTUVESUFfQVVESU9fU05ESU9fU05ESU9f SU5QVVRfSF8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1maWxl cy9zbmRpb19vdXRwdXQuY2MgYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tZmlsZXMv c25kaW9fb3V0cHV0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u YTY3MTlmOWFhYzhkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVz L3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5jYwpAQCAtMCwwICsxLDE4MyBAQAorLy8gQ29weXJp Z2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGlj ZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2luY2x1 ZGUgImJhc2UvbG9nZ2luZy5oIgorI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCisjaW5jbHVk ZSAiYmFzZS90aW1lL2RlZmF1bHRfdGlja19jbG9jay5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlv L2F1ZGlvX21hbmFnZXJfYmFzZS5oIgorI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fdGltZXN0 YW1wX2hlbHBlci5oIgorI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5o IgorCituYW1lc3BhY2UgbWVkaWEgeworCitzdGF0aWMgY29uc3QgU2FtcGxlRm9ybWF0IGtTYW1w bGVGb3JtYXQgPSBrU2FtcGxlRm9ybWF0UzE2OworCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJl YW06Ok9uTW92ZUNhbGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKSB7CisgIFNuZGlvQXVkaW9P dXRwdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKj4o YXJnKTsKKworICBzZWxmLT5od19kZWxheSAtPSBkZWx0YTsKK30KKwordm9pZCBTbmRpb0F1ZGlv T3V0cHV0U3RyZWFtOjpPblZvbENhbGxiYWNrKHZvaWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCkg eworICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRp b091dHB1dFN0cmVhbSo+KGFyZyk7CisKKyAgc2VsZi0+dm9sID0gdm9sOworfQorCit2b2lkICpT bmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpUaHJlYWRFbnRyeSh2b2lkICphcmcpIHsKKyAgU25kaW9B dWRpb091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJl YW0qPihhcmcpOworCisgIHNlbGYtPlRocmVhZExvb3AoKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisK K1NuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlNuZGlvQXVkaW9PdXRwdXRTdHJlYW0oY29uc3QgQXVk aW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXIpCisgICAgOiBtYW5hZ2VyKG1h bmFnZXIpLAorICAgICAgcGFyYW1zKHBhcmFtcyksCisgICAgICBhdWRpb19idXMoQXVkaW9CdXM6 OkNyZWF0ZShwYXJhbXMpKSwKKyAgICAgIHN0YXRlKGtDbG9zZWQpLAorICAgICAgbXV0ZXgoUFRI UkVBRF9NVVRFWF9JTklUSUFMSVpFUikgeworfQorCitTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjp+ U25kaW9BdWRpb091dHB1dFN0cmVhbSgpIHsKKyAgaWYgKHN0YXRlICE9IGtDbG9zZWQpCisgICAg Q2xvc2UoKTsKK30KKworYm9vbCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpPcGVuKCkgeworICBz dHJ1Y3Qgc2lvX3BhciBwYXI7CisgIGludCBzaWc7CisKKyAgaWYgKHBhcmFtcy5mb3JtYXQoKSAh PSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIgJiYKKyAgICAgIHBhcmFtcy5mb3Jt YXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MT1dfTEFURU5DWSkgeworICAgIExP RyhXQVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gZm9ybWF0LiI7CisgICAgcmV0dXJuIGZh bHNlOworICB9CisgIHNpb19pbml0cGFyKCZwYXIpOworICBwYXIucmF0ZSA9IHBhcmFtcy5zYW1w bGVfcmF0ZSgpOworICBwYXIucGNoYW4gPSBwYXJhbXMuY2hhbm5lbHMoKTsKKyAgcGFyLmJpdHMg PSBTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVGb3JtYXQpOworICBwYXIuYnBz ID0gcGFyLmJpdHMgLyA4OworICBwYXIuc2lnID0gc2lnID0gcGFyLmJpdHMgIT0gOCA/IDEgOiAw OworICBwYXIubGUgPSBTSU9fTEVfTkFUSVZFOworICBwYXIuYXBwYnVmc3ogPSBwYXJhbXMuZnJh bWVzX3Blcl9idWZmZXIoKTsKKworICBoZGwgPSBzaW9fb3BlbihTSU9fREVWQU5ZLCBTSU9fUExB WSwgMCk7CisgIGlmIChoZGwgPT0gTlVMTCkgeworICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0 IG9wZW4gYXVkaW8gZGV2aWNlLiI7CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIGlmICghc2lv X3NldHBhcihoZGwsICZwYXIpIHx8ICFzaW9fZ2V0cGFyKGhkbCwgJnBhcikpIHsKKyAgICBMT0co RVJST1IpIDw8ICJDb3VsZG4ndCBzZXQgYXVkaW8gcGFyYW1ldGVycy4iOworICAgIGdvdG8gYmFk X2Nsb3NlOworICB9CisgIGlmIChwYXIucmF0ZSAgIT0gKHVuc2lnbmVkIGludClwYXJhbXMuc2Ft cGxlX3JhdGUoKSB8fAorICAgICAgcGFyLnBjaGFuICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLmNo YW5uZWxzKCkgfHwKKyAgICAgIHBhci5iaXRzICAhPSAodW5zaWduZWQgaW50KVNhbXBsZUZvcm1h dFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCkgfHwKKyAgICAgIHBhci5zaWcgICAhPSAo dW5zaWduZWQgaW50KXNpZyB8fAorICAgICAgKHBhci5icHMgPiAxICYmIHBhci5sZSAhPSBTSU9f TEVfTkFUSVZFKSB8fAorICAgICAgKHBhci5iaXRzICE9IHBhci5icHMgKiA4KSkgeworICAgIExP RyhFUlJPUikgPDwgIlVuc3VwcG9ydGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKKyAgICBnb3RvIGJh ZF9jbG9zZTsKKyAgfQorICBzdGF0ZSA9IGtTdG9wcGVkOworICB2b2xwZW5kaW5nID0gMDsKKyAg dm9sID0gMDsKKyAgYnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVzLT5mcmFtZXMoKSAqIHBhcmFt cy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKKyAgc2lvX29ubW92ZShoZGwsICZP bk1vdmVDYWxsYmFjaywgdGhpcyk7CisgIHNpb19vbnZvbChoZGwsICZPblZvbENhbGxiYWNrLCB0 aGlzKTsKKyAgcmV0dXJuIHRydWU7CisgYmFkX2Nsb3NlOgorICBzaW9fY2xvc2UoaGRsKTsKKyAg cmV0dXJuIGZhbHNlOworfQorCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkNsb3NlKCkg eworICBpZiAoc3RhdGUgPT0ga0Nsb3NlZCkKKyAgICByZXR1cm47CisgIGlmIChzdGF0ZSA9PSBr UnVubmluZykKKyAgICBTdG9wKCk7CisgIHN0YXRlID0ga0Nsb3NlZDsKKyAgZGVsZXRlIFtdIGJ1 ZmZlcjsKKyAgc2lvX2Nsb3NlKGhkbCk7CisgIG1hbmFnZXItPlJlbGVhc2VPdXRwdXRTdHJlYW0o dGhpcyk7ICAvLyBDYWxscyB0aGUgZGVzdHJ1Y3RvcgorfQorCit2b2lkIFNuZGlvQXVkaW9PdXRw dXRTdHJlYW06OlN0YXJ0KEF1ZGlvU291cmNlQ2FsbGJhY2sqIGNhbGxiYWNrKSB7CisgIHN0YXRl ID0ga1J1bm5pbmc7CisgIGh3X2RlbGF5ID0gMDsKKyAgc291cmNlID0gY2FsbGJhY2s7CisgIHNp b19zdGFydChoZGwpOworICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVMTCwgJlRocmVh ZEVudHJ5LCB0aGlzKSAhPSAwKSB7CisgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGNyZWF0 ZSByZWFsLXRpbWUgdGhyZWFkLiI7CisgICAgc2lvX3N0b3AoaGRsKTsKKyAgICBzdGF0ZSA9IGtT dG9wcGVkOworICB9Cit9CisKK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U3RvcCgpIHsK KyAgaWYgKHN0YXRlID09IGtTdG9wcGVkKQorICAgIHJldHVybjsKKyAgc3RhdGUgPSBrU3RvcFdh aXQ7CisgIHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpOworICBzaW9fc3RvcChoZGwpOworICBz dGF0ZSA9IGtTdG9wcGVkOworfQorCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlNldFZv bHVtZShkb3VibGUgdikgeworICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKKyAgdm9sID0g diAqIFNJT19NQVhWT0w7CisgIHZvbHBlbmRpbmcgPSAxOworICBwdGhyZWFkX211dGV4X3VubG9j aygmbXV0ZXgpOworfQorCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkdldFZvbHVtZShk b3VibGUqIHYpIHsKKyAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCk7CisgICp2ID0gdm9sICog KDEuIC8gU0lPX01BWFZPTCk7CisgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7Cit9CisK Ky8vIFRoaXMgc3RyZWFtIGlzIGFsd2F5cyB1c2VkIHdpdGggc3ViIHNlY29uZCBidWZmZXIgc2l6 ZXMsIHdoZXJlIGl0J3MKKy8vIHN1ZmZpY2llbnQgdG8gc2ltcGx5IGFsd2F5cyBmbHVzaCB1cG9u IFN0YXJ0KCkuCit2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkZsdXNoKCkge30KKwordm9p ZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpUaHJlYWRMb29wKHZvaWQpIHsKKyAgaW50IGF2YWls LCBjb3VudCwgcmVzdWx0OworCisgIHdoaWxlIChzdGF0ZSA9PSBrUnVubmluZykgeworICAgIC8v IFVwZGF0ZSB2b2x1bWUgaWYgbmVlZGVkCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCk7 CisgICAgaWYgKHZvbHBlbmRpbmcpIHsKKyAgICAgIHZvbHBlbmRpbmcgPSAwOworICAgICAgc2lv X3NldHZvbChoZGwsIHZvbCk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRl eCk7CisKKyAgICAvLyBHZXQgZGF0YSB0byBwbGF5CisgICAgY29uc3QgYmFzZTo6VGltZURlbHRh IGRlbGF5ID0gQXVkaW9UaW1lc3RhbXBIZWxwZXI6OkZyYW1lc1RvVGltZShod19kZWxheSwKKwlw YXJhbXMuc2FtcGxlX3JhdGUoKSk7CisgICAgY291bnQgPSBzb3VyY2UtPk9uTW9yZURhdGEoZGVs YXksIGJhc2U6OlRpbWVUaWNrczo6Tm93KCksIDAsIGF1ZGlvX2J1cy5nZXQoKSk7CisgICAgYXVk aW9fYnVzLT5Ub0ludGVybGVhdmVkKGNvdW50LCBTYW1wbGVGb3JtYXRUb0J5dGVzUGVyQ2hhbm5l bChrU2FtcGxlRm9ybWF0KSwgYnVmZmVyKTsKKyAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAg Ly8gV2UgaGF2ZSB0byBzdWJtaXQgc29tZXRoaW5nIHRvIHRoZSBkZXZpY2UKKyAgICAgIGNvdW50 ID0gYXVkaW9fYnVzLT5mcmFtZXMoKTsKKyAgICAgIG1lbXNldChidWZmZXIsIDAsIGNvdW50ICog cGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCkpOworICAgICAgTE9HKFdBUk5J TkcpIDw8ICJObyBkYXRhIHRvIHBsYXksIHJ1bm5pbmcgZW1wdHkgY3ljbGUuIjsKKyAgICB9CisK KyAgICAvLyBTdWJtaXQgZGF0YSB0byB0aGUgZGV2aWNlCisgICAgYXZhaWwgPSBjb3VudCAqIHBh cmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpOworICAgIHJlc3VsdCA9IHNpb193 cml0ZShoZGwsIGJ1ZmZlciwgYXZhaWwpOworICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAg TE9HKFdBUk5JTkcpIDw8ICJBdWRpbyBkZXZpY2UgZGlzY29ubmVjdGVkLiI7CisgICAgICBicmVh azsKKyAgICB9CisKKyAgICAvLyBVcGRhdGUgaGFyZHdhcmUgcG9pbnRlcgorICAgIGh3X2RlbGF5 ICs9IGNvdW50OworICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBtZWRpYQpkaWZmIC0tZ2l0IGEv c3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5oIGIvc3Jj cGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWFkMjIwY2E5NmU3Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1 dC5oCkBAIC0wLDAgKzEsODYgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hyb21pdW0g QXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2Rl IGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKy8vIGZvdW5k IGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpZm5kZWYgTUVESUFfQVVESU9fU05ESU9fU05ESU9f T1VUUFVUX0hfCisjZGVmaW5lIE1FRElBX0FVRElPX1NORElPX1NORElPX09VVFBVVF9IXworCisj aW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPHNuZGlvLmg+CisKKyNpbmNsdWRlICJiYXNl L3RpbWUvdGlja19jbG9jay5oIgorI2luY2x1ZGUgImJhc2UvdGltZS90aW1lLmgiCisjaW5jbHVk ZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKKworbmFtZXNwYWNlIG1lZGlhIHsKKworY2xhc3Mg QXVkaW9NYW5hZ2VyQmFzZTsKKworLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJl YW0gdXNpbmcgc25kaW8oNykKK2NsYXNzIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0gOiBwdWJsaWMg QXVkaW9PdXRwdXRTdHJlYW0geworIHB1YmxpYzoKKyAgLy8gVGhlIG1hbmFnZXIgaXMgY3JlYXRp bmcgdGhpcyBvYmplY3QKKyAgU25kaW9BdWRpb091dHB1dFN0cmVhbShjb25zdCBBdWRpb1BhcmFt ZXRlcnMmIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXJCYXNl KiBtYW5hZ2VyKTsKKyAgdmlydHVhbCB+U25kaW9BdWRpb091dHB1dFN0cmVhbSgpOworCisgIC8v IEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvT3V0cHV0U3RyZWFtLgorICBib29sIE9wZW4oKSBvdmVy cmlkZTsKKyAgdm9pZCBDbG9zZSgpIG92ZXJyaWRlOworICB2b2lkIFN0YXJ0KEF1ZGlvU291cmNl Q2FsbGJhY2sqIGNhbGxiYWNrKSBvdmVycmlkZTsKKyAgdm9pZCBTdG9wKCkgb3ZlcnJpZGU7Cisg IHZvaWQgU2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIG92ZXJyaWRlOworICB2b2lkIEdldFZvbHVt ZShkb3VibGUqIHZvbHVtZSkgb3ZlcnJpZGU7CisgIHZvaWQgRmx1c2goKSBvdmVycmlkZTsKKwor ICBmcmllbmQgdm9pZCBzbmRpb19vbm1vdmUodm9pZCAqYXJnLCBpbnQgZGVsdGEpOworICBmcmll bmQgdm9pZCBzbmRpb19vbnZvbCh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpOworICBmcmll bmQgdm9pZCAqc25kaW9fdGhyZWFkc3RhcnQodm9pZCAqYXJnKTsKKworIHByaXZhdGU6CisgIGVu dW0gU3RyZWFtU3RhdGUgeworICAgIGtDbG9zZWQsICAgICAgICAgICAgLy8gTm90IG9wZW5lZCB5 ZXQKKyAgICBrU3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBvcGVuZWQsIGJ1dCBub3Qgc3Rh cnRlZCB5ZXQKKyAgICBrUnVubmluZywgICAgICAgICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBwbGF5 aW5nCisgICAga1N0b3BXYWl0ICAgICAgICAgICAvLyBTdG9wcGluZywgd2FpdGluZyBmb3IgdGhl IHJlYWwtdGltZSB0aHJlYWQgdG8gZXhpdAorICB9OworCisgIC8vIEMtc3R5bGUgY2FsbC1iYWNr cworICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSk7Cisg IHN0YXRpYyB2b2lkIE9uVm9sQ2FsbGJhY2sodm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9sKTsK KyAgc3RhdGljIHZvaWQqIFRocmVhZEVudHJ5KHZvaWQgKmFyZyk7CisKKyAgLy8gQ29udGludW91 c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUgcHJvZHVjZXIgdG8gdGhlIGRldmljZQorICB2b2lkIFRo cmVhZExvb3Aodm9pZCk7CisKKyAgLy8gT3VyIGNyZWF0b3IsIHRoZSBhdWRpbyBtYW5hZ2VyIG5l ZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xvc2UuCisgIEF1ZGlvTWFuYWdlckJhc2UqIG1h bmFnZXI7CisgIC8vIFBhcmFtZXRlcnMgb2YgdGhlIHNvdXJjZQorICBBdWRpb1BhcmFtZXRlcnMg cGFyYW1zOworICAvLyBTb3VyY2Ugc3RvcmVzIGRhdGEgaGVyZQorICBzdGQ6OnVuaXF1ZV9wdHI8 QXVkaW9CdXM+IGF1ZGlvX2J1czsKKyAgLy8gQ2FsbC1iYWNrIHRoYXQgcHJvZHVjZXMgZGF0YSB0 byBwbGF5CisgIEF1ZGlvU291cmNlQ2FsbGJhY2sqIHNvdXJjZTsKKyAgLy8gSGFuZGxlIG9mIHRo ZSBhdWRpbyBkZXZpY2UKKyAgc3RydWN0IHNpb19oZGwqIGhkbDsKKyAgLy8gQ3VycmVudCBzdGF0 ZSBvZiB0aGUgc3RyZWFtCisgIGVudW0gU3RyZWFtU3RhdGUgc3RhdGU7CisgIC8vIEhpZ2ggcHJp b3JpdHkgdGhyZWFkIHJ1bm5pbmcgVGhyZWFkTG9vcCgpCisgIHB0aHJlYWRfdCB0aHJlYWQ7Cisg IC8vIFByb3RlY3RzIHZvbCwgdm9scGVuZGluZyBhbmQgaHdfZGVsYXkKKyAgcHRocmVhZF9tdXRl eF90IG11dGV4OworICAvLyBDdXJyZW50IHZvbHVtZSBpbiB0aGUgMC4uU0lPX01BWFZPTCByYW5n ZQorICBpbnQgdm9sOworICAvLyBTZXQgdG8gMSBpZiB2b2x1bWVzIG11c3QgYmUgcmVmcmVzaGVk IGluIHRoZSByZWFsdGltZSB0aHJlYWQKKyAgaW50IHZvbHBlbmRpbmc7CisgIC8vIE51bWJlciBv ZiBmcmFtZXMgYnVmZmVyZWQgaW4gdGhlIGhhcmR3YXJlCisgIGludCBod19kZWxheTsKKyAgLy8g VGVtcG9yYXJ5IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1jb21wYXRpYmxlIGZv cm1hdAorICBjaGFyKiBidWZmZXI7CisKKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNuZGlv QXVkaW9PdXRwdXRTdHJlYW0pOworfTsKKworfSAgLy8gbmFtZXNwYWNlIG1lZGlhCisKKyNlbmRp ZiAgLy8gTUVESUFfQVVESU9fU05ESU9fU05ESU9fT1VUUFVUX0hfCmRpZmYgLS1naXQgYS9zcmNw a2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9tZWRpYV9hdWRpb19saW51eF9hdWRp b19tYW5hZ2VyX2xpbnV4LmNjLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlv LXBhdGNoZXMvbWVkaWFfYXVkaW9fbGludXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmNmOGU4MWIxMWQ2NwotLS0g L2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMy9maWxlcy9zbmRpby1wYXRjaGVzL21l ZGlhX2F1ZGlvX2xpbnV4X2F1ZGlvX21hbmFnZXJfbGludXguY2MucGF0Y2gKQEAgLTAsMCArMSw0 MyBAQAorZGlmZiAtLWdpdCBhL2Nocm9taXVtL21lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFn ZXJfbGludXguY2MgYi9jaHJvbWl1bS9tZWRpYS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xp bnV4LmNjCitpbmRleCA1ZDcwMzU0OTM3Mi4uOWU2MGI0MGM3NDkgMTAwNjQ0CistLS0gbWVkaWEv YXVkaW8vbGludXgvYXVkaW9fbWFuYWdlcl9saW51eC5jYworKysrIG1lZGlhL2F1ZGlvL2xpbnV4 L2F1ZGlvX21hbmFnZXJfbGludXguY2MKK0BAIC0yMCw2ICsyMCwxMCBAQAorICNpbmNsdWRlICJt ZWRpYS9hdWRpby9wdWxzZS9hdWRpb19tYW5hZ2VyX3B1bHNlLmgiCisgI2luY2x1ZGUgIm1lZGlh L2F1ZGlvL3B1bHNlL3B1bHNlX3V0aWwuaCIKKyAjZW5kaWYKKysjaWYgZGVmaW5lZChVU0VfU05E SU8pCisrI2luY2x1ZGUgPHNuZGlvLmg+CisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL29wZW5ic2Qv YXVkaW9fbWFuYWdlcl9vcGVuYnNkLmgiCisrI2VuZGlmCisgCisgbmFtZXNwYWNlIG1lZGlhIHsK KyAKK0BAIC0yNyw3ICszMSw4IEBAIGVudW0gTGludXhBdWRpb0lPIHsKKyAgIGtQdWxzZSwKKyAg IGtBbHNhLAorICAga0NyYXMsCistICBrQXVkaW9JT01heCA9IGtDcmFzICAvLyBNdXN0IGFsd2F5 cyBiZSBlcXVhbCB0byBsYXJnZXN0IGxvZ2dlZCBlbnRyeS4KKysgIGtTbmRpbywKKysgIGtBdWRp b0lPTWF4ID0ga1NuZGlvICAvLyBNdXN0IGFsd2F5cyBiZSBlcXVhbCB0byBsYXJnZXN0IGxvZ2dl ZCBlbnRyeS4KKyB9OworIAorIHN0ZDo6dW5pcXVlX3B0cjxtZWRpYTo6QXVkaW9NYW5hZ2VyPiBD cmVhdGVBdWRpb01hbmFnZXIoCitAQCAtNDEsNiArNDYsMTcgQEAgc3RkOjp1bmlxdWVfcHRyPG1l ZGlhOjpBdWRpb01hbmFnZXI+IENyZWF0ZUF1ZGlvTWFuYWdlcigKKyAgIH0KKyAjZW5kaWYKKyAK KysjaWYgZGVmaW5lZChVU0VfU05ESU8pCisrICBzdHJ1Y3Qgc2lvX2hkbCAqIGhkbCA9IE5VTEw7 CisrICBpZiAoKGhkbD1zaW9fb3BlbihTSU9fREVWQU5ZLCBTSU9fUExBWSwgMSkpICE9IE5VTEwp IHsKKysgICAgc2lvX2Nsb3NlKGhkbCk7CisrICAgIFVNQV9ISVNUT0dSQU1fRU5VTUVSQVRJT04o Ik1lZGlhLkxpbnV4QXVkaW9JTyIsIGtTbmRpbywga0F1ZGlvSU9NYXggKzEpOworKyAgICByZXR1 cm4gc3RkOjptYWtlX3VuaXF1ZTxBdWRpb01hbmFnZXJPcGVuQlNEPihzdGQ6Om1vdmUoYXVkaW9f dGhyZWFkKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGF1ZGlvX2xvZ19mYWN0b3J5KTsKKysgIH0KKysgIERWTE9HKDEpIDw8ICJTbmRpbyBpcyBub3Qg YXZhaWxhYmxlIG9uIHRoZSBPUyI7CisrI2VuZGlmCisrCisgI2lmIGRlZmluZWQoVVNFX1BVTFNF QVVESU8pCisgICBwYV90aHJlYWRlZF9tYWlubG9vcCogcGFfbWFpbmxvb3AgPSBudWxscHRyOwor ICAgcGFfY29udGV4dCogcGFfY29udGV4dCA9IG51bGxwdHI7CmRpZmYgLS1naXQgYS9zcmNwa2dz L2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVk aWFfQlVJTEQuZ24ucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hl cy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfQlVJTEQuZ24ucGF0Y2gKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYzYwNDAwMjY2ODgKLS0tIC9kZXYvbnVsbAor KysgYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlf Y2hyb21pdW1fbWVkaWFfQlVJTEQuZ24ucGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorLS0tIG1lZGlh L0JVSUxELmduCTIwMjAtMDMtMjQgMTA6MTY6MzAuMDAwMDAwMDAwICswMTAwCisrKysgLQkyMDIw LTA0LTA2IDE0OjMyOjI3Ljk2MDgxNzUxMyArMDIwMAorQEAgLTY1LDYgKzY1LDkgQEAKKyAgIGlm ICh1c2VfY3JhcykgeworICAgICBkZWZpbmVzICs9IFsgIlVTRV9DUkFTIiBdCisgICB9CisrICBp ZiAodXNlX3NuZGlvKSB7CisrICAgIGRlZmluZXMgKz0gWyAiVVNFX1NORElPIiBdCisrICB9Cisg fQorIAorICMgSW50ZXJuYWwgZ3JvdXBpbmcgb2YgdGhlIGNvbmZpZ3MgbmVjZXNzYXJ5IHRvIHN1 cHBvcnQgc3ViLWZvbGRlcnMgaGF2aW5nIHRoZWlyCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0 cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfYXVk aW9fQlVJTEQuZ24ucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hl cy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJTEQuZ24ucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODU2ZGUwYmYyZWMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3Jk cGFydHlfY2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJTEQuZ24ucGF0Y2gKQEAgLTAsMCArMSwyMyBA QAorLS0tIG1lZGlhL2F1ZGlvL0JVSUxELmduCTIwMjAtMDMtMjQgMTA6MTY6MzAuMDAwMDAwMDAw ICswMTAwCisrKysgLQkyMDIwLTA0LTA2IDE0OjMxOjI4Ljg3MTQ1MDIxNyArMDIwMAorQEAgLTIz Miw5ICsyMzIsMTkgQEAKKyAgICAgZGVwcyArPSBbICIvL21lZGlhL2Jhc2UvYW5kcm9pZDptZWRp YV9qbmlfaGVhZGVycyIgXQorICAgfQorIAorLSAgaWYgKGlzX2xpbnV4KSB7CisrICBpZiAoaXNf bGludXgpIHsKKyAgICAgc291cmNlcyArPSBbICJsaW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNj IiBdCisgICB9CisrICBpZiAodXNlX3NuZGlvKSB7CisrICAgIGxpYnMgKz0gWyAic25kaW8iIF0K KysgICAgc291cmNlcyArPSBbCisrICAgICAgIm9wZW5ic2QvYXVkaW9fbWFuYWdlcl9vcGVuYnNk LmNjIiwKKysgICAgICAic25kaW8vc25kaW9faW5wdXQuY2MiLAorKyAgICAgICJzbmRpby9zbmRp b19pbnB1dC5oIiwKKysgICAgICAic25kaW8vc25kaW9fb3V0cHV0LmNjIiwKKysgICAgICAic25k aW8vc25kaW9fb3V0cHV0LmgiCisrICAgXQorKyB9CisgCisgICBpZiAodXNlX2Fsc2EpIHsKKyAg ICAgbGlicyArPSBbICJhc291bmQiIF0KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMy9m aWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9tZWRpYV9fb3B0 aW9ucy5nbmkucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTMvZmlsZXMvc25kaW8tcGF0Y2hlcy9z cmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVkaWFfX29wdGlvbnMuZ25pLnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMTQ4MDdkOGUxZDM2Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL2ZpbGVzL3NuZGlvLXBhdGNoZXMvc3JjXzNy ZHBhcnR5X2Nocm9taXVtX21lZGlhX21lZGlhX19vcHRpb25zLmduaS5wYXRjaApAQCAtMCwwICsx LDEyIEBACistLS0gbWVkaWEvbWVkaWFfb3B0aW9ucy5nbmkJMjAyMC0wMy0yNCAxMDoxNjozMC4w MDAwMDAwMDAgKzAxMDAKKysrKyAtCTIwMjAtMDQtMDYgMTQ6Mjk6MjIuOTU4NjMwNzgzICswMjAw CitAQCAtMTE0LDYgKzExNCw5IEBACisgICAjIEVuYWJsZXMgcnVudGltZSBzZWxlY3Rpb24gb2Yg QUxTQSBsaWJyYXJ5IGZvciBhdWRpby4KKyAgIHVzZV9hbHNhID0gZmFsc2UKKyAKKysgICMgRW5h YmxlcyBydW50aW1lIHNlbGVjdGlvbiBvZiBzbmRpbyBsaWJyYXJ5IGZvciBhdWRpby4KKysgIHVz ZV9zbmRpbyA9IGZhbHNlCisrCisgICAjIEFsc2Egc2hvdWxkIGJlIHVzZWQgb24gbm9uLUFuZHJv aWQsIG5vbi1NYWMgUE9TSVggc3lzdGVtcy4KKyAgICMgQWxzYSBzaG91bGQgYmUgdXNlZCBvbiBk ZXNrdG9wIENocm9tZWNhc3QgYW5kIGF1ZGlvLW9ubHkgQ2hyb21lY2FzdCBidWlsZHMuCisgICBp ZiAoaXNfcG9zaXggJiYgIWlzX2FuZHJvaWQgJiYgIWlzX21hYyAmJgpkaWZmIC0tZ2l0IGEvc3Jj cGtncy9lbGVjdHJvbjEzL3RlbXBsYXRlIGIvc3JjcGtncy9lbGVjdHJvbjEzL3RlbXBsYXRlCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWQzOTM4MmYzNzdhCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEzL3RlbXBsYXRlCkBAIC0wLDAgKzEsMzg1 IEBACisjIFRlbXBsYXRlIGZpbGUgZm9yICdlbGVjdHJvbjEzJworcGtnbmFtZT1lbGVjdHJvbjEz Cit2ZXJzaW9uPTEzLjAuMAorX25vZGV2ZXI9MTQuMTYuMAorX2Nocm9taXVtdmVyPTkxLjAuNDQ3 Mi42OQorcmV2aXNpb249MQorYXJjaHM9Ing4Nl82NCogaTY4NiogYWFyY2g2NCogcHBjNjRsZSoi CitidWlsZF93cmtzcmM9InNyYyIKK2NyZWF0ZV93cmtzcmM9eWVzCitob3N0bWFrZWRlcGVuZHM9 IiQodm9wdF9pZiBjbGFuZyBjbGFuZykgcHl0aG9uIHBrZ2NvbmYgcGVybCBncGVyZiBiaXNvbiBu aW5qYSBub2RlanMgaHdpZHMKKyBsaWJ3ZWJwLWRldmVsIGZyZWV0eXBlLWRldmVsIGhhcmZidXp6 LWRldmVsIGxpYnBuZy1kZXZlbCBuc3MtZGV2ZWwgd2hpY2ggZ2l0IGxpYmV2ZW50LWRldmVsCisg cGNpdXRpbHMtZGV2ZWwgbGliYXRvbWljLWRldmVsIGZmbXBlZy1kZXZlbCBsaWJ4bWwyLWRldmVs IGxpYmdsaWItZGV2ZWwgeWFybiBvcGVuamRrIGxpYnhzbHQtZGV2ZWwKKyBvcHVzLWRldmVsIGxp YlhjdXJzb3ItZGV2ZWwgbGliWGNvbXBvc2l0ZS1kZXZlbCBsaWJYdHN0LWRldmVsIGxpYlhyYW5k ci1kZXZlbCBsaWJYU2NyblNhdmVyLWRldmVsCisgYWxzYS1saWItZGV2ZWwgcmUyLWRldmVsIHNu YXBweS1kZXZlbCBtaXQta3JiNS1kZXZlbCAkKHZvcHRfaWYgcHVsc2VhdWRpbyBwdWxzZWF1ZGlv LWRldmVsKQorICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkganEiCittYWtlZGVwZW5kcz0i bGlicG5nLWRldmVsIGd0aystZGV2ZWwgZ3RrKzMtZGV2ZWwgbnNzLWRldmVsIHBjaXV0aWxzLWRl dmVsCisgbGliWGktZGV2ZWwgbGliZ2NyeXB0LWRldmVsIGxpYmdub21lLWtleXJpbmctZGV2ZWwg Y3Vwcy1kZXZlbCBlbGZ1dGlscy1kZXZlbAorIGxpYlhjb21wb3NpdGUtZGV2ZWwgc3BlZWNoLWRp c3BhdGNoZXItZGV2ZWwgbGliWHJhbmRyLWRldmVsIG1pdC1rcmI1LWRldmVsCisgbGliWFNjcm5T YXZlci1kZXZlbCBhbHNhLWxpYi1kZXZlbCBzbmFwcHktZGV2ZWwgbGliZHJtLWRldmVsCisgbGli eG1sMi1kZXZlbCBsaWJ4c2x0LWRldmVsICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVkaW8t ZGV2ZWwpIGxpYmV4aWYtZGV2ZWwKKyBsaWJYY3Vyc29yLWRldmVsIGxpYmZsYWMtZGV2ZWwgc3Bl ZXgtZGV2ZWwgbGlibXRwLWRldmVsIGxpYndlYnAtZGV2ZWwKKyBsaWJqcGVnLXR1cmJvLWRldmVs IGxpYmV2ZW50LWRldmVsIGpzb24tYy1kZXZlbCBoYXJmYnV6ei1kZXZlbAorIG1pbml6aXAtZGV2 ZWwganNvbmNwcC1kZXZlbCB6bGliLWRldmVsIGxpYmNhcC1kZXZlbCBsaWJYZGFtYWdlLWRldmVs CisgcmUyLWRldmVsIGZvbnRjb25maWctZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgb3B1cy1kZXZlbCBs aWJhdG9taWMtZGV2ZWwKKyAkKHZvcHRfaWYgc25kaW8gc25kaW8tZGV2ZWwpIGZmbXBlZy1kZXZl bCBsaWJ2YS1kZXZlbCBsaWJ1di1kZXZlbCBjLWFyZXMtZGV2ZWwgbGlibm90aWZ5LWRldmVsCisg JCh2b3B0X2lmIHBpcGV3aXJlIHBpcGV3aXJlLWRldmVsKSB3YXlsYW5kLWRldmVsIGxpYmN1cmwt ZGV2ZWwiCitzaG9ydF9kZXNjPSJDcm9zcyBwbGF0Zm9ybSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVu dCBmcmFtZXdvcmsgYmFzZWQgb24gd2ViIHRlY2hub2xvZ2llcyIKK21haW50YWluZXI9IkpvaG4g PG1lQGpvaG5ueW5hdG9yLmRldj4iCitsaWNlbnNlPSJCU0QtMy1DbGF1c2UiCitob21lcGFnZT0i aHR0cHM6Ly9lbGVjdHJvbmpzLm9yZyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2Vs ZWN0cm9uL2VsZWN0cm9uL2FyY2hpdmUvdiR2ZXJzaW9uLnRhci5nej5lbGVjdHJvbi0ke3ZlcnNp b259LnRhci5negorIGh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vY2hy b21pdW0tYnJvd3Nlci1vZmZpY2lhbC9jaHJvbWl1bS0kX2Nocm9taXVtdmVyLnRhci54egorIGh0 dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9hcmNoaXZlL3YkX25vZGV2ZXIudGFyLmd6Pm5v ZGUtJF9ub2RldmVyLnRhci5neiIKK2NoZWNrc3VtPSJjODA3ZGE4NTFiOWQ5NTJkZmZhZDk0NjZm YjM1ZDhjNTA4MDFmZWNkZjA3ZDk4OTg2Y2EzMmQxOWRiYzIwM2QzCisgMWY2ODQzYzYzNmY0YWRl ZTZiMDZjMzAxMTkzODEwY2NlMTAzZWUzZTQ1ODJkNGNiYzMxYzkxNWVmYzNkMGM3YgorIGJjZGY4 NjliMDc0MzQwNTUxNWVlODk3YjEwNDdiNWU4NTFhNzE3ZTQyNmI0OTc0ZDI2NTM3YzliMTBkZmQ1 M2EiCisKK2Nhc2UgIiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCXBwYzY0Ki1tdXNsKSBtYWtl ZGVwZW5kcys9IiBsaWJ1Y29udGV4dC1kZXZlbCIgOzsKK2VzYWMKKworbm9fZ2VuZXJpY19wa2dj b25maWdfbGluaz15ZXMKK2xpYjMyZGlzYWJsZWQ9eWVzCitub3BpZT15ZXMgICMgY29udGFpbnMg dG9vbHMgdGhhdCBhcmUgbm90IFBJRSwgZW5hYmxlcyBQSUUgaXRzZWxmCisKK2J1aWxkX29wdGlv bnM9InB1bHNlYXVkaW8gc25kaW8gY2xhbmcgcGlwZXdpcmUiCitidWlsZF9vcHRpb25zX2RlZmF1 bHQ9InB1bHNlYXVkaW8gY2xhbmcgcGlwZXdpcmUiCisKK2lmIFsgIiRidWlsZF9vcHRpb25fY2xh bmciIF07IHRoZW4KKwlub2Nyb3NzPSJObyBwcm9wZXIgc2V0dXAgZm9yIHVzaW5nIGNsYW5nIGFz IGNyb3NzIGNvbXBpbGVyIGluIHZvaWQgeWV0IgorZWxpZiBbICIke1hCUFNfVEFSR0VUX01BQ0hJ TkUlJS1tdXNsfSIgPSAiYWFyY2g2NCIgXTsgdGhlbgorCWJyb2tlbj0iRmFsbHMgYXBhcnQgYXQg cnVudGltZSB3aGVuIGNvbXBpbGVkIHdpdGggZ2NjIgorZmkKKworX2J1aWxkdHlwZT1SZWxlYXNl CitfaXNfZGVidWc9ZmFsc2UKKworQ0ZMQUdTPSItV25vLXVua25vd24td2FybmluZy1vcHRpb24g LWZQSUMiCitDWFhGTEFHUz0iLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIC1mUElDIgorCitf YXBwbHlfcGF0Y2goKSB7CisJbG9jYWwgYXJncz0iJDEiIHBuYW1lPSIkKGJhc2VuYW1lICQyKSIK KworCWlmIFsgISAtZiAiLiR7cG5hbWV9X2RvbmUiIF07IHRoZW4KKwkJbXNnX25vcm1hbCAiJHBr Z3ZlcjogcGF0Y2hpbmc6ICR7cG5hbWV9LlxuIgorCQlwYXRjaCAtTiAkYXJncyAtaSAkMgorCQl0 b3VjaCAuJHtwbmFtZX1fZG9uZQorCWZpCit9CisKK19nZXRfY2hyb21pdW1fYXJjaCgpIHsKKwlj YXNlICIkMSIgaW4KKwkJeDg2XzY0KikgZWNobyB4NjQgOzsKKwkJaTY4NiopIGVjaG8geDg2IDs7 CisJCWFybSopIGVjaG8gYXJtIDs7CisJCWFhcmNoNjQqKSBlY2hvIGFybTY0IDs7CisJCXBwYzY0 KikgZWNobyBwcGM2NCA7OworCQlwcGMqKSBlY2hvIHBwYyA7OworCQltaXBzZWwqKSBlY2hvIG1p cHNlbCA7OworCQltaXBzKikgZWNobyBtaXBzIDs7CisJCSopIG1zZ19lcnJvciAiJHBrZ3Zlcjog Y2Fubm90IGJlIGNvbXBpbGVkIGZvciAke1hCUFNfVEFSR0VUX01BQ0hJTkV9LlxuIiA7OworCWVz YWMKK30KKworcG9zdF9leHRyYWN0KCkgeworCWxuIC1zIGNocm9taXVtLSRfY2hyb21pdW12ZXIg c3JjCisJbWtkaXIgLXAgc3JjL3RoaXJkX3BhcnR5LworCWxuIC1zIC4uLy4uL25vZGUtJF9ub2Rl dmVyIHNyYy90aGlyZF9wYXJ0eS9lbGVjdHJvbl9ub2RlCisJbG4gLXMgLi4vZWxlY3Ryb24tJHt2 ZXJzaW9ufSBzcmMvZWxlY3Ryb24KKworfQorcG9zdF9wYXRjaCgpIHsKKwljZCAkd3Jrc3JjCisJ Zm9yIHggaW4gJEZJTEVTRElSL3BhdGNoZXMvKjsgZG8KKwkJY2FzZSAiJHt4IyMqL30iIGluCisJ CQllbGVjdHJvbioucGF0Y2gpCisJCQkJY2Qgc3JjL2VsZWN0cm9uCisJCQkJX2FwcGx5X3BhdGNo IC1wMSAiJHgiCisJCQkJY2QgIiR3cmtzcmMiOzsKKwkJZXNhYworCWRvbmUKKworCSMgU2lnaCwg ZWxlY3Ryb24gdXNlcyBnaXQgYW0uLi4KKwlpZiBbICEgLWYgIi5lbGVjdHJvbl9wYXRjaGVzX2Rv bmUiIF07IHRoZW4KKwltdiBzcmMvZWxlY3Ryb24vcGF0Y2hlcy9jb25maWcuanNvbiBjb25maWcu anNvbi5vbGQKKwlqcSAnZGVsKC4ic3JjL2VsZWN0cm9uL3BhdGNoZXMvTWFudGxlIiwgLiJzcmMv ZWxlY3Ryb24vcGF0Y2hlcy9SZWFjdGl2ZU9iakMiLAorCQkuInNyYy9lbGVjdHJvbi9wYXRjaGVz L3NxdWlycmVsLm1hYyIsIC4ic3JjL2VsZWN0cm9uL3BhdGNoZXMvbmFuIiknIFwKKwkJY29uZmln Lmpzb24ub2xkID4gc3JjL2VsZWN0cm9uL3BhdGNoZXMvY29uZmlnLmpzb24KKwkKKwlweXRob24y IHNyYy9lbGVjdHJvbi9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5IHNyYy9lbGVjdHJvbi9w YXRjaGVzL2NvbmZpZy5qc29uIHwgd2hpbGUgcmVhZCAtciByZXBvcGF0aDsgZG8KKwkJY2QgIiR3 cmtzcmMiLyIkcmVwb3BhdGgiCisJCWdpdCBpbml0IC1xCisJCWdpdCBjb25maWcgImdjLmF1dG8i IDAKKwkJaWYgWyAiJHJlcG9wYXRoIiAhPSAic3JjIiBdOyB0aGVuCisJCQllY2hvICIvJHtyZXBv cGF0aCNzcmMvfSIgPj4gIiR3cmtzcmMvJGJ1aWxkX3dya3NyYy8uZ2l0aWdub3JlIgorCQlmaQor CQlnaXQgYWRkIC4KKwkJZ2l0IC1jICd1c2VyLm5hbWU9RWxlY3Ryb24gYnVpbGQnIC1jICd1c2Vy LmVtYWlsPWVsZWN0cm9uQGVidWlsZCcgXAorCQkJY29tbWl0IC1xIC1tICIuIiB8fCB0cnVlCisJ ZG9uZQorCWNkICR3cmtzcmMKKwlweXRob24yIHNyYy9lbGVjdHJvbi9zY3JpcHQvYXBwbHlfYWxs X3BhdGNoZXMucHkgc3JjL2VsZWN0cm9uL3BhdGNoZXMvY29uZmlnLmpzb24KKwl0b3VjaCAuZWxl Y3Ryb25fcGF0Y2hlc19kb25lCisJZmkKKworCWZvciB4IGluICRGSUxFU0RJUi9wYXRjaGVzLyo7 IGRvCisJCWNhc2UgIiR7eCMjKi99IiBpbgorCQkJY2hyb21pdW0qLnBhdGNoKQorCQkJCWNkIHNy YworCQkJCV9hcHBseV9wYXRjaCAtcDAgIiR4IgorCQkJCWNkICIkd3Jrc3JjIjs7CisJCWVzYWMK Kwlkb25lCisKKwlpZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCWZv ciB4IGluICRGSUxFU0RJUi9tdXNsLXBhdGNoZXMvKjsgZG8KKwkJY2FzZSAiJHt4IyMqL30iIGlu CisJCQljaHJvbWl1bSoucGF0Y2gpCisJCQkJY2Qgc3JjCisJCQkJX2FwcGx5X3BhdGNoIC1wMCAi JHgiCisJCQkJY2QgIiR3cmtzcmMiOzsKKwkJCWVsZWN0cm9uKi5wYXRjaCkKKwkJCQljZCBzcmMv ZWxlY3Ryb24KKwkJCQlfYXBwbHlfcGF0Y2ggLXAxICIkeCIKKwkJCQljZCAiJHdya3NyYyI7Owor CQllc2FjCisJZG9uZQorCWZpCisJaWYgWyAiJGJ1aWxkX29wdGlvbl9zbmRpbyIgXTsgdGhlbgor CQlta2RpciAtcCAke3dya3NyY30vJHtidWlsZF93cmtzcmN9L21lZGlhL2F1ZGlvL3tzbmRpbyxv cGVuYnNkfQorCQljcCAke0ZJTEVTRElSfS9zbmRpby1maWxlcy9zbmRpb18qcHV0LiogXAorCQkJ JHt3cmtzcmN9LyR7YnVpbGRfd3Jrc3JjfS9tZWRpYS9hdWRpby9zbmRpbworCQljcCAke0ZJTEVT RElSfS9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuKiBcCisJCQkke3dya3NyY30v JHtidWlsZF93cmtzcmN9L21lZGlhL2F1ZGlvL29wZW5ic2QKKwkJZm9yIGYgaW4gIiR7RklMRVNE SVJ9Ii9zbmRpby1wYXRjaGVzLyoucGF0Y2g7IGRvCisJCQljZCBzcmMKKwkJCV9hcHBseV9wYXRj aCAtcDAgIiRmIgorCQkJY2QgIiR3cmtzcmMiCisJCWRvbmUKKwlmaQorfQorCitwcmVfY29uZmln dXJlKCkgeworCWNkICIkd3Jrc3JjLyRidWlsZF93cmtzcmMiCisKKwkjIGh0dHBzOi8vZ3JvdXBz Lmdvb2dsZS5jb20vYS9jaHJvbWl1bS5vcmcvZC90b3BpYy9jaHJvbWl1bS1wYWNrYWdlcnMvOUpY MU4ybmY0UFUvZGlzY3Vzc2lvbgorCXRvdWNoIGNocm9tZS90ZXN0L2RhdGEvd2VidWkvaTE4bl9w cm9jZXNzX2Nzc190ZXN0Lmh0bWwKKwkjIFVzZSB0aGUgZmlsZSBhdCBydW4gdGltZSBpbnN0ZWFk IG9mIGVmZmVjdGl2ZWx5IGNvbXBpbGluZyBpdCBpbgorCXNlZCAnc3wvL3RoaXJkX3BhcnR5L3Vz Yl9pZHMvdXNiLmlkc3wvdXNyL3NoYXJlL2h3ZGF0YS91c2IuaWRzfGcnIFwKKwkJLWkgc2Vydmlj ZXMvZGV2aWNlL3B1YmxpYy9jcHAvdXNiL0JVSUxELmduCisKKwlta2RpciAtcCB0aGlyZF9wYXJ0 eS9ub2RlL2xpbnV4L25vZGUtbGludXgteDY0L2JpbgorCWxuIC1zIC91c3IvYmluL25vZGUgdGhp cmRfcGFydHkvbm9kZS9saW51eC9ub2RlLWxpbnV4LXg2NC9iaW4vCisKKwkjIGNvbXBpbGUgZ24g ZWFybHksIHNvIGl0IGNhbiBiZSB1c2VkIHRvIGdlbmVyYXRlIGduaSBzdHVmZgorCW1zZ19ub3Jt YWwgIkJvb3RzdHJhcHBpbmcgR05cbiIKKwlDQz0iJHtDQ19GT1JfQlVJTEQ6LSRDQ30iIENYWD0i JHtDWFhfRk9SX0JVSUxEOi0kQ1hYfSIgTEQ9IiR7TERfRk9SX0JVSUxEOi0kTER9IiBcCisJQ0ZM QUdTPSIke0NGTEFHU19GT1JfQlVJTEQ6LSRDRkxBR1N9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19G T1JfQlVJTEQ6LSRDWFhGTEFHU30iIFwKKwlMREZMQUdTPSIke1hCUFNfTERGTEFHU30iIFwKKwkJ cHl0aG9uMiB0b29scy9nbi9ib290c3RyYXAvYm9vdHN0cmFwLnB5IC1zIC12IC0tc2tpcC1nZW5l cmF0ZS1idWlsZGZpbGVzCisKKwkjIHdlIG5lZWQgdG8gZ2VuZXJhdGUgcHBjNjQgc3R1ZmYgZm9y IGxpYnZweCBhcyBpdCdzIG5vdCBzaGlwcGVkCisJIyB0aGlzIGhhcyB0byBiZSBkb25lIGJlZm9y ZSB1bmJ1bmRsaW5nLCBidXQgYWZ0ZXIgZ24gaXMgYnVpbHQKKwkjIGNvbW1lbnQgb3V0IGlmIHdl IHN3aXRjaCBiYWNrIHRvIHN5c3RlbSBsaWJ2cHggYWdhaW4gbGF0ZXIKKwljYXNlICIkWEJQU19U QVJHRVRfTUFDSElORSIgaW4KKwkJcHBjNjQqKQorCQkJcHVzaGQgdGhpcmRfcGFydHkvbGlidnB4 CisJCQlta2RpciAtcCBzb3VyY2UvY29uZmlnL2xpbnV4L3BwYzY0CisJCQkjIG5lZWQgUEFUSCB0 byBmaW5kIGduCisJCQlQQVRIPSIke3dya3NyY30vJHtidWlsZF93cmtzcmN9L291dC9SZWxlYXNl OiRQQVRIIiBcCisJCQkJLi9nZW5lcmF0ZV9nbmkuc2ggfHwgXAorCQkJCQltc2dfZXJyb3IgImZh aWxlZCB0byBnZW5lcmF0ZSBsaWJ2cHggZ25pIgorCQkJcG9wZAorCQkJOzsKKwllc2FjCisKKwkj IHJldXNhYmxlIHN5c3RlbSBsaWJyYXJ5IHNldHRpbmdzCisJbG9jYWwgdXNlX3N5c3RlbT0iCisJ CWZmbXBlZworCQlmbGFjCisJCWZvbnRjb25maWcKKwkJZnJlZXR5cGUKKwkJaGFyZmJ1enotbmcK KwkJbGliZHJtCisJCWxpYmV2ZW50CisJCWxpYmpwZWcKKwkJbGlicG5nCisJCWxpYndlYnAKKwkJ bGlieG1sCisJCWxpYnhzbHQKKwkJb3B1cworCQlyZTIKKwkJc25hcHB5CisJCSIKKwlmb3IgX2xp YiBpbiAkdXNlX3N5c3RlbSBsaWJqcGVnX3R1cmJvOyBkbworCQltc2dfbm9ybWFsICJSZW1vdmlu ZyBidWlsZHNjcmlwdHMgZm9yIHN5c3RlbSBwcm92aWRlZCAkX2xpYlxuIgorCQlmaW5kIC10eXBl IGYgLXBhdGggIip0aGlyZF9wYXJ0eS8kX2xpYi8qIiBcCisJCQlcISAtcGF0aCAiKnRoaXJkX3Bh cnR5LyRfbGliL2Nocm9taXVtLyoiIFwKKwkJCVwhIC1wYXRoICIqdGhpcmRfcGFydHkvJF9saWIv Z29vZ2xlLyoiIFwKKwkJCVwhIC1wYXRoICcuL2Jhc2UvdGhpcmRfcGFydHkvaWN1LyonIFwKKwkJ CVwhIC1wYXRoICcuL3RoaXJkX3BhcnR5L3BkZml1bS90aGlyZF9wYXJ0eS9mcmVldHlwZS9pbmNs dWRlL3BzdGFibGVzLmgnIFwKKwkJCVwhIC1wYXRoICcuL3RoaXJkX3BhcnR5L2hhcmZidXp6LW5n L3V0aWxzL2hiX3Njb3BlZC5oJyBcCisJCQlcISAtcmVnZXggJy4qXC5cKGduXHxnbmlcfGlzb2xh dGVcfHB5XCknIFwKKwkJCS1kZWxldGUKKwlkb25lCisKKworCW1zZ19ub3JtYWwgIlJlcGxhY2lu ZyBnbiBmaWxlc1xuIgorCXB5dGhvbjIgYnVpbGQvbGludXgvdW5idW5kbGUvcmVwbGFjZV9nbl9m aWxlcy5weSAtLXN5c3RlbS1saWJyYXJpZXMgXAorCQkkdXNlX3N5c3RlbQorCXRoaXJkX3BhcnR5 L2xpYmFkZHJlc3NpbnB1dC9jaHJvbWl1bS90b29scy91cGRhdGUtc3RyaW5ncy5weQorfQorCitk b19jb25maWd1cmUoKSB7CisJbG9jYWwgdGFyZ2V0X2FyY2g9IiQoX2dldF9jaHJvbWl1bV9hcmNo ICR7WEJQU19UQVJHRVRfTUFDSElORX0pIgorCWxvY2FsIGhvc3RfYXJjaD0iJChfZ2V0X2Nocm9t aXVtX2FyY2ggJHtYQlBTX01BQ0hJTkV9KSIKKwkjIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCBzZXQg bWFyY2ggZm9yIHVzZSwgYWRkaW5nIGl0IHRvIGNmbGFncyB3aWxsIGJyZWFrIGJ1aWxkcworCWV4 cG9ydCBDWFhGTEFHUz0kKCBzaG9wdCAtcyBleHRnbG9iOyBlY2hvICR7Q1hYRkxBR1MvLW1hcmNo PSooW14gXSl9ICkKKwlleHBvcnQgQ0ZMQUdTPSQoIHNob3B0IC1zIGV4dGdsb2I7IGVjaG8gJHtD RkxBR1MvLW1hcmNoPSooW14gXSl9ICkKKwlleHBvcnQgQ0ZMQUdTPSR7Q0ZMQUdTLy1nL30KKwll eHBvcnQgQ1hYRkxBR1M9JHtDWFhGTEFHUy8tZy99CisJbG9jYWwgY29uZj0oKQorCWNkIHRoaXJk X3BhcnR5L2VsZWN0cm9uX25vZGUKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY29u Zl9hcmdzPSIgLS1kZXN0LWNwdT0ke3RhcmdldF9hcmNofSAtLWNyb3NzLWNvbXBpbGluZyIKKwlm aQorCS4vY29uZmlndXJlIC0tcHJlZml4PS91c3IgXAorCQktLXNoYXJlZC16bGliIFwKKwkJLS1z aGFyZWQtbGlidXYgXAorCQktLXNoYXJlZC1vcGVuc3NsIFwKKwkJLS1zaGFyZWQtY2FyZXMgXAor CQktLW9wZW5zc2wtdXNlLWRlZi1jYS1zdG9yZSBcCisJCS0td2l0aG91dC1ucG0gXAorCQktLXdp dGhvdXQtZHRyYWNlIFwKKwkJLS13aXRob3V0LWJ1bmRsZWQtdjggXAorCQkke2NvbmZfYXJnc30K KworCWNkICIkd3Jrc3JjLyRidWlsZF93cmtzcmMiL2VsZWN0cm9uCisJeWFybiBpbnN0YWxsCisJ Y2QgIiR3cmtzcmMvJGJ1aWxkX3dya3NyYyIKKworCWlmIFsgIiRidWlsZF9vcHRpb25fY2xhbmci IF07IHRoZW4KKwkJZXhwb3J0IENDPWNsYW5nCisJCWV4cG9ydCBDWFg9Y2xhbmcrKworCQlleHBv cnQgSE9TVF9DQz1jbGFuZworCQlleHBvcnQgSE9TVF9DWFg9Y2xhbmcrKworCWVsc2UKKwkJZXhw b3J0IENYWEZMQUdTPSIkQ1hYRkxBR1MgLWZwZXJtaXNzaXZlIgorCQlleHBvcnQgQlVJTERfQ1hY RkxBR1M9IiRCVUlMRF9DWFhGTEFHUyAtZnBlcm1pc3NpdmUiCisJCWV4cG9ydCBCVUlMRF9BUj0i JEFSX2hvc3QiCisJCWV4cG9ydCBCVUlMRF9OTT0iJE5NX2hvc3QiCisJZmkKKworCSMgR29vZ2xl IEFQSSBrZXlzIChzZWUgaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9ob3ctdG9z L2FwaS1rZXlzKQorCSMgTm90ZTogVGhlc2UgYXJlIGZvciBWb2lkIExpbnV4IHVzZSBPTkxZLgor CWNvbmYrPSgKKwkJJ2dvb2dsZV9hcGlfa2V5PSJBSXphU3lBOWdXYXpLYUhhTklQUGcyaHJNajZf WlNHOEFGbXE3MzgiJworCQknZ29vZ2xlX2RlZmF1bHRfY2xpZW50X2lkPSIxMjY2NTkxNDk0MjMt aG9vNmlja2JrM3AxdTJxanNkc3AwZGRjaXVyZnZiNHQuYXBwcy5nb29nbGV1c2VyY29udGVudC5j b20iJworCQknZ29vZ2xlX2RlZmF1bHRfY2xpZW50X3NlY3JldD0iX296SXgyRC1ES21fc2VfMk5Q d1Y0bDViIicKKwkpCisKKwljb25mKz0oCisJCSdibGlua19zeW1ib2xfbGV2ZWw9MCcKKwkJJ2Ns YW5nX3VzZV9jaHJvbWVfcGx1Z2lucz1mYWxzZScKKwkJJ2N1c3RvbV90b29sY2hhaW49Ii8vYnVp bGQvdG9vbGNoYWluL2xpbnV4L3VuYnVuZGxlOmRlZmF1bHQiJworCSkKKwlpZiBbICIkQ1JPU1Nf QlVJTEQiIF07IHRoZW4KKwkJY29uZis9KAorCQkJJ2hvc3RfdG9vbGNoYWluPSIvL2J1aWxkL3Rv b2xjaGFpbi9saW51eC91bmJ1bmRsZTpob3N0IicKKwkJCSd2OF9zbmFwc2hvdF90b29sY2hhaW49 Ii8vYnVpbGQvdG9vbGNoYWluL2xpbnV4L3VuYnVuZGxlOmhvc3QiJworCQkJImhvc3RfcGtnX2Nv bmZpZz1cIiRQS0dfQ09ORklHX0ZPUl9CVUlMRFwiIgorCQkJInBrZ19jb25maWc9XCIkUEtHX0NP TkZJR1wiIgorCQkpCisJZWxzZQorCQljb25mKz0oCisJCQknaG9zdF90b29sY2hhaW49Ii8vYnVp bGQvdG9vbGNoYWluL2xpbnV4L3VuYnVuZGxlOmRlZmF1bHQiJworCQkJJ3Y4X3NuYXBzaG90X3Rv b2xjaGFpbj0iLy9idWlsZC90b29sY2hhaW4vbGludXgvdW5idW5kbGU6ZGVmYXVsdCInCisJCSkK KwlmaQorCWlmIFsgIiRidWlsZF9vcHRpb25fc25kaW8iIF07IHRoZW4KKwkJY29uZis9KAorCQkJ J3VzZV9zbmRpbz10cnVlJworCQkpCisJZmkKKwlpZiBbIC1uICIkWEJQU19ERUJVR19QS0dTIiBd OyB0aGVuCisJCWNvbmYrPSgnc3ltYm9sX2xldmVsPTEnKQorCWVsc2UKKwkJY29uZis9KCdzeW1i b2xfbGV2ZWw9MCcpCisJZmkKKwljb25mKz0oCisJCSdlbmFibGVfaGFuZ291dF9zZXJ2aWNlc19l eHRlbnNpb249dHJ1ZScKKwkJJ2VuYWJsZV9uYWNsX25vbnNmaT1mYWxzZScKKwkJJ2VuYWJsZV9u YWNsPWZhbHNlJworCQknZW5hYmxlX3ByZWNvbXBpbGVkX2hlYWRlcnM9ZmFsc2UnCisJCSdmYXRh bF9saW5rZXJfd2FybmluZ3M9ZmFsc2UnCisJCSdmZm1wZWdfYnJhbmRpbmc9IkNocm9tZSInCisJ CSdmaWVsZHRyaWFsX3Rlc3RpbmdfbGlrZV9vZmZpY2lhbF9idWlsZD10cnVlJworCQknZ29sZF9w YXRoPSIvdXNyL2Jpbi9sZC5nb2xkIicKKwkJJ2ljdV91c2VfZGF0YV9maWxlPXRydWUnCisJCSJp c19jbGFuZz0kKHZvcHRfaWYgY2xhbmcgdHJ1ZSBmYWxzZSkiCisJCSdpc19jb21wb25lbnRfYnVp bGQ9ZmFsc2UnCisJCSJpc19kZWJ1Zz0kX2lzX2RlYnVnIgorCQkncHJvcHJpZXRhcnlfY29kZWNz PXRydWUnCisJCSd0cmVhdF93YXJuaW5nc19hc19lcnJvcnM9ZmFsc2UnCisJCSd1c2VfYWxsb2Nh dG9yX3NoaW09ZmFsc2UnCisJCSd1c2VfYWxsb2NhdG9yPSJub25lIicKKwkJJ3VzZV9jdXBzPXRy dWUnCisJCSd1c2VfY3VzdG9tX2xpYmN4eD1mYWxzZScKKwkJJ3VzZV9nbm9tZV9rZXlyaW5nPWZh bHNlJworCQkndXNlX2dvbGQ9ZmFsc2UnCisJCSd1c2VfbGxkPWZhbHNlJworCQkndXNlX3N5c3Rl bV9saWJ3YXlsYW5kPXRydWUnCisJCSJ1c2VfcHVsc2VhdWRpbz0kKHZvcHRfaWYgcHVsc2VhdWRp byAndHJ1ZScgJ2ZhbHNlJykiCisJCSJydGNfdXNlX3BpcGV3aXJlPSQodm9wdF9pZiBwaXBld2ly ZSB0cnVlIGZhbHNlKSIKKwkJJ3J0Y19waXBld2lyZV92ZXJzaW9uPSIwLjMiJworCQkndXNlX3N5 c3Jvb3Q9ZmFsc2UnCisJCSd1c2Vfc3lzdGVtX2hhcmZidXp6PXRydWUnCisJCSJ0YXJnZXRfY3B1 PVwiJHRhcmdldF9hcmNoXCIiCisJCSJob3N0X2NwdT1cIiRob3N0X2FyY2hcIiIKKwkJJ2ltcG9y dCgiLy9lbGVjdHJvbi9idWlsZC9hcmdzL3JlbGVhc2UuZ24iKScKKwkpCisKKwltc2dfbm9ybWFs ICJDb25maWd1cmluZyBidWlsZFxuIgorCW91dC9SZWxlYXNlL2duIGdlbiBvdXQvJF9idWlsZHR5 cGUgLS1hcmdzPSIke2NvbmZbKl19IgorfQorCitkb19idWlsZCgpIHsKKwlleHBvcnQgQ1hYRkxB R1M9JCggc2hvcHQgLXMgZXh0Z2xvYjsgZWNobyAke0NYWEZMQUdTLy1tYXJjaD0qKFteIF0pfSAp CisJZXhwb3J0IENGTEFHUz0kKCBzaG9wdCAtcyBleHRnbG9iOyBlY2hvICR7Q0ZMQUdTLy1tYXJj aD0qKFteIF0pfSApCisJZXhwb3J0IENGTEFHUz0ke0NGTEFHUy8tZy99CisJZXhwb3J0IENYWEZM QUdTPSR7Q1hYRkxBR1MvLWcvfQorCWlmIFsgIiRidWlsZF9vcHRpb25fY2xhbmciIF07IHRoZW4K KwkJZXhwb3J0IENDPWNsYW5nCisJCWV4cG9ydCBDWFg9Y2xhbmcrKworCQlleHBvcnQgSE9TVF9D Qz1jbGFuZworCQlleHBvcnQgSE9TVF9DWFg9Y2xhbmcrKworCWVsc2UKKwkJZXhwb3J0IEJVSUxE X0NYWEZMQUdTPSIkQlVJTERfQ1hYRkxBR1MgLWZwZXJtaXNzaXZlIgorCQlleHBvcnQgQ1hYRkxB R1M9IiRDWFhGTEFHUyAtZnBlcm1pc3NpdmUiCisJCWV4cG9ydCBCVUlMRF9BUj0iJEFSX2hvc3Qi CisJCWV4cG9ydCBCVUlMRF9OTT0iJE5NX2hvc3QiCisJZmkKKwltc2dfbm9ybWFsICJOaW5qYSB0 dXJ0bGVzIEdPIVxuIgorCW5pbmphICR7bWFrZWpvYnN9IC1DIG91dC8kX2J1aWxkdHlwZSBlbGVj dHJvbiB0aGlyZF9wYXJ0eS9lbGVjdHJvbl9ub2RlOmhlYWRlcnMKKwkjIGZpbmlzaCByZXN0IG9m IHRoZSBidWlsZAorCXN0cmlwIC1zIG91dC8kX2J1aWxkdHlwZS9lbGVjdHJvbgorCW5pbmphICR7 bWFrZWpvYnN9IC1DIG91dC8kX2J1aWxkdHlwZSBlbGVjdHJvbl9kaXN0X3ppcAorfQorCitkb19p bnN0YWxsKCkgeworCXZta2RpciAvdXNyL2xpYi8kcGtnbmFtZQorCXZta2RpciAvdXNyL2luY2x1 ZGUvJHBrZ25hbWUKKwlic2R0YXIgLXhmIG91dC8kX2J1aWxkdHlwZS9kaXN0LnppcCAtQyAiJERF U1RESVIvdXNyL2xpYi8kcGtnbmFtZSIKKworCWNobW9kIHUrcyAiJERFU1RESVIvdXNyL2xpYi8k cGtnbmFtZS9jaHJvbWUtc2FuZGJveCIKKworCWNwIG91dC8kX2J1aWxkdHlwZS9nZW4vbm9kZV9o ZWFkZXJzLnRhci5neiAiJERFU1RESVIiL3Vzci9pbmNsdWRlLyRwa2duYW1lCisKKwl2bGljZW5z ZSAke3dya3NyY30vc3JjL0xJQ0VOU0UgY2hyb21pdW0uTElDRU5TRQorCXZsaWNlbnNlICR7d3Jr c3JjfS9zcmMvZWxlY3Ryb24vTElDRU5TRSBlbGVjdHJvbi5MSUNFTlNFCisJdmxpY2Vuc2UgJHt3 cmtzcmN9L3NyYy90aGlyZF9wYXJ0eS9lbGVjdHJvbl9ub2RlL0xJQ0VOU0Ugbm9kZS5MSUNFTlNF CisKKwl2bWtkaXIgL3Vzci9iaW4KKwlsbiAtcyAuLi9saWIvJHBrZ25hbWUvZWxlY3Ryb24gIiRE RVNURElSIi91c3IvYmluLyRwa2duYW1lCit9CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9u MTMvdXBkYXRlIGIvc3JjcGtncy9lbGVjdHJvbjEzL3VwZGF0ZQpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjNhZjhlNThiNTM1OAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZWxlY3Ryb24xMy91cGRhdGUKQEAgLTAsMCArMSwyIEBACitzaXRlPWh0dHBzOi8vd3d3 LmVsZWN0cm9uanMub3JnL3JlbGVhc2VzL3N0YWJsZT92ZXJzaW9uPSR7dmVyc2lvbiUlLip9Citw YXR0ZXJuPSd0YWcvdlxLW1xkXC5dKyg/PSIpJwo= --===============7605097166153859255==--