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 27100 invoked from network); 13 Apr 2021 17:26:16 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 13 Apr 2021 17:26:16 -0000 Content-Type: multipart/mixed; boundary="===============7378200450859502344==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_=5BWiP=5D_New_package=3A_electron12-12=2E0=2E1?= To: ml@inbox.vuxu.org From: Johnnynator Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Tue, 13 Apr 2021 19:26:15 +0200 List-Id: Message-ID: <20210413172615.iaEtGx3sYSrbWv4A86yYvEZ1e7qPgvsltQx-T-VfM3I@z> GitHub notification mails are now in MIME to allow UTF8. --===============7378200450859502344== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkgSm9obm55bmF0b3IgYWdhaW5zdCBt YXN0ZXIgb24gdGhlIHZvaWQtcGFja2FnZXMgcmVwb3NpdG9yeQoKaHR0cHM6Ly9naXRodWIuY29t L0pvaG5ueW5hdG9yL3ZvaWQtcGFja2FnZXMgZWxlY3Ryb24xMgpodHRwczovL2dpdGh1Yi5jb20v dm9pZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvMjk0NjMKCltXaVBdIE5ldyBwYWNrYWdlOiBl bGVjdHJvbjEyLTEyLjAuMQo8IS0tIE1hcmsgaXRlbXMgd2l0aCBbeF0gd2hlcmUgYXBwbGljYWJs ZSAtLT4NCg0KIyMjIyBHZW5lcmFsDQotIFsgXSBUaGlzIGlzIGEgbmV3IHBhY2thZ2UgYW5kIGl0 IGNvbmZvcm1zIHRvIHRoZSBbcXVhbGl0eSByZXF1aXJlbWVudHNdKGh0dHBzOi8vZ2l0aHViLmNv bS92b2lkLWxpbnV4L3ZvaWQtcGFja2FnZXMvYmxvYi9tYXN0ZXIvTWFudWFsLm1kI3F1YWxpdHkt cmVxdWlyZW1lbnRzKQ0KDQojIyMjIEhhdmUgdGhlIHJlc3VsdHMgb2YgdGhlIHByb3Bvc2VkIGNo YW5nZXMgYmVlbiB0ZXN0ZWQ/DQotIFsgXSBJIHVzZSB0aGUgcGFja2FnZXMgYWZmZWN0ZWQgYnkg dGhlIHByb3Bvc2VkIGNoYW5nZXMgb24gYSByZWd1bGFyIGJhc2lzIGFuZCBjb25maXJtIHRoaXMg UFIgd29ya3MgZm9yIG1lDQotIFsgXSBJIGdlbmVyYWxseSBkb24ndCB1c2UgdGhlIGFmZmVjdGVk IHBhY2thZ2VzIGJ1dCBicmllZmx5IHRlc3RlZCB0aGlzIFBSDQoNCjwhLS0NCklmIEdpdEh1YiBD SSBjYW5ub3QgYmUgdXNlZCB0byB2YWxpZGF0ZSB0aGUgYnVpbGQgcmVzdWx0IChmb3IgZXhhbXBs ZSwgaWYgdGhlDQpidWlsZCBpcyBsaWtlbHkgdG8gdGFrZSBzZXZlcmFsIGhvdXJzKSwgbWFrZSBz dXJlIHRvDQpbc2tpcCBDSV0oaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNr YWdlcy9ibG9iL21hc3Rlci9DT05UUklCVVRJTkcubWQjY29udGludW91cy1pbnRlZ3JhdGlvbiku DQpXaGVuIHNraXBwaW5nIENJLCB1bmNvbW1lbnQgYW5kIGZpbGwgb3V0IHRoZSBmb2xsb3dpbmcg c2VjdGlvbi4NCk5vdGU6IGZvciBidWlsZHMgdGhhdCBhcmUgbGlrZWx5IHRvIGNvbXBsZXRlIGlu IGxlc3MgdGhhbiAyIGhvdXJzLCBpdCBpcyBub3QNCmFjY2VwdGFibGUgdG8gc2tpcCBDSS4NCi0t Pg0KPCEtLSANCiMjIyMgRG9lcyBpdCBidWlsZCBhbmQgcnVuIHN1Y2Nlc3NmdWxseT8gDQooUGxl YXNlIGNob29zZSBhdCBsZWFzdCBvbmUgbmF0aXZlIGJ1aWxkIGFuZCwgaWYgc3VwcG9ydGVkLCBh dCBsZWFzdCBvbmUgY3Jvc3MgYnVpbGQuIE1vcmUgYXJlIGJldHRlci4pDQotIFsgXSBJIGJ1aWx0 IHRoaXMgUFIgbG9jYWxseSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZSwgKEFSQ0gtTElCQykN Ci0gWyBdIEkgYnVpbHQgdGhpcyBQUiBsb2NhbGx5IGZvciB0aGVzZSBhcmNoaXRlY3R1cmVzIChp ZiBzdXBwb3J0ZWQuIG1hcmsgY3Jvc3NidWlsZHMpOg0KICAtIFsgXSBhYXJjaDY0LW11c2wNCiAg LSBbIF0gYXJtdjdsDQogIC0gWyBdIGFybXY2bC1tdXNsDQotLT4NCnNraXAgY2kNCgoKQSBwYXRj aCBmaWxlIGZyb20gaHR0cHM6Ly9naXRodWIuY29tL3ZvaWQtbGludXgvdm9pZC1wYWNrYWdlcy9w dWxsLzI5NDYzLnBhdGNoIGlzIGF0dGFjaGVk --===============7378200450859502344== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-electron12-29463.patch" RnJvbSA1YWZmNjQ0NGU4YzhiMDQwNjdlZDRkZjc2ZTJhN2FkNzg1YWMxYTllIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKb2huIDxtZUBqb2hubnluYXRvci5kZXY+CkRhdGU6IFN1biwg MTQgTWFyIDIwMjEgMTk6MjQ6MTggKzAxMDAKU3ViamVjdDogW1BBVENIIDEvMl0gTmV3IHBhY2th Z2U6IGVsZWN0cm9uMTItMTIuMC4xCgotLS0KIC4uLi9jaHJvbWl1bS1kZWZhdWx0LXB0aHJlYWQt c3RhY2tzaXplLnBhdGNoICB8ICAgMjkgKwogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNs LWNyYXNocGFkLnBhdGNoIHwgICAyMyArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wt Zml4ZXMucGF0Y2ggICAgfCAgMjAyICsKIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1o YWNrcy5wYXRjaCAgICB8ICAgMjIgKwogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWxp YmMrKy5wYXRjaCAgIHwgICA1NSArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc2Fu ZGJveC5wYXRjaCAgfCAgIDkyICsKIC4uLi9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zeW5j LnBhdGNoICAgICB8ICAgMzAgKwogLi4uL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1uby1tYWxsaW5m by5wYXRjaCAgIHwgICA1NCArCiAuLi4vbXVzbC1wYXRjaGVzL2Nocm9taXVtLXJlc29sdmVyLnBh dGNoICAgICAgfCAgIDM4ICsKIC4uLi9jaHJvbWl1bS14eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNo ICAgICAgICB8ICAxOTAgKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tODgtZ2xpYmMtMi4zMy5wYXRj aCAgICAgIHwgIDE0NCArCiAuLi5jaHJvbWl1bS04OS1BWFRyZWVTZXJpYWxpemVyLWluY2x1ZGUu cGF0Y2ggfCAgIDI1ICsKIC4uLi1hZGQtZGVwZW5kZW5jeS1vbi1vcHVzLWluLXdlYmNvZGVjcy5w YXRjaCB8ICAgNDMgKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tODktZGF3bi1pbmNsdWRlLnBhdGNo ICAgIHwgICAyOCArCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS04OS1xdWljaGUtZGNoZWNrLnBhdGNo ICAgfCAgIDI5ICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLTg5LXNraWEtQ3JvcFJlY3QucGF0Y2gg ICB8ICAgMzggKwogLi4ubWl1bS04OS14MTEtb3pvbmUtZml4LXR3by1lZGdlLWNhc2VzLnBhdGNo IHwgIDEzNSArCiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS1icm93c2VyLXNpemVfdC5wYXRjaCAgICAg fCAgIDEwICsKIC4uLi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWxpYmNfbWFsbG9jLnBhdGNoICB8 ICAgMjYgKwogLi4uLXY4LW1vbm90b25pYy1wdGhyZWFkLWNvbnRfdGltZWR3YWl0LnBhdGNoIHwg ICAyNCArCiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1leGVjaW5mby5wYXRjaCAgfCAg IDcyICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLW5vLWdldGNvbnRleHQucGF0Y2ggICAgICB8ICAg MjcgKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoIHwgICAx MCArCiAuLi4vY2hyb21pdW0tc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaCAgICAgfCAgIDIw ICsKIC4uLi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNuZGlvLnBhdGNoICAgICAgICB8ICA4ODYg KysrKwogLi4uL3BhdGNoZXMvY2hyb21pdW0tc3lzdGVtLW5vZGVqcy5wYXRjaCAgICAgIHwgICAy MiArCiAuLi4vZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS10aW1lNjQucGF0Y2ggICAgICAgfCAgIDUx ICsKIC4uLi9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1pbmNsdWRlLnBhdGNoICAgICB8ICAgMTAg KwogLi4uL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXIwLnBhdGNoICAgIHwgICAzMyAr CiAuLi4vcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtc2l6ZV90LnBhdGNoICAgICAgfCAgIDEwICsK IC4uLi9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLWxpYnZweC5wYXRjaCB8ICAgNzIgKwog Li4uL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN1cHBvcnQucGF0Y2ggICAgICAgIHwgMzYzNSArKysr KysrKysrKysrKysrKwogLi4uL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN3aWZ0c2hhZGVyLnBhdGNo ICAgIHwgICAxOCArCiAuLi5hLXNjcmlwdC10by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gucGF0 Y2ggfCAgIDQyICsKIC4uLi9wYXRjaGVzL2VsZWN0cm9uLUJ1aWxkLWZpeGVzLnBhdGNoLnBhdGNo ICB8ICAgNDcgKwogLi4uZWN0cm9uLWRvbnQtYXNzdW1lLXB5dGhvbi1pcy1weXRob24yLnBhdGNo IHwgICAxNyArCiAuLi5sZWN0cm9uLWV4Y2x1ZGUtY29udGVudC10ZXN0LXBhdGNoZXMucGF0Y2gg fCAgIDEwICsKIC4uLi9zbmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuY2MgICAgICB8 ICAxNDggKwogLi4uL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oIHwg ICA2NSArCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5wdXQuY2MgICAgICAgICAgfCAg MjAwICsKIC4uLi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5oICAgICAgICAgICB8ICAg OTEgKwogLi4uL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX291dHB1dC5jYyAgICAgICAgIHwgIDE4 MyArCiAuLi4vZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmggICAgICAgICAgfCAgIDg2 ICsKIC4uLmFfYXVkaW9fbGludXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaCB8ICAgNDMg KwogLi4uc3JjXzNyZHBhcnR5X2Nocm9taXVtX21lZGlhX0JVSUxELmduLnBhdGNoIHwgICAxMiAr CiAuLi5kcGFydHlfY2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJTEQuZ24ucGF0Y2ggfCAgIDIzICsK IC4uLnR5X2Nocm9taXVtX21lZGlhX21lZGlhX19vcHRpb25zLmduaS5wYXRjaCB8ICAgMTIgKwog c3JjcGtncy9lbGVjdHJvbjEyL3RlbXBsYXRlICAgICAgICAgICAgICAgICAgIHwgIDM2OSArKwog c3JjcGtncy9lbGVjdHJvbjEyL3VwZGF0ZSAgICAgICAgICAgICAgICAgICAgIHwgICAgMiArCiA0 OSBmaWxlcyBjaGFuZ2VkLCA3NDUzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBz cmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLWRlZmF1bHQtcHRo cmVhZC1zdGFja3NpemUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtY3Jhc2hwYWQucGF0Y2gKIGNyZWF0 ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9t aXVtLW11c2wtZml4ZXMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtaGFja3MucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVt LW11c2wtbGliYysrLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEy L2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLXNhbmRib3gucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVt LW11c2wtc3luYy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbm8tbWFsbGluZm8ucGF0Y2gKIGNyZWF0ZSBtb2Rl IDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLXJl c29sdmVyLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L211c2wtcGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zdXBwb3J0LnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODgt Z2xpYmMtMi4zMy5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LUFYVHJlZVNlcmlhbGl6ZXItaW5jbHVkZS5wYXRjaAog Y3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9t aXVtLTg5LWFkZC1kZXBlbmRlbmN5LW9uLW9wdXMtaW4td2ViY29kZWNzLnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODkt ZGF3bi1pbmNsdWRlLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEy L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODktcXVpY2hlLWRjaGVjay5wYXRjaAogY3JlYXRlIG1v ZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LXNr aWEtQ3JvcFJlY3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS14MTEtb3pvbmUtZml4LXR3by1lZGdlLWNhc2VzLnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMv Y2hyb21pdW0tYnJvd3Nlci1zaXplX3QucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dz L2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaAogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVt LW11c2wtdjgtbW9ub3RvbmljLXB0aHJlYWQtY29udF90aW1lZHdhaXQucGF0Y2gKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1l eGVjaW5mby5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxl cy9wYXRjaGVzL2Nocm9taXVtLW5vLWdldGNvbnRleHQucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94LW1lbWJh cnJpZXIucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc25kaW8u cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1zeXN0ZW0tbm9kZWpzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtn cy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tdGltZTY0LnBhdGNoCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0td2Vi cnRjLWluY2x1ZGUucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIv ZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtcjAucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtc2l6ZV90 LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNo ZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtbGlidnB4LnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3Vw cG9ydC5wYXRjaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9w YXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN3aWZ0c2hhZGVyLnBhdGNoCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQWRkLWEt c2NyaXB0LXRvLWxpc3QtcGF0Y2gtdGFyZ2V0cy5wYXRjaC5wYXRjaAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLUJ1aWxkLWZpeGVz LnBhdGNoLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L3BhdGNoZXMvZWxlY3Ryb24tZG9udC1hc3N1bWUtcHl0aG9uLWlzLXB5dGhvbjIucGF0Y2gKIGNy ZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJv bi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRjaGVzLnBhdGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJz ZC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1m aWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5jYwogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5o CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVz L3NuZGlvX291dHB1dC5jYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvZWxlY3Ryb24xMi9m aWxlcy9zbmRpby1maWxlcy9zbmRpb19vdXRwdXQuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL21lZGlhX2F1ZGlvX2xpbnV4X2F1ZGlv X21hbmFnZXJfbGludXguY2MucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0 cm9uMTIvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfQlVJ TEQuZ24ucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv c25kaW8tcGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfYXVkaW9fQlVJTEQuZ24u cGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8t cGF0Y2hlcy9zcmNfM3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVkaWFfX29wdGlvbnMuZ25pLnBh dGNoCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL3RlbXBsYXRlCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjcGtncy9lbGVjdHJvbjEyL3VwZGF0ZQoKZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tZGVmYXVsdC1wdGhy ZWFkLXN0YWNrc2l6ZS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNo ZXMvY2hyb21pdW0tZGVmYXVsdC1wdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjE2ZTRkMjFlNmVkOAotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tZGVmYXVs dC1wdGhyZWFkLXN0YWNrc2l6ZS5wYXRjaApAQCAtMCwwICsxLDI5IEBACistLS0gYmFzZS90aHJl YWRpbmcvcGxhdGZvcm1fdGhyZWFkX2xpbnV4LmNjLm9yaWcKKysrKyBiYXNlL3RocmVhZGluZy9w bGF0Zm9ybV90aHJlYWRfbGludXguY2MKK0BAIC05OSArOTksMiBAQCBzaXplX3QgR2V0RGVmYXVs dFRocmVhZFN0YWNrU2l6ZShjb25zdCBwCistICByZXR1cm4gMDsKKysgIC8vIHVzZSA4bWIgbGlr ZSBnbGliYyB0byBhdm9pZCBydW5uaW5nIG91dCBvZiBzcGFjZQorKyAgcmV0dXJuICgxIDw8IDIz KTsKKy0tLSBjaHJvbWUvYXBwL3NodXRkb3duX3NpZ25hbF9oYW5kbGVyc19wb3NpeC5jYy5vcmln CisrKysgY2hyb21lL2FwcC9zaHV0ZG93bl9zaWduYWxfaGFuZGxlcnNfcG9zaXguY2MKK0BAIC0x ODQsMTEgKzE4NCwxOSBAQAorICAgZ19zaHV0ZG93bl9waXBlX3JlYWRfZmQgPSBwaXBlZmRbMF07 CisgICBnX3NodXRkb3duX3BpcGVfd3JpdGVfZmQgPSBwaXBlZmRbMV07CisgI2lmICFkZWZpbmVk KEFERFJFU1NfU0FOSVRJWkVSKQorKyMgaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICBjb25zdCBz aXplX3Qga1NodXRkb3duRGV0ZWN0b3JUaHJlYWRTdGFja1NpemUgPSBQVEhSRUFEX1NUQUNLX01J TiAqIDI7CisrIyBlbHNlCisrICBjb25zdCBzaXplX3Qga1NodXRkb3duRGV0ZWN0b3JUaHJlYWRT dGFja1NpemUgPSBQVEhSRUFEX1NUQUNLX01JTiAqIDIgKiA4OyAvLyBtYXRjaCB1cCBtdXNscyAy ayBQVEhSRUFEX1NUQUNLX01JTiB3aXRoIGdsaWJjcyAxNmsKKysjIGVuZGlmCisgI2Vsc2UKKyAg IC8vIEFTYW4gaW5zdHJ1bWVudGF0aW9uIGJsb2F0cyB0aGUgc3RhY2sgZnJhbWVzLCBzbyB3ZSBu ZWVkIHRvIGluY3JlYXNlIHRoZQorICAgLy8gc3RhY2sgc2l6ZSB0byBhdm9pZCBoaXR0aW5nIHRo ZSBndWFyZCBwYWdlLgorKyMgaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICBjb25zdCBzaXplX3Qg a1NodXRkb3duRGV0ZWN0b3JUaHJlYWRTdGFja1NpemUgPSBQVEhSRUFEX1NUQUNLX01JTiAqIDQ7 CisrIyBlbHNlCisrICBjb25zdCBzaXplX3Qga1NodXRkb3duRGV0ZWN0b3JUaHJlYWRTdGFja1Np emUgPSBQVEhSRUFEX1NUQUNLX01JTiAqIDQgKiA4OyAvLyBtYXRjaCB1cCBtdXNscyAyayBQVEhS RUFEX1NUQUNLX01JTiB3aXRoIGdsaWJjcyAxNmsKKysjIGVuZGlmCisgI2VuZGlmCisgICBTaHV0 ZG93bkRldGVjdG9yKiBkZXRlY3RvciA9IG5ldyBTaHV0ZG93bkRldGVjdG9yKAorICAgICAgIGdf c2h1dGRvd25fcGlwZV9yZWFkX2ZkLCBzaHV0ZG93bl9jYWxsYmFjaywgdGFza19ydW5uZXIpOwor CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9t aXVtLW11c2wtY3Jhc2hwYWQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1w YXRjaGVzL2Nocm9taXVtLW11c2wtY3Jhc2hwYWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4wM2EwYzA2ZjNjYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtY3Jhc2hwYWQu cGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbGludXgvcHRyYWNlci5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbGludXgvcHRyYWNlci5jYworQEAgLTI2LDYgKzI2LDcgQEAKKyAKKyAjaWYgZGVmaW5l ZChBUkNIX0NQVV9YODZfRkFNSUxZKQorICNpbmNsdWRlIDxhc20vbGR0Lmg+CisrI2luY2x1ZGUg PGFzbS9wdHJhY2UtYWJpLmg+CisgI2VuZGlmCisgCisgbmFtZXNwYWNlIGNyYXNocGFkIHsKKwor LS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMvcHRyYWNl LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3B0 cmFjZS5oCitAQCAtMTcsNyArMTcsOSBAQAorIAorICNpbmNsdWRlX25leHQgPHN5cy9wdHJhY2Uu aD4KKyAKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgor KyNlbmRpZgorIAorIC8vIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcu Y2dpP2lkPTIyNDMzCisgI2lmICFkZWZpbmVkKFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEpICYmICFk ZWZpbmVkKFBUX0dFVF9USFJFQURfQVJFQSkgJiYgXApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWZpeGVzLnBhdGNoIGIvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWZpeGVzLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYWVjNjBmZDYyMDky Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hl cy9jaHJvbWl1bS1tdXNsLWZpeGVzLnBhdGNoCkBAIC0wLDAgKzEsMjAyIEBACistLS0gLi90aGly ZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0Lmgub3JpZworKysrIC4vdGhpcmRfcGFy dHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitAQCAtMTEyNyw2ICsxMTI3LDEyIEBACisg I2lmbmRlZiBfX05SX2ZhbGxvY2F0ZQorICNkZWZpbmUgX19OUl9mYWxsb2NhdGUgICAgICAgICAg Mjg1CisgI2VuZGlmCisrCisrI3VuZGVmIF9fTlJfcHJlYWQKKysjZGVmaW5lIF9fTlJfcHJlYWQg X19OUl9wcmVhZDY0CisrI3VuZGVmIF9fTlJfcHdyaXRlCisrI2RlZmluZSBfX05SX3B3cml0ZSBf X05SX3B3cml0ZTY0CisrCisgLyogRW5kIG9mIHg4Ni02NCBkZWZpbml0aW9ucyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICNlbGlmIGRlZmluZWQo X19taXBzX18pCisgI2lmIF9NSVBTX1NJTSA9PSBfTUlQU19TSU1fQUJJMzIKKy0tLSAuL3RoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29t bW9uL3Vjb250ZXh0X3JlYWRlci5oLm9yaWcKKysrKyAuL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRl ci5oCitAQCAtMzcsNiArMzcsMTAgQEAKKyAjaW5jbHVkZSAiY29tbW9uL21lbW9yeS5oIgorICNp bmNsdWRlICJnb29nbGVfYnJlYWtwYWQvY29tbW9uL21pbmlkdW1wX2Zvcm1hdC5oIgorIAorKyNp ZiAhZGVmaW5lZChfX0dMSUJDX18pCisrCSNkZWZpbmUgX2xpYmNfZnBzdGF0ZSBfZnBzdGF0ZQor KyNlbmRpZgorKworIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQgeworIAorIC8vIFdyYXBzIHBs YXRmb3JtLWRlcGVuZGVudCBpbXBsZW1lbnRhdGlvbnMgb2YgYWNjZXNzb3JzIHRvIHVjb250ZXh0 X3Qgc3RydWN0cy4KKy0tLSAuL3RoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21t b24vbGludXgvZWxmX2NvcmVfZHVtcC5oLm9yaWcKKysrKyAuL3RoaXJkX3BhcnR5L2JyZWFrcGFk L2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oCitAQCAtMzYsNiArMzYs NyBAQAorICNpbmNsdWRlIDxlbGYuaD4KKyAjaW5jbHVkZSA8bGluay5oPgorICNpbmNsdWRlIDxz dGRkZWYuaD4KKysjaW5jbHVkZSA8bGltaXRzLmg+CisgCisgI2luY2x1ZGUgImNvbW1vbi9tZW1v cnlfcmFuZ2UuaCIKKyAKKy0tLSAuL3NhbmRib3gvbGludXgvc3VpZC9wcm9jZXNzX3V0aWwuaC5v cmlnCisrKysgLi9zYW5kYm94L2xpbnV4L3N1aWQvcHJvY2Vzc191dGlsLmgKK0BAIC0xMSw2ICsx MSwxNCBAQAorICNpbmNsdWRlIDxzdGRib29sLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgor IAorKy8vIFNvbWUgYWRkaXRpb25hbCBmdW5jdGlvbnMKKysjIGRlZmluZSBURU1QX0ZBSUxVUkVf UkVUUlkoZXhwcmVzc2lvbikgXAorKwkoX19leHRlbnNpb25fXwkJCVwKKysJICh7IGxvbmcgaW50 IF9fcmVzdWx0OwkJXAorKwkgIGRvIF9fcmVzdWx0ID0gKGxvbmcgaW50KSAoZXhwcmVzc2lvbik7 IFwKKysJICB3aGlsZSAoX19yZXN1bHQgPT0gLTFMICYmIGVycm5vID09IEVJTlRSKTsgXAorKwkg IF9fcmVzdWx0OyB9KSkKKysKKyAvLyBUaGlzIGFkanVzdHMgL3Byb2MvcHJvY2Vzcy9vb21fc2Nv cmVfYWRqIHNvIHRoZSBMaW51eCBPT00ga2lsbGVyCisgLy8gd2lsbCBwcmVmZXIgY2VydGFpbiBw cm9jZXNzIHR5cGVzIG92ZXIgb3RoZXJzLiBUaGUgcmFuZ2UgZm9yIHRoZQorIC8vIGFkanVzdG1l bnQgaXMgWy0xMDAwLCAxMDAwXSwgd2l0aCBbMCwgMTAwMF0gYmVpbmcgdXNlciBhY2Nlc3NpYmxl LgorLS0tIC4vc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjLm9yaWcJMjAyMC0wNC0x MiAwODoyNjo0MC4xODQxNTkyMTcgLTA0MDAKKysrKyAuL3NhbmRib3gvbGludXgvc2VjY29tcC1i cGYvdHJhcC5jYwkyMDIwLTA0LTEyIDA4OjQ2OjE2LjczNzE5MTIyMiAtMDQwMAorQEAgLTE3NCw3 ICsxNzQsNyBAQAorICAgLy8gSWYgdGhlIHZlcnNpb24gb2YgZ2xpYmMgZG9lc24ndCBpbmNsdWRl IHRoaXMgaW5mb3JtYXRpb24gaW4KKyAgIC8vIHNpZ2luZm9fdCAob2xkZXIgdGhhbiAyLjE3KSwg d2UgbmVlZCB0byBleHBsaWNpdGx5IGNvcHkgaXQKKyAgIC8vIGludG8gYW4gYXJjaF9zaWdzeXMg c3RydWN0dXJlLgorLSAgbWVtY3B5KCZzaWdzeXMsICZpbmZvLT5fc2lmaWVsZHMsIHNpemVvZihz aWdzeXMpKTsKKysgIG1lbWNweSgmc2lnc3lzLCAmaW5mby0+X19zaWZpZWxkcywgc2l6ZW9mKHNp Z3N5cykpOworICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9fbWlwc19fKQorLS0tIC4vdGhpcmRf cGFydHkvZmZtcGVnL2xpYmF2dXRpbC9jcHUuYy5vcmlnCisrKysgLi90aGlyZF9wYXJ0eS9mZm1w ZWcvbGliYXZ1dGlsL2NwdS5jCitAQCAtMzgsNyArMzgsNiBAQAorICNpbmNsdWRlIDxzeXMvcGFy YW0uaD4KKyAjZW5kaWYKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9z eXNjdGwuaD4KKyAjZW5kaWYKKyAjaWYgSEFWRV9VTklTVERfSAorICNpbmNsdWRlIDx1bmlzdGQu aD4KK2RpZmYgLS1naXQgYS9jaHJvbWUvYnJvd3Nlci9tZXRyaWNzL2Nocm9tZV9icm93c2VyX21h aW5fZXh0cmFfcGFydHNfbWV0cmljcy5jYyBiL2Nocm9tZS9icm93c2VyL21ldHJpY3MvY2hyb21l X2Jyb3dzZXJfbWFpbl9leHRyYV9wYXJ0c19tZXRyaWNzLmNjCistLS0gY2hyb21lL2Jyb3dzZXIv bWV0cmljcy9jaHJvbWVfYnJvd3Nlcl9tYWluX2V4dHJhX3BhcnRzX21ldHJpY3MuY2Mub3JpZwky MDIxLTAzLTEwIDA3OjIzOjAwLjE0NTgxMDA4OCAtMDUwMAorKysrIGNocm9tZS9icm93c2VyL21l dHJpY3MvY2hyb21lX2Jyb3dzZXJfbWFpbl9leHRyYV9wYXJ0c19tZXRyaWNzLmNjCTIwMjEtMDMt MTAgMTA6NTc6MTkuNDA1OTYyNjcxIC0wNTAwCitAQCAtNTUsNyArNTUsOSBAQAorIC8vIFRPRE8o Y3JidWcuY29tLzEwNTIzOTcpOiBSZXZpc2l0IHRoZSBtYWNybyBleHByZXNzaW9uIG9uY2UgYnVp bGQgZmxhZyBzd2l0Y2gKKyAvLyBvZiBsYWNyb3MtY2hyb21lIGlzIGNvbXBsZXRlLgorICNpZiBk ZWZpbmVkKE9TX0xJTlVYKSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1NfTEFDUk9TKQorKyNpZiBk ZWZpbmVkKF9fR0xJQkNfXykKKyAjaW5jbHVkZSA8Z251L2xpYmMtdmVyc2lvbi5oPgorKyNlbmRp ZgorIAorICNpbmNsdWRlICJiYXNlL2xpbnV4X3V0aWwuaCIKKyAjaW5jbHVkZSAiYmFzZS9zdHJp bmdzL3N0cmluZ19zcGxpdC5oIgorQEAgLTMxNiw3ICszMTgsNyBAQAorIHZvaWQgUmVjb3JkTGlu dXhHbGliY1ZlcnNpb24oKSB7CisgLy8gVE9ETyhjcmJ1Zy5jb20vMTA1MjM5Nyk6IFJldmlzaXQg dGhlIG1hY3JvIGV4cHJlc3Npb24gb25jZSBidWlsZCBmbGFnIHN3aXRjaAorIC8vIG9mIGxhY3Jv cy1jaHJvbWUgaXMgY29tcGxldGUuCistI2lmIGRlZmluZWQoT1NfTElOVVgpIHx8IEJVSUxERkxB RyhJU19DSFJPTUVPU19MQUNST1MpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSB8fCBCVUlMREZM QUcoSVNfQ0hST01FT1NfTEFDUk9TKQorICAgYmFzZTo6VmVyc2lvbiB2ZXJzaW9uKGdudV9nZXRf bGliY192ZXJzaW9uKCkpOworIAorICAgVU1BTGludXhHbGliY1ZlcnNpb24gZ2xpYmNfdmVyc2lv bl9yZXN1bHQgPSBVTUFfTElOVVhfR0xJQkNfTk9UX1BBUlNFQUJMRTsKKy0tLSBzZXJ2aWNlcy9k ZXZpY2Uvc2VyaWFsL3NlcmlhbF9pb19oYW5kbGVyX3Bvc2l4LmNjLm9yaWcJMjAxOS0wNy0wMyAx MDo1NzozMi41NjgxNzE4MzUgLTA0MDAKKysrKyBzZXJ2aWNlcy9kZXZpY2Uvc2VyaWFsL3Nlcmlh bF9pb19oYW5kbGVyX3Bvc2l4LmNjCTIwMTktMDctMDMgMTA6NTc6MTYuODY3OTgzMDMxIC0wNDAw CitAQCAtNiw2ICs2LDcgQEAKKyAKKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisgI2luY2x1ZGUg PHRlcm1pb3MuaD4KKysjaW5jbHVkZSA8YXNtLWdlbmVyaWMvaW9jdGxzLmg+CisgCisgI2luY2x1 ZGUgPGFsZ29yaXRobT4KKyAjaW5jbHVkZSA8dXRpbGl0eT4KK2RpZmYgLS1naXQgYS90aGlyZF9w YXJ0eS9vdHMvaW5jbHVkZS9vcGVudHlwZS1zYW5pdGlzZXIuaCBiL3RoaXJkX3BhcnR5L290cy9p bmNsdWRlL29wZW50eXBlLXNhbml0aXNlci5oCistLS0gdGhpcmRfcGFydHkvb3RzL2luY2x1ZGUv b3BlbnR5cGUtc2FuaXRpc2VyLmgKKysrKyB0aGlyZF9wYXJ0eS9vdHMvaW5jbHVkZS9vcGVudHlw ZS1zYW5pdGlzZXIuaAorQEAgLTIwLDYgKzIwLDcgQEAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0 IHVpbnQ2NF90OworICNkZWZpbmUgaHRvbmwoeCkgX2J5dGVzd2FwX3Vsb25nICh4KQorICNkZWZp bmUgaHRvbnMoeCkgX2J5dGVzd2FwX3VzaG9ydCAoeCkKKyAjZWxzZQorKyNpbmNsdWRlIDxzeXMv dHlwZXMuaD4KKyAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisgI2luY2x1ZGUgPHN0ZGludC5oPgor ICNlbmRpZgorLS0tIC4vYmFzZS9sb2dnaW5nLmNjLm9yaWcJMjAyMS0wMS0yMCAxMjowOTo1NC4y MjcwMzg3NTcgLTA1MDAKKysrKyAuL2Jhc2UvbG9nZ2luZy5jYwkyMDIxLTAxLTIwIDEyOjI0OjMy LjYwMDMwMTM1MSAtMDUwMAorQEAgLTU1Nyw4ICs1NTcsNyBAQAorIAorIExvZ01lc3NhZ2U6On5M b2dNZXNzYWdlKCkgeworICAgc2l6ZV90IHN0YWNrX3N0YXJ0ID0gc3RyZWFtXy50ZWxscCgpOwor LSNpZiAhZGVmaW5lZChPRkZJQ0lBTF9CVUlMRCkgJiYgIWRlZmluZWQoT1NfTkFDTCkgJiYgIWRl ZmluZWQoX19VQ0xJQkNfXykgJiYgXAorLSAgICAhZGVmaW5lZChPU19BSVgpCisrI2lmICFkZWZp bmVkKE9GRklDSUFMX0JVSUxEKSAmJiAhZGVmaW5lZChPU19OQUNMKSAmJiBkZWZpbmVkKF9fR0xJ QkNfXykKKyAgIGlmIChzZXZlcml0eV8gPT0gTE9HR0lOR19GQVRBTCAmJiAhYmFzZTo6ZGVidWc6 OkJlaW5nRGVidWdnZWQoKSkgeworICAgICAvLyBJbmNsdWRlIGEgc3RhY2sgdHJhY2Ugb24gYSBm YXRhbCwgdW5sZXNzIGEgZGVidWdnZXIgaXMgYXR0YWNoZWQuCisgICAgIGJhc2U6OmRlYnVnOjpT dGFja1RyYWNlIHN0YWNrX3RyYWNlOworLS0tIC4vdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2Mub3JpZworKysrIC4vdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvcGxhdGZvcm0vd3RmL3N0YWNrX3V0aWwuY2MKK0BAIC0yOCw3ICsyOCw3IEBACisg Ly8gRklYTUU6IE9uIE1hYyBPU1ggYW5kIExpbnV4LCB0aGlzIG1ldGhvZCBjYW5ub3QgZXN0aW1h dGUgc3RhY2sgc2l6ZQorIC8vIGNvcnJlY3RseSBmb3IgdGhlIG1haW4gdGhyZWFkLgorIAorLSNl bGlmIGRlZmluZWQoX19HTElCQ19fKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpIHx8IGRlZmluZWQo T1NfRlJFRUJTRCkgfHwgXAorKyNlbGlmIGRlZmluZWQoT1NfTElOVVgpIHx8IGRlZmluZWQoT1Nf QU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCisgICAgIGRlZmluZWQoT1NfRlVD SFNJQSkKKyAgIC8vIHB0aHJlYWRfZ2V0YXR0cl9ucCgpIGNhbiBmYWlsIGlmIHRoZSB0aHJlYWQg aXMgbm90IGludm9rZWQgYnkKKyAgIC8vIHB0aHJlYWRfY3JlYXRlKCkgKGUuZy4sIHRoZSBtYWlu IHRocmVhZCBvZiBibGlua191bml0dGVzdHMpLgorQEAgLTk2LDcgKzk2LDcgQEAKKyB9CisgCisg dm9pZCogR2V0U3RhY2tTdGFydCgpIHsKKy0jaWYgZGVmaW5lZChfX0dMSUJDX18pIHx8IGRlZmlu ZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8fCBcCisrI2lmIGRlZmluZWQo T1NfTElOVVgpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkgfHwgZGVmaW5lZChPU19GUkVFQlNEKSB8 fCBcCisgICAgIGRlZmluZWQoT1NfRlVDSFNJQSkKKyAgIHB0aHJlYWRfYXR0cl90IGF0dHI7Cisg ICBpbnQgZXJyb3I7CistLS0gLi9uZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYy5v cmlnCisrKysgLi9uZXQvZG5zL2Ruc19jb25maWdfc2VydmljZV9wb3NpeC5jYworQEAgLTEyMiw3 ICsxMjIsNyBAQAorICAgQ29uZmlnUGFyc2VQb3NpeFJlc3VsdCByZXN1bHQ7CisgICBjb25maWct PnVuaGFuZGxlZF9vcHRpb25zID0gZmFsc2U7CisgLy8gVE9ETyhmdWNoc2lhKTogVXNlIHJlc19u aW5pdCgpIHdoZW4gaXQncyBpbXBsZW1lbnRlZCBvbiBGdWNoc2lhLgorLSNpZiBkZWZpbmVkKE9T X09QRU5CU0QpIHx8IGRlZmluZWQoT1NfRlVDSFNJQSkKKysjaWYgZGVmaW5lZChPU19PUEVOQlNE KSB8fCBkZWZpbmVkKE9TX0ZVQ0hTSUEpIHx8IGRlZmluZWQoX0dOVV9TT1VSQ0UpCisgICAvLyBO b3RlOiByZXNfbmluaXQgaW4gZ2xpYmMgYWx3YXlzIHJldHVybnMgMCBhbmQgc2V0cyBSRVNfSU5J VC4KKyAgIC8vIHJlc19pbml0IGJlaGF2ZXMgdGhlIHNhbWUgd2F5LgorICAgbWVtc2V0KCZfcmVz LCAwLCBzaXplb2YoX3JlcykpOworLS0tIHRoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3Bh cnR5L2xsdm0tc3ViemVyby9saWIvU3VwcG9ydC9Vbml4L1NpZ25hbHMuaW5jLm9yaWcJMjAxOS0w Ni0xOCAxMTo1MToxNy4wMDAwMDAwMDAgLTA0MDAKKysrKyB0aGlyZF9wYXJ0eS9zd2lmdHNoYWRl ci90aGlyZF9wYXJ0eS9sbHZtLXN1Ynplcm8vbGliL1N1cHBvcnQvVW5peC9TaWduYWxzLmluYwky MDE5LTA3LTAzIDEyOjMyOjUwLjkzODc1ODE4NiAtMDQwMAorQEAgLTI1LDcgKzI1LDcgQEAKKyAj aW5jbHVkZSAibGx2bS9TdXBwb3J0L3Jhd19vc3RyZWFtLmgiCisgI2luY2x1ZGUgPGFsZ29yaXRo bT4KKyAjaW5jbHVkZSA8c3RyaW5nPgorLSNpZiBIQVZFX0VYRUNJTkZPX0gKKysjaWYgSEFWRV9F WEVDSU5GT19IICYmIGRlZmluZWQoX19HTElCQ19fKQorICMgaW5jbHVkZSA8ZXhlY2luZm8uaD4g ICAgICAgICAvLyBGb3IgYmFja3RyYWNlKCkuCisgI2VuZGlmCisgI2lmIEhBVkVfU0lHTkFMX0gK K0BAIC01Miw2ICs1Miw3IEBACisgI2luY2x1ZGUgPHVud2luZC5oPgorICNlbHNlCisgI3VuZGVm IEhBVkVfX1VOV0lORF9CQUNLVFJBQ0UKKysjdW5kZWYgSEFWRV9CQUNLVFJBQ0UKKyAjZW5kaWYK KyAjZW5kaWYKKyAKKy0tLSB0aGlyZF9wYXJ0eS9uYXNtL25hc21saWIvcmVhbHBhdGguYy5vcmln CTIwMTktMDctMDMgMTI6MjM6MDUuMDIxOTQ5ODk1IC0wNDAwCisrKysgdGhpcmRfcGFydHkvbmFz bS9uYXNtbGliL3JlYWxwYXRoLmMJMjAxOS0wNy0wMyAxMjoyNDoyNC4yNDY4NjI2NjUgLTA0MDAK K0BAIC00OSw3ICs0OSw3IEBACisgCisgI2luY2x1ZGUgIm5hc21saWIuaCIKKyAKKy0jaWZkZWYg SEFWRV9DQU5PTklDQUxJWkVfRklMRV9OQU1FCisrI2lmIGRlZmluZWQoX19HTElCQ19fKQorIAor IC8qCisgICogR05VLXNwZWNpZmljLCBidXQgYXZvaWRzIHRoZSByZWFscGF0aCguLi4sIE5VTEwp CistLS0gbW9qby9wdWJsaWMvY3BwL3BsYXRmb3JtL25hbWVkX3BsYXRmb3JtX2NoYW5uZWxfcG9z aXguY2Mub3JpZwkyMDIwLTA3LTE5IDEzOjI2OjEwLjY5NjE3MTA2MyAtMDQwMAorKysrIG1vam8v cHVibGljL2NwcC9wbGF0Zm9ybS9uYW1lZF9wbGF0Zm9ybV9jaGFubmVsX3Bvc2l4LmNjCTIwMjAt MDctMTkgMTM6MjY6NDMuNjgwMTUxNzE0IC0wNDAwCitAQCAtNSw2ICs1LDcgQEAKKyAjaW5jbHVk ZSAibW9qby9wdWJsaWMvY3BwL3BsYXRmb3JtL25hbWVkX3BsYXRmb3JtX2NoYW5uZWwuaCIKKyAK KyAjaW5jbHVkZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2luY2x1ZGUgPHN5 cy9zb2NrZXQuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1 bS1tdXNsLWhhY2tzLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hl cy9jaHJvbWl1bS1tdXNsLWhhY2tzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uZWRjMWIwNjBkZmIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVj dHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWhhY2tzLnBhdGNoCkBAIC0w LDAgKzEsMjIgQEAKKy0tLSBiYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNjLm9yaWcJMjAxOC0xMi0w OCAxNDoxMToyNS4zMDM0NzUxMTYgKzAxMDAKKysrKyBiYXNlL2RlYnVnL3N0YWNrX3RyYWNlLmNj CTIwMTgtMTItMDggMTg6MDA6NDMuODc0OTQ2OTk5ICswMTAwCitAQCAtMjI5LDcgKzIyOSw3IEBA CisgfQorIHN0ZDo6c3RyaW5nIFN0YWNrVHJhY2U6OlRvU3RyaW5nV2l0aFByZWZpeChjb25zdCBj aGFyKiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CisgICBzdGQ6OnN0cmluZ3N0cmVhbSBzdHJlYW07 CistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgT3V0cHV0VG9TdHJlYW1XaXRoUHJl Zml4KCZzdHJlYW0sIHByZWZpeF9zdHJpbmcpOworICNlbmRpZgorICAgcmV0dXJuIHN0cmVhbS5z dHIoKTsKKy0tLSBuZXQvc29ja2V0L3VkcF9zb2NrZXRfcG9zaXguY2Mub3JpZwkyMDE5LTA3LTAz IDEzOjEzOjQ2LjAzNDM0MjY0OSAtMDQwMAorKysrIG5ldC9zb2NrZXQvdWRwX3NvY2tldF9wb3Np eC5jYwkyMDE5LTA3LTAzIDEzOjIzOjUzLjExNzA4MTkwOSAtMDQwMAorQEAgLTExOTQsNyArMTE5 NCw3IEBACisgICAgIG1zZ19pb3YtPnB1c2hfYmFjayh7Y29uc3RfY2FzdDxjaGFyKj4oYnVmZmVy LT5kYXRhKCkpLCBidWZmZXItPmxlbmd0aCgpfSk7CisgICBtc2d2ZWMtPnJlc2VydmUoYnVmZmVy cy5zaXplKCkpOworICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBidWZmZXJzLnNpemUoKTsgaisr KQorLSAgICBtc2d2ZWMtPnB1c2hfYmFjayh7e251bGxwdHIsIDAsICZtc2dfaW92W2pdLCAxLCBu dWxscHRyLCAwLCAwfSwgMH0pOworKyAgICBtc2d2ZWMtPnB1c2hfYmFjayh7e251bGxwdHIsIDAs ICZtc2dfaW92W2pdLCAxLCAwLCAwLCAwfSwgMH0pOworICAgaW50IHJlc3VsdCA9IEhBTkRMRV9F SU5UUihTZW5kbW1zZyhmZCwgJm1zZ3ZlY1swXSwgYnVmZmVycy5zaXplKCksIDApKTsKKyAgIFNl bmRSZXN1bHQgc2VuZF9yZXN1bHQoMCwgMCwgc3RkOjptb3ZlKGJ1ZmZlcnMpKTsKKyAgIGlmIChy ZXN1bHQgPCAwKSB7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1w YXRjaGVzL2Nocm9taXVtLW11c2wtbGliYysrLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1tdXNsLWxpYmMrKy5wYXRjaApuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjA4OGQ4MGZhZDUyYgotLS0gL2Rldi9udWxsCisr KyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1s aWJjKysucGF0Y2gKQEAgLTAsMCArMSw1NSBAQAorZGlmZiAtLWdpdCBhL2J1aWxkdG9vbHMvdGhp cmRfcGFydHkvbGliYysrL3RydW5rL2luY2x1ZGUvbG9jYWxlIGIvYnVpbGR0b29scy90aGlyZF9w YXJ0eS9saWJjKysvdHJ1bmsvaW5jbHVkZS9sb2NhbGUKK2luZGV4IGQyOWEyZGMuLjUzOTk4YmMg MTAwNjQ0CistLS0gYnVpbGR0b29scy90aGlyZF9wYXJ0eS9saWJjKysvdHJ1bmsvaW5jbHVkZS9s b2NhbGUKKysrKyBidWlsZHRvb2xzL3RoaXJkX3BhcnR5L2xpYmMrKy90cnVuay9pbmNsdWRlL2xv Y2FsZQorQEAgLTExLDYgKzExLDE1IEBACisgI2lmbmRlZiBfTElCQ1BQX0xPQ0FMRQorICNkZWZp bmUgX0xJQkNQUF9MT0NBTEUKKyAKKysvLyBtdXNsIGRvZXNuJ3QgZGVmaW5lIF9sICh3aXRoIGxv Y2FsZSkgdmFyaWFudHMgb2YgZnVuY3Rpb25zLCBhcyBpdCBvbmx5IHN1cHBvcnRzIFVURi04Lgor Ky8vIHdlIGNhbiBzaW1wbHkgbWFrZSBtYWNyb3MgdGhhdCB3aWxsIGNhbGwgdGhlIG5vbi1sb2Nh bGF0ZWQgb25lcyBpZiB3ZSdyZSB1c2luZyBtdXNsLCBvciByYXRoZXIgbm90LXVzaW5nIHNvbWV0 aGluZyB0aGF0IGhhcyB0aGUgX2wgb25lcy4KKysvLyBjb3VsZG4ndCBmaW5kIGFueXRoaW5nIGds aWJjICNkZWZpbmVzIHdoZW4gaXQgY3JlYXRlcyBzdHJ0b3VsbF9sICh0aGF0IGl0IGRvZXNuJ3Qg dW5kZWZpbmUgYSBmZXcgbGluZXMgbGF0ZXIpLCBzbyBsZXQncyB0ZXN0IGFnYWluc3QgZ2xpYmMg YW5kIGdsaWJjLWxpa2VzLgorKy8vIGFsbW9zdCBhbGwgZ2xpYmMtbGlrZXMgZGVmaW5lIF9fR05V X0xJQlJBUllfXyBmb3IgY29tcGF0aWJpbGl0eQorKyNpZm5kZWYgX19HTlVfTElCUkFSWV9fCisr I2RlZmluZSBzdHJ0b3VsbF9sKEEsIEIsIEMsIExPQykgc3RydG91bGwoQSxCLEMpCisrI2RlZmlu ZSBzdHJ0b2xsX2woQSwgQiwgQywgTE9DKSBzdHJ0b2xsKEEsQixDKQorKyNlbmRpZgorKworIC8q CisgICAgIGxvY2FsZSBzeW5vcHNpcworIAorZGlmZiAtLWdpdCBhL2J1aWxkdG9vbHMvdGhpcmRf cGFydHkvbGliYysrL3RydW5rL3NyYy9sb2NhbGUuY3BwIGIvYnVpbGR0b29scy90aGlyZF9wYXJ0 eS9saWJjKysvdHJ1bmsvc3JjL2xvY2FsZS5jcHAKK2luZGV4IDQxNjNjMmMuLjNkMTkwMmEgMTAw NjQ0CistLS0gYS9idWlsZHRvb2xzL3RoaXJkX3BhcnR5L2xpYmMrKy90cnVuay9zcmMvbG9jYWxl LmNwcAorKysrIGJ1aWxkdG9vbHMvdGhpcmRfcGFydHkvbGliYysrL3RydW5rL3NyYy9sb2NhbGUu Y3BwCitAQCAtMTAyOCwxMSArMTAyOCwxMSBAQCBjdHlwZTxjaGFyPjo6ZG9fbmFycm93KGNvbnN0 IGNoYXJfdHlwZSogbG93LCBjb25zdCBjaGFyX3R5cGUqIGhpZ2gsIGNoYXIgZGZhdWx0LAorICAg ICByZXR1cm4gbG93OworIH0KKyAKKy0jaWYgZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKysvLyNp ZiBkZWZpbmVkKF9fRU1TQ1JJUFRFTl9fKQorIGV4dGVybiAiQyIgY29uc3QgdW5zaWduZWQgc2hv cnQgKiogX19jdHlwZV9iX2xvYygpOworIGV4dGVybiAiQyIgY29uc3QgaW50ICoqIF9fY3R5cGVf dG9sb3dlcl9sb2MoKTsKKyBleHRlcm4gIkMiIGNvbnN0IGludCAqKiBfX2N0eXBlX3RvdXBwZXJf bG9jKCk7CistI2VuZGlmCisrLy8jZW5kaWYKKyAKKyAjaWZkZWYgX0xJQkNQUF9QUk9WSURFU19E RUZBVUxUX1JVTkVfVEFCTEUKKyBjb25zdCBjdHlwZTxjaGFyPjo6bWFzayoKK0BAIC0xMTM2LDEy ICsxMTM2LDEwIEBAIGN0eXBlPGNoYXI+OjpjbGFzc2ljX3RhYmxlKCkgIF9OT0VYQ0VQVAorICNl bGlmIGRlZmluZWQoX0FJWCkKKyAgICAgcmV0dXJuIChjb25zdCB1bnNpZ25lZCBpbnQgKilfX2xj X2N0eXBlX3B0ci0+b2JqLT5tYXNrOworICNlbHNlCistICAgIC8vIFBsYXRmb3JtIG5vdCBzdXBw b3J0ZWQ6IGFib3J0IHNvIHRoZSBwZXJzb24gZG9pbmcgdGhlIHBvcnQga25vd3Mgd2hhdCB0bwor LSAgICAvLyBmaXgKKy0jIHdhcm5pbmcgIGN0eXBlPGNoYXI+OjpjbGFzc2ljX3RhYmxlKCkgaXMg bm90IGltcGxlbWVudGVkCistICAgIHByaW50ZigiY3R5cGU8Y2hhcj46OmNsYXNzaWNfdGFibGUo KSBpcyBub3QgaW1wbGVtZW50ZWRcbiIpOworLSAgICBhYm9ydCgpOworLSAgICByZXR1cm4gTlVM TDsKKysvLyBub3Qgc3VyZSBhbnkgb3RoZXIgbGliYyBsaWtlIHRoaXMgZXhpc3RzLCBidXQgdGhl cmUgaXMgbm8gd2F5IHRvIGRpZmZlcmVudGlhdGUgbXVzbCBhcyBvZiByaWdodCBub3cKKysvLyB0 byBiZSBmYWlyLCB3aXRoIHRoZSBjaGFuZ2UgYWJvdmUsIHRoaXMgc2hvdWxkIGFsd2F5cyB3b3Jr CisrLy8gYWxzbywgI3dhcm5pbmcgaXMgYSBnY2MgZXh0ZW5zaW9uCisrICAgIHJldHVybiAoY29u c3QgdW5zaWduZWQgbG9uZyAqKSpfX2N0eXBlX2JfbG9jKCk7CisgI2VuZGlmCisgfQorICNlbmRp ZgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJv bWl1bS1tdXNsLXNhbmRib3gucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1w YXRjaGVzL2Nocm9taXVtLW11c2wtc2FuZGJveC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjIzMGJiN2JiZDI5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zYW5kYm94LnBh dGNoCkBAIC0wLDAgKzEsOTIgQEAKKy0tLSAuL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVs cGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjLm9yaWcJMjAxOS0wNy0wMyAx MTo1MzoyMS4yMTM0Nzk3MzYgLTA0MDAKKysrKyAuL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmNjCTIwMTktMDctMDMgMTE6 NTc6MDEuMzA0OTk4MjUzIC0wNDAwCitAQCAtMTQwLDMxICsxNDAsMTQgQEAKKyBSZXN1bHRFeHBy IFJlc3RyaWN0Q2xvbmVUb1RocmVhZHNBbmRFUEVSTUZvcmsoKSB7CisgICBjb25zdCBBcmc8dW5z aWduZWQgbG9uZz4gZmxhZ3MoMCk7CisgCistICAvLyBUT0RPKG1kZW1wc2t5KTogRXh0ZW5kIERT TCB0byBzdXBwb3J0IChmbGFncyAmIH5tYXNrMSkgPT0gbWFzazIuCistICBjb25zdCB1aW50NjRf dCBrQW5kcm9pZENsb25lTWFzayA9IENMT05FX1ZNIHwgQ0xPTkVfRlMgfCBDTE9ORV9GSUxFUyB8 CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1NJR0hBTkQgfCBD TE9ORV9USFJFQUQgfAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDTE9O RV9TWVNWU0VNOworLSAgY29uc3QgdWludDY0X3Qga09ic29sZXRlQW5kcm9pZENsb25lTWFzayA9 IGtBbmRyb2lkQ2xvbmVNYXNrIHwgQ0xPTkVfREVUQUNIRUQ7CisrICBjb25zdCBpbnQgcmVxdWly ZWQgPSBDTE9ORV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5EIHwK KysgICAgICAgICAgICAgICAgICAgICAgIENMT05FX1RIUkVBRCB8IENMT05FX1NZU1ZTRU07Cisr ICBjb25zdCBpbnQgc2FmZSA9IENMT05FX1NFVFRMUyB8IENMT05FX1BBUkVOVF9TRVRUSUQgfCBD TE9ORV9DSElMRF9DTEVBUlRJRCB8IAorKyAgICAgICAgICAgICAgICAgICBDTE9ORV9ERVRBQ0hF RDsKKysgIGNvbnN0IEJvb2xFeHByIHRocmVhZF9jbG9uZV9vayA9IChmbGFncyZ+c2FmZSk9PXJl cXVpcmVkOworIAorLSAgY29uc3QgdWludDY0X3Qga0dsaWJjUHRocmVhZEZsYWdzID0KKy0gICAg ICBDTE9ORV9WTSB8IENMT05FX0ZTIHwgQ0xPTkVfRklMRVMgfCBDTE9ORV9TSUdIQU5EIHwgQ0xP TkVfVEhSRUFEIHwKKy0gICAgICBDTE9ORV9TWVNWU0VNIHwgQ0xPTkVfU0VUVExTIHwgQ0xPTkVf UEFSRU5UX1NFVFRJRCB8IENMT05FX0NISUxEX0NMRUFSVElEOworLSAgY29uc3QgQm9vbEV4cHIg Z2xpYmNfdGVzdCA9IGZsYWdzID09IGtHbGliY1B0aHJlYWRGbGFnczsKKy0KKy0gIGNvbnN0IEJv b2xFeHByIGFuZHJvaWRfdGVzdCA9CistICAgICAgQW55T2YoZmxhZ3MgPT0ga0FuZHJvaWRDbG9u ZU1hc2ssIGZsYWdzID09IGtPYnNvbGV0ZUFuZHJvaWRDbG9uZU1hc2ssCistICAgICAgICAgICAg ZmxhZ3MgPT0ga0dsaWJjUHRocmVhZEZsYWdzKTsKKy0KKy0gIC8vIFRoZSBmb2xsb3dpbmcgdHdv IGZsYWdzIGFyZSB0aGUgdHdvIGltcG9ydGFudCBmbGFncyBpbiBhbnkgdmZvcmstZW11bGF0aW5n CistICAvLyBjbG9uZSBjYWxsLiBFUEVSTSBhbnkgY2xvbmUgY2FsbCB0aGF0IGNvbnRhaW5zIGJv dGggb2YgdGhlbS4KKy0gIGNvbnN0IHVpbnQ2NF90IGtJbXBvcnRhbnRDbG9uZVZmb3JrRmxhZ3Mg PSBDTE9ORV9WRk9SSyB8IENMT05FX1ZNOworLQorLSAgY29uc3QgQm9vbEV4cHIgaXNfZm9ya19v cl9jbG9uZV92Zm9yayA9CistICAgICAgQW55T2YoKGZsYWdzICYgKENMT05FX1ZNIHwgQ0xPTkVf VEhSRUFEKSkgPT0gMCwKKy0gICAgICAgICAgICAoZmxhZ3MgJiBrSW1wb3J0YW50Q2xvbmVWZm9y a0ZsYWdzKSA9PSBrSW1wb3J0YW50Q2xvbmVWZm9ya0ZsYWdzKTsKKy0KKy0gIHJldHVybiBJZihJ c0FuZHJvaWQoKSA/IGFuZHJvaWRfdGVzdCA6IGdsaWJjX3Rlc3QsIEFsbG93KCkpCistICAgICAg LkVsc2VJZihpc19mb3JrX29yX2Nsb25lX3Zmb3JrLCBFcnJvcihFUEVSTSkpCisrICByZXR1cm4g SWYodGhyZWFkX2Nsb25lX29rLCBBbGxvdygpKQorKyAgICAgIC5FbHNlSWYoKGZsYWdzICYgKENM T05FX1ZNIHwgQ0xPTkVfVEhSRUFEKSkgPT0gMCwgRXJyb3IoRVBFUk0pKQorICAgICAgIC5FbHNl KENyYXNoU0lHU1lTQ2xvbmUoKSk7CisgfQorIAorLS0tIC4vc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYy5vcmlnCisrKysgLi9zYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtNDk0LDYgKzQ5NCw3IEBACisg ICAgIGNhc2UgX19OUl9tbG9jazoKKyAgICAgY2FzZSBfX05SX211bmxvY2s6CisgICAgIGNhc2Ug X19OUl9tdW5tYXA6CisrICAgIGNhc2UgX19OUl9tcmVtYXA6CisgICAgICAgcmV0dXJuIHRydWU7 CisgICAgIGNhc2UgX19OUl9tYWR2aXNlOgorICAgICBjYXNlIF9fTlJfbWluY29yZToKK0BAIC01 MDksNyArNTEwLDYgQEAKKyAgICAgY2FzZSBfX05SX21vZGlmeV9sZHQ6CisgI2VuZGlmCisgICAg IGNhc2UgX19OUl9tcHJvdGVjdDoKKy0gICAgY2FzZSBfX05SX21yZW1hcDoKKyAgICAgY2FzZSBf X05SX21zeW5jOgorICAgICBjYXNlIF9fTlJfbXVubG9ja2FsbDoKKyAgICAgY2FzZSBfX05SX3Jl YWRhaGVhZDoKK2RpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMv c3lzY2FsbF9zZXRzLmNjIGIvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2Nh bGxfc2V0cy5jYworaW5kZXggODBmMDJjMC4uMjFmYmUyMSAxMDA2NDQKKy0tLSBzYW5kYm94L2xp bnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworQEAgLTM3Myw2ICszNzMsNyBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRlYXRoKGludCBzeXNu bykgeworICNpZiBkZWZpbmVkKF9faTM4Nl9fKQorICAgICBjYXNlIF9fTlJfd2FpdHBpZDoKKyAj ZW5kaWYKKysgICAgY2FzZSBfX05SX3NldF90aWRfYWRkcmVzczoKKyAgICAgICByZXR1cm4gdHJ1 ZTsKKyAgICAgY2FzZSBfX05SX2Nsb25lOiAgLy8gU2hvdWxkIGJlIHBhcmFtZXRlci1yZXN0cmlj dGVkLgorICAgICBjYXNlIF9fTlJfc2V0bnM6ICAvLyBQcml2aWxlZ2VkLgorQEAgLTM4NSw3ICsz ODYsNiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRQcm9jZXNzU3RhcnRPckRlYXRoKGlu dCBzeXNubykgeworICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18p IHx8IGRlZmluZWQoX19taXBzX18pCisgICAgIGNhc2UgX19OUl9zZXRfdGhyZWFkX2FyZWE6Cisg I2VuZGlmCistICAgIGNhc2UgX19OUl9zZXRfdGlkX2FkZHJlc3M6CisgICAgIGNhc2UgX19OUl91 bnNoYXJlOgorICNpZiAhZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18p CisgICAgIGNhc2UgX19OUl92Zm9yazoKKy0tLSBzYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVu ZGVyZXJfcG9saWN5X2xpbnV4LmNjCisrKysgc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX3JlbmRl cmVyX3BvbGljeV9saW51eC5jYworQEAgLTEwMCw5ICsxMDAsOSBAQAorICAgICBjYXNlIF9fTlJf dW5hbWU6CisgICAgIGNhc2UgX19OUl9zY2hlZF9nZXRwYXJhbToKKyAgICAgY2FzZSBfX05SX3Nj aGVkX2dldHNjaGVkdWxlcjoKKysgICAgY2FzZSBfX05SX3NjaGVkX3NldHNjaGVkdWxlcjoKKyAg ICAgICByZXR1cm4gQWxsb3coKTsKKyAgICAgY2FzZSBfX05SX3NjaGVkX2dldGFmZmluaXR5Ogor LSAgICBjYXNlIF9fTlJfc2NoZWRfc2V0c2NoZWR1bGVyOgorICAgICAgIHJldHVybiBSZXN0cmlj dFNjaGVkVGFyZ2V0KEdldFBvbGljeVBpZCgpLCBzeXNubyk7CisgICAgIGNhc2UgX19OUl9wcmxp bWl0NjQ6CisgICAgICAgLy8gU2VlIGNyYnVnLmNvbS82NjI0NTAgYW5kIHNldHJsaW1pdCBjb21t ZW50IGFib3ZlLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0 Y2hlcy9jaHJvbWl1bS1tdXNsLXN5bmMucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv bXVzbC1wYXRjaGVzL2Nocm9taXVtLW11c2wtc3luYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLmJjMmZhMTkzN2JkMwotLS0gL2Rldi9udWxsCisrKyBiL3Ny Y3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbXVzbC1zeW5jLnBh dGNoCkBAIC0wLDAgKzEsMzAgQEAKKy0tLSB0aGlyZF9wYXJ0eS9saWJzeW5jL3NyYy9pbmNsdWRl L3N5bmMvc3luYy5oLm9yaWcJMjAyMC0wMi0yMSAwNzo0MzozMy43NDgzMjUxNzUgLTA1MDAKKysr KyB0aGlyZF9wYXJ0eS9saWJzeW5jL3NyYy9pbmNsdWRlL3N5bmMvc3luYy5oCTIwMjAtMDItMjEg MDc6NDQ6MDcuMjg4MzI4Nzg0IC0wNTAwCitAQCAtMTksMTIgKzE5LDE2IEBACisgI2lmbmRlZiBf X1NZU19DT1JFX1NZTkNfSAorICNkZWZpbmUgX19TWVNfQ09SRV9TWU5DX0gKKyAKKysjaWYgZGVm aW5lZChfX0dMSUJDX18pCisgI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgorKyNlbmRpZgorICNpbmNs dWRlIDxzdGRpbnQuaD4KKyAKKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKyAKKy1fX0JFR0lO X0RFQ0xTCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrZXh0ZXJuICJDIiB7CisrI2VuZGlmCisgCisg c3RydWN0IHN5bmNfbGVnYWN5X21lcmdlX2RhdGEgeworICBpbnQzMl90IGZkMjsKK0BAIC0xNTgs NiArMTYyLDggQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN5 bmNfcHRfaW5mbyAqaXRyKTsKKyB2b2lkIHN5bmNfZmVuY2VfaW5mb19mcmVlKHN0cnVjdCBzeW5j X2ZlbmNlX2luZm9fZGF0YSAqaW5mbyk7CisgCistX19FTkRfREVDTFMKKysjaWZkZWYgX19jcGx1 c3BsdXMKKyt9CisrI2VuZGlmCisgCisgI2VuZGlmIC8qIF9fU1lTX0NPUkVfU1lOQ19IICovCmRp ZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVt LW5vLW1hbGxpbmZvLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hl cy9jaHJvbWl1bS1uby1tYWxsaW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjI1NGExZjYzMmRhNQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21pdW0tbm8tbWFsbGluZm8ucGF0Y2gKQEAg LTAsMCArMSw1NCBAQAorLS0tIGJhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIu Y2Mub3JpZworKysrIGJhc2UvdHJhY2VfZXZlbnQvbWFsbG9jX2R1bXBfcHJvdmlkZXIuY2MKK0BA IC0yNDMsNyArMjQzLDcgQEAKKyAgIGFsbG9jYXRlZF9vYmplY3RzX2NvdW50ID0gbWFpbl9oZWFw X2luZm8uYmxvY2tfY291bnQ7CisgI2VsaWYgZGVmaW5lZChPU19GVUNIU0lBKQorIC8vIFRPRE8o ZnVjaHNpYSk6IFBvcnQsIHNlZSBodHRwczovL2NyYnVnLmNvbS83MDY1OTIuCistI2Vsc2UKKysj ZWxpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHN0cnVjdCBtYWxsaW5mbyBpbmZvID0gbWFsbGlu Zm8oKTsKKyAgIERDSEVDS19HRShpbmZvLmFyZW5hICsgaW5mby5oYmxraGQsIGluZm8udW9yZGJs a3MpOworIAorLS0tIGJhc2UvcHJvY2Vzcy9wcm9jZXNzX21ldHJpY3NfcG9zaXguY2Mub3JpZwky MDIwLTExLTE4IDIzOjUwOjMzLjk1ODIyMzQ5NyAtMDUwMAorKysrIGJhc2UvcHJvY2Vzcy9wcm9j ZXNzX21ldHJpY3NfcG9zaXguY2MJMjAyMC0xMS0xOCAyMzo1Mzo1Mi4wMjQ1ODkzMTYgLTA1MDAK K0BAIC0xMTksMTQgKzExOSwxNCBAQAorICAgbWFsbG9jX3N0YXRpc3RpY3NfdCBzdGF0cyA9IHsw fTsKKyAgIG1hbGxvY196b25lX3N0YXRpc3RpY3MobnVsbHB0ciwgJnN0YXRzKTsKKyAgIHJldHVy biBzdGF0cy5zaXplX2luX3VzZTsKKy0jZWxpZiBkZWZpbmVkKE9TX0xJTlVYKSB8fCBkZWZpbmVk KE9TX0NIUk9NRU9TKSB8fCBkZWZpbmVkKE9TX0FORFJPSUQpCisrI2VsaWYgZGVmaW5lZChfX0dM SUJDX18pIHx8IGRlZmluZWQoT1NfQ0hST01FT1MpIHx8IGRlZmluZWQoT1NfQU5EUk9JRCkKKyAg IHN0cnVjdCBtYWxsaW5mbyBtaW5mbyA9IG1hbGxpbmZvKCk7CisgI2lmIEJVSUxERkxBRyhVU0Vf VENNQUxMT0MpCisgICByZXR1cm4gbWluZm8udW9yZGJsa3M7CisgI2Vsc2UKKyAgIHJldHVybiBt aW5mby5oYmxraGQgKyBtaW5mby5hcmVuYTsKKyAjZW5kaWYKKy0jZWxpZiBkZWZpbmVkKE9TX0ZV Q0hTSUEpCisrI2Vsc2UKKyAgIC8vIFRPRE8oZnVjaHNpYSk6IE5vdCBjdXJyZW50bHkgZXhwb3Nl ZC4gaHR0cHM6Ly9jcmJ1Zy5jb20vNzM1MDg3LgorICAgcmV0dXJuIDA7CisgI2VuZGlmCistLS0g dGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS1zdWJ6ZXJvL2xpYi9TdXBw b3J0L1VuaXgvUHJvY2Vzcy5pbmMKKysrKyB0aGlyZF9wYXJ0eS9zd2lmdHNoYWRlci90aGlyZF9w YXJ0eS9sbHZtLXN1Ynplcm8vbGliL1N1cHBvcnQvVW5peC9Qcm9jZXNzLmluYy5vcmlnCitAQCAt ODQsNyArODQsNyBAQAorIH0KKyAKKyBzaXplX3QgUHJvY2Vzczo6R2V0TWFsbG9jVXNhZ2UoKSB7 CistI2lmIGRlZmluZWQoSEFWRV9NQUxMSU5GTykKKysjaWYgZGVmaW5lZChIQVZFX01BTExJTkZP KSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgIHN0cnVjdCBtYWxsaW5mbyBtaTsKKyAgIG1pID0g OjptYWxsaW5mbygpOworICAgcmV0dXJuIG1pLnVvcmRibGtzOworCistLS0gdGhpcmRfcGFydHkv c3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS0xMC4wL2NvbmZpZ3MvbGludXgvaW5jbHVkZS9s bHZtL0NvbmZpZy9jb25maWcuaC5vcmlnCTIwMTktMDktMzAgMTM6MDM6NDIuNTU2ODgwNTM3IC0w NDAwCisrKysgdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS0xMC4wL2Nv bmZpZ3MvbGludXgvaW5jbHVkZS9sbHZtL0NvbmZpZy9jb25maWcuaAkyMDE5LTA5LTMwIDEzOjA3 OjI3Ljk4OTgyMTIyNyAtMDQwMAorQEAgLTEyMiw3ICsxMjIsOSBAQAorIC8qICN1bmRlZiBIQVZF X01BTExDVEwgKi8KKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1hbGxpbmZv JyBmdW5jdGlvbi4gKi8KKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgI2RlZmluZSBIQVZFX01B TExJTkZPIDEKKysjZW5kaWYKKyAKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1h bGxvYy5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjZGVmaW5lIEhBVkVfTUFMTE9DX0ggMQpkaWZmIC0t Z2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL211c2wtcGF0Y2hlcy9jaHJvbWl1bS1yZXNv bHZlci5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9tdXNsLXBhdGNoZXMvY2hyb21p dW0tcmVzb2x2ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li4yOWZlMmQyZjFmM2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmls ZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLXJlc29sdmVyLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAK Ky0tLSBuZXQvZG5zL2hvc3RfcmVzb2x2ZXJfbWFuYWdlci5jYy5vcmlnCTIwMjAtMTAtMDkgMTY6 Mzk6MTIuMDY0MDY5ODM1IC0wNDAwCisrKysgbmV0L2Rucy9ob3N0X3Jlc29sdmVyX21hbmFnZXIu Y2MJMjAyMC0xMC0wOSAxNjo0Mjo0OS43MzgzMDI3NzIgLTA0MDAKK0BAIC0yNzc5LDggKzI3Nzks NyBAQAorICAgTmV0d29ya0NoYW5nZU5vdGlmaWVyOjpBZGRDb25uZWN0aW9uVHlwZU9ic2VydmVy KHRoaXMpOworICAgaWYgKHN5c3RlbV9kbnNfY29uZmlnX25vdGlmaWVyXykKKyAgICAgc3lzdGVt X2Ruc19jb25maWdfbm90aWZpZXJfLT5BZGRPYnNlcnZlcih0aGlzKTsKKy0jaWYgZGVmaW5lZChP U19QT1NJWCkgJiYgIWRlZmluZWQoT1NfQVBQTEUpICYmICFkZWZpbmVkKE9TX09QRU5CU0QpICYm IFwKKy0gICAgIWRlZmluZWQoT1NfQU5EUk9JRCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisg ICBFbnN1cmVEbnNSZWxvYWRlckluaXQoKTsKKyAjZW5kaWYKKyAKKy0tLSBuZXQvZG5zL2Ruc19y ZWxvYWRlci5jYy5vcmlnCTIwMjAtMTAtMDkgMTY6Mzk6MTIuMDY0MDY5ODM1IC0wNDAwCisrKysg bmV0L2Rucy9kbnNfcmVsb2FkZXIuY2MJMjAyMC0xMC0wOSAxNjo0NDozMC40NDI0MTk4MjMgLTA0 MDAKK0BAIC00LDkgKzQsOCBAQAorIAorICNpbmNsdWRlICJuZXQvZG5zL2Ruc19yZWxvYWRlci5o IgorIAorLSNpZiBkZWZpbmVkKE9TX1BPU0lYKSAmJiAhZGVmaW5lZChPU19BUFBMRSkgJiYgIWRl ZmluZWQoT1NfT1BFTkJTRCkgJiYgXAorLSAgICAhZGVmaW5lZChPU19BTkRST0lEKSAmJiAhZGVm aW5lZChPU19GVUNIU0lBKQorLQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKysgCisgI2luY2x1 ZGUgPHJlc29sdi5oPgorIAorICNpbmNsdWRlICJiYXNlL2xhenlfaW5zdGFuY2UuaCIKKy0tLSBu ZXQvZG5zL2hvc3RfcmVzb2x2ZXJfcHJvYy5jYy5vcmlnCTIwMjAtMTAtMDkgMTY6Mzk6MTIuMDY1 MDY5ODM2IC0wNDAwCisrKysgbmV0L2Rucy9ob3N0X3Jlc29sdmVyX3Byb2MuY2MJMjAyMC0xMC0w OSAxNjo0NTowOS42NDE0NjY2NDQgLTA0MDAKK0BAIC0xNTksOCArMTU5LDcgQEAKKyAgIGJhc2U6 OlNjb3BlZEJsb2NraW5nQ2FsbCBzY29wZWRfYmxvY2tpbmdfY2FsbChGUk9NX0hFUkUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6QmxvY2tp bmdUeXBlOjpXSUxMX0JMT0NLKTsKKyAKKy0jaWYgZGVmaW5lZChPU19QT1NJWCkgJiYgIWRlZmlu ZWQoT1NfQVBQTEUpICYmICFkZWZpbmVkKE9TX09QRU5CU0QpICYmIFwKKy0gICAgIWRlZmluZWQo T1NfQU5EUk9JRCkgJiYgIWRlZmluZWQoT1NfRlVDSFNJQSkKKysjaWYgZGVmaW5lZChfX0dMSUJD X18pCisgICBEbnNSZWxvYWRlck1heWJlUmVsb2FkKCk7CisgI2VuZGlmCisgICBiYXNlOjpPcHRp b25hbDxBZGRyZXNzSW5mbz4gYWk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmls ZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN1cHBvcnQucGF0Y2ggYi9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVzbC1wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN1 cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45MDAx YTJhODU0ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvbXVz bC1wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwx OTAgQEAKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgg c2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKK2luZGV4IGE2YWVjNTQ0ZS4u MmE0YTdmMWJjIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvYnBmX2RzbC9zZWNjb21wX21hY3Jv cy5oCisrKysgc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKK0BAIC0xNiw3 ICsxNiw3IEBACisgI2lmIGRlZmluZWQoX19taXBzX18pCisgLy8gc3lzL3VzZXIuaCBpbiBlZ2xp YmMgbWlzc2VzIHNpemVfdCBkZWZpbml0aW9uCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorLSNlbGlm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYm IGRlZmluZWQoX19HTElCQ19fKQorIC8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qgb24gcHBjNjQK KyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7CisgI2VuZGlmCitAQCAtMzYxLDEx ICszNjEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgcHRfcmVncyByZWdzX3N0cnVjdDsKKyAjZGVmaW5l IFNFQ0NPTVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0CisgI2VuZGlmCisgCistI2RlZmluZSBTRUND T01QX1JFRyhfY3R4LCBfcmVnKSAoKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5ncHJbX3JlZ10p CisrI2RlZmluZSBTRUNDT01QX1JFRyhfY3R4LCBfcmVnKSAoKChzdHJ1Y3QgcHRfcmVncyAqKShf Y3R4KS0+dWNfbWNvbnRleHQucmVncyktPmdwcltfcmVnXSkKKyAKKyAjZGVmaW5lIFNFQ0NPTVBf UkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCisgI2RlZmluZSBTRUNDT01QX1NZU0NB TEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKKy0jZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkg KF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKKysjZGVmaW5lIFNFQ0NPTVBfSVAoX2N0eCkg KChzdHJ1Y3QgcHRfcmVncyAqKShfY3R4KS0+dWNfbWNvbnRleHQucmVncyktPm5pcAorICNkZWZp bmUgU0VDQ09NUF9QQVJNMShfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCAzKQorICNkZWZpbmUgU0VD Q09NUF9QQVJNMihfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA0KQorICNkZWZpbmUgU0VDQ09NUF9Q QVJNMyhfY3R4KSBTRUNDT01QX1JFRyhfY3R4LCA1KQorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2Mgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi9zeXNjYWxs LmNjCitpbmRleCBkNTNhN2ZmNTYuLmMyOTBmMGU5MiAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKKysrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5 c2NhbGwuY2MKK0BAIC00OTksOSArNDk5LDkgQEAgdm9pZCBTeXNjYWxsOjpQdXRWYWx1ZUluVWNv bnRleHQoaW50cHRyX3QgcmV0X3ZhbCwgdWNvbnRleHRfdCogY3R4KSB7CisgICAvLyBTYW1lIGFz IE1JUFMsIG5lZWQgdG8gaW52ZXJ0IHJldCBhbmQgc2V0IGVycm9yIHJlZ2lzdGVyIChjcjAuU08p CisgICBpZiAocmV0X3ZhbCA8PSAtMSAmJiByZXRfdmFsID49IC00MDk1KSB7CisgICAgIHJldF92 YWwgPSAtcmV0X3ZhbDsKKy0gICAgY3R4LT51Y19tY29udGV4dC5yZWdzLT5jY3IgfD0gKDEgPDwg MjgpOworKyAgICAoKHN0cnVjdCBwdF9yZWdzICopY3R4LT51Y19tY29udGV4dC5yZWdzKS0+Y2Ny IHw9ICgxIDw8IDI4KTsKKyAgIH0gZWxzZSB7CistICAgIGN0eC0+dWNfbWNvbnRleHQucmVncy0+ Y2NyICY9IH4oMSA8PCAyOCk7CisrICAgICgoc3RydWN0IHB0X3JlZ3MgKiljdHgtPnVjX21jb250 ZXh0LnJlZ3MpLT5jY3IgJj0gfigxIDw8IDI4KTsKKyAgIH0KKyAjZW5kaWYKKyAgIFNFQ0NPTVBf UkVTVUxUKGN0eCkgPSBzdGF0aWNfY2FzdDxncmVnX3Q+KHJldF92YWwpOworZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5Y2xlY2xv Y2suaCB0aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvYmFzZS9pbnRlcm5hbC91bnNjYWxlZGN5 Y2xlY2xvY2suaAoraW5kZXggY2RjZTliZjguLjczZDc3ZGRhIDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2Fic2VpbC1jcHAvYWJzbC9iYXNlL2ludGVybmFsL3Vuc2NhbGVkY3ljbGVjbG9jay5oCisr KysgdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL2Jhc2UvaW50ZXJuYWwvdW5zY2FsZWRjeWNs ZWNsb2NrLmgKK0BAIC00Niw3ICs0Niw3IEBACisgCisgLy8gVGhlIGZvbGxvd2luZyBwbGF0Zm9y bXMgaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbiBvZiBhIGhhcmR3YXJlIGNvdW50ZXIuCisgI2lmIGRl ZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FhcmNo NjRfXykgfHwgXAorLSAgZGVmaW5lZChfX3Bvd2VycGNfXykgfHwgZGVmaW5lZChfX3BwY19fKSB8 fCBcCisrICAoKGRlZmluZWQoX19wb3dlcnBjX18pIHx8IGRlZmluZWQoX19wcGNfXykpICYmIGRl ZmluZWQoX19HTElCQ19fKSkgfHwgXAorICAgZGVmaW5lZChfTV9JWDg2KSB8fCBkZWZpbmVkKF9N X1g2NCkKKyAjZGVmaW5lIEFCU0xfSEFWRV9VTlNDQUxFRF9DWUNMRUNMT0NLX0lNUExFTUVOVEFU SU9OIDEKKyAjZWxzZQorLS0tIHRoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC9kZWJ1Z2dpbmcv aW50ZXJuYWwvc3RhY2t0cmFjZV9jb25maWcuaAorKysrIHRoaXJkX3BhcnR5L2Fic2VpbC1jcHAv YWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV9jb25maWcuaAorQEAgLTY0LDcgKzY0 LDcgQEAKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pCisg I2RlZmluZSBBQlNMX1NUQUNLVFJBQ0VfSU5MX0hFQURFUiBcCisgICAiYWJzbC9kZWJ1Z2dpbmcv aW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYyIKKy0jZWxpZiBkZWZpbmVkKF9fcHBjX18p IHx8IGRlZmluZWQoX19QUENfXykKKysjZWxpZiAoZGVmaW5lZChfX3BwY19fKSB8fCBkZWZpbmVk KF9fUFBDX18pKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjZGVmaW5lIEFCU0xfU1RBQ0tUUkFD RV9JTkxfSEVBREVSIFwKKyAgICJhYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3Bv d2VycGMtaW5sLmluYyIKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbiB0aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5n bgoraW5kZXggZjlhNjBlMzcuLjI1ZjNhMGI3IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFr cGFkL0JVSUxELmduCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvQlVJTEQuZ24KK0BAIC02Mzcs NiArNjM3LDcgQEAgaWYgKGlzX2xpbnV4IHx8IGlzX2FuZHJvaWQpIHsKKyAKKyAgICAgaWYgKGN1 cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKKyAgICAgICAgIGRlZmluZXMgPSBbICJIQVZFX0dFVENP TlRFWFQiIF0KKysgICAgICAgIGxpYnMgKz0gWyAidWNvbnRleHQiIF0KKyAgICAgfSBlbHNlIHsK KyAgICAgICAgIHNvdXJjZXMgKz0gWworICAgICAgICAgICAgICJicmVha3BhZC9zcmMvY29tbW9u L2xpbnV4L2JyZWFrcGFkX2dldGNvbnRleHQuUyIKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFk X2luZm8uY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9k dW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8uY2MKK2luZGV4IDAzYWZlYzdhLi4wMjY0ZWNm MSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworKysrIHRoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3RocmVh ZF9pbmZvLmNjCitAQCAtMjczLDYgKzI3Myw5IEBAIHZvaWQgVGhyZWFkSW5mbzo6RmlsbENQVUNv bnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7CisgCisgI2VsaWYgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorIAorKyNpbmNsdWRlIDxhc20vZWxmLmg+CisrI2luY2x1ZGUgPGFzbS9wdHJh Y2UuaD4KKysKKyB1aW50cHRyX3QgVGhyZWFkSW5mbzo6R2V0SW5zdHJ1Y3Rpb25Qb2ludGVyKCkg Y29uc3QgeworICAgICByZXR1cm4gbWNvbnRleHQuZ3BfcmVnc1tQVF9OSVBdOworIH0KK0BAIC0y OTAsOSArMjkzLDkgQEAgdm9pZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0 Q1BVKiBvdXQpIGNvbnN0IHsKKyAgICAgb3V0LT5jdHIgPSBtY29udGV4dC5ncF9yZWdzW1BUX0NU Ul07CisgICAgIAorICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFf UFBDX0ZQUl9DT1VOVDsgaSsrKQorLSAgICAgICAgb3V0LT5mbG9hdF9zYXZlLmZwcmVnc1tpXSA9 IG1jb250ZXh0LmZwX3JlZ3NbaV07CisrICAgICAgICBvdXQtPmZsb2F0X3NhdmUuZnByZWdzW2ld ID0gKCh1aW50NjRfdCAqKSZtY29udGV4dC5mcF9yZWdzKVtpXTsKKyAKKy0gICAgb3V0LT5mbG9h dF9zYXZlLmZwc2NyID0gbWNvbnRleHQuZnBfcmVnc1tORlBSRUctMV07CisrICAgIG91dC0+Zmxv YXRfc2F2ZS5mcHNjciA9ICgodWludDY0X3QgKikmbWNvbnRleHQuZnBfcmVncylbRUxGX05GUFJF Ry0xXTsKKyAKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENf VlJfQ09VTlQ7IGkrKykKKyAgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwK K2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9kdW1wX3dyaXRlcl9jb21tb24vdWNvbnRleHRfcmVhZGVyLmNjIHRoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0 X3JlYWRlci5jYworaW5kZXggMTA5MDQ3MGYuLmU1ODAyMzNkIDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9u L3Vjb250ZXh0X3JlYWRlci5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworQEAg LTI1Nyw2ICsyNTcsOSBAQCB2b2lkIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChSYXdD b250ZXh0Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjKSB7CisgCisgI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorIAorKyNpbmNsdWRlIDxhc20vZWxmLmg+CisrI2luY2x1ZGUgPGFz bS9wdHJhY2UuaD4KKysKKyB1aW50cHRyX3QgVUNvbnRleHRSZWFkZXI6OkdldFN0YWNrUG9pbnRl cihjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgICByZXR1cm4gdWMtPnVjX21jb250ZXh0Lmdw X3JlZ3NbTURfQ09OVEVYVF9QUEM2NF9SRUdfU1BdOworIH0KK0BAIC0yODAsOSArMjgzLDkgQEAg dm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0LCBj b25zdCB1Y29udGV4dF90KiB1YywKKyAgICAgb3V0LT5jdHIgPSB1Yy0+dWNfbWNvbnRleHQuZ3Bf cmVnc1tQVF9DVFJdOworICAgICAKKyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElO R1NBVkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKy0gICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5m cHJlZ3NbaV0gPSB1Yy0+dWNfbWNvbnRleHQuZnBfcmVnc1tpXTsKKysgICAgICAgIG91dC0+Zmxv YXRfc2F2ZS5mcHJlZ3NbaV0gPSAoKHVpbnQ2NF90ICopJnVjLT51Y19tY29udGV4dC5mcF9yZWdz KVtpXTsKKyAKKy0gICAgb3V0LT5mbG9hdF9zYXZlLmZwc2NyID0gdWMtPnVjX21jb250ZXh0LmZw X3JlZ3NbTkZQUkVHLTFdOworKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBzY3IgPSAoKHVpbnQ2NF90 ICopJnVjLT51Y19tY29udGV4dC5mcF9yZWdzKVtFTEZfTkZQUkVHLTFdOworIAorICAgICBmb3Ig KGludCBpID0gMDsgaSA8IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKQorICAg ICAgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZyW2ldID0KK2RpZmYgLS1naXQgdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9o YW5kbGVyLmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv aGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworaW5kZXggNWE3YWI1MGMuLmVlOGI4NThjIDEw MDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv aGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYworQEAg LTEwNSw2ICsxMDUsMTEgQEAKKyAjZGVmaW5lIFBSX1NFVF9QVFJBQ0VSIDB4NTk2MTZkNjEKKyAj ZW5kaWYKKyAKKysvKiBtdXNsIGhhY2ssIGNhbid0IGluY2x1ZGUgYXNtL3B0cmFjZS5oIGFzIHRo YXQgY2F1c2VzIGNvbmZsaWN0cyAqLworKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmICFk ZWZpbmVkKFBUX05JUCkKKysjZGVmaW5lIFBUX05JUCAzMgorKyNlbmRpZgorKworIG5hbWVzcGFj ZSBnb29nbGVfYnJlYWtwYWQgeworIAorIG5hbWVzcGFjZSB7CitkaWZmIC0tZ2l0IHRoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmggdGhp cmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQu aAoraW5kZXggOGUzMzVhMDkuLmIyYTBmMTU1IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKKysrKyB0aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zaWduYWxfY29udGV4dC5oCitA QCAtNDY5LDcgKzQ2OSw3IEBAIHN0cnVjdCBNQ29udGV4dDY0IHsKKyAgIFNpZ25hbFRocmVhZENv bnRleHQ2NCBncF9yZWdzOworICAgU2lnbmFsRmxvYXRDb250ZXh0NjQgIGZwX3JlZ3M7CisgICBT aWduYWxWZWN0b3JDb250ZXh0NjQgKnZfcmVnczsKKy0gIGludDY0X3Qgdm14X3Jlc2VydmVbNjld OworKyAgaW50NjRfdCB2bXhfcmVzZXJ2ZVsxMDFdOworIH07CisgCisgc3RydWN0IENvbnRleHRU cmFpdHM2NCA6IHB1YmxpYyBUcmFpdHM2NCB7CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNo cGFkL2NyYXNocGFkL3V0aWwvbGludXgvdGhyZWFkX2luZm8uaCB0aGlyZF9wYXJ0eS9jcmFzaHBh ZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVhZF9pbmZvLmgKK2luZGV4IGRlYTBkMWYzLi5iMjAz ZTViMiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4 L3RocmVhZF9pbmZvLmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xp bnV4L3RocmVhZF9pbmZvLmgKK0BAIC0zMCw2ICszMCw3IEBACisgCisgI2lmIGRlZmluZWQoQVJD SF9DUFVfUFBDNjRfRkFNSUxZKQorICNpbmNsdWRlIDxzeXMvdWNvbnRleHQuaD4KKysjaW5jbHVk ZSA8YXNtL3B0cmFjZS5oPgorICNlbmRpZgorIAorIG5hbWVzcGFjZSBjcmFzaHBhZCB7CitkaWZm IC0tZ2l0IHRoaXJkX3BhcnR5L2xzcy9saW51eF9zeXNjYWxsX3N1cHBvcnQuaCB0aGlyZF9wYXJ0 eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK2luZGV4IDk5NTVjZTQ0Li40YzFjYzQ4OCAx MDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKKysrKyB0 aGlyZF9wYXJ0eS9sc3MvbGludXhfc3lzY2FsbF9zdXBwb3J0LmgKK0BAIC00MjE2LDkgKzQyMTYs MTMgQEAgc3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICAgICB9CisgICAjZW5kaWYKKyAgICNpZiBk ZWZpbmVkKF9fTlJfZnN0YXRhdDY0KQorKyAgICAvLyBtdXNsIGRvZXMgI2RlZmluZSBmc3RhdGF0 NjQgZnN0YXRhdAorKyAgICAjdW5kZWYgZnN0YXRhdDY0CisgICAgIExTU19JTkxJTkUgX3N5c2Nh bGw0KGludCwgICBmc3RhdGF0NjQsICAgICAgICBpbnQsICAgZCwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgY2hhciAqLCAgICAgIHAsCisgICAgICAgICAgICAgICAgICAgICAgICAg IHN0cnVjdCBrZXJuZWxfc3RhdDY0ICosICAgYiwgICAgaW50LCAgIGYpCisrICAgIC8vIHNldCBp dCBiYWNrIGxpa2UgaXQgd2FzCisrICAgICNkZWZpbmUgZnN0YXRhdDY0IGZzdGF0YXQKKyAgICNl bmRpZgorICAgI2lmIGRlZmluZWQoX19OUl93YWl0cGlkKQorICAgICAvLyB3YWl0cGlkIGlzIHBv bHlmaWxsZWQgYmVsb3cgd2hlbiBub3QgYXZhaWxhYmxlLgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODgtZ2xpYmMtMi4zMy5wYXRjaCBiL3Ny Y3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg4LWdsaWJjLTIuMzMucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42NDMwNmQ1ZTQyOWUK LS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS04OC1nbGliYy0yLjMzLnBhdGNoCkBAIC0wLDAgKzEsMTQ0IEBACisjIFBhdGNoIG1hZGUg YnkgS2V2aW4gS29mbGVyIDxLZXZpbkB0aWdjYy50aWNhbGMub3JnPgorIyBodHRwczovL2J1Z3pp bGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTE5MDQ2NTIKKworZGlmZiAtdXAgY2hyb21p dW0tODguMC40MzI0Ljk2L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGlu ZV9wb2xpY3kuY2MuZnN0YXRmaXggY2hyb21pdW0tODguMC40MzI0Ljk2L3NhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKKy0tLSBzYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjLmZzdGF0Zml4CTIwMjEtMDEt MjUgMTA6MTE6NDUuNDI3NDM2Mzk4IC0wNTAwCisrKysgc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYwkyMDIxLTAxLTI1IDEwOjEyOjUxLjMzNzY5OTAw MyAtMDUwMAorQEAgLTI1Nyw2ICsyNTcsMTggQEAgUmVzdWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJ bXBsKGludCBmc19kZQorICAgICByZXR1cm4gUmVzdHJpY3RLaWxsVGFyZ2V0KGN1cnJlbnRfcGlk LCBzeXNubyk7CisgICB9CisgCisrI2lmIGRlZmluZWQoX19OUl9uZXdmc3RhdGF0KQorKyAgaWYg KHN5c25vID09IF9fTlJfbmV3ZnN0YXRhdCkgeworKyAgICByZXR1cm4gUmV3cml0ZUZzdGF0YXRT SUdTWVMoKTsKKysgIH0KKysjZW5kaWYKKysKKysjaWYgZGVmaW5lZChfX05SX2ZzdGF0YXQ2NCkK KysgIGlmIChzeXNubyA9PSBfX05SX2ZzdGF0YXQ2NCkgeworKyAgICByZXR1cm4gUmV3cml0ZUZz dGF0YXRTSUdTWVMoKTsKKysgIH0KKysjZW5kaWYKKysKKyAgIGlmIChTeXNjYWxsU2V0czo6SXNG aWxlU3lzdGVtKHN5c25vKSB8fAorICAgICAgIFN5c2NhbGxTZXRzOjpJc0N1cnJlbnREaXJlY3Rv cnkoc3lzbm8pKSB7CisgICAgIHJldHVybiBFcnJvcihmc19kZW5pZWRfZXJybm8pOworZGlmZiAt dXAgY2hyb21pdW0tODguMC40MzI0Ljk2L3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVy cy9zaWdzeXNfaGFuZGxlcnMuY2MuZnN0YXRmaXggY2hyb21pdW0tODguMC40MzI0Ljk2L3NhbmRi b3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuY2MKKy0tLSBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2lnc3lzX2hhbmRsZXJzLmNjLmZzdGF0Zml4 CTIwMjEtMDEtMjUgMTA6MTM6MTAuMTc5Nzc0MDgxIC0wNTAwCisrKysgc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5jYwkyMDIxLTAxLTI1IDEwOjE2OjE4 Ljc5MDUyNTc0NiAtMDUwMAorQEAgLTYsNiArNiw4IEBACisgCisgI2luY2x1ZGUgInNhbmRib3gv bGludXgvc2VjY29tcC1icGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuaCIKKyAKKysjaW5jbHVk ZSA8ZXJybm8uaD4KKysjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+Cisg I2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC0zNTUsNiArMzU3 LDM1IEBAIGludHB0cl90IFNJR1NZU1NjaGVkSGFuZGxlcihjb25zdCBzdHJ1Y3QKKyAgIHJldHVy biAtRU5PU1lTOworIH0KKyAKKytpbnRwdHJfdCBTSUdTWVNGc3RhdGF0SGFuZGxlcihjb25zdCBz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEmIGFyZ3MsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdm9pZCogYXV4KSB7CisrICBzd2l0Y2ggKGFyZ3MubnIpIHsKKysjaWYgZGVmaW5lZChf X05SX25ld2ZzdGF0YXQpCisrICAgIGNhc2UgX19OUl9uZXdmc3RhdGF0OgorKyNlbmRpZgorKyNp ZiBkZWZpbmVkKF9fTlJfZnN0YXRhdDY0KQorKyAgICBjYXNlIF9fTlJfZnN0YXRhdDY0OgorKyNl bmRpZgorKyNpZiBkZWZpbmVkKF9fTlJfbmV3ZnN0YXRhdCkgfHwgZGVmaW5lZChfX05SX2ZzdGF0 YXQ2NCkKKysgICAgICBpZiAoKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhciAqPihhcmdzLmFy Z3NbMV0pID09ICdcMCcKKysgICAgICAgICAgJiYgYXJncy5hcmdzWzNdID09IHN0YXRpY19jYXN0 PHVpbnQ2NF90PihBVF9FTVBUWV9QQVRIKSkgeworKyAgICAgICAgcmV0dXJuIHNhbmRib3g6OnN5 c19mc3RhdDY0KHN0YXRpY19jYXN0PGludD4oYXJncy5hcmdzWzBdKSwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PHN0cnVjdCBzdGF0NjQgKj4o YXJncy5hcmdzWzJdKSk7CisrICAgICAgfSBlbHNlIHsKKysgICAgICAgIGVycm5vID0gRUFDQ0VT OworKyAgICAgICAgcmV0dXJuIC0xOworKyAgICAgIH0KKysgICAgICBicmVhazsKKysjZW5kaWYK KysgIH0KKysKKysgIENyYXNoU0lHU1lTX0hhbmRsZXIoYXJncywgYXV4KTsKKysKKysgIC8vIFNo b3VsZCBuZXZlciBiZSByZWFjaGVkLgorKyAgUkFXX0NIRUNLKGZhbHNlKTsKKysgIHJldHVybiAt RU5PU1lTOworK30KKysKKyBicGZfZHNsOjpSZXN1bHRFeHByIENyYXNoU0lHU1lTKCkgeworICAg cmV0dXJuIGJwZl9kc2w6OlRyYXAoQ3Jhc2hTSUdTWVNfSGFuZGxlciwgTlVMTCk7CisgfQorQEAg LTM4Nyw2ICs0MTgsMTAgQEAgYnBmX2RzbDo6UmVzdWx0RXhwciBSZXdyaXRlU2NoZWRTSUdTWVMo KQorICAgcmV0dXJuIGJwZl9kc2w6OlRyYXAoU0lHU1lTU2NoZWRIYW5kbGVyLCBOVUxMKTsKKyB9 CisgCisrYnBmX2RzbDo6UmVzdWx0RXhwciBSZXdyaXRlRnN0YXRhdFNJR1NZUygpIHsKKysgIHJl dHVybiBicGZfZHNsOjpUcmFwKFNJR1NZU0ZzdGF0YXRIYW5kbGVyLCBOVUxMKTsKKyt9CisrCisg dm9pZCBBbGxvY2F0ZUNyYXNoS2V5cygpIHsKKyAjaWYgIWRlZmluZWQoT1NfTkFDTF9OT05TRkkp CisgICBpZiAoc2VjY29tcF9jcmFzaF9rZXkpCitkaWZmIC11cCBjaHJvbWl1bS04OC4wLjQzMjQu OTYvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5oLmZz dGF0Zml4IGNocm9taXVtLTg4LjAuNDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc2lnc3lzX2hhbmRsZXJzLmgKKy0tLSBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc2lnc3lzX2hhbmRsZXJzLmguZnN0YXRmaXgJMjAyMS0wMS0yNSAxMDoxNjozNi45ODI1 OTgyMzYgLTA1MDAKKysrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2lnc3lz X2hhbmRsZXJzLmgJMjAyMS0wMS0yNSAxMDoxODo0NS43MDUxMTEwMjcgLTA1MDAKK0BAIC02Miw2 ICs2MiwxMCBAQCBTQU5EQk9YX0VYUE9SVCBpbnRwdHJfdCBTSUdTWVNQdHJhY2VGYWlsCisgLy8g c2NoZWRfc2V0cGFyYW0oKSwgc2NoZWRfc2V0c2NoZWR1bGVyKCkKKyBTQU5EQk9YX0VYUE9SVCBp bnRwdHJfdCBTSUdTWVNTY2hlZEhhbmRsZXIoY29uc3QgYXJjaF9zZWNjb21wX2RhdGEmIGFyZ3Ms CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIGF1eCk7 CisrLy8gSWYgdGhlIGZzdGF0YXQgc3lzY2FsbCBpcyBhY3R1YWxseSBhIGRpc2d1aXNlZCBmc3Rh dCwgY2FsbHMgdGhlIHJlZ3VsYXIgZnN0YXQKKysvLyBzeXNjYWxsLCBvdGhlcndpc2UsIGNyYXNo ZXMgaW4gdGhlIHNhbWUgd2F5IGFzIENyYXNoU0lHU1lTX0hhbmRsZXIuCisrU0FOREJPWF9FWFBP UlQgaW50cHRyX3QgU0lHU1lTRnN0YXRhdEhhbmRsZXIoY29uc3Qgc3RydWN0IGFyY2hfc2VjY29t cF9kYXRhJiBhcmdzLCAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB2b2lkKiBhdXgpOworIAorIC8vIFZhcmlhbnRzIG9mIHRoZSBhYm92ZSBmdW5jdGlvbnMg Zm9yIHVzZSB3aXRoIGJwZl9kc2wuCisgU0FOREJPWF9FWFBPUlQgYnBmX2RzbDo6UmVzdWx0RXhw ciBDcmFzaFNJR1NZUygpOworQEAgLTcyLDYgKzc2LDcgQEAgU0FOREJPWF9FWFBPUlQgYnBmX2Rz bDo6UmVzdWx0RXhwciBDcmFzaAorIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIg Q3Jhc2hTSUdTWVNGdXRleCgpOworIFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIg Q3Jhc2hTSUdTWVNQdHJhY2UoKTsKKyBTQU5EQk9YX0VYUE9SVCBicGZfZHNsOjpSZXN1bHRFeHBy IFJld3JpdGVTY2hlZFNJR1NZUygpOworK1NBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4 cHIgUmV3cml0ZUZzdGF0YXRTSUdTWVMoKTsKKyAKKyAvLyBBbGxvY2F0ZXMgYSBjcmFzaCBrZXkg c28gdGhhdCBTZWNjb21wIGluZm9ybWF0aW9uIGNhbiBiZSByZWNvcmRlZC4KKyB2b2lkIEFsbG9j YXRlQ3Jhc2hLZXlzKCk7CitkaWZmIC11cCBjaHJvbWl1bS04OC4wLjQzMjQuOTYvc2FuZGJveC9s aW51eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBwZXJzLmNjLmZzdGF0Zml4IGNocm9taXVtLTg4LjAu NDMyNC45Ni9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuY2MKKy0tLSBz YW5kYm94L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuY2MuZnN0YXRmaXgJMjAyMS0w MS0yNSAxMDoxODo1My4zMDcxNDEzMTEgLTA1MDAKKysrKyBzYW5kYm94L2xpbnV4L3NlcnZpY2Vz L3N5c2NhbGxfd3JhcHBlcnMuY2MJMjAyMS0wMS0yNSAxMDoxOTo0Ni45ODIzNTUyOTMgLTA1MDAK K0BAIC0yNjEsNCArMjYxLDEzIEBAIGludCBzeXNfc2lnYWN0aW9uKGludCBzaWdudW0sCisgCisg I2VuZGlmICAvLyBkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpCisgCisrU0FOREJPWF9FWFBPUlQg aW50IHN5c19mc3RhdDY0KGludCBmZCwgc3RydWN0IHN0YXQ2NCAqYnVmKQorK3sKKysjaWYgZGVm aW5lZChfX05SX2ZzdGF0NjQpCisrICAgIHJldHVybiBzeXNjYWxsKF9fTlJfZnN0YXQ2NCwgZmQs IGJ1Zik7CisrI2Vsc2UKKysgICAgcmV0dXJuIHN5c2NhbGwoX19OUl9mc3RhdCwgZmQsIGJ1Zik7 CisrI2VuZGlmCisrfQorKworIH0gIC8vIG5hbWVzcGFjZSBzYW5kYm94CitkaWZmIC11cCBjaHJv bWl1bS04OC4wLjQzMjQuOTYvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9zeXNjYWxsX3dyYXBwZXJz LmguZnN0YXRmaXggY2hyb21pdW0tODguMC40MzI0Ljk2L3NhbmRib3gvbGludXgvc2VydmljZXMv c3lzY2FsbF93cmFwcGVycy5oCistLS0gc2FuZGJveC9saW51eC9zZXJ2aWNlcy9zeXNjYWxsX3dy YXBwZXJzLmguZnN0YXRmaXgJMjAyMS0wMS0yNSAxMDoxOTo1My4xMTUzNzk3NDEgLTA1MDAKKysr KyBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuaAkyMDIxLTAxLTI1IDEw OjIwOjQ1LjQ4NTU4ODQyMSAtMDUwMAorQEAgLTE3LDYgKzE3LDcgQEAgc3RydWN0IHNvY2tfZnBy b2c7Cisgc3RydWN0IHJsaW1pdDY0OworIHN0cnVjdCBjYXBfaGRyOworIHN0cnVjdCBjYXBfZGF0 YTsKKytzdHJ1Y3Qgc3RhdDY0OworIAorIG5hbWVzcGFjZSBzYW5kYm94IHsKKyAKK0BAIC04NCw2 ICs4NSw5IEBAIFNBTkRCT1hfRVhQT1JUIGludCBzeXNfc2lnYWN0aW9uKGludCBzaWcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3Qgc2lnYWN0aW9uKiBhY3Qs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHNpZ2FjdGlvbiogb2xk YWN0KTsKKyAKKysvLyBSZWNlbnQgZ2xpYmMgcmV3cml0ZXMgZnN0YXQgdG8gZnN0YXRhdC4KKytT QU5EQk9YX0VYUE9SVCBpbnQgc3lzX2ZzdGF0NjQoaW50IGZkLCBzdHJ1Y3Qgc3RhdDY0ICpidWYp OworKworIH0gIC8vIG5hbWVzcGFjZSBzYW5kYm94CisgCisgI2VuZGlmICAvLyBTQU5EQk9YX0xJ TlVYX1NFUlZJQ0VTX1NZU0NBTExfV1JBUFBFUlNfSF8KZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LUFYVHJlZVNlcmlhbGl6ZXItaW5jbHVk ZS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LUFY VHJlZVNlcmlhbGl6ZXItaW5jbHVkZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMDAuLjczNzJlNDRkMTU0NwotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LUFYVHJlZVNlcmlhbGl6ZXItaW5jbHVk ZS5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGMwNmRkYzQ5MzViZjEzOTQ4MTJjMDExY2U1 ZDkzODk4Y2NjOGE1M2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTdGVwaGFuIEhh cnRtYW5uIDxzdGhhMDlAZ29vZ2xlbWFpbC5jb20+CitEYXRlOiBUdWUsIDA5IEZlYiAyMDIxIDE5 OjIyOjU3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIElXWVU6IGFkZCBjdGltZSBmb3Igc3RkOjp0 aW1lCisKK0J1ZzogTm9uZQorQ2hhbmdlLUlkOiBJOGJkYWU0MzIwOTk4NDI0MmI5ZjVlNTM4ZDc0 ZWNlNDQwOWI2NWUzYworUmV2aWV3ZWQtb246IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2ds ZXNvdXJjZS5jb20vYy9jaHJvbWl1bS9zcmMvKy8yNjc5NjEwCitSZXZpZXdlZC1ieTogS2F0aWUg RGVrdGFyIDxrYXRpZUBjaHJvbWl1bS5vcmc+CitDb21taXQtUXVldWU6IEthdGllIERla3RhciA8 a2F0aWVAY2hyb21pdW0ub3JnPgorQ3ItQ29tbWl0LVBvc2l0aW9uOiByZWZzL2hlYWRzL21hc3Rl ckB7Izg1MjI4N30KKy0tLQorCitkaWZmIC0tZ2l0IGEvdWkvYWNjZXNzaWJpbGl0eS9heF90cmVl X3NlcmlhbGl6ZXIuaCBiL3VpL2FjY2Vzc2liaWxpdHkvYXhfdHJlZV9zZXJpYWxpemVyLmgKK2lu ZGV4IGRkYmJkY2QuLjE3OTBlM2IgMTAwNjQ0CistLS0gdWkvYWNjZXNzaWJpbGl0eS9heF90cmVl X3NlcmlhbGl6ZXIuaAorKysrIHVpL2FjY2Vzc2liaWxpdHkvYXhfdHJlZV9zZXJpYWxpemVyLmgK K0BAIC04LDYgKzgsNyBAQAorICNpbmNsdWRlIDxzdGRkZWYuaD4KKyAjaW5jbHVkZSA8c3RkaW50 Lmg+CisgCisrI2luY2x1ZGUgPGN0aW1lPgorICNpbmNsdWRlIDxvc3RyZWFtPgorICNpbmNsdWRl IDx1bm9yZGVyZWRfbWFwPgorICNpbmNsdWRlIDx1bm9yZGVyZWRfc2V0PgpkaWZmIC0tZ2l0IGEv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODktYWRkLWRlcGVuZGVu Y3ktb24tb3B1cy1pbi13ZWJjb2RlY3MucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS04OS1hZGQtZGVwZW5kZW5jeS1vbi1vcHVzLWluLXdlYmNvZGVjcy5w YXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmMyNTg5Nzc5MWQ5 NQotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2No cm9taXVtLTg5LWFkZC1kZXBlbmRlbmN5LW9uLW9wdXMtaW4td2ViY29kZWNzLnBhdGNoCkBAIC0w LDAgKzEsNDMgQEAKK0Zyb20gYjViODBkZjdkYWZiYThjYWZhNGM2YzBiYTIxNTNkZmRhNDY3ZGZj OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXBoYW4gSGFydG1hbm4gPHN0aGEw OUBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjcgSmFuIDIwMjEgMjA6MzE6NTEgKzAwMDAK K1N1YmplY3Q6IFtQQVRDSF0gYWRkIGRlcGVuZGVuY3kgb24gb3B1cyBpbiB3ZWJjb2RlY3MKKwor d2ViY29kZWNzIHVzZXMgb3B1cywgYnV0IGRlcGVuZGVuY3kgaXMgbWlzc2luZy4gV2l0aCB1bmJ1 bmRsZWQKK29wdXMgbGlicmFyeSBidWlsZCBmYWlscywgYmVjYXVzZSBpbmNsdWRlIHBhdGggaXMg aW5jb21wbGV0ZS4KKworQnVnOiAxMTY5NzU4CitDaGFuZ2UtSWQ6IEkwMTM2OTM2NDMyNzQ2MTE5 NmE4MTAwMjQ3OTYzNmNmNDUwMTc2NjlhCitSZXZpZXdlZC1vbjogaHR0cHM6Ly9jaHJvbWl1bS1y ZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8rLzI2NDQ2MjMKK1Jldmlld2Vk LWJ5OiBEYWxlIEN1cnRpcyA8ZGFsZWN1cnRpc0BjaHJvbWl1bS5vcmc+CitDb21taXQtUXVldWU6 IERhbGUgQ3VydGlzIDxkYWxlY3VydGlzQGNocm9taXVtLm9yZz4KK0NyLUNvbW1pdC1Qb3NpdGlv bjogcmVmcy9oZWFkcy9tYXN0ZXJAeyM4NDc3NTR9CistLS0KKyB0aGlyZF9wYXJ0eS9ibGluay9y ZW5kZXJlci9tb2R1bGVzL3dlYmNvZGVjcy9CVUlMRC5nbiB8IDEgKworIHRoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL21vZHVsZXMvd2ViY29kZWNzL0RFUFMgICAgIHwgMSArCisgMiBmaWxlcyBj aGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL21vZHVsZXMvd2ViY29kZWNzL0JVSUxELmduIGIvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvbW9kdWxlcy93ZWJjb2RlY3MvQlVJTEQuZ24KK2luZGV4IGZkZjRjYTBmYWZjNzIu LjAxYTdiZjgwOWZmY2EgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9k dWxlcy93ZWJjb2RlY3MvQlVJTEQuZ24KKysrKyB0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9t b2R1bGVzL3dlYmNvZGVjcy9CVUlMRC5nbgorQEAgLTY1LDYgKzY1LDcgQEAgYmxpbmtfbW9kdWxl c19zb3VyY2VzKCJ3ZWJjb2RlY3MiKSB7CisgICAgICIvL21lZGlhL21vam8vY2xpZW50cyIsCisg ICAgICIvL21lZGlhL21vam8vbW9qb20iLAorICAgICAiLy90aGlyZF9wYXJ0eS9saWJ5dXY6bGli eXV2IiwKKysgICAgIi8vdGhpcmRfcGFydHkvb3B1cyIsCisgICBdCisgICBpZiAobWVkaWFfdXNl X29wZW5oMjY0KSB7CisgICAgIGRlcHMgKz0gWyAiLy90aGlyZF9wYXJ0eS9vcGVuaDI2NDplbmNv ZGVyIiBdCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy93 ZWJjb2RlY3MvREVQUyBiL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvd2ViY29k ZWNzL0RFUFMKK2luZGV4IGI4ZGQ1OTZkYThjYWYuLmVhMTkxOWQxMjIwNWEgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy93ZWJjb2RlY3MvREVQUworKysrIHRo aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvd2ViY29kZWNzL0RFUFMKK0BAIC0xOSw2 ICsxOSw3IEBAIGluY2x1ZGVfcnVsZXMgPSBbCisgCisgICAgICIrdGhpcmRfcGFydHkvbGlieXV2 IiwKKyAgICAgIit0aGlyZF9wYXJ0eS9vcGVuaDI2NCIsCisrICAgICIrdGhpcmRfcGFydHkvb3B1 cyIsCisgCisgICAgICIrdWkvZ2Z4L2NvbG9yX3NwYWNlLmgiLAorICAgICAiK3VpL2dmeC9nZW9t ZXRyeS9yZWN0LmgiLApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNo ZXMvY2hyb21pdW0tODktZGF3bi1pbmNsdWRlLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tODktZGF3bi1pbmNsdWRlLnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTg3NmJhMjBlYjUxCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODktZGF3bi1pbmNs dWRlLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gNWE1NmJmZThkMjgxMjUwYTFkZWVlMGQx MTZhOWZjZGU2NWI5YzI5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXBoYW4g SGFydG1hbm4gPHN0aGEwOUBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMTUgSmFuIDIwMjEg MTg6Mzc6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gSVdZVTogYWRkIHZhcmlvdXMgbWlzc2lu ZyBpbmNsdWRlcworCitzdGQ6OndlYWtfcHRyIGFuZCBzdGQ6OnNoYXJlZF9wdHIgcmVxdWlyZSBt YXAKKyppbnQqX3QgdHlwZXMgcmVxdWlyZSBjc3RkaW50CistLS0KKyB0aGlyZF9wYXJ0eS9kYXdu L3NyYy9kYXduX3dpcmUvY2xpZW50L0RldmljZS5oIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAy IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L2Rhd24vc3JjL2Rhd25f d2lyZS9jbGllbnQvRGV2aWNlLmggYi90aGlyZF9wYXJ0eS9kYXduL3NyYy9kYXduX3dpcmUvY2xp ZW50L0RldmljZS5oCitpbmRleCAzZjE2NzAwLi4xMDgyNTQ5IDEwMDY0NAorLS0tIHRoaXJkX3Bh cnR5L2Rhd24vc3JjL2Rhd25fd2lyZS9jbGllbnQvRGV2aWNlLmgKKysrKyB0aGlyZF9wYXJ0eS9k YXduL3NyYy9kYXduX3dpcmUvY2xpZW50L0RldmljZS5oCitAQCAtMjIsNyArMjIsOSBAQAorICNp bmNsdWRlICJkYXduX3dpcmUvY2xpZW50L0FwaU9iamVjdHNfYXV0b2dlbi5oIgorICNpbmNsdWRl ICJkYXduX3dpcmUvY2xpZW50L09iamVjdEJhc2UuaCIKKyAKKysjaW5jbHVkZSA8Y3N0ZGludD4K KyAjaW5jbHVkZSA8bWFwPgorKyNpbmNsdWRlIDxtZW1vcnk+CisgCisgbmFtZXNwYWNlIGRhd25f d2lyZSB7IG5hbWVzcGFjZSBjbGllbnQgeworIAorLS0gCisyLjI2LjIKKwpkaWZmIC0tZ2l0IGEv c3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tODktcXVpY2hlLWRjaGVj ay5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LXF1 aWNoZS1kY2hlY2sucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li5iMmYxNjRmYWM5YmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmls ZXMvcGF0Y2hlcy9jaHJvbWl1bS04OS1xdWljaGUtZGNoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMjkg QEAKK0Zyb20gN2NkNGVhYjBiZmNhNjE5MmYxNGQ2MTQzNDEwZTFhZTc3NGViMWMyOSBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZXBoYW4gSGFydG1hbm4gPHN0aGEwOUBnb29nbGVt YWlsLmNvbT4KK0RhdGU6IFRodSwgMzEgRGVjIDIwMjAgMTE6NTc6MjIgKzAwMDAKK1N1YmplY3Q6 IFtQQVRDSF0gR0NDOiBkbyBub3QgcGFzcyB1bmlxdWVfcHRyIHRvIERDSEVDS19ORSwgYnV0IHRo ZSBhY3R1YWwKKyBwb2ludGVyCisKK0RDSEVDS19ORSBjb21wYXJpc29uIHJlcXVpcmVzIENoZWNr T3BWYWx1ZVN0ciB0byBiZSBkZWZpbmVkIGZvciB0aGUKK3R5cGUsIG9yIHByb3ZpZGluZyBhbiBv dXRwdXQgc3RyZWFtIG9wZXJhdG9yLiBBIHVuaXF1ZV9wdHIgZG9lcyBub3QKK3Byb3ZpZGUgYW55 LiBVU0UgRENIRUNLIGluc3RlYWQuCistLS0KKyBuZXQvdGhpcmRfcGFydHkvcXVpY2hlL3NyYy9x dWljL2NvcmUvcXVpY19wYXRoX3ZhbGlkYXRvci5jYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwg MSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL25ldC90aGlyZF9w YXJ0eS9xdWljaGUvc3JjL3F1aWMvY29yZS9xdWljX3BhdGhfdmFsaWRhdG9yLmNjIGIvbmV0L3Ro aXJkX3BhcnR5L3F1aWNoZS9zcmMvcXVpYy9jb3JlL3F1aWNfcGF0aF92YWxpZGF0b3IuY2MKK2lu ZGV4IDA3MjIyMTYuLmZiMmFlYWYgMTAwNjQ0CistLS0gbmV0L3RoaXJkX3BhcnR5L3F1aWNoZS9z cmMvcXVpYy9jb3JlL3F1aWNfcGF0aF92YWxpZGF0b3IuY2MKKysrKyBuZXQvdGhpcmRfcGFydHkv cXVpY2hlL3NyYy9xdWljL2NvcmUvcXVpY19wYXRoX3ZhbGlkYXRvci5jYworQEAgLTY4LDcgKzY4 LDcgQEAgdm9pZCBRdWljUGF0aFZhbGlkYXRvcjo6T25QYXRoUmVzcG9uc2UoY29uc3QgUXVpY1Bh dGhGcmFtZUJ1ZmZlciYgcHJvYmluZ19kYXRhLAorIHZvaWQgUXVpY1BhdGhWYWxpZGF0b3I6OlN0 YXJ0UGF0aFZhbGlkYXRpb24oCisgICAgIHN0ZDo6dW5pcXVlX3B0cjxRdWljUGF0aFZhbGlkYXRp b25Db250ZXh0PiBjb250ZXh0LAorICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzdWx0RGVsZWdhdGU+ IHJlc3VsdF9kZWxlZ2F0ZSkgeworLSAgRENIRUNLX05FKG51bGxwdHIsIGNvbnRleHQpOworKyAg RENIRUNLKGNvbnRleHQpOworICAgUVVJQ19ETE9HKElORk8pIDw8ICJTdGFydCB2YWxpZGF0aW5n IHBhdGggIiA8PCAqY29udGV4dAorICAgICAgICAgICAgICAgICAgIDw8ICIgdmlhIHdyaXRlcjog IiA8PCBjb250ZXh0LT5Xcml0ZXJUb1VzZSgpOworICAgaWYgKHBhdGhfY29udGV4dF8gIT0gbnVs bHB0cikgeworLS0gCisyLjI2LjIKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tODktc2tpYS1Dcm9wUmVjdC5wYXRjaCBiL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LXNraWEtQ3JvcFJlY3QucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi45NzEyYzkyNjU4ZjYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS04 OS1za2lhLUNyb3BSZWN0LnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK2RpZmYgLS1naXQgYS90aGly ZF9wYXJ0eS9za2lhL2luY2x1ZGUvZWZmZWN0cy9Ta0ltYWdlRmlsdGVycy5oIGIvdGhpcmRfcGFy dHkvc2tpYS9pbmNsdWRlL2VmZmVjdHMvU2tJbWFnZUZpbHRlcnMuaAoraW5kZXggMDRjY2UwYS4u ZDA2YjAwNyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvZWZmZWN0cy9Ta0lt YWdlRmlsdGVycy5oCisrKysgdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2VmZmVjdHMvU2tJbWFn ZUZpbHRlcnMuaAorQEAgLTIzLDYgKzIzLDkgQEAgY2xhc3MgU2tDb2xvckZpbHRlcjsKKyBjbGFz cyBTa1BhaW50OworIGNsYXNzIFNrUmVnaW9uOworIAorK2NvbnN0ZXhwciBTa1JlY3Qga05vQ3Jv cFJlY3QgPSB7U0tfU2NhbGFyTmVnYXRpdmVJbmZpbml0eSwgU0tfU2NhbGFyTmVnYXRpdmVJbmZp bml0eSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNLX1NjYWxhckluZmluaXR5 LCBTS19TY2FsYXJJbmZpbml0eX07CisrCisgLy8gQSBzZXQgb2YgZmFjdG9yeSBmdW5jdGlvbnMg cHJvdmlkaW5nIHVzZWZ1bCBTa0ltYWdlRmlsdGVyIGVmZmVjdHMuIEZvciBpbWFnZSBmaWx0ZXJz IHRoYXQgdGFrZSBhbgorIC8vIGlucHV0IGZpbHRlciwgcHJvdmlkaW5nIG51bGxwdHIgbWVhbnMg aXQgd2lsbCBhdXRvbWF0aWNhbGx5IHVzZSB0aGUgZHluYW1pYyBzb3VyY2UgaW1hZ2UuIFRoaXMK KyAvLyBzb3VyY2UgZGVwZW5kcyBvbiBob3cgdGhlIGZpbHRlciBpcyBhcHBsaWVkLCBidXQgaXMg ZWl0aGVyIHRoZSBjb250ZW50cyBvZiBhIHNhdmVkIGxheWVyIHdoZW4KK0BAIC0zMyw4ICszNiw2 IEBAIHB1YmxpYzoKKyAgICAgLy8gdG8gdGhvc2UgdHlwZXMgYXMgYSBjcm9wIHJlY3QgZm9yIHRo ZSBpbWFnZSBmaWx0ZXIgZmFjdG9yaWVzLiBJdCdzIG5vdCBpbnRlbmRlZCB0byBiZSB1c2VkCisg ICAgIC8vIGRpcmVjdGx5LgorICAgICBzdHJ1Y3QgQ3JvcFJlY3QgeworLSAgICAgICAgc3RhdGlj IGNvbnN0ZXhwciBTa1JlY3Qga05vQ3JvcFJlY3QgPSB7U0tfU2NhbGFyTmVnYXRpdmVJbmZpbml0 eSwgU0tfU2NhbGFyTmVnYXRpdmVJbmZpbml0eSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNLX1NjYWxhckluZmluaXR5LCBTS19TY2FsYXJJbmZpbml0 eX07CisgICAgICAgICBDcm9wUmVjdCgpIDogZkNyb3BSZWN0KGtOb0Nyb3BSZWN0KSB7fQorICAg ICAgICAgLy8gSW50ZW50aW9uYWxseSBub3QgZXhwbGljaXQgc28gY2FsbGVycyBkb24ndCBoYXZl IHRvIHVzZSB0aGlzIHR5cGUgYnV0IGNhbiB1c2UgU2tJUmVjdCBvcgorICAgICAgICAgLy8gU2tS ZWN0IGFzIGRlc2lyZWQuCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvc2tpYS9zcmMvZWZmZWN0 cy9pbWFnZWZpbHRlcnMvU2tJbWFnZUZpbHRlcnMuY3BwIGIvdGhpcmRfcGFydHkvc2tpYS9zcmMv ZWZmZWN0cy9pbWFnZWZpbHRlcnMvU2tJbWFnZUZpbHRlcnMuY3BwCitpbmRleCA1MjkwYjAwLi5m Yjk3ZmMxIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L3NraWEvc3JjL2VmZmVjdHMvaW1hZ2VmaWx0 ZXJzL1NrSW1hZ2VGaWx0ZXJzLmNwcAorKysrIHRoaXJkX3BhcnR5L3NraWEvc3JjL2VmZmVjdHMv aW1hZ2VmaWx0ZXJzL1NrSW1hZ2VGaWx0ZXJzLmNwcAorQEAgLTQ3LDEwICs0Nyw2IEBAIHN0YXRp YyBTa0ltYWdlRmlsdGVyOjpDcm9wUmVjdCB0b19sZWdhY3lfY3JvcF9yZWN0KGNvbnN0IFNrSW1h Z2VGaWx0ZXJzOjpDcm9wUmVjCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6IFNrSW1hZ2VGaWx0ZXI6OkNyb3BSZWN0KFNrUmVjdDo6TWFrZUVtcHR5KCksIDB4MCk7 CisgfQorIAorLS8vIEFsbG93IGtOb0Nyb3BSZWN0IHRvIGJlIHJlZmVyZW5jZWQgKGZvciBjZXJ0 YWluIGJ1aWxkcywgZS5nLiBtYWNPUyBsaWJGdXp6ZXIgY2hyb21pdW0gdGFyZ2V0LAorLS8vIHNl ZSBjcmJ1Zy5jb20vMTEzOTcyNSkKKy1jb25zdGV4cHIgU2tSZWN0IFNrSW1hZ2VGaWx0ZXJzOjpD cm9wUmVjdDo6a05vQ3JvcFJlY3Q7CistCisgdm9pZCBTa0ltYWdlRmlsdGVyczo6UmVnaXN0ZXJG bGF0dGVuYWJsZXMoKSB7CisgICAgIFNrQWxwaGFUaHJlc2hvbGRGaWx0ZXI6OlJlZ2lzdGVyRmxh dHRlbmFibGVzKCk7CisgICAgIFNrQXJpdGhtZXRpY0ltYWdlRmlsdGVyOjpSZWdpc3RlckZsYXR0 ZW5hYmxlcygpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMv Y2hyb21pdW0tODkteDExLW96b25lLWZpeC10d28tZWRnZS1jYXNlcy5wYXRjaCBiL3NyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLTg5LXgxMS1vem9uZS1maXgtdHdvLWVk Z2UtY2FzZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43 ZmI1ODZkYTE2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS04OS14MTEtb3pvbmUtZml4LXR3by1lZGdlLWNhc2VzLnBhdGNoCkBA IC0wLDAgKzEsMTM1IEBACitGcm9tIDVlM2E3MzhiMTIwNDk0MWFhYjlmMTVjMGViM2QwNmUyMGZl ZmQ5NmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTY290dCBWaW9sZXQgPHNreUBj aHJvbWl1bS5vcmc+CitEYXRlOiBNb24sIDggTWFyIDIwMjEgMjE6MDc6MzkgKzAwMDAKK1N1Ympl Y3Q6IFtQQVRDSF0geDExL296b25lOiBmaXggdHdvIGVkZ2UgY2FzZXMKKworV2luZG93VHJlZUhv c3Q6Ok9uSG9zdE1vdmVkSW5QaXhlbHMoKSBtYXkgdHJpZ2dlciBhIG5lc3RlZCBtZXNzYWdlCits b29wICh0YWIgZHJhZ2dpbmcpLCB3aGljaCB3aGVuIHRoZSBzdGFjayB1bnJhdmVscyBtZWFucyB0 aGlzIG1heQorYmUgZGVsZXRlZC4gVGhpcyBhZGRzIGFuIGVhcmx5IG91dCBpZiB0aGlzIGhhcHBl bnMuCisKK1gxMVdob2xlU2NyZWVuTW92ZUxvb3AgaGFzIGEgc2ltaWxhciBpc3N1ZSwgaW4gc28g ZmFyIGFzIG5vdGlmeWluZwordGhlIGRlbGVnYXRlIG1heSBkZWxldGUgdGhpcy4KKworQlVHPTEx ODU0ODIKK1RFU1Q9V2luZG93VHJlZUhvc3RQbGF0Zm9ybS5EZWxldGVIb3N0RnJvbU9uSG9zdE1v dmVkSW5QaXhlbHMKKworQ2hhbmdlLUlkOiBJZWNhMWM5MGIzZTQzNThkYTUwYjMzMmFiZTI5NDFm ZGJiNTBjNWMyNQorUmV2aWV3ZWQtb246IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNv dXJjZS5jb20vYy9jaHJvbWl1bS9zcmMvKy8yNzQzNTU1CitSZXZpZXdlZC1ieTogVGhvbWFzIEFu ZGVyc29uIDx0aG9tYXNhbmRlcnNvbkBjaHJvbWl1bS5vcmc+CitDb21taXQtUXVldWU6IFNjb3R0 IFZpb2xldCA8c2t5QGNocm9taXVtLm9yZz4KK0NyLUNvbW1pdC1Qb3NpdGlvbjogcmVmcy9oZWFk cy9tYXN0ZXJAeyM4NjA4NTJ9CistLS0KKyB1aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZv cm0uY2MgICAgICAgICAgfCAxMCArKysrLQorIHVpL2F1cmEvd2luZG93X3RyZWVfaG9zdF9wbGF0 Zm9ybV91bml0dGVzdC5jYyB8IDQwICsrKysrKysrKysrKysrKysrKy0KKyB1aS9iYXNlL3gveDEx X3dob2xlX3NjcmVlbl9tb3ZlX2xvb3AuY2MgICAgICAgfCAgNCArKworIDMgZmlsZXMgY2hhbmdl ZCwgNTEgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3VpL2F1 cmEvd2luZG93X3RyZWVfaG9zdF9wbGF0Zm9ybS5jYyBiL3VpL2F1cmEvd2luZG93X3RyZWVfaG9z dF9wbGF0Zm9ybS5jYworaW5kZXggY2U4Mzk1ZmUwNy4uNzU4OTU0MjAyNiAxMDA2NDQKKy0tLSB1 aS9hdXJhL3dpbmRvd190cmVlX2hvc3RfcGxhdGZvcm0uY2MKKysrKyB1aS9hdXJhL3dpbmRvd190 cmVlX2hvc3RfcGxhdGZvcm0uY2MKK0BAIC0yMTQsMTMgKzIxNCwyMSBAQCB2b2lkIFdpbmRvd1Ry ZWVIb3N0UGxhdGZvcm06Ok9uQm91bmRzQ2hhbmdlZChjb25zdCBnZng6OlJlY3QmIG5ld19ib3Vu ZHMpIHsKKyAgIGZsb2F0IGN1cnJlbnRfc2NhbGUgPSBjb21wb3NpdG9yKCktPmRldmljZV9zY2Fs ZV9mYWN0b3IoKTsKKyAgIGZsb2F0IG5ld19zY2FsZSA9IHVpOjpHZXRTY2FsZUZhY3RvckZvck5h dGl2ZVZpZXcod2luZG93KCkpOworICAgZ2Z4OjpSZWN0IG9sZF9ib3VuZHMgPSBib3VuZHNfaW5f cGl4ZWxzXzsKKysgIGF1dG8gd2Vha19yZWYgPSBHZXRXZWFrUHRyKCk7CisgICBib3VuZHNfaW5f cGl4ZWxzXyA9IG5ld19ib3VuZHM7CistICBpZiAoYm91bmRzX2luX3BpeGVsc18ub3JpZ2luKCkg IT0gb2xkX2JvdW5kcy5vcmlnaW4oKSkKKysgIGlmIChib3VuZHNfaW5fcGl4ZWxzXy5vcmlnaW4o KSAhPSBvbGRfYm91bmRzLm9yaWdpbigpKSB7CisgICAgIE9uSG9zdE1vdmVkSW5QaXhlbHMoYm91 bmRzX2luX3BpeGVsc18ub3JpZ2luKCkpOworKyAgICAvLyBDaGFuZ2luZyB0aGUgYm91bmRzIG1h eSBkZXN0cm95IHRoaXMuCisrICAgIGlmICghd2Vha19yZWYpCisrICAgICAgcmV0dXJuOworKyAg fQorICAgaWYgKGJvdW5kc19pbl9waXhlbHNfLnNpemUoKSAhPSBvbGRfYm91bmRzLnNpemUoKSB8 fAorICAgICAgIGN1cnJlbnRfc2NhbGUgIT0gbmV3X3NjYWxlKSB7CisgICAgIHBlbmRpbmdfc2l6 ZV8gPSBnZng6OlNpemUoKTsKKyAgICAgT25Ib3N0UmVzaXplZEluUGl4ZWxzKGJvdW5kc19pbl9w aXhlbHNfLnNpemUoKSk7CisrICAgIC8vIENoYW5naW5nIHRoZSBzaXplIG1heSBkZXN0cm95IHRo aXMuCisrICAgIGlmICghd2Vha19yZWYpCisrICAgICAgcmV0dXJuOworICAgfQorICAgRENIRUNL X0dUKG9uX2JvdW5kc19jaGFuZ2VkX3JlY3Vyc2lvbl9kZXB0aF8sIDApOworICAgaWYgKC0tb25f Ym91bmRzX2NoYW5nZWRfcmVjdXJzaW9uX2RlcHRoXyA9PSAwKSB7CitkaWZmIC0tZ2l0IGEvdWkv YXVyYS93aW5kb3dfdHJlZV9ob3N0X3BsYXRmb3JtX3VuaXR0ZXN0LmNjIGIvdWkvYXVyYS93aW5k b3dfdHJlZV9ob3N0X3BsYXRmb3JtX3VuaXR0ZXN0LmNjCitpbmRleCBlZGExNGUyZjBjLi40ZGUw MzljODhhIDEwMDY0NAorLS0tIHVpL2F1cmEvd2luZG93X3RyZWVfaG9zdF9wbGF0Zm9ybV91bml0 dGVzdC5jYworKysrIHVpL2F1cmEvd2luZG93X3RyZWVfaG9zdF9wbGF0Zm9ybV91bml0dGVzdC5j YworQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgVGVzdFdpbmRvd1RyZWVIb3N0IDogcHVibGljIFdp bmRvd1RyZWVIb3N0UGxhdGZvcm0geworIC8vIE9uSG9zdFdpbGwvRGlkUHJvY2Vzc0JvdW5kc0No YW5nZS4gQWRkaXRpb25hbGx5LCB0aGlzIHRyaWdnZXJzIGEgYm91bmRzCisgLy8gY2hhbmdlIGZy b20gd2l0aGluIE9uSG9zdFJlc2l6ZWQoKS4gU3VjaCBhIHNjZW5hcmlvIGhhcHBlbnMgaW4gcHJv ZHVjdGlvbgorIC8vIGNvZGUuCistY2xhc3MgVGVzdFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIgOiBw dWJsaWMgYXVyYTo6V2luZG93VHJlZUhvc3RPYnNlcnZlciB7CisrY2xhc3MgVGVzdFdpbmRvd1Ry ZWVIb3N0T2JzZXJ2ZXIgOiBwdWJsaWMgV2luZG93VHJlZUhvc3RPYnNlcnZlciB7CisgIHB1Ymxp YzoKKyAgIFRlc3RXaW5kb3dUcmVlSG9zdE9ic2VydmVyKFdpbmRvd1RyZWVIb3N0UGxhdGZvcm0q IGhvc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aTo6UGxhdGZvcm1XaW5kb3cq IHBsYXRmb3JtX3dpbmRvdykKK0BAIC01MSw3ICs1MSw3IEBAIGNsYXNzIFRlc3RXaW5kb3dUcmVl SG9zdE9ic2VydmVyIDogcHVibGljIGF1cmE6OldpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIgeworICAg ICByZXR1cm4gb25faG9zdF93aWxsX3Byb2Nlc3NfYm91bmRzX2NoYW5nZV9jb3VudF87CisgICB9 CisgCistICAvLyBhdXJhOjpXaW5kb3dUcmVlSG9zdE9ic2VydmVyOgorKyAgLy8gV2luZG93VHJl ZUhvc3RPYnNlcnZlcjoKKyAgIHZvaWQgT25Ib3N0UmVzaXplZChXaW5kb3dUcmVlSG9zdCogaG9z dCkgb3ZlcnJpZGUgeworICAgICBpZiAoIXNob3VsZF9jaGFuZ2VfYm91bmRzX2luX29uX3Jlc2l6 ZWRfKQorICAgICAgIHJldHVybjsKK0BAIC05Miw1ICs5Miw0MSBAQCBURVNUX0YoV2luZG93VHJl ZUhvc3RQbGF0Zm9ybVRlc3QsIEhvc3RXaWxsUHJvY2Vzc0JvdW5kc0NoYW5nZVJlY3Vyc2lvbikg eworICAgRVhQRUNUX0VRKDEsIG9ic2VydmVyLm9uX2hvc3Rfd2lsbF9wcm9jZXNzX2JvdW5kc19j aGFuZ2VfY291bnQoKSk7CisgfQorIAorKy8vIERlbGV0ZXMgV2luZG93VHJlZUhvc3RQbGF0Zm9y bSBmcm9tIE9uSG9zdE1vdmVkSW5QaXhlbHMoKS4KKytjbGFzcyBEZWxldGVIb3N0V2luZG93VHJl ZUhvc3RPYnNlcnZlciA6IHB1YmxpYyBXaW5kb3dUcmVlSG9zdE9ic2VydmVyIHsKKysgcHVibGlj OgorKyAgZXhwbGljaXQgRGVsZXRlSG9zdFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIoCisrICAgICAg c3RkOjp1bmlxdWVfcHRyPFRlc3RXaW5kb3dUcmVlSG9zdD4gaG9zdCkKKysgICAgICA6IGhvc3Rf KHN0ZDo6bW92ZShob3N0KSkgeworKyAgICBob3N0Xy0+QWRkT2JzZXJ2ZXIodGhpcyk7CisrICB9 CisrICB+RGVsZXRlSG9zdFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIoKSBvdmVycmlkZSA9IGRlZmF1 bHQ7CisrCisrICBUZXN0V2luZG93VHJlZUhvc3QqIGhvc3QoKSB7IHJldHVybiBob3N0Xy5nZXQo KTsgfQorKworKyAgLy8gV2luZG93VHJlZUhvc3RPYnNlcnZlcjoKKysgIHZvaWQgT25Ib3N0TW92 ZWRJblBpeGVscyhXaW5kb3dUcmVlSG9zdCogaG9zdCwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBnZng6OlBvaW50JiBuZXdfb3JpZ2luX2luX3BpeGVscykgb3ZlcnJpZGUgewor KyAgICBob3N0Xy0+UmVtb3ZlT2JzZXJ2ZXIodGhpcyk7CisrICAgIGhvc3RfLnJlc2V0KCk7Cisr ICB9CisrCisrIHByaXZhdGU6CisrICBzdGQ6OnVuaXF1ZV9wdHI8VGVzdFdpbmRvd1RyZWVIb3N0 PiBob3N0XzsKKysKKysgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihEZWxldGVIb3N0V2luZG93 VHJlZUhvc3RPYnNlcnZlcik7CisrfTsKKysKKysvLyBWZXJpZmllcyBXaW5kb3dUcmVlSG9zdFBs YXRmb3JtIGNhbiBiZSBzYWZlbHkgZGVsZXRlZCB3aGVuIGNhbGxpbmcKKysvLyBPbkhvc3RNb3Zl ZEluUGl4ZWxzKCkuCisrLy8gUmVncmVzc2lvbiB0ZXN0IGZvciBodHRwczovL2NyYnVnLmNvbS8x MTg1NDgyCisrVEVTVF9GKFdpbmRvd1RyZWVIb3N0UGxhdGZvcm1UZXN0LCBEZWxldGVIb3N0RnJv bU9uSG9zdE1vdmVkSW5QaXhlbHMpIHsKKysgIHN0ZDo6dW5pcXVlX3B0cjxUZXN0V2luZG93VHJl ZUhvc3Q+IGhvc3QgPQorKyAgICAgIHN0ZDo6bWFrZV91bmlxdWU8VGVzdFdpbmRvd1RyZWVIb3N0 PigpOworKyAgRGVsZXRlSG9zdFdpbmRvd1RyZWVIb3N0T2JzZXJ2ZXIgb2JzZXJ2ZXIoc3RkOjpt b3ZlKGhvc3QpKTsKKysgIG9ic2VydmVyLmhvc3QoKS0+U2V0Qm91bmRzSW5QaXhlbHMoZ2Z4OjpS ZWN0KDEsIDIsIDMsIDQpKTsKKysgIEVYUEVDVF9FUShudWxscHRyLCBvYnNlcnZlci5ob3N0KCkp OworK30KKysKKyB9ICAvLyBuYW1lc3BhY2UKKyB9ICAvLyBuYW1lc3BhY2UgYXVyYQorZGlmZiAt LWdpdCBhL3VpL2Jhc2UveC94MTFfd2hvbGVfc2NyZWVuX21vdmVfbG9vcC5jYyBiL3VpL2Jhc2Uv eC94MTFfd2hvbGVfc2NyZWVuX21vdmVfbG9vcC5jYworaW5kZXggNWVkMjE1ZGI2Ni4uZGI2Nzg3 OTlkYiAxMDA2NDQKKy0tLSB1aS9iYXNlL3gveDExX3dob2xlX3NjcmVlbl9tb3ZlX2xvb3AuY2MK KysrKyB1aS9iYXNlL3gveDExX3dob2xlX3NjcmVlbl9tb3ZlX2xvb3AuY2MKK0BAIC03OCw5ICs3 OCwxMyBAQCBYMTFXaG9sZVNjcmVlbk1vdmVMb29wOjp+WDExV2hvbGVTY3JlZW5Nb3ZlTG9vcCgp IHsKKyB2b2lkIFgxMVdob2xlU2NyZWVuTW92ZUxvb3A6OkRpc3BhdGNoTW91c2VNb3ZlbWVudCgp IHsKKyAgIGlmICghbGFzdF9tb3Rpb25faW5fc2NyZWVuXykKKyAgICAgcmV0dXJuOworKyAgYXV0 byB3ZWFrX3JlZiA9IHdlYWtfZmFjdG9yeV8uR2V0V2Vha1B0cigpOworICAgZGVsZWdhdGVfLT5P bk1vdXNlTW92ZW1lbnQobGFzdF9tb3Rpb25faW5fc2NyZWVuXy0+cm9vdF9sb2NhdGlvbigpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdF9tb3Rpb25faW5fc2NyZWVuXy0+Zmxh Z3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RfbW90aW9uX2luX3NjcmVl bl8tPnRpbWVfc3RhbXAoKSk7CisrICAvLyBUaGUgZGVsZWdhdGUgbWF5IGRlbGV0ZSB0aGlzIGR1 cmluZyBkaXNwYXRjaC4KKysgIGlmICghd2Vha19yZWYpCisrICAgIHJldHVybjsKKyAgIGxhc3Rf bW90aW9uX2luX3NjcmVlbl8ucmVzZXQoKTsKKyB9CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1icm93c2VyLXNpemVfdC5wYXRjaCBiL3Ny Y3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWJyb3dzZXItc2l6ZV90LnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmEyMTRkOTg3ZDYx Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hy b21pdW0tYnJvd3Nlci1zaXplX3QucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIGNocm9tZS9i cm93c2VyL3NlYXJjaC9iYWNrZ3JvdW5kL250cF9iYWNrZ3JvdW5kcy5oCTIwMjAtMDgtMTAgMjA6 Mzk6MjAuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21lL2Jyb3dzZXIvc2VhcmNoL2JhY2tncm91 bmQvbnRwX2JhY2tncm91bmRzLmgJMjAyMC0wOS0wNCAxMzo0ODoyMi42NDAwMjMyNTYgKzAyMDAK K0BAIC02LDYgKzYsNyBAQAorICNkZWZpbmUgQ0hST01FX0JST1dTRVJfU0VBUkNIX0JBQ0tHUk9V TkRfTlRQX0JBQ0tHUk9VTkRTX0hfCisgCisgI2luY2x1ZGUgPGFycmF5PgorKyNpbmNsdWRlIDxj c3RkZGVmPgorIAorIGNsYXNzIEdVUkw7CisgCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1saWJjX21hbGxvYy5wYXRjaCBiL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLWxpYmNfbWFsbG9jLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWRhMTFlYzg2NjM3Ci0tLSAvZGV2L251 bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbGliY19t YWxsb2MucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorLS0tIGJhc2UvcHJvY2Vzcy9tZW1vcnlfbGlu dXguY2Mub3JpZwkyMDE3LTA5LTE1IDA4OjQxOjQzLjAwMDAwMDAwMCArMDAwMAorKysrIGJhc2Uv cHJvY2Vzcy9tZW1vcnlfbGludXguY2MJMjAxNy0wOS0xNSAwODo0NDozOS44MDQ5OTU0NjkgKzAw MDAKK0BAIC0yMSw2ICsyMSwxMiBAQAorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS90Y21hbGxvYy9j aHJvbWl1bS9zcmMvZ3BlcmZ0b29scy90Y21hbGxvYy5oIgorICNlbmRpZgorIAorKyNpZiBkZWZp bmVkKExJQkNfR0xJQkMpCisrZXh0ZXJuICJDIiB7CisrZXh0ZXJuIHZvaWQgKl9fbGliY19tYWxs b2Moc2l6ZV90IHNpemUpOworK30KKysjZW5kaWYKKysKKyBuYW1lc3BhY2UgYmFzZSB7CisgCisg c2l6ZV90IGdfb29tX3NpemUgPSAwVTsKKy0tLSBiYXNlL3Byb2Nlc3MvbWVtb3J5X2xpbnV4LmNj Lm9yaWcJMjAyMC0wOC0zMCAxNDoxODozNS40MDExMzI1OTMgLTA0MDAKKysrKyBiYXNlL3Byb2Nl c3MvbWVtb3J5X2xpbnV4LmNjCTIwMjAtMDgtMzAgMTQ6MTk6MDguMDMwMTk5MTg5IC0wNDAwCitA QCAtMTQxLDcgKzE0MSw3IEBACisgICAgICghZGVmaW5lZChMSUJDX0dMSUJDKSAmJiAhQlVJTERG TEFHKFVTRV9UQ01BTExPQykpCisgICAqcmVzdWx0ID0gbWFsbG9jKHNpemUpOworICNlbGlmIGRl ZmluZWQoTElCQ19HTElCQykgJiYgIUJVSUxERkxBRyhVU0VfVENNQUxMT0MpCistICAqcmVzdWx0 ID0gX19saWJjX21hbGxvYyhzaXplKTsKKysgICpyZXN1bHQgPSA6Ol9fbGliY19tYWxsb2Moc2l6 ZSk7CisgI2VsaWYgQlVJTERGTEFHKFVTRV9UQ01BTExPQykKKyAgICpyZXN1bHQgPSB0Y19tYWxs b2Nfc2tpcF9uZXdfaGFuZGxlcihzaXplKTsKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLW11c2wtdjgtbW9ub3RvbmljLXB0aHJl YWQtY29udF90aW1lZHdhaXQucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hl cy9jaHJvbWl1bS1tdXNsLXY4LW1vbm90b25pYy1wdGhyZWFkLWNvbnRfdGltZWR3YWl0LnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMzNhOGVhMzJjOWMxCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0tbXVzbC12OC1tb25vdG9uaWMtcHRocmVhZC1jb250X3RpbWVkd2FpdC5wYXRjaApAQCAtMCww ICsxLDI0IEBACitVc2UgbW9ub3RvbmljIGNsb2NrIGZvciBwdGhyZWFkX2NvbmRfdGltZWR3YWl0 IHdpdGggbXVzbCB0b28uCisKK2RpZmYgLS1naXQgYS92OC9zcmMvYmFzZS9wbGF0Zm9ybS9jb25k aXRpb24tdmFyaWFibGUuY2MgYi92OC9zcmMvYmFzZS9wbGF0Zm9ybS9jb25kaXRpb24tdmFyaWFi bGUuY2MKK2luZGV4IDVlYTcwODMuLmMxMzAyN2UgMTAwNjQ0CistLS0gLi92OC9zcmMvYmFzZS9w bGF0Zm9ybS9jb25kaXRpb24tdmFyaWFibGUuY2MKKysrKyAuL3Y4L3NyYy9iYXNlL3BsYXRmb3Jt L2NvbmRpdGlvbi12YXJpYWJsZS5jYworQEAgLTE2LDcgKzE2LDcgQEAgbmFtZXNwYWNlIGJhc2Ug eworIAorIENvbmRpdGlvblZhcmlhYmxlOjpDb25kaXRpb25WYXJpYWJsZSgpIHsKKyAjaWYgKFY4 X09TX0ZSRUVCU0QgfHwgVjhfT1NfTkVUQlNEIHx8IFY4X09TX09QRU5CU0QgfHwgXAorLSAgICAg KFY4X09TX0xJTlVYICYmIFY4X0xJQkNfR0xJQkMpKQorKyAgICAgVjhfT1NfTElOVVgpCisgICAv LyBPbiBGcmVlL05ldC9PcGVuQlNEIGFuZCBMaW51eCB3aXRoIGdsaWJjIHdlIGNhbiBjaGFuZ2Ug dGhlIHRpbWUKKyAgIC8vIHNvdXJjZSBmb3IgcHRocmVhZF9jb25kX3RpbWVkd2FpdCgpIHRvIHVz ZSB0aGUgbW9ub3RvbmljIGNsb2NrLgorICAgcHRocmVhZF9jb25kYXR0cl90IGF0dHI7CitAQCAt OTIsNyArOTIsNyBAQCBib29sIENvbmRpdGlvblZhcmlhYmxlOjpXYWl0Rm9yKE11dGV4KiBtdXRl eCwgY29uc3QgVGltZURlbHRhJiByZWxfdGltZSkgeworICAgICAgICZuYXRpdmVfaGFuZGxlXywg Jm11dGV4LT5uYXRpdmVfaGFuZGxlKCksICZ0cyk7CisgI2Vsc2UKKyAjaWYgKFY4X09TX0ZSRUVC U0QgfHwgVjhfT1NfTkVUQlNEIHx8IFY4X09TX09QRU5CU0QgfHwgXAorLSAgICAgKFY4X09TX0xJ TlVYICYmIFY4X0xJQkNfR0xJQkMpKQorKyAgICAgVjhfT1NfTElOVVgpCisgICAvLyBPbiBGcmVl L05ldC9PcGVuQlNEIGFuZCBMaW51eCB3aXRoIGdsaWJjIHdlIGNhbiBjaGFuZ2UgdGhlIHRpbWUK KyAgIC8vIHNvdXJjZSBmb3IgcHRocmVhZF9jb25kX3RpbWVkd2FpdCgpIHRvIHVzZSB0aGUgbW9u b3RvbmljIGNsb2NrLgorICAgcmVzdWx0ID0gY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMs ICZ0cyk7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS1uby1leGVjaW5mby5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVz L2Nocm9taXVtLW5vLWV4ZWNpbmZvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwMC4uMzg2OTk3ZThlZDE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVj dHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tbm8tZXhlY2luZm8ucGF0Y2gKQEAgLTAsMCAr MSw3MiBAQAorLS0tIGJhc2UvZGVidWcvc3RhY2tfdHJhY2VfcG9zaXguY2Mub3JpZwkyMDE5LTA1 LTE0IDE0OjQ5OjQ0LjAwMDAwMDAwMCAtMDQwMAorKysrIGJhc2UvZGVidWcvc3RhY2tfdHJhY2Vf cG9zaXguY2MJMjAxOS0wNy0wMiAxMDo0Mzo0My40OTAwNDUwMTMgLTA0MDAKK0BAIC0yNyw3ICsy Nyw3IEBACisgI2lmICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCisgI2luY2x1ZGUgPGN4eGFiaS5o PgorICNlbmRpZgorLSNpZiAhZGVmaW5lZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQor KyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAjaW5jbHVkZSA8ZXhl Y2luZm8uaD4KKyAjZW5kaWYKKyAKK0BAIC04Niw3ICs4Niw3IEBACisgICAvLyBOb3RlOiBjb2Rl IGluIHRoaXMgZnVuY3Rpb24gaXMgTk9UIGFzeW5jLXNpZ25hbCBzYWZlIChzdGQ6OnN0cmluZyB1 c2VzCisgICAvLyBtYWxsb2MgaW50ZXJuYWxseSkuCisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJD X18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5l ZChfQUlYKQorICAgc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBzZWFyY2hfZnJvbSA9IDA7CisgICB3 aGlsZSAoc2VhcmNoX2Zyb20gPCB0ZXh0LT5zaXplKCkpIHsKKyAgICAgLy8gTG9vayBmb3IgdGhl IHN0YXJ0IG9mIGEgbWFuZ2xlZCBzeW1ib2wsIGZyb20gc2VhcmNoX2Zyb20uCitAQCAtMTIxLDcg KzEyMSw3IEBACisgICAgICAgc2VhcmNoX2Zyb20gPSBtYW5nbGVkX3N0YXJ0ICsgMjsKKyAgICAg fQorICAgfQorLSNlbmRpZiAgLy8gIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRlZmluZWQoX0FJ WCkKKysjZW5kaWYgIC8vIGRlZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorIH0K KyAjZW5kaWYgIC8vICFkZWZpbmVkKFVTRV9TWU1CT0xJWkUpCisgCitAQCAtMTMzLDcgKzEzMyw3 IEBACisgICB2aXJ0dWFsIH5CYWNrdHJhY2VPdXRwdXRIYW5kbGVyKCkgPSBkZWZhdWx0OworIH07 CisgCistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRl ZmluZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorIHZvaWQgT3V0cHV0UG9pbnRlcih2 b2lkKiBwb2ludGVyLCBCYWNrdHJhY2VPdXRwdXRIYW5kbGVyKiBoYW5kbGVyKSB7CisgICAvLyBU aGlzIHNob3VsZCBiZSBtb3JlIHRoYW4gZW5vdWdoIHRvIHN0b3JlIGEgNjQtYml0IG51bWJlciBp biBoZXg6CisgICAvLyAxNiBoZXggZGlnaXRzICsgMSBmb3IgbnVsbC10ZXJtaW5hdG9yLgorQEAg LTIxNiw3ICsyMTYsNyBAQAorICAgfQorICNlbmRpZiAgLy8gZGVmaW5lZChVU0VfU1lNQk9MSVpF KQorIH0KKy0jZW5kaWYgIC8vICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgp CisrI2VuZGlmICAvLyBkZWZpbmVkKF9fR0xJQkNfXykgJiYgIWRlZmluZWQoX0FJWCkKKyAKKyB2 b2lkIFByaW50VG9TdGRlcnIoY29uc3QgY2hhciogb3V0cHV0KSB7CisgICAvLyBOT1RFOiBUaGlz IGNvZGUgTVVTVCBiZSBhc3luYy1zaWduYWwgc2FmZSAoaXQncyB1c2VkIGJ5IGluLXByb2Nlc3MK K0BAIC04MTIsNyArODEyLDcgQEAKKyAgIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5j LXNpZ25hbCBzYWZlIChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworICAgLy8gc3RhY2sgZHVtcGlu ZyBzaWduYWwgaGFuZGxlcikuIE5PIG1hbGxvYyBvciBzdGRpbyBpcyBhbGxvd2VkIGhlcmUuCisg CistI2lmICFkZWZpbmVkKF9fVUNMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisrI2lmIGRlZmlu ZWQoX19HTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorICAgLy8gVGhvdWdoIHRoZSBiYWNrdHJh Y2UgQVBJIG1hbiBwYWdlIGRvZXMgbm90IGxpc3QgYW55IHBvc3NpYmxlIG5lZ2F0aXZlCisgICAv LyByZXR1cm4gdmFsdWVzLCB3ZSB0YWtlIG5vIGNoYW5jZS4KKyAgIHJldHVybiBiYXNlOjpzYXR1 cmF0ZWRfY2FzdDxzaXplX3Q+KGJhY2t0cmFjZSh0cmFjZSwgY291bnQpKTsKK0BAIC04MjUsMTMg KzgyNSwxMyBAQAorIC8vIE5PVEU6IFRoaXMgY29kZSBNVVNUIGJlIGFzeW5jLXNpZ25hbCBzYWZl IChpdCdzIHVzZWQgYnkgaW4tcHJvY2VzcworIC8vIHN0YWNrIGR1bXBpbmcgc2lnbmFsIGhhbmRs ZXIpLiBOTyBtYWxsb2Mgb3Igc3RkaW8gaXMgYWxsb3dlZCBoZXJlLgorIAorLSNpZiAhZGVmaW5l ZChfX1VDTElCQ19fKSAmJiAhZGVmaW5lZChfQUlYKQorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykg JiYgIWRlZmluZWQoX0FJWCkKKyAgIFByaW50QmFja3RyYWNlT3V0cHV0SGFuZGxlciBoYW5kbGVy OworICAgUHJvY2Vzc0JhY2t0cmFjZSh0cmFjZV8sIGNvdW50XywgcHJlZml4X3N0cmluZywgJmhh bmRsZXIpOworICNlbmRpZgorIH0KKyAKKy0jaWYgIWRlZmluZWQoX19VQ0xJQkNfXykgJiYgIWRl ZmluZWQoX0FJWCkKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICFkZWZpbmVkKF9BSVgpCisg dm9pZCBTdGFja1RyYWNlOjpPdXRwdXRUb1N0cmVhbVdpdGhQcmVmaXgoc3RkOjpvc3RyZWFtKiBv cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy KiBwcmVmaXhfc3RyaW5nKSBjb25zdCB7CisgICBTdHJlYW1CYWNrdHJhY2VPdXRwdXRIYW5kbGVy IGhhbmRsZXIob3MpOwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNo ZXMvY2hyb21pdW0tbm8tZ2V0Y29udGV4dC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxl cy9wYXRjaGVzL2Nocm9taXVtLW5vLWdldGNvbnRleHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iMmE0OTg3MzRjOTMKLS0tIC9kZXYvbnVsbAorKysgYi9z cmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1uby1nZXRjb250ZXh0LnBh dGNoCkBAIC0wLDAgKzEsMjcgQEAKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuY2Mub3JpZwkyMDE1LTEy LTA2IDA5OjU5OjU1LjU1NDUzNjY0NiArMDEwMAorKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5jYwkyMDE1 LTEyLTA2IDEwOjAxOjE2LjgxODIzODAzNSArMDEwMAorQEAgLTQ3Nyw3ICs0NzcsOSBAQCBib29s IEV4Y2VwdGlvbkhhbmRsZXI6OlNpbXVsYXRlU2lnbmFsRGVsCisgICBzaWdpbmZvLnNpX2NvZGUg PSBTSV9VU0VSOworICAgc2lnaW5mby5zaV9waWQgPSBnZXRwaWQoKTsKKyAgIHVjb250ZXh0X3Qg Y29udGV4dDsKKysjaWYgZGVmaW5lZChfX0dMSUJDX18pCisgICBnZXRjb250ZXh0KCZjb250ZXh0 KTsKKysjZW5kaWYKKyAgIHJldHVybiBIYW5kbGVTaWduYWwoc2lnLCAmc2lnaW5mbywgJmNvbnRl eHQpOworIH0KKyAKK0BAIC02NDcsOSArNjQ5LDE0IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6 V3JpdGVNaW5pZHVtcCgpIHsKKyAgIHN5c19wcmN0bChQUl9TRVRfRFVNUEFCTEUsIDEsIDAsIDAs IDApOworIAorICAgQ3Jhc2hDb250ZXh0IGNvbnRleHQ7CisrCisrI2lmIGRlZmluZWQoX19HTElC Q19fKQorICAgaW50IGdldGNvbnRleHRfcmVzdWx0ID0gZ2V0Y29udGV4dCgmY29udGV4dC5jb250 ZXh0KTsKKyAgIGlmIChnZXRjb250ZXh0X3Jlc3VsdCkKKyAgICAgcmV0dXJuIGZhbHNlOworKyNl bHNlCisrICByZXR1cm4gZmFsc2U7CisrI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX19pMzg2X18p CisgICAvLyBJbiBDUFVGaWxsRnJvbVVDb250ZXh0IGluIG1pbmlkdW1wd3JpdGVyLmNjIHRoZSBz dGFjayBwb2ludGVyIGlzIHJldHJpZXZlZApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEy L2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoIGIvc3JjcGtn cy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1tZW1iYXJyaWVyLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODZjYTE2ZmMyZDcw Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hy b21pdW0tc2FuZGJveC1tZW1iYXJyaWVyLnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgc2FuZGJv eC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworQEAgLTM3MCw2ICsz NzAsNyBAQAorICAgc3dpdGNoIChzeXNubykgeworICAgICBjYXNlIF9fTlJfZXhpdDoKKyAgICAg Y2FzZSBfX05SX2V4aXRfZ3JvdXA6CisrICAgIGNhc2UgX19OUl9tZW1iYXJyaWVyOgorICAgICBj YXNlIF9fTlJfd2FpdDQ6CisgICAgIGNhc2UgX19OUl93YWl0aWQ6CisgI2lmIGRlZmluZWQoX19p Mzg2X18pCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJv bWl1bS1zYW5kYm94LXNjaGVkX2dldHBhcmFtLnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0tc2FuZGJveC1zY2hlZF9nZXRwYXJhbS5wYXRjaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmJhOGFmNDljNWY4ZgotLS0gL2Rldi9u dWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNhbmRi b3gtc2NoZWRfZ2V0cGFyYW0ucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorQWxsb3cgU1lTX3NjaGVk X2dldHBhcmFtIGFuZCBTWVNfc2NoZWRfZ2V0c2NoZWR1bGVyCittdXNsIHVzZXMgdGhlbSBmb3Ig cHRocmVhZF9nZXRzY2hlZHBhcmFtKCkKKworc291cmNlOiBodHRwczovL2dpdC5hbHBpbmVsaW51 eC5vcmcvYXBvcnRzL2NvbW1pdC9jb21tdW5pdHkvY2hyb21pdW0/aWQ9NTRhZjlmOGFjMjRmNTJk MzgyYzU3NThlMjQ0NWJmMDIwNmVmZjQwZQorCistLS0gc2FuZGJveC9wb2xpY3kvbGludXgvYnBm X3JlbmRlcmVyX3BvbGljeV9saW51eC5jYy5vcmlnCTIwMTktMTAtMDggMjE6MDM6MTguMjUzMDgw NDI1ICswMjAwCisrKysgc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9s aW51eC5jYwkyMDE5LTEwLTA4IDIxOjA0OjE5LjY0ODU0OTcxOCArMDIwMAorQEAgLTg4LDEwICs4 OCwxMCBAQAorICAgICBjYXNlIF9fTlJfc3lzaW5mbzoKKyAgICAgY2FzZSBfX05SX3RpbWVzOgor ICAgICBjYXNlIF9fTlJfdW5hbWU6CistICAgICAgcmV0dXJuIEFsbG93KCk7CistICAgIGNhc2Ug X19OUl9zY2hlZF9nZXRhZmZpbml0eToKKyAgICAgY2FzZSBfX05SX3NjaGVkX2dldHBhcmFtOgor ICAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0c2NoZWR1bGVyOgorKyAgICAgIHJldHVybiBBbGxvdygp OworKyAgICBjYXNlIF9fTlJfc2NoZWRfZ2V0YWZmaW5pdHk6CisgICAgIGNhc2UgX19OUl9zY2hl ZF9zZXRzY2hlZHVsZXI6CisgICAgICAgcmV0dXJuIHNhbmRib3g6OlJlc3RyaWN0U2NoZWRUYXJn ZXQoR2V0UG9saWN5UGlkKCksIHN5c25vKTsKKyAgICAgY2FzZSBfX05SX3BybGltaXQ2NDoKZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXNuZGlv LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc25kaW8u cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5kMzEzYjRhNjY3 YzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9j aHJvbWl1bS1zbmRpby5wYXRjaApAQCAtMCwwICsxLDg4NiBAQAorZGlmZiAtTmF1ciBjaHJvbWl1 bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9CVUlMRC5nbiBjaHJvbWl1bS04My4wLjQxMDMuOTcv bWVkaWEvQlVJTEQuZ24KKy0tLSBtZWRpYS9CVUlMRC5nbi5vcmlnCTIwMjAtMDYtMDMgMjA6NDA6 MjYuMDAwMDAwMDAwICswMjAwCisrKysgbWVkaWEvQlVJTEQuZ24JMjAyMC0wNi0xMyAxNzozMjoy OC41MTAzOTU5NzUgKzAyMDAKK0BAIC02NSw2ICs2NSw5IEBACisgICAgICAgZGVmaW5lcyArPSBb ICJETE9QRU5fUFVMU0VBVURJTyIgXQorICAgICB9CisgICB9CisrICBpZiAodXNlX3NuZGlvKSB7 CisrICAgIGRlZmluZXMgKz0gWyAiVVNFX1NORElPIiBdCisrICB9CisgICBpZiAodXNlX2NyYXMp IHsKKyAgICAgZGVmaW5lcyArPSBbICJVU0VfQ1JBUyIgXQorICAgfQorZGlmZiAtTmF1ciBjaHJv bWl1bS04My4wLjQxMDMuOTcub3JpZy9tZWRpYS9hdWRpby9CVUlMRC5nbiBjaHJvbWl1bS04My4w LjQxMDMuOTcvbWVkaWEvYXVkaW8vQlVJTEQuZ24KKy0tLSBtZWRpYS9hdWRpby9CVUlMRC5nbi5v cmlnCTIwMjAtMDYtMDMgMjA6Mzk6MzcuMDAwMDAwMDAwICswMjAwCisrKysgbWVkaWEvYXVkaW8v QlVJTEQuZ24JMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKK0BAIC0yMzYsNiAr MjM2LDE3IEBACisgICAgIHNvdXJjZXMgKz0gWyAibGludXgvYXVkaW9fbWFuYWdlcl9saW51eC5j YyIgXQorICAgfQorIAorKyAgaWYgKHVzZV9zbmRpbykgeworKyAgICBsaWJzICs9IFsgInNuZGlv IiBdCisrICAgIHNvdXJjZXMgKz0gWworKyAgICAgICJzbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlv LmNjIiwKKysgICAgICAic25kaW8vc25kaW9faW5wdXQuY2MiLAorKyAgICAgICJzbmRpby9zbmRp b19pbnB1dC5oIiwKKysgICAgICAic25kaW8vc25kaW9fb3V0cHV0LmNjIiwKKysgICAgICAic25k aW8vc25kaW9fb3V0cHV0LmgiCisrICAgIF0KKysgIH0KKysKKyAgIGlmICh1c2VfYWxzYSkgewor ICAgICBsaWJzICs9IFsgImFzb3VuZCIgXQorICAgICBzb3VyY2VzICs9IFsKK2RpZmYgLU5hdXIg Y2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvYXVkaW8vbGludXgvYXVkaW9fbWFuYWdl cl9saW51eC5jYyBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vbGludXgvYXVkaW9f bWFuYWdlcl9saW51eC5jYworLS0tIG1lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGlu dXguY2Mub3JpZwkyMDIwLTA2LTAzIDIwOjM5OjM3LjAwMDAwMDAwMCArMDIwMAorKysrIG1lZGlh L2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJfbGludXguY2MJMjAyMC0wNi0xMyAxODowOTo0My42 MjMzMzMxNjcgKzAyMDAKK0BAIC0xOSw2ICsxOSwxMSBAQAorICNpbmNsdWRlICJtZWRpYS9hdWRp by9wdWxzZS9hdWRpb19tYW5hZ2VyX3B1bHNlLmgiCisgI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL3B1 bHNlL3B1bHNlX3V0aWwuaCIKKyAjZW5kaWYKKysjaWYgZGVmaW5lZChVU0VfU05ESU8pCisrI2lu Y2x1ZGUgIm1lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaCIKKysjaW5jbHVk ZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9faW5wdXQuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVk aW8vc25kaW8vc25kaW9fb3V0cHV0LmgiCisrI2VuZGlmCisgCisgbmFtZXNwYWNlIG1lZGlhIHsK KyAKK0BAIC0yNiw3ICszMSw4IEBACisgICBrUHVsc2UsCisgICBrQWxzYSwKKyAgIGtDcmFzLAor LSAga0F1ZGlvSU9NYXggPSBrQ3JhcyAgLy8gTXVzdCBhbHdheXMgYmUgZXF1YWwgdG8gbGFyZ2Vz dCBsb2dnZWQgZW50cnkuCisrICBrU25kaW8sCisrICBrQXVkaW9JT01heCA9IGtTbmRpbyAvLyBN dXN0IGFsd2F5cyBiZSBlcXVhbCB0byBsYXJnZXN0IGxvZ2dlZCBlbnRyeS4KKyB9OworIAorIHN0 ZDo6dW5pcXVlX3B0cjxtZWRpYTo6QXVkaW9NYW5hZ2VyPiBDcmVhdGVBdWRpb01hbmFnZXIoCitA QCAtMzksNiArNDUsMTYgQEAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYXVkaW9fbG9nX2ZhY3RvcnkpOworICAgfQorIAorKyNpZiBkZWZpbmVkKFVTRV9T TkRJTykKKysgIHN0cnVjdCBzaW9faGRsICpoZGwgPSBzaW9fb3BlbihTSU9fREVWQU5ZLCBTSU9f UExBWSwgMCk7CisrICBpZiAoaGRsICE9IE5VTEwpIHsKKysgICAgc2lvX2Nsb3NlKGhkbCk7Cisr ICAgIFVNQV9ISVNUT0dSQU1fRU5VTUVSQVRJT04oIk1lZGlhLkxpbnV4QXVkaW9JTyIsIGtTbmRp bywga0F1ZGlvSU9NYXggKyAxKTsKKysgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8QXVkaW9N YW5hZ2VyU25kaW8+KHN0ZDo6bW92ZShhdWRpb190aHJlYWQpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fbG9nX2ZhY3RvcnkpOworKyAg fQorKyNlbmRpZgorKworICNpZiBkZWZpbmVkKFVTRV9DUkFTKQorICAgaWYgKGJhc2U6OkNvbW1h bmRMaW5lOjpGb3JDdXJyZW50UHJvY2VzcygpLT5IYXNTd2l0Y2goc3dpdGNoZXM6OmtVc2VDcmFz KSkgeworICAgICBVTUFfSElTVE9HUkFNX0VOVU1FUkFUSU9OKCJNZWRpYS5MaW51eEF1ZGlvSU8i LCBrQ3Jhcywga0F1ZGlvSU9NYXggKyAxKTsKK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAz Ljk3Lm9yaWcvbWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5jYyBjaHJvbWl1 bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9zbmRpby5jYwor LS0tIG1lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uY2Mub3JpZwkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG1lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlv X21hbmFnZXJfc25kaW8uY2MJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKK0BA IC0wLDAgKzEsMTQ4IEBACisrLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRo b3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlz IGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBp biB0aGUgTElDRU5TRSBmaWxlLgorKworKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9hdWRp b19tYW5hZ2VyX3NuZGlvLmgiCisrCisrI2luY2x1ZGUgImJhc2UvbWV0cmljcy9oaXN0b2dyYW1f bWFjcm9zLmgiCisrI2luY2x1ZGUgImJhc2UvbWVtb3J5L3B0cl91dGlsLmgiCisrI2luY2x1ZGUg Im1lZGlhL2F1ZGlvL2F1ZGlvX2RldmljZV9kZXNjcmlwdGlvbi5oIgorKyNpbmNsdWRlICJtZWRp YS9hdWRpby9hdWRpb19vdXRwdXRfZGlzcGF0Y2hlci5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRp by9zbmRpby9zbmRpb19pbnB1dC5oIgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRp b19vdXRwdXQuaCIKKysjaW5jbHVkZSAibWVkaWEvYmFzZS9saW1pdHMuaCIKKysjaW5jbHVkZSAi bWVkaWEvYmFzZS9tZWRpYV9zd2l0Y2hlcy5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisr CisrLy8gTWF4aW11bSBudW1iZXIgb2Ygb3V0cHV0IHN0cmVhbXMgdGhhdCBjYW4gYmUgb3BlbiBz aW11bHRhbmVvdXNseS4KKytzdGF0aWMgY29uc3QgaW50IGtNYXhPdXRwdXRTdHJlYW1zID0gNDsK KysKKysvLyBEZWZhdWx0IHNhbXBsZSByYXRlIGZvciBpbnB1dCBhbmQgb3V0cHV0IHN0cmVhbXMu Cisrc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdFNhbXBsZVJhdGUgPSA0ODAwMDsKKysKKyt2b2lk IEFkZERlZmF1bHREZXZpY2UoQXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSB7CisrICBE Q0hFQ0soZGV2aWNlX25hbWVzLT5lbXB0eSgpKTsKKysgIGRldmljZV9uYW1lcy0+cHVzaF9mcm9u dChBdWRpb0RldmljZU5hbWU6OkNyZWF0ZURlZmF1bHQoKSk7CisrfQorKworK2Jvb2wgQXVkaW9N YW5hZ2VyU25kaW86Okhhc0F1ZGlvT3V0cHV0RGV2aWNlcygpIHsKKysgIHJldHVybiB0cnVlOwor K30KKysKKytib29sIEF1ZGlvTWFuYWdlclNuZGlvOjpIYXNBdWRpb0lucHV0RGV2aWNlcygpIHsK KysgIHJldHVybiB0cnVlOworK30KKysKKyt2b2lkIEF1ZGlvTWFuYWdlclNuZGlvOjpHZXRBdWRp b0lucHV0RGV2aWNlTmFtZXMoCisrICAgIEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykg eworKyAgRENIRUNLKGRldmljZV9uYW1lcy0+ZW1wdHkoKSk7CisrICBBZGREZWZhdWx0RGV2aWNl KGRldmljZV9uYW1lcyk7CisrfQorKworK3ZvaWQgQXVkaW9NYW5hZ2VyU25kaW86OkdldEF1ZGlv T3V0cHV0RGV2aWNlTmFtZXMoCisrICAgIEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykg eworKyAgQWRkRGVmYXVsdERldmljZShkZXZpY2VfbmFtZXMpOworK30KKysKKytjb25zdCBjaGFy KiBBdWRpb01hbmFnZXJTbmRpbzo6R2V0TmFtZSgpIHsKKysgIHJldHVybiAiU05ESU8iOworK30K KysKKytBdWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2VyU25kaW86OkdldElucHV0U3RyZWFtUGFy YW1ldGVycygKKysgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCkgeworKyAgc3RhdGlj IGNvbnN0IGludCBrRGVmYXVsdElucHV0QnVmZmVyU2l6ZSA9IDEwMjQ7CisrCisrICBpbnQgdXNl cl9idWZmZXJfc2l6ZSA9IEdldFVzZXJCdWZmZXJTaXplKCk7CisrICBpbnQgYnVmZmVyX3NpemUg PSB1c2VyX2J1ZmZlcl9zaXplID8KKysgICAgICB1c2VyX2J1ZmZlcl9zaXplIDoga0RlZmF1bHRJ bnB1dEJ1ZmZlclNpemU7CisrCisrICByZXR1cm4gQXVkaW9QYXJhbWV0ZXJzKAorKyAgICAgIEF1 ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZLCBDSEFOTkVMX0xBWU9VVF9TVEVS RU8sCisrICAgICAga0RlZmF1bHRTYW1wbGVSYXRlLCBidWZmZXJfc2l6ZSk7CisrfQorKworK0F1 ZGlvTWFuYWdlclNuZGlvOjpBdWRpb01hbmFnZXJTbmRpbyhzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9U aHJlYWQ+IGF1ZGlvX3RocmVhZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEF1ZGlvTG9nRmFjdG9yeSogYXVkaW9fbG9nX2ZhY3RvcnkpCisrICAgIDogQXVkaW9N YW5hZ2VyQmFzZShzdGQ6Om1vdmUoYXVkaW9fdGhyZWFkKSwKKysgICAgICAgICAgICAgICAgICAg ICAgIGF1ZGlvX2xvZ19mYWN0b3J5KSB7CisrICBETE9HKFdBUk5JTkcpIDw8ICJBdWRpb01hbmFn ZXJTbmRpbyI7CisrICBTZXRNYXhPdXRwdXRTdHJlYW1zQWxsb3dlZChrTWF4T3V0cHV0U3RyZWFt cyk7CisrfQorKworK0F1ZGlvTWFuYWdlclNuZGlvOjp+QXVkaW9NYW5hZ2VyU25kaW8oKSB7Cisr ICBTaHV0ZG93bigpOworK30KKysKKytBdWRpb091dHB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25k aW86Ok1ha2VMaW5lYXJPdXRwdXRTdHJlYW0oCisrICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYg cGFyYW1zLAorKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSB7CisrICBEQ0hF Q0tfRVEoQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTElORUFSLCBwYXJhbXMuZm9ybWF0KCkp OworKyAgcmV0dXJuIE1ha2VPdXRwdXRTdHJlYW0ocGFyYW1zKTsKKyt9CisrCisrQXVkaW9PdXRw dXRTdHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTG93TGF0ZW5jeU91dHB1dFN0cmVhbSgK KysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgIGNvbnN0IHN0ZDo6c3Ry aW5nJiBkZXZpY2VfaWQsCisrICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsK KysgIERMT0dfSUYoRVJST1IsICFkZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBsZW1lbnRl ZCEiOworKyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZ LCBwYXJhbXMuZm9ybWF0KCkpOworKyAgcmV0dXJuIE1ha2VPdXRwdXRTdHJlYW0ocGFyYW1zKTsK Kyt9CisrCisrQXVkaW9JbnB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyU25kaW86Ok1ha2VMaW5lYXJJ bnB1dFN0cmVhbSgKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgIGNv bnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisrICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2df Y2FsbGJhY2spIHsKKysgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5F QVIsIHBhcmFtcy5mb3JtYXQoKSk7CisrICByZXR1cm4gTWFrZUlucHV0U3RyZWFtKHBhcmFtcyk7 CisrfQorKworK0F1ZGlvSW5wdXRTdHJlYW0qIEF1ZGlvTWFuYWdlclNuZGlvOjpNYWtlTG93TGF0 ZW5jeUlucHV0U3RyZWFtKAorKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKysg ICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKysgICAgY29uc3QgTG9nQ2FsbGJhY2sm IGxvZ19jYWxsYmFjaykgeworKyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENN X0xPV19MQVRFTkNZLCBwYXJhbXMuZm9ybWF0KCkpOworKyAgcmV0dXJuIE1ha2VJbnB1dFN0cmVh bShwYXJhbXMpOworK30KKysKKytBdWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2VyU25kaW86Okdl dFByZWZlcnJlZE91dHB1dFN0cmVhbVBhcmFtZXRlcnMoCisrICAgIGNvbnN0IHN0ZDo6c3RyaW5n JiBvdXRwdXRfZGV2aWNlX2lkLAorKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIGlucHV0X3Bh cmFtcykgeworKyAgLy8gVE9ETyh0b21taSk6IFN1cHBvcnQgfG91dHB1dF9kZXZpY2VfaWR8Lgor KyAgRExPR19JRihFUlJPUiwgIW91dHB1dF9kZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBs ZW1lbnRlZCEiOworKyAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdE91dHB1dEJ1ZmZlclNpemUg PSAyMDQ4OworKworKyAgQ2hhbm5lbExheW91dCBjaGFubmVsX2xheW91dCA9IENIQU5ORUxfTEFZ T1VUX1NURVJFTzsKKysgIGludCBzYW1wbGVfcmF0ZSA9IGtEZWZhdWx0U2FtcGxlUmF0ZTsKKysg IGludCBidWZmZXJfc2l6ZSA9IGtEZWZhdWx0T3V0cHV0QnVmZmVyU2l6ZTsKKysgIGlmIChpbnB1 dF9wYXJhbXMuSXNWYWxpZCgpKSB7CisrICAgIHNhbXBsZV9yYXRlID0gaW5wdXRfcGFyYW1zLnNh bXBsZV9yYXRlKCk7CisrICAgIGNoYW5uZWxfbGF5b3V0ID0gaW5wdXRfcGFyYW1zLmNoYW5uZWxf bGF5b3V0KCk7CisrICAgIGJ1ZmZlcl9zaXplID0gc3RkOjptaW4oYnVmZmVyX3NpemUsIGlucHV0 X3BhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigpKTsKKysgIH0KKysKKysgIGludCB1c2VyX2J1ZmZl cl9zaXplID0gR2V0VXNlckJ1ZmZlclNpemUoKTsKKysgIGlmICh1c2VyX2J1ZmZlcl9zaXplKQor KyAgICBidWZmZXJfc2l6ZSA9IHVzZXJfYnVmZmVyX3NpemU7CisrCisrICByZXR1cm4gQXVkaW9Q YXJhbWV0ZXJzKAorKyAgICAgIEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZ LCBjaGFubmVsX2xheW91dCwKKysgICAgICBzYW1wbGVfcmF0ZSwgYnVmZmVyX3NpemUpOworK30K KysKKytBdWRpb0lucHV0U3RyZWFtKiBBdWRpb01hbmFnZXJTbmRpbzo6TWFrZUlucHV0U3RyZWFt KAorKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcykgeworKyAgRExPRyhXQVJOSU5H KSA8PCAiTWFrZUlucHV0U3RyZWFtIjsKKysgIHJldHVybiBuZXcgU25kaW9BdWRpb0lucHV0U3Ry ZWFtKHRoaXMsCisrICAgICAgICAgICAgIEF1ZGlvRGV2aWNlRGVzY3JpcHRpb246OmtEZWZhdWx0 RGV2aWNlSWQsIHBhcmFtcyk7CisrfQorKworK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01hbmFn ZXJTbmRpbzo6TWFrZU91dHB1dFN0cmVhbSgKKysgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBw YXJhbXMpIHsKKysgIERMT0coV0FSTklORykgPDwgIk1ha2VPdXRwdXRTdHJlYW0iOworKyAgcmV0 dXJuIG5ldyBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKHBhcmFtcywgdGhpcyk7CisrfQorKworK30g IC8vIG5hbWVzcGFjZSBtZWRpYQorZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3Jp Zy9tZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmggY2hyb21pdW0tODMuMC40 MTAzLjk3L21lZGlhL2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaAorLS0tIG1lZGlh L2F1ZGlvL3NuZGlvL2F1ZGlvX21hbmFnZXJfc25kaW8uaC5vcmlnCTE5NzAtMDEtMDEgMDE6MDA6 MDAuMDAwMDAwMDAwICswMTAwCisrKysgbWVkaWEvYXVkaW8vc25kaW8vYXVkaW9fbWFuYWdlcl9z bmRpby5oCTIwMjAtMDYtMTMgMTc6MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDY1 IEBACisrLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln aHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5 IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5T RSBmaWxlLgorKworKyNpZm5kZWYgTUVESUFfQVVESU9fU05ESU9fQVVESU9fTUFOQUdFUl9TTkRJ T19IXworKyNkZWZpbmUgTUVESUFfQVVESU9fU05ESU9fQVVESU9fTUFOQUdFUl9TTkRJT19IXwor KworKyNpbmNsdWRlIDxzZXQ+CisrCisrI2luY2x1ZGUgImJhc2UvY29tcGlsZXJfc3BlY2lmaWMu aCIKKysjaW5jbHVkZSAiYmFzZS9tYWNyb3MuaCIKKysjaW5jbHVkZSAiYmFzZS9tZW1vcnkvcmVm X2NvdW50ZWQuaCIKKysjaW5jbHVkZSAiYmFzZS90aHJlYWRpbmcvdGhyZWFkLmgiCisrI2luY2x1 ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFnZXJfYmFzZS5oIgorKworK25hbWVzcGFjZSBtZWRp YSB7CisrCisrY2xhc3MgTUVESUFfRVhQT1JUIEF1ZGlvTWFuYWdlclNuZGlvIDogcHVibGljIEF1 ZGlvTWFuYWdlckJhc2UgeworKyBwdWJsaWM6CisrICBBdWRpb01hbmFnZXJTbmRpbyhzdGQ6OnVu aXF1ZV9wdHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVhZCwKKysgICAgICAgICAgICAgICAgICAg QXVkaW9Mb2dGYWN0b3J5KiBhdWRpb19sb2dfZmFjdG9yeSk7CisrICB+QXVkaW9NYW5hZ2VyU25k aW8oKSBvdmVycmlkZTsKKysKKysgIC8vIEltcGxlbWVudGF0aW9uIG9mIEF1ZGlvTWFuYWdlci4K KysgIGJvb2wgSGFzQXVkaW9PdXRwdXREZXZpY2VzKCkgb3ZlcnJpZGU7CisrICBib29sIEhhc0F1 ZGlvSW5wdXREZXZpY2VzKCkgb3ZlcnJpZGU7CisrICB2b2lkIEdldEF1ZGlvSW5wdXREZXZpY2VO YW1lcyhBdWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIG92ZXJyaWRlOworKyAgdm9pZCBH ZXRBdWRpb091dHB1dERldmljZU5hbWVzKEF1ZGlvRGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykg b3ZlcnJpZGU7CisrICBBdWRpb1BhcmFtZXRlcnMgR2V0SW5wdXRTdHJlYW1QYXJhbWV0ZXJzKAor KyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQpIG92ZXJyaWRlOworKyAgY29uc3Qg Y2hhciogR2V0TmFtZSgpIG92ZXJyaWRlOworKworKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVk aW9NYW5hZ2VyQmFzZS4KKysgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTGluZWFyT3V0cHV0U3Ry ZWFtKAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorKyAgICAgIGNvbnN0 IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOworKyAgQXVkaW9PdXRwdXRTdHJl YW0qIE1ha2VMb3dMYXRlbmN5T3V0cHV0U3RyZWFtKAorKyAgICAgIGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgcGFyYW1zLAorKyAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfaWQsCisrICAg ICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisrICBBdWRpb0lu cHV0U3RyZWFtKiBNYWtlTGluZWFySW5wdXRTdHJlYW0oCisrICAgICAgY29uc3QgQXVkaW9QYXJh bWV0ZXJzJiBwYXJhbXMsCisrICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKysg ICAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKysgIEF1ZGlv SW5wdXRTdHJlYW0qIE1ha2VMb3dMYXRlbmN5SW5wdXRTdHJlYW0oCisrICAgICAgY29uc3QgQXVk aW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9p ZCwKKysgICAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKysK KysgcHJvdGVjdGVkOgorKyAgQXVkaW9QYXJhbWV0ZXJzIEdldFByZWZlcnJlZE91dHB1dFN0cmVh bVBhcmFtZXRlcnMoCisrICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQs CisrICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBpbnB1dF9wYXJhbXMpIG92ZXJyaWRlOwor KworKyBwcml2YXRlOgorKyAgLy8gQ2FsbGVkIGJ5IE1ha2VMaW5lYXJPdXRwdXRTdHJlYW0gYW5k IE1ha2VMb3dMYXRlbmN5T3V0cHV0U3RyZWFtLgorKyAgQXVkaW9PdXRwdXRTdHJlYW0qIE1ha2VP dXRwdXRTdHJlYW0oY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpOworKyAgQXVkaW9JbnB1 dFN0cmVhbSogTWFrZUlucHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsK KysKKysgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihBdWRpb01hbmFnZXJTbmRpbyk7CisrfTsK KysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKysKKysjZW5kaWYgIC8vIE1FRElBX0FVRElPX1NO RElPX0FVRElPX01BTkFHRVJfU05ESU9fSF8KK2RpZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAz Ljk3Lm9yaWcvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9faW5wdXQuY2MgY2hyb21pdW0tODMuMC40 MTAzLjk3L21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmNjCistLS0gbWVkaWEvYXVkaW8v c25kaW8vc25kaW9faW5wdXQuY2Mub3JpZwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCAr MDEwMAorKysrIG1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmNjCTIwMjAtMDYtMTMgMTc6 MzI6MjguNTExMzk1OTY5ICswMjAwCitAQCAtMCwwICsxLDIwMCBAQAorKy8vIENvcHlyaWdodCAy MDEzIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKy8vIFVzZSBv ZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhh dCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorKworKyNpbmNsdWRlICJi YXNlL2JpbmQuaCIKKysjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCisrI2luY2x1ZGUgImJhc2Uv bWFjcm9zLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fdGltZXN0YW1wX2hlbHBlci5o IgorKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9hdWRpb19tYW5hZ2VyX3NuZGlvLmgiCisr I2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2F1ZGlvX21hbmFnZXIuaCIKKysjaW5jbHVkZSAibWVkaWEv YXVkaW8vc25kaW8vc25kaW9faW5wdXQuaCIKKysKKytuYW1lc3BhY2UgbWVkaWEgeworKworK3N0 YXRpYyBjb25zdCBTYW1wbGVGb3JtYXQga1NhbXBsZUZvcm1hdCA9IGtTYW1wbGVGb3JtYXRTMTY7 CisrCisrdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06Ok9uTW92ZUNhbGxiYWNrKHZvaWQgKmFy ZywgaW50IGRlbHRhKQorK3sKKysgIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSogc2VsZiA9IHN0YXRp Y19jYXN0PFNuZGlvQXVkaW9JbnB1dFN0cmVhbSo+KGFyZyk7CisrCisrICBzZWxmLT5od19kZWxh eSArPSBkZWx0YTsKKyt9CisrCisrdm9pZCAqU25kaW9BdWRpb0lucHV0U3RyZWFtOjpUaHJlYWRF bnRyeSh2b2lkICphcmcpIHsKKysgIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSogc2VsZiA9IHN0YXRp Y19jYXN0PFNuZGlvQXVkaW9JbnB1dFN0cmVhbSo+KGFyZyk7CisrCisrICBzZWxmLT5UaHJlYWRM b29wKCk7CisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrU25kaW9BdWRpb0lucHV0U3RyZWFtOjpT bmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlciwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg ZGV2aWNlX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMpCisrICAgIDogbWFuYWdlcihtYW5hZ2Vy KSwKKysgICAgICBwYXJhbXMocGFyYW1zKSwKKysgICAgICBhdWRpb19idXMoQXVkaW9CdXM6OkNy ZWF0ZShwYXJhbXMpKSwKKysgICAgICBzdGF0ZShrQ2xvc2VkKSB7CisrfQorKworK1NuZGlvQXVk aW9JbnB1dFN0cmVhbTo6flNuZGlvQXVkaW9JbnB1dFN0cmVhbSgpIHsKKysgIGlmIChzdGF0ZSAh PSBrQ2xvc2VkKQorKyAgICBDbG9zZSgpOworK30KKysKKytib29sIFNuZGlvQXVkaW9JbnB1dFN0 cmVhbTo6T3BlbigpIHsKKysgIHN0cnVjdCBzaW9fcGFyIHBhcjsKKysgIGludCBzaWc7CisrCisr ICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKysgICAgcmV0dXJuIGZhbHNlOworKworKyAgaWYgKHBh cmFtcy5mb3JtYXQoKSAhPSBBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIgJiYKKysg ICAgICBwYXJhbXMuZm9ybWF0KCkgIT0gQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTE9XX0xB VEVOQ1kpIHsKKysgICAgTE9HKFdBUk5JTkcpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBmb3JtYXQu IjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgc2lvX2luaXRwYXIoJnBhcik7Cisr ICBwYXIucmF0ZSA9IHBhcmFtcy5zYW1wbGVfcmF0ZSgpOworKyAgcGFyLnJjaGFuID0gcGFyYW1z LmNoYW5uZWxzKCk7CisrICBwYXIuYml0cyA9IFNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwo a1NhbXBsZUZvcm1hdCk7CisrICBwYXIuYnBzID0gcGFyLmJpdHMgLyA4OworKyAgcGFyLnNpZyA9 IHNpZyA9IHBhci5iaXRzICE9IDggPyAxIDogMDsKKysgIHBhci5sZSA9IFNJT19MRV9OQVRJVkU7 CisrICBwYXIuYXBwYnVmc3ogPSBwYXJhbXMuZnJhbWVzX3Blcl9idWZmZXIoKTsKKysKKysgIGhk bCA9IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19SRUMsIDApOworKworKyAgaWYgKGhkbCA9PSBO VUxMKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IG9wZW4gYXVkaW8gZGV2aWNlLiI7 CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysKKysgIGlmICghc2lvX3NldHBhcihoZGwsICZw YXIpIHx8ICFzaW9fZ2V0cGFyKGhkbCwgJnBhcikpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiQ291 bGRuJ3Qgc2V0IGF1ZGlvIHBhcmFtZXRlcnMuIjsKKysgICAgZ290byBiYWRfY2xvc2U7CisrICB9 CisrCisrICBpZiAocGFyLnJhdGUgICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLnNhbXBsZV9yYXRl KCkgfHwKKysgICAgICBwYXIucmNoYW4gIT0gKHVuc2lnbmVkIGludClwYXJhbXMuY2hhbm5lbHMo KSB8fAorKyAgICAgIHBhci5iaXRzICAhPSAodW5zaWduZWQgaW50KVNhbXBsZUZvcm1hdFRvQml0 c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCkgfHwKKysgICAgICBwYXIuc2lnICAgIT0gKHVuc2ln bmVkIGludClzaWcgfHwKKysgICAgICAocGFyLmJwcyA+IDEgJiYgcGFyLmxlICE9IFNJT19MRV9O QVRJVkUpIHx8CisrICAgICAgKHBhci5iaXRzICE9IHBhci5icHMgKiA4KSkgeworKyAgICBMT0co RVJST1IpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBwYXJhbWV0ZXJzLiI7CisrICAgIGdvdG8gYmFk X2Nsb3NlOworKyAgfQorKyAgc3RhdGUgPSBrU3RvcHBlZDsKKysgIGJ1ZmZlciA9IG5ldyBjaGFy W2F1ZGlvX2J1cy0+ZnJhbWVzKCkgKiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9y bWF0KV07CisrICBzaW9fb25tb3ZlKGhkbCwgJk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsKKysgIHJl dHVybiB0cnVlOworK2JhZF9jbG9zZToKKysgIHNpb19jbG9zZShoZGwpOworKyAgcmV0dXJuIGZh bHNlOworK30KKysKKyt2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U3RhcnQoQXVkaW9JbnB1 dENhbGxiYWNrKiBjYikgeworKworKyAgU3RhcnRBZ2MoKTsKKysKKysgIHN0YXRlID0ga1J1bm5p bmc7CisrICBod19kZWxheSA9IDA7CisrICBjYWxsYmFjayA9IGNiOworKyAgc2lvX3N0YXJ0KGhk bCk7CisrICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVMTCwgJlRocmVhZEVudHJ5LCB0 aGlzKSAhPSAwKSB7CisrICAgIExPRyhFUlJPUikgPDwgIkZhaWxlZCB0byBjcmVhdGUgcmVhbC10 aW1lIHRocmVhZCBmb3IgcmVjb3JkaW5nLiI7CisrICAgIHNpb19zdG9wKGhkbCk7CisrICAgIHN0 YXRlID0ga1N0b3BwZWQ7CisrICB9CisrfQorKworK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFt OjpTdG9wKCkgeworKworKyAgaWYgKHN0YXRlID09IGtTdG9wcGVkKQorKyAgICByZXR1cm47Cisr CisrICBzdGF0ZSA9IGtTdG9wV2FpdDsKKysgIHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwpOwor KyAgc2lvX3N0b3AoaGRsKTsKKysgIHN0YXRlID0ga1N0b3BwZWQ7CisrCisrICBTdG9wQWdjKCk7 CisrfQorKworK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpDbG9zZSgpIHsKKysKKysgIGlm IChzdGF0ZSA9PSBrQ2xvc2VkKQorKyAgICByZXR1cm47CisrCisrICBpZiAoc3RhdGUgPT0ga1J1 bm5pbmcpCisrICAgIFN0b3AoKTsKKysKKysgIHN0YXRlID0ga0Nsb3NlZDsKKysgIGRlbGV0ZSBb XSBidWZmZXI7CisrICBzaW9fY2xvc2UoaGRsKTsKKysKKysgIG1hbmFnZXItPlJlbGVhc2VJbnB1 dFN0cmVhbSh0aGlzKTsKKyt9CisrCisrZG91YmxlIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6R2V0 TWF4Vm9sdW1lKCkgeworKyAgLy8gTm90IHN1cHBvcnRlZAorKyAgcmV0dXJuIDAuMDsKKyt9Cisr Cisrdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNldFZvbHVtZShkb3VibGUgdm9sdW1lKSB7 CisrICAvLyBOb3Qgc3VwcG9ydGVkLiBEbyBub3RoaW5nLgorK30KKysKKytkb3VibGUgU25kaW9B dWRpb0lucHV0U3RyZWFtOjpHZXRWb2x1bWUoKSB7CisrICAvLyBOb3Qgc3VwcG9ydGVkLgorKyAg cmV0dXJuIDAuMDsKKyt9CisrCisrYm9vbCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OklzTXV0ZWQo KSB7CisrICAvLyBOb3Qgc3VwcG9ydGVkLgorKyAgcmV0dXJuIGZhbHNlOworK30KKysKKyt2b2lk IFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U2V0T3V0cHV0RGV2aWNlRm9yQWVjKAorKyAgICBjb25z dCBzdGQ6OnN0cmluZyYgb3V0cHV0X2RldmljZV9pZCkgeworKyAgLy8gTm90IHN1cHBvcnRlZC4K Kyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlRocmVhZExvb3Aodm9pZCkgewor KyAgc2l6ZV90IHRvZG8sIG47CisrICBjaGFyICpkYXRhOworKyAgdW5zaWduZWQgaW50IG5mcmFt ZXM7CisrICBkb3VibGUgbm9ybWFsaXplZF92b2x1bWUgPSAwLjA7CisrCisrICBuZnJhbWVzID0g YXVkaW9fYnVzLT5mcmFtZXMoKTsKKysKKysgIHdoaWxlIChzdGF0ZSA9PSBrUnVubmluZyAmJiAh c2lvX2VvZihoZGwpKSB7CisrCisrICAgIEdldEFnY1ZvbHVtZSgmbm9ybWFsaXplZF92b2x1bWUp OworKworKyAgICAvLyByZWFkIG9uZSBibG9jaworKyAgICB0b2RvID0gbmZyYW1lcyAqIHBhcmFt cy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpOworKyAgICBkYXRhID0gYnVmZmVyOwor KyAgICB3aGlsZSAodG9kbyA+IDApIHsKKysgICAgICBuID0gc2lvX3JlYWQoaGRsLCBkYXRhLCB0 b2RvKTsKKysgICAgICBpZiAobiA9PSAwKQorKyAgICAgICAgcmV0dXJuOwkvLyB1bnJlY292ZXJh YmxlIEkvTyBlcnJvcgorKyAgICAgIHRvZG8gLT0gbjsKKysgICAgICBkYXRhICs9IG47CisrICAg IH0KKysgICAgaHdfZGVsYXkgLT0gbmZyYW1lczsKKysKKysgICAgLy8gY29udmVydCBmcmFtZXMg Y291bnQgdG8gVGltZURlbHRhCisrICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBkZWxheSA9IEF1 ZGlvVGltZXN0YW1wSGVscGVyOjpGcmFtZXNUb1RpbWUoaHdfZGVsYXksCisrICAgICAgcGFyYW1z LnNhbXBsZV9yYXRlKCkpOworKworKyAgICAvLyBwdXNoIGludG8gYnVzCisrICAgIGF1ZGlvX2J1 cy0+RnJvbUludGVybGVhdmVkKGJ1ZmZlciwgbmZyYW1lcywgU2FtcGxlRm9ybWF0VG9CeXRlc1Bl ckNoYW5uZWwoa1NhbXBsZUZvcm1hdCkpOworKworKyAgICAvLyBpbnZva2UgY2FsbGJhY2sKKysg ICAgY2FsbGJhY2stPk9uRGF0YShhdWRpb19idXMuZ2V0KCksIGJhc2U6OlRpbWVUaWNrczo6Tm93 KCkgLSBkZWxheSwgMS4pOworKyAgfQorK30KKysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKK2Rp ZmYgLU5hdXIgY2hyb21pdW0tODMuMC40MTAzLjk3Lm9yaWcvbWVkaWEvYXVkaW8vc25kaW8vc25k aW9faW5wdXQuaCBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9f aW5wdXQuaAorLS0tIG1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX2lucHV0Lmgub3JpZwkxOTcwLTAx LTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysrIG1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlv X2lucHV0LmgJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKK0BAIC0wLDAgKzEs OTEgQEAKKysvLyBDb3B5cmlnaHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0Ug ZmlsZS4KKysKKysjaWZuZGVmIE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCisrI2Rl ZmluZSBNRURJQV9BVURJT19TTkRJT19TTkRJT19JTlBVVF9IXworKworKyNpbmNsdWRlIDxzdGRp bnQuaD4KKysjaW5jbHVkZSA8c3RyaW5nPgorKyNpbmNsdWRlIDxzbmRpby5oPgorKworKyNpbmNs dWRlICJiYXNlL2NvbXBpbGVyX3NwZWNpZmljLmgiCisrI2luY2x1ZGUgImJhc2UvbWFjcm9zLmgi CisrI2luY2x1ZGUgImJhc2UvbWVtb3J5L3dlYWtfcHRyLmgiCisrI2luY2x1ZGUgImJhc2UvdGlt ZS90aW1lLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1ZGlvL2FnY19hdWRpb19zdHJlYW0uaCIKKysj aW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8v YXVkaW9fZGV2aWNlX2Rlc2NyaXB0aW9uLmgiCisrI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9f cGFyYW1ldGVycy5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisrY2xhc3MgQXVkaW9NYW5h Z2VyQmFzZTsKKysKKysvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb091dHB1dFN0cmVhbSB1c2lu ZyBzbmRpbyg3KQorK2NsYXNzIFNuZGlvQXVkaW9JbnB1dFN0cmVhbSA6IHB1YmxpYyBBZ2NBdWRp b1N0cmVhbTxBdWRpb0lucHV0U3RyZWFtPiB7CisrIHB1YmxpYzoKKysgIC8vIFBhc3MgdGhpcyB0 byB0aGUgY29uc3RydWN0b3IgaWYgeW91IHdhbnQgdG8gYXR0ZW1wdCBhdXRvLXNlbGVjdGlvbgor KyAgLy8gb2YgdGhlIGF1ZGlvIHJlY29yZGluZyBkZXZpY2UuCisrICBzdGF0aWMgY29uc3QgY2hh ciBrQXV0b1NlbGVjdERldmljZVtdOworKworKyAgLy8gQ3JlYXRlIGEgUENNIE91dHB1dCBzdHJl YW0gZm9yIHRoZSBTTkRJTyBkZXZpY2UgaWRlbnRpZmllZCBieQorKyAgLy8gfGRldmljZV9uYW1l fC4gSWYgdW5zdXJlIG9mIHdoYXQgdG8gdXNlIGZvciB8ZGV2aWNlX25hbWV8LCB1c2UKKysgIC8v IHxrQXV0b1NlbGVjdERldmljZXwuCisrICBTbmRpb0F1ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5h Z2VyQmFzZSogYXVkaW9fbWFuYWdlciwKKysgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6 OnN0cmluZyYgZGV2aWNlX25hbWUsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9Q YXJhbWV0ZXJzJiBwYXJhbXMpOworKworKyAgflNuZGlvQXVkaW9JbnB1dFN0cmVhbSgpIG92ZXJy aWRlOworKworKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9JbnB1dFN0cmVhbS4KKysgIGJv b2wgT3BlbigpIG92ZXJyaWRlOworKyAgdm9pZCBTdGFydChBdWRpb0lucHV0Q2FsbGJhY2sqIGNh bGxiYWNrKSBvdmVycmlkZTsKKysgIHZvaWQgU3RvcCgpIG92ZXJyaWRlOworKyAgdm9pZCBDbG9z ZSgpIG92ZXJyaWRlOworKyAgZG91YmxlIEdldE1heFZvbHVtZSgpIG92ZXJyaWRlOworKyAgdm9p ZCBTZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkgb3ZlcnJpZGU7CisrICBkb3VibGUgR2V0Vm9sdW1l KCkgb3ZlcnJpZGU7CisrICBib29sIElzTXV0ZWQoKSBvdmVycmlkZTsKKysgIHZvaWQgU2V0T3V0 cHV0RGV2aWNlRm9yQWVjKGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkKSBvdmVy cmlkZTsKKysKKysgcHJpdmF0ZToKKysKKysgIGVudW0gU3RyZWFtU3RhdGUgeworKyAgICBrQ2xv c2VkLCAgICAgICAgICAgIC8vIE5vdCBvcGVuZWQgeWV0CisrICAgIGtTdG9wcGVkLCAgICAgICAg ICAgLy8gRGV2aWNlIG9wZW5lZCwgYnV0IG5vdCBzdGFydGVkIHlldAorKyAgICBrUnVubmluZywg ICAgICAgICAgIC8vIFN0YXJ0ZWQsIGRldmljZSBwbGF5aW5nCisrICAgIGtTdG9wV2FpdCAgICAg ICAgICAgLy8gU3RvcHBpbmcsIHdhaXRpbmcgZm9yIHRoZSByZWFsLXRpbWUgdGhyZWFkIHRvIGV4 aXQKKysgIH07CisrCisrICAvLyBDLXN0eWxlIGNhbGwtYmFja3MKKysgIHN0YXRpYyB2b2lkIE9u TW92ZUNhbGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKTsKKysgIHN0YXRpYyB2b2lkKiBUaHJl YWRFbnRyeSh2b2lkICphcmcpOworKworKyAgLy8gQ29udGludW91c2x5IG1vdmVzIGRhdGEgZnJv bSB0aGUgZGV2aWNlIHRvIHRoZSBjb25zdW1lcgorKyAgdm9pZCBUaHJlYWRMb29wKCk7CisrICAv LyBPdXIgY3JlYXRvciwgdGhlIGF1ZGlvIG1hbmFnZXIgbmVlZHMgdG8gYmUgbm90aWZpZWQgd2hl biB3ZSBjbG9zZS4KKysgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXI7CisrICAvLyBQYXJhbWV0 ZXJzIG9mIHRoZSBzb3VyY2UKKysgIEF1ZGlvUGFyYW1ldGVycyBwYXJhbXM7CisrICAvLyBXZSBz dG9yZSBkYXRhIGhlcmUgZm9yIGNvbnN1bWVyCisrICBzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9CdXM+ IGF1ZGlvX2J1czsKKysgIC8vIENhbGwtYmFjayB0aGF0IGNvbnN1bWVzIHJlY29yZGVkIGRhdGEK KysgIEF1ZGlvSW5wdXRDYWxsYmFjayogY2FsbGJhY2s7ICAvLyBWYWxpZCBkdXJpbmcgYSByZWNv cmRpbmcgc2Vzc2lvbi4KKysgIC8vIEhhbmRsZSBvZiB0aGUgYXVkaW8gZGV2aWNlCisrICBzdHJ1 Y3Qgc2lvX2hkbCogaGRsOworKyAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RyZWFtCisrICBl bnVtIFN0cmVhbVN0YXRlIHN0YXRlOworKyAgLy8gSGlnaCBwcmlvcml0eSB0aHJlYWQgcnVubmlu ZyBUaHJlYWRMb29wKCkKKysgIHB0aHJlYWRfdCB0aHJlYWQ7CisrICAvLyBOdW1iZXIgb2YgZnJh bWVzIGJ1ZmZlcmVkIGluIHRoZSBoYXJkd2FyZQorKyAgaW50IGh3X2RlbGF5OworKyAgLy8gVGVt cG9yYXJ5IGJ1ZmZlciB3aGVyZSBkYXRhIGlzIHN0b3JlZCBzbmRpby1jb21wYXRpYmxlIGZvcm1h dAorKyAgY2hhciogYnVmZmVyOworKworKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNuZGlv QXVkaW9JbnB1dFN0cmVhbSk7CisrfTsKKysKKyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKysKKysj ZW5kaWYgIC8vIE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCitkaWZmIC1OYXVyIGNo cm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5j YyBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmNj CistLS0gbWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0LmNjLm9yaWcJMTk3MC0wMS0wMSAw MTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBtZWRpYS9hdWRpby9zbmRpby9zbmRpb19vdXRw dXQuY2MJMjAyMC0wNi0xMyAxNzozMjoyOC41MTEzOTU5NjkgKzAyMDAKK0BAIC0wLDAgKzEsMTgz IEBACisrLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmln aHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5 IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5T RSBmaWxlLgorKworKyNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKysjaW5jbHVkZSAiYmFzZS90 aW1lL3RpbWUuaCIKKysjaW5jbHVkZSAiYmFzZS90aW1lL2RlZmF1bHRfdGlja19jbG9jay5oIgor KyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19tYW5hZ2VyX2Jhc2UuaCIKKysjaW5jbHVkZSAi bWVkaWEvYmFzZS9hdWRpb190aW1lc3RhbXBfaGVscGVyLmgiCisrI2luY2x1ZGUgIm1lZGlhL2F1 ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5oIgorKworK25hbWVzcGFjZSBtZWRpYSB7CisrCisrc3Rh dGljIGNvbnN0IFNhbXBsZUZvcm1hdCBrU2FtcGxlRm9ybWF0ID0ga1NhbXBsZUZvcm1hdFMxNjsK KysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06Ok9uTW92ZUNhbGxiYWNrKHZvaWQgKmFy ZywgaW50IGRlbHRhKSB7CisrICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKiBzZWxmID0gc3RhdGlj X2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0cmVhbSo+KGFyZyk7CisrCisrICBzZWxmLT5od19kZWxh eSAtPSBkZWx0YTsKKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpPblZvbENh bGxiYWNrKHZvaWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCkgeworKyAgU25kaW9BdWRpb091dHB1 dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qPihhcmcp OworKworKyAgc2VsZi0+dm9sID0gdm9sOworK30KKysKKyt2b2lkICpTbmRpb0F1ZGlvT3V0cHV0 U3RyZWFtOjpUaHJlYWRFbnRyeSh2b2lkICphcmcpIHsKKysgIFNuZGlvQXVkaW9PdXRwdXRTdHJl YW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKysK KysgIHNlbGYtPlRocmVhZExvb3AoKTsKKysgIHJldHVybiBOVUxMOworK30KKysKKytTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtOjpTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1l dGVycyYgcGFyYW1zLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcikKKysgICAgOiBtYW5hZ2VyKG1hbmFnZXIp LAorKyAgICAgIHBhcmFtcyhwYXJhbXMpLAorKyAgICAgIGF1ZGlvX2J1cyhBdWRpb0J1czo6Q3Jl YXRlKHBhcmFtcykpLAorKyAgICAgIHN0YXRlKGtDbG9zZWQpLAorKyAgICAgIG11dGV4KFBUSFJF QURfTVVURVhfSU5JVElBTElaRVIpIHsKKyt9CisrCisrU25kaW9BdWRpb091dHB1dFN0cmVhbTo6 flNuZGlvQXVkaW9PdXRwdXRTdHJlYW0oKSB7CisrICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKysg ICAgQ2xvc2UoKTsKKyt9CisrCisrYm9vbCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpPcGVuKCkg eworKyAgc3RydWN0IHNpb19wYXIgcGFyOworKyAgaW50IHNpZzsKKysKKysgIGlmIChwYXJhbXMu Zm9ybWF0KCkgIT0gQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTElORUFSICYmCisrICAgICAg cGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZ KSB7CisrICAgIExPRyhXQVJOSU5HKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gZm9ybWF0LiI7Cisr ICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysgIHNpb19pbml0cGFyKCZwYXIpOworKyAgcGFyLnJh dGUgPSBwYXJhbXMuc2FtcGxlX3JhdGUoKTsKKysgIHBhci5wY2hhbiA9IHBhcmFtcy5jaGFubmVs cygpOworKyAgcGFyLmJpdHMgPSBTYW1wbGVGb3JtYXRUb0JpdHNQZXJDaGFubmVsKGtTYW1wbGVG b3JtYXQpOworKyAgcGFyLmJwcyA9IHBhci5iaXRzIC8gODsKKysgIHBhci5zaWcgPSBzaWcgPSBw YXIuYml0cyAhPSA4ID8gMSA6IDA7CisrICBwYXIubGUgPSBTSU9fTEVfTkFUSVZFOworKyAgcGFy LmFwcGJ1ZnN6ID0gcGFyYW1zLmZyYW1lc19wZXJfYnVmZmVyKCk7CisrCisrICBoZGwgPSBzaW9f b3BlbihTSU9fREVWQU5ZLCBTSU9fUExBWSwgMCk7CisrICBpZiAoaGRsID09IE5VTEwpIHsKKysg ICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKKysgICAgcmV0 dXJuIGZhbHNlOworKyAgfQorKyAgaWYgKCFzaW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19n ZXRwYXIoaGRsLCAmcGFyKSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCBzZXQgYXVk aW8gcGFyYW1ldGVycy4iOworKyAgICBnb3RvIGJhZF9jbG9zZTsKKysgIH0KKysgIGlmIChwYXIu cmF0ZSAgIT0gKHVuc2lnbmVkIGludClwYXJhbXMuc2FtcGxlX3JhdGUoKSB8fAorKyAgICAgIHBh ci5wY2hhbiAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5jaGFubmVscygpIHx8CisrICAgICAgcGFy LmJpdHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hhbm5lbChrU2Ft cGxlRm9ybWF0KSB8fAorKyAgICAgIHBhci5zaWcgICAhPSAodW5zaWduZWQgaW50KXNpZyB8fAor KyAgICAgIChwYXIuYnBzID4gMSAmJiBwYXIubGUgIT0gU0lPX0xFX05BVElWRSkgfHwKKysgICAg ICAocGFyLmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7CisrICAgIExPRyhFUlJPUikgPDwgIlVuc3Vw cG9ydGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKKysgICAgZ290byBiYWRfY2xvc2U7CisrICB9Cisr ICBzdGF0ZSA9IGtTdG9wcGVkOworKyAgdm9scGVuZGluZyA9IDA7CisrICB2b2wgPSAwOworKyAg YnVmZmVyID0gbmV3IGNoYXJbYXVkaW9fYnVzLT5mcmFtZXMoKSAqIHBhcmFtcy5HZXRCeXRlc1Bl ckZyYW1lKGtTYW1wbGVGb3JtYXQpXTsKKysgIHNpb19vbm1vdmUoaGRsLCAmT25Nb3ZlQ2FsbGJh Y2ssIHRoaXMpOworKyAgc2lvX29udm9sKGhkbCwgJk9uVm9sQ2FsbGJhY2ssIHRoaXMpOworKyAg cmV0dXJuIHRydWU7CisrIGJhZF9jbG9zZToKKysgIHNpb19jbG9zZShoZGwpOworKyAgcmV0dXJu IGZhbHNlOworK30KKysKKyt2b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkNsb3NlKCkgewor KyAgaWYgKHN0YXRlID09IGtDbG9zZWQpCisrICAgIHJldHVybjsKKysgIGlmIChzdGF0ZSA9PSBr UnVubmluZykKKysgICAgU3RvcCgpOworKyAgc3RhdGUgPSBrQ2xvc2VkOworKyAgZGVsZXRlIFtd IGJ1ZmZlcjsKKysgIHNpb19jbG9zZShoZGwpOworKyAgbWFuYWdlci0+UmVsZWFzZU91dHB1dFN0 cmVhbSh0aGlzKTsgIC8vIENhbGxzIHRoZSBkZXN0cnVjdG9yCisrfQorKworK3ZvaWQgU25kaW9B dWRpb091dHB1dFN0cmVhbTo6U3RhcnQoQXVkaW9Tb3VyY2VDYWxsYmFjayogY2FsbGJhY2spIHsK KysgIHN0YXRlID0ga1J1bm5pbmc7CisrICBod19kZWxheSA9IDA7CisrICBzb3VyY2UgPSBjYWxs YmFjazsKKysgIHNpb19zdGFydChoZGwpOworKyAgaWYgKHB0aHJlYWRfY3JlYXRlKCZ0aHJlYWQs IE5VTEwsICZUaHJlYWRFbnRyeSwgdGhpcykgIT0gMCkgeworKyAgICBMT0coRVJST1IpIDw8ICJG YWlsZWQgdG8gY3JlYXRlIHJlYWwtdGltZSB0aHJlYWQuIjsKKysgICAgc2lvX3N0b3AoaGRsKTsK KysgICAgc3RhdGUgPSBrU3RvcHBlZDsKKysgIH0KKyt9CisrCisrdm9pZCBTbmRpb0F1ZGlvT3V0 cHV0U3RyZWFtOjpTdG9wKCkgeworKyAgaWYgKHN0YXRlID09IGtTdG9wcGVkKQorKyAgICByZXR1 cm47CisrICBzdGF0ZSA9IGtTdG9wV2FpdDsKKysgIHB0aHJlYWRfam9pbih0aHJlYWQsIE5VTEwp OworKyAgc2lvX3N0b3AoaGRsKTsKKysgIHN0YXRlID0ga1N0b3BwZWQ7CisrfQorKworK3ZvaWQg U25kaW9BdWRpb091dHB1dFN0cmVhbTo6U2V0Vm9sdW1lKGRvdWJsZSB2KSB7CisrICBwdGhyZWFk X211dGV4X2xvY2soJm11dGV4KTsKKysgIHZvbCA9IHYgKiBTSU9fTUFYVk9MOworKyAgdm9scGVu ZGluZyA9IDE7CisrICBwdGhyZWFkX211dGV4X3VubG9jaygmbXV0ZXgpOworK30KKysKKyt2b2lk IFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OkdldFZvbHVtZShkb3VibGUqIHYpIHsKKysgIHB0aHJl YWRfbXV0ZXhfbG9jaygmbXV0ZXgpOworKyAgKnYgPSB2b2wgKiAoMS4gLyBTSU9fTUFYVk9MKTsK KysgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZtdXRleCk7CisrfQorKworKy8vIFRoaXMgc3RyZWFt IGlzIGFsd2F5cyB1c2VkIHdpdGggc3ViIHNlY29uZCBidWZmZXIgc2l6ZXMsIHdoZXJlIGl0J3MK KysvLyBzdWZmaWNpZW50IHRvIHNpbXBseSBhbHdheXMgZmx1c2ggdXBvbiBTdGFydCgpLgorK3Zv aWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6Rmx1c2goKSB7fQorKworK3ZvaWQgU25kaW9BdWRp b091dHB1dFN0cmVhbTo6VGhyZWFkTG9vcCh2b2lkKSB7CisrICBpbnQgYXZhaWwsIGNvdW50LCBy ZXN1bHQ7CisrCisrICB3aGlsZSAoc3RhdGUgPT0ga1J1bm5pbmcpIHsKKysgICAgLy8gVXBkYXRl IHZvbHVtZSBpZiBuZWVkZWQKKysgICAgcHRocmVhZF9tdXRleF9sb2NrKCZtdXRleCk7CisrICAg IGlmICh2b2xwZW5kaW5nKSB7CisrICAgICAgdm9scGVuZGluZyA9IDA7CisrICAgICAgc2lvX3Nl dHZvbChoZGwsIHZvbCk7CisrICAgIH0KKysgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4 KTsKKysKKysgICAgLy8gR2V0IGRhdGEgdG8gcGxheQorKyAgICBjb25zdCBiYXNlOjpUaW1lRGVs dGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhlbHBlcjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAor KwlwYXJhbXMuc2FtcGxlX3JhdGUoKSk7CisrICAgIGNvdW50ID0gc291cmNlLT5Pbk1vcmVEYXRh KGRlbGF5LCBiYXNlOjpUaW1lVGlja3M6Ok5vdygpLCAwLCBhdWRpb19idXMuZ2V0KCkpOworKyAg ICBhdWRpb19idXMtPlRvSW50ZXJsZWF2ZWQoY291bnQsIFNhbXBsZUZvcm1hdFRvQnl0ZXNQZXJD aGFubmVsKGtTYW1wbGVGb3JtYXQpLCBidWZmZXIpOworKyAgICBpZiAoY291bnQgPT0gMCkgewor KyAgICAgIC8vIFdlIGhhdmUgdG8gc3VibWl0IHNvbWV0aGluZyB0byB0aGUgZGV2aWNlCisrICAg ICAgY291bnQgPSBhdWRpb19idXMtPmZyYW1lcygpOworKyAgICAgIG1lbXNldChidWZmZXIsIDAs IGNvdW50ICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCkpOworKyAgICAg IExPRyhXQVJOSU5HKSA8PCAiTm8gZGF0YSB0byBwbGF5LCBydW5uaW5nIGVtcHR5IGN5Y2xlLiI7 CisrICAgIH0KKysKKysgICAgLy8gU3VibWl0IGRhdGEgdG8gdGhlIGRldmljZQorKyAgICBhdmFp bCA9IGNvdW50ICogcGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCk7CisrICAg IHJlc3VsdCA9IHNpb193cml0ZShoZGwsIGJ1ZmZlciwgYXZhaWwpOworKyAgICBpZiAocmVzdWx0 ID09IDApIHsKKysgICAgICBMT0coV0FSTklORykgPDwgIkF1ZGlvIGRldmljZSBkaXNjb25uZWN0 ZWQuIjsKKysgICAgICBicmVhazsKKysgICAgfQorKworKyAgICAvLyBVcGRhdGUgaGFyZHdhcmUg cG9pbnRlcgorKyAgICBod19kZWxheSArPSBjb3VudDsKKysgIH0KKyt9CisrCisrfSAgLy8gbmFt ZXNwYWNlIG1lZGlhCitkaWZmIC1OYXVyIGNocm9taXVtLTgzLjAuNDEwMy45Ny5vcmlnL21lZGlh L2F1ZGlvL3NuZGlvL3NuZGlvX291dHB1dC5oIGNocm9taXVtLTgzLjAuNDEwMy45Ny9tZWRpYS9h dWRpby9zbmRpby9zbmRpb19vdXRwdXQuaAorLS0tIG1lZGlhL2F1ZGlvL3NuZGlvL3NuZGlvX291 dHB1dC5oLm9yaWcJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBtZWRp YS9hdWRpby9zbmRpby9zbmRpb19vdXRwdXQuaAkyMDIwLTA2LTEzIDE3OjMyOjI4LjUxMTM5NTk2 OSArMDIwMAorQEAgLTAsMCArMSw4NiBAQAorKy8vIENvcHlyaWdodCAoYykgMjAxMiBUaGUgQ2hy b21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKysvLyBVc2Ugb2YgdGhpcyBzb3Vy Y2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisr Ly8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysjaWZuZGVmIE1FRElBX0FVRElPX1NO RElPX1NORElPX09VVFBVVF9IXworKyNkZWZpbmUgTUVESUFfQVVESU9fU05ESU9fU05ESU9fT1VU UFVUX0hfCisrCisrI2luY2x1ZGUgPHB0aHJlYWQuaD4KKysjaW5jbHVkZSA8c25kaW8uaD4KKysK KysjaW5jbHVkZSAiYmFzZS90aW1lL3RpY2tfY2xvY2suaCIKKysjaW5jbHVkZSAiYmFzZS90aW1l L3RpbWUuaCIKKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9faW8uaCIKKysKKytuYW1lc3Bh Y2UgbWVkaWEgeworKworK2NsYXNzIEF1ZGlvTWFuYWdlckJhc2U7CisrCisrLy8gSW1wbGVtZW50 YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0gdXNpbmcgc25kaW8oNykKKytjbGFzcyBTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtIDogcHVibGljIEF1ZGlvT3V0cHV0U3RyZWFtIHsKKysgcHVibGljOgor KyAgLy8gVGhlIG1hbmFnZXIgaXMgY3JlYXRpbmcgdGhpcyBvYmplY3QKKysgIFNuZGlvQXVkaW9P dXRwdXRTdHJlYW0oY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisrICAgICAgICAgICAg ICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXIpOworKyAgdmlydHVhbCB+U25k aW9BdWRpb091dHB1dFN0cmVhbSgpOworKworKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9P dXRwdXRTdHJlYW0uCisrICBib29sIE9wZW4oKSBvdmVycmlkZTsKKysgIHZvaWQgQ2xvc2UoKSBv dmVycmlkZTsKKysgIHZvaWQgU3RhcnQoQXVkaW9Tb3VyY2VDYWxsYmFjayogY2FsbGJhY2spIG92 ZXJyaWRlOworKyAgdm9pZCBTdG9wKCkgb3ZlcnJpZGU7CisrICB2b2lkIFNldFZvbHVtZShkb3Vi bGUgdm9sdW1lKSBvdmVycmlkZTsKKysgIHZvaWQgR2V0Vm9sdW1lKGRvdWJsZSogdm9sdW1lKSBv dmVycmlkZTsKKysgIHZvaWQgRmx1c2goKSBvdmVycmlkZTsKKysKKysgIGZyaWVuZCB2b2lkIHNu ZGlvX29ubW92ZSh2b2lkICphcmcsIGludCBkZWx0YSk7CisrICBmcmllbmQgdm9pZCBzbmRpb19v bnZvbCh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wpOworKyAgZnJpZW5kIHZvaWQgKnNuZGlv X3RocmVhZHN0YXJ0KHZvaWQgKmFyZyk7CisrCisrIHByaXZhdGU6CisrICBlbnVtIFN0cmVhbVN0 YXRlIHsKKysgICAga0Nsb3NlZCwgICAgICAgICAgICAvLyBOb3Qgb3BlbmVkIHlldAorKyAgICBr U3RvcHBlZCwgICAgICAgICAgIC8vIERldmljZSBvcGVuZWQsIGJ1dCBub3Qgc3RhcnRlZCB5ZXQK KysgICAga1J1bm5pbmcsICAgICAgICAgICAvLyBTdGFydGVkLCBkZXZpY2UgcGxheWluZworKyAg ICBrU3RvcFdhaXQgICAgICAgICAgIC8vIFN0b3BwaW5nLCB3YWl0aW5nIGZvciB0aGUgcmVhbC10 aW1lIHRocmVhZCB0byBleGl0CisrICB9OworKworKyAgLy8gQy1zdHlsZSBjYWxsLWJhY2tzCisr ICBzdGF0aWMgdm9pZCBPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBkZWx0YSk7CisrICBz dGF0aWMgdm9pZCBPblZvbENhbGxiYWNrKHZvaWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCk7Cisr ICBzdGF0aWMgdm9pZCogVGhyZWFkRW50cnkodm9pZCAqYXJnKTsKKysKKysgIC8vIENvbnRpbnVv dXNseSBtb3ZlcyBkYXRhIGZyb20gdGhlIHByb2R1Y2VyIHRvIHRoZSBkZXZpY2UKKysgIHZvaWQg VGhyZWFkTG9vcCh2b2lkKTsKKysKKysgIC8vIE91ciBjcmVhdG9yLCB0aGUgYXVkaW8gbWFuYWdl ciBuZWVkcyB0byBiZSBub3RpZmllZCB3aGVuIHdlIGNsb3NlLgorKyAgQXVkaW9NYW5hZ2VyQmFz ZSogbWFuYWdlcjsKKysgIC8vIFBhcmFtZXRlcnMgb2YgdGhlIHNvdXJjZQorKyAgQXVkaW9QYXJh bWV0ZXJzIHBhcmFtczsKKysgIC8vIFNvdXJjZSBzdG9yZXMgZGF0YSBoZXJlCisrICBzdGQ6OnVu aXF1ZV9wdHI8QXVkaW9CdXM+IGF1ZGlvX2J1czsKKysgIC8vIENhbGwtYmFjayB0aGF0IHByb2R1 Y2VzIGRhdGEgdG8gcGxheQorKyAgQXVkaW9Tb3VyY2VDYWxsYmFjayogc291cmNlOworKyAgLy8g SGFuZGxlIG9mIHRoZSBhdWRpbyBkZXZpY2UKKysgIHN0cnVjdCBzaW9faGRsKiBoZGw7CisrICAv LyBDdXJyZW50IHN0YXRlIG9mIHRoZSBzdHJlYW0KKysgIGVudW0gU3RyZWFtU3RhdGUgc3RhdGU7 CisrICAvLyBIaWdoIHByaW9yaXR5IHRocmVhZCBydW5uaW5nIFRocmVhZExvb3AoKQorKyAgcHRo cmVhZF90IHRocmVhZDsKKysgIC8vIFByb3RlY3RzIHZvbCwgdm9scGVuZGluZyBhbmQgaHdfZGVs YXkKKysgIHB0aHJlYWRfbXV0ZXhfdCBtdXRleDsKKysgIC8vIEN1cnJlbnQgdm9sdW1lIGluIHRo ZSAwLi5TSU9fTUFYVk9MIHJhbmdlCisrICBpbnQgdm9sOworKyAgLy8gU2V0IHRvIDEgaWYgdm9s dW1lcyBtdXN0IGJlIHJlZnJlc2hlZCBpbiB0aGUgcmVhbHRpbWUgdGhyZWFkCisrICBpbnQgdm9s cGVuZGluZzsKKysgIC8vIE51bWJlciBvZiBmcmFtZXMgYnVmZmVyZWQgaW4gdGhlIGhhcmR3YXJl CisrICBpbnQgaHdfZGVsYXk7CisrICAvLyBUZW1wb3JhcnkgYnVmZmVyIHdoZXJlIGRhdGEgaXMg c3RvcmVkIHNuZGlvLWNvbXBhdGlibGUgZm9ybWF0CisrICBjaGFyKiBidWZmZXI7CisrCisrICBE SVNBTExPV19DT1BZX0FORF9BU1NJR04oU25kaW9BdWRpb091dHB1dFN0cmVhbSk7CisrfTsKKysK Kyt9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKysKKysjZW5kaWYgIC8vIE1FRElBX0FVRElPX1NORElP X1NORElPX09VVFBVVF9IXworZGlmZiAtTmF1ciBjaHJvbWl1bS04My4wLjQxMDMuOTcub3JpZy9t ZWRpYS9tZWRpYV9vcHRpb25zLmduaSBjaHJvbWl1bS04My4wLjQxMDMuOTcvbWVkaWEvbWVkaWFf b3B0aW9ucy5nbmkKKy0tLSBtZWRpYS9tZWRpYV9vcHRpb25zLmduaS5vcmlnCTIwMjAtMDYtMDMg MjA6NDA6MjYuMDAwMDAwMDAwICswMjAwCisrKysgbWVkaWEvbWVkaWFfb3B0aW9ucy5nbmkJMjAy MC0wNi0xMyAxNzozMjoyOC41MTIzOTU5NjMgKzAyMDAKK0BAIC0xMTksNiArMTE5LDkgQEAKKyAg ICMgRW5hYmxlcyBydW50aW1lIHNlbGVjdGlvbiBvZiBBTFNBIGxpYnJhcnkgZm9yIGF1ZGlvLgor ICAgdXNlX2Fsc2EgPSBmYWxzZQorIAorKyAgIyBFbmFibGUgcnVudGltZSBzZWxlY3Rpb24gb2Yg c25kaW8oNykKKysgIHVzZV9zbmRpbyA9IGZhbHNlCisrCisgICAjIEFsc2Egc2hvdWxkIGJlIHVz ZWQgb24gbm9uLUFuZHJvaWQsIG5vbi1NYWMgUE9TSVggc3lzdGVtcy4KKyAgICMgQWxzYSBzaG91 bGQgYmUgdXNlZCBvbiBkZXNrdG9wIENocm9tZWNhc3QgYW5kIGF1ZGlvLW9ubHkgQ2hyb21lY2Fz dCBidWlsZHMuCisgICBpZiAoaXNfcG9zaXggJiYgIWlzX2FuZHJvaWQgJiYgIWlzX21hYyAmJgpk aWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tc3lz dGVtLW5vZGVqcy5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9t aXVtLXN5c3RlbS1ub2RlanMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi45OWQ2NTM5NTVmMDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS1zeXN0ZW0tbm9kZWpzLnBhdGNoCkBAIC0wLDAgKzEs MjIgQEAKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvbm9kZS9ub2RlLnB5IHRoaXJkX3BhcnR5L25v ZGUvbm9kZS5weQoraW5kZXggODA5N2UyYzQ5Li4xMGU2YTE2ZWEgMTAwNzU1CistLS0gdGhpcmRf cGFydHkvbm9kZS9ub2RlLnB5CisrKysgdGhpcmRfcGFydHkvbm9kZS9ub2RlLnB5CitAQCAtMTAs MTEgKzEwLDEyIEBAIGltcG9ydCBzeXMKKyAKKyAKKyBkZWYgR2V0QmluYXJ5UGF0aCgpOgorLSAg cmV0dXJuIG9zX3BhdGguam9pbihvc19wYXRoLmRpcm5hbWUoX19maWxlX18pLCAqeworLSAgICAn RGFyd2luJzogKCdtYWMnLCAnbm9kZS1kYXJ3aW4teDY0JywgJ2JpbicsICdub2RlJyksCistICAg ICdMaW51eCc6ICgnbGludXgnLCAnbm9kZS1saW51eC14NjQnLCAnYmluJywgJ25vZGUnKSwKKy0g ICAgJ1dpbmRvd3MnOiAoJ3dpbicsICdub2RlLmV4ZScpLAorLSAgfVtwbGF0Zm9ybS5zeXN0ZW0o KV0pCisrICByZXR1cm4gIi91c3IvYmluL25vZGUiCisrICAjcmV0dXJuIG9zX3BhdGguam9pbihv c19wYXRoLmRpcm5hbWUoX19maWxlX18pLCAqeworKyAgIyAgJ0Rhcndpbic6ICgnbWFjJywgJ25v ZGUtZGFyd2luLXg2NCcsICdiaW4nLCAnbm9kZScpLAorKyAgIyAgJ0xpbnV4JzogKCdsaW51eCcs ICdub2RlLWxpbnV4LXg2NCcsICdiaW4nLCAnbm9kZScpLAorKyAgIyAgJ1dpbmRvd3MnOiAoJ3dp bicsICdub2RlLmV4ZScpLAorKyAgI31bcGxhdGZvcm0uc3lzdGVtKCldKQorIAorIAorIGRlZiBS dW5Ob2RlKGNtZF9wYXJ0cywgc3Rkb3V0PU5vbmUpOgpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tdGltZTY0LnBhdGNoIGIvc3JjcGtncy9lbGVj dHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tdGltZTY0LnBhdGNoCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjFhZDkzNTkwMDMzCi0tLSAvZGV2L251bGwKKysr IGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21pdW0tdGltZTY0LnBhdGNo CkBAIC0wLDAgKzEsNTEgQEAKK0Rlc2NyaXB0aW9uOiBhbGxvdyBzYW5kYm94ZWQgY29kZSB0byBj YWxsIGdldHRpbWU2NAorIEFkZCBfX05SX2Nsb2NrX2dldHRpbWU2NCBhbmQgX19OUl9jbG9ja19u YW5vc2xlZXBfdGltZTY0IHRvIHN5c2NhbGwgd2hpdGVsaXN0CisgYW5kIGNsb2NrIHNlbGVjdGlv biBwYXJhbWV0ZXIgZmlsdGVyaW5nIGNvZGUuCisKKyBBZGQgX19OUl91dGltZW5zYXRfdGltZTY0 IHRvIHN5c2NhbGwgd2hpdGVsaXN0CisKKyBDb25kaXRpb25hbGlzZSBhZGRpdGlvbnMgb24gdGhl IG5ldyBjYWxscyBleGlzdGluZywgYmVjYXVzZSB0aGV5IGRvIG5vdCBleGlzdAorIG9uIDY0LWJp dCBhcmNoaXRlY3R1cmVzLgorQXV0aG9yOiBQZXRlciBNaWNoYWVsIEdyZWVuIDxwbHVnd2FzaEBy YXNwYmlhbi5vcmc+CisKK0luZGV4OiBjaHJvbWl1bS04My4wLjQxMDMuMTE2L3NhbmRib3gvbGlu dXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKKz09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t LSBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvYmFzZWxpbmVfcG9saWN5LmNjCisr Kysgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYwor QEAgLTE0OCw3ICsxNDgsMTEgQEAgUmVzdWx0RXhwciBFdmFsdWF0ZVN5c2NhbGxJbXBsKGludCBm c19kZQorICAgICByZXR1cm4gQWxsb3coKTsKKyAjZW5kaWYKKyAKKysjaWZkZWYgX19OUl9jbG9j a19nZXR0aW1lNjQKKysgIGlmIChzeXNubyA9PSBfX05SX2Nsb2NrX2dldHRpbWUgfHwgc3lzbm8g PT0gX19OUl9jbG9ja19nZXR0aW1lNjQgfHwgc3lzbm8gPT0gX19OUl9jbG9ja19uYW5vc2xlZXAg fHwgc3lzbm8gPT0gX19OUl9jbG9ja19uYW5vc2xlZXBfdGltZTY0KSB7CisrI2Vsc2UKKyAgIGlm IChzeXNubyA9PSBfX05SX2Nsb2NrX2dldHRpbWUgfHwgc3lzbm8gPT0gX19OUl9jbG9ja19uYW5v c2xlZXApIHsKKysjZW5kaWYKKyAgICAgcmV0dXJuIFJlc3RyaWN0Q2xvY2tJRCgpOworICAgfQor IAorSW5kZXg6IGNocm9taXVtLTgzLjAuNDEwMy4xMTYvc2FuZGJveC9saW51eC9zZWNjb21wLWJw Zi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHNhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuY2MKKysrKyBzYW5kYm94L2xpbnV4L3Nl Y2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitAQCAtMzgsNiArMzgsMTAgQEAgYm9v bCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkR2V0dGltZShpbnQgcworICAgICBjYXNlIF9fTlJfY2xv Y2tfZ2V0cmVzOiAgICAgLy8gQWxsb3dlZCBvbmx5IG9uIEFuZHJvaWQgd2l0aCBwYXJhbWV0ZXJz CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmaWx0ZXJlZCBieSBSZXN0cmlj dENsb2tJRCgpLgorICAgICBjYXNlIF9fTlJfY2xvY2tfZ2V0dGltZTogICAgLy8gUGFyYW1ldGVy cyBmaWx0ZXJlZCBieSBSZXN0cmljdENsb2NrSUQoKS4KKysjaWZkZWYgX19OUl9jbG9ja19nZXR0 aW1lNjQKKysgICAgY2FzZSBfX05SX2Nsb2NrX2dldHRpbWU2NDogICAgLy8gUGFyYW1ldGVycyBm aWx0ZXJlZCBieSBSZXN0cmljdENsb2NrSUQoKS4KKysgICAgY2FzZSBfX05SX2Nsb2NrX25hbm9z bGVlcF90aW1lNjQ6ICAvLyBQYXJhbWV0ZXJzIGZpbHRlcmVkIGJ5IFJlc3RyaWN0Q2xvY2tJRCgp LgorKyNlbmRpZgorICAgICBjYXNlIF9fTlJfY2xvY2tfbmFub3NsZWVwOiAgLy8gUGFyYW1ldGVy cyBmaWx0ZXJlZCBieSBSZXN0cmljdENsb2NrSUQoKS4KKyAgICAgY2FzZSBfX05SX2Nsb2NrX3Nl dHRpbWU6ICAgIC8vIFByaXZpbGVnZWQuCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKK0BA IC0xNTksNiArMTYzLDkgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNu bworICAgICBjYXNlIF9fTlJfdXRpbWU6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl91dGltZW5z YXQ6ICAvLyBOZXcuCisrI2lmZGVmIF9fTlJfdXRpbWVuc2F0X3RpbWU2NAorKyAgICBjYXNlIF9f TlJfdXRpbWVuc2F0X3RpbWU2NDoKKysjZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg ZGVmYXVsdDoKKyAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0 cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtaW5jbHVkZS5wYXRjaCBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1pbmNsdWRlLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOTJlYzI3MmE4OWFjCi0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvY2hyb21p dW0td2VicnRjLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIHRoaXJkX3BhcnR5 L3dlYnJ0Yy9tb2R1bGVzL2Rlc2t0b3BfY2FwdHVyZS9saW51eC93aW5kb3dfY2FwdHVyZXJfeDEx LmNjLm9yaWcJMjAxOS0wMi0yMSAyMToyMToyNC40ODgwNTg5OTAgKzAxMDAKKysrKyB0aGlyZF9w YXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2NhcHR1cmUvbGludXgvd2luZG93X2NhcHR1cmVy X3gxMS5jYwkyMDE5LTAyLTIxIDIxOjIxOjM2LjE1MTk2MTA2NCArMDEwMAorQEAgLTE2LDYgKzE2 LDcgQEAKKyAKKyAjaW5jbHVkZSA8bWVtb3J5PgorICNpbmNsdWRlIDxzdHJpbmc+CisrI2luY2x1 ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDx1dGlsaXR5PgorIAorICNpbmNsdWRlICJtb2R1bGVz L2Rlc2t0b3BfY2FwdHVyZS9kZXNrdG9wX2ZyYW1lLmgiCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtcjAucGF0Y2ggYi9zcmNwa2dz L2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJydGMtcjAucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi43MGJiZWRlNDcyZjQKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS13ZWJy dGMtcjAucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorVXBzdHJlYW06IFllcywgaHR0cHM6Ly93ZWJy dGMtcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vOTM4NAorUmVhc29uOiBGaXhlcyBtdXNsIGJ1aWxk cyBvZiB3ZWJydGMKKworRnJvbSA3ZjkwZTJjY2VkYTA0NThjZjU2MDI2ZWI2Y2NmZmI5NjFhNDc4 MDRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmFwaGFlbCBLdWJvIGRhIENvc3Rh IDxyYXBoYWVsLmt1Ym8uZGEuY29zdGFAaW50ZWwuY29tPgorRGF0ZTogRnJpLCAxMyBPY3QgMjAx NyAxNTo0OTozMiArMDIwMAorU3ViamVjdDogW1BBVENIXSBJV1lVOiBJbmNsdWRlIG1hdGguaCBm b3Igcm91bmQoMykuCisKK21hdGguaCB3YXMgYmVpbmcgaW1wbGljaXRseSBpbmNsdWRlZCwgd2hp Y2ggY2FuIGJyZWFrIHRoZSBidWlsZCB3aXRoCithbHRlcm5hdGl2ZSBsaWJjIGltcGxlbWVudGF0 aW9ucy4KKworQnVnOiBOb25lCitDaGFuZ2UtSWQ6IEk5NjliMzIwYjY1ZDBmNDRhYmIzM2QzZTEw MzZjZmJjYjg1OWE0OTUyCitSZXZpZXdlZC1vbjogaHR0cHM6Ly93ZWJydGMtcmV2aWV3Lmdvb2ds ZXNvdXJjZS5jb20vOTM4NAorUmV2aWV3ZWQtYnk6IFRvbW1pIDx0b21taUB3ZWJydGMub3JnPgor Q29tbWl0LVF1ZXVlOiBSYXBoYWVsIEt1Ym8gZGEgQ29zdGEgKHJha3VjbykgPHJhcGhhZWwua3Vi by5kYS5jb3N0YUBpbnRlbC5jb20+CitDci1Db21taXQtUG9zaXRpb246IHJlZnMvaGVhZHMvbWFz dGVyQHsjMjAyOTJ9CistLS0KKworLS0tIHRoaXJkX3BhcnR5L3dlYnJ0Yy9wMnAvYmFzZS9wb3J0 LmNjCisrKysgdGhpcmRfcGFydHkvd2VicnRjL3AycC9iYXNlL3BvcnQuY2MKK0BAIC0xMCw2ICsx MCw4IEBACisgCisgI2luY2x1ZGUgInAycC9iYXNlL3BvcnQuaCIKKyAKKysjaW5jbHVkZSA8bWF0 aC5oPgorKworICNpbmNsdWRlIDxhbGdvcml0aG0+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKy0t IAorMi4xNS4wLnJjMgorCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0 Y2hlcy9jaHJvbWl1bS13ZWJydGMtc2l6ZV90LnBhdGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3BhdGNoZXMvY2hyb21pdW0td2VicnRjLXNpemVfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVmN2VhMDljZjYzMgotLS0gL2Rldi9udWxsCisrKyBi L3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXdlYnJ0Yy1zaXplX3Qu cGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIHRoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2F1 ZGlvX3Byb2Nlc3NpbmcvYWVjMy9jbG9ja2RyaWZ0X2RldGVjdG9yLmgJMjAyMC0wOC0xMCAyMDo0 MjoyOS4wMDAwMDAwMDAgKzAyMDAKKysrKyB0aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9hdWRp b19wcm9jZXNzaW5nL2FlYzMvY2xvY2tkcmlmdF9kZXRlY3Rvci5oCTIwMjAtMDktMDQgMTI6NDc6 MDcuMDE0ODMzNjMzICswMjAwCitAQCAtMTIsNiArMTIsNyBAQAorICNkZWZpbmUgTU9EVUxFU19B VURJT19QUk9DRVNTSU5HX0FFQzNfQ0xPQ0tEUklGVF9ERVRFQ1RPUl9IXworIAorICNpbmNsdWRl IDxhcnJheT4KKysjaW5jbHVkZSA8Y3N0ZGRlZj4KKyAKKyBuYW1lc3BhY2Ugd2VicnRjIHsKKyAK ZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4 eC1wcGM2NGxlLWxpYnZweC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVz L2Nocm9taXVtLXh4eC1wcGM2NGxlLWxpYnZweC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAwMDAuLjc5MmJlZmIzYTM5ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLWxpYnZweC5w YXRjaApAQCAtMCwwICsxLDcyIEBACitVc2VzIGdlbmVyaWMgdGFyZ2V0IGZvciBub3cuIFRvIHVz ZSBwcGM2NGxlLCBjaGFuZ2UgLS10YXJnZXQgdG8gcHBjNjRsZS1nbnUKK2FuZCBhZGQgLS1lbmFi bGUtdnN4LCBhbmQgY2hhbmdlIGdlbmVyaWMgdG8gcHBjIGZvciB0aGUgcnRjZCBoZWFkZXIuCisK K0Zyb20gMThlNmM1YzU1Y2ZhZTBjZmI0NThkODIxMGQ3YmM3MDkzNjBhMGU5MCBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKK0Zyb206IHE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+CitEYXRlOiBX ZWQsIDkgU2VwIDIwMjAgMTk6MDg6MjUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZW5hYmxlIGdl bmVyYXRpb24gb2YgcHBjNjQgbGlidnB4IGJpdHMKKwordGhpcyBkb2Vzbid0IHVwZGF0ZSB0aGUg Z25pIGZpbGUsIHRoYXQncyBkb25lIGZyb20KK3RoZSB0ZW1wbGF0ZSBieSBydW5uaW5nIHRoZSBh cHByb3ByaWF0ZSBzY3JpcHRzCistLS0KKyB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJTEQuZ24gICAg ICAgIHwgNCArKysrCisgdGhpcmRfcGFydHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaCB8IDkgKysr KysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvbGlidnB4L0JVSUxELmduIHRoaXJkX3BhcnR5L2xpYnZweC9CVUlMRC5nbgor aW5kZXggNzE5OGU1OS4uMzMwMDQ4NSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJ TEQuZ24KKysrKyB0aGlyZF9wYXJ0eS9saWJ2cHgvQlVJTEQuZ24KK0BAIC0zMzYsNiArMzM2LDgg QEAgc3RhdGljX2xpYnJhcnkoImxpYnZweCIpIHsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBzb3Vy Y2VzID0gbGlidnB4X3NyY3NfYXJtNjQKKyAgICAgfQorKyAgfSBlbHNlIGlmIChjdXJyZW50X2Nw dSA9PSAicHBjNjQiKSB7CisrICAgIHNvdXJjZXMgPSBsaWJ2cHhfc3Jjc19wcGM2NAorICAgfQor IAorICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9jb21waWxlcjpjaHJvbWl1bV9jb2Rl IiBdCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2xpYnZweC9nZW5lcmF0ZV9nbmkuc2ggdGhpcmRf cGFydHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaAoraW5kZXggYmNmODRiMC4uOGEzZjRmMSAxMDA3 NTUKKy0tLSB0aGlyZF9wYXJ0eS9saWJ2cHgvZ2VuZXJhdGVfZ25pLnNoCisrKysgdGhpcmRfcGFy dHkvbGlidnB4L2dlbmVyYXRlX2duaS5zaAorQEAgLTM2MSw2ICszNjEsNyBAQCBnZW5fY29uZmln X2ZpbGVzIGxpbnV4L2FybS1uZW9uLWhpZ2hiZCAiLS10YXJnZXQ9YXJtdjctbGludXgtZ2NjICR7 YWxsX3BsYXRmb3JtcworIGdlbl9jb25maWdfZmlsZXMgbGludXgvYXJtNjQtaGlnaGJkICItLXRh cmdldD1hcm12OC1saW51eC1nY2MgJHthbGxfcGxhdGZvcm1zfSAke0hJR0hCRH0iCisgZ2VuX2Nv bmZpZ19maWxlcyBsaW51eC9taXBzZWwgIi0tdGFyZ2V0PW1pcHMzMi1saW51eC1nY2MgJHthbGxf cGxhdGZvcm1zfSIKKyBnZW5fY29uZmlnX2ZpbGVzIGxpbnV4L21pcHM2NGVsICItLXRhcmdldD1t aXBzNjQtbGludXgtZ2NjICR7YWxsX3BsYXRmb3Jtc30iCisrZ2VuX2NvbmZpZ19maWxlcyBsaW51 eC9wcGM2NCAiLS10YXJnZXQ9Z2VuZXJpYy1nbnUgJEhJR0hCRCAke2FsbF9wbGF0Zm9ybXN9Igor IGdlbl9jb25maWdfZmlsZXMgbGludXgvZ2VuZXJpYyAiLS10YXJnZXQ9Z2VuZXJpYy1nbnUgJEhJ R0hCRCAke2FsbF9wbGF0Zm9ybXN9IgorIGdlbl9jb25maWdfZmlsZXMgd2luL2FybTY0ICItLXRh cmdldD1hcm02NC13aW42NC12czE1ICR7YWxsX3BsYXRmb3Jtc30gJHtISUdIQkR9IgorIGdlbl9j b25maWdfZmlsZXMgd2luL2lhMzIgIi0tdGFyZ2V0PXg4Ni13aW4zMi12czE0ICR7YWxsX3BsYXRm b3Jtc30gJHt4ODZfcGxhdGZvcm1zfSIKK0BAIC0zODYsNiArMzg3LDcgQEAgbGludF9jb25maWcg bGludXgvYXJtLW5lb24taGlnaGJkCisgbGludF9jb25maWcgbGludXgvYXJtNjQtaGlnaGJkCisg bGludF9jb25maWcgbGludXgvbWlwc2VsCisgbGludF9jb25maWcgbGludXgvbWlwczY0ZWwKKyts aW50X2NvbmZpZyBsaW51eC9wcGM2NAorIGxpbnRfY29uZmlnIGxpbnV4L2dlbmVyaWMKKyBsaW50 X2NvbmZpZyB3aW4vYXJtNjQKKyBsaW50X2NvbmZpZyB3aW4vaWEzMgorQEAgLTQxNSw2ICs0MTcs NyBAQCBnZW5fcnRjZF9oZWFkZXIgbGludXgvYXJtLW5lb24taGlnaGJkIGFybXY3CisgZ2VuX3J0 Y2RfaGVhZGVyIGxpbnV4L2FybTY0LWhpZ2hiZCBhcm12OAorIGdlbl9ydGNkX2hlYWRlciBsaW51 eC9taXBzZWwgbWlwc2VsCisgZ2VuX3J0Y2RfaGVhZGVyIGxpbnV4L21pcHM2NGVsIG1pcHM2NGVs CisrZ2VuX3J0Y2RfaGVhZGVyIGxpbnV4L3BwYzY0IGdlbmVyaWMKKyBnZW5fcnRjZF9oZWFkZXIg bGludXgvZ2VuZXJpYyBnZW5lcmljCisgZ2VuX3J0Y2RfaGVhZGVyIHdpbi9hcm02NCBhcm12OAor IGdlbl9ydGNkX2hlYWRlciB3aW4vaWEzMiB4ODYgIiR7cmVxdWlyZV9zc2UyfSIKK0BAIC01MDAs NiArNTAzLDEyIEBAIGlmIFsgLXogJE9OTFlfQ09ORklHUyBdOyB0aGVuCisgCisgICBlY2hvICJN SVBTNjQgc291cmNlIGxpc3QgaXMgaWRlbnRpY2FsIHRvIE1JUFMgc291cmNlIGxpc3QuIE5vIG5l ZWQgdG8gZ2VuZXJhdGUgaXQuIgorIAorKyAgZWNobyAiR2VuZXJhdGUgcHBjNjQgc291cmNlIGxp c3QuIgorKyAgY29uZmlnPSQocHJpbnRfY29uZmlnX2Jhc2ljIGxpbnV4L3BwYzY0KQorKyAgbWFr ZV9jbGVhbgorKyAgbWFrZSBsaWJ2cHhfc3Jjcy50eHQgdGFyZ2V0PWxpYnMgJGNvbmZpZyA+IC9k ZXYvbnVsbAorKyAgY29udmVydF9zcmNzX3RvX3Byb2plY3RfZmlsZXMgbGlidnB4X3NyY3MudHh0 IGxpYnZweF9zcmNzX3BwYzY0CisrCisgICBlY2hvICJHZW5lcmF0ZSBOYUNsIHNvdXJjZSBsaXN0 LiIKKyAgIGNvbmZpZz0kKHByaW50X2NvbmZpZ19iYXNpYyBuYWNsKQorICAgbWFrZV9jbGVhbgor LS0gCisyLjI4LjAKKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNo ZXMvY2hyb21pdW0teHh4LXBwYzY0bGUtc3VwcG9ydC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24x Mi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN1cHBvcnQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zODlhYzNiN2FhMjIKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9jaHJvbWl1bS14eHgt cHBjNjRsZS1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMzYzNSBAQAorY29tbWl0IDJjMDEzYTMx N2IxMTE0ZWY2N2NkYmJjMzA4MjRiMjg5MDdiOWVhOTQKK0F1dGhvcjogRGFuaWVsIEtvbGVzYSA8 ZGFuaWVsQG9jdGFmb3JnZS5vcmc+CitEYXRlOiAgIFdlZCBNYXIgMyAxOTowODoyOSAyMDIxICsw MTAwCisKKyAgICBwcGM2NGxlIHN1cHBvcnQKKworZGlmZiAtLWdpdCBidWlsZC9kb3dubG9hZF9u YWNsX3Rvb2xjaGFpbnMucHkgYnVpbGQvZG93bmxvYWRfbmFjbF90b29sY2hhaW5zLnB5CitpbmRl eCAyODZhOTJhMjcuLmVjMzZhODVkMyAxMDA3NTUKKy0tLSBidWlsZC9kb3dubG9hZF9uYWNsX3Rv b2xjaGFpbnMucHkKKysrKyBidWlsZC9kb3dubG9hZF9uYWNsX3Rvb2xjaGFpbnMucHkKK0BAIC0x Myw2ICsxMywxMCBAQCBpbXBvcnQgc3lzCisgCisgCisgZGVmIE1haW4oYXJncyk6CisrICAjIElm IGBkaXNhYmxlX25hY2w9MWAgaXMgaW4gR1lQX0RFRklORVMsIGV4aXQKKysgIGlmICdkaXNhYmxl X25hY2w9MScgaW4gb3MuZW52aXJvbi5nZXQoJ0dZUF9ERUZJTkVTJywgJycpOgorKyAgICByZXR1 cm4gMAorKworICAgc2NyaXB0X2RpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgo X19maWxlX18pKQorICAgc3JjX2RpciA9IG9zLnBhdGguZGlybmFtZShzY3JpcHRfZGlyKQorICAg bmFjbF9kaXIgPSBvcy5wYXRoLmpvaW4oc3JjX2RpciwgJ25hdGl2ZV9jbGllbnQnKQorZGlmZiAt LWdpdCBjaHJvbWUvaW5zdGFsbGVyL2xpbnV4L0JVSUxELmduIGNocm9tZS9pbnN0YWxsZXIvbGlu dXgvQlVJTEQuZ24KK2luZGV4IDM1ZjAxZDBhNC4uMjhmMmU3NDc1IDEwMDY0NAorLS0tIGNocm9t ZS9pbnN0YWxsZXIvbGludXgvQlVJTEQuZ24KKysrKyBjaHJvbWUvaW5zdGFsbGVyL2xpbnV4L0JV SUxELmduCitAQCAtOTQsOCArOTQsNiBAQCBwYWNrYWdpbmdfZmlsZXMgPSBwYWNrYWdpbmdfZmls ZXNfYmluYXJpZXMgKyBbCisgICAgICAgICAgICAgICAgICAgICAiJHJvb3Rfb3V0X2Rpci94ZGct bWltZSIsCisgICAgICAgICAgICAgICAgICAgICAiJHJvb3Rfb3V0X2Rpci94ZGctc2V0dGluZ3Mi LAorICAgICAgICAgICAgICAgICAgICAgIiRyb290X291dF9kaXIvbG9jYWxlcy9lbi1VUy5wYWsi LAorLSAgICAgICAgICAgICAgICAgICAgIiRyb290X291dF9kaXIvTUVJUHJlbG9hZC9tYW5pZmVz dC5qc29uIiwKKy0gICAgICAgICAgICAgICAgICAgICIkcm9vdF9vdXRfZGlyL01FSVByZWxvYWQv cHJlbG9hZGVkX2RhdGEucGIiLAorICAgICAgICAgICAgICAgICAgIF0KKyAKKyBhY3Rpb25fZm9y ZWFjaCgiY2FsY3VsYXRlX2RlYl9kZXBlbmRlbmNpZXMiKSB7CitAQCAtMzE1LDcgKzMxMyw2IEBA IGdyb3VwKCJpbnN0YWxsZXJfZGVwcyIpIHsKKyAgICAgIjp0aGVtZV9maWxlcyIsCisgICAgICIv L2Nocm9tZSIsCisgICAgICIvL2Nocm9tZTpwYWNrZWRfcmVzb3VyY2VzIiwKKy0gICAgIi8vY2hy b21lL2Jyb3dzZXIvcmVzb3VyY2VzL21lZGlhL21laV9wcmVsb2FkOmNvbXBvbmVudCIsCisgICAg ICIvL3NhbmRib3gvbGludXg6Y2hyb21lX3NhbmRib3giLAorICAgICAiLy90aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9oYW5kbGVyOmNyYXNocGFkX2hhbmRsZXIiLAorICAgXQorZGlmZiAt LWdpdCBzYW5kYm94L2ZlYXR1cmVzLmduaSBzYW5kYm94L2ZlYXR1cmVzLmduaQoraW5kZXggZGIz MGFlNmQ2Li45ZGMwOWJmNTMgMTAwNjQ0CistLS0gc2FuZGJveC9mZWF0dXJlcy5nbmkKKysrKyBz YW5kYm94L2ZlYXR1cmVzLmduaQorQEAgLTExLDcgKzExLDggQEAgaW1wb3J0KCIvL2J1aWxkL2Nv bmZpZy9uYWNsL2NvbmZpZy5nbmkiKQorIHVzZV9zZWNjb21wX2JwZiA9IChpc19saW51eCB8fCBp c19jaHJvbWVvcyB8fCBpc19hbmRyb2lkKSAmJgorICAgICAgICAgICAgICAgICAgIChjdXJyZW50 X2NwdSA9PSAieDg2IiB8fCBjdXJyZW50X2NwdSA9PSAieDY0IiB8fAorICAgICAgICAgICAgICAg ICAgICBjdXJyZW50X2NwdSA9PSAiYXJtIiB8fCBjdXJyZW50X2NwdSA9PSAiYXJtNjQiIHx8Cist ICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY3B1ID09ICJtaXBzZWwiIHx8IGN1cnJlbnRfY3B1 ID09ICJtaXBzNjRlbCIpCisrICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY3B1ID09ICJtaXBz ZWwiIHx8IGN1cnJlbnRfY3B1ID09ICJtaXBzNjRlbCIgfHwKKysgICAgICAgICAgICAgICAgICAg Y3VycmVudF9jcHUgPT0gInBwYzY0IikKKyAKKyB1c2Vfc2VjY29tcF9icGYgPSB1c2Vfc2VjY29t cF9icGYgfHwgaXNfbmFjbF9ub25zZmkKKyAKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9CVUlM RC5nbiBzYW5kYm94L2xpbnV4L0JVSUxELmduCitpbmRleCBlOWE5NGI0NjEuLmNjYTFhNWRhNSAx MDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L0JVSUxELmduCisrKysgc2FuZGJveC9saW51eC9CVUlM RC5nbgorQEAgLTQyNyw2ICs0MjcsOCBAQCBjb21wb25lbnQoInNhbmRib3hfc2VydmljZXMiKSB7 CisgCisgc291cmNlX3NldCgic2FuZGJveF9zZXJ2aWNlc19oZWFkZXJzIikgeworICAgc291cmNl cyA9IFsKKysgICAgInN5c3RlbV9oZWFkZXJzL3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgiLAorKyAg ICAic3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRleHQuaCIsCisgICAgICJzeXN0ZW1f aGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oIiwKKyAgICAgInN5c3RlbV9oZWFkZXJzL2Fy bV9saW51eF9zeXNjYWxscy5oIiwKKyAgICAgInN5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29u dGV4dC5oIiwKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxf cmFuZ2VzLmggc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKK2lu ZGV4IDMxMzUxMWYyMi4uMGNhM2EzMjZmIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvYnBmX2Rz bC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCisrKysgc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4 X3N5c2NhbGxfcmFuZ2VzLmgKK0BAIC01Niw2ICs1NiwxMyBAQAorICNkZWZpbmUgTUFYX1BVQkxJ Q19TWVNDQUxMIF9fTlJfc3lzY2FsbHMKKyAjZGVmaW5lIE1BWF9TWVNDQUxMIE1BWF9QVUJMSUNf U1lTQ0FMTAorIAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysKKysjaW5jbHVkZSA8 YXNtL3VuaXN0ZC5oPgorKyNkZWZpbmUgTUlOX1NZU0NBTEwgMHUKKysjZGVmaW5lIE1BWF9QVUJM SUNfU1lTQ0FMTCAzODZ1CisrI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZU0NBTEwK KysKKyAjZWxzZQorICNlcnJvciAiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlIgorICNlbmRpZgor ZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaCBzYW5kYm94 L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAoraW5kZXggMWE0MDdiOTUyLi5hNmFlYzU0 NGUgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9icGZfZHNsL3NlY2NvbXBfbWFjcm9zLmgKKysr KyBzYW5kYm94L2xpbnV4L2JwZl9kc2wvc2VjY29tcF9tYWNyb3MuaAorQEAgLTE2LDYgKzE2LDkg QEAKKyAjaWYgZGVmaW5lZChfX21pcHNfXykKKyAvLyBzeXMvdXNlci5oIGluIGVnbGliYyBtaXNz ZXMgc2l6ZV90IGRlZmluaXRpb24KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisrI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorKy8vIE1hbnVhbGx5IGRlZmluZSBncmVnX3Qgb24gcHBjNjQKKyt0 eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBncmVnX3Q7CisgI2VuZGlmCisgI2VuZGlmCisgCitA QCAtMzQ2LDYgKzM0OSw1MSBAQCBzdHJ1Y3QgcmVnc19zdHJ1Y3QgeworICNkZWZpbmUgU0VDQ09N UF9QVF9QQVJNNChfcmVncykgKF9yZWdzKS5yZWdzWzNdCisgI2RlZmluZSBTRUNDT01QX1BUX1BB Uk01KF9yZWdzKSAoX3JlZ3MpLnJlZ3NbNF0KKyAjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3Jl Z3MpIChfcmVncykucmVnc1s1XQorKworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysj aW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKworK3R5cGVkZWYgc3RydWN0IHB0X3JlZ3MgcmVnc19z dHJ1Y3Q7CisrCisrI2lmZGVmIEFSQ0hfQ1BVX0xJVFRMRV9FTkRJQU4KKysjZGVmaW5lIFNFQ0NP TVBfQVJDSCBBVURJVF9BUkNIX1BQQzY0TEUKKysjZWxzZQorKyNkZWZpbmUgU0VDQ09NUF9BUkNI IEFVRElUX0FSQ0hfUFBDNjQKKysjZW5kaWYKKysKKysjZGVmaW5lIFNFQ0NPTVBfUkVHKF9jdHgs IF9yZWcpICgoX2N0eCktPnVjX21jb250ZXh0LnJlZ3MtPmdwcltfcmVnXSkKKysKKysjZGVmaW5l IFNFQ0NPTVBfUkVTVUxUKF9jdHgpIFNFQ0NPTVBfUkVHKF9jdHgsIDMpCisrI2RlZmluZSBTRUND T01QX1NZU0NBTEwoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMCkKKysjZGVmaW5lIFNFQ0NPTVBf SVAoX2N0eCkgKF9jdHgpLT51Y19tY29udGV4dC5yZWdzLT5uaXAKKysjZGVmaW5lIFNFQ0NPTVBf UEFSTTEoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgMykKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTIo X2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwgNCkKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTMoX2N0eCkg U0VDQ09NUF9SRUcoX2N0eCwgNSkKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTQoX2N0eCkgU0VDQ09N UF9SRUcoX2N0eCwgNikKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTUoX2N0eCkgU0VDQ09NUF9SRUco X2N0eCwgNykKKysjZGVmaW5lIFNFQ0NPTVBfUEFSTTYoX2N0eCkgU0VDQ09NUF9SRUcoX2N0eCwg OCkKKysKKysjZGVmaW5lIFNFQ0NPTVBfTlJfSURYIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9zZWNj b21wX2RhdGEsIG5yKSkKKysjZGVmaW5lIFNFQ0NPTVBfQVJDSF9JRFggKG9mZnNldG9mKHN0cnVj dCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJjaCkpCisrI2RlZmluZSBTRUNDT01QX0lQX01TQl9JRFgg XAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgaW5zdHJ1Y3Rpb25fcG9p bnRlcikgKyA0KQorKyNkZWZpbmUgU0VDQ09NUF9JUF9MU0JfSURYIFwKKysgIChvZmZzZXRvZihz dHJ1Y3QgYXJjaF9zZWNjb21wX2RhdGEsIGluc3RydWN0aW9uX3BvaW50ZXIpICsgMCkKKysjZGVm aW5lIFNFQ0NPTVBfQVJHX01TQl9JRFgobnIpIFwKKysgIChvZmZzZXRvZihzdHJ1Y3QgYXJjaF9z ZWNjb21wX2RhdGEsIGFyZ3MpICsgOCAqIChucikgKyA0KQorKyNkZWZpbmUgU0VDQ09NUF9BUkdf TFNCX0lEWChucikgXAorKyAgKG9mZnNldG9mKHN0cnVjdCBhcmNoX3NlY2NvbXBfZGF0YSwgYXJn cykgKyA4ICogKG5yKSArIDApCisrCisrI2RlZmluZSBTRUNDT01QX1BUX1JFU1VMVChfcmVncykg KF9yZWdzKS5ncHJbM10KKysjZGVmaW5lIFNFQ0NPTVBfUFRfU1lTQ0FMTChfcmVncykgKF9yZWdz KS5ncHJbMF0KKysjZGVmaW5lIFNFQ0NPTVBfUFRfSVAoX3JlZ3MpIChfcmVncykubmlwCisrI2Rl ZmluZSBTRUNDT01QX1BUX1BBUk0xKF9yZWdzKSAoX3JlZ3MpLmdwclszXQorKyNkZWZpbmUgU0VD Q09NUF9QVF9QQVJNMihfcmVncykgKF9yZWdzKS5ncHJbNF0KKysjZGVmaW5lIFNFQ0NPTVBfUFRf UEFSTTMoX3JlZ3MpIChfcmVncykuZ3ByWzVdCisrI2RlZmluZSBTRUNDT01QX1BUX1BBUk00KF9y ZWdzKSAoX3JlZ3MpLmdwcls2XQorKyNkZWZpbmUgU0VDQ09NUF9QVF9QQVJNNShfcmVncykgKF9y ZWdzKS5ncHJbN10KKysjZGVmaW5lIFNFQ0NPTVBfUFRfUEFSTTYoX3JlZ3MpIChfcmVncykuZ3By WzhdCisrCisgI2Vsc2UKKyAjZXJyb3IgVW5zdXBwb3J0ZWQgdGFyZ2V0IHBsYXRmb3JtCisgCitk aWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xp Y3kuY2Mgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5j YworaW5kZXggNmExZWMyMzg5Li5mMjBjNTgyZGQgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9z ZWNjb21wLWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeS5jYworKysrIHNhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3kuY2MKK0BAIC04OCw3ICs4OCw4IEBA IGJvb2wgSXNCYXNlbGluZVBvbGljeVdhdGNoZWQoaW50IHN5c25vKSB7CisgICAgICAgICAgU3lz Y2FsbFNldHM6OklzUHJjdGwoc3lzbm8pIHx8CisgICAgICAgICAgU3lzY2FsbFNldHM6OklzUHJv Y2Vzc0dyb3VwT3JTZXNzaW9uKHN5c25vKSB8fAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBc CistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BV XzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5l ZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisg ICAgICAgICAgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChzeXNubykgfHwKKyAjZW5kaWYKKyAj aWYgZGVmaW5lZChfX2FybV9fKQorQEAgLTIyNyw3ICsyMjgsNyBAQCBSZXN1bHRFeHByIEV2YWx1 YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywKKyAgIH0KKyAKKyAjaWYgZGVmaW5l ZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8 fCBcCistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18p IHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIGlmIChzeXNubyA9PSBfX05SX21tYXApCisg ICAgIHJldHVybiBSZXN0cmljdE1tYXBGbGFncygpOworICNlbmRpZgorQEAgLTI0NSw3ICsyNDYs NyBAQCBSZXN1bHRFeHByIEV2YWx1YXRlU3lzY2FsbEltcGwoaW50IGZzX2RlbmllZF9lcnJubywK KyAgICAgcmV0dXJuIFJlc3RyaWN0UHJjdGwoKTsKKyAKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVm aW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorICAgaWYgKHN5c25vID09IF9fTlJfc29ja2V0cGFpcikgeworICAgICAv LyBPbmx5IGFsbG93IEFGX1VOSVgsIFBGX1VOSVguIENyYXNoIGlmIGFueXRoaW5nIGVsc2UgaXMg c2Vlbi4KKyAgICAgc3RhdGljX2Fzc2VydChBRl9VTklYID09IFBGX1VOSVgsCitAQCAtMjg1LDcg KzI4Niw4IEBAIFJlc3VsdEV4cHIgRXZhbHVhdGVTeXNjYWxsSW1wbChpbnQgZnNfZGVuaWVkX2Vy cm5vLAorICAgfQorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICBpZiAoU3lzY2FsbFNl dHM6OklzU29ja2V0Q2FsbChzeXNubykpCisgICAgIHJldHVybiBSZXN0cmljdFNvY2tldGNhbGxD b21tYW5kKCk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYt aGVscGVycy9iYXNlbGluZV9wb2xpY3lfdW5pdHRlc3QuY2Mgc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYworaW5kZXggMDFjMDQ2ZGRh Li43ZTVhNmJlODIgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJz L2Jhc2VsaW5lX3BvbGljeV91bml0dGVzdC5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1i cGYtaGVscGVycy9iYXNlbGluZV9wb2xpY3lfdW5pdHRlc3QuY2MKK0BAIC0zMDIsNyArMzAyLDcg QEAgVEVTVF9CQVNFTElORV9TSUdTWVMoX19OUl9zeXNpbmZvKQorIFRFU1RfQkFTRUxJTkVfU0lH U1lTKF9fTlJfc3lzbG9nKQorIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdGltZXJfY3JlYXRl KQorIAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0 X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgVEVTVF9CQVNFTElORV9TSUdTWVMoX19O Ul9ldmVudGZkKQorIFRFU1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfaW5vdGlmeV9pbml0KQorIFRF U1RfQkFTRUxJTkVfU0lHU1lTKF9fTlJfdnNlcnZlcikKK2RpZmYgLS1naXQgc2FuZGJveC9saW51 eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0cmljdGlvbnMuY2Mg c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0 cmljdGlvbnMuY2MKK2luZGV4IDJhOTdkMzkxNi4uOGU4MWFhNmNmIDEwMDY0NAorLS0tIHNhbmRi b3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rp b25zLmNjCisrKysgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFy YW1ldGVyc19yZXN0cmljdGlvbnMuY2MKK0BAIC00MCw3ICs0MCw4IEBACisgI2luY2x1ZGUgPHN5 cy9wdHJhY2UuaD4KKyAjaWYgKGRlZmluZWQoT1NfTElOVVgpIHx8IEJVSUxERkxBRyhJU19DSFJP TUVPU19MQUNST1MpKSAmJiBcCisgICAgICFkZWZpbmVkKF9fYXJtX18pICYmICFkZWZpbmVkKF9f YWFyY2g2NF9fKSAmJiAgICAgICAgICAgXAorLSAgICAhZGVmaW5lZChQVFJBQ0VfR0VUX1RIUkVB RF9BUkVBKQorKyAgICAhZGVmaW5lZChQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBKSAmJgkJCSAgICBc CisrICAgICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgLy8gQWxzbyBpbmNsdWRlIGFzbS9wdHJh Y2UtYWJpLmggc2luY2UgcHRyYWNlLmggaW4gb2xkZXIgbGliYyAoZm9yIGluc3RhbmNlCisgLy8g dGhlIG9uZSBpbiBVYnVudHUgMTYuMDQgTFRTKSBpcyBtaXNzaW5nIFBUUkFDRV9HRVRfVEhSRUFE X0FSRUEuCisgLy8gYXNtL3B0cmFjZS1hYmkuaCBkb2Vzbid0IGV4aXN0IG9uIGFybTMyIGFuZCBQ VFJBQ0VfR0VUX1RIUkVBRF9BUkVBIGlzbid0CitAQCAtNDksNiArNTAsMTEgQEAKKyAjZW5kaWYK KyAjZW5kaWYgIC8vICFPU19OQUNMX05PTlNGSQorIAorKy8vIE9uIFBQQzY0LCBUQ0dFVFMgaXMg ZGVmaW5lZCBpbiB0ZXJtcyBvZiBzdHJ1Y3QgdGVybWlvcywgc28gd2UgbXVzdCBpbmNsdWRlIHRl cm1pb3MuaAorKyNpZmRlZiBfX3Bvd2VycGM2NF9fCisrI2luY2x1ZGUgPHRlcm1pb3MuaD4KKysj ZW5kaWYKKysKKyAjaWYgZGVmaW5lZChPU19BTkRST0lEKQorIAorICNpZiAhZGVmaW5lZChGX0RV UEZEX0NMT0VYRUMpCitAQCAtOTgsNiArMTA0LDE1IEBAIGlubGluZSBib29sIElzQXJjaGl0ZWN0 dXJlTWlwcygpIHsKKyAjZW5kaWYKKyB9CisgCisraW5saW5lIGJvb2wgSXNBcmNoaXRlY3R1cmVQ UEM2NCgpIHsKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgcmV0dXJuIHRydWU7Cisr I2Vsc2UKKysgIHJldHVybiBmYWxzZTsKKysjZW5kaWYKKyt9CisrCisrCisgLy8gVWJ1bnR1J3Mg dmVyc2lvbiBvZiBnbGliYyBoYXMgYSByYWNlIGNvbmRpdGlvbiBpbiBzZW1fcG9zdCB0aGF0IGNh biBjYXVzZQorIC8vIGl0IHRvIGNhbGwgZnV0ZXgoMikgd2l0aCBib2d1cyBvcCBhcmd1bWVudHMu IFRvIHdvcmthcm91bmQgdGhpcywgd2UgbmVlZAorIC8vIHRvIGFsbG93IHRob3NlIGZ1dGV4KDIp IGNhbGxzIHRvIGZhaWwgd2l0aCBFSU5WQUwsIGluc3RlYWQgb2YgY3Jhc2hpbmcgdGhlCitAQCAt MjM5LDYgKzI1NCw4IEBAIFJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRzKCkgeworICAg dWludDY0X3Qga09MYXJnZUZpbGVGbGFnID0gT19MQVJHRUZJTEU7CisgICBpZiAoSXNBcmNoaXRl Y3R1cmVYODZfNjQoKSB8fCBJc0FyY2hpdGVjdHVyZUkzODYoKSB8fCBJc0FyY2hpdGVjdHVyZU1p cHMoKSkKKyAgICAga09MYXJnZUZpbGVGbGFnID0gMDEwMDAwMDsKKysgIGVsc2UgaWYgKElzQXJj aGl0ZWN0dXJlUFBDNjQoKSkKKysgICAga09MYXJnZUZpbGVGbGFnID0gMDIwMDAwMDsKKyAKKyAg IGNvbnN0IEFyZzxpbnQ+IGNtZCgxKTsKKyAgIGNvbnN0IEFyZzxsb25nPiBsb25nX2FyZygyKTsK K0BAIC0yNTMsMTQgKzI3MCwyMyBAQCBSZXN1bHRFeHByIFJlc3RyaWN0RmNudGxDb21tYW5kcygp IHsKKyAgICAgICAgICAgICAgIEZfU0VUTEtXLAorICAgICAgICAgICAgICAgRl9HRVRMSywKKyAg ICAgICAgICAgICAgIEZfRFVQRkQsCistICAgICAgICAgICAgICBGX0RVUEZEX0NMT0VYRUMpLAor LSAgICAgICAgICAgICBBbGxvdygpKQorKyAgICAgICAgICAgICAgRl9EVVBGRF9DTE9FWEVDCisr I2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysvLyBPbiBQUEM2NCwgRl9TRVRMSywgRl9HRVRM SywgRl9TRVRMS1cgYXJlIGRlZmluZWQgYXMgdGhlIDY0LWJpdCB2YXJpYW50cworKy8vIGJ1dCBn bGliYyB3aWxsIHNvbWV0aW1lcyBzdGlsbCB1c2UgdGhlIDMyLWJpdCB2ZXJzaW9ucy4gQWxsb3cg Ym90aC4KKysgICAgICAgICAgICAgICwKKysgICAgICAgICAgICAgIDUsIC8qIEZfR0VUTEsgKDMy KSAqLworKyAgICAgICAgICAgICAgNiwgLyogRl9TRVRMSyAoMzIpICovCisrICAgICAgICAgICAg ICA3ICAvKiBGX1NFVExLVyAoMzIpICovCisrI2VuZGlmCisrICAgICAgICAgICAgICApLAorKyAg ICAgICAgICAgIEFsbG93KCkpCisgICAgICAgLkNhc2UoRl9TRVRGTCwKKyAgICAgICAgICAgICBJ ZigobG9uZ19hcmcgJiB+a0FsbG93ZWRNYXNrKSA9PSAwLCBBbGxvdygpKS5FbHNlKENyYXNoU0lH U1lTKCkpKQorICAgICAgIC5EZWZhdWx0KENyYXNoU0lHU1lTKCkpOworIH0KKyAKKy0jaWYgZGVm aW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorIFJlc3Vs dEV4cHIgUmVzdHJpY3RTb2NrZXRjYWxsQ29tbWFuZCgpIHsKKyAgIC8vIFVuZm9ydHVuYXRlbHks IHdlIGFyZSB1bmFibGUgdG8gcmVzdHJpY3QgdGhlIGZpcnN0IHBhcmFtZXRlciB0bworICAgLy8g c29ja2V0cGFpcigyKS4gV2hpbHN0IGluaXRpYWxseSBzb3VuZGluZyBiYWQsIGl0J3Mgbm90ZXdv cnRoeSB0aGF0IHZlcnkKK0BAIC00MTMsNyArNDM5LDcgQEAgUmVzdWx0RXhwciBSZXN0cmljdFB0 cmFjZSgpIHsKKyAjZW5kaWYKKyAgIHJldHVybiBTd2l0Y2gocmVxdWVzdCkKKyAgICAgICAuQ0FT RVMoKAorLSNpZiAhZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgIWRlZmluZWQoX19hYXJjaDY0 X18pICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgICAgICAgICAgICAgICBQVFJBQ0Vf R0VUUkVHUywgUFRSQUNFX0dFVEZQUkVHUywgUFRSQUNFX0dFVF9USFJFQURfQVJFQSwKKyAgICAg ICAgICAgICAgICAgIFBUUkFDRV9HRVRSRUdTRVQsCisgI2VuZGlmCitkaWZmIC0tZ2l0IHNhbmRi b3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3BhcmFtZXRlcnNfcmVzdHJpY3Rp b25zLmggc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVy c19yZXN0cmljdGlvbnMuaAoraW5kZXggYmE0Mjg5ZjA1Li45YTRkNWFiMmQgMTAwNjQ0CistLS0g c2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfcGFyYW1ldGVyc19yZXN0 cmljdGlvbnMuaAorKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxs X3BhcmFtZXRlcnNfcmVzdHJpY3Rpb25zLmgKK0BAIC00OCw3ICs0OCw3IEBAIFNBTkRCT1hfRVhQ T1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RNcHJvdGVjdEZsYWdzKCk7CisgLy8gT19O T05CTE9DSyB8IE9fU1lOQyB8IE9fTEFSR0VGSUxFIHwgT19DTE9FWEVDIHwgT19OT0FUSU1FLgor IFNBTkRCT1hfRVhQT1JUIGJwZl9kc2w6OlJlc3VsdEV4cHIgUmVzdHJpY3RGY250bENvbW1hbmRz KCk7CisgCistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAvLyBSZXN0cmljdCBzb2NrZXRjYWxsKDIpIHRvIG9ubHkgYWxsb3cgc29ja2V0 cGFpcigyKSwgc2VuZCgyKSwgcmVjdigyKSwKKyAvLyBzZW5kdG8oMiksIHJlY3Zmcm9tKDIpLCBz aHV0ZG93bigyKSwgc2VuZG1zZygyKSBhbmQgcmVjdm1zZygyKS4KKyBTQU5EQk9YX0VYUE9SVCBi cGZfZHNsOjpSZXN1bHRFeHByIFJlc3RyaWN0U29ja2V0Y2FsbENvbW1hbmQoKTsKK2RpZmYgLS1n aXQgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3N5c2NhbGxfc2V0cy5jYyBzYW5k Ym94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmNjCitpbmRleCA2NDJk ZjcyMDcuLjM0ZjQ3ZWI3MyAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhl bHBlcnMvc3lzY2FsbF9zZXRzLmNjCisrKysgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxw ZXJzL3N5c2NhbGxfc2V0cy5jYworQEAgLTI5LDcgKzI5LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNBbGxvd2VkR2V0dGltZShpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAg Y2FzZSBfX05SX2dldHRpbWVvZmRheToKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl90aW1lOgorICNlbmRpZgorICAgICAgIHJl dHVybiB0cnVlOworQEAgLTQ1LDEyICs0NiwxNCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93 ZWRHZXR0aW1lKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfY2xvY2tfbmFub3NsZWVwOiAg Ly8gUGFyYW1ldGVycyBmaWx0ZXJlZCBieSBSZXN0cmljdENsb2NrSUQoKS4KKyAgICAgY2FzZSBf X05SX2Nsb2NrX3NldHRpbWU6ICAgIC8vIFByaXZpbGVnZWQuCisgI2lmIGRlZmluZWQoX19pMzg2 X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQo QVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgICAgY2FzZSBfX05SX2Z0aW1lOiAgLy8gT2Jzb2xldGUuCisgI2VuZGlmCisgICAg IGNhc2UgX19OUl9zZXR0aW1lb2ZkYXk6ICAvLyBQcml2aWxlZ2VkLgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZp bmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlM WSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93 ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zdGltZToKKyAjZW5kaWYKKyAgICAgZGVmYXVsdDoK K0BAIC0xMTYsNyArMTE5LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBz eXNubykgeworICAgICBjYXNlIF9fTlJfZmFjY2Vzc2F0OiAgLy8gRVBFUk0gbm90IGEgdmFsaWQg ZXJybm8uCisgICAgIGNhc2UgX19OUl9mY2htb2RhdDoKKyAgICAgY2FzZSBfX05SX2ZjaG93bmF0 OiAgLy8gU2hvdWxkIGJlIGNhbGxlZCBjaG93bmF0ID8KKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9f KSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBf X05SX25ld2ZzdGF0YXQ6ICAvLyBmc3RhdGF0KCkuIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgor ICNlbGlmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorICAgICAo ZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRT KSkKK0BAIC0xMzUsNyArMTM4LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGlu dCBzeXNubykgeworICAgICBjYXNlIF9fTlJfbWVtZmRfY3JlYXRlOgorICAgICBjYXNlIF9fTlJf bWtkaXJhdDoKKyAgICAgY2FzZSBfX05SX21rbm9kYXQ6CistI2lmIGRlZmluZWQoX19pMzg2X18p CisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAg Y2FzZSBfX05SX29sZGxzdGF0OgorICAgICBjYXNlIF9fTlJfb2xkc3RhdDoKKyAjZW5kaWYKK0BA IC0xNDksNyArMTUyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNGaWxlU3lzdGVtKGludCBzeXNu bykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc3RhdGZzOiAgLy8gRVBFUk0gbm90IGEgdmFs aWQgZXJybm8uCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwg XAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQ VV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgICBjYXNlIF9fTlJfc3RhdGZzNjQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zeW1saW5r YXQ6CitAQCAtMTU5LDcgKzE2Myw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmlsZVN5c3RlbShp bnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3RydW5jYXRlNjQ6CisgI2VuZGlmCisgICAgIGNh c2UgX19OUl91bmxpbmthdDoKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKysgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfdXRpbWU6CisgI2VuZGlmCisgICAgIGNh c2UgX19OUl91dGltZW5zYXQ6ICAvLyBOZXcuCitAQCAtMTgxLDcgKzE4Niw4IEBAIGJvb2wgU3lz Y2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKKyAj ZW5kaWYKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAvLyBUT0RPKGpsbik6IHRoZXNlIHNob3VsZCBi ZSBkZW5pZWQgZ3JhY2VmdWxseSBhcyB3ZWxsIChtb3ZlZCBiZWxvdykuCistI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykKKysj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f bWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05S X2ZhZHZpc2U2NDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICNlbmRpZgorICNpZiBk ZWZpbmVkKF9faTM4Nl9fKQorQEAgLTE5NCwxMSArMjAwLDEyIEBAIGJvb2wgU3lzY2FsbFNldHM6 OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBf X05SX2Zsb2NrOiAgICAgIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICAgICBjYXNlIF9f TlJfZnN0YXRmczogICAgLy8gR2l2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgd2hvbGUgZmlsZXN5 c3RlbS4KKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCist ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAg IGNhc2UgX19OUl9mc3RhdGZzNjQ6CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9mc3luYzogIC8v IEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKQorKyNpZiBk ZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19O Ul9vbGRmc3RhdDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChf X3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCitAQCAtMjA2LDYgKzIxMyw4IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEZpbGVTeXN0ZW1BY2Nlc3NWaWFGZChpbnQgc3lz bm8pIHsKKyAgICAgY2FzZSBfX05SX3N5bmNfZmlsZV9yYW5nZTogIC8vIEVQRVJNIG5vdCBhIHZh bGlkIGVycm5vLgorICNlbGlmIGRlZmluZWQoX19hcm1fXykKKyAgICAgY2FzZSBfX05SX2FybV9z eW5jX2ZpbGVfcmFuZ2U6ICAvLyBFUEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKysjZWxpZiBkZWZp bmVkKF9fcG93ZXJwYzY0X18pCisrICAgIGNhc2UgX19OUl9zeW5jX2ZpbGVfcmFuZ2UyOiAvLyBF UEVSTSBub3QgYSB2YWxpZCBlcnJuby4KKyAjZW5kaWYKKyAgICAgZGVmYXVsdDoKKyAgICAgICBy ZXR1cm4gZmFsc2U7CitAQCAtMjMxLDcgKzI0MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRGVu aWVkRmlsZVN5c3RlbUFjY2Vzc1ZpYUZkKGludCBzeXNubykgeworICNlbmRpZgorICAgICBjYXNl IF9fTlJfZ2V0ZGVudHM2NDogIC8vIEVQRVJNIG5vdCBhIHZhbGlkIGVycm5vLgorICNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9yZWFkZGlyOgorICNlbmRpZgorICAgICAg IHJldHVybiB0cnVlOworQEAgLTI3Miw3ICsyODIsNyBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0dl dFNpbXBsZUlkKGludCBzeXNubykgeworIGJvb2wgU3lzY2FsbFNldHM6OklzUHJvY2Vzc1ByaXZp bGVnZUNoYW5nZShpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBf X05SX2NhcHNldDoKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9f KQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmlu ZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2lvcGVybTogIC8vIEludGVsIHByaXZp bGVnZS4KKyAgICAgY2FzZSBfX05SX2lvcGw6ICAgIC8vIEludGVsIHByaXZpbGVnZS4KKyAjZW5k aWYKK0BAIC0zMjMsNyArMzMzLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkU2lnbmFs SGFuZGxpbmcoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9ydF9zaWdyZXR1cm46CisgICAg IGNhc2UgX19OUl9ydF9zaWd0aW1lZHdhaXQ6CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRl ZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQ U19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc2lnYWN0aW9uOgorICAgICBjYXNlIF9f TlJfc2lncHJvY21hc2s6CisgICAgIGNhc2UgX19OUl9zaWdyZXR1cm46CitAQCAtMzM5LDcgKzM1 MCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZFNpZ25hbEhhbmRsaW5nKGludCBzeXNu bykgeworICNlbmRpZgorICAgICBjYXNlIF9fTlJfc2lnbmFsZmQ0OgorICNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NpZ3BlbmRpbmc6 CisgICAgIGNhc2UgX19OUl9zaWdzdXNwZW5kOgorICNlbmRpZgorQEAgLTM2Myw3ICszNzUsNyBA QCBib29sIFN5c2NhbGxTZXRzOjpJc0FsbG93ZWRPcGVyYXRpb25PbkZkKGludCBzeXNubykgewor ICNlbmRpZgorICAgICBjYXNlIF9fTlJfZHVwMzoKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8 fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5l ZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc2h1dGRvd246CisgI2VuZGlmCisgICAgICAgcmV0 dXJuIHRydWU7CitAQCAtMzk3LDcgKzQwOSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9tZW1iYXJy aWVyOgorICAgICBjYXNlIF9fTlJfd2FpdDQ6CisgICAgIGNhc2UgX19OUl93YWl0aWQ6CistI2lm IGRlZmluZWQoX19pMzg2X18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3dhaXRwaWQ6CisgI2VuZGlmCisgICAgICAgcmV0 dXJuIHRydWU7CitAQCAtNDE0LDcgKzQyNiw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZFByb2Nlc3NTdGFydE9yRGVhdGgoaW50IHN5c25vKSB7CisgI2VuZGlmCisgICAgIGNhc2UgX19O Ul9zZXRfdGlkX2FkZHJlc3M6CisgICAgIGNhc2UgX19OUl91bnNoYXJlOgorLSNpZiAhZGVmaW5l ZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pCisrI2lmICFkZWZpbmVkKF9fbWlw c19fKSAmJiAhZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgICBjYXNlIF9fTlJfdmZvcms6CisgI2VuZGlmCisgICAgIGRlZmF1bHQ6CitAQCAtNDYzLDcg KzQ3NSw3IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdldE9yTW9kaWZ5U29ja2V0KGlu dCBzeXNubykgeworICAgICAgIHJldHVybiB0cnVlOworICAgICBkZWZhdWx0OgorICNpZiBkZWZp bmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykg fHwgXAorLSAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9f KSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9zb2NrZXRwYWlyOiAg Ly8gV2Ugd2lsbCB3YW50IHRvIGluc3BlY3QgaXRzIGFyZ3VtZW50LgorICNlbmRpZgorICAgICAg IHJldHVybiBmYWxzZTsKK0BAIC00NzMsNyArNDg1LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNB bGxvd2VkR2V0T3JNb2RpZnlTb2NrZXQoaW50IHN5c25vKSB7CisgYm9vbCBTeXNjYWxsU2V0czo6 SXNEZW5pZWRHZXRPck1vZGlmeVNvY2tldChpbnQgc3lzbm8pIHsKKyAgIHN3aXRjaCAoc3lzbm8p IHsKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5l ZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJf YWNjZXB0OgorICAgICBjYXNlIF9fTlJfYWNjZXB0NDoKKyAgICAgY2FzZSBfX05SX2JpbmQ6CitA QCAtNDg4LDcgKzUwMCw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRGVuaWVkR2V0T3JNb2RpZnlT b2NrZXQoaW50IHN5c25vKSB7CisgfQorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCist ICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMy X0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChB UkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgLy8g QmlnIG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbCBmb3Igc29ja2V0cy4KKyBib29sIFN5c2NhbGxT ZXRzOjpJc1NvY2tldENhbGwoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CitAQCAt NTAyLDcgKzUxNSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzU29ja2V0Q2FsbChpbnQgc3lzbm8p IHsKKyB9CisgI2VuZGlmCisgCistI2lmIGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChf X2FybV9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0X18pIHx8 IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgYm9vbCBTeXNjYWxsU2V0czo6SXNOZXR3b3JrU29ja2V0SW5mb3Jt YXRpb24oaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9n ZXRwZWVybmFtZToKK0BAIC01MjcsNyArNTQxLDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxv d2VkQWRkcmVzc1NwYWNlQWNjZXNzKGludCBzeXNubykgeworICAgICBjYXNlIF9fTlJfbWluY29y ZToKKyAgICAgY2FzZSBfX05SX21sb2NrYWxsOgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5l ZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bv d2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfbW1hcDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBcCitAQCAtNTU3LDcgKzU3MSw4IEBAIGJv b2wgU3lzY2FsbFNldHM6OklzQWxsb3dlZEdlbmVyYWxJbyhpbnQgc3lzbm8pIHsKKyAgIHN3aXRj aCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2xzZWVrOgorICNpZiBkZWZpbmVkKF9faTM4Nl9f KSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX19sbHNlZWs6CisgI2VuZGlm CisgI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorQEAgLTU2OSwyNiArNTg0LDI4IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzQWxsb3dlZEdlbmVyYWxJbyhpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBf X05SX3JlYWR2OgorICAgICBjYXNlIF9fTlJfcHJlYWQ2NDoKKyAjaWYgZGVmaW5lZChfX2FybV9f KSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFS Q0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisgICAgIGNhc2UgX19OUl9yZWN2OgorICNlbmRpZgorICNpZiBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorLSAgICBk ZWZpbmVkKF9fYWFyY2g2NF9fKQorKyAgICBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9yZWN2ZnJvbTogIC8vIENvdWxkIHNwZWNp Znkgc291cmNlLgorICAgICBjYXNlIF9fTlJfcmVjdm1zZzogICAvLyBDb3VsZCBzcGVjaWZ5IHNv dXJjZS4KKyAjZW5kaWYKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82 NF9fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRl ZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3NlbGVjdDoKKyAjZW5kaWYKKy0j aWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBkZWZpbmVkKF9fbWlw c19fKQorKyNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmlu ZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX19u ZXdzZWxlY3Q6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVm aW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkK KysgICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVf MzJfQklUUykpIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9f TlJfc2VuZDoKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9f YXJtX18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRf XykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor ICAgICBjYXNlIF9fTlJfc2VuZG1zZzogIC8vIENvdWxkIHNwZWNpZnkgZGVzdGluYXRpb24uCisg ICAgIGNhc2UgX19OUl9zZW5kdG86ICAgLy8gQ291bGQgc3BlY2lmeSBkZXN0aW5hdGlvbi4KKyAj ZW5kaWYKK0BAIC02NDUsNyArNjYyLDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNBbGxvd2VkQmFz aWNTY2hlZHVsZXIoaW50IHN5c25vKSB7CisgICAgICAgcmV0dXJuIHRydWU7CisgICAgIGNhc2Ug X19OUl9nZXRwcmlvcml0eToKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2Fy bV9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVk KEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkg JiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgICAgIGNhc2UgX19OUl9uaWNlOgorICNlbmRpZgorICAgICBjYXNlIF9fTlJfc2V0 cHJpb3JpdHk6CitAQCAtNjU3LDcgKzY3NSw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzQWxsb3dl ZEJhc2ljU2NoZWR1bGVyKGludCBzeXNubykgeworIGJvb2wgU3lzY2FsbFNldHM6OklzQWRtaW5P cGVyYXRpb24oaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CisgI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX19hcm1fXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNIX0NQ VV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpIHx8 IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfYmRmbHVzaDoK KyAjZW5kaWYKKyAgICAgY2FzZSBfX05SX2tleGVjX2xvYWQ6CitAQCAtNjczLDcgKzY5Miw4IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQWRtaW5PcGVyYXRpb24oaW50IHN5c25vKSB7CisgCisgYm9v bCBTeXNjYWxsU2V0czo6SXNLZXJuZWxNb2R1bGUoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5 c25vKSB7CistI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwg ZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4 Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBj NjRfXykKKyAgICAgY2FzZSBfX05SX2NyZWF0ZV9tb2R1bGU6CisgICAgIGNhc2UgX19OUl9nZXRf a2VybmVsX3N5bXM6ICAvLyBTaG91bGQgRU5PU1lTLgorICAgICBjYXNlIF9fTlJfcXVlcnlfbW9k dWxlOgorQEAgLTcwNiw3ICs3MjYsOCBAQCBib29sIFN5c2NhbGxTZXRzOjpJc0ZzQ29udHJvbChp bnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX3N3YXBvZmY6CisgICAgIGNhc2UgX19OUl9zd2Fw b246CisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVf TUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBc CisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3Vtb3VudDoKKyAj ZW5kaWYKKyAgICAgY2FzZSBfX05SX3Vtb3VudDI6CitAQCAtNzIyLDcgKzc0Myw3IEBAIGJvb2wg U3lzY2FsbFNldHM6OklzTnVtYShpbnQgc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2dldGNwdToK KyAgICAgY2FzZSBfX05SX21iaW5kOgorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVk KF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2Fh cmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2 NF9fKQorICAgICBjYXNlIF9fTlJfbWlncmF0ZV9wYWdlczoKKyAjZW5kaWYKKyAgICAgY2FzZSBf X05SX21vdmVfcGFnZXM6CitAQCAtNzUxLDE0ICs3NzIsMTUgQEAgYm9vbCBTeXNjYWxsU2V0czo6 SXNHbG9iYWxQcm9jZXNzRW52aXJvbm1lbnQoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25v KSB7CisgICAgIGNhc2UgX19OUl9hY2N0OiAgLy8gUHJpdmlsZWdlZC4KKyAjaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKSB8fCBc CistICAgIGRlZmluZWQoX19hYXJjaDY0X18pCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8 IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2dldHJsaW1pdDoKKyAjZW5k aWYKKy0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX2FybV9fKQorKyNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRf XykKKyAgICAgY2FzZSBfX05SX3VnZXRybGltaXQ6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmlu ZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZ KSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3VsaW1pdDoKKyAjZW5kaWYKKyAgICAgY2FzZSBfX05S X2dldHJ1c2FnZToKK0BAIC03OTIsNyArODE0LDcgQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNHbG9i YWxTeXN0ZW1TdGF0dXMoaW50IHN5c25vKSB7CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zeXNp bmZvOgorICAgICBjYXNlIF9fTlJfdW5hbWU6CistI2lmIGRlZmluZWQoX19pMzg2X18pCisrI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBf X05SX29sZHVuYW1lOgorICAgICBjYXNlIF9fTlJfb2xkb2xkdW5hbWU6CisgI2VuZGlmCitAQCAt ODU0LDggKzg3NiwxNiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZTZW1hcGhvcmVzKGlu dCBzeXNubykgeworIH0KKyAjZW5kaWYKKyAKKysvKiBzaGl0dHkgaGFjayBhcm91bmQgVm9pZCdz IDQuMTkga2VybmVsIGhlYWRlcnMgbWlzc2luZyB0aG9zZSBudW1iZXJzICovCisrI2lmIGRlZmlu ZWQoX19wb3dlcnBjNjRfXykgJiYgIWRlZmluZWQoX19OUl9zaG1nZXQpCisrI2RlZmluZSBfX05S X3NobWdldCAzOTUKKysjZGVmaW5lIF9fTlJfc2htY3RsIDM5NgorKyNkZWZpbmUgX19OUl9zaG1h dCAzOTcKKysjZGVmaW5lIF9fTlJfc2htZHQgMzk4CisrI2VuZGlmCisrCisgI2lmIGRlZmluZWQo X19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX2FybV9fKSB8fCBc CistICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcCisrICAgIGRlZmluZWQoX19hYXJjaDY0X18pIHx8IGRlZmluZWQoX19w b3dlcnBjNjRfXykgfHwgXAorICAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYg ZGVmaW5lZChBUkNIX0NQVV82NF9CSVRTKSkKKyAvLyBUaGVzZSBnaXZlIGEgbG90IG9mIGFtYmll bnQgYXV0aG9yaXR5IGFuZCBieXBhc3MgdGhlIHNldHVpZCBzYW5kYm94LgorIGJvb2wgU3lzY2Fs bFNldHM6OklzU3lzdGVtVlNoYXJlZE1lbW9yeShpbnQgc3lzbm8pIHsKK0BAIC04ODcsNyArOTE3 LDggQEAgYm9vbCBTeXNjYWxsU2V0czo6SXNTeXN0ZW1WTWVzc2FnZVF1ZXVlKGludCBzeXNubykg eworICNlbmRpZgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAg ICAoZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9C SVRTKSkgfHwgXAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgLy8gQmlnIHN5c3RlbSBW IG11bHRpcGxleGluZyBzeXN0ZW0gY2FsbC4KKyBib29sIFN5c2NhbGxTZXRzOjpJc1N5c3RlbVZJ cGMoaW50IHN5c25vKSB7CisgICBzd2l0Y2ggKHN5c25vKSB7CitAQCAtOTA3LDcgKzkzOCw4IEBA IGJvb2wgU3lzY2FsbFNldHM6OklzQW55U3lzdGVtVihpbnQgc3lzbm8pIHsKKyAgIHJldHVybiBJ c1N5c3RlbVZNZXNzYWdlUXVldWUoc3lzbm8pIHx8IElzU3lzdGVtVlNlbWFwaG9yZXMoc3lzbm8p IHx8CisgICAgICAgICAgSXNTeXN0ZW1WU2hhcmVkTWVtb3J5KHN5c25vKTsKKyAjZWxpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICByZXR1cm4gSXNTeXN0ZW1WSXBjKHN5c25vKTsKKyAjZW5kaWYK KyB9CitAQCAtOTYwLDcgKzk5Miw4IEBAIGJvb2wgU3lzY2FsbFNldHM6OklzRmFOb3RpZnkoaW50 IHN5c25vKSB7CisgYm9vbCBTeXNjYWxsU2V0czo6SXNUaW1lcihpbnQgc3lzbm8pIHsKKyAgIHN3 aXRjaCAoc3lzbm8pIHsKKyAgICAgY2FzZSBfX05SX2dldGl0aW1lcjoKKy0jaWYgZGVmaW5lZChf X2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNp ZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19t aXBzX18pIHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJf YWxhcm06CisgI2VuZGlmCisgICAgIGNhc2UgX19OUl9zZXRpdGltZXI6CitAQCAtMTAxOSwxOCAr MTA1MiwyMiBAQCBib29sIFN5c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5c25vKSB7CisgICAgIGNh c2UgX19OUl9zeW5jZnM6CisgICAgIGNhc2UgX19OUl92aGFuZ3VwOgorIC8vIFRoZSBzeXN0ZW0g Y2FsbHMgYmVsb3cgYXJlIG5vdCBpbXBsZW1lbnRlZC4KKy0jaWYgZGVmaW5lZChfX2kzODZfXykg fHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVk KF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pIHx8 IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfYWZzX3N5c2Nh bGw6CisgI2VuZGlmCisgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAg IChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJ VFMpKSB8fCBcCisrICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX2Jy ZWFrOgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAorKyAgICBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9nZXRwbXNnOgorICNlbmRpZgorICNpZiBkZWZp bmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAm JiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwgXAorKyAgICBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9ndHR5OgorICAgICBjYXNlIF9fTlJfaWRs ZToKKyAgICAgY2FzZSBfX05SX2xvY2s6CitAQCAtMTAzOCwyMCArMTA3NSwyMiBAQCBib29sIFN5 c2NhbGxTZXRzOjpJc01pc2MoaW50IHN5c25vKSB7CisgICAgIGNhc2UgX19OUl9wcm9mOgorICAg ICBjYXNlIF9fTlJfcHJvZmlsOgorICNlbmRpZgorLSNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBk ZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lmIGRlZmluZWQoX19p Mzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgXAor KyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2UgX19OUl9wdXRwbXNnOgorICNl bmRpZgorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgICAgIGNhc2UgX19OUl9zZWN1cml0eToK KyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgXAorLSAgICAoZGVmaW5lZChBUkNI X0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkKKysgICAgKGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykp IHx8IFwKKysgICAgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgICBjYXNlIF9fTlJfc3R0eToK KyAjZW5kaWYKKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3R1eGNhbGw6Cisg I2VuZGlmCistI2lmICFkZWZpbmVkKF9fYWFyY2g2NF9fKQorKyNpZiAhZGVmaW5lZChfX2FhcmNo NjRfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgICAgY2FzZSBfX05SX3ZzZXJ2ZXI6 CisgI2VuZGlmCisgICAgICAgcmV0dXJuIHRydWU7CitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgv c2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaCBzYW5kYm94L2xpbnV4L3NlY2NvbXAt YnBmLWhlbHBlcnMvc3lzY2FsbF9zZXRzLmgKK2luZGV4IDkyMzUzM2VjOS4uNDExZjcyYWNkIDEw MDY0NAorLS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMu aAorKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zeXNjYWxsX3NldHMuaAor QEAgLTQzLDEzICs0MywxNCBAQCBjbGFzcyBTQU5EQk9YX0VYUE9SVCBTeXNjYWxsU2V0cyB7Cisg ICBzdGF0aWMgYm9vbCBJc0RlbmllZEdldE9yTW9kaWZ5U29ja2V0KGludCBzeXNubyk7CisgCisg I2lmIGRlZmluZWQoX19pMzg2X18pIHx8IFwKKy0gICAgKGRlZmluZWQoQVJDSF9DUFVfTUlQU19G QU1JTFkpICYmIGRlZmluZWQoQVJDSF9DUFVfMzJfQklUUykpCisrICAgIChkZWZpbmVkKEFSQ0hf Q1BVX01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKSB8fCBcCisrICAg IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAgIC8vIEJpZyBtdWx0aXBsZXhpbmcgc3lzdGVtIGNh bGwgZm9yIHNvY2tldHMuCisgICBzdGF0aWMgYm9vbCBJc1NvY2tldENhbGwoaW50IHN5c25vKTsK KyAjZW5kaWYKKyAKKyAjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18p IHx8IGRlZmluZWQoX19taXBzX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykKKysg ICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgc3Rh dGljIGJvb2wgSXNOZXR3b3JrU29ja2V0SW5mb3JtYXRpb24oaW50IHN5c25vKTsKKyAjZW5kaWYK KyAKK0BAIC03Niw3ICs3Nyw3IEBAIGNsYXNzIFNBTkRCT1hfRVhQT1JUIFN5c2NhbGxTZXRzIHsK KyAgIHN0YXRpYyBib29sIElzU3lzdGVtVlNlbWFwaG9yZXMoaW50IHN5c25vKTsKKyAjZW5kaWYK KyAjaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVk KF9fYXJtX18pIHx8IFwKKy0gICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykg fHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSB8fCBcCisgICAgIChkZWZpbmVkKEFSQ0hfQ1BVX01J UFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzY0X0JJVFMpKQorICAgLy8gVGhlc2UgZ2l2 ZSBhIGxvdCBvZiBhbWJpZW50IGF1dGhvcml0eSBhbmQgYnlwYXNzIHRoZSBzZXR1aWQgc2FuZGJv eC4KKyAgIHN0YXRpYyBib29sIElzU3lzdGVtVlNoYXJlZE1lbW9yeShpbnQgc3lzbm8pOworQEAg LTg4LDcgKzg5LDggQEAgY2xhc3MgU0FOREJPWF9FWFBPUlQgU3lzY2FsbFNldHMgeworICNlbmRp ZgorIAorICNpZiBkZWZpbmVkKF9faTM4Nl9fKSB8fCBcCistICAgIChkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKSAmJiBkZWZpbmVkKEFSQ0hfQ1BVXzMyX0JJVFMpKQorKyAgICAoZGVmaW5l ZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgJiYgZGVmaW5lZChBUkNIX0NQVV8zMl9CSVRTKSkgfHwg XAorKyAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAvLyBCaWcgc3lzdGVtIFYgbXVsdGlw bGV4aW5nIHN5c3RlbSBjYWxsLgorICAgc3RhdGljIGJvb2wgSXNTeXN0ZW1WSXBjKGludCBzeXNu byk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2Fs bC5jYyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3N5c2NhbGwuY2MKK2luZGV4IGU0N2U5OGJm NS4uZDUzYTdmZjU2IDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2Fs bC5jYworKysrIHNhbmRib3gvbGludXgvc2VjY29tcC1icGYvc3lzY2FsbC5jYworQEAgLTE4LDcg KzE4LDcgQEAgbmFtZXNwYWNlIHNhbmRib3ggeworIG5hbWVzcGFjZSB7CisgCisgI2lmIGRlZmlu ZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8 fCBcCistICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisrICAgIGRlZmluZWQoQVJD SF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQgKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKyAv LyBOdW1iZXIgdGhhdCdzIG5vdCBjdXJyZW50bHkgdXNlZCBieSBhbnkgTGludXgga2VybmVsIEFC SXMuCisgY29uc3QgaW50IGtJbnZhbGlkU3lzY2FsbE51bWJlciA9IDB4MzUxZDM7CisgI2Vsc2UK K0BAIC0zMTAsMTIgKzMxMCw1NiBAQCBhc20oLy8gV2UgbmVlZCB0byBiZSBhYmxlIHRvIHRlbGwg dGhlIGtlcm5lbCBleGFjdGx5IHdoZXJlIHdlIG1hZGUgYQorICAgICAvLyBFbnRlciB0aGUga2Vy bmVsCisgICAgICJzdmMgMFxuIgorICAgICAiMjpyZXRcbiIKKysgICAgIi5jZmlfZW5kcHJvY1xu IgorKyAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNtXG4iCisrI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorKyAgICAiLnRleHRcbiIKKysgICAgIi5hbGlnbiA0XG4iCisrICAg ICIudHlwZSBTeXNjYWxsQXNtIEBmdW5jdGlvblxuIgorKyAgICAiU3lzY2FsbEFzbTpcbiIKKysg ICAgIi5jZmlfc3RhcnRwcm9jXG4iCisrCisrICAgIC8vIENoZWNrIGlmIHIzIGlzIG5lZ2F0aXZl CisrICAgICJjbXBkaSAzLCAwXG4iCisrICAgICJiZ3QgMmZcbiIKKysKKysgICAgLy8gTG9hZCBh ZGRyZXNzIG9mIDNmIGludG8gcjMgYW5kIHJldHVybgorKyAgICAibWZsciAxMFxuIgorKyAgICAi YmwgMWZcbiIKKysgICAgIjE6IG1mbHIgM1xuIgorKyAgICAibXRsciAxMFxuIgorKyAgICAiYWRk aSAzLCAzLCA0KjEzXG4iCisrICAgICJibHJcbiIKKysKKysgICAgLy8gTG9hZCBhcmd1bWVudHMg ZnJvbSBhcnJheSBpbnRvIHIzLTgKKysgICAgLy8gc2F2ZSBwYXJhbSAzIGluIHIxMAorKyAgICAi MjpcbiIKKysgICAgIm1yIDAsIDNcbiIKKysgICAgImxkIDMsIDAoNClcbiIKKysgICAgImxkIDUs IDE2KDQpXG4iCisrICAgICJsZCA2LCAyNCg0KVxuIgorKyAgICAibGQgNywgMzIoNClcbiIKKysg ICAgImxkIDgsIDQwKDQpXG4iCisrICAgICJsZCA0LCA4KDQpXG4iCisrICAgICJsaSA5LCAwXG4i CisrCisrICAgIC8vIEVudGVyIGtlcm5lbAorKyAgICAic2NcbiIKKysKKysgICAgLy8gTWFnaWMg cmV0dXJuIGFkZHJlc3MKKysgICAgIjM6XG4iCisrICAgIC8vIExpa2UgTUlQUywgcHBjNjQgcmV0 dXJuIHZhbHVlcyBhcmUgYWx3YXlzIHBvc2l0aXZlLgorKyAgICAvLyBDaGVjayBmb3IgZXJyb3Ig aW4gY3IwLlNPIGFuZCBuZWdhdGUgdXBvbiBlcnJvcgorKyAgICAiYmMgNCwgMywgNGZcbiIKKysg ICAgIm5lZyAzLCAzXG4iCisrICAgICI0OiBibHJcbiIKKysKKyAgICAgIi5jZmlfZW5kcHJvY1xu IgorICAgICAiLnNpemUgU3lzY2FsbEFzbSwgLi1TeXNjYWxsQXNtXG4iCisgI2VuZGlmCisgICAg ICk7ICAvLyBhc20KKyAKKy0jaWYgZGVmaW5lZChfX3g4Nl82NF9fKQorKyNpZiBkZWZpbmVkKF9f eDg2XzY0X18pIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyBleHRlcm4gIkMiIHsKKyBpbnRw dHJfdCBTeXNjYWxsQXNtKGludHB0cl90IG5yLCBjb25zdCBpbnRwdHJfdCBhcmdzWzZdKTsKKyB9 CitAQCAtNDI5LDYgKzQ3Myw4IEBAIGludHB0cl90IFN5c2NhbGw6OkNhbGwoaW50IG5yLAorICAg ICByZXQgPSBpbm91dDsKKyAgIH0KKyAKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisr ICBpbnRwdHJfdCByZXQgPSBTeXNjYWxsQXNtKG5yLCBhcmdzKTsKKyAjZWxzZQorICNlcnJvciAi VW5pbXBsZW1lbnRlZCBhcmNoaXRlY3R1cmUiCisgI2VuZGlmCitAQCAtNDQ1LDggKzQ5MSwxOCBA QCB2b2lkIFN5c2NhbGw6OlB1dFZhbHVlSW5VY29udGV4dChpbnRwdHJfdCByZXRfdmFsLCB1Y29u dGV4dF90KiBjdHgpIHsKKyAgICAgLy8gbmVlZHMgdG8gYmUgY2hhbmdlZCBiYWNrLgorICAgICBy ZXRfdmFsID0gLXJldF92YWw7CisgICAgIFNFQ0NPTVBfUEFSTTQoY3R4KSA9IDE7CistICB9IGVs c2UKKysgIH0gZWxzZSB7CisgICAgIFNFQ0NPTVBfUEFSTTQoY3R4KSA9IDA7CisrICB9CisrI2Vu ZGlmCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFNhbWUgYXMgTUlQUywgbmVl ZCB0byBpbnZlcnQgcmV0IGFuZCBzZXQgZXJyb3IgcmVnaXN0ZXIgKGNyMC5TTykKKysgIGlmIChy ZXRfdmFsIDw9IC0xICYmIHJldF92YWwgPj0gLTQwOTUpIHsKKysgICAgcmV0X3ZhbCA9IC1yZXRf dmFsOworKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciB8PSAoMSA8PCAyOCk7CisrICB9 IGVsc2UgeworKyAgICBjdHgtPnVjX21jb250ZXh0LnJlZ3MtPmNjciAmPSB+KDEgPDwgMjgpOwor KyAgfQorICNlbmRpZgorICAgU0VDQ09NUF9SRVNVTFQoY3R4KSA9IHN0YXRpY19jYXN0PGdyZWdf dD4ocmV0X3ZhbCk7CisgfQorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3Ry YXAuY2Mgc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi90cmFwLmNjCitpbmRleCBmNWI4NmE3M2Eu LjVlNmM0YTA2OCAxMDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MK KysrKyBzYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmL3RyYXAuY2MKK0BAIC0yMzIsNiArMjMyLDIw IEBAIHZvaWQgVHJhcDo6U2lnU3lzKGludCBuciwgTGludXhTaWdJbmZvKiBpbmZvLCB1Y29udGV4 dF90KiBjdHgpIHsKKyAgICAgICBTZXRJc0luU2lnSGFuZGxlcigpOworICAgICB9CisgCisrI2lm IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgLy8gT24gcHBjNjQrZ2xpYmMsIHNvbWUgc3lz Y2FsbHMgc2VlbSB0byBhY2NpZGVudGFsbHkgbmVnYXRlIHRoZSBmaXJzdAorKyAgICAvLyBwYXJh bWV0ZXIgd2hpY2ggY2F1c2VzIGNoZWNrcyBhZ2FpbnN0IGl0IHRvIGZhaWwuIEZvciBub3csIG1h bnVhbGx5CisrICAgIC8vIG5lZ2F0ZSB0aGVtIGJhY2suCisrICAgIC8vIFRPRE8oc2hhd25AYW5h c3Rhcy5pbyk6IGludmVzdGlnYXRlIHRoaXMgaXNzdWUgZnVydGhlcgorKyAgICBhdXRvIG5yID0g U0VDQ09NUF9TWVNDQUxMKGN0eCk7CisrICAgIGlmIChuciA9PSBfX05SX29wZW5hdCB8fCBuciA9 PSBfX05SX21rZGlyYXQgfHwgbnIgPT0gX19OUl9mYWNjZXNzYXQgfHwgbnIgPT0gX19OUl9yZWFk bGlua2F0IHx8CisrICAgICAgICBuciA9PSBfX05SX3JlbmFtZWF0IHx8IG5yID09IF9fTlJfcmVu YW1lYXQyIHx8IG5yID09IF9fTlJfbmV3ZnN0YXRhdCB8fCBuciA9PSBfX05SX3VubGlua2F0KSB7 CisrICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8aW50PihTRUNDT01QX1BBUk0xKGN0eCkpID4gMCkg eworKyAgICAgICAgICAgIFNFQ0NPTVBfUEFSTTEoY3R4KSA9IC1TRUNDT01QX1BBUk0xKGN0eCk7 CisrICAgICAgICB9CisrICAgIH0KKysjZW5kaWYKKysKKyAgICAgLy8gQ29weSB0aGUgc2VjY29t cC1zcGVjaWZpYyBkYXRhIGludG8gYSBhcmNoX3NlY2NvbXBfZGF0YSBzdHJ1Y3R1cmUuIFRoaXMK KyAgICAgLy8gaXMgd2hhdCB3ZSBhcmUgc2hvd2luZyB0byBUcmFwRm5jIGNhbGxiYWNrcyB0aGF0 IHRoZSBzeXN0ZW0gY2FsbAorICAgICAvLyBldmFsdWF0b3IgcmVnaXN0ZXJlZCB3aXRoIHRoZSBz YW5kYm94LgorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNj IHNhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMuY2MKK2luZGV4IGQ3YjVkOGM0NC4u NGFkYzZkMGQ0IDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMu Y2MKKysrKyBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCitAQCAtODEsNyAr ODEsNyBAQCBib29sIENocm9vdFRvU2FmZUVtcHR5RGlyKCkgeworICAgcGlkX3QgcGlkID0gLTE7 CisgICBhbGlnbmFzKDE2KSBjaGFyIHN0YWNrX2J1ZltQVEhSRUFEX1NUQUNLX01JTl07CisgI2lm IGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFN SUxZKSB8fCBcCistICAgIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisrICAgIGRlZmlu ZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZ KQorICAgLy8gVGhlIHN0YWNrIGdyb3dzIGRvd253YXJkLgorICAgdm9pZCogc3RhY2sgPSBzdGFj a19idWYgKyBzaXplb2Yoc3RhY2tfYnVmKTsKKyAjZWxzZQorZGlmZiAtLWdpdCBzYW5kYm94L2xp bnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuY2Mgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9z eXNjYWxsX3dyYXBwZXJzLmNjCitpbmRleCBmY2ZkMmFhMTIuLmY2ZWIzMmZiNyAxMDA2NDQKKy0t LSBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuY2MKKysrKyBzYW5kYm94 L2xpbnV4L3NlcnZpY2VzL3N5c2NhbGxfd3JhcHBlcnMuY2MKK0BAIC01OCw3ICs1OCw3IEBAIGxv bmcgc3lzX2Nsb25lKHVuc2lnbmVkIGxvbmcgZmxhZ3MsCisgI2lmIGRlZmluZWQoQVJDSF9DUFVf WDg2XzY0KQorICAgcmV0dXJuIHN5c2NhbGwoX19OUl9jbG9uZSwgZmxhZ3MsIGNoaWxkX3N0YWNr LCBwdGlkLCBjdGlkLCB0bHMpOworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfWDg2KSB8fCBkZWZp bmVkKEFSQ0hfQ1BVX0FSTV9GQU1JTFkpIHx8IFwKKy0gICAgZGVmaW5lZChBUkNIX0NQVV9NSVBT X0ZBTUlMWSkKKysgICAgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkgfHwgZGVmaW5lZChB UkNIX0NQVV9QUEM2NF9GQU1JTFkpCisgICAvLyBDT05GSUdfQ0xPTkVfQkFDS1dBUkRTIGRlZmlu ZWQuCisgICByZXR1cm4gc3lzY2FsbChfX05SX2Nsb25lLCBmbGFncywgY2hpbGRfc3RhY2ssIHB0 aWQsIHRscywgY3RpZCk7CisgI2VuZGlmCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc3lzY2Fs bF9icm9rZXIvYnJva2VyX3Byb2Nlc3MuY2Mgc2FuZGJveC9saW51eC9zeXNjYWxsX2Jyb2tlci9i cm9rZXJfcHJvY2Vzcy5jYworaW5kZXggZDcyYzlkMjM4Li43N2YxZDk1ZjUgMTAwNjQ0CistLS0g c2FuZGJveC9saW51eC9zeXNjYWxsX2Jyb2tlci9icm9rZXJfcHJvY2Vzcy5jYworKysrIHNhbmRi b3gvbGludXgvc3lzY2FsbF9icm9rZXIvYnJva2VyX3Byb2Nlc3MuY2MKK0BAIC0xNjksNyArMTY5 LDcgQEAgYm9vbCBCcm9rZXJQcm9jZXNzOjpJc1N5c2NhbGxCcm9rZXJhYmxlKGludCBzeXNubywg Ym9vbCBmYXN0X2NoZWNrKSBjb25zdCB7CisgI2lmIGRlZmluZWQoX19OUl9mc3RhdGF0NjQpCisg ICAgIGNhc2UgX19OUl9mc3RhdGF0NjQ6CisgI2VuZGlmCistI2lmIGRlZmluZWQoX194ODZfNjRf XykgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykKKysjaWYgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBk ZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAgIGNhc2Ug X19OUl9uZXdmc3RhdGF0OgorICNlbmRpZgorICAgICAgIHJldHVybiAhZmFzdF9jaGVjayB8fCBh bGxvd2VkX2NvbW1hbmRfc2V0Xy50ZXN0KENPTU1BTkRfU1RBVCk7CitkaWZmIC0tZ2l0IHNhbmRi b3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oIHNhbmRib3gvbGludXgvc3lz dGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oCitpbmRleCAxZmE0N2VkMDkuLjM5Y2M5YWI1MyAx MDA2NDQKKy0tLSBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3NlY2NvbXAuaAor KysrIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2VjY29tcC5oCitAQCAtNDEs NiArNDEsOSBAQAorICNpZm5kZWYgRU1fQUFSQ0g2NAorICNkZWZpbmUgRU1fQUFSQ0g2NCAxODMK KyAjZW5kaWYKKysjaWZuZGVmIEVNX1BQQzY0CisrI2RlZmluZSBFTV9QUEM2NCAyMQorKyNlbmRp ZgorIAorICNpZm5kZWYgX19BVURJVF9BUkNIXzY0QklUCisgI2RlZmluZSBfX0FVRElUX0FSQ0hf NjRCSVQgMHg4MDAwMDAwMAorQEAgLTczLDYgKzc2LDEyIEBACisgI2lmbmRlZiBBVURJVF9BUkNI X0FBUkNINjQKKyAjZGVmaW5lIEFVRElUX0FSQ0hfQUFSQ0g2NCAoRU1fQUFSQ0g2NCB8IF9fQVVE SVRfQVJDSF82NEJJVCB8IF9fQVVESVRfQVJDSF9MRSkKKyAjZW5kaWYKKysjaWZuZGVmIEFVRElU X0FSQ0hfUFBDNjQKKysjZGVmaW5lIEFVRElUX0FSQ0hfUFBDNjQgKEVNX1BQQzY0IHwgX19BVURJ VF9BUkNIXzY0QklUKQorKyNlbmRpZgorKyNpZm5kZWYgQVVESVRfQVJDSF9QUEM2NExFCisrI2Rl ZmluZSBBVURJVF9BUkNIX1BQQzY0TEUgKEVNX1BQQzY0IHwgX19BVURJVF9BUkNIXzY0QklUIHwg X19BVURJVF9BUkNIX0xFKQorKyNlbmRpZgorIAorIC8vIEZvciBwcmN0bC5oCisgI2lmbmRlZiBQ Ul9TRVRfU0VDQ09NUAorZGlmZiAtLWdpdCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xp bnV4X3NpZ25hbC5oIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgK K2luZGV4IGY1YTczNjc2MS4uNTE1YjIxYTVmIDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgvc3lz dGVtX2hlYWRlcnMvbGludXhfc2lnbmFsLmgKKysrKyBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFk ZXJzL2xpbnV4X3NpZ25hbC5oCitAQCAtMTMsNyArMTMsNyBAQAorIC8vIChub3QgdW5kZWZpbmVk LCBidXQgZGVmaW5lZCBkaWZmZXJlbnQgdmFsdWVzIGFuZCBpbiBkaWZmZXJlbnQgbWVtb3J5Cisg Ly8gbGF5b3V0cykuIFNvLCBmaWxsIHRoZSBnYXAgaGVyZS4KKyAjaWYgZGVmaW5lZChfX2kzODZf XykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYXJtX18pIHx8IFwKKy0gICAg ZGVmaW5lZChfX2FhcmNoNjRfXykKKysgICAgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorIAorICNkZWZpbmUgTElOVVhfU0lHSFVQIDEKKyAjZGVmaW5lIExJ TlVYX1NJR0lOVCAyCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGlu dXhfc3lzY2FsbHMuaCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2xpbnV4X3N5c2NhbGxz LmgKK2luZGV4IDJiNzhhMGNjMy4uMGE3MGY1ZWE1IDEwMDY0NAorLS0tIHNhbmRib3gvbGludXgv c3lzdGVtX2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaAorKysrIHNhbmRib3gvbGludXgvc3lzdGVt X2hlYWRlcnMvbGludXhfc3lzY2FsbHMuaAorQEAgLTM1LDUgKzM1LDkgQEAKKyAjaW5jbHVkZSAi c2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9hcm02NF9saW51eF9zeXNjYWxscy5oIgorICNl bmRpZgorIAorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrI2luY2x1ZGUgInNhbmRib3gv bGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaCIKKysjZW5kaWYKKysK KyAjZW5kaWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfTElOVVhfU1lTQ0FMTFNf SF8KKyAKK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9saW51eF91Y29u dGV4dC5oIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvbGludXhfdWNvbnRleHQuaAoraW5k ZXggMjJjZTc4MDI3Li5hNjliMDI0YzIgMTAwNjQ0CistLS0gc2FuZGJveC9saW51eC9zeXN0ZW1f aGVhZGVycy9saW51eF91Y29udGV4dC5oCisrKysgc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVy cy9saW51eF91Y29udGV4dC5oCitAQCAtMTEsNiArMTEsOCBAQAorICNpbmNsdWRlICJzYW5kYm94 L2xpbnV4L3N5c3RlbV9oZWFkZXJzL2FybV9saW51eF91Y29udGV4dC5oIgorICNlbGlmIGRlZmlu ZWQoX19pMzg2X18pCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvaTM4 Nl9saW51eF91Y29udGV4dC5oIgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysjaW5j bHVkZSAic2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91Y29udGV4dC5o IgorICNlbHNlCisgI2Vycm9yICJObyBzdXBwb3J0IGZvciB5b3VyIGFyY2hpdGVjdHVyZSBpbiBQ TmFDbCBoZWFkZXIiCisgI2VuZGlmCitkaWZmIC0tZ2l0IHNhbmRib3gvbGludXgvc3lzdGVtX2hl YWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaCBzYW5kYm94L2xpbnV4L3N5c3RlbV9oZWFkZXJz L3BwYzY0X2xpbnV4X3N5c2NhbGxzLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwMDAuLmNjYWNmZmUyMgorLS0tIC9kZXYvbnVsbAorKysrIHNhbmRib3gvbGludXgvc3lzdGVt X2hlYWRlcnMvcHBjNjRfbGludXhfc3lzY2FsbHMuaAorQEAgLTAsMCArMSwxMiBAQAorKy8vIENv cHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor Ky8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxp Y2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorKworKyNp Zm5kZWYgU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVNDQUxMU19I XworKyNkZWZpbmUgU0FOREJPWF9MSU5VWF9TWVNURU1fSEVBREVSU19QUEM2NF9MSU5VWF9TWVND QUxMU19IXworKworKyNpbmNsdWRlIDxhc20vdW5pc3RkLmg+CisrCisrLy9UT0RPOiBpcyBpdCBu ZWNlc3NhcnkgdG8gcmVkZWZpbmUgc3lzY2FsbCBudW1iZXJzIGZvciBQUEM2ND8KKysKKysjZW5k aWYgIC8vIFNBTkRCT1hfTElOVVhfU1lTVEVNX0hFQURFUlNfUFBDNjRfTElOVVhfU1lTQ0FMTFNf SF8KK2RpZmYgLS1naXQgc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51eF91 Y29udGV4dC5oIHNhbmRib3gvbGludXgvc3lzdGVtX2hlYWRlcnMvcHBjNjRfbGludXhfdWNvbnRl eHQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uMDc3MjhlMDg3Cist LS0gL2Rldi9udWxsCisrKysgc2FuZGJveC9saW51eC9zeXN0ZW1faGVhZGVycy9wcGM2NF9saW51 eF91Y29udGV4dC5oCitAQCAtMCwwICsxLDEyIEBACisrLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENo cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291 cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2lmbmRlZiBTQU5EQk9YX0xJTlVY X1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCisrI2RlZmluZSBTQU5EQk9Y X0xJTlVYX1NZU1RFTV9IRUFERVJTX1BQQzY0X0xJTlVYX1VDT05URVhUX0hfCisrCisrI2luY2x1 ZGUgPHN5cy91Y29udGV4dC5oPgorKworKy8vVE9ETzogaXMgaXQgbmVjZXNzYXJ5IHRvIHJlZGVm aW5lIHVjb250ZXh0IG9uIFBQQzY0PworKworKyNlbmRpZiAgLy8gU0FOREJPWF9MSU5VWF9TWVNU RU1fSEVBREVSU19QUEM2NF9MSU5VWF9VQ09OVEVYVF9IXworZGlmZiAtLWdpdCBzYW5kYm94L3Bv bGljeS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjIHNhbmRib3gvcG9saWN5L2xp bnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKK2luZGV4IDI1ODhmYzc5Mi4uZDQ1NWM0 NjAxIDEwMDY0NAorLS0tIHNhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lf bGludXguY2MKKysrKyBzYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xp bnV4LmNjCitAQCAtMTUsNiArMTUsMTEgQEAKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXN0 ZW1faGVhZGVycy9saW51eF9zeXNjYWxscy5oIgorICNpbmNsdWRlICJzYW5kYm94L3BvbGljeS9s aW51eC9zYW5kYm94X2xpbnV4LmgiCisgCisrLy8gT24gUFBDNjQsIFRDR0VUUyBpcyBkZWZpbmVk IGluIHRlcm1zIG9mIHN0cnVjdCB0ZXJtaW9zLCBzbyB3ZSBtdXN0IGluY2x1ZGUgdGVybWlvcy5o CisrI2lmZGVmIF9fcG93ZXJwYzY0X18KKysjaW5jbHVkZSA8dGVybWlvcy5oPgorKyNlbmRpZgor KworIC8vIFRPRE8odmlnbmF0dGkpOiByZXBsYWNlIHRoZSBsb2NhbCBkZWZpbml0aW9ucyBiZWxv dyB3aXRoICNpbmNsdWRlCisgLy8gPGxpbnV4L2RtYS1idWYuaD4gb25jZSBrZXJuZWwgdmVyc2lv biA0LjYgYmVjb21lcyB3aWRlbHkgdXNlZC4KKyAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KK2Rp ZmYgLS1naXQgdGhpcmRfcGFydHkvYW5nbGUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1Np bmsuaCB0aGlyZF9wYXJ0eS9hbmdsZS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5o CitpbmRleCAzYTgwN2UxZTMuLjUyNTg2MTdhNyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9hbmds ZS9zcmMvY29tcGlsZXIvdHJhbnNsYXRvci9JbmZvU2luay5oCisrKysgdGhpcmRfcGFydHkvYW5n bGUvc3JjL2NvbXBpbGVyL3RyYW5zbGF0b3IvSW5mb1NpbmsuaAorQEAgLTkyLDcgKzkyLDE2IEBA IGNsYXNzIFRJbmZvU2lua0Jhc2UKKyAgICAgICAgICAgICBzdHJlYW0ucHJlY2lzaW9uKDgpOwor ICAgICAgICAgICAgIHN0cmVhbSA8PCBmOworICAgICAgICAgfQorLSAgICAgICAgc2luay5hcHBl bmQoc3RyZWFtLnN0cigpKTsKKysKKysgICAgICAgIC8vIEhhY2sgdG8gd29yayBhcm91bmQgYSBi dWcgd2hlcmUgbmVnYXRpdmUgZmxvYXRpbmcgcG9pbnQgdmFsdWVzCisrICAgICAgICAvLyBhcmUg cmVuZGVyZWQgbGlrZSAnLjAuNScgaW5zdGVhZCBvZiAnLTAuNScKKysgICAgICAgIHN0ZDo6c3Ry aW5nIHJlcyhzdHJlYW0uc3RyKCkpOworKworKyAgICAgICAgaWYgKHNpZ25iaXQoZikpIHsgLy8g dGVzdCBpZiBmIGlzIG5lZ2F0aXZlCisrICAgICAgICAgICAgcmVzWzBdID0gJy0nOworKyAgICAg ICAgfQorKworKyAgICAgICAgc2luay5hcHBlbmQocmVzKTsKKyAgICAgICAgIHJldHVybiAqdGhp czsKKyAgICAgfQorICAgICAvLyBXcml0ZSBib29sZWFuIHZhbHVlcyBhcyB0aGVpciBuYW1lcyBp bnN0ZWFkIG9mIGludGVncmFsIHZhbHVlLgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9hbmdsZS9z cmMvbGliQU5HTEUvQ29uc3RhbnRzLmggdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xpYkFOR0xFL0Nv bnN0YW50cy5oCitpbmRleCBmY2JjOTI0NmEuLjM5YWU2NjE0OCAxMDA2NDQKKy0tLSB0aGlyZF9w YXJ0eS9hbmdsZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKKysrKyB0aGlyZF9wYXJ0eS9hbmds ZS9zcmMvbGliQU5HTEUvQ29uc3RhbnRzLmgKK0BAIC05LDYgKzksNyBAQAorICNpZm5kZWYgTElC QU5HTEVfQ09OU1RBTlRTX0hfCisgI2RlZmluZSBMSUJBTkdMRV9DT05TVEFOVFNfSF8KKyAKKysj aW5jbHVkZSA8Y3N0ZGRlZj4KKyAjaW5jbHVkZSAiY29tbW9uL3BsYXRmb3JtLmgiCisgCisgI2lu Y2x1ZGUgPHN0ZGludC5oPgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQu Z24gdGhpcmRfcGFydHkvYm9yaW5nc3NsL0JVSUxELmduCitpbmRleCAxN2NmOWNkYTkuLjhjZTk2 YmQzMiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24KKysrKyB0aGly ZF9wYXJ0eS9ib3Jpbmdzc2wvQlVJTEQuZ24KK0BAIC0xMDMsNiArMTAzLDEzIEBAIGlmIChpc193 aW4gJiYgIWlzX21zYW4gJiYgY3VycmVudF9jcHUgIT0gImFybTY0IikgeworICAgICAgIH0gZWxz ZSB7CisgICAgICAgICBwdWJsaWNfY29uZmlncyA9IFsgIjpub19hc21fY29uZmlnIiBdCisgICAg ICAgfQorKyAgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKKysgICAgICBp ZiAoaXNfbGludXgpIHsKKysgICAgICAgICMgVE9ETzogcHBjNjQgKGJlKSBjaGVjaworKyAgICAg ICAgc291cmNlcyArPSBjcnlwdG9fc291cmNlc19saW51eF9wcGM2NGxlCisrICAgICAgfSBlbHNl IHsKKysgICAgICAgIHB1YmxpY19jb25maWdzID0gWyAiOm5vX2FzbV9jb25maWciIF0KKysgICAg ICB9CisgICAgIH0gZWxzZSB7CisgICAgICAgcHVibGljX2NvbmZpZ3MgPSBbICI6bm9fYXNtX2Nv bmZpZyIgXQorICAgICB9CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL0JVSUxELmdu IHRoaXJkX3BhcnR5L2JyZWFrcGFkL0JVSUxELmduCitpbmRleCA0YWYzZDdiYmYuLmFkYmY1NDE1 OSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9CVUlMRC5nbgorKysrIHRoaXJkX3Bh cnR5L2JyZWFrcGFkL0JVSUxELmduCitAQCAtNTk2LDcgKzU5Niw2IEBAIGlmIChpc19saW51eCB8 fCBpc19jaHJvbWVvcyB8fCBpc19hbmRyb2lkKSB7CisgICAgICAgImJyZWFrcGFkL3NyYy9jbGll bnQvbWluaWR1bXBfZmlsZV93cml0ZXIuaCIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24v Y29udmVydF9VVEYuY2MiLAorICAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2NvbnZlcnRfVVRG LmgiLAorLSAgICAgICJicmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L2JyZWFrcGFkX2dldGNvbnRl eHQuUyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5j YyIsCisgICAgICAgImJyZWFrcGFkL3NyYy9jb21tb24vbGludXgvZWxmX2NvcmVfZHVtcC5oIiwK KyAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9lbGZ1dGlscy5jYyIsCitAQCAtNjM0 LDYgKzYzMywxNCBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3MgfHwgaXNfYW5kcm9pZCkg eworIAorICAgICBsaWJzID0gWyAiZGwiIF0KKyAKKysgICAgaWYgKGN1cnJlbnRfY3B1ID09ICJw cGM2NCIpIHsKKysgICAgICAgIGRlZmluZXMgPSBbICJIQVZFX0dFVENPTlRFWFQiIF0KKysgICAg fSBlbHNlIHsKKysgICAgICAgIHNvdXJjZXMgKz0gWworKyAgICAgICAgICAgICJicmVha3BhZC9z cmMvY29tbW9uL2xpbnV4L2JyZWFrcGFkX2dldGNvbnRleHQuUyIKKysgICAgICAgIF0KKysgICAg fQorKworICAgICBpbmNsdWRlX2RpcnMgPSBbCisgICAgICAgIi4iLAorICAgICAgICJicmVha3Bh ZC9zcmMiLAorQEAgLTY4Miw3ICs2ODksNiBAQCBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3Mg fHwgaXNfYW5kcm9pZCkgeworICAgICAgICJicmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlk dW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRlc3QuY2MiLAorICAgICAgICJicmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXJfdW5pdHRl c3RfdXRpbHMuY2MiLAorICAgICAgICJicmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9wcm9jX2NwdWluZm9fcmVhZGVyX3VuaXR0ZXN0LmNjIiwKKy0gICAgICAiYnJlYWtw YWQvc3JjL2NvbW1vbi9saW51eC9icmVha3BhZF9nZXRjb250ZXh0X3VuaXR0ZXN0LmNjIiwKKyAg ICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9lbGZfY29yZV9kdW1wX3VuaXR0ZXN0LmNj IiwKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9maWxlX2lkX3VuaXR0ZXN0LmNj IiwKKyAgICAgICAiYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9saW51eF9saWJjX3N1cHBvcnRf dW5pdHRlc3QuY2MiLAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9z cmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4dF9jcHUuaCB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2Nv bW1vbi9yYXdfY29udGV4dF9jcHUuaAoraW5kZXggMDdkOTE3MWEwLi45YWVkNGNiMzYgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1w X3dyaXRlcl9jb21tb24vcmF3X2NvbnRleHRfY3B1LmgKKysrKyB0aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi9yYXdfY29udGV4 dF9jcHUuaAorQEAgLTQ0LDYgKzQ0LDggQEAgdHlwZWRlZiBNRFJhd0NvbnRleHRBUk0gUmF3Q29u dGV4dENQVTsKKyB0eXBlZGVmIE1EUmF3Q29udGV4dEFSTTY0X09sZCBSYXdDb250ZXh0Q1BVOwor ICNlbGlmIGRlZmluZWQoX19taXBzX18pCisgdHlwZWRlZiBNRFJhd0NvbnRleHRNSVBTIFJhd0Nv bnRleHRDUFU7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorK3R5cGVkZWYgTURSYXdD b250ZXh0UFBDNjQgUmF3Q29udGV4dENQVTsKKyAjZWxzZQorICNlcnJvciAiVGhpcyBjb2RlIGhh cyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorZGlmZiAt LWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBf d3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworaW5k ZXggYWFlMWRjMTNiLi4wM2FmZWM3YTUgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQv YnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFkX2luZm8u Y2MKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5jYworQEAgLTI3MCw3ICsyNzAsNDIgQEAgdm9p ZCBUaHJlYWRJbmZvOjpGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQpIGNvbnN0IHsK KyAgIG91dC0+ZmxvYXRfc2F2ZS5maXIgPSBtY29udGV4dC5mcGNfZWlyOworICNlbmRpZgorIH0K Ky0jZW5kaWYgIC8vIF9fbWlwc19fCisrCisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQor KworK3VpbnRwdHJfdCBUaHJlYWRJbmZvOjpHZXRJbnN0cnVjdGlvblBvaW50ZXIoKSBjb25zdCB7 CisrICAgIHJldHVybiBtY29udGV4dC5ncF9yZWdzW1BUX05JUF07CisrfQorKworK3ZvaWQgVGhy ZWFkSW5mbzo6RmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQVSogb3V0KSBjb25zdCB7CisrICAg IG91dC0+Y29udGV4dF9mbGFncyA9IE1EX0NPTlRFWFRfUFBDNjRfRlVMTDsKKysgICAgZm9yIChp bnQgaSA9IDA7IGkgPCBNRF9DT05URVhUX1BQQzY0X0dQUl9DT1VOVDsgaSsrKQorKyAgICAgICAg b3V0LT5ncHJbaV0gPSBtY29udGV4dC5ncF9yZWdzW2ldOworKworKyAgICBvdXQtPmxyID0gbWNv bnRleHQuZ3BfcmVnc1tQVF9MTktdOworKyAgICBvdXQtPnNycjAgPSBtY29udGV4dC5ncF9yZWdz W1BUX05JUF07CisrICAgIG91dC0+c3JyMSA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXTsKKysg ICAgb3V0LT5jciA9IG1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXTsKKysgICAgb3V0LT54ZXIgPSBt Y29udGV4dC5ncF9yZWdzW1BUX1hFUl07CisrICAgIG91dC0+Y3RyID0gbWNvbnRleHQuZ3BfcmVn c1tQVF9DVFJdOworKyAgICAKKysgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9GTE9BVElOR1NB VkVBUkVBX1BQQ19GUFJfQ09VTlQ7IGkrKykKKysgICAgICAgIG91dC0+ZmxvYXRfc2F2ZS5mcHJl Z3NbaV0gPSBtY29udGV4dC5mcF9yZWdzW2ldOworKworKyAgICBvdXQtPmZsb2F0X3NhdmUuZnBz Y3IgPSBtY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKKysKKysgICAgZm9yIChpbnQgaSA9IDA7 IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkrKykKKysgICAgICAgIG91dC0+ dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9IFwKKysgICAgICAgICAgICB7KCgodWludDY0X3QpdnJl Z3MudnJyZWdzW2ldWzBdKSA8PCAzMikgCisrICAgICAgICAgICAgICAgICAgICAgICAgICB8IHZy ZWdzLnZycmVnc1tpXVsxXSwgCisrICAgICAgICAgICAgKCgodWludDY0X3QpdnJlZ3MudnJyZWdz W2ldWzJdKSA8PCAzMikKKysgICAgICAgICAgICAgICAgICAgICAgICAgfCB2cmVncy52cnJlZ3Nb aV1bM119OworKworKyAgICBvdXQtPnZyc2F2ZSA9IHZyZWdzLnZyc2F2ZTsKKysgICAgb3V0LT52 ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MudnNjci52c2NyX3dvcmR9OworKyAgICBv dXQtPnZlY3Rvcl9zYXZlLnNhdmVfdnJ2YWxpZCA9IDB4RkZGRkZGRkY7IAorK30KKysjZW5kaWYg IC8vIF9fcG93ZXJwYzY0X18KKyAKKyB2b2lkIFRocmVhZEluZm86OkdldEdlbmVyYWxQdXJwb3Nl UmVnaXN0ZXJzKHZvaWQqKiBncF9yZWdzLCBzaXplX3QqIHNpemUpIHsKKyAgIGFzc2VydChncF9y ZWdzIHx8IHNpemUpOworQEAgLTI3OSw2ICszMTQsMTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRH ZW5lcmFsUHVycG9zZVJlZ2lzdGVycyh2b2lkKiogZ3BfcmVncywgc2l6ZV90KiBzaXplKSB7Cisg ICAgICpncF9yZWdzID0gbWNvbnRleHQuZ3JlZ3M7CisgICBpZiAoc2l6ZSkKKyAgICAgKnNpemUg PSBzaXplb2YobWNvbnRleHQuZ3JlZ3MpOworKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykK KysgIGlmIChncF9yZWdzKQorKyAgICAqZ3BfcmVncyA9IG1jb250ZXh0LmdwX3JlZ3M7CisrICBp ZiAoc2l6ZSkKKysgICAgKnNpemUgPSBzaXplb2YobWNvbnRleHQuZ3BfcmVncyk7CisgI2Vsc2UK KyAgIGlmIChncF9yZWdzKQorICAgICAqZ3BfcmVncyA9ICZyZWdzOworQEAgLTI5NCw2ICszMzQs MTEgQEAgdm9pZCBUaHJlYWRJbmZvOjpHZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKHZvaWQqKiBm cF9yZWdzLCBzaXplX3QqIHNpemUpIHsKKyAgICAgKmZwX3JlZ3MgPSAmbWNvbnRleHQuZnByZWdz OworICAgaWYgKHNpemUpCisgICAgICpzaXplID0gc2l6ZW9mKG1jb250ZXh0LmZwcmVncyk7Cisr I2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgaWYgKGZwX3JlZ3MpCisrICAgICpmcF9y ZWdzID0gJm1jb250ZXh0LmZwX3JlZ3M7CisrICBpZiAoc2l6ZSkKKysgICAgKnNpemUgPSBzaXpl b2YobWNvbnRleHQuZnBfcmVncyk7CisgI2Vsc2UKKyAgIGlmIChmcF9yZWdzKQorICAgICAqZnBf cmVncyA9ICZmcHJlZ3M7CitAQCAtMzAyLDQgKzM0NywxMyBAQCB2b2lkIFRocmVhZEluZm86Okdl dEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNpemVfdCogc2l6ZSkgewor ICNlbmRpZgorIH0KKyAKKysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorK3ZvaWQgVGhyZWFk SW5mbzo6R2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVfdCogc2l6ZSkgewor KyAgICBpZiAodl9yZWdzKQorKyAgICAgICAgKnZfcmVncyA9ICZ2cmVnczsKKysgICAgaWYgKHNp emUpCisrICAgICAgICAqc2l6ZSA9IHNpemVvZih2cmVncyk7CisrfQorKyNlbmRpZgorKworIH0g IC8vIG5hbWVzcGFjZSBnb29nbGVfYnJlYWtwYWQKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFk X2luZm8uaCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1 bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCitpbmRleCBmYjIxNmZhNmQuLjU5M2FhYzgy MiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L2R1bXBfd3JpdGVyX2NvbW1vbi90aHJlYWRfaW5mby5oCisrKysgdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9jb21tb24vdGhyZWFk X2luZm8uaAorQEAgLTY4LDYgKzY4LDEwIEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKKyAgIC8vIFVz ZSB0aGUgc3RydWN0dXJlcyBkZWZpbmVkIGluIDxzeXMvdXNlci5oPgorICAgc3RydWN0IHVzZXJf cmVnc19zdHJ1Y3QgcmVnczsKKyAgIHN0cnVjdCB1c2VyX2Zwc2ltZF9zdHJ1Y3QgZnByZWdzOwor KyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFVzZSB0aGUgc3RydWN0dXJlcyBk ZWZpbmVkIGluIDxzeXMvdWNvbnRleHQuaD4uCisrICBtY29udGV4dF90IG1jb250ZXh0OworKyAg dnJyZWdzZXRfdCB2cmVnczsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgLy8gVXNlIHRo ZSBzdHJ1Y3R1cmUgZGVmaW5lZCBpbiA8c3lzL3Vjb250ZXh0Lmg+LgorICAgbWNvbnRleHRfdCBt Y29udGV4dDsKK0BAIC04NCw2ICs4OCwxMSBAQCBzdHJ1Y3QgVGhyZWFkSW5mbyB7CisgCisgICAv LyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBzaXplIG9mIGZsb2F0IHBvaW50IHJlZ2lzdGVyIGFy ZWEuCisgICB2b2lkIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnModm9pZCoqIGZwX3JlZ3MsIHNp emVfdCogc2l6ZSk7CisrCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFJldHVy bnMgdGhlIHBvaW50ZXIgYW5kIHNpemUgb2YgdGhlIHZlY3RvciByZWdpc3RlciBhcmVhLiAoUFBD NjQgb25seSkKKysgIHZvaWQgR2V0VmVjdG9yUmVnaXN0ZXJzKHZvaWQqKiB2X3JlZ3MsIHNpemVf dCogc2l6ZSk7CisrI2VuZGlmCisgfTsKKyAKKyB9ICAvLyBuYW1lc3BhY2UgZ29vZ2xlX2JyZWFr cGFkCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYyB0aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29u dGV4dF9yZWFkZXIuY2MKK2luZGV4IDZlZWMxYmUyNC4uNzQxOTgzYTFhIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJf Y29tbW9uL3Vjb250ZXh0X3JlYWRlci5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvZHVtcF93cml0ZXJfY29tbW9uL3Vjb250ZXh0X3JlYWRlci5j YworQEAgLTI1NCw2ICsyNTQsNDggQEAgdm9pZCBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRl eHQoUmF3Q29udGV4dENQVSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1YykgeworICAgb3V0LT5m bG9hdF9zYXZlLmZpciA9IHVjLT51Y19tY29udGV4dC5mcGNfZWlyOyAgLy8gVW51c2VkLgorICNl bmRpZgorIH0KKysKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrCisrdWludHB0cl90 IFVDb250ZXh0UmVhZGVyOjpHZXRTdGFja1BvaW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsK KysgICAgcmV0dXJuIHVjLT51Y19tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVH X1NQXTsKKyt9CisrCisrdWludHB0cl90IFVDb250ZXh0UmVhZGVyOjpHZXRJbnN0cnVjdGlvblBv aW50ZXIoY29uc3QgdWNvbnRleHRfdCogdWMpIHsKKysgICAgcmV0dXJuIHVjLT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX05JUF07CisrfQorKworK3ZvaWQgVUNvbnRleHRSZWFkZXI6OkZpbGxDUFVD b250ZXh0KFJhd0NvbnRleHRDUFUqIG91dCwgY29uc3QgdWNvbnRleHRfdCogdWMsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdnJyZWdzZXRfdCogdnJlZ3MpIHsK KysgICAgb3V0LT5jb250ZXh0X2ZsYWdzID0gTURfQ09OVEVYVF9QUEM2NF9GVUxMOworKworKyAg ICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRfUFBDNjRfR1BSX0NPVU5UOyBpKyspCisr ICAgICAgICBvdXQtPmdwcltpXSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW2ldOworKworKyAg ICBvdXQtPmxyID0gdWMtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXTsgICAgCisrICAgIG91 dC0+c3JyMCA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF07CisrICAgIG91dC0+c3Jy MSA9IHVjLT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl07CisrICAgIG91dC0+Y3IgPSB1Yy0+ dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9DQ1JdOworKyAgICBvdXQtPnhlciA9IHVjLT51Y19tY29u dGV4dC5ncF9yZWdzW1BUX1hFUl07CisrICAgIG91dC0+Y3RyID0gdWMtPnVjX21jb250ZXh0Lmdw X3JlZ3NbUFRfQ1RSXTsKKysgICAgCisrICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTURfRkxPQVRJ TkdTQVZFQVJFQV9QUENfRlBSX0NPVU5UOyBpKyspCisrICAgICAgICBvdXQtPmZsb2F0X3NhdmUu ZnByZWdzW2ldID0gdWMtPnVjX21jb250ZXh0LmZwX3JlZ3NbaV07CisrCisrICAgIG91dC0+Zmxv YXRfc2F2ZS5mcHNjciA9IHVjLT51Y19tY29udGV4dC5mcF9yZWdzW05GUFJFRy0xXTsKKysKKysg ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNRF9WRUNUT1JTQVZFQVJFQV9QUENfVlJfQ09VTlQ7IGkr KykKKysgICAgICAgIG91dC0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXSA9CisrICAgICAgICAgICAg eygoKHVpbnQ2NF90KXZyZWdzLT52cnJlZ3NbaV1bMF0pIDw8IDMyKSAKKysgICAgICAgICAgICAg ICAgICAgICAgICAgfCB2cmVncy0+dnJyZWdzW2ldWzFdLCAKKysgICAgICAgICAgICAgKCgodWlu dDY0X3QpdnJlZ3MtPnZycmVnc1tpXVsyXSkgPDwgMzIpCisrICAgICAgICAgICAgICAgICAgICAg ICAgIHwgdnJlZ3MtPnZycmVnc1tpXVszXX07CisrCisrICAgIG91dC0+dnJzYXZlID0gdnJlZ3Mt PnZyc2F2ZTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IgPSB7MCwgdnJlZ3MtPnZz Y3IudnNjcl93b3JkfTsKKysgICAgb3V0LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZydmFsaWQgPSAweEZG RkZGRkZGOyAKKyt9CisrCisgI2VuZGlmCisgCisgfSAgLy8gbmFtZXNwYWNlIGdvb2dsZV9icmVh a3BhZAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaCB0aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29u dGV4dF9yZWFkZXIuaAoraW5kZXggN2Q0MTAwODgxLi5jMTIyYWM5MmUgMTAwNjQ0CistLS0gdGhp cmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9kdW1wX3dyaXRlcl9j b21tb24vdWNvbnRleHRfcmVhZGVyLmgKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3Bh ZC9zcmMvY2xpZW50L2xpbnV4L2R1bXBfd3JpdGVyX2NvbW1vbi91Y29udGV4dF9yZWFkZXIuaAor QEAgLTU1LDYgKzU1LDkgQEAgc3RydWN0IFVDb250ZXh0UmVhZGVyIHsKKyAjZWxpZiBkZWZpbmVk KF9fYWFyY2g2NF9fKQorICAgc3RhdGljIHZvaWQgRmlsbENQVUNvbnRleHQoUmF3Q29udGV4dENQ VSogb3V0LCBjb25zdCB1Y29udGV4dF90KiB1YywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IHN0cnVjdCBmcHNpbWRfY29udGV4dCogZnByZWdzKTsKKysjZWxpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICBzdGF0aWMgdm9pZCBGaWxsQ1BVQ29udGV4dChSYXdDb250ZXh0 Q1BVICpvdXQsIGNvbnN0IHVjb250ZXh0X3QgKnVjLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgdnJyZWdzZXRfdCogdnJlZ3MpOworICNlbHNlCisgICBzdGF0aWMgdm9pZCBG aWxsQ1BVQ29udGV4dChSYXdDb250ZXh0Q1BVKiBvdXQsIGNvbnN0IHVjb250ZXh0X3QqIHVjKTsK KyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjIHRoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5j YworaW5kZXggYTZjYjVmOTg0Li5hZTE2YjY0ZDkgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJl YWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVy LmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9o YW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyLmNjCitAQCAtNDYxLDkgKzQ2MSwxNiBAQCBib29sIEV4 Y2VwdGlvbkhhbmRsZXI6OkhhbmRsZVNpZ25hbChpbnQgLypzaWcqLywgc2lnaW5mb190KiBpbmZv LCB2b2lkKiB1YykgeworICAgICBtZW1jcHkoJmdfY3Jhc2hfY29udGV4dF8uZmxvYXRfc3RhdGUs IGZwX3B0ciwKKyAgICAgICAgICAgIHNpemVvZihnX2NyYXNoX2NvbnRleHRfLmZsb2F0X3N0YXRl KSk7CisgICB9CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgLy8gT24gUFBDNjQs IHdlIG11c3QgY29weSBWUiBzdGF0ZQorKyAgdWNvbnRleHRfdCogdWNfcHRyID0gKHVjb250ZXh0 X3QqKXVjOworKyAgaWYgKHVjX3B0ci0+dWNfbWNvbnRleHQudl9yZWdzKSB7CisrICAgIG1lbWNw eSgmZ19jcmFzaF9jb250ZXh0Xy52ZWN0b3Jfc3RhdGUsIHVjX3B0ci0+dWNfbWNvbnRleHQudl9y ZWdzLAorKyAgICAgICAgICAgc2l6ZW9mKGdfY3Jhc2hfY29udGV4dF8udmVjdG9yX3N0YXRlKSk7 CisrICB9CisgI2VsaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNf XykKKyAgIC8vIEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIHVzZXIgQUJJIG9uIEFSTSBMaW51eC4K Ky0gIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5IHBhcnQgb2Yg dWNvbnRleHRfdAorKyAgLy8gSW4gY2FzZSBvZiBNSVBTLCBMaW51eCBGUCBzdGF0ZSBpcyBhbHJl YWR5IHBhcnQgb2YgdWNvbnRleHRfdAorICAgLy8gYW5kICdmbG9hdF9zdGF0ZScgaXMgbm90IGEg bWVtYmVyIG9mIENyYXNoQ29udGV4dC4KKyAgIHVjb250ZXh0X3QqIHVjX3B0ciA9ICh1Y29udGV4 dF90Kil1YzsKKyAgIGlmICh1Y19wdHItPnVjX21jb250ZXh0LmZwcmVncykgeworQEAgLTcwOCwx MSArNzE1LDE5IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6V3JpdGVNaW5pZHVtcCgpIHsKKyAg IH0KKyAjZW5kaWYKKyAKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChf X2FhcmNoNjRfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisrI2lmICFkZWZpbmVkKF9fQVJNX0VB QklfXykgJiYgIWRlZmluZWQoX19hYXJjaDY0X18pICYmICFkZWZpbmVkKF9fbWlwc19fKSBcCisr ICAgICYmICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisgICAvLyBGUFUgc3RhdGUgaXMgbm90IHBh cnQgb2YgQVJNIEVBQkkgdWNvbnRleHRfdC4KKyAgIG1lbWNweSgmY29udGV4dC5mbG9hdF9zdGF0 ZSwgY29udGV4dC5jb250ZXh0LnVjX21jb250ZXh0LmZwcmVncywKKyAgICAgICAgICBzaXplb2Yo Y29udGV4dC5mbG9hdF9zdGF0ZSkpOworICNlbmRpZgorKworKyNpZiBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisrICAvLyBWZWN0b3IgcmVnaXN0ZXJzIG11c3QgYmUgY29waWVkIG9uIFBQQzY0Cisr ICBtZW1jcHkoJmNvbnRleHQudmVjdG9yX3N0YXRlLCBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRl eHQudl9yZWdzLAorKyAgICAgICAgIHNpemVvZihjb250ZXh0LnZlY3Rvcl9zdGF0ZSkpOworKyNl bmRpZgorKworICAgY29udGV4dC50aWQgPSBzeXNfZ2V0dGlkKCk7CisgCisgICAvLyBBZGQgYW4g ZXhjZXB0aW9uIHN0cmVhbSB0byB0aGUgbWluaWR1bXAgZm9yIGJldHRlciByZXBvcnRpbmcuCitA QCAtNzMzLDYgKzc0OCw5IEBAIGJvb2wgRXhjZXB0aW9uSGFuZGxlcjo6V3JpdGVNaW5pZHVtcCgp IHsKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICAgY29udGV4dC5zaWdpbmZvLnNpX2FkZHIg PQorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQuY29udGV4dC51Y19tY29u dGV4dC5wYyk7CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgY29udGV4dC5zaWdp bmZvLnNpX2FkZHIgPQorKyAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQuY29u dGV4dC51Y19tY29udGV4dC5ncF9yZWdzW1BUX05JUF0pOworICNlbHNlCisgI2Vycm9yICJUaGlz IGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3VyIHBsYXRmb3JtIHlldC4iCisgI2VuZGlm CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFuZGxlci5oCitpbmRleCBm ODA4NDNlYTcuLjI2MGRkMTBmNyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L2hhbmRsZXIvZXhjZXB0aW9uX2hhbmRsZXIuaAorKysrIHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNl cHRpb25faGFuZGxlci5oCitAQCAtMTkyLDcgKzE5MiwxMSBAQCBjbGFzcyBFeGNlcHRpb25IYW5k bGVyIHsKKyAgICAgc2lnaW5mb190IHNpZ2luZm87CisgICAgIHBpZF90IHRpZDsgIC8vIHRoZSBj cmFzaGluZyB0aHJlYWQuCisgICAgIHVjb250ZXh0X3QgY29udGV4dDsKKy0jaWYgIWRlZmluZWQo X19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorKyAgICAvLyBQUEM2NCdzIEZQIHN0YXRlIGlzIGEgcGFydCBvZiB1Y29udGV4dF90 IGxpa2UgTUlQUyBidXQgdGhlIHZlY3RvcgorKyAgICAvLyBzdGF0ZSBpcyBub3QsIHNvIGEgc3Ry dWN0IGlzIG5lZWRlZC4KKysgICAgdnN0YXRlX3QgdmVjdG9yX3N0YXRlOworKyNlbGlmICFkZWZp bmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgIC8vICNpZmRlZiB0 aGlzIG91dCBiZWNhdXNlIEZQIHN0YXRlIGlzIG5vdCBwYXJ0IG9mIHVzZXIgQUJJIGZvciBMaW51 eCBBUk0uCisgICAgIC8vIEluIGNhc2Ugb2YgTUlQUyBMaW51eCBGUCBzdGF0ZSBpcyBhbHJlYWR5 IHBhcnQgb2YgdWNvbnRleHRfdCBzbworICAgICAvLyAnZmxvYXRfc3RhdGUnIGlzIG5vdCByZXF1 aXJlZC4KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0LmNjIHRoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvaGFuZGxlci9leGNlcHRpb25faGFu ZGxlcl91bml0dGVzdC5jYworaW5kZXggMzVkY2JmZDRkLi43OTM0MzcwZmQgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4 Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9oYW5kbGVyL2V4Y2VwdGlvbl9oYW5kbGVyX3VuaXR0ZXN0 LmNjCitAQCAtMzA3LDcgKzMwNyw3IEBAIFRFU1QoRXhjZXB0aW9uSGFuZGxlclRlc3QsIFBhcmFs bGVsQ2hpbGRDcmFzaGVzRG9udEhhbmcpIHsKKyAgIH0KKyAKKyAgIC8vIFdhaXQgYSB3aGlsZSB1 bnRpbCB0aGUgY2hpbGQgc2hvdWxkIGhhdmUgY3Jhc2hlZC4KKy0gIHVzbGVlcCgxMDAwMDAwKTsK KysgIHVzbGVlcCgyMDAwMDAwKTsKKyAgIC8vIEtpbGwgdGhlIGNoaWxkIGlmIGl0IGlzIHN0aWxs IHJ1bm5pbmcuCisgICBraWxsKGNoaWxkLCBTSUdLSUxMKTsKKyAKK0BAIC01NTksNiArNTU5LDgg QEAgY29uc3QgdW5zaWduZWQgY2hhciBrSWxsZWdhbEluc3RydWN0aW9uW10gPSB7CisgI2lmIGRl ZmluZWQoX19taXBzX18pCisgICAvLyBtZmMyIHplcm8sSW1wbCAtIHVzdWFsbHkgaWxsZWdhbCBp biB1c2Vyc3BhY2UuCisgICAweDQ4LCAweDAwLCAweDAwLCAweDQ4CisrI2VsaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKyAgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMSAvLyBDcmFzaGVzIG9uIGEg dGVzdGVkIFBPV0VSOSBjcHUKKyAjZWxzZQorICAgLy8gVGhpcyBjcmFzaGVzIHdpdGggU0lHSUxM IG9uIHg4Ni94ODYtNjQvYXJtLgorICAgMHhmZiwgMHhmZiwgMHhmZiwgMHhmZgorQEAgLTc1NCwx MCArNzU2LDEwIEBAIFRFU1QoRXhjZXB0aW9uSGFuZGxlclRlc3QsIEluc3RydWN0aW9uUG9pbnRl ck1lbW9yeU1heEJvdW5kKSB7CisgCisgICAvLyBUaGVzZSBhcmUgZGVmaW5lZCBoZXJlIHNvIHRo ZSBwYXJlbnQgY2FuIHVzZSB0aGVtIHRvIGNoZWNrIHRoZQorICAgLy8gZGF0YSBmcm9tIHRoZSBt aW5pZHVtcCBhZnRlcndhcmRzLgorLSAgLy8gVXNlIDRrIGhlcmUgYmVjYXVzZSB0aGUgT1Mgd2ls bCBoYW5kIG91dCBhIHNpbmdsZSBwYWdlIGV2ZW4KKysgIC8vIFVzZSB0aGUgcGFnZSBzaXplIGhl cmUgYmVjYXVzZSB0aGUgT1Mgd2lsbCBoYW5kIG91dCBhIHNpbmdsZSBwYWdlIGV2ZW4KKyAgIC8v IGlmIGEgc21hbGxlciBzaXplIGlzIHJlcXVlc3RlZCwgYW5kIHRoaXMgdGVzdCB3YW50cyB0bwor ICAgLy8gdGVzdCB0aGUgdXBwZXIgYm91bmQgb2YgdGhlIG1lbW9yeSByYW5nZS4KKy0gIGNvbnN0 IHVpbnQzMl90IGtNZW1vcnlTaXplID0gNDA5NjsgIC8vIGJ5dGVzCisrICBjb25zdCB1aW50MzJf dCBrTWVtb3J5U2l6ZSA9IGdldHBhZ2VzaXplKCk7ICAvLyBieXRlcworICAgY29uc3QgaW50IGtP ZmZzZXQgPSBrTWVtb3J5U2l6ZSAtIHNpemVvZihrSWxsZWdhbEluc3RydWN0aW9uKTsKKyAKKyAg IGNvbnN0IHBpZF90IGNoaWxkID0gZm9yaygpOworZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1w X3dyaXRlci5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4 L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlci5jYworaW5kZXggZmEzYzE3MTNhLi42 Y2U3MDllMmYgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taWNyb2R1bXBfd3JpdGVyL21pY3JvZHVtcF93cml0ZXIuY2MKKysrKyB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0 ZXIvbWljcm9kdW1wX3dyaXRlci5jYworQEAgLTEzOCw3ICsxMzgsOSBAQCBjbGFzcyBNaWNyb2R1 bXBXcml0ZXIgeworICAgICAgICAgICAgICAgICAgIGNvbnN0IE1pY3JvZHVtcEV4dHJhSW5mbyYg bWljcm9kdW1wX2V4dHJhX2luZm8sCisgICAgICAgICAgICAgICAgICAgTGludXhEdW1wZXIqIGR1 bXBlcikKKyAgICAgICA6IHVjb250ZXh0Xyhjb250ZXh0ID8gJmNvbnRleHQtPmNvbnRleHQgOiBO VUxMKSwKKy0jaWYgIWRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykK KysjaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAgICAgICAgdmVjdG9yX3N0YXRlXyhjb250 ZXh0ID8gJmNvbnRleHQtPnZlY3Rvcl9zdGF0ZSA6IE5VTEwpLAorKyNlbGlmICFkZWZpbmVkKF9f QVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgICAgICBmbG9hdF9zdGF0ZV8o Y29udGV4dCA/ICZjb250ZXh0LT5mbG9hdF9zdGF0ZSA6IE5VTEwpLAorICNlbmRpZgorICAgICAg ICAgZHVtcGVyXyhkdW1wZXIpLAorQEAgLTMzNyw2ICszMzksOCBAQCBjbGFzcyBNaWNyb2R1bXBX cml0ZXIgeworICMgZWxzZQorICMgIGVycm9yICJUaGlzIG1pcHMgQUJJIGlzIGN1cnJlbnRseSBu b3Qgc3VwcG9ydGVkIChuMzIpIgorICNlbmRpZgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRf XykKKysgICAgY29uc3QgY2hhciBrQXJjaFtdID0gInBwYzY0IjsKKyAjZWxzZQorICNlcnJvciAi VGhpcyBjb2RlIGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQiCisgI2Vu ZGlmCitAQCAtNDA5LDcgKzQxMyw5IEBAIGNsYXNzIE1pY3JvZHVtcFdyaXRlciB7CisgICB2b2lk IER1bXBDUFVTdGF0ZSgpIHsKKyAgICAgUmF3Q29udGV4dENQVSBjcHU7CisgICAgIG15X21lbXNl dCgmY3B1LCAwLCBzaXplb2YoUmF3Q29udGV4dENQVSkpOworLSNpZiAhZGVmaW5lZChfX0FSTV9F QUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29udGV4dF8sIHZl Y3Rvcl9zdGF0ZV8pOworKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQo X19taXBzX18pCisgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dCgmY3B1LCB1Y29u dGV4dF8sIGZsb2F0X3N0YXRlXyk7CisgI2Vsc2UKKyAgICAgVUNvbnRleHRSZWFkZXI6OkZpbGxD UFVDb250ZXh0KCZjcHUsIHVjb250ZXh0Xyk7CitAQCAtNjA1LDcgKzYxMSw5IEBAIGNsYXNzIE1p Y3JvZHVtcFdyaXRlciB7CisgICB2b2lkKiBBbGxvYyh1bnNpZ25lZCBieXRlcykgeyByZXR1cm4g ZHVtcGVyXy0+YWxsb2NhdG9yKCktPkFsbG9jKGJ5dGVzKTsgfQorIAorICAgY29uc3QgdWNvbnRl eHRfdCogY29uc3QgdWNvbnRleHRfOworLSNpZiAhZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFk ZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBjb25zdCBn b29nbGVfYnJlYWtwYWQ6OnZzdGF0ZV90KiBjb25zdCB2ZWN0b3Jfc3RhdGVfOworKyNlbGlmICFk ZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICBjb25zdCBnb29n bGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3QgZmxvYXRfc3RhdGVfOworICNlbmRpZgorICAg TGludXhEdW1wZXIqIGR1bXBlcl87CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVy X3VuaXR0ZXN0LmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGlu dXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCitpbmRleCA2 MzM5YWMwY2QuLjI5MWFmMTA2YiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVh a3BhZC9zcmMvY2xpZW50L2xpbnV4L21pY3JvZHVtcF93cml0ZXIvbWljcm9kdW1wX3dyaXRlcl91 bml0dGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQv bGludXgvbWljcm9kdW1wX3dyaXRlci9taWNyb2R1bXBfd3JpdGVyX3VuaXR0ZXN0LmNjCitAQCAt Mjc5LDEwICsyNzksMTkgQEAgVEVTVChNaWNyb2R1bXBXcml0ZXJUZXN0LCBCYXNpY1dpdGhNYXBw aW5ncykgeworICAgQ3Jhc2hBbmRHZXRNaWNyb2R1bXAobWFwcGluZ3MsIE1pY3JvZHVtcEV4dHJh SW5mbygpLCAmYnVmKTsKKyAgIEFTU0VSVF9UUlVFKENvbnRhaW5zTWljcm9kdW1wKGJ1ZikpOwor IAorKyAgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7CisgI2lmZGVmIF9fTFA2NF9fCist ICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCistICAgICAgICAgICAgYnVmLmZpbmQoIk0g MDAwMDAwMDAwMDAwMTAwMCAwMDAwMDAwMDAwMDAwMDJBIDAwMDAwMDAwMDAwMDEwMDAgIgorLSAg ICAgICAgICAgICAgICAgICAgICIzMzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGli Zm9vLnNvIikpOworKyAgLy8gVGhpcyB0ZXN0IGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgZm9s bG93aW5nIHBhZ2Ugc2l6ZXMKKysgIEFTU0VSVF9UUlVFKChwYWdlX3NpemUgPT0gNDA5NikgfHwg KHBhZ2Vfc2l6ZSA9PSA2NTUzNikpOworKyAgaWYgKHBhZ2Vfc2l6ZSA9PSA0MDk2KSB7IAorKyAg ICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisrICAgICAgICAgICAgICBidWYuZmluZCgi TSAwMDAwMDAwMDAwMDAxMDAwIDAwMDAwMDAwMDAwMDAwMkEgMDAwMDAwMDAwMDAwMTAwMCAiCisr ICAgICAgICAgICAgICAgICAgICAgICAiMzMyMjExMDA1NTQ0Nzc2Njg4OTlBQUJCQ0NEREVFRkYw IGxpYmZvby5zbyIpKTsKKysgIH0gZWxzZSB7CisrICAgIEFTU0VSVF9ORShzdGQ6OnN0cmluZzo6 bnBvcywKKysgICAgICAgICAgICAgIGJ1Zi5maW5kKCJNIDAwMDAwMDAwMDAwMTAwMDAgMDAwMDAw MDAwMDAwMDAyQSAwMDAwMDAwMDAwMDEwMDAwICIKKysgICAgICAgICAgICAgICAgICAgICAgICIz MzIyMTEwMDU1NDQ3NzY2ODg5OUFBQkJDQ0RERUVGRjAgbGliZm9vLnNvIikpOworKyAgfQorICNl bHNlCisgICBBU1NFUlRfTkUoc3RkOjpzdHJpbmc6Om5wb3MsCisgICAgICAgICAgICAgYnVmLmZp bmQoIk0gMDAwMDEwMDAgMDAwMDAwMkEgMDAwMDEwMDAgIgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51 eF9jb3JlX2R1bXBlci5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYworaW5kZXggNDE1MDY4 OTgzLi5iOTNlNGFmY2YgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfY29yZV9kdW1wZXIuY2MKKysr KyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1w X3dyaXRlci9saW51eF9jb3JlX2R1bXBlci5jYworQEAgLTExMiw2ICsxMTIsOSBAQCBib29sIExp bnV4Q29yZUR1bXBlcjo6R2V0VGhyZWFkSW5mb0J5SW5kZXgoc2l6ZV90IGluZGV4LCBUaHJlYWRJ bmZvKiBpbmZvKSB7CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAgIHN0YWNrX3BvaW50ZXIg PQorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGluZm8tPm1jb250ZXh0LmdyZWdz W01EX0NPTlRFWFRfTUlQU19SRUdfU1BdKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18p CisrICBzdGFja19wb2ludGVyID0KKysgICAgICByZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihp bmZvLT5tY29udGV4dC5ncF9yZWdzW01EX0NPTlRFWFRfUFBDNjRfUkVHX1NQXSk7CisgI2Vsc2UK KyAjZXJyb3IgIlRoaXMgY29kZSBoYXNuJ3QgYmVlbiBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5 ZXQuIgorICNlbmRpZgorQEAgLTE5Nyw3ICsyMDAsMTAgQEAgYm9vbCBMaW51eENvcmVEdW1wZXI6 OkVudW1lcmF0ZVRocmVhZHMoKSB7CisgICAgICAgICBtZW1zZXQoJmluZm8sIDAsIHNpemVvZihU aHJlYWRJbmZvKSk7CisgICAgICAgICBpbmZvLnRnaWQgPSBzdGF0dXMtPnByX3BncnA7CisgICAg ICAgICBpbmZvLnBwaWQgPSBzdGF0dXMtPnByX3BwaWQ7CistI2lmIGRlZmluZWQoX19taXBzX18p CisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgICAgICAgIGZvciAoaW50IGkgPSAwOyBp IDwgMzE7IGkrKykKKysgICAgICAgICAgICBpbmZvLm1jb250ZXh0LmdwX3JlZ3NbaV0gPSBzdGF0 dXMtPnByX3JlZ1tpXTsKKysjZWxpZiBkZWZpbmVkKF9fbWlwc19fKQorICNpZiBkZWZpbmVkKF9f QU5EUk9JRF9fKQorICAgICAgICAgZm9yIChpbnQgaSA9IEVGX1IwOyBpIDw9IEVGX1IzMTsgaSsr KQorICAgICAgICAgICBpbmZvLm1jb250ZXh0LmdyZWdzW2kgLSBFRl9SMF0gPSBzdGF0dXMtPnBy X3JlZ1tpXTsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2Ns aWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjIHRoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1 bXBlci5jYworaW5kZXggN2ZkNjUzMmFkLi4xOTljYmZmZmQgMTAwNjQ0CistLS0gdGhpcmRfcGFy dHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGlu dXhfZHVtcGVyLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVu dC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyLmNjCitAQCAtNzY1LDcgKzc2NSw5 IEBAIGJvb2wgTGludXhEdW1wZXI6OkdldFN0YWNrSW5mbyhjb25zdCB2b2lkKiogc3RhY2ssIHNp emVfdCogc3RhY2tfbGVuLAorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KGludF9z dGFja19wb2ludGVyICYgfihwYWdlX3NpemUgLSAxKSk7CisgCisgICAvLyBUaGUgbnVtYmVyIG9m IGJ5dGVzIG9mIHN0YWNrIHdoaWNoIHdlIHRyeSB0byBjYXB0dXJlLgorLSAgc3RhdGljIGNvbnN0 IHB0cmRpZmZfdCBrU3RhY2tUb0NhcHR1cmUgPSAzMiAqIDEwMjQ7CisrICAvLyBUaGlzIG5vdyBk ZXBlbmRzIG9uIHBhZ2Vfc2l6ZSB0byBhdm9pZCBtaXNzaW5nIGRhdGEKKysgIC8vIG9uIHN5c3Rl bXMgd2l0aCBsYXJnZXIgcGFnZSBzaXplcy4KKysgIHN0YXRpYyBjb25zdCBwdHJkaWZmX3Qga1N0 YWNrVG9DYXB0dXJlID0gOCAqIHBhZ2Vfc2l6ZTsKKyAKKyAgIGNvbnN0IE1hcHBpbmdJbmZvKiBt YXBwaW5nID0gRmluZE1hcHBpbmcoc3RhY2tfcG9pbnRlcik7CisgICBpZiAoIW1hcHBpbmcpCitk aWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv bWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCitpbmRl eCA3YmVlMTYwZjEuLjA3YmIyYjgxYSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXIuaAor KysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL2xpbnV4X2R1bXBlci5oCitAQCAtNjMsNyArNjMsOCBAQCBuYW1lc3BhY2UgZ29v Z2xlX2JyZWFrcGFkIHsKKyAgKGRlZmluZWQoX19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJ TzMyKQorIHR5cGVkZWYgRWxmMzJfYXV4dl90IGVsZl9hdXhfZW50cnk7CisgI2VsaWYgZGVmaW5l ZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykgfHwgXAorLSAgICAgKGRlZmluZWQo X19taXBzX18pICYmIF9NSVBTX1NJTSAhPSBfQUJJTzMyKQorKyAgICAgKGRlZmluZWQoX19taXBz X18pICYmIF9NSVBTX1NJTSAhPSBfQUJJTzMyKSB8fCBcCisrICAgICBkZWZpbmVkKF9fcG93ZXJw YzY0X18pCisgdHlwZWRlZiBFbGY2NF9hdXh2X3QgZWxmX2F1eF9lbnRyeTsKKyAjZW5kaWYKKyAK K2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYyB0aGlyZF9w YXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9s aW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVyLmNjCitpbmRleCAzMzFmNGJiMzQuLjNmNzIyOTQ3 ZiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9kdW1wZXJfdW5pdHRlc3RfaGVscGVyLmNjCisrKysg dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93 cml0ZXIvbGludXhfZHVtcGVyX3VuaXR0ZXN0X2hlbHBlci5jYworQEAgLTUxLDYgKzUxLDggQEAK KyAjZGVmaW5lIFRJRF9QVFJfUkVHSVNURVIgInJjeCIKKyAjZWxpZiBkZWZpbmVkKF9fbWlwc19f KQorICNkZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAiJDEiCisrI2VsaWYgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorKyNkZWZpbmUgVElEX1BUUl9SRUdJU1RFUiAicjgiCisgI2Vsc2UKKyAjZXJyb3Ig VGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0Zm9ybS4KKyAjZW5kaWYK K2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51 eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5jYyB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJh Y2VfZHVtcGVyLmNjCitpbmRleCBlM2RkYjgxYTYuLmZhMjg1NzVlZiAxMDA2NDQKKy0tLSB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9wdHJhY2VfZHVtcGVyLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtw YWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbGludXhfcHRyYWNlX2R1bXBlci5j YworQEAgLTE0OSwxOSArMTQ5LDI3IEBAIGJvb2wgTGludXhQdHJhY2VEdW1wZXI6OkNvcHlGcm9t UHJvY2Vzcyh2b2lkKiBkZXN0LCBwaWRfdCBjaGlsZCwKKyAgIHJldHVybiB0cnVlOworIH0KKyAK Ky1ib29sIExpbnV4UHRyYWNlRHVtcGVyOjpSZWFkUmVnaXN0ZXJTZXQoVGhyZWFkSW5mbyogaW5m bywgcGlkX3QgdGlkKQorLXsKKytib29sIExpbnV4UHRyYWNlRHVtcGVyOjpSZWFkUmVnaXN0ZXJT ZXQoVGhyZWFkSW5mbyogaW5mbywgcGlkX3QgdGlkKSB7CisgI2lmZGVmIFBUUkFDRV9HRVRSRUdT RVQKKyAgIHN0cnVjdCBpb3ZlYyBpbzsKKyAgIGluZm8tPkdldEdlbmVyYWxQdXJwb3NlUmVnaXN0 ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4pOworLSAgaWYgKHN5c19wdHJhY2UoUFRSQUNF X0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfUFJTVEFUVVMsICh2b2lkKikmaW8pID09IC0xKSB7 CisrICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BSU1RBVFVT LCAodm9pZCopJmlvKSA9PSAtMSkgeworICAgICByZXR1cm4gZmFsc2U7CisgICB9CisgCisgICBp bmZvLT5HZXRGbG9hdGluZ1BvaW50UmVnaXN0ZXJzKCZpby5pb3ZfYmFzZSwgJmlvLmlvdl9sZW4p OworLSAgaWYgKHN5c19wdHJhY2UoUFRSQUNFX0dFVFJFR1NFVCwgdGlkLCAodm9pZCopTlRfRlBS RUdTRVQsICh2b2lkKikmaW8pID09IC0xKSB7CisrICBpZiAocHRyYWNlKFBUUkFDRV9HRVRSRUdT RVQsIHRpZCwgKHZvaWQqKU5UX0ZQUkVHU0VULCAodm9pZCopJmlvKSA9PSAtMSkgeworICAgICBy ZXR1cm4gZmFsc2U7CisgICB9CisrCisrI2lmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8v IEdyYWIgdGhlIHZlY3RvciByZWdpc3RlcnMgb24gUFBDNjQgdG9vCisrICBpbmZvLT5HZXRWZWN0 b3JSZWdpc3RlcnMoJmlvLmlvdl9iYXNlLCAmaW8uaW92X2xlbik7CisrICBpZiAocHRyYWNlKFBU UkFDRV9HRVRSRUdTRVQsIHRpZCwgKHZvaWQqKU5UX1BQQ19WTVgsICh2b2lkKikmaW8pID09IC0x KSB7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysjZW5kaWYgLy8gZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKQorKworICAgcmV0dXJuIHRydWU7CisgI2Vsc2UKKyAgIHJldHVybiBmYWxzZTsKK0BA IC0yOTgsNiArMzA2LDkgQEAgYm9vbCBMaW51eFB0cmFjZUR1bXBlcjo6R2V0VGhyZWFkSW5mb0J5 SW5kZXgoc2l6ZV90IGluZGV4LCBUaHJlYWRJbmZvKiBpbmZvKSB7CisgI2VsaWYgZGVmaW5lZChf X21pcHNfXykKKyAgIHN0YWNrX3BvaW50ZXIgPQorICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWlu dDhfdCo+KGluZm8tPm1jb250ZXh0LmdyZWdzW01EX0NPTlRFWFRfTUlQU19SRUdfU1BdKTsKKysj ZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICBzdGFja19wb2ludGVyID0KKysgICAgICBy ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihpbmZvLT5tY29udGV4dC5ncF9yZWdzW01EX0NPTlRF WFRfUFBDNjRfUkVHX1NQXSk7CisgI2Vsc2UKKyAjZXJyb3IgIlRoaXMgY29kZSBoYXNuJ3QgYmVl biBwb3J0ZWQgdG8geW91ciBwbGF0Zm9ybSB5ZXQuIgorICNlbmRpZgorZGlmZiAtLWdpdCB0aGly ZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRl ci9saW51eF9wdHJhY2VfZHVtcGVyX3VuaXR0ZXN0LmNjIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2Jy ZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL2xpbnV4X3B0cmFjZV9kdW1w ZXJfdW5pdHRlc3QuY2MKK2luZGV4IGRhNzFlMTVkYy4uMTJiZmIzMTdhIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3Jp dGVyL2xpbnV4X3B0cmFjZV9kdW1wZXJfdW5pdHRlc3QuY2MKKysrKyB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9saW51eF9wdHJh Y2VfZHVtcGVyX3VuaXR0ZXN0LmNjCitAQCAtNDYyLDYgKzQ2Miw5IEBAIFRFU1QoTGludXhQdHJh Y2VEdW1wZXJUZXN0LCBWZXJpZnlTdGFja1JlYWRXaXRoTXVsdGlwbGVUaHJlYWRzKSB7CisgI2Vs aWYgZGVmaW5lZChfX21pcHNfXykKKyAgICAgcGlkX3QqIHByb2Nlc3NfdGlkX2xvY2F0aW9uID0K KyAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8cGlkX3QqPihvbmVfdGhyZWFkLm1jb250ZXh0Lmdy ZWdzWzFdKTsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgIHBpZF90KiBwcm9j ZXNzX3RpZF9sb2NhdGlvbiA9CisrICAgICAgICByZWludGVycHJldF9jYXN0PHBpZF90Kj4ob25l X3RocmVhZC5tY29udGV4dC5ncF9yZWdzWzhdKTsKKyAjZWxzZQorICNlcnJvciBUaGlzIHRlc3Qg aGFzIG5vdCBiZWVuIHBvcnRlZCB0byB0aGlzIHBsYXRmb3JtLgorICNlbmRpZgorQEAgLTU1OSw2 ICs1NjIsOCBAQCBURVNUX0YoTGludXhQdHJhY2VEdW1wZXJUZXN0LCBTYW5pdGl6ZVN0YWNrQ29w eSkgeworICAgdWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLnJlZ3MucmN4OworICNl bGlmIGRlZmluZWQoX19taXBzX18pCisgICB1aW50cHRyX3QgaGVhcF9hZGRyID0gdGhyZWFkX2lu Zm8ubWNvbnRleHQuZ3JlZ3NbMV07CisrI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorKyAg dWludHB0cl90IGhlYXBfYWRkciA9IHRocmVhZF9pbmZvLm1jb250ZXh0LmdwX3JlZ3NbOF07Cisg I2Vsc2UKKyAjZXJyb3IgVGhpcyB0ZXN0IGhhcyBub3QgYmVlbiBwb3J0ZWQgdG8gdGhpcyBwbGF0 Zm9ybS4KKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQv c3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNjIHRoaXJk X3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVy L21pbmlkdW1wX3dyaXRlci5jYworaW5kZXggMzI2MzRlZjAwLi4yYTU2OTQ4ZGUgMTAwNjQ0Cist LS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVt cF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1bXBfd3JpdGVyLmNj CitAQCAtMTM2LDcgKzEzNiw5IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsKKyAgICAgICA6IGZk XyhtaW5pZHVtcF9mZCksCisgICAgICAgICBwYXRoXyhtaW5pZHVtcF9wYXRoKSwKKyAgICAgICAg IHVjb250ZXh0Xyhjb250ZXh0ID8gJmNvbnRleHQtPmNvbnRleHQgOiBOVUxMKSwKKy0jaWYgIWRl ZmluZWQoX19BUk1fRUFCSV9fKSAmJiAhZGVmaW5lZChfX21pcHNfXykKKysjaWYgZGVmaW5lZChf X3Bvd2VycGM2NF9fKQorKyAgICAgICAgdmVjdG9yX3N0YXRlXyhjb250ZXh0ID8gJmNvbnRleHQt PnZlY3Rvcl9zdGF0ZSA6IE5VTEwpLAorKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYg IWRlZmluZWQoX19taXBzX18pCisgICAgICAgICBmbG9hdF9zdGF0ZV8oY29udGV4dCA/ICZjb250 ZXh0LT5mbG9hdF9zdGF0ZSA6IE5VTEwpLAorICNlbmRpZgorICAgICAgICAgZHVtcGVyXyhkdW1w ZXIpLAorQEAgLTQ2OCw3ICs0NzAsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgICAgICAg ICBpZiAoIWNwdS5BbGxvY2F0ZSgpKQorICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICBteV9tZW1zZXQoY3B1LmdldCgpLCAwLCBzaXplb2YoUmF3Q29udGV4dENQVSkpOworLSNpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICAgICAgICBVQ29udGV4dFJlYWRlcjo6RmlsbENQVUNvbnRleHQo Y3B1LmdldCgpLCB1Y29udGV4dF8sIHZlY3Rvcl9zdGF0ZV8pOworKyNlbGlmICFkZWZpbmVkKF9f QVJNX0VBQklfXykgJiYgIWRlZmluZWQoX19taXBzX18pCisgICAgICAgICBVQ29udGV4dFJlYWRl cjo6RmlsbENQVUNvbnRleHQoY3B1LmdldCgpLCB1Y29udGV4dF8sIGZsb2F0X3N0YXRlXyk7Cisg I2Vsc2UKKyAgICAgICAgIFVDb250ZXh0UmVhZGVyOjpGaWxsQ1BVQ29udGV4dChjcHUuZ2V0KCks IHVjb250ZXh0Xyk7CitAQCAtODk3LDcgKzkwMSw3IEBAIGNsYXNzIE1pbmlkdW1wV3JpdGVyIHsK KyAgICAgZGlyZW50LT5sb2NhdGlvbi5ydmEgPSAwOworICAgfQorIAorLSNpZiBkZWZpbmVkKF9f aTM4Nl9fKSB8fCBkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX19taXBzX18pCisrI2lm IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX21p cHNfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQorICAgYm9vbCBXcml0ZUNQVUluZm9ybWF0 aW9uKE1EUmF3U3lzdGVtSW5mbyogc3lzX2luZm8pIHsKKyAgICAgY2hhciB2ZW5kb3JfaWRbc2l6 ZW9mKHN5c19pbmZvLT5jcHUueDg2X2NwdV9pbmZvLnZlbmRvcl9pZCkgKyAxXSA9IHswfTsKKyAg ICAgc3RhdGljIGNvbnN0IGNoYXIgdmVuZG9yX2lkX25hbWVbXSA9ICJ2ZW5kb3JfaWQiOworQEAg LTkxNyw3ICs5MjEsOSBAQCBjbGFzcyBNaW5pZHVtcFdyaXRlciB7CisgCisgICAgIC8vIHByb2Nl c3Nvcl9hcmNoaXRlY3R1cmUgc2hvdWxkIGFsd2F5cyBiZSBzZXQsIGRvIHRoaXMgZmlyc3QKKyAg ICAgc3lzX2luZm8tPnByb2Nlc3Nvcl9hcmNoaXRlY3R1cmUgPQorLSNpZiBkZWZpbmVkKF9fbWlw c19fKQorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrICAgICAgICBNRF9DUFVfQVJDSElU RUNUVVJFX1BQQzY0OworKyNlbGlmIGRlZmluZWQoX19taXBzX18pCisgIyBpZiBfTUlQU19TSU0g PT0gX0FCSU8zMgorICAgICAgICAgTURfQ1BVX0FSQ0hJVEVDVFVSRV9NSVBTOworICMgZWxpZiBf TUlQU19TSU0gPT0gX0FCSTY0CitAQCAtMTMzMyw3ICsxMzM5LDkgQEAgY2xhc3MgTWluaWR1bXBX cml0ZXIgeworICAgY29uc3QgY2hhciogcGF0aF87ICAvLyBQYXRoIHRvIHRoZSBmaWxlIHdoZXJl IHRoZSBtaW5pZHVtIHNob3VsZCBiZSB3cml0dGVuLgorIAorICAgY29uc3QgdWNvbnRleHRfdCog Y29uc3QgdWNvbnRleHRfOyAgLy8gYWxzbyBmcm9tIHRoZSBzaWduYWwgaGFuZGxlcgorLSNpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorKyNpZiBkZWZpbmVk KF9fcG93ZXJwYzY0X18pCisrICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OnZzdGF0ZV90KiBjb25z dCB2ZWN0b3Jfc3RhdGVfOworKyNlbGlmICFkZWZpbmVkKF9fQVJNX0VBQklfXykgJiYgIWRlZmlu ZWQoX19taXBzX18pCisgICBjb25zdCBnb29nbGVfYnJlYWtwYWQ6OmZwc3RhdGVfdCogY29uc3Qg ZmxvYXRfc3RhdGVfOyAgLy8gZGl0dG8KKyAjZW5kaWYKKyAgIExpbnV4RHVtcGVyKiBkdW1wZXJf OworZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xp bnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaCB0aGlyZF9wYXJ0eS9icmVha3Bh ZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0 ZXIuaAoraW5kZXggZTNiMGIxNmRhLi5jY2Q4YWEwYTQgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NsaWVudC9saW51eC9taW5pZHVtcF93cml0ZXIvbWluaWR1 bXBfd3JpdGVyLmgKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50 L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVtcF93cml0ZXIuaAorQEAgLTQ4LDYgKzQ4LDgg QEAgY2xhc3MgRXhjZXB0aW9uSGFuZGxlcjsKKyAKKyAjaWYgZGVmaW5lZChfX2FhcmNoNjRfXykK KyB0eXBlZGVmIHN0cnVjdCBmcHNpbWRfY29udGV4dCBmcHN0YXRlX3Q7CisrI2VsaWYgZGVmaW5l ZChfX3Bvd2VycGM2NF9fKQorK3R5cGVkZWYgdnJyZWdzZXRfdCB2c3RhdGVfdDsKKyAjZWxpZiAh ZGVmaW5lZChfX0FSTV9FQUJJX18pICYmICFkZWZpbmVkKF9fbWlwc19fKQorIHR5cGVkZWYgc3Rk OjpyZW1vdmVfcG9pbnRlcjxmcHJlZ3NldF90Pjo6dHlwZSBmcHN0YXRlX3Q7CisgI2VuZGlmCitk aWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgv bWluaWR1bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYyB0aGlyZF9wYXJ0eS9i cmVha3BhZC9icmVha3BhZC9zcmMvY2xpZW50L2xpbnV4L21pbmlkdW1wX3dyaXRlci9taW5pZHVt cF93cml0ZXJfdW5pdHRlc3QuY2MKK2luZGV4IGQxOTJlNWNiYi4uZmMxYmZhOGQ3IDEwMDY0NAor LS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1 bXBfd3JpdGVyL21pbmlkdW1wX3dyaXRlcl91bml0dGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2Jy ZWFrcGFkL2JyZWFrcGFkL3NyYy9jbGllbnQvbGludXgvbWluaWR1bXBfd3JpdGVyL21pbmlkdW1w X3dyaXRlcl91bml0dGVzdC5jYworQEAgLTcxNSw2ICs3MTUsOSBAQCBURVNUKE1pbmlkdW1wV3Jp dGVyVGVzdCwgSW52YWxpZFN0YWNrUG9pbnRlcikgeworICNlbGlmIGRlZmluZWQoX19taXBzX18p CisgICBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3JlZ3NbTURfQ09OVEVYVF9NSVBTX1JF R19TUF0gPQorICAgICAgIGludmFsaWRfc3RhY2tfcG9pbnRlcjsKKysjZWxpZiBkZWZpbmVkKF9f cG93ZXJwYzY0X18pCisrICBjb250ZXh0LmNvbnRleHQudWNfbWNvbnRleHQuZ3BfcmVnc1tNRF9D T05URVhUX1BQQzY0X1JFR19TUF0gPQorKyAgICAgIGludmFsaWRfc3RhY2tfcG9pbnRlcjsKKyAj ZWxzZQorICMgZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxh dGZvcm0geWV0LiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGUuY2MgdGhpcmRfcGFydHkv YnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFwcGVkX2ZpbGUuY2MK K2luZGV4IDk5MzYyOTQ1Yy4uYzU0YmE3MTQ1IDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFr cGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbGludXgvbWVtb3J5X21hcHBlZF9maWxlLmNjCisrKysg dGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9tZW1vcnlfbWFw cGVkX2ZpbGUuY2MKK0BAIC02NSw4ICs2NSw3IEBAIGJvb2wgTWVtb3J5TWFwcGVkRmlsZTo6TWFw KGNvbnN0IGNoYXIqIHBhdGgsIHNpemVfdCBvZmZzZXQpIHsKKyAgIH0KKyAKKyAjaWYgZGVmaW5l ZChfX3g4Nl82NF9fKSB8fCBkZWZpbmVkKF9fYWFyY2g2NF9fKSB8fCBcCistICAgKGRlZmluZWQo X19taXBzX18pICYmIF9NSVBTX1NJTSA9PSBfQUJJNjQpCistCisrICAgKGRlZmluZWQoX19taXBz X18pICYmIF9NSVBTX1NJTSA9PSBfQUJJNjQpIHx8IGRlZmluZWQoX19wb3dlcnBjNjRfXykKKyAg IHN0cnVjdCBrZXJuZWxfc3RhdCBzdDsKKyAgIGlmIChzeXNfZnN0YXQoZmQsICZzdCkgPT0gLTEg fHwgc3Quc3Rfc2l6ZSA8IDApIHsKKyAjZWxzZQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9icmVh a3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVz dC5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9y eV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYworaW5kZXggZmFkNTlmNDBjLi42MTY0OTZkNjcgMTAw NjQ0CistLS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL2NvbW1vbi9saW51eC9t ZW1vcnlfbWFwcGVkX2ZpbGVfdW5pdHRlc3QuY2MKKysrKyB0aGlyZF9wYXJ0eS9icmVha3BhZC9i cmVha3BhZC9zcmMvY29tbW9uL2xpbnV4L21lbW9yeV9tYXBwZWRfZmlsZV91bml0dGVzdC5jYwor QEAgLTE3Niw5ICsxNzYsMTAgQEAgVEVTVF9GKE1lbW9yeU1hcHBlZEZpbGVUZXN0LCBSZW1hcEFm dGVyTWFwKSB7CisgVEVTVF9GKE1lbW9yeU1hcHBlZEZpbGVUZXN0LCBNYXBXaXRoT2Zmc2V0KSB7 CisgICAvLyBQdXQgbW9yZSBkYXRhIGluIHRoZSB0ZXN0IGZpbGUgdGhpcyB0aW1lLiBPZmZzZXRz IGNhbiBvbmx5IGJlCisgICAvLyBkb25lIG9uIHBhZ2UgYm91bmRhcmllcywgc28gd2UgbmVlZCBh IHR3byBwYWdlIGZpbGUgdG8gdGVzdCB0aGlzLgorLSAgY29uc3QgaW50IHBhZ2Vfc2l6ZSA9IDQw OTY7CistICBjaGFyIGRhdGExWzIgKiBwYWdlX3NpemVdOworLSAgc2l6ZV90IGRhdGExX3NpemUg PSBzaXplb2YoZGF0YTEpOworKyAgY29uc3QgaW50IHBhZ2Vfc2l6ZSA9IGdldHBhZ2VzaXplKCk7 CisrICBjaGFyICpkYXRhMSA9IHN0YXRpY19jYXN0PGNoYXIqPihtYWxsb2MoMiAqIHBhZ2Vfc2l6 ZSkpOworKyAgRVhQRUNUX1RSVUUoZGF0YTEgIT0gTlVMTCk7CisrICBzaXplX3QgZGF0YTFfc2l6 ZSA9ICgyICogcGFnZV9zaXplKTsKKyAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YTFfc2l6 ZTsgKytpKSB7CisgICAgIGRhdGExW2ldID0gaSAmIDB4N2Y7CisgICB9CitkaWZmIC0tZ2l0IHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91 bml0dGVzdC5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvY29tbW9uL21lbW9y eV9hbGxvY2F0b3JfdW5pdHRlc3QuY2MKK2luZGV4IDU4MDNiOTBkNS4uMmExY2YxNGYwIDEwMDY0 NAorLS0tIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9jb21tb24vbWVtb3J5X2Fs bG9jYXRvcl91bml0dGVzdC5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3Ny Yy9jb21tb24vbWVtb3J5X2FsbG9jYXRvcl91bml0dGVzdC5jYworQEAgLTU3LDggKzU3LDkgQEAg VEVTVChQYWdlQWxsb2NhdG9yVGVzdCwgTGFyZ2VPYmplY3QpIHsKKyAKKyAgIEVYUEVDVF9FUSgw VSwgYWxsb2NhdG9yLnBhZ2VzX2FsbG9jYXRlZCgpKTsKKyAgIHVpbnQ4X3QqIHAgPSByZWludGVy cHJldF9jYXN0PHVpbnQ4X3QqPihhbGxvY2F0b3IuQWxsb2MoMTAwMDApKTsKKysgIHVpbnQ2NF90 IGV4cGVjdGVkX3BhZ2VzID0gMSArICgoMTAwMDAgLSAxKSAvIGdldHBhZ2VzaXplKCkpOworICAg QVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7CistICBFWFBFQ1RfRVEoM1UsIGFsbG9jYXRvci5wYWdl c19hbGxvY2F0ZWQoKSk7CisrICBFWFBFQ1RfRVEoZXhwZWN0ZWRfcGFnZXMsIGFsbG9jYXRvci5w YWdlc19hbGxvY2F0ZWQoKSk7CisgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgMTA7ICsraSkg eworICAgICB1aW50OF90KiBwID0gcmVpbnRlcnByZXRfY2FzdDx1aW50OF90Kj4oYWxsb2NhdG9y LkFsbG9jKGkpKTsKKyAgICAgQVNTRVJUX0ZBTFNFKHAgPT0gTlVMTCk7CitkaWZmIC0tZ2l0IHRo aXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9jZXNzb3IvZXhwbG9pdGFiaWxpdHlf bGludXguY2MgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBs b2l0YWJpbGl0eV9saW51eC5jYworaW5kZXggNzk4MDU2ZGZhLi4yMmJkODFmZmYgMTAwNjQ0Cist LS0gdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJp bGl0eV9saW51eC5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy9wcm9j ZXNzb3IvZXhwbG9pdGFiaWxpdHlfbGludXguY2MKK0BAIC0yMDIsMTIgKzIwMiwxNCBAQCBib29s IEV4cGxvaXRhYmlsaXR5TGludXg6OkVuZGVkT25JbGxlZ2FsV3JpdGUodWludDY0X3QgaW5zdHJ1 Y3Rpb25fcHRyKSB7CisgICAvLyBDaGVjayBhcmNoaXRlY3R1cmUgYW5kIHNldCBhcmNoaXRlY3R1 cmUgdmFyaWFibGUgdG8gY29ycmVzcG9uZGluZyBmbGFnCisgICAvLyBpbiBvYmpkdW1wLgorICAg c3dpdGNoIChjb250ZXh0LT5HZXRDb250ZXh0Q1BVKCkpIHsKKysjaWYgZGVmaW5lZChfX2kzODYp IHx8IGRlZmluZWQoX194ODZfNjQpCisgICAgIGNhc2UgTURfQ09OVEVYVF9YODY6CisgICAgICAg YXJjaGl0ZWN0dXJlID0gImkzODYiOworICAgICAgIGJyZWFrOworICAgICBjYXNlIE1EX0NPTlRF WFRfQU1ENjQ6CisgICAgICAgYXJjaGl0ZWN0dXJlID0gImkzODY6eDg2LTY0IjsKKyAgICAgICBi cmVhazsKKysjZW5kaWYKKyAgICAgZGVmYXVsdDoKKyAgICAgICAvLyBVbnN1cHBvcnRlZCBhcmNo aXRlY3R1cmUuIE5vdGUgdGhhdCBBUk0gYXJjaGl0ZWN0dXJlcyBhcmUgbm90CisgICAgICAgLy8g c3VwcG9ydGVkIGJlY2F1c2Ugb2JqZHVtcCBkb2VzIG5vdCBzdXBwb3J0IEFSTS4KK2RpZmYgLS1n aXQgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJlYWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJp bGl0eV91bml0dGVzdC5jYyB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vz c29yL2V4cGxvaXRhYmlsaXR5X3VuaXR0ZXN0LmNjCitpbmRleCA1MjhlZTVmMjEuLjcyNzY0ZDZj MSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9icmVha3BhZC9icmVha3BhZC9zcmMvcHJvY2Vzc29y L2V4cGxvaXRhYmlsaXR5X3VuaXR0ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvYnJlYWtwYWQvYnJl YWtwYWQvc3JjL3Byb2Nlc3Nvci9leHBsb2l0YWJpbGl0eV91bml0dGVzdC5jYworQEAgLTEwNCw2 ICsxMDQsOCBAQCBFeHBsb2l0YWJpbGl0eUZvcihjb25zdCBzdHJpbmcmIGZpbGVuYW1lKSB7Cisg fQorIAorIFRFU1QoRXhwbG9pdGFiaWxpdHlUZXN0LCBUZXN0V2luZG93c0VuZ2luZSkgeworKy8v IFRoZSBmb2xsb3dpbmcgdGVzdHMgYXJlIG9ubHkgZXhlY3V0YWJsZSBvbiBhbiB4ODYtY2xhc3Mg bGludXggbWFjaGluZS4KKysjaWYgIWRlZmluZWQoX1dJTjMyKSAmJiAoZGVmaW5lZChfX2kzODYp IHx8IGRlZmluZWQoX194ODZfNjQpKQorICAgQVNTRVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQ TE9JVEFCSUxJVFlfSElHSCwKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZvcigiYXNjaWlf cmVhZF9hdi5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpFWFBMT0lUQUJJ TElUWV9ISUdILAorQEAgLTEzNiw5ICsxMzgsMTIgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3Qs IFRlc3RXaW5kb3dzRW5naW5lKSB7CisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoInJl YWRfYXZfY2xvYmJlcl93cml0ZS5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFk OjpFWFBMT0lUQUJJTElUWV9MT1csCisgICAgICAgICAgICAgRXhwbG9pdGFiaWxpdHlGb3IoInJl YWRfYXZfY29uZGl0aW9uYWwuZG1wIikpOworKyNlbmRpZgorIH0KKyAKKyBURVNUKEV4cGxvaXRh YmlsaXR5VGVzdCwgVGVzdExpbnV4RW5naW5lKSB7CisrLy8gVGhlIGZvbGxvd2luZyB0ZXN0cyBh cmUgb25seSBleGVjdXRhYmxlIG9uIGFuIHg4Ni1jbGFzcyBsaW51eCBtYWNoaW5lLgorKyNpZiBk ZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkKKyAgIEFTU0VSVF9FUShnb29nbGVf YnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0lOVEVSRVNUSU5HLAorICAgICAgICAgICAgIEV4cGxv aXRhYmlsaXR5Rm9yKCJsaW51eF9udWxsX3JlYWRfYXYuZG1wIikpOworICAgQVNTRVJUX0VRKGdv b2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKK0BAIC0xNzEsNyArMTc2LDggQEAg VEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkgeworICAgICAgICAgICAg IEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF9leGVjdXRhYmxlX2hlYXAuZG1wIikpOworICAgQVNT RVJUX0VRKGdvb2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKKyAgICAgICAgICAg ICBFeHBsb2l0YWJpbGl0eUZvcigibGludXhfam1wX3RvX21vZHVsZV9ub3RfZXhlX3JlZ2lvbi5k bXAiKSk7CistI2lmbmRlZiBfV0lOMzIKKysjZW5kaWYKKysjaWYgIWRlZmluZWQoX1dJTjMyKSAm JiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQorICAgQVNTRVJUX0VRKGdv b2dsZV9icmVha3BhZDo6RVhQTE9JVEFCSUxJVFlfSElHSCwKKyAgICAgICAgICAgICBFeHBsb2l0 YWJpbGl0eUZvcigibGludXhfd3JpdGVfdG9fbm9ud3JpdGFibGVfbW9kdWxlLmRtcCIpKTsKKyAg IEFTU0VSVF9FUShnb29nbGVfYnJlYWtwYWQ6OkVYUExPSVRBQklMSVRZX0hJR0gsCitAQCAtMTgy LDEwICsxODgsMTAgQEAgVEVTVChFeHBsb2l0YWJpbGl0eVRlc3QsIFRlc3RMaW51eEVuZ2luZSkg eworICAgICAgICAgICAgIEV4cGxvaXRhYmlsaXR5Rm9yKCJsaW51eF93cml0ZV90b19vdXRzaWRl X21vZHVsZV92aWFfbWF0aC5kbXAiKSk7CisgICBBU1NFUlRfRVEoZ29vZ2xlX2JyZWFrcGFkOjpF WFBMT0lUQUJJTElUWV9JTlRFUkVTVElORywKKyAgICAgICAgICAgICBFeHBsb2l0YWJpbGl0eUZv cigibGludXhfd3JpdGVfdG9fdW5kZXJfNGsuZG1wIikpOworLSNlbmRpZiAgLy8gX1dJTjMyCisr I2VuZGlmICAvLyAhZGVmaW5lZChfV0lOMzIpICYmICghZGVmaW5lZChfX2kzODYpICYmICFkZWZp bmVkKF9feDg2XzY0KSkKKyB9CisgCistI2lmbmRlZiBfV0lOMzIKKysjaWYgIWRlZmluZWQoX1dJ TjMyKSAmJiAoZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX194ODZfNjQpKQorIFRFU1QoRXhw bG9pdGFiaWxpdHlMaW51eFV0aWxzVGVzdCwgRGlzYXNzZW1ibGVCeXRlc1Rlc3QpIHsKKyAgIEFT U0VSVF9GQUxTRShFeHBsb2l0YWJpbGl0eUxpbnV4VGVzdDo6RGlzYXNzZW1ibGVCeXRlcygiIiwg TlVMTCwgNSwgTlVMTCkpOworICAgdWludDhfdCBieXRlc1s2XSA9IHsweGM3LCAweDAsIDB4NSwg MHgwLCAweDAsIDB4MH07CitAQCAtMzAxLDYgKzMwNyw3IEBAIFRFU1QoRXhwbG9pdGFiaWxpdHlM aW51eFV0aWxzVGVzdCwgQ2FsY3VsYXRlQWRkcmVzc1Rlc3QpIHsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0 ZV9hZGRyZXNzKSk7CisgfQorLSNlbmRpZiAgLy8gX1dJTjMyCisrI2VuZGlmICAvLyAhZGVmaW5l ZChfV0lOMzIpICYmIChkZWZpbmVkKF9faTM4NikgfHwgZGVmaW5lZChfX3g4Nl82NCkpCisrCisg CisgfSAgLy8gbmFtZXNwYWNlCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFr cGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYyB0aGlyZF9wYXJ0 eS9icmVha3BhZC9icmVha3BhZC9zcmMvdG9vbHMvbGludXgvbWQyY29yZS9taW5pZHVtcC0yLWNv cmUuY2MKK2luZGV4IGFhZGU4MmM5OS4uMTk1YWE3M2YzIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5 L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9tZDJjb3JlL21pbmlkdW1wLTItY29y ZS5jYworKysrIHRoaXJkX3BhcnR5L2JyZWFrcGFkL2JyZWFrcGFkL3NyYy90b29scy9saW51eC9t ZDJjb3JlL21pbmlkdW1wLTItY29yZS5jYworQEAgLTc3LDYgKzc3LDggQEAKKyAgICNkZWZpbmUg RUxGX0FSQ0ggIEVNX01JUFMKKyAjZWxpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgI2RlZmlu ZSBFTEZfQVJDSCAgRU1fQUFSQ0g2NAorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysg ICNkZWZpbmUgRUxGX0FSQ0ggIEVNX1BQQzY0CisgI2VuZGlmCisgCisgI2lmIGRlZmluZWQoX19h cm1fXykKK0BAIC04Nyw2ICs4OSw4IEBAIHR5cGVkZWYgdXNlcl9yZWdzIHVzZXJfcmVnc19zdHJ1 Y3Q7CisgI2VsaWYgZGVmaW5lZCAoX19taXBzX18pCisgLy8gVGhpcyBmaWxlLWxvY2FsIHR5cGVk ZWYgc2ltcGxpZmllcyB0aGUgc291cmNlIGNvZGUuCisgdHlwZWRlZiBncmVnc2V0X3QgdXNlcl9y ZWdzX3N0cnVjdDsKKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrdHlwZWRlZiBzdHJ1 Y3QgcHRfcmVncyB1c2VyX3JlZ3Nfc3RydWN0OworICNlbmRpZgorIAorIHVzaW5nIGdvb2dsZV9i cmVha3BhZDo6TURUeXBlSGVscGVyOworQEAgLTMyMSw2ICszMjUsOSBAQCBzdHJ1Y3QgQ3Jhc2hl ZFByb2Nlc3MgeworICNlbmRpZgorICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKQorICAgICB1c2Vy X2Zwc2ltZF9zdHJ1Y3QgZnByZWdzOworKyNlbmRpZgorKyNpZiBkZWZpbmVkKF9fcG93ZXJwYzY0 X18pCisrICAgIG1jb250ZXh0X3QgbWNvbnRleHQ7CisgI2VuZGlmCisgICAgIHVpbnRwdHJfdCBz dGFja19hZGRyOworICAgICBjb25zdCB1aW50OF90KiBzdGFjazsKK0BAIC01MzUsNiArNTQyLDM4 IEBAIFBhcnNlVGhyZWFkUmVnaXN0ZXJzKENyYXNoZWRQcm9jZXNzOjpUaHJlYWQqIHRocmVhZCwK KyAgIHRocmVhZC0+bWNvbnRleHQuZnBjX2VpciA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZmlyOwor ICNlbmRpZgorIH0KKysjZWxpZiBkZWZpbmVkKF9fcG93ZXJwYzY0X18pCisrc3RhdGljIHZvaWQK KytQYXJzZVRocmVhZFJlZ2lzdGVycyhDcmFzaGVkUHJvY2Vzczo6VGhyZWFkKiB0aHJlYWQsCisr ICAgICAgICAgICAgICAgICAgICAgY29uc3QgTWluaWR1bXBNZW1vcnlSYW5nZSYgcmFuZ2UpIHsK KysgIGNvbnN0IE1EUmF3Q29udGV4dFBQQzY0KiByYXdyZWdzID0gcmFuZ2UuR2V0RGF0YTxNRFJh d0NvbnRleHRQUEM2ND4oMCk7CisrCisrICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0NPTlRFWFRf UFBDNjRfR1BSX0NPVU5UOyBpKyspCisrICAgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tpXSA9 IHJhd3JlZ3MtPmdwcltpXTsKKysKKysgIHRocmVhZC0+bWNvbnRleHQuZ3BfcmVnc1tQVF9MTktd ID0gcmF3cmVncy0+bHI7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTklQXSA9IHJh d3JlZ3MtPnNycjA7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfTVNSXSA9IHJhd3Jl Z3MtPnNycjE7CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXSA9IHJhd3JlZ3Mt PmNyOworKyAgdGhyZWFkLT5tY29udGV4dC5ncF9yZWdzW1BUX1hFUl0gPSByYXdyZWdzLT54ZXI7 CisrICB0aHJlYWQtPm1jb250ZXh0LmdwX3JlZ3NbUFRfQ1RSXSA9IHJhd3JlZ3MtPmN0cjsKKysg IHRocmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnNhdmUgPSByYXdyZWdzLT52cnNhdmU7CisrCisr ICBmb3IgKGludCBpID0gMDsgaSA8IE1EX0ZMT0FUSU5HU0FWRUFSRUFfUFBDX0ZQUl9DT1VOVDsg aSsrKQorKyAgICAgIHRocmVhZC0+bWNvbnRleHQuZnBfcmVnc1tpXSA9IHJhd3JlZ3MtPmZsb2F0 X3NhdmUuZnByZWdzW2ldOworKworKyAgdGhyZWFkLT5tY29udGV4dC5mcF9yZWdzW05GUFJFRy0x XSA9IHJhd3JlZ3MtPmZsb2F0X3NhdmUuZnBzY3I7CisrCisrICBmb3IgKGludCBpID0gMDsgaSA8 IE1EX1ZFQ1RPUlNBVkVBUkVBX1BQQ19WUl9DT1VOVDsgaSsrKSB7CisrICAgICAgdGhyZWFkLT5t Y29udGV4dC52X3JlZ3MtPnZycmVnc1tpXVswXSA9IHJhd3JlZ3MtPnZlY3Rvcl9zYXZlLnNhdmVf dnJbaV0uaGlnaCA+PiAzMjsKKysgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnJyZWdz W2ldWzFdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5oaWdoOworKyAgICAgIHRo cmVhZC0+bWNvbnRleHQudl9yZWdzLT52cnJlZ3NbaV1bMl0gPSByYXdyZWdzLT52ZWN0b3Jfc2F2 ZS5zYXZlX3ZyW2ldLmxvdyA+PiAzMjsKKysgICAgICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+ dnJyZWdzW2ldWzNdID0gcmF3cmVncy0+dmVjdG9yX3NhdmUuc2F2ZV92cltpXS5sb3c7CisrICB9 CisrCisrICB0aHJlYWQtPm1jb250ZXh0LnZfcmVncy0+dnNjci52c2NyX3dvcmQgPSByYXdyZWdz LT52ZWN0b3Jfc2F2ZS5zYXZlX3ZzY3IubG93ICYgMHhGRkZGRkZGRjsKKyt9CisrCisgI2Vsc2UK KyAjZXJyb3IgIlRoaXMgY29kZSBoYXMgbm90IGJlZW4gcG9ydGVkIHRvIHlvdXIgcGxhdGZvcm0g eWV0IgorICNlbmRpZgorQEAgLTYyMyw2ICs2NjIsMTIgQEAgUGFyc2VTeXN0ZW1JbmZvKGNvbnN0 IE9wdGlvbnMmIG9wdGlvbnMsIENyYXNoZWRQcm9jZXNzKiBjcmFzaGluZm8sCisgIyBlbHNlCisg IyAgZXJyb3IgIlRoaXMgbWlwcyBBQkkgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgKG4zMiki CisgIyBlbmRpZgorKyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIGlmIChzeXNpbmZv LT5wcm9jZXNzb3JfYXJjaGl0ZWN0dXJlICE9IE1EX0NQVV9BUkNISVRFQ1RVUkVfUFBDNjQpIHsK KysgICAgZnByaW50ZihzdGRlcnIsCisrICAgICAgICAgICAgIlRoaXMgdmVyc2lvbiBvZiBtaW5p ZHVtcC0yLWNvcmUgb25seSBzdXBwb3J0cyBQUEM2NC5cbiIpOworKyAgICBleGl0KDEpOworKyAg fQorICNlbHNlCisgI2Vycm9yICJUaGlzIGNvZGUgaGFzIG5vdCBiZWVuIHBvcnRlZCB0byB5b3Vy IHBsYXRmb3JtIHlldCIKKyAjZW5kaWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQv Y3Jhc2hwYWQvQ09OVFJJQlVUT1JTIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL0NPTlRS SUJVVE9SUworaW5kZXggODcyNGI3ZjMyLi44ZTI5NDI0ZWYgMTAwNjQ0CistLS0gdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvQ09OVFJJQlVUT1JTCisrKysgdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvQ09OVFJJQlVUT1JTCitAQCAtMTMsMyArMTMsNCBAQCBNYXJrIE1lbnRvdmFp IDxtYXJrQGNocm9taXVtLm9yZz4KKyBSb2JlcnQgU2VzZWsgPHJzZXNla0BjaHJvbWl1bS5vcmc+ CisgU2NvdHQgR3JhaGFtIDxzY290dG1nQGNocm9taXVtLm9yZz4KKyBKb3NodWEgUGVyYXphIDxq cGVyYXphQGNocm9taXVtLm9yZz4KKytTaGF3biBBbmFzdGFzaW8gPHNoYXduQGFuYXN0YXMuaW8+ CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9z eXMvdXNlci5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMv dXNlci5oCitpbmRleCA2ZWQ3N2E5OGUuLjFmZDgzNDY5YSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0 eS9jcmFzaHBhZC9jcmFzaHBhZC9jb21wYXQvbGludXgvc3lzL3VzZXIuaAorKysrIHRoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL2NvbXBhdC9saW51eC9zeXMvdXNlci5oCitAQCAtMTUsNiAr MTUsNyBAQAorICNpZm5kZWYgQ1JBU0hQQURfQ09NUEFUX0xJTlVYX1NZU19VU0VSX0hfCisgI2Rl ZmluZSBDUkFTSFBBRF9DT01QQVRfTElOVVhfU1lTX1VTRVJfSF8KKyAKKysjaW5jbHVkZSA8Y3N0 ZGRlZj4KKyAjaW5jbHVkZV9uZXh0IDxzeXMvdXNlci5oPgorIAorICNpbmNsdWRlIDxmZWF0dXJl cy5oPgorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9t aW5pZHVtcF9jb250ZXh0LmggdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAv bWluaWR1bXBfY29udGV4dC5oCitpbmRleCAzYTNlNjAzY2IuLjMxMThkOWU5ZiAxMDA2NDQKKy0t LSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0 LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9j b250ZXh0LmgKK0BAIC01OTIsNiArNTkyLDcwIEBAIHN0cnVjdCBNaW5pZHVtcENvbnRleHRNSVBT NjQgeworICAgdWludDY0X3QgZmlyOworIH07CisgCisrLy8hIFxicmllZiBwcGM2NC1zcGVjaWZp YyBmbGFncyBmb3IgTWluaWR1bXBQUEM2NDo6Y29udGV4dF9mbGFncworKy8vISBCYXNlZCBvbiBt aW5pZHVtcF9jcHVfcHBjNjQuaCBmcm9tIGJyZWFrcGFkCisrZW51bSBNaW5pZHVtcENvbnRleHRQ UEM2NEZsYWdzIDogdWludDMyX3QgeworKyAgLy8hIFxicmllZiBJZGVudGlmaWVzIHRoZSBjb250 ZXh0IGFzIFBQQzY0LgorKyAga01pbmlkdW1wQ29udGV4dFBQQzY0ID0gMHgwMTAwMDAwMCwKKysK KysgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBnZW5lcmFsIHB1cnBvc2Ug cmVnaXN0ZXJzLgorKyAgLy8hCisrICAvLyEgUmVnaXN0ZXJzIGByMGAtYHIzMWAsIGBuaXBgLCBg bXNyYCwgYGxyYCwgZXRjLiBhcmUgdmFsaWQuCisrICBrTWluaWR1bXBDb250ZXh0UFBDNjRCYXNl ID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwgMHgwMDAwMDAwMSwKKysKKysgIC8vISBcYnJpZWYg SW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBmbG9hdGluZyBwb2ludCByZWdpc3RlcnMuCisrICAv LyEKKysgIC8vISBSZWdpc3RlcnMgYGZwMGAtYGZwMzFgLCBgZnBzY3JgIGFyZSB2YWxpZC4KKysg IGtNaW5pZHVtcENvbnRleHRQUEM2NEZsb2F0aW5nID0ga01pbmlkdW1wQ29udGV4dFBQQzY0IHwg MHgwMDAwMDAwOCwKKysKKysgIC8vISBcYnJpZWYgSW5kaWNhdGVzIHRoZSB2YWxpZGl0eSBvZiBB bHRpdmVjL1ZNWCByZWdpc3RlcnMuCisrICAvLyEKKysgIC8vISBSZWdpc3RlcnMgYHYwYC1gdjMx YCwgYHZzY3JgLCBgdnJzYXZlYC4KKysgIGtNaW5pZHVtcENvbnRleHRQUEM2NFZlY3RvciA9IGtN aW5pZHVtcENvbnRleHRQUEM2NCB8IDB4MDAwMDAwMjAsCisrCisrICAvLyEgXGJyaWVmIEluZGlj YXRlcyB0aGUgdmFsaWRpdHkgb2YgYWxsIHJlZ2lzdGVycworKyAga01pbmlkdW1wQ29udGV4dFBQ QzY0QWxsID0ga01pbmlkdW1wQ29udGV4dFBQQzY0QmFzZSAgICAgfAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAga01pbmlkdW1wQ29udGV4dFBQQzY0RmxvYXRpbmcgfAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAga01pbmlkdW1wQ29udGV4dFBQQzY0VmVjdG9yCisrfTsKKysK KysvLyEgXGJyaWVmIEEgUFBDNjQgQ1BVIGNvbnRleHQgY2FycmllZCBpbiBhIG1pbmlkdW1wIGZp bGUuCisrLy8hIEJhc2VkIG9uIG1pbmlkdW1wX2NwdV9wcGM2NC5oIGZyb20gYnJlYWtwYWQuCisr c3RydWN0IE1pbmlkdW1wQ29udGV4dFBQQzY0IHsKKysgIHVpbnQ2NF90IGNvbnRleHRfZmxhZ3M7 CisrCisrICAvLyEgXGJyaWVmIEdlbmVyYWwgcHVycG9zZSByZWdpc3RlcnMuCisrICB1aW50NjRf dCBuaXA7CisrICB1aW50NjRfdCBtc3I7CisrICB1aW50NjRfdCByZWdzWzMyXTsKKysgIHVpbnQ2 NF90IGNjcjsKKysgIHVpbnQ2NF90IHhlcjsKKysgIHVpbnQ2NF90IGxuazsKKysgIHVpbnQ2NF90 IGN0cjsKKysKKysgIC8vISBcYnJpZWYgRmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXJzLgorKyAgZG91 YmxlIGZwcmVnc1szMl07CisrCisrICAvLyEgXGJyaWVmIEZQVSBzdGF0dXMgcmVnaXN0ZXIuCisr ICBkb3VibGUgZnBzY3I7CisrCisrICAvLyEgXGJyaWVmIEFsdGl2ZWMvVk1YIHZlY3RvciByZWdp c3RlcnMuCisrICBzdHJ1Y3QgeworKyAgICAgIC8vISBcYnJpZWYgVmVjdG9yIHJlZ2lzdGVycyBh cmUgMTI4Yml0cy4KKysgICAgICB1aW50MTI4X3N0cnVjdCBzYXZlX3ZyWzMyXTsKKysgICAgICB1 aW50MTI4X3N0cnVjdCBzYXZlX3ZzY3I7CisrCisrICAgICAgLy8hIFxicmllZiBQYWRkaW5nIGlu Y2x1ZGVkIGZvciBicmVha3BhZCBjb21wYXRpYmlsdGl5LgorKyAgICAgIHVpbnQzMl90IHNhdmVf cGFkNVs0XTsKKysKKysgICAgICAvLyEgXGJyaWVmIFZSU0FWRSByZWdpc3Rlci4KKysgICAgICB1 aW50MzJfdCBzYXZlX3Zyc2F2ZTsKKysKKysgICAgICAvLyEgXGJyaWVmIFBhZGRpbmcgaW5jbHVk ZWQgZm9yIGJyZWFrcGFkIGNvbXBhdGliaWx0aXkuCisrICAgICAgdWludDMyX3Qgc2F2ZV9wYWQ2 WzddOworKyAgfSB2cmVnczsKKyt9OworKworIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorIAor ICNlbmRpZiAgLy8gQ1JBU0hQQURfTUlOSURVTVBfTUlOSURVTVBfQ09OVEVYVF9IXworZGlmZiAt LWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250 ZXh0X3dyaXRlci5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5p ZHVtcF9jb250ZXh0X3dyaXRlci5jYworaW5kZXggZDdlNTNhNDkzLi5kODllYjllMDEgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29u dGV4dF93cml0ZXIuY2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVt cC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5jYworQEAgLTEwMSw2ICsxMDEsMTMgQEAgTWluaWR1 bXBDb250ZXh0V3JpdGVyOjpDcmVhdGVGcm9tU25hcHNob3QoY29uc3QgQ1BVQ29udGV4dCogY29u dGV4dF9zbmFwc2hvdCkgeworICAgICAgIGJyZWFrOworICAgICB9CisgCisrICAgIGNhc2Uga0NQ VUFyY2hpdGVjdHVyZVBQQzY0OiB7CisrICAgICAgY29udGV4dCA9IHN0ZDo6bWFrZV91bmlxdWU8 TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI+KCk7CisrICAgICAgcmVpbnRlcnByZXRfY2FzdDxN aW5pZHVtcENvbnRleHRQUEM2NFdyaXRlcio+KGNvbnRleHQuZ2V0KCkpCisrICAgICAgICAgIC0+ SW5pdGFsaXplRnJvbVNuYXBzaG90KGNvbnRleHRfc25hcHNob3QtPnBwYzY0KTsKKysgICAgICBi cmVhazsKKysgICAgfQorKworICAgICBkZWZhdWx0OiB7CisgICAgICAgTE9HKEVSUk9SKSA8PCAi dW5rbm93biBjb250ZXh0IGFyY2hpdGVjdHVyZSAiCisgICAgICAgICAgICAgICAgICA8PCBjb250 ZXh0X3NuYXBzaG90LT5hcmNoaXRlY3R1cmU7CitAQCAtNDUzLDQgKzQ2MCw0NyBAQCBzaXplX3Qg TWluaWR1bXBDb250ZXh0TUlQUzY0V3JpdGVyOjpDb250ZXh0U2l6ZSgpIGNvbnN0IHsKKyAgIHJl dHVybiBzaXplb2YoY29udGV4dF8pOworIH0KKyAKKytNaW5pZHVtcENvbnRleHRQUEM2NFdyaXRl cjo6TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKQorKyAgOiBNaW5pZHVtcENvbnRleHRXcml0 ZXIoKSwgY29udGV4dF8oKSB7CisrICAgIGNvbnRleHRfLmNvbnRleHRfZmxhZ3MgPSBrTWluaWR1 bXBDb250ZXh0UFBDNjQ7CisrfQorKworK01pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjp+TWlu aWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKSA9IGRlZmF1bHQ7CisrCisrdm9pZCBNaW5pZHVtcENv bnRleHRQUEM2NFdyaXRlcjo6SW5pdGFsaXplRnJvbVNuYXBzaG90KAorKyAgICBjb25zdCBDUFVD b250ZXh0UFBDNjQqIGNvbnRleHRfc25hcHNob3QpIHsKKysgIERDSEVDS19FUShzdGF0ZSgpLCBr U3RhdGVNdXRhYmxlKTsKKysgIERDSEVDS19FUShjb250ZXh0Xy5jb250ZXh0X2ZsYWdzLCBrTWlu aWR1bXBDb250ZXh0UFBDNjQpOworKworKyAgY29udGV4dF8uY29udGV4dF9mbGFncyA9IGtNaW5p ZHVtcENvbnRleHRQUEM2NEFsbDsKKysKKysgIG1lbWNweShjb250ZXh0Xy5yZWdzLCBjb250ZXh0 X3NuYXBzaG90LT5yZWdzLCBzaXplb2YoY29udGV4dF8ucmVncykpOworKyAgY29udGV4dF8ubmlw ID0gY29udGV4dF9zbmFwc2hvdC0+bmlwOworKyAgY29udGV4dF8ubXNyID0gY29udGV4dF9zbmFw c2hvdC0+bXNyOworKyAgY29udGV4dF8uY2NyID0gY29udGV4dF9zbmFwc2hvdC0+Y2NyOworKyAg Y29udGV4dF8ueGVyID0gY29udGV4dF9zbmFwc2hvdC0+eGVyOworKyAgY29udGV4dF8ubG5rID0g Y29udGV4dF9zbmFwc2hvdC0+bG5rOworKyAgY29udGV4dF8uY3RyID0gY29udGV4dF9zbmFwc2hv dC0+Y3RyOworKworKyAgbWVtY3B5KGNvbnRleHRfLmZwcmVncywgY29udGV4dF9zbmFwc2hvdC0+ ZnByZWdzLCBzaXplb2YoY29udGV4dF8uZnByZWdzKSk7CisrICBjb250ZXh0Xy5mcHNjciA9IGNv bnRleHRfc25hcHNob3QtPmZwc2NyOworKworKyAgbWVtY3B5KGNvbnRleHRfLnZyZWdzLnNhdmVf dnIsIGNvbnRleHRfc25hcHNob3QtPnZyZWdzLnNhdmVfdnIsCisrICAgICAgICAgc2l6ZW9mKGNv bnRleHRfLnZyZWdzLnNhdmVfdnIpKTsKKysgIG1lbWNweSgmY29udGV4dF8udnJlZ3Muc2F2ZV92 c2NyLCAmY29udGV4dF9zbmFwc2hvdC0+dnJlZ3Muc2F2ZV92c2NyLAorKyAgICAgICAgIHNpemVv Zihjb250ZXh0Xy52cmVncy5zYXZlX3ZzY3IpKTsKKysgIGNvbnRleHRfLnZyZWdzLnNhdmVfdnJz YXZlID0gY29udGV4dF9zbmFwc2hvdC0+dnJlZ3Muc2F2ZV92cnNhdmU7CisrfQorKworK2Jvb2wg TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXI6OldyaXRlT2JqZWN0KAorKyAgICBGaWxlV3JpdGVy SW50ZXJmYWNlKiBmaWxlX3dyaXRlcikgeworKyAgRENIRUNLX0VRKHN0YXRlKCksIGtTdGF0ZVdy aXRhYmxlKTsKKysgIHJldHVybiBmaWxlX3dyaXRlci0+V3JpdGUoJmNvbnRleHRfLCBzaXplb2Yo Y29udGV4dF8pKTsKKyt9CisrCisrc2l6ZV90IE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyOjpD b250ZXh0U2l6ZSgpIGNvbnN0IHsKKysgIERDSEVDS19HRShzdGF0ZSgpLCBrU3RhdGVGcm96ZW4p OworKyAgcmV0dXJuIHNpemVvZihjb250ZXh0Xyk7CisrfQorKworIH0gIC8vIG5hbWVzcGFjZSBj cmFzaHBhZAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVt cC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L21pbmlkdW1wL21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmgKK2luZGV4IGQ0YWI5MzZlZS4uMWQy MmZjNTljIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1w L21pbmlkdW1wX2NvbnRleHRfd3JpdGVyLmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFz aHBhZC9taW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlci5oCitAQCAtMzE1LDYgKzMxNSw0 NSBAQCBjbGFzcyBNaW5pZHVtcENvbnRleHRNSVBTNjRXcml0ZXIgZmluYWwgOiBwdWJsaWMgTWlu aWR1bXBDb250ZXh0V3JpdGVyIHsKKyAgIERJU0FMTE9XX0NPUFlfQU5EX0FTU0lHTihNaW5pZHVt cENvbnRleHRNSVBTNjRXcml0ZXIpOworIH07CisgCisrY2xhc3MgTWluaWR1bXBDb250ZXh0UFBD NjRXcml0ZXIgZmluYWwgOiBwdWJsaWMgTWluaWR1bXBDb250ZXh0V3JpdGVyIHsKKysgcHVibGlj OgorKyAgTWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIoKTsKKysgIH5NaW5pZHVtcENvbnRleHRQ UEM2NFdyaXRlcigpIG92ZXJyaWRlOworKworKyAgLy8hIFxicmllZiBJbml0YWxpemVzIHRoZSBN aW5pZHVtcENvbnRleHRQUEM2NCBiYXNlZCBvbiBcYSBjb250ZXh0X3NuYXBzaG90LgorKyAgLy8h CisrICAvLyEgXHBhcmFtW2luXSBjb250ZXh0X3NuYXBzaG90IFRoZSBjb250ZXh0IHNuYXBzaG90 IHRvIHVzZSBhcyBzb3VyY2UgZGF0YS4KKysgIC8vIQorKyAgLy8hIFxub3RlIFZhbGlkIGluICNr U3RhdGVNdXRhYmxlLiBObyBtdXRhdGlvbiBvZiBjb250ZXh0KCkgbWF5IGJlIGRvbmUgYmVmb3Jl CisrICAvLyEgICAgIGNhbGxpbmcgdGhpcyBtZXRob2QsIGFuZCBpdCBpcyBub3Qgbm9ybWFsbHkg bmVjZXNzYXJ5IHRvIGFsdGVyCisrICAvLyEgICAgIGNvbnRleHQoKSBhZnRlciBjYWxsaW5nIHRo aXMgbWV0aG9kLgorKyAgdm9pZCBJbml0YWxpemVGcm9tU25hcHNob3QoY29uc3QgQ1BVQ29udGV4 dFBQQzY0KiBjb250ZXh0X3NuYXBzaG90KTsKKysKKysgIC8vISBcYnJpZWYgUmV0dXJucyBhIHBv aW50ZXIgdG8gdGhlIGNvbnRleHQgc3RydWN0dXJlIHRoYXQgdGhpcyBvYmplY3Qgd2lsbAorKyAg Ly8hICAgICB3cml0ZS4KKysgIC8vIQorKyAgLy8hIFxhdHRlbnRpb24gVGhpcyByZXR1cm5zIGEg bm9uLWBjb25zdGAgcG9pbnRlciB0byB0aGlzIG9iamVjdOKAmXMgcHJpdmF0ZQorKyAgLy8hICAg ICBkYXRhIHNvIHRoYXQgYSBjYWxsZXIgY2FuIHBvcHVsYXRlIHRoZSBjb250ZXh0IHN0cnVjdHVy ZSBkaXJlY3RseS4KKysgIC8vISAgICAgVGhpcyBpcyBkb25lIGJlY2F1c2UgcHJvdmlkaW5nIHNl dHRlciBpbnRlcmZhY2VzIHRvIGVhY2ggZmllbGQgaW4gdGhlCisrICAvLyEgICAgIGNvbnRleHQg c3RydWN0dXJlIHdvdWxkIGJlIHVud2llbGR5IGFuZCBjdW1iZXJzb21lLiBDYXJlIG11c3QgYmUg dGFrZW4KKysgIC8vISAgICAgdG8gcG9wdWxhdGUgdGhlIGNvbnRleHQgc3RydWN0dXJlIGNvcnJl Y3RseS4gVGhlIGNvbnRleHQgc3RydWN0dXJlCisrICAvLyEgICAgIG11c3Qgb25seSBiZSBtb2Rp ZmllZCB3aGlsZSB0aGlzIG9iamVjdCBpcyBpbiB0aGUgI2tTdGF0ZU11dGFibGUKKysgIC8vISAg ICAgc3RhdGUuCisrICBNaW5pZHVtcENvbnRleHRQUEM2NCogY29udGV4dCgpIHsgcmV0dXJuICZj b250ZXh0XzsgfQorKworKyBwcm90ZWN0ZWQ6CisrICAvLyBNaW5pZHVtcFdyaXRhYmxlOgorKyAg Ym9vbCBXcml0ZU9iamVjdChGaWxlV3JpdGVySW50ZXJmYWNlKiBmaWxlX3dyaXRlcikgb3ZlcnJp ZGU7CisrCisrICAvLyBNaW5pZHVtcENvbnRleHRXcml0ZXI6CisrICBzaXplX3QgQ29udGV4dFNp emUoKSBjb25zdCBvdmVycmlkZTsKKysKKysgcHJpdmF0ZToKKysgIE1pbmlkdW1wQ29udGV4dFBQ QzY0IGNvbnRleHRfOworKworKyAgRElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKE1pbmlkdW1wQ29u dGV4dFBQQzY0V3JpdGVyKTsKKyt9OworKworIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorIAor ICNlbmRpZiAgLy8gQ1JBU0hQQURfTUlOSURVTVBfTUlOSURVTVBfQ09OVEVYVF9XUklURVJfSF8K K2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1 bXBfY29udGV4dF93cml0ZXJfdGVzdC5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9t aW5pZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCitpbmRleCAzMjE2YTkwNmIu LmE5ZmNiZTlkOCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5p ZHVtcC9taW5pZHVtcF9jb250ZXh0X3dyaXRlcl90ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvY3Jh c2hwYWQvY3Jhc2hwYWQvbWluaWR1bXAvbWluaWR1bXBfY29udGV4dF93cml0ZXJfdGVzdC5jYwor QEAgLTIxMyw2ICsyMTMsMjEgQEAgVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIE1JUFM2NF9G cm9tU25hcHNob3QpIHsKKyAgICAgICBjb250ZXh0LCBFeHBlY3RNaW5pZHVtcENvbnRleHRNSVBT NjQsIGtTZWVkKTsKKyB9CisgCisrVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIFBQQzY0X1pl cm9zKSB7CisrICBFbXB0eUNvbnRleHRUZXN0PE1pbmlkdW1wQ29udGV4dFBQQzY0V3JpdGVyLCBN aW5pZHVtcENvbnRleHRQUEM2ND4oCisrICAgIEV4cGVjdE1pbmlkdW1wQ29udGV4dFBQQzY0KTsK Kyt9CisrCisrVEVTVChNaW5pZHVtcENvbnRleHRXcml0ZXIsIFBQQzY0X0Zyb21TbmFwc2hvdCkg eworKyAgY29uc3RleHByIHVpbnQzMl90IGtTZWVkID0gNjQ7CisrICBDUFVDb250ZXh0UFBDNjQg Y29udGV4dF9wcGM2NDsKKysgIENQVUNvbnRleHQgY29udGV4dDsKKysgIGNvbnRleHQucHBjNjQg PSAmY29udGV4dF9wcGM2NDsKKysgIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQoJmNvbnRleHQs IGtTZWVkKTsKKysgIEZyb21TbmFwc2hvdFRlc3Q8TWluaWR1bXBDb250ZXh0UFBDNjRXcml0ZXIs IE1pbmlkdW1wQ29udGV4dFBQQzY0PigKKysgICAgICBjb250ZXh0LCBFeHBlY3RNaW5pZHVtcENv bnRleHRQUEM2NCwga1NlZWQpOworK30KKysKKyB9ICAvLyBuYW1lc3BhY2UKKyB9ICAvLyBuYW1l c3BhY2UgdGVzdAorIH0gIC8vIG5hbWVzcGFjZSBjcmFzaHBhZAorZGlmZiAtLWdpdCB0aGlyZF9w YXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5pZHVtcF9taXNjX2luZm9fd3JpdGVy LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2Nf aW5mb193cml0ZXIuY2MKK2luZGV4IDA5NzRlM2RkZi4uYjcxZWM1ODgwIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL21pbmlkdW1wL21pbmlkdW1wX21pc2NfaW5mb193 cml0ZXIuY2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9taW5pZHVtcC9taW5p ZHVtcF9taXNjX2luZm9fd3JpdGVyLmNjCitAQCAtMTM1LDYgKzEzNSw4IEBAIHN0ZDo6c3RyaW5n IE1pbmlkdW1wTWlzY0luZm9EZWJ1Z0J1aWxkU3RyaW5nKCkgeworICAgc3RhdGljIGNvbnN0ZXhw ciBjaGFyIGtDUFVbXSA9ICJtaXBzIjsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFM2NEVM KQorICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtDUFVbXSA9ICJtaXBzNjQiOworKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjQpCisrICBzdGF0aWMgY29uc3RleHByIGNoYXIga0NQVVtdID0g InBwYzY0IjsKKyAjZWxzZQorICNlcnJvciBkZWZpbmUga0NQVSBmb3IgdGhpcyBDUFUKKyAjZW5k aWYKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2Fw dHVyZV9tZW1vcnkuY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2Fw dHVyZV9tZW1vcnkuY2MKK2luZGV4IDdhMWIyNzYzYy4uYmVkYThkYTllIDEwMDY0NAorLS0tIHRo aXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NhcHR1cmVfbWVtb3J5LmNjCisr KysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY2FwdHVyZV9tZW1vcnku Y2MKK0BAIC0xMTIsNiArMTEyLDExIEBAIHZvaWQgQ2FwdHVyZU1lbW9yeTo6UG9pbnRlZFRvQnlD b250ZXh0KGNvbnN0IENQVUNvbnRleHQmIGNvbnRleHQsCisgICBmb3IgKHNpemVfdCBpID0gMDsg aSA8IGJhc2U6OnNpemUoY29udGV4dC5taXBzZWwtPnJlZ3MpOyArK2kpIHsKKyAgICAgTWF5YmVD YXB0dXJlTWVtb3J5QXJvdW5kKGRlbGVnYXRlLCBjb250ZXh0Lm1pcHNlbC0+cmVnc1tpXSk7Cisg ICB9CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBNYXliZUNhcHR1 cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPm5pcCk7CisrICBmb3IgKHNp emVfdCBpID0gMDsgaSA8IGJhc2U6OnNpemUoY29udGV4dC5wcGM2NC0+cmVncyk7ICsraSkgewor KyAgICBNYXliZUNhcHR1cmVNZW1vcnlBcm91bmQoZGVsZWdhdGUsIGNvbnRleHQucHBjNjQtPnJl Z3NbaV0pOworKyAgfQorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmCitkaWZmIC0tZ2l0 IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUu aCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9jcHVfYXJjaGl0ZWN0dXJl LmgKK2luZGV4IDgxMWE3MjA5NS4uZjRmODM5ODFkIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAorKysrIHRoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9hcmNoaXRlY3R1cmUuaAorQEAgLTQz LDcgKzQzLDEwIEBAIGVudW0gQ1BVQXJjaGl0ZWN0dXJlIHsKKyAgIGtDUFVBcmNoaXRlY3R1cmVN SVBTRUwsCisgCisgICAvLyEgXGJyaWVmIDY0LWJpdCBNSVBTRUwuCistICBrQ1BVQXJjaGl0ZWN0 dXJlTUlQUzY0RUwKKysgIGtDUFVBcmNoaXRlY3R1cmVNSVBTNjRFTCwKKysKKysgIC8vISBcYnJp ZWYgNjQtYml0IFBQQzY0LgorKyAga0NQVUFyY2hpdGVjdHVyZVBQQzY0CisgfTsKKyAKKyB9ICAv LyBuYW1lc3BhY2UgY3Jhc2hwYWQKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvY3B1X2NvbnRleHQuY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hw YWQvc25hcHNob3QvY3B1X2NvbnRleHQuY2MKK2luZGV4IGM3NWI1NTU1ZS4uYWVhZGU1NzdhIDEw MDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250 ZXh0LmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2Nv bnRleHQuY2MKK0BAIC0xNjksNiArMTY5LDggQEAgdWludDY0X3QgQ1BVQ29udGV4dDo6SW5zdHJ1 Y3Rpb25Qb2ludGVyKCkgY29uc3QgeworICAgICAgIHJldHVybiBhcm0tPnBjOworICAgICBjYXNl IGtDUFVBcmNoaXRlY3R1cmVBUk02NDoKKyAgICAgICByZXR1cm4gYXJtNjQtPnBjOworKyAgICBj YXNlIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDoKKysgICAgICByZXR1cm4gcHBjNjQtPm5pcDsKKyAg ICAgZGVmYXVsdDoKKyAgICAgICBOT1RSRUFDSEVEKCk7CisgICAgICAgcmV0dXJuIH4wdWxsOwor QEAgLTE4NSw2ICsxODcsOCBAQCB1aW50NjRfdCBDUFVDb250ZXh0OjpTdGFja1BvaW50ZXIoKSBj b25zdCB7CisgICAgICAgcmV0dXJuIGFybS0+c3A7CisgICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVy ZUFSTTY0OgorICAgICAgIHJldHVybiBhcm02NC0+c3A7CisrICAgIGNhc2Uga0NQVUFyY2hpdGVj dHVyZVBQQzY0OgorKyAgICAgIHJldHVybiBwcGM2NC0+cmVnc1sxXTsKKyAgICAgZGVmYXVsdDoK KyAgICAgICBOT1RSRUFDSEVEKCk7CisgICAgICAgcmV0dXJuIH4wdWxsOworQEAgLTE5Niw2ICsy MDAsNyBAQCBib29sIENQVUNvbnRleHQ6OklzNjRCaXQoKSBjb25zdCB7CisgICAgIGNhc2Uga0NQ VUFyY2hpdGVjdHVyZVg4Nl82NDoKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0dXJlQVJNNjQ6Cisg ICAgIGNhc2Uga0NQVUFyY2hpdGVjdHVyZU1JUFM2NEVMOgorKyAgICBjYXNlIGtDUFVBcmNoaXRl Y3R1cmVQUEM2NDoKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgY2FzZSBrQ1BVQXJjaGl0ZWN0 dXJlWDg2OgorICAgICBjYXNlIGtDUFVBcmNoaXRlY3R1cmVBUk06CitkaWZmIC0tZ2l0IHRoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2NwdV9jb250ZXh0LmggdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvY3B1X2NvbnRleHQuaAoraW5kZXggZmIyM2M0 Njc5Li5lZWJlZGU2M2MgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvY3B1X2NvbnRleHQuaAorKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2NwdV9jb250ZXh0LmgKK0BAIC0zNTIsNiArMzUyLDI0IEBAIHN0cnVjdCBDUFVD b250ZXh0TUlQUzY0IHsKKyAgIHVpbnQ2NF90IGZpcjsKKyB9OworIAorKy8vISBcYnJpZWYgQSBj b250ZXh0IHN0cnVjdHVyZSBjYXJyeWluZyBQUEM2NCBDUFUgc3RhdGUuCisrc3RydWN0IENQVUNv bnRleHRQUEM2NCB7CisrICB1aW50NjRfdCBuaXA7CisrICB1aW50NjRfdCBtc3I7CisrICB1aW50 NjRfdCByZWdzWzMyXTsKKysgIHVpbnQ2NF90IGNjcjsKKysgIHVpbnQ2NF90IHhlcjsKKysgIHVp bnQ2NF90IGxuazsKKysgIHVpbnQ2NF90IGN0cjsKKysgIGRvdWJsZSBmcHJlZ3NbMzJdOworKyAg ZG91YmxlIGZwc2NyOworKyAgc3RydWN0IHsKKysgICAgdWludDEyOF9zdHJ1Y3Qgc2F2ZV92clsz Ml07CisrICAgIHVpbnQxMjhfc3RydWN0IHNhdmVfdnNjcjsKKysgICAgdWludDMyX3Qgc2F2ZV92 cnNhdmU7CisrICB9IHZyZWdzOworK307CisrCisgLy8hIFxicmllZiBBIGNvbnRleHQgc3RydWN0 dXJlIGNhcGFibGUgb2YgY2FycnlpbmcgdGhlIGNvbnRleHQgb2YgYW55IHN1cHBvcnRlZAorIC8v ISAgICAgQ1BVIGFyY2hpdGVjdHVyZS4KKyBzdHJ1Y3QgQ1BVQ29udGV4dCB7CitAQCAtMzgyLDYg KzQwMCw3IEBAIHN0cnVjdCBDUFVDb250ZXh0IHsKKyAgICAgQ1BVQ29udGV4dEFSTTY0KiBhcm02 NDsKKyAgICAgQ1BVQ29udGV4dE1JUFMqIG1pcHNlbDsKKyAgICAgQ1BVQ29udGV4dE1JUFM2NCog bWlwczY0OworKyAgICBDUFVDb250ZXh0UFBDNjQqIHBwYzY0OworICAgfTsKKyB9OworIAorZGlm ZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9jcHVf Y29udGV4dF9saW51eC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L2NwdV9jb250ZXh0X2xpbnV4LmgKK2luZGV4IDlmNDZhNDg5Ny4uYWE2NzdjNGViIDEwMDY0 NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2NwdV9j b250ZXh0X2xpbnV4LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9jcHVfY29udGV4dF9saW51eC5oCitAQCAtMTUsNiArMTUsNyBAQAorICNpZm5kZWYg Q1JBU0hQQURfU05BUFNIT1RfTElOVVhfQ1BVX0NPTlRFWFRfTElOVVhfSF8KKyAjZGVmaW5lIENS QVNIUEFEX1NOQVBTSE9UX0xJTlVYX0NQVV9DT05URVhUX0xJTlVYX0hfCisgCisrI2luY2x1ZGUg PGNzdHJpbmc+CisgI2luY2x1ZGUgImJ1aWxkL2J1aWxkX2NvbmZpZy5oIgorICNpbmNsdWRlICJz bmFwc2hvdC9jcHVfY29udGV4dC5oIgorICNpbmNsdWRlICJzbmFwc2hvdC9saW51eC9zaWduYWxf Y29udGV4dC5oIgorQEAgLTE3NCw2ICsxNzUsNzggQEAgdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4 dE1JUFMoCisgCisgI2VuZGlmICAvLyBBUkNIX0NQVV9NSVBTX0ZBTUlMWSB8fCBET1hZR0VOCisg CisrI2lmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKSB8fCBET1hZR0VOCisrCisrLy8h IFxicmllZiBJbml0YWxpemVzIGEgQ1BVQ29udGV4dFBQQzY0IHN0cnVjdHVyZSBmcm9tIG5hdGl2 ZSBjb250ZXh0CisrLy8hICAgICBzdHJ1Y3R1cmVzIG9uIExpbnV4LgorKy8vIQorKy8vISBccGFy YW1baW5dIHRocmVhZF9jb250ZXh0IFRoZSBuYXRpdmUgdGhyZWFkIGNvbnRleHQuCisrLy8hIFxw YXJhbVtpbl0gZmxvYXRfY29udGV4dCBUaGUgbmF0aXZlIGZsb2F0IGNvbnRleHQuCisrLy8hIFxw YXJhbVtpbl0gdmVjdG9yX2NvbnRleHQgVGhlIG5hdGl2ZSB2ZWN0b3IgY29udGV4dC4KKysvLyEg XHBhcmFtW291dF0gY29udGV4dCBUaGUgQ1BVQ29udGV4dFBQQzY0IHN0cnVjdHVyZSB0byBpbml0 YWxpemUuCisrdGVtcGxhdGUgPHR5cGVuYW1lIFRyYWl0cz4KKyt2b2lkIEluaXRpYWxpemVDUFVD b250ZXh0UFBDNjQoCisrICAgIGNvbnN0IFRocmVhZENvbnRleHQ6OnQ2NF90JiB0aHJlYWRfY29u dGV4dCwKKysgICAgY29uc3QgRmxvYXRDb250ZXh0OjpmNjRfdCYgZmxvYXRfY29udGV4dCwKKysg ICAgY29uc3QgVmVjdG9yQ29udGV4dDo6djY0X3QmIHZlY3Rvcl9jb250ZXh0LAorKyAgICB0eXBl bmFtZSBUcmFpdHM6OkNQVUNvbnRleHQqIGNvbnRleHQpIHsKKysKKysgIG1lbWNweShjb250ZXh0 LT5yZWdzLCB0aHJlYWRfY29udGV4dC5ncHIsIHNpemVvZihjb250ZXh0LT5yZWdzKSk7CisrICBj b250ZXh0LT5uaXAgPSB0aHJlYWRfY29udGV4dC5uaXA7CisrICBjb250ZXh0LT5tc3IgPSB0aHJl YWRfY29udGV4dC5tc3I7CisrICBjb250ZXh0LT5jY3IgPSB0aHJlYWRfY29udGV4dC5jY3I7Cisr ICBjb250ZXh0LT54ZXIgPSB0aHJlYWRfY29udGV4dC54ZXI7CisrICBjb250ZXh0LT5sbmsgPSB0 aHJlYWRfY29udGV4dC5sbms7CisrICBjb250ZXh0LT5jdHIgPSB0aHJlYWRfY29udGV4dC5jdHI7 CisrCisrICBtZW1jcHkoY29udGV4dC0+ZnByZWdzLCBmbG9hdF9jb250ZXh0LmZwcmVncywgc2l6 ZW9mKGNvbnRleHQtPmZwcmVncykpOworKyAgY29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250ZXh0 LmZwc2NyOworKworKyAgZm9yICh1aW50OF90IGkgPSAwOyBpIDwgMzI7IGkrKykgeworKyAgICBj b250ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0geworKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9j b250ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIpIHwKKysgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZy cmVnc1tpXVsxXSwKKysgICAgICAoKCh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1b Ml0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bM10KKysgICAg fTsKKysgIH0KKysgIGNvbnRleHQtPnZyZWdzLnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRleHQu dnJzYXZlOworKyAgY29udGV4dC0+dnJlZ3Muc2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2ZWN0 b3JfY29udGV4dC52c2NyLnZzY3Jfd29yZH07CisrfQorKworK3RlbXBsYXRlIDx0eXBlbmFtZSBU cmFpdHM+Cisrdm9pZCBJbml0aWFsaXplQ1BVQ29udGV4dFBQQzY0KAorKyAgICBjb25zdCBTaWdu YWxUaHJlYWRDb250ZXh0NjQgJnRocmVhZF9jb250ZXh0LAorKyAgICBjb25zdCBTaWduYWxGbG9h dENvbnRleHQ2NCAmZmxvYXRfY29udGV4dCwKKysgICAgY29uc3QgU2lnbmFsVmVjdG9yQ29udGV4 dDY0ICZ2ZWN0b3JfY29udGV4dCwKKysgICAgdHlwZW5hbWUgVHJhaXRzOjpDUFVDb250ZXh0KiBj b250ZXh0KSB7CisrCisrICBtZW1jcHkoY29udGV4dC0+cmVncywgdGhyZWFkX2NvbnRleHQucmVn cywgc2l6ZW9mKGNvbnRleHQtPnJlZ3MpKTsKKysgIGNvbnRleHQtPm5pcCA9IHRocmVhZF9jb250 ZXh0Lm5pcDsKKysgIGNvbnRleHQtPm1zciA9IHRocmVhZF9jb250ZXh0Lm1zcjsKKysgIGNvbnRl eHQtPmNjciA9IHRocmVhZF9jb250ZXh0LmNjcjsKKysgIGNvbnRleHQtPnhlciA9IHRocmVhZF9j b250ZXh0LnhlcjsKKysgIGNvbnRleHQtPmxuayA9IHRocmVhZF9jb250ZXh0LmxuazsKKysgIGNv bnRleHQtPmN0ciA9IHRocmVhZF9jb250ZXh0LmN0cjsKKysKKysgIG1lbWNweShjb250ZXh0LT5m cHJlZ3MsIGZsb2F0X2NvbnRleHQucmVncywgc2l6ZW9mKGNvbnRleHQtPmZwcmVncykpOworKyAg Y29udGV4dC0+ZnBzY3IgPSBmbG9hdF9jb250ZXh0LmZwc2NyOworKworKyAgZm9yICh1aW50OF90 IGkgPSAwOyBpIDwgMzI7IGkrKykgeworKyAgICBjb250ZXh0LT52cmVncy5zYXZlX3ZyW2ldID0g eworKyAgICAgICgoKHVpbnQ2NF90KXZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVswXSkgPDwgMzIp IHwKKysgICAgICAgIHZlY3Rvcl9jb250ZXh0LnZycmVnc1tpXVsxXSwKKysgICAgICAoKCh1aW50 NjRfdCl2ZWN0b3JfY29udGV4dC52cnJlZ3NbaV1bMl0pIDw8IDMyKSB8CisrICAgICAgICB2ZWN0 b3JfY29udGV4dC52cnJlZ3NbaV1bM10KKysgICAgfTsKKysgIH0KKysgIGNvbnRleHQtPnZyZWdz LnNhdmVfdnJzYXZlID0gdmVjdG9yX2NvbnRleHQudnJzYXZlOworKyAgY29udGV4dC0+dnJlZ3Mu c2F2ZV92c2NyID0gezAsICh1aW50NjRfdCl2ZWN0b3JfY29udGV4dC52c2NyLnZzY3Jfd29yZH07 CisrfQorKworKworKyNlbmRpZgorKworIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorIH0gIC8v IG5hbWVzcGFjZSBjcmFzaHBhZAorIAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9j cmFzaHBhZC9zbmFwc2hvdC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZGVidWdfcmVuZGV6dm91c190ZXN0 LmNjCitpbmRleCBkMzJiZDE5MzcuLjJkZDUzOGMyYiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9j cmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9kZWJ1Z19yZW5kZXp2b3VzX3Rlc3QuY2MK KysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9kZWJ1Z19y ZW5kZXp2b3VzX3Rlc3QuY2MKK0BAIC0xOTIsNiArMTkyLDggQEAgdm9pZCBUZXN0QWdhaW5zdFRh cmdldChQdHJhY2VDb25uZWN0aW9uKiBjb25uZWN0aW9uKSB7CisgICAgICAgICAgICAgICBkZXZp Y2UgPT0gMCAmJiBpbm9kZSA9PSAwICYmIG1hcHBpbmdfbmFtZSA9PSAiW3Zkc29dIjsKKyAjaWYg ZGVmaW5lZChBUkNIX0NQVV9YODYpCisgICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBr UHJlZml4W10gPSAibGludXgtZ2F0ZS5zby4iOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBD NjQpCisrICAgICAgICAgIHN0YXRpYyBjb25zdGV4cHIgY2hhciBrUHJlZml4W10gPSAibGludXgt dmRzbzY0LnNvLiI7CisgI2Vsc2UKKyAgICAgICAgICAgc3RhdGljIGNvbnN0ZXhwciBjaGFyIGtQ cmVmaXhbXSA9ICJsaW51eC12ZHNvLnNvLiI7CisgI2VuZGlmCitkaWZmIC0tZ2l0IHRoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9s aW51eC5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9leGNl cHRpb25fc25hcHNob3RfbGludXguY2MKK2luZGV4IGNkNDBiM2IxMi4uNmJjZjIzYjZmIDEwMDY0 NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2Vw dGlvbl9zbmFwc2hvdF9saW51eC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5jYworQEAgLTMyMyw2ICsz MjMsNjkgQEAgYm9vbCBFeGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0 VHJhaXRzNjQ+KAorICAgICAgIHJlYWRlciwgY29udGV4dF9hZGRyZXNzLCBjb250ZXh0Xy5taXBz NjQpOworIH0KKyAKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysKKyt0 ZW1wbGF0ZSA8dHlwZW5hbWUgVHJhaXRzPgorK3N0YXRpYyBib29sIFJlYWRDb250ZXh0KFByb2Nl c3NSZWFkZXJMaW51eCogcmVhZGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgIExpbnV4Vk1B ZGRyZXNzIGNvbnRleHRfYWRkcmVzcywKKysgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFt ZSBUcmFpdHM6OkNQVUNvbnRleHQqIGRlc3RfY29udGV4dCkgeworKyAgY29uc3QgUHJvY2Vzc01l bW9yeSogbWVtb3J5ID0gcmVhZGVyLT5NZW1vcnkoKTsKKysKKysgIExpbnV4Vk1BZGRyZXNzIGdw X3JlZ3NfYWRkcmVzcyA9IGNvbnRleHRfYWRkcmVzcyArCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBvZmZzZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldG9mKHR5cGVuYW1lIFRyYWl0czo6TUNvbnRl eHQsIGdwX3JlZ3MpOworKworKyAgdHlwZW5hbWUgVHJhaXRzOjpTaWduYWxUaHJlYWRDb250ZXh0 IHRocmVhZF9jb250ZXh0OworKyAgaWYgKCFtZW1vcnktPlJlYWQoZ3BfcmVnc19hZGRyZXNzLCBz aXplb2YodGhyZWFkX2NvbnRleHQpLCAmdGhyZWFkX2NvbnRleHQpKSB7CisrICAgIExPRyhFUlJP UikgPDwgIkNvdWxkbid0IHJlYWQgZ3BfcmVncyEiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9 CisrCisrICBMaW51eFZNQWRkcmVzcyBmcF9yZWdzX2FkZHJlc3MgPSBjb250ZXh0X2FkZHJlc3Mg KworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0b2YoVUNvbnRleHQs IG1jb250ZXh0KSArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXRv Zih0eXBlbmFtZSBUcmFpdHM6Ok1Db250ZXh0LCBmcF9yZWdzKTsKKysKKysgIHR5cGVuYW1lIFRy YWl0czo6U2lnbmFsRmxvYXRDb250ZXh0IGZwX2NvbnRleHQ7CisrICBpZiAoIW1lbW9yeS0+UmVh ZChmcF9yZWdzX2FkZHJlc3MsIHNpemVvZihmcF9jb250ZXh0KSwgJmZwX2NvbnRleHQpKSB7Cisr ICAgIExPRyhFUlJPUikgPDwgIkNvdWxkbid0IHJlYWQgZnBfcmVncyEiOworKyAgICByZXR1cm4g ZmFsc2U7CisrICB9CisrCisrICBMaW51eFZNQWRkcmVzcyB2X3JlZ3NfcHRyX2FkZHJlc3MgPSBj b250ZXh0X2FkZHJlc3MgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZz ZXRvZihVQ29udGV4dCwgbWNvbnRleHQpICsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2Zmc2V0b2YodHlwZW5hbWUgVHJhaXRzOjpNQ29udGV4dCwgdm14X3Jlc2VydmUpICsg ODsKKysKKysgIHR5cGVuYW1lIFRyYWl0czo6U2lnbmFsVmVjdG9yQ29udGV4dCB2X2NvbnRleHQ7 CisrICBpZiAoIW1lbW9yeS0+UmVhZCh2X3JlZ3NfcHRyX2FkZHJlc3MsIHNpemVvZih2X2NvbnRl eHQpLCAmdl9jb250ZXh0KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJDb3VsZG4ndCByZWFkIHZf cmVncyEiOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrCisrICBJbml0aWFsaXplQ1BVQ29u dGV4dFBQQzY0PENvbnRleHRUcmFpdHM2ND4odGhyZWFkX2NvbnRleHQsIGZwX2NvbnRleHQsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZfY29udGV4dCwgZGVzdF9jb250ZXh0KTsKKysK KysgIHJldHVybiB0cnVlOworK30KKysKKyt0ZW1wbGF0ZTw+CisrYm9vbCBFeGNlcHRpb25TbmFw c2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzNjQ+KAorKyAgICBQcm9jZXNzUmVh ZGVyTGludXgqIHJlYWRlciwKKysgICAgTGludXhWTUFkZHJlc3MgY29udGV4dF9hZGRyZXNzKSB7 CisrICBjb250ZXh0Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7CisrICBj b250ZXh0Xy5wcGM2NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsKKysKKysgIHJldHVybiBpbnRl cm5hbDo6UmVhZENvbnRleHQ8Q29udGV4dFRyYWl0czY0PigKKysgICAgICByZWFkZXIsIGNvbnRl eHRfYWRkcmVzcywgY29udGV4dF8ucHBjNjQpOworK30KKysKKyt0ZW1wbGF0ZTw+CisrYm9vbCBF eGNlcHRpb25TbmFwc2hvdExpbnV4OjpSZWFkQ29udGV4dDxDb250ZXh0VHJhaXRzMzI+KAorKyAg ICBQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlciwKKysgICAgTGludXhWTUFkZHJlc3MgY29udGV4 dF9hZGRyZXNzKSB7CisrICAvLyBQUEM2NCBpcyA2NC1iaXQKKysgIHJldHVybiBmYWxzZTsKKyt9 CisrCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCisgCisgYm9vbCBFeGNlcHRpb25T bmFwc2hvdExpbnV4OjpJbml0aWFsaXplKFByb2Nlc3NSZWFkZXJMaW51eCogcHJvY2Vzc19yZWFk ZXIsCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xp bnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9saW51eC5oCitpbmRleCBlYTBj ZDIxMDYuLmU0MmRmNTIwZiAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC9zbmFwc2hvdC9saW51eC9leGNlcHRpb25fc25hcHNob3RfbGludXguaAorKysrIHRoaXJkX3Bh cnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2VwdGlvbl9zbmFwc2hvdF9s aW51eC5oCitAQCAtODQsNiArODQsOCBAQCBjbGFzcyBFeGNlcHRpb25TbmFwc2hvdExpbnV4IGZp bmFsIDogcHVibGljIEV4Y2VwdGlvblNuYXBzaG90IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X01JUFNfRkFNSUxZKQorICAgICBDUFVDb250ZXh0TUlQUyBtaXBzZWw7CisgICAgIENQVUNvbnRl eHRNSVBTNjQgbWlwczY0OworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQor KyAgICBDUFVDb250ZXh0UFBDNjQgcHBjNjQ7CisgI2VuZGlmCisgICB9IGNvbnRleHRfdW5pb25f OworICAgQ1BVQ29udGV4dCBjb250ZXh0XzsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3Qu Y2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9u X3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKK2luZGV4IGMxNzE3MGI0My4uYjZhNzE0Y2M2IDEwMDY0 NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L2V4Y2Vw dGlvbl9zbmFwc2hvdF9saW51eF90ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvc25hcHNob3QvbGludXgvZXhjZXB0aW9uX3NuYXBzaG90X2xpbnV4X3Rlc3QuY2MKK0BA IC0yOTYsNyArMjk2LDI4IEBAIHZvaWQgRXhwZWN0Q29udGV4dChjb25zdCBDUFVDb250ZXh0JiBh Y3R1YWwsIGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGV4cGVjdGVkKSB7CisgICAgICAgICAgICAg MCk7CisgI3VuZGVmIENQVV9BUkNIX05BTUUKKyB9CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9Q UEM2NF9GQU1JTFkpCisrdXNpbmcgTmF0aXZlQ1BVQ29udGV4dCA9IHVjb250ZXh0X3Q7CisrCisr dm9pZCBJbml0aWFsaXplQ29udGV4dChOYXRpdmVDUFVDb250ZXh0KiBjb250ZXh0KSB7CisrICBm b3IgKHNpemVfdCByZWcgPSAwOyByZWcgPCAzMjsgKytyZWcpIHsKKysgICAgY29udGV4dC0+dWNf bWNvbnRleHQuZ3BfcmVnc1tyZWddID0gcmVnOworKyAgfQorKworKyAgbWVtc2V0KCZjb250ZXh0 LT51Y19tY29udGV4dC5mcF9yZWdzLCA0NCwKKysgICAgICBzaXplb2YoY29udGV4dC0+dWNfbWNv bnRleHQuZnBfcmVncykpOworK30KKyAKKyt2b2lkIEV4cGVjdENvbnRleHQoY29uc3QgQ1BVQ29u dGV4dCYgYWN0dWFsLCBjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBleHBlY3RlZCkgeworKyAgRVhQ RUNUX0VRKGFjdHVhbC5hcmNoaXRlY3R1cmUsIGtDUFVBcmNoaXRlY3R1cmVQUEM2NCk7CisrCisr ICBmb3IgKHNpemVfdCByZWcgPSAwOyByZWcgPCAzMjsgKytyZWcpIHsKKysgICAgRVhQRUNUX0VR KGFjdHVhbC5wcGM2NC0+cmVnc1tyZWddLCBleHBlY3RlZC51Y19tY29udGV4dC5ncF9yZWdzW3Jl Z10pOworKyAgfQorKworKyAgRVhQRUNUX0VRKG1lbWNtcChhY3R1YWwucHBjNjQtPmZwcmVncywg ZXhwZWN0ZWQudWNfbWNvbnRleHQuZnBfcmVncywKKysgICAgICAgICAgICBzaXplb2YoYWN0dWFs LnBwYzY0LT5mcHJlZ3MpKSwgMCk7CisrfQorICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlm CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3NuYXBzaG90L2xpbnV4 L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3Nu YXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCitpbmRleCBlZTI0NmU4YmMuLjk1 NTVkY2UwNCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hv dC9saW51eC9wcm9jZXNzX3JlYWRlcl9saW51eC5jYworKysrIHRoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3Byb2Nlc3NfcmVhZGVyX2xpbnV4LmNjCitAQCAtMTA4 LDYgKzEwOCw4IEBAIHZvaWQgUHJvY2Vzc1JlYWRlckxpbnV4OjpUaHJlYWQ6OkluaXRpYWxpemVT dGFjayhQcm9jZXNzUmVhZGVyTGludXgqIHJlYWRlcikgeworICNlbGlmIGRlZmluZWQoQVJDSF9D UFVfTUlQU19GQU1JTFkpCisgICBzdGFja19wb2ludGVyID0gcmVhZGVyLT5JczY0Qml0KCkgPyB0 aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50NjQucmVnc1syOV0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICA6IHRocmVhZF9pbmZvLnRocmVhZF9jb250ZXh0LnQzMi5yZWdz WzI5XTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHN0YWNrX3Bv aW50ZXIgPSB0aHJlYWRfaW5mby50aHJlYWRfY29udGV4dC50NjQuZ3ByWzFdOworICNlbHNlCisg I2Vycm9yIFBvcnQuCisgI2VuZGlmCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2Ny YXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmggdGhpcmRfcGFydHkvY3Jhc2hw YWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAoraW5kZXggMTEwMDI0 NjgwLi5hMWYyZGEyNTkgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvc2lnbmFsX2NvbnRleHQuaAorKysrIHRoaXJkX3BhcnR5L2NyYXNocGFk L2NyYXNocGFkL3NuYXBzaG90L2xpbnV4L3NpZ25hbF9jb250ZXh0LmgKK0BAIC00MjIsNiArNDIy LDg5IEBAIHN0YXRpY19hc3NlcnQob2Zmc2V0b2YoVUNvbnRleHQ8Q29udGV4dFRyYWl0czY0Piwg bWNvbnRleHQuZnByZWdzKSA9PQorICAgICAgICAgICAgICAgImNvbnRleHQgb2Zmc2V0IG1pc21h dGNoIik7CisgI2VuZGlmCisgCisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrCisrc3RydWN0IFNpZ25hbFRocmVhZENvbnRleHQ2NCB7CisrICB1aW50NjRfdCByZWdzWzMy XTsKKysgIHVpbnQ2NF90IG5pcDsKKysgIHVpbnQ2NF90IG1zcjsKKysgIHVpbnQ2NF90IG9yaWdf cjM7CisrICB1aW50NjRfdCBjdHI7CisrICB1aW50NjRfdCBsbms7CisrICB1aW50NjRfdCB4ZXI7 CisrICB1aW50NjRfdCBjY3I7CisrICB1aW50NjRfdCBzb2Z0ZTsKKysgIHVpbnQ2NF90IHRyYXA7 CisrICB1aW50NjRfdCBkYXI7CisrICB1aW50NjRfdCBkc2lzcjsKKysgIHVpbnQ2NF90IHJlc3Vs dDsKKysgIHVpbnQ2NF90IGRzY3I7CisrICB1aW50NjRfdCBmcHIwWzNdOworK307CisrCisrc3Ry dWN0IFNpZ25hbEZsb2F0Q29udGV4dDY0IHsKKysgIGRvdWJsZSByZWdzWzMyXTsKKysgIGRvdWJs ZSBmcHNjcjsKKyt9OworKworK3N0cnVjdCBTaWduYWxWZWN0b3JDb250ZXh0NjQgeworKyAgaW50 MzJfdCB2cnJlZ3NbMzJdWzRdOworKyAgc3RydWN0IHsKKysgICAgaW50MzJfdCBfX3BhZFszXTsK KysgICAgaW50MzJfdCB2c2NyX3dvcmQ7CisrICB9IHZzY3I7CisrICBpbnQzMl90IHZyc2F2ZTsK KysgIGludDMyX3QgX19wYWRbM107CisrfSBfX2F0dHJpYnV0ZV9fKChfX2FsaWduZWRfXygxNikp KTsKKysKKysKKysjcHJhZ21hIHBhY2socG9wKQorK3N0cnVjdCBNQ29udGV4dDY0IHsKKysgIHVp bnQ2NF90IHJlc2VydmVkWzRdOworKyAgaW50MzJfdCBzaWduYWw7CisrICBpbnQzMl90IF9fcGFk MDsKKysgIHVpbnQ2NF90IGhhbmRsZXI7CisrICB1aW50NjRfdCBvbGRtYXNrOworKyAgdWludDY0 X3QgcHRfcmVnc19wdHI7CisrICBTaWduYWxUaHJlYWRDb250ZXh0NjQgZ3BfcmVnczsKKysgIFNp Z25hbEZsb2F0Q29udGV4dDY0ICBmcF9yZWdzOworKyAgU2lnbmFsVmVjdG9yQ29udGV4dDY0ICp2 X3JlZ3M7CisrICBpbnQ2NF90IHZteF9yZXNlcnZlWzY5XTsKKyt9OworKworK3N0cnVjdCBDb250 ZXh0VHJhaXRzNjQgOiBwdWJsaWMgVHJhaXRzNjQgeworKyAgdXNpbmcgTUNvbnRleHQgPSBNQ29u dGV4dDY0OworKyAgdXNpbmcgU2lnbmFsVGhyZWFkQ29udGV4dCA9IFNpZ25hbFRocmVhZENvbnRl eHQ2NDsKKysgIHVzaW5nIFNpZ25hbEZsb2F0Q29udGV4dCA9IFNpZ25hbEZsb2F0Q29udGV4dDY0 OworKyAgdXNpbmcgU2lnbmFsVmVjdG9yQ29udGV4dCA9IFNpZ25hbFZlY3RvckNvbnRleHQ2NDsK KysgIHVzaW5nIENQVUNvbnRleHQgPSBDUFVDb250ZXh0UFBDNjQ7CisrfTsKKysKKytzdHJ1Y3Qg Q29udGV4dFRyYWl0czMyIDogcHVibGljIFRyYWl0czMyIHt9OworKworK3N0cnVjdCBVQ29udGV4 dCB7CisrICB1aW50NjRfdCBmbGFnczsKKysgIHVpbnQ2NF90IGxpbms7CisrICBTaWduYWxTdGFj azxDb250ZXh0VHJhaXRzNjQ+IHN0YWNrOworKyAgU2lnc2V0PENvbnRleHRUcmFpdHM2ND4gc2ln bWFzazsKKysgIE1Db250ZXh0NjQgbWNvbnRleHQ7CisrfTsKKysjcHJhZ21hIHBhY2socHVzaCwg MSkKKysKKytzdGF0aWNfYXNzZXJ0KHNpemVvZihVQ29udGV4dCkgPT0gc2l6ZW9mKHVjb250ZXh0 X3QpLAorKyAgICAgICAgICAgICAgInVjb250ZXh0X3Qgc2l6ZSBtaXNtYXRjaCIpOworK3N0YXRp Y19hc3NlcnQoc2l6ZW9mKE1Db250ZXh0NjQpID09IHNpemVvZihtY29udGV4dF90KSwKKysgICAg ICAgICAgICAgICJtY29udGV4dF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNp emVvZihTaWduYWxUaHJlYWRDb250ZXh0NjQpID09IHNpemVvZihncmVnc2V0X3QpLAorKyAgICAg ICAgICAgICAgImdyZWdzZXRfdCBzaXplIG1pc21hdGNoIik7Cisrc3RhdGljX2Fzc2VydChzaXpl b2YoU2lnbmFsRmxvYXRDb250ZXh0NjQpID09IHNpemVvZihmcHJlZ3NldF90KSwKKysgICAgICAg ICAgICAgICJmcHJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KHNpemVv ZihTaWduYWxWZWN0b3JDb250ZXh0NjQpID09IHNpemVvZih2cnJlZ3NldF90KSwKKysgICAgICAg ICAgICAgICJ2cnJlZ3NldF90IHNpemUgbWlzbWF0Y2giKTsKKytzdGF0aWNfYXNzZXJ0KG9mZnNl dG9mKFVDb250ZXh0LCBtY29udGV4dCkgPT0KKysgICAgICAgICAgICAgIG9mZnNldG9mKHVjb250 ZXh0X3QsIHVjX21jb250ZXh0KSwgIm1jb250ZXh0IG9mZnNldCBtaXNtYXRjaCIpOworK3N0YXRp Y19hc3NlcnQob2Zmc2V0b2YoTUNvbnRleHQ2NCwgZ3BfcmVncykgPT0KKysgICAgICAgICAgICAg IG9mZnNldG9mKG1jb250ZXh0X3QsIGdwX3JlZ3MpLCAiZ3BfcmVncyBvZmZzZXQgbWlzbWF0Y2gi KTsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlM WQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51 eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvc3lzdGVtX3NuYXBzaG90X2xpbnV4LmNjCitpbmRleCBhOTlkYTNlNGIu LjAzYjk3MzA4MyAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFz aHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC9zeXN0ZW1fc25hcHNob3RfbGludXguY2MKK0BA IC0yMDQsNiArMjA0LDggQEAgQ1BVQXJjaGl0ZWN0dXJlIFN5c3RlbVNuYXBzaG90TGludXg6Okdl dENQVUFyY2hpdGVjdHVyZSgpIGNvbnN0IHsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKQorICAgcmV0dXJuIHByb2Nlc3NfcmVhZGVyXy0+SXM2NEJpdCgpID8ga0NQVUFyY2hp dGVjdHVyZU1JUFM2NEVMCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBr Q1BVQXJjaGl0ZWN0dXJlTUlQU0VMOworKyNlbGlmIGRlZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFN SUxZKQorKyAgcmV0dXJuIGtDUFVBcmNoaXRlY3R1cmVQUEM2NDsKKyAjZWxzZQorICNlcnJvciBw b3J0IHRvIHlvdXIgYXJjaGl0ZWN0dXJlCisgI2VuZGlmCitAQCAtMjE5LDYgKzIyMSw5IEBAIHVp bnQzMl90IFN5c3RlbVNuYXBzaG90TGludXg6OkNQVVJldmlzaW9uKCkgY29uc3QgeworICNlbGlm IGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICAvLyBOb3QgaW1wbGVtZW50YWJsZSBv biBNSVBTCisgICByZXR1cm4gMDsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlM WSkKKysgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKKysgIHJldHVybiAwOworICNl bHNlCisgI2Vycm9yIHBvcnQgdG8geW91ciBhcmNoaXRlY3R1cmUKKyAjZW5kaWYKK0BAIC0yMzks NiArMjQ0LDkgQEAgc3RkOjpzdHJpbmcgU3lzdGVtU25hcHNob3RMaW51eDo6Q1BVVmVuZG9yKCkg Y29uc3QgeworICNlbGlmIGRlZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICAvLyBOb3Qg aW1wbGVtZW50YWJsZSBvbiBNSVBTCisgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKKysjZWxpZiBk ZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQg b24gUFBDNjQKKysgIHJldHVybiBzdGQ6OnN0cmluZygpOworICNlbHNlCisgI2Vycm9yIHBvcnQg dG8geW91ciBhcmNoaXRlY3R1cmUKKyAjZW5kaWYKK0BAIC0zNzIsNiArMzgwLDkgQEAgYm9vbCBT eXN0ZW1TbmFwc2hvdExpbnV4OjpOWEVuYWJsZWQoKSBjb25zdCB7CisgI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIC8vIE5vdCBpbXBsZW1lbnRhYmxlIG9uIE1JUFMKKyAg IHJldHVybiBmYWxzZTsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysg IC8vIE5vdCB5ZXQgaW1wbGVtZW50ZWQgb24gUFBDNjQKKysgIHJldHVybiBmYWxzZTsKKyAjZWxz ZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2X0ZBTUlMWQorZGlmZiAt LWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90ZXN0X21v ZHVsZXMuY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGVz dF9tb2R1bGVzLmNjCitpbmRleCBiMjQ1MGMyMDYuLjdiYTc4YjJhZSAxMDA2NDQKKy0tLSB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90ZXN0X21vZHVsZXMuY2MK KysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90ZXN0X21v ZHVsZXMuY2MKK0BAIC0xMTAsNiArMTEwLDggQEAgYm9vbCBXcml0ZVRlc3RNb2R1bGUoY29uc3Qg YmFzZTo6RmlsZVBhdGgmIG1vZHVsZV9wYXRoLAorICAgbW9kdWxlLmVoZHIuZV9tYWNoaW5lID0g RU1fQUFSQ0g2NDsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNFTCkgfHwgZGVmaW5lZChB UkNIX0NQVV9NSVBTNjRFTCkKKyAgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9IEVNX01JUFM7Cisr I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NCkKKysgIG1vZHVsZS5laGRyLmVfbWFjaGluZSA9 IEVNX1BQQzY0OworICNlbmRpZgorIAorICAgbW9kdWxlLmVoZHIuZV92ZXJzaW9uID0gRVZfQ1VS UkVOVDsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3Qv bGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNo cGFkL3NuYXBzaG90L2xpbnV4L3RocmVhZF9zbmFwc2hvdF9saW51eC5jYworaW5kZXggZTNlMmJl YmRkLi44ZWY0Mzc1MmUgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv c25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNjCisrKysgdGhpcmRfcGFydHkv Y3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFkX3NuYXBzaG90X2xpbnV4LmNj CitAQCAtMTg2LDYgKzE4NiwxNCBAQCBib29sIFRocmVhZFNuYXBzaG90TGludXg6OkluaXRpYWxp emUoUHJvY2Vzc1JlYWRlckxpbnV4KiBwcm9jZXNzX3JlYWRlciwKKyAgICAgICAgIHRocmVhZC50 aHJlYWRfaW5mby5mbG9hdF9jb250ZXh0LmYzMiwKKyAgICAgICAgIGNvbnRleHRfLm1pcHNlbCk7 CisgICB9CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICBjb250ZXh0 Xy5hcmNoaXRlY3R1cmUgPSBrQ1BVQXJjaGl0ZWN0dXJlUFBDNjQ7CisrICBjb250ZXh0Xy5wcGM2 NCA9ICZjb250ZXh0X3VuaW9uXy5wcGM2NDsKKysgIEluaXRpYWxpemVDUFVDb250ZXh0UFBDNjQ8 Q29udGV4dFRyYWl0czY0PigKKysgICAgICB0aHJlYWQudGhyZWFkX2luZm8udGhyZWFkX2NvbnRl eHQudDY0LAorKyAgICAgIHRocmVhZC50aHJlYWRfaW5mby5mbG9hdF9jb250ZXh0LmY2NCwKKysg ICAgICB0aHJlYWQudGhyZWFkX2luZm8udmVjdG9yX2NvbnRleHQudjY0LAorKyAgICAgIGNvbnRl eHRfLnBwYzY0KTsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZgorZGlmZiAtLWdpdCB0 aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90aHJlYWRfc25hcHNo b3RfbGludXguaCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFwc2hvdC9saW51eC90 aHJlYWRfc25hcHNob3RfbGludXguaAoraW5kZXggNDRjYzZmNmQ5Li5kNDEzNjQ2MWUgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvc25hcHNob3QvbGludXgvdGhyZWFk X3NuYXBzaG90X2xpbnV4LmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC9zbmFw c2hvdC9saW51eC90aHJlYWRfc25hcHNob3RfbGludXguaAorQEAgLTY4LDYgKzY4LDggQEAgY2xh c3MgVGhyZWFkU25hcHNob3RMaW51eCBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTbmFwc2hvdCB7Cisg I2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgICAgQ1BVQ29udGV4dE1JUFMg bWlwc2VsOworICAgICBDUFVDb250ZXh0TUlQUzY0IG1pcHM2NDsKKysjZWxpZiBkZWZpbmVkKEFS Q0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgQ1BVQ29udGV4dFBQQzY0IHBwYzY0OworICNlbHNl CisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitkaWZmIC0t Z2l0IHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3Zl Y3Rvci5jYyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L2F1eGlsaWFy eV92ZWN0b3IuY2MKK2luZGV4IGQzZDVlYmRmYi4uM2ZkNzMwY2I1IDEwMDY0NAorLS0tIHRoaXJk X3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3ZlY3Rvci5jYwor KysrIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbGludXgvYXV4aWxpYXJ5X3Zl Y3Rvci5jYworQEAgLTU2LDYgKzU2LDExIEBAIGJvb2wgQXV4aWxpYXJ5VmVjdG9yOjpSZWFkKFB0 cmFjZUNvbm5lY3Rpb24qIGNvbm5lY3Rpb24pIHsKKyAgICAgaWYgKHR5cGUgPT0gQVRfSUdOT1JF KSB7CisgICAgICAgY29udGludWU7CisgICAgIH0KKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCisrICAgIGlmICh0eXBlID09IEFUX0lHTk9SRVBQQykgeworKyAgICAgIGNvbnRp bnVlOworKyAgICB9CisrI2VuZGlmCisgICAgIGlmICghTWFwSW5zZXJ0T3JSZXBsYWNlKCZ2YWx1 ZXNfLCB0eXBlLCB2YWx1ZSwgbnVsbHB0cikpIHsKKyAgICAgICBMT0coRVJST1IpIDw8ICJkdXBs aWNhdGUgYXV4diBlbnRyeSI7CisgICAgICAgcmV0dXJuIGZhbHNlOworZGlmZiAtLWdpdCB0aGly ZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3B0cmFjZXIuY2MgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9saW51eC9wdHJhY2VyLmNjCitpbmRleCA1NTdlMGQz NjMuLjA4YWU0MzRiOCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91 dGlsL2xpbnV4L3B0cmFjZXIuY2MKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91 dGlsL2xpbnV4L3B0cmFjZXIuY2MKK0BAIC0zOTgsNiArMzk4LDY0IEBAIGJvb2wgR2V0VGhyZWFk QXJlYTY0KHBpZF90IHRpZCwKKyAgIHJldHVybiB0cnVlOworIH0KKyAKKysjZWxpZiBkZWZpbmVk KEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysvLyBQUEM2NCBoYXMgaGFkIEhBVkVfQVJDSF9UUkFD RUhPT0sgc2V0IHNpbmNlIDIuNi4yNyAoZXZlbiBiZWZvcmUgeDg2IGhhZCBpdCkuCisrLy8gVGhh dCBtZWFucyB3ZSBjYW4gc2ltcGx5IHVzZSBQVFJBQ0VfR0VUUkVHRVNFVC4KKysKKyt0ZW1wbGF0 ZSA8dHlwZW5hbWUgRGVzdGluYXRpb24+CisrYm9vbCBHZXRSZWdpc3RlclNldChwaWRfdCB0aWQs IGludCBzZXQsIERlc3RpbmF0aW9uKiBkZXN0LCBib29sIGNhbl9sb2cpIHsKKysgIGlvdmVjIGlv djsKKysgIGlvdi5pb3ZfYmFzZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGRlc3QpOworKyAg aW92Lmlvdl9sZW4gPSBzaXplb2YoKmRlc3QpOworKyAgaWYgKHB0cmFjZShQVFJBQ0VfR0VUUkVH U0VULCB0aWQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHNldCksICZpb3YpICE9IDApIHsKKysg ICAgUExPR19JRihFUlJPUiwgY2FuX2xvZykgPDwgInB0cmFjZSI7CisrICAgIHJldHVybiBmYWxz ZTsKKysgIH0KKysgIGlmIChpb3YuaW92X2xlbiAhPSBzaXplb2YoKmRlc3QpKSB7CisrICAgIExP R19JRihFUlJPUiwgY2FuX2xvZykgPDwgIlVuZXhwZWN0ZWQgcmVnaXN0ZXJzIHNpemUiOworKyAg ICByZXR1cm4gZmFsc2U7CisrICB9CisrICByZXR1cm4gdHJ1ZTsKKyt9CisrCisrYm9vbCBHZXRW ZWN0b3JSZWdpc3RlcnM2NChwaWRfdCB0aWQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICBW ZWN0b3JDb250ZXh0KiBjb250ZXh0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBj YW5fbG9nKSB7CisrICByZXR1cm4gR2V0UmVnaXN0ZXJTZXQodGlkLCBOVF9QUENfVk1YLCAmY29u dGV4dC0+djY0LCBjYW5fbG9nKTsKKyt9CisrCisrYm9vbCBHZXRGbG9hdGluZ1BvaW50UmVnaXN0 ZXJzNjQocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0 Q29udGV4dCogY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IGNhbl9sb2cpIHsKKysgIHJldHVybiBHZXRSZWdpc3RlclNldCh0aWQsIE5UX1BSRlBSRUcsICZj b250ZXh0LT5mNjQsIGNhbl9sb2cpOworK30KKysKKytib29sIEdldFRocmVhZEFyZWE2NChwaWRf dCB0aWQsCisrICAgICAgICAgICAgICAgICAgICAgY29uc3QgVGhyZWFkQ29udGV4dCYgY29udGV4 dCwKKysgICAgICAgICAgICAgICAgICAgICBMaW51eFZNQWRkcmVzcyogYWRkcmVzcywKKysgICAg ICAgICAgICAgICAgICAgICBib29sIGNhbl9sb2cpIHsKKysgIC8vIFBQQzY0IGRvZXNuJ3QgaGF2 ZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIHNpbmNlIHRoZSB0aHJlYWQgcG9pbnRlcgorKyAgLy8g aXMgc3RvcmVkIGluIEdQUiAxMy4KKysgIFRocmVhZENvbnRleHQ6OnQ2NF90IHRjOworKyAgaWYg KCFHZXRSZWdpc3RlclNldCh0aWQsIE5UX1BSU1RBVFVTLCAmdGMsIGNhbl9sb2cpKSB7CisrICAg IExPR19JRihFUlJPUiwgY2FuX2xvZykgPDwgIlVuYWJsZSB0byBnZXQgdGhyZWFkIHBvaW50ZXIh IjsKKysgICAgcmV0dXJuIGZhbHNlOworKyAgfQorKworKyAgKmFkZHJlc3MgPSB0Yy5ncHJbMTNd OworKworKyAgcmV0dXJuIHRydWU7CisrfQorKworKy8vIFN0dWJzIGZvciAzMi1iaXQgZnVuY3Rp b25zIG5vdCBhcHBsaWNhYmxlIG9uIFBQQzY0CisrYm9vbCBHZXRGbG9hdGluZ1BvaW50UmVnaXN0 ZXJzMzIocGlkX3QgdGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0 Q29udGV4dCogY29udGV4dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IGNhbl9sb2cpIHsgcmV0dXJuIGZhbHNlOyB9CisrYm9vbCBHZXRUaHJlYWRBcmVhMzIocGlkX3Qg dGlkLAorKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFRocmVhZENvbnRleHQgJmNvbnRleHQs CisrICAgICAgICAgICAgICAgICAgICAgTGludXhWTUFkZHJlc3MgKmFkZHJlc3MsCisrICAgICAg ICAgICAgICAgICAgICAgYm9vbCBjYW5fbG9nKSB7IHJldHVybiBmYWxzZTsgfQorKworICNlbHNl CisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODZfRkFNSUxZCitAQCAtNDk0 LDYgKzU1Miw5IEBAIGJvb2wgUHRyYWNlcjo6R2V0VGhyZWFkSW5mbyhwaWRfdCB0aWQsIFRocmVh ZEluZm8qIGluZm8pIHsKKyAgIGlmIChpc182NF9iaXRfKSB7CisgICAgIHJldHVybiBHZXRHZW5l cmFsUHVycG9zZVJlZ2lzdGVyczY0KHRpZCwgJmluZm8tPnRocmVhZF9jb250ZXh0LCBjYW5fbG9n XykgJiYKKyAgICAgICAgICAgIEdldEZsb2F0aW5nUG9pbnRSZWdpc3RlcnM2NCh0aWQsICZpbmZv LT5mbG9hdF9jb250ZXh0LCBjYW5fbG9nXykgJiYKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2 NF9GQU1JTFkpCisrICAgICAgICAgICBHZXRWZWN0b3JSZWdpc3RlcnM2NCh0aWQsICZpbmZvLT52 ZWN0b3JfY29udGV4dCwgY2FuX2xvZ18pICYmCisrI2VuZGlmCisgICAgICAgICAgICBHZXRUaHJl YWRBcmVhNjQodGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8tPnRocmVhZF9j b250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbmZvLT50aHJlYWRfc3BlY2lm aWNfZGF0YV9hZGRyZXNzLAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBh ZC91dGlsL2xpbnV4L3RocmVhZF9pbmZvLmggdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9saW51eC90aHJlYWRfaW5mby5oCitpbmRleCA1YjU1YzI0YTcuLmRlYTBkMWYzOSAxMDA2 NDQKKy0tLSB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVhZF9p bmZvLmgKKysrKyB0aGlyZF9wYXJ0eS9jcmFzaHBhZC9jcmFzaHBhZC91dGlsL2xpbnV4L3RocmVh ZF9pbmZvLmgKK0BAIC0yOCw2ICsyOCwxMCBAQAorICNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZl bC5oPgorICNlbmRpZgorIAorKyNpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysj aW5jbHVkZSA8c3lzL3Vjb250ZXh0Lmg+CisrI2VuZGlmCisrCisgbmFtZXNwYWNlIGNyYXNocGFk IHsKKyAKKyAvLyEgXGJyaWVmIFRoZSBzZXQgb2YgZ2VuZXJhbCBwdXJwb3NlIHJlZ2lzdGVycyBm b3IgYW4gYXJjaGl0ZWN0dXJlIGZhbWlseS4KK0BAIC03OSw2ICs4Myw4IEBAIHVuaW9uIFRocmVh ZENvbnRleHQgeworICAgICB1aW50MzJfdCBjcDBfc3RhdHVzOworICAgICB1aW50MzJfdCBjcDBf Y2F1c2U7CisgICAgIHVpbnQzMl90IHBhZGRpbmcxXzsKKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKysgICAgLy8gUFBDNjQgaXMgNjQtYml0CisgI2Vsc2UKKyAjZXJyb3Ig UG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0xMzIsNiArMTM4LDIx IEBAIHVuaW9uIFRocmVhZENvbnRleHQgeworICAgICB1aW50NjRfdCBjcDBfYmFkdmFkZHI7Cisg ICAgIHVpbnQ2NF90IGNwMF9zdGF0dXM7CisgICAgIHVpbnQ2NF90IGNwMF9jYXVzZTsKKysjZWxp ZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgICAgLy8gUmVmbGVjdHMgc3RydWN0 IHB0X3JlZ3MgaW4gYXNtL3B0cmFjZS5oLgorKyAgICB1aW50NjRfdCBncHJbMzJdOworKyAgICB1 aW50NjRfdCBuaXA7CisrICAgIHVpbnQ2NF90IG1zcjsKKysgICAgdWludDY0X3Qgb3JpZ19ncHIz OworKyAgICB1aW50NjRfdCBjdHI7CisrICAgIHVpbnQ2NF90IGxuazsKKysgICAgdWludDY0X3Qg eGVyOworKyAgICB1aW50NjRfdCBjY3I7CisrICAgIHVpbnQ2NF90IHNvZnRlOworKyAgICB1aW50 NjRfdCB0cmFwOworKyAgICB1aW50NjRfdCBkYXI7CisrICAgIHVpbnQ2NF90IGRzaXNyOworKyAg ICB1aW50NjRfdCByZXN1bHQ7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFS Q0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0xNDMsNiArMTY0LDggQEAgdW5pb24gVGhyZWFkQ29udGV4 dCB7CisgICB1c2luZyBOYXRpdmVUaHJlYWRDb250ZXh0ID0gdXNlcl9yZWdzOworICNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfTUlQU19GQU1JTFkpCisgLy8gTm8gYXBwcm9wcmlhdGUgTmF0aXZlVGhy ZWFkc0NvbnRleHQgdHlwZSBhdmFpbGFibGUgZm9yIE1JUFMKKysjZWxpZiBkZWZpbmVkKEFSQ0hf Q1BVX1BQQzY0X0ZBTUlMWSkKKysgIHVzaW5nIE5hdGl2ZVRocmVhZENvbnRleHQgPSBzdHJ1Y3Qg cHRfcmVnczsKKyAjZWxzZQorICNlcnJvciBQb3J0LgorICNlbmRpZiAgLy8gQVJDSF9DUFVfWDg2 X0ZBTUlMWSB8fCBBUkNIX0NQVV9BUk02NAorQEAgLTIxOCw2ICsyNDEsOSBAQCB1bmlvbiBGbG9h dENvbnRleHQgeworICAgICB9IGZwcmVnc1szMl07CisgICAgIHVpbnQzMl90IGZwY3NyOworICAg ICB1aW50MzJfdCBmcHVfaWQ7CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkp CisrICAgIC8vIENyYXNocGFkJ3MgUFBDIHN1cHBvcnQgaXMgNjQtYml0IG9ubHksIHNvIHRoaXMK KysgICAgLy8gMzJiaXQtb25seSBzdHJ1Y3QgaXMgZGVjbGFyZWQgYXMgZW1wdHkuCisgI2Vsc2UK KyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9GQU1JTFkKK0BAIC0yNTIs NiArMjc4LDEwIEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7CisgICAgIGRvdWJsZSBmcHJlZ3NbMzJd OworICAgICB1aW50MzJfdCBmcGNzcjsKKyAgICAgdWludDMyX3QgZnB1X2lkOworKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgICAvLyBSZWZsZWN0cyBmcHJlZ3NldF90 IGluIHN5cy91Y29udGV4dC5oCisrICAgIGRvdWJsZSBmcHJlZ3NbMzJdOworKyAgICBkb3VibGUg ZnBzY3I7CisgI2Vsc2UKKyAjZXJyb3IgUG9ydC4KKyAjZW5kaWYgIC8vIEFSQ0hfQ1BVX1g4Nl9G QU1JTFkKK0BAIC0yODAsNiArMzEwLDggQEAgdW5pb24gRmxvYXRDb250ZXh0IHsKKyAgIHN0YXRp Y19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6ZW9mKHVzZXJfZnBzaW1kX3N0cnVjdCksICJTaXpl IG1pc21hdGNoIik7CisgI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAvLyBO byBhcHByb3ByaWF0ZSBmbG9hdGluZyBwb2ludCBjb250ZXh0IG5hdGl2ZSB0eXBlIGZvciBhdmFp bGFibGUgTUlQUy4KKysjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0X0ZBTUlMWSkKKysgIHN0 YXRpY19hc3NlcnQoc2l6ZW9mKGY2NCkgPT0gc2l6ZW9mKGZwcmVnc2V0X3QpLCAiU2l6ZSBtaXNt YXRjaCIpOworICNlbHNlCisgI2Vycm9yIFBvcnQuCisgI2VuZGlmICAvLyBBUkNIX0NQVV9YODYK K0BAIC0yODcsNiArMzE5LDI2IEBAIHVuaW9uIEZsb2F0Q29udGV4dCB7Cisgc3RhdGljX2Fzc2Vy dChzdGQ6OmlzX3N0YW5kYXJkX2xheW91dDxGbG9hdENvbnRleHQ+Ojp2YWx1ZSwKKyAgICAgICAg ICAgICAgICJOb3Qgc3RhbmRhcmQgbGF5b3V0Iik7CisgCisrLy8hIFxicmllZiBUaGUgdmVjdG9y IHJlZ2lzdGVycyB1c2VkIGZvciBhbiBhcmNoaXRlY3R1cmUgZmFtaWx5CisrdW5pb24gVmVjdG9y Q29udGV4dCB7CisrICBzdHJ1Y3QgdjMyX3Qge30gdjMyOworKyNpZiBkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKysgIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKDE2KSkpIC8vIFZl Y3RvciBjb250ZXh0IG11c3QgYmUgZG91Ymxld29yZCBhbGlnbmVkLgorKyNlbmRpZgorKyAgc3Ry dWN0IHY2NF90IHsKKysjaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICAgIC8v IFJlZmxlY3RzIHZycmVnc2V0X3QgaW4gc3lzL3Vjb250ZXh0LmgKKysgICAgdWludDMyX3QgdnJy ZWdzWzMyXVs0XTsKKysgICAgc3RydWN0IHsKKysgICAgICB1aW50MzJfdCBfX3BhZFszXTsKKysg ICAgICB1aW50MzJfdCB2c2NyX3dvcmQ7CisrICAgIH0gdnNjcjsKKysgICAgdWludDMyX3QgdnJz YXZlOworKyAgICB1aW50MzJfdCBfX3BhZFszXTsKKysjZW5kaWYKKysgIH0gdjY0OworK307Cisr CisgLy8hIFxicmllZiBBIGNvbGxlY3Rpb24gb2YgYHB0cmFjZWAtYWJsZSBpbmZvcm1hdGlvbiBh Ym91dCBhIHRocmVhZC4KKyBzdHJ1Y3QgVGhyZWFkSW5mbyB7CisgICBUaHJlYWRJbmZvKCk7CitA QCAtMjk4LDYgKzM1MCw5IEBAIHN0cnVjdCBUaHJlYWRJbmZvIHsKKyAgIC8vISBcYnJpZWYgVGhl IGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyBmb3IgdGhlIHRocmVhZC4KKyAgIEZsb2F0Q29udGV4 dCBmbG9hdF9jb250ZXh0OworIAorKyAgLy8hIFxicmllZiAoT3B0aW9uYWwpIFRoZSB2ZWN0b3Ig cmVnaXN0ZXJzIHVzZWQgZm9yIHRoZSB0aHJlYWQuCisrICBWZWN0b3JDb250ZXh0IHZlY3Rvcl9j b250ZXh0OworKworICAgLy8hIFxicmllZiBUaGUgdGhyZWFkLWxvY2FsIHN0b3JhZ2UgYWRkcmVz cyBmb3IgdGhlIHRocmVhZC4KKyAgIExpbnV4Vk1BZGRyZXNzIHRocmVhZF9zcGVjaWZpY19kYXRh X2FkZHJlc3M7CisgfTsKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9taXNjL2NhcHR1cmVfY29udGV4dC5oIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFk L3V0aWwvbWlzYy9jYXB0dXJlX2NvbnRleHQuaAoraW5kZXggZDIxYTI0ZjE5Li5hY2MzMjUzNDkg MTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1 cmVfY29udGV4dC5oCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNj L2NhcHR1cmVfY29udGV4dC5oCitAQCAtNjksNiArNjksNyBAQCB1c2luZyBOYXRpdmVDUFVDb250 ZXh0ID0gdWNvbnRleHRfdDsKKyAvLyEgICAgIG1hY09TL0xpbnV4L0Z1Y2hzaWEgfCB4ODZfNjQg ICAgICAgfCBgJSVyZGlgCisgLy8hICAgICBMaW51eCAgICAgICAgICAgICAgIHwgQVJNL0FSTTY0 ICAgIHwgYHIwYC9geDBgCisgLy8hICAgICBMaW51eCAgICAgICAgICAgICAgIHwgTUlQUy9NSVBT NjQgIHwgYCRhMGAKKysvLyEgICAgIExpbnV4ICAgICAgICAgICAgICAgfCBQUEM2NCAgICAgICAg fCBgcjNgCisgLy8hCisgLy8hICAgICBBZGRpdGlvbmFsbHksIHRoZSB2YWx1ZSBgTFJgIG9uIEFS TS9BUk02NCB3aWxsIGJlIHRoZSByZXR1cm4gYWRkcmVzcyBvZgorIC8vISAgICAgdGhpcyBmdW5j dGlvbi4KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNj L2NhcHR1cmVfY29udGV4dF9saW51eC5TIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0 aWwvbWlzYy9jYXB0dXJlX2NvbnRleHRfbGludXguUworaW5kZXggNTIyMTVlZTVkLi5iM2U0YTNl YzcgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2Nh cHR1cmVfY29udGV4dF9saW51eC5TCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQv dXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF9saW51eC5TCitAQCAtMzIsNyArMzIsNyBAQAorICAg LmJhbGlnbiA0LCAweDAKKyAgIC50eXBlIENBUFRVUkVDT05URVhUX1NZTUJPTCwgJWZ1bmN0aW9u CisgICAudHlwZSBDQVBUVVJFQ09OVEVYVF9TWU1CT0wyLCAlZnVuY3Rpb24KKy0jZWxpZiBkZWZp bmVkKF9fbWlwc19fKQorKyNlbGlmIGRlZmluZWQoX19taXBzX18pIHx8IGRlZmluZWQoX19wb3dl cnBjNjRfXykKKyAgIC5iYWxpZ24gNCwgMHgwCisgI2VuZGlmCisgCitAQCAtNDIzLDQgKzQyMywy MTQgQEAgQ0FQVFVSRUNPTlRFWFRfU1lNQk9MMjoKKyAgIGpyICRyYQorIAorICAgLnNldCBhdAor KyNlbGlmIGRlZmluZWQoX19wb3dlcnBjNjRfXykKKysgIC8vIFN0b3JlIHIwLXIzMQorKyAgc3Rk IDAsIDB4ZTgoMykgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzBdCisrICBzdGQg MSwgMHhmMCgzKSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbMV0KKysgIHN0ZCAy LCAweGY4KDMpICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1syXQorKyAgLy8gbm90 ZSB0aGF0IHIzJ3Mgb3JpZ2luYWwgdmFsdWUgd2FzIGxvc3QKKysgIHN0ZCAzLCAweDEwMCgzKSAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szXQorKyAgc3RkIDQsIDB4MTA4KDMpICAv LyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzRdCisrICBzdGQgNSwgMHgxMTAoMykgIC8v IGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbNV0KKysgIHN0ZCA2LCAweDExOCgzKSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s2XQorKyAgc3RkIDcsIDB4MTIwKDMpICAvLyBj b250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzddCisrICBzdGQgOCwgMHgxMjgoMykgIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbOF0KKysgIHN0ZCA5LCAweDEzMCgzKSAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1s5XQorKyAgc3RkIDEwLCAweDEzOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzEwXQorKyAgc3RkIDExLCAweDE0MCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzExXQorKyAgc3RkIDEyLCAweDE0OCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzEyXQorKyAgc3RkIDEzLCAweDE1MCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzEzXQorKyAgc3RkIDE0LCAweDE1OCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE0XQorKyAgc3RkIDE1LCAweDE2MCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE1XQorKyAgc3RkIDE2LCAweDE2OCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE2XQorKyAgc3RkIDE3LCAweDE3MCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE3XQorKyAgc3RkIDE4LCAweDE3OCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE4XQorKyAgc3RkIDE5LCAweDE4MCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzE5XQorKyAgc3RkIDIwLCAweDE4OCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIwXQorKyAgc3RkIDIxLCAweDE5MCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIxXQorKyAgc3RkIDIyLCAweDE5OCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIyXQorKyAgc3RkIDIzLCAweDFhMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzIzXQorKyAgc3RkIDI0LCAweDFhOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI0XQorKyAgc3RkIDI1LCAweDFiMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI1XQorKyAgc3RkIDI2LCAweDFiOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI2XQorKyAgc3RkIDI3LCAweDFjMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI3XQorKyAgc3RkIDI4LCAweDFjOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI4XQorKyAgc3RkIDI5LCAweDFkMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzI5XQorKyAgc3RkIDMwLCAweDFkOCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzMwXQorKyAgc3RkIDMxLCAweDFlMCgzKSAvLyBjb250 ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzWzMxXQorKworKyAgLy8gRm9yIE5JUCwgd2UgY2FuIHVz ZSB0aGUgdmFsdWUgaW4gdGhlIGxpbmsgcmVnaXN0ZXIKKysgIG1mbHIgMAorKyAgc3RkIDAsIDB4 MWU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTklQXQorKworKyAgLy8g Q1RSCisrICBtZmN0ciAwCisrICBzdGQgMCwgMHgyMDAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZ3BfcmVnc1tQVF9DVFJdCisrCisrICAvLyBGb3IgTE5LLCB3ZSdsbCB1c2UgdGhlIGNhbGxl cidzIExSIHNhdmUgYXJlYSAoMiBzdGFjayBmcmFtZXMgdXApLgorKyAgLy8gcjQgY2FuIGJlIHVz ZWQgYXMgYSBzY3JhdGNoIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhbHJlYWR5IGJlZW4gc2F2ZWQu CisrICBsZCA0LCAwKDEpCisrICBsZCA0LCAxNig0KQorKyAgc3RkIDQsIDB4MjA4KDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfTE5LXQorKworKyAgLy8gWEVSCisrICBtZnhl ciAwCisrICBzdGQgMCwgMHgyMTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQ VF9YRVJdCisrCisrICAvLyBDQ1IKKysgIG1mY3IgMAorKyAgc3RkIDAsIDB4MjE4KDMpIC8vIGNv bnRleHQtPnVjX21jb250ZXh0LmdwX3JlZ3NbUFRfQ0NSXQorKworKyAgLy8gTVNSLCBvcmlnX3Iz LCBNUSwgVFJBUCwgREFSLCBEU0lTUiwgUkVTVUxULCBEU0NSLAorKyAgLy8gbm90IHVzZWQgb3Ig bm90IHJlbGV2YW50LCAgemVybyB0aGVtIG91dC4KKysgIGxpIDQsIDAKKysgIHN0ZCA0LCAweDFm MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX01TUl0KKysgIHN0ZCA0LCAw eDFmOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX09SSUdfUjNdCisrICBz dGQgNCwgMHgyMjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9NUV0KKysg IHN0ZCA0LCAweDIyOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9yZWdzW1BUX1RSQVBd CisrICBzdGQgNCwgMHgyMzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQVF9E QVJdCisrICBzdGQgNCwgMHgyMzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1tQ VF9EU0lTUl0KKysgIHN0ZCA0LCAweDI0MCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5ncF9y ZWdzW1BUX1JFU1VMVF0KKysgIHN0ZCA0LCAweDI0OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5ncF9yZWdzW1BUX0RTQ1JdCisrCisrICAvLyBVcGRhdGUgY29udGV4dC0+dWNfbWNvbnRleHQu cmVncyB0byBwb2ludCB0byBncF9yZWdzCisrICBhZGRpIDAsIDMsIDB4ZTgKKysgIHN0ZCAwLCAw eGUwKDMpCisrCisrICAvLyBTYXZlIGZsb2F0aW5nIHBvaW50IHJlZ2lzdGVycyAwLTMxCisrICBz dGZkIDAsIDB4MjY4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzBdCisrICBz dGZkIDEsIDB4MjcwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzFdCisrICBz dGZkIDIsIDB4Mjc4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzJdCisrICBz dGZkIDMsIDB4MjgwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzNdCisrICBz dGZkIDQsIDB4Mjg4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzRdCisrICBz dGZkIDUsIDB4MjkwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzVdCisrICBz dGZkIDYsIDB4Mjk4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzZdCisrICBz dGZkIDcsIDB4MmEwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzddCisrICBz dGZkIDgsIDB4MmE4KDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzhdCisrICBz dGZkIDksIDB4MmIwKDMpICAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzldCisrICBz dGZkIDEwLCAweDJiOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEwXQorKyAg c3RmZCAxMSwgMHgyYzAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxMV0KKysg IHN0ZmQgMTIsIDB4MmM4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTJdCisr ICBzdGZkIDEzLCAweDJkMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzEzXQor KyAgc3RmZCAxNCwgMHgyZDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sxNF0K KysgIHN0ZmQgMTUsIDB4MmUwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3NbMTVd CisrICBzdGZkIDE2LCAweDJlOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzE2 XQorKyAgc3RmZCAxNywgMHgyZjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVnc1sx N10KKysgIHN0ZmQgMTgsIDB4MmY4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3JlZ3Nb MThdCisrICBzdGZkIDE5LCAweDMwMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdz WzE5XQorKyAgc3RmZCAyMCwgMHgzMDgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBfcmVn c1syMF0KKysgIHN0ZmQgMjEsIDB4MzEwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZwX3Jl Z3NbMjFdCisrICBzdGZkIDIyLCAweDMxOCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9y ZWdzWzIyXQorKyAgc3RmZCAyMywgMHgzMjAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQuZnBf cmVnc1syM10KKysgIHN0ZmQgMjQsIDB4MzI4KDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LmZw X3JlZ3NbMjRdCisrICBzdGZkIDI1LCAweDMzMCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5m cF9yZWdzWzI1XQorKyAgc3RmZCAyNiwgMHgzMzgoMykgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu ZnBfcmVnc1syNl0KKysgIHN0ZmQgMjcsIDB4MzQwKDMpIC8vIGNvbnRleHQtPnVjX21jb250ZXh0 LmZwX3JlZ3NbMjddCisrICBzdGZkIDI4LCAweDM0OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4 dC5mcF9yZWdzWzI4XQorKyAgc3RmZCAyOSwgMHgzNTAoMykgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQuZnBfcmVnc1syOV0KKysgIHN0ZmQgMzAsIDB4MzU4KDMpIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LmZwX3JlZ3NbMzBdCisrICBzdGZkIDMxLCAweDM2MCgzKSAvLyBjb250ZXh0LT51Y19tY29u dGV4dC5mcF9yZWdzWzMxXQorKworKyAgLy8gRlBTQ1IKKysgIG1mZnMgMAorKyAgc3RmZCAwLCAw eDM2OCgzKSAvLyBjb250ZXh0LT51Y19tY29udGV4dC5mcF9yZWdzWzMyXQorKworKyAgLy8gU2F2 ZSBWTVggVmVjdG9yIHJlZ2lzdGVycworKyAgLy8gVXBkYXRlIHI0IHRvIGNvbnRhaW4gdGhlIGJh c2UgYWRkcmVzcyBvZiB2bXhfcmVzZXJ2ZQorKyAgYWRkaSA0LCAzLCAweDM3OAorKyAgLy8gRW5z dXJlIHRoYXQgaXQgaXMgcXVhZHdvcmQgYWxpZ25lZAorKyAgYW5kaS4gNSwgNCwgMHhGCisrICBi ZXEgMWYgLy8gTm8gYWxpZ25tZW50IGlzIG5lY2Vzc2FyeQorKyAgLy8gQWRkcmVzcyBpcyBkb3Vi bGV3b3JkIGFsaWduZWQgYW5kIG5vdCBxdWFkd29yZCBhbGlnbmVkLCBhZGQgOAorKyAgYWRkaSA0 LCA0LCA4CisrCisrMToKKysgIC8vIFN0b3JlIFZNWCByZWdpc3RlcnMgMC0zMQorKyAgLy8gcjQg d2lsbCBjb250YWluIHRoZSBiYXNlIGFkZHJlc3MKKysgIC8vIHI1IHdpbGwgY29udGFpbiB0aGUg aW5kZXgKKysgIGxpIDUsIDAKKysgIHN0dnggMCwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250 ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAwXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAx LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDFd CisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDIsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29u dGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgMl0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dngg MywgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyAz XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCA0LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDRdCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4 IDUsIDQsIDUgICAvLyBjb250ZXh0LT51Y19tY29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsg NV0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0dnggNiwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21j b250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikgKyA2XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2 eCA3LCA0LCA1ICAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSAr IDddCisrICBhZGRpIDUsIDUsIDE2CisrICBzdHZ4IDgsIDQsIDUgICAvLyBjb250ZXh0LT51Y19t Y29udGV4dC52bXhfcmVzZXJ2ZVsoYWxpZ24pICsgOF0KKysgIGFkZGkgNSwgNSwgMTYKKysgIHN0 dnggOSwgNCwgNSAgIC8vIGNvbnRleHQtPnVjX21jb250ZXh0LnZteF9yZXNlcnZlWyhhbGlnbikg KyA5XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxMCwgNCwgNSAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDEwXQorKyAgYWRkaSA1LCA1LCAxNgorKyAg c3R2eCAxMSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWdu KSArIDExXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxMiwgNCwgNSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDEyXQorKyAgYWRkaSA1LCA1LCAxNgor KyAgc3R2eCAxMywgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFs aWduKSArIDEzXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxNCwgNCwgNSAgLy8gY29udGV4 dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE0XQorKyAgYWRkaSA1LCA1LCAx NgorKyAgc3R2eCAxNSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVb KGFsaWduKSArIDE1XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxNiwgNCwgNSAgLy8gY29u dGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE2XQorKyAgYWRkaSA1LCA1 LCAxNgorKyAgc3R2eCAxNywgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2Vy dmVbKGFsaWduKSArIDE3XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAxOCwgNCwgNSAgLy8g Y29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDE4XQorKyAgYWRkaSA1 LCA1LCAxNgorKyAgc3R2eCAxOSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jl c2VydmVbKGFsaWduKSArIDE5XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyMCwgNCwgNSAg Ly8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDIwXQorKyAgYWRk aSA1LCA1LCAxNgorKyAgc3R2eCAyMSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14 X3Jlc2VydmVbKGFsaWduKSArIDIxXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyMiwgNCwg NSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDIyXQorKyAg YWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyMywgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQu dm14X3Jlc2VydmVbKGFsaWduKSArIDIzXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyNCwg NCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI0XQor KyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyNSwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRl eHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI1XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAy NiwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI2 XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyNywgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNv bnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI3XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2 eCAyOCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSAr IDI4XQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAyOSwgNCwgNSAgLy8gY29udGV4dC0+dWNf bWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDI5XQorKyAgYWRkaSA1LCA1LCAxNgorKyAg c3R2eCAzMCwgNCwgNSAgLy8gY29udGV4dC0+dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWdu KSArIDMwXQorKyAgYWRkaSA1LCA1LCAxNgorKyAgc3R2eCAzMSwgNCwgNSAgLy8gY29udGV4dC0+ dWNfbWNvbnRleHQudm14X3Jlc2VydmVbKGFsaWduKSArIDMxXQorKyAgYWRkaSA1LCA1LCAxNgor KworKyAgLy8gVlNDUgorKyAgbWZ2c2NyIDAKKysgIHN0dnggMCwgNCwgNQorKyAgYWRkaSA1LCA1 LCAxNgorKworKyAgLy8gVlJTQVZFCisrICBtZnZyc2F2ZSAwCisrICBzdHd4IDAsIDQsIDUKKysK KysgIC8vIFVwZGF0ZSBjb250ZXh0LT51Y19tY29udGV4dC52X3JlZ3MgdG8gcG9pbnQgdG8gdm14 X3Jlc2VydmUgKyBhbGlnbm1lbnQuCisrICBzdGQgNCwgMHgzNzAoMykKKysKKysgIC8vIFplcm8g b3V0IGFsbCB1bnVzZWQgZmllbGRzCisrICBsaSA0LCAwCisrICBzdGQgNCwgMHhjOCgzKSAvLyBj b250ZXh0LT51Y19tY29udGV4dC5zaWduYWwKKysgIHN0ZCA0LCAweGQwKDMpIC8vIGNvbnRleHQt PnVjX21jb250ZXh0LmhhbmRsZXIKKysgIHN0ZCA0LCAweGQ4KDMpIC8vIGNvbnRleHQtPnVjX21j b250ZXh0Lm9sZG1hc2sKKysKKysgIGJscgorICNlbmRpZiAgLy8gX19pMzg2X18KK2RpZmYgLS1n aXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4 dF90ZXN0LmNjIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJl X2NvbnRleHRfdGVzdC5jYworaW5kZXggY2YyM2MyZGVmLi41ZjI2NGJjOTIgMTAwNjQ0CistLS0g dGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90 ZXN0LmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1 cmVfY29udGV4dF90ZXN0LmNjCitAQCAtNTcsNyArNTcsNyBAQCB2b2lkIFRlc3RDYXB0dXJlQ29u dGV4dCgpIHsKKyAgIHVpbnRwdHJfdCBwYyA9IFByb2dyYW1Db3VudGVyRnJvbUNvbnRleHQoY29u dGV4dF8xKTsKKyAKKyAjaWYgIWRlZmluZWQoQUREUkVTU19TQU5JVElaRVIpICYmICFkZWZpbmVk KEFSQ0hfQ1BVX01JUFNfRkFNSUxZKSAmJiBcCistICAgICFkZWZpbmVkKE1FTU9SWV9TQU5JVEla RVIpCisrICAgICFkZWZpbmVkKE1FTU9SWV9TQU5JVElaRVIpICYmICFkZWZpbmVkKEFSQ0hfQ1BV X1BQQzY0X0ZBTUlMWSkKKyAgIC8vIFNhbml0aXplcnMgY2FuIGNhdXNlIGVub3VnaCBjb2RlIGJs b2F0IHRoYXQgdGhlIOKAnG5lYXJieeKAnSBjaGVjayB3b3VsZAorICAgLy8gbGlrZWx5IGZhaWwu CisgICBjb25zdCB1aW50cHRyX3Qga1JlZmVyZW5jZVBDID0KK2RpZmYgLS1naXQgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxf bGludXguY2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9taXNjL2NhcHR1cmVf Y29udGV4dF90ZXN0X3V0aWxfbGludXguY2MKK2luZGV4IDMwYTJhYjIxZC4uNjA1MDlmMjFkIDEw MDY0NAorLS0tIHRoaXJkX3BhcnR5L2NyYXNocGFkL2NyYXNocGFkL3V0aWwvbWlzYy9jYXB0dXJl X2NvbnRleHRfdGVzdF91dGlsX2xpbnV4LmNjCisrKysgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jh c2hwYWQvdXRpbC9taXNjL2NhcHR1cmVfY29udGV4dF90ZXN0X3V0aWxfbGludXguY2MKK0BAIC0z NSw2ICszNSw4IEBAIHZvaWQgU2FuaXR5Q2hlY2tDb250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRl eHQmIGNvbnRleHQpIHsKKyAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0LnJlZ3NbMF0s IEZyb21Qb2ludGVyQ2FzdDx1aW50cHRyX3Q+KCZjb250ZXh0KSk7CisgI2VsaWYgZGVmaW5lZChB UkNIX0NQVV9NSVBTX0ZBTUlMWSkKKyAgIEVYUEVDVF9FUShjb250ZXh0LnVjX21jb250ZXh0Lmdy ZWdzWzRdLCBGcm9tUG9pbnRlckNhc3Q8dWludHB0cl90PigmY29udGV4dCkpOworKyNlbGlmIGRl ZmluZWQoQVJDSF9DUFVfUFBDNjRfRkFNSUxZKQorKyAgRVhQRUNUX0VRKGNvbnRleHQudWNfbWNv bnRleHQuZ3BfcmVnc1szXSwgRnJvbVBvaW50ZXJDYXN0PHVpbnRwdHJfdD4oJmNvbnRleHQpKTsK KyAjZW5kaWYKKyB9CisgCitAQCAtNDksNiArNTEsOCBAQCB1aW50cHRyX3QgUHJvZ3JhbUNvdW50 ZXJGcm9tQ29udGV4dChjb25zdCBOYXRpdmVDUFVDb250ZXh0JiBjb250ZXh0KSB7CisgICByZXR1 cm4gY29udGV4dC51Y19tY29udGV4dC5wYzsKKyAjZWxpZiBkZWZpbmVkKEFSQ0hfQ1BVX01JUFNf RkFNSUxZKQorICAgcmV0dXJuIGNvbnRleHQudWNfbWNvbnRleHQucGM7CisrI2VsaWYgZGVmaW5l ZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5n cF9yZWdzW1BUX05JUF07CisgI2VuZGlmCisgfQorIAorQEAgLTYzLDYgKzY3LDggQEAgdWludHB0 cl90IFN0YWNrUG9pbnRlckZyb21Db250ZXh0KGNvbnN0IE5hdGl2ZUNQVUNvbnRleHQmIGNvbnRl eHQpIHsKKyAgIHJldHVybiBjb250ZXh0LnVjX21jb250ZXh0LnNwOworICNlbGlmIGRlZmluZWQo QVJDSF9DUFVfTUlQU19GQU1JTFkpCisgICByZXR1cm4gY29udGV4dC51Y19tY29udGV4dC5ncmVn c1syOV07CisrI2VsaWYgZGVmaW5lZChBUkNIX0NQVV9QUEM2NF9GQU1JTFkpCisrICByZXR1cm4g Y29udGV4dC51Y19tY29udGV4dC5ncF9yZWdzWzFdOworICNlbmRpZgorIH0KKyAKK2RpZmYgLS1n aXQgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9wb3NpeC9zaWduYWxzX3Rlc3Qu Y2MgdGhpcmRfcGFydHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9wb3NpeC9zaWduYWxzX3Rlc3Qu Y2MKK2luZGV4IDU0Y2MyZjE5Zi4uMjk4YjVjOTkzIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2Ny YXNocGFkL2NyYXNocGFkL3V0aWwvcG9zaXgvc2lnbmFsc190ZXN0LmNjCisrKysgdGhpcmRfcGFy dHkvY3Jhc2hwYWQvY3Jhc2hwYWQvdXRpbC9wb3NpeC9zaWduYWxzX3Rlc3QuY2MKK0BAIC00Niw5 ICs0Niw5IEBAIGJvb2wgQ2FuQ2F1c2VTaWduYWwoaW50IHNpZykgeworICAgcmV0dXJuIHNpZyA9 PSBTSUdBQlJUIHx8CisgICAgICAgICAgc2lnID09IFNJR0FMUk0gfHwKKyAgICAgICAgICBzaWcg PT0gU0lHQlVTIHx8CistI2lmICFkZWZpbmVkKEFSQ0hfQ1BVX0FSTTY0KQorKyNpZiAhZGVmaW5l ZChBUkNIX0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVfUFBDNjQpCisgICAgICAgICAg c2lnID09IFNJR0ZQRSB8fAorLSNlbmRpZiAgLy8gIWRlZmluZWQoQVJDSF9DUFVfQVJNNjQpCisr I2VuZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYgIWRlZmluZWQoQVJDSF9DUFVf UFBDNjQpCisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlMWSkgfHwgZGVmaW5lZChBUkNI X0NQVV9BUk1FTCkKKyAgICAgICAgICBzaWcgPT0gU0lHSUxMIHx8CisgI2VuZGlmICAvLyBkZWZp bmVkKEFSQ0hfQ1BVX1g4Nl9GQU1JTFkpIHx8IGRlZmluZWQoQVJDSF9DUFVfQVJNRUwpCitAQCAt MTE3LDkgKzExNywxMSBAQCB2b2lkIENhdXNlU2lnbmFsKGludCBzaWcpIHsKKyAgICAgICBicmVh azsKKyAgICAgfQorIAorLSNpZiAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkKKysjaWYgIWRlZmlu ZWQoQVJDSF9DUFVfQVJNNjQpICYmICFkZWZpbmVkKEFSQ0hfQ1BVX1BQQzY0KQorICAgICAvLyBB Uk02NCBoYXMgaGFyZHdhcmUgaW50ZWdlciBkaXZpc2lvbiBpbnN0cnVjdGlvbnMgdGhhdCBkb27i gJl0IGdlbmVyYXRlIGEKKyAgICAgLy8gdHJhcCBmb3IgZGl2aWRlLWJ5LXplcm8sIHNvIHRoaXMg ZG9lc27igJl0IHByb2R1Y2UgU0lHRlBFLgorKyAgICAvLworKyAgICAvLyBQUEM2NCBmaXhlZC1w b2ludCBkaXZpc2lvbiBieSB6ZXJvIGFsc28gZG9lc24ndCBwcm9kdWNlIGEgU0lHRlBFLgorICAg ICBjYXNlIFNJR0ZQRTogeworICAgICAgIC8vIE9wdGltaXphdGlvbiBtYWtlcyB0aGlzIHRyaWNr eSwgc28gZ2V0IHplcm8gZnJvbSBhIHN5c3RlbSBjYWxsIGxpa2VseQorICAgICAgIC8vIHRvIHN1 Y2NlZWQsIGFuZCB0cnkgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHJlc3VsdC4KK0BAIC0xMzcs NyArMTM5LDcgQEAgdm9pZCBDYXVzZVNpZ25hbChpbnQgc2lnKSB7CisgICAgICAgZnN0YXQocXVv dGllbnQsICZzdGF0X2J1Zik7CisgICAgICAgYnJlYWs7CisgICAgIH0KKy0jZW5kaWYgIC8vIEFS Q0hfQ1BVX0FSTTY0CisrI2VuZGlmICAvLyAhZGVmaW5lZChBUkNIX0NQVV9BUk02NCkgJiYgIWRl ZmluZWQoQVJDSF9DUFVfUFBDNjQpCisgCisgI2lmIGRlZmluZWQoQVJDSF9DUFVfWDg2X0ZBTUlM WSkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1FTCkKKyAgICAgY2FzZSBTSUdJTEw6IHsKK2RpZmYg LS1naXQgdGhpcmRfcGFydHkvZGF2MWQvQlVJTEQuZ24gdGhpcmRfcGFydHkvZGF2MWQvQlVJTEQu Z24KK2luZGV4IDZiNDU2NmZjMy4uYzA3ZjczMmFkIDEwMDY0NAorLS0tIHRoaXJkX3BhcnR5L2Rh djFkL0JVSUxELmduCisrKysgdGhpcmRfcGFydHkvZGF2MWQvQlVJTEQuZ24KK0BAIC0xODQsNiAr MTg0LDggQEAgc3RhdGljX2xpYnJhcnkoImRhdjFkXzhiaXQiKSB7CisgICAgIHNvdXJjZXMgKz0g YXJtX3RlbXBsYXRlX3NvdXJjZXMKKyAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gImFybTY0 IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9zb3VyY2VzCisrICB9IGVsc2UgaWYg KGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKKysgICAgc291cmNlcyArPSBwcGM2NF90ZW1wbGF0 ZV9zb3VyY2VzCisgICB9CisgCisgICBjZmxhZ3MgPSBkYXYxZF9jb3B0cworQEAgLTIxMiw2ICsy MTQsOCBAQCBzdGF0aWNfbGlicmFyeSgiZGF2MWRfMTBiaXQiKSB7CisgICAgIHNvdXJjZXMgKz0g YXJtX3RlbXBsYXRlX3NvdXJjZXMKKyAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gImFybTY0 IikgeworICAgICBzb3VyY2VzICs9IGFybV90ZW1wbGF0ZV9zb3VyY2VzCisrICB9IGVsc2UgaWYg KGN1cnJlbnRfY3B1ID09ICJwcGM2NCIpIHsKKysgICAgc291cmNlcyArPSBwcGM2NF90ZW1wbGF0 ZV9zb3VyY2VzCisgICB9CisgCisgICBjZmxhZ3MgPSBkYXYxZF9jb3B0cworQEAgLTI2Myw2ICsy NjcsMjEgQEAgaWYgKGN1cnJlbnRfY3B1ID09ICJ4ODYiIHx8IGN1cnJlbnRfY3B1ID09ICJ4NjQi KSB7CisgICAgICAgZGVmaW5lcyA9IFsgIlBSRUZJWCIgXQorICAgICB9CisgCisrICAgIGNmbGFn cyA9IGRhdjFkX2NvcHRzCisrICB9CisrfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAicHBjNjQi KSB7CisrICBzdGF0aWNfbGlicmFyeSgiZGF2MWRfcHBjIikgeworKyAgICBzb3VyY2VzID0gWwor KyAgICAgICJsaWJkYXYxZC9zcmMvcHBjL2NwdS5jIiwKKysgICAgICAibGliZGF2MWQvc3JjL3Bw Yy9jcHUuaCIsCisrICAgIF0KKysKKysgICAgY29uZmlncyAtPSBbICIvL2J1aWxkL2NvbmZpZy9j b21waWxlcjpjaHJvbWl1bV9jb2RlIiBdCisrICAgIGNvbmZpZ3MgKz0gWworKyAgICAgICIvL2J1 aWxkL2NvbmZpZy9jb21waWxlcjpub19jaHJvbWl1bV9jb2RlIiwKKysgICAgICAiOmRhdjFkX2Nv bmZpZyIsCisrICAgIF0KKysKKyAgICAgY2ZsYWdzID0gZGF2MWRfY29wdHMKKyAgIH0KKyB9CitA QCAtMjkyLDUgKzMxMSw3IEBAIHN0YXRpY19saWJyYXJ5KCJkYXYxZCIpIHsKKyAgICAgfQorICAg fSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAiYXJtIiB8fCBjdXJyZW50X2NwdSA9PSAiYXJtNjQi KSB7CisgICAgIGRlcHMgKz0gWyAiOmRhdjFkX2FybSIgXQorKyAgfSBlbHNlIGlmIChjdXJyZW50 X2NwdSA9PSAicHBjNjQiKSB7CisrICAgIGRlcHMgKz0gWyAiOmRhdjFkX3BwYyIgXQorICAgfQor IH0KK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvZGF2MWQvY29uZmlnL2xpbnV4L3BwYzY0L2NvbmZp Zy5oIHRoaXJkX3BhcnR5L2RhdjFkL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcuaAorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMC4uOWZiYmY3NWNjCistLS0gL2Rldi9udWxs CisrKysgdGhpcmRfcGFydHkvZGF2MWQvY29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpZy5oCitAQCAt MCwwICsxLDM5IEBACisrLyoKKysgKiBBdXRvZ2VuZXJhdGVkIGJ5IHRoZSBNZXNvbiBidWlsZCBz eXN0ZW0uCisrICogRG8gbm90IGVkaXQsIHlvdXIgY2hhbmdlcyB3aWxsIGJlIGxvc3QuCisrICov CisrCisrI3ByYWdtYSBvbmNlCisrCisrI2RlZmluZSBBUkNIX0FBUkNINjQgMAorKworKyNkZWZp bmUgQVJDSF9BUk0gMAorKworKyNkZWZpbmUgQVJDSF9QUEM2NExFIDEKKysKKysjZGVmaW5lIEFS Q0hfWDg2IDAKKysKKysjZGVmaW5lIEFSQ0hfWDg2XzMyIDAKKysKKysjZGVmaW5lIEFSQ0hfWDg2 XzY0IDAKKysKKysjZGVmaW5lIENPTkZJR18xNkJQQyAxCisrCisrI2RlZmluZSBDT05GSUdfOEJQ QyAxCisrCisrLy8gI2RlZmluZSBDT05GSUdfTE9HIDEgLS0gTG9nZ2luZyBpcyBjb250cm9sbGVk IGJ5IENocm9taXVtCisrCisrI2RlZmluZSBFTkRJQU5ORVNTX0JJRyAwCisrCisrI2RlZmluZSBI QVZFX0FTTSAxCisrCisrI2RlZmluZSBIQVZFX0NMT0NLX0dFVFRJTUUgMQorKworKyNkZWZpbmUg SEFWRV9ETFNZTSAxCisrCisrI2RlZmluZSBIQVZFX0dFVEFVWFZBTCAxCisrCisrI2RlZmluZSBI QVZFX1BPU0lYX01FTUFMSUdOIDEKKysKKysjZGVmaW5lIEhBVkVfVU5JU1REX0ggMQorKworZGlm ZiAtLWdpdCB0aGlyZF9wYXJ0eS9kYXYxZC9kYXYxZF9nZW5lcmF0ZWQuZ25pIHRoaXJkX3BhcnR5 L2RhdjFkL2RhdjFkX2dlbmVyYXRlZC5nbmkKK2luZGV4IGM1OWNiMDgyMS4uMzA2MDI4NGE4IDEw MDY0NAorLS0tIHRoaXJkX3BhcnR5L2RhdjFkL2RhdjFkX2dlbmVyYXRlZC5nbmkKKysrKyB0aGly ZF9wYXJ0eS9kYXYxZC9kYXYxZF9nZW5lcmF0ZWQuZ25pCitAQCAtODIsNiArODIsMTEgQEAgYXJt X3RlbXBsYXRlX3NvdXJjZXMgPSBbCisgICAibGliZGF2MWQvc3JjL2FybS9tY19pbml0X3RtcGwu YyIsCisgXQorIAorK3BwYzY0X3RlbXBsYXRlX3NvdXJjZXMgPSBbCisrICAibGliZGF2MWQvc3Jj L3BwYy9jZGVmX2luaXRfdG1wbC5jIiwKKysgICJsaWJkYXYxZC9zcmMvcHBjL2xvb3ByZXN0b3Jh dGlvbl9pbml0X3RtcGwuYyIsCisrXQorKworIHRlbXBsYXRlX3NvdXJjZXMgPSBbCisgICAibGli ZGF2MWQvc3JjL2NkZWZfYXBwbHlfdG1wbC5jIiwKKyAgICJsaWJkYXYxZC9zcmMvY2RlZl90bXBs LmMiLAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9kYXYxZC9nZW5lcmF0ZV9zb3VyY2UucHkgdGhp cmRfcGFydHkvZGF2MWQvZ2VuZXJhdGVfc291cmNlLnB5CitpbmRleCA5YWI1ZTAwYjguLmFkM2Zl ZmZlZSAxMDA3NTUKKy0tLSB0aGlyZF9wYXJ0eS9kYXYxZC9nZW5lcmF0ZV9zb3VyY2UucHkKKysr KyB0aGlyZF9wYXJ0eS9kYXYxZC9nZW5lcmF0ZV9zb3VyY2UucHkKK0BAIC01MCw3ICs1MCw4IEBA IGRlZiBXcml0ZUduKGZkKToKKyAgIFdyaXRlQXJyYXkoZmQsICJhcm0zMl9hc21fc291cmNlcyIs IGdsb2IuZ2xvYigibGliZGF2MWQvc3JjL2FybS8zMi8qLlMiKSkKKyAgIFdyaXRlQXJyYXkoZmQs ICJhcm02NF9hc21fc291cmNlcyIsIGdsb2IuZ2xvYigibGliZGF2MWQvc3JjL2FybS82NC8qLlMi KSkKKyAgIFdyaXRlQXJyYXkoZmQsICJhcm1fdGVtcGxhdGVfc291cmNlcyIsIGdsb2IuZ2xvYigi bGliZGF2MWQvc3JjL2FybS8qX3RtcGwuYyIpKQorLQorKyAgV3JpdGVBcnJheShmZCwgInBwYzY0 X3RlbXBsYXRlX3NvdXJjZXMiLCBnbG9iLmdsb2IoImxpYmRhdjFkL3NyYy9wcGMvKl90bXBsLmMi KSkKKysgCisgICB0ZW1wbGF0ZV9zb3VyY2VzID0gZ2xvYi5nbG9iKCJsaWJkYXYxZC9zcmMvKl90 bXBsLmMiKQorICAgV3JpdGVBcnJheShmZCwgInRlbXBsYXRlX3NvdXJjZXMiLCB0ZW1wbGF0ZV9z b3VyY2VzKQorIAorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9kYXYxZC9saWJkYXYxZC9zcmMvcHBj L3R5cGVzLmggdGhpcmRfcGFydHkvZGF2MWQvbGliZGF2MWQvc3JjL3BwYy90eXBlcy5oCitpbmRl eCAwYjRiZDcyZjAuLmEwY2FhNWU3MSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9kYXYxZC9saWJk YXYxZC9zcmMvcHBjL3R5cGVzLmgKKysrKyB0aGlyZF9wYXJ0eS9kYXYxZC9saWJkYXYxZC9zcmMv cHBjL3R5cGVzLmgKK0BAIC01MSw0ICs1MSwxOSBAQAorICNkZWZpbmUgdTE2bF90b19pMzIodikg KChpMzJ4NCkgdmVjX21lcmdlbCgodTE2eDgpIHYsIHZlY19zcGxhdF91MTYoMCkpKQorICNkZWZp bmUgaTE2bF90b19pMzIodikgKChpMzJ4NCkgdmVjX3VucGFja2woKGkxNng4KXYpKQorIAorKyNp ZiBkZWZpbmVkKF9fY2xhbmdfXykKKysjdW5kZWYgdmVjX3NwbGF0cworKyNkZWZpbmUgdmVjX3Nw bGF0cyhOKSAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgX0dlbmVyaWMoKE4pLCAgICAgICAg ICAgICAgICAgICAgICAgICBcCisrICAgICAgICB1bnNpZ25lZCBjaGFyOiAgICAgICgodTh4MTYp KE4pKSwgXAorKyAgICAgICAgc2lnbmVkIGNoYXI6ICAgICAgICAoKGk4eDE2KShOKSksIFwKKysg ICAgICAgIHVuc2lnbmVkIHNob3J0OiAgICAgKCh1MTZ4OCkoTikpLCBcCisrICAgICAgICBzaWdu ZWQgc2hvcnQ6ICAgICAgICgoaTE2eDgpKE4pKSwgXAorKyAgICAgICAgdW5zaWduZWQgaW50OiAg ICAgICAoKHUzMng0KShOKSksIFwKKysgICAgICAgIHNpZ25lZCBpbnQ6ICAgICAgICAgKChpMzJ4 NCkoTikpLCBcCisrICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmc6ICgodTY0eDIpKE4pKSwgXAor KyAgICAgICAgc2lnbmVkIGxvbmcgbG9uZzogICAoKGk2NHgyKShOKSkgIFwKKysgICAgKQorKyNl bmRpZgorKworICNlbmRpZiAvKiBEQVYxRF9TUkNfUFBDX1RZUEVTX0ggKi8KK2RpZmYgLS1naXQg dGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oIHRoaXJkX3BhcnR5L2xzcy9s aW51eF9zeXNjYWxsX3N1cHBvcnQuaAoraW5kZXggZTRhYzIyNjQ0Li4xYzU3MDE1ZGIgMTAwNjQ0 CistLS0gdGhpcmRfcGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCisrKysgdGhpcmRf cGFydHkvbHNzL2xpbnV4X3N5c2NhbGxfc3VwcG9ydC5oCitAQCAtMzk0Nyw3ICszOTQ3LDcgQEAg c3RydWN0IGtlcm5lbF9zdGF0ZnMgeworICAgICAgIExTU19SRUcoMiwgYnVmKTsKKyAgICAgICBM U1NfQk9EWSh2b2lkKiwgbW1hcDIsICIwIihfX3IyKSk7CisgICAgIH0KKy0jZWxzZQorKyNlbGlm ICFkZWZpbmVkKF9fcG93ZXJwYzY0X18pIC8qIHBwYzY0IGRvZXNuJ3QgaGF2ZSBtbWFwMiAqLwor ICAgICAjZGVmaW5lIF9fTlJfX21tYXAyIF9fTlJfbW1hcDIKKyAgICAgTFNTX0lOTElORSBfc3lz Y2FsbDYodm9pZCosIF9tbWFwMiwgICAgICAgICAgICB2b2lkKiwgcywKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZV90LCAgICAgICAgICAgICAgICAgICBsLCBpbnQsICAgICAgICAgICAg ICAgcCwKK0BAIC00MDU4LDcgKzQwNTgsNyBAQCBzdHJ1Y3Qga2VybmVsX3N0YXRmcyB7CisgICAj aWYgZGVmaW5lZChfX2kzODZfXykgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXAorICAgICAgIGRlZmluZWQoX19BUk1fQVJDSF8zX18pIHx8IGRl ZmluZWQoX19BUk1fRUFCSV9fKSB8fCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIChkZWZp bmVkKF9fbWlwc19fKSAmJiBfTUlQU19TSU0gPT0gX01JUFNfU0lNX0FCSTMyKSB8fCAgICAgICAg ICAgICAgICAgICBcCistICAgICAgZGVmaW5lZChfX1BQQ19fKSB8fCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgKGRlZmluZWQoX19Q UENfXykgJiYgIWRlZmluZWQoX19wb3dlcnBjNjRfXykpIHx8ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAoZGVmaW5lZChfX3MzOTBf XykgJiYgIWRlZmluZWQoX19zMzkweF9fKSkKKyAgICAgLyogT24gdGhlc2UgYXJjaGl0ZWN0dXJl cywgaW1wbGVtZW50IG1tYXAoKSB3aXRoIG1tYXAyKCkuICovCisgICAgIExTU19JTkxJTkUgdm9p ZCogTFNTX05BTUUobW1hcCkodm9pZCAqcywgc2l6ZV90IGwsIGludCBwLCBpbnQgZiwgaW50IGQs CitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L3BmZmZ0L3NyYy9wZmZmdC5jIHRoaXJkX3BhcnR5L3Bm ZmZ0L3NyYy9wZmZmdC5jCitpbmRleCBiZGFjNGQ3ODQuLjUxZTBmMmNhYyAxMDA2NDQKKy0tLSB0 aGlyZF9wYXJ0eS9wZmZmdC9zcmMvcGZmZnQuYworKysrIHRoaXJkX3BhcnR5L3BmZmZ0L3NyYy9w ZmZmdC5jCitAQCAtMTAwLDYgKzEwMCw3IEBACisgICAgQWx0aXZlYyBzdXBwb3J0IG1hY3JvcyAK KyAqLworICNpZiAhZGVmaW5lZChQRkZGVF9TSU1EX0RJU0FCTEUpICYmIChkZWZpbmVkKF9fcHBj X18pIHx8IGRlZmluZWQoX19wcGM2NF9fKSkKKysjaW5jbHVkZSA8YWx0aXZlYy5oPgorIHR5cGVk ZWYgdmVjdG9yIGZsb2F0IHY0c2Y7CisgIyAgZGVmaW5lIFNJTURfU1ogNAorICMgIGRlZmluZSBW WkVSTygpICgodmVjdG9yIGZsb2F0KSB2ZWNfc3BsYXRfdTgoMCkpCitkaWZmIC0tZ2l0IHRoaXJk X3BhcnR5L3NraWEvc3JjL3Nrc2wvU2tTTFN0cmluZy5jcHAgdGhpcmRfcGFydHkvc2tpYS9zcmMv c2tzbC9Ta1NMU3RyaW5nLmNwcAoraW5kZXggZWMzZTU2OTY0Li40Y2Y4OTk5YTIgMTAwNjQ0Cist LS0gdGhpcmRfcGFydHkvc2tpYS9zcmMvc2tzbC9Ta1NMU3RyaW5nLmNwcAorKysrIHRoaXJkX3Bh cnR5L3NraWEvc3JjL3Nrc2wvU2tTTFN0cmluZy5jcHAKK0BAIC0yMzQsNyArMjM0LDEyIEBAIFN0 cmluZyB0b19zdHJpbmcoZG91YmxlIHZhbHVlKSB7CisgICAgIGlmIChuZWVkc0RvdFplcm8pIHsK KyAgICAgICAgIGJ1ZmZlciA8PCAiLjAiOworICAgICB9CistICAgIHJldHVybiBTdHJpbmcoYnVm ZmVyLnN0cigpLmNfc3RyKCkpOworKworKyAgICBzdGQ6OnN0cmluZyByZXQoYnVmZmVyLnN0cigp KTsKKysgICAgaWYgKHNpZ25iaXQodmFsdWUpICYmIHJldFswXSA9PSAnLicpIHsKKysgICAgICAg IHJldFswXSA9ICctJzsKKysgICAgfQorKyAgICByZXR1cm4gU3RyaW5nKHJldC5jX3N0cigpKTsK KyB9CisgCisgYm9vbCBzdG9kKGNvbnN0IFN0cmluZ0ZyYWdtZW50JiBzLCBTS1NMX0ZMT0FUKiB2 YWx1ZSkgeworZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2FtYWxnYW1hdGlvbi9z cWxpdGUzLmMgdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb24vc3FsaXRlMy5jCitp bmRleCA2YjRhNzg5OWQuLmI4YzdmZTQxNCAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS9zcWxpdGUv c3JjL2FtYWxnYW1hdGlvbi9zcWxpdGUzLmMKKysrKyB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL2Ft YWxnYW1hdGlvbi9zcWxpdGUzLmMKK0BAIC0xNDQ3NCw3ICsxNDQ3NCw4IEBAIHR5cGVkZWYgSU5U MTZfVFlQRSBMb2dFc3Q7CisgIyBpZiBkZWZpbmVkKGkzODYpICAgICAgfHwgZGVmaW5lZChfX2kz ODZfXykgICAgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKKyAgICAgIGRlZmluZWQoX194 ODZfNjQpICB8fCBkZWZpbmVkKF9feDg2XzY0X18pICAgIHx8IGRlZmluZWQoX01fWDY0KSAgfHwg ICAgXAorICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgIHx8IGRlZmluZWQoX01fQVJNKSAgICAgICAg fHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCistICAgICBkZWZpbmVkKF9fQVJNRUxfXykgfHwg ZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9NX0FSTTY0KQorKyAgICAgZGVmaW5l ZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVmaW5lZChfTV9BUk02 NCkgfHwgICBcCisrICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIChfX0JZVEVfT1JERVJf XyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykKKyAjICAgZGVmaW5lIFNRTElURV9CWVRFT1JE RVIgICAgMTIzNAorICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICAgfHwgZGVmaW5lZChfX3BwY19f KSB8fCBcCisgICAgICAgIGRlZmluZWQoX19BUk1FQl9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVC X18pCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvYW1hbGdhbWF0aW9uX2Rldi9z cWxpdGUzLmMgdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9hbWFsZ2FtYXRpb25fZGV2L3NxbGl0ZTMu YworaW5kZXggZDMwYzliN2RlLi5jZjc1YTY5ZDkgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvc3Fs aXRlL3NyYy9hbWFsZ2FtYXRpb25fZGV2L3NxbGl0ZTMuYworKysrIHRoaXJkX3BhcnR5L3NxbGl0 ZS9zcmMvYW1hbGdhbWF0aW9uX2Rldi9zcWxpdGUzLmMKK0BAIC0xNDQ4Nyw3ICsxNDQ4Nyw4IEBA IHR5cGVkZWYgSU5UMTZfVFlQRSBMb2dFc3Q7CisgIyBpZiBkZWZpbmVkKGkzODYpICAgICAgfHwg ZGVmaW5lZChfX2kzODZfXykgICAgICB8fCBkZWZpbmVkKF9NX0lYODYpIHx8ICAgIFwKKyAgICAg IGRlZmluZWQoX194ODZfNjQpICB8fCBkZWZpbmVkKF9feDg2XzY0X18pICAgIHx8IGRlZmluZWQo X01fWDY0KSAgfHwgICAgXAorICAgICAgZGVmaW5lZChfTV9BTUQ2NCkgIHx8IGRlZmluZWQoX01f QVJNKSAgICAgICAgfHwgZGVmaW5lZChfX3g4NikgICB8fCAgICBcCistICAgICBkZWZpbmVkKF9f QVJNRUxfXykgfHwgZGVmaW5lZChfX0FBUkNINjRFTF9fKSB8fCBkZWZpbmVkKF9NX0FSTTY0KQor KyAgICAgZGVmaW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVm aW5lZChfTV9BUk02NCkgfHwgICBcCisrICAgICBkZWZpbmVkKF9fcG93ZXJwYzY0X18pICYmIChf X0JZVEVfT1JERVJfXyA9PSBfX09SREVSX0xJVFRMRV9FTkRJQU5fXykKKyAjICAgZGVmaW5lIFNR TElURV9CWVRFT1JERVIgICAgMTIzNAorICMgZWxpZiBkZWZpbmVkKHNwYXJjKSAgICAgfHwgZGVm aW5lZChfX3BwY19fKSB8fCBcCisgICAgICAgIGRlZmluZWQoX19BUk1FQl9fKSB8fCBkZWZpbmVk KF9fQUFSQ0g2NEVCX18pCitkaWZmIC0tZ2l0IHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0 cmVlL3J0cmVlLmMgdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9leHQvcnRyZWUvcnRyZWUuYworaW5k ZXggZjViNTdhNWUyLi44MGEyZDBhZDggMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvc3FsaXRlL3Ny Yy9leHQvcnRyZWUvcnRyZWUuYworKysrIHRoaXJkX3BhcnR5L3NxbGl0ZS9zcmMvZXh0L3J0cmVl L3J0cmVlLmMKK0BAIC00NTAsNyArNDUwLDcgQEAgc3RydWN0IFJ0cmVlTWF0Y2hBcmcgeworICNp ZiBkZWZpbmVkKGkzODYpICAgICB8fCBkZWZpbmVkKF9faTM4Nl9fKSAgIHx8IGRlZmluZWQoX01f SVg4NikgfHwgICAgXAorICAgICBkZWZpbmVkKF9feDg2XzY0KSB8fCBkZWZpbmVkKF9feDg2XzY0 X18pIHx8IGRlZmluZWQoX01fWDY0KSAgfHwgICAgXAorICAgICBkZWZpbmVkKF9NX0FNRDY0KSB8 fCBkZWZpbmVkKF9NX0FSTSkgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAorLSAgICBk ZWZpbmVkKF9fYXJtX18pCisrICAgIGRlZmluZWQoX19hcm1fXykgfHwgZGVmaW5lZChfX3Bvd2Vy cGM2NF9fKSAmJiAoX19CWVRFX09SREVSX18gPT0gX19PUkRFUl9MSVRUTEVfRU5ESUFOX18pCisg IyBkZWZpbmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0CisgI2VsaWYgZGVmaW5lZChzcGFyYykg ICAgfHwgZGVmaW5lZChfX3BwY19fKQorICMgZGVmaW5lIFNRTElURV9CWVRFT1JERVIgICAgNDMy MQorZGlmZiAtLWdpdCB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaCB0aGly ZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaAoraW5kZXggMjQ1MDcwZDRmLi5iMjUx NjRlOTUgMTAwNjQ0CistLS0gdGhpcmRfcGFydHkvc3FsaXRlL3NyYy9zcmMvc3FsaXRlSW50LmgK KysrKyB0aGlyZF9wYXJ0eS9zcWxpdGUvc3JjL3NyYy9zcWxpdGVJbnQuaAorQEAgLTg3Nyw3ICs4 NzcsOCBAQCB0eXBlZGVmIElOVDE2X1RZUEUgTG9nRXN0OworICMgaWYgZGVmaW5lZChpMzg2KSAg ICAgIHx8IGRlZmluZWQoX19pMzg2X18pICAgICAgfHwgZGVmaW5lZChfTV9JWDg2KSB8fCAgICBc CisgICAgICBkZWZpbmVkKF9feDg2XzY0KSAgfHwgZGVmaW5lZChfX3g4Nl82NF9fKSAgICB8fCBk ZWZpbmVkKF9NX1g2NCkgIHx8ICAgIFwKKyAgICAgIGRlZmluZWQoX01fQU1ENjQpICB8fCBkZWZp bmVkKF9NX0FSTSkgICAgICAgIHx8IGRlZmluZWQoX194ODYpICAgfHwgICAgXAorLSAgICAgZGVm aW5lZChfX0FSTUVMX18pIHx8IGRlZmluZWQoX19BQVJDSDY0RUxfXykgfHwgZGVmaW5lZChfTV9B Uk02NCkKKysgICAgIGRlZmluZWQoX19BUk1FTF9fKSB8fCBkZWZpbmVkKF9fQUFSQ0g2NEVMX18p IHx8IGRlZmluZWQoX01fQVJNNjQpIHx8IFwKKysgICAgIGRlZmluZWQoX19wb3dlcnBjNjRfXykg JiYgKF9fQllURV9PUkRFUl9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fKQorICMgICBkZWZp bmUgU1FMSVRFX0JZVEVPUkRFUiAgICAxMjM0CisgIyBlbGlmIGRlZmluZWQoc3BhcmMpICAgICB8 fCBkZWZpbmVkKF9fcHBjX18pIHx8IFwKKyAgICAgICAgZGVmaW5lZChfX0FSTUVCX18pIHx8IGRl ZmluZWQoX19BQVJDSDY0RUJfXykKK2RpZmYgLS1naXQgdGhpcmRfcGFydHkvd2VicnRjL21vZHVs ZXMvZGVza3RvcF9jYXB0dXJlL2RpZmZlcl9ibG9jay5jYyB0aGlyZF9wYXJ0eS93ZWJydGMvbW9k dWxlcy9kZXNrdG9wX2NhcHR1cmUvZGlmZmVyX2Jsb2NrLmNjCitpbmRleCA0ZjBjNTQzMGMuLjU0 ZWUwODI5ZSAxMDA2NDQKKy0tLSB0aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9kZXNrdG9wX2Nh cHR1cmUvZGlmZmVyX2Jsb2NrLmNjCisrKysgdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvZGVz a3RvcF9jYXB0dXJlL2RpZmZlcl9ibG9jay5jYworQEAgLTMwLDExICszMCw3IEBAIGJvb2wgVmVj dG9yRGlmZmVyZW5jZShjb25zdCB1aW50OF90KiBpbWFnZTEsIGNvbnN0IHVpbnQ4X3QqIGltYWdl MikgeworICAgc3RhdGljIGJvb2wgKCpkaWZmX3Byb2MpKGNvbnN0IHVpbnQ4X3QqLCBjb25zdCB1 aW50OF90KikgPSBudWxscHRyOworIAorICAgaWYgKCFkaWZmX3Byb2MpIHsKKy0jaWYgZGVmaW5l ZChXRUJSVENfQVJDSF9BUk1fRkFNSUxZKSB8fCBkZWZpbmVkKFdFQlJUQ19BUkNIX01JUFNfRkFN SUxZKQorLSAgICAvLyBGb3IgQVJNIGFuZCBNSVBTIHByb2Nlc3NvcnMsIGFsd2F5cyB1c2UgQyB2 ZXJzaW9uLgorLSAgICAvLyBUT0RPKGhjbGFtKTogSW1wbGVtZW50IGEgTkVPTiB2ZXJzaW9uLgor LSAgICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlmZmVyZW5jZV9DOworLSNlbHNlCisrI2lmIGRlZmlu ZWQoV0VCUlRDX0FSQ0hfWDg2X0ZBTUlMWSkKKyAgICAgYm9vbCBoYXZlX3NzZTIgPSBHZXRDUFVJ bmZvKGtTU0UyKSAhPSAwOworICAgICAvLyBGb3IgeDg2IHByb2Nlc3NvcnMsIGNoZWNrIGlmIFNT RTIgaXMgc3VwcG9ydGVkLgorICAgICBpZiAoaGF2ZV9zc2UyICYmIGtCbG9ja1NpemUgPT0gMzIp IHsKK0BAIC00NCw2ICs0MCwxMCBAQCBib29sIFZlY3RvckRpZmZlcmVuY2UoY29uc3QgdWludDhf dCogaW1hZ2UxLCBjb25zdCB1aW50OF90KiBpbWFnZTIpIHsKKyAgICAgfSBlbHNlIHsKKyAgICAg ICBkaWZmX3Byb2MgPSAmVmVjdG9yRGlmZmVyZW5jZV9DOworICAgICB9CisrI2Vsc2UKKysgICAg Ly8gRm9yIG90aGVyIHByb2Nlc3NvcnMsIGFsd2F5cyB1c2UgQyB2ZXJzaW9uLgorKyAgICAvLyBU T0RPKGhjbGFtKTogSW1wbGVtZW50IGEgTkVPTiB2ZXJzaW9uLgorKyAgICBkaWZmX3Byb2MgPSAm VmVjdG9yRGlmZmVyZW5jZV9DOworICNlbmRpZgorICAgfQorIAorZGlmZiAtLWdpdCB0aGlyZF9w YXJ0eS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2FyY2guaCB0aGlyZF9wYXJ0eS93ZWJydGMvcnRj X2Jhc2Uvc3lzdGVtL2FyY2guaAoraW5kZXggYmUyMzY3Yjg1Li5iZTRlZTQyMzMgMTAwNjQ0Cist LS0gdGhpcmRfcGFydHkvd2VicnRjL3J0Y19iYXNlL3N5c3RlbS9hcmNoLmgKKysrKyB0aGlyZF9w YXJ0eS93ZWJydGMvcnRjX2Jhc2Uvc3lzdGVtL2FyY2guaAorQEAgLTc5LDYgKzc5LDE4IEBACisg I2VsaWYgZGVmaW5lZChfX0VNU0NSSVBURU5fXykKKyAjZGVmaW5lIFdFQlJUQ19BUkNIXzMyX0JJ VFMKKyAjZGVmaW5lIFdFQlJUQ19BUkNIX0xJVFRMRV9FTkRJQU4KKysjZWxpZiBkZWZpbmVkKF9f UFBDX18pCisrI2RlZmluZSBXRUJSVENfQVJDSF9QUENfRkFNSUxZCisrI2lmIF9fQllURV9PUkRF Ul9fID09IF9fT1JERVJfTElUVExFX0VORElBTl9fCisrI2RlZmluZSBXRUJSVENfQVJDSF9MSVRU TEVfRU5ESUFOCisrI2Vsc2UKKysjZGVmaW5lIFdFQlJUQ19BUkNIX0JJR19FTkRJQU4KKysjZW5k aWYKKysjaWYgZGVmaW5lZChfX0xQNjRfXykKKysjZGVmaW5lIFdFQlJUQ19BUkNIXzY0X0JJVFMK KysjZWxzZQorKyNkZWZpbmUgV0VCUlRDX0FSQ0hfMzJfQklUUworKyNlbmRpZgorICNlbHNlCisg I2Vycm9yIFBsZWFzZSBhZGQgc3VwcG9ydCBmb3IgeW91ciBhcmNoaXRlY3R1cmUgaW4gcnRjX2Jh c2Uvc3lzdGVtL2FyY2guaAorICNlbmRpZgorZGlmZiAtLWdpdCB2OC9CVUlMRC5nbiB2OC9CVUlM RC5nbgoraW5kZXggZjM5NTI5YTNhLi5lODRmYzQ0OWUgMTAwNjQ0CistLS0gdjgvQlVJTEQuZ24K KysrKyB2OC9CVUlMRC5nbgorQEAgLTg1MCw2ICs4NTAsMTIgQEAgY29uZmlnKCJ0b29sY2hhaW4i KSB7CisgICAgIH0KKyAgICAgaWYgKGhvc3RfYnl0ZW9yZGVyID09ICJsaXR0bGUiKSB7CisgICAg ICAgZGVmaW5lcyArPSBbICJWOF9UQVJHRVRfQVJDSF9QUENfTEUiIF0KKysgICAgICBjZmxhZ3Mg Kz0gWworKyAgICAgICAgIyBFbmFibGUgdXNhZ2Ugb2YgQWx0aVZlYywgVlNYLCBhbmQgb3RoZXIg UE9XRVI4IGFuZCBoaWdoZXIgZmVhdHVyZXMKKysgICAgICAgICItbWNwdT1wb3dlcjgiLAorKyAg ICAgICAgIi1tYWx0aXZlYyIsCisrICAgICAgICAiLW12c3giLAorKyAgICAgIF0KKyAgICAgfSBl bHNlIGlmIChob3N0X2J5dGVvcmRlciA9PSAiYmlnIikgeworICAgICAgIGRlZmluZXMgKz0gWyAi VjhfVEFSR0VUX0FSQ0hfUFBDX0JFIiBdCisgICAgICAgaWYgKGN1cnJlbnRfb3MgPT0gImFpeCIp IHsKK2RpZmYgLS1naXQgdWkvZ2wvZmVhdHVyZXMuZ25pIHVpL2dsL2ZlYXR1cmVzLmduaQoraW5k ZXggNWZkYTliNi4uM2QyZGQ4YiAxMDA2NDQKKy0tLSB1aS9nbC9mZWF0dXJlcy5nbmkKKysrKyB1 aS9nbC9mZWF0dXJlcy5nbmkKK0BAIC0zMiw1ICszMiw2IEBAIGRlY2xhcmVfYXJncygpIHsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAoaXNfbWFjICYmIHVzZV9lZ2wpIHx8IGlzX2Nocm9tZW9z X2FzaCB8fCBpc19mdWNoc2lhKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldF9j cHUgPT0gIng4NiIgfHwgdGFyZ2V0X2NwdSA9PSAieDY0IiB8fAorICAgICAgICAgICAgICAgICAg ICAgICAgIHRhcmdldF9jcHUgPT0gImFybSIgfHwgdGFyZ2V0X2NwdSA9PSAiYXJtNjQiIHx8Cist ICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NwdSA9PSAibWlwc2VsIiB8fCB0YXJnZXRf Y3B1ID09ICJtaXBzNjRlbCIpCisrICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X2NwdSA9 PSAibWlwc2VsIiB8fCB0YXJnZXRfY3B1ID09ICJtaXBzNjRlbCIgfHwKKysgICAgICAgICAgICAg ICAgICAgICAgICB0YXJnZXRfY3B1ID09ICJwcGM2NCIpCisgfQorZGlmZiAtLWdpdCB2OC90ZXN0 L0JVSUxELmduIHY4L3Rlc3QvQlVJTEQuZ24KK2luZGV4IGZiODcyYWQzOS4uNDVmYzU4NWRkIDEw MDY0NAorLS0tIHY4L3Rlc3QvQlVJTEQuZ24KKysrKyB2OC90ZXN0L0JVSUxELmduCitAQCAtMzYs NyArMzYsNyBAQCBncm91cCgiZ25fYWxsIikgeworICAgICAgICJiZW5jaG1hcmtzL2NwcDpnbl9h bGwiLAorICAgICAgICJjY3Rlc3Q6Y2N0ZXN0IiwKKyAgICAgICAiY2N0ZXN0OmdlbmVyYXRlLWJ5 dGVjb2RlLWV4cGVjdGF0aW9ucyIsCistICAgICAgInVuaXR0ZXN0czp1bml0dGVzdHMiLAorKyAg ICAgICMidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisgICAgIF0KKyAgIH0KKyB9CitAQCAtNzgsNyAr NzgsNyBAQCBncm91cCgidjhfYm90X2RlZmF1bHQiKSB7CisgICAgICJtZXNzYWdlOnY4X21lc3Nh Z2UiLAorICAgICAibWpzdW5pdDp2OF9tanN1bml0IiwKKyAgICAgIm1rZ3Jva2R1bXA6bWtncm9r ZHVtcCIsCistICAgICJ1bml0dGVzdHM6dW5pdHRlc3RzIiwKKysgICAgIyJ1bml0dGVzdHM6dW5p dHRlc3RzIiwKKyAgICAgIndhc20tYXBpLXRlc3RzOndhc21fYXBpX3Rlc3RzIiwKKyAgICAgIndh c20tanM6djhfd2FzbV9qcyIsCisgICAgICJ3YXNtLXNwZWMtdGVzdHM6djhfd2FzbV9zcGVjX3Rl c3RzIiwKK0BAIC05OCw3ICs5OCw3IEBAIGdyb3VwKCJ2OF9kZWZhdWx0IikgeworICAgICAibWVz c2FnZTp2OF9tZXNzYWdlIiwKKyAgICAgIm1qc3VuaXQ6djhfbWpzdW5pdCIsCisgICAgICJta2dy b2tkdW1wOm1rZ3Jva2R1bXAiLAorLSAgICAidW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisrICAgICMi dW5pdHRlc3RzOnVuaXR0ZXN0cyIsCisgICAgICJ3YXNtLWFwaS10ZXN0czp3YXNtX2FwaV90ZXN0 cyIsCisgICAgICJ3YXNtLWpzOnY4X3dhc21fanMiLAorICAgICAid2FzbS1zcGVjLXRlc3RzOnY4 X3dhc21fc3BlY190ZXN0cyIsCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMv cGF0Y2hlcy9jaHJvbWl1bS14eHgtcHBjNjRsZS1zd2lmdHNoYWRlci5wYXRjaCBiL3NyY3BrZ3Mv ZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2Nocm9taXVtLXh4eC1wcGM2NGxlLXN3aWZ0c2hhZGVy LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNTM1NDlkMTdm NWFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMv Y2hyb21pdW0teHh4LXBwYzY0bGUtc3dpZnRzaGFkZXIucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAor LS0tIHRoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9CVUlMRC5n bgorKysrIHRoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9CVUlM RC5nbgorQEAgLTU3NCw2ICs1NzQsNyBAQCBzd2lmdHNoYWRlcl9sbHZtX3NvdXJjZV9zZXQoInN3 aWZ0c2hhZGVyCisgICAgICJsbHZtL2xpYi9NQy9NQ0FzbUluZm9DT0ZGLmNwcCIsCisgICAgICJs bHZtL2xpYi9NQy9NQ0FzbUluZm9EYXJ3aW4uY3BwIiwKKyAgICAgImxsdm0vbGliL01DL01DQXNt SW5mb0VMRi5jcHAiLAorKyAgICAibGx2bS9saWIvTUMvTUNBc21JbmZvWENPRkYuY3BwIiwKKyAg ICAgImxsdm0vbGliL01DL01DQXNtTWFjcm8uY3BwIiwKKyAgICAgImxsdm0vbGliL01DL01DQXNt U3RyZWFtZXIuY3BwIiwKKyAgICAgImxsdm0vbGliL01DL01DQXNzZW1ibGVyLmNwcCIsCitAQCAt NjI5LDYgKzYzMCw3IEBAIHN3aWZ0c2hhZGVyX2xsdm1fc291cmNlX3NldCgic3dpZnRzaGFkZXIK KyAgICAgImxsdm0vbGliL01DL01DV2luQ09GRlN0cmVhbWVyLmNwcCIsCisgICAgICJsbHZtL2xp Yi9NQy9NQ1dpbkVILmNwcCIsCisgICAgICJsbHZtL2xpYi9NQy9NQ1hDT0ZGU3RyZWFtZXIuY3Bw IiwKKysgICAgImxsdm0vbGliL01DL01DWENPRkZPYmplY3RUYXJnZXRXcml0ZXIuY3BwIiwKKyAg ICAgImxsdm0vbGliL01DL01hY2hPYmplY3RXcml0ZXIuY3BwIiwKKyAgICAgImxsdm0vbGliL01D L1N0cmluZ1RhYmxlQnVpbGRlci5jcHAiLAorICAgICAibGx2bS9saWIvTUMvU3VidGFyZ2V0RmVh dHVyZS5jcHAiLApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMv ZWxlY3Ryb24tQWRkLWEtc2NyaXB0LXRvLWxpc3QtcGF0Y2gtdGFyZ2V0cy5wYXRjaC5wYXRjaCBi L3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLUFkZC1hLXNjcmlwdC10 by1saXN0LXBhdGNoLXRhcmdldHMucGF0Y2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAwLi45MTZkYmE5ZGMzYmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dz L2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1BZGQtYS1zY3JpcHQtdG8tbGlzdC1w YXRjaC10YXJnZXRzLnBhdGNoLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZmY0MTIyZjIz NmI3MGMyNzJjNzQ2ZDBjMzM2Y2RiZDU4OGQ3OGNkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK K0Zyb206IEVsdmlzIFByYW5za2V2aWNodXMgPGVsdmlzQG1hZ2ljLmlvPgorRGF0ZTogVGh1LCAx MiBEZWMgMjAxOSAxNjoxMjoxOCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGQgYSBzY3JpcHQg dG8gbGlzdCBwYXRjaCB0YXJnZXRzCisKKy0tLQorIHNjcmlwdC9saXN0X3BhdGNoX3RhcmdldHMu cHkgfCAyMyArKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyMyBpbnNl cnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNzU1IHNjcmlwdC9saXN0X3BhdGNoX3RhcmdldHMu cHkKKworZGlmZiAtLWdpdCBhL3NjcmlwdC9saXN0X3BhdGNoX3RhcmdldHMucHkgYi9zY3JpcHQv bGlzdF9wYXRjaF90YXJnZXRzLnB5CituZXcgZmlsZSBtb2RlIDEwMDc1NQoraW5kZXggMDAwMDAw MDAwLi41NTE3M2JhYzkKKy0tLSAvZGV2L251bGwKKysrKyBiL3NjcmlwdC9saXN0X3BhdGNoX3Rh cmdldHMucHkKK0BAIC0wLDAgKzEsMjMgQEAKKysjIS91c3IvYmluL2VudiBweXRob24KKysKKytp bXBvcnQgYXJncGFyc2UKKytpbXBvcnQganNvbgorKworKworK2RlZiBwYXJzZV9hcmdzKCk6Cisr ICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nQXBwbHkgRWxl Y3Ryb24gcGF0Y2hlcycpCisrICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdjb25maWcnLCBuYXJncz0n KycsCisrICAgICAgICAgICAgICAgICAgICAgIHR5cGU9YXJncGFyc2UuRmlsZVR5cGUoJ3InKSwK KysgICAgICAgICAgICAgICAgICAgICAgaGVscD0ncGF0Y2hlc1wnIGNvbmZpZyhzKSBpbiB0aGUg SlNPTiBmb3JtYXQnKQorKyAgcmV0dXJuIHBhcnNlci5wYXJzZV9hcmdzKCkKKysKKysKKytkZWYg bWFpbigpOgorKyAgY29uZmlncyA9IHBhcnNlX2FyZ3MoKS5jb25maWcKKysgIGZvciBjb25maWdf anNvbiBpbiBjb25maWdzOgorKyAgICBmb3IgcGF0Y2hfZGlyLCByZXBvIGluIGpzb24ubG9hZChj b25maWdfanNvbikuaXRlcml0ZW1zKCk6CisrICAgICAgcHJpbnQocmVwbykKKysKKysKKytpZiBf X25hbWVfXyA9PSAnX19tYWluX18nOgorKyAgbWFpbigpCistLSAKKzIuMjMuMAorCmRpZmYgLS1n aXQgYS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1CdWlsZC1maXhl cy5wYXRjaC5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9u LUJ1aWxkLWZpeGVzLnBhdGNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwMC4uMjk4YmZhOWJjYjJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJv bjEyL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tQnVpbGQtZml4ZXMucGF0Y2gucGF0Y2gKQEAgLTAs MCArMSw0NyBAQAorZGlmZiAtLWdpdCBhL2J1aWxkL2FyZ3MvcmVsZWFzZS5nbiBiL2J1aWxkL2Fy Z3MvcmVsZWFzZS5nbgoraW5kZXggZTUwMTdmNmUxLi41OTIwN2IzODkgMTAwNjQ0CistLS0gYS9i dWlsZC9hcmdzL3JlbGVhc2UuZ24KKysrKyBiL2J1aWxkL2FyZ3MvcmVsZWFzZS5nbgorQEAgLTEs NiArMSw0IEBACisgaW1wb3J0KCJhbGwuZ24iKQorLWlzX2NvbXBvbmVudF9idWlsZCA9IGZhbHNl CistaXNfb2ZmaWNpYWxfYnVpbGQgPSB0cnVlCisgCisgIyBUaGlzIG1heSBiZSBndWFyZGVkIGJl aGluZCBpc19jaHJvbWVfYnJhbmRlZCBhbG9uZ3NpZGUKKyAjIHByb3ByaWV0YXJ5X2NvZGVjcyBo dHRwczovL3dlYnJ0Yy1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL3NyYy8rLzM2MzIxLAorQEAg LTgsOSArNiwzIEBAIGlzX29mZmljaWFsX2J1aWxkID0gdHJ1ZQorICMgVGhlIGluaXRpYWxpemF0 aW9uIG9mIHRoZSBkZWNvZGVyIGRlcGVuZHMgb24gd2hldGhlciBmZm1wZWcgaGFzCisgIyBiZWVu IGJ1aWx0IHdpdGggSC4yNjQgc3VwcG9ydC4KKyBydGNfdXNlX2gyNjQgPSBwcm9wcmlldGFyeV9j b2RlY3MKKy0KKy0jIEJ5IGRlZmF1bHQsIEVsZWN0cm9uIGJ1aWxkcyBmZm1wZWcgd2l0aCBwcm9w cmlldGFyeSBjb2RlY3MgZW5hYmxlZC4gSW4gb3JkZXIKKy0jIHRvIGZhY2lsaXRhdGUgdXNlcnMg d2hvIGRvbid0IHdhbnQgdG8gc2hpcCBwcm9wcmlldGFyeSBjb2RlY3MgaW4gZmZtcGVnLCBvcgor LSMgd2hvIGhhdmUgYW4gTEdQTCByZXF1aXJlbWVudCB0byBzaGlwIGZmbXBlZyBhcyBhIGR5bmFt aWNhbGx5IGxpbmtlZCBsaWJyYXJ5LAorLSMgd2UgYnVpbGQgZmZtcGVnIGFzIGEgc2hhcmVkIGxp YnJhcnkuCistaXNfY29tcG9uZW50X2ZmbXBlZyA9IHRydWUKK2RpZmYgLS1naXQgYS9idWlsZC9u cG0uZ25pIGIvYnVpbGQvbnBtLmduaQoraW5kZXggYTE5ODdkMDk1Li5mYjMzYTE0YzMgMTAwNjQ0 CistLS0gYS9idWlsZC9ucG0uZ25pCisrKysgYi9idWlsZC9ucG0uZ25pCitAQCAtMzUsNyArMzUs NiBAQCB0ZW1wbGF0ZSgibnBtX2FjdGlvbiIpIHsKKyAgICAgaWYgKCFkZWZpbmVkKGRlcHMpKSB7 CisgICAgICAgZGVwcyA9IFtdCisgICAgIH0KKy0gICAgZGVwcyArPSBbICI6bnBtX3ByZV9mbGln aHRfIiArIHRhcmdldF9uYW1lIF0KKyAKKyAgICAgc2NyaXB0ID0gIi8vZWxlY3Ryb24vYnVpbGQv bnBtLXJ1bi5weSIKKyAgICAgYXJncyA9IFsKK2RpZmYgLS1naXQgYS9wYXRjaGVzL25vZGUvZml4 X2FkZF9kZWZhdWx0X3ZhbHVlc19mb3JfZW5hYmxlX2x0b19hbmRfYnVpbGRfdjhfd2l0aF9nbl9p bi5wYXRjaCBiL3BhdGNoZXMvbm9kZS9maXhfYWRkX2RlZmF1bHRfdmFsdWVzX2Zvcl9lbmFibGVf bHRvX2FuZF9idWlsZF92OF93aXRoX2duX2luLnBhdGNoCitpbmRleCAwZGM5OTE2YmUuLjdlYWE0 NmJmNSAxMDA2NDQKKy0tLSBhL3BhdGNoZXMvbm9kZS9maXhfYWRkX2RlZmF1bHRfdmFsdWVzX2Zv cl9lbmFibGVfbHRvX2FuZF9idWlsZF92OF93aXRoX2duX2luLnBhdGNoCisrKysgYi9wYXRjaGVz L25vZGUvZml4X2FkZF9kZWZhdWx0X3ZhbHVlc19mb3JfZW5hYmxlX2x0b19hbmRfYnVpbGRfdjhf d2l0aF9nbl9pbi5wYXRjaAorQEAgLTMwLDcgKzMwLDcgQEAKKyArICAgICMgdGhlc2UgdmFsdWVz IGJlaW5nIGFjY3VyYXRlLgorICsgICAgJ2J1aWxkX3Y4X3dpdGhfZ24nOiAnZmFsc2UnLAorICsg ICAgJ2VuYWJsZV9sdG8lJzogJ2ZhbHNlJywKKy0rCisrKyAgICAnb3BlbnNzbF9maXBzJzogJycs CisgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgWyd0YXJnZXRfYXJjaD09ImFybTY0Iics IHsKKyAgICAgICAgICAjIERpc2FibGVkIHBlbmRpbmcgaHR0cHM6Ly9naXRodWIuY29tL25vZGVq cy9ub2RlL2lzc3Vlcy8yMzkxMy4KKwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2Zp bGVzL3BhdGNoZXMvZWxlY3Ryb24tZG9udC1hc3N1bWUtcHl0aG9uLWlzLXB5dGhvbjIucGF0Y2gg Yi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1kb250LWFzc3VtZS1w eXRob24taXMtcHl0aG9uMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLmZiMTM0NzQ4MDI1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24x Mi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWRvbnQtYXNzdW1lLXB5dGhvbi1pcy1weXRob24yLnBh dGNoCkBAIC0wLDAgKzEsMTcgQEAKKy0tLSBhL2J1aWxkL3ppcC5weS5vcmlnCTIwMjAtMDQtMjcg MTc6NTk6NTMuNDk5MjgxNjY3ICswMjAwCisrKysgYi9idWlsZC96aXAucHkJMjAyMC0wNC0yNyAx Nzo1OTo1Ny42NTU4MzkxNDMgKzAyMDAKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52 IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjIKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0 IHByaW50X2Z1bmN0aW9uCisgaW1wb3J0IG9zCisgaW1wb3J0IHN1YnByb2Nlc3MKKworLS0tIGEv YnVpbGQvbnBtLXJ1bi5weS5vcmlnCTIwMjAtMDQtMjcgMTc6NTk6NTAuODI5MzUxODA3ICswMjAw CisrKysgYi9idWlsZC9ucG0tcnVuLnB5CTIwMjAtMDQtMjcgMTg6MDA6MDIuNzAyMzczMjU2ICsw MjAwCitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmlu L2VudiBweXRob24yCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIGlt cG9ydCBvcworIGltcG9ydCBzdWJwcm9jZXNzCmRpZmYgLS1naXQgYS9zcmNwa2dzL2VsZWN0cm9u MTIvZmlsZXMvcGF0Y2hlcy9lbGVjdHJvbi1leGNsdWRlLWNvbnRlbnQtdGVzdC1wYXRjaGVzLnBh dGNoIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3BhdGNoZXMvZWxlY3Ryb24tZXhjbHVkZS1j b250ZW50LXRlc3QtcGF0Y2hlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAwMDAuLjQ1NjIyMzY0NDI3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9wYXRjaGVzL2VsZWN0cm9uLWV4Y2x1ZGUtY29udGVudC10ZXN0LXBhdGNoZXMu cGF0Y2gKQEAgLTAsMCArMSwxMCBAQAorLS0tIGEvc2NyaXB0L2FwcGx5X2FsbF9wYXRjaGVzLnB5 CTIwMjAtMDgtMjIgMTc6NDY6NDEuNzk2NzA3NTA2ICswMjAwCisrKysgLQkyMDIwLTA4LTIyIDE3 OjQ3OjA1Ljg4NzgxMzUxMiArMDIwMAorQEAgLTE0LDYgKzE0LDcgQEAKKyAgIGZvciBwYXRjaF9k aXIsIHJlcG8gaW4gZGlycy5pdGVtcygpOgorICAgICBnaXQuaW1wb3J0X3BhdGNoZXMocmVwbz1y ZXBvLCBwYXRjaF9kYXRhPXBhdGNoX2Zyb21fZGlyKHBhdGNoX2RpciksCisgICAgICAgdGhyZWV3 YXk9dGhyZWV3YXkgaXMgbm90IE5vbmUsCisrICAgICAgZXhjbHVkZT1bJ3Rlc3QvbWpzdW5pdC8q KicsICdjb250ZW50L3Rlc3QvKionLCAndGVzdC9jY3Rlc3QvKionLCAndGVzdC91bml0dGVzdHMv KionLCAndGhpcmRfcGFydHkvYmxpbmsvd2ViX3Rlc3RzLyoqJ10sCisgICAgICAgY29tbWl0dGVy X25hbWU9IkVsZWN0cm9uIFNjcmlwdHMiLCBjb21taXR0ZXJfZW1haWw9InNjcmlwdHNAZWxlY3Ry b24iKQorIAorIApkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZp bGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5jYyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9z bmRpby1maWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4yYzdhYThlZmE2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNw a2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmNj CkBAIC0wLDAgKzEsMTQ4IEBACisvLyBDb3B5cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1 dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBp cyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBp biB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5jbHVkZSAiYmFzZS9tZXRyaWNzL2hpc3RvZ3JhbV9t YWNyb3MuaCIKKyNpbmNsdWRlICJiYXNlL21lbW9yeS9wdHJfdXRpbC5oIgorCisjaW5jbHVkZSAi bWVkaWEvYXVkaW8vb3BlbmJzZC9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaCIKKworI2luY2x1ZGUg Im1lZGlhL2F1ZGlvL2F1ZGlvX2RldmljZV9kZXNjcmlwdGlvbi5oIgorI2luY2x1ZGUgIm1lZGlh L2F1ZGlvL2F1ZGlvX291dHB1dF9kaXNwYXRjaGVyLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8v c25kaW8vc25kaW9faW5wdXQuaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9zbmRpby9zbmRpb19v dXRwdXQuaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL2xpbWl0cy5oIgorI2luY2x1ZGUgIm1lZGlh L2Jhc2UvbWVkaWFfc3dpdGNoZXMuaCIKKworbmFtZXNwYWNlIG1lZGlhIHsKKworLy8gTWF4aW11 bSBudW1iZXIgb2Ygb3V0cHV0IHN0cmVhbXMgdGhhdCBjYW4gYmUgb3BlbiBzaW11bHRhbmVvdXNs eS4KK3N0YXRpYyBjb25zdCBpbnQga01heE91dHB1dFN0cmVhbXMgPSA0OworCisvLyBEZWZhdWx0 IHNhbXBsZSByYXRlIGZvciBpbnB1dCBhbmQgb3V0cHV0IHN0cmVhbXMuCitzdGF0aWMgY29uc3Qg aW50IGtEZWZhdWx0U2FtcGxlUmF0ZSA9IDQ4MDAwOworCit2b2lkIEFkZERlZmF1bHREZXZpY2Uo QXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSB7CisgIERDSEVDSyhkZXZpY2VfbmFtZXMt PmVtcHR5KCkpOworICBkZXZpY2VfbmFtZXMtPnB1c2hfZnJvbnQoQXVkaW9EZXZpY2VOYW1lOjpD cmVhdGVEZWZhdWx0KCkpOworfQorCitib29sIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Okhhc0F1ZGlv T3V0cHV0RGV2aWNlcygpIHsKKyAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgQXVkaW9NYW5hZ2Vy T3BlbkJTRDo6SGFzQXVkaW9JbnB1dERldmljZXMoKSB7CisgIHJldHVybiB0cnVlOworfQorCit2 b2lkIEF1ZGlvTWFuYWdlck9wZW5CU0Q6OkdldEF1ZGlvSW5wdXREZXZpY2VOYW1lcygKKyAgICBB dWRpb0RldmljZU5hbWVzKiBkZXZpY2VfbmFtZXMpIHsKKyAgRENIRUNLKGRldmljZV9uYW1lcy0+ ZW1wdHkoKSk7CisgIEFkZERlZmF1bHREZXZpY2UoZGV2aWNlX25hbWVzKTsKK30KKwordm9pZCBB dWRpb01hbmFnZXJPcGVuQlNEOjpHZXRBdWRpb091dHB1dERldmljZU5hbWVzKAorICAgIEF1ZGlv RGV2aWNlTmFtZXMqIGRldmljZV9uYW1lcykgeworICBBZGREZWZhdWx0RGV2aWNlKGRldmljZV9u YW1lcyk7Cit9CisKK2NvbnN0IGNoYXIqIEF1ZGlvTWFuYWdlck9wZW5CU0Q6OkdldE5hbWUoKSB7 CisgIHJldHVybiAiU05ESU8iOworfQorCitBdWRpb1BhcmFtZXRlcnMgQXVkaW9NYW5hZ2VyT3Bl bkJTRDo6R2V0SW5wdXRTdHJlYW1QYXJhbWV0ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBk ZXZpY2VfaWQpIHsKKyAgc3RhdGljIGNvbnN0IGludCBrRGVmYXVsdElucHV0QnVmZmVyU2l6ZSA9 IDEwMjQ7CisKKyAgaW50IHVzZXJfYnVmZmVyX3NpemUgPSBHZXRVc2VyQnVmZmVyU2l6ZSgpOwor ICBpbnQgYnVmZmVyX3NpemUgPSB1c2VyX2J1ZmZlcl9zaXplID8KKyAgICAgIHVzZXJfYnVmZmVy X3NpemUgOiBrRGVmYXVsdElucHV0QnVmZmVyU2l6ZTsKKworICByZXR1cm4gQXVkaW9QYXJhbWV0 ZXJzKAorICAgICAgQXVkaW9QYXJhbWV0ZXJzOjpBVURJT19QQ01fTE9XX0xBVEVOQ1ksIENIQU5O RUxfTEFZT1VUX1NURVJFTywKKyAgICAgIGtEZWZhdWx0U2FtcGxlUmF0ZSwgYnVmZmVyX3NpemUp OworfQorCitBdWRpb01hbmFnZXJPcGVuQlNEOjpBdWRpb01hbmFnZXJPcGVuQlNEKHN0ZDo6dW5p cXVlX3B0cjxBdWRpb1RocmVhZD4gYXVkaW9fdGhyZWFkLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBBdWRpb0xvZ0ZhY3RvcnkqIGF1ZGlvX2xvZ19mYWN0b3J5KQor ICAgIDogQXVkaW9NYW5hZ2VyQmFzZShzdGQ6Om1vdmUoYXVkaW9fdGhyZWFkKSwKKyAgICAgICAg ICAgICAgICAgICAgICAgYXVkaW9fbG9nX2ZhY3RvcnkpIHsKKyAgRExPRyhXQVJOSU5HKSA8PCAi QXVkaW9NYW5hZ2VyT3BlbkJTRCI7CisgIFNldE1heE91dHB1dFN0cmVhbXNBbGxvd2VkKGtNYXhP dXRwdXRTdHJlYW1zKTsKK30KKworQXVkaW9NYW5hZ2VyT3BlbkJTRDo6fkF1ZGlvTWFuYWdlck9w ZW5CU0QoKSB7CisgIFNodXRkb3duKCk7Cit9CisKK0F1ZGlvT3V0cHV0U3RyZWFtKiBBdWRpb01h bmFnZXJPcGVuQlNEOjpNYWtlTGluZWFyT3V0cHV0U3RyZWFtKAorICAgIGNvbnN0IEF1ZGlvUGFy YW1ldGVycyYgcGFyYW1zLAorICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIHsK KyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiwgcGFyYW1zLmZv cm1hdCgpKTsKKyAgcmV0dXJuIE1ha2VPdXRwdXRTdHJlYW0ocGFyYW1zKTsKK30KKworQXVkaW9P dXRwdXRTdHJlYW0qIEF1ZGlvTWFuYWdlck9wZW5CU0Q6Ok1ha2VMb3dMYXRlbmN5T3V0cHV0U3Ry ZWFtKAorICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zLAorICAgIGNvbnN0IHN0ZDo6 c3RyaW5nJiBkZXZpY2VfaWQsCisgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykg eworICBETE9HX0lGKEVSUk9SLCAhZGV2aWNlX2lkLmVtcHR5KCkpIDw8ICJOb3QgaW1wbGVtZW50 ZWQhIjsKKyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZ LCBwYXJhbXMuZm9ybWF0KCkpOworICByZXR1cm4gTWFrZU91dHB1dFN0cmVhbShwYXJhbXMpOwor fQorCitBdWRpb0lucHV0U3RyZWFtKiBBdWRpb01hbmFnZXJPcGVuQlNEOjpNYWtlTGluZWFySW5w dXRTdHJlYW0oCisgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgY29uc3Qg c3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAgICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxi YWNrKSB7CisgIERDSEVDS19FUShBdWRpb1BhcmFtZXRlcnM6OkFVRElPX1BDTV9MSU5FQVIsIHBh cmFtcy5mb3JtYXQoKSk7CisgIHJldHVybiBNYWtlSW5wdXRTdHJlYW0ocGFyYW1zKTsKK30KKwor QXVkaW9JbnB1dFN0cmVhbSogQXVkaW9NYW5hZ2VyT3BlbkJTRDo6TWFrZUxvd0xhdGVuY3lJbnB1 dFN0cmVhbSgKKyAgICBjb25zdCBBdWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICBjb25zdCBz dGQ6OnN0cmluZyYgZGV2aWNlX2lkLAorICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJh Y2spIHsKKyAgRENIRUNLX0VRKEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZ LCBwYXJhbXMuZm9ybWF0KCkpOworICByZXR1cm4gTWFrZUlucHV0U3RyZWFtKHBhcmFtcyk7Cit9 CisKK0F1ZGlvUGFyYW1ldGVycyBBdWRpb01hbmFnZXJPcGVuQlNEOjpHZXRQcmVmZXJyZWRPdXRw dXRTdHJlYW1QYXJhbWV0ZXJzKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNl X2lkLAorICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgaW5wdXRfcGFyYW1zKSB7CisgIC8vIFRP RE8odG9tbWkpOiBTdXBwb3J0IHxvdXRwdXRfZGV2aWNlX2lkfC4KKyAgRExPR19JRihFUlJPUiwg IW91dHB1dF9kZXZpY2VfaWQuZW1wdHkoKSkgPDwgIk5vdCBpbXBsZW1lbnRlZCEiOworICBzdGF0 aWMgY29uc3QgaW50IGtEZWZhdWx0T3V0cHV0QnVmZmVyU2l6ZSA9IDIwNDg7CisKKyAgQ2hhbm5l bExheW91dCBjaGFubmVsX2xheW91dCA9IENIQU5ORUxfTEFZT1VUX1NURVJFTzsKKyAgaW50IHNh bXBsZV9yYXRlID0ga0RlZmF1bHRTYW1wbGVSYXRlOworICBpbnQgYnVmZmVyX3NpemUgPSBrRGVm YXVsdE91dHB1dEJ1ZmZlclNpemU7CisgIGlmIChpbnB1dF9wYXJhbXMuSXNWYWxpZCgpKSB7Cisg ICAgc2FtcGxlX3JhdGUgPSBpbnB1dF9wYXJhbXMuc2FtcGxlX3JhdGUoKTsKKyAgICBjaGFubmVs X2xheW91dCA9IGlucHV0X3BhcmFtcy5jaGFubmVsX2xheW91dCgpOworICAgIGJ1ZmZlcl9zaXpl ID0gc3RkOjptaW4oYnVmZmVyX3NpemUsIGlucHV0X3BhcmFtcy5mcmFtZXNfcGVyX2J1ZmZlcigp KTsKKyAgfQorCisgIGludCB1c2VyX2J1ZmZlcl9zaXplID0gR2V0VXNlckJ1ZmZlclNpemUoKTsK KyAgaWYgKHVzZXJfYnVmZmVyX3NpemUpCisgICAgYnVmZmVyX3NpemUgPSB1c2VyX2J1ZmZlcl9z aXplOworCisgIHJldHVybiBBdWRpb1BhcmFtZXRlcnMoCisgICAgICBBdWRpb1BhcmFtZXRlcnM6 OkFVRElPX1BDTV9MT1dfTEFURU5DWSwgY2hhbm5lbF9sYXlvdXQsCisgICAgICBzYW1wbGVfcmF0 ZSwgYnVmZmVyX3NpemUpOworfQorCitBdWRpb0lucHV0U3RyZWFtKiBBdWRpb01hbmFnZXJPcGVu QlNEOjpNYWtlSW5wdXRTdHJlYW0oCisgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMp IHsKKyAgRExPRyhXQVJOSU5HKSA8PCAiTWFrZUlucHV0U3RyZWFtIjsKKyAgcmV0dXJuIG5ldyBT bmRpb0F1ZGlvSW5wdXRTdHJlYW0odGhpcywKKyAgICAgICAgICAgICBBdWRpb0RldmljZURlc2Ny aXB0aW9uOjprRGVmYXVsdERldmljZUlkLCBwYXJhbXMpOworfQorCitBdWRpb091dHB1dFN0cmVh bSogQXVkaW9NYW5hZ2VyT3BlbkJTRDo6TWFrZU91dHB1dFN0cmVhbSgKKyAgICBjb25zdCBBdWRp b1BhcmFtZXRlcnMmIHBhcmFtcykgeworICBETE9HKFdBUk5JTkcpIDw8ICJNYWtlT3V0cHV0U3Ry ZWFtIjsKKyAgcmV0dXJuIG5ldyBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKHBhcmFtcywgdGhpcyk7 Cit9CisKK30gIC8vIG5hbWVzcGFjZSBtZWRpYQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJv bjEyL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oIGIvc3JjcGtncy9l bGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21hbmFnZXJfb3BlbmJzZC5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOGM5OWRiOTY2ZDY1Ci0tLSAvZGV2 L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL2F1ZGlvX21h bmFnZXJfb3BlbmJzZC5oCkBAIC0wLDAgKzEsNjUgQEAKKy8vIENvcHlyaWdodCAoYykgMjAxMiBU aGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVzZSBvZiB0aGlz IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g YmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpZm5kZWYgTUVESUFfQVVESU9f T1BFTkJTRF9BVURJT19NQU5BR0VSX09QRU5CU0RfSF8KKyNkZWZpbmUgTUVESUFfQVVESU9fT1BF TkJTRF9BVURJT19NQU5BR0VSX09QRU5CU0RfSF8KKworI2luY2x1ZGUgPHNldD4KKworI2luY2x1 ZGUgImJhc2UvY29tcGlsZXJfc3BlY2lmaWMuaCIKKyNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgor I2luY2x1ZGUgImJhc2UvbWVtb3J5L3JlZl9jb3VudGVkLmgiCisjaW5jbHVkZSAiYmFzZS90aHJl YWRpbmcvdGhyZWFkLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdlcl9iYXNl LmgiCisKK25hbWVzcGFjZSBtZWRpYSB7CisKK2NsYXNzIE1FRElBX0VYUE9SVCBBdWRpb01hbmFn ZXJPcGVuQlNEIDogcHVibGljIEF1ZGlvTWFuYWdlckJhc2UgeworIHB1YmxpYzoKKyAgQXVkaW9N YW5hZ2VyT3BlbkJTRChzdGQ6OnVuaXF1ZV9wdHI8QXVkaW9UaHJlYWQ+IGF1ZGlvX3RocmVhZCwK KyAgICAgICAgICAgICAgICAgICBBdWRpb0xvZ0ZhY3RvcnkqIGF1ZGlvX2xvZ19mYWN0b3J5KTsK KyAgfkF1ZGlvTWFuYWdlck9wZW5CU0QoKSBvdmVycmlkZTsKKworICAvLyBJbXBsZW1lbnRhdGlv biBvZiBBdWRpb01hbmFnZXIuCisgIGJvb2wgSGFzQXVkaW9PdXRwdXREZXZpY2VzKCkgb3ZlcnJp ZGU7CisgIGJvb2wgSGFzQXVkaW9JbnB1dERldmljZXMoKSBvdmVycmlkZTsKKyAgdm9pZCBHZXRB dWRpb0lucHV0RGV2aWNlTmFtZXMoQXVkaW9EZXZpY2VOYW1lcyogZGV2aWNlX25hbWVzKSBvdmVy cmlkZTsKKyAgdm9pZCBHZXRBdWRpb091dHB1dERldmljZU5hbWVzKEF1ZGlvRGV2aWNlTmFtZXMq IGRldmljZV9uYW1lcykgb3ZlcnJpZGU7CisgIEF1ZGlvUGFyYW1ldGVycyBHZXRJbnB1dFN0cmVh bVBhcmFtZXRlcnMoCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkKSBvdmVycmlk ZTsKKyAgY29uc3QgY2hhciogR2V0TmFtZSgpIG92ZXJyaWRlOworCisgIC8vIEltcGxlbWVudGF0 aW9uIG9mIEF1ZGlvTWFuYWdlckJhc2UuCisgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlTGluZWFy T3V0cHV0U3RyZWFtKAorICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJzJiBwYXJhbXMsCisgICAg ICBjb25zdCBMb2dDYWxsYmFjayYgbG9nX2NhbGxiYWNrKSBvdmVycmlkZTsKKyAgQXVkaW9PdXRw dXRTdHJlYW0qIE1ha2VMb3dMYXRlbmN5T3V0cHV0U3RyZWFtKAorICAgICAgY29uc3QgQXVkaW9Q YXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAor ICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisgIEF1ZGlv SW5wdXRTdHJlYW0qIE1ha2VMaW5lYXJJbnB1dFN0cmVhbSgKKyAgICAgIGNvbnN0IEF1ZGlvUGFy YW1ldGVycyYgcGFyYW1zLAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9pZCwKKyAg ICAgIGNvbnN0IExvZ0NhbGxiYWNrJiBsb2dfY2FsbGJhY2spIG92ZXJyaWRlOworICBBdWRpb0lu cHV0U3RyZWFtKiBNYWtlTG93TGF0ZW5jeUlucHV0U3RyZWFtKAorICAgICAgY29uc3QgQXVkaW9Q YXJhbWV0ZXJzJiBwYXJhbXMsCisgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgZGV2aWNlX2lkLAor ICAgICAgY29uc3QgTG9nQ2FsbGJhY2smIGxvZ19jYWxsYmFjaykgb3ZlcnJpZGU7CisKKyBwcm90 ZWN0ZWQ6CisgIEF1ZGlvUGFyYW1ldGVycyBHZXRQcmVmZXJyZWRPdXRwdXRTdHJlYW1QYXJhbWV0 ZXJzKAorICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG91dHB1dF9kZXZpY2VfaWQsCisgICAgICBj b25zdCBBdWRpb1BhcmFtZXRlcnMmIGlucHV0X3BhcmFtcykgb3ZlcnJpZGU7CisKKyBwcml2YXRl OgorICAvLyBDYWxsZWQgYnkgTWFrZUxpbmVhck91dHB1dFN0cmVhbSBhbmQgTWFrZUxvd0xhdGVu Y3lPdXRwdXRTdHJlYW0uCisgIEF1ZGlvT3V0cHV0U3RyZWFtKiBNYWtlT3V0cHV0U3RyZWFtKGNv bnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKKyAgQXVkaW9JbnB1dFN0cmVhbSogTWFrZUlu cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKKworICBESVNBTExPV19D T1BZX0FORF9BU1NJR04oQXVkaW9NYW5hZ2VyT3BlbkJTRCk7Cit9OworCit9ICAvLyBuYW1lc3Bh Y2UgbWVkaWEKKworI2VuZGlmICAvLyBNRURJQV9BVURJT19PUEVOQlNEX0FVRElPX01BTkFHRVJf T1BFTkJTRF9IXwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZp bGVzL3NuZGlvX2lucHV0LmNjIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVz L3NuZGlvX2lucHV0LmNjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u ZWY1NDM5YjQ5YTA3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVz L3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmNjCkBAIC0wLDAgKzEsMjAwIEBACisvLyBDb3B5cmln aHQgMjAxMyBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vIFVz ZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2Ug dGhhdCBjYW4gYmUKKy8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisKKyNpbmNsdWRlICJi YXNlL2JpbmQuaCIKKyNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJiYXNlL21h Y3Jvcy5oIgorI2luY2x1ZGUgIm1lZGlhL2Jhc2UvYXVkaW9fdGltZXN0YW1wX2hlbHBlci5oIgor I2luY2x1ZGUgIm1lZGlhL2F1ZGlvL29wZW5ic2QvYXVkaW9fbWFuYWdlcl9vcGVuYnNkLmgiCisj aW5jbHVkZSAibWVkaWEvYXVkaW8vYXVkaW9fbWFuYWdlci5oIgorI2luY2x1ZGUgIm1lZGlhL2F1 ZGlvL3NuZGlvL3NuZGlvX2lucHV0LmgiCisKK25hbWVzcGFjZSBtZWRpYSB7CisKK3N0YXRpYyBj b25zdCBTYW1wbGVGb3JtYXQga1NhbXBsZUZvcm1hdCA9IGtTYW1wbGVGb3JtYXRTMTY7CisKK3Zv aWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpPbk1vdmVDYWxsYmFjayh2b2lkICphcmcsIGludCBk ZWx0YSkKK3sKKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25k aW9BdWRpb0lucHV0U3RyZWFtKj4oYXJnKTsKKworICBzZWxmLT5od19kZWxheSArPSBkZWx0YTsK K30KKwordm9pZCAqU25kaW9BdWRpb0lucHV0U3RyZWFtOjpUaHJlYWRFbnRyeSh2b2lkICphcmcp IHsKKyAgU25kaW9BdWRpb0lucHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRp b0lucHV0U3RyZWFtKj4oYXJnKTsKKworICBzZWxmLT5UaHJlYWRMb29wKCk7CisgIHJldHVybiBO VUxMOworfQorCitTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OlNuZGlvQXVkaW9JbnB1dFN0cmVhbShB dWRpb01hbmFnZXJCYXNlKiBtYW5hZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGRldmljZV9uYW1lLAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQXVkaW9QYXJhbWV0ZXJz JiBwYXJhbXMpCisgICAgOiBtYW5hZ2VyKG1hbmFnZXIpLAorICAgICAgcGFyYW1zKHBhcmFtcyks CisgICAgICBhdWRpb19idXMoQXVkaW9CdXM6OkNyZWF0ZShwYXJhbXMpKSwKKyAgICAgIHN0YXRl KGtDbG9zZWQpIHsKK30KKworU25kaW9BdWRpb0lucHV0U3RyZWFtOjp+U25kaW9BdWRpb0lucHV0 U3RyZWFtKCkgeworICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKyAgICBDbG9zZSgpOworfQorCiti b29sIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6T3BlbigpIHsKKyAgc3RydWN0IHNpb19wYXIgcGFy OworICBpbnQgc2lnOworCisgIGlmIChzdGF0ZSAhPSBrQ2xvc2VkKQorICAgIHJldHVybiBmYWxz ZTsKKworICBpZiAocGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENN X0xJTkVBUiAmJgorICAgICAgcGFyYW1zLmZvcm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVE SU9fUENNX0xPV19MQVRFTkNZKSB7CisgICAgTE9HKFdBUk5JTkcpIDw8ICJVbnN1cHBvcnRlZCBh dWRpbyBmb3JtYXQuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICBzaW9faW5pdHBhcigm cGFyKTsKKyAgcGFyLnJhdGUgPSBwYXJhbXMuc2FtcGxlX3JhdGUoKTsKKyAgcGFyLnJjaGFuID0g cGFyYW1zLmNoYW5uZWxzKCk7CisgIHBhci5iaXRzID0gU2FtcGxlRm9ybWF0VG9CaXRzUGVyQ2hh bm5lbChrU2FtcGxlRm9ybWF0KTsKKyAgcGFyLmJwcyA9IHBhci5iaXRzIC8gODsKKyAgcGFyLnNp ZyA9IHNpZyA9IHBhci5iaXRzICE9IDggPyAxIDogMDsKKyAgcGFyLmxlID0gU0lPX0xFX05BVElW RTsKKyAgcGFyLmFwcGJ1ZnN6ID0gcGFyYW1zLmZyYW1lc19wZXJfYnVmZmVyKCk7CisKKyAgaGRs ID0gc2lvX29wZW4oU0lPX0RFVkFOWSwgU0lPX1JFQywgMCk7CisKKyAgaWYgKGhkbCA9PSBOVUxM KSB7CisgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKKyAg ICByZXR1cm4gZmFsc2U7CisgIH0KKworICBpZiAoIXNpb19zZXRwYXIoaGRsLCAmcGFyKSB8fCAh c2lvX2dldHBhcihoZGwsICZwYXIpKSB7CisgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRuJ3Qgc2V0 IGF1ZGlvIHBhcmFtZXRlcnMuIjsKKyAgICBnb3RvIGJhZF9jbG9zZTsKKyAgfQorCisgIGlmIChw YXIucmF0ZSAgIT0gKHVuc2lnbmVkIGludClwYXJhbXMuc2FtcGxlX3JhdGUoKSB8fAorICAgICAg cGFyLnJjaGFuICE9ICh1bnNpZ25lZCBpbnQpcGFyYW1zLmNoYW5uZWxzKCkgfHwKKyAgICAgIHBh ci5iaXRzICAhPSAodW5zaWduZWQgaW50KVNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1Nh bXBsZUZvcm1hdCkgfHwKKyAgICAgIHBhci5zaWcgICAhPSAodW5zaWduZWQgaW50KXNpZyB8fAor ICAgICAgKHBhci5icHMgPiAxICYmIHBhci5sZSAhPSBTSU9fTEVfTkFUSVZFKSB8fAorICAgICAg KHBhci5iaXRzICE9IHBhci5icHMgKiA4KSkgeworICAgIExPRyhFUlJPUikgPDwgIlVuc3VwcG9y dGVkIGF1ZGlvIHBhcmFtZXRlcnMuIjsKKyAgICBnb3RvIGJhZF9jbG9zZTsKKyAgfQorICBzdGF0 ZSA9IGtTdG9wcGVkOworICBidWZmZXIgPSBuZXcgY2hhclthdWRpb19idXMtPmZyYW1lcygpICog cGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCldOworICBzaW9fb25tb3ZlKGhk bCwgJk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsKKyAgcmV0dXJuIHRydWU7CitiYWRfY2xvc2U6Cisg IHNpb19jbG9zZShoZGwpOworICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU25kaW9BdWRpb0lu cHV0U3RyZWFtOjpTdGFydChBdWRpb0lucHV0Q2FsbGJhY2sqIGNiKSB7CisKKyAgU3RhcnRBZ2Mo KTsKKworICBzdGF0ZSA9IGtSdW5uaW5nOworICBod19kZWxheSA9IDA7CisgIGNhbGxiYWNrID0g Y2I7CisgIHNpb19zdGFydChoZGwpOworICBpZiAocHRocmVhZF9jcmVhdGUoJnRocmVhZCwgTlVM TCwgJlRocmVhZEVudHJ5LCB0aGlzKSAhPSAwKSB7CisgICAgTE9HKEVSUk9SKSA8PCAiRmFpbGVk IHRvIGNyZWF0ZSByZWFsLXRpbWUgdGhyZWFkIGZvciByZWNvcmRpbmcuIjsKKyAgICBzaW9fc3Rv cChoZGwpOworICAgIHN0YXRlID0ga1N0b3BwZWQ7CisgIH0KK30KKwordm9pZCBTbmRpb0F1ZGlv SW5wdXRTdHJlYW06OlN0b3AoKSB7CisKKyAgaWYgKHN0YXRlID09IGtTdG9wcGVkKQorICAgIHJl dHVybjsKKworICBzdGF0ZSA9IGtTdG9wV2FpdDsKKyAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVM TCk7CisgIHNpb19zdG9wKGhkbCk7CisgIHN0YXRlID0ga1N0b3BwZWQ7CisKKyAgU3RvcEFnYygp OworfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6Q2xvc2UoKSB7CisKKyAgaWYgKHN0 YXRlID09IGtDbG9zZWQpCisgICAgcmV0dXJuOworCisgIGlmIChzdGF0ZSA9PSBrUnVubmluZykK KyAgICBTdG9wKCk7CisKKyAgc3RhdGUgPSBrQ2xvc2VkOworICBkZWxldGUgW10gYnVmZmVyOwor ICBzaW9fY2xvc2UoaGRsKTsKKworICBtYW5hZ2VyLT5SZWxlYXNlSW5wdXRTdHJlYW0odGhpcyk7 Cit9CisKK2RvdWJsZSBTbmRpb0F1ZGlvSW5wdXRTdHJlYW06OkdldE1heFZvbHVtZSgpIHsKKyAg Ly8gTm90IHN1cHBvcnRlZAorICByZXR1cm4gMC4wOworfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1 dFN0cmVhbTo6U2V0Vm9sdW1lKGRvdWJsZSB2b2x1bWUpIHsKKyAgLy8gTm90IHN1cHBvcnRlZC4g RG8gbm90aGluZy4KK30KKworZG91YmxlIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6R2V0Vm9sdW1l KCkgeworICAvLyBOb3Qgc3VwcG9ydGVkLgorICByZXR1cm4gMC4wOworfQorCitib29sIFNuZGlv QXVkaW9JbnB1dFN0cmVhbTo6SXNNdXRlZCgpIHsKKyAgLy8gTm90IHN1cHBvcnRlZC4KKyAgcmV0 dXJuIGZhbHNlOworfQorCit2b2lkIFNuZGlvQXVkaW9JbnB1dFN0cmVhbTo6U2V0T3V0cHV0RGV2 aWNlRm9yQWVjKAorICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNlX2lkKSB7Cisg IC8vIE5vdCBzdXBwb3J0ZWQuCit9CisKK3ZvaWQgU25kaW9BdWRpb0lucHV0U3RyZWFtOjpUaHJl YWRMb29wKHZvaWQpIHsKKyAgc2l6ZV90IHRvZG8sIG47CisgIGNoYXIgKmRhdGE7CisgIHVuc2ln bmVkIGludCBuZnJhbWVzOworICBkb3VibGUgbm9ybWFsaXplZF92b2x1bWUgPSAwLjA7CisKKyAg bmZyYW1lcyA9IGF1ZGlvX2J1cy0+ZnJhbWVzKCk7CisKKyAgd2hpbGUgKHN0YXRlID09IGtSdW5u aW5nICYmICFzaW9fZW9mKGhkbCkpIHsKKworICAgIEdldEFnY1ZvbHVtZSgmbm9ybWFsaXplZF92 b2x1bWUpOworCisgICAgLy8gcmVhZCBvbmUgYmxvY2sKKyAgICB0b2RvID0gbmZyYW1lcyAqIHBh cmFtcy5HZXRCeXRlc1BlckZyYW1lKGtTYW1wbGVGb3JtYXQpOworICAgIGRhdGEgPSBidWZmZXI7 CisgICAgd2hpbGUgKHRvZG8gPiAwKSB7CisgICAgICBuID0gc2lvX3JlYWQoaGRsLCBkYXRhLCB0 b2RvKTsKKyAgICAgIGlmIChuID09IDApCisgICAgICAgIHJldHVybjsJLy8gdW5yZWNvdmVyYWJs ZSBJL08gZXJyb3IKKyAgICAgIHRvZG8gLT0gbjsKKyAgICAgIGRhdGEgKz0gbjsKKyAgICB9Cisg ICAgaHdfZGVsYXkgLT0gbmZyYW1lczsKKworICAgIC8vIGNvbnZlcnQgZnJhbWVzIGNvdW50IHRv IFRpbWVEZWx0YQorICAgIGNvbnN0IGJhc2U6OlRpbWVEZWx0YSBkZWxheSA9IEF1ZGlvVGltZXN0 YW1wSGVscGVyOjpGcmFtZXNUb1RpbWUoaHdfZGVsYXksCisgICAgICBwYXJhbXMuc2FtcGxlX3Jh dGUoKSk7CisKKyAgICAvLyBwdXNoIGludG8gYnVzCisgICAgYXVkaW9fYnVzLT5Gcm9tSW50ZXJs ZWF2ZWQoYnVmZmVyLCBuZnJhbWVzLCBTYW1wbGVGb3JtYXRUb0J5dGVzUGVyQ2hhbm5lbChrU2Ft cGxlRm9ybWF0KSk7CisKKyAgICAvLyBpbnZva2UgY2FsbGJhY2sKKyAgICBjYWxsYmFjay0+T25E YXRhKGF1ZGlvX2J1cy5nZXQoKSwgYmFzZTo6VGltZVRpY2tzOjpOb3coKSAtIGRlbGF5LCAxLik7 CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIG1lZGlhCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9faW5wdXQuaCBiL3NyY3BrZ3MvZWxlY3Ry b24xMi9maWxlcy9zbmRpby1maWxlcy9zbmRpb19pbnB1dC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMDAwMC4uZDg2OGUwNDY5ZGI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3Jj cGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZpbGVzL3NuZGlvX2lucHV0LmgKQEAgLTAsMCAr MSw5MSBAQAorLy8gQ29weXJpZ2h0IDIwMTMgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdo dHMgcmVzZXJ2ZWQuCisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBh IEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBm aWxlLgorCisjaWZuZGVmIE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCisjZGVmaW5l IE1FRElBX0FVRElPX1NORElPX1NORElPX0lOUFVUX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4K KyNpbmNsdWRlIDxzdHJpbmc+CisjaW5jbHVkZSA8c25kaW8uaD4KKworI2luY2x1ZGUgImJhc2Uv Y29tcGlsZXJfc3BlY2lmaWMuaCIKKyNpbmNsdWRlICJiYXNlL21hY3Jvcy5oIgorI2luY2x1ZGUg ImJhc2UvbWVtb3J5L3dlYWtfcHRyLmgiCisjaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKyNp bmNsdWRlICJtZWRpYS9hdWRpby9hZ2NfYXVkaW9fc3RyZWFtLmgiCisjaW5jbHVkZSAibWVkaWEv YXVkaW8vYXVkaW9faW8uaCIKKyNpbmNsdWRlICJtZWRpYS9hdWRpby9hdWRpb19kZXZpY2VfZGVz Y3JpcHRpb24uaCIKKyNpbmNsdWRlICJtZWRpYS9iYXNlL2F1ZGlvX3BhcmFtZXRlcnMuaCIKKwor bmFtZXNwYWNlIG1lZGlhIHsKKworY2xhc3MgQXVkaW9NYW5hZ2VyQmFzZTsKKworLy8gSW1wbGVt ZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0gdXNpbmcgc25kaW8oNykKK2NsYXNzIFNuZGlv QXVkaW9JbnB1dFN0cmVhbSA6IHB1YmxpYyBBZ2NBdWRpb1N0cmVhbTxBdWRpb0lucHV0U3RyZWFt PiB7CisgcHVibGljOgorICAvLyBQYXNzIHRoaXMgdG8gdGhlIGNvbnN0cnVjdG9yIGlmIHlvdSB3 YW50IHRvIGF0dGVtcHQgYXV0by1zZWxlY3Rpb24KKyAgLy8gb2YgdGhlIGF1ZGlvIHJlY29yZGlu ZyBkZXZpY2UuCisgIHN0YXRpYyBjb25zdCBjaGFyIGtBdXRvU2VsZWN0RGV2aWNlW107CisKKyAg Ly8gQ3JlYXRlIGEgUENNIE91dHB1dCBzdHJlYW0gZm9yIHRoZSBTTkRJTyBkZXZpY2UgaWRlbnRp ZmllZCBieQorICAvLyB8ZGV2aWNlX25hbWV8LiBJZiB1bnN1cmUgb2Ygd2hhdCB0byB1c2UgZm9y IHxkZXZpY2VfbmFtZXwsIHVzZQorICAvLyB8a0F1dG9TZWxlY3REZXZpY2V8LgorICBTbmRpb0F1 ZGlvSW5wdXRTdHJlYW0oQXVkaW9NYW5hZ2VyQmFzZSogYXVkaW9fbWFuYWdlciwKKyAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBkZXZpY2VfbmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IEF1ZGlvUGFyYW1ldGVycyYgcGFyYW1zKTsKKworICB+U25kaW9BdWRp b0lucHV0U3RyZWFtKCkgb3ZlcnJpZGU7CisKKyAgLy8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9J bnB1dFN0cmVhbS4KKyAgYm9vbCBPcGVuKCkgb3ZlcnJpZGU7CisgIHZvaWQgU3RhcnQoQXVkaW9J bnB1dENhbGxiYWNrKiBjYWxsYmFjaykgb3ZlcnJpZGU7CisgIHZvaWQgU3RvcCgpIG92ZXJyaWRl OworICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7CisgIGRvdWJsZSBHZXRNYXhWb2x1bWUoKSBvdmVy cmlkZTsKKyAgdm9pZCBTZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkgb3ZlcnJpZGU7CisgIGRvdWJs ZSBHZXRWb2x1bWUoKSBvdmVycmlkZTsKKyAgYm9vbCBJc011dGVkKCkgb3ZlcnJpZGU7CisgIHZv aWQgU2V0T3V0cHV0RGV2aWNlRm9yQWVjKGNvbnN0IHN0ZDo6c3RyaW5nJiBvdXRwdXRfZGV2aWNl X2lkKSBvdmVycmlkZTsKKworIHByaXZhdGU6CisKKyAgZW51bSBTdHJlYW1TdGF0ZSB7CisgICAg a0Nsb3NlZCwgICAgICAgICAgICAvLyBOb3Qgb3BlbmVkIHlldAorICAgIGtTdG9wcGVkLCAgICAg ICAgICAgLy8gRGV2aWNlIG9wZW5lZCwgYnV0IG5vdCBzdGFydGVkIHlldAorICAgIGtSdW5uaW5n LCAgICAgICAgICAgLy8gU3RhcnRlZCwgZGV2aWNlIHBsYXlpbmcKKyAgICBrU3RvcFdhaXQgICAg ICAgICAgIC8vIFN0b3BwaW5nLCB3YWl0aW5nIGZvciB0aGUgcmVhbC10aW1lIHRocmVhZCB0byBl eGl0CisgIH07CisKKyAgLy8gQy1zdHlsZSBjYWxsLWJhY2tzCisgIHN0YXRpYyB2b2lkIE9uTW92 ZUNhbGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKTsKKyAgc3RhdGljIHZvaWQqIFRocmVhZEVu dHJ5KHZvaWQgKmFyZyk7CisKKyAgLy8gQ29udGludW91c2x5IG1vdmVzIGRhdGEgZnJvbSB0aGUg ZGV2aWNlIHRvIHRoZSBjb25zdW1lcgorICB2b2lkIFRocmVhZExvb3AoKTsKKyAgLy8gT3VyIGNy ZWF0b3IsIHRoZSBhdWRpbyBtYW5hZ2VyIG5lZWRzIHRvIGJlIG5vdGlmaWVkIHdoZW4gd2UgY2xv c2UuCisgIEF1ZGlvTWFuYWdlckJhc2UqIG1hbmFnZXI7CisgIC8vIFBhcmFtZXRlcnMgb2YgdGhl IHNvdXJjZQorICBBdWRpb1BhcmFtZXRlcnMgcGFyYW1zOworICAvLyBXZSBzdG9yZSBkYXRhIGhl cmUgZm9yIGNvbnN1bWVyCisgIHN0ZDo6dW5pcXVlX3B0cjxBdWRpb0J1cz4gYXVkaW9fYnVzOwor ICAvLyBDYWxsLWJhY2sgdGhhdCBjb25zdW1lcyByZWNvcmRlZCBkYXRhCisgIEF1ZGlvSW5wdXRD YWxsYmFjayogY2FsbGJhY2s7ICAvLyBWYWxpZCBkdXJpbmcgYSByZWNvcmRpbmcgc2Vzc2lvbi4K KyAgLy8gSGFuZGxlIG9mIHRoZSBhdWRpbyBkZXZpY2UKKyAgc3RydWN0IHNpb19oZGwqIGhkbDsK KyAgLy8gQ3VycmVudCBzdGF0ZSBvZiB0aGUgc3RyZWFtCisgIGVudW0gU3RyZWFtU3RhdGUgc3Rh dGU7CisgIC8vIEhpZ2ggcHJpb3JpdHkgdGhyZWFkIHJ1bm5pbmcgVGhyZWFkTG9vcCgpCisgIHB0 aHJlYWRfdCB0aHJlYWQ7CisgIC8vIE51bWJlciBvZiBmcmFtZXMgYnVmZmVyZWQgaW4gdGhlIGhh cmR3YXJlCisgIGludCBod19kZWxheTsKKyAgLy8gVGVtcG9yYXJ5IGJ1ZmZlciB3aGVyZSBkYXRh IGlzIHN0b3JlZCBzbmRpby1jb21wYXRpYmxlIGZvcm1hdAorICBjaGFyKiBidWZmZXI7CisKKyAg RElTQUxMT1dfQ09QWV9BTkRfQVNTSUdOKFNuZGlvQXVkaW9JbnB1dFN0cmVhbSk7Cit9OworCit9 ICAvLyBuYW1lc3BhY2UgbWVkaWEKKworI2VuZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19TTkRJ T19JTlBVVF9IXwpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLWZp bGVzL3NuZGlvX291dHB1dC5jYyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1maWxl cy9zbmRpb19vdXRwdXQuY2MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li5hNjcxOWY5YWFjOGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmls ZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmNjCkBAIC0wLDAgKzEsMTgzIEBACisvLyBDb3B5 cmlnaHQgKGMpIDIwMTIgVGhlIENocm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu CisvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs aWNlbnNlIHRoYXQgY2FuIGJlCisvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgorCisjaW5j bHVkZSAiYmFzZS9sb2dnaW5nLmgiCisjaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKyNpbmNs dWRlICJiYXNlL3RpbWUvZGVmYXVsdF90aWNrX2Nsb2NrLmgiCisjaW5jbHVkZSAibWVkaWEvYXVk aW8vYXVkaW9fbWFuYWdlcl9iYXNlLmgiCisjaW5jbHVkZSAibWVkaWEvYmFzZS9hdWRpb190aW1l c3RhbXBfaGVscGVyLmgiCisjaW5jbHVkZSAibWVkaWEvYXVkaW8vc25kaW8vc25kaW9fb3V0cHV0 LmgiCisKK25hbWVzcGFjZSBtZWRpYSB7CisKK3N0YXRpYyBjb25zdCBTYW1wbGVGb3JtYXQga1Nh bXBsZUZvcm1hdCA9IGtTYW1wbGVGb3JtYXRTMTY7CisKK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0 cmVhbTo6T25Nb3ZlQ2FsbGJhY2sodm9pZCAqYXJnLCBpbnQgZGVsdGEpIHsKKyAgU25kaW9BdWRp b091dHB1dFN0cmVhbSogc2VsZiA9IHN0YXRpY19jYXN0PFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0q PihhcmcpOworCisgIHNlbGYtPmh3X2RlbGF5IC09IGRlbHRhOworfQorCit2b2lkIFNuZGlvQXVk aW9PdXRwdXRTdHJlYW06Ok9uVm9sQ2FsbGJhY2sodm9pZCAqYXJnLCB1bnNpZ25lZCBpbnQgdm9s KSB7CisgIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW0qIHNlbGYgPSBzdGF0aWNfY2FzdDxTbmRpb0F1 ZGlvT3V0cHV0U3RyZWFtKj4oYXJnKTsKKworICBzZWxmLT52b2wgPSB2b2w7Cit9CisKK3ZvaWQg KlNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlRocmVhZEVudHJ5KHZvaWQgKmFyZykgeworICBTbmRp b0F1ZGlvT3V0cHV0U3RyZWFtKiBzZWxmID0gc3RhdGljX2Nhc3Q8U25kaW9BdWRpb091dHB1dFN0 cmVhbSo+KGFyZyk7CisKKyAgc2VsZi0+VGhyZWFkTG9vcCgpOworICByZXR1cm4gTlVMTDsKK30K KworU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U25kaW9BdWRpb091dHB1dFN0cmVhbShjb25zdCBB dWRpb1BhcmFtZXRlcnMmIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyQmFzZSogbWFuYWdlcikKKyAgICA6IG1hbmFnZXIo bWFuYWdlciksCisgICAgICBwYXJhbXMocGFyYW1zKSwKKyAgICAgIGF1ZGlvX2J1cyhBdWRpb0J1 czo6Q3JlYXRlKHBhcmFtcykpLAorICAgICAgc3RhdGUoa0Nsb3NlZCksCisgICAgICBtdXRleChQ VEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSKSB7Cit9CisKK1NuZGlvQXVkaW9PdXRwdXRTdHJlYW06 On5TbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCkgeworICBpZiAoc3RhdGUgIT0ga0Nsb3NlZCkKKyAg ICBDbG9zZSgpOworfQorCitib29sIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06Ok9wZW4oKSB7Cisg IHN0cnVjdCBzaW9fcGFyIHBhcjsKKyAgaW50IHNpZzsKKworICBpZiAocGFyYW1zLmZvcm1hdCgp ICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xJTkVBUiAmJgorICAgICAgcGFyYW1zLmZv cm1hdCgpICE9IEF1ZGlvUGFyYW1ldGVyczo6QVVESU9fUENNX0xPV19MQVRFTkNZKSB7CisgICAg TE9HKFdBUk5JTkcpIDw8ICJVbnN1cHBvcnRlZCBhdWRpbyBmb3JtYXQuIjsKKyAgICByZXR1cm4g ZmFsc2U7CisgIH0KKyAgc2lvX2luaXRwYXIoJnBhcik7CisgIHBhci5yYXRlID0gcGFyYW1zLnNh bXBsZV9yYXRlKCk7CisgIHBhci5wY2hhbiA9IHBhcmFtcy5jaGFubmVscygpOworICBwYXIuYml0 cyA9IFNhbXBsZUZvcm1hdFRvQml0c1BlckNoYW5uZWwoa1NhbXBsZUZvcm1hdCk7CisgIHBhci5i cHMgPSBwYXIuYml0cyAvIDg7CisgIHBhci5zaWcgPSBzaWcgPSBwYXIuYml0cyAhPSA4ID8gMSA6 IDA7CisgIHBhci5sZSA9IFNJT19MRV9OQVRJVkU7CisgIHBhci5hcHBidWZzeiA9IHBhcmFtcy5m cmFtZXNfcGVyX2J1ZmZlcigpOworCisgIGhkbCA9IHNpb19vcGVuKFNJT19ERVZBTlksIFNJT19Q TEFZLCAwKTsKKyAgaWYgKGhkbCA9PSBOVUxMKSB7CisgICAgTE9HKEVSUk9SKSA8PCAiQ291bGRu J3Qgb3BlbiBhdWRpbyBkZXZpY2UuIjsKKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgaWYgKCFz aW9fc2V0cGFyKGhkbCwgJnBhcikgfHwgIXNpb19nZXRwYXIoaGRsLCAmcGFyKSkgeworICAgIExP RyhFUlJPUikgPDwgIkNvdWxkbid0IHNldCBhdWRpbyBwYXJhbWV0ZXJzLiI7CisgICAgZ290byBi YWRfY2xvc2U7CisgIH0KKyAgaWYgKHBhci5yYXRlICAhPSAodW5zaWduZWQgaW50KXBhcmFtcy5z YW1wbGVfcmF0ZSgpIHx8CisgICAgICBwYXIucGNoYW4gIT0gKHVuc2lnbmVkIGludClwYXJhbXMu Y2hhbm5lbHMoKSB8fAorICAgICAgcGFyLmJpdHMgICE9ICh1bnNpZ25lZCBpbnQpU2FtcGxlRm9y bWF0VG9CaXRzUGVyQ2hhbm5lbChrU2FtcGxlRm9ybWF0KSB8fAorICAgICAgcGFyLnNpZyAgICE9 ICh1bnNpZ25lZCBpbnQpc2lnIHx8CisgICAgICAocGFyLmJwcyA+IDEgJiYgcGFyLmxlICE9IFNJ T19MRV9OQVRJVkUpIHx8CisgICAgICAocGFyLmJpdHMgIT0gcGFyLmJwcyAqIDgpKSB7CisgICAg TE9HKEVSUk9SKSA8PCAiVW5zdXBwb3J0ZWQgYXVkaW8gcGFyYW1ldGVycy4iOworICAgIGdvdG8g YmFkX2Nsb3NlOworICB9CisgIHN0YXRlID0ga1N0b3BwZWQ7CisgIHZvbHBlbmRpbmcgPSAwOwor ICB2b2wgPSAwOworICBidWZmZXIgPSBuZXcgY2hhclthdWRpb19idXMtPmZyYW1lcygpICogcGFy YW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCldOworICBzaW9fb25tb3ZlKGhkbCwg Jk9uTW92ZUNhbGxiYWNrLCB0aGlzKTsKKyAgc2lvX29udm9sKGhkbCwgJk9uVm9sQ2FsbGJhY2ss IHRoaXMpOworICByZXR1cm4gdHJ1ZTsKKyBiYWRfY2xvc2U6CisgIHNpb19jbG9zZShoZGwpOwor ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6Q2xvc2Uo KSB7CisgIGlmIChzdGF0ZSA9PSBrQ2xvc2VkKQorICAgIHJldHVybjsKKyAgaWYgKHN0YXRlID09 IGtSdW5uaW5nKQorICAgIFN0b3AoKTsKKyAgc3RhdGUgPSBrQ2xvc2VkOworICBkZWxldGUgW10g YnVmZmVyOworICBzaW9fY2xvc2UoaGRsKTsKKyAgbWFuYWdlci0+UmVsZWFzZU91dHB1dFN0cmVh bSh0aGlzKTsgIC8vIENhbGxzIHRoZSBkZXN0cnVjdG9yCit9CisKK3ZvaWQgU25kaW9BdWRpb091 dHB1dFN0cmVhbTo6U3RhcnQoQXVkaW9Tb3VyY2VDYWxsYmFjayogY2FsbGJhY2spIHsKKyAgc3Rh dGUgPSBrUnVubmluZzsKKyAgaHdfZGVsYXkgPSAwOworICBzb3VyY2UgPSBjYWxsYmFjazsKKyAg c2lvX3N0YXJ0KGhkbCk7CisgIGlmIChwdGhyZWFkX2NyZWF0ZSgmdGhyZWFkLCBOVUxMLCAmVGhy ZWFkRW50cnksIHRoaXMpICE9IDApIHsKKyAgICBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gY3Jl YXRlIHJlYWwtdGltZSB0aHJlYWQuIjsKKyAgICBzaW9fc3RvcChoZGwpOworICAgIHN0YXRlID0g a1N0b3BwZWQ7CisgIH0KK30KKwordm9pZCBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtOjpTdG9wKCkg eworICBpZiAoc3RhdGUgPT0ga1N0b3BwZWQpCisgICAgcmV0dXJuOworICBzdGF0ZSA9IGtTdG9w V2FpdDsKKyAgcHRocmVhZF9qb2luKHRocmVhZCwgTlVMTCk7CisgIHNpb19zdG9wKGhkbCk7Cisg IHN0YXRlID0ga1N0b3BwZWQ7Cit9CisKK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6U2V0 Vm9sdW1lKGRvdWJsZSB2KSB7CisgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0ZXgpOworICB2b2wg PSB2ICogU0lPX01BWFZPTDsKKyAgdm9scGVuZGluZyA9IDE7CisgIHB0aHJlYWRfbXV0ZXhfdW5s b2NrKCZtdXRleCk7Cit9CisKK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6R2V0Vm9sdW1l KGRvdWJsZSogdikgeworICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4KTsKKyAgKnYgPSB2b2wg KiAoMS4gLyBTSU9fTUFYVk9MKTsKKyAgcHRocmVhZF9tdXRleF91bmxvY2soJm11dGV4KTsKK30K KworLy8gVGhpcyBzdHJlYW0gaXMgYWx3YXlzIHVzZWQgd2l0aCBzdWIgc2Vjb25kIGJ1ZmZlciBz aXplcywgd2hlcmUgaXQncworLy8gc3VmZmljaWVudCB0byBzaW1wbHkgYWx3YXlzIGZsdXNoIHVw b24gU3RhcnQoKS4KK3ZvaWQgU25kaW9BdWRpb091dHB1dFN0cmVhbTo6Rmx1c2goKSB7fQorCit2 b2lkIFNuZGlvQXVkaW9PdXRwdXRTdHJlYW06OlRocmVhZExvb3Aodm9pZCkgeworICBpbnQgYXZh aWwsIGNvdW50LCByZXN1bHQ7CisKKyAgd2hpbGUgKHN0YXRlID09IGtSdW5uaW5nKSB7CisgICAg Ly8gVXBkYXRlIHZvbHVtZSBpZiBuZWVkZWQKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJm11dGV4 KTsKKyAgICBpZiAodm9scGVuZGluZykgeworICAgICAgdm9scGVuZGluZyA9IDA7CisgICAgICBz aW9fc2V0dm9sKGhkbCwgdm9sKTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJm11 dGV4KTsKKworICAgIC8vIEdldCBkYXRhIHRvIHBsYXkKKyAgICBjb25zdCBiYXNlOjpUaW1lRGVs dGEgZGVsYXkgPSBBdWRpb1RpbWVzdGFtcEhlbHBlcjo6RnJhbWVzVG9UaW1lKGh3X2RlbGF5LAor CXBhcmFtcy5zYW1wbGVfcmF0ZSgpKTsKKyAgICBjb3VudCA9IHNvdXJjZS0+T25Nb3JlRGF0YShk ZWxheSwgYmFzZTo6VGltZVRpY2tzOjpOb3coKSwgMCwgYXVkaW9fYnVzLmdldCgpKTsKKyAgICBh dWRpb19idXMtPlRvSW50ZXJsZWF2ZWQoY291bnQsIFNhbXBsZUZvcm1hdFRvQnl0ZXNQZXJDaGFu bmVsKGtTYW1wbGVGb3JtYXQpLCBidWZmZXIpOworICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAg ICAvLyBXZSBoYXZlIHRvIHN1Ym1pdCBzb21ldGhpbmcgdG8gdGhlIGRldmljZQorICAgICAgY291 bnQgPSBhdWRpb19idXMtPmZyYW1lcygpOworICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgY291bnQg KiBwYXJhbXMuR2V0Qnl0ZXNQZXJGcmFtZShrU2FtcGxlRm9ybWF0KSk7CisgICAgICBMT0coV0FS TklORykgPDwgIk5vIGRhdGEgdG8gcGxheSwgcnVubmluZyBlbXB0eSBjeWNsZS4iOworICAgIH0K KworICAgIC8vIFN1Ym1pdCBkYXRhIHRvIHRoZSBkZXZpY2UKKyAgICBhdmFpbCA9IGNvdW50ICog cGFyYW1zLkdldEJ5dGVzUGVyRnJhbWUoa1NhbXBsZUZvcm1hdCk7CisgICAgcmVzdWx0ID0gc2lv X3dyaXRlKGhkbCwgYnVmZmVyLCBhdmFpbCk7CisgICAgaWYgKHJlc3VsdCA9PSAwKSB7CisgICAg ICBMT0coV0FSTklORykgPDwgIkF1ZGlvIGRldmljZSBkaXNjb25uZWN0ZWQuIjsKKyAgICAgIGJy ZWFrOworICAgIH0KKworICAgIC8vIFVwZGF0ZSBoYXJkd2FyZSBwb2ludGVyCisgICAgaHdfZGVs YXkgKz0gY291bnQ7CisgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIG1lZGlhCmRpZmYgLS1naXQg YS9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmggYi9z cmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0cHV0LmgKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lYWQyMjBjYTk2ZTcKLS0tIC9kZXYv bnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tZmlsZXMvc25kaW9fb3V0 cHV0LmgKQEAgLTAsMCArMSw4NiBAQAorLy8gQ29weXJpZ2h0IChjKSAyMDEyIFRoZSBDaHJvbWl1 bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gVXNlIG9mIHRoaXMgc291cmNlIGNv ZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorLy8gZm91 bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKworI2lmbmRlZiBNRURJQV9BVURJT19TTkRJT19TTkRJ T19PVVRQVVRfSF8KKyNkZWZpbmUgTUVESUFfQVVESU9fU05ESU9fU05ESU9fT1VUUFVUX0hfCisK KyNpbmNsdWRlIDxwdGhyZWFkLmg+CisjaW5jbHVkZSA8c25kaW8uaD4KKworI2luY2x1ZGUgImJh c2UvdGltZS90aWNrX2Nsb2NrLmgiCisjaW5jbHVkZSAiYmFzZS90aW1lL3RpbWUuaCIKKyNpbmNs dWRlICJtZWRpYS9hdWRpby9hdWRpb19pby5oIgorCituYW1lc3BhY2UgbWVkaWEgeworCitjbGFz cyBBdWRpb01hbmFnZXJCYXNlOworCisvLyBJbXBsZW1lbnRhdGlvbiBvZiBBdWRpb091dHB1dFN0 cmVhbSB1c2luZyBzbmRpbyg3KQorY2xhc3MgU25kaW9BdWRpb091dHB1dFN0cmVhbSA6IHB1Ymxp YyBBdWRpb091dHB1dFN0cmVhbSB7CisgcHVibGljOgorICAvLyBUaGUgbWFuYWdlciBpcyBjcmVh dGluZyB0aGlzIG9iamVjdAorICBTbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKGNvbnN0IEF1ZGlvUGFy YW1ldGVycyYgcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlckJh c2UqIG1hbmFnZXIpOworICB2aXJ0dWFsIH5TbmRpb0F1ZGlvT3V0cHV0U3RyZWFtKCk7CisKKyAg Ly8gSW1wbGVtZW50YXRpb24gb2YgQXVkaW9PdXRwdXRTdHJlYW0uCisgIGJvb2wgT3BlbigpIG92 ZXJyaWRlOworICB2b2lkIENsb3NlKCkgb3ZlcnJpZGU7CisgIHZvaWQgU3RhcnQoQXVkaW9Tb3Vy Y2VDYWxsYmFjayogY2FsbGJhY2spIG92ZXJyaWRlOworICB2b2lkIFN0b3AoKSBvdmVycmlkZTsK KyAgdm9pZCBTZXRWb2x1bWUoZG91YmxlIHZvbHVtZSkgb3ZlcnJpZGU7CisgIHZvaWQgR2V0Vm9s dW1lKGRvdWJsZSogdm9sdW1lKSBvdmVycmlkZTsKKyAgdm9pZCBGbHVzaCgpIG92ZXJyaWRlOwor CisgIGZyaWVuZCB2b2lkIHNuZGlvX29ubW92ZSh2b2lkICphcmcsIGludCBkZWx0YSk7CisgIGZy aWVuZCB2b2lkIHNuZGlvX29udm9sKHZvaWQgKmFyZywgdW5zaWduZWQgaW50IHZvbCk7CisgIGZy aWVuZCB2b2lkICpzbmRpb190aHJlYWRzdGFydCh2b2lkICphcmcpOworCisgcHJpdmF0ZToKKyAg ZW51bSBTdHJlYW1TdGF0ZSB7CisgICAga0Nsb3NlZCwgICAgICAgICAgICAvLyBOb3Qgb3BlbmVk IHlldAorICAgIGtTdG9wcGVkLCAgICAgICAgICAgLy8gRGV2aWNlIG9wZW5lZCwgYnV0IG5vdCBz dGFydGVkIHlldAorICAgIGtSdW5uaW5nLCAgICAgICAgICAgLy8gU3RhcnRlZCwgZGV2aWNlIHBs YXlpbmcKKyAgICBrU3RvcFdhaXQgICAgICAgICAgIC8vIFN0b3BwaW5nLCB3YWl0aW5nIGZvciB0 aGUgcmVhbC10aW1lIHRocmVhZCB0byBleGl0CisgIH07CisKKyAgLy8gQy1zdHlsZSBjYWxsLWJh Y2tzCisgIHN0YXRpYyB2b2lkIE9uTW92ZUNhbGxiYWNrKHZvaWQgKmFyZywgaW50IGRlbHRhKTsK KyAgc3RhdGljIHZvaWQgT25Wb2xDYWxsYmFjayh2b2lkICphcmcsIHVuc2lnbmVkIGludCB2b2wp OworICBzdGF0aWMgdm9pZCogVGhyZWFkRW50cnkodm9pZCAqYXJnKTsKKworICAvLyBDb250aW51 b3VzbHkgbW92ZXMgZGF0YSBmcm9tIHRoZSBwcm9kdWNlciB0byB0aGUgZGV2aWNlCisgIHZvaWQg VGhyZWFkTG9vcCh2b2lkKTsKKworICAvLyBPdXIgY3JlYXRvciwgdGhlIGF1ZGlvIG1hbmFnZXIg bmVlZHMgdG8gYmUgbm90aWZpZWQgd2hlbiB3ZSBjbG9zZS4KKyAgQXVkaW9NYW5hZ2VyQmFzZSog bWFuYWdlcjsKKyAgLy8gUGFyYW1ldGVycyBvZiB0aGUgc291cmNlCisgIEF1ZGlvUGFyYW1ldGVy cyBwYXJhbXM7CisgIC8vIFNvdXJjZSBzdG9yZXMgZGF0YSBoZXJlCisgIHN0ZDo6dW5pcXVlX3B0 cjxBdWRpb0J1cz4gYXVkaW9fYnVzOworICAvLyBDYWxsLWJhY2sgdGhhdCBwcm9kdWNlcyBkYXRh IHRvIHBsYXkKKyAgQXVkaW9Tb3VyY2VDYWxsYmFjayogc291cmNlOworICAvLyBIYW5kbGUgb2Yg dGhlIGF1ZGlvIGRldmljZQorICBzdHJ1Y3Qgc2lvX2hkbCogaGRsOworICAvLyBDdXJyZW50IHN0 YXRlIG9mIHRoZSBzdHJlYW0KKyAgZW51bSBTdHJlYW1TdGF0ZSBzdGF0ZTsKKyAgLy8gSGlnaCBw cmlvcml0eSB0aHJlYWQgcnVubmluZyBUaHJlYWRMb29wKCkKKyAgcHRocmVhZF90IHRocmVhZDsK KyAgLy8gUHJvdGVjdHMgdm9sLCB2b2xwZW5kaW5nIGFuZCBod19kZWxheQorICBwdGhyZWFkX211 dGV4X3QgbXV0ZXg7CisgIC8vIEN1cnJlbnQgdm9sdW1lIGluIHRoZSAwLi5TSU9fTUFYVk9MIHJh bmdlCisgIGludCB2b2w7CisgIC8vIFNldCB0byAxIGlmIHZvbHVtZXMgbXVzdCBiZSByZWZyZXNo ZWQgaW4gdGhlIHJlYWx0aW1lIHRocmVhZAorICBpbnQgdm9scGVuZGluZzsKKyAgLy8gTnVtYmVy IG9mIGZyYW1lcyBidWZmZXJlZCBpbiB0aGUgaGFyZHdhcmUKKyAgaW50IGh3X2RlbGF5OworICAv LyBUZW1wb3JhcnkgYnVmZmVyIHdoZXJlIGRhdGEgaXMgc3RvcmVkIHNuZGlvLWNvbXBhdGlibGUg Zm9ybWF0CisgIGNoYXIqIGJ1ZmZlcjsKKworICBESVNBTExPV19DT1BZX0FORF9BU1NJR04oU25k aW9BdWRpb091dHB1dFN0cmVhbSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgbWVkaWEKKworI2Vu ZGlmICAvLyBNRURJQV9BVURJT19TTkRJT19TTkRJT19PVVRQVVRfSF8KZGlmZiAtLWdpdCBhL3Ny Y3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL21lZGlhX2F1ZGlvX2xpbnV4X2F1 ZGlvX21hbmFnZXJfbGludXguY2MucGF0Y2ggYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25k aW8tcGF0Y2hlcy9tZWRpYV9hdWRpb19saW51eF9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uY2Y4ZTgxYjExZDY3Ci0t LSAvZGV2L251bGwKKysrIGIvc3JjcGtncy9lbGVjdHJvbjEyL2ZpbGVzL3NuZGlvLXBhdGNoZXMv bWVkaWFfYXVkaW9fbGludXhfYXVkaW9fbWFuYWdlcl9saW51eC5jYy5wYXRjaApAQCAtMCwwICsx LDQzIEBACitkaWZmIC0tZ2l0IGEvY2hyb21pdW0vbWVkaWEvYXVkaW8vbGludXgvYXVkaW9fbWFu YWdlcl9saW51eC5jYyBiL2Nocm9taXVtL21lZGlhL2F1ZGlvL2xpbnV4L2F1ZGlvX21hbmFnZXJf bGludXguY2MKK2luZGV4IDVkNzAzNTQ5MzcyLi45ZTYwYjQwYzc0OSAxMDA2NDQKKy0tLSBtZWRp YS9hdWRpby9saW51eC9hdWRpb19tYW5hZ2VyX2xpbnV4LmNjCisrKysgbWVkaWEvYXVkaW8vbGlu dXgvYXVkaW9fbWFuYWdlcl9saW51eC5jYworQEAgLTIwLDYgKzIwLDEwIEBACisgI2luY2x1ZGUg Im1lZGlhL2F1ZGlvL3B1bHNlL2F1ZGlvX21hbmFnZXJfcHVsc2UuaCIKKyAjaW5jbHVkZSAibWVk aWEvYXVkaW8vcHVsc2UvcHVsc2VfdXRpbC5oIgorICNlbmRpZgorKyNpZiBkZWZpbmVkKFVTRV9T TkRJTykKKysjaW5jbHVkZSA8c25kaW8uaD4KKysjaW5jbHVkZSAibWVkaWEvYXVkaW8vb3BlbmJz ZC9hdWRpb19tYW5hZ2VyX29wZW5ic2QuaCIKKysjZW5kaWYKKyAKKyBuYW1lc3BhY2UgbWVkaWEg eworIAorQEAgLTI3LDcgKzMxLDggQEAgZW51bSBMaW51eEF1ZGlvSU8geworICAga1B1bHNlLAor ICAga0Fsc2EsCisgICBrQ3JhcywKKy0gIGtBdWRpb0lPTWF4ID0ga0NyYXMgIC8vIE11c3QgYWx3 YXlzIGJlIGVxdWFsIHRvIGxhcmdlc3QgbG9nZ2VkIGVudHJ5LgorKyAga1NuZGlvLAorKyAga0F1 ZGlvSU9NYXggPSBrU25kaW8gIC8vIE11c3QgYWx3YXlzIGJlIGVxdWFsIHRvIGxhcmdlc3QgbG9n Z2VkIGVudHJ5LgorIH07CisgCisgc3RkOjp1bmlxdWVfcHRyPG1lZGlhOjpBdWRpb01hbmFnZXI+ IENyZWF0ZUF1ZGlvTWFuYWdlcigKK0BAIC00MSw2ICs0NiwxNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8 bWVkaWE6OkF1ZGlvTWFuYWdlcj4gQ3JlYXRlQXVkaW9NYW5hZ2VyKAorICAgfQorICNlbmRpZgor IAorKyNpZiBkZWZpbmVkKFVTRV9TTkRJTykKKysgIHN0cnVjdCBzaW9faGRsICogaGRsID0gTlVM TDsKKysgIGlmICgoaGRsPXNpb19vcGVuKFNJT19ERVZBTlksIFNJT19QTEFZLCAxKSkgIT0gTlVM TCkgeworKyAgICBzaW9fY2xvc2UoaGRsKTsKKysgICAgVU1BX0hJU1RPR1JBTV9FTlVNRVJBVElP TigiTWVkaWEuTGludXhBdWRpb0lPIiwga1NuZGlvLCBrQXVkaW9JT01heCArMSk7CisrICAgIHJl dHVybiBzdGQ6Om1ha2VfdW5pcXVlPEF1ZGlvTWFuYWdlck9wZW5CU0Q+KHN0ZDo6bW92ZShhdWRp b190aHJlYWQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXVkaW9fbG9nX2ZhY3RvcnkpOworKyAgfQorKyAgRFZMT0coMSkgPDwgIlNuZGlvIGlzIG5v dCBhdmFpbGFibGUgb24gdGhlIE9TIjsKKysjZW5kaWYKKysKKyAjaWYgZGVmaW5lZChVU0VfUFVM U0VBVURJTykKKyAgIHBhX3RocmVhZGVkX21haW5sb29wKiBwYV9tYWlubG9vcCA9IG51bGxwdHI7 CisgICBwYV9jb250ZXh0KiBwYV9jb250ZXh0ID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9t ZWRpYV9CVUlMRC5nbi5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRj aGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9CVUlMRC5nbi5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVjNjA0MDAyNjY4OAotLS0gL2Rldi9udWxs CisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0 eV9jaHJvbWl1bV9tZWRpYV9CVUlMRC5nbi5wYXRjaApAQCAtMCwwICsxLDEyIEBACistLS0gbWVk aWEvQlVJTEQuZ24JMjAyMC0wMy0yNCAxMDoxNjozMC4wMDAwMDAwMDAgKzAxMDAKKysrKyAtCTIw MjAtMDQtMDYgMTQ6MzI6MjcuOTYwODE3NTEzICswMjAwCitAQCAtNjUsNiArNjUsOSBAQAorICAg aWYgKHVzZV9jcmFzKSB7CisgICAgIGRlZmluZXMgKz0gWyAiVVNFX0NSQVMiIF0KKyAgIH0KKysg IGlmICh1c2Vfc25kaW8pIHsKKysgICAgZGVmaW5lcyArPSBbICJVU0VfU05ESU8iIF0KKysgIH0K KyB9CisgCisgIyBJbnRlcm5hbCBncm91cGluZyBvZiB0aGUgY29uZmlncyBuZWNlc3NhcnkgdG8g c3VwcG9ydCBzdWItZm9sZGVycyBoYXZpbmcgdGhlaXIKZGlmZiAtLWdpdCBhL3NyY3BrZ3MvZWxl Y3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9h dWRpb19CVUlMRC5nbi5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRj aGVzL3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRpb19CVUlMRC5nbi5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmM4NTZkZTBiZjJlYwotLS0gL2Rl di9udWxsCisrKyBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVzL3NyY18z cmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9hdWRpb19CVUlMRC5nbi5wYXRjaApAQCAtMCwwICsxLDIz IEBACistLS0gbWVkaWEvYXVkaW8vQlVJTEQuZ24JMjAyMC0wMy0yNCAxMDoxNjozMC4wMDAwMDAw MDAgKzAxMDAKKysrKyAtCTIwMjAtMDQtMDYgMTQ6MzE6MjguODcxNDUwMjE3ICswMjAwCitAQCAt MjMyLDkgKzIzMiwxOSBAQAorICAgICBkZXBzICs9IFsgIi8vbWVkaWEvYmFzZS9hbmRyb2lkOm1l ZGlhX2puaV9oZWFkZXJzIiBdCisgICB9CisgCistICBpZiAoaXNfbGludXgpIHsKKysgIGlmIChp c19saW51eCkgeworICAgICBzb3VyY2VzICs9IFsgImxpbnV4L2F1ZGlvX21hbmFnZXJfbGludXgu Y2MiIF0KKyAgIH0KKysgIGlmICh1c2Vfc25kaW8pIHsKKysgICAgbGlicyArPSBbICJzbmRpbyIg XQorKyAgICBzb3VyY2VzICs9IFsKKysgICAgICAib3BlbmJzZC9hdWRpb19tYW5hZ2VyX29wZW5i c2QuY2MiLAorKyAgICAgICJzbmRpby9zbmRpb19pbnB1dC5jYyIsCisrICAgICAgInNuZGlvL3Nu ZGlvX2lucHV0LmgiLAorKyAgICAgICJzbmRpby9zbmRpb19vdXRwdXQuY2MiLAorKyAgICAgICJz bmRpby9zbmRpb19vdXRwdXQuaCIKKysgICBdCisrIH0KKyAKKyAgIGlmICh1c2VfYWxzYSkgewor ICAgICBsaWJzICs9IFsgImFzb3VuZCIgXQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVjdHJvbjEy L2ZpbGVzL3NuZGlvLXBhdGNoZXMvc3JjXzNyZHBhcnR5X2Nocm9taXVtX21lZGlhX21lZGlhX19v cHRpb25zLmduaS5wYXRjaCBiL3NyY3BrZ3MvZWxlY3Ryb24xMi9maWxlcy9zbmRpby1wYXRjaGVz L3NyY18zcmRwYXJ0eV9jaHJvbWl1bV9tZWRpYV9tZWRpYV9fb3B0aW9ucy5nbmkucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNDgwN2Q4ZTFkMzYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvZmlsZXMvc25kaW8tcGF0Y2hlcy9zcmNf M3JkcGFydHlfY2hyb21pdW1fbWVkaWFfbWVkaWFfX29wdGlvbnMuZ25pLnBhdGNoCkBAIC0wLDAg KzEsMTIgQEAKKy0tLSBtZWRpYS9tZWRpYV9vcHRpb25zLmduaQkyMDIwLTAzLTI0IDEwOjE2OjMw LjAwMDAwMDAwMCArMDEwMAorKysrIC0JMjAyMC0wNC0wNiAxNDoyOToyMi45NTg2MzA3ODMgKzAy MDAKK0BAIC0xMTQsNiArMTE0LDkgQEAKKyAgICMgRW5hYmxlcyBydW50aW1lIHNlbGVjdGlvbiBv ZiBBTFNBIGxpYnJhcnkgZm9yIGF1ZGlvLgorICAgdXNlX2Fsc2EgPSBmYWxzZQorIAorKyAgIyBF bmFibGVzIHJ1bnRpbWUgc2VsZWN0aW9uIG9mIHNuZGlvIGxpYnJhcnkgZm9yIGF1ZGlvLgorKyAg dXNlX3NuZGlvID0gZmFsc2UKKysKKyAgICMgQWxzYSBzaG91bGQgYmUgdXNlZCBvbiBub24tQW5k cm9pZCwgbm9uLU1hYyBQT1NJWCBzeXN0ZW1zLgorICAgIyBBbHNhIHNob3VsZCBiZSB1c2VkIG9u IGRlc2t0b3AgQ2hyb21lY2FzdCBhbmQgYXVkaW8tb25seSBDaHJvbWVjYXN0IGJ1aWxkcy4KKyAg IGlmIChpc19wb3NpeCAmJiAhaXNfYW5kcm9pZCAmJiAhaXNfbWFjICYmCmRpZmYgLS1naXQgYS9z cmNwa2dzL2VsZWN0cm9uMTIvdGVtcGxhdGUgYi9zcmNwa2dzL2VsZWN0cm9uMTIvdGVtcGxhdGUK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41ZGYwZWI4NDg2YTEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL2VsZWN0cm9uMTIvdGVtcGxhdGUKQEAgLTAsMCArMSwz NjkgQEAKKyMgVGVtcGxhdGUgZmlsZSBmb3IgJ2VsZWN0cm9uMTInCitwa2duYW1lPWVsZWN0cm9u MTIKK3ZlcnNpb249MTIuMC4yCitfbm9kZXZlcj0xNC4xNi4wCitfY2hyb21pdW12ZXI9ODkuMC40 Mzg5LjkwCityZXZpc2lvbj0xCithcmNocz0ieDg2XzY0KiBpNjg2KiBhYXJjaDY0KiBwcGM2NGxl KiIKK2J1aWxkX3dya3NyYz0ic3JjIgorY3JlYXRlX3dya3NyYz15ZXMKK2hvc3RtYWtlZGVwZW5k cz0iJCh2b3B0X2lmIGNsYW5nIGNsYW5nKSBweXRob24gcGtnY29uZiBwZXJsIGdwZXJmIGJpc29u IG5pbmphIG5vZGVqcyBod2lkcworIGxpYndlYnAtZGV2ZWwgZnJlZXR5cGUtZGV2ZWwgaGFyZmJ1 enotZGV2ZWwgbGlicG5nLWRldmVsIG5zcy1kZXZlbCB3aGljaCBnaXQgbGliZXZlbnQtZGV2ZWwK KyBwY2l1dGlscy1kZXZlbCBsaWJhdG9taWMtZGV2ZWwgZmZtcGVnLWRldmVsIGxpYnhtbDItZGV2 ZWwgbGliZ2xpYi1kZXZlbCB5YXJuIG9wZW5qZGsgbGlieHNsdC1kZXZlbAorIG9wdXMtZGV2ZWwg bGliWGN1cnNvci1kZXZlbCBsaWJYY29tcG9zaXRlLWRldmVsIGxpYlh0c3QtZGV2ZWwgbGliWHJh bmRyLWRldmVsIGxpYlhTY3JuU2F2ZXItZGV2ZWwKKyBhbHNhLWxpYi1kZXZlbCByZTItZGV2ZWwg c25hcHB5LWRldmVsIG1pdC1rcmI1LWRldmVsICQodm9wdF9pZiBwdWxzZWF1ZGlvIHB1bHNlYXVk aW8tZGV2ZWwpCisgJCh2b3B0X2lmIHNuZGlvIHNuZGlvLWRldmVsKSBqcSIKK21ha2VkZXBlbmRz PSJsaWJwbmctZGV2ZWwgZ3RrKy1kZXZlbCBndGsrMy1kZXZlbCBuc3MtZGV2ZWwgcGNpdXRpbHMt ZGV2ZWwKKyBsaWJYaS1kZXZlbCBsaWJnY3J5cHQtZGV2ZWwgbGliZ25vbWUta2V5cmluZy1kZXZl bCBjdXBzLWRldmVsIGVsZnV0aWxzLWRldmVsCisgbGliWGNvbXBvc2l0ZS1kZXZlbCBzcGVlY2gt ZGlzcGF0Y2hlci1kZXZlbCBsaWJYcmFuZHItZGV2ZWwgbWl0LWtyYjUtZGV2ZWwKKyBsaWJYU2Ny blNhdmVyLWRldmVsIGFsc2EtbGliLWRldmVsIHNuYXBweS1kZXZlbCBsaWJkcm0tZGV2ZWwKKyBs aWJ4bWwyLWRldmVsIGxpYnhzbHQtZGV2ZWwgJCh2b3B0X2lmIHB1bHNlYXVkaW8gcHVsc2VhdWRp by1kZXZlbCkgbGliZXhpZi1kZXZlbAorIGxpYlhjdXJzb3ItZGV2ZWwgbGliZmxhYy1kZXZlbCBz cGVleC1kZXZlbCBsaWJtdHAtZGV2ZWwgbGlid2VicC1kZXZlbAorIGxpYmpwZWctdHVyYm8tZGV2 ZWwgbGliZXZlbnQtZGV2ZWwganNvbi1jLWRldmVsIGhhcmZidXp6LWRldmVsCisgbWluaXppcC1k ZXZlbCBqc29uY3BwLWRldmVsIHpsaWItZGV2ZWwgbGliY2FwLWRldmVsIGxpYlhkYW1hZ2UtZGV2 ZWwKKyByZTItZGV2ZWwgZm9udGNvbmZpZy1kZXZlbCBmcmVldHlwZS1kZXZlbCBvcHVzLWRldmVs IGxpYmF0b21pYy1kZXZlbAorICQodm9wdF9pZiBzbmRpbyBzbmRpby1kZXZlbCkgZmZtcGVnLWRl dmVsIGxpYnZhLWRldmVsIGxpYnV2LWRldmVsIGMtYXJlcy1kZXZlbCBsaWJub3RpZnktZGV2ZWwK KyAkKHZvcHRfaWYgcGlwZXdpcmUgcGlwZXdpcmUtZGV2ZWwpIHdheWxhbmQtZGV2ZWwiCitzaG9y dF9kZXNjPSJDcm9zcyBwbGF0Zm9ybSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBmcmFtZXdvcmsg YmFzZWQgb24gd2ViIHRlY2hub2xvZ2llcyIKK21haW50YWluZXI9IkpvaG4gPG1lQGpvaG5ueW5h dG9yLmRldj4iCitsaWNlbnNlPSJCU0QtMy1DbGF1c2UiCitob21lcGFnZT0iaHR0cHM6Ly9lbGVj dHJvbmpzLm9yZyIKK2Rpc3RmaWxlcz0iaHR0cHM6Ly9naXRodWIuY29tL2VsZWN0cm9uL2VsZWN0 cm9uL2FyY2hpdmUvdiR2ZXJzaW9uLnRhci5nej5lbGVjdHJvbi0ke3ZlcnNpb259LnRhci5negor IGh0dHBzOi8vY29tbW9uZGF0YXN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vY2hyb21pdW0tYnJvd3Nl ci1vZmZpY2lhbC9jaHJvbWl1bS0kX2Nocm9taXVtdmVyLnRhci54egorIGh0dHBzOi8vZ2l0aHVi LmNvbS9ub2RlanMvbm9kZS9hcmNoaXZlL3YkX25vZGV2ZXIudGFyLmd6Pm5vZGUtJF9ub2RldmVy LnRhci5neiIKK2NoZWNrc3VtPSJlNGUxNWVjMTZiZDhhMTU0MWIwNjZiOThjOWIyMDRkYTRjMDFi ZTIwYWExODgwOGI0ZmU3N2YyMjc5MzQ1OGRlCisgMTFjNjA4OWM1ZmRkOTIxMjE2YWE0ZWIzNGI1 MjgxOGE5YjA5MWNhZDY1NWEyNGFlZDA5ODJkMjllNjViMjc5YQorIGJjZGY4NjliMDc0MzQwNTUx NWVlODk3YjEwNDdiNWU4NTFhNzE3ZTQyNmI0OTc0ZDI2NTM3YzliMTBkZmQ1M2EiCisKK2Nhc2Ug IiRYQlBTX1RBUkdFVF9NQUNISU5FIiBpbgorCXBwYzY0Ki1tdXNsKSBtYWtlZGVwZW5kcys9IiBs aWJ1Y29udGV4dC1kZXZlbCIgOzsKK2VzYWMKKworbm9fZ2VuZXJpY19wa2djb25maWdfbGluaz15 ZXMKK2xpYjMyZGlzYWJsZWQ9eWVzCitub3BpZT15ZXMgICMgY29udGFpbnMgdG9vbHMgdGhhdCBh cmUgbm90IFBJRSwgZW5hYmxlcyBQSUUgaXRzZWxmCisKK2J1aWxkX29wdGlvbnM9InB1bHNlYXVk aW8gc25kaW8gY2xhbmcgcGlwZXdpcmUiCitidWlsZF9vcHRpb25zX2RlZmF1bHQ9InB1bHNlYXVk aW8gY2xhbmcgcGlwZXdpcmUiCisKK2lmIFsgIiRidWlsZF9vcHRpb25fY2xhbmciIF07IHRoZW4K Kwlub2Nyb3NzPSJObyBwcm9wZXIgc2V0dXAgZm9yIHVzaW5nIGNsYW5nIGFzIGNyb3NzIGNvbXBp bGVyIGluIHZvaWQgeWV0IgorZWxpZiBbICIke1hCUFNfVEFSR0VUX01BQ0hJTkUlJS1tdXNsfSIg PSAiYWFyY2g2NCIgXTsgdGhlbgorCWJyb2tlbj0iRmFsbHMgYXBhcnQgYXQgcnVudGltZSB3aGVu IGNvbXBpbGVkIHdpdGggZ2NjIgorZmkKKworX2J1aWxkdHlwZT1SZWxlYXNlCitfaXNfZGVidWc9 ZmFsc2UKKworQ0ZMQUdTPSItV25vLXVua25vd24td2FybmluZy1vcHRpb24gLWZQSUMiCitDWFhG TEFHUz0iLVduby11bmtub3duLXdhcm5pbmctb3B0aW9uIC1mUElDIgorCitfYXBwbHlfcGF0Y2go KSB7CisJbG9jYWwgYXJncz0iJDEiIHBuYW1lPSIkKGJhc2VuYW1lICQyKSIKKworCWlmIFsgISAt ZiAiLiR7cG5hbWV9X2RvbmUiIF07IHRoZW4KKwkJbXNnX25vcm1hbCAiJHBrZ3ZlcjogcGF0Y2hp bmc6ICR7cG5hbWV9LlxuIgorCQlwYXRjaCAtTiAkYXJncyAtaSAkMgorCQl0b3VjaCAuJHtwbmFt ZX1fZG9uZQorCWZpCit9CisKK19nZXRfY2hyb21pdW1fYXJjaCgpIHsKKwljYXNlICIkMSIgaW4K KwkJeDg2XzY0KikgZWNobyB4NjQgOzsKKwkJaTY4NiopIGVjaG8geDg2IDs7CisJCWFybSopIGVj aG8gYXJtIDs7CisJCWFhcmNoNjQqKSBlY2hvIGFybTY0IDs7CisJCXBwYzY0KikgZWNobyBwcGM2 NCA7OworCQlwcGMqKSBlY2hvIHBwYyA7OworCQltaXBzZWwqKSBlY2hvIG1pcHNlbCA7OworCQlt aXBzKikgZWNobyBtaXBzIDs7CisJCSopIG1zZ19lcnJvciAiJHBrZ3ZlcjogY2Fubm90IGJlIGNv bXBpbGVkIGZvciAke1hCUFNfVEFSR0VUX01BQ0hJTkV9LlxuIiA7OworCWVzYWMKK30KKworcG9z dF9leHRyYWN0KCkgeworCWxuIC1zIGNocm9taXVtLSRfY2hyb21pdW12ZXIgc3JjCisJbWtkaXIg LXAgc3JjL3RoaXJkX3BhcnR5LworCWxuIC1zIC4uLy4uL25vZGUtJF9ub2RldmVyIHNyYy90aGly ZF9wYXJ0eS9lbGVjdHJvbl9ub2RlCisJbG4gLXMgLi4vZWxlY3Ryb24tJHt2ZXJzaW9ufSBzcmMv ZWxlY3Ryb24KKworfQorcG9zdF9wYXRjaCgpIHsKKwljZCAkd3Jrc3JjCisJZm9yIHggaW4gJEZJ TEVTRElSL3BhdGNoZXMvKjsgZG8KKwkJY2FzZSAiJHt4IyMqL30iIGluCisJCQllbGVjdHJvbiou cGF0Y2gpCisJCQkJY2Qgc3JjL2VsZWN0cm9uCisJCQkJX2FwcGx5X3BhdGNoIC1wMSAiJHgiCisJ CQkJY2QgIiR3cmtzcmMiOzsKKwkJZXNhYworCWRvbmUKKworCSMgU2lnaCwgZWxlY3Ryb24gdXNl cyBnaXQgYW0uLi4KKwlpZiBbICEgLWYgIi5lbGVjdHJvbl9wYXRjaGVzX2RvbmUiIF07IHRoZW4K KwltdiBzcmMvZWxlY3Ryb24vcGF0Y2hlcy9jb25maWcuanNvbiBjb25maWcuanNvbi5vbGQKKwlq cSAnZGVsKC4ic3JjL2VsZWN0cm9uL3BhdGNoZXMvTWFudGxlIiwgLiJzcmMvZWxlY3Ryb24vcGF0 Y2hlcy9SZWFjdGl2ZU9iakMiLAorCQkuInNyYy9lbGVjdHJvbi9wYXRjaGVzL3NxdWlycmVsLm1h YyIsIC4ic3JjL2VsZWN0cm9uL3BhdGNoZXMvbmFuIiknIFwKKwkJY29uZmlnLmpzb24ub2xkID4g c3JjL2VsZWN0cm9uL3BhdGNoZXMvY29uZmlnLmpzb24KKwkKKwlweXRob24yIHNyYy9lbGVjdHJv bi9zY3JpcHQvbGlzdF9wYXRjaF90YXJnZXRzLnB5IHNyYy9lbGVjdHJvbi9wYXRjaGVzL2NvbmZp Zy5qc29uIHwgd2hpbGUgcmVhZCAtciByZXBvcGF0aDsgZG8KKwkJY2QgIiR3cmtzcmMiLyIkcmVw b3BhdGgiCisJCWdpdCBpbml0IC1xCisJCWdpdCBjb25maWcgImdjLmF1dG8iIDAKKwkJaWYgWyAi JHJlcG9wYXRoIiAhPSAic3JjIiBdOyB0aGVuCisJCQllY2hvICIvJHtyZXBvcGF0aCNzcmMvfSIg Pj4gIiR3cmtzcmMvJGJ1aWxkX3dya3NyYy8uZ2l0aWdub3JlIgorCQlmaQorCQlnaXQgYWRkIC4K KwkJZ2l0IC1jICd1c2VyLm5hbWU9RWxlY3Ryb24gYnVpbGQnIC1jICd1c2VyLmVtYWlsPWVsZWN0 cm9uQGVidWlsZCcgXAorCQkJY29tbWl0IC1xIC1tICIuIiB8fCB0cnVlCisJZG9uZQorCWNkICR3 cmtzcmMKKwlweXRob24yIHNyYy9lbGVjdHJvbi9zY3JpcHQvYXBwbHlfYWxsX3BhdGNoZXMucHkg c3JjL2VsZWN0cm9uL3BhdGNoZXMvY29uZmlnLmpzb24KKwl0b3VjaCAuZWxlY3Ryb25fcGF0Y2hl c19kb25lCisJZmkKKworCWZvciB4IGluICRGSUxFU0RJUi9wYXRjaGVzLyo7IGRvCisJCWNhc2Ug IiR7eCMjKi99IiBpbgorCQkJY2hyb21pdW0qLnBhdGNoKQorCQkJCWNkIHNyYworCQkJCV9hcHBs eV9wYXRjaCAtcDAgIiR4IgorCQkJCWNkICIkd3Jrc3JjIjs7CisJCWVzYWMKKwlkb25lCisKKwlp ZiBbICIkWEJQU19UQVJHRVRfTElCQyIgPSAibXVzbCIgXTsgdGhlbgorCWZvciB4IGluICRGSUxF U0RJUi9tdXNsLXBhdGNoZXMvKjsgZG8KKwkJY2FzZSAiJHt4IyMqL30iIGluCisJCQljaHJvbWl1 bSoucGF0Y2gpCisJCQkJY2Qgc3JjCisJCQkJX2FwcGx5X3BhdGNoIC1wMCAiJHgiCisJCQkJY2Qg IiR3cmtzcmMiOzsKKwkJCWVsZWN0cm9uKi5wYXRjaCkKKwkJCQljZCBzcmMvZWxlY3Ryb24KKwkJ CQlfYXBwbHlfcGF0Y2ggLXAxICIkeCIKKwkJCQljZCAiJHdya3NyYyI7OworCQllc2FjCisJZG9u ZQorCWZpCisJaWYgWyAiJGJ1aWxkX29wdGlvbl9zbmRpbyIgXTsgdGhlbgorCQlta2RpciAtcCAk e3dya3NyY30vJHtidWlsZF93cmtzcmN9L21lZGlhL2F1ZGlvL3tzbmRpbyxvcGVuYnNkfQorCQlj cCAke0ZJTEVTRElSfS9zbmRpby1maWxlcy9zbmRpb18qcHV0LiogXAorCQkJJHt3cmtzcmN9LyR7 YnVpbGRfd3Jrc3JjfS9tZWRpYS9hdWRpby9zbmRpbworCQljcCAke0ZJTEVTRElSfS9zbmRpby1m aWxlcy9hdWRpb19tYW5hZ2VyX29wZW5ic2QuKiBcCisJCQkke3dya3NyY30vJHtidWlsZF93cmtz cmN9L21lZGlhL2F1ZGlvL29wZW5ic2QKKwkJZm9yIGYgaW4gIiR7RklMRVNESVJ9Ii9zbmRpby1w YXRjaGVzLyoucGF0Y2g7IGRvCisJCQljZCBzcmMKKwkJCV9hcHBseV9wYXRjaCAtcDAgIiRmIgor CQkJY2QgIiR3cmtzcmMiCisJCWRvbmUKKwlmaQorfQorCitwcmVfY29uZmlndXJlKCkgeworCWNk ICIkd3Jrc3JjLyRidWlsZF93cmtzcmMiCisKKwkjIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20v YS9jaHJvbWl1bS5vcmcvZC90b3BpYy9jaHJvbWl1bS1wYWNrYWdlcnMvOUpYMU4ybmY0UFUvZGlz Y3Vzc2lvbgorCXRvdWNoIGNocm9tZS90ZXN0L2RhdGEvd2VidWkvaTE4bl9wcm9jZXNzX2Nzc190 ZXN0Lmh0bWwKKwkjIFVzZSB0aGUgZmlsZSBhdCBydW4gdGltZSBpbnN0ZWFkIG9mIGVmZmVjdGl2 ZWx5IGNvbXBpbGluZyBpdCBpbgorCXNlZCAnc3wvL3RoaXJkX3BhcnR5L3VzYl9pZHMvdXNiLmlk c3wvdXNyL3NoYXJlL2h3ZGF0YS91c2IuaWRzfGcnIFwKKwkJLWkgc2VydmljZXMvZGV2aWNlL3B1 YmxpYy9jcHAvdXNiL0JVSUxELmduCisKKwlta2RpciAtcCB0aGlyZF9wYXJ0eS9ub2RlL2xpbnV4 L25vZGUtbGludXgteDY0L2JpbgorCWxuIC1zIC91c3IvYmluL25vZGUgdGhpcmRfcGFydHkvbm9k ZS9saW51eC9ub2RlLWxpbnV4LXg2NC9iaW4vCisKKwkjIHJldXNhYmxlIHN5c3RlbSBsaWJyYXJ5 IHNldHRpbmdzCisJbG9jYWwgdXNlX3N5c3RlbT0iCisJCWZmbXBlZworCQlmbGFjCisJCWZvbnRj b25maWcKKwkJZnJlZXR5cGUKKwkJaGFyZmJ1enotbmcKKwkJbGliZHJtCisJCWxpYmV2ZW50CisJ CWxpYmpwZWcKKwkJbGlicG5nCisJCWxpYndlYnAKKwkJbGlieG1sCisJCWxpYnhzbHQKKwkJb3B1 cworCQlyZTIKKwkJc25hcHB5CisJCSIKKwlmb3IgX2xpYiBpbiAkdXNlX3N5c3RlbSBsaWJqcGVn X3R1cmJvOyBkbworCQltc2dfbm9ybWFsICJSZW1vdmluZyBidWlsZHNjcmlwdHMgZm9yIHN5c3Rl bSBwcm92aWRlZCAkX2xpYlxuIgorCQlmaW5kIC10eXBlIGYgLXBhdGggIip0aGlyZF9wYXJ0eS8k X2xpYi8qIiBcCisJCQlcISAtcGF0aCAiKnRoaXJkX3BhcnR5LyRfbGliL2Nocm9taXVtLyoiIFwK KwkJCVwhIC1wYXRoICIqdGhpcmRfcGFydHkvJF9saWIvZ29vZ2xlLyoiIFwKKwkJCVwhIC1wYXRo ICcuL2Jhc2UvdGhpcmRfcGFydHkvaWN1LyonIFwKKwkJCVwhIC1wYXRoICcuL3RoaXJkX3BhcnR5 L3BkZml1bS90aGlyZF9wYXJ0eS9mcmVldHlwZS9pbmNsdWRlL3BzdGFibGVzLmgnIFwKKwkJCVwh IC1wYXRoICcuL3RoaXJkX3BhcnR5L2hhcmZidXp6LW5nL3V0aWxzL2hiX3Njb3BlZC5oJyBcCisJ CQlcISAtcmVnZXggJy4qXC5cKGduXHxnbmlcfGlzb2xhdGVcfHB5XCknIFwKKwkJCS1kZWxldGUK Kwlkb25lCisKKworCW1zZ19ub3JtYWwgIlJlcGxhY2luZyBnbiBmaWxlc1xuIgorCXB5dGhvbjIg YnVpbGQvbGludXgvdW5idW5kbGUvcmVwbGFjZV9nbl9maWxlcy5weSAtLXN5c3RlbS1saWJyYXJp ZXMgXAorCQkkdXNlX3N5c3RlbQorCXRoaXJkX3BhcnR5L2xpYmFkZHJlc3NpbnB1dC9jaHJvbWl1 bS90b29scy91cGRhdGUtc3RyaW5ncy5weQorfQorCitkb19jb25maWd1cmUoKSB7CisJbG9jYWwg dGFyZ2V0X2FyY2g9IiQoX2dldF9jaHJvbWl1bV9hcmNoICR7WEJQU19UQVJHRVRfTUFDSElORX0p IgorCWxvY2FsIGhvc3RfYXJjaD0iJChfZ2V0X2Nocm9taXVtX2FyY2ggJHtYQlBTX01BQ0hJTkV9 KSIKKwkjIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCBzZXQgbWFyY2ggZm9yIHVzZSwgYWRkaW5nIGl0 IHRvIGNmbGFncyB3aWxsIGJyZWFrIGJ1aWxkcworCWV4cG9ydCBDWFhGTEFHUz0kKCBzaG9wdCAt cyBleHRnbG9iOyBlY2hvICR7Q1hYRkxBR1MvLW1hcmNoPSooW14gXSl9ICkKKwlleHBvcnQgQ0ZM QUdTPSQoIHNob3B0IC1zIGV4dGdsb2I7IGVjaG8gJHtDRkxBR1MvLW1hcmNoPSooW14gXSl9ICkK KwlleHBvcnQgQ0ZMQUdTPSR7Q0ZMQUdTLy1nL30KKwlleHBvcnQgQ1hYRkxBR1M9JHtDWFhGTEFH Uy8tZy99CisJbG9jYWwgY29uZj0oKQorCWNkIHRoaXJkX3BhcnR5L2VsZWN0cm9uX25vZGUKKwlp ZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY29uZl9hcmdzPSIgLS1kZXN0LWNwdT0ke3Rh cmdldF9hcmNofSAtLWNyb3NzLWNvbXBpbGluZyIKKwlmaQorCS4vY29uZmlndXJlIC0tcHJlZml4 PS91c3IgXAorCQktLXNoYXJlZC16bGliIFwKKwkJLS1zaGFyZWQtbGlidXYgXAorCQktLXNoYXJl ZC1vcGVuc3NsIFwKKwkJLS1zaGFyZWQtY2FyZXMgXAorCQktLW9wZW5zc2wtdXNlLWRlZi1jYS1z dG9yZSBcCisJCS0td2l0aG91dC1ucG0gXAorCQktLXdpdGhvdXQtZHRyYWNlIFwKKwkJLS13aXRo b3V0LWJ1bmRsZWQtdjggXAorCQkke2NvbmZfYXJnc30KKworCWNkICIkd3Jrc3JjLyRidWlsZF93 cmtzcmMiL2VsZWN0cm9uCisJeWFybiBpbnN0YWxsCisJY2QgIiR3cmtzcmMvJGJ1aWxkX3dya3Ny YyIKKworCWlmIFsgIiRidWlsZF9vcHRpb25fY2xhbmciIF07IHRoZW4KKwkJZXhwb3J0IENDPWNs YW5nCisJCWV4cG9ydCBDWFg9Y2xhbmcrKworCQlleHBvcnQgSE9TVF9DQz1jbGFuZworCQlleHBv cnQgSE9TVF9DWFg9Y2xhbmcrKworCWVsc2UKKwkJZXhwb3J0IENYWEZMQUdTPSIkQ1hYRkxBR1Mg LWZwZXJtaXNzaXZlIgorCQlleHBvcnQgQlVJTERfQ1hYRkxBR1M9IiRCVUlMRF9DWFhGTEFHUyAt ZnBlcm1pc3NpdmUiCisJCWV4cG9ydCBCVUlMRF9BUj0iJEFSX2hvc3QiCisJCWV4cG9ydCBCVUlM RF9OTT0iJE5NX2hvc3QiCisJZmkKKworCSMgR29vZ2xlIEFQSSBrZXlzIChzZWUgaHR0cDovL3d3 dy5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9ob3ctdG9zL2FwaS1rZXlzKQorCSMgTm90ZTogVGhl c2UgYXJlIGZvciBWb2lkIExpbnV4IHVzZSBPTkxZLgorCWNvbmYrPSgKKwkJJ2dvb2dsZV9hcGlf a2V5PSJBSXphU3lBOWdXYXpLYUhhTklQUGcyaHJNajZfWlNHOEFGbXE3MzgiJworCQknZ29vZ2xl X2RlZmF1bHRfY2xpZW50X2lkPSIxMjY2NTkxNDk0MjMtaG9vNmlja2JrM3AxdTJxanNkc3AwZGRj aXVyZnZiNHQuYXBwcy5nb29nbGV1c2VyY29udGVudC5jb20iJworCQknZ29vZ2xlX2RlZmF1bHRf Y2xpZW50X3NlY3JldD0iX296SXgyRC1ES21fc2VfMk5Qd1Y0bDViIicKKwkpCisKKwljb25mKz0o CisJCSdibGlua19zeW1ib2xfbGV2ZWw9MCcKKwkJJ2NsYW5nX3VzZV9jaHJvbWVfcGx1Z2lucz1m YWxzZScKKwkJJ2N1c3RvbV90b29sY2hhaW49Ii8vYnVpbGQvdG9vbGNoYWluL2xpbnV4L3VuYnVu ZGxlOmRlZmF1bHQiJworCSkKKwlpZiBbICIkQ1JPU1NfQlVJTEQiIF07IHRoZW4KKwkJY29uZis9 KAorCQkJJ2hvc3RfdG9vbGNoYWluPSIvL2J1aWxkL3Rvb2xjaGFpbi9saW51eC91bmJ1bmRsZTpo b3N0IicKKwkJCSd2OF9zbmFwc2hvdF90b29sY2hhaW49Ii8vYnVpbGQvdG9vbGNoYWluL2xpbnV4 L3VuYnVuZGxlOmhvc3QiJworCQkJImhvc3RfcGtnX2NvbmZpZz1cIiRQS0dfQ09ORklHX0ZPUl9C VUlMRFwiIgorCQkJInBrZ19jb25maWc9XCIkUEtHX0NPTkZJR1wiIgorCQkpCisJZWxzZQorCQlj b25mKz0oCisJCQknaG9zdF90b29sY2hhaW49Ii8vYnVpbGQvdG9vbGNoYWluL2xpbnV4L3VuYnVu ZGxlOmRlZmF1bHQiJworCQkJJ3Y4X3NuYXBzaG90X3Rvb2xjaGFpbj0iLy9idWlsZC90b29sY2hh aW4vbGludXgvdW5idW5kbGU6ZGVmYXVsdCInCisJCSkKKwlmaQorCWlmIFsgIiRidWlsZF9vcHRp b25fc25kaW8iIF07IHRoZW4KKwkJY29uZis9KAorCQkJJ3VzZV9zbmRpbz10cnVlJworCQkpCisJ ZmkKKwlpZiBbIC1uICIkWEJQU19ERUJVR19QS0dTIiBdOyB0aGVuCisJCWNvbmYrPSgnc3ltYm9s X2xldmVsPTEnKQorCWVsc2UKKwkJY29uZis9KCdzeW1ib2xfbGV2ZWw9MCcpCisJZmkKKwljb25m Kz0oCisJCSdlbmFibGVfaGFuZ291dF9zZXJ2aWNlc19leHRlbnNpb249dHJ1ZScKKwkJJ2VuYWJs ZV9uYWNsX25vbnNmaT1mYWxzZScKKwkJJ2VuYWJsZV9uYWNsPWZhbHNlJworCQknZW5hYmxlX3By ZWNvbXBpbGVkX2hlYWRlcnM9ZmFsc2UnCisJCSdmYXRhbF9saW5rZXJfd2FybmluZ3M9ZmFsc2Un CisJCSdmZm1wZWdfYnJhbmRpbmc9IkNocm9tZSInCisJCSdmaWVsZHRyaWFsX3Rlc3RpbmdfbGlr ZV9vZmZpY2lhbF9idWlsZD10cnVlJworCQknZ29sZF9wYXRoPSIvdXNyL2Jpbi9sZC5nb2xkIicK KwkJJ2ljdV91c2VfZGF0YV9maWxlPXRydWUnCisJCSJpc19jbGFuZz0kKHZvcHRfaWYgY2xhbmcg dHJ1ZSBmYWxzZSkiCisJCSdpc19jb21wb25lbnRfYnVpbGQ9ZmFsc2UnCisJCSJpc19kZWJ1Zz0k X2lzX2RlYnVnIgorCQkncHJvcHJpZXRhcnlfY29kZWNzPXRydWUnCisJCSd0cmVhdF93YXJuaW5n c19hc19lcnJvcnM9ZmFsc2UnCisJCSd1c2VfYWxsb2NhdG9yX3NoaW09ZmFsc2UnCisJCSd1c2Vf YWxsb2NhdG9yPSJub25lIicKKwkJJ3VzZV9jdXBzPXRydWUnCisJCSd1c2VfY3VzdG9tX2xpYmN4 eD1mYWxzZScKKwkJJ3VzZV9nbm9tZV9rZXlyaW5nPWZhbHNlJworCQkndXNlX2dvbGQ9ZmFsc2Un CisJCSd1c2VfbGxkPWZhbHNlJworCQkndXNlX3N5c3RlbV9saWJ3YXlsYW5kPXRydWUnCisJCSJ1 c2VfcHVsc2VhdWRpbz0kKHZvcHRfaWYgcHVsc2VhdWRpbyAndHJ1ZScgJ2ZhbHNlJykiCisJCSJy dGNfdXNlX3BpcGV3aXJlPSQodm9wdF9pZiBwaXBld2lyZSB0cnVlIGZhbHNlKSIKKwkJJ3J0Y19w aXBld2lyZV92ZXJzaW9uPSIwLjMiJworCQkndXNlX3N5c3Jvb3Q9ZmFsc2UnCisJCSd1c2Vfc3lz dGVtX2hhcmZidXp6PXRydWUnCisJCSJ0YXJnZXRfY3B1PVwiJHRhcmdldF9hcmNoXCIiCisJCSJo b3N0X2NwdT1cIiRob3N0X2FyY2hcIiIKKwkJJ2ltcG9ydCgiLy9lbGVjdHJvbi9idWlsZC9hcmdz L3JlbGVhc2UuZ24iKScKKwkpCisKKwltc2dfbm9ybWFsICJCb290c3RyYXBwaW5nIEdOXG4iCisJ Q0M9IiR7Q0NfRk9SX0JVSUxEOi0kQ0N9IiBDWFg9IiR7Q1hYX0ZPUl9CVUlMRDotJENYWH0iIExE PSIke0xEX0ZPUl9CVUlMRDotJExEfSIgXAorCUNGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEOi0k Q0ZMQUdTfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEOi0kQ1hYRkxBR1N9IiBcCisJ TERGTEFHUz0iJHtYQlBTX0xERkxBR1N9IiBcCisJCXB5dGhvbjIgdG9vbHMvZ24vYm9vdHN0cmFw L2Jvb3RzdHJhcC5weSAtcyAtdiAtLXNraXAtZ2VuZXJhdGUtYnVpbGRmaWxlcworCisJbXNnX25v cm1hbCAiQ29uZmlndXJpbmcgYnVpbGRcbiIKKwlvdXQvUmVsZWFzZS9nbiBnZW4gb3V0LyRfYnVp bGR0eXBlIC0tYXJncz0iJHtjb25mWypdfSIKK30KKworZG9fYnVpbGQoKSB7CisJZXhwb3J0IENY WEZMQUdTPSQoIHNob3B0IC1zIGV4dGdsb2I7IGVjaG8gJHtDWFhGTEFHUy8tbWFyY2g9KihbXiBd KX0gKQorCWV4cG9ydCBDRkxBR1M9JCggc2hvcHQgLXMgZXh0Z2xvYjsgZWNobyAke0NGTEFHUy8t bWFyY2g9KihbXiBdKX0gKQorCWV4cG9ydCBDRkxBR1M9JHtDRkxBR1MvLWcvfQorCWV4cG9ydCBD WFhGTEFHUz0ke0NYWEZMQUdTLy1nL30KKwlpZiBbICIkYnVpbGRfb3B0aW9uX2NsYW5nIiBdOyB0 aGVuCisJCWV4cG9ydCBDQz1jbGFuZworCQlleHBvcnQgQ1hYPWNsYW5nKysKKwkJZXhwb3J0IEhP U1RfQ0M9Y2xhbmcKKwkJZXhwb3J0IEhPU1RfQ1hYPWNsYW5nKysKKwllbHNlCisJCWV4cG9ydCBC VUlMRF9DWFhGTEFHUz0iJEJVSUxEX0NYWEZMQUdTIC1mcGVybWlzc2l2ZSIKKwkJZXhwb3J0IENY WEZMQUdTPSIkQ1hYRkxBR1MgLWZwZXJtaXNzaXZlIgorCQlleHBvcnQgQlVJTERfQVI9IiRBUl9o b3N0IgorCQlleHBvcnQgQlVJTERfTk09IiROTV9ob3N0IgorCWZpCisJbXNnX25vcm1hbCAiTmlu amEgdHVydGxlcyBHTyFcbiIKKwluaW5qYSAke21ha2Vqb2JzfSAtQyBvdXQvJF9idWlsZHR5cGUg ZWxlY3Ryb24gdGhpcmRfcGFydHkvZWxlY3Ryb25fbm9kZTpoZWFkZXJzCisJIyBmaW5pc2ggcmVz dCBvZiB0aGUgYnVpbGQKKwlzdHJpcCAtcyBvdXQvJF9idWlsZHR5cGUvZWxlY3Ryb24KKwluaW5q YSAke21ha2Vqb2JzfSAtQyBvdXQvJF9idWlsZHR5cGUgZWxlY3Ryb25fZGlzdF96aXAKK30KKwor ZG9faW5zdGFsbCgpIHsKKwl2bWtkaXIgL3Vzci9saWIvJHBrZ25hbWUKKwl2bWtkaXIgL3Vzci9p bmNsdWRlLyRwa2duYW1lCisJYnNkdGFyIC14ZiBvdXQvJF9idWlsZHR5cGUvZGlzdC56aXAgLUMg IiRERVNURElSL3Vzci9saWIvJHBrZ25hbWUiCisKKwljaG1vZCB1K3MgIiRERVNURElSL3Vzci9s aWIvJHBrZ25hbWUvY2hyb21lLXNhbmRib3giCisKKwljcCBvdXQvJF9idWlsZHR5cGUvZ2VuL25v ZGVfaGVhZGVycy50YXIuZ3ogIiRERVNURElSIi91c3IvaW5jbHVkZS8kcGtnbmFtZQorCisJdmxp Y2Vuc2UgJHt3cmtzcmN9L3NyYy9MSUNFTlNFIGNocm9taXVtLkxJQ0VOU0UKKwl2bGljZW5zZSAk e3dya3NyY30vc3JjL2VsZWN0cm9uL0xJQ0VOU0UgZWxlY3Ryb24uTElDRU5TRQorCXZsaWNlbnNl ICR7d3Jrc3JjfS9zcmMvdGhpcmRfcGFydHkvZWxlY3Ryb25fbm9kZS9MSUNFTlNFIG5vZGUuTElD RU5TRQorCisJdm1rZGlyIC91c3IvYmluCisJbG4gLXMgLi4vbGliLyRwa2duYW1lL2VsZWN0cm9u ICIkREVTVERJUiIvdXNyL2Jpbi8kcGtnbmFtZQorfQpkaWZmIC0tZ2l0IGEvc3JjcGtncy9lbGVj dHJvbjEyL3VwZGF0ZSBiL3NyY3BrZ3MvZWxlY3Ryb24xMi91cGRhdGUKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4zYWY4ZTU4YjUzNTgKLS0tIC9kZXYvbnVsbAorKysg Yi9zcmNwa2dzL2VsZWN0cm9uMTIvdXBkYXRlCkBAIC0wLDAgKzEsMiBAQAorc2l0ZT1odHRwczov L3d3dy5lbGVjdHJvbmpzLm9yZy9yZWxlYXNlcy9zdGFibGU/dmVyc2lvbj0ke3ZlcnNpb24lJS4q fQorcGF0dGVybj0ndGFnL3ZcS1tcZFwuXSsoPz0iKScKCkZyb20gMjY2NWI0MGZhMzcwODFlODYy OTA1MTJiZDg4NzBkMDU4N2RjM2Y2MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKRnJvbTogRm9s bGllSGl5dWtpIDxmb2xsaWVrYXpldGFuaUBwcm90b25tYWlsLmNvbT4KRGF0ZTogTW9uLCAxMiBB cHIgMjAyMSAyMjozOToyNSArMDMwMApTdWJqZWN0OiBbUEFUQ0ggMi8yXSBlbGVtZW50LWRlc2t0 b3A6IHVwZGF0ZSB0byAxLjcuMjUKCmNsb3NlcyAjMzAxODkKLS0tCiBzcmNwa2dzL2VsZW1lbnQt ZGVza3RvcC9maWxlcy9lbGVtZW50LWRlc2t0b3AgfCAyICstCiBzcmNwa2dzL2VsZW1lbnQtZGVz a3RvcC90ZW1wbGF0ZSAgICAgICAgICAgICAgfCA4ICsrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQs IDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmNwa2dzL2Vs ZW1lbnQtZGVza3RvcC9maWxlcy9lbGVtZW50LWRlc2t0b3AgYi9zcmNwa2dzL2VsZW1lbnQtZGVz a3RvcC9maWxlcy9lbGVtZW50LWRlc2t0b3AKaW5kZXggNDFhOWI0MDQwMjA0Li5iZjNmNDFmMzlk NTUgMTAwNjQ0Ci0tLSBhL3NyY3BrZ3MvZWxlbWVudC1kZXNrdG9wL2ZpbGVzL2VsZW1lbnQtZGVz a3RvcAorKysgYi9zcmNwa2dzL2VsZW1lbnQtZGVza3RvcC9maWxlcy9lbGVtZW50LWRlc2t0b3AK QEAgLTEsMiArMSwyIEBACiAjIS9iaW4vc2gKLWV4ZWMgZWxlY3Ryb24xMCAvdXNyL2xpYi9lbGVt ZW50LWRlc2t0b3AvcmVzb3VyY2VzL2FwcC5hc2FyICIkQCIKK2V4ZWMgZWxlY3Ryb24xMiAvdXNy L2xpYi9lbGVtZW50LWRlc2t0b3AvcmVzb3VyY2VzL2FwcC5hc2FyICIkQCIKZGlmZiAtLWdpdCBh L3NyY3BrZ3MvZWxlbWVudC1kZXNrdG9wL3RlbXBsYXRlIGIvc3JjcGtncy9lbGVtZW50LWRlc2t0 b3AvdGVtcGxhdGUKaW5kZXggYTgzZWY0YWM5M2ExLi4yZjZjNzUzZTI0N2MgMTAwNjQ0Ci0tLSBh L3NyY3BrZ3MvZWxlbWVudC1kZXNrdG9wL3RlbXBsYXRlCisrKyBiL3NyY3BrZ3MvZWxlbWVudC1k ZXNrdG9wL3RlbXBsYXRlCkBAIC0xLDYgKzEsNiBAQAogIyBUZW1wbGF0ZSBmaWxlIGZvciAnZWxl bWVudC1kZXNrdG9wJwogcGtnbmFtZT1lbGVtZW50LWRlc2t0b3AKLXZlcnNpb249MS43LjI0Cit2 ZXJzaW9uPTEuNy4yNQogcmV2aXNpb249MQogd3Jrc3JjPSJlbGVtZW50LXdlYi0ke3ZlcnNpb259 IgogY29uZl9maWxlcz0iL2V0Yy8ke3BrZ25hbWV9L2NvbmZpZy5qc29uIgpAQCAtOSw3ICs5LDcg QEAgaG9zdG1ha2VkZXBlbmRzPSJnaXQgeWFybiBub2RlanMgcnVzdCBjYXJnbyBweXRob24zIGN1 cmwKICBhcHAtYnVpbGRlciIKIG1ha2VkZXBlbmRzPSJsaWJzZWNyZXQtZGV2ZWwiCiBkZXBlbmRz PSJjLWFyZXMgZmZtcGVnIGd0ayszIGh0dHAtcGFyc2VyIGxpYmV2ZW50Ci0gbGlieHNsdCBtaW5p emlwIG5zcyByZTIgc25hcHB5IHNxbGNpcGhlciBlbGVjdHJvbjEwIgorIGxpYnhzbHQgbWluaXpp cCBuc3MgcmUyIHNuYXBweSBzcWxjaXBoZXIgZWxlY3Ryb24xMiIKIHNob3J0X2Rlc2M9Ikdsb3Nz eSBNYXRyaXggY29sbGFib3JhdGlvbiBjbGllbnQsIGRlc2t0b3AgdmVyc2lvbiIKIG1haW50YWlu ZXI9InByb2plY3Rtb29uIDxwcm9qZWN0bW9vbkBhZ25vcy5pcz4iCiBsaWNlbnNlPSJBcGFjaGUt Mi4wIgpAQCAtMTgsOCArMTgsOCBAQCBfZ2hwYWdlPSJodHRwczovL2dpdGh1Yi5jb20vdmVjdG9y LWltIgogX2FyY2hpdmU9ImFyY2hpdmUvdiR7dmVyc2lvbn0udGFyLmd6IgogZGlzdGZpbGVzPSIk e19naHBhZ2V9L2VsZW1lbnQtZGVza3RvcC8ke19hcmNoaXZlfT5lbGVtZW50LWRlc2t0b3AudGFy Lmd6CiAgJHtfZ2hwYWdlfS9lbGVtZW50LXdlYi8ke19hcmNoaXZlfT5lbGVtZW50LXdlYi50YXIu Z3oiCi1jaGVja3N1bT0iYjcwMzExNTVjNTI5ODU5OTJmNGFlOTIwZTNhMzdkNmY2ZjM3ZmU0OWQ3 MDU1MmJjZGNiNThhNTliNzY4ZDg5OAotIDU3ZGNiNGNkNWE0Mzg3ZWYwMDkwNDdiNjZlYWY0MGJl N2I3ZWIyMDJlODFkZDJlMjIxNTJjNzBkY2I0MGUzOWQiCitjaGVja3N1bT0iMzNkZGNlYjM1Mzhi OWJmNWFlNjEwNGMxNGQwMWVhMjE0OGU4OWM2ODliMjRkNzI0ZGQ1ZTYwMTgyYmY1ZmU5NQorIGMz OGZjN2U3N2M4MmM2NTU0NTdiMjQ0YjBlN2U1ODAyNjE4YWEwODhkZGJiYWE5YmFlNGRiNDE4NTIz NmI5NzIiCiAKIGV4cG9ydCBVU0VfU1lTVEVNX0FQUF9CVUlMREVSPXRydWUKIAo= --===============7378200450859502344==--