From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/chromium] epel9-next: - update to 123.0.6312.58 Date: Fri, 07 Aug 2026 16:06:10 GMT Message-ID: <178611877033.1.5600545993567608746.rpms-chromium-1ee06aa55f3a@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: 1ee06aa55f3afb794c90069e85a8b48427703e7f ICAgICAgIEEgbmV3IGNvbW1pdCBoYXMgYmVlbiBwdXNoZWQuCgogICAgICAgUmVwbyAgIDogcnBt cy9jaHJvbWl1bQogICAgICAgQnJhbmNoIDogZXBlbDktbmV4dAogICAgICAgQ29tbWl0IDogMWVl MDZhYTU1ZjNhZmI3OTRjOTAwNjllODVhOGI0ODQyNzcwM2U3ZgogICAgICAgQXV0aG9yIDogVGhh biBOZ28gPHRoYW5AcmVkaGF0LmNvbT4KICAgICAgIERhdGUgICA6IDIwMjQtMDMtMjBUMDk6NDE6 MjcrMDE6MDAKICAgICAgIFN0YXRzICA6ICszMjgxLy0yOTUyIGluIDI2IGZpbGUocykKICAgICAg IFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvY2hyb21pdW0vYy8x ZWUwNmFhNTVmM2FmYjc5NGM5MDA2OWU4NWE4YjQ4NDI3NzAzZTdmP2JyYW5jaD1lcGVsOS1uZXh0 CgogICAgICAgTG9nOgogICAgICAgLSB1cGRhdGUgdG8gMTIzLjAuNjMxMi41OAoqIEhpZ2ggQ1ZF LTIwMjQtMjYyNTogT2JqZWN0IGxpZmVjeWNsZSBpc3N1ZSBpbiBWOAoqIE1lZGl1bSBDVkUtMjAy NC0yNjI2OiBPdXQgb2YgYm91bmRzIHJlYWQgaW4gU3dpZnRzaGFkZXIKKiBNZWRpdW0gQ1ZFLTIw MjQtMjYyNzogVXNlIGFmdGVyIGZyZWUgaW4gQ2FudmFzCiogTWVkaXVtIENWRS0yMDI0LTI2Mjg6 IEluYXBwcm9wcmlhdGUgaW1wbGVtZW50YXRpb24gaW4gRG93bmxvYWRzCiogTWVkaXVtIENWRS0y MDI0LTI2Mjk6IEluY29ycmVjdCBzZWN1cml0eSBVSSBpbiBpT1MKKiBNZWRpdW0gQ1ZFLTIwMjQt MjYzMDogSW5hcHByb3ByaWF0ZSBpbXBsZW1lbnRhdGlvbiBpbiBpT1MKKiBMb3cgQ1ZFLTIwMjQt MjYzMTogSW5hcHByb3ByaWF0ZSBpbXBsZW1lbnRhdGlvbiBpbiBpT1MKCi0tLQpkaWZmIC0tZ2l0 IGEvY2hyb21pdW0tMTE5LWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLnBhdGNoIGIvY2hyb21pdW0t MTE5LWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCA2ODg5MzhkLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTExOS1mc3RhY2stcHJvdGVj dG9yLXN0cm9uZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLWRpZmYgLXVw IGNocm9taXVtLTExOS4wLjYwNDUuMTk5L2J1aWxkL2NvbmZpZy9jb21waWxlci9CVUlMRC5nbi5t ZSBjaHJvbWl1bS0xMTkuMC42MDQ1LjE5OS9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24K LS0tLSBjaHJvbWl1bS0xMTkuMC42MDQ1LjE5OS9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQu Z24ubWUJMjAyMy0xMi0wMiAxMjoxOTowMS4xMzgwNzk3MjIgKzAxMDAKLSsrKyBjaHJvbWl1bS0x MTkuMC42MDQ1LjE5OS9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24JMjAyMy0xMi0wMiAx MjoyMTowNS44MzUzMjIwMzcgKzAxMDAKLUBAIC0zNzksNyArMzc5LDcgQEAgY29uZmlnKCJjb21w aWxlciIpIHsKLSAgICAgICAgICAgY2ZsYWdzICs9IFsgIi1mbm8tc3RhY2stcHJvdGVjdG9yIiBd Ci0gICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRfb3MgIT0gImFpeCIpIHsKLSAgICAgICAgICAg IyBOb3QgYXZhaWxhYmxlIG9uIGFpeC4KLS0gICAgICAgICAgY2ZsYWdzICs9IFsgIi1mc3RhY2st cHJvdGVjdG9yIiBdCi0rICAgICAgICAgIGNmbGFncyArPSBbICItZnN0YWNrLXByb3RlY3Rvci1z dHJvbmciIF0KLSAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgIH0KCmRpZmYgLS1naXQgYS9jaHJv bWl1bS0xMjAtZWw3LWNsYW5nLWJ1aWxkLWZhaWx1cmUucGF0Y2ggYi9jaHJvbWl1bS0xMjAtZWw3 LWNsYW5nLWJ1aWxkLWZhaWx1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDk2MjU4ZTYuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTIwLWVsNy1jbGFuZy1idWlsZC1mYWls dXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMwICswLDAgQEAKLWNvbW1pdCA1NzUyNmI4 ZGM0NWIyZTZjNjdiYmE3MzA2ZjFkZGU3M2IxZjI5MTBjCi1BdXRob3I6IHNpc2lkb3Zza2kgPHNp c2lkb3Zza2lAY2hyb21pdW0ub3JnPgotRGF0ZTogICBUdWUgT2N0IDI0IDA5OjMyOjQ5IDIwMjMg KzAwMDAKLQotICAgIFJlbW92ZSB1bnVzZWQgaXRlbXMgZnJvbSB0aGUgUmFjZU5ldHdvcmtSZXF1 ZXN0IGhhc2htYXAKLSAgICAKLSAgICBXaGVuIHRoZSBBdXRvUHJlbG9hZCBvciB0aGUgcmFjZS1u ZXR3b3JrLWFuZC1mZXRjaC1oYW5kbGVyIG9wdGlvbiBpbiB0aGUKLSAgICBzdGF0aWMgcm91dGlu ZyBBUEkgaXMgZW5hYmxlZCwgbmV0d29yayByZXF1ZXN0cyBhcmUgZGlzcGF0Y2hlZCBhbmQKLSAg ICBVUkxMb2FkZXJGYWN0b3JpZXMgYXJlIGhlbGQgaW4gYSBoYXNobWFwIGluIFNlcnZpY2VXb3Jr ZXJHbG9iYWxTY29wZS4KLSAgICBUaG9zZSBhcmUgY29uc3VtZWQgaW5zaWRlIHRoZSBmZXRjaCBo YW5kbGVyIHdoZW4gZmV0Y2goZS5yZXF1ZXN0KSBpcwotICAgIGNhbGxlZC4gQnV0IGlmIHRoZSBm ZXRjaCBoYW5kbGVyIGRvZXNuJ3QgY2FsbCBmZXRjaCgpIGUuZy4gZmFsbGJhY2ssCi0gICAgdGhv c2UgaGFzaG1hcCBpdGVtcyBkb2VzIG5vdCBoYXZlIGEgY2hhbmNlIHRvIGJlIHJlbW92ZWQuCi0g ICAgCi0gICAgVGhpcyBDTCBjaGFuZ2VzIHRoZSBoYXNobWFwIGl0ZW1zIHRvIGJlIHJlbW92ZWQg d2hlbiB0aGUgZmV0Y2ggZXZlbnQKLSAgICBmaW5pc2hlcywgYW5kIHRoZSBVUkxMb2FkZXJGYWN0 b3J5IGlzIHN0aWxsIG5vdCBjb25zdW1lZCBhdCB0aGF0IHRpbWUuCi0gICAgVGhpcyBtYXkgbG9v c2UgdGhlIGRlZHVwZSBjYXBhYmlsaXR5IGlmIGZldGNoKCkgaXMgY2FsbGVkIGxhdGVyIGUuZy4K LSAgICBzZXRUaW1lb3V0KCgpID0+IGZldGNoKCkpLCBidXQgaXQgbWFrZXMgc2Vuc2UgdG8gcHJp b3JpdGl6ZSBrZWVwaW5nIHRoZQotICAgIGhhc2htYXAgc21hbGwuCi0gICAgCi0gICAgQ2hhbmdl LUlkOiBJNTFiZGM5ZDVlYjUxODVmMmI1YjRkZjZlZTc4NTcxNWIxMTgwYzg0OAotICAgIEJ1Zzog MTQ5MjY0MAotICAgIFJldmlld2VkLW9uOiBodHRwczovL2Nocm9taXVtLXJldmlldy5nb29nbGVz b3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysvNDk2NDg0MAotICAgIFJldmlld2VkLWJ5OiBNaW5v cnUgQ2hpa2FtdW5lIDxjaGlrYW11bmVAY2hyb21pdW0ub3JnPgotICAgIENvbW1pdC1RdWV1ZTog WW9zaGlzYXRvIFlhbmFnaXNhd2EgPHl5YW5hZ2lzYXdhQGNocm9taXVtLm9yZz4KLSAgICBSZXZp ZXdlZC1ieTogWW9zaGlzYXRvIFlhbmFnaXNhd2EgPHl5YW5hZ2lzYXdhQGNocm9taXVtLm9yZz4K LSAgICBDci1Db21taXQtUG9zaXRpb246IHJlZnMvaGVhZHMvbWFpbkB7IzEyMTQwNjR9Ci0KLWRp ZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL3NlcnZpY2Vfd29y a2VyL3NlcnZpY2Vfd29ya2VyX2dsb2JhbF9zY29wZS5jYyBiL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL21vZHVsZXMvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfZ2xvYmFsX3Njb3Bl LmNjCi1pbmRleCAwMjg4N2VkYzEwODgzLi5iMzYyNGZjMDE2MmRmIDEwMDY0NAotLS0tIGEvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dv cmtlcl9nbG9iYWxfc2NvcGUuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21v ZHVsZXMvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmNjCi1AQCAt NDYsNiArNDYsNyBAQAotICNpbmNsdWRlICJzZXJ2aWNlcy9uZXR3b3JrL3B1YmxpYy9jcHAvY3Jv c3Nfb3JpZ2luX2VtYmVkZGVyX3BvbGljeS5oIgotICNpbmNsdWRlICJzZXJ2aWNlcy9uZXR3b3Jr L3B1YmxpYy9tb2pvbS9jb29raWVfbWFuYWdlci5tb2pvbS1ibGluay5oIgotICNpbmNsdWRlICJz ZXJ2aWNlcy9uZXR3b3JrL3B1YmxpYy9tb2pvbS9jcm9zc19vcmlnaW5fZW1iZWRkZXJfcG9saWN5 Lm1vam9tLmgiCi0rI2luY2x1ZGUgInNlcnZpY2VzL25ldHdvcmsvcHVibGljL21vam9tL3VybF9s b2FkZXJfZmFjdG9yeS5tb2pvbS1ibGluay5oIgotICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGlu ay9wdWJsaWMvY29tbW9uL2ZlYXR1cmVzLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5r L3B1YmxpYy9tb2pvbS9mZXRjaC9mZXRjaF9hcGlfcmVxdWVzdC5tb2pvbS1ibGluay5oIgotICNp bmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9wdWJsaWMvbW9qb20vbm90aWZpY2F0aW9ucy9ub3Rp ZmljYXRpb24ubW9qb20tYmxpbmsuaCIKLUBAIC0xMDk2LDYgKzEwOTcsMTAgQEAgdm9pZCBTZXJ2 aWNlV29ya2VyR2xvYmFsU2NvcGU6OkRpZEhhbmRsZUZldGNoRXZlbnQoCi0gICAgICAgVFJBQ0Vf SURfV0lUSF9TQ09QRShrU2VydmljZVdvcmtlckdsb2JhbFNjb3BlVHJhY2VTY29wZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIFRSQUNFX0lEX0xPQ0FMKGV2ZW50X2lkKSksCi0gICAgICAg VFJBQ0VfRVZFTlRfRkxBR19GTE9XX0lOLCAic3RhdHVzIiwgTW9qb0VudW1Ub1N0cmluZyhzdGF0 dXMpKTsKLSsKLSsgIC8vIERlbGV0ZSB0aGUgVVJMTG9hZGVyRmFjdG9yeSBmb3IgdGhlIFJhY2VO ZXR3b3JrUmVxdWVzdCBpZiBpdCdzIG5vdCB1c2VkLgotKyAgUmVtb3ZlSXRlbUZyb21SYWNlTmV0 d29ya1JlcXVlc3RzKGV2ZW50X2lkKTsKLSsKLSAgIGlmICghUnVuRXZlbnRDYWxsYmFjaygmZmV0 Y2hfZXZlbnRfY2FsbGJhY2tzXywgZXZlbnRfcXVldWVfLmdldCgpLCBldmVudF9pZCwKLSAgICAg ICAgICAgICAgICAgICAgICAgICBzdGF0dXMpKSB7Ci0gICAgIC8vIFRoZSBldmVudCBtYXkgaGF2 ZSBiZWVuIGFib3J0ZWQuIEl0cyByZXNwb25zZSBjYWxsYmFjayBhbHNvIG5lZWRzIHRvIGJlCi1A QCAtMTQ5NSw2ICsxNTAwLDcgQEAgdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OkFib3J0 Q2FsbGJhY2tGb3JGZXRjaEV2ZW50KAotICAgICByZXNwb25zZV9jYWxsYmFja19pdGVyLT52YWx1 ZS0+VGFrZVZhbHVlKCkucmVzZXQoKTsKLSAgICAgZmV0Y2hfcmVzcG9uc2VfY2FsbGJhY2tzXy5l cmFzZShyZXNwb25zZV9jYWxsYmFja19pdGVyKTsKLSAgIH0KLSsgIFJlbW92ZUl0ZW1Gcm9tUmFj ZU5ldHdvcmtSZXF1ZXN0cyhldmVudF9pZCk7Ci0gCi0gICAvLyBSdW4gdGhlIGV2ZW50IGNhbGxi YWNrIHdpdGggdGhlIGVycm9yIGNvZGUuCi0gICBhdXRvIGV2ZW50X2NhbGxiYWNrX2l0ZXIgPSBm ZXRjaF9ldmVudF9jYWxsYmFja3NfLmZpbmQoZXZlbnRfaWQpOwotQEAgLTE1NTEsNTIgKzE1NTcs MTEgQEAgdm9pZCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlN0YXJ0RmV0Y2hFdmVudCgKLSAK LSAgIGlmIChwYXJhbXMtPnJhY2VfbmV0d29ya19yZXF1ZXN0X2xvYWRlcl9mYWN0b3J5ICYmCi0g ICAgICAgcGFyYW1zLT5yZXF1ZXN0LT5zZXJ2aWNlX3dvcmtlcl9yYWNlX25ldHdvcmtfcmVxdWVz dF90b2tlbikgewotLSAgICBhdXRvIGluc2VydF9yZXN1bHQgPSByYWNlX25ldHdvcmtfcmVxdWVz dF9sb2FkZXJfZmFjdG9yaWVzXy5pbnNlcnQoCi0tICAgICAgICBTdHJpbmcocGFyYW1zLT5yZXF1 ZXN0LT5zZXJ2aWNlX3dvcmtlcl9yYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbgotLSAgICAgICAg ICAgICAgICAgICAtPlRvU3RyaW5nKCkpLAotLSAgICAgICAgc3RkOjptb3ZlKHBhcmFtcy0+cmFj ZV9uZXR3b3JrX3JlcXVlc3RfbG9hZGVyX2ZhY3RvcnkpKTsKLS0KLS0gICAgLy8gRHVtcFdpdGhv dXRDcmFzaGluZyBpZiB0aGUgdG9rZW4gaXMgZW1wdHksIG9yIG5vdCBpbnNlcnRlZCBhcyBhIG5l dyBlbnRyeQotLSAgICAvLyB0byB8cmFjZV9uZXR3b3JrX3JlcXVlc3RfbG9hZGVyX2ZhY3Rvcmll c198LgotLSAgICAvLyBUT0RPKGNyYnVnLmNvbS8xNDkyNjQwKSBSZW1vdmUgRHVtcFdpdGhvdXRD cmFzaGluZyBvbmNlIHdlIGNvbGxlY3QgZGF0YQotLSAgICAvLyBhbmQgaWRlbnRpZnkgdGhlIGNh dXNlLgotLSAgICBzdGF0aWMgYm9vbCBoYXNfZHVtcGVkX3dpdGhvdXRfY3Jhc2hpbmdfZm9yX2Vt cHR5X3Rva2VuID0gZmFsc2U7Ci0tICAgIHN0YXRpYyBib29sIGhhc19kdW1wZWRfd2l0aG91dF9j cmFzaGluZ19mb3Jfbm90X25ld19lbnRyeSA9IGZhbHNlOwotLSAgICBpZiAoIWhhc19kdW1wZWRf d2l0aG91dF9jcmFzaGluZ19mb3JfZW1wdHlfdG9rZW4gJiYKLS0gICAgICAgIHBhcmFtcy0+cmVx dWVzdC0+c2VydmljZV93b3JrZXJfcmFjZV9uZXR3b3JrX3JlcXVlc3RfdG9rZW4KLS0gICAgICAg ICAgICAtPmlzX2VtcHR5KCkpIHsKLS0gICAgICBoYXNfZHVtcGVkX3dpdGhvdXRfY3Jhc2hpbmdf Zm9yX2VtcHR5X3Rva2VuID0gdHJ1ZTsKLS0gICAgICBTQ09QRURfQ1JBU0hfS0VZX0JPT0woCi0t ICAgICAgICAgICJTV0dsb2JhbFNjb3BlIiwgImVtcHR5X3JhY2VfdG9rZW4iLAotLSAgICAgICAg ICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2VfbmV0d29ya19yZXF1ZXN0X3Rv a2VuCi0tICAgICAgICAgICAgICAtPmlzX2VtcHR5KCkpOwotLSAgICAgIFNDT1BFRF9DUkFTSF9L RVlfU1RSSU5HNjQoCi0tICAgICAgICAgICJTV0dsb2JhbFNjb3BlIiwgInJhY2VfdG9rZW5fc3Ry aW5nIiwKLS0gICAgICAgICAgcGFyYW1zLT5yZXF1ZXN0LT5zZXJ2aWNlX3dvcmtlcl9yYWNlX25l dHdvcmtfcmVxdWVzdF90b2tlbgotLSAgICAgICAgICAgICAgLT5Ub1N0cmluZygpKTsKLS0gICAg ICBTQ09QRURfQ1JBU0hfS0VZX0JPT0woIlNXR2xvYmFsU2NvcGUiLCAicmFjZV9pbnNlcnRfbmV3 X2VudHJ5IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0X3Jlc3VsdC5pc19u ZXdfZW50cnkpOwotLSAgICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RSSU5HMjU2KCJTV0dsb2JhbFNj b3BlIiwgInJhY2VfcmVxdWVzdF91cmwiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHBhcmFtcy0+cmVxdWVzdC0+dXJsLkdldFN0cmluZygpLlV0ZjgoKSk7Ci0tICAgICAgYmFz ZTo6ZGVidWc6OkR1bXBXaXRob3V0Q3Jhc2hpbmcoKTsKLS0gICAgfQotLSAgICBpZiAoIWhhc19k dW1wZWRfd2l0aG91dF9jcmFzaGluZ19mb3Jfbm90X25ld19lbnRyeSAmJgotLSAgICAgICAgIWlu c2VydF9yZXN1bHQuaXNfbmV3X2VudHJ5KSB7Ci0tICAgICAgaGFzX2R1bXBlZF93aXRob3V0X2Ny YXNoaW5nX2Zvcl9ub3RfbmV3X2VudHJ5ID0gdHJ1ZTsKLS0gICAgICBTQ09QRURfQ1JBU0hfS0VZ X0JPT0woCi0tICAgICAgICAgICJTV0dsb2JhbFNjb3BlIiwgImVtcHR5X3JhY2VfdG9rZW4iLAot LSAgICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2VfbmV0d29ya19y ZXF1ZXN0X3Rva2VuCi0tICAgICAgICAgICAgICAtPmlzX2VtcHR5KCkpOwotLSAgICAgIFNDT1BF RF9DUkFTSF9LRVlfU1RSSU5HNjQoCi0tICAgICAgICAgICJTV0dsb2JhbFNjb3BlIiwgInJhY2Vf dG9rZW5fc3RyaW5nIiwKLS0gICAgICAgICAgcGFyYW1zLT5yZXF1ZXN0LT5zZXJ2aWNlX3dvcmtl cl9yYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbgotLSAgICAgICAgICAgICAgLT5Ub1N0cmluZygp KTsKLS0gICAgICBTQ09QRURfQ1JBU0hfS0VZX0JPT0woIlNXR2xvYmFsU2NvcGUiLCAicmFjZV9p bnNlcnRfbmV3X2VudHJ5IiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0X3Jl c3VsdC5pc19uZXdfZW50cnkpOwotLSAgICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RSSU5HMjU2KCJT V0dsb2JhbFNjb3BlIiwgInJhY2VfcmVxdWVzdF91cmwiLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhcmFtcy0+cmVxdWVzdC0+dXJsLkdldFN0cmluZygpLlV0ZjgoKSk7Ci0t ICAgICAgYmFzZTo6ZGVidWc6OkR1bXBXaXRob3V0Q3Jhc2hpbmcoKTsKLS0gICAgfQotKyAgICBJ bnNlcnROZXdJdGVtVG9SYWNlTmV0d29ya1JlcXVlc3RzKAotKyAgICAgICAgZXZlbnRfaWQsCi0r ICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2VfbmV0d29ya19yZXF1 ZXN0X3Rva2VuLnZhbHVlKCksCi0rICAgICAgICBzdGQ6Om1vdmUocGFyYW1zLT5yYWNlX25ldHdv cmtfcmVxdWVzdF9sb2FkZXJfZmFjdG9yeSksCi0rICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnVy bCk7Ci0gICB9Ci0gCi0gICBSZXF1ZXN0KiByZXF1ZXN0ID0gUmVxdWVzdDo6Q3JlYXRlKAotQEAg LTI4MDgsMTIgKzI3NzMsNzEgQEAgYm9vbCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OlNldEF0 dHJpYnV0ZUV2ZW50TGlzdGVuZXIoCi0gYWJzbDo6b3B0aW9uYWw8bW9qbzo6UGVuZGluZ1JlbW90 ZTxuZXR3b3JrOjptb2pvbTo6Ymxpbms6OlVSTExvYWRlckZhY3Rvcnk+PgotIFNlcnZpY2VXb3Jr ZXJHbG9iYWxTY29wZTo6RmluZFJhY2VOZXR3b3JrUmVxdWVzdFVSTExvYWRlckZhY3RvcnkoCi0g ICAgIGNvbnN0IGJhc2U6OlVuZ3Vlc3NhYmxlVG9rZW4mIHRva2VuKSB7Ci0tICBtb2pvOjpQZW5k aW5nUmVtb3RlPG5ldHdvcms6Om1vam9tOjpibGluazo6VVJMTG9hZGVyRmFjdG9yeT4gcmVzdWx0 ID0KLS0gICAgICByYWNlX25ldHdvcmtfcmVxdWVzdF9sb2FkZXJfZmFjdG9yaWVzXy5UYWtlKFN0 cmluZyh0b2tlbi5Ub1N0cmluZygpKSk7Ci0rICBzdGQ6OnVuaXF1ZV9wdHI8UmFjZU5ldHdvcmtS ZXF1ZXN0SW5mbz4gcmVzdWx0ID0KLSsgICAgICByYWNlX25ldHdvcmtfcmVxdWVzdHNfLlRha2Uo U3RyaW5nKHRva2VuLlRvU3RyaW5nKCkpKTsKLSAgIGlmIChyZXN1bHQpIHsKLS0gICAgcmV0dXJu IHJlc3VsdDsKLSsgICAgcmFjZV9uZXR3b3JrX3JlcXVlc3RfZmV0Y2hfZXZlbnRfaWRzXy5lcmFz ZShyZXN1bHQtPmZldGNoX2V2ZW50X2lkKTsKLSsgICAgcmV0dXJuIGFic2w6Om9wdGlvbmFsPAot KyAgICAgICAgbW9qbzo6UGVuZGluZ1JlbW90ZTxuZXR3b3JrOjptb2pvbTo6Ymxpbms6OlVSTExv YWRlckZhY3Rvcnk+PigKLSsgICAgICAgIHN0ZDo6bW92ZShyZXN1bHQtPnVybF9sb2FkZXJfZmFj dG9yeSkpOwotICAgfQotICAgcmV0dXJuIGFic2w6Om51bGxvcHQ7Ci0gfQotIAotK3ZvaWQgU2Vy dmljZVdvcmtlckdsb2JhbFNjb3BlOjpJbnNlcnROZXdJdGVtVG9SYWNlTmV0d29ya1JlcXVlc3Rz KAotKyAgICBpbnQgZmV0Y2hfZXZlbnRfaWQsCi0rICAgIGNvbnN0IGJhc2U6OlVuZ3Vlc3NhYmxl VG9rZW4mIHRva2VuLAotKyAgICBtb2pvOjpQZW5kaW5nUmVtb3RlPG5ldHdvcms6Om1vam9tOjpi bGluazo6VVJMTG9hZGVyRmFjdG9yeT4KLSsgICAgICAgIHVybF9sb2FkZXJfZmFjdG9yeSwKLSsg ICAgY29uc3QgS1VSTCYgcmVxdWVzdF91cmwpIHsKLSsgIGF1dG8gcmFjZV9uZXR3b3JrX3JlcXVl c3RfdG9rZW4gPSBTdHJpbmcodG9rZW4uVG9TdHJpbmcoKSk7Ci0rICBhdXRvIGluZm8gPSBzdGQ6 Om1ha2VfdW5pcXVlPFJhY2VOZXR3b3JrUmVxdWVzdEluZm8+KAotKyAgICAgIGZldGNoX2V2ZW50 X2lkLCByYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbiwKLSsgICAgICBzdGQ6Om1vdmUodXJsX2xv YWRlcl9mYWN0b3J5KSk7Ci0rICByYWNlX25ldHdvcmtfcmVxdWVzdF9mZXRjaF9ldmVudF9pZHNf Lmluc2VydChmZXRjaF9ldmVudF9pZCwgaW5mby5nZXQoKSk7Ci0rICBhdXRvIGluc2VydF9yZXN1 bHQgPSByYWNlX25ldHdvcmtfcmVxdWVzdHNfLmluc2VydChyYWNlX25ldHdvcmtfcmVxdWVzdF90 b2tlbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0ZDo6bW92ZShpbmZvKSk7Ci0rCi0rICAvLyBEdW1wV2l0aG91dENyYXNoaW5nIGlmIHRo ZSB0b2tlbiBpcyBlbXB0eSwgb3Igbm90IGluc2VydGVkIGFzIGEgbmV3IGVudHJ5Ci0rICAvLyB0 byB8cmFjZV9uZXR3b3JrX3JlcXVlc3RfbG9hZGVyX2ZhY3Rvcmllc198LgotKyAgLy8gVE9ETyhj cmJ1Zy5jb20vMTQ5MjY0MCkgUmVtb3ZlIER1bXBXaXRob3V0Q3Jhc2hpbmcgb25jZSB3ZSBjb2xs ZWN0IGRhdGEKLSsgIC8vIGFuZCBpZGVudGlmeSB0aGUgY2F1c2UuCi0rICBzdGF0aWMgYm9vbCBo YXNfZHVtcGVkX3dpdGhvdXRfY3Jhc2hpbmdfZm9yX2VtcHR5X3Rva2VuID0gZmFsc2U7Ci0rICBz dGF0aWMgYm9vbCBoYXNfZHVtcGVkX3dpdGhvdXRfY3Jhc2hpbmdfZm9yX25vdF9uZXdfZW50cnkg PSBmYWxzZTsKLSsgIGlmICghaGFzX2R1bXBlZF93aXRob3V0X2NyYXNoaW5nX2Zvcl9lbXB0eV90 b2tlbiAmJiB0b2tlbi5pc19lbXB0eSgpKSB7Ci0rICAgIGhhc19kdW1wZWRfd2l0aG91dF9jcmFz aGluZ19mb3JfZW1wdHlfdG9rZW4gPSB0cnVlOwotKyAgICBTQ09QRURfQ1JBU0hfS0VZX0JPT0wo IlNXR2xvYmFsU2NvcGUiLCAiZW1wdHlfcmFjZV90b2tlbiIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICB0b2tlbi5pc19lbXB0eSgpKTsKLSsgICAgU0NPUEVEX0NSQVNIX0tFWV9TVFJJTkc2 NCgiU1dHbG9iYWxTY29wZSIsICJyYWNlX3Rva2VuX3N0cmluZyIsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdG9rZW4uVG9TdHJpbmcoKSk7Ci0rICAgIFNDT1BFRF9DUkFTSF9LRVlf Qk9PTCgiU1dHbG9iYWxTY29wZSIsICJyYWNlX2luc2VydF9uZXdfZW50cnkiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgaW5zZXJ0X3Jlc3VsdC5pc19uZXdfZW50cnkpOwotKyAgICBTQ09Q RURfQ1JBU0hfS0VZX1NUUklORzI1NigiU1dHbG9iYWxTY29wZSIsICJyYWNlX3JlcXVlc3RfdXJs IiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF91cmwuR2V0U3RyaW5n KCkuVXRmOCgpKTsKLSsgICAgYmFzZTo6ZGVidWc6OkR1bXBXaXRob3V0Q3Jhc2hpbmcoKTsKLSsg IH0KLSsgIGlmICghaGFzX2R1bXBlZF93aXRob3V0X2NyYXNoaW5nX2Zvcl9ub3RfbmV3X2VudHJ5 ICYmCi0rICAgICAgIWluc2VydF9yZXN1bHQuaXNfbmV3X2VudHJ5KSB7Ci0rICAgIGhhc19kdW1w ZWRfd2l0aG91dF9jcmFzaGluZ19mb3Jfbm90X25ld19lbnRyeSA9IHRydWU7Ci0rICAgIFNDT1BF RF9DUkFTSF9LRVlfQk9PTCgiU1dHbG9iYWxTY29wZSIsICJlbXB0eV9yYWNlX3Rva2VuIiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLmlzX2VtcHR5KCkpOwotKyAgICBTQ09QRURf Q1JBU0hfS0VZX1NUUklORzY0KCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfdG9rZW5fc3RyaW5nIiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5Ub1N0cmluZygpKTsKLSsgICAg U0NPUEVEX0NSQVNIX0tFWV9CT09MKCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfaW5zZXJ0X25ld19l bnRyeSIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRfcmVzdWx0LmlzX25ld19l bnRyeSk7Ci0rICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RSSU5HMjU2KCJTV0dsb2JhbFNjb3BlIiwg InJhY2VfcmVxdWVzdF91cmwiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1 ZXN0X3VybC5HZXRTdHJpbmcoKS5VdGY4KCkpOwotKyAgICBiYXNlOjpkZWJ1Zzo6RHVtcFdpdGhv dXRDcmFzaGluZygpOwotKyAgfQotK30KLSsKLSt2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w ZTo6UmVtb3ZlSXRlbUZyb21SYWNlTmV0d29ya1JlcXVlc3RzKAotKyAgICBpbnQgZmV0Y2hfZXZl bnRfaWQpIHsKLSsgIFJhY2VOZXR3b3JrUmVxdWVzdEluZm8qIGluZm8gPQotKyAgICAgIHJhY2Vf bmV0d29ya19yZXF1ZXN0X2ZldGNoX2V2ZW50X2lkc18uVGFrZShmZXRjaF9ldmVudF9pZCk7Ci0r ICBpZiAoaW5mbykgewotKyAgICByYWNlX25ldHdvcmtfcmVxdWVzdHNfLmVyYXNlKGluZm8tPnRv a2VuKTsKLSsgIH0KLSt9Ci0rCi0gfSAgLy8gbmFtZXNwYWNlIGJsaW5rCi1kaWZmIC0tZ2l0IGEv dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNl X3dvcmtlcl9nbG9iYWxfc2NvcGUuaCBiL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVs ZXMvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmgKLWluZGV4IDQ2 YzQzMWIzOTU4MjUuLmFjNGNhYzBiMWQ4ZmIgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9tb2R1bGVzL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2dsb2JhbF9z Y29wZS5oCi0rKysgYi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL3NlcnZpY2Vf d29ya2VyL3NlcnZpY2Vfd29ya2VyX2dsb2JhbF9zY29wZS5oCi1AQCAtNjIzLDYgKzYyMywxNCBA QCBjbGFzcyBNT0RVTEVTX0VYUE9SVCBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgZmluYWwKLSAg IC8vIFNlcnZpY2VXb3JrZXIuRmV0Y2hFdmVudC5RdWV1aW5nVGltZSBoaXN0b2dyYW0uCi0gICB2 b2lkIFJlY29yZFF1ZXVpbmdUaW1lKGJhc2U6OlRpbWVUaWNrcyBjcmVhdGVkX3RpbWUpOwotIAot KyAgdm9pZCBJbnNlcnROZXdJdGVtVG9SYWNlTmV0d29ya1JlcXVlc3RzKAotKyAgICAgIGludCBm ZXRjaF9ldmVudF9pZCwKLSsgICAgICBjb25zdCBiYXNlOjpVbmd1ZXNzYWJsZVRva2VuJiB0b2tl biwKLSsgICAgICBtb2pvOjpQZW5kaW5nUmVtb3RlPG5ldHdvcms6Om1vam9tOjpibGluazo6VVJM TG9hZGVyRmFjdG9yeT4KLSsgICAgICAgICAgdXJsX2xvYWRlcl9mYWN0b3J5LAotKyAgICAgIGNv bnN0IEtVUkwmIHJlcXVlc3RfdXJsKTsKLSsgIHZvaWQgUmVtb3ZlSXRlbUZyb21SYWNlTmV0d29y a1JlcXVlc3RzKGludCBmZXRjaF9ldmVudF9pZCk7Ci0rCi0gICBNZW1iZXI8U2VydmljZVdvcmtl ckNsaWVudHM+IGNsaWVudHNfOwotICAgTWVtYmVyPFNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24+ IHJlZ2lzdHJhdGlvbl87Ci0gICBNZW1iZXI8OjpibGluazo6U2VydmljZVdvcmtlcj4gc2Vydmlj ZV93b3JrZXJfOwotQEAgLTc2OCwxMCArNzc2LDE3IEBAIGNsYXNzIE1PRFVMRVNfRVhQT1JUIFNl cnZpY2VXb3JrZXJHbG9iYWxTY29wZSBmaW5hbAotIAotICAgYmxpbms6OkJsaW5rU3RvcmFnZUtl eSBzdG9yYWdlX2tleV87Ci0gCi0rICBzdHJ1Y3QgUmFjZU5ldHdvcmtSZXF1ZXN0SW5mbyB7Ci0r ICAgIGludCBmZXRjaF9ldmVudF9pZDsKLSsgICAgU3RyaW5nIHRva2VuOwotKyAgICBtb2pvOjpQ ZW5kaW5nUmVtb3RlPG5ldHdvcms6Om1vam9tOjpibGluazo6VVJMTG9hZGVyRmFjdG9yeT4KLSsg ICAgICAgIHVybF9sb2FkZXJfZmFjdG9yeTsKLSsgIH07Ci0gICAvLyBUT0RPKGNyYnVnLmNvbS85 MTg3MDIpIFdURjo6SGFzaE1hcCBjYW5ub3QgdXNlIGJhc2U6OlVuZ3Vlc3NhYmxlVG9rZW4gYXMg YQotICAgLy8ga2V5LiBBcyBhIHdvcmthcm91bmQgdXNlcyBXVEY6OlN0cmluZyBhcyBhIGtleSBp bnN0ZWFkLgotLSAgSGFzaE1hcDxTdHJpbmcsIG1vam86OlBlbmRpbmdSZW1vdGU8bmV0d29yazo6 bW9qb206OmJsaW5rOjpVUkxMb2FkZXJGYWN0b3J5Pj4KLS0gICAgICByYWNlX25ldHdvcmtfcmVx dWVzdF9sb2FkZXJfZmFjdG9yaWVzXzsKLSsgIEhhc2hNYXA8U3RyaW5nLCBzdGQ6OnVuaXF1ZV9w dHI8UmFjZU5ldHdvcmtSZXF1ZXN0SW5mbz4+Ci0rICAgICAgcmFjZV9uZXR3b3JrX3JlcXVlc3Rz XzsKLSsgIEhhc2hNYXA8aW50LCBSYWNlTmV0d29ya1JlcXVlc3RJbmZvKj4gcmFjZV9uZXR3b3Jr X3JlcXVlc3RfZmV0Y2hfZXZlbnRfaWRzXzsKLSAKLSAgIEhlYXBNb2pvQXNzb2NpYXRlZFJlbW90 ZTxtb2pvbTo6Ymxpbms6OkFzc29jaWF0ZWRJbnRlcmZhY2VQcm92aWRlcj4KLSAgICAgICByZW1v dGVfYXNzb2NpYXRlZF9pbnRlcmZhY2VzX3t0aGlzfTsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0x MjEtbW5lbW9uaWMtZXJyb3IucGF0Y2ggYi9jaHJvbWl1bS0xMjEtbW5lbW9uaWMtZXJyb3IucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxMjM5ZTcuLjAwMDAwMDAKLS0tIGEv Y2hyb21pdW0tMTIxLW1uZW1vbmljLWVycm9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIg KzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9jb3JlL0JVSUxELmduLm1uZW1vbmljLWVycm9yIGNocm9taXVtLTEyMS4wLjYx NjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9CVUlMRC5nbgotLS0tIGNocm9t aXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9CVUlMRC5n bi5tbmVtb25pYy1lcnJvcgkyMDIzLTEyLTE5IDE4OjE0OjQzLjAyNzcyMzgzMiArMDEwMAotKysr IGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9C VUlMRC5nbgkyMDIzLTEyLTE5IDE4OjM5OjQ3LjQ5MjM4NDYyMCArMDEwMAotQEAgLTE3MzEsOCAr MTczMSw2IEBAIGFjdGlvbl9mb3JlYWNoKCJlbGVtZW50X2xvY2F0b3JfdGVzdF9wcm8KLSAgIHB5 dGhvbl9wYXRoX3Jvb3QgPSAiJHtyb290X291dF9kaXJ9L3B5cHJvdG8iCi0gICBweXRob25fcGF0 aF9wcm90byA9ICIke3B5dGhvbl9wYXRoX3Jvb3R9L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L2NvcmUvbGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yIgotIAotLSAgbW5lbW9uaWMgPSAiRUxP Q19QUk9UTyIKLS0KLSAgIHNvdXJjZV9kaXIgPSAibGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9y L3Rlc3RfcHJvdG8iCi0gICBzb3VyY2VzID0gcmViYXNlX3BhdGgoWyAibGNwX2ltYWdlX2lkLmFz Y2lpcGIiIF0sICIiLCBzb3VyY2VfZGlyKQotICAgc291cmNlcyArPSByZWJhc2VfcGF0aChbICJs Y3BfaW1hZ2VfaWRfYi5hc2NpaXBiIiBdLCAiIiwgc291cmNlX2RpcikKCmRpZmYgLS1naXQgYS9j aHJvbWl1bS0xMjEtdjgtYysrMjAucGF0Y2ggYi9jaHJvbWl1bS0xMjEtdjgtYysrMjAucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiM2JiNTAuLjAwMDAwMDAKLS0tIGEvY2hy b21pdW0tMTIxLXY4LWMrKzIwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzQzICswLDAgQEAK LWNvbW1pdCA5NDBhZjlmMmM4N2I0MzY1NTliOTdjNTM3NjNhYTllYWFmMTI1NGViCi1BdXRob3I6 IEplcmVteSBSb21hbiA8amJyb21hbkBjaHJvbWl1bS5vcmc+Ci1EYXRlOiAgIFdlZCBOb3YgMTUg MTY6MjQ6NTQgMjAyMyArMDAwMAotCi0gICAgVXNlIEMrKzIwIGZlYXR1cmVzIHRvIHNpbXBsaWZ5 IGJsaW5rOjpOYXRpdmVWYWx1ZVRyYWl0c0Jhc2UuCi0gICAgCi0gICAgVGhlc2UgYWxsb3cgc29t ZSBvZiB0aGUgbWV0YXByb2dyYW1taW5nIGJpdHMgdG8gYmUgc2ltcGxpZmllZCBhIGxpdHRsZS4K LSAgICAKLSAgICBDaGFuZ2UtSWQ6IEkwNTJiNDM5NzU4NmQyMTM0ODQwMTYxNmUxNzkyYWZkYjk2 NjJmOTc1Ci0gICAgUmV2aWV3ZWQtb246IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNv dXJjZS5jb20vYy9jaHJvbWl1bS9zcmMvKy81MDMwMzM1Ci0gICAgUmV2aWV3ZWQtYnk6IFl1a2kg U2hpaW5vIDx5dWtpc2hpaW5vQGNocm9taXVtLm9yZz4KLSAgICBDb21taXQtUXVldWU6IEplcmVt eSBSb21hbiA8amJyb21hbkBjaHJvbWl1bS5vcmc+Ci0gICAgQ3ItQ29tbWl0LVBvc2l0aW9uOiBy ZWZzL2hlYWRzL21haW5AeyMxMjI0OTc4fQotCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9uYXRpdmVfdmFsdWVfdHJhaXRzLmggYi90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFp dHMuaAotaW5kZXggN2ZjOTFkMTRhY2M3MS4uMWU1YTA3OTBkZjZkYSAxMDA2NDQKLS0tLSBhL3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvbmF0aXZlX3ZhbHVlX3Ry YWl0cy5oCi0rKysgYi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4 L25hdGl2ZV92YWx1ZV90cmFpdHMuaAotQEAgLTUsNiArNSw3IEBACi0gI2lmbmRlZiBUSElSRF9Q QVJUWV9CTElOS19SRU5ERVJFUl9CSU5ESU5HU19DT1JFX1Y4X05BVElWRV9WQUxVRV9UUkFJVFNf SF8KLSAjZGVmaW5lIFRISVJEX1BBUlRZX0JMSU5LX1JFTkRFUkVSX0JJTkRJTkdTX0NPUkVfVjhf TkFUSVZFX1ZBTFVFX1RSQUlUU19IXwotIAotKyNpbmNsdWRlIDxjb25jZXB0cz4KLSAjaW5jbHVk ZSA8dHlwZV90cmFpdHM+Ci0gCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L2JpbmRpbmdzL2NvcmUvdjgvaWRsX3R5cGVzX2Jhc2UuaCIKLUBAIC0zMCw3ICszMSw3IEBAIGNs YXNzIEV4Y2VwdGlvblN0YXRlOwotIC8vICAgICByZXR1cm4gdG9JbnQzMihpc29sYXRlLCB2YWx1 ZSwgZXhjZXB0aW9uU3RhdGUsIE5vcm1hbENvbnZlcnNpb24pOwotIC8vICAgfQotIC8vIH0KLS10 ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU0ZJTkFFSGVscGVyID0gdm9pZD4KLSt0ZW1w bGF0ZSA8dHlwZW5hbWUgVD4KLSBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7Ci0gCi0gLy8gVGhp cyBkZWNsYXJhdGlvbiBzZXJ2ZXMgb25seSBhcyBhIGJsdWVwcmludCBmb3Igc3BlY2lhbGl6YXRp b25zOiB0aGUKLUBAIC00NSwyMiArNDYsMTUgQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzOwot IAotIG5hbWVzcGFjZSBiaW5kaW5ncyB7Ci0gCi0tdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVu YW1lID0gdm9pZD4KLS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHNIYXNJc051bGwgOiBzdGQ6OmZh bHNlX3R5cGUge307Ci0tCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tc3RydWN0IE5hdGl2ZVZh bHVlVHJhaXRzSGFzSXNOdWxsPAotLSAgICBULAotLSAgICBzdGQ6OnZvaWRfdDxkZWNsdHlwZShz dGQ6OmRlY2x2YWw8VD4oKS5Jc051bGwoKSk+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OwotK3N0cnVj dCBJbXBsVHlwZUZvciB7Ci0rICB1c2luZyB0eXBlID0gVDsKLSt9OwotIAotIHRlbXBsYXRlIDx0 eXBlbmFtZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0c0hhc051bGxWYWx1ZSB7Ci0tICAv LyB0cnVlIGlmIHxUfCBzdXBwb3J0cyBJREwgbnVsbCB2YWx1ZS4KLS0gIHN0YXRpYyBjb25zdGV4 cHIgYm9vbCB2YWx1ZSA9Ci0tICAgICAgLy8gU2NyaXB0VmFsdWUsIFN0cmluZywgYW5kIHVuaW9u IHR5cGVzIGhhdmUgSXNOdWxsIG1lbWJlciBmdW5jdGlvbi4KLS0gICAgICBiaW5kaW5nczo6TmF0 aXZlVmFsdWVUcmFpdHNIYXNJc051bGw8VD46OnZhbHVlIHx8Ci0tICAgICAgLy8gUG9pbnRlciB0 eXBlcyBoYXZlIG51bGxwdHIgYXMgSURMIG51bGwgdmFsdWUuCi0tICAgICAgc3RkOjppc19wb2lu dGVyPFQ+Ojp2YWx1ZTsKLSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIElETEJhc2U+ Ci0rc3RydWN0IEltcGxUeXBlRm9yPFQ+IHsKLSsgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBUOjpJ bXBsVHlwZTsKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBiaW5kaW5ncwotQEAgLTc4LDM3ICs3 MiwxNyBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHNIYXNOdWxsVmFsdWUgewotIC8vIElmIHBy ZXNlbnQsIHxOdWxsVmFsdWUoKXwgd2lsbCBiZSB1c2VkIHdoZW4gY29udmVydGluZyBmcm9tIHRo ZSBudWxsYWJsZSB0eXBlCi0gLy8gVD8sIGFuZCBzaG91bGQgYmUgdXNlZCBpZiB0aGUgaW1wbCB0 eXBlIGhhcyBhbiBleGlzdGluZyAibnVsbCIgc3RhdGUuIElmIG5vdAotIC8vIHByZXNlbnQsIFdU Rjo6T3B0aW9uYWwgd2lsbCBiZSB1c2VkIHRvIHdyYXAgdGhlIHR5cGUuCi0tdGVtcGxhdGUgPHR5 cGVuYW1lIFQsIHR5cGVuYW1lIFNGSU5BRUhlbHBlciA9IHZvaWQ+Ci0tc3RydWN0IE5hdGl2ZVZh bHVlVHJhaXRzQmFzZSB7Ci0tICBTVEFUSUNfT05MWShOYXRpdmVWYWx1ZVRyYWl0c0Jhc2UpOwot LQotLSAgdXNpbmcgSW1wbFR5cGUgPSBUOwotLQotLSAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhh c19udWxsX3ZhbHVlID0KLS0gICAgICBiaW5kaW5nczo6TmF0aXZlVmFsdWVUcmFpdHNIYXNOdWxs VmFsdWU8SW1wbFR5cGU+Ojp2YWx1ZTsKLS0KLS0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBFeHRy YUFyZ3M+Ci0tICBzdGF0aWMgZGVjbHR5cGUoYXV0bykgQXJndW1lbnRWYWx1ZSh2ODo6SXNvbGF0 ZSogaXNvbGF0ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBh cmd1bWVudF9pbmRleCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4 OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSwKLS0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEV4dHJhQXJncy4uLiBleHRyYV9hcmdzKSB7Ci0tICAg IHJldHVybiBOYXRpdmVWYWx1ZVRyYWl0czxzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8VD4+OjpOYXRp dmVWYWx1ZSgKLS0gICAgICAgIGlzb2xhdGUsIHZhbHVlLCBleGNlcHRpb25fc3RhdGUsCi0tICAg ICAgICBzdGQ6OmZvcndhcmQ8RXh0cmFBcmdzPihleHRyYV9hcmdzKS4uLik7Ci0tICB9Ci0tfTsK LS0KLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHNCYXNl PAotLSAgICBULAotLSAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxJRExCYXNl LCBUPjo6dmFsdWU+PiB7Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzQmFzZSB7Ci0gICBTVEFU SUNfT05MWShOYXRpdmVWYWx1ZVRyYWl0c0Jhc2UpOwotIAotLSAgdXNpbmcgSW1wbFR5cGUgPSB0 eXBlbmFtZSBUOjpJbXBsVHlwZTsKLSsgIHVzaW5nIEltcGxUeXBlID0gYmluZGluZ3M6OkltcGxU eXBlRm9yPFQ+Ojp0eXBlOwotIAotKyAgLy8gUG9pbnRlciB0eXBlcyBoYXZlIG51bGxwdHIgYXMg SURMIG51bGwgdmFsdWUuCi0rICAvLyBTY3JpcHRWYWx1ZSwgU3RyaW5nLCBhbmQgdW5pb24gdHlw ZXMgaGF2ZSBJc051bGwgbWVtYmVyIGZ1bmN0aW9uLgotICAgc3RhdGljIGNvbnN0ZXhwciBib29s IGhhc19udWxsX3ZhbHVlID0KLS0gICAgICBiaW5kaW5nczo6TmF0aXZlVmFsdWVUcmFpdHNIYXNO dWxsVmFsdWU8SW1wbFR5cGU+Ojp2YWx1ZTsKLSsgICAgICBzdGQ6OmlzX3BvaW50ZXJfdjxJbXBs VHlwZT4gfHwKLSsgICAgICByZXF1aXJlcyhJbXBsVHlwZSB2YWx1ZSkgeyB2YWx1ZS5Jc051bGwo KTsgfTsKLSAKLSAgIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBFeHRyYUFyZ3M+Ci0gICBzdGF0aWMg ZGVjbHR5cGUoYXV0bykgQXJndW1lbnRWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLWRpZmYg LS1naXQgYS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2 ZV92YWx1ZV90cmFpdHNfYnVmZmVyX3NvdXJjZXMuY2MgYi90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFpdHNfYnVmZmVyX3NvdXJjZXMu Y2MKLWluZGV4IDUwOGVhNmQ4ZWVhNDguLjE4ZGU3MWQ4NDAyM2YgMTAwNjQ0Ci0tLS0gYS90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFp dHNfYnVmZmVyX3NvdXJjZXMuY2MKLSsrKyBiL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2Jp bmRpbmdzL2NvcmUvdjgvbmF0aXZlX3ZhbHVlX3RyYWl0c19idWZmZXJfc291cmNlcy5jYwotQEAg LTcsNiArNyw3IEBACi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv Y29yZV9leHBvcnQuaCIKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29y ZS9leGVjdXRpb25fY29udGV4dC9leGVjdXRpb25fY29udGV4dC5oIgotICNpbmNsdWRlICJ0aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2ZyYW1lL3dlYl9mZWF0dXJlLmgiCi0rI2luY2x1 ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvdHlwZWRfYXJyYXlzL2ZsZXhpYmxl X2FycmF5X2J1ZmZlcl92aWV3LmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL2NvcmUvdHlwZWRfYXJyYXlzL3R5cGVkX2ZsZXhpYmxlX2FycmF5X2J1ZmZlcl92aWV3Lmgi Ci0gCi0gbmFtZXNwYWNlIGJsaW5rIHsKLUBAIC02OTgsMTIgKzY5OSwxMSBAQCBET01BcnJheUJ1 ZmZlckJhc2UqIE5hdGl2ZVZhbHVlVHJhaXRzPAotIC8vIEFycmF5QnVmZmVyVmlldwotIAotIHRl bXBsYXRlIDx0eXBlbmFtZSBUPgotLU5vdFNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKLS0g ICAgTm90U2hhcmVkPFQ+LAotLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf YmFzZV9vZjxET01BcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+OjoKLS0gICAgTmF0aXZlVmFs dWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0tICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6 VmFsdWU+IHZhbHVlLAotLSAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9u X3N0YXRlKSB7Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZl clZpZXc+Ci0rTm90U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPE5vdFNoYXJlZDxUPj46Ok5h dGl2ZVZhbHVlKAotKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSsgICAgdjg6OkxvY2FsPHY4 OjpWYWx1ZT4gdmFsdWUsCi0rICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsK LSAgIHJldHVybiBOYXRpdmVWYWx1ZUltcGw8Ci0gICAgICAgUmVjaXBlVHJhaXQ8Tm90U2hhcmVk PFQ+PiwgVG9ET01WaWV3VHlwZTxULCBrTm90U2hhcmVkPiwKLSAgICAgICBOdWxsYWJsaXR5Ojpr SXNOb3ROdWxsYWJsZSwgQnVmZmVyU2l6ZUNoZWNrOjprQ2hlY2ssCi1AQCAtNzEyLDEzICs3MTIs MTIgQEAgTm90U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAotIH0KLSAKLSB0ZW1wbGF0ZSA8 dHlwZW5hbWUgVD4KLS1Ob3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIE5vdFNo YXJlZDxUPiwKLS0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8 RE9NQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+Pjo6Ci0tICAgIEFyZ3VtZW50VmFsdWUodjg6 Oklzb2xhdGUqIGlzb2xhdGUsCi0tICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50X2luZGV4 LAotLSAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAotLSAgICAg ICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKLSsgIHJlcXVp cmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KLStOb3RTaGFyZWQ8 VD4gTmF0aXZlVmFsdWVUcmFpdHM8Tm90U2hhcmVkPFQ+Pjo6QXJndW1lbnRWYWx1ZSgKLSsgICAg djg6Oklzb2xhdGUqIGlzb2xhdGUsCi0rICAgIGludCBhcmd1bWVudF9pbmRleCwKLSsgICAgdjg6 OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0rICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25f c3RhdGUpIHsKLSAgIHJldHVybiBBcmd1bWVudFZhbHVlSW1wbDwKLSAgICAgICBSZWNpcGVUcmFp dDxOb3RTaGFyZWQ8VD4+LCBUb0RPTVZpZXdUeXBlPFQsIGtOb3RTaGFyZWQ+LAotICAgICAgIE51 bGxhYmxpdHk6OmtJc05vdE51bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtDaGVjaywKLUBAIC03 MjksMTIgKzcyOCwxMSBAQCBOb3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8Ci0gLy8gW0Fs bG93U2hhcmVkXSBBcnJheUJ1ZmZlclZpZXcKLSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1N YXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAgTWF5YmVTaGFyZWQ8VD4sCi0t ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVm ZmVyVmlldywgVD46OnZhbHVlPj46OgotLSAgICBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNv bGF0ZSwKLS0gICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0tICAg ICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKLSsgIHJlcXVp cmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KLStNYXliZVNoYXJl ZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czxNYXliZVNoYXJlZDxUPj46Ok5hdGl2ZVZhbHVlKAotKyAg ICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSsgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs Ci0rICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKLSAgIHJldHVybiBOYXRp dmVWYWx1ZUltcGw8UmVjaXBlVHJhaXQ8TWF5YmVTaGFyZWQ8VD4+LAotICAgICAgICAgICAgICAg ICAgICAgICAgICBUb0RPTVZpZXdUeXBlPFQsIGtNYXliZVNoYXJlZD4sCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIE51bGxhYmxpdHk6OmtJc05vdE51bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6 OmtDaGVjaywKLUBAIC03NDMsMTMgKzc0MSwxMiBAQCBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1 ZVRyYWl0czwKLSB9Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tTWF5YmVTaGFyZWQ8VD4g TmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIE1heWJlU2hhcmVkPFQ+LAotLSAgICB0eXBlbmFtZSBz dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxET01BcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2 YWx1ZT4+OjoKLS0gICAgQXJndW1lbnRWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLS0gICAg ICAgICAgICAgICAgICBpbnQgYXJndW1lbnRfaW5kZXgsCi0tICAgICAgICAgICAgICAgICAgdjg6 OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0tICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3Rh dGUmIGV4Y2VwdGlvbl9zdGF0ZSkgewotKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwg RE9NQXJyYXlCdWZmZXJWaWV3PgotK01heWJlU2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPE1h eWJlU2hhcmVkPFQ+Pjo6QXJndW1lbnRWYWx1ZSgKLSsgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUs Ci0rICAgIGludCBhcmd1bWVudF9pbmRleCwKLSsgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs dWUsCi0rICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKLSAgIHJldHVybiBB cmd1bWVudFZhbHVlSW1wbDxSZWNpcGVUcmFpdDxNYXliZVNoYXJlZDxUPj4sCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgVG9ET01WaWV3VHlwZTxULCBrTWF5YmVTaGFyZWQ+LAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE51bGxhYmxpdHk6OmtJc05vdE51bGxhYmxlLCBCdWZmZXJT aXplQ2hlY2s6OmtDaGVjaywKLUBAIC03NjAsMTIgKzc1NywxMiBAQCBNYXliZVNoYXJlZDxUPiBO YXRpdmVWYWx1ZVRyYWl0czwKLSAvLyBbQWxsb3dTaGFyZWQsIEJ1ZmZlclNvdXJjZVR5cGVOb1Np emVMaW1pdF0gQXJyYXlCdWZmZXJWaWV3Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tTWF5 YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIElETEJ1ZmZlclNvdXJjZVR5cGVO b1NpemVMaW1pdDxNYXliZVNoYXJlZDxUPj4sCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm X3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgotLSAg ICBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLS0gICAgICAgICAgICAgICAgdjg6 OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0tICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRl JiBleGNlcHRpb25fc3RhdGUpIHsKLSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERP TUFycmF5QnVmZmVyVmlldz4KLStNYXliZVNoYXJlZDxUPgotK05hdGl2ZVZhbHVlVHJhaXRzPElE TEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVMaW1pdDxNYXliZVNoYXJlZDxUPj4+OjpOYXRpdmVWYWx1 ZSgKLSsgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0rICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+ IHZhbHVlLAotKyAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7Ci0gICByZXR1 cm4gTmF0aXZlVmFsdWVJbXBsPAotICAgICAgIFJlY2lwZVRyYWl0PE1heWJlU2hhcmVkPFQ+Piwg VG9ET01WaWV3VHlwZTxULCBrTWF5YmVTaGFyZWQ+LAotICAgICAgIE51bGxhYmxpdHk6OmtJc05v dE51bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtEb05vdENoZWNrLAotQEAgLTc3NCwxMyArNzcx LDEyIEBAIE1heWJlU2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAotIH0KLSAKLSB0ZW1wbGF0 ZSA8dHlwZW5hbWUgVD4KLS1NYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAg SURMQnVmZmVyU291cmNlVHlwZU5vU2l6ZUxpbWl0PE1heWJlU2hhcmVkPFQ+PiwKLS0gICAgdHlw ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9NQXJyYXlCdWZmZXJWaWV3 LCBUPjo6dmFsdWU+Pjo6Ci0tICAgIEFyZ3VtZW50VmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUs Ci0tICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50X2luZGV4LAotLSAgICAgICAgICAgICAg ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAotLSAgICAgICAgICAgICAgICAgIEV4Y2Vw dGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKLSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9m cm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KLStNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRy YWl0czxJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8Ci0rICAgIE1heWJlU2hhcmVkPFQ+ Pj46OkFyZ3VtZW50VmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50X2luZGV4LAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25f c3RhdGUpIHsKLSAgIHJldHVybiBBcmd1bWVudFZhbHVlSW1wbDwKLSAgICAgICBSZWNpcGVUcmFp dDxNYXliZVNoYXJlZDxUPj4sIFRvRE9NVmlld1R5cGU8VCwga01heWJlU2hhcmVkPiwKLSAgICAg ICBOdWxsYWJsaXR5OjprSXNOb3ROdWxsYWJsZSwgQnVmZmVyU2l6ZUNoZWNrOjprRG9Ob3RDaGVj aywKLUBAIC03OTEsMTIgKzc4NywxMSBAQCBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0 czwKLSAvLyBOdWxsYWJsZSBBcnJheUJ1ZmZlclZpZXcKLSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KLS1Ob3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIElETE51bGxhYmxlPE5v dFNoYXJlZDxUPj4sCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNl X29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgotLSAgICBOYXRpdmVWYWx1ZSh2 ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLS0gICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1 ZT4gdmFsdWUsCi0tICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3Rh dGUpIHsKLSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmll dz4KLStOb3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8SURMTnVsbGFibGU8Tm90U2hhcmVk PFQ+Pj46Ok5hdGl2ZVZhbHVlKAotKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSsgICAgdjg6 OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0rICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25f c3RhdGUpIHsKLSAgIHJldHVybiBOYXRpdmVWYWx1ZUltcGw8Ci0gICAgICAgUmVjaXBlVHJhaXQ8 Tm90U2hhcmVkPFQ+PiwgVG9ET01WaWV3VHlwZTxULCBrTm90U2hhcmVkPiwKLSAgICAgICBOdWxs YWJsaXR5OjprSXNOdWxsYWJsZSwgQnVmZmVyU2l6ZUNoZWNrOjprQ2hlY2ssCi1AQCAtODA1LDEz ICs4MDAsMTIgQEAgTm90U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAotIH0KLSAKLSB0ZW1w bGF0ZSA8dHlwZW5hbWUgVD4KLS1Ob3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAg IElETE51bGxhYmxlPE5vdFNoYXJlZDxUPj4sCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lm X3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgotLSAg ICBBcmd1bWVudFZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAotLSAgICAgICAgICAgICAgICAg IGludCBhcmd1bWVudF9pbmRleCwKLS0gICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZh bHVlPiB2YWx1ZSwKLS0gICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9u X3N0YXRlKSB7Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZl clZpZXc+Ci0rTm90U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPE5vdFNo YXJlZDxUPj4+OjpBcmd1bWVudFZhbHVlKAotKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSsg ICAgaW50IGFyZ3VtZW50X2luZGV4LAotKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwK LSsgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgewotICAgcmV0dXJuIEFyZ3Vt ZW50VmFsdWVJbXBsPAotICAgICAgIFJlY2lwZVRyYWl0PE5vdFNoYXJlZDxUPj4sIFRvRE9NVmll d1R5cGU8VCwga05vdFNoYXJlZD4sCi0gICAgICAgTnVsbGFibGl0eTo6a0lzTnVsbGFibGUsIEJ1 ZmZlclNpemVDaGVjazo6a0NoZWNrLAotQEAgLTgyMiwxMiArODE2LDExIEBAIE5vdFNoYXJlZDxU PiBOYXRpdmVWYWx1ZVRyYWl0czwKLSAvLyBOdWxsYWJsZSBbQWxsb3dTaGFyZWRdIEFycmF5QnVm ZmVyVmlldwotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLU1heWJlU2hhcmVkPFQ+IE5hdGl2 ZVZhbHVlVHJhaXRzPAotLSAgICBJRExOdWxsYWJsZTxNYXliZVNoYXJlZDxUPj4sCi0tICAgIHR5 cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmll dywgVD46OnZhbHVlPj46OgotLSAgICBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwK LS0gICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0tICAgICAgICAg ICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKLSsgIHJlcXVpcmVzIHN0 ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KLStNYXliZVNoYXJlZDxUPiBO YXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxNYXliZVNoYXJlZDxUPj4+OjpOYXRpdmVWYWx1 ZSgKLSsgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0rICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+ IHZhbHVlLAotKyAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7Ci0gICByZXR1 cm4gTmF0aXZlVmFsdWVJbXBsPFJlY2lwZVRyYWl0PE1heWJlU2hhcmVkPFQ+PiwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgVG9ET01WaWV3VHlwZTxULCBrTWF5YmVTaGFyZWQ+LAotICAgICAg ICAgICAgICAgICAgICAgICAgICBOdWxsYWJsaXR5OjprSXNOdWxsYWJsZSwgQnVmZmVyU2l6ZUNo ZWNrOjprQ2hlY2ssCi1AQCAtODM2LDEzICs4MjksMTIgQEAgTWF5YmVTaGFyZWQ8VD4gTmF0aXZl VmFsdWVUcmFpdHM8Ci0gfQotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLU1heWJlU2hhcmVk PFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAotLSAgICBJRExOdWxsYWJsZTxNYXliZVNoYXJlZDxUPj4s Ci0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5 QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgotLSAgICBBcmd1bWVudFZhbHVlKHY4OjpJc29sYXRl KiBpc29sYXRlLAotLSAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudF9pbmRleCwKLS0gICAg ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKLS0gICAgICAgICAgICAg ICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7Ci0rICByZXF1aXJlcyBzdGQ6 OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+Ci0rTWF5YmVTaGFyZWQ8VD4gTmF0 aXZlVmFsdWVUcmFpdHM8SURMTnVsbGFibGU8TWF5YmVTaGFyZWQ8VD4+Pjo6QXJndW1lbnRWYWx1 ZSgKLSsgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0rICAgIGludCBhcmd1bWVudF9pbmRleCwK LSsgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0rICAgIEV4Y2VwdGlvblN0YXRlJiBl eGNlcHRpb25fc3RhdGUpIHsKLSAgIHJldHVybiBBcmd1bWVudFZhbHVlSW1wbDxSZWNpcGVUcmFp dDxNYXliZVNoYXJlZDxUPj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9ET01WaWV3 VHlwZTxULCBrTWF5YmVTaGFyZWQ+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGxh YmxpdHk6OmtJc051bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtDaGVjaywKLUBAIC04NTMsOSAr ODQ1LDkgQEAgTWF5YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8Ci0gLy8gTnVsbGFibGUg W0FsbG93U2hhcmVkLCBCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXRdIEFycmF5QnVmZmVyVmll dwotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLU1heWJlU2hhcmVkPFQ+IE5hdGl2ZVZhbHVl VHJhaXRzPAotLSAgICBJRExOdWxsYWJsZTxJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8 TWF5YmVTaGFyZWQ8VD4+PiwKLS0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6Omlz X2Jhc2Vfb2Y8RE9NQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+Pjo6Ci0rICByZXF1aXJlcyBz dGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+Ci0rTWF5YmVTaGFyZWQ8VD4K LStOYXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXpl TGltaXQ8TWF5YmVTaGFyZWQ8VD4+Pj46OgotICAgICBBcmd1bWVudFZhbHVlKHY4OjpJc29sYXRl KiBpc29sYXRlLAotICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudF9pbmRleCwKLSAgICAg ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKLUBAIC04NzAsMTMgKzg2 MiwxMSBAQCBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKLSAvLyBbQWxsb3dTaGFy ZWQsIEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3XSBBcnJheUJ1ZmZlclZpZXcKLSAKLSB0ZW1wbGF0 ZSA8dHlwZW5hbWUgVD4KLS1UIE5hdGl2ZVZhbHVlVHJhaXRzPFQsCi0tICAgICAgICAgICAgICAg ICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PAotLSAgICAgICAgICAgICAgICAgICAgICAg IHN0ZDo6aXNfYmFzZV9vZjxGbGV4aWJsZUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj46Ogot LSAgICBBcmd1bWVudFZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAotLSAgICAgICAgICAgICAg ICAgIGludCBhcmd1bWVudF9pbmRleCwKLS0gICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6 OlZhbHVlPiB2YWx1ZSwKLS0gICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0 aW9uX3N0YXRlKSB7Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBGbGV4aWJsZUFy cmF5QnVmZmVyVmlldz4KLStUIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+OjpBcmd1bWVudFZhbHVlKHY4 OjpJc29sYXRlKiBpc29sYXRlLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaW50IGFyZ3VtZW50X2luZGV4LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7Ci0gICBy ZXR1cm4gQXJndW1lbnRWYWx1ZUltcGw8UmVjaXBlVHJhaXQ8VD4sIFRvRmxleGlibGVBcnJheUJ1 ZmZlclZpZXcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVsbGFibGl0eTo6a0lzTm90 TnVsbGFibGUsIEJ1ZmZlclNpemVDaGVjazo6a0NoZWNrLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFJlc2l6YWJsZUFsbG93YW5jZTo6a0Rpc2FsbG93UmVzaXphYmxlLAotQEAgLTg4OCwx MyArODc4LDEyIEBAIFQgTmF0aXZlVmFsdWVUcmFpdHM8VCwKLSAvLyBBcnJheUJ1ZmZlclZpZXcK LSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1UIE5hdGl2ZVZhbHVlVHJhaXRzPElETEJ1ZmZl clNvdXJjZVR5cGVOb1NpemVMaW1pdDxUPiwKLS0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1l IHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0tICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19iYXNl X29mPEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+Pjo6Ci0tICAgIEFyZ3VtZW50 VmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0tICAgICAgICAgICAgICAgICAgaW50IGFyZ3Vt ZW50X2luZGV4LAotLSAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl LAotLSAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsK LSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3 PgotK1QgTmF0aXZlVmFsdWVUcmFpdHM8SURMQnVmZmVyU291cmNlVHlwZU5vU2l6ZUxpbWl0PFQ+ Pjo6QXJndW1lbnRWYWx1ZSgKLSsgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0rICAgIGludCBh cmd1bWVudF9pbmRleCwKLSsgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0rICAgIEV4 Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKLSAgIHJldHVybiBBcmd1bWVudFZhbHVl SW1wbDwKLSAgICAgICBSZWNpcGVUcmFpdDxUPiwgVG9GbGV4aWJsZUFycmF5QnVmZmVyVmlldywg TnVsbGFibGl0eTo6a0lzTm90TnVsbGFibGUsCi0gICAgICAgQnVmZmVyU2l6ZUNoZWNrOjprRG9O b3RDaGVjaywgUmVzaXphYmxlQWxsb3dhbmNlOjprRGlzYWxsb3dSZXNpemFibGUsCi1AQCAtOTA1 LDEzICs4OTQsMTIgQEAgVCBOYXRpdmVWYWx1ZVRyYWl0czxJRExCdWZmZXJTb3VyY2VUeXBlTm9T aXplTGltaXQ8VD4sCi0gLy8gTnVsbGFibGUgW0FsbG93U2hhcmVkLCBGbGV4aWJsZUFycmF5QnVm ZmVyVmlld10gQXJyYXlCdWZmZXJWaWV3Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tVCBO YXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxUPiwKLS0gICAgICAgICAgICAgICAgICAgIHR5 cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0tICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjpp c19iYXNlX29mPEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+Pjo6Ci0tICAgIEFy Z3VtZW50VmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0tICAgICAgICAgICAgICAgICAgaW50 IGFyZ3VtZW50X2luZGV4LAotLSAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+ IHZhbHVlLAotLSAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3Rh dGUpIHsKLSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIEZsZXhpYmxlQXJyYXlCdWZm ZXJWaWV3PgotK1QgTmF0aXZlVmFsdWVUcmFpdHM8SURMTnVsbGFibGU8VD4+OjpBcmd1bWVudFZh bHVlKAotKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSsgICAgaW50IGFyZ3VtZW50X2luZGV4 LAotKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKLSsgICAgRXhjZXB0aW9uU3RhdGUm IGV4Y2VwdGlvbl9zdGF0ZSkgewotICAgcmV0dXJuIEFyZ3VtZW50VmFsdWVJbXBsPFJlY2lwZVRy YWl0PFQ+LCBUb0ZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3LAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgIE51bGxhYmxpdHk6OmtJc051bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtDaGVjaywK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNpemFibGVBbGxvd2FuY2U6OmtEaXNhbGxv d1Jlc2l6YWJsZSwKLWRpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5k aW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFpdHNfaW1wbC5oIGIvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9uYXRpdmVfdmFsdWVfdHJhaXRzX2ltcGwuaAot aW5kZXggODk5OTI5ZGNmNDlmOS4uNTAxMTUwM2RjZjFjMCAxMDA2NDQKLS0tLSBhL3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvbmF0aXZlX3ZhbHVlX3RyYWl0c19p bXBsLmgKLSsrKyBiL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgv bmF0aXZlX3ZhbHVlX3RyYWl0c19pbXBsLmgKLUBAIC01LDYgKzUsOSBAQAotICNpZm5kZWYgVEhJ UkRfUEFSVFlfQkxJTktfUkVOREVSRVJfQklORElOR1NfQ09SRV9WOF9OQVRJVkVfVkFMVUVfVFJB SVRTX0lNUExfSF8KLSAjZGVmaW5lIFRISVJEX1BBUlRZX0JMSU5LX1JFTkRFUkVSX0JJTkRJTkdT X0NPUkVfVjhfTkFUSVZFX1ZBTFVFX1RSQUlUU19JTVBMX0hfCi0gCi0rI2luY2x1ZGUgPGNvbmNl cHRzPgotKyNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KLSsKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkv YWJzZWlsLWNwcC9hYnNsL3R5cGVzL29wdGlvbmFsLmgiCi0gI2luY2x1ZGUgInRoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvaWRsX3R5cGVzLmgiCi0gI2luY2x1ZGUg InRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvbmF0aXZlX3ZhbHVl X3RyYWl0cy5oIgotQEAgLTcxNSw5ICs3MTgsOCBAQCBzdHJ1Y3QgQ09SRV9FWFBPUlQgTmF0aXZl VmFsdWVUcmFpdHM8Ci0gfTsKLSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1zdHJ1Y3QgTmF0 aXZlVmFsdWVUcmFpdHM8Ci0tICAgIFQsCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8 c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj4gewotKyAgcmVx dWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgRE9NQXJyYXlCdWZmZXJWaWV3PgotK3N0cnVjdCBO YXRpdmVWYWx1ZVRyYWl0czxUPiB7Ci0gICAvLyBOb3RTaGFyZWQ8VD4gb3IgTWF5YmVTaGFyZWQ8 VD4gc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KLSAgIHN0YXRpYyBUKiBOYXRpdmVWYWx1ZSh2ODo6 SXNvbGF0ZSogaXNvbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6 OlZhbHVlPiB2YWx1ZSwKLUBAIC03MjksOSArNzMxLDggQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJh aXRzPAotIH07Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tc3RydWN0IE5hdGl2ZVZhbHVl VHJhaXRzPAotLSAgICBJRExOdWxsYWJsZTxUPiwKLS0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVf aWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9NQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+PiB7Ci0r ICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+Ci0rc3Ry dWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPFQ+PiB7Ci0gICAvLyBOb3RTaGFyZWQ8 VD4gb3IgTWF5YmVTaGFyZWQ8VD4gc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KLSAgIHN0YXRpYyBU KiBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKLUBAIC03NDMsOSArNzQ0LDggQEAgc3Ry dWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAotIH07Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0t c3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAotLSAgICBOb3RTaGFyZWQ8VD4sCi0tICAgIHR5cGVu YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywg VD46OnZhbHVlPj4KLSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVm ZmVyVmlldz4KLStzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Tm90U2hhcmVkPFQ+PgotICAgICA6 IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8Tm90U2hhcmVkPFQ+PiB7Ci0gICBzdGF0aWMg Tm90U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKLUBA IC03NTgsOSArNzU4LDggQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAotIH07Ci0gCi0gdGVt cGxhdGUgPHR5cGVuYW1lIFQ+Ci0tc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAotLSAgICBJRExO dWxsYWJsZTxOb3RTaGFyZWQ8VD4+LAotLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0 ZDo6aXNfYmFzZV9vZjxET01BcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+Ci0rICByZXF1aXJl cyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+Ci0rc3RydWN0IE5hdGl2 ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPE5vdFNoYXJlZDxUPj4+Ci0gICAgIDogcHVibGljIE5h dGl2ZVZhbHVlVHJhaXRzQmFzZTxOb3RTaGFyZWQ8VD4+IHsKLSAgIHN0YXRpYyBOb3RTaGFyZWQ8 VD4gTmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAotQEAgLTc3Myw5ICs3 NzIsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0gfTsKLSAKLSB0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4KLS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIE1heWJlU2hhcmVkPFQ+ LAotLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxET01BcnJh eUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxU LCBET01BcnJheUJ1ZmZlclZpZXc+Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPE1heWJlU2hh cmVkPFQ+PgotICAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8TWF5YmVTaGFyZWQ8 VD4+IHsKLSAgIHN0YXRpYyBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSog aXNvbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8 djg6OlZhbHVlPiB2YWx1ZSwKLUBAIC03ODgsOSArNzg2LDggQEAgc3RydWN0IE5hdGl2ZVZhbHVl VHJhaXRzPAotIH07Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tc3RydWN0IE5hdGl2ZVZh bHVlVHJhaXRzPAotLSAgICBJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8TWF5YmVTaGFy ZWQ8VD4+LAotLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxE T01BcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRf ZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElE TEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVMaW1pdDxNYXliZVNoYXJlZDxUPj4+Ci0gICAgIDogcHVi bGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxNYXliZVNoYXJlZDxUPj4gewotICAgLy8gRmxleGli bGVBcnJheUJ1ZmZlclZpZXcgdXNlcyB0aGlzIGluIGl0cyBpbXBsZW1lbnRhdGlvbiwgc28gd2Ug Y2Fubm90Ci0gICAvLyBkZWxldGUgaXQuCi1AQCAtODA1LDkgKzgwMiw4IEBAIHN0cnVjdCBOYXRp dmVWYWx1ZVRyYWl0czwKLSB9OwotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLXN0cnVjdCBO YXRpdmVWYWx1ZVRyYWl0czwKLS0gICAgSURMTnVsbGFibGU8TWF5YmVTaGFyZWQ8VD4+LAotLSAg ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxET01BcnJheUJ1ZmZl clZpZXcsIFQ+Ojp2YWx1ZT4+Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01B cnJheUJ1ZmZlclZpZXc+Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPE1h eWJlU2hhcmVkPFQ+Pj4KLSAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPE1heWJl U2hhcmVkPFQ+PiB7Ci0gICBzdGF0aWMgTWF5YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWUodjg6Oklz b2xhdGUqIGlzb2xhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6 OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi1AQCAtODIwLDkgKzgxNiw5IEBAIHN0cnVjdCBOYXRp dmVWYWx1ZVRyYWl0czwKLSB9OwotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotKyAgcmVxdWly ZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgRE9NQXJyYXlCdWZmZXJWaWV3PgotIHN0cnVjdCBOYXRp dmVWYWx1ZVRyYWl0czwKLS0gICAgSURMTnVsbGFibGU8SURMQnVmZmVyU291cmNlVHlwZU5vU2l6 ZUxpbWl0PE1heWJlU2hhcmVkPFQ+Pj4sCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8 c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj4KLSsgICAgSURM TnVsbGFibGU8SURMQnVmZmVyU291cmNlVHlwZU5vU2l6ZUxpbWl0PE1heWJlU2hhcmVkPFQ+Pj4+ Ci0gICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxNYXliZVNoYXJlZDxUPj4gewot ICAgLy8gQnVmZmVyU291cmNlVHlwZU5vU2l6ZUxpbWl0IG11c3QgYmUgdXNlZCBvbmx5IGFzIGFy Z3VtZW50cy4KLSAgIHN0YXRpYyBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0 ZSogaXNvbGF0ZSwKLUBAIC04MzYsMTEgKzgzMiw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0 czwKLSB9OwotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRy YWl0czwKLS0gICAgVCwKLS0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwKLS0gICAgICAg IHN0ZDo6aXNfYmFzZV9vZjxGbGV4aWJsZUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj4KLS0g ICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQ+IHsKLSsgIHJlcXVpcmVzIHN0ZDo6 ZGVyaXZlZF9mcm9tPFQsIEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3PgotK3N0cnVjdCBOYXRpdmVW YWx1ZVRyYWl0czxUPiA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VD4gewotICAgLy8g RmxleGlibGVBcnJheUJ1ZmZlclZpZXcgbXVzdCBiZSB1c2VkIG9ubHkgYXMgYXJndW1lbnRzLgot ICAgc3RhdGljIFQgTmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0gICAgICAgICAg ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKLUBAIC04NTMsMTAgKzg0 Niw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLSB9OwotIAotIHRlbXBsYXRlIDx0eXBl bmFtZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAgSURMQnVmZmVyU291cmNl VHlwZU5vU2l6ZUxpbWl0PFQ+LAotLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PAotLSAg ICAgICAgc3RkOjppc19iYXNlX29mPEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+ PgotKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgRmxleGlibGVBcnJheUJ1ZmZlclZp ZXc+Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVM aW1pdDxUPj4KLSAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQ+IHsKLSAgIC8v IEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVMaW1pdCBhbmQgRmxleGlibGVBcnJheUJ1ZmZlclZpZXcg bXVzdCBiZSB1c2VkIG9ubHkKLSAgIC8vIGFzIGFyZ3VtZW50cy4KLUBAIC04NzEsMTEgKzg2Miw4 IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLSB9OwotIAotIHRlbXBsYXRlIDx0eXBlbmFt ZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAgSURMTnVsbGFibGU8VD4sCi0t ICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0tICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8 RmxleGlibGVBcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+Ci0tICAgIDogcHVibGljIE5hdGl2 ZVZhbHVlVHJhaXRzQmFzZTxUPiB7Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBG bGV4aWJsZUFycmF5QnVmZmVyVmlldz4KLStzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMTnVs bGFibGU8VD4+IDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUPiB7Ci0gICAvLyBGbGV4 aWJsZUFycmF5QnVmZmVyVmlldyBtdXN0IGJlIHVzZWQgb25seSBhcyBhcmd1bWVudHMuCi0gICBz dGF0aWMgVCBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAotQEAgLTExMzQsOSArMTEyMiw4 IEBAIE5hdGl2ZVZhbHVlVHJhaXRzPElETFNlcXVlbmNlPFQ+Pjo6TmF0aXZlVmFsdWUoCi0gfQot IAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExO dWxsYWJsZTxJRExTZXF1ZW5jZTxUPj4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVu YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRp dmVWYWx1ZVRyYWl0czxJRExTZXF1ZW5jZTxUPj46Omhhc19udWxsX3ZhbHVlPj4KLSsgIHJlcXVp cmVzIE5hdGl2ZVZhbHVlVHJhaXRzPElETFNlcXVlbmNlPFQ+Pjo6aGFzX251bGxfdmFsdWUKLStz dHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8VD4+PgotICAg ICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8SGVhcFZlY3RvcjxBZGRNZW1iZXJJZk5l ZWRlZDxUPj4qPiB7Ci0gICB1c2luZyBJbXBsVHlwZSA9IHR5cGVuYW1lIE5hdGl2ZVZhbHVlVHJh aXRzPElETFNlcXVlbmNlPFQ+Pjo6SW1wbFR5cGUqOwotIAotQEAgLTEyMDMsOSArMTE5MCw4IEBA IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExBcnJheTxUPj4KLSAgICAgOiBwdWJsaWMgTmF0 aXZlVmFsdWVUcmFpdHM8SURMU2VxdWVuY2U8VD4+IHt9OwotIAotIHRlbXBsYXRlIDx0eXBlbmFt ZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxJRExBcnJheTxUPj4s Ci0tICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXRpdmVWYWx1ZVRyYWl0czxJRExTZXF1ZW5j ZTxUPj46Omhhc19udWxsX3ZhbHVlPj4KLSsgIHJlcXVpcmVzIE5hdGl2ZVZhbHVlVHJhaXRzPElE TFNlcXVlbmNlPFQ+Pjo6aGFzX251bGxfdmFsdWUKLStzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8 SURMTnVsbGFibGU8SURMQXJyYXk8VD4+PgotICAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0 czxJRExOdWxsYWJsZTxJRExTZXF1ZW5jZTxUPj4+IHt9OwotIAotIC8vIFJlY29yZCB0eXBlcwot QEAgLTEzMzUsMTAgKzEzMjEsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMUmVjb3Jk PEssIFY+PgotIAotIC8vIENhbGxiYWNrIGZ1bmN0aW9uIHR5cGVzCi0gdGVtcGxhdGUgPHR5cGVu YW1lIFQ+Ci0tc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAotLSAgICBULAotLSAgICB0eXBlbmFt ZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxDYWxsYmFja0Z1bmN0aW9uQmFzZSwg VD46OnZhbHVlPj4KLS0gICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQqPiB7Ci0r ICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBDYWxsYmFja0Z1bmN0aW9uQmFzZT4KLStz dHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8VD4gOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNl PFQqPiB7Ci0gICBzdGF0aWMgVCogTmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgewot QEAgLTEzNjEsOSArMTM0NSw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLSB9OwotIAot IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAg SURMTnVsbGFibGU8VD4sCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19i YXNlX29mPENhbGxiYWNrRnVuY3Rpb25CYXNlLCBUPjo6dmFsdWU+PgotKyAgcmVxdWlyZXMgc3Rk OjpkZXJpdmVkX2Zyb208VCwgQ2FsbGJhY2tGdW5jdGlvbkJhc2U+Ci0rc3RydWN0IE5hdGl2ZVZh bHVlVHJhaXRzPElETE51bGxhYmxlPFQ+PgotICAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0 c0Jhc2U8SURMTnVsbGFibGU8VD4+IHsKLSAgIHN0YXRpYyBUKiBOYXRpdmVWYWx1ZSh2ODo6SXNv bGF0ZSogaXNvbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZh bHVlPiB2YWx1ZSwKLUBAIC0xMzkyLDEwICsxMzc1LDggQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJh aXRzPAotIAotIC8vIENhbGxiYWNrIGludGVyZmFjZSB0eXBlcwotIHRlbXBsYXRlIDx0eXBlbmFt ZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAgVCwKLS0gICAgdHlwZW5hbWUg c3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8Q2FsbGJhY2tJbnRlcmZhY2VCYXNlLCBU Pjo6dmFsdWU+PgotLSAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VCo+IHsKLSsg IHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIENhbGxiYWNrSW50ZXJmYWNlQmFzZT4KLStz dHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8VD4gOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNl PFQqPiB7Ci0gICBzdGF0aWMgVCogTmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgewot QEAgLTE0MTgsOSArMTM5OSw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLSB9OwotIAot IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAg SURMTnVsbGFibGU8VD4sCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19i YXNlX29mPENhbGxiYWNrSW50ZXJmYWNlQmFzZSwgVD46OnZhbHVlPj4KLSsgIHJlcXVpcmVzIHN0 ZDo6ZGVyaXZlZF9mcm9tPFQsIENhbGxiYWNrSW50ZXJmYWNlQmFzZT4KLStzdHJ1Y3QgTmF0aXZl VmFsdWVUcmFpdHM8SURMTnVsbGFibGU8VD4+Ci0gICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJh aXRzQmFzZTxJRExOdWxsYWJsZTxUPj4gewotICAgc3RhdGljIFQqIE5hdGl2ZVZhbHVlKHY4OjpJ c29sYXRlKiBpc29sYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6 VmFsdWU+IHZhbHVlLAotQEAgLTE0NDksMTEgKzE0MjksOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVU cmFpdHM8Ci0gCi0gLy8gRGljdGlvbmFyeSB0eXBlcwotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgot LXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAgVCwKLS0gICAgdHlwZW5hbWUgc3RkOjpl bmFibGVfaWZfdDwKLS0gICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxiaW5kaW5nczo6RGljdGlvbmFy eUJhc2UsIFQ+Ojp2YWx1ZT4+Ci0tICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxU Kj4gewotKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgYmluZGluZ3M6OkRpY3Rpb25h cnlCYXNlPgotK3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxUPiA6IHB1YmxpYyBOYXRpdmVWYWx1 ZVRyYWl0c0Jhc2U8VCo+IHsKLSAgIHN0YXRpYyBUKiBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSog aXNvbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2 YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9u X3N0YXRlKSB7Ci1AQCAtMTQ2NCwxNCArMTQ0MSwxMSBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFp dHM8Ci0gLy8gV2UgZG9uJ3Qgc3VwcG9ydCBudWxsYWJsZSBkaWN0aW9uYXJ5IHR5cGVzIGluIGdl bmVyYWwgc2luY2UgaXQncyBxdWl0ZQotIC8vIGNvbmZ1c2luZyBhbmQgb2Z0ZW4gbWlzdXNlZC4K LSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAg IElETE51bGxhYmxlPFQ+LAotLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PAotLSAgICAg ICAgc3RkOjppc19iYXNlX29mPGJpbmRpbmdzOjpEaWN0aW9uYXJ5QmFzZSwgVD46OnZhbHVlICYm Ci0tICAgICAgICAoc3RkOjppc19zYW1lPFQsIEdQVUNvbG9yVGFyZ2V0U3RhdGU+Ojp2YWx1ZSB8 fAotLSAgICAgICAgIHN0ZDo6aXNfc2FtZTxULCBHUFVSZW5kZXJQYXNzQ29sb3JBdHRhY2htZW50 Pjo6dmFsdWUgfHwKLS0gICAgICAgICBzdGQ6OmlzX3NhbWU8VCwgR1BVVmVydGV4QnVmZmVyTGF5 b3V0Pjo6dmFsdWUpPj4KLS0gICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQqPiB7 Ci0rICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBiaW5kaW5nczo6RGljdGlvbmFyeUJh c2U+ICYmCi0rICAgICAgICAgICAoc3RkOjpzYW1lX2FzPFQsIEdQVUNvbG9yVGFyZ2V0U3RhdGU+ IHx8Ci0rICAgICAgICAgICAgc3RkOjpzYW1lX2FzPFQsIEdQVVJlbmRlclBhc3NDb2xvckF0dGFj aG1lbnQ+IHx8Ci0rICAgICAgICAgICAgc3RkOjpzYW1lX2FzPFQsIEdQVVZlcnRleEJ1ZmZlckxh eW91dD4pCi0rc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPFQ+PiA6IHB1Ymxp YyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VCo+IHsKLSAgIHN0YXRpYyBUKiBOYXRpdmVWYWx1ZSh2 ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8 djg6OlZhbHVlPiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0 ZSYgZXhjZXB0aW9uX3N0YXRlKSB7Ci1AQCAtMTQ4MywxMSArMTQ1Nyw4IEBAIHN0cnVjdCBOYXRp dmVWYWx1ZVRyYWl0czwKLSAKLSAvLyBFbnVtZXJhdGlvbiB0eXBlcwotIHRlbXBsYXRlIDx0eXBl bmFtZSBUPgotLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKLS0gICAgVCwKLS0gICAgdHlwZW5h bWUgc3RkOjplbmFibGVfaWZfdDwKLS0gICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxiaW5kaW5nczo6 RW51bWVyYXRpb25CYXNlLCBUPjo6dmFsdWU+PgotLSAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRy YWl0c0Jhc2U8VD4gewotKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgYmluZGluZ3M6 OkVudW1lcmF0aW9uQmFzZT4KLStzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8VD4gOiBwdWJsaWMg TmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQ+IHsKLSAgIHN0YXRpYyBUIE5hdGl2ZVZhbHVlKHY4OjpJ c29sYXRlKiBpc29sYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpW YWx1ZT4gdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhj ZXB0aW9uX3N0YXRlKSB7Ci1AQCAtMTQ5NywxMCArMTQ2OCw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1 ZVRyYWl0czwKLSAKLSAvLyBJbnRlcmZhY2UgdHlwZXMKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K LS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIFQsCi0tICAgIHR5cGVuYW1lIHN0ZDo6 ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPFNjcmlwdFdyYXBwYWJsZSwgVD46OnZhbHVlPj4K LS0gICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQqPiB7Ci0rICByZXF1aXJlcyBz dGQ6OmRlcml2ZWRfZnJvbTxULCBTY3JpcHRXcmFwcGFibGU+Ci0rc3RydWN0IE5hdGl2ZVZhbHVl VHJhaXRzPFQ+IDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUKj4gewotICAgc3RhdGlj IGlubGluZSBUKiBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUp IHsKLUBAIC0xNTI4LDkgKzE0OTcsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0gfTsK LSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0t ICAgIElETE51bGxhYmxlPFQ+LAotLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6 aXNfYmFzZV9vZjxTY3JpcHRXcmFwcGFibGUsIFQ+Ojp2YWx1ZT4+Ci0rICByZXF1aXJlcyBzdGQ6 OmRlcml2ZWRfZnJvbTxULCBTY3JpcHRXcmFwcGFibGU+Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJh aXRzPElETE51bGxhYmxlPFQ+PgotICAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8 SURMTnVsbGFibGU8VD4+IHsKLSAgIHN0YXRpYyBpbmxpbmUgVCogTmF0aXZlVmFsdWUodjg6Oklz b2xhdGUqIGlzb2xhdGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2Nh bDx2ODo6VmFsdWU+IHZhbHVlLAotQEAgLTE1NjUsMTAgKzE1MzMsOCBAQCBzdHJ1Y3QgTmF0aXZl VmFsdWVUcmFpdHM8Ci0gfTsKLSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1zdHJ1Y3QgTmF0 aXZlVmFsdWVUcmFpdHM8Ci0tICAgIFQsCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8 c3RkOjppc19iYXNlX29mPGJpbmRpbmdzOjpVbmlvbkJhc2UsIFQ+Ojp2YWx1ZT4+Ci0tICAgIDog cHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUKj4gewotKyAgcmVxdWlyZXMgc3RkOjpkZXJp dmVkX2Zyb208VCwgYmluZGluZ3M6OlVuaW9uQmFzZT4KLStzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFp dHM8VD4gOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQqPiB7Ci0gICBzdGF0aWMgVCog TmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg RXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgewotQEAgLTE1ODQsMTAgKzE1NTAsOCBA QCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0gfTsKLSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KLS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIElETE51bGxhYmxlPFQ+LAotLSAg ICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxiaW5kaW5nczo6VW5p b25CYXNlLCBUPjo6dmFsdWU+PgotLSAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8 VCo+IHsKLSsgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIGJpbmRpbmdzOjpVbmlvbkJh c2U+Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPFQ+PiA6IHB1YmxpYyBO YXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VCo+IHsKLSAgIHN0YXRpYyBUKiBOYXRpdmVWYWx1ZSh2ODo6 SXNvbGF0ZSogaXNvbGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6 OlZhbHVlPiB2YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYg ZXhjZXB0aW9uX3N0YXRlKSB7Ci1AQCAtMTYwOCw5ICsxNTcyLDggQEAgc3RydWN0IE5hdGl2ZVZh bHVlVHJhaXRzPAotIAotIC8vIE51bGxhYmxlIHR5cGVzCi0gdGVtcGxhdGUgPHR5cGVuYW1lIElu bmVyVHlwZT4KLS1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Ci0tICAgIElETE51bGxhYmxlPElu bmVyVHlwZT4sCi0tICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8IU5hdGl2ZVZhbHVlVHJh aXRzPElubmVyVHlwZT46Omhhc19udWxsX3ZhbHVlPj4KLSsgIHJlcXVpcmVzKCFOYXRpdmVWYWx1 ZVRyYWl0czxJbm5lclR5cGU+OjpoYXNfbnVsbF92YWx1ZSkKLStzdHJ1Y3QgTmF0aXZlVmFsdWVU cmFpdHM8SURMTnVsbGFibGU8SW5uZXJUeXBlPj4KLSAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVU cmFpdHNCYXNlPElETE51bGxhYmxlPElubmVyVHlwZT4+IHsKLSAgIC8vIGh0dHBzOi8vd2ViaWRs LnNwZWMud2hhdHdnLm9yZy8jZXMtbnVsbGFibGUtdHlwZQotICAgdXNpbmcgSW1wbFR5cGUgPQot QEAgLTE2NDIsOSArMTYwNSw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJs ZTxJRExOdWxsYWJsZTxUPj4+OwotIAotIC8vIE9wdGlvbmFsIHR5cGVzCi0gdGVtcGxhdGUgPHR5 cGVuYW1lIFQ+Ci0tc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETE9wdGlvbmFsPFQ+LAotLSAg ICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNf YXJpdGhtZXRpYzwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIE5hdGl2 ZVZhbHVlVHJhaXRzPFQ+OjpJbXBsVHlwZT46OnZhbHVlPj4KLSsgIHJlcXVpcmVzIHN0ZDo6aXNf YXJpdGhtZXRpY192PHR5cGVuYW1lIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+OjpJbXBsVHlwZT4KLStz dHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMT3B0aW9uYWw8VD4+Ci0gICAgIDogcHVibGljIE5h dGl2ZVZhbHVlVHJhaXRzQmFzZTx0eXBlbmFtZSBOYXRpdmVWYWx1ZVRyYWl0czxUPjo6SW1wbFR5 cGU+IHsKLSAgIHVzaW5nIEltcGxUeXBlID0gdHlwZW5hbWUgTmF0aXZlVmFsdWVUcmFpdHM8VD46 OkltcGxUeXBlOwotIAotQEAgLTE2NjYsOSArMTYyOCw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRy YWl0czxJRExPcHRpb25hbDxUPiwKLSB9OwotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLXN0 cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExPcHRpb25hbDxUPiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3BvaW50ZXI8Ci0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBOYXRpdmVWYWx1ZVRyYWl0czxUPjo6 SW1wbFR5cGU+Ojp2YWx1ZT4+Ci0rICByZXF1aXJlcyBzdGQ6OmlzX3BvaW50ZXJfdjx0eXBlbmFt ZSBOYXRpdmVWYWx1ZVRyYWl0czxUPjo6SW1wbFR5cGU+Ci0rc3RydWN0IE5hdGl2ZVZhbHVlVHJh aXRzPElETE9wdGlvbmFsPFQ+PgotICAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8 dHlwZW5hbWUgTmF0aXZlVmFsdWVUcmFpdHM8VD46OkltcGxUeXBlPiB7Ci0gICB1c2luZyBJbXBs VHlwZSA9IHR5cGVuYW1lIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+OjpJbXBsVHlwZTsKLSAKCmRpZmYg LS1naXQgYS9jaHJvbWl1bS0xMjItY29uc3RleHByLnBhdGNoIGIvY2hyb21pdW0tMTIyLWNvbnN0 ZXhwci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjgyMDY2Yy4uMDAwMDAw MAotLS0gYS9jaHJvbWl1bS0xMjItY29uc3RleHByLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEs NDUgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvY29tbW9uL3VuaXF1ZV9pZHMuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5 L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9jb21tb24vdW5pcXVlX2lkcy5oCi0tLS0gY2hyb21p dW0tMTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvY29tbW9uL3VuaXF1ZV9p ZHMuaC5tZQkyMDI0LTAyLTEzIDEzOjA3OjI0Ljk4MjE4NDQ4NSArMDEwMAotKysrIGNocm9taXVt LTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2NvbW1vbi91bmlxdWVfaWRz LmgJMjAyNC0wMi0xMyAxMzowNzo0NS41MTA1NTE1ODkgKzAxMDAKLUBAIC0xMzcsNyArMTM3LDcg QEAgc3RydWN0IEdsb2JhbElkIHsKLSAKLSAgIGZyaWVuZCBjb25zdGV4cHIgYXV0byBvcGVyYXRv cjw9Pihjb25zdCBHbG9iYWxJZDxSZW5kZXJlcklkPiYgbGhzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IEdsb2JhbElkPFJlbmRlcmVySWQ+JiByaHMpID0gZGVm YXVsdDsKLS0gIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2JhbElk PFJlbmRlcmVySWQ+JiBsaHMsCi0rICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEdsb2Jh bElkPFJlbmRlcmVySWQ+JiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBHbG9iYWxJZDxSZW5kZXJlcklkPiYgcmhzKSA9IGRlZmF1bHQ7Ci0gfTsKLSAKLWRp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvYmFzZS90eXBlcy9zdHJvbmdfYWxpYXMuaC5t ZSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvdHlwZXMvc3Ryb25nX2FsaWFzLmgKLS0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvdHlwZXMvc3Ryb25nX2FsaWFzLmgubWUJMjAyNC0w Mi0xMyAxNDoxMzoyMC4zMTEzNzQyODggKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5 L2Jhc2UvdHlwZXMvc3Ryb25nX2FsaWFzLmgJMjAyNC0wMi0xMyAxMjozMDozOC41OTY5MTM5NTEg KzAxMDAKLUBAIC0xMTAsNyArMTEwLDcgQEAgY2xhc3MgU3Ryb25nQWxpYXMgewotICAgLy8gYSBg U3Ryb25nQWxpYXM8Vz5gLgotICAgZnJpZW5kIGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yPD0+KGNv bnN0IFN0cm9uZ0FsaWFzJiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgU3Ryb25nQWxpYXMmIHJocykgPSBkZWZhdWx0OwotLSAgZnJpZW5kIGNvbnN0ZXhw ciBib29sIG9wZXJhdG9yPT0oY29uc3QgU3Ryb25nQWxpYXMmIGxocywKLSsgIGZyaWVuZCBib29s IG9wZXJhdG9yPT0oY29uc3QgU3Ryb25nQWxpYXMmIGxocywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IFN0cm9uZ0FsaWFzJiByaHMpID0gZGVmYXVsdDsKLSAKLSAg IC8vIEhhc2hlciB0byB1c2UgaW4gc3RkOjp1bm9yZGVyZWRfbWFwLCBzdGQ6OnVub3JkZXJlZF9z ZXQsIGV0Yy4KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9wZXJm b3JtYW5jZV9tYW5hZ2VyL3Jlc291cmNlX2F0dHJpYnV0aW9uL3F1ZXJ5X3BhcmFtcy5oLmNvbnN0 ZXhwciBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdl ci9yZXNvdXJjZV9hdHRyaWJ1dGlvbi9xdWVyeV9wYXJhbXMuaAotLS0tIGNocm9taXVtLTEyMi4w LjYyNjEuMjkvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3Jlc291cmNlX2F0dHJpYnV0 aW9uL3F1ZXJ5X3BhcmFtcy5oLmNvbnN0ZXhwcgkyMDI0LTAyLTA3IDE5OjQ5OjMxLjAwMDAwMDAw MCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9wZXJmb3JtYW5j ZV9tYW5hZ2VyL3Jlc291cmNlX2F0dHJpYnV0aW9uL3F1ZXJ5X3BhcmFtcy5oCTIwMjQtMDItMTMg MTE6MTI6NTIuOTEzMzM4Njk5ICswMTAwCi1AQCAtMjksNyArMjksNyBAQCBjbGFzcyBDb250ZXh0 Q29sbGVjdGlvbiB7Ci0gICBDb250ZXh0Q29sbGVjdGlvbihjb25zdCBDb250ZXh0Q29sbGVjdGlv biYgb3RoZXIpOwotICAgQ29udGV4dENvbGxlY3Rpb24mIG9wZXJhdG9yPShjb25zdCBDb250ZXh0 Q29sbGVjdGlvbiYgb3RoZXIpOwotIAotLSAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y PT0oY29uc3QgQ29udGV4dENvbGxlY3Rpb24mLAotKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShj b25zdCBDb250ZXh0Q29sbGVjdGlvbiYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBDb250ZXh0Q29sbGVjdGlvbiYpID0gZGVmYXVsdDsKLSAKLSAgIC8vIEFkZHMg YGNvbnRleHRgIHRvIHRoZSBjb2xsZWN0aW9uLgotQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IFF1 ZXJ5UGFyYW1zIHsKLSAgIFF1ZXJ5UGFyYW1zKGNvbnN0IFF1ZXJ5UGFyYW1zJiBvdGhlcik7Ci0g ICBRdWVyeVBhcmFtcyYgb3BlcmF0b3I9KGNvbnN0IFF1ZXJ5UGFyYW1zJiBvdGhlcik7Ci0gCi0t ICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBRdWVyeVBhcmFtcyYsCi0r ICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF1ZXJ5UGFyYW1zJiwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFF1ZXJ5UGFyYW1zJikgPSBkZWZhdWx0Owot IAotICAgLy8gUmVzb3VyY2UgdHlwZXMgdG8gbWVhc3VyZS4KCmRpZmYgLS1naXQgYS9jaHJvbWl1 bS0xMjItZWw3LWRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbi5w YXRjaCBiL2Nocm9taXVtLTEyMi1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5v bnltb3VzLXVuaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTNjZGY4 Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyMi1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZv bHZpbmctYW5vbnltb3VzLXVuaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBA QAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3ZhcmlhdGlvbnMv c2VydmljZS91aV9zdHJpbmdfb3ZlcnJpZGVyLmNjLmRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2 aW5nLWFub255bW91cy11bmlvbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvdmFy aWF0aW9ucy9zZXJ2aWNlL3VpX3N0cmluZ19vdmVycmlkZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbXBvbmVudHMvdmFyaWF0aW9ucy9zZXJ2aWNlL3VpX3N0cmluZ19vdmVycmlk ZXIuY2MuZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uCTIwMjQt MDItMjIgMjI6NDM6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb21wb25lbnRzL3ZhcmlhdGlvbnMvc2VydmljZS91aV9zdHJpbmdfb3ZlcnJpZGVyLmNjCTIw MjQtMDItMjUgMTA6NTI6MTYuMDcxNjAyNTAzICswMTAwCi1AQCAtMTIsNyArMTIsNyBAQAotIAot IG5hbWVzcGFjZSB2YXJpYXRpb25zIHsKLSAKLS1VSVN0cmluZ092ZXJyaWRlcjo6VUlTdHJpbmdP dmVycmlkZXIoKSA9IGRlZmF1bHQ7Ci0rVUlTdHJpbmdPdmVycmlkZXI6OlVJU3RyaW5nT3ZlcnJp ZGVyKCkge30KLSAKLSBVSVN0cmluZ092ZXJyaWRlcjo6VUlTdHJpbmdPdmVycmlkZXIoYmFzZTo6 c3Bhbjxjb25zdCB1aW50MzJfdD4gcmVzb3VyY2VfaGFzaGVzLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBiYXNlOjpzcGFuPGNvbnN0IGludD4gcmVzb3VyY2VfaW5kaWNl cykKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVy ZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5jYy5kZWZhdWx0LWNv bnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxl cl9zaWduYWxzLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv aW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmNjLmRlZmF1 bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbgkyMDI0LTAyLTI1IDEwOjUy OjE2LjA3MDYwMjQ3OCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9i cm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5j YwkyMDI0LTAyLTI1IDExOjIwOjM2LjU4MzE0ODIyNiArMDEwMAotQEAgLTQ2LDcgKzQ2LDcgQEAg c2l6ZV90IEdldFJlc3VsdFNpemVCeXRlcyhjb25zdCBIZWFkZXJEaQotIAotIH0gIC8vIG5hbWVz cGFjZQotIAotLUhlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxzOjpSZXN1bHQ6OlJlc3VsdCgp ID0gZGVmYXVsdDsKLStIZWFkZXJEaXJlY3RGcm9tU2VsbGVyU2lnbmFsczo6UmVzdWx0OjpSZXN1 bHQoKSB7fQotIAotIEhlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxzOjpSZXN1bHQ6OlJlc3Vs dCgKLSAgICAgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gc2VsbGVyX3NpZ25hbHMsCgpkaWZm IC0tZ2l0IGEvY2hyb21pdW0tMTIyLW1pc3NpbmctaGVhZGVyLWZpbGVzLnBhdGNoIGIvY2hyb21p dW0tMTIyLW1pc3NpbmctaGVhZGVyLWZpbGVzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCBhYTZiZDcwLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyMi1taXNzaW5nLWhlYWRl ci1maWxlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi1kaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvY2hlY2tfb3AuaC5taXNzaW5nLWhlYWRlci1maWxl cyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvY2hlY2tfb3AuaAotLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuMjkvYmFzZS9jaGVja19vcC5oLm1pc3NpbmctaGVhZGVyLWZpbGVzCTIwMjQtMDIt MDcgMTk6NDk6MjAuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9i YXNlL2NoZWNrX29wLmgJMjAyNC0wMi0xMiAxNDo1OTo0OC4xMzY0MTUwNjAgKzAxMDAKLUBAIC01 LDYgKzUsNyBAQAotICNpZm5kZWYgQkFTRV9DSEVDS19PUF9IXwotICNkZWZpbmUgQkFTRV9DSEVD S19PUF9IXwotIAotKyNpbmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxjc3RkZGVmPgotICNp bmNsdWRlIDxzdHJpbmc+Ci0gI2luY2x1ZGUgPHN0cmluZ192aWV3PgotZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS4yOS9iYXNlL2NvbnRhaW5lcnMvZmxhdF9tYXAuaC5taXNzaW5nLWhlYWRl ci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvY29udGFpbmVycy9mbGF0X21hcC5o Ci0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9iYXNlL2NvbnRhaW5lcnMvZmxhdF9tYXAuaC5t aXNzaW5nLWhlYWRlci1maWxlcwkyMDI0LTAyLTA3IDE5OjQ5OjIwLjAwMDAwMDAwMCArMDEwMAot KysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvYmFzZS9jb250YWluZXJzL2ZsYXRfbWFwLmgJMjAy NC0wMi0xMiAxNDo1OTo0OC4xMzY0MTUwNjAgKzAxMDAKLUBAIC01LDYgKzUsNyBAQAotICNpZm5k ZWYgQkFTRV9DT05UQUlORVJTX0ZMQVRfTUFQX0hfCi0gI2RlZmluZSBCQVNFX0NPTlRBSU5FUlNf RkxBVF9NQVBfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0ZGludD4KLSAjaW5jbHVkZSA8ZnVuY3Rpb25h bD4KLSAjaW5jbHVkZSA8dHVwbGU+Ci0gI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jaHJvbWUvYnJvd3Nlci93ZWJhdXRobi9hdXRoZW50aWNh dG9yX3JlcXVlc3RfZGlhbG9nX21vZGVsLmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hyb21pdW0t MTIyLjAuNjI2MS4yOS9jaHJvbWUvYnJvd3Nlci93ZWJhdXRobi9hdXRoZW50aWNhdG9yX3JlcXVl c3RfZGlhbG9nX21vZGVsLmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Nocm9tZS9icm93 c2VyL3dlYmF1dGhuL2F1dGhlbnRpY2F0b3JfcmVxdWVzdF9kaWFsb2dfbW9kZWwuaC5taXNzaW5n LWhlYWRlci1maWxlcwkyMDI0LTAyLTEyIDE0OjU5OjQ4LjEzNzQxNTA3OSArMDEwMAotKysrIGNo cm9taXVtLTEyMi4wLjYyNjEuMjkvY2hyb21lL2Jyb3dzZXIvd2ViYXV0aG4vYXV0aGVudGljYXRv cl9yZXF1ZXN0X2RpYWxvZ19tb2RlbC5oCTIwMjQtMDItMTIgMTU6Mjg6MTcuMTY4Mzk1Nzg3ICsw MTAwCi1AQCAtOSw2ICs5LDcgQEAKLSAjaW5jbHVkZSA8b3B0aW9uYWw+Ci0gI2luY2x1ZGUgPHN0 cmluZz4KLSAjaW5jbHVkZSA8dmVjdG9yPgotKyNpbmNsdWRlIDx2YXJpYW50PgotIAotICNpbmNs dWRlICJiYXNlL2NvbnRhaW5lcnMvc3Bhbi5oIgotICNpbmNsdWRlICJiYXNlL2Z1bmN0aW9uYWwv Y2FsbGJhY2tfZm9yd2FyZC5oIgotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jaHJv bWUvdGVzdC9jaHJvbWVkcml2ZXIvY2hyb21lL3dlYl92aWV3X2ltcGwuY2MubWlzc2luZy1oZWFk ZXItZmlsZXMgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jaHJvbWUvdGVzdC9jaHJvbWVkcml2ZXIv Y2hyb21lL3dlYl92aWV3X2ltcGwuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Nocm9t ZS90ZXN0L2Nocm9tZWRyaXZlci9jaHJvbWUvd2ViX3ZpZXdfaW1wbC5jYy5taXNzaW5nLWhlYWRl ci1maWxlcwkyMDI0LTAyLTA3IDE5OjQ5OjI3LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVt LTEyMi4wLjYyNjEuMjkvY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2Nocm9tZS93ZWJfdmlld19p bXBsLmNjCTIwMjQtMDItMTIgMTQ6NTk6NDguMTM3NDE1MDc5ICswMTAwCi1AQCAtMTEsNiArMTEs NyBAQAotICNpbmNsdWRlIDxxdWV1ZT4KLSAjaW5jbHVkZSA8dXRpbGl0eT4KLSAjaW5jbHVkZSA8 dmVjdG9yPgotKyNpbmNsdWRlIDxjc3RyaW5nPgotIAotICNpbmNsdWRlICJiYXNlL2NoZWNrLmgi Ci0gI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV9wYXRoLmgiCi1kaWZmIC11cCBjaHJvbWl1bS0x MjIuMC42MjYxLjI5L2NvbXBvbmVudHMvZmVhdHVyZV9lbmdhZ2VtZW50L2ludGVybmFsL25ldmVy X2V2ZW50X3N0b3JhZ2VfdmFsaWRhdG9yLmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hyb21pdW0t MTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL2ZlYXR1cmVfZW5nYWdlbWVudC9pbnRlcm5hbC9uZXZl cl9ldmVudF9zdG9yYWdlX3ZhbGlkYXRvci5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9j b21wb25lbnRzL2ZlYXR1cmVfZW5nYWdlbWVudC9pbnRlcm5hbC9uZXZlcl9ldmVudF9zdG9yYWdl X3ZhbGlkYXRvci5oLm1pc3NpbmctaGVhZGVyLWZpbGVzCTIwMjQtMDItMDcgMTk6NDk6MzAuMDAw MDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL2ZlYXR1 cmVfZW5nYWdlbWVudC9pbnRlcm5hbC9uZXZlcl9ldmVudF9zdG9yYWdlX3ZhbGlkYXRvci5oCTIw MjQtMDItMTIgMTQ6NTk6NDguMTM4NDE1MDk3ICswMTAwCi1AQCAtNSw2ICs1LDcgQEAKLSAjaWZu ZGVmIENPTVBPTkVOVFNfRkVBVFVSRV9FTkdBR0VNRU5UX0lOVEVSTkFMX05FVkVSX0VWRU5UX1NU T1JBR0VfVkFMSURBVE9SX0hfCi0gI2RlZmluZSBDT01QT05FTlRTX0ZFQVRVUkVfRU5HQUdFTUVO VF9JTlRFUk5BTF9ORVZFUl9FVkVOVF9TVE9SQUdFX1ZBTElEQVRPUl9IXwotIAotKyNpbmNsdWRl IDxjc3RkaW50PgotICNpbmNsdWRlIDxzdHJpbmc+Ci0gCi0gI2luY2x1ZGUgImNvbXBvbmVudHMv ZmVhdHVyZV9lbmdhZ2VtZW50L2ludGVybmFsL2V2ZW50X3N0b3JhZ2VfdmFsaWRhdG9yLmgiCi1k aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2dpbi90aW1lX2NsYW1wZXIuaC5taXNzaW5n LWhlYWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2dpbi90aW1lX2NsYW1wZXIuaAot LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvZ2luL3RpbWVfY2xhbXBlci5oLm1pc3NpbmctaGVh ZGVyLWZpbGVzCTIwMjQtMDItMDcgMTk6NDk6MzUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21p dW0tMTIyLjAuNjI2MS4yOS9naW4vdGltZV9jbGFtcGVyLmgJMjAyNC0wMi0xMiAxNDo1OTo0OC4x Mzg0MTUwOTcgKzAxMDAKLUBAIC00OCw3ICs0OCw3IEBAIGNsYXNzIEdJTl9FWFBPUlQgVGltZUNs YW1wZXIgewotICAgICBjb25zdCBpbnQ2NF90IG1pY3JvcyA9IG5vd19taWNyb3MgJSAxMDAwOwot ICAgICAvLyBhYnMoKSBpcyBuZWNlc3NhcnkgZm9yIGRldmljZXMgd2l0aCB0aW1lcyBiZWZvcmUg dW5peC1lcG9jaCAobW9zdCBsaWtlbHkKLSAgICAgLy8gY29uZmlndXJlZCBpbmNvcnJlY3RseSku Ci0tICAgIGlmIChhYnMobWljcm9zKSArIGtSZXNvbHV0aW9uTWljcm9zIDwgMTAwMCkgewotKyAg ICBpZiAoc3RkOjphYnMobWljcm9zKSArIGtSZXNvbHV0aW9uTWljcm9zIDwgMTAwMCkgewotICAg ICAgIHJldHVybiBub3dfbWljcm9zIC8gMTAwMDsKLSAgICAgfQotICAgICByZXR1cm4gQ2xhbXBU aW1lUmVzb2x1dGlvbihub3dfbWljcm9zKSAvIDEwMDA7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIu MC42MjYxLjI5L25ldC9iYXNlL25ldF9leHBvcnQuaC5taXNzaW5nLWhlYWRlci1maWxlcyBjaHJv bWl1bS0xMjIuMC42MjYxLjI5L25ldC9iYXNlL25ldF9leHBvcnQuaAotLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuMjkvbmV0L2Jhc2UvbmV0X2V4cG9ydC5oLm1pc3NpbmctaGVhZGVyLWZpbGVzCTIw MjQtMDItMDcgMTk6NDk6MzguMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2 MS4yOS9uZXQvYmFzZS9uZXRfZXhwb3J0LmgJMjAyNC0wMi0xMiAxNDo1OTo0OC4xMzk0MTUxMTYg KzAxMDAKLUBAIC01LDYgKzUsOCBAQAotICNpZm5kZWYgTkVUX0JBU0VfTkVUX0VYUE9SVF9IXwot ICNkZWZpbmUgTkVUX0JBU0VfTkVUX0VYUE9SVF9IXwotIAotKyNpbmNsdWRlIDxjc3RkaW50Pgot KwotIC8vIERlZmluZXMgTkVUX0VYUE9SVCBzbyB0aGF0IGZ1bmN0aW9uYWxpdHkgaW1wbGVtZW50 ZWQgYnkgdGhlIG5ldCBtb2R1bGUgY2FuCi0gLy8gYmUgZXhwb3J0ZWQgdG8gY29uc3VtZXJzLCBh bmQgTkVUX0VYUE9SVF9QUklWQVRFIHRoYXQgYWxsb3dzIHVuaXQgdGVzdHMgdG8KLSAvLyBhY2Nl c3MgZmVhdHVyZXMgbm90IGludGVuZGVkIHRvIGJlIHVzZWQgZGlyZWN0bHkgYnkgcmVhbCBjb25z dW1lcnMuCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L2Fic2Vp bC1jcHAvYWJzbC9zdHJpbmdzL3N0cmluZ192aWV3LmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hy b21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9z dHJpbmdfdmlldy5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS9hYnNl aWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oLm1pc3NpbmctaGVhZGVyLWZpbGVzCTIw MjQtMDItMDcgMTk6NDk6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2 MS4yOS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5ncy9zdHJpbmdfdmlldy5oCTIw MjQtMDItMTIgMTQ6NTk6NDguMTQyNDE1MTcyICswMTAwCi1AQCAtMjcsNiArMjcsNyBAQAotICNp Zm5kZWYgQUJTTF9TVFJJTkdTX1NUUklOR19WSUVXX0hfCi0gI2RlZmluZSBBQlNMX1NUUklOR1Nf U1RSSU5HX1ZJRVdfSF8KLSAKLSsjaW5jbHVkZSA8Y3N0ZGludD4KLSAjaW5jbHVkZSA8YWxnb3Jp dGhtPgotICNpbmNsdWRlIDxjYXNzZXJ0PgotICNpbmNsdWRlIDxjc3RkZGVmPgotZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS9kYXduL3NyYy90aW50L2xhbmcvc3Bp cnYvcmVhZGVyL2FzdF9wYXJzZXIvbmFtZXIuaC5taXNzaW5nLWhlYWRlci1maWxlcyBjaHJvbWl1 bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L2Rhd24vc3JjL3RpbnQvbGFuZy9zcGlydi9yZWFk ZXIvYXN0X3BhcnNlci9uYW1lci5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9w YXJ0eS9kYXduL3NyYy90aW50L2xhbmcvc3BpcnYvcmVhZGVyL2FzdF9wYXJzZXIvbmFtZXIuaC5t aXNzaW5nLWhlYWRlci1maWxlcwkyMDI0LTAyLTA3IDE5OjUwOjQ0LjAwMDAwMDAwMCArMDEwMAot KysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvZGF3bi9zcmMvdGludC9sYW5n L3NwaXJ2L3JlYWRlci9hc3RfcGFyc2VyL25hbWVyLmgJMjAyNC0wMi0xMiAxNDo1OTo0OC4xNDI0 MTUxNzIgKzAxMDAKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2lmbmRlZiBTUkNfVElOVF9MQU5HX1NQ SVJWX1JFQURFUl9BU1RfUEFSU0VSX05BTUVSX0hfCi0gI2RlZmluZSBTUkNfVElOVF9MQU5HX1NQ SVJWX1JFQURFUl9BU1RfUEFSU0VSX05BTUVSX0hfCi0gCi0rI2luY2x1ZGUgPGNzdGRpbnQ+Ci0g I2luY2x1ZGUgPHN0cmluZz4KLSAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KLSAjaW5jbHVkZSA8 dmVjdG9yPgotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS9tYXRl cmlhbF9jb2xvcl91dGlsaXRpZXMvc3JjL2NwcC9wYWxldHRlcy90b25lcy5jYy5taXNzaW5nLWhl YWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L21hdGVyaWFsX2Nv bG9yX3V0aWxpdGllcy9zcmMvY3BwL3BhbGV0dGVzL3RvbmVzLmNjCi0tLS0gY2hyb21pdW0tMTIy LjAuNjI2MS4yOS90aGlyZF9wYXJ0eS9tYXRlcmlhbF9jb2xvcl91dGlsaXRpZXMvc3JjL2NwcC9w YWxldHRlcy90b25lcy5jYy5taXNzaW5nLWhlYWRlci1maWxlcwkyMDI0LTAyLTA3IDE5OjUyOjM0 LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkv bWF0ZXJpYWxfY29sb3JfdXRpbGl0aWVzL3NyYy9jcHAvcGFsZXR0ZXMvdG9uZXMuY2MJMjAyNC0w Mi0xMiAxNDo1OTo0OC4xNDM0MTUxOTAgKzAxMDAKLUBAIC0xNCw2ICsxNCw3IEBACi0gICogbGlt aXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gICovCi0gCi0rI2luY2x1ZGUgPGNtYXRoPgot ICNpbmNsdWRlICJjcHAvcGFsZXR0ZXMvdG9uZXMuaCIKLSAKLSAjaW5jbHVkZSAiY3BwL2NhbS9j YW0uaCIKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvcnV5L3Ny Yy9ydXkvcHJvZmlsZXIvaW5zdHJ1bWVudGF0aW9uLmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hy b21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS9ydXkvc3JjL3J1eS9wcm9maWxlci9pbnN0 cnVtZW50YXRpb24uaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvcnV5 L3NyYy9ydXkvcHJvZmlsZXIvaW5zdHJ1bWVudGF0aW9uLmgubWlzc2luZy1oZWFkZXItZmlsZXMJ MjAyNC0wMi0wNyAxOTo1Mjo1OS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42 MjYxLjI5L3RoaXJkX3BhcnR5L3J1eS9zcmMvcnV5L3Byb2ZpbGVyL2luc3RydW1lbnRhdGlvbi5o CTIwMjQtMDItMTIgMTQ6NTk6NDguMTQzNDE1MTkwICswMTAwCi1AQCAtMTcsNiArMTcsNyBAQCBs aW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAjZGVmaW5lIFJVWV9SVVlfUFJPRklMRVJf SU5TVFJVTUVOVEFUSU9OX0hfCi0gCi0gI2lmZGVmIFJVWV9QUk9GSUxFUgotKyNpbmNsdWRlIDxz dHJpbmc+Ci0gI2luY2x1ZGUgPGNzdGRpbz4KLSAjaW5jbHVkZSA8bXV0ZXg+Ci0gI2luY2x1ZGUg PHZlY3Rvcj4KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvc3dp ZnRzaGFkZXIvdGhpcmRfcGFydHkvbGx2bS0xMC4wL2xsdm0vbGliL1N1cHBvcnQvVW5peC9TaWdu YWxzLmluYy5taXNzaW5nLWhlYWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJk X3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9sbHZtL2xpYi9TdXBwb3J0 L1VuaXgvU2lnbmFscy5pbmMKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5 L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9sbHZtL2xpYi9TdXBwb3J0L1VuaXgv U2lnbmFscy5pbmMubWlzc2luZy1oZWFkZXItZmlsZXMJMjAyNC0wMi0wNyAxOTo1NDo0NS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3N3aWZ0 c2hhZGVyL3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvU2lnbmFs cy5pbmMJMjAyNC0wMi0xMiAxNDo1OTo0OC4xNDM0MTUxOTAgKzAxMDAKLUBAIC00NSw2ICs0NSw3 IEBACi0gI2luY2x1ZGUgImxsdm0vU3VwcG9ydC9TYXZlQW5kUmVzdG9yZS5oIgotICNpbmNsdWRl ICJsbHZtL1N1cHBvcnQvcmF3X29zdHJlYW0uaCIKLSAjaW5jbHVkZSA8YWxnb3JpdGhtPgotKyNp bmNsdWRlIDxjc3RkaW50PgotICNpbmNsdWRlIDxzdHJpbmc+Ci0gI2luY2x1ZGUgPHN5c2V4aXRz Lmg+Ci0gI2lmZGVmIEhBVkVfQkFDS1RSQUNFCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjI5L3RoaXJkX3BhcnR5L3RmbGl0ZS9zcmMvdGVuc29yZmxvdy9saXRlL2tlcm5lbHMvaW50ZXJu YWwvc3BlY3Ryb2dyYW0uaC5taXNzaW5nLWhlYWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYx LjI5L3RoaXJkX3BhcnR5L3RmbGl0ZS9zcmMvdGVuc29yZmxvdy9saXRlL2tlcm5lbHMvaW50ZXJu YWwvc3BlY3Ryb2dyYW0uaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkv dGZsaXRlL3NyYy90ZW5zb3JmbG93L2xpdGUva2VybmVscy9pbnRlcm5hbC9zcGVjdHJvZ3JhbS5o Lm1pc3NpbmctaGVhZGVyLWZpbGVzCTIwMjQtMDItMDcgMTk6NTM6MTcuMDAwMDAwMDAwICswMTAw Ci0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS90ZmxpdGUvc3JjL3RlbnNv cmZsb3cvbGl0ZS9rZXJuZWxzL2ludGVybmFsL3NwZWN0cm9ncmFtLmgJMjAyNC0wMi0xMiAxNDo1 OTo0OC4xNDM0MTUxOTAgKzAxMDAKLUBAIC0zMSw2ICszMSw3IEBAIGxpbWl0YXRpb25zIHVuZGVy IHRoZSBMaWNlbnNlLgotICNpZm5kZWYgVEVOU09SRkxPV19MSVRFX0tFUk5FTFNfSU5URVJOQUxf U1BFQ1RST0dSQU1fSF8KLSAjZGVmaW5lIFRFTlNPUkZMT1dfTElURV9LRVJORUxTX0lOVEVSTkFM X1NQRUNUUk9HUkFNX0hfCi0gCi0rI2luY2x1ZGUgPGNzdGRpbnQ+Ci0gI2luY2x1ZGUgPGNvbXBs ZXg+Ci0gI2luY2x1ZGUgPGRlcXVlPgotICNpbmNsdWRlIDx2ZWN0b3I+Ci1kaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3Z1bGthbi1kZXBzL3Z1bGthbi12YWxpZGF0 aW9uLWxheWVycy9zcmMvbGF5ZXJzL2V4dGVybmFsL3ZtYS92a19tZW1fYWxsb2MuaC5taXNzaW5n LWhlYWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3Z1bGthbi1k ZXBzL3Z1bGthbi12YWxpZGF0aW9uLWxheWVycy9zcmMvbGF5ZXJzL2V4dGVybmFsL3ZtYS92a19t ZW1fYWxsb2MuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvdnVsa2Fu LWRlcHMvdnVsa2FuLXZhbGlkYXRpb24tbGF5ZXJzL3NyYy9sYXllcnMvZXh0ZXJuYWwvdm1hL3Zr X21lbV9hbGxvYy5oLm1pc3NpbmctaGVhZGVyLWZpbGVzCTIwMjQtMDItMDcgMTk6NTQ6MjAuMDAw MDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS92dWxr YW4tZGVwcy92dWxrYW4tdmFsaWRhdGlvbi1sYXllcnMvc3JjL2xheWVycy9leHRlcm5hbC92bWEv dmtfbWVtX2FsbG9jLmgJMjAyNC0wMi0xMiAxNDo1OTo0OC4xNDU0MTUyMjggKzAxMDAKLUBAIC0y ODg0LDYgKzI4ODQsNyBAQCBzdGF0aWMgdm9pZCB2bWFfYWxpZ25lZF9mcmVlKHZvaWQqIFZNQV9O Ci0gCi0gLy8gRGVmaW5lIHRoaXMgbWFjcm8gdG8gMSB0byBlbmFibGUgZnVuY3Rpb25zOiB2bWFC dWlsZFN0YXRzU3RyaW5nLCB2bWFGcmVlU3RhdHNTdHJpbmcuCi0gI2lmIFZNQV9TVEFUU19TVFJJ TkdfRU5BQkxFRAotKyNpbmNsdWRlIDxzdGRpby5oPgotICAgICBzdGF0aWMgaW5saW5lIHZvaWQg Vm1hVWludDMyVG9TdHIoY2hhciogVk1BX05PVF9OVUxMIG91dFN0ciwgc2l6ZV90IHN0ckxlbiwg dWludDMyX3QgbnVtKQotICAgICB7Ci0gICAgICAgICBzbnByaW50ZihvdXRTdHIsIHN0ckxlbiwg IiV1Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihudW0pKTsKLWRpZmYgLXVwIGNocm9taXVt LTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvd2VicnRjL2F1ZGlvL3V0aWxpdHkvY2hhbm5lbF9t aXhlci5jYy5taXNzaW5nLWhlYWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJk X3BhcnR5L3dlYnJ0Yy9hdWRpby91dGlsaXR5L2NoYW5uZWxfbWl4ZXIuY2MKLS0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9hdWRpby91dGlsaXR5L2NoYW5uZWxf bWl4ZXIuY2MubWlzc2luZy1oZWFkZXItZmlsZXMJMjAyNC0wMi0wNyAxOTo1MzoxNy4wMDAwMDAw MDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9h dWRpby91dGlsaXR5L2NoYW5uZWxfbWl4ZXIuY2MJMjAyNC0wMi0xMiAxNDo1OTo0OC4xNDU0MTUy MjggKzAxMDAKLUBAIC04LDYgKzgsOCBAQAotICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBm aWxlIGluIHRoZSByb290IG9mIHRoZSBzb3VyY2UgdHJlZS4KLSAgKi8KLSAKLSsjaW5jbHVkZSA8 Y3N0cmluZz4KLSsKLSAjaW5jbHVkZSAiYXVkaW8vdXRpbGl0eS9jaGFubmVsX21peGVyLmgiCi0g Ci0gI2luY2x1ZGUgImF1ZGlvL3V0aWxpdHkvY2hhbm5lbF9taXhpbmdfbWF0cml4LmgiCi1kaWZm IC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2lu Y2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaC5taXNzaW5nLWhlYWRlci1maWxlcyBj aHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUv bW9kdWxlX2NvbW1vbl90eXBlc19wdWJsaWMuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkv dGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1 YmxpYy5oLm1pc3NpbmctaGVhZGVyLWZpbGVzCTIwMjQtMDItMDcgMTk6NTM6MTcuMDAwMDAwMDAw ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS93ZWJydGMvbW9k dWxlcy9pbmNsdWRlL21vZHVsZV9jb21tb25fdHlwZXNfcHVibGljLmgJMjAyNC0wMi0xMiAxNDo1 OTo0OC4xNDU0MTUyMjggKzAxMDAKLUBAIC0xMSw2ICsxMSw3IEBACi0gI2lmbmRlZiBNT0RVTEVT X0lOQ0xVREVfTU9EVUxFX0NPTU1PTl9UWVBFU19QVUJMSUNfSF8KLSAjZGVmaW5lIE1PRFVMRVNf SU5DTFVERV9NT0RVTEVfQ09NTU9OX1RZUEVTX1BVQkxJQ19IXwotIAotKyNpbmNsdWRlIDxjc3Rk aW50PgotICNpbmNsdWRlIDxsaW1pdHM+Ci0gCi0gI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9u YWwuaCIKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdWkvZ2Z4L2xpbnV4L2RybV91 dGlsX2xpbnV4LmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS91 aS9nZngvbGludXgvZHJtX3V0aWxfbGludXguaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkv dWkvZ2Z4L2xpbnV4L2RybV91dGlsX2xpbnV4LmgubWlzc2luZy1oZWFkZXItZmlsZXMJMjAyNC0w Mi0wNyAxOTo1MDowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5 L3VpL2dmeC9saW51eC9kcm1fdXRpbF9saW51eC5oCTIwMjQtMDItMTIgMTQ6NTk6NDguMTQ3NDE1 MjY1ICswMTAwCi1AQCAtOSw2ICs5LDggQEAKLSAKLSAjaW5jbHVkZSAidWkvZ2Z4L2J1ZmZlcl90 eXBlcy5oIgotIAotKyNpbmNsdWRlIDxjc3RkaW50PgotKwotIG5hbWVzcGFjZSB1aSB7Ci0gCi0g aW50IEdldEZvdXJDQ0Zvcm1hdEZyb21CdWZmZXJGb3JtYXQoZ2Z4OjpCdWZmZXJGb3JtYXQgZm9y bWF0KTsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjItbm9fbWF0Y2hpbmdfY29uc3RydWN0b3Iu cGF0Y2ggYi9jaHJvbWl1bS0xMjItbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4ZWZlOTAuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0t MTIyLW5vX21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEx NiArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvbWV0cmljcy9w ZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MKLS0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9h bGxvY2F0b3IuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjQzLjAwMDAwMDAwMCArMDEwMAotKysr IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFt X2FsbG9jYXRvci5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NDUwMzczNSArMDEwMAotQEAgLTIx OCwxMyArMjE4LDEzIEBAIFBlcnNpc3RlbnRTcGFyc2VIaXN0b2dyYW1EYXRhTWFuYWdlcjo6TG8K LSAgICAgLy8gVGhlIHNhbXBsZS1yZWNvcmQgY291bGQgYmUgZm9yIGFueSBzcGFyc2UgaGlzdG9n cmFtLiBBZGQgdGhlIHJlZmVyZW5jZQotICAgICAvLyB0byB0aGUgYXBwcm9wcmlhdGUgY29sbGVj dGlvbiBmb3IgbGF0ZXIgdXNlLgotICAgICBpZiAoZm91bmRfaWQgPT0gbWF0Y2hfaWQpIHsKLS0g ICAgICBmb3VuZF9yZWNvcmRzLmVtcGxhY2VfYmFjayhyZWYsIHZhbHVlKTsKLSsgICAgICBmb3Vu ZF9yZWNvcmRzLmVtcGxhY2VfYmFjaygpID0ge3JlZiwgdmFsdWV9OwotICAgICAgIGZvdW5kID0g dHJ1ZTsKLSAgICAgfSBlbHNlIHsKLSAgICAgICBzdGQ6OnZlY3RvcjxSZWZlcmVuY2VBbmRTYW1w bGU+KiBzYW1wbGVzID0KLSAgICAgICAgICAgR2V0U2FtcGxlTWFwUmVjb3Jkc1doaWxlTG9ja2Vk KGZvdW5kX2lkKTsKLSAgICAgICBDSEVDSyhzYW1wbGVzKTsKLS0gICAgICBzYW1wbGVzLT5lbXBs YWNlX2JhY2socmVmLCB2YWx1ZSk7Ci0rICAgICAgc2FtcGxlcy0+ZW1wbGFjZV9iYWNrKCkgPSB7 cmVmLCB2YWx1ZX07Ci0gICAgIH0KLSAgIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvYmFzZS9uaXgvbWltZV91dGlsX3hkZy5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvYmFzZS9uaXgvbWltZV91dGlsX3hkZy5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv YmFzZS9uaXgvbWltZV91dGlsX3hkZy5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NDMuMDAwMDAw MDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0aWxf eGRnLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTU4NzEyNzU2ICswMTAwCi1AQCAtNTYsNyArNTYs NyBAQCB2b2lkIExvYWRBbGxNaW1lQ2FjaGVGaWxlcyhNaW1lVHlwZU1hcCYKLSAgIGZvciAoY29u c3QgYXV0byYgcGF0aCA6IEdldFhER0RhdGFTZWFyY2hMb2NhdGlvbnMoZW52LmdldCgpKSkgewot ICAgICBGaWxlUGF0aCBtaW1lX2NhY2hlID0gcGF0aC5BcHBlbmQoIm1pbWUvbWltZS5jYWNoZSIp OwotICAgICBpZiAoR2V0RmlsZUluZm8obWltZV9jYWNoZSwgJmluZm8pICYmIFBhcnNlTWltZVR5 cGVzKG1pbWVfY2FjaGUsIG1hcCkpIHsKLS0gICAgICBmaWxlcy5lbXBsYWNlX2JhY2sobWltZV9j YWNoZSwgaW5mby5sYXN0X21vZGlmaWVkKTsKLSsgICAgICBmaWxlcy5lbXBsYWNlX2JhY2soKSA9 IHttaW1lX2NhY2hlLCBpbmZvLmxhc3RfbW9kaWZpZWR9OwotICAgICB9Ci0gICB9Ci0gfQotZGlm ZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5j Yy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cu Y2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9n LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjCTIwMjQtMDItMjQg MTM6MTM6MzIuNDg0NTAzNzM1ICswMTAwCi1AQCAtMjE5OCw4ICsyMTk4LDggQEAgdm9pZCBUcmFj ZUxvZzo6U2V0VHJhY2VCdWZmZXJGb3JUZXN0aW5nKAotICNpZiBCVUlMREZMQUcoVVNFX1BFUkZF VFRPX0NMSUVOVF9MSUJSQVJZKQotIHZvaWQgVHJhY2VMb2c6Ok9uU2V0dXAoY29uc3QgcGVyZmV0 dG86OkRhdGFTb3VyY2VCYXNlOjpTZXR1cEFyZ3MmIGFyZ3MpIHsKLSAgIEF1dG9Mb2NrIGxvY2so dHJhY2tfZXZlbnRfbG9ja18pOwotLSAgdHJhY2tfZXZlbnRfc2Vzc2lvbnNfLmVtcGxhY2VfYmFj ayhhcmdzLmludGVybmFsX2luc3RhbmNlX2luZGV4LCAqYXJncy5jb25maWcsCi0tICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MuYmFja2VuZF90eXBlKTsKLSsgIHRyYWNr X2V2ZW50X3Nlc3Npb25zXy5lbXBsYWNlX2JhY2soKSA9IHthcmdzLmludGVybmFsX2luc3RhbmNl X2luZGV4LCAqYXJncy5jb25maWcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFyZ3MuYmFja2VuZF90eXBlfTsKLSB9Ci0gCi0gdm9pZCBUcmFjZUxvZzo6T25TdGFydChj b25zdCBwZXJmZXR0bzo6RGF0YVNvdXJjZUJhc2U6OlN0YXJ0QXJncyYpIHsKLWRpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5ncy9vbmVf dGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlk ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2NvbnRlbnRf c2V0dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYy50aGFuCTIwMjQtMDItMjIg MjI6NDI6NTAuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJv bWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIu Y2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODU1MDM3NTIgKzAxMDAKLUBAIC0yNTIsOCArMjUyLDgg QEAgdm9pZCBPbmVUaW1lUGVybWlzc2lvblByb3ZpZGVyOjpPblN1c3BlbgotIAotICAgICAgIHdo aWxlIChydWxlX2l0ZXJhdG9yICYmIHJ1bGVfaXRlcmF0b3ItPkhhc05leHQoKSkgewotICAgICAg ICAgYXV0byBydWxlID0gcnVsZV9pdGVyYXRvci0+TmV4dCgpOwotLSAgICAgICAgcGF0dGVybnNf dG9fZGVsZXRlLmVtcGxhY2VfYmFjayhzZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVy biwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS0+c2Vjb25k YXJ5X3BhdHRlcm4pOwotKyAgICAgICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFjaygp ID0ge3NldHRpbmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybn07Ci0gICAg ICAgICBwZXJtaXNzaW9uczo6UGVybWlzc2lvblVtYVV0aWw6OlJlY29yZE9uZVRpbWVQZXJtaXNz aW9uRXZlbnQoCi0gICAgICAgICAgICAgc2V0dGluZ190eXBlLAotICAgICAgICAgICAgIHBlcm1p c3Npb25zOjpPbmVUaW1lUGVybWlzc2lvbkV2ZW50OjpFWFBJUkVEX09OX1NVU1BFTkQpOwotQEAg LTM1NSw4ICszNTUsOCBAQCB2b2lkIE9uZVRpbWVQZXJtaXNzaW9uUHJvdmlkZXI6OkRlbGV0ZUVu Ci0gICAgIGF1dG8gcnVsZSA9IHJ1bGVfaXRlcmF0b3ItPk5leHQoKTsKLSAgICAgaWYgKHJ1bGUt PnByaW1hcnlfcGF0dGVybi5NYXRjaGVzKG9yaWdpbl9ndXJsKSAmJgotICAgICAgICAgcnVsZS0+ c2Vjb25kYXJ5X3BhdHRlcm4uTWF0Y2hlcyhvcmlnaW5fZ3VybCkpIHsKLS0gICAgICBwYXR0ZXJu c190b19kZWxldGUuZW1wbGFjZV9iYWNrKAotLSAgICAgICAgICBjb250ZW50X3NldHRpbmdfdHlw ZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLCBydWxlLT5zZWNvbmRhcnlfcGF0dGVybik7Ci0rICAg ICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFjaygpID0gewotKyAgICAgICAgICBjb250 ZW50X3NldHRpbmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLCBydWxlLT5zZWNvbmRhcnlf cGF0dGVybn07Ci0gICAgICAgcGVybWlzc2lvbnM6OlBlcm1pc3Npb25VbWFVdGlsOjpSZWNvcmRP bmVUaW1lUGVybWlzc2lvbkV2ZW50KAotICAgICAgICAgICBjb250ZW50X3NldHRpbmdfdHlwZSwg dHJpZ2dlcl9ldmVudCk7Ci0gICAgIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5h Z2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFu YWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxlLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21h bmFnZW1lbnRfbmF2aWdhdGlvbl90aHJvdHRsZS5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTAu MDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nl ci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdh dGlvbl90aHJvdHRsZS5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NTUwMzc1MiArMDEwMAotQEAg LTY3LDggKzY3LDggQEAgYmFzZTo6ZmxhdF9tYXA8c3RkOjpzdHJpbmcsIFNBTUxQcm9maWxlQQot ICAgLy8gVE9ETyhjcmJ1Zy5jb20vMTQ0NTA3Mik6IEFkZCBhY3R1YWwgZG9tYWlucyB3aXRoIGF0 dHJpYnV0ZSBuYW1lcy4KLSAgIHByb2ZpbGVfYXR0cmlidXRlcy0+aW5zZXJ0KHN0ZDo6bWFrZV9w YWlyKAotICAgICAgICJzdXBwb3J0ZWQudGVzdCIsCi0tICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1 dGVzKCJwbGFjZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiIpKSk7Ci0rICAgICAgU0FNTFByb2Zp bGVBdHRyaWJ1dGVzeyJwbGFjZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiJ9KSk7Ci0gCi0gICAv LyBFeHRyYWN0IGRvbWFpbnMgYW5kIGF0dHJpYnV0ZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHN3 aXRjaC4KLSAgIGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjb21tYW5kX2xpbmUgPQotZGlmZiAt dXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRv ZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIu Y2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL2F1dG9maWxs L2F1dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1 NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93 c2VyL3VpL2F1dG9maWxsL2F1dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjCTIwMjQtMDIt MjQgMTM6MTM6NDQuMTU5NzEyNzc0ICswMTAwCi1AQCAtMjgzLDggKzI4Myw4IEBAIHZvaWQgQXV0 b2ZpbGxDb250ZXh0TWVudU1hbmFnZXI6OkV4ZWN1dGUKLSAgICAgQXV0b2ZpbGxNYW5hZ2VyJiBt YW5hZ2VyKSB7Ci0gICBhdXRvJiBkcml2ZXIgPSBzdGF0aWNfY2FzdDxDb250ZW50QXV0b2ZpbGxE cml2ZXImPihtYW5hZ2VyLmRyaXZlcigpKTsKLSAgIGRyaXZlci5icm93c2VyX2V2ZW50cygpLlJl bmRlcmVyU2hvdWxkVHJpZ2dlclN1Z2dlc3Rpb25zKAotLSAgICAgIEZpZWxkR2xvYmFsSWQoZHJp dmVyLkdldEZyYW1lVG9rZW4oKSwKLS0gICAgICAgICAgICAgICAgICAgIEZpZWxkUmVuZGVyZXJJ ZChwYXJhbXNfLmZpZWxkX3JlbmRlcmVyX2lkKSksCi0rICAgICAgRmllbGRHbG9iYWxJZHtkcml2 ZXIuR2V0RnJhbWVUb2tlbigpLAotKyAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklk KHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQpfSwKLSAgICAgICBBdXRvZmlsbFN1Z2dlc3Rpb25U cmlnZ2VyU291cmNlOjprTWFudWFsRmFsbGJhY2tQYXltZW50cyk7Ci0gfQotIAotZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9v bW5pYm94X2NsaWVudC5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvdWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9jbGllbnQuY2MKLS0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hfY2xpZW50 LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hf Y2xpZW50LmNjCTIwMjQtMDItMjQgMTM6MTM6MzIuNDg1NTAzNzUyICswMTAwCi1AQCAtNDc0LDEw ICs0NzQsMTAgQEAgdm9pZCBDaHJvbWVPbW5pYm94Q2xpZW50OjpPbkF1dG9jb21wbGV0ZQotICAg ICAgICAgICAgICAgYWx0ZXJuYXRpdmVfbmF2X21hdGNoKTsKLSAKLSAgIC8vIFN0b3JlIHRoZSBk ZXRhaWxzIG5lY2Vzc2FyeSB0byBvcGVuIHRoZSBvbW5pYm94IG1hdGNoIHZpYSBicm93c2VyIGNv bW1hbmRzLgotLSAgbG9jYXRpb25fYmFyXy0+c2V0X25hdmlnYXRpb25fcGFyYW1zKExvY2F0aW9u QmFyOjpOYXZpZ2F0aW9uUGFyYW1zKAotKyAgbG9jYXRpb25fYmFyXy0+c2V0X25hdmlnYXRpb25f cGFyYW1zKExvY2F0aW9uQmFyOjpOYXZpZ2F0aW9uUGFyYW1zewotICAgICAgIGRlc3RpbmF0aW9u X3VybCwgZGlzcG9zaXRpb24sIHRyYW5zaXRpb24sIG1hdGNoX3NlbGVjdGlvbl90aW1lc3RhbXAs Ci0gICAgICAgZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aG91dF9zY2hlbWUsCi0tICAgICAg ZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aF9odHRwX3NjaGVtZSkpOwotKyAgICAgIGRlc3Rp bmF0aW9uX3VybF9lbnRlcmVkX3dpdGhfaHR0cF9zY2hlbWV9KTsKLSAKLSAgIGlmIChicm93c2Vy XykgewotICAgICBhdXRvIG5hdmlnYXRpb24gPSBjaHJvbWU6Ok9wZW5DdXJyZW50VVJMKGJyb3dz ZXJfKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkv c2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmNjLnRoYW4gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0aW9u X3NlcnZpY2UuY2MKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3Zp ZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdz L3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Fza192aWV3LmNjCi0tLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9u cy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYy50aGFuCTIwMjQtMDItMjIg MjI6NDI6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21w dF9hc2tfdmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NjUwMzc3MCArMDEwMAotQEAgLTYw LDEyICs2MCwxMiBAQCBzdGQ6OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRBc2tWCi0g RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0QXNrVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24o KSBjb25zdCB7Ci0gICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwot ICAgaWYgKGJhc2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJsZWQocGVybWlzc2lvbnM6OmZlYXR1cmVz OjprT25lVGltZVBlcm1pc3Npb24pKSB7Ci0tICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAotKyAg ICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICAgbDEwbl91dGlsOjpHZXRTdHJp bmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPV19USElTX1RJTUUpLAotLSAgICAgICAgQnV0dG9u VHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsKTsKLSsgICAgICAg IEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07Ci0g ICB9Ci0tICBidXR0b25zLmVtcGxhY2VfYmFjayhsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElE U19QRVJNSVNTSU9OX0FMTE9XKSwKLS0gICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6 OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd0lkKTsKLSsgIGJ1dHRvbnMu ZW1wbGFjZV9iYWNrKCkgPSB7bDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lP Tl9BTExPVyksCi0rICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprQWxsb3csIHVp OjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dJZH07Ci0gICByZXR1cm4gYnV0dG9uczsKLSB9 Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3Zp ZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oLnRo YW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNz aW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3ZpZXcuaAotLS0tIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRk ZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3LmgudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1 LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92 aWV3LmgJMjAyNC0wMi0yNCAxMzoxMzozMi40ODY1MDM3NzAgKzAxMDAKLUBAIC04Nyw2ICs4Nyw3 IEBAIGNsYXNzIEVtYmVkZGVkUGVybWlzc2lvblByb21wdEJhc2VWaWV3IDoKLSAgIHN0cnVjdCBS ZXF1ZXN0TGluZUNvbmZpZ3VyYXRpb24gewotICAgICBjb25zdCByYXdfcHRyPGNvbnN0IGdmeDo6 VmVjdG9ySWNvbj4gaWNvbjsKLSAgICAgc3RkOjp1MTZzdHJpbmcgbWVzc2FnZTsKLSsgICAgUmVx dWVzdExpbmVDb25maWd1cmF0aW9uKGF1dG8gaSwgYXV0byBtKSA6IGljb24oaSksIG1lc3NhZ2Uo bSkgeyB9Ci0gICB9OwotIAotICAgc3RydWN0IEJ1dHRvbkNvbmZpZ3VyYXRpb24gewotZGlmZiAt dXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNz aW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmlldy5jYy50aGFuIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1i ZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2MKLS0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Bl cm1pc3Npb25fcHJvbXB0X3BvbGljeV92aWV3LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1NS4w MDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2Vy L3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3BvbGljeV92 aWV3LmNjCTIwMjQtMDItMjQgMTM6MTM6MzIuNDg2NTAzNzcwICswMTAwCi1AQCAtNjQsOCArNjQs OCBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3OjpHZXRSCi0gc3RkOjp2ZWN0 b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6QnV0dG9uQ29uZmlndXJhdGlv bj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3OjpHZXRCdXR0b25zQ29uZmln dXJhdGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1 dHRvbnM7Ci0tICBidXR0b25zLmVtcGxhY2VfYmFjayhsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2 KElEU19FTUJFRERFRF9QUk9NUFRfT0tfTEFCRUwpLAotLSAgICAgICAgICAgICAgICAgICAgICAg QnV0dG9uVHlwZTo6a1BvbGljeU9LLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCk7Ci0rICBidXR0 b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVE REVEX1BST01QVF9PS19MQUJFTCksCi0rICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25UeXBl OjprUG9saWN5T0ssIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAgIHJldHVybiBidXR0b25z OwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNs eV9kZW5pZWRfdmlldy5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlv dXNseV9kZW5pZWRfdmlldy5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJl dmlvdXNseV9kZW5pZWRfdmlldy5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTUuMDAwMDAwMDAw ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3 cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2Rlbmll ZF92aWV3LmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCi1AQCAtNzksMTcg Kzc5LDE3IEBAIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlEZW5pZWQKLSBzdGQ6 OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5RGVuaWVkVmlldzo6QnV0 dG9uQ29uZmlndXJhdGlvbj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5RGVu aWVkVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7Ci0gICBzdGQ6OnZlY3Rv cjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2so Ci0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3Ry aW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9DT05USU5VRV9OT1RfQUxMT1dJTkcpLAotLSAg ICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZU5vdEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCk7Ci0rICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlTm90QWxsb3dpbmcsIHVpOjpCdXR0 b25TdHlsZTo6a1RvbmFsfTsKLSAKLSAgIGlmIChiYXNlOjpGZWF0dXJlTGlzdDo6SXNFbmFibGVk KHBlcm1pc3Npb25zOjpmZWF0dXJlczo6a09uZVRpbWVQZXJtaXNzaW9uKSkgewotLSAgICBidXR0 b25zLmVtcGxhY2VfYmFjaygKLSsgICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAg ICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1dfVEhJU19U SU1FKSwKLS0gICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5 bGU6OmtUb25hbCwga0FsbG93VGhpc1RpbWVJZCk7Ci0rICAgICAgICBCdXR0b25UeXBlOjprQWxs b3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd1RoaXNUaW1lSWR9Owot ICAgfSBlbHNlIHsKLS0gICAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGlsOjpHZXRTdHJp bmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCi0tICAgICAgICAgICAgICAgICAgICAgICAg IEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOwotKyAgICBidXR0 b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1J U1NJT05fQUxMT1cpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprQWxs b3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAgIH0KLSAgIHJldHVybiBidXR0b25zOwot IH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmll d3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9ncmFu dGVkX3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3Vp L3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlf Z3JhbnRlZF92aWV3LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nl ci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91 c2x5X2dyYW50ZWRfdmlldy5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTUuMDAwMDAwMDAwICsw MTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9w ZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRf dmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyArMDEwMAotQEAgLTc0LDEyICs3 NCwxMiBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5R3JhbnRlCi0gc3RkOjp2 ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseUdyYW50ZWRWaWV3OjpCdXR0 b25Db25maWd1cmF0aW9uPgotIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlHcmFu dGVkVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7Ci0gICBzdGQ6OnZlY3Rv cjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2so Ci0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3Ry aW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9DT05USU5VRV9BTExPV0lORyksCi0tICAgICAg QnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsKTsK LSsgICAgICBCdXR0b25UeXBlOjprQ29udGludWVBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjpr VG9uYWx9OwotIAotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCi0rICBidXR0b25zLmVtcGxhY2Vf YmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVE X1BST01QVF9TVE9QX0FMTE9XSU5HKSwKLS0gICAgICBCdXR0b25UeXBlOjprU3RvcEFsbG93aW5n LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga1N0b3BBbGxvd2luZ0lkKTsKLSsgICAgICBCdXR0 b25UeXBlOjprU3RvcEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga1N0b3BBbGxv d2luZ0lkfTsKLSAgIHJldHVybiBidXR0b25zOwotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19zZXJ2 aWNlX2ltcGwuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3Vp L3dlYl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBsLmNjCi0tLS0gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25zL3N1Yl9hcHBz X3NlcnZpY2VfaW1wbC5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTUuMDAwMDAwMDAwICswMTAw Ci0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBwbGlj YXRpb25zL3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1OTcx Mjc3NCArMDEwMAotQEAgLTEwMiw3ICsxMDIsNyBAQCBBZGRPcHRpb25zRnJvbU1vam8oCi0gICAg ICAgICAgICAgICAgICAgICAgQ29udmVydFBhdGhUb1VybChzdWJfYXBwLT5tYW5pZmVzdF9pZF9w YXRoLCBvcmlnaW4pKTsKLSAgICAgQVNTSUdOX09SX1JFVFVSTihHVVJMIGluc3RhbGxfdXJsLAot ICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+aW5zdGFsbF91 cmxfcGF0aCwgb3JpZ2luKSk7Ci0tICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUo bWFuaWZlc3RfaWQpLCBzdGQ6Om1vdmUoaW5zdGFsbF91cmwpKTsKLSsgICAgc3ViX2FwcHMuZW1w bGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKG1hbmlmZXN0X2lkKSwgc3RkOjptb3ZlKGluc3RhbGxf dXJsKX07Ci0gICB9Ci0gICByZXR1cm4gc3ViX2FwcHM7Ci0gfQotQEAgLTM5MSw3ICszOTEsNyBA QCB2b2lkIFN1YkFwcHNTZXJ2aWNlSW1wbDo6U2NoZWR1bGVTdWJBcHBJCi0gICAgICAgICBiYXNl OjpCaW5kT25jZSgKLSAgICAgICAgICAgICBbXSh3ZWJhcHBzOjpNYW5pZmVzdElkIG1hbmlmZXN0 X2lkLCBjb25zdCB3ZWJhcHBzOjpBcHBJZCYgYXBwX2lkLAotICAgICAgICAgICAgICAgIHdlYmFw cHM6Okluc3RhbGxSZXN1bHRDb2RlIHJlc3VsdF9jb2RlKSB7Ci0tICAgICAgICAgICAgICByZXR1 cm4gU3ViQXBwSW5zdGFsbFJlc3VsdChtYW5pZmVzdF9pZCwgYXBwX2lkLCByZXN1bHRfY29kZSk7 Ci0rICAgICAgICAgICAgICByZXR1cm4gU3ViQXBwSW5zdGFsbFJlc3VsdHttYW5pZmVzdF9pZCwg YXBwX2lkLCByZXN1bHRfY29kZX07Ci0gICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICBtYW5p ZmVzdF9pZCkKLSAgICAgICAgICAgICAuVGhlbihpbnN0YWxsX3Jlc3VsdHNfY29sbGVjdG9yKSk7 Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZl ci9jYXBhYmlsaXRpZXMuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90ZXN0 L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MudGhhbgkyMDI0LTAyLTIy IDIyOjQyOjU2LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hy b21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMy LjQ4NjUwMzc3MCArMDEwMAotQEAgLTM0Niw3ICszNDYsNyBAQCBTdGF0dXMgUGFyc2VNb2JpbGVF bXVsYXRpb24oY29uc3QgYmFzZTo6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIid2ZXJzaW9u JyBmaWVsZCBvZiB0eXBlIHN0cmluZyIpOwotICAgICAgICAgfQotIAotLSAgICAgICAgYnJhbmRz LmVtcGxhY2VfYmFjaygqYnJhbmQsICp2ZXJzaW9uKTsKLSsgICAgICAgIGJyYW5kcy5lbXBsYWNl X2JhY2soKSA9IHsqYnJhbmQsICp2ZXJzaW9ufTsKLSAgICAgICB9Ci0gCi0gICAgICAgY2xpZW50 X2hpbnRzLmJyYW5kcyA9IHN0ZDo6bW92ZShicmFuZHMpOwotQEAgLTM4NCw3ICszODQsNyBAQCBT dGF0dXMgUGFyc2VNb2JpbGVFbXVsYXRpb24oY29uc3QgYmFzZTo6Ci0gICAgICAgICAgICAgICAg ICAgICAgICAgImEgJ3ZlcnNpb24nIGZpZWxkIG9mIHR5cGUgc3RyaW5nIik7Ci0gICAgICAgICB9 Ci0gCi0tICAgICAgICBmdWxsX3ZlcnNpb25fbGlzdC5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVy c2lvbik7Ci0rICAgICAgICBmdWxsX3ZlcnNpb25fbGlzdC5lbXBsYWNlX2JhY2soKSA9IHsqYnJh bmQsICp2ZXJzaW9ufTsKLSAgICAgICB9Ci0gCi0gICAgICAgY2xpZW50X2hpbnRzLmZ1bGxfdmVy c2lvbl9saXN0ID0gc3RkOjptb3ZlKGZ1bGxfdmVyc2lvbl9saXN0KTsKLWRpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nl ci9wYXNzd29yZF9tYW5hZ2VyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25l bnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MKLS0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3Jl L2Jyb3dzZXIvcGFzc3dvcmRfbWFuYWdlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDIuMDAw MDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bhc3N3 b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MJMjAyNC0wMi0yNCAx MzoxMzo0NC4xNTQ3MTI2ODUgKzAxMDAKLUBAIC02NzMsNyArNjczLDcgQEAgdm9pZCBQYXNzd29y ZE1hbmFnZXI6Ok9uVXNlck1vZGlmaWVkTm9uUAotICAgICBpdC0+c2Vjb25kLmxhc3RfY2hhbmdl ID0gYmFzZTo6VGltZTo6Tm93KCk7Ci0gICB9IGVsc2UgewotICAgICBwb3NzaWJsZV91c2VybmFt ZXNfLlB1dCgKLS0gICAgICAgIFBvc3NpYmxlVXNlcm5hbWVGaWVsZElkZW50aWZpZXIoZHJpdmVy X2lkLCByZW5kZXJlcl9pZCksCi0rICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlm aWVye2RyaXZlcl9pZCwgcmVuZGVyZXJfaWR9LAotICAgICAgICAgUG9zc2libGVVc2VybmFtZURh dGEoR2V0U2lnbm9uUmVhbG0oZHJpdmVyLT5HZXRMYXN0Q29tbWl0dGVkVVJMKCkpLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXJfaWQsIHZhbHVlLCBiYXNlOjpUaW1lOjpO b3coKSwgZHJpdmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBs ZXRlX2F0dHJpYnV0ZV9oYXNfdXNlcm5hbWUsCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYy50aGFu IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3dv cmtlcl93YXRjaGVyLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bl cmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQz OjAyLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50 cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjCTIwMjQtMDItMjQgMTM6MTM6 NDQuMTU4NzEyNzU2ICswMTAwCi1AQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hl cjo6T25Xb3JrZXJDcmVhdGVkKAotICAgRENIRUNLKGluc2VydGlvbl9yZXN1bHQuc2Vjb25kKTsK LSAKLSAgIGFic2w6OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFz ZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgWyYsCi0gICAgICAgICAgICB0aGlzXShjb25zdCBj b250ZW50OjpHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsK LSAgICAgICAgICAgICBBZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oaW5zZXJ0aW9uX3Jlc3VsdC5m aXJzdC0+c2Vjb25kLmdldCgpLAotQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdvcmtlcldhdGNo ZXI6Ok9uV29ya2VyQ3JlYXRlZCgKLSAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0 ZWRXb3JrZXJUb2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAgICAgQ29u bmVjdERlZGljYXRlZFdvcmtlckNsaWVudChpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNvbmQu Z2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0 ZWRfd29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAg IGNyZWF0b3IpOwotIH0KLSAKLUBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVy OjpPbkJlZm9yZVdvcmtlckRlc3RybwotICAgLy8gRmlyc3QgZGlzY29ubmVjdCB0aGUgY3JlYXRv cidzIG5vZGUgZnJvbSB0aGlzIHdvcmtlciBub2RlLgotIAotICAgYWJzbDo6dmlzaXQoCi0tICAg ICAgYmFzZTo6T3ZlcmxvYWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAg ICBbJiwKLSAgICAgICAgICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1l SG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAgICAgIFJlbW92ZUZyYW1l Q2xpZW50Q29ubmVjdGlvbih3b3JrZXJfbm9kZS5nZXQoKSwKLUBAIC0yNzQsNyArMjc0LDcgQEAg dm9pZCBXb3JrZXJXYXRjaGVyOjpPbkJlZm9yZVdvcmtlckRlc3RybwotICAgICAgICAgICBbJiwg dGhpc10oYmxpbms6OkRlZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4p IHsKLSAgICAgICAgICAgICBEaXNjb25uZWN0RGVkaWNhdGVkV29ya2VyQ2xpZW50KHdvcmtlcl9u b2RlLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZGVkaWNhdGVkX3dvcmtlcl90b2tlbik7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwK LSAgICAgICBjcmVhdG9yKTsKLSAKLSAgIC8vIERpc2Nvbm5lY3QgYWxsIGNoaWxkIHdvcmtlcnMg YmVmb3JlIGRlc3Ryb3lpbmcgdGhlIG5vZGUuCi1AQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgV29y a2VyV2F0Y2hlcjo6T25Db250cm9sbGVlQWRkZWQoCi0gICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBj bGllbnRfdXVpZCwKLSAgICAgY29uc3QgY29udGVudDo6U2VydmljZVdvcmtlckNsaWVudEluZm8m IGNsaWVudF9pbmZvKSB7Ci0gICBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpPdmVybG9hZGVk KAotKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50 OjpHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAg ICAgICAgIC8vIEZvciB3aW5kb3cgY2xpZW50cywgaXQgaXMgbmVjZXNzYXJ5IHRvIHdhaXQgdW50 aWwgdGhlIG5hdmlnYXRpb24KLSAgICAgICAgICAgICAvLyBoYXMgY29tbWl0dGVkIHRvIGEgUmVu ZGVyRnJhbWVIb3N0LgotQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9u Q29udHJvbGxlZUFkZGVkKAotICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNsaWVu dChzZXJ2aWNlX3dvcmtlcl9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAg IH0pLAotKyAgICAgICAgICB9fSwKLSAgICAgICBjbGllbnRfaW5mbyk7Ci0gfQotIAotQEAgLTUy NCw3ICs1MjQsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCi0g ICAgIHJldHVybjsKLSAKLSAgIGFic2w6OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQo Ci0rICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6 Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAg ICAgICAgUmVtb3ZlRnJhbWVDbGllbnRDb25uZWN0aW9uKHdvcmtlcl9ub2RlLCByZW5kZXJfZnJh bWVfaG9zdF9pZCk7Ci0gICAgICAgICAgIH0sCi1AQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV29y a2VyV2F0Y2hlcjo6T25Db250cm9sbGVlUmVtb3ZlZCgKLSAgICAgICAgICAgfSwKLSAgICAgICAg ICAgWyYsIHRoaXNdKGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2Vu KSB7Ci0gICAgICAgICAgICAgRGlzY29ubmVjdFNoYXJlZFdvcmtlckNsaWVudCh3b3JrZXJfbm9k ZSwgc2hhcmVkX3dvcmtlcl90b2tlbik7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwK LSAgICAgICBjbGllbnQpOwotIH0KLSAKLUBAIC04MTAsNyArODEwLDcgQEAgdm9pZCBXb3JrZXJX YXRjaGVyOjpDb25uZWN0QWxsU2VydmljZVdvcgotIAotICAgZm9yIChjb25zdCBhdXRvJiBrdiA6 IGl0LT5zZWNvbmQpIHsKLSAgICAgYWJzbDo6dmlzaXQoCi0tICAgICAgICBiYXNlOjpPdmVybG9h ZGVkKAotKyAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgICBbJiwgdGhpc10o Y29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsK LSAgICAgICAgICAgICAgIEFkZEZyYW1lQ2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9u b2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9mcmFt ZV9ob3N0X2lkKTsKLUBAIC04MjIsNyArODIyLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25u ZWN0QWxsU2VydmljZVdvcgotICAgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29y a2VyVG9rZW4gc2hhcmVkX3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAgICAgQ29ubmVjdFNo YXJlZFdvcmtlckNsaWVudChzZXJ2aWNlX3dvcmtlcl9ub2RlLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAg ICB9KSwKLSsgICAgICAgICAgICB9fSwKLSAgICAgICAgIGt2LnNlY29uZCk7Ci0gICB9Ci0gfQot QEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2 aWNlCi0gCi0gICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29uZCkgewotICAgICBhYnNs Ojp2aXNpdCgKLS0gICAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgICBiYXNlOjpPdmVy bG9hZGVkewotICAgICAgICAgICAgIFsmLCB0aGlzXSgKLSAgICAgICAgICAgICAgICAgY29uc3Qg Y29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7 Ci0gICAgICAgICAgICAgICBSZW1vdmVGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3Jr ZXJfbm9kZSwKLUBAIC04NTEsNyArODUxLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25u ZWN0QWxsU2VydmljZQotICAgICAgICAgICAgIFsmLCB0aGlzXShjb25zdCBibGluazo6U2hhcmVk V29ya2VyVG9rZW4mIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICAgIERpc2Nv bm5lY3RTaGFyZWRXb3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7Ci0t ICAgICAgICAgICAgfSksCi0rICAgICAgICAgICAgfX0sCi0gICAgICAgICBrdi5zZWNvbmQpOwot ICAgfQotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92aXov c2VydmljZS9kaXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUu Y2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlz cGxheV9lbWJlZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjCi0tLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRk ZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYy50aGFuCTIwMjQtMDItMjIgMjI6 NDM6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25l bnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBs X29uX2dwdS5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MTcxMjYzMiArMDEwMAotQEAgLTE1NzMs NyArMTU3Myw3IEBAIHZvaWQgU2tpYU91dHB1dFN1cmZhY2VJbXBsT25HcHU6OkNvcHlPdXQKLSAK LSAgICAgICAvLyBJc3N1ZSByZWFkYmFja3MgZnJvbSB0aGUgc3VyZmFjZXM6Ci0gICAgICAgZm9y IChzaXplX3QgaSA9IDA7IGkgPCBDb3B5T3V0cHV0UmVzdWx0OjprTlYxMk1heFBsYW5lczsgKytp KSB7Ci0tICAgICAgICBTa0lTaXplIHNpemUocGxhbmVfc3VyZmFjZXNbaV0tPndpZHRoKCksIHBs YW5lX3N1cmZhY2VzW2ldLT5oZWlnaHQoKSk7Ci0rICAgICAgICBTa0lTaXplIHNpemV7cGxhbmVf c3VyZmFjZXNbaV0tPndpZHRoKCksIHBsYW5lX3N1cmZhY2VzW2ldLT5oZWlnaHQoKX07Ci0gICAg ICAgICBTa0ltYWdlSW5mbyBkc3RfaW5mbyA9IFNrSW1hZ2VJbmZvOjpNYWtlKAotICAgICAgICAg ICAgIHNpemUsIChpID09IDApID8ga0FscGhhXzhfU2tDb2xvclR5cGUgOiBrUjhHOF91bm9ybV9T a0NvbG9yVHlwZSwKLSAgICAgICAgICAgICBrVW5wcmVtdWxfU2tBbHBoYVR5cGUpOwotZGlmZiAt dXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9w YWNrYWdlLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZG93 bmxvYWQvc2F2ZV9wYWNrYWdlLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50 L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mzow NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJv d3Nlci9kb3dubG9hZC9zYXZlX3BhY2thZ2UuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTE3MTI2 MzIgKzAxMDAKLUBAIC04MDEsOCArODAxLDggQEAgdm9pZCBTYXZlUGFja2FnZTo6RmluaXNoKCkg ewotICAgaWYgKGRvd25sb2FkXykgewotICAgICBzdGQ6OnZlY3Rvcjxkb3dubG9hZDo6RG93bmxv YWRTYXZlSXRlbURhdGE6Okl0ZW1JbmZvPiBmaWxlczsKLSAgICAgZm9yIChhdXRvJiBpdGVtIDog c2F2ZWRfc3VjY2Vzc19pdGVtc18pIHsKLS0gICAgICBmaWxlcy5lbXBsYWNlX2JhY2soaXRlbS5z ZWNvbmQtPmZ1bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJsKCksCi0tICAgICAgICAgICAgICAg ICAgICAgICAgIGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVybCk7Ci0rICAgICAgZmlsZXMuZW1w bGFjZV9iYWNrKCkgPSB7aXRlbS5zZWNvbmQtPmZ1bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJs KCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVy bH07Ci0gICAgIH0KLSAgICAgZG93bmxvYWQ6OkRvd25sb2FkU2F2ZUl0ZW1EYXRhOjpBdHRhY2hJ dGVtRGF0YShkb3dubG9hZF8sIHN0ZDo6bW92ZShmaWxlcykpOwotICAgfQotZGlmZiAtdXAgY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJz dF9wYXJ0eV9zZXRfcGFyc2VyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50 L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRfcGFyc2VyLmNjCi0tLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9m aXJzdF9wYXJ0eV9zZXRfcGFyc2VyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNS4wMDAwMDAw MDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9maXJz dF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MJMjAyNC0wMi0yNCAxMzoxMzo0 NC4xNTg3MTI3NTYgKzAxMDAKLUBAIC03NzMsNyArNzczLDcgQEAgRmlyc3RQYXJ0eVNldFBhcnNl cjo6UGFyc2VTZXRzRnJvbUVudGVycAotICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuR2V0 UG9saWN5U2V0c0Zyb21MaXN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kuRmlu ZExpc3Qoa0ZpcnN0UGFydHlTZXRQb2xpY3lBZGRpdGlvbnNGaWVsZCksCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIFBvbGljeVNldFR5cGU6OmtBZGRpdGlvbikpOwotLSAgICByZXR1cm4gUGFy c2VkUG9saWN5U2V0TGlzdHMoc3RkOjptb3ZlKHJlcGxhY2VtZW50cyksIHN0ZDo6bW92ZShhZGRp dGlvbnMpKTsKLSsgICAgcmV0dXJuIFBhcnNlZFBvbGljeVNldExpc3Rze3N0ZDo6bW92ZShyZXBs YWNlbWVudHMpLCBzdGQ6Om1vdmUoYWRkaXRpb25zKX07Ci0gICB9KCk7Ci0gCi0gICBjb250ZXh0 LlBvc3RQcm9jZXNzU2V0TGlzdHMoc2V0X2xpc3RzKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJv bV9zZWxsZXJfc2lnbmFscy5oLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jy b3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgK LS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91 cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuaC50aGFuCTIwMjQtMDItMjIgMjI6 NDM6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50 L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxz LmgJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTg3MTI3NTYgKzAxMDAKLUBAIC0xMzMsNiArMTMzLDcg QEAgY2xhc3MgQ09OVEVOVF9FWFBPUlQgSGVhZGVyRGlyZWN0RnJvbVNlbAotIAotICAgICAvLyBU aGUgQWQtQXVjdGlvbi1TaWduYWxzIHJlc3BvbnNlIHNlcnZlZCBieSBgb3JpZ2luYC4KLSAgICAg c3RkOjpzdHJpbmcgcmVzcG9uc2VfanNvbjsKLSsgICAgVW5wcm9jZXNzZWRSZXNwb25zZShhdXRv IHUsIGF1dG8gcykgOiBvcmlnaW4odSksIHJlc3BvbnNlX2pzb24ocykgeyB9Ci0gICB9OwotIAot ICAgLy8gSW5mb3JtYXRpb24gZnJvbSBQYXJzZUFuZEZpbmQoKSBjYWxscyB1c2VkIGJ5IFBhcnNl QW5kRmluZENvbXBsZXRlZC4KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVu dC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MudGhhbiBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRl cmVzdF9ncm91cF9zdG9yYWdlLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50 L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYy50aGFuCTIw MjQtMDItMjIgMjI6NDM6MDUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFn ZS5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAotQEAgLTM0NjEsMTAgKzM0 NjEsMTAgQEAgRG9HZXRLQW5vbnltaXR5RGF0YShzcWw6OkRhdGFiYXNlJiBkYiwKLSAKLSAgIHN0 ZDo6dmVjdG9yPFN0b3JhZ2VJbnRlcmVzdEdyb3VwOjpLQW5vbnltaXR5RGF0YT4ga19hbm9uX2Rh dGE7Ci0gICB3aGlsZSAoaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3RlcCgpKSB7Ci0tICAg IGtfYW5vbl9kYXRhLmVtcGxhY2VfYmFjaygKLSsgICAga19hbm9uX2RhdGEuZW1wbGFjZV9iYWNr KCkgPSB7Ci0gICAgICAgICAvKmtleT0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVt blN0cmluZygwKSwKLSAgICAgICAgIC8qaXNfa19hbm9ueW1vdXM9Ki9pbnRlcmVzdF9ncm91cF9r YW5vbl9xdWVyeS5Db2x1bW5Cb29sKDEpLAotLSAgICAgICAgLypsYXN0X3VwZGF0ZWQ9Ki9pbnRl cmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5UaW1lKDIpKTsKLSsgICAgICAgIC8qbGFzdF91 cGRhdGVkPSovaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuQ29sdW1uVGltZSgyKX07Ci0gICB9 Ci0gICBpZiAoIWludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LlN1Y2NlZWRlZCgpKSB7Ci0gICAg IHJldHVybiBzdGQ6Om51bGxvcHQ7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nv bnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhh biBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3Jl bmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRl bnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhhbgky MDI0LTAyLTI0IDEzOjEzOjQ0LjE1NzcxMjczOSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1w bC5jYwkyMDI0LTAyLTI0IDEzOjE4OjM5LjQ4MDExOTQ0NyArMDEwMAotQEAgLTg2MzIsNyArODYz Miw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0KLSAgIGZvciAo Y29uc3QgYmxpbms6OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdEZXN0aW5hdGlvbiYgZGVzdGluYXRp b24gOgotICAgICAgICBkZXN0aW5hdGlvbnMpIHsKLSAgICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0 aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVudChldmVudF90 eXBlLCBldmVudF9kYXRhKSwgZGVzdGluYXRpb24pOwotKyAgICAgICAgRGVzdGluYXRpb25FbnVt RXZlbnR7ZXZlbnRfdHlwZSwgZXZlbnRfZGF0YX0sIGRlc3RpbmF0aW9uKTsKLSAgIH0KLSB9Ci0g Ci1AQCAtODY2MSw3ICs4NjYxLDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpTZW5kRmVu Y2VkRnJhbQotICAgfQotIAotICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJu YWwoCi0tICAgICAgRGVzdGluYXRpb25VUkxFdmVudChkZXN0aW5hdGlvbl91cmwpLAotKyAgICAg IERlc3RpbmF0aW9uVVJMRXZlbnR7ZGVzdGluYXRpb25fdXJsfSwKLSAgICAgICBibGluazo6RmVu Y2VkRnJhbWU6OlJlcG9ydGluZ0Rlc3RpbmF0aW9uOjprQnV5ZXIpOwotIH0KLSAKLUBAIC04Nzky LDcgKzg3OTIsNyBAQCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6Ok1heWJlU2VuZEZlbmNlCi0g ICAgICAgICBkYXRhID0gaW5mby0+ZGF0YTsKLSAgICAgICB9Ci0gICAgICAgaW5pdGlhdG9yX3Jm aC0+U2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICAgIEF1 dG9tYXRpY0JlYWNvbkV2ZW50KGV2ZW50X3R5cGUsIGRhdGEpLCBkZXN0aW5hdGlvbiwKLSsgICAg ICAgICAgQXV0b21hdGljQmVhY29uRXZlbnR7ZXZlbnRfdHlwZSwgZGF0YX0sIGRlc3RpbmF0aW9u LAotICAgICAgICAgICBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOwotICAg ICB9Ci0gICB9IGVsc2UgewotQEAgLTg4MDMsNyArODgwMyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVI b3N0SW1wbDo6TWF5YmVTZW5kRmVuY2UKLSAgICAgZm9yIChibGluazo6RmVuY2VkRnJhbWU6OlJl cG9ydGluZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIDoKLSAgICAgICAgICBpbmZvLT5kZXN0aW5h dGlvbnMpIHsKLSAgICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdC ZWFjb25JbnRlcm5hbCgKLS0gICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnQoZXZlbnRfdHlw ZSwgaW5mby0+ZGF0YSksIGRlc3RpbmF0aW9uLAotKyAgICAgICAgICBBdXRvbWF0aWNCZWFjb25F dmVudHtldmVudF90eXBlLCBpbmZvLT5kYXRhfSwgZGVzdGluYXRpb24sCi0gICAgICAgICAgIG5h dmlnYXRpb25fcmVxdWVzdC5HZXROYXZpZ2F0aW9uSWQoKSk7Ci0gICAgIH0KLSAgIH0KLWRpZmYg LXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2Vy L3NlcnZpY2Vfd29ya2VyX2NvbnRhaW5lcl9ob3N0LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFp bmVyX2hvc3QuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9z ZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYy50aGFuCTIwMjQt MDItMjIgMjI6NDM6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVy X2hvc3QuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTk3MTI3NzQgKzAxMDAKLUBAIC04NzAsNyAr ODcwLDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lckhvc3Q6OkdldENsaWVudFR5cAotICAgRENI RUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7Ci0gICBEQ0hF Q0soY2xpZW50X2luZm9fKTsKLSAgIHJldHVybiBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpP dmVybG9hZGVkKAotKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFtdKEdsb2Jh bFJlbmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAg cmV0dXJuIGJsaW5rOjptb2pvbTo6U2VydmljZVdvcmtlckNsaWVudFR5cGU6OmtXaW5kb3c7Ci0g ICAgICAgICAgIH0sCi1AQCAtODc5LDcgKzg3OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXJI b3N0OjpHZXRDbGllbnRUeXAKLSAgICAgICAgICAgfSwKLSAgICAgICAgICAgW10oYmxpbms6OlNo YXJlZFdvcmtlclRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICByZXR1 cm4gYmxpbms6Om1vam9tOjpTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6a1NoYXJlZFdvcmtlcjsK LS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgICpjbGllbnRfaW5mb18pOwot IH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3Nl cnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2Vw dG9yLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2Vydmlj ZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3Iu Y2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dv cmtlci9zZXJ2aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYy50 aGFuCTIwMjQtMDItMjIgMjI6NDM6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJf bWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4x NTk3MTI3NzQgKzAxMDAKLUBAIC0zNjMsMTAgKzM2MywxMCBAQCBTZXJ2aWNlV29ya2VyTWFpblJl c291cmNlTG9hZGVySW50ZXJjZXB0Ci0gICB9Ci0gICBhdXRvKiBzdG9yYWdlX3BhcnRpdGlvbiA9 IHByb2Nlc3MtPkdldFN0b3JhZ2VQYXJ0aXRpb24oKTsKLSAKLS0gIHJldHVybiBhYnNsOjp2aXNp dChiYXNlOjpPdmVybG9hZGVkKFsmLCB0aGlzXShhdXRvIHRva2VuKSB7Ci0rICByZXR1cm4gYWJz bDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZHtbJiwgdGhpc10oYXV0byB0b2tlbikgewotICAgICAg ICAgICAgICAgICAgICAgICAgcmV0dXJuIEdldFN0b3JhZ2VLZXlGcm9tV29ya2VySG9zdChzdG9y YWdlX3BhcnRpdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdG9rZW4sIG9yaWdpbik7Ci0tICAgICAgICAgICAgICAgICAgICAg fSksCi0rICAgICAgICAgICAgICAgICAgICAgfX0sCi0gICAgICAgICAgICAgICAgICAgICAgKndv cmtlcl90b2tlbl8pOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYy50aGFuIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRl ZF93b3JrZXJfaG9zdC5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93 c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYy50aGFuCTIwMjQtMDItMjIg MjI6NDM6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCTIwMjQtMDIt MjQgMTM6MTM6NDQuMTU5NzEyNzc0ICswMTAwCi1AQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgRGVk aWNhdGVkV29ya2VySG9zdDo6U3RhcnRTY3JpcHRMb2EKLSAgIFJlbmRlckZyYW1lSG9zdEltcGwq IGNyZWF0b3JfcmVuZGVyX2ZyYW1lX2hvc3QgPSBudWxscHRyOwotICAgRGVkaWNhdGVkV29ya2Vy SG9zdCogY3JlYXRvcl93b3JrZXIgPSBudWxscHRyOwotIAotLSAgYWJzbDo6dmlzaXQoYmFzZTo6 T3ZlcmxvYWRlZCgKLSsgIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAg ICAgICAgICAgWyZdKGNvbnN0IEdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVf aG9zdF9pZCkgewotICAgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9z dCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgUmVuZGVyRnJhbWVIb3N0SW1wbDo6RnJvbUlE KHJlbmRlcl9mcmFtZV9ob3N0X2lkKTsKLUBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBEZWRpY2F0 ZWRXb3JrZXJIb3N0OjpTdGFydFNjcmlwdExvYQotICAgICAgICAgICAgICAgICAgIFsmXShibGlu azo6RGVkaWNhdGVkV29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgewotICAgICAg ICAgICAgICAgICAgICAgY3JlYXRvcl93b3JrZXIgPSBzZXJ2aWNlXy0+R2V0RGVkaWNhdGVkV29y a2VySG9zdEZyb21Ub2tlbigKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29y a2VyX3Rva2VuKTsKLS0gICAgICAgICAgICAgICAgICB9KSwKLSsgICAgICAgICAgICAgICAgICB9 fSwKLSAgICAgICAgICAgICAgIGNyZWF0b3JfKTsKLSAKLSAgIGlmICghY3JlYXRvcl9yZW5kZXJf ZnJhbWVfaG9zdCAmJiAhY3JlYXRvcl93b3JrZXIpIHsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjLnRoYW4gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MKLS0tLSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5jYy50aGFuCTIwMjQtMDIt MjIgMjI6NDM6MTcuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9u ZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTI3MTI2 NDkgKzAxMDAKLUBAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBIb3N0UmVzb2x2ZXJDYWNoZTo6U2V0 KAotIAotICAgc3RkOjpzdHJpbmcgZG9tYWluX25hbWUgPSByZXN1bHQtPmRvbWFpbl9uYW1lKCk7 Ci0gICBlbnRyaWVzXy5lbXBsYWNlKAotLSAgICAgIEtleShzdGQ6Om1vdmUoZG9tYWluX25hbWUp LCBuZXR3b3JrX2Fub255bWl6YXRpb25fa2V5KSwKLSsgICAgICBLZXl7c3RkOjptb3ZlKGRvbWFp bl9uYW1lKSwgbmV0d29ya19hbm9ueW1pemF0aW9uX2tleX0sCi0gICAgICAgRW50cnkoc3RkOjpt b3ZlKHJlc3VsdCksIHNvdXJjZSwgc2VjdXJlLCBzdGFsZW5lc3NfZ2VuZXJhdGlvbikpOwotIAot ICAgaWYgKGVudHJpZXNfLnNpemUoKSA+IG1heF9lbnRyaWVzXykgewotZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250 cy9mb250X3BhbGV0dGUuaC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRlLmgKLS0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRz L2ZvbnRfcGFsZXR0ZS5oLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzoyNS4wMDAwMDAwMDAgKzAxMDAK LSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3Bs YXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5oCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUyNzEyNjQ5 ICswMTAwCi1AQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBQTEFURk9STV9FWFBPUlQgRm9udFBhbGV0 dGUgOiBwdWJsCi0gICAgICAgQ29sb3I6OkNvbG9yU3BhY2UgY29sb3JfaW50ZXJwb2xhdGlvbl9z cGFjZSwKLSAgICAgICBhYnNsOjpvcHRpb25hbDxDb2xvcjo6SHVlSW50ZXJwb2xhdGlvbk1ldGhv ZD4gaHVlX2ludGVycG9sYXRpb25fbWV0aG9kKSB7Ci0gICAgIHJldHVybiBiYXNlOjpBZG9wdFJl ZihuZXcgRm9udFBhbGV0dGUoCi0tICAgICAgICBzdGFydCwgZW5kLCBOb25Ob3JtYWxpemVkUGVy Y2VudGFnZXMoc3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2UpLAotKyAgICAgICAgc3Rh cnQsIGVuZCwgTm9uTm9ybWFsaXplZFBlcmNlbnRhZ2Vze3N0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9w ZXJjZW50YWdlfSwKLSAgICAgICAgIG5vcm1hbGl6ZWRfcGVyY2VudGFnZSwgYWxwaGFfbXVsdGlw bGllciwgY29sb3JfaW50ZXJwb2xhdGlvbl9zcGFjZSwKLSAgICAgICAgIGh1ZV9pbnRlcnBvbGF0 aW9uX21ldGhvZCkpOwotICAgfQotQEAgLTE3MCw3ICsxNzAsNyBAQCBjbGFzcyBQTEFURk9STV9F WFBPUlQgRm9udFBhbGV0dGUgOiBwdWJsCi0gICAgICAgZG91YmxlIG5vcm1hbGl6ZWRfcGVyY2Vu dGFnZSkgewotICAgICBkb3VibGUgZW5kX3BlcmNlbnRhZ2UgPSBub3JtYWxpemVkX3BlcmNlbnRh Z2UgKiAxMDAuMDsKLSAgICAgZG91YmxlIHN0YXJ0X3BlcmNlbnRhZ2UgPSAxMDAuMCAtIGVuZF9w ZXJjZW50YWdlOwotLSAgICByZXR1cm4gTm9uTm9ybWFsaXplZFBlcmNlbnRhZ2VzKHN0YXJ0X3Bl cmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKTsKLSsgICAgcmV0dXJuIE5vbk5vcm1hbGl6ZWRQZXJj ZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZX07Ci0gICB9Ci0gCi0gICBk b3VibGUgR2V0QWxwaGFNdWx0aXBsaWVyKCkgY29uc3QgewotZGlmZiAtdXAgY2hyb21pdW0tMTIy LjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxl dHRlX2ludGVycG9sYXRpb24uY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5j YwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjLnRoYW4JMjAyNC0wMi0yMiAy Mjo0MzoyNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlv bi5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAotQEAgLTMxLDcgKzMxLDcg QEAgVmVjdG9yPEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlPgotICAgICAgICAgY29s b3JfaW50ZXJwb2xhdGlvbl9zcGFjZSwgaHVlX2ludGVycG9sYXRpb25fbWV0aG9kLCBzdGFydF9j b2xvciwKLSAgICAgICAgIGVuZF9jb2xvciwgcGVyY2VudGFnZSwgYWxwaGFfbXVsdGlwbGllcik7 Ci0gCi0tICAgIEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlIHJlc3VsdF9jb2xvcl9y ZWNvcmQoaSwgcmVzdWx0X2NvbG9yKTsKLSsgICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3Zl cnJpZGUgcmVzdWx0X2NvbG9yX3JlY29yZHtzdGF0aWNfY2FzdDxpbnQ+KGkpLCByZXN1bHRfY29s b3J9OwotICAgICByZXN1bHRfY29sb3JfcmVjb3Jkcy5wdXNoX2JhY2socmVzdWx0X2NvbG9yX3Jl Y29yZCk7Ci0gICB9Ci0gICByZXR1cm4gcmVzdWx0X2NvbG9yX3JlY29yZHM7Ci1kaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVu ZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNwcC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhp cmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3Bw Ci0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRm YXBpL3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAudGhhbgkyMDI0LTAyLTIyIDIyOjQ1OjAy LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkv cGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwCTIwMjQtMDIt MjQgMTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCi1AQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgQ1BE Rl9SZW5kZXJTdGF0dXM6OlByb2Nlc3NDbGlwUGF0aCgKLSAgICAgfSBlbHNlIHsKLSAgICAgICBt X3BEZXZpY2UtPlNldENsaXBfUGF0aEZpbGwoCi0gICAgICAgICAgICpwUGF0aCwgJm10T2JqMkRl dmljZSwKLS0gICAgICAgICAgQ0ZYX0ZpbGxSZW5kZXJPcHRpb25zKENsaXBQYXRoLkdldENsaXBU eXBlKGkpKSk7Ci0rICAgICAgICAgIENGWF9GaWxsUmVuZGVyT3B0aW9uc3tDbGlwUGF0aC5HZXRD bGlwVHlwZShpKX0pOwotICAgICB9Ci0gICB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaC50aGFuIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCi0tLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGls LmgudGhhbgkyMDI0LTAyLTIyIDIyOjQ0OjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCTIwMjQt MDItMjQgMTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCi1AQCAtNTIsNTMgKzUyLDUzIEBAIGNvbnN0 ZXhwciBhdXRvIGtDaHJvbWF0aWNpdHlNYXAgPSBiYXNlOjoKLSAgICAgemNyX2NvbG9yX21hbmFn ZXJfdjFfY2hyb21hdGljaXR5X25hbWVzLAotICAgICBQcmltYXJ5VmVyc2lvbj4oCi0gICAgIHt7 WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNjAxXzUyNV9MSU5FLAot LSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3 ME0sCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAg ICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAot KyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNjAxXzYyNV9MSU5FLAotLSAg ICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3MEJHLAot LSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgUHJp bWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNDcwQkcsCi0rICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUxNzBNLAotLSAgICAgIFByaW1hcnlW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCi0tICAgICAgICAg ICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lv bntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAotKyAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX0JUNzA5LAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsg ICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtE ZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX0JUMjAyMCwKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6OlByaW1hcnlJRDo6QlQyMDIwLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgIFBy aW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDIwMjAsIGtEZWZhdWx0 U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZ X05BTUVTX1NSR0IsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmlt YXJ5SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgIFByaW1hcnlWZXJz aW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRElT UExBWVAzLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlE OjpQMywga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6 OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6UDMsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAg ICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0FET0JFUkdCLAotLSAg ICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpBRE9CRV9SR0Is Ci0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQ cmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QURPQkVfUkdCLAotKyAg ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRfQ09MT1JfU1BJTiwK LS0gICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAg ICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OldJREVfR0FNVVRfQ09MT1JfU1BJTiwKLS0g ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FN VVRfQ09MT1JfU1BJTl9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NPTE9SX1NQSU5fU0lOQ0VfVkVS U0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19C VDQ3ME0sCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAgUHJpbWFyeVZlcnNpb257Ci0g ICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3ME0sCi0tICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDQ3ME1fU0lOQ0VfVkVS U0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFN RVNfQlQ0NzBNX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9D SFJPTUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAg ICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJ RDo6U01QVEUyNDBNLAotLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OfX0s Ci0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9ENTAs Ci0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAgUHJpbWFyeVZlcnNpb257Ci0gICAgICAg ICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpYWVpfRDUwLAotLSAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfWFlaX0Q1MF9TSU5DRV9WRVJTSU9O KX0sCi0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19Y WVpfRDUwX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJP TUFUSUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAg ICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJ RDo6U01QVEVTVDQyOF8xLAotLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFU SUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9W RVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X1NNUFRFU1Q0MzFfMiwKLS0gICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQcmltYXJ5VmVy c2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFU1Q0MzFf MiwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NN UFRFU1Q0MzFfMl9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDMxXzJfU0lOQ0VfVkVSU0lPTn19LAotICAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNLAotLSAgICAg IFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBnZng6 OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6RklMTSwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0ZJTE1fU0lOQ0VfVkVSU0lPTil9fSk7Ci0rICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZF UlNJT059fX0pOwotIAotIC8vIEEgbWFwIGZyb20gdGhlIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVv dGZfbmFtZXMgZW51bSB2YWx1ZXMKLSAvLyByZXByZXNlbnRpbmcgd2VsbC1rbm93biBFT1RGcywg dG8gdGhlaXIgZXF1aXZhbGVudCBUcmFuc2ZlcklEcy4KLUBAIC0xMDcsNjggKzEwNyw2OCBAQCBj b25zdGV4cHIgYXV0byBrRW90Zk1hcCA9IGJhc2U6Ok1ha2VGaXhlCi0gICAgIHpjcl9jb2xvcl9t YW5hZ2VyX3YxX2VvdGZfbmFtZXMsCi0gICAgIFRyYW5zZmVyVmVyc2lvbj4oewotICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MSU5FQVIsCi0tICAgICBUcmFuc2ZlclZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMSU5FQVIsCi0tICAgICAgICAgICAgICAg ICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxJTkVBUiwKLSsgICAgICAgICAgICAgICAgICAgICBr RGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19TUkdCLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNm ZXJJRDo6U1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lv bntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9u fX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSLAotLSAg ICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQl9IRFIs Ci0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19T UkdCX0hEUl9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCX0hEUiwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSX1NJTkNFX1ZFUlNJT059fSwKLSAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDksCi0tICAgICBUcmFuc2Zl clZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDcwOSwKLS0gICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZF UlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OkJUNzA5LAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19CVDIwODcsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNw YWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI0LAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0 U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpHQU1NQTI0LAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0FET0JFUkdC LAotICAgICAgLy8gVGhpcyBpcyBldmVyIHNvIHNsaWdodGx5IGluYWNjdXJhdGUuIFRoZSBudW1i ZXIgb3VnaHQgdG8gYmUKLSAgICAgIC8vIDIuMTk5MjE4NzVmLCBub3QgMi4yCi0tICAgICBUcmFu c2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTIyLAotLSAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTIyLAotKyAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX1BRLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6VHJhbnNmZXJJRDo6UFEsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2Zl clZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpQUSwga0RlZmF1bHRTaW5jZVZl cnNpb259fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHLAotLSAg ICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6SExHLAotLSAg ICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJ TkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OkhMRywKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX1NNUFRFMTcwTSwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMTcwTSwKLS0gICAgICAgICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMTcwTV9TSU5DRV9WRVJTSU9OKX0s Ci0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBU RTE3ME0sCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19TTVBURTE3ME1fU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19TTVBURTI0ME0sCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTI0ME0sCi0tICAgICAgICAgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lPTil9LAot KyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUy NDBNLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfU01QVEVTVDQyOF8xLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKAotKyAgICAg VHJhbnNmZXJWZXJzaW9uewotICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6 U01QVEVTVDQyOF8xLAotLSAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf U01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPRywKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihn Zng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPRywKLS0gICAgICAgICAgICAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0csCi0rICAg ICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU0lO Q0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0df U1FSVCwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OkxPR19TUVJULAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfTE9HX1NRUlRfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HX1NRUlQsCi0rICAgICAgICAgICAgICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU1FSVF9TSU5DRV9WRVJT SU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lFQzYxOTY2XzJf NCwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbigKLSsgICAgIFRyYW5zZmVyVmVyc2lvbnsKLSAgICAg ICAgICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OklFQzYxOTY2XzJfNCwKLS0gICAgICAg ICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lFQzYxOTY2XzJfNF9TSU5DRV9WRVJT SU9OKX0sCi0rICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2 Nl8yXzRfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19CVDEzNjFfRUNHLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6QlQxMzYxX0VDRywKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0dfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAg VHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQxMzYxX0VDRywK LSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JU MTM2MV9FQ0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19CVDIwMjBfMTAsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpCVDIwMjBfMTAsCi0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTBfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAg VHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEwLAot KyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQy MDIwXzEwX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfQlQyMDIwXzEyLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6QlQyMDIwXzEyLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEyX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRy YW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMiwKLSsg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAy MF8xMl9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX1NDUkdCX0xJTkVBUl84MF9OSVRTLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKAotKyAgICAg VHJhbnNmZXJWZXJzaW9uewotICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6 U0NSR0JfTElORUFSXzgwX05JVFMsCi0tICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5D RV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1B MTgsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpH QU1NQTE4LAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4 OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTE4LAotKyAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OfX0s Ci0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMjgsCi0tICAgICBU cmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI4LAotLSAg ICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEy OF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpHQU1NQTI4LAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9TSU5DRV9WRVJTSU9OfX0sCi0gfSk7Ci0gCi0g Ly8gQSBtYXAgZnJvbSB0aGUgU0RSIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZfbmFtZXMgZW51 bSB2YWx1ZXMKLUBAIC0xNzcsMTggKzE3NywxOCBAQCBjb25zdGV4cHIgYXV0byBrRW90Zk1hcCA9 IGJhc2U6Ok1ha2VGaXhlCi0gY29uc3RleHByIGF1dG8ga1RyYW5zZmVyTWFwID0KLSAgICAgYmFz ZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLCBUcmFu c2ZlckZuVmVyc2lvbj4oewotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfTElORUFSLAotLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZu OjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgIFRyYW5zZmVyRm5W ZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19 LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQiwKLS0gICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0IsIGtEZWZh dWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRy YW5zZmVyRm5FeHQ6OmtTUkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDksCi0tICAgICAgICAgVHJhbnNmZXJG blZlcnNpb24oCi0rICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257Ci0gICAgICAgICAgICAgIFNr TmFtZWRUcmFuc2ZlckZuRXh0OjprUmVjNzA5LAotLSAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OfX0sCi0g ICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwODcsCi0tICAgICAg ICAgVHJhbnNmZXJGblZlcnNpb24oZ2FtbWEyNCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntnYW1tYTI0LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19 LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQURPQkVSR0IsCi0t ICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtBOThSR0Is Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbkV4dDo6a0E5OFJHQiwK LSsgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAg ICB9KTsKLSAKLSAvLyBBIG1hcCBmcm9tIHRoZSBIRFIgemNyX2NvbG9yX21hbmFnZXJfdjEgZW90 Zl9uYW1lcyBlbnVtIHZhbHVlcwotQEAgLTE5Nyw3MCArMTk3LDcwIEBAIGNvbnN0ZXhwciBhdXRv IGtUcmFuc2Zlck1hcCA9Ci0gY29uc3RleHByIGF1dG8ga0hEUlRyYW5zZmVyTWFwID0KLSAgICAg YmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLCBU cmFuc2ZlckZuVmVyc2lvbj4oCi0gICAgICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfTElORUFSLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNm ZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgVHJhbnNm ZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJz aW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9I RFIsCi0tICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKAotKyAgICAgICAgICBUcmFuc2ZlckZu VmVyc2lvbnsKLSAgICAgICAgICAgICAgIFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQiwKLS0g ICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lO Q0VfVkVSU0lPTil9LAotKyAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfUFEsCi0tICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFt ZWRUcmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIFRy YW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VWZXJz aW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHLAot LSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a0hMRywKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19ITEdfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05h bWVkVHJhbnNmZXJGbjo6a0hMRywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAg IHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VYVEVOREVEU1JHQjEwLAotLSAgICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbigKLSsgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257Ci0g ICAgICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0JFeHRlbmRlZDEwMjNPdmVy NTEwLAotLSAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRF TkRFRFNSR0IxMF9TSU5DRV9WRVJTSU9OKX19KTsKLSsgICAgICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURTUkdCMTBfU0lOQ0VfVkVSU0lPTn19fSk7Ci0g Ci0gLy8gQSBtYXAgZnJvbSB6Y3JfY29sb3JfbWFuYWdlcl92MSBtYXRyaXhfbmFtZXMgZW51bSB2 YWx1ZXMgdG8KLSAvLyBnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEcy4KLSBjb25zdGV4cHIgYXV0 byBrTWF0cml4TWFwID0KLSAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFu YWdlcl92MV9tYXRyaXhfbmFtZXMsIE1hdHJpeFZlcnNpb24+KAotICAgICAgICAge3taQ1JfQ09M T1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfUkdCLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlJHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK LSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpSR0Is IGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X01BVFJJWF9OQU1FU19CVDcwOSwKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9y U3BhY2U6Ok1hdHJpeElEOjpCVDcwOSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVs dFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFj ZTo6TWF0cml4SUQ6OkJUNzA5LAotKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2lu Y2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1F U19CVDQ3MEJHLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKAotKyAgICAgICAgICBNYXRyaXhW ZXJzaW9uewotICAgICAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQ0NzBC RywKLS0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3 MEJHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X01BVFJJWF9OQU1FU19CVDQ3MEJHX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAyMF9OQ0wsCi0tICAgICAgICAgIE1hdHJp eFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX05DTCwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRy aXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9OQ0wsCi0rICAgICAg ICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAyMF9DTCwKLS0gICAgICAgICAgTWF0 cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfQ0wsCi0tICAgICAg ICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgTWF0 cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfQ0wsCi0rICAgICAg ICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0ZDQywKLS0gICAgICAgICAgTWF0cml4VmVy c2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpGQ0MsIGtEZWZhdWx0U2luY2VWZXJzaW9u KX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6 RkNDLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9NQVRSSVhfTkFNRVNfWUNPQ0csCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpD b2xvclNwYWNlOjpNYXRyaXhJRDo6WUNPQ0csCi0tICAgICAgICAgICAgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NHX1NJTkNFX1ZFUlNJT04pfSwKLSsg ICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZQ09DRywK LSsgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFN RVNfWUNPQ0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9NQVRSSVhfTkFNRVNfWURaRFgsCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpNYXRyaXhJRDo6WURaRFgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRYX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAg ICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZRFpEWCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNf WURaRFhfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9N QVRSSVhfTkFNRVNfR0JSLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6TWF0cml4SUQ6OkdCUiwKLS0gICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9NQVRSSVhfTkFNRVNfR0JSX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgTWF0 cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpHQlIsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUl9TSU5DRV9W RVJTSU9OfX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19T TVBURTE3ME0sCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRy aXhJRDo6U01QVEUxNzBNLAotLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRy aXhJRDo6U01QVEUxNzBNLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19T TVBURTI0ME0sCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRy aXhJRDo6U01QVEUyNDBNLAotLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX19KTsKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1h dHJpeElEOjpTTVBURTI0ME0sCi0rICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5j ZVZlcnNpb259fX0pOwotIAotIC8vIEEgbWFwIGZyb20gemNyX2NvbG9yX21hbmFnZXJfdjEgcmFu Z2VfbmFtZXMgZW51bSB2YWx1ZXMgdG8KLSAvLyBnZng6OkNvbG9yU3BhY2U6OlJhbmdlSURzLgot IGNvbnN0ZXhwciBhdXRvIGtSYW5nZU1hcCA9Ci0gICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8 emNyX2NvbG9yX21hbmFnZXJfdjFfcmFuZ2VfbmFtZXMsIFJhbmdlVmVyc2lvbj4oCi0gICAgICAg ICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVTX0xJTUlURUQsCi0tICAgICAgICAg IFJhbmdlVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkxJTUlURUQsCi0tICAgICAg ICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBSYW5n ZVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpMSU1JVEVELAotKyAgICAgICAgICAg ICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfUkFOR0VfTkFNRVNfRlVMTCwKLS0gICAgICAgICAgUmFuZ2VWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsg ICAgICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0Rl ZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFO R0VfTkFNRVNfREVSSVZFRCwKLS0gICAgICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6UmFuZ2VJRDo6REVSSVZFRCwKLS0gICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2lu Y2VWZXJzaW9uKX19KTsKLSsgICAgICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 UmFuZ2VJRDo6REVSSVZFRCwKLSsgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX19KTsKLSAKLSB6Y3JfY29sb3JfbWFuYWdlcl92MV9jaHJvbWF0aWNpdHlfbmFtZXMg VG9Db2xvck1hbmFnZXJDaHJvbWF0aWNpdHkoCi0gICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFy eUlEIHByaW1hcnlJRCwKLUBAIC0yODMsNCArMjgzLDQgQEAgemNyX2NvbG9yX21hbmFnZXJfdjFf ZW90Zl9uYW1lcyBUb0NvbG9yTQotIAotIH0gIC8vIG5hbWVzcGFjZSB1aTo6d2F5bGFuZAotIAot LSNlbmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NPTE9SX01BTkFHRVJfVVRJTF9IXwotXCBLZWlu IFplaWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlLgotKyNlbmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5E X0NPTE9SX01BTkFHRVJfVVRJTF9IXwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS91 aS9ndGsvZ3RrX3VpLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9ndGsvZ3RrX3Vp LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9ndGsvZ3RrX3VpLmNjLnRoYW4JMjAy NC0wMi0yMiAyMjo0NDoxMy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L3VpL2d0ay9ndGtfdWkuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTM3MTI2NjcgKzAxMDAK LUBAIC0xMDA3LDExICsxMDA3LDExIEBAIHVpOjpEaXNwbGF5Q29uZmlnIEd0a1VpOjpHZXREaXNw bGF5Q29uZmkKLSAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5OwotICAgICBnZGtfbW9uaXRvcl9n ZXRfZ2VvbWV0cnkobW9uaXRvciwgJmdlb21ldHJ5KTsKLSAgICAgaW50IG1vbml0b3Jfc2NhbGUg PSBzdGQ6Om1heCgxLCBnZGtfbW9uaXRvcl9nZXRfc2NhbGVfZmFjdG9yKG1vbml0b3IpKTsKLS0g ICAgY29uZmlnLmRpc3BsYXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soCi0rICAgIGNvbmZpZy5k aXNwbGF5X2dlb21ldHJpZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBnZng6OlJlY3Qo bW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LngsIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS55LAot ICAgICAgICAgICAgICAgICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS53aWR0aCwKLSAgICAg ICAgICAgICAgICAgICBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkuaGVpZ2h0KSwKLS0gICAgICAg IG1vbml0b3Jfc2NhbGUgKiBmb250X3NjYWxlKTsKLSsgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0 Pihtb25pdG9yX3NjYWxlICogZm9udF9zY2FsZSl9OwotICAgfQotICAgcmV0dXJuIGNvbmZpZzsK LSB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvbWVtb3J5X3By ZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5jYy5tZSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9u aXRvci5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9tZW1vcnlfcHJl c3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjLm1lCTIwMjQtMDItMjQgMTg6MDY6 NDYuNTA5MzkzMDMyICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRz L21lbW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MJMjAyNC0wMi0y NCAxODowNzoxMS4yNTg5NDgyNDEgKzAxMDAKLUBAIC05Miw4ICs5Miw4IEBAIHZvaWQgVW5uZWNl c3NhcnlEaXNjYXJkTW9uaXRvcjo6T25EaXNjYXIKLSAgIERDSEVDS19DQUxMRURfT05fVkFMSURf U0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotICAgaWYgKGN1cnJlbnRfcmVjbGFpbV9ldmVu dF8pIHsKLSAgICAgLy8gQ2FjaGUgdGhpcyBraWxsIGV2ZW50IGFsb25nIHdpdGggdGhlIHRpbWUg aXQgdG9vayBwbGFjZS4KLS0gICAgY3VycmVudF9yZWNsYWltX2V2ZW50X2tpbGxzXy5lbXBsYWNl X2JhY2sobWVtb3J5X2ZyZWVkX2tiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBkaXNjYXJkX2NvbXBsZXRlX3RpbWUpOwotKyAgICBjdXJyZW50X3JlY2xh aW1fZXZlbnRfa2lsbHNfLmVtcGxhY2VfYmFjaygpID0ge21lbW9yeV9mcmVlZF9rYiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZF9jb21wbGV0 ZV90aW1lfTsKLSAgIH0KLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nv bXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3Nf YXV0b2ZpbGxfdGFibGUuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3Rh YmxlLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2Nv cmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjLm1l CTIwMjQtMDItMjQgMTk6NTg6MDkuOTI5MzcxNzkxICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nl cy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjCTIwMjQtMDItMjQgMTk6NTk6MDcuMTQ5NTI0ODYy ICswMTAwCi1AQCAtNjMxLDEwICs2MzEsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEF1dG9maWxsUHJv ZmlsZT4gQWRkcmVzcwotICAgICB9Ci0gCi0gICAgIGJhc2U6OnNwYW48Y29uc3QgdWludDhfdD4g b2JzZXJ2YXRpb25zX2RhdGEgPSBzLkNvbHVtbkJsb2IoMyk7Ci0tICAgIGZpZWxkX3R5cGVfdmFs dWVzLmVtcGxhY2VfYmFjaygKLSsgICAgZmllbGRfdHlwZV92YWx1ZXMuZW1wbGFjZV9iYWNrKCkg PSB7Ci0gICAgICAgICB0eXBlLCBzLkNvbHVtblN0cmluZzE2KDEpLCBzLkNvbHVtbkludCgyKSwK LSAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KG9ic2VydmF0aW9uc19kYXRhLmJlZ2luKCks Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhdGlvbnNfZGF0YS5lbmQoKSkp OwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YXRpb25zX2RhdGEuZW5kKCkp fTsKLSAKLSAgICAgaWYgKHR5cGUgPT0gQUREUkVTU19IT01FX0NPVU5UUlkpIHsKLSAgICAgICBj b3VudHJ5X2NvZGUgPSBiYXNlOjpVVEYxNlRvVVRGOChzLkNvbHVtblN0cmluZzE2KDEpKTsKLWRp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jy b3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYy5tZSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRh dGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MKLS0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVz c2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MubWUJMjAyNC0wMi0yNCAxOTo1MjowMi4xNzM2 ODIwNjAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2Zp bGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwu Y2MJMjAyNC0wMi0yNCAxOTo1MjoyNS4yNDcyMTYzMjkgKzAxMDAKLUBAIC0xOTIsOSArMTkyLDkg QEAgY2xhc3MgQ29udGFjdEluZm9Qcm9maWxlU2V0dGVyIHsKLSAgICAgICBDSEVDSyhvYnNlcnZh dGlvbnMuZW1wdHkoKSk7Ci0gICAgICAgZm9yIChjb25zdCBzeW5jX3BiOjpDb250YWN0SW5mb1Nw ZWNpZmljczo6T2JzZXJ2YXRpb24mIHByb3RvX29ic2VydmF0aW9uIDoKLSAgICAgICAgICAgIG1l dGFkYXRhLm9ic2VydmF0aW9ucygpKSB7Ci0tICAgICAgICBvYnNlcnZhdGlvbnMuZW1wbGFjZV9i YWNrKHByb3RvX29ic2VydmF0aW9uLnR5cGUoKSwKLSsgICAgICAgIG9ic2VydmF0aW9ucy5lbXBs YWNlX2JhY2soKSA9IHtwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFByb2ZpbGVUb2tlblF1YWxpdHk6OkZvcm1TaWduYXR1cmVIYXNo KAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9fb2JzZXJ2YXRp b24uZm9ybV9oYXNoKCkpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByb3RvX29ic2VydmF0aW9uLmZvcm1faGFzaCgpKX07Ci0gICAgICAgfQotICAgICB9Ci0gICB9 Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRf ZnJhbWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nv bnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYwotLS0tIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRf ZnJhbWVfY29uZmlnLmNjLm1lCTIwMjQtMDItMjUgMDA6MTQ6MjYuODMwMzIzMzY1ICswMTAwCi0r KysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2Zl bmNlZF9mcmFtZV9jb25maWcuY2MJMjAyNC0wMi0yNSAwMDoxNToxNy45MzkyNDEwOTEgKzAxMDAK LUBAIC00MDIsNyArNDAyLDcgQEAgdm9pZCBGZW5jZWRGcmFtZVByb3BlcnRpZXM6OlVwZGF0ZVBh cmVudAotICAgICAgICAgZmVhdHVyZSwgYWxsb3dfbGlzdC5BbGxvd2VkT3JpZ2lucygpLCBhbGxv d19saXN0LlNlbGZJZk1hdGNoZXMoKSwKLSAgICAgICAgIGFsbG93X2xpc3QuTWF0Y2hlc0FsbCgp LCBhbGxvd19saXN0Lk1hdGNoZXNPcGFxdWVTcmMoKSk7Ci0gICB9Ci0tICBwYXJlbnRfcGVybWlz c2lvbnNfaW5mb18uZW1wbGFjZShwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9vcmlnaW4pOwotKyAg cGFyZW50X3Blcm1pc3Npb25zX2luZm9fLmVtcGxhY2UoKSA9IHtwYXJzZWRfcG9saWNpZXMsIHBh cmVudF9vcmlnaW59OwotIH0KLSAKLSB9ICAvLyBuYW1lc3BhY2UgY29udGVudAotZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50 ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQv YnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCi0tLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJl c3RfZ3JvdXBfc3RvcmFnZS5jYy5tZQkyMDI0LTAyLTI1IDAwOjE3OjMxLjc5OTY0NDY5MSArMDEw MAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dy b3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MJMjAyNC0wMi0yNSAwMDoxODo1NC4xNTcxMjM1 MTkgKzAxMDAKLUBAIC0zMzMyLDkgKzMzMzIsOSBAQCBzdGQ6Om9wdGlvbmFsPERlYnVnUmVwb3J0 Q29vbGRvd24+IERvR2V0Ci0gICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICB9Ci0gCi0tICBy ZXR1cm4gRGVidWdSZXBvcnRDb29sZG93bihjb29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQu Q29sdW1uVGltZSgwKSwKLSsgIHJldHVybiBEZWJ1Z1JlcG9ydENvb2xkb3due2Nvb2xkb3duX2Rl YnVnZ2luZ19vbmx5X3JlcG9ydC5Db2x1bW5UaW1lKDApLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgc3RhdGljX2Nhc3Q8RGVidWdSZXBvcnRDb29sZG93blR5cGU+KAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2xkb3duX2RlYnVnZ2luZ19vbmx5X3JlcG9ydC5D b2x1bW5JbnQoMSkpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29sZG93 bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uSW50KDEpKX07Ci0gfQotIAotIHZvaWQgRG9H ZXREZWJ1Z1JlcG9ydENvb2xkb3ducygKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX2F1Y3Rpb24uY2Mu bWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAv aW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX2F1Y3Rpb24uY2MubWUJ MjAyNC0wMi0yNSAwMDoyMDozMy41MzU5MDc5ODEgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0 aW9uLmNjCTIwMjQtMDItMjUgMDA6MjE6MDEuMDgyNDAyNjEwICswMTAwCi1AQCAtNTAxLDcgKzUw MSw3IEBAIGJvb2wgU2FtcGxlRGVidWdSZXBvcnQoCi0gICAgICAgICAgID8gRGVidWdSZXBvcnRD b29sZG93blR5cGU6OmtTaG9ydENvb2xkb3duCi0gICAgICAgICAgIDogRGVidWdSZXBvcnRDb29s ZG93blR5cGU6OmtSZXN0cmljdGVkQ29vbGRvd247Ci0gICBuZXdfZGVidWdfcmVwb3J0X2xvY2tv dXRfYW5kX2Nvb2xkb3ducy5kZWJ1Z19yZXBvcnRfY29vbGRvd25fbWFwW29yaWdpbl0gPQotLSAg ICAgIERlYnVnUmVwb3J0Q29vbGRvd24obm93LCBjb29sZG93bl90eXBlKTsKLSsgICAgICBEZWJ1 Z1JlcG9ydENvb2xkb3due25vdywgY29vbGRvd25fdHlwZX07Ci0gICBiYXNlOjpVbWFIaXN0b2dy YW1FbnVtZXJhdGlvbigKLSAgICAgICAiQWRzLkludGVyZXN0R3JvdXAuQXVjdGlvbi5Gb3JEZWJ1 Z2dpbmdPbmx5Q29vbGRvd25UeXBlIiwgY29vbGRvd25fdHlwZSk7Ci0gCi1kaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3Rp ZmljYXRpb25fc2VydmljZS5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgKLS0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmlj YXRpb25fc2VydmljZS5oLm1lCTIwMjQtMDItMjUgMTU6MzQ6MTYuMTQwNzY4NDQ1ICswMTAwCi0r KysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21l bnVfbm90aWZpY2F0aW9uX3NlcnZpY2UuaAkyMDI0LTAyLTI1IDE1OjM3OjQ3Ljc4OTY2NTgzNSAr MDEwMAotQEAgLTI0LDYgKzI0LDcgQEAgc3RydWN0IE1lbnVOb3RpZmljYXRpb25FbnRyeSB7Ci0g ICBpbnQgY29tbWFuZCA9IDA7Ci0gICBzdGQ6OnUxNnN0cmluZyBsYWJlbDsKLSAgIHNhZmV0eV9o dWI6OlNhZmV0eUh1Yk1vZHVsZVR5cGUgbW9kdWxlOwotKyAgTWVudU5vdGlmaWNhdGlvbkVudHJ5 KGF1dG8gYywgYXV0byBsLCBhdXRvIG0pIDogY29tbWFuZChjKSwgbGFiZWwobCksIG1vZHVsZSht KSB7IH0KLSB9OwotIAotIG5hbWVzcGFjZSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjLm1lIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJfc3R5 bGVfdmlld3MuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3Vp L3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjLm1lCTIwMjQtMDItMjUgMTY6MjI6NDYuNjAx MjA5MjY5ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91 aS92aWV3cy90YWJzL3RhYl9zdHlsZV92aWV3cy5jYwkyMDI0LTAyLTI1IDE2OjI0OjQ4LjExMDYx ODQ3NSArMDEwMAotQEAgLTEyMTQsMTAgKzEyMTQsMTAgQEAgU2tQYXRoIENocm9tZVJlZnJlc2gy MDIzVGFiU3R5bGVWaWV3czo6RwotIAotICAgICAvLyBSYWRpaSBhcmUgY2xvY2t3aXNlIGZyb20g dG9wIGxlZnQuCi0gICAgIGNvbnN0IFNrVmVjdG9yIHJhZGlpWzRdID0gewotLSAgICAgICAgU2tW ZWN0b3IodG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1 cyksCi0tICAgICAgICBTa1ZlY3Rvcih0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3BfY29u dGVudF9jb3JuZXJfcmFkaXVzKSwKLS0gICAgICAgIFNrVmVjdG9yKGJvdHRvbV9jb250ZW50X2Nv cm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAotLSAgICAgICAgU2tW ZWN0b3IoYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29ybmVy X3JhZGl1cyl9OwotKyAgICAgICAgU2tWZWN0b3J7dG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywg dG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1c30sCi0rICAgICAgICBTa1ZlY3Rvcnt0b3BfY29udGVu dF9jb3JuZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzfSwKLSsgICAgICAgIFNr VmVjdG9ye2JvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5l cl9yYWRpdXN9LAotKyAgICAgICAgU2tWZWN0b3J7Ym90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1 cywgYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1c319OwotICAgICBTa1JSZWN0IHJyZWN0Owot ICAgICBycmVjdC5zZXRSZWN0UmFkaWkoU2tSZWN0OjpNYWtlTFRSQihsZWZ0LCB0b3AsIHJpZ2h0 LCBib3R0b20pLCByYWRpaSk7Ci0gICAgIFNrUGF0aCBwYXRoOwotZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2Zp bGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MubWUgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lz dGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1f YWNjZXNzX3Blcm1pc3Npb25fY29udGV4dC5jYy5tZQkyMDI0LTAyLTI1IDE4OjQ5OjMyLjUxMjA4 MDA4NSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZmls ZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9jb250 ZXh0LmNjCTIwMjQtMDItMjUgMTk6MDc6MzYuNTE4NzExNjkzICswMTAwCi1AQCAtMzg2LDcgKzM4 Niw3IEBAIGJvb2wgU2hvdWxkQmxvY2tBY2Nlc3NUb1BhdGgoY29uc3QgYmFzZToKLSAgICAgICBE Q0hFQ0soYmxvY2sucGF0aCk7Ci0gICAgICAgYmxvY2tlZF9wYXRoID0gYmFzZTo6RmlsZVBhdGgo YmxvY2sucGF0aCk7Ci0gICAgIH0KLS0gICAgcnVsZXMuZW1wbGFjZV9iYWNrKGJsb2NrZWRfcGF0 aCwgYmxvY2sudHlwZSk7Ci0rICAgIHJ1bGVzLmVtcGxhY2VfYmFjaygpID0ge2Jsb2NrZWRfcGF0 aCwgYmxvY2sudHlwZX07Ci0gICB9Ci0gCi0gICBiYXNlOjpGaWxlUGF0aCBuZWFyZXN0X2FuY2Vz dG9yOwotQEAgLTE1NzUsMTEgKzE1NzUsMTEgQEAgdm9pZCBDaHJvbWVGaWxlU3lzdGVtQWNjZXNz UGVybWlzc2lvbkNvbgotICAgLy8gcHJvZmlsZSdzIGRpcmVjdG9yeSwgYXNzdW1pbmcgdGhlIHBy b2ZpbGUgZGlyIGlzIGEgY2hpbGQgb2YgdGhlIHVzZXIgZGF0YQotICAgLy8gZGlyLgotICAgc3Rk Ojp2ZWN0b3I8QmxvY2tQYXRoUnVsZT4gZXh0cmFfcnVsZXM7Ci0tICBleHRyYV9ydWxlcy5lbXBs YWNlX2JhY2socHJvZmlsZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtCbG9ja0FsbENoaWxkcmVu KTsKLSsgIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjaygpID0ge3Byb2ZpbGVfLT5HZXRQYXRoKCku RGlyTmFtZSgpLCBrQmxvY2tBbGxDaGlsZHJlbn07Ci0gICBpZiAoZ19icm93c2VyX3Byb2Nlc3Mt PnByb2ZpbGVfbWFuYWdlcigpKSB7Ci0tICAgIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjaygKLSsg ICAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBnX2Jyb3dzZXJfcHJv Y2Vzcy0+cHJvZmlsZV9tYW5hZ2VyKCktPnVzZXJfZGF0YV9kaXIoKSwKLS0gICAgICAgIGtCbG9j a0FsbENoaWxkcmVuKTsKLSsgICAgICAgIGtCbG9ja0FsbENoaWxkcmVufTsKLSAgIH0KLSAKLSAg IGJhc2U6OlRocmVhZFBvb2w6OlBvc3RUYXNrQW5kUmVwbHlXaXRoUmVzdWx0KAotZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5hZ2Vy L21lY2hhbmlzbXMvcGFnZV9kaXNjYXJkZXIuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5hZ2VyL21lY2hhbmlzbXMvcGFnZV9kaXNjYXJk ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3BlcmZvcm1h bmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRlci5jYy5tZQkyMDI0LTAyLTI1IDE5 OjE0OjE2LjIyNzg0MzE0OCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdlci9tZWNoYW5pc21zL3BhZ2VfZGlzY2FyZGVyLmNj CTIwMjQtMDItMjUgMTk6MTU6MDQuNTg5MzA3NDY4ICswMTAwCi1AQCAtNTMsNyArNTMsNyBAQCBz dGQ6OnZlY3RvcjxQYWdlRGlzY2FyZGVyOjpEaXNjYXJkRXZlbnQ+Ci0gICAgIGlmIChsaWZlY3lj bGVfdW5pdC0+RGlzY2FyZFRhYigKLSAgICAgICAgICAgICBkaXNjYXJkX3JlYXNvbiwKLSAgICAg ICAgICAgICAvKm1lbW9yeV9mb290cHJpbnRfZXN0aW1hdGU9Ki9wcm94eS5zZWNvbmQpKSB7Ci0t ICAgICAgZGlzY2FyZF9ldmVudHMuZW1wbGFjZV9iYWNrKGJhc2U6OlRpbWVUaWNrczo6Tm93KCks IHByb3h5LnNlY29uZCk7Ci0rICAgICAgZGlzY2FyZF9ldmVudHMuZW1wbGFjZV9iYWNrKCkgPSB7 YmFzZTo6VGltZVRpY2tzOjpOb3coKSwgcHJveHkuc2Vjb25kfTsKLSAgICAgfQotICAgfQotICAg cmV0dXJuIGRpc2NhcmRfZXZlbnRzOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9l eHRlbnNpb25zL2Jyb3dzZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1ZS5oLm1lIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tfcXVl dWUuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZp Y2Vfd29ya2VyX3Rhc2tfcXVldWUuaC5tZQkyMDI0LTAyLTI1IDE3OjI2OjI1LjYyMzU3MjQ1OCAr MDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZp Y2Vfd29ya2VyX3Rhc2tfcXVldWUuaAkyMDI0LTAyLTI1IDE3OjI5OjUyLjk4MzM0NTI4MCArMDEw MAotQEAgLTIwNCw2ICsyMDQsNyBAQCBjbGFzcyBTZXJ2aWNlV29ya2VyVGFza1F1ZXVlIDogcHVi bGljIEtlCi0gICAgIHJhd19wdHI8Y29udGVudDo6QnJvd3NlckNvbnRleHQ+IGJyb3dzZXJfY29u dGV4dDsKLSAgICAgYmFzZTo6VW5ndWVzc2FibGVUb2tlbiB0b2tlbjsKLSAKLSsgICAgU2VxdWVu Y2VkQ29udGV4dElkKGF1dG8gZSwgYXV0byBiLCBhdXRvIHQpIDogZXh0ZW5zaW9uX2lkKGUpLCBi cm93c2VyX2NvbnRleHQoYiksIHRva2VuKHQpIHsgfQotICAgICBib29sIG9wZXJhdG9yPChjb25z dCBTZXF1ZW5jZWRDb250ZXh0SWQmIHJocykgY29uc3QgewotICAgICAgIHJldHVybiBzdGQ6OnRp ZShleHRlbnNpb25faWQsIGJyb3dzZXJfY29udGV4dCwgdG9rZW4pIDwKLSAgICAgICAgICAgICAg c3RkOjp0aWUocmhzLmV4dGVuc2lvbl9pZCwgcmhzLmJyb3dzZXJfY29udGV4dCwgcmhzLnRva2Vu KTsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcmVuZGVy ZXJfY29udGV4dF9tZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVudS5jYy5tZSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3JlbmRlcmVyX2NvbnRleHRfbWVudS9yZW5kZXJf dmlld19jb250ZXh0X21lbnUuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL3JlbmRlcmVyX2NvbnRleHRfbWVudS9yZW5kZXJfdmlld19jb250ZXh0X21lbnUuY2Mu bWUJMjAyNC0wMi0yNSAyMDowNTo0MC41Njc4OTEwNzcgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3JlbmRlcmVyX2NvbnRleHRfbWVudS9yZW5kZXJfdmll d19jb250ZXh0X21lbnUuY2MJMjAyNC0wMi0yNSAyMDowNTo0Ni40MDcwMDE5OTcgKzAxMDAKLUBA IC0zOTkzLDEwICszOTkzLDEwIEBAIHZvaWQgUmVuZGVyVmlld0NvbnRleHRNZW51OjpFeGVjT3Bl bkNvbXAKLSAgICAgYXV0b2ZpbGw6OkxvY2FsRnJhbWVUb2tlbiBmcmFtZV90b2tlbiA9IGRyaXZl ci0+R2V0RnJhbWVUb2tlbigpOwotICAgICBjbGllbnQtPkdldE1hbmFnZXIoKS5PcGVuQ29tcG9z ZSgKLSAgICAgICAgICpkcml2ZXIsCi0tICAgICAgICBhdXRvZmlsbDo6Rm9ybUdsb2JhbElkKAot LSAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6Rm9ybVJlbmRlcmVySWQocGFyYW1z Xy5mb3JtX3JlbmRlcmVyX2lkKSksCi0tICAgICAgICBhdXRvZmlsbDo6RmllbGRHbG9iYWxJZCgK LS0gICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZpZWxkUmVuZGVyZXJJZChwYXJh bXNfLmZpZWxkX3JlbmRlcmVyX2lkKSksCi0rICAgICAgICBhdXRvZmlsbDo6Rm9ybUdsb2JhbElk ewotKyAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6Rm9ybVJlbmRlcmVySWQocGFy YW1zXy5mb3JtX3JlbmRlcmVyX2lkKX0sCi0rICAgICAgICBhdXRvZmlsbDo6RmllbGRHbG9iYWxJ ZHsKLSsgICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZpZWxkUmVuZGVyZXJJZChw YXJhbXNfLmZpZWxkX3JlbmRlcmVyX2lkKX0sCi0gICAgICAgICBjb21wb3NlOjpDb21wb3NlTWFu YWdlckltcGw6OlVpRW50cnlQb2ludDo6a0NvbnRleHRNZW51KTsKLSAgICAgbmV3X2JhZGdlX3Ry YWNrZXJfLkFjdGlvblBlcmZvcm1lZCgiY29tcG9zZV9tZW51X2l0ZW1fYWN0aXZhdGVkIik7Ci0g ICB9IGVsc2UgewoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMi1weXRob24zLWFzc2lnbm1lbnQt ZXhwcmVzc2lvbnMucGF0Y2ggYi9jaHJvbWl1bS0xMjItcHl0aG9uMy1hc3NpZ25tZW50LWV4cHJl c3Npb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MWNlMDM3Li4wMDAw MDAwCi0tLSBhL2Nocm9taXVtLTEyMi1weXRob24zLWFzc2lnbm1lbnQtZXhwcmVzc2lvbnMucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjIu MC42MjYxLjU3L3Rvb2xzL2pzb25fdG9fc3RydWN0L2pzb25fdG9fc3RydWN0LnB5Lm1lIGNocm9t aXVtLTEyMi4wLjYyNjEuNTcvdG9vbHMvanNvbl90b19zdHJ1Y3QvanNvbl90b19zdHJ1Y3QucHkK LS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjU3L3Rvb2xzL2pzb25fdG9fc3RydWN0L2pzb25fdG9f c3RydWN0LnB5Lm1lCTIwMjQtMDItMjMgMTI6MDQ6NDUuNDUxNDIzOTk1ICswMTAwCi0rKysgY2hy b21pdW0tMTIyLjAuNjI2MS41Ny90b29scy9qc29uX3RvX3N0cnVjdC9qc29uX3RvX3N0cnVjdC5w eQkyMDI0LTAyLTIzIDEyOjE4OjA0LjA5OTgyNDM5MiArMDEwMAotQEAgLTEyNCw3ICsxMjQsOCBA QCBkZWYgX0dlbmVyYXRlSChiYXNlcGF0aCwgZmlsZXJvb3QsIGhlYWQsCi0gICAgIGYud3JpdGUo dScjaW5jbHVkZSA8Y3N0ZGRlZj5cbicpCi0gICAgIGYud3JpdGUodSdcbicpCi0gCi0tICAgIGlm IHN5c3RlbV9oZWFkZXJzIDo9IHNjaGVtYS5nZXQodSdzeXN0ZW0taGVhZGVycycsIFtdKToKLSsg ICAgc3lzdGVtX2hlYWRlcnMgPSBzY2hlbWEuZ2V0KHUnc3lzdGVtLWhlYWRlcnMnLCBbXSkKLSsg ICAgaWYgc3lzdGVtX2hlYWRlcnM6Ci0gICAgICAgZm9yIGhlYWRlciBpbiBzeXN0ZW1faGVhZGVy czoKLSAgICAgICAgIGYud3JpdGUodScjaW5jbHVkZSA8JXM+XG4nICUgaGVhZGVyKQotICAgICAg IGYud3JpdGUodSdcbicpCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTIyLXN0YXRpYy1hc3NlcnQu cGF0Y2ggYi9jaHJvbWl1bS0xMjItc3RhdGljLWFzc2VydC5wYXRjaApkZWxldGVkIGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggYjI0NDM5Zi4uMDAwMDAwMAotLS0gYS9jaHJvbWl1bS0xMjItc3RhdGlj LWFzc2VydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLWNvbW1pdCAwNDg2 NjY4MGY0ZjlhODQ3NWFlMzc5NWFkNmVkNTk2NDliYTQ3OGQ3Ci1BdXRob3I6IEpvc2UgRGFwZW5h IFBheiA8amRhcGVuYUBpZ2FsaWEuY29tPgotRGF0ZTogICBUdWUgSmFuIDIzIDEyOjA0OjA1IDIw MjQgKzAwMDAKLQotICAgIGxpYnN0ZGMrKzogZml4IHN0YXRpYyBhc3NlcnRpb24gaW4gTm9kZVV1 aWRFcXVhbGl0eQotICAgIAotICAgIGxpYnN0ZGMrKyBlcXVhbGl0eSBjaGVja3MgaW4gc3RhdGlj IGFzc2VydGlvbiB0aGF0IGl0IGlzIHBvc3NpYmxlIHRvCi0gICAgY29tcGFyZSBmb3IgZXF1YWxp dHkgYmFzZTo6VXVpZCB0byBCb29rbWFya05vZGUqLiBUaGlzIHdhcyBhIG1pc3NpbmcKLSAgICBv cGVyYXRvciBpbiBOb2RlVXVpZEVxdWFsaXR5IHRoYXQgdGhpcyBjaGFuZ2VzZXQgYWRkcy4KLSAg ICAKLSAgICBCdWc6IDk1NzUxOQotICAgIENoYW5nZS1JZDogSWNjOTgwOWNiNDNkMzIxZjBiM2Uz Mzk0ZWYyN2FiNTU2NzJhZWM1ZTcKLSAgICBSZXZpZXdlZC1vbjogaHR0cHM6Ly9jaHJvbWl1bS1y ZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8rLzUyMjc2ODYKLSAgICBSZXZp ZXdlZC1ieTogTWlrZWwgQXN0aXogPG1hc3RpekBjaHJvbWl1bS5vcmc+Ci0gICAgQ29tbWl0LVF1 ZXVlOiBKb3PDqSBEYXBlbmEgUGF6IDxqZGFwZW5hQGlnYWxpYS5jb20+Ci0gICAgQ3ItQ29tbWl0 LVBvc2l0aW9uOiByZWZzL2hlYWRzL21haW5AeyMxMjUwNzUzfQotCi1kaWZmIC0tZ2l0IGEvY29t cG9uZW50cy9ib29rbWFya3MvYnJvd3Nlci91dWlkX2luZGV4LmggYi9jb21wb25lbnRzL2Jvb2tt YXJrcy9icm93c2VyL3V1aWRfaW5kZXguaAotaW5kZXggNzdjYjFhMWE1NGRkOS4uNjM5ZDZmZWZj ZDgzMSAxMDA2NDQKLS0tLSBhL2NvbXBvbmVudHMvYm9va21hcmtzL2Jyb3dzZXIvdXVpZF9pbmRl eC5oCi0rKysgYi9jb21wb25lbnRzL2Jvb2ttYXJrcy9icm93c2VyL3V1aWRfaW5kZXguaAotQEAg LTIzLDYgKzIzLDEwIEBAIGNsYXNzIE5vZGVVdWlkRXF1YWxpdHkgewotICAgYm9vbCBvcGVyYXRv cigpKGNvbnN0IEJvb2ttYXJrTm9kZSogbjEsIGNvbnN0IGJhc2U6OlV1aWQmIHV1aWQyKSBjb25z dCB7Ci0gICAgIHJldHVybiBuMS0+dXVpZCgpID09IHV1aWQyOwotICAgfQotKwotKyAgYm9vbCBv cGVyYXRvcigpKGNvbnN0IGJhc2U6OlV1aWQmIHV1aWQxLCBjb25zdCBCb29rbWFya05vZGUqIG4y KSBjb25zdCB7Ci0rICAgIHJldHVybiB1dWlkMSA9PSBuMi0+dXVpZCgpOwotKyAgfQotIH07Ci0g Ci0gLy8gVXNlZCB0byBoYXNoIEJvb2ttYXJrTm9kZSBpbnN0YW5jZXMgYnkgVVVJRC4KCmRpZmYg LS1naXQgYS9jaHJvbWl1bS0xMjItdHlwZW5hbWUucGF0Y2ggYi9jaHJvbWl1bS0xMjItdHlwZW5h bWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmYzgwNzkuLjAwMDAwMDAK LS0tIGEvY2hyb21pdW0tMTIyLXR5cGVuYW1lLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzg1 ICswLDAgQEAKLQotZml4ZWQgZXJyb3I6IG1pc3NpbmcgJ3R5cGVuYW1lJyBwcmlvciB0byBkZXBl bmRlbnQgdHlwZSBuYW1lCi0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9j b250YWluZXJzL21hcF91dGlsLmgudHlwZW5hbWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNl L2NvbnRhaW5lcnMvbWFwX3V0aWwuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9j b250YWluZXJzL21hcF91dGlsLmgudHlwZW5hbWUJMjAyNC0wMi0yMiAyMjo0Mjo0My4wMDAwMDAw MDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvY29udGFpbmVycy9tYXBf dXRpbC5oCTIwMjQtMDItMjQgMTU6MDU6MDAuODgyNTkyNzA1ICswMTAwCi1AQCAtNDIsNyArNDIs NyBAQCBjb25zdGV4cHIgaW50ZXJuYWw6Ok1hcHBlZFR5cGU8TWFwPiogRmluCi0gdGVtcGxhdGUg PHR5cGVuYW1lIE1hcCwKLSAgICAgICAgICAgdHlwZW5hbWUgS2V5LAotICAgICAgICAgICB0eXBl bmFtZSBNYXBwZWRFbGVtZW50VHlwZSA9Ci0tICAgICAgICAgICAgICBzdGQ6OnBvaW50ZXJfdHJh aXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+Ci0rICAgICAgICAg ICAgICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1h cD4+OjplbGVtZW50X3R5cGU+Ci0gY29uc3RleHByIGNvbnN0IE1hcHBlZEVsZW1lbnRUeXBlKiBG aW5kUHRyT3JOdWxsKGNvbnN0IE1hcCYgbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBLZXkmIGtleSkgewotICAgYXV0byBpdCA9IG1h cC5maW5kKGtleSk7Ci1AQCAtNTgsNyArNTgsNyBAQCBjb25zdGV4cHIgY29uc3QgTWFwcGVkRWxl bWVudFR5cGUqIEZpbmRQCi0gdGVtcGxhdGUgPHR5cGVuYW1lIE1hcCwKLSAgICAgICAgICAgdHlw ZW5hbWUgS2V5LAotICAgICAgICAgICB0eXBlbmFtZSBNYXBwZWRFbGVtZW50VHlwZSA9Ci0tICAg ICAgICAgICAgICBzdGQ6OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+ OjplbGVtZW50X3R5cGU+Ci0rICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJfdHJh aXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+Ci0gY29uc3RleHBy IE1hcHBlZEVsZW1lbnRUeXBlKiBGaW5kUHRyT3JOdWxsKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtl eSkgewotICAgYXV0byBpdCA9IG1hcC5maW5kKGtleSk7Ci0gICByZXR1cm4gaXQgIT0gbWFwLmVu ZCgpID8gc3RkOjp0b19hZGRyZXNzKGl0LT5zZWNvbmQpIDogbnVsbHB0cjsKLWRpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9mdW5jdGlvbmFsL2JpbmRfaW50ZXJuYWwuaC50eXBl bmFtZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvZnVuY3Rpb25hbC9iaW5kX2ludGVybmFs LmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvZnVuY3Rpb25hbC9iaW5kX2ludGVy bmFsLmgudHlwZW5hbWUJMjAyNC0wMi0yNCAxNTowNTowMC44ODM1OTI3MjQgKzAxMDAKLSsrKyBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvZnVuY3Rpb25hbC9iaW5kX2ludGVybmFsLmgJMjAy NC0wMi0yNCAxNToxMzo0OS43NTUyMjM1MzMgKzAxMDAKLUBAIC0xNDAwLDExICsxNDAwLDExIEBA IHRlbXBsYXRlIDxpbnQgaSwKLSAgICAgICAgICAgdHlwZW5hbWUgUGFyYW0+Ci0gc3RydWN0IFBh cmFtQ2FuQmVCb3VuZCB7Ci0gIHByaXZhdGU6Ci0tICB1c2luZyBVbndyYXBwZWRQYXJhbSA9IEJp bmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgRm9yd2FyZGVkQXM8Ci0rICB1c2luZyBVbndyYXBwZWRQ YXJhbSA9IHR5cGVuYW1lIEJpbmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgRm9yd2FyZGVkQXM8Ci0g ICAgICAgVW53cmFwcGVkPjo6dGVtcGxhdGUgVG9QYXJhbVdpdGhUeXBlPFBhcmFtPjsKLS0gIHVz aW5nIFBhcmFtU3RvcmFnZSA9IEJpbmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgVG9QYXJhbVdpdGhU eXBlPAotKyAgdXNpbmcgUGFyYW1TdG9yYWdlID0gdHlwZW5hbWUgQmluZEFyZ3VtZW50PGk+Ojp0 ZW1wbGF0ZSBUb1BhcmFtV2l0aFR5cGU8Ci0gICAgICAgUGFyYW0+Ojp0ZW1wbGF0ZSBTdG9yZWRB czxTdG9yYWdlPjsKLS0gIHVzaW5nIEJvdW5kU3RvcmFnZSA9Ci0rICB1c2luZyBCb3VuZFN0b3Jh Z2UgPSB0eXBlbmFtZQotICAgICAgIEJpbmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgQm91bmRBczxB cmc+Ojp0ZW1wbGF0ZSBTdG9yZWRBczxTdG9yYWdlPjsKLSAKLSAgIHRlbXBsYXRlIDxib29sIHYg PSAhVW53cmFwcGVkUGFyYW06OmtSYXdQdHIgfHwKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY2hyb21lL2Jyb3dzZXIvZG93bmxvYWQvYnViYmxlL2Rvd25sb2FkX2J1YmJsZV91cGRh dGVfc2VydmljZS5jYy50eXBlbmFtZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93 c2VyL2Rvd25sb2FkL2J1YmJsZS9kb3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MKLS0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2Rvd25sb2FkL2J1YmJsZS9k b3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MudHlwZW5hbWUJMjAyNC0wMi0yMiAyMjo0 Mjo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL2Rvd25sb2FkL2J1YmJsZS9kb3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MJ MjAyNC0wMi0yNCAxNTowNTowMC44ODI1OTI3MDUgKzAxMDAKLUBAIC05MCw3ICs5MCw3IEBAIEl0 ZW1Tb3J0S2V5IEdldFNvcnRLZXkoY29uc3QgSXRlbSYgaXRlbSkKLSAvLyBIZWxwZXIgdG8gZ2V0 IGFuIGl0ZXJhdG9yIHRvIHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGNhY2hlLiBUaGUgY2FjaGUK LSAvLyBtdXN0IG5vdCBiZSBlbXB0eS4KLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlbT4KLS1Tb3J0 ZWRJdGVtczxJdGVtPjo6Y29uc3RfaXRlcmF0b3IgR2V0TGFzdEl0ZXIoY29uc3QgU29ydGVkSXRl bXM8SXRlbT4mIGNhY2hlKSB7Ci0rdHlwZW5hbWUgU29ydGVkSXRlbXM8SXRlbT46OmNvbnN0X2l0 ZXJhdG9yIEdldExhc3RJdGVyKGNvbnN0IFNvcnRlZEl0ZW1zPEl0ZW0+JiBjYWNoZSkgewotICAg Q0hFQ0soIWNhY2hlLmVtcHR5KCkpOwotICAgYXV0byBpdCA9IGNhY2hlLmVuZCgpOwotICAgcmV0 dXJuIHN0ZDo6cHJldihpdCk7Ci1AQCAtMTA5MCw5ICsxMDkwLDkgQEAgYm9vbCBEb3dubG9hZEJ1 YmJsZVVwZGF0ZVNlcnZpY2U6OkNhY2hlTQotIH0KLSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgSWQs IHR5cGVuYW1lIEl0ZW0+Ci0tU29ydGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yCi0rdHlwZW5hbWUg U29ydGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yCi0gRG93bmxvYWRCdWJibGVVcGRhdGVTZXJ2aWNl OjpDYWNoZU1hbmFnZXI6OlJlbW92ZUl0ZW1Gcm9tQ2FjaGVCeUl0ZXIoCi0tICAgIFNvcnRlZEl0 ZW1zPEl0ZW0+OjppdGVyYXRvciBpdGVyLAotKyAgICB0eXBlbmFtZSBTb3J0ZWRJdGVtczxJdGVt Pjo6aXRlcmF0b3IgaXRlciwKLSAgICAgU29ydGVkSXRlbXM8SXRlbT4mIGNhY2hlLAotICAgICBJ dGVyTWFwPElkLCBJdGVtPiYgaXRlcl9tYXApIHsKLSAgIENIRUNLKGl0ZXIgIT0gY2FjaGUuZW5k KCkpOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXph dGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oLnR5 cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3Vp ZGUvY29yZS9tb2RlbF9leGVjdXRpb24vbW9kZWxfZXhlY3V0aW9uX3V0aWwuaAotLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2Rl bF9leGVjdXRpb24vbW9kZWxfZXhlY3V0aW9uX3V0aWwuaC50eXBlbmFtZQkyMDI0LTAyLTIyIDIy OjQzOjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9u ZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9leGVjdXRpb24vbW9kZWxfZXhlY3V0 aW9uX3V0aWwuaAkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4NDU5Mjc0MiArMDEwMAotQEAgLTI1LDcg KzI1LDcgQEAgdm9pZCBTZXRFeGVjdXRpb25SZXF1ZXN0VGVtcGxhdGUoCi0gCi0gICAvLyBSZXF1 ZXN0IGlzIHNldCBieSB0aGUgZmVhdHVyZSBhbmQgc2hvdWxkIGFsd2F5cyBiZSB0eXBlZC4KLSAg IGF1dG8gdHlwZWRfcmVxdWVzdCA9Ci0tICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRmVhdHVyZVR5 cGU6OlJlcXVlc3QmPihyZXF1ZXN0X21ldGFkYXRhKTsKLSsgICAgICBzdGF0aWNfY2FzdDxjb25z dCB0eXBlbmFtZSBGZWF0dXJlVHlwZTo6UmVxdWVzdCY+KHJlcXVlc3RfbWV0YWRhdGEpOwotICAg Kihsb2dnaW5nX2RhdGEtPm11dGFibGVfcmVxdWVzdF9kYXRhKCkpID0gdHlwZWRfcmVxdWVzdDsK LSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0aW1p emF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xvZ19lbnRyeS5o LnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25f Z3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgKLS0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUv bW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xvZ19lbnRyeS5oLnR5cGVuYW1lCTIwMjQtMDIt MjIgMjI6NDM6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX3F1YWxpdHkvbW9kZWxfcXVh bGl0eV9sb2dfZW50cnkuaAkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4NDU5Mjc0MiArMDEwMAotQEAg LTI5LDcgKzI5LDcgQEAgY2xhc3MgTW9kZWxRdWFsaXR5TG9nRW50cnkgewotICAgfQotIAotICAg dGVtcGxhdGUgPHR5cGVuYW1lIEZlYXR1cmVUeXBlPgotLSAgRmVhdHVyZVR5cGU6OlF1YWxpdHkq IHF1YWxpdHlfZGF0YSgpIHsKLSsgIHR5cGVuYW1lIEZlYXR1cmVUeXBlOjpRdWFsaXR5KiBxdWFs aXR5X2RhdGEoKSB7Ci0gICAgIHJldHVybiBGZWF0dXJlVHlwZTo6R2V0TG9nZ2luZ0RhdGEoKmxv Z19haV9kYXRhX3JlcXVlc3RfKQotICAgICAgICAgLT5tdXRhYmxlX3F1YWxpdHlfZGF0YSgpOwot ICAgfQotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXph dGlvbl9ndWlkZS9jb3JlL3RmbGl0ZV9tb2RlbF9leGVjdXRvci5oLnR5cGVuYW1lIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS90ZmxpdGVf bW9kZWxfZXhlY3V0b3IuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9v cHRpbWl6YXRpb25fZ3VpZGUvY29yZS90ZmxpdGVfbW9kZWxfZXhlY3V0b3IuaC50eXBlbmFtZQky MDI0LTAyLTIyIDIyOjQzOjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS90ZmxpdGVfbW9kZWxfZXhl Y3V0b3IuaAkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4MzU5MjcyNCArMDEwMAotQEAgLTI0MSw3ICsy NDEsNyBAQCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGljIE1vZGVsCi0gICB2b2lk IFNlbmRGb3JCYXRjaEV4ZWN1dGlvbigKLSAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNh bGxiYWNrX29uX2NvbXBsZXRlLAotICAgICAgIGJhc2U6OlRpbWVUaWNrcyBzdGFydF90aW1lLAot LSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1 dFZlY3RvciBpbnB1dHMpCi0rICAgICAgdHlwZW5hbWUgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBl LCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cykKLSAgICAgICBvdmVycmlk ZSB7Ci0gICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJl bnRTZXF1ZW5jZSgpKTsKLSAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1 ZW5jZV9jaGVja2VyXyk7Ci1AQCAtMjYzLDcgKzI2Myw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhl Y3V0b3IgOiBwdWJsaWMgTW9kZWwKLSAgIC8vIFN0YXJ0cyB0aGUgc3luY2hyb25vdXMgZXhlY3V0 aW9uIG9mIHRoZSBtb2RlbC4gUmV0dXJucyBtb2RlbCBvdXRwdXRzLgotICAgLy8gTW9kZWwgbmVl ZHMgdG8gYmUgbG9hZGVkLiBTeW5jaHJvbm91cyBjYWxscyBkbyBub3QgbG9hZCBvciB1bmxvYWQg bW9kZWwuCi0gICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDxPdXRwdXRUeXBlPj4gU2VuZEZv ckJhdGNoRXhlY3V0aW9uU3luYygKLS0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElu cHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQotKyAgICAgIHR5cGVuYW1lIE1v ZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBp bnB1dHMpCi0gICAgICAgb3ZlcnJpZGUgewotICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVu bmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7Ci0gICAgIERDSEVDS19DQUxMRURf T05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotQEAgLTQyMSw3ICs0MjEsNyBA QCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGljIE1vZGVsCi0gICAvLyBleGVjdXRl cyBpdCBvbiB0aGUgbW9kZWwgZXhlY3V0aW9uIHRocmVhZC4KLSAgIHZvaWQgTG9hZE1vZGVsRmls ZUFuZEJhdGNoRXhlY3V0ZSgKLSAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNr X29uX2NvbXBsZXRlLAotLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBl Pjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpIHsKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4 ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRz KSB7Ci0gICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJl bnRTZXF1ZW5jZSgpKTsKLSAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1 ZW5jZV9jaGVja2VyXyk7Ci0gCi1AQCAtNDM4LDcgKzQzOCw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVs RXhlY3V0b3IgOiBwdWJsaWMgTW9kZWwKLSAKLSAgIC8vIEJhdGNoIGV4ZWN1dGVzIHRoZSBsb2Fk ZWQgbW9kZWwgZm9yIGlucHV0cy4KLSAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9hZGVkTW9kZWwoCi0t ICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0 VmVjdG9yIGlucHV0cywKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUs IElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAotICAgICAgIHN0ZDo6dmVj dG9yPGFic2w6Om9wdGlvbmFsPE91dHB1dFR5cGU+Piogb3V0cHV0cykgewotICAgICBEQ0hFQ0so ZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7Ci0g ICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwot QEAgLTQ5OCw3ICs0OTgsNyBAQCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGljIE1v ZGVsCi0gICAvLyBVbmxvYWRzIHRoZSBtb2RlbCBpZiBuZWVkZWQuCi0gICB2b2lkIEJhdGNoRXhl Y3V0ZUxvYWRlZE1vZGVsQW5kUnVuQ2FsbGJhY2soCi0gICAgICAgQmF0Y2hFeGVjdXRpb25DYWxs YmFjayBjYWxsYmFja19vbl9jb21wbGV0ZSwKLS0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5 cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAotKyAgICAgIHR5cGVu YW1lIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZl Y3RvciBpbnB1dHMsCi0gICAgICAgRXhlY3V0aW9uU3RhdHVzIGV4ZWN1dGlvbl9zdGF0dXMpIHsK LSAgICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5lcl8tPlJ1bnNUYXNrc0luQ3VycmVudFNl cXVlbmNlKCkpOwotICAgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNFKHNlcXVlbmNl X2NoZWNrZXJfKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9z dXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuaC50eXBlbmFtZSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvc3VwZXJ2aXNlZF91c2VyL2NvcmUvYnJvd3Nl ci9wcm90b19mZXRjaGVyLmgKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9w dWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0cy5oLnR5cGVuYW1lIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0cy5oCi0tLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRz LmgudHlwZW5hbWUJMjAyNC0wMi0yMiAyMjo0MzoxNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9hcnJheV90cmFpdHMu aAkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4NDU5Mjc0MiArMDEwMAotQEAgLTkwLDcgKzkwLDcgQEAg dGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLSAgICAgeyBjW2ldIH0gLT4gc3RkOjpzYW1l X2FzPHR5cGVuYW1lIENvbnRhaW5lcjo6cmVmZXJlbmNlPjsKLSAgIH0KLSBzdHJ1Y3QgQXJyYXlU cmFpdHM8Q29udGFpbmVyPiB7Ci0tICB1c2luZyBFbGVtZW50ID0gQ29udGFpbmVyOjp2YWx1ZV90 eXBlOwotKyAgdXNpbmcgRWxlbWVudCA9IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZTsK LSAKLSAgIC8vIHZlY3Rvci1saWtlIGNvbnRhaW5lcnMgaGF2ZSBubyBidWlsdC1pbiBudWxsLgot ICAgc3RhdGljIGJvb2wgSXNOdWxsKGNvbnN0IENvbnRhaW5lciYgYykgeyByZXR1cm4gZmFsc2U7 IH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvYmluZGluZ3MvY29yZS92OC9hc3luY19pdGVyYWJsZS5oLnR5cGVuYW1lIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92 OC9hc3luY19pdGVyYWJsZS5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgudHlwZW5h bWUJMjAyNC0wMi0yMiAyMjo0MzoyMC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5 bmNfaXRlcmFibGUuaAkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4MzU5MjcyNCArMDEwMAotQEAgLTIx OCw3ICsyMTgsNyBAQCBjbGFzcyBQYWlyQXN5bmNJdGVyYWJsZSB7Ci0gIHByaXZhdGU6Ci0gICB2 aXJ0dWFsIEl0ZXJhdGlvblNvdXJjZSogQ3JlYXRlSXRlcmF0aW9uU291cmNlKAotICAgICAgIFNj cmlwdFN0YXRlKiBzY3JpcHRfc3RhdGUsCi0tICAgICAgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtp bmQsCi0rICAgICAgdHlwZW5hbWUgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCi0gICAgICAg RXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgPSAwOwotIH07Ci0gCi1AQCAtMjYwLDcg KzI2MCw3IEBAIGNsYXNzIFZhbHVlQXN5bmNJdGVyYWJsZSB7Ci0gIHByaXZhdGU6Ci0gICB2aXJ0 dWFsIEl0ZXJhdGlvblNvdXJjZSogQ3JlYXRlSXRlcmF0aW9uU291cmNlKAotICAgICAgIFNjcmlw dFN0YXRlKiBzY3JpcHRfc3RhdGUsCi0tICAgICAgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQs Ci0rICAgICAgdHlwZW5hbWUgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCi0gICAgICAgRXhj ZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgPSAwOwotIH07Ci0gCi1kaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9w YXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFzdHBhdGguY2MudHlwZW5hbWUgY2hyb21pdW0t MTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2h0bWwvcGFyc2Vy L2h0bWxfZG9jdW1lbnRfcGFyc2VyX2Zhc3RwYXRoLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2h0bWwvcGFyc2VyL2h0bWxfZG9j dW1lbnRfcGFyc2VyX2Zhc3RwYXRoLmNjLnR5cGVuYW1lCTIwMjQtMDItMjQgMTU6MDU6MDAuODgy NTkyNzA1ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9jb3JlL2h0bWwvcGFyc2VyL2h0bWxfZG9jdW1lbnRfcGFyc2VyX2Zhc3RwYXRo LmNjCTIwMjQtMDItMjQgMTU6MTI6MjcuNzQyNzI0ODQ5ICswMTAwCi1AQCAtMjExLDcgKzIxMSw3 IEBAIGNsYXNzIEhUTUxGYXN0UGF0aFBhcnNlciB7Ci0gICB1c2luZyBTcGFuID0gYmFzZTo6c3Bh bjxjb25zdCBDaGFyPjsKLSAgIHVzaW5nIFVTcGFuID0gYmFzZTo6c3Bhbjxjb25zdCBVQ2hhcj47 Ci0gICAvLyAzMiBtYXRjaGVzIHRoYXQgdXNlZCBieSBIVE1MVG9rZW46OkF0dHJpYnV0ZS4KLS0g IHR5cGVkZWYgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX3NhbWVfdjxDaGFyLCBVQ2hhcj4sCi0r ICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19zYW1lX3Y8Q2hhciwg VUNoYXI+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyTGl0ZXJhbEJ1ZmZlcjwz Mj4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgTENoYXJMaXRlcmFsQnVmZmVyPDMyPj46 OnR5cGUgTGl0ZXJhbEJ1ZmZlclR5cGU7Ci0gICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92 PENoYXIsIFVDaGFyPiB8fCBzdGQ6OmlzX3NhbWVfdjxDaGFyLCBMQ2hhcj4pOwotZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3Bh aW50L29iamVjdF9wYWludF9wcm9wZXJ0aWVzX3NwYXJzZS5oLnR5cGVuYW1lIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9vYmplY3Rf cGFpbnRfcHJvcGVydGllc19zcGFyc2UuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9vYmplY3RfcGFpbnRfcHJvcGVydGll c19zcGFyc2UuaC50eXBlbmFtZQkyMDI0LTAyLTIyIDIyOjQzOjIxLjAwMDAwMDAwMCArMDEwMAot KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29y ZS9wYWludC9vYmplY3RfcGFpbnRfcHJvcGVydGllc19zcGFyc2UuaAkyMDI0LTAyLTI0IDE1OjA1 OjAwLjg4MzU5MjcyNCArMDEwMAotQEAgLTI3Miw4ICsyNzIsOCBAQCBjbGFzcyBDT1JFX0VYUE9S VCBPYmplY3RQYWludFByb3BlcnRpZXNTCi0gICAgICAgTm9kZUxpc3QmIG5vZGVzLAotICAgICAg IE5vZGVJZCBub2RlX2lkLAotICAgICAgIGNvbnN0IFBhcmVudFR5cGUmIHBhcmVudCwKLS0gICAg ICBOb2RlVHlwZTo6U3RhdGUmJiBzdGF0ZSwKLS0gICAgICBjb25zdCBOb2RlVHlwZTo6QW5pbWF0 aW9uU3RhdGUmIGFuaW1hdGlvbl9zdGF0ZSA9Ci0rICAgICAgdHlwZW5hbWUgTm9kZVR5cGU6OlN0 YXRlJiYgc3RhdGUsCi0rICAgICAgY29uc3QgdHlwZW5hbWUgTm9kZVR5cGU6OkFuaW1hdGlvblN0 YXRlJiBhbmltYXRpb25fc3RhdGUgPQotICAgICAgICAgICBOb2RlVHlwZTo6QW5pbWF0aW9uU3Rh dGUoKSkgewotICAgICAvLyBGaXJzdCwgY2hlY2sgaWYgd2UgbmVlZCB0byBhZGQgYSBuZXcgbm9k ZS4KLSAgICAgaWYgKCFub2Rlcy5IYXNGaWVsZChub2RlX2lkKSkgewotZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9w YXJ0aXRpb25fYWxsb2MvaW50ZXJuYWxfYWxsb2NhdG9yLmgubWUgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxs b2MvaW50ZXJuYWxfYWxsb2NhdG9yLmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uv YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5h bF9hbGxvY2F0b3IuaC5tZQkyMDI0LTAyLTI0IDE2OjUxOjQxLjI5MjMxMDU1NCArMDEwMAotKysr IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRv ci9zcmMvcGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvci5oCTIwMjQtMDItMjQgMTY6 NTI6MTAuMDIyODk2MDYzICswMTAwCi1AQCAtMjYsNyArMjYsNyBAQCBQYXJ0aXRpb25Sb290JiBJ bnRlcm5hbEFsbG9jYXRvclJvb3QoKTsKLSAKLSAvLyBBIGNsYXNzIHRoYXQgbWVldHMgQysrIG5h bWVkIHJlcXVpcmVtZW50cywgQWxsb2NhdG9yLgotIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLUlu dGVybmFsQWxsb2NhdG9yPFQ+Ojp2YWx1ZV90eXBlKiBJbnRlcm5hbEFsbG9jYXRvcjxUPjo6YWxs b2NhdGUoCi0rdHlwZW5hbWUgSW50ZXJuYWxBbGxvY2F0b3I8VD46OnZhbHVlX3R5cGUqIEludGVy bmFsQWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSgKLSAgICAgc3RkOjpzaXplX3QgY291bnQpIHsKLSAg IFBBX0NIRUNLKGNvdW50IDw9Ci0gICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6 c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YodmFsdWVfdHlwZSkpOwotZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9iYXNlL2Z1bmN0aW9uYWwvZnVuY3Rpb25fcmVmLmgubWUgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9iYXNlL2Z1bmN0aW9uYWwvZnVuY3Rpb25fcmVmLmgKLS0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9yZWYuaC5tZQkyMDI0LTAy LTI0IDE3OjU5OjM1LjExOTU4MjU0OSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv YmFzZS9mdW5jdGlvbmFsL2Z1bmN0aW9uX3JlZi5oCTIwMjQtMDItMjQgMTg6MDA6MjcuMTA3OTM4 Mzk5ICswMTAwCi1AQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBGdW5jdGlvblJlZjsKLSB0ZW1wbGF0 ZSA8dHlwZW5hbWUgUiwgdHlwZW5hbWUuLi4gQXJncz4KLSBjbGFzcyBGdW5jdGlvblJlZjxSKEFy Z3MuLi4pPiB7Ci0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3RvciwKLS0gICAgICAgICAgICB0 eXBlbmFtZSBSdW5UeXBlID0gaW50ZXJuYWw6Ok1ha2VGdW5jdG9yVHJhaXRzPEZ1bmN0b3I+OjpS dW5UeXBlPgotKyAgICAgICAgICAgIHR5cGVuYW1lIFJ1blR5cGUgPSB0eXBlbmFtZSBpbnRlcm5h bDo6TWFrZUZ1bmN0b3JUcmFpdHM8RnVuY3Rvcj46OlJ1blR5cGU+Ci0gICBzdGF0aWMgY29uc3Rl eHByIGJvb2wga0NvbXBhdGlibGVGdW5jdG9yID0KLSAgICAgICBzdGQ6OmNvbnZlcnRpYmxlX3Rv PGludGVybmFsOjpFeHRyYWN0UmV0dXJuVHlwZTxSdW5UeXBlPiwgUj4gJiYKLSAgICAgICBzdGQ6 OnNhbWVfYXM8aW50ZXJuYWw6OkV4dHJhY3RBcmdzPFJ1blR5cGU+LCBpbnRlcm5hbDo6VHlwZUxp c3Q8QXJncy4uLj4+OwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2NvbnRh aW5lcnMvaGVhcF9hcnJheS5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWlu ZXJzL2hlYXBfYXJyYXkuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWlu ZXJzL2hlYXBfYXJyYXkuaC5tZQkyMDI0LTAyLTI0IDE4OjAyOjM0LjQ2MzkyMTU2OCArMDEwMAot KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJzL2hlYXBfYXJyYXkuaAky MDI0LTAyLTI0IDE4OjA0OjAxLjkyMjg1MDU3MSArMDEwMAotQEAgLTMyLDggKzMyLDggQEAgY2xh c3MgVFJJVklBTF9BQkkgR1NMX09XTkVSIEhlYXBBcnJheSB7Ci0gICBzdGF0aWNfYXNzZXJ0KCFz dGQ6OmlzX3JlZmVyZW5jZV92PFQ+LAotICAgICAgICAgICAgICAgICAiSGVhcEFycmF5IGNhbm5v dCBob2xkIHJlZmVyZW5jZSB0eXBlcyIpOwotIAotLSAgdXNpbmcgaXRlcmF0b3IgPSBiYXNlOjpz cGFuPFQ+OjppdGVyYXRvcjsKLS0gIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gYmFzZTo6c3Bhbjxj b25zdCBUPjo6aXRlcmF0b3I7Ci0rICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIGJhc2U6OnNw YW48VD46Oml0ZXJhdG9yOwotKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBiYXNl OjpzcGFuPGNvbnN0IFQ+OjppdGVyYXRvcjsKLSAKLSAgIC8vIEFsbG9jYXRlcyBpbml0aWFsaXpl ZCBtZW1vcnkgY2FwYWJsZSBvZiBob2xkaW5nIGBzaXplYCBlbGVtZW50cy4gTm8gbWVtb3J5Ci0g ICAvLyBpcyBhbGxvY2F0ZWQgZm9yIHplcm8tc2l6ZWQgYXJyYXlzLgotZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvdHlwZV9jb252ZXJ0ZXIu aC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90eXBl X2NvbnZlcnRlci5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAv YmluZGluZ3MvdHlwZV9jb252ZXJ0ZXIuaC5tZQkyMDI0LTAyLTI0IDE4OjUxOjA2Ljk1NzA4NzQ2 NCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRp bmdzL3R5cGVfY29udmVydGVyLmgJMjAyNC0wMi0yNCAxODo1MToyNy43Nzg0ODg0OTAgKzAxMDAK LUBAIC0xMjUsNyArMTI1LDcgQEAgdXNpbmcgVmVjVmFsdWVUeXBlID0gdHlwZW5hbWUgVmVjOjp2 YWx1ZQotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWM+Ci0gdXNpbmcgVmVjUHRyTGlrZVVuZGVy bHlpbmdWYWx1ZVR5cGUgPQotLSAgICBzdGQ6OnBvaW50ZXJfdHJhaXRzPFZlY1ZhbHVlVHlwZTxW ZWM+Pjo6ZWxlbWVudF90eXBlOwotKyAgICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJfdHJhaXRzPFZl Y1ZhbHVlVHlwZTxWZWM+Pjo6ZWxlbWVudF90eXBlOwotIAotIH0gIC8vIG5hbWVzcGFjZSBpbnRl cm5hbAotIAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvaGFzaF90YWJsZS5oLm1lIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUu aAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaC5tZQkyMDI0LTAyLTI0IDE5OjQ1OjEzLjYyMDkzNDIx NSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaAkyMDI0LTAyLTI0IDE5OjQ2OjA4LjgxNzk0 MDk2MiArMDEwMAotQEAgLTIwMDUsNyArMjAwNSw3IEBAIHN0cnVjdCBIYXNoVGFibGVDb25zdEl0 ZXJhdG9yQWRhcHRlciB7Ci0gICBzdGF0aWNfYXNzZXJ0KCFJc1RyYWNlYWJsZTx0eXBlbmFtZSBU cmFpdHM6OlRyYWl0VHlwZT46OnZhbHVlKTsKLSAKLSAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5 ID0gc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKLS0gIHVzaW5nIHZhbHVlX3R5cGUg PSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7Ci0rICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5h bWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0g cHRyZGlmZl90OwotICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOwotICAgdXNpbmcgcmVm ZXJlbmNlID0gdmFsdWVfdHlwZSY7Ci1AQCAtMjA1Nyw3ICsyMDU3LDcgQEAgc3RydWN0IEhhc2hU YWJsZUNvbnN0SXRlcmF0b3JBZGFwdGVyPAotIAotICBwdWJsaWM6Ci0gICB1c2luZyBpdGVyYXRv cl9jYXRlZ29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7Ci0tICB1c2luZyB2 YWx1ZV90eXBlID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotKyAgdXNpbmcgdmFsdWVfdHlw ZSA9IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSAgIHVzaW5nIGRpZmZlcmVu Y2VfdHlwZSA9IHB0cmRpZmZfdDsKLSAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKLSAg IHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOwotQEAgLTIxMTEsNyArMjExMSw3IEBAIHN0 cnVjdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXIgewotICAgc3RhdGljX2Fzc2VydCghSXNUcmFj ZWFibGU8dHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5cGU+Ojp2YWx1ZSk7Ci0gCi0gICB1c2luZyBp dGVyYXRvcl9jYXRlZ29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7Ci0tICB1 c2luZyB2YWx1ZV90eXBlID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotKyAgdXNpbmcgdmFs dWVfdHlwZSA9IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSAgIHVzaW5nIGRp ZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZfdDsKLSAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBl KjsKLSAgIHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOwotQEAgLTIxNTksNyArMjE1OSw3 IEBAIHN0cnVjdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8Ci0gCi0gIHB1YmxpYzoKLSAgIHVz aW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsK LS0gIHVzaW5nIHZhbHVlX3R5cGUgPSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7Ci0rICB1c2lu ZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotICAgdXNp bmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OwotICAgdXNpbmcgcG9pbnRlciA9IHZhbHVl X3R5cGUqOwotICAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlwZSY7Ci1kaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaC5tZSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaAotLS0tIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvYmFzZS90eXBlcy9maXhlZF9hcnJheS5oLm1lCTIwMjQtMDItMjUgMTE6MjI6NTku ODE5NTkwNTI5ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL3R5cGVzL2Zp eGVkX2FycmF5LmgJMjAyNC0wMi0yNSAxMToyNDoxMi40MjQ5NTMwMzEgKzAxMDAKLUBAIC0yNyw4 ICsyNyw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAotIGNsYXNzIEZpeGVkQXJyYXkgOiBwdWJs aWMgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPiB7Ci0gIHB1YmxpYzoKLSAgIHVzaW5nIGFic2w6 OkZpeGVkQXJyYXk8VCwgTiwgQT46OkZpeGVkQXJyYXk7Ci0tICBleHBsaWNpdCBGaXhlZEFycmF5 KGFic2w6OkZpeGVkQXJyYXk8VCwgTiwgQT46OnNpemVfdHlwZSBuLAotLSAgICAgICAgICAgICAg ICAgICAgICBjb25zdCBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+OjphbGxvY2F0b3JfdHlwZSYg YSA9Ci0rICBleHBsaWNpdCBGaXhlZEFycmF5KHR5cGVuYW1lIGFic2w6OkZpeGVkQXJyYXk8VCwg TiwgQT46OnNpemVfdHlwZSBuLAotKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlbmFt ZSBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+OjphbGxvY2F0b3JfdHlwZSYgYSA9Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+Ojph bGxvY2F0b3JfdHlwZSgpKQotICAgICAgIDogRml4ZWRBcnJheShuLCBUKCksIGEpIHt9Ci0gfTsK LWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxp Y2F0aW9ucy9jb21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2ludGVybmFsLmgubWUgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL2lu dGVybmFsL2NvbW1hbmRfaW50ZXJuYWwuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hy b21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2lu dGVybmFsLmgubWUJMjAyNC0wMi0yNSAxNTowNDo1Ni43NzU4OTc3MTMgKzAxMDAKLSsrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFu ZHMvaW50ZXJuYWwvY29tbWFuZF9pbnRlcm5hbC5oCTIwMjQtMDItMjUgMTU6MDU6MzQuODg0NTc5 Mjc5ICswMTAwCi1AQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIENvbW1hbmRCYXNlIHsKLSB0ZW1w bGF0ZSA8dHlwZW5hbWUgTG9ja1R5cGU+Ci0gY2xhc3MgQ29tbWFuZFdpdGhMb2NrIDogcHVibGlj IENvbW1hbmRCYXNlIHsKLSAgcHVibGljOgotLSAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9uID0gTG9j a1R5cGU6OkxvY2tEZXNjcmlwdGlvbjsKLSsgIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IHR5cGVu YW1lIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRpb247Ci0gICBleHBsaWNpdCBDb21tYW5kV2l0aExv Y2soY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg TG9ja0Rlc2NyaXB0aW9uIGluaXRpYWxfbG9ja19yZXF1ZXN0KTsKLSAKLWRpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5k cy93ZWJfYXBwX2NvbW1hbmQuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93 c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgKLS0tLSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFu ZHMvd2ViX2FwcF9jb21tYW5kLmgubWUJMjAyNC0wMi0yNSAxNTowNTo0Ni44ODU3OTM4MjggKzAx MDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNh dGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgJMjAyNC0wMi0yNSAxNTowNjoxMi4zMzQy NDg3MjUgKzAxMDAKLUBAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV2ViQXBwTG9ja01hbmFnZXI7 Ci0gdGVtcGxhdGUgPHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZS4uLiBDYWxsYmFja0FyZ3M+ Ci0gY2xhc3MgV2ViQXBwQ29tbWFuZCA6IHB1YmxpYyBpbnRlcm5hbDo6Q29tbWFuZFdpdGhMb2Nr PExvY2tUeXBlPiB7Ci0gIHB1YmxpYzoKLS0gIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IExvY2tU eXBlOjpMb2NrRGVzY3JpcHRpb247Ci0rICB1c2luZyBMb2NrRGVzY3JpcHRpb24gPSB0eXBlbmFt ZSBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uOwotICAgdXNpbmcgQ2FsbGJhY2tUeXBlID0gYmFz ZTo6T25jZUNhbGxiYWNrPHZvaWQoQ2FsbGJhY2tBcmdzLi4uKT47Ci0gICB1c2luZyBTaHV0ZG93 bkFyZ3VtZW50c1R1cGxlID0gc3RkOjp0dXBsZTxzdGQ6OmRlY2F5X3Q8Q2FsbGJhY2tBcmdzPi4u Lj47Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dl Yl9hcHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLm1lIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1h bmRfc2NoZWR1bGVyLmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2Vy L3dlYl9hcHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLm1lCTIwMjQtMDIt MjUgMTU6MDY6MTcuODk2MzQ4MTQ5ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL3dlYl9hcHBfY29tbWFuZF9zY2hlZHVsZXIu aAkyMDI0LTAyLTI1IDE1OjA2OjU4Ljg0MTA3Njc0NiArMDEwMAotQEAgLTM1NSw3ICszNTUsNyBA QCBjbGFzcyBXZWJBcHBDb21tYW5kU2NoZWR1bGVyIHsKLSAgIC8vIGNvbW1hbmQgc3lzdGVtLgot ICAgdGVtcGxhdGUgPHR5cGVuYW1lIExvY2tUeXBlPgotICAgdm9pZCBTY2hlZHVsZUNhbGxiYWNr KGNvbnN0IHN0ZDo6c3RyaW5nJiBvcGVyYXRpb25fbmFtZSwKLS0gICAgICAgICAgICAgICAgICAg ICAgICBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uIGxvY2tfZGVzY3JpcHRpb24sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbiBsb2Nr X2Rlc2NyaXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxiYWNrQ29tbWFuZDxM b2NrVHlwZSwgdm9pZD4gY2FsbGJhY2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6 T25jZUNsb3N1cmUgb25fY29tcGxldGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg YmFzZTo6TG9jYXRpb24mIGxvY2F0aW9uID0gRlJPTV9IRVJFKSB7Ci1AQCAtMzczLDcgKzM3Myw3 IEBAIGNsYXNzIFdlYkFwcENvbW1hbmRTY2hlZHVsZXIgewotICAgICAgICAgICAgIHR5cGVuYW1l IENhbGxiYWNrUmV0dXJuVmFsdWUgPSBzdGQ6OmRlY2F5X3Q8Q29tcGxldGlvbkNhbGxiYWNrQXJn Pj4KLSAgIHZvaWQgU2NoZWR1bGVDYWxsYmFja1dpdGhSZXN1bHQoCi0gICAgICAgY29uc3Qgc3Rk OjpzdHJpbmcmIG9wZXJhdGlvbl9uYW1lLAotLSAgICAgIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRp b24gbG9ja19kZXNjcmlwdGlvbiwKLSsgICAgICB0eXBlbmFtZSBMb2NrVHlwZTo6TG9ja0Rlc2Ny aXB0aW9uIGxvY2tfZGVzY3JpcHRpb24sCi0gICAgICAgQ2FsbGJhY2tDb21tYW5kPExvY2tUeXBl LCBDYWxsYmFja1JldHVyblZhbHVlPiBjYWxsYmFjaywKLSAgICAgICBiYXNlOjpPbmNlQ2FsbGJh Y2s8dm9pZChDb21wbGV0aW9uQ2FsbGJhY2tBcmcpPiBvbl9jb21wbGV0ZSwKLSAgICAgICBDYWxs YmFja1JldHVyblZhbHVlIGFyZ19mb3Jfc2h1dGRvd24sCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbXBvbmVudHMvc3VwZXJ2aXNlZF91c2VyL2NvcmUvYnJvd3Nlci9wcm90b19m ZXRjaGVyLmgubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3N1cGVydmlzZWRf dXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hl ci5oLm1lCTIwMjQtMDItMjUgMTU6MTI6NTMuODM1NDA5MzkyICswMTAwCi0rKysgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJv dG9fZmV0Y2hlci5oCTIwMjQtMDItMjUgMTU6MTY6MDMuMTcxOTMxMDMzICswMTAwCi1AQCAtNDI0 LDcgKzQyNCw3IEBAIGNsYXNzIFJldHJ5aW5nRmV0Y2hlckltcGwgZmluYWwgOiBwdWJsaWMKLSAg IFJldHJ5aW5nRmV0Y2hlckltcGwoY29uc3QgUmV0cnlpbmdGZXRjaGVySW1wbCYpID0gZGVsZXRl OwotICAgUmV0cnlpbmdGZXRjaGVySW1wbCYgb3BlcmF0b3I9KGNvbnN0IFJldHJ5aW5nRmV0Y2hl ckltcGwmKSA9IGRlbGV0ZTsKLSAKLS0gIHZvaWQgU3RhcnQoUHJvdG9GZXRjaGVyPFJlc3BvbnNl Pjo6Q2FsbGJhY2sgY2FsbGJhY2spIG92ZXJyaWRlIHsKLSsgIHZvaWQgU3RhcnQodHlwZW5hbWUg UHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2FsbGJhY2spIG92ZXJyaWRlIHsKLSAg ICAgY2FsbGJhY2tfID0gc3RkOjptb3ZlKGNhbGxiYWNrKTsKLSAgICAgUmV0cnkoKTsKLSAgIH0K LUBAIC00NjksNyArNDY5LDcgQEAgY2xhc3MgUmV0cnlpbmdGZXRjaGVySW1wbCBmaW5hbCA6IHB1 YmxpYwotICAgfQotIAotICAgLy8gQ2xpZW50IGNhbGxiYWNrLgotLSAgVHlwZWRQcm90b0ZldGNo ZXI8UmVzcG9uc2U+OjpDYWxsYmFjayBjYWxsYmFja187Ci0rICB0eXBlbmFtZSBUeXBlZFByb3Rv RmV0Y2hlcjxSZXNwb25zZT46OkNhbGxiYWNrIGNhbGxiYWNrXzsKLSAKLSAgIC8vIFJldHJ5IGNv bnRyb2xzLgotICAgYmFzZTo6T25lU2hvdFRpbWVyIHRpbWVyXzsKLUBAIC00OTAsNyArNDkwLDcg QEAgY2xhc3MgUGFyYWxsZWxGZXRjaE1hbmFnZXIgewotICAgLy8gRGVmZXJyZWQgZmV0Y2hlciBp cyByZXF1aXJlZCBiZWNhdXNlIGl0IHNob3VsZCBiZSBzdGFydGVkIGFmdGVyIGl0IGlzCi0gICAv LyBzdG9yZWQgaW50ZXJuYWxseS4KLSAgIHVzaW5nIEZldGNoZXIgPSBQcm90b0ZldGNoZXI8UmVz cG9uc2U+OwotLSAgdXNpbmcgS2V5VHlwZSA9IGJhc2U6OklETWFwPHN0ZDo6dW5pcXVlX3B0cjxG ZXRjaGVyPj46OktleVR5cGU7Ci0rICB1c2luZyBLZXlUeXBlID0gdHlwZW5hbWUgYmFzZTo6SURN YXA8c3RkOjp1bmlxdWVfcHRyPEZldGNoZXI+Pjo6S2V5VHlwZTsKLSAKLSAgcHVibGljOgotICAg Ly8gUHJvdmlkZXMgZnJlc2ggaW5zdGFuY2VzIG9mIGEgZGVmZXJyZWQgZmV0Y2hlciBmb3IgZWFj aCBmZXRjaC4KLUBAIC01MDYsNyArNTA2LDcgQEAgY2xhc3MgUGFyYWxsZWxGZXRjaE1hbmFnZXIg ewotIAotICAgLy8gU3RhcnRzIHRoZSBmZXRjaC4gVW5kZXJseWluZyBmZXRjaGVyIGlzIHN0b3Jl ZCBpbnRlcm5hbGx5LCBhbmQgd2lsbCBiZQotICAgLy8gY2xlYW5lZCB1cCBhZnRlciBmaW5pc2gg b3Igd2hlbiB0aGlzIG1hbmFnZXIgaXMgZGVzdHJveWVkLgotLSAgdm9pZCBGZXRjaChjb25zdCBS ZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaGVyOjpDYWxsYmFjayBjYWxsYmFjaykgewotKyAgdm9pZCBG ZXRjaChjb25zdCBSZXF1ZXN0JiByZXF1ZXN0LCB0eXBlbmFtZSBGZXRjaGVyOjpDYWxsYmFjayBj YWxsYmFjaykgewotICAgICBDSEVDSyhjYWxsYmFjaykgPDwgIlVzZSBiYXNlOjpEb05vdGhpbmco KSBpbnN0ZWFkIG9mIGVtcHR5IGNhbGxiYWNrLiI7Ci0gICAgIEtleVR5cGUga2V5ID0gcmVxdWVz dHNfaW5fZmxpZ2h0Xy5BZGQoTWFrZUZldGNoZXIocmVxdWVzdCkpOwotICAgICByZXF1ZXN0c19p bl9mbGlnaHRfLkxvb2t1cChrZXkpLT5TdGFydCgKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjIt dW5pcXVlX3B0ci5wYXRjaCBiL2Nocm9taXVtLTEyMi11bmlxdWVfcHRyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDYyYWU2Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEy Mi11bmlxdWVfcHRyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotY29tbWl0 IDU1MTdkMTY3YzA4Mzg4NTg0N2EwOGE4M2I5NmRhMDNiMWViMmJjM2UKLUF1dGhvcjogSm9zZSBE YXBlbmEgUGF6IDxqZGFwZW5hQGlnYWxpYS5jb20+Ci1EYXRlOiAgIFR1ZSBKYW4gMjMgMTU6MzQ6 MzUgMjAyNCArMDAwMAotCi0gICAgbGlic3RkYysrOiBkbyBub3QgcmVxdWlyZSBpbmNsdWRpbmcg dW5pcXVlX3B0ciBpbiBoZWFkZXIKLSAgICAKLSAgICBJbmNsdWRpbmcgc3RkOjp1bmlxdWVfcHRy IGRlY2xhcmF0aW9uIGluaXRpYWwgdmFsdWUgcmVxdWlyZXMKLSAgICBkZWNsYXJhdGlvbiBvZiBj b250YWluZWQgdHlwZS4KLSAgICAKLSAgICBCdWc6IDk1NzUxOQotICAgIENoYW5nZS1JZDogSWY5 YjAzNjJiNmNlYTQ4YTM5NTA0MWZhYTgyZjgzYjZmNDhiOTg0MDMKLSAgICBSZXZpZXdlZC1vbjog aHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8r LzUyMjUxMzcKLSAgICBSZXZpZXdlZC1ieTogQ2Fyb2xpbmUgUmlzaW5nIDxjb3Jpc2luZ0BjaHJv bWl1bS5vcmc+Ci0gICAgQ29tbWl0LVF1ZXVlOiBKb3PDqSBEYXBlbmEgUGF6IDxqZGFwZW5hQGln YWxpYS5jb20+Ci0gICAgQ3ItQ29tbWl0LVBvc2l0aW9uOiByZWZzL2hlYWRzL21haW5AeyMxMjUw ODI2fQotCi1kaWZmIC0tZ2l0IGEvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdG9vbGJhci90b29s YmFyX3ZpZXcuaCBiL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Rvb2xiYXIvdG9vbGJhcl92aWV3 LmgKLWluZGV4IGVjM2UzNGE4NmY0YzUuLjMyY2EyN2I2ZDEyNmIgMTAwNjQ0Ci0tLS0gYS9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy90b29sYmFyL3Rvb2xiYXJfdmlldy5oCi0rKysgYi9jaHJvbWUv YnJvd3Nlci91aS92aWV3cy90b29sYmFyL3Rvb2xiYXJfdmlldy5oCi1AQCAtMzExLDggKzMxMSw3 IEBAIGNsYXNzIFRvb2xiYXJWaWV3IDogcHVibGljIHZpZXdzOjpBY2Nlc3NpYmxlUGFuZVZpZXcs Ci0gICBBcHBNZW51SWNvbkNvbnRyb2xsZXIgYXBwX21lbnVfaWNvbl9jb250cm9sbGVyXzsKLSAK LSAgIHN0ZDo6dW5pcXVlX3B0cjxDaHJvbWVMYWJzTW9kZWw+IGNocm9tZV9sYWJzX21vZGVsXzsK LS0gIHN0ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zVG9vbGJhckNvb3JkaW5hdG9yPgotLSAgICAg IGV4dGVuc2lvbnNfdG9vbGJhcl9jb29yZGluYXRvcl8gPSBudWxscHRyOwotKyAgc3RkOjp1bmlx dWVfcHRyPEV4dGVuc2lvbnNUb29sYmFyQ29vcmRpbmF0b3I+IGV4dGVuc2lvbnNfdG9vbGJhcl9j b29yZGluYXRvcl87Ci0gCi0gICAvLyBDb250cm9scyB3aGV0aGVyIG9yIG5vdCBhIGhvbWUgYnV0 dG9uIHNob3VsZCBiZSBzaG93biBvbiB0aGUgdG9vbGJhci4KLSAgIEJvb2xlYW5QcmVmTWVtYmVy IHNob3dfaG9tZV9idXR0b25fOwotZGlmZiAtLWdpdCBhL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdz L3dlYl9hcHBzL2ZyYW1lX3Rvb2xiYXIvd2ViX2FwcF90b29sYmFyX2J1dHRvbl9jb250YWluZXIu aCBiL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3dlYl9hcHBzL2ZyYW1lX3Rvb2xiYXIvd2ViX2Fw cF90b29sYmFyX2J1dHRvbl9jb250YWluZXIuaAotaW5kZXggMzA0NmM1NDNjN2M4ZS4uNDZmZjVk NDBmZmFkMyAxMDA2NDQKLS0tLSBhL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3dlYl9hcHBzL2Zy YW1lX3Rvb2xiYXIvd2ViX2FwcF90b29sYmFyX2J1dHRvbl9jb250YWluZXIuaAotKysrIGIvY2hy b21lL2Jyb3dzZXIvdWkvdmlld3Mvd2ViX2FwcHMvZnJhbWVfdG9vbGJhci93ZWJfYXBwX3Rvb2xi YXJfYnV0dG9uX2NvbnRhaW5lci5oCi1AQCAtMTUwLDggKzE1MCw3IEBAIGNsYXNzIFdlYkFwcFRv b2xiYXJCdXR0b25Db250YWluZXIgOiBwdWJsaWMgdmlld3M6OlZpZXcsCi0gICBzdGQ6OnVuaXF1 ZV9wdHI8UGFnZUFjdGlvbkljb25Db250cm9sbGVyPiBwYWdlX2FjdGlvbl9pY29uX2NvbnRyb2xs ZXJfOwotICAgaW50IHBhZ2VfYWN0aW9uX2luc2VydGlvbl9wb2ludF8gPSAwOwotIAotLSAgc3Rk Ojp1bmlxdWVfcHRyPEV4dGVuc2lvbnNUb29sYmFyQ29vcmRpbmF0b3I+Ci0tICAgICAgZXh0ZW5z aW9uc190b29sYmFyX2Nvb3JkaW5hdG9yXyA9IG51bGxwdHI7Ci0rICBzdGQ6OnVuaXF1ZV9wdHI8 RXh0ZW5zaW9uc1Rvb2xiYXJDb29yZGluYXRvcj4gZXh0ZW5zaW9uc190b29sYmFyX2Nvb3JkaW5h dG9yXzsKLSAKLSAgIC8vIEFsbCByZW1haW5pbmcgbWVtYmVycyBhcmUgb3duZWQgYnkgdGhlIHZp ZXdzIGhpZXJhcmNoeS4KLSAgIHJhd19wdHI8V2ViQXBwT3JpZ2luVGV4dD4gd2ViX2FwcF9vcmln aW5fdGV4dF8gPSBudWxscHRyOwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMi13b3JrYXJvdW5k X2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2ggYi9jaHJvbWl1bS0xMjItd29ya2Fy b3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA2NTI2ZTZhLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyMi13b3JrYXJv dW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw3OSArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2Uv Y2RtX3Byb21pc2VfYWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2Jp bmRpbmcgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0 ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2Vf YWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcJMjAyMy0w Ni0wNyAyMTo0ODozNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMTUuMC41NzkwLjI0 L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYwkyMDIzLTA2LTE3IDE2OjUzOjIwLjIx NjYyODU1NyArMDIwMAotQEAgLTk0LDcgKzk0LDkgQEAgdm9pZCBDZG1Qcm9taXNlQWRhcHRlcjo6 UmVqZWN0UHJvbWlzZSh1aQotIHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6OkNsZWFyKENsZWFyUmVh c29uIHJlYXNvbikgewotICAgLy8gUmVqZWN0IGFsbCBvdXRzdGFuZGluZyBwcm9taXNlcy4KLSAg IERDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKLS0gIGZvciAo YXV0byYgW3Byb21pc2VfaWQsIHByb21pc2VdIDogcHJvbWlzZXNfKSB7Ci0rICBmb3IgKGF1dG8m IFtwX2ksIHBfZV0gOiBwcm9taXNlc18pIHsKLSsgICAgYXV0byYgcHJvbWlzZV9pZCA9IHBfaTsK LSsgICAgYXV0byYgcHJvbWlzZSA9IHBfZTsKLSAgICAgVFJBQ0VfRVZFTlRfTkVTVEFCTEVfQVNZ TkNfRU5EMSgKLSAgICAgICAgICJtZWRpYSIsICJDZG1Qcm9taXNlIiwgVFJBQ0VfSURfV0lUSF9T Q09QRSgiQ2RtUHJvbWlzZSIsIHByb21pc2VfaWQpLAotICAgICAgICAgInN0YXR1cyIsICJjbGVh cmVkIik7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjMyL2NvbnRlbnQvYnJvd3Nlci9z ZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250ZXh0X3dyYXBwZXIuY2MubWUgY2hyb21p dW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93 b3JrZXJfY29udGV4dF93cmFwcGVyLmNjCi0tLS0gY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250 ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVy LmNjLm1lCTIwMjMtMDYtMTkgMDg6MDQ6MDIuMjg3MDcyNzIyICswMjAwCi0rKysgY2hyb21pdW0t MTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3Jr ZXJfY29udGV4dF93cmFwcGVyLmNjCTIwMjMtMDYtMTkgMDg6MTg6MjQuNTc2ODE0OTUwICswMjAw Ci1AQCAtMTM5Myw3ICsxMzkzLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dFdyYXBwZXI6 Ok1heWJlUAotICAgICByZXR1cm47Ci0gICB9Ci0gCi0tICBhdXRvIFtkb2N1bWVudF91cmwsIGtl eSwgY2FsbGJhY2tdID0gc3RkOjptb3ZlKCpyZXF1ZXN0KTsKLSsgIGF1dG8gW2RfdSwga2V5LCBj YWxsYmFja10gPSBzdGQ6Om1vdmUoKnJlcXVlc3QpOwotKyAgYXV0byBkb2N1bWVudF91cmwgPSBk X3U7Ci0gCi0gICBEQ0hFQ0soZG9jdW1lbnRfdXJsLmlzX3ZhbGlkKCkpOwotICAgVFJBQ0VfRVZF TlQxKCJTZXJ2aWNlV29ya2VyIiwKLWRpZmYgLXVwIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlkX2xheW91dF9hbGdv cml0aG0uY2MudGhhbiBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2NvcmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGhtLmNjCi0tLS0gY2hy b21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91 dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYy50aGFuCTIwMjMtMTItMTkgMTc6NTc6NTYu MjA1MTk3MjQ2ICswMTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYwky MDIzLTEyLTE5IDE4OjEwOjEzLjc3ODYzNDUzMSArMDEwMAotQEAgLTM1MjcsOCArMzUyNyw4IEBA IHZvaWQgR3JpZExheW91dEFsZ29yaXRobTo6UGxhY2VHcmlkSXRlbXMKLSAgIERDSEVDSyhvdXRf cm93X2JyZWFrX2JldHdlZW4pOwotIAotICAgY29uc3QgYXV0byYgY29udGFpbmVyX3NwYWNlID0g R2V0Q29uc3RyYWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5b3V0 X2RhdGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLS0KLSsgIGNv bnN0IGF1dG8mIFtncmlkX2l0ZW1zLCBsX2QsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVl Um9vdERhdGEoKTsKLSsgIGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9kOwotICAgY29uc3Qg YXV0byogY2FjaGVkX2xheW91dF9zdWJ0cmVlID0gY29udGFpbmVyX3NwYWNlLkdldEdyaWRMYXlv dXRTdWJ0cmVlKCk7Ci0gICBjb25zdCBhdXRvIGNvbnRhaW5lcl93cml0aW5nX2RpcmVjdGlvbiA9 Ci0gICAgICAgY29udGFpbmVyX3NwYWNlLkdldFdyaXRpbmdEaXJlY3Rpb24oKTsKLUBAIC0zNjkx LDggKzM2OTEsOSBAQCB2b2lkIEdyaWRMYXlvdXRBbGdvcml0aG06OlBsYWNlR3JpZEl0ZW1zCi0g Ci0gICAvLyBUT0RPKGlraWxwYXRyaWNrKTogVXBkYXRlIHxTZXRIYXNTZWVuQWxsQ2hpbGRyZW58 IGFuZCBlYXJseSBleGl0IGlmIHRydWUuCi0gICBjb25zdCBhdXRvJiBjb25zdHJhaW50X3NwYWNl ID0gR2V0Q29uc3RyYWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5 b3V0X2RhdGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLS0KLSsg IGNvbnN0IGF1dG8mIFtnX2ksIGxfZCwgdHJlZV9zaXplXSA9IHNpemluZ190cmVlLlRyZWVSb290 RGF0YSgpOwotKyAgY29uc3QgYXV0byYgZ3JpZF9pdGVtcyA9IGdfaTsKLSsgIGNvbnN0IGF1dG8m IGxheW91dF9kYXRhID0gbF9kOwotICAgY29uc3QgYXV0byogY2FjaGVkX2xheW91dF9zdWJ0cmVl ID0gY29uc3RyYWludF9zcGFjZS5HZXRHcmlkTGF5b3V0U3VidHJlZSgpOwotICAgY29uc3QgYXV0 byBjb250YWluZXJfd3JpdGluZ19kaXJlY3Rpb24gPQotICAgICAgIGNvbnN0cmFpbnRfc3BhY2Uu R2V0V3JpdGluZ0RpcmVjdGlvbigpOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b250ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtfcmVxdWVzdF91cmxfbG9h ZGVyX2NsaWVudC5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvY29tbW9uL3Nl cnZpY2Vfd29ya2VyL3JhY2VfbmV0d29ya19yZXF1ZXN0X3VybF9sb2FkZXJfY2xpZW50LmNjCi0t LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9y YWNlX25ldHdvcmtfcmVxdWVzdF91cmxfbG9hZGVyX2NsaWVudC5jYy5tZQkyMDI0LTAyLTI1IDEw OjA3OjI4LjMxMjY0Njg1MyArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVu dC9jb21tb24vc2VydmljZV93b3JrZXIvcmFjZV9uZXR3b3JrX3JlcXVlc3RfdXJsX2xvYWRlcl9j bGllbnQuY2MJMjAyNC0wMi0yNSAxMDoxMTowNy4wMTg0ODE5ODAgKzAxMDAKLUBAIC00MTYsNyAr NDE2LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmFjZU5ldHdvcmtSZXF1ZXN0VVJMTAotICAgfQot IAotICAgdWludDMyX3QgbnVtX2J5dGVzX3RvX2NvbnN1bWUgPSAwOwotLSAgYXV0byBbcmVzdWx0 LCByZWFkX2J1ZmZlcl0gPSBCZWdpblJlYWREYXRhKCk7Ci0rICBhdXRvIFtyLCByZWFkX2J1ZmZl cl0gPSBCZWdpblJlYWREYXRhKCk7Ci0rICBhdXRvIHJlc3VsdCA9IHI7Ci0gICBUUkFDRV9FVkVO VF9XSVRIX0ZMT1cyKAotICAgICAgICJTZXJ2aWNlV29ya2VyIiwKLSAgICAgICAiU2VydmljZVdv cmtlclJhY2VOZXR3b3JrUmVxdWVzdFVSTExvYWRlckNsaWVudDo6UmVhZEFuZFdyaXRlIiwKLWRp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJlZGljdG9ycy9s Y3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2FjaGVfbWFuYWdl ci5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMv bGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFn ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3Rv cnMvbGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21h bmFnZXIuY2MubWUJMjAyNC0wMi0yNSAxODowMzo1MS42NTQ1Nzk1NzkgKzAxMDAKLSsrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMvbGNwX2NyaXRpY2Fs X3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFnZXIuY2MJMjAyNC0w Mi0yNSAxODoxMjo0NS4xNDQyODc3NTAgKzAxMDAKLUBAIC0xMzYsNyArMTM2LDggQEAgdm9pZCBQ cmV3YXJtSHR0cERpc2tDYWNoZU1hbmFnZXI6Ok1heWJlUAotICAgc3RkOjpwYWlyPHVybDo6T3Jp Z2luLCBHVVJMPiBvcmlnaW5fYW5kX3VybDsKLSAgIHN0ZDo6c3dhcChvcmlnaW5fYW5kX3VybCwg cXVldWVkX2pvYnNfLmZyb250KCkpOwotICAgcXVldWVkX2pvYnNfLnBvcCgpOwotLSAgY29uc3Qg YXV0byYgW29yaWdpbiwgdXJsXSA9IG9yaWdpbl9hbmRfdXJsOwotKyAgY29uc3QgYXV0byYgW29y aWdpbiwgdV0gPSBvcmlnaW5fYW5kX3VybDsKLSsgIGNvbnN0IGF1dG8mIHVybCA9IHU7Ci0gICBU UkFDRV9FVkVOVF9XSVRIX0ZMT1cxKAotICAgICAgICJsb2FkaW5nIiwgIlByZXdhcm1IdHRwRGlz a0NhY2hlTWFuYWdlcjo6TWF5YmVQcm9jZXNzTmV4dFF1ZXVlZEpvYiIsCi0gICAgICAgVFJBQ0Vf SURfTE9DQUwodGhpcyksCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTIzLWNvbnN0ZXhwci5wYXRj aCBiL2Nocm9taXVtLTEyMy1jb25zdGV4cHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uYWE1OWMzZQotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMy1jb25z dGV4cHIucGF0Y2gKQEAgLTAsMCArMSw2MCBAQAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2 MS4yOS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvY29tbW9uL3VuaXF1ZV9pZHMuaC5tZSBjaHJv bWl1bS0xMjIuMC42MjYxLjI5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9jb21tb24vdW5pcXVl X2lkcy5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL2F1dG9maWxsL2Nv cmUvY29tbW9uL3VuaXF1ZV9pZHMuaC5tZQkyMDI0LTAyLTEzIDEzOjA3OjI0Ljk4MjE4NDQ4NSAr MDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3Jl L2NvbW1vbi91bmlxdWVfaWRzLmgJMjAyNC0wMi0xMyAxMzowNzo0NS41MTA1NTE1ODkgKzAxMDAK K0BAIC0xMzcsNyArMTM3LDcgQEAgc3RydWN0IEdsb2JhbElkIHsKKyAKKyAgIGZyaWVuZCBjb25z dGV4cHIgYXV0byBvcGVyYXRvcjw9Pihjb25zdCBHbG9iYWxJZDxSZW5kZXJlcklkPiYgbGhzLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdsb2JhbElkPFJlbmRl cmVySWQ+JiByaHMpID0gZGVmYXVsdDsKKy0gIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRv cj09KGNvbnN0IEdsb2JhbElkPFJlbmRlcmVySWQ+JiBsaHMsCisrICBmcmllbmQgYm9vbCBvcGVy YXRvcj09KGNvbnN0IEdsb2JhbElkPFJlbmRlcmVySWQ+JiBsaHMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBHbG9iYWxJZDxSZW5kZXJlcklkPiYgcmhzKSA9IGRl ZmF1bHQ7CisgfTsKKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvYmFzZS90eXBl cy9zdHJvbmdfYWxpYXMuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvdHlwZXMvc3Ry b25nX2FsaWFzLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvdHlwZXMvc3Ryb25n X2FsaWFzLmgubWUJMjAyNC0wMi0xMyAxNDoxMzoyMC4zMTEzNzQyODggKzAxMDAKKysrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjI5L2Jhc2UvdHlwZXMvc3Ryb25nX2FsaWFzLmgJMjAyNC0wMi0xMyAx MjozMDozOC41OTY5MTM5NTEgKzAxMDAKK0BAIC0xMTAsNyArMTEwLDcgQEAgY2xhc3MgU3Ryb25n QWxpYXMgeworICAgLy8gYSBgU3Ryb25nQWxpYXM8Vz5gLgorICAgZnJpZW5kIGNvbnN0ZXhwciBh dXRvIG9wZXJhdG9yPD0+KGNvbnN0IFN0cm9uZ0FsaWFzJiBsaHMsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ryb25nQWxpYXMmIHJocykgPSBkZWZhdWx0Owor LSAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29uc3QgU3Ryb25nQWxpYXMmIGxo cywKKysgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgU3Ryb25nQWxpYXMmIGxocywKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cm9uZ0FsaWFzJiByaHMp ID0gZGVmYXVsdDsKKyAKKyAgIC8vIEhhc2hlciB0byB1c2UgaW4gc3RkOjp1bm9yZGVyZWRfbWFw LCBzdGQ6OnVub3JkZXJlZF9zZXQsIGV0Yy4KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEu MjkvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3Jlc291cmNlX2F0dHJpYnV0aW9uL3F1 ZXJ5X3BhcmFtcy5oLmNvbnN0ZXhwciBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2NvbXBvbmVudHMv cGVyZm9ybWFuY2VfbWFuYWdlci9yZXNvdXJjZV9hdHRyaWJ1dGlvbi9xdWVyeV9wYXJhbXMuaAor LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2Vy L3Jlc291cmNlX2F0dHJpYnV0aW9uL3F1ZXJ5X3BhcmFtcy5oLmNvbnN0ZXhwcgkyMDI0LTAyLTA3 IDE5OjQ5OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29t cG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3Jlc291cmNlX2F0dHJpYnV0aW9uL3F1ZXJ5X3Bh cmFtcy5oCTIwMjQtMDItMTMgMTE6MTI6NTIuOTEzMzM4Njk5ICswMTAwCitAQCAtNjcsNyArNjcs NyBAQCBzdHJ1Y3QgUXVlcnlQYXJhbXMgeworICAgUXVlcnlQYXJhbXMoY29uc3QgUXVlcnlQYXJh bXMmIG90aGVyKTsKKyAgIFF1ZXJ5UGFyYW1zJiBvcGVyYXRvcj0oY29uc3QgUXVlcnlQYXJhbXMm IG90aGVyKTsKKyAKKy0gIGZyaWVuZCBjb25zdGV4cHIgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFF1 ZXJ5UGFyYW1zJiwKKysgIGZyaWVuZCBib29sIG9wZXJhdG9yPT0oY29uc3QgUXVlcnlQYXJhbXMm LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUXVlcnlQYXJhbXMm KSA9IGRlZmF1bHQ7CisgCisgICAvLyBSZXNvdXJjZSB0eXBlcyB0byBtZWFzdXJlLgorZGlmZiAt dXAgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIv cmVzb3VyY2VfYXR0cmlidXRpb24vY29udGV4dF9jb2xsZWN0aW9uLmgubWUgY2hyb21pdW0tMTIz LjAuNjMxMi40Ni9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvcmVzb3VyY2VfYXR0cmli dXRpb24vY29udGV4dF9jb2xsZWN0aW9uLmgKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Nv bXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci9yZXNvdXJjZV9hdHRyaWJ1dGlvbi9jb250ZXh0 X2NvbGxlY3Rpb24uaC5tZQkyMDI0LTAzLTE3IDExOjU3OjIyLjA5NzE2MTU2NSArMDEwMAorKysr IGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3Jl c291cmNlX2F0dHJpYnV0aW9uL2NvbnRleHRfY29sbGVjdGlvbi5oCTIwMjQtMDMtMTcgMjI6MTg6 MjUuNDQyMTAxODI1ICswMTAwCitAQCAtMjgsNyArMjgsNyBAQCBjbGFzcyBDb250ZXh0Q29sbGVj dGlvbiB7CisgICBDb250ZXh0Q29sbGVjdGlvbihjb25zdCBDb250ZXh0Q29sbGVjdGlvbiYgb3Ro ZXIpOworICAgQ29udGV4dENvbGxlY3Rpb24mIG9wZXJhdG9yPShjb25zdCBDb250ZXh0Q29sbGVj dGlvbiYgb3RoZXIpOworIAorLSAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9yPT0oY29u c3QgQ29udGV4dENvbGxlY3Rpb24mLAorKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBD b250ZXh0Q29sbGVjdGlvbiYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBDb250ZXh0Q29sbGVjdGlvbiYpID0gZGVmYXVsdDsKKyAKKyAgIC8vIEFkZHMgYGNvbnRl eHRgIHRvIHRoZSBjb2xsZWN0aW9uLgorZGlmZiAtdXAgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9j b21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19ldmVudC5oLm1lIGNo cm9taXVtLTEyMy4wLjYzMTIuNDYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0 cmljcy9sb2dfZXZlbnQuaAorLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29tcG9uZW50cy9h dXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmljcy9sb2dfZXZlbnQuaC5tZQkyMDI0LTAzLTE2IDIz OjM4OjEwLjQzNzEyODI0OSArMDEwMAorKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29tcG9u ZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmljcy9sb2dfZXZlbnQuaAkyMDI0LTAzLTE2 IDIzOjU5OjUwLjg2ODA4MDY1MiArMDEwMAorQEAgLTU3LDcgKzU3LDcgQEAgc3RydWN0IElzUmVx dWlyZWQgeworICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBub3QgZGVmaW5lZCBhbmQgY29uc3RldmFs LiBUaGVyZWZvcmUsIGFueSBldmFsdWF0aW9uIHdpbGwKKyAgIC8vIGZhaWwgYW5kIGZhaWwgYXQg Y29tcGlsZSB0aW1lLgorICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CistICBjb25zdGV2YWwgb3Bl cmF0b3IgVCgpOyAgLy8gTk9MSU5UCisrICBvcGVyYXRvciBUKCk7ICAvLyBOT0xJTlQKKyB9Owor IAorIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMy1l bDctY2xhbmctYnVpbGQtZmFpbHVyZS5wYXRjaCBiL2Nocm9taXVtLTEyMy1lbDctY2xhbmctYnVp bGQtZmFpbHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjA0 ZDdhCi0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTIzLWVsNy1jbGFuZy1idWlsZC1mYWls dXJlLnBhdGNoCkBAIC0wLDAgKzEsMjI4IEBACitjb21taXQgNTc1MjZiOGRjNDViMmU2YzY3YmJh NzMwNmYxZGRlNzNiMWYyOTEwYworQXV0aG9yOiBzaXNpZG92c2tpIDxzaXNpZG92c2tpQGNocm9t aXVtLm9yZz4KK0RhdGU6ICAgVHVlIE9jdCAyNCAwOTozMjo0OSAyMDIzICswMDAwCisKKyAgICBS ZW1vdmUgdW51c2VkIGl0ZW1zIGZyb20gdGhlIFJhY2VOZXR3b3JrUmVxdWVzdCBoYXNobWFwCisK KyAgICBXaGVuIHRoZSBBdXRvUHJlbG9hZCBvciB0aGUgcmFjZS1uZXR3b3JrLWFuZC1mZXRjaC1o YW5kbGVyIG9wdGlvbiBpbiB0aGUKKyAgICBzdGF0aWMgcm91dGluZyBBUEkgaXMgZW5hYmxlZCwg bmV0d29yayByZXF1ZXN0cyBhcmUgZGlzcGF0Y2hlZCBhbmQKKyAgICBVUkxMb2FkZXJGYWN0b3Jp ZXMgYXJlIGhlbGQgaW4gYSBoYXNobWFwIGluIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZS4KKyAg ICBUaG9zZSBhcmUgY29uc3VtZWQgaW5zaWRlIHRoZSBmZXRjaCBoYW5kbGVyIHdoZW4gZmV0Y2go ZS5yZXF1ZXN0KSBpcworICAgIGNhbGxlZC4gQnV0IGlmIHRoZSBmZXRjaCBoYW5kbGVyIGRvZXNu J3QgY2FsbCBmZXRjaCgpIGUuZy4gZmFsbGJhY2ssCisgICAgdGhvc2UgaGFzaG1hcCBpdGVtcyBk b2VzIG5vdCBoYXZlIGEgY2hhbmNlIHRvIGJlIHJlbW92ZWQuCisKKyAgICBUaGlzIENMIGNoYW5n ZXMgdGhlIGhhc2htYXAgaXRlbXMgdG8gYmUgcmVtb3ZlZCB3aGVuIHRoZSBmZXRjaCBldmVudAor ICAgIGZpbmlzaGVzLCBhbmQgdGhlIFVSTExvYWRlckZhY3RvcnkgaXMgc3RpbGwgbm90IGNvbnN1 bWVkIGF0IHRoYXQgdGltZS4KKyAgICBUaGlzIG1heSBsb29zZSB0aGUgZGVkdXBlIGNhcGFiaWxp dHkgaWYgZmV0Y2goKSBpcyBjYWxsZWQgbGF0ZXIgZS5nLgorICAgIHNldFRpbWVvdXQoKCkgPT4g ZmV0Y2goKSksIGJ1dCBpdCBtYWtlcyBzZW5zZSB0byBwcmlvcml0aXplIGtlZXBpbmcgdGhlCisg ICAgaGFzaG1hcCBzbWFsbC4KKworICAgIENoYW5nZS1JZDogSTUxYmRjOWQ1ZWI1MTg1ZjJiNWI0 ZGY2ZWU3ODU3MTViMTE4MGM4NDgKKyAgICBCdWc6IDE0OTI2NDAKKyAgICBSZXZpZXdlZC1vbjog aHR0cHM6Ly9jaHJvbWl1bS1yZXZpZXcuZ29vZ2xlc291cmNlLmNvbS9jL2Nocm9taXVtL3NyYy8r LzQ5NjQ4NDAKKyAgICBSZXZpZXdlZC1ieTogTWlub3J1IENoaWthbXVuZSA8Y2hpa2FtdW5lQGNo cm9taXVtLm9yZz4KKyAgICBDb21taXQtUXVldWU6IFlvc2hpc2F0byBZYW5hZ2lzYXdhIDx5eWFu YWdpc2F3YUBjaHJvbWl1bS5vcmc+CisgICAgUmV2aWV3ZWQtYnk6IFlvc2hpc2F0byBZYW5hZ2lz YXdhIDx5eWFuYWdpc2F3YUBjaHJvbWl1bS5vcmc+CisgICAgQ3ItQ29tbWl0LVBvc2l0aW9uOiBy ZWZzL2hlYWRzL21haW5AeyMxMjE0MDY0fQorCitkaWZmIC11cCBjaHJvbWl1bS0xMjMuMC42MzEy LjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvc2VydmljZV93b3JrZXIvc2Vy dmljZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmNjLm1lIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dv cmtlcl9nbG9iYWxfc2NvcGUuY2MKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJf Z2xvYmFsX3Njb3BlLmNjLm1lCTIwMjQtMDMtMTggMTA6MzQ6MjcuNjA0NzA3NjMyICswMTAwCisr KysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1 bGVzL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2dsb2JhbF9zY29wZS5jYwkyMDI0LTAz LTE4IDExOjUyOjE0LjMwOTk4MzUwNSArMDEwMAorQEAgLTQ2LDcgKzQ2LDYgQEAKKyAjaW5jbHVk ZSAic2VydmljZXMvbmV0d29yay9wdWJsaWMvY3BwL2Nyb3NzX29yaWdpbl9lbWJlZGRlcl9wb2xp Y3kuaCIKKyAjaW5jbHVkZSAic2VydmljZXMvbmV0d29yay9wdWJsaWMvbW9qb20vY29va2llX21h bmFnZXIubW9qb20tYmxpbmsuaCIKKyAjaW5jbHVkZSAic2VydmljZXMvbmV0d29yay9wdWJsaWMv bW9qb20vY3Jvc3Nfb3JpZ2luX2VtYmVkZGVyX3BvbGljeS5tb2pvbS5oIgorLSNpbmNsdWRlICJz ZXJ2aWNlcy9uZXR3b3JrL3B1YmxpYy9tb2pvbS91cmxfbG9hZGVyX2ZhY3RvcnkubW9qb20tYmxp bmsuaCIKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcHVibGljL2NvbW1vbi9mZWF0dXJl cy5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9wdWJsaWMvbW9qb20vZmV0Y2gvZmV0 Y2hfYXBpX3JlcXVlc3QubW9qb20tYmxpbmsuaCIKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxp bmsvcHVibGljL21vam9tL25vdGlmaWNhdGlvbnMvbm90aWZpY2F0aW9uLm1vam9tLWJsaW5rLmgi CitAQCAtMTA5NywxMCArMTA5Niw2IEBAIHZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpE aWRIYW5kbGUKKyAgICAgICBUUkFDRV9JRF9XSVRIX1NDT1BFKGtTZXJ2aWNlV29ya2VyR2xvYmFs U2NvcGVUcmFjZVNjb3BlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfSURfTE9D QUwoZXZlbnRfaWQpKSwKKyAgICAgICBUUkFDRV9FVkVOVF9GTEFHX0ZMT1dfSU4sICJzdGF0dXMi LCBNb2pvRW51bVRvU3RyaW5nKHN0YXR1cykpOworLQorLSAgLy8gRGVsZXRlIHRoZSBVUkxMb2Fk ZXJGYWN0b3J5IGZvciB0aGUgUmFjZU5ldHdvcmtSZXF1ZXN0IGlmIGl0J3Mgbm90IHVzZWQuCist ICBSZW1vdmVJdGVtRnJvbVJhY2VOZXR3b3JrUmVxdWVzdHMoZXZlbnRfaWQpOworLQorICAgaWYg KCFSdW5FdmVudENhbGxiYWNrKCZmZXRjaF9ldmVudF9jYWxsYmFja3NfLCBldmVudF9xdWV1ZV8u Z2V0KCksIGV2ZW50X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cykpIHsKKyAg ICAgLy8gVGhlIGV2ZW50IG1heSBoYXZlIGJlZW4gYWJvcnRlZC4gSXRzIHJlc3BvbnNlIGNhbGxi YWNrIGFsc28gbmVlZHMgdG8gYmUKK0BAIC0xNTAwLDcgKzE0OTUsNiBAQCB2b2lkIFNlcnZpY2VX b3JrZXJHbG9iYWxTY29wZTo6QWJvcnRDYWxsCisgICAgIHJlc3BvbnNlX2NhbGxiYWNrX2l0ZXIt PnZhbHVlLT5UYWtlVmFsdWUoKS5yZXNldCgpOworICAgICBmZXRjaF9yZXNwb25zZV9jYWxsYmFj a3NfLmVyYXNlKHJlc3BvbnNlX2NhbGxiYWNrX2l0ZXIpOworICAgfQorLSAgUmVtb3ZlSXRlbUZy b21SYWNlTmV0d29ya1JlcXVlc3RzKGV2ZW50X2lkKTsKKyAKKyAgIC8vIFJ1biB0aGUgZXZlbnQg Y2FsbGJhY2sgd2l0aCB0aGUgZXJyb3IgY29kZS4KKyAgIGF1dG8gZXZlbnRfY2FsbGJhY2tfaXRl ciA9IGZldGNoX2V2ZW50X2NhbGxiYWNrc18uZmluZChldmVudF9pZCk7CitAQCAtMTU4OCwxMSAr MTU4Miw1MiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6U3RhcnRGZXRjCisgCisg ICBpZiAocGFyYW1zLT5yYWNlX25ldHdvcmtfcmVxdWVzdF9sb2FkZXJfZmFjdG9yeSAmJgorICAg ICAgIHBhcmFtcy0+cmVxdWVzdC0+c2VydmljZV93b3JrZXJfcmFjZV9uZXR3b3JrX3JlcXVlc3Rf dG9rZW4pIHsKKy0gICAgSW5zZXJ0TmV3SXRlbVRvUmFjZU5ldHdvcmtSZXF1ZXN0cygKKy0gICAg ICAgIGV2ZW50X2lkLAorLSAgICAgICAgcGFyYW1zLT5yZXF1ZXN0LT5zZXJ2aWNlX3dvcmtlcl9y YWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbi52YWx1ZSgpLAorLSAgICAgICAgc3RkOjptb3ZlKHBh cmFtcy0+cmFjZV9uZXR3b3JrX3JlcXVlc3RfbG9hZGVyX2ZhY3RvcnkpLAorLSAgICAgICAgcGFy YW1zLT5yZXF1ZXN0LT51cmwpOworKyAgICBhdXRvIGluc2VydF9yZXN1bHQgPSByYWNlX25ldHdv cmtfcmVxdWVzdF9sb2FkZXJfZmFjdG9yaWVzXy5pbnNlcnQoCisrICAgICAgICBTdHJpbmcocGFy YW1zLT5yZXF1ZXN0LT5zZXJ2aWNlX3dvcmtlcl9yYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbgor KyAgICAgICAgICAgICAgICAgICAtPlRvU3RyaW5nKCkpLAorKyAgICAgICAgc3RkOjptb3ZlKHBh cmFtcy0+cmFjZV9uZXR3b3JrX3JlcXVlc3RfbG9hZGVyX2ZhY3RvcnkpKTsKKysKKysgICAgLy8g RHVtcFdpdGhvdXRDcmFzaGluZyBpZiB0aGUgdG9rZW4gaXMgZW1wdHksIG9yIG5vdCBpbnNlcnRl ZCBhcyBhIG5ldyBlbnRyeQorKyAgICAvLyB0byB8cmFjZV9uZXR3b3JrX3JlcXVlc3RfbG9hZGVy X2ZhY3Rvcmllc198LgorKyAgICAvLyBUT0RPKGNyYnVnLmNvbS8xNDkyNjQwKSBSZW1vdmUgRHVt cFdpdGhvdXRDcmFzaGluZyBvbmNlIHdlIGNvbGxlY3QgZGF0YQorKyAgICAvLyBhbmQgaWRlbnRp ZnkgdGhlIGNhdXNlLgorKyAgICBzdGF0aWMgYm9vbCBoYXNfZHVtcGVkX3dpdGhvdXRfY3Jhc2hp bmdfZm9yX2VtcHR5X3Rva2VuID0gZmFsc2U7CisrICAgIHN0YXRpYyBib29sIGhhc19kdW1wZWRf d2l0aG91dF9jcmFzaGluZ19mb3Jfbm90X25ld19lbnRyeSA9IGZhbHNlOworKyAgICBpZiAoIWhh c19kdW1wZWRfd2l0aG91dF9jcmFzaGluZ19mb3JfZW1wdHlfdG9rZW4gJiYKKysgICAgICAgIHBh cmFtcy0+cmVxdWVzdC0+c2VydmljZV93b3JrZXJfcmFjZV9uZXR3b3JrX3JlcXVlc3RfdG9rZW4K KysgICAgICAgICAgICAtPmlzX2VtcHR5KCkpIHsKKysgICAgICBoYXNfZHVtcGVkX3dpdGhvdXRf Y3Jhc2hpbmdfZm9yX2VtcHR5X3Rva2VuID0gdHJ1ZTsKKysgICAgICBTQ09QRURfQ1JBU0hfS0VZ X0JPT0woCisrICAgICAgICAgICJTV0dsb2JhbFNjb3BlIiwgImVtcHR5X3JhY2VfdG9rZW4iLAor KyAgICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2VfbmV0d29ya19y ZXF1ZXN0X3Rva2VuCisrICAgICAgICAgICAgICAtPmlzX2VtcHR5KCkpOworKyAgICAgIFNDT1BF RF9DUkFTSF9LRVlfU1RSSU5HNjQoCisrICAgICAgICAgICJTV0dsb2JhbFNjb3BlIiwgInJhY2Vf dG9rZW5fc3RyaW5nIiwKKysgICAgICAgICAgcGFyYW1zLT5yZXF1ZXN0LT5zZXJ2aWNlX3dvcmtl cl9yYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbgorKyAgICAgICAgICAgICAgLT5Ub1N0cmluZygp KTsKKysgICAgICBTQ09QRURfQ1JBU0hfS0VZX0JPT0woIlNXR2xvYmFsU2NvcGUiLCAicmFjZV9p bnNlcnRfbmV3X2VudHJ5IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0X3Jl c3VsdC5pc19uZXdfZW50cnkpOworKyAgICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RSSU5HMjU2KCJT V0dsb2JhbFNjb3BlIiwgInJhY2VfcmVxdWVzdF91cmwiLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhcmFtcy0+cmVxdWVzdC0+dXJsLkdldFN0cmluZygpLlV0ZjgoKSk7Cisr ICAgICAgYmFzZTo6ZGVidWc6OkR1bXBXaXRob3V0Q3Jhc2hpbmcoKTsKKysgICAgfQorKyAgICBp ZiAoIWhhc19kdW1wZWRfd2l0aG91dF9jcmFzaGluZ19mb3Jfbm90X25ld19lbnRyeSAmJgorKyAg ICAgICAgIWluc2VydF9yZXN1bHQuaXNfbmV3X2VudHJ5KSB7CisrICAgICAgaGFzX2R1bXBlZF93 aXRob3V0X2NyYXNoaW5nX2Zvcl9ub3RfbmV3X2VudHJ5ID0gdHJ1ZTsKKysgICAgICBTQ09QRURf Q1JBU0hfS0VZX0JPT0woCisrICAgICAgICAgICJTV0dsb2JhbFNjb3BlIiwgImVtcHR5X3JhY2Vf dG9rZW4iLAorKyAgICAgICAgICBwYXJhbXMtPnJlcXVlc3QtPnNlcnZpY2Vfd29ya2VyX3JhY2Vf bmV0d29ya19yZXF1ZXN0X3Rva2VuCisrICAgICAgICAgICAgICAtPmlzX2VtcHR5KCkpOworKyAg ICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RSSU5HNjQoCisrICAgICAgICAgICJTV0dsb2JhbFNjb3Bl IiwgInJhY2VfdG9rZW5fc3RyaW5nIiwKKysgICAgICAgICAgcGFyYW1zLT5yZXF1ZXN0LT5zZXJ2 aWNlX3dvcmtlcl9yYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbgorKyAgICAgICAgICAgICAgLT5U b1N0cmluZygpKTsKKysgICAgICBTQ09QRURfQ1JBU0hfS0VZX0JPT0woIlNXR2xvYmFsU2NvcGUi LCAicmFjZV9pbnNlcnRfbmV3X2VudHJ5IiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zZXJ0X3Jlc3VsdC5pc19uZXdfZW50cnkpOworKyAgICAgIFNDT1BFRF9DUkFTSF9LRVlfU1RS SU5HMjU2KCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfcmVxdWVzdF91cmwiLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy0+cmVxdWVzdC0+dXJsLkdldFN0cmluZygpLlV0 ZjgoKSk7CisrICAgICAgYmFzZTo6ZGVidWc6OkR1bXBXaXRob3V0Q3Jhc2hpbmcoKTsKKysgICAg fQorICAgfQorIAorICAgUmVxdWVzdCogcmVxdWVzdCA9IFJlcXVlc3Q6OkNyZWF0ZSgKK0BAIC0y ODA1LDcxICsyODQwLDEyIEBAIGJvb2wgU2VydmljZVdvcmtlckdsb2JhbFNjb3BlOjpTZXRBdHRy aWIKKyBzdGQ6Om9wdGlvbmFsPG1vam86OlBlbmRpbmdSZW1vdGU8bmV0d29yazo6bW9qb206OmJs aW5rOjpVUkxMb2FkZXJGYWN0b3J5Pj4KKyBTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU6OkZpbmRS YWNlTmV0d29ya1JlcXVlc3RVUkxMb2FkZXJGYWN0b3J5KAorICAgICBjb25zdCBiYXNlOjpVbmd1 ZXNzYWJsZVRva2VuJiB0b2tlbikgeworLSAgc3RkOjp1bmlxdWVfcHRyPFJhY2VOZXR3b3JrUmVx dWVzdEluZm8+IHJlc3VsdCA9CistICAgICAgcmFjZV9uZXR3b3JrX3JlcXVlc3RzXy5UYWtlKFN0 cmluZyh0b2tlbi5Ub1N0cmluZygpKSk7CisrICBtb2pvOjpQZW5kaW5nUmVtb3RlPG5ldHdvcms6 Om1vam9tOjpibGluazo6VVJMTG9hZGVyRmFjdG9yeT4gcmVzdWx0ID0KKysgICAgICByYWNlX25l dHdvcmtfcmVxdWVzdF9sb2FkZXJfZmFjdG9yaWVzXy5UYWtlKFN0cmluZyh0b2tlbi5Ub1N0cmlu ZygpKSk7CisgICBpZiAocmVzdWx0KSB7CistICAgIHJhY2VfbmV0d29ya19yZXF1ZXN0X2ZldGNo X2V2ZW50X2lkc18uZXJhc2UocmVzdWx0LT5mZXRjaF9ldmVudF9pZCk7CistICAgIHJldHVybiBz dGQ6Om9wdGlvbmFsPAorLSAgICAgICAgbW9qbzo6UGVuZGluZ1JlbW90ZTxuZXR3b3JrOjptb2pv bTo6Ymxpbms6OlVSTExvYWRlckZhY3Rvcnk+PigKKy0gICAgICAgIHN0ZDo6bW92ZShyZXN1bHQt PnVybF9sb2FkZXJfZmFjdG9yeSkpOworKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgIH0KKyAg IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgfQorIAorLXZvaWQgU2VydmljZVdvcmtlckdsb2JhbFNj b3BlOjpJbnNlcnROZXdJdGVtVG9SYWNlTmV0d29ya1JlcXVlc3RzKAorLSAgICBpbnQgZmV0Y2hf ZXZlbnRfaWQsCistICAgIGNvbnN0IGJhc2U6OlVuZ3Vlc3NhYmxlVG9rZW4mIHRva2VuLAorLSAg ICBtb2pvOjpQZW5kaW5nUmVtb3RlPG5ldHdvcms6Om1vam9tOjpibGluazo6VVJMTG9hZGVyRmFj dG9yeT4KKy0gICAgICAgIHVybF9sb2FkZXJfZmFjdG9yeSwKKy0gICAgY29uc3QgS1VSTCYgcmVx dWVzdF91cmwpIHsKKy0gIGF1dG8gcmFjZV9uZXR3b3JrX3JlcXVlc3RfdG9rZW4gPSBTdHJpbmco dG9rZW4uVG9TdHJpbmcoKSk7CistICBhdXRvIGluZm8gPSBzdGQ6Om1ha2VfdW5pcXVlPFJhY2VO ZXR3b3JrUmVxdWVzdEluZm8+KAorLSAgICAgIGZldGNoX2V2ZW50X2lkLCByYWNlX25ldHdvcmtf cmVxdWVzdF90b2tlbiwKKy0gICAgICBzdGQ6Om1vdmUodXJsX2xvYWRlcl9mYWN0b3J5KSk7Cist ICByYWNlX25ldHdvcmtfcmVxdWVzdF9mZXRjaF9ldmVudF9pZHNfLmluc2VydChmZXRjaF9ldmVu dF9pZCwgaW5mby5nZXQoKSk7CistICBhdXRvIGluc2VydF9yZXN1bHQgPSByYWNlX25ldHdvcmtf cmVxdWVzdHNfLmluc2VydChyYWNlX25ldHdvcmtfcmVxdWVzdF90b2tlbiwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShpbmZv KSk7CistCistICAvLyBEdW1wV2l0aG91dENyYXNoaW5nIGlmIHRoZSB0b2tlbiBpcyBlbXB0eSwg b3Igbm90IGluc2VydGVkIGFzIGEgbmV3IGVudHJ5CistICAvLyB0byB8cmFjZV9uZXR3b3JrX3Jl cXVlc3RfbG9hZGVyX2ZhY3Rvcmllc198LgorLSAgLy8gVE9ETyhjcmJ1Zy5jb20vMTQ5MjY0MCkg UmVtb3ZlIER1bXBXaXRob3V0Q3Jhc2hpbmcgb25jZSB3ZSBjb2xsZWN0IGRhdGEKKy0gIC8vIGFu ZCBpZGVudGlmeSB0aGUgY2F1c2UuCistICBzdGF0aWMgYm9vbCBoYXNfZHVtcGVkX3dpdGhvdXRf Y3Jhc2hpbmdfZm9yX2VtcHR5X3Rva2VuID0gZmFsc2U7CistICBzdGF0aWMgYm9vbCBoYXNfZHVt cGVkX3dpdGhvdXRfY3Jhc2hpbmdfZm9yX25vdF9uZXdfZW50cnkgPSBmYWxzZTsKKy0gIGlmICgh aGFzX2R1bXBlZF93aXRob3V0X2NyYXNoaW5nX2Zvcl9lbXB0eV90b2tlbiAmJiB0b2tlbi5pc19l bXB0eSgpKSB7CistICAgIGhhc19kdW1wZWRfd2l0aG91dF9jcmFzaGluZ19mb3JfZW1wdHlfdG9r ZW4gPSB0cnVlOworLSAgICBTQ09QRURfQ1JBU0hfS0VZX0JPT0woIlNXR2xvYmFsU2NvcGUiLCAi ZW1wdHlfcmFjZV90b2tlbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5pc19l bXB0eSgpKTsKKy0gICAgU0NPUEVEX0NSQVNIX0tFWV9TVFJJTkc2NCgiU1dHbG9iYWxTY29wZSIs ICJyYWNlX3Rva2VuX3N0cmluZyIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9r ZW4uVG9TdHJpbmcoKSk7CistICAgIFNDT1BFRF9DUkFTSF9LRVlfQk9PTCgiU1dHbG9iYWxTY29w ZSIsICJyYWNlX2luc2VydF9uZXdfZW50cnkiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg aW5zZXJ0X3Jlc3VsdC5pc19uZXdfZW50cnkpOworLSAgICBTQ09QRURfQ1JBU0hfS0VZX1NUUklO RzI1NigiU1dHbG9iYWxTY29wZSIsICJyYWNlX3JlcXVlc3RfdXJsIiwKKy0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVxdWVzdF91cmwuR2V0U3RyaW5nKCkuVXRmOCgpKTsKKy0gICAg YmFzZTo6ZGVidWc6OkR1bXBXaXRob3V0Q3Jhc2hpbmcoKTsKKy0gIH0KKy0gIGlmICghaGFzX2R1 bXBlZF93aXRob3V0X2NyYXNoaW5nX2Zvcl9ub3RfbmV3X2VudHJ5ICYmCistICAgICAgIWluc2Vy dF9yZXN1bHQuaXNfbmV3X2VudHJ5KSB7CistICAgIGhhc19kdW1wZWRfd2l0aG91dF9jcmFzaGlu Z19mb3Jfbm90X25ld19lbnRyeSA9IHRydWU7CistICAgIFNDT1BFRF9DUkFTSF9LRVlfQk9PTCgi U1dHbG9iYWxTY29wZSIsICJlbXB0eV9yYWNlX3Rva2VuIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgIHRva2VuLmlzX2VtcHR5KCkpOworLSAgICBTQ09QRURfQ1JBU0hfS0VZX1NUUklORzY0 KCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfdG9rZW5fc3RyaW5nIiwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0b2tlbi5Ub1N0cmluZygpKTsKKy0gICAgU0NPUEVEX0NSQVNIX0tFWV9C T09MKCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfaW5zZXJ0X25ld19lbnRyeSIsCistICAgICAgICAg ICAgICAgICAgICAgICAgICBpbnNlcnRfcmVzdWx0LmlzX25ld19lbnRyeSk7CistICAgIFNDT1BF RF9DUkFTSF9LRVlfU1RSSU5HMjU2KCJTV0dsb2JhbFNjb3BlIiwgInJhY2VfcmVxdWVzdF91cmwi LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X3VybC5HZXRTdHJpbmco KS5VdGY4KCkpOworLSAgICBiYXNlOjpkZWJ1Zzo6RHVtcFdpdGhvdXRDcmFzaGluZygpOworLSAg fQorLX0KKy0KKy12b2lkIFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZTo6UmVtb3ZlSXRlbUZyb21S YWNlTmV0d29ya1JlcXVlc3RzKAorLSAgICBpbnQgZmV0Y2hfZXZlbnRfaWQpIHsKKy0gIFJhY2VO ZXR3b3JrUmVxdWVzdEluZm8qIGluZm8gPQorLSAgICAgIHJhY2VfbmV0d29ya19yZXF1ZXN0X2Zl dGNoX2V2ZW50X2lkc18uVGFrZShmZXRjaF9ldmVudF9pZCk7CistICBpZiAoaW5mbykgeworLSAg ICByYWNlX25ldHdvcmtfcmVxdWVzdHNfLmVyYXNlKGluZm8tPnRva2VuKTsKKy0gIH0KKy19Cist CisgfSAgLy8gbmFtZXNwYWNlIGJsaW5rCitkaWZmIC11cCBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2 L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvc2VydmljZV93b3JrZXIvc2Vydmlj ZV93b3JrZXJfZ2xvYmFsX3Njb3BlLmgubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2Vy X2dsb2JhbF9zY29wZS5oCistLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9tb2R1bGVzL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2dsb2Jh bF9zY29wZS5oLm1lCTIwMjQtMDMtMTggMTA6MjY6MTQuOTA1ODE3NTAxICswMTAwCisrKysgY2hy b21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL3Nl cnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2dsb2JhbF9zY29wZS5oCTIwMjQtMDMtMTggMTE6 NDc6NTguMjAyMTk4MDI4ICswMTAwCitAQCAtNjIzLDE0ICs2MjMsNiBAQCBjbGFzcyBNT0RVTEVT X0VYUE9SVCBTZXJ2aWNlV29ya2VyR2xvYmFsCisgICAvLyBTZXJ2aWNlV29ya2VyLkZldGNoRXZl bnQuUXVldWluZ1RpbWUgaGlzdG9ncmFtLgorICAgdm9pZCBSZWNvcmRRdWV1aW5nVGltZShiYXNl OjpUaW1lVGlja3MgY3JlYXRlZF90aW1lKTsKKyAKKy0gIHZvaWQgSW5zZXJ0TmV3SXRlbVRvUmFj ZU5ldHdvcmtSZXF1ZXN0cygKKy0gICAgICBpbnQgZmV0Y2hfZXZlbnRfaWQsCistICAgICAgY29u c3QgYmFzZTo6VW5ndWVzc2FibGVUb2tlbiYgdG9rZW4sCistICAgICAgbW9qbzo6UGVuZGluZ1Jl bW90ZTxuZXR3b3JrOjptb2pvbTo6Ymxpbms6OlVSTExvYWRlckZhY3Rvcnk+CistICAgICAgICAg IHVybF9sb2FkZXJfZmFjdG9yeSwKKy0gICAgICBjb25zdCBLVVJMJiByZXF1ZXN0X3VybCk7Cist ICB2b2lkIFJlbW92ZUl0ZW1Gcm9tUmFjZU5ldHdvcmtSZXF1ZXN0cyhpbnQgZmV0Y2hfZXZlbnRf aWQpOworLQorICAgTWVtYmVyPFNlcnZpY2VXb3JrZXJDbGllbnRzPiBjbGllbnRzXzsKKyAgIE1l bWJlcjxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uPiByZWdpc3RyYXRpb25fOworICAgTWVtYmVy PDo6Ymxpbms6OlNlcnZpY2VXb3JrZXI+IHNlcnZpY2Vfd29ya2VyXzsKK0BAIC03NzYsMTcgKzc2 OCwxMCBAQCBjbGFzcyBNT0RVTEVTX0VYUE9SVCBTZXJ2aWNlV29ya2VyR2xvYmFsCisgCisgICBi bGluazo6QmxpbmtTdG9yYWdlS2V5IHN0b3JhZ2Vfa2V5XzsKKyAKKy0gIHN0cnVjdCBSYWNlTmV0 d29ya1JlcXVlc3RJbmZvIHsKKy0gICAgaW50IGZldGNoX2V2ZW50X2lkOworLSAgICBTdHJpbmcg dG9rZW47CistICAgIG1vam86OlBlbmRpbmdSZW1vdGU8bmV0d29yazo6bW9qb206OmJsaW5rOjpV UkxMb2FkZXJGYWN0b3J5PgorLSAgICAgICAgdXJsX2xvYWRlcl9mYWN0b3J5OworLSAgfTsKKyAg IC8vIFRPRE8oY3JidWcuY29tLzkxODcwMikgV1RGOjpIYXNoTWFwIGNhbm5vdCB1c2UgYmFzZTo6 VW5ndWVzc2FibGVUb2tlbiBhcyBhCisgICAvLyBrZXkuIEFzIGEgd29ya2Fyb3VuZCB1c2VzIFdU Rjo6U3RyaW5nIGFzIGEga2V5IGluc3RlYWQuCistICBIYXNoTWFwPFN0cmluZywgc3RkOjp1bmlx dWVfcHRyPFJhY2VOZXR3b3JrUmVxdWVzdEluZm8+PgorLSAgICAgIHJhY2VfbmV0d29ya19yZXF1 ZXN0c187CistICBIYXNoTWFwPGludCwgUmFjZU5ldHdvcmtSZXF1ZXN0SW5mbyo+IHJhY2VfbmV0 d29ya19yZXF1ZXN0X2ZldGNoX2V2ZW50X2lkc187CisrICBIYXNoTWFwPFN0cmluZywgbW9qbzo6 UGVuZGluZ1JlbW90ZTxuZXR3b3JrOjptb2pvbTo6Ymxpbms6OlVSTExvYWRlckZhY3Rvcnk+Pgor KyAgICAgIHJhY2VfbmV0d29ya19yZXF1ZXN0X2xvYWRlcl9mYWN0b3JpZXNfOworIAorICAgSGVh cE1vam9Bc3NvY2lhdGVkUmVtb3RlPG1vam9tOjpibGluazo6QXNzb2NpYXRlZEludGVyZmFjZVBy b3ZpZGVyPgorICAgICAgIHJlbW90ZV9hc3NvY2lhdGVkX2ludGVyZmFjZXNfe3RoaXN9OwoKZGlm ZiAtLWdpdCBhL2Nocm9taXVtLTEyMy1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmct YW5vbnltb3VzLXVuaW9uLnBhdGNoIGIvY2hyb21pdW0tMTIzLWVsNy1kZWZhdWx0LWNvbnN0cnVj dG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uOTU5M2VhNwotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMy1l bDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uLnBhdGNoCkBA IC0wLDAgKzEsMzYgQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50 cy92YXJpYXRpb25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJyaWRlci5jYy5kZWZhdWx0LWNvbnN0 cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b21wb25lbnRzL3ZhcmlhdGlvbnMvc2VydmljZS91aV9zdHJpbmdfb3ZlcnJpZGVyLmNjCistLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3ZhcmlhdGlvbnMvc2VydmljZS91aV9z dHJpbmdfb3ZlcnJpZGVyLmNjLmRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91 cy11bmlvbgkyMDI0LTAyLTIyIDIyOjQzOjA1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92YXJpYXRpb25zL3NlcnZpY2UvdWlfc3RyaW5nX292 ZXJyaWRlci5jYwkyMDI0LTAyLTI1IDEwOjUyOjE2LjA3MTYwMjUwMyArMDEwMAorQEAgLTEyLDcg KzEyLDcgQEAKKyAKKyBuYW1lc3BhY2UgdmFyaWF0aW9ucyB7CisgCistVUlTdHJpbmdPdmVycmlk ZXI6OlVJU3RyaW5nT3ZlcnJpZGVyKCkgPSBkZWZhdWx0OworK1VJU3RyaW5nT3ZlcnJpZGVyOjpV SVN0cmluZ092ZXJyaWRlcigpIHt9CisgCisgVUlTdHJpbmdPdmVycmlkZXI6OlVJU3RyaW5nT3Zl cnJpZGVyKGJhc2U6OnNwYW48Y29uc3QgdWludDMyX3Q+IHJlc291cmNlX2hhc2hlcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6c3Bhbjxjb25zdCBpbnQ+IHJl c291cmNlX2luZGljZXMpCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQv YnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMu Y2MuZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJl Y3RfZnJvbV9zZWxsZXJfc2lnbmFscy5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2ln bmFscy5jYy5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24JMjAy NC0wMi0yNSAxMDo1MjoxNi4wNzA2MDI0NzggKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2Vs bGVyX3NpZ25hbHMuY2MJMjAyNC0wMi0yNSAxMToyMDozNi41ODMxNDgyMjYgKzAxMDAKK0BAIC00 Niw3ICs0Niw3IEBAIHNpemVfdCBHZXRSZXN1bHRTaXplQnl0ZXMoY29uc3QgSGVhZGVyRGkKKyAK KyB9ICAvLyBuYW1lc3BhY2UKKyAKKy1IZWFkZXJEaXJlY3RGcm9tU2VsbGVyU2lnbmFsczo6UmVz dWx0OjpSZXN1bHQoKSA9IGRlZmF1bHQ7CisrSGVhZGVyRGlyZWN0RnJvbVNlbGxlclNpZ25hbHM6 OlJlc3VsdDo6UmVzdWx0KCkge30KKyAKKyBIZWFkZXJEaXJlY3RGcm9tU2VsbGVyU2lnbmFsczo6 UmVzdWx0OjpSZXN1bHQoCisgICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IHNlbGxlcl9z aWduYWxzLAorZGlmZiAtdXAgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9wZGZp dW0vY29yZS9mcGRmZG9jL2NwZGZfZGVmYXVsdGFwcGVhcmFuY2UuY3BwLm1lIGNocm9taXVtLTEy My4wLjYzMTIuNDYvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmRvYy9jcGRmX2RlZmF1bHRh cHBlYXJhbmNlLmNwcAorLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvcGRm aXVtL2NvcmUvZnBkZmRvYy9jcGRmX2RlZmF1bHRhcHBlYXJhbmNlLmNwcC5tZQkyMDI0LTAzLTE4 IDE2OjExOjE5LjU1MDMyOTU5MiArMDEwMAorKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhp cmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmRvYy9jcGRmX2RlZmF1bHRhcHBlYXJhbmNlLmNwcAky MDI0LTAzLTE4IDE2OjEyOjUxLjEyNDQ3MjY3NiArMDEwMAorQEAgLTU0LDcgKzU0LDcgQEAgYm9v bCBGaW5kVGFnUGFyYW1Gcm9tU3RhcnQoQ1BERl9TaW1wbGVQYQorIAorIH0gIC8vIG5hbWVzcGFj ZQorIAorLUNQREZfRGVmYXVsdEFwcGVhcmFuY2U6OkNQREZfRGVmYXVsdEFwcGVhcmFuY2UoKSA9 IGRlZmF1bHQ7CisrQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTo6Q1BERl9EZWZhdWx0QXBwZWFyYW5j ZSgpIHt9CisgCisgQ1BERl9EZWZhdWx0QXBwZWFyYW5jZTo6Q1BERl9EZWZhdWx0QXBwZWFyYW5j ZShjb25zdCBCeXRlU3RyaW5nJiBjc0RBKQorICAgICA6IG1fY3NEQShjc0RBKSB7fQoKZGlmZiAt LWdpdCBhL2Nocm9taXVtLTEyMy1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy5wYXRjaCBiL2Nocm9t aXVtLTEyMy1mc3RhY2stcHJvdGVjdG9yLXN0cm9uZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi4zM2E0MTQyCi0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTIz LWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKK2RpZmYgLXVw IGNocm9taXVtLTEyMy4wLjYzMTIuNDYvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduLmZz dGFjay1wcm90ZWN0b3Itc3Ryb25nIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvYnVpbGQvY29uZmln L2NvbXBpbGVyL0JVSUxELmduCistLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9idWlsZC9jb25m aWcvY29tcGlsZXIvQlVJTEQuZ24uZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcJMjAyNC0wMy0xNSAx MTo0NjozNC41NDIyNDgxMTYgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2J1aWxk L2NvbmZpZy9jb21waWxlci9CVUlMRC5nbgkyMDI0LTAzLTE1IDExOjU5OjAyLjk3MDg0OTg0NyAr MDEwMAorQEAgLTM4Miw3ICszODIsNyBAQCBjb25maWcoImNvbXBpbGVyIikgeworICAgICAgIH0g ZWxzZSBpZiAoKGlzX3Bvc2l4ICYmICFpc19jaHJvbWVvcyAmJiAhaXNfbmFjbCkgfHwgaXNfZnVj aHNpYSkgeworICAgICAgICAgaWYgKGN1cnJlbnRfb3MgIT0gImFpeCIpIHsKKyAgICAgICAgICAg IyBOb3QgYXZhaWxhYmxlIG9uIGFpeC4KKy0gICAgICAgICAgY2ZsYWdzICs9IFsgIi1mc3RhY2st cHJvdGVjdG9yIiBdCisrICAgICAgICAgIGNmbGFncyArPSBbICItZnN0YWNrLXByb3RlY3Rvci1z dHJvbmciIF0KKyAgICAgICAgIH0KKyAgICAgICB9CisgICAgIH0KCmRpZmYgLS1naXQgYS9jaHJv bWl1bS0xMjMtbWlzc2luZy1oZWFkZXItZmlsZXMucGF0Y2ggYi9jaHJvbWl1bS0xMjMtbWlzc2lu Zy1oZWFkZXItZmlsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u ZjExMTQyZQotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMy1taXNzaW5nLWhlYWRlci1m aWxlcy5wYXRjaApAQCAtMCwwICsxLDE2OSBAQAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2 MS4yOS9iYXNlL2NoZWNrX29wLmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hyb21pdW0tMTIyLjAu NjI2MS4yOS9iYXNlL2NoZWNrX29wLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2Jhc2Uv Y2hlY2tfb3AuaC5taXNzaW5nLWhlYWRlci1maWxlcwkyMDI0LTAyLTA3IDE5OjQ5OjIwLjAwMDAw MDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvYmFzZS9jaGVja19vcC5oCTIw MjQtMDItMTIgMTQ6NTk6NDguMTM2NDE1MDYwICswMTAwCitAQCAtNSw2ICs1LDcgQEAKKyAjaWZu ZGVmIEJBU0VfQ0hFQ0tfT1BfSF8KKyAjZGVmaW5lIEJBU0VfQ0hFQ0tfT1BfSF8KKyAKKysjaW5j bHVkZSA8Y3N0ZGludD4KKyAjaW5jbHVkZSA8Y3N0ZGRlZj4KKyAjaW5jbHVkZSA8c3RyaW5nPgor ICNpbmNsdWRlIDxzdHJpbmdfdmlldz4KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkv YmFzZS9jb250YWluZXJzL2ZsYXRfbWFwLmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hyb21pdW0t MTIyLjAuNjI2MS4yOS9iYXNlL2NvbnRhaW5lcnMvZmxhdF9tYXAuaAorLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuMjkvYmFzZS9jb250YWluZXJzL2ZsYXRfbWFwLmgubWlzc2luZy1oZWFkZXItZmls ZXMJMjAyNC0wMi0wNyAxOTo0OToyMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIu MC42MjYxLjI5L2Jhc2UvY29udGFpbmVycy9mbGF0X21hcC5oCTIwMjQtMDItMTIgMTQ6NTk6NDgu MTM2NDE1MDYwICswMTAwCitAQCAtNSw2ICs1LDcgQEAKKyAjaWZuZGVmIEJBU0VfQ09OVEFJTkVS U19GTEFUX01BUF9IXworICNkZWZpbmUgQkFTRV9DT05UQUlORVJTX0ZMQVRfTUFQX0hfCisgCisr I2luY2x1ZGUgPGNzdGRpbnQ+CisgI2luY2x1ZGUgPGZ1bmN0aW9uYWw+CisgI2luY2x1ZGUgPHR1 cGxlPgorICNpbmNsdWRlIDx0eXBlX3RyYWl0cz4KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuMjkvY2hyb21lL2Jyb3dzZXIvd2ViYXV0aG4vYXV0aGVudGljYXRvcl9yZXF1ZXN0X2RpYWxv Z19tb2RlbC5oLm1pc3NpbmctaGVhZGVyLWZpbGVzIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY2hy b21lL2Jyb3dzZXIvd2ViYXV0aG4vYXV0aGVudGljYXRvcl9yZXF1ZXN0X2RpYWxvZ19tb2RlbC5o CistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jaHJvbWUvYnJvd3Nlci93ZWJhdXRobi9hdXRo ZW50aWNhdG9yX3JlcXVlc3RfZGlhbG9nX21vZGVsLmgubWlzc2luZy1oZWFkZXItZmlsZXMJMjAy NC0wMi0xMiAxNDo1OTo0OC4xMzc0MTUwNzkgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjI5L2Nocm9tZS9icm93c2VyL3dlYmF1dGhuL2F1dGhlbnRpY2F0b3JfcmVxdWVzdF9kaWFsb2df bW9kZWwuaAkyMDI0LTAyLTEyIDE1OjI4OjE3LjE2ODM5NTc4NyArMDEwMAorQEAgLTksNiArOSw3 IEBACisgI2luY2x1ZGUgPG9wdGlvbmFsPgorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUg PHZlY3Rvcj4KKysjaW5jbHVkZSA8dmFyaWFudD4KKyAKKyAjaW5jbHVkZSAiYmFzZS9jb250YWlu ZXJzL3NwYW4uaCIKKyAjaW5jbHVkZSAiYmFzZS9mdW5jdGlvbmFsL2NhbGxiYWNrX2ZvcndhcmQu aCIKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY2hyb21lL3Rlc3QvY2hyb21lZHJp dmVyL2Nocm9tZS93ZWJfdmlld19pbXBsLmNjLm1pc3NpbmctaGVhZGVyLWZpbGVzIGNocm9taXVt LTEyMi4wLjYyNjEuMjkvY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2Nocm9tZS93ZWJfdmlld19p bXBsLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jaHJvbWUvdGVzdC9jaHJvbWVkcml2 ZXIvY2hyb21lL3dlYl92aWV3X2ltcGwuY2MubWlzc2luZy1oZWFkZXItZmlsZXMJMjAyNC0wMi0w NyAxOTo0OToyNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2No cm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jaHJvbWUvd2ViX3ZpZXdfaW1wbC5jYwkyMDI0LTAyLTEy IDE0OjU5OjQ4LjEzNzQxNTA3OSArMDEwMAorQEAgLTExLDYgKzExLDcgQEAKKyAjaW5jbHVkZSA8 cXVldWU+CisgI2luY2x1ZGUgPHV0aWxpdHk+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKysjaW5jbHVk ZSA8Y3N0cmluZz4KKyAKKyAjaW5jbHVkZSAiYmFzZS9jaGVjay5oIgorICNpbmNsdWRlICJiYXNl L2ZpbGVzL2ZpbGVfcGF0aC5oIgorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jb21w b25lbnRzL2ZlYXR1cmVfZW5nYWdlbWVudC9pbnRlcm5hbC9uZXZlcl9ldmVudF9zdG9yYWdlX3Zh bGlkYXRvci5oLm1pc3NpbmctaGVhZGVyLWZpbGVzIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29t cG9uZW50cy9mZWF0dXJlX2VuZ2FnZW1lbnQvaW50ZXJuYWwvbmV2ZXJfZXZlbnRfc3RvcmFnZV92 YWxpZGF0b3IuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9mZWF0dXJl X2VuZ2FnZW1lbnQvaW50ZXJuYWwvbmV2ZXJfZXZlbnRfc3RvcmFnZV92YWxpZGF0b3IuaC5taXNz aW5nLWhlYWRlci1maWxlcwkyMDI0LTAyLTA3IDE5OjQ5OjMwLjAwMDAwMDAwMCArMDEwMAorKysr IGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9mZWF0dXJlX2VuZ2FnZW1lbnQvaW50 ZXJuYWwvbmV2ZXJfZXZlbnRfc3RvcmFnZV92YWxpZGF0b3IuaAkyMDI0LTAyLTEyIDE0OjU5OjQ4 LjEzODQxNTA5NyArMDEwMAorQEAgLTUsNiArNSw3IEBACisgI2lmbmRlZiBDT01QT05FTlRTX0ZF QVRVUkVfRU5HQUdFTUVOVF9JTlRFUk5BTF9ORVZFUl9FVkVOVF9TVE9SQUdFX1ZBTElEQVRPUl9I XworICNkZWZpbmUgQ09NUE9ORU5UU19GRUFUVVJFX0VOR0FHRU1FTlRfSU5URVJOQUxfTkVWRVJf RVZFTlRfU1RPUkFHRV9WQUxJREFUT1JfSF8KKyAKKysjaW5jbHVkZSA8Y3N0ZGludD4KKyAjaW5j bHVkZSA8c3RyaW5nPgorIAorICNpbmNsdWRlICJjb21wb25lbnRzL2ZlYXR1cmVfZW5nYWdlbWVu dC9pbnRlcm5hbC9ldmVudF9zdG9yYWdlX3ZhbGlkYXRvci5oIgorZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS4yOS9naW4vdGltZV9jbGFtcGVyLmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hy b21pdW0tMTIyLjAuNjI2MS4yOS9naW4vdGltZV9jbGFtcGVyLmgKKy0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjI5L2dpbi90aW1lX2NsYW1wZXIuaC5taXNzaW5nLWhlYWRlci1maWxlcwkyMDI0LTAy LTA3IDE5OjQ5OjM1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkv Z2luL3RpbWVfY2xhbXBlci5oCTIwMjQtMDItMTIgMTQ6NTk6NDguMTM4NDE1MDk3ICswMTAwCitA QCAtNDgsNyArNDgsNyBAQCBjbGFzcyBHSU5fRVhQT1JUIFRpbWVDbGFtcGVyIHsKKyAgICAgY29u c3QgaW50NjRfdCBtaWNyb3MgPSBub3dfbWljcm9zICUgMTAwMDsKKyAgICAgLy8gYWJzKCkgaXMg bmVjZXNzYXJ5IGZvciBkZXZpY2VzIHdpdGggdGltZXMgYmVmb3JlIHVuaXgtZXBvY2ggKG1vc3Qg bGlrZWx5CisgICAgIC8vIGNvbmZpZ3VyZWQgaW5jb3JyZWN0bHkpLgorLSAgICBpZiAoYWJzKG1p Y3JvcykgKyBrUmVzb2x1dGlvbk1pY3JvcyA8IDEwMDApIHsKKysgICAgaWYgKHN0ZDo6YWJzKG1p Y3JvcykgKyBrUmVzb2x1dGlvbk1pY3JvcyA8IDEwMDApIHsKKyAgICAgICByZXR1cm4gbm93X21p Y3JvcyAvIDEwMDA7CisgICAgIH0KKyAgICAgcmV0dXJuIENsYW1wVGltZVJlc29sdXRpb24obm93 X21pY3JvcykgLyAxMDAwOworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9uZXQvYmFz ZS9uZXRfZXhwb3J0LmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hyb21pdW0tMTIyLjAuNjI2MS4y OS9uZXQvYmFzZS9uZXRfZXhwb3J0LmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L25ldC9i YXNlL25ldF9leHBvcnQuaC5taXNzaW5nLWhlYWRlci1maWxlcwkyMDI0LTAyLTA3IDE5OjQ5OjM4 LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvbmV0L2Jhc2UvbmV0 X2V4cG9ydC5oCTIwMjQtMDItMTIgMTQ6NTk6NDguMTM5NDE1MTE2ICswMTAwCitAQCAtNSw2ICs1 LDggQEAKKyAjaWZuZGVmIE5FVF9CQVNFX05FVF9FWFBPUlRfSF8KKyAjZGVmaW5lIE5FVF9CQVNF X05FVF9FWFBPUlRfSF8KKyAKKysjaW5jbHVkZSA8Y3N0ZGludD4KKysKKyAvLyBEZWZpbmVzIE5F VF9FWFBPUlQgc28gdGhhdCBmdW5jdGlvbmFsaXR5IGltcGxlbWVudGVkIGJ5IHRoZSBuZXQgbW9k dWxlIGNhbgorIC8vIGJlIGV4cG9ydGVkIHRvIGNvbnN1bWVycywgYW5kIE5FVF9FWFBPUlRfUFJJ VkFURSB0aGF0IGFsbG93cyB1bml0IHRlc3RzIHRvCisgLy8gYWNjZXNzIGZlYXR1cmVzIG5vdCBp bnRlbmRlZCB0byBiZSB1c2VkIGRpcmVjdGx5IGJ5IHJlYWwgY29uc3VtZXJzLgorZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvc3RyaW5n cy9zdHJpbmdfdmlldy5oLm1pc3NpbmctaGVhZGVyLWZpbGVzIGNocm9taXVtLTEyMi4wLjYyNjEu MjkvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaAorLS0t IGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvYWJzZWlsLWNwcC9hYnNsL3N0cmlu Z3Mvc3RyaW5nX3ZpZXcuaC5taXNzaW5nLWhlYWRlci1maWxlcwkyMDI0LTAyLTA3IDE5OjQ5OjQw LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkv YWJzZWlsLWNwcC9hYnNsL3N0cmluZ3Mvc3RyaW5nX3ZpZXcuaAkyMDI0LTAyLTEyIDE0OjU5OjQ4 LjE0MjQxNTE3MiArMDEwMAorQEAgLTI3LDYgKzI3LDcgQEAKKyAjaWZuZGVmIEFCU0xfU1RSSU5H U19TVFJJTkdfVklFV19IXworICNkZWZpbmUgQUJTTF9TVFJJTkdTX1NUUklOR19WSUVXX0hfCisg CisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgI2luY2x1ZGUgPGFsZ29yaXRobT4KKyAjaW5jbHVkZSA8 Y2Fzc2VydD4KKyAjaW5jbHVkZSA8Y3N0ZGRlZj4KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuMjkvdGhpcmRfcGFydHkvZGF3bi9zcmMvdGludC9sYW5nL3NwaXJ2L3JlYWRlci9hc3RfcGFy c2VyL25hbWVyLmgubWlzc2luZy1oZWFkZXItZmlsZXMgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS90 aGlyZF9wYXJ0eS9kYXduL3NyYy90aW50L2xhbmcvc3BpcnYvcmVhZGVyL2FzdF9wYXJzZXIvbmFt ZXIuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvZGF3bi9zcmMvdGlu dC9sYW5nL3NwaXJ2L3JlYWRlci9hc3RfcGFyc2VyL25hbWVyLmgubWlzc2luZy1oZWFkZXItZmls ZXMJMjAyNC0wMi0wNyAxOTo1MDo0NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIu MC42MjYxLjI5L3RoaXJkX3BhcnR5L2Rhd24vc3JjL3RpbnQvbGFuZy9zcGlydi9yZWFkZXIvYXN0 X3BhcnNlci9uYW1lci5oCTIwMjQtMDItMTIgMTQ6NTk6NDguMTQyNDE1MTcyICswMTAwCitAQCAt MjgsNiArMjgsNyBAQAorICNpZm5kZWYgU1JDX1RJTlRfTEFOR19TUElSVl9SRUFERVJfQVNUX1BB UlNFUl9OQU1FUl9IXworICNkZWZpbmUgU1JDX1RJTlRfTEFOR19TUElSVl9SRUFERVJfQVNUX1BB UlNFUl9OQU1FUl9IXworIAorKyNpbmNsdWRlIDxjc3RkaW50PgorICNpbmNsdWRlIDxzdHJpbmc+ CisgI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CisgI2luY2x1ZGUgPHZlY3Rvcj4KK2RpZmYgLXVw IGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvc3dpZnRzaGFkZXIvdGhpcmRfcGFy dHkvbGx2bS0xMC4wL2xsdm0vbGliL1N1cHBvcnQvVW5peC9TaWduYWxzLmluYy5taXNzaW5nLWhl YWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3N3aWZ0c2hhZGVy L3RoaXJkX3BhcnR5L2xsdm0tMTAuMC9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvU2lnbmFscy5pbmMK Ky0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJk X3BhcnR5L2xsdm0tMTAuMC9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvU2lnbmFscy5pbmMubWlzc2lu Zy1oZWFkZXItZmlsZXMJMjAyNC0wMi0wNyAxOTo1NDo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBj aHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3N3aWZ0c2hhZGVyL3RoaXJkX3BhcnR5 L2xsdm0tMTAuMC9sbHZtL2xpYi9TdXBwb3J0L1VuaXgvU2lnbmFscy5pbmMJMjAyNC0wMi0xMiAx NDo1OTo0OC4xNDM0MTUxOTAgKzAxMDAKK0BAIC00NSw2ICs0NSw3IEBACisgI2luY2x1ZGUgImxs dm0vU3VwcG9ydC9TYXZlQW5kUmVzdG9yZS5oIgorICNpbmNsdWRlICJsbHZtL1N1cHBvcnQvcmF3 X29zdHJlYW0uaCIKKyAjaW5jbHVkZSA8YWxnb3JpdGhtPgorKyNpbmNsdWRlIDxjc3RkaW50Pgor ICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUgPHN5c2V4aXRzLmg+CisgI2lmZGVmIEhBVkVf QkFDS1RSQUNFCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3Rm bGl0ZS9zcmMvdGVuc29yZmxvdy9saXRlL2tlcm5lbHMvaW50ZXJuYWwvc3BlY3Ryb2dyYW0uaC5t aXNzaW5nLWhlYWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3Rm bGl0ZS9zcmMvdGVuc29yZmxvdy9saXRlL2tlcm5lbHMvaW50ZXJuYWwvc3BlY3Ryb2dyYW0uaAor LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvdGZsaXRlL3NyYy90ZW5zb3Jm bG93L2xpdGUva2VybmVscy9pbnRlcm5hbC9zcGVjdHJvZ3JhbS5oLm1pc3NpbmctaGVhZGVyLWZp bGVzCTIwMjQtMDItMDcgMTk6NTM6MTcuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIy LjAuNjI2MS4yOS90aGlyZF9wYXJ0eS90ZmxpdGUvc3JjL3RlbnNvcmZsb3cvbGl0ZS9rZXJuZWxz L2ludGVybmFsL3NwZWN0cm9ncmFtLmgJMjAyNC0wMi0xMiAxNDo1OTo0OC4xNDM0MTUxOTAgKzAx MDAKK0BAIC0zMSw2ICszMSw3IEBAIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICNp Zm5kZWYgVEVOU09SRkxPV19MSVRFX0tFUk5FTFNfSU5URVJOQUxfU1BFQ1RST0dSQU1fSF8KKyAj ZGVmaW5lIFRFTlNPUkZMT1dfTElURV9LRVJORUxTX0lOVEVSTkFMX1NQRUNUUk9HUkFNX0hfCisg CisrI2luY2x1ZGUgPGNzdGRpbnQ+CisgI2luY2x1ZGUgPGNvbXBsZXg+CisgI2luY2x1ZGUgPGRl cXVlPgorICNpbmNsdWRlIDx2ZWN0b3I+CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjI5 L3RoaXJkX3BhcnR5L3Z1bGthbi1kZXBzL3Z1bGthbi12YWxpZGF0aW9uLWxheWVycy9zcmMvbGF5 ZXJzL2V4dGVybmFsL3ZtYS92a19tZW1fYWxsb2MuaC5taXNzaW5nLWhlYWRlci1maWxlcyBjaHJv bWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3Z1bGthbi1kZXBzL3Z1bGthbi12YWxpZGF0 aW9uLWxheWVycy9zcmMvbGF5ZXJzL2V4dGVybmFsL3ZtYS92a19tZW1fYWxsb2MuaAorLS0tIGNo cm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvdnVsa2FuLWRlcHMvdnVsa2FuLXZhbGlk YXRpb24tbGF5ZXJzL3NyYy9sYXllcnMvZXh0ZXJuYWwvdm1hL3ZrX21lbV9hbGxvYy5oLm1pc3Np bmctaGVhZGVyLWZpbGVzCTIwMjQtMDItMDcgMTk6NTQ6MjAuMDAwMDAwMDAwICswMTAwCisrKysg Y2hyb21pdW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS92dWxrYW4tZGVwcy92dWxrYW4tdmFs aWRhdGlvbi1sYXllcnMvc3JjL2xheWVycy9leHRlcm5hbC92bWEvdmtfbWVtX2FsbG9jLmgJMjAy NC0wMi0xMiAxNDo1OTo0OC4xNDU0MTUyMjggKzAxMDAKK0BAIC0yODg0LDYgKzI4ODQsNyBAQCBz dGF0aWMgdm9pZCB2bWFfYWxpZ25lZF9mcmVlKHZvaWQqIFZNQV9OCisgCisgLy8gRGVmaW5lIHRo aXMgbWFjcm8gdG8gMSB0byBlbmFibGUgZnVuY3Rpb25zOiB2bWFCdWlsZFN0YXRzU3RyaW5nLCB2 bWFGcmVlU3RhdHNTdHJpbmcuCisgI2lmIFZNQV9TVEFUU19TVFJJTkdfRU5BQkxFRAorKyNpbmNs dWRlIDxzdGRpby5oPgorICAgICBzdGF0aWMgaW5saW5lIHZvaWQgVm1hVWludDMyVG9TdHIoY2hh ciogVk1BX05PVF9OVUxMIG91dFN0ciwgc2l6ZV90IHN0ckxlbiwgdWludDMyX3QgbnVtKQorICAg ICB7CisgICAgICAgICBzbnByaW50ZihvdXRTdHIsIHN0ckxlbiwgIiV1Iiwgc3RhdGljX2Nhc3Q8 dW5zaWduZWQgaW50PihudW0pKTsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhp cmRfcGFydHkvd2VicnRjL2F1ZGlvL3V0aWxpdHkvY2hhbm5lbF9taXhlci5jYy5taXNzaW5nLWhl YWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9hdWRp by91dGlsaXR5L2NoYW5uZWxfbWl4ZXIuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3Ro aXJkX3BhcnR5L3dlYnJ0Yy9hdWRpby91dGlsaXR5L2NoYW5uZWxfbWl4ZXIuY2MubWlzc2luZy1o ZWFkZXItZmlsZXMJMjAyNC0wMi0wNyAxOTo1MzoxNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9hdWRpby91dGlsaXR5L2NoYW5u ZWxfbWl4ZXIuY2MJMjAyNC0wMi0xMiAxNDo1OTo0OC4xNDU0MTUyMjggKzAxMDAKK0BAIC04LDYg KzgsOCBAQAorICAqICBiZSBmb3VuZCBpbiB0aGUgQVVUSE9SUyBmaWxlIGluIHRoZSByb290IG9m IHRoZSBzb3VyY2UgdHJlZS4KKyAgKi8KKyAKKysjaW5jbHVkZSA8Y3N0cmluZz4KKysKKyAjaW5j bHVkZSAiYXVkaW8vdXRpbGl0eS9jaGFubmVsX21peGVyLmgiCisgCisgI2luY2x1ZGUgImF1ZGlv L3V0aWxpdHkvY2hhbm5lbF9taXhpbmdfbWF0cml4LmgiCitkaWZmIC11cCBjaHJvbWl1bS0xMjIu MC42MjYxLjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1v bl90eXBlc19wdWJsaWMuaC5taXNzaW5nLWhlYWRlci1maWxlcyBjaHJvbWl1bS0xMjIuMC42MjYx LjI5L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2luY2x1ZGUvbW9kdWxlX2NvbW1vbl90eXBl c19wdWJsaWMuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdGhpcmRfcGFydHkvd2VicnRj L21vZHVsZXMvaW5jbHVkZS9tb2R1bGVfY29tbW9uX3R5cGVzX3B1YmxpYy5oLm1pc3NpbmctaGVh ZGVyLWZpbGVzCTIwMjQtMDItMDcgMTk6NTM6MTcuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21p dW0tMTIyLjAuNjI2MS4yOS90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9pbmNsdWRlL21vZHVs ZV9jb21tb25fdHlwZXNfcHVibGljLmgJMjAyNC0wMi0xMiAxNDo1OTo0OC4xNDU0MTUyMjggKzAx MDAKK0BAIC0xMSw2ICsxMSw3IEBACisgI2lmbmRlZiBNT0RVTEVTX0lOQ0xVREVfTU9EVUxFX0NP TU1PTl9UWVBFU19QVUJMSUNfSF8KKyAjZGVmaW5lIE1PRFVMRVNfSU5DTFVERV9NT0RVTEVfQ09N TU9OX1RZUEVTX1BVQkxJQ19IXworIAorKyNpbmNsdWRlIDxjc3RkaW50PgorICNpbmNsdWRlIDxs aW1pdHM+CisgCisgI2luY2x1ZGUgImFic2wvdHlwZXMvb3B0aW9uYWwuaCIKK2RpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuMjkvdWkvZ2Z4L2xpbnV4L2RybV91dGlsX2xpbnV4LmgubWlzc2lu Zy1oZWFkZXItZmlsZXMgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS91aS9nZngvbGludXgvZHJtX3V0 aWxfbGludXguaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvdWkvZ2Z4L2xpbnV4L2RybV91 dGlsX2xpbnV4LmgubWlzc2luZy1oZWFkZXItZmlsZXMJMjAyNC0wMi0wNyAxOTo1MDowNS4wMDAw MDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L3VpL2dmeC9saW51eC9kcm1f dXRpbF9saW51eC5oCTIwMjQtMDItMTIgMTQ6NTk6NDguMTQ3NDE1MjY1ICswMTAwCitAQCAtOSw2 ICs5LDggQEAKKyAKKyAjaW5jbHVkZSAidWkvZ2Z4L2J1ZmZlcl90eXBlcy5oIgorIAorKyNpbmNs dWRlIDxjc3RkaW50PgorKworIG5hbWVzcGFjZSB1aSB7CisgCisgaW50IEdldEZvdXJDQ0Zvcm1h dEZyb21CdWZmZXJGb3JtYXQoZ2Z4OjpCdWZmZXJGb3JtYXQgZm9ybWF0KTsKCmRpZmYgLS1naXQg YS9jaHJvbWl1bS0xMjMtbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2ggYi9jaHJvbWl1bS0x MjMtbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNGIyOTE3MAotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMy1ub19t YXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRjaApAQCAtMCwwICsxLDEzNjQgQEAKK2RpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFtX2Fs bG9jYXRvci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9tZXRyaWNzL3BlcnNp c3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRvci5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv YmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRvci5jYy50aGFuCTIwMjQt MDItMjIgMjI6NDI6NDMuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9iYXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjCTIwMjQtMDIt MjQgMTM6MTM6MzIuNDg0NTAzNzM1ICswMTAwCitAQCAtMjE4LDEzICsyMTgsMTMgQEAgUGVyc2lz dGVudFNwYXJzZUhpc3RvZ3JhbURhdGFNYW5hZ2VyOjpMbworICAgICAvLyBUaGUgc2FtcGxlLXJl Y29yZCBjb3VsZCBiZSBmb3IgYW55IHNwYXJzZSBoaXN0b2dyYW0uIEFkZCB0aGUgcmVmZXJlbmNl CisgICAgIC8vIHRvIHRoZSBhcHByb3ByaWF0ZSBjb2xsZWN0aW9uIGZvciBsYXRlciB1c2UuCisg ICAgIGlmIChmb3VuZF9pZCA9PSBtYXRjaF9pZCkgeworLSAgICAgIGZvdW5kX3JlY29yZHMuZW1w bGFjZV9iYWNrKHJlZiwgdmFsdWUpOworKyAgICAgIGZvdW5kX3JlY29yZHMuZW1wbGFjZV9iYWNr KCkgPSB7cmVmLCB2YWx1ZX07CisgICAgICAgZm91bmQgPSB0cnVlOworICAgICB9IGVsc2Ugewor ICAgICAgIHN0ZDo6dmVjdG9yPFJlZmVyZW5jZUFuZFNhbXBsZT4qIHNhbXBsZXMgPQorICAgICAg ICAgICBHZXRTYW1wbGVNYXBSZWNvcmRzV2hpbGVMb2NrZWQoZm91bmRfaWQpOworICAgICAgIENI RUNLKHNhbXBsZXMpOworLSAgICAgIHNhbXBsZXMtPmVtcGxhY2VfYmFjayhyZWYsIHZhbHVlKTsK KysgICAgICBzYW1wbGVzLT5lbXBsYWNlX2JhY2soKSA9IHtyZWYsIHZhbHVlfTsKKyAgICAgfQor ICAgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0 aWxfeGRnLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0aWxf eGRnLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0aWxfeGRn LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcuY2MJMjAyNC0wMi0yNCAxMzox Mzo0NC4xNTg3MTI3NTYgKzAxMDAKK0BAIC01Niw3ICs1Niw3IEBAIHZvaWQgTG9hZEFsbE1pbWVD YWNoZUZpbGVzKE1pbWVUeXBlTWFwJgorICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogR2V0WERH RGF0YVNlYXJjaExvY2F0aW9ucyhlbnYuZ2V0KCkpKSB7CisgICAgIEZpbGVQYXRoIG1pbWVfY2Fj aGUgPSBwYXRoLkFwcGVuZCgibWltZS9taW1lLmNhY2hlIik7CisgICAgIGlmIChHZXRGaWxlSW5m byhtaW1lX2NhY2hlLCAmaW5mbykgJiYgUGFyc2VNaW1lVHlwZXMobWltZV9jYWNoZSwgbWFwKSkg eworLSAgICAgIGZpbGVzLmVtcGxhY2VfYmFjayhtaW1lX2NhY2hlLCBpbmZvLmxhc3RfbW9kaWZp ZWQpOworKyAgICAgIGZpbGVzLmVtcGxhY2VfYmFjaygpID0ge21pbWVfY2FjaGUsIGluZm8ubGFz dF9tb2RpZmllZH07CisgICAgIH0KKyAgIH0KKyB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAu NjI2MS42OS9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYworLS0tIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MudGhhbgkyMDI0LTAyLTIyIDIy OjQyOjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90 cmFjZV9ldmVudC90cmFjZV9sb2cuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODQ1MDM3MzUgKzAx MDAKK0BAIC0yMTk4LDggKzIxOTgsOCBAQCB2b2lkIFRyYWNlTG9nOjpTZXRUcmFjZUJ1ZmZlckZv clRlc3RpbmcoCisgI2lmIEJVSUxERkxBRyhVU0VfUEVSRkVUVE9fQ0xJRU5UX0xJQlJBUlkpCisg dm9pZCBUcmFjZUxvZzo6T25TZXR1cChjb25zdCBwZXJmZXR0bzo6RGF0YVNvdXJjZUJhc2U6OlNl dHVwQXJncyYgYXJncykgeworICAgQXV0b0xvY2sgbG9jayh0cmFja19ldmVudF9sb2NrXyk7Cist ICB0cmFja19ldmVudF9zZXNzaW9uc18uZW1wbGFjZV9iYWNrKGFyZ3MuaW50ZXJuYWxfaW5zdGFu Y2VfaW5kZXgsICphcmdzLmNvbmZpZywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXJncy5iYWNrZW5kX3R5cGUpOworKyAgdHJhY2tfZXZlbnRfc2Vzc2lvbnNfLmVtcGxh Y2VfYmFjaygpID0ge2FyZ3MuaW50ZXJuYWxfaW5zdGFuY2VfaW5kZXgsICphcmdzLmNvbmZpZywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5iYWNrZW5kX3R5cGV9 OworIH0KKyAKKyB2b2lkIFRyYWNlTG9nOjpPblN0YXJ0KGNvbnN0IHBlcmZldHRvOjpEYXRhU291 cmNlQmFzZTo6U3RhcnRBcmdzJikgeworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlk ZXIuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2NvbnRlbnRf c2V0dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYworLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5ncy9vbmVfdGltZV9wZXJt aXNzaW9uX3Byb3ZpZGVyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1MC4wMDAwMDAwMDAgKzAx MDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2NvbnRlbnRfc2V0 dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYwkyMDI0LTAyLTI0IDEzOjEzOjMy LjQ4NTUwMzc1MiArMDEwMAorQEAgLTI1Miw4ICsyNTIsOCBAQCB2b2lkIE9uZVRpbWVQZXJtaXNz aW9uUHJvdmlkZXI6Ok9uU3VzcGVuCisgCisgICAgICAgd2hpbGUgKHJ1bGVfaXRlcmF0b3IgJiYg cnVsZV9pdGVyYXRvci0+SGFzTmV4dCgpKSB7CisgICAgICAgICBhdXRvIHJ1bGUgPSBydWxlX2l0 ZXJhdG9yLT5OZXh0KCk7CistICAgICAgICBwYXR0ZXJuc190b19kZWxldGUuZW1wbGFjZV9iYWNr KHNldHRpbmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybik7CisrICAgICAg ICBwYXR0ZXJuc190b19kZWxldGUuZW1wbGFjZV9iYWNrKCkgPSB7c2V0dGluZ190eXBlLCBydWxl LT5wcmltYXJ5X3BhdHRlcm4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJufTsKKyAgICAgICAgIHBlcm1pc3Npb25zOjpQZXJt aXNzaW9uVW1hVXRpbDo6UmVjb3JkT25lVGltZVBlcm1pc3Npb25FdmVudCgKKyAgICAgICAgICAg ICBzZXR0aW5nX3R5cGUsCisgICAgICAgICAgICAgcGVybWlzc2lvbnM6Ok9uZVRpbWVQZXJtaXNz aW9uRXZlbnQ6OkVYUElSRURfT05fU1VTUEVORCk7CitAQCAtMzU1LDggKzM1NSw4IEBAIHZvaWQg T25lVGltZVBlcm1pc3Npb25Qcm92aWRlcjo6RGVsZXRlRW4KKyAgICAgYXV0byBydWxlID0gcnVs ZV9pdGVyYXRvci0+TmV4dCgpOworICAgICBpZiAocnVsZS0+cHJpbWFyeV9wYXR0ZXJuLk1hdGNo ZXMob3JpZ2luX2d1cmwpICYmCisgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybi5NYXRj aGVzKG9yaWdpbl9ndXJsKSkgeworLSAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2Jh Y2soCistICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRl cm4sIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuKTsKKysgICAgICBwYXR0ZXJuc190b19kZWxldGUu ZW1wbGFjZV9iYWNrKCkgPSB7CisrICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCBydWxl LT5wcmltYXJ5X3BhdHRlcm4sIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJufTsKKyAgICAgICBwZXJt aXNzaW9uczo6UGVybWlzc2lvblVtYVV0aWw6OlJlY29yZE9uZVRpbWVQZXJtaXNzaW9uRXZlbnQo CisgICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCB0cmlnZ2VyX2V2ZW50KTsKKyAgICAg fQorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9lbnRlcnBy aXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJv dHRsZS5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZW50ZXJw cmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhy b3R0bGUuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2VudGVy cHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Ro cm90dGxlLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9t YW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxlLmNjCTIwMjQt MDItMjQgMTM6MTM6MzIuNDg1NTAzNzUyICswMTAwCitAQCAtNjcsOCArNjcsOCBAQCBiYXNlOjpm bGF0X21hcDxzdGQ6OnN0cmluZywgU0FNTFByb2ZpbGVBCisgICAvLyBUT0RPKGNyYnVnLmNvbS8x NDQ1MDcyKTogQWRkIGFjdHVhbCBkb21haW5zIHdpdGggYXR0cmlidXRlIG5hbWVzLgorICAgcHJv ZmlsZV9hdHRyaWJ1dGVzLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCisgICAgICAgInN1cHBvcnRl ZC50ZXN0IiwKKy0gICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXMoInBsYWNlaG9sZGVyTmFtZSIs ICJwbGFjZWhvbGRlckRvbWFpbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGFj ZWhvbGRlclRva2VuIikpKTsKKysgICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXN7InBsYWNlaG9s ZGVyTmFtZSIsICJwbGFjZWhvbGRlckRvbWFpbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJwbGFjZWhvbGRlclRva2VuIn0pKTsKKyAKKyAgIC8vIEV4dHJhY3QgZG9tYWlucyBhbmQg YXR0cmlidXRlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUgc3dpdGNoLgorICAgY29uc3QgYmFzZTo6 Q29tbWFuZExpbmUmIGNvbW1hbmRfbGluZSA9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X2Fza192aWV3LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv YnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9h c2tfdmlldy5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mu dGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODY1MDM3 NzAgKzAxMDAKK0BAIC02MCwxMiArNjAsMTIgQEAgc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNz aW9uUHJvbXB0QXNrVgorIEVtYmVkZGVkUGVybWlzc2lvblByb21wdEFza1ZpZXc6OkdldEJ1dHRv bnNDb25maWd1cmF0aW9uKCkgY29uc3QgeworICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJh dGlvbj4gYnV0dG9uczsKKyAgIGlmIChiYXNlOjpGZWF0dXJlTGlzdDo6SXNFbmFibGVkKHBlcm1p c3Npb25zOjpmZWF0dXJlczo6a09uZVRpbWVQZXJtaXNzaW9uKSkgeworLSAgICBidXR0b25zLmVt cGxhY2VfYmFjaygKKysgICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAgIGwx MG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1dfVEhJU19USU1FKSwK Ky0gICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCk7CisrICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0 eWxlOjprVG9uYWx9OworICAgfQorLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGlsOjpH ZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCistICAgICAgICAgICAgICAgICAg ICAgICBCdXR0b25UeXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dJ ZCk7CisrICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRG MTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAorKyAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9u VHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga0FsbG93SWR9OworICAgcmV0 dXJuIGJ1dHRvbnM7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21w dF9iYXNlX3ZpZXcuaC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3 LmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Bl cm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oLnRoYW4JMjAy NC0wMi0yMiAyMjo0Mjo1NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X2Jhc2Vfdmlldy5oCTIwMjQtMDItMjQgMTM6MTM6MzIuNDg2NTAzNzcwICswMTAw CitAQCAtODcsNiArODcsNyBAQCBjbGFzcyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRCYXNlVmll dyA6CisgICBzdHJ1Y3QgUmVxdWVzdExpbmVDb25maWd1cmF0aW9uIHsKKyAgICAgY29uc3QgcmF3 X3B0cjxjb25zdCBnZng6OlZlY3Rvckljb24+IGljb247CisgICAgIHN0ZDo6dTE2c3RyaW5nIG1l c3NhZ2U7CisrICAgIFJlcXVlc3RMaW5lQ29uZmlndXJhdGlvbihhdXRvIGksIGF1dG8gbSkgOiBp Y29uKGkpLCBtZXNzYWdlKG0pIHsgfQorICAgfTsKKyAKKyAgIHN0cnVjdCBCdXR0b25Db25maWd1 cmF0aW9uIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3Zp ZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdz L3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3BvbGljeV92aWV3LmNjCist LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNz aW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmlldy5jYy50aGFuCTIwMjQt MDItMjIgMjI6NDI6NTUuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9u X3Byb21wdF9wb2xpY3lfdmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NjUwMzc3MCArMDEw MAorQEAgLTY0LDggKzY0LDggQEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6 R2V0UgorIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21wdFBvbGljeVZpZXc6OkJ1 dHRvbkNvbmZpZ3VyYXRpb24+CisgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6 R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7CisgICBzdGQ6OnZlY3RvcjxCdXR0b25D b25maWd1cmF0aW9uPiBidXR0b25zOworLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGls OjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBUX09LX0xBQkVMKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtQb2xpY3lPSywgdWk6OkJ1dHRvblN0eWxlOjpr VG9uYWwpOworKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmlu Z1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfT0tfTEFCRUwpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgQnV0dG9uVHlwZTo6a1BvbGljeU9LLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07Cisg ICByZXR1cm4gYnV0dG9uczsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25f cHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1p c3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MudGhhbgkyMDI0LTAyLTIyIDIy OjQyOjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRf cHJldmlvdXNseV9kZW5pZWRfdmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyAr MDEwMAorQEAgLTc5LDE3ICs3OSwxNyBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91 c2x5RGVuaWVkCisgc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNs eURlbmllZFZpZXc6OkJ1dHRvbkNvbmZpZ3VyYXRpb24+CisgRW1iZWRkZWRQZXJtaXNzaW9uUHJv bXB0UHJldmlvdXNseURlbmllZFZpZXc6OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3Qg eworICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlvbj4gYnV0dG9uczsKKy0gIGJ1dHRv bnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBs MTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfTk9U X0FMTE9XSU5HKSwKKy0gICAgICBCdXR0b25UeXBlOjprQ29udGludWVOb3RBbGxvd2luZywgdWk6 OkJ1dHRvblN0eWxlOjprVG9uYWwpOworKyAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZU5vdEFs bG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07CisgCisgICBpZiAoYmFzZTo6RmVhdHVy ZUxpc3Q6OklzRW5hYmxlZChwZXJtaXNzaW9uczo6ZmVhdHVyZXM6OmtPbmVUaW1lUGVybWlzc2lv bikpIHsKKy0gICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCisrICAgIGJ1dHRvbnMuZW1wbGFjZV9i YWNrKCkgPSB7CisgICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNT SU9OX0FMTE9XX1RISVNfVElNRSksCistICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGlt ZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd1RoaXNUaW1lSWQpOworKyAgICAgICAg QnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxs b3dUaGlzVGltZUlkfTsKKyAgIH0gZWxzZSB7CistICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKGwx MG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1Rv bmFsKTsKKysgICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmlu Z1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg QnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07CisgICB9CisgICBy ZXR1cm4gYnV0dG9uczsKKyB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0 X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3By b21wdF9wcmV2aW91c2x5X2dyYW50ZWRfdmlldy5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lv bl9wcm9tcHRfcHJldmlvdXNseV9ncmFudGVkX3ZpZXcuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQy OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJl dmlvdXNseV9ncmFudGVkX3ZpZXcuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTM3MTI2NjcgKzAx MDAKK0BAIC03NCwxMiArNzQsMTIgQEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNs eUdyYW50ZQorIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlH cmFudGVkVmlldzo6QnV0dG9uQ29uZmlndXJhdGlvbj4KKyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9t cHRQcmV2aW91c2x5R3JhbnRlZFZpZXc6OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3Qg eworICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlvbj4gYnV0dG9uczsKKy0gIGJ1dHRv bnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBs MTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfQUxM T1dJTkcpLAorLSAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZUFsbG93aW5nLCB1aTo6QnV0dG9u U3R5bGU6OmtUb25hbCk7CisrICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVp OjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKKyAKKy0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAorKyAg YnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VU RjE2KElEU19FTUJFRERFRF9QUk9NUFRfU1RPUF9BTExPV0lORyksCistICAgICAgQnV0dG9uVHlw ZTo6a1N0b3BBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtTdG9wQWxsb3dpbmdJ ZCk7CisrICAgICAgQnV0dG9uVHlwZTo6a1N0b3BBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjpr VG9uYWwsIGtTdG9wQWxsb3dpbmdJZH07CisgICByZXR1cm4gYnV0dG9uczsKKyB9CitkaWZmIC11 cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmls aXRpZXMuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90ZXN0L2Nocm9tZWRy aXZlci9jYXBhYmlsaXRpZXMuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90 ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU2 LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL3Rlc3Qv Y2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NjUwMzc3 MCArMDEwMAorQEAgLTM0Niw3ICszNDYsNyBAQCBTdGF0dXMgUGFyc2VNb2JpbGVFbXVsYXRpb24o Y29uc3QgYmFzZTo6CisgICAgICAgICAgICAgICAgICAgICAgICAgIid2ZXJzaW9uJyBmaWVsZCBv ZiB0eXBlIHN0cmluZyIpOworICAgICAgICAgfQorIAorLSAgICAgICAgYnJhbmRzLmVtcGxhY2Vf YmFjaygqYnJhbmQsICp2ZXJzaW9uKTsKKysgICAgICAgIGJyYW5kcy5lbXBsYWNlX2JhY2soKSA9 IHsqYnJhbmQsICp2ZXJzaW9ufTsKKyAgICAgICB9CisgCisgICAgICAgY2xpZW50X2hpbnRzLmJy YW5kcyA9IHN0ZDo6bW92ZShicmFuZHMpOworQEAgLTM4NCw3ICszODQsNyBAQCBTdGF0dXMgUGFy c2VNb2JpbGVFbXVsYXRpb24oY29uc3QgYmFzZTo6CisgICAgICAgICAgICAgICAgICAgICAgICAg ImEgJ3ZlcnNpb24nIGZpZWxkIG9mIHR5cGUgc3RyaW5nIik7CisgICAgICAgICB9CisgCistICAg ICAgICBmdWxsX3ZlcnNpb25fbGlzdC5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVyc2lvbik7Cisr ICAgICAgICBmdWxsX3ZlcnNpb25fbGlzdC5lbXBsYWNlX2JhY2soKSA9IHsqYnJhbmQsICp2ZXJz aW9ufTsKKyAgICAgICB9CisgCisgICAgICAgY2xpZW50X2hpbnRzLmZ1bGxfdmVyc2lvbl9saXN0 ID0gc3RkOjptb3ZlKGZ1bGxfdmVyc2lvbl9saXN0KTsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29y ZF9tYW5hZ2VyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bhc3N3 b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MKKy0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIv cGFzc3dvcmRfbWFuYWdlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDIuMDAwMDAwMDAwICsw MTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFn ZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4x NTQ3MTI2ODUgKzAxMDAKK0BAIC02NzMsNyArNjczLDcgQEAgdm9pZCBQYXNzd29yZE1hbmFnZXI6 Ok9uVXNlck1vZGlmaWVkTm9uUAorICAgICBpdC0+c2Vjb25kLmxhc3RfY2hhbmdlID0gYmFzZTo6 VGltZTo6Tm93KCk7CisgICB9IGVsc2UgeworICAgICBwb3NzaWJsZV91c2VybmFtZXNfLlB1dCgK Ky0gICAgICAgIFBvc3NpYmxlVXNlcm5hbWVGaWVsZElkZW50aWZpZXIoZHJpdmVyX2lkLCByZW5k ZXJlcl9pZCksCisrICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlmaWVye2RyaXZl cl9pZCwgcmVuZGVyZXJfaWR9LAorICAgICAgICAgUG9zc2libGVVc2VybmFtZURhdGEoR2V0U2ln bm9uUmVhbG0oZHJpdmVyLT5HZXRMYXN0Q29tbWl0dGVkVVJMKCkpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVuZGVyZXJfaWQsIHZhbHVlLCBiYXNlOjpUaW1lOjpOb3coKSwgZHJp dmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlX2F0dHJp YnV0ZV9oYXNfdXNlcm5hbWUsCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBv bmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYy50aGFuIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRj aGVyLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3BlcmZvcm1hbmNl X21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjAyLjAwMDAw MDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wZXJmb3Jt YW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTU4NzEy NzU2ICswMTAwCitAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Xb3Jr ZXJDcmVhdGVkKAorICAgRENIRUNLKGluc2VydGlvbl9yZXN1bHQuc2Vjb25kKTsKKyAKKyAgIGFi c2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgYmFzZTo6T3Zlcmxv YWRlZHsKKyAgICAgICAgICAgWyYsCisgICAgICAgICAgICB0aGlzXShjb25zdCBjb250ZW50OjpH bG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAgICAg ICAgICBBZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oaW5zZXJ0aW9uX3Jlc3VsdC5maXJzdC0+c2Vj b25kLmdldCgpLAorQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uV29y a2VyQ3JlYXRlZCgKKyAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0ZWRXb3JrZXJU b2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7CisgICAgICAgICAgICAgQ29ubmVjdERlZGlj YXRlZFdvcmtlckNsaWVudChpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2Vy X3Rva2VuKTsKKy0gICAgICAgICAgfSksCisrICAgICAgICAgIH19LAorICAgICAgIGNyZWF0b3Ip OworIH0KKyAKK0BAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkJlZm9y ZVdvcmtlckRlc3RybworICAgLy8gRmlyc3QgZGlzY29ubmVjdCB0aGUgY3JlYXRvcidzIG5vZGUg ZnJvbSB0aGlzIHdvcmtlciBub2RlLgorIAorICAgYWJzbDo6dmlzaXQoCistICAgICAgYmFzZTo6 T3ZlcmxvYWRlZCgKKysgICAgICBiYXNlOjpPdmVybG9hZGVkeworICAgICAgICAgICBbJiwKKyAg ICAgICAgICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiBy ZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50Q29u bmVjdGlvbih3b3JrZXJfbm9kZS5nZXQoKSwKK0BAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBXb3Jr ZXJXYXRjaGVyOjpPbkJlZm9yZVdvcmtlckRlc3RybworICAgICAgICAgICBbJiwgdGhpc10oYmxp bms6OkRlZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAg ICAgICAgICBEaXNjb25uZWN0RGVkaWNhdGVkV29ya2VyQ2xpZW50KHdvcmtlcl9ub2RlLmdldCgp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVk X3dvcmtlcl90b2tlbik7CistICAgICAgICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAgICBj cmVhdG9yKTsKKyAKKyAgIC8vIERpc2Nvbm5lY3QgYWxsIGNoaWxkIHdvcmtlcnMgYmVmb3JlIGRl c3Ryb3lpbmcgdGhlIG5vZGUuCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgV29ya2VyV2F0Y2hl cjo6T25Db250cm9sbGVlQWRkZWQoCisgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjbGllbnRfdXVp ZCwKKyAgICAgY29uc3QgY29udGVudDo6U2VydmljZVdvcmtlckNsaWVudEluZm8mIGNsaWVudF9p bmZvKSB7CisgICBhYnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAgICAg IGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9iYWxS ZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIC8v IEZvciB3aW5kb3cgY2xpZW50cywgaXQgaXMgbmVjZXNzYXJ5IHRvIHdhaXQgdW50aWwgdGhlIG5h dmlnYXRpb24KKyAgICAgICAgICAgICAvLyBoYXMgY29tbWl0dGVkIHRvIGEgUmVuZGVyRnJhbWVI b3N0LgorQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxl ZUFkZGVkKAorICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNsaWVudChzZXJ2aWNl X3dvcmtlcl9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aGFyZWRfd29ya2VyX3Rva2VuKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgIH0pLAorKyAg ICAgICAgICB9fSwKKyAgICAgICBjbGllbnRfaW5mbyk7CisgfQorIAorQEAgLTUyNCw3ICs1MjQs NyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCisgICAgIHJldHVy bjsKKyAKKyAgIGFic2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAg YmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2JhbFJl bmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAgICAgICAgUmVt b3ZlRnJhbWVDbGllbnRDb25uZWN0aW9uKHdvcmtlcl9ub2RlLCByZW5kZXJfZnJhbWVfaG9zdF9p ZCk7CisgICAgICAgICAgIH0sCitAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hl cjo6T25Db250cm9sbGVlUmVtb3ZlZCgKKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgWyYsIHRo aXNdKGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7CisgICAg ICAgICAgICAgRGlzY29ubmVjdFNoYXJlZFdvcmtlckNsaWVudCh3b3JrZXJfbm9kZSwgc2hhcmVk X3dvcmtlcl90b2tlbik7CistICAgICAgICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAgICBj bGllbnQpOworIH0KKyAKK0BAIC04MTAsNyArODEwLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpD b25uZWN0QWxsU2VydmljZVdvcgorIAorICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0LT5zZWNv bmQpIHsKKyAgICAgYWJzbDo6dmlzaXQoCistICAgICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAg ICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgICBbJiwgdGhpc10oY29udGVudDo6 R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAgICAg ICAgICAgIEFkZEZyYW1lQ2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9ub2RlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9mcmFtZV9ob3N0X2lk KTsKK0BAIC04MjIsNyArODIyLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25uZWN0QWxsU2Vy dmljZVdvcgorICAgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4g c2hhcmVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtl ckNsaWVudChzZXJ2aWNlX3dvcmtlcl9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKKy0gICAgICAgICAgICB9KSwKKysg ICAgICAgICAgICB9fSwKKyAgICAgICAgIGt2LnNlY29uZCk7CisgICB9CisgfQorQEAgLTgzNyw3 ICs4MzcsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2aWNlCisgCisg ICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29uZCkgeworICAgICBhYnNsOjp2aXNpdCgK Ky0gICAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgICBiYXNlOjpPdmVybG9hZGVkewor ICAgICAgICAgICAgIFsmLCB0aGlzXSgKKyAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudDo6 R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAg ICAgICAgICBSZW1vdmVGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3JrZXJfbm9kZSwK K0BAIC04NTEsNyArODUxLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25uZWN0QWxsU2Vy dmljZQorICAgICAgICAgICAgIFsmLCB0aGlzXShjb25zdCBibGluazo6U2hhcmVkV29ya2VyVG9r ZW4mIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAgICAgICAgICAgIERpc2Nvbm5lY3RTaGFy ZWRXb3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7CistICAgICAgICAg ICAgfSksCisrICAgICAgICAgICAgfX0sCisgICAgICAgICBrdi5zZWNvbmQpOworICAgfQorIH0K K2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92aXovc2VydmljZS9k aXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2MudGhhbiBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9lbWJl ZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjCistLS0gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9v dXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAw MDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9z ZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5j YwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MTcxMjYzMiArMDEwMAorQEAgLTE1NzMsNyArMTU3Myw3 IEBAIHZvaWQgU2tpYU91dHB1dFN1cmZhY2VJbXBsT25HcHU6OkNvcHlPdXQKKyAKKyAgICAgICAv LyBJc3N1ZSByZWFkYmFja3MgZnJvbSB0aGUgc3VyZmFjZXM6CisgICAgICAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCBDb3B5T3V0cHV0UmVzdWx0OjprTlYxMk1heFBsYW5lczsgKytpKSB7CistICAg ICAgICBTa0lTaXplIHNpemUocGxhbmVfc3VyZmFjZXNbaV0tPndpZHRoKCksIHBsYW5lX3N1cmZh Y2VzW2ldLT5oZWlnaHQoKSk7CisrICAgICAgICBTa0lTaXplIHNpemV7cGxhbmVfc3VyZmFjZXNb aV0tPndpZHRoKCksIHBsYW5lX3N1cmZhY2VzW2ldLT5oZWlnaHQoKX07CisgICAgICAgICBTa0lt YWdlSW5mbyBkc3RfaW5mbyA9IFNrSW1hZ2VJbmZvOjpNYWtlKAorICAgICAgICAgICAgIHNpemUs IChpID09IDApID8ga0FscGhhXzhfU2tDb2xvclR5cGUgOiBrUjhHOF91bm9ybV9Ta0NvbG9yVHlw ZSwKKyAgICAgICAgICAgICBrVW5wcmVtdWxfU2tBbHBoYVR5cGUpOworZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNj LnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2 ZV9wYWNrYWdlLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv ZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNS4wMDAwMDAw MDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9kb3du bG9hZC9zYXZlX3BhY2thZ2UuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTE3MTI2MzIgKzAxMDAK K0BAIC04MDEsOCArODAxLDggQEAgdm9pZCBTYXZlUGFja2FnZTo6RmluaXNoKCkgeworICAgaWYg KGRvd25sb2FkXykgeworICAgICBzdGQ6OnZlY3Rvcjxkb3dubG9hZDo6RG93bmxvYWRTYXZlSXRl bURhdGE6Okl0ZW1JbmZvPiBmaWxlczsKKyAgICAgZm9yIChhdXRvJiBpdGVtIDogc2F2ZWRfc3Vj Y2Vzc19pdGVtc18pIHsKKy0gICAgICBmaWxlcy5lbXBsYWNlX2JhY2soaXRlbS5zZWNvbmQtPmZ1 bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJsKCksCistICAgICAgICAgICAgICAgICAgICAgICAg IGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVybCk7CisrICAgICAgZmlsZXMuZW1wbGFjZV9iYWNr KCkgPSB7aXRlbS5zZWNvbmQtPmZ1bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJsKCksCisrICAg ICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVybH07CisgICAg IH0KKyAgICAgZG93bmxvYWQ6OkRvd25sb2FkU2F2ZUl0ZW1EYXRhOjpBdHRhY2hJdGVtRGF0YShk b3dubG9hZF8sIHN0ZDo6bW92ZShmaWxlcykpOworICAgfQorZGlmZiAtdXAgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9z ZXRfcGFyc2VyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv Zmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRfcGFyc2VyLmNjCistLS0gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0 eV9zZXRfcGFyc2VyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNS4wMDAwMDAwMDAgKzAxMDAK KysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9z ZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTg3MTI3 NTYgKzAxMDAKK0BAIC03NzMsNyArNzczLDcgQEAgRmlyc3RQYXJ0eVNldFBhcnNlcjo6UGFyc2VT ZXRzRnJvbUVudGVycAorICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuR2V0UG9saWN5U2V0 c0Zyb21MaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kuRmluZExpc3Qoa0Zp cnN0UGFydHlTZXRQb2xpY3lBZGRpdGlvbnNGaWVsZCksCisgICAgICAgICAgICAgICAgICAgICAg ICAgIFBvbGljeVNldFR5cGU6OmtBZGRpdGlvbikpOworLSAgICByZXR1cm4gUGFyc2VkUG9saWN5 U2V0TGlzdHMoc3RkOjptb3ZlKHJlcGxhY2VtZW50cyksIHN0ZDo6bW92ZShhZGRpdGlvbnMpKTsK KysgICAgcmV0dXJuIFBhcnNlZFBvbGljeVNldExpc3Rze3N0ZDo6bW92ZShyZXBsYWNlbWVudHMp LCBzdGQ6Om1vdmUoYWRkaXRpb25zKX07CisgICB9KCk7CisgCisgICBjb250ZXh0LlBvc3RQcm9j ZXNzU2V0TGlzdHMoc2V0X2xpc3RzKTsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJf c2lnbmFscy5oLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50 ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgKKy0tLSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJf ZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuaC50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAw MDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv aW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgJMjAyNC0w Mi0yNCAxMzoxMzo0NC4xNTg3MTI3NTYgKzAxMDAKK0BAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3Mg Q09OVEVOVF9FWFBPUlQgSGVhZGVyRGlyZWN0RnJvbVNlbAorIAorICAgICAvLyBUaGUgQWQtQXVj dGlvbi1TaWduYWxzIHJlc3BvbnNlIHNlcnZlZCBieSBgb3JpZ2luYC4KKyAgICAgc3RkOjpzdHJp bmcgcmVzcG9uc2VfanNvbjsKKysgICAgVW5wcm9jZXNzZWRSZXNwb25zZShhdXRvIHUsIGF1dG8g cykgOiBvcmlnaW4odSksIHJlc3BvbnNlX2pzb24ocykgeyB9CisgICB9OworIAorICAgLy8gSW5m b3JtYXRpb24gZnJvbSBQYXJzZUFuZEZpbmQoKSBjYWxscyB1c2VkIGJ5IFBhcnNlQW5kRmluZENv bXBsZXRlZC4KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MudGhhbiBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91 cF9zdG9yYWdlLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv aW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYy50aGFuCTIwMjQtMDItMjIg MjI6NDM6MDUuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYwkyMDI0 LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAorQEAgLTM0NjEsMTAgKzM0NjEsMTAgQEAg RG9HZXRLQW5vbnltaXR5RGF0YShzcWw6OkRhdGFiYXNlJiBkYiwKKyAKKyAgIHN0ZDo6dmVjdG9y PFN0b3JhZ2VJbnRlcmVzdEdyb3VwOjpLQW5vbnltaXR5RGF0YT4ga19hbm9uX2RhdGE7CisgICB3 aGlsZSAoaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3RlcCgpKSB7CistICAgIGtfYW5vbl9k YXRhLmVtcGxhY2VfYmFjaygKKysgICAga19hbm9uX2RhdGEuZW1wbGFjZV9iYWNrKCkgPSB7Cisg ICAgICAgICAvKmtleT0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblN0cmluZygw KSwKKyAgICAgICAgIC8qaXNfa19hbm9ueW1vdXM9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVy eS5Db2x1bW5Cb29sKDEpLAorLSAgICAgICAgLypsYXN0X3VwZGF0ZWQ9Ki9pbnRlcmVzdF9ncm91 cF9rYW5vbl9xdWVyeS5Db2x1bW5UaW1lKDIpKTsKKysgICAgICAgIC8qbGFzdF91cGRhdGVkPSov aW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuQ29sdW1uVGltZSgyKX07CisgICB9CisgICBpZiAo IWludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LlN1Y2NlZWRlZCgpKSB7CisgICAgIHJldHVybiBz dGQ6Om51bGxvcHQ7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJv d3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhhbiBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFt ZV9ob3N0X2ltcGwuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nl ci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhhbgkyMDI0LTAyLTI0 IDEzOjEzOjQ0LjE1NzcxMjczOSArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYwkyMDI0 LTAyLTI0IDEzOjE4OjM5LjQ4MDExOTQ0NyArMDEwMAorQEAgLTg2MzIsNyArODYzMiw3IEBAIHZv aWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0KKyAgIGZvciAoY29uc3QgYmxp bms6OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdEZXN0aW5hdGlvbiYgZGVzdGluYXRpb24gOgorICAg ICAgICBkZXN0aW5hdGlvbnMpIHsKKyAgICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29u SW50ZXJuYWwoCistICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVudChldmVudF90eXBlLCBldmVu dF9kYXRhKSwgZGVzdGluYXRpb24pOworKyAgICAgICAgRGVzdGluYXRpb25FbnVtRXZlbnR7ZXZl bnRfdHlwZSwgZXZlbnRfZGF0YX0sIGRlc3RpbmF0aW9uKTsKKyAgIH0KKyB9CisgCitAQCAtODY2 MSw3ICs4NjYxLDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpTZW5kRmVuY2VkRnJhbQor ICAgfQorIAorICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCistICAg ICAgRGVzdGluYXRpb25VUkxFdmVudChkZXN0aW5hdGlvbl91cmwpLAorKyAgICAgIERlc3RpbmF0 aW9uVVJMRXZlbnR7ZGVzdGluYXRpb25fdXJsfSwKKyAgICAgICBibGluazo6RmVuY2VkRnJhbWU6 OlJlcG9ydGluZ0Rlc3RpbmF0aW9uOjprQnV5ZXIpOworIH0KKyAKK0BAIC04NzkyLDcgKzg3OTIs NyBAQCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6Ok1heWJlU2VuZEZlbmNlCisgICAgICAgICBk YXRhID0gaW5mby0+ZGF0YTsKKyAgICAgICB9CisgICAgICAgaW5pdGlhdG9yX3JmaC0+U2VuZEZl bmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCistICAgICAgICAgIEF1dG9tYXRpY0Jl YWNvbkV2ZW50KGV2ZW50X3R5cGUsIGRhdGEpLCBkZXN0aW5hdGlvbiwKKysgICAgICAgICAgQXV0 b21hdGljQmVhY29uRXZlbnR7ZXZlbnRfdHlwZSwgZGF0YX0sIGRlc3RpbmF0aW9uLAorICAgICAg ICAgICBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOworICAgICB9CisgICB9 IGVsc2UgeworQEAgLTg4MDMsNyArODgwMyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6 TWF5YmVTZW5kRmVuY2UKKyAgICAgZm9yIChibGluazo6RmVuY2VkRnJhbWU6OlJlcG9ydGluZ0Rl c3RpbmF0aW9uIGRlc3RpbmF0aW9uIDoKKyAgICAgICAgICBpbmZvLT5kZXN0aW5hdGlvbnMpIHsK KyAgICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFjb25JbnRl cm5hbCgKKy0gICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnQoZXZlbnRfdHlwZSwgaW5mby0+ ZGF0YSksIGRlc3RpbmF0aW9uLAorKyAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudHtldmVu dF90eXBlLCBpbmZvLT5kYXRhfSwgZGVzdGluYXRpb24sCisgICAgICAgICAgIG5hdmlnYXRpb25f cmVxdWVzdC5HZXROYXZpZ2F0aW9uSWQoKSk7CisgICAgIH0KKyAgIH0KK2RpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vf d29ya2VyX2NvbnRhaW5lcl9ob3N0LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3Qu Y2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dv cmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYy50aGFuCTIwMjQtMDItMjIgMjI6 NDM6MDYuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50 L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2MJ MjAyNC0wMi0yNCAxMzoxMzo0NC4xNTk3MTI3NzQgKzAxMDAKK0BAIC04NzAsNyArODcwLDcgQEAg U2VydmljZVdvcmtlckNvbnRhaW5lckhvc3Q6OkdldENsaWVudFR5cAorICAgRENIRUNLX0NBTExF RF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7CisgICBEQ0hFQ0soY2xpZW50 X2luZm9fKTsKKyAgIHJldHVybiBhYnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpPdmVybG9hZGVk KAorKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgIFtdKEdsb2JhbFJlbmRlckZy YW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAgICAgICAgcmV0dXJuIGJs aW5rOjptb2pvbTo6U2VydmljZVdvcmtlckNsaWVudFR5cGU6OmtXaW5kb3c7CisgICAgICAgICAg IH0sCitAQCAtODc5LDcgKzg3OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXJIb3N0OjpHZXRD bGllbnRUeXAKKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgW10oYmxpbms6OlNoYXJlZFdvcmtl clRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAgICAgICAgICByZXR1cm4gYmxpbms6 Om1vam9tOjpTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6a1NoYXJlZFdvcmtlcjsKKy0gICAgICAg ICAgfSksCisrICAgICAgICAgIH19LAorICAgICAgICpjbGllbnRfaW5mb18pOworIH0KKyAKK2Rp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29y a2VyL3NlcnZpY2Vfd29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjLnRo YW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIv c2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MKKy0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2 aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYy50aGFuCTIwMjQt MDItMjIgMjI6NDM6MDYuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNv dXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTk3MTI3NzQg KzAxMDAKK0BAIC0zNjMsMTAgKzM2MywxMCBAQCBTZXJ2aWNlV29ya2VyTWFpblJlc291cmNlTG9h ZGVySW50ZXJjZXB0CisgICB9CisgICBhdXRvKiBzdG9yYWdlX3BhcnRpdGlvbiA9IHByb2Nlc3Mt PkdldFN0b3JhZ2VQYXJ0aXRpb24oKTsKKyAKKy0gIHJldHVybiBhYnNsOjp2aXNpdChiYXNlOjpP dmVybG9hZGVkKFsmLCB0aGlzXShhdXRvIHRva2VuKSB7CisrICByZXR1cm4gYWJzbDo6dmlzaXQo YmFzZTo6T3ZlcmxvYWRlZHtbJiwgdGhpc10oYXV0byB0b2tlbikgeworICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEdldFN0b3JhZ2VLZXlGcm9tV29ya2VySG9zdChzdG9yYWdlX3BhcnRp dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdG9rZW4sIG9yaWdpbik7CistICAgICAgICAgICAgICAgICAgICAgfSksCisrICAg ICAgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgICAgICAgKndvcmtlcl90b2tl bl8pOworIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93 c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYy50aGFuIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJf aG9zdC5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3dvcmtl cl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDYu MDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dz ZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCTIwMjQtMDItMjQgMTM6MTM6 NDQuMTU5NzEyNzc0ICswMTAwCitAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgRGVkaWNhdGVkV29y a2VySG9zdDo6U3RhcnRTY3JpcHRMb2EKKyAgIFJlbmRlckZyYW1lSG9zdEltcGwqIGNyZWF0b3Jf cmVuZGVyX2ZyYW1lX2hvc3QgPSBudWxscHRyOworICAgRGVkaWNhdGVkV29ya2VySG9zdCogY3Jl YXRvcl93b3JrZXIgPSBudWxscHRyOworIAorLSAgYWJzbDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRl ZCgKKysgIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgICAgICAgICAg WyZdKGNvbnN0IEdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkg eworICAgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCA9CisgICAg ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyRnJhbWVIb3N0SW1wbDo6RnJvbUlEKHJlbmRlcl9m cmFtZV9ob3N0X2lkKTsKK0BAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBEZWRpY2F0ZWRXb3JrZXJI b3N0OjpTdGFydFNjcmlwdExvYQorICAgICAgICAgICAgICAgICAgIFsmXShibGluazo6RGVkaWNh dGVkV29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgICAg ICAgICAgY3JlYXRvcl93b3JrZXIgPSBzZXJ2aWNlXy0+R2V0RGVkaWNhdGVkV29ya2VySG9zdEZy b21Ub2tlbigKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rva2Vu KTsKKy0gICAgICAgICAgICAgICAgICB9KSwKKysgICAgICAgICAgICAgICAgICB9fSwKKyAgICAg ICAgICAgICAgIGNyZWF0b3JfKTsKKyAKKyAgIGlmICghY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9z dCAmJiAhY3JlYXRvcl93b3JrZXIpIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv bmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6 MTcuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9uZXQvZG5zL2hv c3RfcmVzb2x2ZXJfY2FjaGUuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTI3MTI2NDkgKzAxMDAK K0BAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBIb3N0UmVzb2x2ZXJDYWNoZTo6U2V0KAorIAorICAg c3RkOjpzdHJpbmcgZG9tYWluX25hbWUgPSByZXN1bHQtPmRvbWFpbl9uYW1lKCk7CisgICBlbnRy aWVzXy5lbXBsYWNlKAorLSAgICAgIEtleShzdGQ6Om1vdmUoZG9tYWluX25hbWUpLCBuZXR3b3Jr X2Fub255bWl6YXRpb25fa2V5KSwKKysgICAgICBLZXl7c3RkOjptb3ZlKGRvbWFpbl9uYW1lKSwg bmV0d29ya19hbm9ueW1pemF0aW9uX2tleX0sCisgICAgICAgRW50cnkoc3RkOjptb3ZlKHJlc3Vs dCksIHNvdXJjZSwgc2VjdXJlLCBzdGFsZW5lc3NfZ2VuZXJhdGlvbikpOworIAorICAgaWYgKGVu dHJpZXNfLnNpemUoKSA+IG1heF9lbnRyaWVzXykgeworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAu NjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRl X2ludGVycG9sYXRpb24uY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYwor LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0 MzoyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5j YwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAorQEAgLTMxLDcgKzMxLDcgQEAg VmVjdG9yPEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlPgorICAgICAgICAgY29sb3Jf aW50ZXJwb2xhdGlvbl9zcGFjZSwgaHVlX2ludGVycG9sYXRpb25fbWV0aG9kLCBzdGFydF9jb2xv ciwKKyAgICAgICAgIGVuZF9jb2xvciwgcGVyY2VudGFnZSwgYWxwaGFfbXVsdGlwbGllcik7Cisg CistICAgIEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlIHJlc3VsdF9jb2xvcl9yZWNv cmQoaSwgcmVzdWx0X2NvbG9yKTsKKysgICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJp ZGUgcmVzdWx0X2NvbG9yX3JlY29yZHtzdGF0aWNfY2FzdDxpbnQ+KGkpLCByZXN1bHRfY29sb3J9 OworICAgICByZXN1bHRfY29sb3JfcmVjb3Jkcy5wdXNoX2JhY2socmVzdWx0X2NvbG9yX3JlY29y ZCk7CisgICB9CisgICByZXR1cm4gcmVzdWx0X2NvbG9yX3JlY29yZHM7CitkaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVy L2NwZGZfcmVuZGVyc3RhdHVzLmNwcC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRf cGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwCist LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBp L3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAudGhhbgkyMDI0LTAyLTIyIDIyOjQ1OjAyLjAw MDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvcGRm aXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwCTIwMjQtMDItMjQg MTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCitAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgQ1BERl9S ZW5kZXJTdGF0dXM6OlByb2Nlc3NDbGlwUGF0aCgKKyAgICAgfSBlbHNlIHsKKyAgICAgICBtX3BE ZXZpY2UtPlNldENsaXBfUGF0aEZpbGwoCisgICAgICAgICAgICpwUGF0aCwgJm10T2JqMkRldmlj ZSwKKy0gICAgICAgICAgQ0ZYX0ZpbGxSZW5kZXJPcHRpb25zKENsaXBQYXRoLkdldENsaXBUeXBl KGkpKSk7CisrICAgICAgICAgIENGWF9GaWxsUmVuZGVyT3B0aW9uc3tDbGlwUGF0aC5HZXRDbGlw VHlwZShpKX0pOworICAgICB9CisgICB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaC50aGFuIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCistLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgu dGhhbgkyMDI0LTAyLTIyIDIyOjQ0OjEyLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCTIwMjQtMDIt MjQgMTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCitAQCAtNTIsNTMgKzUyLDUzIEBAIGNvbnN0ZXhw ciBhdXRvIGtDaHJvbWF0aWNpdHlNYXAgPSBiYXNlOjoKKyAgICAgemNyX2NvbG9yX21hbmFnZXJf djFfY2hyb21hdGljaXR5X25hbWVzLAorICAgICBQcmltYXJ5VmVyc2lvbj4oCisgICAgIHt7WkNS X0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNjAxXzUyNV9MSU5FLAorLSAg ICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0s CistICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQ cmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAorKyAg ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNjAxXzYyNV9MSU5FLAorLSAgICAg IFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3MEJHLAorLSAg ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJpbWFy eVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNDcwQkcsCisrICAgICAgICAg ICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFO QUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUxNzBNLAorLSAgICAgIFByaW1hcnlWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCistICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmltYXJ5VmVyc2lvbntn Zng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAorKyAgICAgICAgICAgICAgICAg ICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf Q0hST01BVElDSVRZX05BTUVTX0JUNzA5LAorLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29s b3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZh dWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElD SVRZX05BTUVTX0JUMjAyMCwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6 OlByaW1hcnlJRDo6QlQyMDIwLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgIFByaW1h cnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDIwMjAsIGtEZWZhdWx0U2lu Y2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05B TUVTX1NSR0IsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5 SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgIFByaW1hcnlWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb259 fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRElTUExB WVAzLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpQ Mywga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlByaW1hcnlJRDo6UDMsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0FET0JFUkdCLAorLSAgICAg IFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpBRE9CRV9SR0IsCist ICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmlt YXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QURPQkVfUkdCLAorKyAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRfQ09MT1JfU1BJTiwKKy0g ICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lvbnsKKyAgICAgICAgICAg Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OldJREVfR0FNVVRfQ09MT1JfU1BJTiwKKy0gICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRf Q09MT1JfU1BJTl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NPTE9SX1NQSU5fU0lOQ0VfVkVSU0lP Tn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDQ3 ME0sCistICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257CisgICAg ICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3ME0sCistICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDQ3ME1fU0lOQ0VfVkVSU0lP Til9LAorKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNf QlQ0NzBNX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJP TUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAg IFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 U01QVEUyNDBNLAorLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlf TkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OfX0sCisg ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9ENTAsCist ICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257CisgICAgICAgICAg IGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpYWVpfRDUwLAorLSAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfWFlaX0Q1MF9TSU5DRV9WRVJTSU9OKX0s CisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpf RDUwX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFU SUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAg IFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 U01QVEVTVDQyOF8xLAorLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJT SU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NN UFRFU1Q0MzFfMiwKKy0gICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lv bnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFU1Q0MzFfMiwK Ky0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRF U1Q0MzFfMl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDMxXzJfU0lOQ0VfVkVSU0lPTn19LAorICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNLAorLSAgICAgIFBy aW1hcnlWZXJzaW9uKAorKyAgICAgIFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6OkNv bG9yU3BhY2U6OlByaW1hcnlJRDo6RklMTSwKKy0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX0ZJTE1fU0lOQ0VfVkVSU0lPTil9fSk7CisrICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJ T059fX0pOworIAorIC8vIEEgbWFwIGZyb20gdGhlIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZf bmFtZXMgZW51bSB2YWx1ZXMKKyAvLyByZXByZXNlbnRpbmcgd2VsbC1rbm93biBFT1RGcywgdG8g dGhlaXIgZXF1aXZhbGVudCBUcmFuc2ZlcklEcy4KK0BAIC0xMDcsNjggKzEwNyw2OCBAQCBjb25z dGV4cHIgYXV0byBrRW90Zk1hcCA9IGJhc2U6Ok1ha2VGaXhlCisgICAgIHpjcl9jb2xvcl9tYW5h Z2VyX3YxX2VvdGZfbmFtZXMsCisgICAgIFRyYW5zZmVyVmVyc2lvbj4oeworICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MSU5FQVIsCistICAgICBUcmFuc2ZlclZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMSU5FQVIsCistICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxJTkVBUiwKKysgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TUkdCLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJ RDo6U1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntn Zng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0s CisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSLAorLSAgICAg VHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQl9IRFIsCist ICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdC X0hEUl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNw YWNlOjpUcmFuc2ZlcklEOjpTUkdCX0hEUiwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSX1NJTkNFX1ZFUlNJT059fSwKKyAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDksCistICAgICBUcmFuc2ZlclZl cnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDcwOSwKKy0gICAgICAgICAgICAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJ T04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OkJUNzA5LAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf RU9URl9OQU1FU19CVDIwODcsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpHQU1NQTI0LAorLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2lu Y2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpHQU1NQTI0LAorKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9ufX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0FET0JFUkdCLAor ICAgICAgLy8gVGhpcyBpcyBldmVyIHNvIHNsaWdodGx5IGluYWNjdXJhdGUuIFRoZSBudW1iZXIg b3VnaHQgdG8gYmUKKyAgICAgIC8vIDIuMTk5MjE4NzVmLCBub3QgMi4yCistICAgICBUcmFuc2Zl clZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTIyLAorLSAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZlcnNp b257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTIyLAorKyAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1BRLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6UFEsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpQUSwga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHLAorLSAgICAg VHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6SExHLAorLSAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNF X1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5z ZmVySUQ6OkhMRywKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1NNUFRFMTcwTSwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9y U3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMTcwTSwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMTcwTV9TSU5DRV9WRVJTSU9OKX0sCisr ICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTE3 ME0sCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TTVBURTE3ME1fU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf RU9URl9OQU1FU19TTVBURTI0ME0sCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNw YWNlOjpUcmFuc2ZlcklEOjpTTVBURTI0ME0sCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lPTil9LAorKyAg ICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUyNDBN LAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf U01QVEUyNDBNX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU01QVEVTVDQyOF8xLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKAorKyAgICAgVHJh bnNmZXJWZXJzaW9ueworICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01Q VEVTVDQyOF8xLAorLSAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01Q VEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPRywKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPRywKKy0gICAgICAgICAgICAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19TSU5DRV9WRVJTSU9OKX0sCisrICAgICBU cmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0csCisrICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU0lOQ0Vf VkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU1FS VCwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxP R19TUVJULAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfTE9HX1NRUlRfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dm eDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HX1NRUlQsCisrICAgICAgICAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU1FSVF9TSU5DRV9WRVJTSU9O fX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lFQzYxOTY2XzJfNCwK Ky0gICAgIFRyYW5zZmVyVmVyc2lvbigKKysgICAgIFRyYW5zZmVyVmVyc2lvbnsKKyAgICAgICAg ICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OklFQzYxOTY2XzJfNCwKKy0gICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lFQzYxOTY2XzJfNF9TSU5DRV9WRVJTSU9O KX0sCisrICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8y XzRfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19CVDEzNjFfRUNHLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6QlQxMzYxX0VDRywKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0dfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJh bnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQxMzYxX0VDRywKKysg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2 MV9FQ0dfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19CVDIwMjBfMTAsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpCVDIwMjBfMTAsCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTBfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJh bnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEwLAorKyAg ICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIw XzEwX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfQlQyMDIwXzEyLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6QlQyMDIwXzEyLAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEyX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5z ZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMiwKKysgICAg ICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8x Ml9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X1NDUkdCX0xJTkVBUl84MF9OSVRTLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKAorKyAgICAgVHJh bnNmZXJWZXJzaW9ueworICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U0NS R0JfTElORUFSXzgwX05JVFMsCistICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5DRV9W RVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMTgs CistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1N QTE4LAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpD b2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTE4LAorKyAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OfX0sCisg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMjgsCistICAgICBUcmFu c2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI4LAorLSAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9T SU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpHQU1NQTI4LAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9TSU5DRV9WRVJTSU9OfX0sCisgfSk7CisgCisgLy8g QSBtYXAgZnJvbSB0aGUgU0RSIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2 YWx1ZXMKK0BAIC0xNzcsMTggKzE3NywxOCBAQCBjb25zdGV4cHIgYXV0byBrRW90Zk1hcCA9IGJh c2U6Ok1ha2VGaXhlCisgY29uc3RleHByIGF1dG8ga1RyYW5zZmVyTWFwID0KKyAgICAgYmFzZTo6 TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLCBUcmFuc2Zl ckZuVmVyc2lvbj4oeworICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf TElORUFSLAorLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuOjpr TGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJz aW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQiwKKy0gICAgICAg ICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0IsIGtEZWZhdWx0 U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5z ZmVyRm5FeHQ6OmtTUkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAge1pDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDksCistICAgICAgICAgVHJhbnNmZXJGblZl cnNpb24oCisrICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257CisgICAgICAgICAgICAgIFNrTmFt ZWRUcmFuc2ZlckZuRXh0OjprUmVjNzA5LAorLSAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OfX0sCisgICAg ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwODcsCistICAgICAgICAg VHJhbnNmZXJGblZlcnNpb24oZ2FtbWEyNCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbntnYW1tYTI0LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQURPQkVSR0IsCistICAg ICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtBOThSR0IsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbkV4dDo6a0E5OFJHQiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB9 KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHRoZSBIRFIgemNyX2NvbG9yX21hbmFnZXJfdjEgZW90Zl9u YW1lcyBlbnVtIHZhbHVlcworQEAgLTE5Nyw3MCArMTk3LDcwIEBAIGNvbnN0ZXhwciBhdXRvIGtU cmFuc2Zlck1hcCA9CisgY29uc3RleHByIGF1dG8ga0hEUlRyYW5zZmVyTWFwID0KKyAgICAgYmFz ZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLCBUcmFu c2ZlckZuVmVyc2lvbj4oCisgICAgICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfTElORUFSLAorLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJG bjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgVHJhbnNmZXJG blZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9u fX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFIs CistICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKAorKyAgICAgICAgICBUcmFuc2ZlckZuVmVy c2lvbnsKKyAgICAgICAgICAgICAgIFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQiwKKy0gICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0Vf VkVSU0lPTil9LAorKyAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OfX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfUFEsCistICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRU cmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAgIFRyYW5z ZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VWZXJzaW9u fX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHLAorLSAg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a0hMRywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19I TEdfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVk VHJhbnNmZXJGbjo6a0hMRywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHta Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VYVEVOREVEU1JHQjEwLAorLSAgICAgICAg ICBUcmFuc2ZlckZuVmVyc2lvbigKKysgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257CisgICAg ICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0JFeHRlbmRlZDEwMjNPdmVyNTEw LAorLSAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRF RFNSR0IxMF9TSU5DRV9WRVJTSU9OKX19KTsKKysgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURTUkdCMTBfU0lOQ0VfVkVSU0lPTn19fSk7CisgCisg Ly8gQSBtYXAgZnJvbSB6Y3JfY29sb3JfbWFuYWdlcl92MSBtYXRyaXhfbmFtZXMgZW51bSB2YWx1 ZXMgdG8KKyAvLyBnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEcy4KKyBjb25zdGV4cHIgYXV0byBr TWF0cml4TWFwID0KKyAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdl cl92MV9tYXRyaXhfbmFtZXMsIE1hdHJpeFZlcnNpb24+KAorICAgICAgICAge3taQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfUkdCLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlJHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysg ICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtE ZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01B VFJJWF9OQU1FU19CVDcwOSwKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6Ok1hdHJpeElEOjpCVDcwOSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNp bmNlVmVyc2lvbil9LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OkJUNzA5LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19C VDQ3MEJHLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKAorKyAgICAgICAgICBNYXRyaXhWZXJz aW9ueworICAgICAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQ0NzBCRywK Ky0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3MEJH X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01B VFJJWF9OQU1FU19CVDQ3MEJHX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAyMF9OQ0wsCistICAgICAgICAgIE1hdHJpeFZl cnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX05DTCwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgICBNYXRyaXhW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9OQ0wsCisrICAgICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAyMF9DTCwKKy0gICAgICAgICAgTWF0cml4 VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfQ0wsCistICAgICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgTWF0cml4 VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfQ0wsCisrICAgICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0ZDQywKKy0gICAgICAgICAgTWF0cml4VmVyc2lv bihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpGQ0MsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s CisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6RkND LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9NQVRSSVhfTkFNRVNfWUNPQ0csCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpNYXRyaXhJRDo6WUNPQ0csCistICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NHX1NJTkNFX1ZFUlNJT04pfSwKKysgICAg ICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZQ09DRywKKysg ICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNf WUNPQ0dfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9N QVRSSVhfTkFNRVNfWURaRFgsCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNw YWNlOjpNYXRyaXhJRDo6WURaRFgsCistICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRYX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAg ICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZRFpEWCwKKysgICAg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWURa RFhfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRS SVhfTkFNRVNfR0JSLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OkdCUiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9NQVRSSVhfTkFNRVNfR0JSX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgTWF0cml4 VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpHQlIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUl9TSU5DRV9WRVJT SU9OfX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19TTVBU RTE3ME0sCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6U01QVEUxNzBNLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6U01QVEUxNzBNLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19TTVBU RTI0ME0sCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6U01QVEUyNDBNLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9uKX19KTsKKysgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEOjpTTVBURTI0ME0sCisrICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb259fX0pOworIAorIC8vIEEgbWFwIGZyb20gemNyX2NvbG9yX21hbmFnZXJfdjEgcmFuZ2Vf bmFtZXMgZW51bSB2YWx1ZXMgdG8KKyAvLyBnZng6OkNvbG9yU3BhY2U6OlJhbmdlSURzLgorIGNv bnN0ZXhwciBhdXRvIGtSYW5nZU1hcCA9CisgICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNy X2NvbG9yX21hbmFnZXJfdjFfcmFuZ2VfbmFtZXMsIFJhbmdlVmVyc2lvbj4oCisgICAgICAgICB7 e1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVTX0xJTUlURUQsCistICAgICAgICAgIFJh bmdlVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkxJTUlURUQsCistICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgICBSYW5nZVZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpMSU1JVEVELAorKyAgICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfUkFOR0VfTkFNRVNfRlVMTCwKKy0gICAgICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1 bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFOR0Vf TkFNRVNfREVSSVZFRCwKKy0gICAgICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 UmFuZ2VJRDo6REVSSVZFRCwKKy0gICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX19KTsKKysgICAgICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFu Z2VJRDo6REVSSVZFRCwKKysgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9ufX19KTsKKyAKKyB6Y3JfY29sb3JfbWFuYWdlcl92MV9jaHJvbWF0aWNpdHlfbmFtZXMgVG9D b2xvck1hbmFnZXJDaHJvbWF0aWNpdHkoCisgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlE IHByaW1hcnlJRCwKK0BAIC0yODMsNCArMjgzLDQgQEAgemNyX2NvbG9yX21hbmFnZXJfdjFfZW90 Zl9uYW1lcyBUb0NvbG9yTQorIAorIH0gIC8vIG5hbWVzcGFjZSB1aTo6d2F5bGFuZAorIAorLSNl bmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NPTE9SX01BTkFHRVJfVVRJTF9IXworXCBLZWluIFpl aWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlLgorKyNlbmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NP TE9SX01BTkFHRVJfVVRJTF9IXworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9n dGsvZ3RrX3VpLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9ndGsvZ3RrX3VpLmNj CistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9ndGsvZ3RrX3VpLmNjLnRoYW4JMjAyNC0w Mi0yMiAyMjo0NDoxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L3VpL2d0ay9ndGtfdWkuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTM3MTI2NjcgKzAxMDAKK0BA IC0xMDA3LDExICsxMDA3LDExIEBAIHVpOjpEaXNwbGF5Q29uZmlnIEd0a1VpOjpHZXREaXNwbGF5 Q29uZmkKKyAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5OworICAgICBnZGtfbW9uaXRvcl9nZXRf Z2VvbWV0cnkobW9uaXRvciwgJmdlb21ldHJ5KTsKKyAgICAgaW50IG1vbml0b3Jfc2NhbGUgPSBz dGQ6Om1heCgxLCBnZGtfbW9uaXRvcl9nZXRfc2NhbGVfZmFjdG9yKG1vbml0b3IpKTsKKy0gICAg Y29uZmlnLmRpc3BsYXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soCisrICAgIGNvbmZpZy5kaXNw bGF5X2dlb21ldHJpZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgICBnZng6OlJlY3QobW9u aXRvcl9zY2FsZSAqIGdlb21ldHJ5LngsIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS55LAorICAg ICAgICAgICAgICAgICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS53aWR0aCwKKyAgICAgICAg ICAgICAgICAgICBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkuaGVpZ2h0KSwKKy0gICAgICAgIG1v bml0b3Jfc2NhbGUgKiBmb250X3NjYWxlKTsKKysgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Piht b25pdG9yX3NjYWxlICogZm9udF9zY2FsZSl9OworICAgfQorICAgcmV0dXJuIGNvbmZpZzsKKyB9 CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNz dXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRv ci5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9tZW1vcnlfcHJlc3N1 cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjLm1lCTIwMjQtMDItMjQgMTg6MDY6NDYu NTA5MzkzMDMyICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL21l bW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MJMjAyNC0wMi0yNCAx ODowNzoxMS4yNTg5NDgyNDEgKzAxMDAKK0BAIC05Miw4ICs5Miw4IEBAIHZvaWQgVW5uZWNlc3Nh cnlEaXNjYXJkTW9uaXRvcjo6T25EaXNjYXIKKyAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VR VUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworICAgaWYgKGN1cnJlbnRfcmVjbGFpbV9ldmVudF8p IHsKKyAgICAgLy8gQ2FjaGUgdGhpcyBraWxsIGV2ZW50IGFsb25nIHdpdGggdGhlIHRpbWUgaXQg dG9vayBwbGFjZS4KKy0gICAgY3VycmVudF9yZWNsYWltX2V2ZW50X2tpbGxzXy5lbXBsYWNlX2Jh Y2sobWVtb3J5X2ZyZWVkX2tiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaXNjYXJkX2NvbXBsZXRlX3RpbWUpOworKyAgICBjdXJyZW50X3JlY2xhaW1f ZXZlbnRfa2lsbHNfLmVtcGxhY2VfYmFjaygpID0ge21lbW9yeV9mcmVlZF9rYiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZF9jb21wbGV0ZV90 aW1lfTsKKyAgIH0KKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBv bmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0 b2ZpbGxfdGFibGUuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9m aWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxl LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjLm1lCTIw MjQtMDItMjQgMTk6NTg6MDkuOTI5MzcxNzkxICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9h ZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjCTIwMjQtMDItMjQgMTk6NTk6MDcuMTQ5NTI0ODYyICsw MTAwCitAQCAtNjMxLDEwICs2MzEsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEF1dG9maWxsUHJvZmls ZT4gQWRkcmVzcworICAgICB9CisgCisgICAgIGJhc2U6OnNwYW48Y29uc3QgdWludDhfdD4gb2Jz ZXJ2YXRpb25zX2RhdGEgPSBzLkNvbHVtbkJsb2IoMyk7CistICAgIGZpZWxkX3R5cGVfdmFsdWVz LmVtcGxhY2VfYmFjaygKKysgICAgZmllbGRfdHlwZV92YWx1ZXMuZW1wbGFjZV9iYWNrKCkgPSB7 CisgICAgICAgICB0eXBlLCBzLkNvbHVtblN0cmluZzE2KDEpLCBzLkNvbHVtbkludCgyKSwKKyAg ICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KG9ic2VydmF0aW9uc19kYXRhLmJlZ2luKCksCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhdGlvbnNfZGF0YS5lbmQoKSkpOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YXRpb25zX2RhdGEuZW5kKCkpfTsK KyAKKyAgICAgaWYgKHR5cGUgPT0gQUREUkVTU19IT01FX0NPVU5UUlkpIHsKKyAgICAgICBjb3Vu dHJ5X2NvZGUgPSBiYXNlOjpVVEYxNlRvVVRGOChzLkNvbHVtblN0cmluZzE2KDEpKTsKK2RpZmYg LXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dz ZXIvd2ViZGF0YS9hZGRyZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYy5tZSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEv YWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2Vz L2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MubWUJMjAyNC0wMi0yNCAxOTo1MjowMi4xNzM2ODIw NjAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwv Y29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MJ MjAyNC0wMi0yNCAxOTo1MjoyNS4yNDcyMTYzMjkgKzAxMDAKK0BAIC0xOTIsOSArMTkyLDkgQEAg Y2xhc3MgQ29udGFjdEluZm9Qcm9maWxlU2V0dGVyIHsKKyAgICAgICBDSEVDSyhvYnNlcnZhdGlv bnMuZW1wdHkoKSk7CisgICAgICAgZm9yIChjb25zdCBzeW5jX3BiOjpDb250YWN0SW5mb1NwZWNp Zmljczo6T2JzZXJ2YXRpb24mIHByb3RvX29ic2VydmF0aW9uIDoKKyAgICAgICAgICAgIG1ldGFk YXRhLm9ic2VydmF0aW9ucygpKSB7CistICAgICAgICBvYnNlcnZhdGlvbnMuZW1wbGFjZV9iYWNr KHByb3RvX29ic2VydmF0aW9uLnR5cGUoKSwKKysgICAgICAgIG9ic2VydmF0aW9ucy5lbXBsYWNl X2JhY2soKSA9IHtwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFByb2ZpbGVUb2tlblF1YWxpdHk6OkZvcm1TaWduYXR1cmVIYXNoKAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9fb2JzZXJ2YXRpb24u Zm9ybV9oYXNoKCkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy b3RvX29ic2VydmF0aW9uLmZvcm1faGFzaCgpKX07CisgICAgICAgfQorICAgICB9CisgICB9Citk aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJh bWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRl bnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYworLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJh bWVfY29uZmlnLmNjLm1lCTIwMjQtMDItMjUgMDA6MTQ6MjYuODMwMzIzMzY1ICswMTAwCisrKysg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNl ZF9mcmFtZV9jb25maWcuY2MJMjAyNC0wMi0yNSAwMDoxNToxNy45MzkyNDEwOTEgKzAxMDAKK0BA IC00MDIsNyArNDAyLDcgQEAgdm9pZCBGZW5jZWRGcmFtZVByb3BlcnRpZXM6OlVwZGF0ZVBhcmVu dAorICAgICAgICAgZmVhdHVyZSwgYWxsb3dfbGlzdC5BbGxvd2VkT3JpZ2lucygpLCBhbGxvd19s aXN0LlNlbGZJZk1hdGNoZXMoKSwKKyAgICAgICAgIGFsbG93X2xpc3QuTWF0Y2hlc0FsbCgpLCBh bGxvd19saXN0Lk1hdGNoZXNPcGFxdWVTcmMoKSk7CisgICB9CistICBwYXJlbnRfcGVybWlzc2lv bnNfaW5mb18uZW1wbGFjZShwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9vcmlnaW4pOworKyAgcGFy ZW50X3Blcm1pc3Npb25zX2luZm9fLmVtcGxhY2UoKSA9IHtwYXJzZWRfcG9saWNpZXMsIHBhcmVu dF9vcmlnaW59OworIH0KKyAKKyB9ICAvLyBuYW1lc3BhY2UgY29udGVudAorZGlmZiAtdXAgY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJl c3RfZ3JvdXBfc3RvcmFnZS5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJv d3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCistLS0gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3Rf Z3JvdXBfc3RvcmFnZS5jYy5tZQkyMDI0LTAyLTI1IDAwOjE3OjMxLjc5OTY0NDY5MSArMDEwMAor KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3Vw L2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MJMjAyNC0wMi0yNSAwMDoxODo1NC4xNTcxMjM1MTkg KzAxMDAKK0BAIC0zMzMyLDkgKzMzMzIsOSBAQCBzdGQ6Om9wdGlvbmFsPERlYnVnUmVwb3J0Q29v bGRvd24+IERvR2V0CisgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICB9CisgCistICByZXR1 cm4gRGVidWdSZXBvcnRDb29sZG93bihjb29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29s dW1uVGltZSgwKSwKKysgIHJldHVybiBEZWJ1Z1JlcG9ydENvb2xkb3due2Nvb2xkb3duX2RlYnVn Z2luZ19vbmx5X3JlcG9ydC5Db2x1bW5UaW1lKDApLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdGljX2Nhc3Q8RGVidWdSZXBvcnRDb29sZG93blR5cGU+KAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvb2xkb3duX2RlYnVnZ2luZ19vbmx5X3JlcG9ydC5Db2x1 bW5JbnQoMSkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29sZG93bl9k ZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uSW50KDEpKX07CisgfQorIAorIHZvaWQgRG9HZXRE ZWJ1Z1JlcG9ydENvb2xkb3ducygKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hy b21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgubWUg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVf bm90aWZpY2F0aW9uX3NlcnZpY2UuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgubWUJMjAy NC0wMi0yNSAxNTozNDoxNi4xNDA3Njg0NDUgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2Vydmlj ZS5oCTIwMjQtMDItMjUgMTU6Mzc6NDcuNzg5NjY1ODM1ICswMTAwCitAQCAtMjQsNiArMjQsNyBA QCBzdHJ1Y3QgTWVudU5vdGlmaWNhdGlvbkVudHJ5IHsKKyAgIGludCBjb21tYW5kID0gMDsKKyAg IHN0ZDo6dTE2c3RyaW5nIGxhYmVsOworICAgc2FmZXR5X2h1Yjo6U2FmZXR5SHViTW9kdWxlVHlw ZSBtb2R1bGU7CisrICBNZW51Tm90aWZpY2F0aW9uRW50cnkoYXV0byBjLCBhdXRvIGwsIGF1dG8g bSkgOiBjb21tYW5kKGMpLCBsYWJlbChsKSwgbW9kdWxlKG0pIHsgfQorIH07CisgCisgbmFtZXNw YWNlIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvdGFicy90YWJfc3R5bGVfdmlld3MuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHlsZV92aWV3cy5jYworLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJfc3R5bGVf dmlld3MuY2MubWUJMjAyNC0wMi0yNSAxNjoyMjo0Ni42MDEyMDkyNjkgKzAxMDAKKysrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxl X3ZpZXdzLmNjCTIwMjQtMDItMjUgMTY6MjQ6NDguMTEwNjE4NDc1ICswMTAwCitAQCAtMTIxNCwx MCArMTIxNCwxMCBAQCBTa1BhdGggQ2hyb21lUmVmcmVzaDIwMjNUYWJTdHlsZVZpZXdzOjpHCisg CisgICAgIC8vIFJhZGlpIGFyZSBjbG9ja3dpc2UgZnJvbSB0b3AgbGVmdC4KKyAgICAgY29uc3Qg U2tWZWN0b3IgcmFkaWlbNF0gPSB7CistICAgICAgICBTa1ZlY3Rvcih0b3BfY29udGVudF9jb3Ju ZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzKSwKKy0gICAgICAgIFNrVmVjdG9y KHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAor LSAgICAgICAgU2tWZWN0b3IoYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2Nv bnRlbnRfY29ybmVyX3JhZGl1cyksCistICAgICAgICBTa1ZlY3Rvcihib3R0b21fY29udGVudF9j b3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzKX07CisrICAgICAgICBT a1ZlY3Rvcnt0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFk aXVzfSwKKysgICAgICAgIFNrVmVjdG9ye3RvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9j b250ZW50X2Nvcm5lcl9yYWRpdXN9LAorKyAgICAgICAgU2tWZWN0b3J7Ym90dG9tX2NvbnRlbnRf Y29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1c30sCisrICAgICAgICBT a1ZlY3Rvcntib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3Ju ZXJfcmFkaXVzfX07CisgICAgIFNrUlJlY3QgcnJlY3Q7CisgICAgIHJyZWN0LnNldFJlY3RSYWRp aShTa1JlY3Q6Ok1ha2VMVFJCKGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSksIHJhZGlpKTsKKyAg ICAgU2tQYXRoIHBhdGg7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1p c3Npb25fY29udGV4dC5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2Vy L2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1pc3Npb25f Y29udGV4dC5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZmls ZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9jb250 ZXh0LmNjLm1lCTIwMjQtMDItMjUgMTg6NDk6MzIuNTEyMDgwMDg1ICswMTAwCisrKysgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21l X2ZpbGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MJMjAyNC0wMi0yNSAxOTow NzozNi41MTg3MTE2OTMgKzAxMDAKK0BAIC0zODYsNyArMzg2LDcgQEAgYm9vbCBTaG91bGRCbG9j a0FjY2Vzc1RvUGF0aChjb25zdCBiYXNlOgorICAgICAgIERDSEVDSyhibG9jay5wYXRoKTsKKyAg ICAgICBibG9ja2VkX3BhdGggPSBiYXNlOjpGaWxlUGF0aChibG9jay5wYXRoKTsKKyAgICAgfQor LSAgICBydWxlcy5lbXBsYWNlX2JhY2soYmxvY2tlZF9wYXRoLCBibG9jay50eXBlKTsKKysgICAg cnVsZXMuZW1wbGFjZV9iYWNrKCkgPSB7YmxvY2tlZF9wYXRoLCBibG9jay50eXBlfTsKKyAgIH0K KyAKKyAgIGJhc2U6OkZpbGVQYXRoIG5lYXJlc3RfYW5jZXN0b3I7CitAQCAtMTU3NSwxMSArMTU3 NSwxMSBAQCB2b2lkIENocm9tZUZpbGVTeXN0ZW1BY2Nlc3NQZXJtaXNzaW9uQ29uCisgICAvLyBw cm9maWxlJ3MgZGlyZWN0b3J5LCBhc3N1bWluZyB0aGUgcHJvZmlsZSBkaXIgaXMgYSBjaGlsZCBv ZiB0aGUgdXNlciBkYXRhCisgICAvLyBkaXIuCisgICBzdGQ6OnZlY3RvcjxCbG9ja1BhdGhSdWxl PiBleHRyYV9ydWxlczsKKy0gIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjayhwcm9maWxlXy0+R2V0 UGF0aCgpLkRpck5hbWUoKSwga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgZXh0cmFfcnVsZXMuZW1w bGFjZV9iYWNrKCkgPSB7cHJvZmlsZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtCbG9ja0FsbENo aWxkcmVufTsKKyAgIGlmIChnX2Jyb3dzZXJfcHJvY2Vzcy0+cHJvZmlsZV9tYW5hZ2VyKCkpIHsK Ky0gICAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNrKAorKyAgICBleHRyYV9ydWxlcy5lbXBsYWNl X2JhY2soKSA9IHsKKyAgICAgICAgIGdfYnJvd3Nlcl9wcm9jZXNzLT5wcm9maWxlX21hbmFnZXIo KS0+dXNlcl9kYXRhX2RpcigpLAorLSAgICAgICAga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgICAg ICAga0Jsb2NrQWxsQ2hpbGRyZW59OworICAgfQorIAorICAgYmFzZTo6VGhyZWFkUG9vbDo6UG9z dFRhc2tBbmRSZXBseVdpdGhSZXN1bHQoCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS9icm93c2VyL3BlcmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2Nh cmRlci5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3BlcmZvcm1h bmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRlci5jYworLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdlci9tZWNoYW5pc21z L3BhZ2VfZGlzY2FyZGVyLmNjLm1lCTIwMjQtMDItMjUgMTk6MTQ6MTYuMjI3ODQzMTQ4ICswMTAw CisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9t YW5hZ2VyL21lY2hhbmlzbXMvcGFnZV9kaXNjYXJkZXIuY2MJMjAyNC0wMi0yNSAxOToxNTowNC41 ODkzMDc0NjggKzAxMDAKK0BAIC01Myw3ICs1Myw3IEBAIHN0ZDo6dmVjdG9yPFBhZ2VEaXNjYXJk ZXI6OkRpc2NhcmRFdmVudD4KKyAgICAgaWYgKGxpZmVjeWNsZV91bml0LT5EaXNjYXJkVGFiKAor ICAgICAgICAgICAgIGRpc2NhcmRfcmVhc29uLAorICAgICAgICAgICAgIC8qbWVtb3J5X2Zvb3Rw cmludF9lc3RpbWF0ZT0qL3Byb3h5LnNlY29uZCkpIHsKKy0gICAgICBkaXNjYXJkX2V2ZW50cy5l bXBsYWNlX2JhY2soYmFzZTo6VGltZVRpY2tzOjpOb3coKSwgcHJveHkuc2Vjb25kKTsKKysgICAg ICBkaXNjYXJkX2V2ZW50cy5lbXBsYWNlX2JhY2soKSA9IHtiYXNlOjpUaW1lVGlja3M6Ok5vdygp LCBwcm94eS5zZWNvbmR9OworICAgICB9CisgICB9CisgICByZXR1cm4gZGlzY2FyZF9ldmVudHM7 CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2 aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmgubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9leHRlbnNp b25zL2Jyb3dzZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1ZS5oCistLS0gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9leHRlbnNpb25zL2Jyb3dzZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1ZS5o Lm1lCTIwMjQtMDItMjUgMTc6MjY6MjUuNjIzNTcyNDU4ICswMTAwCisrKysgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9leHRlbnNpb25zL2Jyb3dzZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1ZS5o CTIwMjQtMDItMjUgMTc6Mjk6NTIuOTgzMzQ1MjgwICswMTAwCitAQCAtMjA0LDYgKzIwNCw3IEBA IGNsYXNzIFNlcnZpY2VXb3JrZXJUYXNrUXVldWUgOiBwdWJsaWMgS2UKKyAgICAgcmF3X3B0cjxj b250ZW50OjpCcm93c2VyQ29udGV4dD4gYnJvd3Nlcl9jb250ZXh0OworICAgICBiYXNlOjpVbmd1 ZXNzYWJsZVRva2VuIHRva2VuOworIAorKyAgICBTZXF1ZW5jZWRDb250ZXh0SWQoYXV0byBlLCBh dXRvIGIsIGF1dG8gdCkgOiBleHRlbnNpb25faWQoZSksIGJyb3dzZXJfY29udGV4dChiKSwgdG9r ZW4odCkgeyB9CisgICAgIGJvb2wgb3BlcmF0b3I8KGNvbnN0IFNlcXVlbmNlZENvbnRleHRJZCYg cmhzKSBjb25zdCB7CisgICAgICAgcmV0dXJuIHN0ZDo6dGllKGV4dGVuc2lvbl9pZCwgYnJvd3Nl cl9jb250ZXh0LCB0b2tlbikgPAorICAgICAgICAgICAgICBzdGQ6OnRpZShyaHMuZXh0ZW5zaW9u X2lkLCByaHMuYnJvd3Nlcl9jb250ZXh0LCByaHMudG9rZW4pOworZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVy X3ZpZXdfY29udGV4dF9tZW51LmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvcmVuZGVyZXJfY29udGV4dF9tZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVudS5jYwor LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcmVuZGVyZXJfY29udGV4 dF9tZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVudS5jYy5tZQkyMDI0LTAyLTI1IDIwOjA1OjQw LjU2Nzg5MTA3NyArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvcmVuZGVyZXJfY29udGV4dF9tZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVudS5jYwkyMDI0 LTAyLTI1IDIwOjA1OjQ2LjQwNzAwMTk5NyArMDEwMAorQEAgLTM5OTMsMTAgKzM5OTMsMTAgQEAg dm9pZCBSZW5kZXJWaWV3Q29udGV4dE1lbnU6OkV4ZWNPcGVuQ29tcAorICAgICBhdXRvZmlsbDo6 TG9jYWxGcmFtZVRva2VuIGZyYW1lX3Rva2VuID0gZHJpdmVyLT5HZXRGcmFtZVRva2VuKCk7Cisg ICAgIGNsaWVudC0+R2V0TWFuYWdlcigpLk9wZW5Db21wb3NlKAorICAgICAgICAgKmRyaXZlciwK Ky0gICAgICAgIGF1dG9maWxsOjpGb3JtR2xvYmFsSWQoCistICAgICAgICAgICAgZnJhbWVfdG9r ZW4sIGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJZChwYXJhbXNfLmZvcm1fcmVuZGVyZXJfaWQpKSwK Ky0gICAgICAgIGF1dG9maWxsOjpGaWVsZEdsb2JhbElkKAorLSAgICAgICAgICAgIGZyYW1lX3Rv a2VuLCBhdXRvZmlsbDo6RmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQp KSwKKysgICAgICAgIGF1dG9maWxsOjpGb3JtR2xvYmFsSWR7CisrICAgICAgICAgICAgZnJhbWVf dG9rZW4sIGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJZChwYXJhbXNfLmZvcm1fcmVuZGVyZXJfaWQp fSwKKysgICAgICAgIGF1dG9maWxsOjpGaWVsZEdsb2JhbElkeworKyAgICAgICAgICAgIGZyYW1l X3Rva2VuLCBhdXRvZmlsbDo6RmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVuZGVyZXJf aWQpfSwKKyAgICAgICAgIGNvbXBvc2U6OkNvbXBvc2VNYW5hZ2VySW1wbDo6VWlFbnRyeVBvaW50 OjprQ29udGV4dE1lbnUpOworICAgICBuZXdfYmFkZ2VfdHJhY2tlcl8uQWN0aW9uUGVyZm9ybWVk KCJjb21wb3NlX21lbnVfaXRlbV9hY3RpdmF0ZWQiKTsKKyAgIH0gZWxzZSB7CistLS0gY2hyb21p dW0tMTIzLjAuNjMxMi40Ni9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5pYm94 X2NsaWVudC5jYy5tZQkyMDI0LTAzLTE1IDE1OjE2OjQ2Ljk4MDEyMzgwNiArMDEwMAorKysrIGNo cm9taXVtLTEyMy4wLjYzMTIuNDYvY2hyb21lL2Jyb3dzZXIvdWkvb21uaWJveC9jaHJvbWVfb21u aWJveF9jbGllbnQuY2MJMjAyNC0wMy0xNSAxNToxODozOS4wMjQwNDI1NjAgKzAxMDAKK0BAIC00 NzQsMTAgKzQ3NCwxMCBAQAorICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVfbmF2X21hdGNoKTsK KyAKKyAgIC8vIFN0b3JlIHRoZSBkZXRhaWxzIG5lY2Vzc2FyeSB0byBvcGVuIHRoZSBvbW5pYm94 IG1hdGNoIHZpYSBicm93c2VyIGNvbW1hbmRzLgorLSAgbG9jYXRpb25fYmFyXy0+c2V0X25hdmln YXRpb25fcGFyYW1zKExvY2F0aW9uQmFyOjpOYXZpZ2F0aW9uUGFyYW1zKAorKyAgbG9jYXRpb25f YmFyXy0+c2V0X25hdmlnYXRpb25fcGFyYW1zKExvY2F0aW9uQmFyOjpOYXZpZ2F0aW9uUGFyYW1z eworICAgICAgIGRlc3RpbmF0aW9uX3VybCwgZGlzcG9zaXRpb24sIHRyYW5zaXRpb24sIG1hdGNo X3NlbGVjdGlvbl90aW1lc3RhbXAsCisgICAgICAgZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0 aG91dF9zY2hlbWUsCistICAgICAgZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aF9odHRwX3Nj aGVtZSwgbWF0Y2guZXh0cmFfaGVhZGVycykpOworKyAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRl cmVkX3dpdGhfaHR0cF9zY2hlbWUsIG1hdGNoLmV4dHJhX2hlYWRlcnN9KTsKKyAKKyAgIGlmIChi cm93c2VyXykgeworICAgICBhdXRvIG5hdmlnYXRpb24gPSBjaHJvbWU6Ok9wZW5DdXJyZW50VVJM KGJyb3dzZXJfKTsKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9p bnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNjLm1lCTIwMjQtMDMtMTUgMTU6 MTY6NDcuMDA0MTI0NDMxICswMTAwCisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50 L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYwkyMDI0LTAz LTE1IDE1OjIxOjU3Ljc5NDIyOTUyMSArMDEwMAorQEAgLTU2NSw3ICs1NjUsNyBAQAorICAgICAg ICBibGluazo6ZmVhdHVyZXM6OmtGbGVkZ2VEZWJ1Z1JlcG9ydFJlc3RyaWN0ZWRDb29sZG93bi5H ZXQoKSAhPQorICAgICAgICAgICAgYmFzZTo6TWlsbGlzZWNvbmRzKDApKSkgeworICAgICBuZXdf ZGVidWdfcmVwb3J0X2xvY2tvdXRfYW5kX2Nvb2xkb3ducy5kZWJ1Z19yZXBvcnRfY29vbGRvd25f bWFwW29yaWdpbl0gPQorLSAgICAgICAgRGVidWdSZXBvcnRDb29sZG93bihub3dfbmVhcmVzdF9u ZXh0X2hvdXIsIGNvb2xkb3duX3R5cGUpOworKyAgICAgICAgRGVidWdSZXBvcnRDb29sZG93bntu b3dfbmVhcmVzdF9uZXh0X2hvdXIsIGNvb2xkb3duX3R5cGV9OworICAgfQorIAorICAgcmV0dXJu IGNhbl9zZW5kX2RlYnVnX3JlcG9ydDsKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Nocm9t ZS9icm93c2VyL3VpL2F1dG9maWxsL2F1dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjLm5v X21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDMtMTUgMTU6NTU6NTEuMzUxODc4ODI5ICswMTAw CisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9h dXRvZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYwkyMDI0LTAzLTE1IDE2OjE5OjQ4Ljg2MjE4 OTQ2MyArMDEwMAorQEAgLTI3Nyw4ICsyNzcsOCBAQAorICAgICBBdXRvZmlsbE1hbmFnZXImIG1h bmFnZXIpIHsKKyAgIGF1dG8mIGRyaXZlciA9IHN0YXRpY19jYXN0PENvbnRlbnRBdXRvZmlsbERy aXZlciY+KG1hbmFnZXIuZHJpdmVyKCkpOworICAgZHJpdmVyLmJyb3dzZXJfZXZlbnRzKCkuUmVu ZGVyZXJTaG91bGRUcmlnZ2VyU3VnZ2VzdGlvbnMoCistICAgICAgRmllbGRHbG9iYWxJZChkcml2 ZXIuR2V0RnJhbWVUb2tlbigpLAorLSAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklk KHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQpKSwKKysgICAgICBGaWVsZEdsb2JhbElke2RyaXZl ci5HZXRGcmFtZVRva2VuKCksCisrICAgICAgICAgICAgICAgICAgICBGaWVsZFJlbmRlcmVySWQo cGFyYW1zXy5maWVsZF9yZW5kZXJlcl9pZCl9LAorICAgICAgIEF1dG9maWxsU3VnZ2VzdGlvblRy aWdnZXJTb3VyY2U6OmtNYW51YWxGYWxsYmFja1BheW1lbnRzKTsKKyAgIExvZ01hbnVhbEZhbGxi YWNrQ29udGV4dE1lbnVFbnRyeUFjY2VwdGVkKAorICAgICAgIHN0YXRpY19jYXN0PEJyb3dzZXJB dXRvZmlsbE1hbmFnZXImPihtYW5hZ2VyKSwKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2No cm9tZS9icm93c2VyL3VpL3dlYl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBsLmNj Lm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDMtMTMgMjA6MzU6NDAuMDAwMDAwMDAwICsw MTAwCisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBw bGljYXRpb25zL3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYwkyMDI0LTAzLTE1IDE2OjIwOjQ1Ljg0 NjkxOTgyMCArMDEwMAorQEAgLTEwNyw3ICsxMDcsNyBAQAorICAgICAgICAgICAgICAgICAgICAg IENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+bWFuaWZlc3RfaWRfcGF0aCwgb3JpZ2luKSk7Cisg ICAgIEFTU0lHTl9PUl9SRVRVUk4oR1VSTCBpbnN0YWxsX3VybCwKKyAgICAgICAgICAgICAgICAg ICAgICBDb252ZXJ0UGF0aFRvVXJsKHN1Yl9hcHAtPmluc3RhbGxfdXJsX3BhdGgsIG9yaWdpbikp OworLSAgICBzdWJfYXBwcy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG1hbmlmZXN0X2lkKSwgc3Rk Ojptb3ZlKGluc3RhbGxfdXJsKSk7CisrICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFjaygpID0ge3N0 ZDo6bW92ZShtYW5pZmVzdF9pZCksIHN0ZDo6bW92ZShpbnN0YWxsX3VybCl9OworICAgfQorICAg cmV0dXJuIHN1Yl9hcHBzOworIH0KK0BAIC00MzksNyArNDM5LDcgQEAKKyAgICAgICAgIGJhc2U6 OkJpbmRPbmNlKAorICAgICAgICAgICAgIFtdKHdlYmFwcHM6Ok1hbmlmZXN0SWQgbWFuaWZlc3Rf aWQsIGNvbnN0IHdlYmFwcHM6OkFwcElkJiBhcHBfaWQsCisgICAgICAgICAgICAgICAgd2ViYXBw czo6SW5zdGFsbFJlc3VsdENvZGUgcmVzdWx0X2NvZGUpIHsKKy0gICAgICAgICAgICAgIHJldHVy biBTdWJBcHBJbnN0YWxsUmVzdWx0KG1hbmlmZXN0X2lkLCBhcHBfaWQsIHJlc3VsdF9jb2RlKTsK KysgICAgICAgICAgICAgIHJldHVybiBTdWJBcHBJbnN0YWxsUmVzdWx0e21hbmlmZXN0X2lkLCBh cHBfaWQsIHJlc3VsdF9jb2RlfTsKKyAgICAgICAgICAgICB9LAorICAgICAgICAgICAgIG1hbmlm ZXN0X2lkKQorICAgICAgICAgICAgIC5UaGVuKGNvbmN1cnJlbnQuQ3JlYXRlQ2FsbGJhY2soKSkp OworLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRlLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy NC0wMy0xMyAyMDozNTo1Ny4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjMuMC42MzEy LjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0 ZS5oCTIwMjQtMDMtMTUgMTY6MjQ6NTcuODk5NTQwOTQxICswMTAwCitAQCAtOTYsNyArOTYsNyBA QAorICAgICAgIENvbG9yOjpDb2xvclNwYWNlIGNvbG9yX2ludGVycG9sYXRpb25fc3BhY2UsCisg ICAgICAgc3RkOjpvcHRpb25hbDxDb2xvcjo6SHVlSW50ZXJwb2xhdGlvbk1ldGhvZD4gaHVlX2lu dGVycG9sYXRpb25fbWV0aG9kKSB7CisgICAgIHJldHVybiBiYXNlOjpBZG9wdFJlZihuZXcgRm9u dFBhbGV0dGUoCistICAgICAgICBzdGFydCwgZW5kLCBOb25Ob3JtYWxpemVkUGVyY2VudGFnZXMo c3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2UpLAorKyAgICAgICAgc3RhcnQsIGVuZCwg Tm9uTm9ybWFsaXplZFBlcmNlbnRhZ2Vze3N0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdl fSwKKyAgICAgICAgIG5vcm1hbGl6ZWRfcGVyY2VudGFnZSwgYWxwaGFfbXVsdGlwbGllciwgY29s b3JfaW50ZXJwb2xhdGlvbl9zcGFjZSwKKyAgICAgICAgIGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhv ZCkpOworICAgfQorQEAgLTE3MCw3ICsxNzAsNyBAQAorICAgICAgIGRvdWJsZSBub3JtYWxpemVk X3BlcmNlbnRhZ2UpIHsKKyAgICAgZG91YmxlIGVuZF9wZXJjZW50YWdlID0gbm9ybWFsaXplZF9w ZXJjZW50YWdlICogMTAwLjA7CisgICAgIGRvdWJsZSBzdGFydF9wZXJjZW50YWdlID0gMTAwLjAg LSBlbmRfcGVyY2VudGFnZTsKKy0gICAgcmV0dXJuIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlcyhz dGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZSk7CisrICAgIHJldHVybiBOb25Ob3JtYWxp emVkUGVyY2VudGFnZXN7c3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2V9OworICAgfQor IAorICAgZG91YmxlIEdldEFscGhhTXVsdGlwbGllcigpIGNvbnN0IHsKK2RpZmYgLXVwIGNocm9t aXVtLTEyMy4wLjYzMTIuNDYvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMv cGFydGl0aW9uX2FsbG9jL2xpZ2h0d2VpZ2h0X3F1YXJhbnRpbmUuY2MubWUgY2hyb21pdW0tMTIz LjAuNjMxMi40Ni9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRp b25fYWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYworLS0tIGNocm9taXVtLTEyMy4wLjYz MTIuNDYvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2Fs bG9jL2xpZ2h0d2VpZ2h0X3F1YXJhbnRpbmUuY2MubWUJMjAyNC0wMy0xNSAxOTowMTowNy43NjU4 MzI4MDEgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Jhc2UvYWxsb2NhdG9yL3Bh cnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9saWdodHdlaWdodF9xdWFyYW50 aW5lLmNjCTIwMjQtMDMtMTUgMTk6MDE6NTIuOTE4Njg3NzQyICswMTAwCitAQCAtNjIsNyArNjIs NyBAQCBib29sIExpZ2h0d2VpZ2h0UXVhcmFudGluZUJyYW5jaDo6UXVhcmFuCisgICAgIGJyYW5j aF9zaXplX2luX2J5dGVzXyArPSB1c2FibGVfc2l6ZTsKKyAgICAgUEFfRENIRUNLKGJyYW5jaF9z aXplX2luX2J5dGVzXyA8PSBjYXBhY2l0eV9pbl9ieXRlcyk7CisgCistICAgIHNsb3RzXy5lbXBs YWNlX2JhY2soc2xvdF9zdGFydCwgdXNhYmxlX3NpemUpOworKyAgICBzbG90c18uZW1wbGFjZV9i YWNrKCkgPSB7c2xvdF9zdGFydCwgdXNhYmxlX3NpemV9OworIAorICAgICAvLyBTd2FwIHJhbmRv bWx5IHNvIHRoYXQgdGhlIHF1YXJhbnRpbmUgbGlzdCByZW1haW4gc2h1ZmZsZWQuCisgICAgIC8v IFRoaXMgaXMgbm90IHVuaWZvcm1seSByYW5kb20sIGJ1dCBzdWZmaWNpZW50bHkgcmFuZG9tLgor ZGlmZiAtdXAgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hh cmVkX2ltYWdlX2ludGVyZmFjZS5jYy5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2dwdS9pcGMv Y2xpZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjCistLS0gY2hyb21pdW0tMTIz LjAuNjMxMi40Ni9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5j Yy5tZQkyMDI0LTAzLTE2IDE4OjQzOjE3Ljg2MzMyODUwNyArMDEwMAorKysrIGNocm9taXVtLTEy My4wLjYzMTIuNDYvZ3B1L2lwYy9jbGllbnQvY2xpZW50X3NoYXJlZF9pbWFnZV9pbnRlcmZhY2Uu Y2MJMjAyNC0wMy0xNiAxODo1MTowMC40NDkyNzcxNTIgKzAxMDAKK0BAIC0xMDYsOCArMTA2LDgg QEAgc2NvcGVkX3JlZnB0cjxDbGllbnRTaGFyZWRJbWFnZT4gQ2xpZW50UworICAgICAgIEFkZE1h aWxib3gocHJveHlfLT5DcmVhdGVTaGFyZWRJbWFnZShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlX29y aWdpbiwgYWxwaGFfdHlwZSwgdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRlYnVnX2xhYmVsKSksCistICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1l dGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCisrICAgICAg Q2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1 cmZhY2Vfb3JpZ2luLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90 eXBlLCB1c2FnZX0sCisgICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xkZXJfKTsK KyB9CisgCitAQCAtMTM3LDggKzEzNyw4IEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1h Z2U+IENsaWVudFMKKyAKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFy ZWRJbWFnZT4oCisgICAgICAgQWRkTWFpbGJveChtYWlsYm94KSwKKy0gICAgICBDbGllbnRTaGFy ZWRJbWFnZTo6TWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmln aW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdl KSwKKysgICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xv cl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKKyAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCks IGhvbGRlcl8pOworIH0KKyAKK0BAIC0xNjUsOCArMTY1LDggQEAgc2NvcGVkX3JlZnB0cjxDbGll bnRTaGFyZWRJbWFnZT4gQ2xpZW50UworICAgQ0hFQ0soIWJ1ZmZlcl9oYW5kbGUuaXNfbnVsbCgp KTsKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCisg ICAgICAgQWRkTWFpbGJveChtYWlsYm94KSwKKy0gICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0 YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysgICAgICBD bGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3Vy ZmFjZV9vcmlnaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5 cGUsIHVzYWdlfSwKKyAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksCisgICAgICAgR3B1 TWVtb3J5QnVmZmVySGFuZGxlSW5mbyhzdGQ6Om1vdmUoYnVmZmVyX2hhbmRsZSksIGZvcm1hdCwg c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl91c2FnZSksCitA QCAtMTkyLDggKzE5Miw4IEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVu dFMKKyAKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4o CisgICAgICAgbWFpbGJveCwKKy0gICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGEoZm9y bWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysgICAgICBDbGllbnRTaGFy ZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmln aW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdl fSwKKyAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksCisgICAgICAgR3B1TWVtb3J5QnVm ZmVySGFuZGxlSW5mbyhzdGQ6Om1vdmUoY2xpZW50X2J1ZmZlcl9oYW5kbGUpLCBmb3JtYXQsIHNp emUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdXNhZ2UpLAorQEAg LTIxOSw4ICsyMTksOCBAQCBzY29wZWRfcmVmcHRyPENsaWVudFNoYXJlZEltYWdlPiBDbGllbnRT CisgICAgICAgQWRkTWFpbGJveChwcm94eV8tPkNyZWF0ZVNoYXJlZEltYWdlKAorICAgICAgICAg ICBmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwgYWxwaGFfdHlwZSwg dXNhZ2UsCisgICAgICAgICAgIGRlYnVnX2xhYmVsLCBzdGQ6Om1vdmUoYnVmZmVyX2hhbmRsZSkp KSwKKy0gICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xv cl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysgICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRh dGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCisrICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKKyAgICAgICBHZW5V bnZlcmlmaWVkU3luY1Rva2VuKCksIGhvbGRlcl8pOworIH0KKyAKK0BAIC0yNzMsOCArMjczLDgg QEAgQ2xpZW50U2hhcmVkSW1hZ2VJbnRlcmZhY2U6OkNyZWF0ZVNoYXJlZAorICAgICAgIEFkZE1h aWxib3gocHJveHlfLT5DcmVhdGVTaGFyZWRJbWFnZShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNl LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlX29y aWdpbiwgYWxwaGFfdHlwZSwgdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGRlYnVnX2xhYmVsLCBzdGQ6Om1vdmUoaGFuZGxlKSkpLAorLSAgICAgIENs aWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJm YWNlX29yaWdpbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlw ZSwgdXNhZ2UpLAorKyAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNp emUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAorICAgICAgIEdlblVudmVyaWZpZWRTeW5j VG9rZW4oKSwgaG9sZGVyXyk7CisgICByZXR1cm4gc2hhcmVkX2ltYWdlX21hcHBpbmc7CisgfQor QEAgLTI5NiwxMCArMjk2LDEwIEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENs aWVudFMKKyAgICAgICAgICAgYnVmZmVyX2Zvcm1hdCwgcGxhbmUsIGdwdV9tZW1vcnlfYnVmZmVy LT5HZXRTaXplKCksIGNvbG9yX3NwYWNlLAorICAgICAgICAgICBzdXJmYWNlX29yaWdpbiwgYWxw aGFfdHlwZSwgdXNhZ2UsIGRlYnVnX2xhYmVsLAorICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZl ci0+Q2xvbmVIYW5kbGUoKSkpLAorLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YSgK KysgICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7CisgICAgICAgICAgIHZpejo6R2V0 U2luZ2xlUGxhbmVTaGFyZWRJbWFnZUZvcm1hdChidWZmZXJfZm9ybWF0KSwKKyAgICAgICAgICAg Z3B1X21lbW9yeV9idWZmZXItPkdldFNpemUoKSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2lu LCBhbHBoYV90eXBlLAorLSAgICAgICAgICB1c2FnZSksCisrICAgICAgICAgIHVzYWdlfSwKKyAg ICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhvbGRlcl8pOworIH0KKyAKK0BAIC0zMzQs MTMgKzMzNCwxMyBAQCBDbGllbnRTaGFyZWRJbWFnZUludGVyZmFjZTo6Q3JlYXRlU3dhcENoCisg ICByZXR1cm4gQ2xpZW50U2hhcmVkSW1hZ2VJbnRlcmZhY2U6OlN3YXBDaGFpblNoYXJlZEltYWdl cygKKyAgICAgICBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCisgICAg ICAgICAgIG1haWxib3hlcy5mcm9udF9idWZmZXIsCistICAgICAgICAgIENsaWVudFNoYXJlZElt YWdlOjpNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdl KSwKKysgICAgICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwg Y29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAorICAgICAgICAgICBzeW5jX3Rva2VuLCBo b2xkZXJfKSwKKyAgICAgICBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4o CisgICAgICAgICAgIG1haWxib3hlcy5iYWNrX2J1ZmZlciwKKy0gICAgICAgICAgQ2xpZW50U2hh cmVkSW1hZ2U6Ok1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3Jp Z2luLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwg dXNhZ2UpLAorKyAgICAgICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBz aXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZX0sCisgICAgICAgICAgIHN5bmNfdG9r ZW4sIGhvbGRlcl8pKTsKKyB9CisgCitAQCAtMzgwLDggKzM4MCw4IEBAIENsaWVudFNoYXJlZElt YWdlSW50ZXJmYWNlOjpBZGRSZWZlcmVuY2UKKyAKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291 bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCisgICAgICAgbWFpbGJveCwKKy0gICAgICBDbGllbnRT aGFyZWRJbWFnZTo6TWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9v cmlnaW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVz YWdlKSwKKysgICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBj b2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKKyAgICAgICBzeW5jX3Rva2VuLCBob2xkZXJfKTsK KyB9CisgCitAQCAtNDAyLDggKzQwMiw4IEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1h Z2U+IENsaWVudFMKKyAKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFy ZWRJbWFnZT4oCisgICAgICAgbWFpbGJveCwKKy0gICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0 YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCistICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysgICAgICBD bGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3Vy ZmFjZV9vcmlnaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5 cGUsIHVzYWdlfSwKKyAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhvbGRlcl8pOwor IH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvZ3B1L2NvbW1hbmRfYnVmZmVy L2NsaWVudC9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjLm1lIGNocm9taXVtLTEyMy4wLjYzMTIu NDYvZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjCist LS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9ncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L3NoYXJl ZF9pbWFnZV9pbnRlcmZhY2UuY2MubWUJMjAyNC0wMy0xNiAxODo1OToyMC4xNzU4ODI4OTQgKzAx MDAKKysrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2dwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQv c2hhcmVkX2ltYWdlX2ludGVyZmFjZS5jYwkyMDI0LTAzLTE2IDE5OjAzOjA1LjAwMTc1NDYwOSAr MDEwMAorQEAgLTQxLDggKzQxLDggQEAgc2NvcGVkX3JlZnB0cjxDbGllbnRTaGFyZWRJbWFnZT4g U2hhcmVkSQorICAgTk9UUkVBQ0hFRCgpOworICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVk PENsaWVudFNoYXJlZEltYWdlPigKKyAgICAgICBNYWlsYm94KCksCistICAgICAgQ2xpZW50U2hh cmVkSW1hZ2U6Ok1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3Jp Z2luLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2Fn ZSksCisrICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29s b3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhbHBoYV90eXBlLCB1c2FnZX0sCisgICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigp LCBob2xkZXJfKTsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2dwdS9j b21tYW5kX2J1ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZV9pbnRlcmZhY2VfaW5fcHJvY2Vzcy5j Yy5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL3No YXJlZF9pbWFnZV9pbnRlcmZhY2VfaW5fcHJvY2Vzcy5jYworLS0tIGNocm9taXVtLTEyMy4wLjYz MTIuNDYvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlX2ludGVyZmFjZV9p bl9wcm9jZXNzLmNjLm1lCTIwMjQtMDMtMTYgMTk6MDY6MzIuMTAyMzMwMTU1ICswMTAwCisrKysg Y2hyb21pdW0tMTIzLjAuNjMxMi40Ni9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRf aW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nlc3MuY2MJMjAyNC0wMy0xNiAxOToxMTo1OS42MjcwMDgw NjMgKzAxMDAKK0BAIC0yMzgsOCArMjM4LDggQEAgU2hhcmVkSW1hZ2VJbnRlcmZhY2VJblByb2Nl c3M6OkNyZWF0ZVNoYQorICAgfQorICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVu dFNoYXJlZEltYWdlPigKKyAgICAgICBtYWlsYm94LAorLSAgICAgIENsaWVudFNoYXJlZEltYWdl OjpNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAorKyAg ICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNl LCBzdXJmYWNlX29yaWdpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxw aGFfdHlwZSwgdXNhZ2V9LAorICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVy Xyk7CisgfQorIAorQEAgLTMwMSw4ICszMDEsOCBAQCBTaGFyZWRJbWFnZUludGVyZmFjZUluUHJv Y2Vzczo6Q3JlYXRlU2hhCisgICB9CisgICByZXR1cm4gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xp ZW50U2hhcmVkSW1hZ2U+KAorICAgICAgIG1haWxib3gsCistICAgICAgQ2xpZW50U2hhcmVkSW1h Z2U6Ok1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCisr ICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3Bh Y2UsIHN1cmZhY2Vfb3JpZ2luLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh bHBoYV90eXBlLCB1c2FnZX0sCisgICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xk ZXJfKTsKKyB9CisgCitAQCAtMzY1LDggKzM2NSw4IEBAIFNoYXJlZEltYWdlSW50ZXJmYWNlSW5Q cm9jZXNzOjpDcmVhdGVTaGEKKyAKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGll bnRTaGFyZWRJbWFnZT4oCisgICAgICAgbWFpbGJveCwKKy0gICAgICBDbGllbnRTaGFyZWRJbWFn ZTo6TWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysg ICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFj ZSwgc3VyZmFjZV9vcmlnaW4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs cGhhX3R5cGUsIHVzYWdlfSwKKyAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIEdldEdw dU1lbW9yeUJ1ZmZlckhhbmRsZUluZm8obWFpbGJveCksIGhvbGRlcl8pOworIH0KKyAKK0BAIC00 ODEsOCArNDgxLDggQEAgU2hhcmVkSW1hZ2VJbnRlcmZhY2VJblByb2Nlc3M6OkNyZWF0ZVNoYQor IAorICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKKyAg ICAgICBtYWlsYm94LAorLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YShmb3JtYXQs IHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAorKyAgICAgIENsaWVudFNoYXJlZElt YWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAor ICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwKKyAgICAgICBHcHVNZW1vcnlCdWZmZXJI YW5kbGVJbmZvKHN0ZDo6bW92ZShjbGllbnRfYnVmZmVyX2hhbmRsZSksIGZvcm1hdCwgc2l6ZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl91c2FnZSksCitAQCAtNTI0 LDggKzUyNCw4IEBAIFNoYXJlZEltYWdlSW50ZXJmYWNlSW5Qcm9jZXNzOjpDcmVhdGVTaGEKKyAK KyAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCisgICAg ICAgbWFpbGJveCwKKy0gICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGEoZm9ybWF0LCBz aXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysgICAgICBDbGllbnRTaGFyZWRJbWFn ZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKKyAg ICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhvbGRlcl8pOworIH0KKyBTaGFyZWRJbWFn ZUludGVyZmFjZTo6U2hhcmVkSW1hZ2VNYXBwaW5nCitAQCAtNTg5LDggKzU4OSw4IEBAIFNoYXJl ZEltYWdlSW50ZXJmYWNlSW5Qcm9jZXNzOjpDcmVhdGVTaGEKKyAgIH0KKyAgIHNoYXJlZF9pbWFn ZV9tYXBwaW5nLnNoYXJlZF9pbWFnZSA9IGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJl ZEltYWdlPigKKyAgICAgICBtYWlsYm94LAorLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRh ZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAorKyAgICAgIENs aWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJm YWNlX29yaWdpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlw ZSwgdXNhZ2V9LAorICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7Cisg CisgICByZXR1cm4gc2hhcmVkX2ltYWdlX21hcHBpbmc7CitAQCAtNjY0LDEwICs2NjQsMTAgQEAg U2hhcmVkSW1hZ2VJbnRlcmZhY2VJblByb2Nlc3M6OkNyZWF0ZVNoYQorIAorICAgcmV0dXJuIGJh c2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKKyAgICAgICBtYWlsYm94LAor LSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YSgKKysgICAgICBDbGllbnRTaGFyZWRJ bWFnZTo6TWV0YWRhdGF7CisgICAgICAgICAgIHZpejo6R2V0U2luZ2xlUGxhbmVTaGFyZWRJbWFn ZUZvcm1hdChncHVfbWVtb3J5X2J1ZmZlci0+R2V0Rm9ybWF0KCkpLAorICAgICAgICAgICBncHVf bWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sIGFs cGhhX3R5cGUsCistICAgICAgICAgIHVzYWdlKSwKKysgICAgICAgICAgdXNhZ2V9LAorICAgICAg IEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7CisgfQorIAorZGlmZiAtdXAgY2hy b21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvYXR0cmlidXRpb25fcmVwb3J0aW5n L2F0dHJpYnV0aW9uX21hbmFnZXJfaW1wbC5jYy5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Nv bnRlbnQvYnJvd3Nlci9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcvYXR0cmlidXRpb25fbWFuYWdlcl9p bXBsLmNjCistLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvYXR0cmli dXRpb25fcmVwb3J0aW5nL2F0dHJpYnV0aW9uX21hbmFnZXJfaW1wbC5jYy5tZQkyMDI0LTAzLTE3 IDAwOjQyOjMxLjE4MzIyNjIxMSArMDEwMAorKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29u dGVudC9icm93c2VyL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9hdHRyaWJ1dGlvbl9tYW5hZ2VyX2lt cGwuY2MJMjAyNC0wMy0xNyAwMDo1NTo1Ni42ODk1MTI0MzAgKzAxMDAKK0BAIC0xNTA3LDcgKzE1 MDcsNyBAQCB2b2lkIEF0dHJpYnV0aW9uTWFuYWdlckltcGw6OlByZXBhcmVOZXh0CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyRnJhbWVIb3N0OjpGcm9tSUQoZXZlbnQucmVuZGVy X2ZyYW1lX2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Vfb3JpZ2luLCBk ZXN0aW5hdGlvbl9vcmlnaW4sICZyZXBvcnRpbmdfb3JpZ2luLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZjYW5fYnlwYXNzX2Nvb2tpZV9jaGVjaykpIHsKKy0gICAgICBuZWVkX3RvX2No ZWNrX2Nvb2tpZS5lbXBsYWNlX2JhY2sodXJsOjpPcmlnaW46OkNyZWF0ZShpdGVtLnVybCksIGkp OworKyAgICAgIG5lZWRfdG9fY2hlY2tfY29va2llLmVtcGxhY2VfYmFjaygpID0ge3VybDo6T3Jp Z2luOjpDcmVhdGUoaXRlbS51cmwpLCBpfTsKKyAgICAgfSBlbHNlIHsKKyAgICAgICBhbGxvd2Vk LmF0KGkpID0gY2FuX2J5cGFzc19jb29raWVfY2hlY2s7CisgICAgIH0KK2RpZmYgLXVwIGNocm9t aXVtLTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0 X2dyb3VwX3N0b3JhZ2UuY2MubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dz ZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYworLS0tIGNocm9taXVt LTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dy b3VwX3N0b3JhZ2UuY2MubWUJMjAyNC0wMy0xNyAwMDoyNDo0MS40MjA4Mzc4ODQgKzAxMDAKKysr KyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9p bnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCTIwMjQtMDMtMTcgMDA6MjY6NDAuMjczMzY0NjM4ICsw MTAwCitAQCAtMzk5Myw3ICszOTkzLDcgQEAgRG9HZXRCaWRkaW5nQW5kQXVjdGlvblNlcnZlcktl eXMoc3FsOjpEYQorICAgICBzdGQ6OnZlY3RvcjxCaWRkaW5nQW5kQXVjdGlvblNlcnZlcktleT4g a2V5czsKKyAgICAga2V5cy5yZXNlcnZlKGtleV9wcm90b3Mua2V5c19zaXplKCkpOworICAgICBm b3IgKGF1dG8mIGtleV9wcm90byA6ICprZXlfcHJvdG9zLm11dGFibGVfa2V5cygpKSB7CistICAg ICAga2V5cy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKCprZXlfcHJvdG8ubXV0YWJsZV9rZXkoKSks IGtleV9wcm90by5pZCgpKTsKKysgICAgICBrZXlzLmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92 ZSgqa2V5X3Byb3RvLm11dGFibGVfa2V5KCkpLCBrZXlfcHJvdG8uaWQoKX07CisgICAgIH0KKyAg ICAgcmV0dXJuIHtleHBpcmF0aW9uLCBrZXlzfTsKKyAgIH0KCmRpZmYgLS1naXQgYS9jaHJvbWl1 bS0xMjMtcHl0aG9uMy1hc3NpZ25tZW50LWV4cHJlc3Npb25zLnBhdGNoIGIvY2hyb21pdW0tMTIz LXB5dGhvbjMtYXNzaWdubWVudC1leHByZXNzaW9ucy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5iYjBkZjhjCi0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTIz LXB5dGhvbjMtYXNzaWdubWVudC1leHByZXNzaW9ucy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitk aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjU3L3Rvb2xzL2pzb25fdG9fc3RydWN0L2pzb25f dG9fc3RydWN0LnB5Lm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNTcvdG9vbHMvanNvbl90b19zdHJ1 Y3QvanNvbl90b19zdHJ1Y3QucHkKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjU3L3Rvb2xzL2pz b25fdG9fc3RydWN0L2pzb25fdG9fc3RydWN0LnB5Lm1lCTIwMjQtMDItMjMgMTI6MDQ6NDUuNDUx NDIzOTk1ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS41Ny90b29scy9qc29uX3RvX3N0 cnVjdC9qc29uX3RvX3N0cnVjdC5weQkyMDI0LTAyLTIzIDEyOjE4OjA0LjA5OTgyNDM5MiArMDEw MAorQEAgLTEyNCw3ICsxMjQsOCBAQCBkZWYgX0dlbmVyYXRlSChiYXNlcGF0aCwgZmlsZXJvb3Qs IGhlYWQsCisgICAgIGYud3JpdGUodScjaW5jbHVkZSA8Y3N0ZGRlZj5cbicpCisgICAgIGYud3Jp dGUodSdcbicpCisgCistICAgIGlmIHN5c3RlbV9oZWFkZXJzIDo9IHNjaGVtYS5nZXQodSdzeXN0 ZW0taGVhZGVycycsIFtdKToKKysgICAgc3lzdGVtX2hlYWRlcnMgPSBzY2hlbWEuZ2V0KHUnc3lz dGVtLWhlYWRlcnMnLCBbXSkKKysgICAgaWYgc3lzdGVtX2hlYWRlcnM6CisgICAgICAgZm9yIGhl YWRlciBpbiBzeXN0ZW1faGVhZGVyczoKKyAgICAgICAgIGYud3JpdGUodScjaW5jbHVkZSA8JXM+ XG4nICUgaGVhZGVyKQorICAgICAgIGYud3JpdGUodSdcbicpCitkaWZmIC11cCBjaHJvbWl1bS0x MjMuMC42MzEyLjQ2L3Rvb2xzL21ldHJpY3MvaGlzdG9ncmFtcy9leHBhbmRfb3duZXJzLnB5Lm1l IGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdG9vbHMvbWV0cmljcy9oaXN0b2dyYW1zL2V4cGFuZF9v d25lcnMucHkKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3Rvb2xzL21ldHJpY3MvaGlzdG9n cmFtcy9leHBhbmRfb3duZXJzLnB5Lm1lCTIwMjQtMDMtMTggMTQ6NDA6NTcuODcxOTA0MjA5ICsw MTAwCisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90b29scy9tZXRyaWNzL2hpc3RvZ3JhbXMv ZXhwYW5kX293bmVycy5weQkyMDI0LTAzLTE4IDE0OjQ3OjEyLjIzODkwNzE0NiArMDEwMAorQEAg LTIwOSw4ICsyMDksOCBAQCBkZWYgX0NvbXBvbmVudEZyb21EaXJtZChqc29uX2RhdGEsIHN1YnBh CisgICAiIiIKKyAgIGRpcm1kID0ganNvbl9kYXRhLmdldCgnZGlycycsIHt9KS5nZXQoc3VicGF0 aCwge30pCisgICAjIElmIGEgcHVibGljIEJ1Z2FuaXplciBjb21wb25lbnQgaXMgbGlzdGVkLCBy ZXR1cm4gaXRzIGNvbXBvbmVudCBJRC4KKy0gIGlmIGJ1Z2FuaXplcl9jb21wb25lbnQgOj0gZGly bWQuZ2V0KCdidWdhbml6ZXJQdWJsaWMnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAge30pLmdldCgnY29tcG9uZW50SWQnLCAnJyk6CisrICBidWdhbml6ZXJfY29tcG9u ZW50ID0gZGlybWQuZ2V0KCdidWdhbml6ZXJQdWJsaWMnLHt9KS5nZXQoJ2NvbXBvbmVudElkJywg JycpCisrICBpZiBidWdhbml6ZXJfY29tcG9uZW50OgorICAgICByZXR1cm4gYnVnYW5pemVyX2Nv bXBvbmVudAorICAgIyBJZiBubyBjb21wb25lbnQgZXhpc3RzIGZvciB0aGUgZGlyZWN0b3J5LCBv ciBpZiBNRVRBREFUQSBtaWdyYXRpb24gaXMKKyAgICMgaW5jb21wbGV0ZSB0aGVyZSB3aWxsIGJl IG5vIGNvbXBvbmVudCBpbmZvcm1hdGlvbi4KCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjMtcnVz dC1jbGFwX2xleC5wYXRjaCBiL2Nocm9taXVtLTEyMy1ydXN0LWNsYXBfbGV4LnBhdGNoCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYmQxOTQKLS0tIC9kZXYvbnVsbAorKysg Yi9jaHJvbWl1bS0xMjMtcnVzdC1jbGFwX2xleC5wYXRjaApAQCAtMCwwICsxLDEzMyBAQAorZGlm ZiAtTnVyIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL2NsYXBfbGV4LTAuNy4wL3NyYy9leHQucnMubWUgY2hyb21pdW0tMTIz LjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvY2xh cF9sZXgtMC43LjAvc3JjL2V4dC5ycworLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL2NsYXBfbGV4LTAuNy4wL3NyYy9l eHQucnMubWUJMjAyNC0wMy0xMyAyMDozNjoxNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1 bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRv ci9jbGFwX2xleC0wLjcuMC9zcmMvZXh0LnJzCTIwMjQtMDMtMTMgMDA6Mzg6MTguMDAwMDAwMDAw ICswMTAwCitAQCAtMiw5ICsyLDYgQEAKKyAKKyBwdWIgdHJhaXQgT3NTdHJFeHQ6IHByaXZhdGU6 OlNlYWxlZCB7CisgICAgIC8vLyBDb252ZXJ0cyB0byBhIHN0cmluZyBzbGljZS4KKy0gICAgLy8v CistICAgIC8vLyBUaGUgVXRmOEVycm9yIGlzIGd1YXJhbnRlZWQgdG8gaGF2ZSBhIHZhbGlkIFVU RjggYm91bmRhcnkKKy0gICAgLy8vIGluIGl0cyBgdmFsaWRfdXBfdG8oKWAKKyAgICAgZm4gdHJ5 X3N0cigmc2VsZikgLT4gUmVzdWx0PCZzdHIsIHN0ZDo6c3RyOjpVdGY4RXJyb3I+OworICAgICAv Ly8gUmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGdpdmVuIHBhdHRlcm4gbWF0Y2hlcyBhIHN1Yi1zbGlj ZSBvZgorICAgICAvLy8gdGhpcyBzdHJpbmcgc2xpY2UuCitAQCAtMTgzLDcgKzE4MCw3IEBACisg CisgaW1wbCBPc1N0ckV4dCBmb3IgT3NTdHIgeworICAgICBmbiB0cnlfc3RyKCZzZWxmKSAtPiBS ZXN1bHQ8JnN0ciwgc3RkOjpzdHI6OlV0ZjhFcnJvcj4geworLSAgICAgICAgbGV0IGJ5dGVzID0g c2VsZi5hc19lbmNvZGVkX2J5dGVzKCk7CisrICAgICAgICBsZXQgYnl0ZXMgPSB0b19ieXRlcyhz ZWxmKTsKKyAgICAgICAgIHN0ZDo6c3RyOjpmcm9tX3V0ZjgoYnl0ZXMpCisgICAgIH0KKyAKK0BA IC0xOTIsMjIgKzE4OSwyMiBAQAorICAgICB9CisgCisgICAgIGZuIGZpbmQoJnNlbGYsIG5lZWRs ZTogJnN0cikgLT4gT3B0aW9uPHVzaXplPiB7CistICAgICAgICBsZXQgYnl0ZXMgPSBzZWxmLmFz X2VuY29kZWRfYnl0ZXMoKTsKKysgICAgICAgIGxldCBieXRlcyA9IHRvX2J5dGVzKHNlbGYpOwor ICAgICAgICAgKDAuLj1zZWxmLmxlbigpLmNoZWNrZWRfc3ViKG5lZWRsZS5sZW4oKSk/KQorICAg ICAgICAgICAgIC5maW5kKHwmeHwgYnl0ZXNbeC4uXS5zdGFydHNfd2l0aChuZWVkbGUuYXNfYnl0 ZXMoKSkpCisgICAgIH0KKyAKKyAgICAgZm4gc3RyaXBfcHJlZml4KCZzZWxmLCBwcmVmaXg6ICZz dHIpIC0+IE9wdGlvbjwmT3NTdHI+IHsKKy0gICAgICAgIGxldCBieXRlcyA9IHNlbGYuYXNfZW5j b2RlZF9ieXRlcygpOworKyAgICAgICAgbGV0IGJ5dGVzID0gdG9fYnl0ZXMoc2VsZik7CisgICAg ICAgICBieXRlcy5zdHJpcF9wcmVmaXgocHJlZml4LmFzX2J5dGVzKCkpLm1hcCh8c3wgeworICAg ICAgICAgICAgIC8vIFNBRkVUWToKKy0gICAgICAgICAgICAvLyAtIFRoaXMgY2FtZSBmcm9tIGBh c19lbmNvZGVkX2J5dGVzYAorLSAgICAgICAgICAgIC8vIC0gU2luY2UgYHByZWZpeGAgaXMgYCZz dHJgLCBhbnkgc3BsaXQgd2lsbCBiZSBhbG9uZyBVVEYtOCBib3VuZGFyeQorLSAgICAgICAgICAg IHVuc2FmZSB7IE9zU3RyOjpmcm9tX2VuY29kZWRfYnl0ZXNfdW5jaGVja2VkKHMpIH0KKysgICAg ICAgICAgICAvLyAtIFRoaXMgY2FtZSBmcm9tIGB0b19ieXRlc2AKKysgICAgICAgICAgICAvLyAt IFNpbmNlIGBwcmVmaXhgIGlzIGAmc3RyYCwgYW55IHNwbGl0IHdpbGwgYmUgYWxvbmcgVVRGLTgg Ym91bmRhcmllCisrICAgICAgICAgICAgdW5zYWZlIHsgdG9fb3Nfc3RyX3VuY2hlY2tlZChzKSB9 CisgICAgICAgICB9KQorICAgICB9CisgICAgIGZuIHN0YXJ0c193aXRoKCZzZWxmLCBwcmVmaXg6 ICZzdHIpIC0+IGJvb2wgeworLSAgICAgICAgbGV0IGJ5dGVzID0gc2VsZi5hc19lbmNvZGVkX2J5 dGVzKCk7CisrICAgICAgICBsZXQgYnl0ZXMgPSB0b19ieXRlcyhzZWxmKTsKKyAgICAgICAgIGJ5 dGVzLnN0YXJ0c193aXRoKHByZWZpeC5hc19ieXRlcygpKQorICAgICB9CisgCitAQCAtMjIyLDE4 ICsyMTksMTMgQEAKKyAgICAgZm4gc3BsaXRfb25jZSgmc2VsZiwgbmVlZGxlOiAmJ18gc3RyKSAt PiBPcHRpb248KCZPc1N0ciwgJk9zU3RyKT4geworICAgICAgICAgbGV0IHN0YXJ0ID0gc2VsZi5m aW5kKG5lZWRsZSk/OworICAgICAgICAgbGV0IGVuZCA9IHN0YXJ0ICsgbmVlZGxlLmxlbigpOwor LSAgICAgICAgbGV0IGhheXN0YWNrID0gc2VsZi5hc19lbmNvZGVkX2J5dGVzKCk7CisrICAgICAg ICBsZXQgaGF5c3RhY2sgPSB0b19ieXRlcyhzZWxmKTsKKyAgICAgICAgIGxldCBmaXJzdCA9ICZo YXlzdGFja1swLi5zdGFydF07CisgICAgICAgICBsZXQgc2Vjb25kID0gJmhheXN0YWNrW2VuZC4u XTsKKyAgICAgICAgIC8vIFNBRkVUWToKKy0gICAgICAgIC8vIC0gVGhpcyBjYW1lIGZyb20gYGFz X2VuY29kZWRfYnl0ZXNgCistICAgICAgICAvLyAtIFNpbmNlIGBuZWVkbGVgIGlzIGAmc3RyYCwg YW55IHNwbGl0IHdpbGwgYmUgYWxvbmcgVVRGLTggYm91bmRhcnkKKy0gICAgICAgIHVuc2FmZSB7 CistICAgICAgICAgICAgU29tZSgoCistICAgICAgICAgICAgICAgIE9zU3RyOjpmcm9tX2VuY29k ZWRfYnl0ZXNfdW5jaGVja2VkKGZpcnN0KSwKKy0gICAgICAgICAgICAgICAgT3NTdHI6OmZyb21f ZW5jb2RlZF9ieXRlc191bmNoZWNrZWQoc2Vjb25kKSwKKy0gICAgICAgICAgICApKQorLSAgICAg ICAgfQorKyAgICAgICAgLy8gLSBUaGlzIGNhbWUgZnJvbSBgdG9fYnl0ZXNgCisrICAgICAgICAv LyAtIFNpbmNlIGBuZWVkbGVgIGlzIGAmc3RyYCwgYW55IHNwbGl0IHdpbGwgYmUgYWxvbmcgVVRG LTggYm91bmRhcmllCisrICAgICAgICB1bnNhZmUgeyBTb21lKCh0b19vc19zdHJfdW5jaGVja2Vk KGZpcnN0KSwgdG9fb3Nfc3RyX3VuY2hlY2tlZChzZWNvbmQpKSkgfQorICAgICB9CisgfQorIAor QEAgLTI0Myw2ICsyMzUsNDUgQEAKKyAgICAgaW1wbCBTZWFsZWQgZm9yIHN0ZDo6ZmZpOjpPc1N0 ciB7fQorIH0KKyAKKysvLy8gQWxsb3cgYWNjZXNzIHRvIHJhdyBieXRlcworKy8vLworKy8vLyBB cyB0aGUgbm9uLVVURjggZW5jb2RpbmcgaXMgbm90IGRlZmluZWQsIHRoZSBieXRlcyBvbmx5IG1h a2Ugc2Vuc2Ugd2hlbiBjb21wYXJlZCB3aXRoCisrLy8vIDctYml0IEFTQ0lJIG9yIGAmc3RyYAor Ky8vLworKy8vLyAjIENvbXBhdGliaWxpdHkKKysvLy8KKysvLy8gVGhlcmUgaXMgbm8gZ3VhcmFu dGVlIGhvdyBub24tVVRGOCBieXRlcyB3aWxsIGJlIGVuY29kZWQsIGV2ZW4gd2l0aGluIHZlcnNp b25zIG9mIHRoaXMgY3JhdGUKKysvLy8gKHNpbmNlIGl0cyBkZXBlbmRlbnQgb24gcnVzdGMpCisr Zm4gdG9fYnl0ZXMoczogJk9zU3RyKSAtPiAmW3U4XSB7CisrICAgIC8vIFNBRkVUWToKKysgICAg Ly8gLSBMaWZldGltZXMgYXJlIHRoZSBzYW1lCisrICAgIC8vIC0gVHlwZXMgYXJlIGNvbXBhdGli bGUgKGBPc1N0cmAgaXMgZWZmZWN0aXZlbHkgYSB0cmFuc3BhcmVudCB3cmFwcGVyIGZvciBgW3U4 XWApCisrICAgIC8vIC0gVGhlIHByaW1hcnkgY29udHJhY3QgaXMgdGhhdCB0aGUgZW5jb2Rpbmcg Zm9yIGludmFsaWQgc3Vycm9nYXRlIGNvZGUgcG9pbnRzIGlzIG5vdAorKyAgICAvLyAgIGd1YXJh bnRlZWQgd2hpY2ggaXNuJ3QgYSBwcm9ibGVtIGhlcmUKKysgICAgLy8KKysgICAgLy8gVGhlcmUg aXMgYSBwcm9wb3NhbCB0byBzdXBwb3J0IHRoaXMgbmF0aXZlbHkgKGh0dHBzOi8vZ2l0aHViLmNv bS9ydXN0LWxhbmcvcnVzdC9wdWxsLzk1MjkwKQorKyAgICAvLyBidXQgaXRzIGluIGxpbWJvCisr ICAgIHVuc2FmZSB7IHN0ZDo6bWVtOjp0cmFuc211dGUocykgfQorK30KKysKKysvLy8gUmVzdG9y ZSByYXcgYnl0ZXMgYXMgYE9zU3RyYAorKy8vLworKy8vLyAjIFNhZmV0eQorKy8vLworKy8vLyAt IGAmW3U4XWAgbXVzdCBlaXRoZXIgYnkgYSBgJnN0cmAgb3Igb3JpZ2luYXRlZCB3aXRoIGB0b19i eXRlc2Agd2l0aGluIHRoZSBzYW1lIGJpbmFyeQorKy8vLyAtIEFueSBzcGxpdHMgb2YgdGhlIG9y aWdpbmFsIGAmW3U4XWAgbXVzdCBiZSBkb25lIGFsb25nIFVURi04IGJvdW5kYXJpZXMKKyt1bnNh ZmUgZm4gdG9fb3Nfc3RyX3VuY2hlY2tlZChzOiAmW3U4XSkgLT4gJk9zU3RyIHsKKysgICAgLy8g U0FGRVRZOgorKyAgICAvLyAtIExpZmV0aW1lcyBhcmUgdGhlIHNhbWUKKysgICAgLy8gLSBUeXBl cyBhcmUgY29tcGF0aWJsZSAoYE9zU3RyYCBpcyBlZmZlY3RpdmVseSBhIHRyYW5zcGFyZW50IHdy YXBwZXIgZm9yIGBbdThdYCkKKysgICAgLy8gLSBUaGUgcHJpbWFyeSBjb250cmFjdCBpcyB0aGF0 IHRoZSBlbmNvZGluZyBmb3IgaW52YWxpZCBzdXJyb2dhdGUgY29kZSBwb2ludHMgaXMgbm90Cisr ICAgIC8vICAgZ3VhcmFudGVlZCB3aGljaCBpc24ndCBhIHByb2JsZW0gaGVyZQorKyAgICAvLwor KyAgICAvLyBUaGVyZSBpcyBhIHByb3Bvc2FsIHRvIHN1cHBvcnQgdGhpcyBuYXRpdmVseSAoaHR0 cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy9ydXN0L3B1bGwvOTUyOTApCisrICAgIC8vIGJ1dCBp dHMgaW4gbGltYm8KKysgICAgc3RkOjptZW06OnRyYW5zbXV0ZShzKQorK30KKysKKyBwdWIgc3Ry dWN0IFNwbGl0PCdzLCAnbj4geworICAgICBoYXlzdGFjazogT3B0aW9uPCYncyBPc1N0cj4sCisg ICAgIG5lZWRsZTogJiduIHN0ciwKK0BAIC0yNzUsMTAgKzMwNiw3IEBACisgLy8vCisgLy8vIGBp bmRleGAgbXVzdCBiZSBhdCBhIHZhbGlkIFVURi04IGJvdW5kYXJ5CisgcHViKGNyYXRlKSB1bnNh ZmUgZm4gc3BsaXRfYXQob3M6ICZPc1N0ciwgaW5kZXg6IHVzaXplKSAtPiAoJk9zU3RyLCAmT3NT dHIpIHsKKy0gICAgbGV0IGJ5dGVzID0gb3MuYXNfZW5jb2RlZF9ieXRlcygpOworKyAgICBsZXQg Ynl0ZXMgPSB0b19ieXRlcyhvcyk7CisgICAgIGxldCAoZmlyc3QsIHNlY29uZCkgPSBieXRlcy5z cGxpdF9hdChpbmRleCk7CistICAgICgKKy0gICAgICAgIE9zU3RyOjpmcm9tX2VuY29kZWRfYnl0 ZXNfdW5jaGVja2VkKGZpcnN0KSwKKy0gICAgICAgIE9zU3RyOjpmcm9tX2VuY29kZWRfYnl0ZXNf dW5jaGVja2VkKHNlY29uZCksCistICAgICkKKysgICAgKHRvX29zX3N0cl91bmNoZWNrZWQoZmly c3QpLCB0b19vc19zdHJfdW5jaGVja2VkKHNlY29uZCkpCisgfQoKZGlmZiAtLWdpdCBhL2Nocm9t aXVtLTEyMy10eXBlbmFtZS5wYXRjaCBiL2Nocm9taXVtLTEyMy10eXBlbmFtZS5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZWJiZDE4Ci0tLSAvZGV2L251bGwKKysr IGIvY2hyb21pdW0tMTIzLXR5cGVuYW1lLnBhdGNoCkBAIC0wLDAgKzEsNDA2IEBACisKK2ZpeGVk IGVycm9yOiBtaXNzaW5nICd0eXBlbmFtZScgcHJpb3IgdG8gZGVwZW5kZW50IHR5cGUgbmFtZQor CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvY29udGFpbmVycy9tYXBfdXRp bC5oLnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJzL21hcF91 dGlsLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvY29udGFpbmVycy9tYXBfdXRp bC5oLnR5cGVuYW1lCTIwMjQtMDItMjIgMjI6NDI6NDMuMDAwMDAwMDAwICswMTAwCisrKysgY2hy b21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2NvbnRhaW5lcnMvbWFwX3V0aWwuaAkyMDI0LTAyLTI0 IDE1OjA1OjAwLjg4MjU5MjcwNSArMDEwMAorQEAgLTQyLDcgKzQyLDcgQEAgY29uc3RleHByIGlu dGVybmFsOjpNYXBwZWRUeXBlPE1hcD4qIEZpbgorIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsCisg ICAgICAgICAgIHR5cGVuYW1lIEtleSwKKyAgICAgICAgICAgdHlwZW5hbWUgTWFwcGVkRWxlbWVu dFR5cGUgPQorLSAgICAgICAgICAgICAgc3RkOjpwb2ludGVyX3RyYWl0czxpbnRlcm5hbDo6TWFw cGVkVHlwZTxNYXA+Pjo6ZWxlbWVudF90eXBlPgorKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3Rk Ojpwb2ludGVyX3RyYWl0czxpbnRlcm5hbDo6TWFwcGVkVHlwZTxNYXA+Pjo6ZWxlbWVudF90eXBl PgorIGNvbnN0ZXhwciBjb25zdCBNYXBwZWRFbGVtZW50VHlwZSogRmluZFB0ck9yTnVsbChjb25z dCBNYXAmIG1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgS2V5JiBrZXkpIHsKKyAgIGF1dG8gaXQgPSBtYXAuZmluZChrZXkpOworQEAg LTU4LDcgKzU4LDcgQEAgY29uc3RleHByIGNvbnN0IE1hcHBlZEVsZW1lbnRUeXBlKiBGaW5kUAor IHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsCisgICAgICAgICAgIHR5cGVuYW1lIEtleSwKKyAgICAg ICAgICAgdHlwZW5hbWUgTWFwcGVkRWxlbWVudFR5cGUgPQorLSAgICAgICAgICAgICAgc3RkOjpw b2ludGVyX3RyYWl0czxpbnRlcm5hbDo6TWFwcGVkVHlwZTxNYXA+Pjo6ZWxlbWVudF90eXBlPgor KyAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpwb2ludGVyX3RyYWl0czxpbnRlcm5hbDo6TWFw cGVkVHlwZTxNYXA+Pjo6ZWxlbWVudF90eXBlPgorIGNvbnN0ZXhwciBNYXBwZWRFbGVtZW50VHlw ZSogRmluZFB0ck9yTnVsbChNYXAmIG1hcCwgY29uc3QgS2V5JiBrZXkpIHsKKyAgIGF1dG8gaXQg PSBtYXAuZmluZChrZXkpOworICAgcmV0dXJuIGl0ICE9IG1hcC5lbmQoKSA/IHN0ZDo6dG9fYWRk cmVzcyhpdC0+c2Vjb25kKSA6IG51bGxwdHI7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Jhc2UvZnVuY3Rpb25hbC9iaW5kX2ludGVybmFsLmgudHlwZW5hbWUgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9iYXNlL2Z1bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5oCistLS0gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9iYXNlL2Z1bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5oLnR5cGVuYW1lCTIw MjQtMDItMjQgMTU6MDU6MDAuODgzNTkyNzI0ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9iYXNlL2Z1bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5oCTIwMjQtMDItMjQgMTU6MTM6NDku NzU1MjIzNTMzICswMTAwCitAQCAtMTQwMCwxMSArMTQwMCwxMSBAQCB0ZW1wbGF0ZSA8aW50IGks CisgICAgICAgICAgIHR5cGVuYW1lIFBhcmFtPgorIHN0cnVjdCBQYXJhbUNhbkJlQm91bmQgewor ICBwcml2YXRlOgorLSAgdXNpbmcgVW53cmFwcGVkUGFyYW0gPSBCaW5kQXJndW1lbnQ8aT46OnRl bXBsYXRlIEZvcndhcmRlZEFzPAorKyAgdXNpbmcgVW53cmFwcGVkUGFyYW0gPSB0eXBlbmFtZSBC aW5kQXJndW1lbnQ8aT46OnRlbXBsYXRlIEZvcndhcmRlZEFzPAorICAgICAgIFVud3JhcHBlZD46 OnRlbXBsYXRlIFRvUGFyYW1XaXRoVHlwZTxQYXJhbT47CistICB1c2luZyBQYXJhbVN0b3JhZ2Ug PSBCaW5kQXJndW1lbnQ8aT46OnRlbXBsYXRlIFRvUGFyYW1XaXRoVHlwZTwKKysgIHVzaW5nIFBh cmFtU3RvcmFnZSA9IHR5cGVuYW1lIEJpbmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgVG9QYXJhbVdp dGhUeXBlPAorICAgICAgIFBhcmFtPjo6dGVtcGxhdGUgU3RvcmVkQXM8U3RvcmFnZT47CistICB1 c2luZyBCb3VuZFN0b3JhZ2UgPQorKyAgdXNpbmcgQm91bmRTdG9yYWdlID0gdHlwZW5hbWUKKyAg ICAgICBCaW5kQXJndW1lbnQ8aT46OnRlbXBsYXRlIEJvdW5kQXM8QXJnPjo6dGVtcGxhdGUgU3Rv cmVkQXM8U3RvcmFnZT47CisgCisgICB0ZW1wbGF0ZSA8Ym9vbCB2ID0gIVVud3JhcHBlZFBhcmFt OjprUmF3UHRyIHx8CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93 c2VyL2Rvd25sb2FkL2J1YmJsZS9kb3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MudHlw ZW5hbWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJi bGUvZG93bmxvYWRfYnViYmxlX3VwZGF0ZV9zZXJ2aWNlLmNjCistLS0gY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRfYnViYmxlX3Vw ZGF0ZV9zZXJ2aWNlLmNjLnR5cGVuYW1lCTIwMjQtMDItMjIgMjI6NDI6NTAuMDAwMDAwMDAwICsw MTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9i dWJibGUvZG93bmxvYWRfYnViYmxlX3VwZGF0ZV9zZXJ2aWNlLmNjCTIwMjQtMDItMjQgMTU6MDU6 MDAuODgyNTkyNzA1ICswMTAwCitAQCAtOTAsNyArOTAsNyBAQCBJdGVtU29ydEtleSBHZXRTb3J0 S2V5KGNvbnN0IEl0ZW0mIGl0ZW0pCisgLy8gSGVscGVyIHRvIGdldCBhbiBpdGVyYXRvciB0byB0 aGUgbGFzdCBlbGVtZW50IGluIHRoZSBjYWNoZS4gVGhlIGNhY2hlCisgLy8gbXVzdCBub3QgYmUg ZW1wdHkuCisgdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZW0+CistU29ydGVkSXRlbXM8SXRlbT46OmNv bnN0X2l0ZXJhdG9yIEdldExhc3RJdGVyKGNvbnN0IFNvcnRlZEl0ZW1zPEl0ZW0+JiBjYWNoZSkg eworK3R5cGVuYW1lIFNvcnRlZEl0ZW1zPEl0ZW0+Ojpjb25zdF9pdGVyYXRvciBHZXRMYXN0SXRl cihjb25zdCBTb3J0ZWRJdGVtczxJdGVtPiYgY2FjaGUpIHsKKyAgIENIRUNLKCFjYWNoZS5lbXB0 eSgpKTsKKyAgIGF1dG8gaXQgPSBjYWNoZS5lbmQoKTsKKyAgIHJldHVybiBzdGQ6OnByZXYoaXQp OworQEAgLTEwOTAsOSArMTA5MCw5IEBAIGJvb2wgRG93bmxvYWRCdWJibGVVcGRhdGVTZXJ2aWNl OjpDYWNoZU0KKyB9CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIElkLCB0eXBlbmFtZSBJdGVtPgor LVNvcnRlZEl0ZW1zPEl0ZW0+OjppdGVyYXRvcgorK3R5cGVuYW1lIFNvcnRlZEl0ZW1zPEl0ZW0+ OjppdGVyYXRvcgorIERvd25sb2FkQnViYmxlVXBkYXRlU2VydmljZTo6Q2FjaGVNYW5hZ2VyOjpS ZW1vdmVJdGVtRnJvbUNhY2hlQnlJdGVyKAorLSAgICBTb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0 b3IgaXRlciwKKysgICAgdHlwZW5hbWUgU29ydGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yIGl0ZXIs CisgICAgIFNvcnRlZEl0ZW1zPEl0ZW0+JiBjYWNoZSwKKyAgICAgSXRlck1hcDxJZCwgSXRlbT4m IGl0ZXJfbWFwKSB7CisgICBDSEVDSyhpdGVyICE9IGNhY2hlLmVuZCgpKTsKK2RpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9t b2RlbF9leGVjdXRpb24vbW9kZWxfZXhlY3V0aW9uX3V0aWwuaC50eXBlbmFtZSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfZXhl Y3V0aW9uL21vZGVsX2V4ZWN1dGlvbl91dGlsLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfZXhlY3V0aW9uL21vZGVs X2V4ZWN1dGlvbl91dGlsLmgudHlwZW5hbWUJMjAyNC0wMi0yMiAyMjo0MzowMS4wMDAwMDAwMDAg KzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0aW1pemF0aW9u X2d1aWRlL2NvcmUvbW9kZWxfZXhlY3V0aW9uL21vZGVsX2V4ZWN1dGlvbl91dGlsLmgJMjAyNC0w Mi0yNCAxNTowNTowMC44ODQ1OTI3NDIgKzAxMDAKK0BAIC0yNSw3ICsyNSw3IEBAIHZvaWQgU2V0 RXhlY3V0aW9uUmVxdWVzdFRlbXBsYXRlKAorIAorICAgLy8gUmVxdWVzdCBpcyBzZXQgYnkgdGhl IGZlYXR1cmUgYW5kIHNob3VsZCBhbHdheXMgYmUgdHlwZWQuCisgICBhdXRvIHR5cGVkX3JlcXVl c3QgPQorLSAgICAgIHN0YXRpY19jYXN0PGNvbnN0IEZlYXR1cmVUeXBlOjpSZXF1ZXN0Jj4ocmVx dWVzdF9tZXRhZGF0YSk7CisrICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgdHlwZW5hbWUgRmVhdHVy ZVR5cGU6OlJlcXVlc3QmPihyZXF1ZXN0X21ldGFkYXRhKTsKKyAgICoobG9nZ2luZ19kYXRhLT5t dXRhYmxlX3JlcXVlc3RfZGF0YSgpKSA9IHR5cGVkX3JlcXVlc3Q7CisgfQorIAorZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3Jl L21vZGVsX3F1YWxpdHkvbW9kZWxfcXVhbGl0eV9sb2dfZW50cnkuaC50eXBlbmFtZSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxf cXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xvZ19lbnRyeS5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX3F1YWxpdHkvbW9k ZWxfcXVhbGl0eV9sb2dfZW50cnkuaC50eXBlbmFtZQkyMDI0LTAyLTIyIDIyOjQzOjAxLjAwMDAw MDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6 YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgJ MjAyNC0wMi0yNCAxNTowNTowMC44ODQ1OTI3NDIgKzAxMDAKK0BAIC0yOSw3ICsyOSw3IEBAIGNs YXNzIE1vZGVsUXVhbGl0eUxvZ0VudHJ5IHsKKyAgIH0KKyAKKyAgIHRlbXBsYXRlIDx0eXBlbmFt ZSBGZWF0dXJlVHlwZT4KKy0gIEZlYXR1cmVUeXBlOjpRdWFsaXR5KiBxdWFsaXR5X2RhdGEoKSB7 CisrICB0eXBlbmFtZSBGZWF0dXJlVHlwZTo6UXVhbGl0eSogcXVhbGl0eV9kYXRhKCkgeworICAg ICByZXR1cm4gRmVhdHVyZVR5cGU6OkdldExvZ2dpbmdEYXRhKCpsb2dfYWlfZGF0YV9yZXF1ZXN0 XykKKyAgICAgICAgIC0+bXV0YWJsZV9xdWFsaXR5X2RhdGEoKTsKKyAgIH0KK2RpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0 cy5oLnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRp bmdzL2FycmF5X3RyYWl0cy5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1Ymxp Yy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgudHlwZW5hbWUJMjAyNC0wMi0yMiAyMjo0Mzox NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGlj L2NwcC9iaW5kaW5ncy9hcnJheV90cmFpdHMuaAkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4NDU5Mjc0 MiArMDEwMAorQEAgLTkwLDcgKzkwLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4K KyAgICAgeyBjW2ldIH0gLT4gc3RkOjpzYW1lX2FzPHR5cGVuYW1lIENvbnRhaW5lcjo6cmVmZXJl bmNlPjsKKyAgIH0KKyBzdHJ1Y3QgQXJyYXlUcmFpdHM8Q29udGFpbmVyPiB7CistICB1c2luZyBF bGVtZW50ID0gQ29udGFpbmVyOjp2YWx1ZV90eXBlOworKyAgdXNpbmcgRWxlbWVudCA9IHR5cGVu YW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZTsKKyAKKyAgIC8vIHZlY3Rvci1saWtlIGNvbnRhaW5l cnMgaGF2ZSBubyBidWlsdC1pbiBudWxsLgorICAgc3RhdGljIGJvb2wgSXNOdWxsKGNvbnN0IENv bnRhaW5lciYgYykgeyByZXR1cm4gZmFsc2U7IH0KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9hc3luY19p dGVyYWJsZS5oLnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9hc3luY19pdGVyYWJsZS5oCistLS0gY2hyb21p dW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3Jl L3Y4L2FzeW5jX2l0ZXJhYmxlLmgudHlwZW5hbWUJMjAyNC0wMi0yMiAyMjo0MzoyMC4wMDAwMDAw MDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNfaXRlcmFibGUuaAkyMDI0LTAyLTI0IDE1OjA1 OjAwLjg4MzU5MjcyNCArMDEwMAorQEAgLTIxOCw3ICsyMTgsNyBAQCBjbGFzcyBQYWlyQXN5bmNJ dGVyYWJsZSB7CisgIHByaXZhdGU6CisgICB2aXJ0dWFsIEl0ZXJhdGlvblNvdXJjZSogQ3JlYXRl SXRlcmF0aW9uU291cmNlKAorICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRfc3RhdGUsCistICAg ICAgSXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCisrICAgICAgdHlwZW5hbWUgSXRlcmF0aW9u U291cmNlOjpLaW5kIGtpbmQsCisgICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0 ZSkgPSAwOworIH07CisgCitAQCAtMjYwLDcgKzI2MCw3IEBAIGNsYXNzIFZhbHVlQXN5bmNJdGVy YWJsZSB7CisgIHByaXZhdGU6CisgICB2aXJ0dWFsIEl0ZXJhdGlvblNvdXJjZSogQ3JlYXRlSXRl cmF0aW9uU291cmNlKAorICAgICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRfc3RhdGUsCistICAgICAg SXRlcmF0aW9uU291cmNlOjpLaW5kIGtpbmQsCisrICAgICAgdHlwZW5hbWUgSXRlcmF0aW9uU291 cmNlOjpLaW5kIGtpbmQsCisgICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkg PSAwOworIH07CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFz dHBhdGguY2MudHlwZW5hbWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9jb3JlL2h0bWwvcGFyc2VyL2h0bWxfZG9jdW1lbnRfcGFyc2VyX2Zhc3RwYXRo LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9jb3JlL2h0bWwvcGFyc2VyL2h0bWxfZG9jdW1lbnRfcGFyc2VyX2Zhc3RwYXRoLmNjLnR5cGVu YW1lCTIwMjQtMDItMjQgMTU6MDU6MDAuODgyNTkyNzA1ICswMTAwCisrKysgY2hyb21pdW0tMTIy LjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2h0bWwvcGFyc2VyL2h0 bWxfZG9jdW1lbnRfcGFyc2VyX2Zhc3RwYXRoLmNjCTIwMjQtMDItMjQgMTU6MTI6MjcuNzQyNzI0 ODQ5ICswMTAwCitAQCAtMjExLDcgKzIxMSw3IEBAIGNsYXNzIEhUTUxGYXN0UGF0aFBhcnNlciB7 CisgICB1c2luZyBTcGFuID0gYmFzZTo6c3Bhbjxjb25zdCBDaGFyPjsKKyAgIHVzaW5nIFVTcGFu ID0gYmFzZTo6c3Bhbjxjb25zdCBVQ2hhcj47CisgICAvLyAzMiBtYXRjaGVzIHRoYXQgdXNlZCBi eSBIVE1MVG9rZW46OkF0dHJpYnV0ZS4KKy0gIHR5cGVkZWYgc3RkOjpjb25kaXRpb25hbDxzdGQ6 OmlzX3NhbWVfdjxDaGFyLCBVQ2hhcj4sCisrICB0eXBlZGVmIHR5cGVuYW1lIHN0ZDo6Y29uZGl0 aW9uYWw8c3RkOjppc19zYW1lX3Y8Q2hhciwgVUNoYXI+LAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFVDaGFyTGl0ZXJhbEJ1ZmZlcjwzMj4sCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgTENoYXJMaXRlcmFsQnVmZmVyPDMyPj46OnR5cGUgTGl0ZXJhbEJ1ZmZlclR5cGU7CisgICBz dGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PENoYXIsIFVDaGFyPiB8fCBzdGQ6OmlzX3NhbWVf djxDaGFyLCBMQ2hhcj4pOworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29iamVjdF9wYWludF9wcm9wZXJ0aWVzX3Nw YXJzZS5oLnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvY29yZS9wYWludC9vYmplY3RfcGFpbnRfcHJvcGVydGllc19zcGFyc2UuaAorLS0t IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9w YWludC9vYmplY3RfcGFpbnRfcHJvcGVydGllc19zcGFyc2UuaC50eXBlbmFtZQkyMDI0LTAyLTIy IDIyOjQzOjIxLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9vYmplY3RfcGFpbnRfcHJvcGVydGll c19zcGFyc2UuaAkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4MzU5MjcyNCArMDEwMAorQEAgLTI3Miw4 ICsyNzIsOCBAQCBjbGFzcyBDT1JFX0VYUE9SVCBPYmplY3RQYWludFByb3BlcnRpZXNTCisgICAg ICAgTm9kZUxpc3QmIG5vZGVzLAorICAgICAgIE5vZGVJZCBub2RlX2lkLAorICAgICAgIGNvbnN0 IFBhcmVudFR5cGUmIHBhcmVudCwKKy0gICAgICBOb2RlVHlwZTo6U3RhdGUmJiBzdGF0ZSwKKy0g ICAgICBjb25zdCBOb2RlVHlwZTo6QW5pbWF0aW9uU3RhdGUmIGFuaW1hdGlvbl9zdGF0ZSA9Cisr ICAgICAgdHlwZW5hbWUgTm9kZVR5cGU6OlN0YXRlJiYgc3RhdGUsCisrICAgICAgY29uc3QgdHlw ZW5hbWUgTm9kZVR5cGU6OkFuaW1hdGlvblN0YXRlJiBhbmltYXRpb25fc3RhdGUgPQorICAgICAg ICAgICBOb2RlVHlwZTo6QW5pbWF0aW9uU3RhdGUoKSkgeworICAgICAvLyBGaXJzdCwgY2hlY2sg aWYgd2UgbmVlZCB0byBhZGQgYSBuZXcgbm9kZS4KKyAgICAgaWYgKCFub2Rlcy5IYXNGaWVsZChu b2RlX2lkKSkgeworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2FsbG9jYXRv ci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2MvaW50ZXJuYWxfYWxsb2Nh dG9yLmgubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25f YWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2MvaW50ZXJuYWxfYWxsb2NhdG9yLmgKKy0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Iv c3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3IuaC5tZQkyMDI0LTAyLTI0IDE2 OjUxOjQxLjI5MjMxMDU1NCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9h bGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2ludGVybmFs X2FsbG9jYXRvci5oCTIwMjQtMDItMjQgMTY6NTI6MTAuMDIyODk2MDYzICswMTAwCitAQCAtMjYs NyArMjYsNyBAQCBQYXJ0aXRpb25Sb290JiBJbnRlcm5hbEFsbG9jYXRvclJvb3QoKTsKKyAKKyAv LyBBIGNsYXNzIHRoYXQgbWVldHMgQysrIG5hbWVkIHJlcXVpcmVtZW50cywgQWxsb2NhdG9yLgor IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLUludGVybmFsQWxsb2NhdG9yPFQ+Ojp2YWx1ZV90eXBl KiBJbnRlcm5hbEFsbG9jYXRvcjxUPjo6YWxsb2NhdGUoCisrdHlwZW5hbWUgSW50ZXJuYWxBbGxv Y2F0b3I8VD46OnZhbHVlX3R5cGUqIEludGVybmFsQWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSgKKyAg ICAgc3RkOjpzaXplX3QgY291bnQpIHsKKyAgIFBBX0NIRUNLKGNvdW50IDw9CisgICAgICAgICAg ICBzdGQ6Om51bWVyaWNfbGltaXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YodmFsdWVf dHlwZSkpOworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2NvbnRhaW5lcnMv aGVhcF9hcnJheS5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJzL2hl YXBfYXJyYXkuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJzL2hl YXBfYXJyYXkuaC5tZQkyMDI0LTAyLTI0IDE4OjAyOjM0LjQ2MzkyMTU2OCArMDEwMAorKysrIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJzL2hlYXBfYXJyYXkuaAkyMDI0LTAy LTI0IDE4OjA0OjAxLjkyMjg1MDU3MSArMDEwMAorQEAgLTMyLDggKzMyLDggQEAgY2xhc3MgVFJJ VklBTF9BQkkgR1NMX09XTkVSIEhlYXBBcnJheSB7CisgICBzdGF0aWNfYXNzZXJ0KCFzdGQ6Omlz X3JlZmVyZW5jZV92PFQ+LAorICAgICAgICAgICAgICAgICAiSGVhcEFycmF5IGNhbm5vdCBob2xk IHJlZmVyZW5jZSB0eXBlcyIpOworIAorLSAgdXNpbmcgaXRlcmF0b3IgPSBiYXNlOjpzcGFuPFQ+ OjppdGVyYXRvcjsKKy0gIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gYmFzZTo6c3Bhbjxjb25zdCBU Pjo6aXRlcmF0b3I7CisrICB1c2luZyBpdGVyYXRvciA9IHR5cGVuYW1lIGJhc2U6OnNwYW48VD46 Oml0ZXJhdG9yOworKyAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSB0eXBlbmFtZSBiYXNlOjpzcGFu PGNvbnN0IFQ+OjppdGVyYXRvcjsKKyAKKyAgIC8vIEFsbG9jYXRlcyBpbml0aWFsaXplZCBtZW1v cnkgY2FwYWJsZSBvZiBob2xkaW5nIGBzaXplYCBlbGVtZW50cy4gTm8gbWVtb3J5CisgICAvLyBp cyBhbGxvY2F0ZWQgZm9yIHplcm8tc2l6ZWQgYXJyYXlzLgorZGlmZiAtdXAgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvdHlwZV9jb252ZXJ0ZXIuaC5tZSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90eXBlX2NvbnZl cnRlci5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAvYmluZGlu Z3MvdHlwZV9jb252ZXJ0ZXIuaC5tZQkyMDI0LTAyLTI0IDE4OjUxOjA2Ljk1NzA4NzQ2NCArMDEw MAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL3R5 cGVfY29udmVydGVyLmgJMjAyNC0wMi0yNCAxODo1MToyNy43Nzg0ODg0OTAgKzAxMDAKK0BAIC0x MjUsNyArMTI1LDcgQEAgdXNpbmcgVmVjVmFsdWVUeXBlID0gdHlwZW5hbWUgVmVjOjp2YWx1ZQor IAorIHRlbXBsYXRlIDx0eXBlbmFtZSBWZWM+CisgdXNpbmcgVmVjUHRyTGlrZVVuZGVybHlpbmdW YWx1ZVR5cGUgPQorLSAgICBzdGQ6OnBvaW50ZXJfdHJhaXRzPFZlY1ZhbHVlVHlwZTxWZWM+Pjo6 ZWxlbWVudF90eXBlOworKyAgICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJfdHJhaXRzPFZlY1ZhbHVl VHlwZTxWZWM+Pjo6ZWxlbWVudF90eXBlOworIAorIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAor IAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS93dGYvaGFzaF90YWJsZS5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaAorLS0t IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZv cm0vd3RmL2hhc2hfdGFibGUuaC5tZQkyMDI0LTAyLTI0IDE5OjQ1OjEzLjYyMDkzNDIxNSArMDEw MAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaAkyMDI0LTAyLTI0IDE5OjQ2OjA4LjgxNzk0MDk2MiAr MDEwMAorQEAgLTIwMDUsNyArMjAwNSw3IEBAIHN0cnVjdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9y QWRhcHRlciB7CisgICBzdGF0aWNfYXNzZXJ0KCFJc1RyYWNlYWJsZTx0eXBlbmFtZSBUcmFpdHM6 OlRyYWl0VHlwZT46OnZhbHVlKTsKKyAKKyAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3Rk OjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKKy0gIHVzaW5nIHZhbHVlX3R5cGUgPSBIYXNo VGFibGVUeXBlOjpWYWx1ZVR5cGU7CisrICB1c2luZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgSGFz aFRhYmxlVHlwZTo6VmFsdWVUeXBlOworICAgdXNpbmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlm Zl90OworICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUqOworICAgdXNpbmcgcmVmZXJlbmNl ID0gdmFsdWVfdHlwZSY7CitAQCAtMjA1Nyw3ICsyMDU3LDcgQEAgc3RydWN0IEhhc2hUYWJsZUNv bnN0SXRlcmF0b3JBZGFwdGVyPAorIAorICBwdWJsaWM6CisgICB1c2luZyBpdGVyYXRvcl9jYXRl Z29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7CistICB1c2luZyB2YWx1ZV90 eXBlID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5 cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKKyAgIHVzaW5nIGRpZmZlcmVuY2VfdHlw ZSA9IHB0cmRpZmZfdDsKKyAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAgIHVzaW5n IHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOworQEAgLTIxMTEsNyArMjExMSw3IEBAIHN0cnVjdCBI YXNoVGFibGVJdGVyYXRvckFkYXB0ZXIgeworICAgc3RhdGljX2Fzc2VydCghSXNUcmFjZWFibGU8 dHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5cGU+Ojp2YWx1ZSk7CisgCisgICB1c2luZyBpdGVyYXRv cl9jYXRlZ29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7CistICB1c2luZyB2 YWx1ZV90eXBlID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworKyAgdXNpbmcgdmFsdWVfdHlw ZSA9IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKKyAgIHVzaW5nIGRpZmZlcmVu Y2VfdHlwZSA9IHB0cmRpZmZfdDsKKyAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAg IHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOworQEAgLTIxNTksNyArMjE1OSw3IEBAIHN0 cnVjdCBIYXNoVGFibGVJdGVyYXRvckFkYXB0ZXI8CisgCisgIHB1YmxpYzoKKyAgIHVzaW5nIGl0 ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKKy0gIHVz aW5nIHZhbHVlX3R5cGUgPSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7CisrICB1c2luZyB2YWx1 ZV90eXBlID0gdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworICAgdXNpbmcgZGlm ZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUq OworICAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlwZSY7CitkaWZmIC11cCBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaC5tZSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvYmFzZS90eXBlcy9maXhlZF9hcnJheS5oLm1lCTIwMjQtMDItMjUgMTE6MjI6NTkuODE5NTkw NTI5ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL3R5cGVzL2ZpeGVkX2Fy cmF5LmgJMjAyNC0wMi0yNSAxMToyNDoxMi40MjQ5NTMwMzEgKzAxMDAKK0BAIC0yNyw4ICsyNyw4 IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBULAorIGNsYXNzIEZpeGVkQXJyYXkgOiBwdWJsaWMgYWJz bDo6Rml4ZWRBcnJheTxULCBOLCBBPiB7CisgIHB1YmxpYzoKKyAgIHVzaW5nIGFic2w6OkZpeGVk QXJyYXk8VCwgTiwgQT46OkZpeGVkQXJyYXk7CistICBleHBsaWNpdCBGaXhlZEFycmF5KGFic2w6 OkZpeGVkQXJyYXk8VCwgTiwgQT46OnNpemVfdHlwZSBuLAorLSAgICAgICAgICAgICAgICAgICAg ICBjb25zdCBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+OjphbGxvY2F0b3JfdHlwZSYgYSA9Cisr ICBleHBsaWNpdCBGaXhlZEFycmF5KHR5cGVuYW1lIGFic2w6OkZpeGVkQXJyYXk8VCwgTiwgQT46 OnNpemVfdHlwZSBuLAorKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlbmFtZSBhYnNs OjpGaXhlZEFycmF5PFQsIE4sIEE+OjphbGxvY2F0b3JfdHlwZSYgYSA9CisgICAgICAgICAgICAg ICAgICAgICAgICAgICB0eXBlbmFtZSBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+OjphbGxvY2F0 b3JfdHlwZSgpKQorICAgICAgIDogRml4ZWRBcnJheShuLCBUKCksIGEpIHt9CisgfTsKK2RpZmYg LXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9u cy9jb21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2ludGVybmFsLmgubWUgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL2ludGVybmFs L2NvbW1hbmRfaW50ZXJuYWwuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2ludGVybmFs LmgubWUJMjAyNC0wMi0yNSAxNTowNDo1Ni43NzU4OTc3MTMgKzAxMDAKKysrKyBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvaW50 ZXJuYWwvY29tbWFuZF9pbnRlcm5hbC5oCTIwMjQtMDItMjUgMTU6MDU6MzQuODg0NTc5Mjc5ICsw MTAwCitAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIENvbW1hbmRCYXNlIHsKKyB0ZW1wbGF0ZSA8 dHlwZW5hbWUgTG9ja1R5cGU+CisgY2xhc3MgQ29tbWFuZFdpdGhMb2NrIDogcHVibGljIENvbW1h bmRCYXNlIHsKKyAgcHVibGljOgorLSAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9uID0gTG9ja1R5cGU6 OkxvY2tEZXNjcmlwdGlvbjsKKysgIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IHR5cGVuYW1lIExv Y2tUeXBlOjpMb2NrRGVzY3JpcHRpb247CisgICBleHBsaWNpdCBDb21tYW5kV2l0aExvY2soY29u c3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9ja0Rl c2NyaXB0aW9uIGluaXRpYWxfbG9ja19yZXF1ZXN0KTsKKyAKK2RpZmYgLXVwIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy93ZWJf YXBwX2NvbW1hbmQuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dl Yl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgKKy0tLSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvd2Vi X2FwcF9jb21tYW5kLmgubWUJMjAyNC0wMi0yNSAxNTowNTo0Ni44ODU3OTM4MjggKzAxMDAKKysr KyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMv Y29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgJMjAyNC0wMi0yNSAxNTowNjoxMi4zMzQyNDg3MjUg KzAxMDAKK0BAIC0xMDYsNyArMTA2LDcgQEAgY2xhc3MgV2ViQXBwTG9ja01hbmFnZXI7CisgdGVt cGxhdGUgPHR5cGVuYW1lIExvY2tUeXBlLCB0eXBlbmFtZS4uLiBDYWxsYmFja0FyZ3M+CisgY2xh c3MgV2ViQXBwQ29tbWFuZCA6IHB1YmxpYyBpbnRlcm5hbDo6Q29tbWFuZFdpdGhMb2NrPExvY2tU eXBlPiB7CisgIHB1YmxpYzoKKy0gIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IExvY2tUeXBlOjpM b2NrRGVzY3JpcHRpb247CisrICB1c2luZyBMb2NrRGVzY3JpcHRpb24gPSB0eXBlbmFtZSBMb2Nr VHlwZTo6TG9ja0Rlc2NyaXB0aW9uOworICAgdXNpbmcgQ2FsbGJhY2tUeXBlID0gYmFzZTo6T25j ZUNhbGxiYWNrPHZvaWQoQ2FsbGJhY2tBcmdzLi4uKT47CisgICB1c2luZyBTaHV0ZG93bkFyZ3Vt ZW50c1R1cGxlID0gc3RkOjp0dXBsZTxzdGQ6OmRlY2F5X3Q8Q2FsbGJhY2tBcmdzPi4uLj47Cisg CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBs aWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLm1lIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1hbmRfc2No ZWR1bGVyLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9h cHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oLm1lCTIwMjQtMDItMjUgMTU6 MDY6MTcuODk2MzQ4MTQ5ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv YnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL3dlYl9hcHBfY29tbWFuZF9zY2hlZHVsZXIuaAkyMDI0 LTAyLTI1IDE1OjA2OjU4Ljg0MTA3Njc0NiArMDEwMAorQEAgLTM1NSw3ICszNTUsNyBAQCBjbGFz cyBXZWJBcHBDb21tYW5kU2NoZWR1bGVyIHsKKyAgIC8vIGNvbW1hbmQgc3lzdGVtLgorICAgdGVt cGxhdGUgPHR5cGVuYW1lIExvY2tUeXBlPgorICAgdm9pZCBTY2hlZHVsZUNhbGxiYWNrKGNvbnN0 IHN0ZDo6c3RyaW5nJiBvcGVyYXRpb25fbmFtZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBM b2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uIGxvY2tfZGVzY3JpcHRpb24sCisrICAgICAgICAgICAg ICAgICAgICAgICAgdHlwZW5hbWUgTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbiBsb2NrX2Rlc2Ny aXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgIENhbGxiYWNrQ29tbWFuZDxMb2NrVHlw ZSwgdm9pZD4gY2FsbGJhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6T25jZUNs b3N1cmUgb25fY29tcGxldGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6 TG9jYXRpb24mIGxvY2F0aW9uID0gRlJPTV9IRVJFKSB7CitAQCAtMzczLDcgKzM3Myw3IEBAIGNs YXNzIFdlYkFwcENvbW1hbmRTY2hlZHVsZXIgeworICAgICAgICAgICAgIHR5cGVuYW1lIENhbGxi YWNrUmV0dXJuVmFsdWUgPSBzdGQ6OmRlY2F5X3Q8Q29tcGxldGlvbkNhbGxiYWNrQXJnPj4KKyAg IHZvaWQgU2NoZWR1bGVDYWxsYmFja1dpdGhSZXN1bHQoCisgICAgICAgY29uc3Qgc3RkOjpzdHJp bmcmIG9wZXJhdGlvbl9uYW1lLAorLSAgICAgIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRpb24gbG9j a19kZXNjcmlwdGlvbiwKKysgICAgICB0eXBlbmFtZSBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9u IGxvY2tfZGVzY3JpcHRpb24sCisgICAgICAgQ2FsbGJhY2tDb21tYW5kPExvY2tUeXBlLCBDYWxs YmFja1JldHVyblZhbHVlPiBjYWxsYmFjaywKKyAgICAgICBiYXNlOjpPbmNlQ2FsbGJhY2s8dm9p ZChDb21wbGV0aW9uQ2FsbGJhY2tBcmcpPiBvbl9jb21wbGV0ZSwKKyAgICAgICBDYWxsYmFja1Jl dHVyblZhbHVlIGFyZ19mb3Jfc2h1dGRvd24sCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2NvbXBvbmVudHMvc3VwZXJ2aXNlZF91c2VyL2NvcmUvYnJvd3Nlci9wcm90b19mZXRjaGVy LmgubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9j b3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oLm1l CTIwMjQtMDItMjUgMTU6MTI6NTMuODM1NDA5MzkyICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0 Y2hlci5oCTIwMjQtMDItMjUgMTU6MTY6MDMuMTcxOTMxMDMzICswMTAwCitAQCAtNDI0LDcgKzQy NCw3IEBAIGNsYXNzIFJldHJ5aW5nRmV0Y2hlckltcGwgZmluYWwgOiBwdWJsaWMKKyAgIFJldHJ5 aW5nRmV0Y2hlckltcGwoY29uc3QgUmV0cnlpbmdGZXRjaGVySW1wbCYpID0gZGVsZXRlOworICAg UmV0cnlpbmdGZXRjaGVySW1wbCYgb3BlcmF0b3I9KGNvbnN0IFJldHJ5aW5nRmV0Y2hlckltcGwm KSA9IGRlbGV0ZTsKKyAKKy0gIHZvaWQgU3RhcnQoUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2Fs bGJhY2sgY2FsbGJhY2spIG92ZXJyaWRlIHsKKysgIHZvaWQgU3RhcnQodHlwZW5hbWUgUHJvdG9G ZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2FsbGJhY2spIG92ZXJyaWRlIHsKKyAgICAgY2Fs bGJhY2tfID0gc3RkOjptb3ZlKGNhbGxiYWNrKTsKKyAgICAgUmV0cnkoKTsKKyAgIH0KK0BAIC00 NjksNyArNDY5LDcgQEAgY2xhc3MgUmV0cnlpbmdGZXRjaGVySW1wbCBmaW5hbCA6IHB1YmxpYwor ICAgfQorIAorICAgLy8gQ2xpZW50IGNhbGxiYWNrLgorLSAgVHlwZWRQcm90b0ZldGNoZXI8UmVz cG9uc2U+OjpDYWxsYmFjayBjYWxsYmFja187CisrICB0eXBlbmFtZSBUeXBlZFByb3RvRmV0Y2hl cjxSZXNwb25zZT46OkNhbGxiYWNrIGNhbGxiYWNrXzsKKyAKKyAgIC8vIFJldHJ5IGNvbnRyb2xz LgorICAgYmFzZTo6T25lU2hvdFRpbWVyIHRpbWVyXzsKK0BAIC00OTAsNyArNDkwLDcgQEAgY2xh c3MgUGFyYWxsZWxGZXRjaE1hbmFnZXIgeworICAgLy8gRGVmZXJyZWQgZmV0Y2hlciBpcyByZXF1 aXJlZCBiZWNhdXNlIGl0IHNob3VsZCBiZSBzdGFydGVkIGFmdGVyIGl0IGlzCisgICAvLyBzdG9y ZWQgaW50ZXJuYWxseS4KKyAgIHVzaW5nIEZldGNoZXIgPSBQcm90b0ZldGNoZXI8UmVzcG9uc2U+ OworLSAgdXNpbmcgS2V5VHlwZSA9IGJhc2U6OklETWFwPHN0ZDo6dW5pcXVlX3B0cjxGZXRjaGVy Pj46OktleVR5cGU7CisrICB1c2luZyBLZXlUeXBlID0gdHlwZW5hbWUgYmFzZTo6SURNYXA8c3Rk Ojp1bmlxdWVfcHRyPEZldGNoZXI+Pjo6S2V5VHlwZTsKKyAKKyAgcHVibGljOgorICAgLy8gUHJv dmlkZXMgZnJlc2ggaW5zdGFuY2VzIG9mIGEgZGVmZXJyZWQgZmV0Y2hlciBmb3IgZWFjaCBmZXRj aC4KK0BAIC01MDYsNyArNTA2LDcgQEAgY2xhc3MgUGFyYWxsZWxGZXRjaE1hbmFnZXIgeworIAor ICAgLy8gU3RhcnRzIHRoZSBmZXRjaC4gVW5kZXJseWluZyBmZXRjaGVyIGlzIHN0b3JlZCBpbnRl cm5hbGx5LCBhbmQgd2lsbCBiZQorICAgLy8gY2xlYW5lZCB1cCBhZnRlciBmaW5pc2ggb3Igd2hl biB0aGlzIG1hbmFnZXIgaXMgZGVzdHJveWVkLgorLSAgdm9pZCBGZXRjaChjb25zdCBSZXF1ZXN0 JiByZXF1ZXN0LCBGZXRjaGVyOjpDYWxsYmFjayBjYWxsYmFjaykgeworKyAgdm9pZCBGZXRjaChj b25zdCBSZXF1ZXN0JiByZXF1ZXN0LCB0eXBlbmFtZSBGZXRjaGVyOjpDYWxsYmFjayBjYWxsYmFj aykgeworICAgICBDSEVDSyhjYWxsYmFjaykgPDwgIlVzZSBiYXNlOjpEb05vdGhpbmcoKSBpbnN0 ZWFkIG9mIGVtcHR5IGNhbGxiYWNrLiI7CisgICAgIEtleVR5cGUga2V5ID0gcmVxdWVzdHNfaW5f ZmxpZ2h0Xy5BZGQoTWFrZUZldGNoZXIocmVxdWVzdCkpOworICAgICByZXF1ZXN0c19pbl9mbGln aHRfLkxvb2t1cChrZXkpLT5TdGFydCgKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbXBv bmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgub3Jp ZwkyMDI0LTAzLTEzIDIwOjM1OjQ0LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMy4w LjYzMTIuNDYvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS90ZmxpdGVfbW9kZWxf ZXhlY3V0b3IuaAkyMDI0LTAzLTE1IDE1OjQ1OjQ3LjA2NzE1NjgyNiArMDEwMAorQEAgLTI0Miw3 ICsyNDIsNyBAQAorICAgdm9pZCBTZW5kRm9yQmF0Y2hFeGVjdXRpb24oCisgICAgICAgQmF0Y2hF eGVjdXRpb25DYWxsYmFjayBjYWxsYmFja19vbl9jb21wbGV0ZSwKKyAgICAgICBiYXNlOjpUaW1l VGlja3Mgc3RhcnRfdGltZSwKKy0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0 VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQorKyAgICAgIHR5cGVuYW1lIE1vZGVs RXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1 dHMpCisgICAgICAgb3ZlcnJpZGUgeworICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVy Xy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7CisgICAgIERDSEVDS19DQUxMRURfT05f VkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworQEAgLTI2NCw3ICsyNjQsNyBAQAor ICAgLy8gU3RhcnRzIHRoZSBzeW5jaHJvbm91cyBleGVjdXRpb24gb2YgdGhlIG1vZGVsLiBSZXR1 cm5zIG1vZGVsIG91dHB1dHMuCisgICAvLyBNb2RlbCBuZWVkcyB0byBiZSBsb2FkZWQuIFN5bmNo cm9ub3VzIGNhbGxzIGRvIG5vdCBsb2FkIG9yIHVubG9hZCBtb2RlbC4KKyAgIHN0ZDo6dmVjdG9y PHN0ZDo6b3B0aW9uYWw8T3V0cHV0VHlwZT4+IFNlbmRGb3JCYXRjaEV4ZWN1dGlvblN5bmMoCist ICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0 VmVjdG9yIGlucHV0cykKKysgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUs IElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQorICAgICAgIG92ZXJyaWRl IHsKKyAgICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5lcl8tPlJ1bnNUYXNrc0luQ3VycmVu dFNlcXVlbmNlKCkpOworICAgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNFKHNlcXVl bmNlX2NoZWNrZXJfKTsKK0BAIC00MjIsNyArNDIyLDcgQEAKKyAgIC8vIGV4ZWN1dGVzIGl0IG9u IHRoZSBtb2RlbCBleGVjdXRpb24gdGhyZWFkLgorICAgdm9pZCBMb2FkTW9kZWxGaWxlQW5kQmF0 Y2hFeGVjdXRlKAorICAgICAgIEJhdGNoRXhlY3V0aW9uQ2FsbGJhY2sgY2FsbGJhY2tfb25fY29t cGxldGUsCistICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25z dFJlZklucHV0VmVjdG9yIGlucHV0cykgeworKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhlY3V0b3I8 T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpIHsKKyAg ICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5lcl8tPlJ1bnNUYXNrc0luQ3VycmVudFNlcXVl bmNlKCkpOworICAgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNFKHNlcXVlbmNlX2No ZWNrZXJfKTsKKyAKK0BAIC00MzksNyArNDM5LDcgQEAKKyAKKyAgIC8vIEJhdGNoIGV4ZWN1dGVz IHRoZSBsb2FkZWQgbW9kZWwgZm9yIGlucHV0cy4KKyAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9hZGVk TW9kZWwoCistICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25z dFJlZklucHV0VmVjdG9yIGlucHV0cywKKysgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91 dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAorICAgICAg IHN0ZDo6dmVjdG9yPHN0ZDo6b3B0aW9uYWw8T3V0cHV0VHlwZT4+KiBvdXRwdXRzKSB7CisgICAg IERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5j ZSgpKTsKKyAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVj a2VyXyk7CitAQCAtNDk5LDcgKzQ5OSw3IEBACisgICAvLyBVbmxvYWRzIHRoZSBtb2RlbCBpZiBu ZWVkZWQuCisgICB2b2lkIEJhdGNoRXhlY3V0ZUxvYWRlZE1vZGVsQW5kUnVuQ2FsbGJhY2soCisg ICAgICAgQmF0Y2hFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFja19vbl9jb21wbGV0ZSwKKy0gICAg ICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0 b3IgaW5wdXRzLAorKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5w dXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMsCisgICAgICAgRXhlY3V0aW9uU3Rh dHVzIGV4ZWN1dGlvbl9zdGF0dXMpIHsKKyAgICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5l cl8tPlJ1bnNUYXNrc0luQ3VycmVudFNlcXVlbmNlKCkpOworICAgICBEQ0hFQ0tfQ0FMTEVEX09O X1ZBTElEX1NFUVVFTkNFKHNlcXVlbmNlX2NoZWNrZXJfKTsKKy0tLSBjaHJvbWl1bS0xMjMuMC42 MzEyLjQ2L2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9yZWYuaC5vcmlnCTIwMjQtMDMtMTUgMTU6 NDM6MzIuMzI5Nzg2OTc0ICswMTAwCisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9iYXNlL2Z1 bmN0aW9uYWwvZnVuY3Rpb25fcmVmLmgJMjAyNC0wMy0xNSAxNTo0Njo1Ny4yNzg4MTM1MDAgKzAx MDAKK0BAIC02NCw3ICs2NCw3IEBACisgdGVtcGxhdGUgPHR5cGVuYW1lIFIsIHR5cGVuYW1lLi4u IEFyZ3M+CisgY2xhc3MgRnVuY3Rpb25SZWY8UihBcmdzLi4uKT4geworICAgdGVtcGxhdGUgPHR5 cGVuYW1lIEZ1bmN0b3IsCistICAgICAgICAgICAgdHlwZW5hbWUgUnVuVHlwZSA9IGludGVybmFs OjpGdW5jdG9yVHJhaXRzPEZ1bmN0b3I+OjpSdW5UeXBlPgorKyAgICAgICAgICAgIHR5cGVuYW1l IFJ1blR5cGUgPSB0eXBlbmFtZSBpbnRlcm5hbDo6RnVuY3RvclRyYWl0czxGdW5jdG9yPjo6UnVu VHlwZT4KKyAgIHN0YXRpYyBjb25zdGV4cHIgYm9vbCBrQ29tcGF0aWJsZUZ1bmN0b3IgPQorICAg ICAgIHN0ZDo6Y29udmVydGlibGVfdG88aW50ZXJuYWw6OkV4dHJhY3RSZXR1cm5UeXBlPFJ1blR5 cGU+LCBSPiAmJgorICAgICAgIHN0ZDo6c2FtZV9hczxpbnRlcm5hbDo6RXh0cmFjdEFyZ3M8UnVu VHlwZT4sIGludGVybmFsOjpUeXBlTGlzdDxBcmdzLi4uPj47CitkaWZmIC11cCBjaHJvbWl1bS0x MjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgv c2NyaXB0X3Byb21pc2VfcHJvcGVydHkuaC5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3Byb21pc2VfcHJv cGVydHkuaAorLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvYmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9wcm9wZXJ0eS5oLm1lCTIwMjQt MDMtMTYgMjI6NTU6MDEuMzg3MjY1NDc4ICswMTAwCisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40 Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L3NjcmlwdF9wcm9t aXNlX3Byb3BlcnR5LmgJMjAyNC0wMy0xNiAyMjo1NToxOC43NTI1NjgzMTAgKzAxMDAKK0BAIC0x NzMsNyArMTczLDcgQEAgY2xhc3MgU2NyaXB0UHJvbWlzZVByb3BlcnR5IGZpbmFsCisgICB0ZW1w bGF0ZSA8dHlwZW5hbWUgVD4KKyAgICAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgYmlu ZGluZ3M6OkVudW1lcmF0aW9uQmFzZT4KKyAgIHN0YXRpYyBUIERlZmF1bHRQcm9taXNlUmVzdWx0 VmFsdWUoKSB7CistICAgIHJldHVybiBUKHN0YXRpY19jYXN0PFQ6OkVudW0+KDApKTsKKysgICAg cmV0dXJuIFQoc3RhdGljX2Nhc3Q8dHlwZW5hbWUgVDo6RW51bT4oMCkpOworICAgfQorIAorICAg U3RhdGUgc3RhdGVfID0ga1BlbmRpbmc7CitkaWZmIC11cCBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2 L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3Byb21p c2VfcmVzb2x2ZXIuaC5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3Byb21pc2VfcmVzb2x2ZXIuaAorLS0t IGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGlu Z3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9yZXNvbHZlci5oLm1lCTIwMjQtMDMtMTYgMjI6NDE6 NTAuNjM0NTEwMDE5ICswMTAwCisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L3NjcmlwdF9wcm9taXNlX3Jlc29sdmVy LmgJMjAyNC0wMy0xNiAyMjo1NDo1MS4yMTUwODgwODcgKzAxMDAKK0BAIC00NzcsNyArNDc3LDcg QEAgY2xhc3MgU2NyaXB0UHJvbWlzZVJlc29sdmVyVHlwZWQgOiBwdWJsaQorIAorICBwcml2YXRl OgorICAgdXNpbmcgVHlwZWRSZXNvbHZlciA9CistICAgICAgU2NyaXB0UHJvbWlzZVR5cGVkPElE TFJlc29sdmVkVHlwZT46OkludGVybmFsUmVzb2x2ZXJUeXBlZDsKKysgICAgICB0eXBlbmFtZSBT Y3JpcHRQcm9taXNlVHlwZWQ8SURMUmVzb2x2ZWRUeXBlPjo6SW50ZXJuYWxSZXNvbHZlclR5cGVk OworIH07CisgCisgfSAgLy8gbmFtZXNwYWNlIGJsaW5rCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0t MTIzLXY4LWMrKzIwLnBhdGNoIGIvY2hyb21pdW0tMTIzLXY4LWMrKzIwLnBhdGNoCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NjgyZGEKLS0tIC9kZXYvbnVsbAorKysgYi9j aHJvbWl1bS0xMjMtdjgtYysrMjAucGF0Y2gKQEAgLTAsMCArMSw3MzMgQEAKK2NvbW1pdCA5NDBh ZjlmMmM4N2I0MzY1NTliOTdjNTM3NjNhYTllYWFmMTI1NGViCitBdXRob3I6IEplcmVteSBSb21h biA8amJyb21hbkBjaHJvbWl1bS5vcmc+CitEYXRlOiAgIFdlZCBOb3YgMTUgMTY6MjQ6NTQgMjAy MyArMDAwMAorCisgICAgVXNlIEMrKzIwIGZlYXR1cmVzIHRvIHNpbXBsaWZ5IGJsaW5rOjpOYXRp dmVWYWx1ZVRyYWl0c0Jhc2UuCisgICAgCisgICAgVGhlc2UgYWxsb3cgc29tZSBvZiB0aGUgbWV0 YXByb2dyYW1taW5nIGJpdHMgdG8gYmUgc2ltcGxpZmllZCBhIGxpdHRsZS4KKyAgICAKKyAgICBD aGFuZ2UtSWQ6IEkwNTJiNDM5NzU4NmQyMTM0ODQwMTYxNmUxNzkyYWZkYjk2NjJmOTc1CisgICAg UmV2aWV3ZWQtb246IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9j aHJvbWl1bS9zcmMvKy81MDMwMzM1CisgICAgUmV2aWV3ZWQtYnk6IFl1a2kgU2hpaW5vIDx5dWtp c2hpaW5vQGNocm9taXVtLm9yZz4KKyAgICBDb21taXQtUXVldWU6IEplcmVteSBSb21hbiA8amJy b21hbkBjaHJvbWl1bS5vcmc+CisgICAgQ3ItQ29tbWl0LVBvc2l0aW9uOiByZWZzL2hlYWRzL21h aW5AeyMxMjI0OTc4fQorCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv YmluZGluZ3MvY29yZS92OC9uYXRpdmVfdmFsdWVfdHJhaXRzLmggYi90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFpdHMuaAoraW5kZXgg N2ZjOTFkMTRhY2M3MS4uMWU1YTA3OTBkZjZkYSAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvbmF0aXZlX3ZhbHVlX3RyYWl0cy5oCisrKysg Yi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1 ZV90cmFpdHMuaAorQEAgLTUsNiArNSw3IEBACisgI2lmbmRlZiBUSElSRF9QQVJUWV9CTElOS19S RU5ERVJFUl9CSU5ESU5HU19DT1JFX1Y4X05BVElWRV9WQUxVRV9UUkFJVFNfSF8KKyAjZGVmaW5l IFRISVJEX1BBUlRZX0JMSU5LX1JFTkRFUkVSX0JJTkRJTkdTX0NPUkVfVjhfTkFUSVZFX1ZBTFVF X1RSQUlUU19IXworIAorKyNpbmNsdWRlIDxjb25jZXB0cz4KKyAjaW5jbHVkZSA8dHlwZV90cmFp dHM+CisgCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2Nv cmUvdjgvaWRsX3R5cGVzX2Jhc2UuaCIKK0BAIC0zMCw3ICszMSw3IEBAIGNsYXNzIEV4Y2VwdGlv blN0YXRlOworIC8vICAgICByZXR1cm4gdG9JbnQzMihpc29sYXRlLCB2YWx1ZSwgZXhjZXB0aW9u U3RhdGUsIE5vcm1hbENvbnZlcnNpb24pOworIC8vICAgfQorIC8vIH0KKy10ZW1wbGF0ZSA8dHlw ZW5hbWUgVCwgdHlwZW5hbWUgU0ZJTkFFSGVscGVyID0gdm9pZD4KKyt0ZW1wbGF0ZSA8dHlwZW5h bWUgVD4KKyBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM7CisgCisgLy8gVGhpcyBkZWNsYXJhdGlv biBzZXJ2ZXMgb25seSBhcyBhIGJsdWVwcmludCBmb3Igc3BlY2lhbGl6YXRpb25zOiB0aGUKK0BA IC00NSwyMiArNDYsMTUgQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzOworIAorIG5hbWVzcGFj ZSBiaW5kaW5ncyB7CisgCistdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lID0gdm9pZD4K Ky1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHNIYXNJc051bGwgOiBzdGQ6OmZhbHNlX3R5cGUge307 CistCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzSGFz SXNOdWxsPAorLSAgICBULAorLSAgICBzdGQ6OnZvaWRfdDxkZWNsdHlwZShzdGQ6OmRlY2x2YWw8 VD4oKS5Jc051bGwoKSk+PiA6IHN0ZDo6dHJ1ZV90eXBlIHt9OworK3N0cnVjdCBJbXBsVHlwZUZv ciB7CisrICB1c2luZyB0eXBlID0gVDsKKyt9OworIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgor LXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0c0hhc051bGxWYWx1ZSB7CistICAvLyB0cnVlIGlmIHxU fCBzdXBwb3J0cyBJREwgbnVsbCB2YWx1ZS4KKy0gIHN0YXRpYyBjb25zdGV4cHIgYm9vbCB2YWx1 ZSA9CistICAgICAgLy8gU2NyaXB0VmFsdWUsIFN0cmluZywgYW5kIHVuaW9uIHR5cGVzIGhhdmUg SXNOdWxsIG1lbWJlciBmdW5jdGlvbi4KKy0gICAgICBiaW5kaW5nczo6TmF0aXZlVmFsdWVUcmFp dHNIYXNJc051bGw8VD46OnZhbHVlIHx8CistICAgICAgLy8gUG9pbnRlciB0eXBlcyBoYXZlIG51 bGxwdHIgYXMgSURMIG51bGwgdmFsdWUuCistICAgICAgc3RkOjppc19wb2ludGVyPFQ+Ojp2YWx1 ZTsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIElETEJhc2U+Cisrc3RydWN0IElt cGxUeXBlRm9yPFQ+IHsKKysgIHVzaW5nIHR5cGUgPSB0eXBlbmFtZSBUOjpJbXBsVHlwZTsKKyB9 OworIAorIH0gIC8vIG5hbWVzcGFjZSBiaW5kaW5ncworQEAgLTc4LDM3ICs3MiwxNyBAQCBzdHJ1 Y3QgTmF0aXZlVmFsdWVUcmFpdHNIYXNOdWxsVmFsdWUgeworIC8vIElmIHByZXNlbnQsIHxOdWxs VmFsdWUoKXwgd2lsbCBiZSB1c2VkIHdoZW4gY29udmVydGluZyBmcm9tIHRoZSBudWxsYWJsZSB0 eXBlCisgLy8gVD8sIGFuZCBzaG91bGQgYmUgdXNlZCBpZiB0aGUgaW1wbCB0eXBlIGhhcyBhbiBl eGlzdGluZyAibnVsbCIgc3RhdGUuIElmIG5vdAorIC8vIHByZXNlbnQsIFdURjo6T3B0aW9uYWwg d2lsbCBiZSB1c2VkIHRvIHdyYXAgdGhlIHR5cGUuCistdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5 cGVuYW1lIFNGSU5BRUhlbHBlciA9IHZvaWQ+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzQmFz ZSB7CistICBTVEFUSUNfT05MWShOYXRpdmVWYWx1ZVRyYWl0c0Jhc2UpOworLQorLSAgdXNpbmcg SW1wbFR5cGUgPSBUOworLQorLSAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19udWxsX3ZhbHVl ID0KKy0gICAgICBiaW5kaW5nczo6TmF0aXZlVmFsdWVUcmFpdHNIYXNOdWxsVmFsdWU8SW1wbFR5 cGU+Ojp2YWx1ZTsKKy0KKy0gIHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBFeHRyYUFyZ3M+CistICBz dGF0aWMgZGVjbHR5cGUoYXV0bykgQXJndW1lbnRWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudF9pbmRl eCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6 VmFsdWU+IHZhbHVlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhj ZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEV4dHJhQXJncy4uLiBleHRyYV9hcmdzKSB7CistICAgIHJldHVybiBOYXRp dmVWYWx1ZVRyYWl0czxzdGQ6OnJlbW92ZV9wb2ludGVyX3Q8VD4+OjpOYXRpdmVWYWx1ZSgKKy0g ICAgICAgIGlzb2xhdGUsIHZhbHVlLCBleGNlcHRpb25fc3RhdGUsCistICAgICAgICBzdGQ6OmZv cndhcmQ8RXh0cmFBcmdzPihleHRyYV9hcmdzKS4uLik7CistICB9CistfTsKKy0KKyB0ZW1wbGF0 ZSA8dHlwZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPAorLSAgICBULAor LSAgICBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxJRExCYXNlLCBUPjo6dmFsdWU+ PiB7Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzQmFzZSB7CisgICBTVEFUSUNfT05MWShOYXRp dmVWYWx1ZVRyYWl0c0Jhc2UpOworIAorLSAgdXNpbmcgSW1wbFR5cGUgPSB0eXBlbmFtZSBUOjpJ bXBsVHlwZTsKKysgIHVzaW5nIEltcGxUeXBlID0gYmluZGluZ3M6OkltcGxUeXBlRm9yPFQ+Ojp0 eXBlOworIAorKyAgLy8gUG9pbnRlciB0eXBlcyBoYXZlIG51bGxwdHIgYXMgSURMIG51bGwgdmFs dWUuCisrICAvLyBTY3JpcHRWYWx1ZSwgU3RyaW5nLCBhbmQgdW5pb24gdHlwZXMgaGF2ZSBJc051 bGwgbWVtYmVyIGZ1bmN0aW9uLgorICAgc3RhdGljIGNvbnN0ZXhwciBib29sIGhhc19udWxsX3Zh bHVlID0KKy0gICAgICBiaW5kaW5nczo6TmF0aXZlVmFsdWVUcmFpdHNIYXNOdWxsVmFsdWU8SW1w bFR5cGU+Ojp2YWx1ZTsKKysgICAgICBzdGQ6OmlzX3BvaW50ZXJfdjxJbXBsVHlwZT4gfHwKKysg ICAgICByZXF1aXJlcyhJbXBsVHlwZSB2YWx1ZSkgeyB2YWx1ZS5Jc051bGwoKTsgfTsKKyAKKyAg IHRlbXBsYXRlIDx0eXBlbmFtZS4uLiBFeHRyYUFyZ3M+CisgICBzdGF0aWMgZGVjbHR5cGUoYXV0 bykgQXJndW1lbnRWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKK2RpZmYgLS1naXQgYS90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFp dHNfYnVmZmVyX3NvdXJjZXMuY2MgYi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5n cy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFpdHNfYnVmZmVyX3NvdXJjZXMuY2MKK2luZGV4IDUw OGVhNmQ4ZWVhNDguLjE4ZGU3MWQ4NDAyM2YgMTAwNjQ0CistLS0gYS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L25hdGl2ZV92YWx1ZV90cmFpdHNfYnVmZmVyX3Nv dXJjZXMuY2MKKysrKyBiL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUv djgvbmF0aXZlX3ZhbHVlX3RyYWl0c19idWZmZXJfc291cmNlcy5jYworQEAgLTcsNiArNyw3IEBA CisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvY29yZV9leHBvcnQu aCIKKyAjaW5jbHVkZSAidGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9leGVjdXRpb25f Y29udGV4dC9leGVjdXRpb25fY29udGV4dC5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9jb3JlL2ZyYW1lL3dlYl9mZWF0dXJlLmgiCisrI2luY2x1ZGUgInRoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvdHlwZWRfYXJyYXlzL2ZsZXhpYmxlX2FycmF5X2J1ZmZl cl92aWV3LmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvdHlw ZWRfYXJyYXlzL3R5cGVkX2ZsZXhpYmxlX2FycmF5X2J1ZmZlcl92aWV3LmgiCisgCisgbmFtZXNw YWNlIGJsaW5rIHsKK0BAIC02OTgsMTIgKzY5OSwxMSBAQCBET01BcnJheUJ1ZmZlckJhc2UqIE5h dGl2ZVZhbHVlVHJhaXRzPAorIC8vIEFycmF5QnVmZmVyVmlldworIAorIHRlbXBsYXRlIDx0eXBl bmFtZSBUPgorLU5vdFNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKKy0gICAgTm90U2hhcmVk PFQ+LAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxET01B cnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+OjoKKy0gICAgTmF0aXZlVmFsdWUodjg6Oklzb2xh dGUqIGlzb2xhdGUsCistICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVl LAorLSAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7Cisr ICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+CisrTm90 U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPE5vdFNoYXJlZDxUPj46Ok5hdGl2ZVZhbHVlKAor KyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKysgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFs dWUsCisrICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKyAgIHJldHVybiBO YXRpdmVWYWx1ZUltcGw8CisgICAgICAgUmVjaXBlVHJhaXQ8Tm90U2hhcmVkPFQ+PiwgVG9ET01W aWV3VHlwZTxULCBrTm90U2hhcmVkPiwKKyAgICAgICBOdWxsYWJsaXR5OjprSXNOb3ROdWxsYWJs ZSwgQnVmZmVyU2l6ZUNoZWNrOjprQ2hlY2ssCitAQCAtNzEyLDEzICs3MTIsMTIgQEAgTm90U2hh cmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAorIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K Ky1Ob3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIE5vdFNoYXJlZDxUPiwKKy0g ICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9NQXJyYXlCdWZm ZXJWaWV3LCBUPjo6dmFsdWU+Pjo6CistICAgIEFyZ3VtZW50VmFsdWUodjg6Oklzb2xhdGUqIGlz b2xhdGUsCistICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50X2luZGV4LAorLSAgICAgICAg ICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorLSAgICAgICAgICAgICAgICAg IEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVy aXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KKytOb3RTaGFyZWQ8VD4gTmF0aXZlVmFs dWVUcmFpdHM8Tm90U2hhcmVkPFQ+Pjo6QXJndW1lbnRWYWx1ZSgKKysgICAgdjg6Oklzb2xhdGUq IGlzb2xhdGUsCisrICAgIGludCBhcmd1bWVudF9pbmRleCwKKysgICAgdjg6OkxvY2FsPHY4OjpW YWx1ZT4gdmFsdWUsCisrICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKyAg IHJldHVybiBBcmd1bWVudFZhbHVlSW1wbDwKKyAgICAgICBSZWNpcGVUcmFpdDxOb3RTaGFyZWQ8 VD4+LCBUb0RPTVZpZXdUeXBlPFQsIGtOb3RTaGFyZWQ+LAorICAgICAgIE51bGxhYmxpdHk6OmtJ c05vdE51bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtDaGVjaywKK0BAIC03MjksMTIgKzcyOCwx MSBAQCBOb3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8CisgLy8gW0FsbG93U2hhcmVkXSBB cnJheUJ1ZmZlclZpZXcKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1NYXliZVNoYXJlZDxU PiBOYXRpdmVWYWx1ZVRyYWl0czwKKy0gICAgTWF5YmVTaGFyZWQ8VD4sCistICAgIHR5cGVuYW1l IHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46 OnZhbHVlPj46OgorLSAgICBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKy0gICAg ICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCistICAgICAgICAgICAgICAg IEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVy aXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KKytNYXliZVNoYXJlZDxUPiBOYXRpdmVW YWx1ZVRyYWl0czxNYXliZVNoYXJlZDxUPj46Ok5hdGl2ZVZhbHVlKAorKyAgICB2ODo6SXNvbGF0 ZSogaXNvbGF0ZSwKKysgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCisrICAgIEV4Y2Vw dGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKyAgIHJldHVybiBOYXRpdmVWYWx1ZUltcGw8 UmVjaXBlVHJhaXQ8TWF5YmVTaGFyZWQ8VD4+LAorICAgICAgICAgICAgICAgICAgICAgICAgICBU b0RPTVZpZXdUeXBlPFQsIGtNYXliZVNoYXJlZD4sCisgICAgICAgICAgICAgICAgICAgICAgICAg IE51bGxhYmxpdHk6OmtJc05vdE51bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtDaGVjaywKK0BA IC03NDMsMTMgKzc0MSwxMiBAQCBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKKyB9 CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CistTWF5YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWVU cmFpdHM8CistICAgIE1heWJlU2hhcmVkPFQ+LAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p Zl90PHN0ZDo6aXNfYmFzZV9vZjxET01BcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+OjoKKy0g ICAgQXJndW1lbnRWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKy0gICAgICAgICAgICAgICAg ICBpbnQgYXJndW1lbnRfaW5kZXgsCistICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpW YWx1ZT4gdmFsdWUsCistICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlv bl9zdGF0ZSkgeworKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgRE9NQXJyYXlCdWZm ZXJWaWV3PgorK01heWJlU2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPE1heWJlU2hhcmVkPFQ+ Pjo6QXJndW1lbnRWYWx1ZSgKKysgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUsCisrICAgIGludCBh cmd1bWVudF9pbmRleCwKKysgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCisrICAgIEV4 Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKyAgIHJldHVybiBBcmd1bWVudFZhbHVl SW1wbDxSZWNpcGVUcmFpdDxNYXliZVNoYXJlZDxUPj4sCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVG9ET01WaWV3VHlwZTxULCBrTWF5YmVTaGFyZWQ+LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIE51bGxhYmxpdHk6OmtJc05vdE51bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtD aGVjaywKK0BAIC03NjAsMTIgKzc1NywxMiBAQCBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRy YWl0czwKKyAvLyBbQWxsb3dTaGFyZWQsIEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVMaW1pdF0gQXJy YXlCdWZmZXJWaWV3CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CistTWF5YmVTaGFyZWQ8VD4g TmF0aXZlVmFsdWVUcmFpdHM8CistICAgIElETEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVMaW1pdDxN YXliZVNoYXJlZDxUPj4sCistICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19i YXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgorLSAgICBOYXRpdmVWYWx1 ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKy0gICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpW YWx1ZT4gdmFsdWUsCistICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25f c3RhdGUpIHsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVy Vmlldz4KKytNYXliZVNoYXJlZDxUPgorK05hdGl2ZVZhbHVlVHJhaXRzPElETEJ1ZmZlclNvdXJj ZVR5cGVOb1NpemVMaW1pdDxNYXliZVNoYXJlZDxUPj4+OjpOYXRpdmVWYWx1ZSgKKysgICAgdjg6 Oklzb2xhdGUqIGlzb2xhdGUsCisrICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorKyAg ICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7CisgICByZXR1cm4gTmF0aXZlVmFs dWVJbXBsPAorICAgICAgIFJlY2lwZVRyYWl0PE1heWJlU2hhcmVkPFQ+PiwgVG9ET01WaWV3VHlw ZTxULCBrTWF5YmVTaGFyZWQ+LAorICAgICAgIE51bGxhYmxpdHk6OmtJc05vdE51bGxhYmxlLCBC dWZmZXJTaXplQ2hlY2s6OmtEb05vdENoZWNrLAorQEAgLTc3NCwxMyArNzcxLDEyIEBAIE1heWJl U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAorIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KKy1NYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKKy0gICAgSURMQnVmZmVyU291 cmNlVHlwZU5vU2l6ZUxpbWl0PE1heWJlU2hhcmVkPFQ+PiwKKy0gICAgdHlwZW5hbWUgc3RkOjpl bmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9NQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+ Pjo6CistICAgIEFyZ3VtZW50VmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCistICAgICAgICAg ICAgICAgICAgaW50IGFyZ3VtZW50X2luZGV4LAorLSAgICAgICAgICAgICAgICAgIHY4OjpMb2Nh bDx2ODo6VmFsdWU+IHZhbHVlLAorLSAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBl eGNlcHRpb25fc3RhdGUpIHsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFy cmF5QnVmZmVyVmlldz4KKytNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czxJRExCdWZm ZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8CisrICAgIE1heWJlU2hhcmVkPFQ+Pj46OkFyZ3VtZW50 VmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IGFyZ3VtZW50X2luZGV4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKyAg IHJldHVybiBBcmd1bWVudFZhbHVlSW1wbDwKKyAgICAgICBSZWNpcGVUcmFpdDxNYXliZVNoYXJl ZDxUPj4sIFRvRE9NVmlld1R5cGU8VCwga01heWJlU2hhcmVkPiwKKyAgICAgICBOdWxsYWJsaXR5 OjprSXNOb3ROdWxsYWJsZSwgQnVmZmVyU2l6ZUNoZWNrOjprRG9Ob3RDaGVjaywKK0BAIC03OTEs MTIgKzc4NywxMSBAQCBNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKKyAvLyBOdWxs YWJsZSBBcnJheUJ1ZmZlclZpZXcKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1Ob3RTaGFy ZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIElETE51bGxhYmxlPE5vdFNoYXJlZDxUPj4s CistICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5 QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgorLSAgICBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSog aXNvbGF0ZSwKKy0gICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCist ICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKysgIHJl cXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KKytOb3RTaGFy ZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8SURMTnVsbGFibGU8Tm90U2hhcmVkPFQ+Pj46Ok5hdGl2 ZVZhbHVlKAorKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKysgICAgdjg6OkxvY2FsPHY4OjpW YWx1ZT4gdmFsdWUsCisrICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKyAg IHJldHVybiBOYXRpdmVWYWx1ZUltcGw8CisgICAgICAgUmVjaXBlVHJhaXQ8Tm90U2hhcmVkPFQ+ PiwgVG9ET01WaWV3VHlwZTxULCBrTm90U2hhcmVkPiwKKyAgICAgICBOdWxsYWJsaXR5OjprSXNO dWxsYWJsZSwgQnVmZmVyU2l6ZUNoZWNrOjprQ2hlY2ssCitAQCAtODA1LDEzICs4MDAsMTIgQEAg Tm90U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAorIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5h bWUgVD4KKy1Ob3RTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIElETE51bGxhYmxl PE5vdFNoYXJlZDxUPj4sCistICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19i YXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgorLSAgICBBcmd1bWVudFZh bHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAorLSAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVu dF9pbmRleCwKKy0gICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwK Ky0gICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7Cisr ICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+CisrTm90 U2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPE5vdFNoYXJlZDxUPj4+OjpB cmd1bWVudFZhbHVlKAorKyAgICB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKysgICAgaW50IGFyZ3Vt ZW50X2luZGV4LAorKyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKKysgICAgRXhjZXB0 aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgeworICAgcmV0dXJuIEFyZ3VtZW50VmFsdWVJbXBs PAorICAgICAgIFJlY2lwZVRyYWl0PE5vdFNoYXJlZDxUPj4sIFRvRE9NVmlld1R5cGU8VCwga05v dFNoYXJlZD4sCisgICAgICAgTnVsbGFibGl0eTo6a0lzTnVsbGFibGUsIEJ1ZmZlclNpemVDaGVj azo6a0NoZWNrLAorQEAgLTgyMiwxMiArODE2LDExIEBAIE5vdFNoYXJlZDxUPiBOYXRpdmVWYWx1 ZVRyYWl0czwKKyAvLyBOdWxsYWJsZSBbQWxsb3dTaGFyZWRdIEFycmF5QnVmZmVyVmlldworIAor IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLU1heWJlU2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRz PAorLSAgICBJRExOdWxsYWJsZTxNYXliZVNoYXJlZDxUPj4sCistICAgIHR5cGVuYW1lIHN0ZDo6 ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVl Pj46OgorLSAgICBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKy0gICAgICAgICAg ICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCistICAgICAgICAgICAgICAgIEV4Y2Vw dGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9m cm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KKytNYXliZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRy YWl0czxJRExOdWxsYWJsZTxNYXliZVNoYXJlZDxUPj4+OjpOYXRpdmVWYWx1ZSgKKysgICAgdjg6 Oklzb2xhdGUqIGlzb2xhdGUsCisrICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorKyAg ICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7CisgICByZXR1cm4gTmF0aXZlVmFs dWVJbXBsPFJlY2lwZVRyYWl0PE1heWJlU2hhcmVkPFQ+PiwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgVG9ET01WaWV3VHlwZTxULCBrTWF5YmVTaGFyZWQ+LAorICAgICAgICAgICAgICAgICAg ICAgICAgICBOdWxsYWJsaXR5OjprSXNOdWxsYWJsZSwgQnVmZmVyU2l6ZUNoZWNrOjprQ2hlY2ss CitAQCAtODM2LDEzICs4MjksMTIgQEAgTWF5YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8 CisgfQorIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLU1heWJlU2hhcmVkPFQ+IE5hdGl2ZVZh bHVlVHJhaXRzPAorLSAgICBJRExOdWxsYWJsZTxNYXliZVNoYXJlZDxUPj4sCistICAgIHR5cGVu YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywg VD46OnZhbHVlPj46OgorLSAgICBBcmd1bWVudFZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAor LSAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudF9pbmRleCwKKy0gICAgICAgICAgICAgICAg ICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKKy0gICAgICAgICAgICAgICAgICBFeGNlcHRp b25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7CisrICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJv bTxULCBET01BcnJheUJ1ZmZlclZpZXc+CisrTWF5YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFp dHM8SURMTnVsbGFibGU8TWF5YmVTaGFyZWQ8VD4+Pjo6QXJndW1lbnRWYWx1ZSgKKysgICAgdjg6 Oklzb2xhdGUqIGlzb2xhdGUsCisrICAgIGludCBhcmd1bWVudF9pbmRleCwKKysgICAgdjg6Okxv Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsCisrICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3Rh dGUpIHsKKyAgIHJldHVybiBBcmd1bWVudFZhbHVlSW1wbDxSZWNpcGVUcmFpdDxNYXliZVNoYXJl ZDxUPj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9ET01WaWV3VHlwZTxULCBrTWF5 YmVTaGFyZWQ+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGxhYmxpdHk6OmtJc051 bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtDaGVjaywKK0BAIC04NTMsOSArODQ1LDkgQEAgTWF5 YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWVUcmFpdHM8CisgLy8gTnVsbGFibGUgW0FsbG93U2hhcmVk LCBCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXRdIEFycmF5QnVmZmVyVmlldworIAorIHRlbXBs YXRlIDx0eXBlbmFtZSBUPgorLU1heWJlU2hhcmVkPFQ+IE5hdGl2ZVZhbHVlVHJhaXRzPAorLSAg ICBJRExOdWxsYWJsZTxJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8TWF5YmVTaGFyZWQ8 VD4+PiwKKy0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9N QXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+Pjo6CisrICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRf ZnJvbTxULCBET01BcnJheUJ1ZmZlclZpZXc+CisrTWF5YmVTaGFyZWQ8VD4KKytOYXRpdmVWYWx1 ZVRyYWl0czxJRExOdWxsYWJsZTxJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8TWF5YmVT aGFyZWQ8VD4+Pj46OgorICAgICBBcmd1bWVudFZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAor ICAgICAgICAgICAgICAgICAgIGludCBhcmd1bWVudF9pbmRleCwKKyAgICAgICAgICAgICAgICAg ICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKK0BAIC04NzAsMTMgKzg2MiwxMSBAQCBNYXli ZVNoYXJlZDxUPiBOYXRpdmVWYWx1ZVRyYWl0czwKKyAvLyBbQWxsb3dTaGFyZWQsIEZsZXhpYmxl QXJyYXlCdWZmZXJWaWV3XSBBcnJheUJ1ZmZlclZpZXcKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KKy1UIE5hdGl2ZVZhbHVlVHJhaXRzPFQsCistICAgICAgICAgICAgICAgICAgICB0eXBlbmFt ZSBzdGQ6OmVuYWJsZV9pZl90PAorLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6aXNfYmFz ZV9vZjxGbGV4aWJsZUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj46OgorLSAgICBBcmd1bWVu dFZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAorLSAgICAgICAgICAgICAgICAgIGludCBhcmd1 bWVudF9pbmRleCwKKy0gICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1 ZSwKKy0gICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7 CisrICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBGbGV4aWJsZUFycmF5QnVmZmVyVmll dz4KKytUIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+OjpBcmd1bWVudFZhbHVlKHY4OjpJc29sYXRlKiBp c29sYXRlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFyZ3Vt ZW50X2luZGV4LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okxv Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSB7CisgICByZXR1cm4gQXJndW1l bnRWYWx1ZUltcGw8UmVjaXBlVHJhaXQ8VD4sIFRvRmxleGlibGVBcnJheUJ1ZmZlclZpZXcsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTnVsbGFibGl0eTo6a0lzTm90TnVsbGFibGUsIEJ1 ZmZlclNpemVDaGVjazo6a0NoZWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc2l6 YWJsZUFsbG93YW5jZTo6a0Rpc2FsbG93UmVzaXphYmxlLAorQEAgLTg4OCwxMyArODc4LDEyIEBA IFQgTmF0aXZlVmFsdWVUcmFpdHM8VCwKKyAvLyBBcnJheUJ1ZmZlclZpZXcKKyAKKyB0ZW1wbGF0 ZSA8dHlwZW5hbWUgVD4KKy1UIE5hdGl2ZVZhbHVlVHJhaXRzPElETEJ1ZmZlclNvdXJjZVR5cGVO b1NpemVMaW1pdDxUPiwKKy0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxl X2lmX3Q8CistICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19iYXNlX29mPEZsZXhpYmxl QXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+Pjo6CistICAgIEFyZ3VtZW50VmFsdWUodjg6Oklz b2xhdGUqIGlzb2xhdGUsCistICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50X2luZGV4LAor LSAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorLSAgICAgICAg ICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKysgIHJlcXVpcmVz IHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3PgorK1QgTmF0aXZl VmFsdWVUcmFpdHM8SURMQnVmZmVyU291cmNlVHlwZU5vU2l6ZUxpbWl0PFQ+Pjo6QXJndW1lbnRW YWx1ZSgKKysgICAgdjg6Oklzb2xhdGUqIGlzb2xhdGUsCisrICAgIGludCBhcmd1bWVudF9pbmRl eCwKKysgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCisrICAgIEV4Y2VwdGlvblN0YXRl JiBleGNlcHRpb25fc3RhdGUpIHsKKyAgIHJldHVybiBBcmd1bWVudFZhbHVlSW1wbDwKKyAgICAg ICBSZWNpcGVUcmFpdDxUPiwgVG9GbGV4aWJsZUFycmF5QnVmZmVyVmlldywgTnVsbGFibGl0eTo6 a0lzTm90TnVsbGFibGUsCisgICAgICAgQnVmZmVyU2l6ZUNoZWNrOjprRG9Ob3RDaGVjaywgUmVz aXphYmxlQWxsb3dhbmNlOjprRGlzYWxsb3dSZXNpemFibGUsCitAQCAtOTA1LDEzICs4OTQsMTIg QEAgVCBOYXRpdmVWYWx1ZVRyYWl0czxJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8VD4s CisgLy8gTnVsbGFibGUgW0FsbG93U2hhcmVkLCBGbGV4aWJsZUFycmF5QnVmZmVyVmlld10gQXJy YXlCdWZmZXJWaWV3CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CistVCBOYXRpdmVWYWx1ZVRy YWl0czxJRExOdWxsYWJsZTxUPiwKKy0gICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6 ZW5hYmxlX2lmX3Q8CistICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjppc19iYXNlX29mPEZs ZXhpYmxlQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+Pjo6CistICAgIEFyZ3VtZW50VmFsdWUo djg6Oklzb2xhdGUqIGlzb2xhdGUsCistICAgICAgICAgICAgICAgICAgaW50IGFyZ3VtZW50X2lu ZGV4LAorLSAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorLSAg ICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKKysgIHJl cXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3PgorK1Qg TmF0aXZlVmFsdWVUcmFpdHM8SURMTnVsbGFibGU8VD4+OjpBcmd1bWVudFZhbHVlKAorKyAgICB2 ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKysgICAgaW50IGFyZ3VtZW50X2luZGV4LAorKyAgICB2ODo6 TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKKysgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9z dGF0ZSkgeworICAgcmV0dXJuIEFyZ3VtZW50VmFsdWVJbXBsPFJlY2lwZVRyYWl0PFQ+LCBUb0Zs ZXhpYmxlQXJyYXlCdWZmZXJWaWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE51bGxh YmxpdHk6OmtJc051bGxhYmxlLCBCdWZmZXJTaXplQ2hlY2s6OmtDaGVjaywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBSZXNpemFibGVBbGxvd2FuY2U6OmtEaXNhbGxvd1Jlc2l6YWJsZSwK K2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4 L25hdGl2ZV92YWx1ZV90cmFpdHNfaW1wbC5oIGIvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv YmluZGluZ3MvY29yZS92OC9uYXRpdmVfdmFsdWVfdHJhaXRzX2ltcGwuaAoraW5kZXggODk5OTI5 ZGNmNDlmOS4uNTAxMTUwM2RjZjFjMCAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvbmF0aXZlX3ZhbHVlX3RyYWl0c19pbXBsLmgKKysrKyBi L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvbmF0aXZlX3ZhbHVl X3RyYWl0c19pbXBsLmgKK0BAIC03MTUsOSArNzE4LDggQEAgc3RydWN0IENPUkVfRVhQT1JUIE5h dGl2ZVZhbHVlVHJhaXRzPAorIH07CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cistc3RydWN0 IE5hdGl2ZVZhbHVlVHJhaXRzPAorLSAgICBULAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p Zl90PHN0ZDo6aXNfYmFzZV9vZjxET01BcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+IHsKKysg IHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KKytzdHJ1 Y3QgTmF0aXZlVmFsdWVUcmFpdHM8VD4geworICAgLy8gTm90U2hhcmVkPFQ+IG9yIE1heWJlU2hh cmVkPFQ+IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICBzdGF0aWMgVCogTmF0aXZlVmFsdWUo djg6Oklzb2xhdGUqIGlzb2xhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2Fs PHY4OjpWYWx1ZT4gdmFsdWUsCitAQCAtNzI5LDkgKzczMSw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1 ZVRyYWl0czwKKyB9OworIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLXN0cnVjdCBOYXRpdmVW YWx1ZVRyYWl0czwKKy0gICAgSURMTnVsbGFibGU8VD4sCistICAgIHR5cGVuYW1lIHN0ZDo6ZW5h YmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPERPTUFycmF5QnVmZmVyVmlldywgVD46OnZhbHVlPj4g eworKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgRE9NQXJyYXlCdWZmZXJWaWV3Pgor K3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxUPj4geworICAgLy8gTm90U2hh cmVkPFQ+IG9yIE1heWJlU2hhcmVkPFQ+IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCisgICBzdGF0 aWMgVCogTmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCisgICAgICAgICAgICAgICAg ICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCitAQCAtNzQzLDkgKzc0NCw4IEBA IHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKKyB9OworIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBU PgorLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKKy0gICAgTm90U2hhcmVkPFQ+LAorLSAgICB0 eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxET01BcnJheUJ1ZmZlclZp ZXcsIFQ+Ojp2YWx1ZT4+CisrICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBET01BcnJh eUJ1ZmZlclZpZXc+Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPE5vdFNoYXJlZDxUPj4KKyAg ICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPE5vdFNoYXJlZDxUPj4geworICAgc3Rh dGljIE5vdFNoYXJlZDxUPiBOYXRpdmVWYWx1ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUs CitAQCAtNzU4LDkgKzc1OCw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKKyB9OworIAor IHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKKy0gICAg SURMTnVsbGFibGU8Tm90U2hhcmVkPFQ+PiwKKy0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZf dDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9NQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+PgorKyAgcmVx dWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgRE9NQXJyYXlCdWZmZXJWaWV3PgorK3N0cnVjdCBO YXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxOb3RTaGFyZWQ8VD4+PgorICAgICA6IHB1Ymxp YyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8Tm90U2hhcmVkPFQ+PiB7CisgICBzdGF0aWMgTm90U2hh cmVkPFQ+IE5hdGl2ZVZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKK0BAIC03NzMs OSArNzcyLDggQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAorIH07CisgCisgdGVtcGxhdGUg PHR5cGVuYW1lIFQ+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAorLSAgICBNYXliZVNoYXJl ZDxUPiwKKy0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9N QXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+PgorKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zy b208VCwgRE9NQXJyYXlCdWZmZXJWaWV3PgorK3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxNYXli ZVNoYXJlZDxUPj4KKyAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPE1heWJlU2hh cmVkPFQ+PiB7CisgICBzdGF0aWMgTWF5YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWUodjg6Oklzb2xh dGUqIGlzb2xhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okxv Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsCitAQCAtNzg4LDkgKzc4Niw4IEBAIHN0cnVjdCBOYXRpdmVW YWx1ZVRyYWl0czwKKyB9OworIAorIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLXN0cnVjdCBOYXRp dmVWYWx1ZVRyYWl0czwKKy0gICAgSURMQnVmZmVyU291cmNlVHlwZU5vU2l6ZUxpbWl0PE1heWJl U2hhcmVkPFQ+PiwKKy0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vf b2Y8RE9NQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+PgorKyAgcmVxdWlyZXMgc3RkOjpkZXJp dmVkX2Zyb208VCwgRE9NQXJyYXlCdWZmZXJWaWV3PgorK3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0 czxJRExCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQ8TWF5YmVTaGFyZWQ8VD4+PgorICAgICA6 IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8TWF5YmVTaGFyZWQ8VD4+IHsKKyAgIC8vIEZs ZXhpYmxlQXJyYXlCdWZmZXJWaWV3IHVzZXMgdGhpcyBpbiBpdHMgaW1wbGVtZW50YXRpb24sIHNv IHdlIGNhbm5vdAorICAgLy8gZGVsZXRlIGl0LgorQEAgLTgwNSw5ICs4MDIsOCBAQCBzdHJ1Y3Qg TmF0aXZlVmFsdWVUcmFpdHM8CisgfTsKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1zdHJ1 Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIElETE51bGxhYmxlPE1heWJlU2hhcmVkPFQ+PiwK Ky0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8RE9NQXJyYXlC dWZmZXJWaWV3LCBUPjo6dmFsdWU+PgorKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwg RE9NQXJyYXlCdWZmZXJWaWV3PgorK3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJs ZTxNYXliZVNoYXJlZDxUPj4+CisgICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxN YXliZVNoYXJlZDxUPj4geworICAgc3RhdGljIE1heWJlU2hhcmVkPFQ+IE5hdGl2ZVZhbHVlKHY4 OjpJc29sYXRlKiBpc29sYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorQEAgLTgyMCw5ICs4MTYsOSBAQCBzdHJ1Y3Qg TmF0aXZlVmFsdWVUcmFpdHM8CisgfTsKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKysgIHJl cXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIERPTUFycmF5QnVmZmVyVmlldz4KKyBzdHJ1Y3Qg TmF0aXZlVmFsdWVUcmFpdHM8CistICAgIElETE51bGxhYmxlPElETEJ1ZmZlclNvdXJjZVR5cGVO b1NpemVMaW1pdDxNYXliZVNoYXJlZDxUPj4+LAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p Zl90PHN0ZDo6aXNfYmFzZV9vZjxET01BcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+CisrICAg IElETE51bGxhYmxlPElETEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVMaW1pdDxNYXliZVNoYXJlZDxU Pj4+PgorICAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8TWF5YmVTaGFyZWQ8VD4+ IHsKKyAgIC8vIEJ1ZmZlclNvdXJjZVR5cGVOb1NpemVMaW1pdCBtdXN0IGJlIHVzZWQgb25seSBh cyBhcmd1bWVudHMuCisgICBzdGF0aWMgTWF5YmVTaGFyZWQ8VD4gTmF0aXZlVmFsdWUodjg6Oklz b2xhdGUqIGlzb2xhdGUsCitAQCAtODM2LDExICs4MzIsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVU cmFpdHM8CisgfTsKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFs dWVUcmFpdHM8CistICAgIFQsCistICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8CistICAg ICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8RmxleGlibGVBcnJheUJ1ZmZlclZpZXcsIFQ+Ojp2YWx1ZT4+ CistICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUPiB7CisrICByZXF1aXJlcyBz dGQ6OmRlcml2ZWRfZnJvbTxULCBGbGV4aWJsZUFycmF5QnVmZmVyVmlldz4KKytzdHJ1Y3QgTmF0 aXZlVmFsdWVUcmFpdHM8VD4gOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQ+IHsKKyAg IC8vIEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3IG11c3QgYmUgdXNlZCBvbmx5IGFzIGFyZ3VtZW50 cy4KKyAgIHN0YXRpYyBUIE5hdGl2ZVZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAorICAgICAg ICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsCitAQCAtODUzLDEw ICs4NDYsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CisgfTsKKyAKKyB0ZW1wbGF0ZSA8 dHlwZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIElETEJ1ZmZlclNv dXJjZVR5cGVOb1NpemVMaW1pdDxUPiwKKy0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwK Ky0gICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxGbGV4aWJsZUFycmF5QnVmZmVyVmlldywgVD46OnZh bHVlPj4KKysgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIEZsZXhpYmxlQXJyYXlCdWZm ZXJWaWV3PgorK3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExCdWZmZXJTb3VyY2VUeXBlTm9T aXplTGltaXQ8VD4+CisgICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUPiB7Cisg ICAvLyBCdWZmZXJTb3VyY2VUeXBlTm9TaXplTGltaXQgYW5kIEZsZXhpYmxlQXJyYXlCdWZmZXJW aWV3IG11c3QgYmUgdXNlZCBvbmx5CisgICAvLyBhcyBhcmd1bWVudHMuCitAQCAtODcxLDExICs4 NjIsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CisgfTsKKyAKKyB0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIElETE51bGxhYmxlPFQ+ LAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PAorLSAgICAgICAgc3RkOjppc19iYXNl X29mPEZsZXhpYmxlQXJyYXlCdWZmZXJWaWV3LCBUPjo6dmFsdWU+PgorLSAgICA6IHB1YmxpYyBO YXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VD4geworKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208 VCwgRmxleGlibGVBcnJheUJ1ZmZlclZpZXc+Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElE TE51bGxhYmxlPFQ+PiA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VD4geworICAgLy8g RmxleGlibGVBcnJheUJ1ZmZlclZpZXcgbXVzdCBiZSB1c2VkIG9ubHkgYXMgYXJndW1lbnRzLgor ICAgc3RhdGljIFQgTmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCisgICAgICAgICAg ICAgICAgICAgICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKK0BAIC0xMTM0LDkgKzEx MjIsOCBAQCBOYXRpdmVWYWx1ZVRyYWl0czxJRExTZXF1ZW5jZTxUPj46Ok5hdGl2ZVZhbHVlKAor IH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8 SURMTnVsbGFibGU8SURMU2VxdWVuY2U8VD4+LAorLSAgICAgICAgICAgICAgICAgICAgICAgICB0 eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg TmF0aXZlVmFsdWVUcmFpdHM8SURMU2VxdWVuY2U8VD4+OjpoYXNfbnVsbF92YWx1ZT4+CisrICBy ZXF1aXJlcyBOYXRpdmVWYWx1ZVRyYWl0czxJRExTZXF1ZW5jZTxUPj46Omhhc19udWxsX3ZhbHVl Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPElETFNlcXVlbmNlPFQ+Pj4K KyAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPEhlYXBWZWN0b3I8QWRkTWVtYmVy SWZOZWVkZWQ8VD4+Kj4geworICAgdXNpbmcgSW1wbFR5cGUgPSB0eXBlbmFtZSBOYXRpdmVWYWx1 ZVRyYWl0czxJRExTZXF1ZW5jZTxUPj46OkltcGxUeXBlKjsKKyAKK0BAIC0xMjAzLDkgKzExOTAs OCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMQXJyYXk8VD4+CisgICAgIDogcHVibGlj IE5hdGl2ZVZhbHVlVHJhaXRzPElETFNlcXVlbmNlPFQ+PiB7fTsKKyAKKyB0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMTnVsbGFibGU8SURMQXJyYXk8 VD4+LAorLSAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90 PAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF0aXZlVmFsdWVUcmFpdHM8SURMU2Vx dWVuY2U8VD4+OjpoYXNfbnVsbF92YWx1ZT4+CisrICByZXF1aXJlcyBOYXRpdmVWYWx1ZVRyYWl0 czxJRExTZXF1ZW5jZTxUPj46Omhhc19udWxsX3ZhbHVlCisrc3RydWN0IE5hdGl2ZVZhbHVlVHJh aXRzPElETE51bGxhYmxlPElETEFycmF5PFQ+Pj4KKyAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVU cmFpdHM8SURMTnVsbGFibGU8SURMU2VxdWVuY2U8VD4+PiB7fTsKKyAKKyAvLyBSZWNvcmQgdHlw ZXMKK0BAIC0xMzM1LDEwICsxMzIxLDggQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETFJl Y29yZDxLLCBWPj4KKyAKKyAvLyBDYWxsYmFjayBmdW5jdGlvbiB0eXBlcworIHRlbXBsYXRlIDx0 eXBlbmFtZSBUPgorLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czwKKy0gICAgVCwKKy0gICAgdHlw ZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8Q2FsbGJhY2tGdW5jdGlvbkJh c2UsIFQ+Ojp2YWx1ZT4+CistICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUKj4g eworKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgQ2FsbGJhY2tGdW5jdGlvbkJhc2U+ Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRz QmFzZTxUKj4geworICAgc3RhdGljIFQqIE5hdGl2ZVZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRl LAorICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAor ICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUp IHsKK0BAIC0xMzYxLDkgKzEzNDUsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CisgfTsK KyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Cist ICAgIElETE51bGxhYmxlPFQ+LAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6 aXNfYmFzZV9vZjxDYWxsYmFja0Z1bmN0aW9uQmFzZSwgVD46OnZhbHVlPj4KKysgIHJlcXVpcmVz IHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIENhbGxiYWNrRnVuY3Rpb25CYXNlPgorK3N0cnVjdCBOYXRp dmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxUPj4KKyAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVU cmFpdHNCYXNlPElETE51bGxhYmxlPFQ+PiB7CisgICBzdGF0aWMgVCogTmF0aXZlVmFsdWUodjg6 Oklzb2xhdGUqIGlzb2xhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4 OjpWYWx1ZT4gdmFsdWUsCitAQCAtMTM5MiwxMCArMTM3NSw4IEBAIHN0cnVjdCBOYXRpdmVWYWx1 ZVRyYWl0czwKKyAKKyAvLyBDYWxsYmFjayBpbnRlcmZhY2UgdHlwZXMKKyB0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIFQsCistICAgIHR5cGVu YW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19iYXNlX29mPENhbGxiYWNrSW50ZXJmYWNlQmFz ZSwgVD46OnZhbHVlPj4KKy0gICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQqPiB7 CisrICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBDYWxsYmFja0ludGVyZmFjZUJhc2U+ Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRz QmFzZTxUKj4geworICAgc3RhdGljIFQqIE5hdGl2ZVZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRl LAorICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAor ICAgICAgICAgICAgICAgICAgICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUp IHsKK0BAIC0xNDE4LDkgKzEzOTksOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CisgfTsK KyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8Cist ICAgIElETE51bGxhYmxlPFQ+LAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PHN0ZDo6 aXNfYmFzZV9vZjxDYWxsYmFja0ludGVyZmFjZUJhc2UsIFQ+Ojp2YWx1ZT4+CisrICByZXF1aXJl cyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBDYWxsYmFja0ludGVyZmFjZUJhc2U+Cisrc3RydWN0IE5h dGl2ZVZhbHVlVHJhaXRzPElETE51bGxhYmxlPFQ+PgorICAgICA6IHB1YmxpYyBOYXRpdmVWYWx1 ZVRyYWl0c0Jhc2U8SURMTnVsbGFibGU8VD4+IHsKKyAgIHN0YXRpYyBUKiBOYXRpdmVWYWx1ZSh2 ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6TG9jYWw8 djg6OlZhbHVlPiB2YWx1ZSwKK0BAIC0xNDQ5LDExICsxNDI5LDggQEAgc3RydWN0IE5hdGl2ZVZh bHVlVHJhaXRzPAorIAorIC8vIERpY3Rpb25hcnkgdHlwZXMKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUg VD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIFQsCistICAgIHR5cGVuYW1lIHN0 ZDo6ZW5hYmxlX2lmX3Q8CistICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8YmluZGluZ3M6OkRpY3Rp b25hcnlCYXNlLCBUPjo6dmFsdWU+PgorLSAgICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jh c2U8VCo+IHsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIGJpbmRpbmdzOjpEaWN0 aW9uYXJ5QmFzZT4KKytzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8VD4gOiBwdWJsaWMgTmF0aXZl VmFsdWVUcmFpdHNCYXNlPFQqPiB7CisgICBzdGF0aWMgVCogTmF0aXZlVmFsdWUodjg6Oklzb2xh dGUqIGlzb2xhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1 ZT4gdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2Vw dGlvbl9zdGF0ZSkgeworQEAgLTE0NjQsMTQgKzE0NDEsMTEgQEAgc3RydWN0IE5hdGl2ZVZhbHVl VHJhaXRzPAorIC8vIFdlIGRvbid0IHN1cHBvcnQgbnVsbGFibGUgZGljdGlvbmFyeSB0eXBlcyBp biBnZW5lcmFsIHNpbmNlIGl0J3MgcXVpdGUKKyAvLyBjb25mdXNpbmcgYW5kIG9mdGVuIG1pc3Vz ZWQuCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAor LSAgICBJRExOdWxsYWJsZTxUPiwKKy0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDwKKy0g ICAgICAgIHN0ZDo6aXNfYmFzZV9vZjxiaW5kaW5nczo6RGljdGlvbmFyeUJhc2UsIFQ+Ojp2YWx1 ZSAmJgorLSAgICAgICAgKHN0ZDo6aXNfc2FtZTxULCBHUFVDb2xvclRhcmdldFN0YXRlPjo6dmFs dWUgfHwKKy0gICAgICAgICBzdGQ6OmlzX3NhbWU8VCwgR1BVUmVuZGVyUGFzc0NvbG9yQXR0YWNo bWVudD46OnZhbHVlIHx8CistICAgICAgICAgc3RkOjppc19zYW1lPFQsIEdQVVZlcnRleEJ1ZmZl ckxheW91dD46OnZhbHVlKT4+CistICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxU Kj4geworKyAgcmVxdWlyZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgYmluZGluZ3M6OkRpY3Rpb25h cnlCYXNlPiAmJgorKyAgICAgICAgICAgKHN0ZDo6c2FtZV9hczxULCBHUFVDb2xvclRhcmdldFN0 YXRlPiB8fAorKyAgICAgICAgICAgIHN0ZDo6c2FtZV9hczxULCBHUFVSZW5kZXJQYXNzQ29sb3JB dHRhY2htZW50PiB8fAorKyAgICAgICAgICAgIHN0ZDo6c2FtZV9hczxULCBHUFVWZXJ0ZXhCdWZm ZXJMYXlvdXQ+KQorK3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxUPj4gOiBw dWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQqPiB7CisgICBzdGF0aWMgVCogTmF0aXZlVmFs dWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okxv Y2FsPHY4OjpWYWx1ZT4gdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9u U3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgeworQEAgLTE0ODMsMTEgKzE0NTcsOCBAQCBzdHJ1Y3Qg TmF0aXZlVmFsdWVUcmFpdHM8CisgCisgLy8gRW51bWVyYXRpb24gdHlwZXMKKyB0ZW1wbGF0ZSA8 dHlwZW5hbWUgVD4KKy1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8CistICAgIFQsCistICAgIHR5 cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8CistICAgICAgICBzdGQ6OmlzX2Jhc2Vfb2Y8YmluZGlu Z3M6OkVudW1lcmF0aW9uQmFzZSwgVD46OnZhbHVlPj4KKy0gICAgOiBwdWJsaWMgTmF0aXZlVmFs dWVUcmFpdHNCYXNlPFQ+IHsKKysgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIGJpbmRp bmdzOjpFbnVtZXJhdGlvbkJhc2U+Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPFQ+IDogcHVi bGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUPiB7CisgICBzdGF0aWMgVCBOYXRpdmVWYWx1ZSh2 ODo6SXNvbGF0ZSogaXNvbGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2 ODo6VmFsdWU+IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3RhdGUm IGV4Y2VwdGlvbl9zdGF0ZSkgeworQEAgLTE0OTcsMTAgKzE0NjgsOCBAQCBzdHJ1Y3QgTmF0aXZl VmFsdWVUcmFpdHM8CisgCisgLy8gSW50ZXJmYWNlIHR5cGVzCisgdGVtcGxhdGUgPHR5cGVuYW1l IFQ+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAorLSAgICBULAorLSAgICB0eXBlbmFtZSBz dGQ6OmVuYWJsZV9pZl90PHN0ZDo6aXNfYmFzZV9vZjxTY3JpcHRXcmFwcGFibGUsIFQ+Ojp2YWx1 ZT4+CistICAgIDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUKj4geworKyAgcmVxdWly ZXMgc3RkOjpkZXJpdmVkX2Zyb208VCwgU2NyaXB0V3JhcHBhYmxlPgorK3N0cnVjdCBOYXRpdmVW YWx1ZVRyYWl0czxUPiA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VCo+IHsKKyAgIHN0 YXRpYyBpbmxpbmUgVCogTmF0aXZlVmFsdWUodjg6Oklzb2xhdGUqIGlzb2xhdGUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0 YXRlKSB7CitAQCAtMTUyOCw5ICsxNDk3LDggQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAor IH07CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRz PAorLSAgICBJRExOdWxsYWJsZTxUPiwKKy0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxz dGQ6OmlzX2Jhc2Vfb2Y8U2NyaXB0V3JhcHBhYmxlLCBUPjo6dmFsdWU+PgorKyAgcmVxdWlyZXMg c3RkOjpkZXJpdmVkX2Zyb208VCwgU2NyaXB0V3JhcHBhYmxlPgorK3N0cnVjdCBOYXRpdmVWYWx1 ZVRyYWl0czxJRExOdWxsYWJsZTxUPj4KKyAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNC YXNlPElETE51bGxhYmxlPFQ+PiB7CisgICBzdGF0aWMgaW5saW5lIFQqIE5hdGl2ZVZhbHVlKHY4 OjpJc29sYXRlKiBpc29sYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6 TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwKK0BAIC0xNTY1LDEwICsxNTMzLDggQEAgc3RydWN0IE5h dGl2ZVZhbHVlVHJhaXRzPAorIH07CisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Cistc3RydWN0 IE5hdGl2ZVZhbHVlVHJhaXRzPAorLSAgICBULAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9p Zl90PHN0ZDo6aXNfYmFzZV9vZjxiaW5kaW5nczo6VW5pb25CYXNlLCBUPjo6dmFsdWU+PgorLSAg ICA6IHB1YmxpYyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8VCo+IHsKKysgIHJlcXVpcmVzIHN0ZDo6 ZGVyaXZlZF9mcm9tPFQsIGJpbmRpbmdzOjpVbmlvbkJhc2U+Cisrc3RydWN0IE5hdGl2ZVZhbHVl VHJhaXRzPFQ+IDogcHVibGljIE5hdGl2ZVZhbHVlVHJhaXRzQmFzZTxUKj4geworICAgc3RhdGlj IFQqIE5hdGl2ZVZhbHVlKHY4OjpJc29sYXRlKiBpc29sYXRlLAorICAgICAgICAgICAgICAgICAg ICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAg ICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUpIHsKK0BAIC0xNTg0LDEwICsxNTUw LDggQEAgc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAorIH07CisgCisgdGVtcGxhdGUgPHR5cGVu YW1lIFQ+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAorLSAgICBJRExOdWxsYWJsZTxUPiwK Ky0gICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX2Jhc2Vfb2Y8YmluZGluZ3M6 OlVuaW9uQmFzZSwgVD46OnZhbHVlPj4KKy0gICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNC YXNlPFQqPiB7CisrICByZXF1aXJlcyBzdGQ6OmRlcml2ZWRfZnJvbTxULCBiaW5kaW5nczo6VW5p b25CYXNlPgorK3N0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExOdWxsYWJsZTxUPj4gOiBwdWJs aWMgTmF0aXZlVmFsdWVUcmFpdHNCYXNlPFQqPiB7CisgICBzdGF0aWMgVCogTmF0aXZlVmFsdWUo djg6Oklzb2xhdGUqIGlzb2xhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkxvY2Fs PHY4OjpWYWx1ZT4gdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgRXhjZXB0aW9uU3Rh dGUmIGV4Y2VwdGlvbl9zdGF0ZSkgeworQEAgLTE2MDgsOSArMTU3Miw4IEBAIHN0cnVjdCBOYXRp dmVWYWx1ZVRyYWl0czwKKyAKKyAvLyBOdWxsYWJsZSB0eXBlcworIHRlbXBsYXRlIDx0eXBlbmFt ZSBJbm5lclR5cGU+Cistc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPAorLSAgICBJRExOdWxsYWJs ZTxJbm5lclR5cGU+LAorLSAgICB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZl90PCFOYXRpdmVWYWx1 ZVRyYWl0czxJbm5lclR5cGU+OjpoYXNfbnVsbF92YWx1ZT4+CisrICByZXF1aXJlcyghTmF0aXZl VmFsdWVUcmFpdHM8SW5uZXJUeXBlPjo6aGFzX251bGxfdmFsdWUpCisrc3RydWN0IE5hdGl2ZVZh bHVlVHJhaXRzPElETE51bGxhYmxlPElubmVyVHlwZT4+CisgICAgIDogcHVibGljIE5hdGl2ZVZh bHVlVHJhaXRzQmFzZTxJRExOdWxsYWJsZTxJbm5lclR5cGU+PiB7CisgICAvLyBodHRwczovL3dl YmlkbC5zcGVjLndoYXR3Zy5vcmcvI2VzLW51bGxhYmxlLXR5cGUKKyAgIHVzaW5nIEltcGxUeXBl ID0KK0BAIC0xNjQyLDkgKzE2MDUsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMTnVs bGFibGU8SURMTnVsbGFibGU8VD4+PjsKKyAKKyAvLyBPcHRpb25hbCB0eXBlcworIHRlbXBsYXRl IDx0eXBlbmFtZSBUPgorLXN0cnVjdCBOYXRpdmVWYWx1ZVRyYWl0czxJRExPcHRpb25hbDxUPiwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjplbmFibGVfaWZfdDxzdGQ6 OmlzX2FyaXRobWV0aWM8CistICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBO YXRpdmVWYWx1ZVRyYWl0czxUPjo6SW1wbFR5cGU+Ojp2YWx1ZT4+CisrICByZXF1aXJlcyBzdGQ6 OmlzX2FyaXRobWV0aWNfdjx0eXBlbmFtZSBOYXRpdmVWYWx1ZVRyYWl0czxUPjo6SW1wbFR5cGU+ Cisrc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzPElETE9wdGlvbmFsPFQ+PgorICAgICA6IHB1Ymxp YyBOYXRpdmVWYWx1ZVRyYWl0c0Jhc2U8dHlwZW5hbWUgTmF0aXZlVmFsdWVUcmFpdHM8VD46Oklt cGxUeXBlPiB7CisgICB1c2luZyBJbXBsVHlwZSA9IHR5cGVuYW1lIE5hdGl2ZVZhbHVlVHJhaXRz PFQ+OjpJbXBsVHlwZTsKKyAKK0BAIC0xNjY2LDkgKzE2MjgsOCBAQCBzdHJ1Y3QgTmF0aXZlVmFs dWVUcmFpdHM8SURMT3B0aW9uYWw8VD4sCisgfTsKKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4K Ky1zdHJ1Y3QgTmF0aXZlVmFsdWVUcmFpdHM8SURMT3B0aW9uYWw8VD4sCistICAgICAgICAgICAg ICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmX3Q8c3RkOjppc19wb2ludGVyPAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW5hbWUgTmF0aXZlVmFsdWVUcmFpdHM8 VD46OkltcGxUeXBlPjo6dmFsdWU+PgorKyAgcmVxdWlyZXMgc3RkOjppc19wb2ludGVyX3Y8dHlw ZW5hbWUgTmF0aXZlVmFsdWVUcmFpdHM8VD46OkltcGxUeXBlPgorK3N0cnVjdCBOYXRpdmVWYWx1 ZVRyYWl0czxJRExPcHRpb25hbDxUPj4KKyAgICAgOiBwdWJsaWMgTmF0aXZlVmFsdWVUcmFpdHNC YXNlPHR5cGVuYW1lIE5hdGl2ZVZhbHVlVHJhaXRzPFQ+OjpJbXBsVHlwZT4geworICAgdXNpbmcg SW1wbFR5cGUgPSB0eXBlbmFtZSBOYXRpdmVWYWx1ZVRyYWl0czxUPjo6SW1wbFR5cGU7CisgCgpk aWZmIC0tZ2l0IGEvY2hyb21pdW0tMTIzLXdvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRf YmluZGluZy5wYXRjaCBiL2Nocm9taXVtLTEyMy13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1 cmVkX2JpbmRpbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk4 ZmJhZAotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMy13b3JrYXJvdW5kX2NsYW5nX2J1 Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2gKQEAgLTAsMCArMSw3OCBAQAorZGlmZiAtdXAgY2hy b21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0ZXIuY2Mud29y a2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nIGNocm9taXVtLTExNS4wLjU3OTAu MjQvbWVkaWEvYmFzZS9jZG1fcHJvbWlzZV9hZGFwdGVyLmNjCistLS0gY2hyb21pdW0tMTE1LjAu NTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0ZXIuY2Mud29ya2Fyb3VuZF9jbGFu Z19idWctc3RydWN0dXJlZF9iaW5kaW5nCTIwMjMtMDYtMDcgMjE6NDg6MzcuMDAwMDAwMDAwICsw MjAwCisrKysgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2Fk YXB0ZXIuY2MJMjAyMy0wNi0xNyAxNjo1MzoyMC4yMTY2Mjg1NTcgKzAyMDAKK0BAIC05NCw3ICs5 NCw5IEBAIHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6OlJlamVjdFByb21pc2UodWkKKyB2b2lkIENk bVByb21pc2VBZGFwdGVyOjpDbGVhcihDbGVhclJlYXNvbiByZWFzb24pIHsKKyAgIC8vIFJlamVj dCBhbGwgb3V0c3RhbmRpbmcgcHJvbWlzZXMuCisgICBEQ0hFQ0sodGhyZWFkX2NoZWNrZXJfLkNh bGxlZE9uVmFsaWRUaHJlYWQoKSk7CistICBmb3IgKGF1dG8mIFtwcm9taXNlX2lkLCBwcm9taXNl XSA6IHByb21pc2VzXykgeworKyAgZm9yIChhdXRvJiBbcF9pLCBwX2VdIDogcHJvbWlzZXNfKSB7 CisrICAgIGF1dG8mIHByb21pc2VfaWQgPSBwX2k7CisrICAgIGF1dG8mIHByb21pc2UgPSBwX2U7 CisgICAgIFRSQUNFX0VWRU5UX05FU1RBQkxFX0FTWU5DX0VORDEoCisgICAgICAgICAibWVkaWEi LCAiQ2RtUHJvbWlzZSIsIFRSQUNFX0lEX1dJVEhfU0NPUEUoIkNkbVByb21pc2UiLCBwcm9taXNl X2lkKSwKKyAgICAgICAgICJzdGF0dXMiLCAiY2xlYXJlZCIpOworZGlmZiAtdXAgY2hyb21pdW0t MTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3Jr ZXJfY29udGV4dF93cmFwcGVyLmNjLm1lIGNocm9taXVtLTExNS4wLjU3OTAuMzIvY29udGVudC9i cm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRleHRfd3JhcHBlci5jYwor LS0tIGNocm9taXVtLTExNS4wLjU3OTAuMzIvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2Vy L3NlcnZpY2Vfd29ya2VyX2NvbnRleHRfd3JhcHBlci5jYy5tZQkyMDIzLTA2LTE5IDA4OjA0OjAy LjI4NzA3MjcyMiArMDIwMAorKysrIGNocm9taXVtLTExNS4wLjU3OTAuMzIvY29udGVudC9icm93 c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRleHRfd3JhcHBlci5jYwkyMDIz LTA2LTE5IDA4OjE4OjI0LjU3NjgxNDk1MCArMDIwMAorQEAgLTEzOTMsNyArMTM5Myw4IEBAIHZv aWQgU2VydmljZVdvcmtlckNvbnRleHRXcmFwcGVyOjpNYXliZVAKKyAgICAgcmV0dXJuOworICAg fQorIAorLSAgYXV0byBbZG9jdW1lbnRfdXJsLCBrZXksIGNhbGxiYWNrXSA9IHN0ZDo6bW92ZSgq cmVxdWVzdCk7CisrICBhdXRvIFtkX3UsIGtleSwgY2FsbGJhY2tdID0gc3RkOjptb3ZlKCpyZXF1 ZXN0KTsKKysgIGF1dG8gZG9jdW1lbnRfdXJsID0gZF91OworIAorICAgRENIRUNLKGRvY3VtZW50 X3VybC5pc192YWxpZCgpKTsKKyAgIFRSQUNFX0VWRU5UMSgiU2VydmljZVdvcmtlciIsCitkaWZm IC11cCBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2Nv cmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGhtLmNjLnRoYW4gY2hyb21pdW0tMTIx LjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dy aWRfbGF5b3V0X2FsZ29yaXRobS5jYworLS0tIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlkX2xheW91dF9hbGdvcml0 aG0uY2MudGhhbgkyMDIzLTEyLTE5IDE3OjU3OjU2LjIwNTE5NzI0NiArMDEwMAorKysrIGNocm9t aXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQv Z3JpZC9ncmlkX2xheW91dF9hbGdvcml0aG0uY2MJMjAyMy0xMi0xOSAxODoxMDoxMy43Nzg2MzQ1 MzEgKzAxMDAKK0BAIC0zNTI3LDggKzM1MjcsOCBAQCB2b2lkIEdyaWRMYXlvdXRBbGdvcml0aG06 OlBsYWNlR3JpZEl0ZW1zCisgICBEQ0hFQ0sob3V0X3Jvd19icmVha19iZXR3ZWVuKTsKKyAKKyAg IGNvbnN0IGF1dG8mIGNvbnRhaW5lcl9zcGFjZSA9IEdldENvbnN0cmFpbnRTcGFjZSgpOworLSAg Y29uc3QgYXV0byYgW2dyaWRfaXRlbXMsIGxheW91dF9kYXRhLCB0cmVlX3NpemVdID0gc2l6aW5n X3RyZWUuVHJlZVJvb3REYXRhKCk7CistCisrICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbF9k LCB0cmVlX3NpemVdID0gc2l6aW5nX3RyZWUuVHJlZVJvb3REYXRhKCk7CisrICBjb25zdCBhdXRv JiBsYXlvdXRfZGF0YSA9IGxfZDsKKyAgIGNvbnN0IGF1dG8qIGNhY2hlZF9sYXlvdXRfc3VidHJl ZSA9IGNvbnRhaW5lcl9zcGFjZS5HZXRHcmlkTGF5b3V0U3VidHJlZSgpOworICAgY29uc3QgYXV0 byBjb250YWluZXJfd3JpdGluZ19kaXJlY3Rpb24gPQorICAgICAgIGNvbnRhaW5lcl9zcGFjZS5H ZXRXcml0aW5nRGlyZWN0aW9uKCk7CitAQCAtMzY5MSw4ICszNjkxLDkgQEAgdm9pZCBHcmlkTGF5 b3V0QWxnb3JpdGhtOjpQbGFjZUdyaWRJdGVtcworIAorICAgLy8gVE9ETyhpa2lscGF0cmljayk6 IFVwZGF0ZSB8U2V0SGFzU2VlbkFsbENoaWxkcmVufCBhbmQgZWFybHkgZXhpdCBpZiB0cnVlLgor ICAgY29uc3QgYXV0byYgY29uc3RyYWludF9zcGFjZSA9IEdldENvbnN0cmFpbnRTcGFjZSgpOwor LSAgY29uc3QgYXV0byYgW2dyaWRfaXRlbXMsIGxheW91dF9kYXRhLCB0cmVlX3NpemVdID0gc2l6 aW5nX3RyZWUuVHJlZVJvb3REYXRhKCk7CistCisrICBjb25zdCBhdXRvJiBbZ19pLCBsX2QsIHRy ZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKKysgIGNvbnN0IGF1dG8mIGdy aWRfaXRlbXMgPSBnX2k7CisrICBjb25zdCBhdXRvJiBsYXlvdXRfZGF0YSA9IGxfZDsKKyAgIGNv bnN0IGF1dG8qIGNhY2hlZF9sYXlvdXRfc3VidHJlZSA9IGNvbnN0cmFpbnRfc3BhY2UuR2V0R3Jp ZExheW91dFN1YnRyZWUoKTsKKyAgIGNvbnN0IGF1dG8gY29udGFpbmVyX3dyaXRpbmdfZGlyZWN0 aW9uID0KKyAgICAgICBjb25zdHJhaW50X3NwYWNlLkdldFdyaXRpbmdEaXJlY3Rpb24oKTsKK2Rp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJlZGljdG9ycy9s Y3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2FjaGVfbWFuYWdl ci5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMv bGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFn ZXIuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3Rv cnMvbGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21h bmFnZXIuY2MubWUJMjAyNC0wMi0yNSAxODowMzo1MS42NTQ1Nzk1NzkgKzAxMDAKKysrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMvbGNwX2NyaXRpY2Fs X3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFnZXIuY2MJMjAyNC0w Mi0yNSAxODoxMjo0NS4xNDQyODc3NTAgKzAxMDAKK0BAIC0xMzYsNyArMTM2LDggQEAgdm9pZCBQ cmV3YXJtSHR0cERpc2tDYWNoZU1hbmFnZXI6Ok1heWJlUAorICAgc3RkOjpwYWlyPHVybDo6T3Jp Z2luLCBHVVJMPiBvcmlnaW5fYW5kX3VybDsKKyAgIHN0ZDo6c3dhcChvcmlnaW5fYW5kX3VybCwg cXVldWVkX2pvYnNfLmZyb250KCkpOworICAgcXVldWVkX2pvYnNfLnBvcCgpOworLSAgY29uc3Qg YXV0byYgW29yaWdpbiwgdXJsXSA9IG9yaWdpbl9hbmRfdXJsOworKyAgY29uc3QgYXV0byYgW29y aWdpbiwgdV0gPSBvcmlnaW5fYW5kX3VybDsKKysgIGNvbnN0IGF1dG8mIHVybCA9IHU7CisgICBU UkFDRV9FVkVOVF9XSVRIX0ZMT1cxKAorICAgICAgICJsb2FkaW5nIiwgIlByZXdhcm1IdHRwRGlz a0NhY2hlTWFuYWdlcjo6TWF5YmVQcm9jZXNzTmV4dFF1ZXVlZEpvYiIsCisgICAgICAgVFJBQ0Vf SURfTE9DQUwodGhpcyksCistLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2NvbW1v bi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtfcmVxdWVzdF91cmxfbG9hZGVyX2NsaWVudC5j Yy5vcmlnCTIwMjQtMDMtMTUgMTU6Mzc6NTguMjAxMjA5MzU0ICswMTAwCisrKysgY2hyb21pdW0t MTIzLjAuNjMxMi40Ni9jb250ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtf cmVxdWVzdF91cmxfbG9hZGVyX2NsaWVudC5jYwkyMDI0LTAzLTE1IDE1OjQwOjM1LjAwMzI1MDcy MyArMDEwMAorQEAgLTYzOSw3ICs2MzksOCBAQAorICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor ICAgfQorIAorLSAgYXV0byBbcmVzdWx0LCByZWFkX2J1ZmZlcl0gPSBCZWdpblJlYWREYXRhKCk7 CisrICBhdXRvIFtyLCByZWFkX2J1ZmZlcl0gPSBCZWdpblJlYWREYXRhKCk7CisrICBhdXRvIHJl c3VsdCA9IHI7CisgICBUUkFDRV9FVkVOVF9XSVRIX0ZMT1cyKAorICAgICAgICJTZXJ2aWNlV29y a2VyIiwKKyAgICAgICAiU2VydmljZVdvcmtlclJhY2VOZXR3b3JrUmVxdWVzdFVSTExvYWRlckNs aWVudDo6UmVhZEFuZFdyaXRlIiwKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS5zcGVjIGIvY2hyb21p dW0uc3BlYwppbmRleCA4Njc2ZGQ0Li4zNzU4NDNmIDEwMDY0NAotLS0gYS9jaHJvbWl1bS5zcGVj CisrKyBiL2Nocm9taXVtLnNwZWMKQEAgLTMwMyw3ICszMDMsNyBAQAogJWVuZGlmCiAKIE5hbWU6 CWNocm9taXVtJXtjaHJvbWl1bV9jaGFubmVsfQotVmVyc2lvbjogMTIyLjAuNjI2MS4xMjgKK1Zl cnNpb246IDEyMy4wLjYzMTIuNTgKIFJlbGVhc2U6IDElez9kaXN0fQogU3VtbWFyeTogQSBXZWJL aXQgKEJsaW5rKSBwb3dlcmVkIHdlYiBicm93c2VyIHRoYXQgR29vZ2xlIGRvZXNuJ3Qgd2FudCB5 b3UgdG8gdXNlCiBVcmw6IGh0dHA6Ly93d3cuY2hyb21pdW0ub3JnL0hvbWUKQEAgLTM2Niw3ICsz NjYsNyBAQCBQYXRjaDEwMTogY2hyb21pdW0tMTA4LWVsNy13YXlsYW5kLXN0cm5kdXAtZXJyb3Iu cGF0Y2gKIAogIyBXb3JrYXJvdW5kIGZvciBvbGQgY2xhbmcKICMgZXJyb3I6IGRlZmF1bHRpbmcg dGhpcyBkZWZhdWx0IGNvbnN0cnVjdG9yIHdvdWxkIGRlbGV0ZSBpdCBhZnRlciBpdHMgZmlyc3Qg ZGVjbGFyYXRpb24KLVBhdGNoMTAyOiBjaHJvbWl1bS0xMjItZWw3LWRlZmF1bHQtY29uc3RydWN0 b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbi5wYXRjaAorUGF0Y2gxMDI6IGNocm9taXVtLTEy My1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uLnBhdGNo CiAKICMgV29yayBhcm91bmQgb2xkIGFuZCBtaXNzaW5nIGhlYWRlcnMgb24gRVBFTDcKIFBhdGNo MTAzOiBjaHJvbWl1bS0xMTAtZXBlbDctb2xkLWhlYWRlcnMtd29ya2Fyb3VuZHMucGF0Y2gKQEAg LTM5Myw3ICszOTMsNyBAQCBQYXRjaDEwOTogY2hyb21pdW0tMTE0LXdpcmVsZXNzLWVsNy5wYXRj aAogUGF0Y2gxMTA6IGNocm9taXVtLTExNS1idWlsZGZsYWctZWw3LnBhdGNoCiBQYXRjaDExMTog Y2hyb21pdW0tMTIyLWVsNy1pbmxpbmUtZnVuY3Rpb24ucGF0Y2gKIFBhdGNoMTEzOiBjaHJvbWl1 bS0xMjEtZWw3LWNsYW5nLXZlcnNpb24td2FybmluZy5wYXRjaAotUGF0Y2gxMTQ6IGNocm9taXVt LTEyMC1lbDctY2xhbmctYnVpbGQtZmFpbHVyZS5wYXRjaAorUGF0Y2gxMTQ6IGNocm9taXVtLTEy My1lbDctY2xhbmctYnVpbGQtZmFpbHVyZS5wYXRjaAogCiAjIHN5c3RlbSBmZm1wZWcKICMgbmVl ZCBmb3Igb2xkIGZmbXBlZyA1Lnggb24gZXBlbDkKQEAgLTQxMywxNCArNDEzLDE0IEBAIFBhdGNo MTQwOiBjaHJvbWl1bS0xMTgtZG1hX2J1Zl9leHBvcnRfc3luY19maWxlLWNvbmZsaWN0LnBhdGNo CiAKICMgZml4ZXMgZm9yIG9sZCBjbGFuZyB2ZXJzaW9uIGluIGZlZG9yYSA8IDM4IGVuZCBlcGVs IDwgOCAob2xkIGNsYW5nIDw9IDE1KQogIyBjb21waWxlciBidWlsZCBlcnJvcnMsIG5vIG1hdGNo aW5nIGNvbnN0cnVjdG9yIGZvciBpbml0aWFsaXphdGlvbgotUGF0Y2gzMDA6IGNocm9taXVtLTEy Mi1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRjaAorUGF0Y2gzMDA6IGNocm9taXVtLTEyMy1u b19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRjaAogUGF0Y2gzMDE6IGNocm9taXVtLTExNS1jb21w aWxlci1Ta0NvbG9yNGYucGF0Y2gKIAogIyB3b3JrYXJvdW5kIGZvciBjbGFuZyBidWcsIGh0dHBz Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC9pc3N1ZXMvNTc4MjYKLVBhdGNoMzAyOiBj aHJvbWl1bS0xMjItd29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNo CitQYXRjaDMwMjogY2hyb21pdW0tMTIzLXdvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRf YmluZGluZy5wYXRjaAogCiAjIG1pc3NpbmcgdHlwZW5hbWUKLVBhdGNoMzAzOiBjaHJvbWl1bS0x MjItdHlwZW5hbWUucGF0Y2gKK1BhdGNoMzAzOiBjaHJvbWl1bS0xMjMtdHlwZW5hbWUucGF0Y2gK IAogIyBlcnJvcjogaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgZXhwcmVzc2lvbgogUGF0Y2gz MDQ6IGNocm9taXVtLTExNy1zdHJpbmctY29udmVydC5wYXRjaApAQCAtNDM0LDM1ICs0MzQsMjkg QEAgUGF0Y2gzMDY6IGNocm9taXVtLTExOS1hc3NlcnQucGF0Y2gKICMgY29tcGlsZXIgZXJyb3Jz IG9uIGVwZWwKICMgcmV2ZXJ0IGl0IGZvciBvbGQgY2xhbmcgb24gcmhlbCBhbmQgZjM4CiBQYXRj aDMwNzogY2hyb21pdW0tMTIxLXY4LWMrKzIwLXAxLnBhdGNoCi1QYXRjaDMwODogY2hyb21pdW0t MTIxLXY4LWMrKzIwLnBhdGNoCi1QYXRjaDMwOTogY2hyb21pdW0tMTIyLWNvbnN0ZXhwci5wYXRj aAorUGF0Y2gzMDg6IGNocm9taXVtLTEyMy12OC1jKysyMC5wYXRjaAorUGF0Y2gzMDk6IGNocm9t aXVtLTEyMy1jb25zdGV4cHIucGF0Y2gKIAogIyBtaXNzaW5nIGluY2x1ZGUgaGVhZGVyIGZpbGVz Ci1QYXRjaDMxMDogY2hyb21pdW0tMTIyLW1pc3NpbmctaGVhZGVyLWZpbGVzLnBhdGNoCitQYXRj aDMxMDogY2hyb21pdW0tMTIzLW1pc3NpbmctaGVhZGVyLWZpbGVzLnBhdGNoCiAKICMgY2xhbmcg d2FybmluZ3MKIFBhdGNoMzExOiBjaHJvbWl1bS0xMTUtY2xhbmctd2FybmluZ3MucGF0Y2gKIAog IyBlbmFibGUgZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcKLVBhdGNoMzEyOiBjaHJvbWl1bS0xMTkt ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcucGF0Y2gKK1BhdGNoMzEyOiBjaHJvbWl1bS0xMjMtZnN0 YWNrLXByb3RlY3Rvci1zdHJvbmcucGF0Y2gKIAotIyB1cHN0cmVhbTogbGlic3RkYysrOiBmaXgg c3RhdGljIGFzc2VydGlvbiBpbiBOb2RlVXVpZEVxdWFsaXR5Ci1QYXRjaDMxMzogY2hyb21pdW0t MTIyLXN0YXRpYy1hc3NlcnQucGF0Y2gKKyMgcnVzdCBpcyBvbGQsIGZ1bmN0aW9uIG9yIGFzc29j aWF0ZWQgaXRlbSBub3QgZm91bmQgaW4gYE9zU3RyYAorUGF0Y2gzMTM6IGNocm9taXVtLTEyMy1y dXN0LWNsYXBfbGV4LnBhdGNoCiAKIFBhdGNoMzE0OiBjaHJvbWl1bS0xMjItY2xhbmcxNi1idWls ZGZsYWdzLnBhdGNoCiAKICMgYXNzaWdubWVudC1leHByZXNzaW9ucyBub3Qgc3Vwb3J0IGluIHB5 dGhvbiA8IDMuOCBvbiBlbCA3LzgKLVBhdGNoMzE1OiBjaHJvbWl1bS0xMjItcHl0aG9uMy1hc3Np Z25tZW50LWV4cHJlc3Npb25zLnBhdGNoCitQYXRjaDMxNTogY2hyb21pdW0tMTIzLXB5dGhvbjMt YXNzaWdubWVudC1leHByZXNzaW9ucy5wYXRjaAogCiAjIGFkZCAtZnRyaXZpYWwtYXV0by12YXIt aW5pdD16ZXJvIGFuZCAtZndyYXB2CiBQYXRjaDMxNjogY2hyb21pdW0tMTIyLWNsYW5nLWJ1aWxk LWZsYWdzLnBhdGNoCiAKLSMgdXBzdHJlYW06IGlic3RkYysrOiBkbyBub3QgcmVxdWlyZSBpbmNs dWRpbmcgdW5pcXVlX3B0ciBpbiBoZWFkZXIKLVBhdGNoMzE3OiBjaHJvbWl1bS0xMjItdW5pcXVl X3B0ci5wYXRjaAotCi0jIGJ1aWxkIGVycm9yCi1QYXRjaDM1MTogY2hyb21pdW0tMTIxLW1uZW1v bmljLWVycm9yLnBhdGNoCi0KICMgV29ya2Fyb3VuZCBmb3IgaHR0cHM6Ly9idWd6aWxsYS5yZWRo YXQuY29tL3Nob3dfYnVnLmNnaT9pZD0yMjM5NTIzCiAjIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v cmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTExNDU1ODEjYzYwCiAjIERpc2FibGUgQlRJ IHVudGlsIHRoaXMgaXMgZml4ZWQgdXBzdHJlYW0uCkBAIC05NDEsNyArOTM1LDcgQEAgUmVxdWly ZXM6IGNocm9taXVtLWNvbW1vbiV7X2lzYX0gPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KICVpZiAw JXs/cmhlbH0gPT0gNwogRXhjbHVzaXZlQXJjaDogeDg2XzY0CiAlZWxzZQotJWlmIDAlez9mZWRv cmF9ID49IDQwCislaWYgMCV7P2ZlZG9yYX0gPiA0MAogRXhjbHVzaXZlQXJjaDogeDg2XzY0IGFh cmNoNjQgcHBjNjRsZQogJWVsc2UKIEV4Y2x1c2l2ZUFyY2g6IHg4Nl82NCBhYXJjaDY0CkBAIC0x MTY2LDcgKzExNjAsNyBAQCB1ZGV2LgogJWVuZGlmCiAKICVpZiAhICV7YnVuZGxlZmZtcGVnZnJl ZX0KLSVpZiAwJXs/cmhlbH0gPT0gOSB8fCAwJXs/ZmVkb3JhfSA9PSAzNworJWlmIDAlez9yaGVs fSA9PSA5CiAlcGF0Y2ggLVAxMTUgLXAxIC1iIC5mZm1wZWctNS54LWR1cmF0aW9uCiAlZW5kaWYK ICVwYXRjaCAtUDExNiAtcDEgLWIgLnByb3AtY29kZWNzCkBAIC0xMTg5LDcgKzExODMsNyBAQCB1 ZGV2LgogJXBhdGNoIC1QMTEwIC1wMSAtYiAuYnVpbGRmbGFnLWVsNwogJXBhdGNoIC1QMTExIC1w MSAtYiAuaW5saW5lLWZ1bmN0aW9uLWVsNwogJXBhdGNoIC1QMTEzIC1wMSAtYiAuZWw3LWNsYW5n LXZlcnNpb24td2FybmluZwotJXBhdGNoIC1QMTE0IC1wMSAtUiAtYiAuY2xhbmctYnVpbGQtZmFp bHVyZQorJXBhdGNoIC1QMTE0IC1wMSAtYiAuY2xhbmctYnVpbGQtZmFpbHVyZQogJXBhdGNoIC1Q MzAwIC1wMSAtYiAubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IKICVwYXRjaCAtUDMwMSAtcDEgLWIg Lndvcmthcm91bmRfY2xhbmctU2tDb2xvcjRmCiAlcGF0Y2ggLVAzMDIgLXAxIC1iIC53b3JrYXJv dW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcKQEAgLTEyMTcsMTkgKzEyMTEsMjAgQEAg dWRldi4KICVwYXRjaCAtUDMwNyAtcDEgLVIgLWIgLnY4LWMrKzIwCiAlcGF0Y2ggLVAzMDggLXAx IC1SIC1iIC52OC1jKysyMAogJXBhdGNoIC1QMzA5IC1wMSAtYiAuY29uc3RleHByCi0lcGF0Y2gg LVAzMTMgLXAxIC1iIC5zdGF0aWMtYXNzZXJ0CiAlcGF0Y2ggLVAzMTQgLXAxIC1iIC5jbGFuZzE2 LWJ1aWxkZmxhZwogJWVuZGlmCiAKICVwYXRjaCAtUDMxMCAtcDEgLWIgLm1pc3NpbmctaGVhZGVy LWZpbGVzCiAlcGF0Y2ggLVAzMTEgLXAxIC1iIC5jbGFuZy13YXJuaW5ncwogJXBhdGNoIC1QMzEy IC1wMSAtYiAuZnN0YWNrLXByb3RlY3Rvci1zdHJvbmcKLSVwYXRjaCAtUDMxNyAtcDEgLWIgLnVu aXF1ZV9wdHIucGF0Y2gKKworJWlmIDAlez9yaGVsfSAmJiAwJXs/cmhlbH0gPCAxMAorJXBhdGNo IC1QMzEzIC1wMSAtYiAucnVzdC1jbGFwX2xleAorJWVuZGlmCiAKICVpZiAwJXs/cmhlbH0gPj0g OCB8fCAwJXs/ZmVkb3JhfQogJXBhdGNoIC1QMzE2IC1wMSAtYiAuY2xhbmctYnVpbGQtZmxhZ3MK ICVlbmRpZgotJXBhdGNoIC1QMzUxIC1wMSAtYiAubW5lbW9uaWMtZXJyb3IKIAogJWlmICV7ZGlz YWJsZV9idGl9CiAlcGF0Y2ggLVAzNTIgLXAxIC1iIC53b3JrYXJvdW5kX2Zvcl9jcmFzaF9vbl9C VElfY2FwYWJsZV9zeXN0ZW0KQEAgLTEzOTEsNiArMTM4Niw3IEBAIGV4cG9ydCBMQU5HPWVuX1VT LlVURi04CiBGTEFHUz0nIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby11bmtub3du LXdhcm5pbmctb3B0aW9uIC1Xbm8tdW51c2VkLWNvbW1hbmQtbGluZS1hcmd1bWVudCcKIEZMQUdT Kz0nIC1Xbm8tdW51c2VkLWJ1dC1zZXQtdmFyaWFibGUgLVduby11bnVzZWQtcmVzdWx0IC1Xbm8t dW51c2VkLWZ1bmN0aW9uIC1Xbm8tdW51c2VkLXZhcmlhYmxlJwogRkxBR1MrPScgLVduby11bnVz ZWQtY29uc3QtdmFyaWFibGUgLVduby11bm5lZWRlZC1pbnRlcm5hbC1kZWNsYXJhdGlvbiAtV25v LXVua25vd24tYXR0cmlidXRlcycKK0ZMQUdTKz0nIC1Xbm8tdW5rbm93bi1wcmFnbWFzJwogJWVu ZGlmCiAKICVpZiAle3N5c3RlbV9idWlsZF9mbGFnc30KQEAgLTIxMTAsNiArMjEwNiwxOSBAQCBn ZXRlbnQgZ3JvdXAgY2hyb21lLXJlbW90ZS1kZXNrdG9wID4vZGV2L251bGwgfHwgZ3JvdXBhZGQg LXIgY2hyb21lLXJlbW90ZS1kZXNrdAogJWVuZGlmCiAKICVjaGFuZ2Vsb2cKKyogV2VkIE1hciAy MCAyMDI0IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+IC0gMTIzLjAuNjMxMi41OC0xCistIHVw ZGF0ZSB0byAxMjMuMC42MzEyLjU4CisgICAqIEhpZ2ggQ1ZFLTIwMjQtMjYyNTogT2JqZWN0IGxp ZmVjeWNsZSBpc3N1ZSBpbiBWOAorICAgKiBNZWRpdW0gQ1ZFLTIwMjQtMjYyNjogT3V0IG9mIGJv dW5kcyByZWFkIGluIFN3aWZ0c2hhZGVyCisgICAqIE1lZGl1bSBDVkUtMjAyNC0yNjI3OiBVc2Ug YWZ0ZXIgZnJlZSBpbiBDYW52YXMKKyAgICogTWVkaXVtIENWRS0yMDI0LTI2Mjg6IEluYXBwcm9w cmlhdGUgaW1wbGVtZW50YXRpb24gaW4gRG93bmxvYWRzCisgICAqIE1lZGl1bSBDVkUtMjAyNC0y NjI5OiBJbmNvcnJlY3Qgc2VjdXJpdHkgVUkgaW4gaU9TCisgICAqIE1lZGl1bSBDVkUtMjAyNC0y NjMwOiBJbmFwcHJvcHJpYXRlIGltcGxlbWVudGF0aW9uIGluIGlPUworICAgKiBMb3cgQ1ZFLTIw MjQtMjYzMTogSW5hcHByb3ByaWF0ZSBpbXBsZW1lbnRhdGlvbiBpbiBpT1MKKworKiBGcmkgTWFy IDE1IDIwMjQgVGhhbiBOZ28gPHRoYW5AcmVkaGF0LmNvbT4gLSAxMjMuMC42MzEyLjQ2LTEKKy0g dXBkYXRlIHRvIDEyMy4wLjYzMTIuNDYKKwogKiBXZWQgTWFyIDEzIDIwMjQgVGhhbiBOZ28gPHRo YW5AcmVkaGF0LmNvbT4gLSAxMjIuMC42MjYxLjEyOC0xCiAtIHVwc3RyZWFtIHNlY3VyaXR5IHJl bGVhc2UgMTIyLjAuNjI2MS4xMjgKICAgICogSGlnaCBDVkUtMjAyNC0yNDAwOiBVc2UgYWZ0ZXIg ZnJlZSBpbiBQZXJmb3JtYW5jZSBNYW5hZ2VyCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJj ZXMKaW5kZXggODI3ZTVkNC4uYmNlNDA3MCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3Vy Y2VzCkBAIC0yLDQgKzIsNCBAQCBTSEE1MTIgKG5vZGUtdjIwLjYuMS1saW51eC1hcm02NC50YXIu eHopID0gYWRmY2FmMmMyMjYxNDc5N2ZkNjlmYjQ2ZDk0YzFjYmY2NGRlYQogU0hBNTEyIChub2Rl LXYyMC42LjEtbGludXgteDY0LnRhci54eikgPSA3ZTE1YzA1MDQxYTlhNTBmMDA0NjI2NmFhZGIy ZTA5MmE1YWVmYmVjMTliZTFjN2M4MDk0NzFhZGQ1MjBjYjU3YzdkZjNjNDdkODhiMTg4OGIyOWJm Mjk3OWRjYTNjOTJhZGRkZmQ5NjUzNzBmYTJhOWRhNGVhMDIxODY0NjRmZAogU0hBNTEyIChsaW51 eC1hcm02NC0wLjE5LjIudGd6KSA9IDhhMGQ4ZmVjNjc4NmZmZmNkNjk1NGQwMDgyMDAzN2E1NWQ2 MWU2MDc2MmM3NDMwMGRmMDgwMWY4ZGIyNzA1NzU2MmMyMjFhMDYzYmVkZmI4ZGY1NmFmOWJhODBh YmIzNjYzMzY5ODdlODgxNzgyYzU5OTZlNmY4NzFhYmQzZGM2CiBTSEE1MTIgKGxpbnV4LXg2NC0w LjE5LjIudGd6KSA9IGEzMWNjNzRjNGJmYTU0ZjliNzVkNzM1YTFjZmM5NDRkM2I1ZWZiN2MwNmJm YmE5NTQyZGE5YTY0MmFlMGIyZDIzNWVhMDBhZTg0ZDNhZDA1NzJjNDA2NDA1MTEwZmU3YjYxMzc3 YWYwZmQxNTgwMzgwNmVmNzhkMjBmYzZmMDVkCi1TSEE1MTIgKGNocm9taXVtLTEyMi4wLjYyNjEu MTI4LWNsZWFuLnRhci54eikgPSA1MjFkOTBiYWI1ZDA3MWJmMzNkYmEwMTRiZDI1OGY1NDNkYjA1 YTg2MDZiYzFjMDI3OWVlOTRhYzNiYWFjODI2MjliYTRkNTc1NzljM2VhYTg4ODVlNzg5YTU1M2I2 ZTZkOTE2MWRiODUyY2NmMjVhNTk2ODZiMTE4NjQwNjA1NAorU0hBNTEyIChjaHJvbWl1bS0xMjMu MC42MzEyLjU4LWNsZWFuLnRhci54eikgPSAxNzQyNDM2MmMxYmYzYWE0NjAyYmY3NTFmMjFiOGYy NDBhMGUwNjFmZGVjZWQxYzNjZWVkNjU2NTMyNmI4YTZiNDNjMTU4ZWI3MjZkOWQ0N2U5Njg4MzMy MDc4OTM4NGIyNjUzMzFiMWFlOTFhOWVjYTA5NWIzODgwNTI1MTRhOAo=