[utilities/krusader] /: refactor: fix variable shadowing
Toni Asensi Esteve <[email protected]> Tue, 4 Aug 2026 20:52:49 +0000 (UTC)
| Newsgroups | gmane.comp.kde.cvs |
|---|---|
| Message-ID | <[email protected]> |
R2l0IGNvbW1pdCBiMGRjYjc4ZDVjZGM3MzE4YTcyZDY4ODA3Y2I3Njc1YWZiOTE1ZjIwIGJ5IFRv bmkgQXNlbnNpIEVzdGV2ZSwgb24gYmVoYWxmIG9mIE1hZ29tZWQgR2FkemhpdW1hcm92LgpDb21t aXR0ZWQgb24gMDQvMDgvMjAyNiBhdCAyMDo1Mi4KUHVzaGVkIGJ5IGFzZW5zaSBpbnRvIGJyYW5j aCAnbWFzdGVyJy4KCnJlZmFjdG9yOiBmaXggdmFyaWFibGUgc2hhZG93aW5nCgoqKlN1bW1hcnk6 KiogUmVzb2x2ZWQgdmFyaWFibGUgc2hhZG93aW5nIHdhcm5pbmdzLgoKKipXaHk6KiogVGhpcyBp cyBwYXJ0IG9mIHRoZSAiSnVuaW9yIEpvYiIgdGFzayB0byBtb2Rlcm5pemUgdGhlIGNvZGViYXNl IGFuZCBjbGVhbiB1cCBjb21waWxlciB3YXJuaW5ncy4gRml4aW5nIHZhcmlhYmxlIHNoYWRvd2lu ZyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpdCBwcmV2ZW50cyBzdWJ0bGUgbG9naWMgZXJyb3JzIHdo ZXJlIGEgbG9jYWwgdmFyaWFibGUgdW5pbnRlbnRpb25hbGx5IGhpZGVzIGEgY2xhc3MgbWVtYmVy IG9yIGFuIG91dGVyIHNjb3BlIHZhcmlhYmxlLCBtYWtpbmcgdGhlIGNvZGUgbW9yZSByb2J1c3Qg YW5kIGVhc2llciB0byByZWFkLgoKKipDaGFuZ2VzOioqCgoqIFJlbmFtZWQgbG9jYWwgdmFyaWFi bGVzIGluIGBhcHBgIGFuZCBgcGx1Z2luc2AgdGhhdCB3ZXJlIHRyaWdnZXJpbmcgYC1Xc2hhZG93 YCB3YXJuaW5ncy4KKiBWZXJpZmllZCB0aGUgZml4IGJ5IGNvbXBpbGluZyB3aXRoIGAtV3NoYWRv d2AgZW5hYmxlZCB1c2luZyBib3RoICoqR0NDKiogKGcrKyAxNi4xLjEpLgoqIFBlcmZvcm1lZCBh IHNtb2tlIHRlc3Qgb2YgdGhlIFVJIChLb25maWd1cmF0b3Igc2V0dGluZ3MgYW5kIFBhbmVsIHJl bmRlcmluZykgdG8gZW5zdXJlIG5vIHJlZ3Jlc3Npb25zIHdlcmUgaW50cm9kdWNlZCBieSByZW5h bWluZy4KCioqUmV2aXNpb246KiogaHR0cHM6Ly9pbnZlbnQua2RlLm9yZy91dGlsaXRpZXMva3J1 c2FkZXIvLS9tZXJnZV9yZXF1ZXN0cy8xODQKCk0gICsxICAgIC0xICAgIENNYWtlTGlzdHMudHh0 Ck0gICs2ICAgIC02ICAgIGFwcC9BY3Rpb25NYW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcApNICAr OSAgICAtMTEgICBhcHAvQm9va01hbi9rcmJvb2ttYXJraGFuZGxlci5jcHAKTSAgKzIgICAgLTIg ICAgYXBwL0RpYWxvZ3MvY2hlY2tzdW1kbGcuY3BwCk0gICsyICAgIC0yICAgIGFwcC9EaWFsb2dz L3BhY2tndWkuY3BwCk0gICsxMCAgIC0xMCAgIGFwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL21hcC5j cHAKTSAgKzYgICAgLTYgICAgYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvc2VnbWVudFRpcC5jcHAK TSAgKzAgICAgLTEgICAgYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvd2lkZ2V0RXZlbnRzLmNwcApN ICArMiAgICAtMiAgICBhcHAvRmlsZVN5c3RlbS9maWxlc3lzdGVtLmNwcApNICArMiAgICAtMiAg ICBhcHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAKTSAgKzMgICAgLTMgICAgYXBw L0ZpbHRlci9hZHZhbmNlZGZpbHRlci5jcHAKTSAgKzMgICAgLTMgICAgYXBwL0ZpbHRlci9maWx0 ZXJ0YWJzLmNwcApNICArMSAgICAtMSAgICBhcHAvRmlsdGVyL2ZpbHRlcnRhYnMuaApNICArMTcg ICAtMTcgICBhcHAvRmlsdGVyL2dlbmVyYWxmaWx0ZXIuY3BwCk0gICsxICAgIC0xICAgIGFwcC9G aWx0ZXIvZ2VuZXJhbGZpbHRlci5oCk0gICsxICAgIC0xICAgIGFwcC9HVUkva2Zua2V5cy5jcHAK TSAgKzEgICAgLTEgICAgYXBwL0dVSS9rZm5rZXlzLmgKTSAgKzE1ICAgLTE1ICAgYXBwL0dVSS9w cm9maWxlbWFuYWdlci5jcHAKTSAgKzEgICAgLTEgICAgYXBwL0dVSS9wcm9maWxlbWFuYWdlci5o Ck0gICsxMiAgIC0xMiAgIGFwcC9Lb25maWd1cmF0b3Iva2dwcm90b2NvbHMuY3BwCk0gICszMCAg IC0yNCAgIGFwcC9Lb25maWd1cmF0b3Iva29uZmlndXJhdG9yaXRlbXMuY3BwCk0gICsyMiAgIC0x MiAgIGFwcC9Lb25maWd1cmF0b3Iva29uZmlndXJhdG9yaXRlbXMuaApNICArMyAgICAtMyAgICBh cHAvS29uZmlndXJhdG9yL2tycmVzdWx0dGFibGUuY3BwCk0gICs5ICAgIC03ICAgIGFwcC9LclZp ZXdlci9saXN0ZXIuY3BwCk0gICsyNiAgIC0yMCAgIGFwcC9LclZpZXdlci9wYW5lbHZpZXdlci5j cHAKTSAgKzIzICAgLTIzICAgYXBwL01vdW50TWFuL2ttb3VudG1hbmd1aS5jcHAKTSAgKzM4ICAg LTQwICAgYXBwL1BhbmVsL1BhbmVsVmlldy9rcnNvcnQuY3BwCk0gICsxNCAgIC0xNCAgIGFwcC9Q YW5lbC9QYW5lbFZpZXcva3J2aWV3cHJvcGVydGllcy5jcHAKTSAgKzIwICAgLTMgICAgYXBwL1Bh bmVsL1BhbmVsVmlldy9rcnZpZXdwcm9wZXJ0aWVzLmgKTSAgKzMgICAgLTMgICAgYXBwL1BhbmVs L2tybGF5b3V0ZmFjdG9yeS5oCk0gICsyICAgIC0yICAgIGFwcC9QYW5lbC9rcnBhbmVsLmgKTSAg KzIgICAgLTQgICAgYXBwL1BhbmVsL2tyc2VhcmNoYmFyLmNwcApNICArOCAgICAtOCAgICBhcHAv UGFuZWwvbGlzdHBhbmVsLmNwcApNICArMyAgICAtMyAgICBhcHAvUGFuZWwvbGlzdHBhbmVsZnJh bWUuY3BwCk0gICsxMiAgIC0xMiAgIGFwcC9QYW5lbC9wYW5lbGNvbnRleHRtZW51LmNwcApNICAr OCAgICAtOSAgICBhcHAvUGFuZWwvcGFuZWxmdW5jLmNwcApNICArMSAgICAtMiAgICBhcHAvU2Vh cmNoL2tyc2VhcmNoZGlhbG9nLmNwcApNICArNyAgICAtNyAgICBhcHAvU2VhcmNoL2tyc2VhcmNo bW9kLmNwcApNICArMTcgICAtMTYgICBhcHAvU3BsaXR0ZXIvY29tYmluZXIuY3BwCk0gICszICAg IC0zICAgIGFwcC9TcGxpdHRlci9zcGxpdHRlcmd1aS5jcHAKTSAgKzQ2ICAgLTQ2ICAgYXBwL1N5 bmNocm9uaXplci9zeW5jaHJvbml6ZXIuY3BwCk0gICsxMCAgIC0xMCAgIGFwcC9TeW5jaHJvbml6 ZXIvc3luY2hyb25pemVyLmgKTSAgKzggICAgLTggICAgYXBwL1N5bmNocm9uaXplci9zeW5jaHJv bml6ZXJ0YXNrLmNwcApNICArMiAgICAtMiAgICBhcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXpl cnRhc2suaApNICArMjEgICAtMTUgICBhcHAvaWNvbi5jcHAKTSAgKzYgICAgLTggICAgYXBwL2ty ZGVidWdsb2dnZXIuY3BwCk0gICszICAgIC01ICAgIGFwcC9rcmRlYnVnbG9nZ2VyLmgKTSAgKzUg ICAgLTUgICAgYXBwL2tydXNhZGVyLmNwcApNICArMiAgICAtMiAgICBhcHAva3J1c2FkZXIuaApN ICArMCAgICAtMSAgICBhcHAvbWFpbi5jcHAKTSAgKzI3MCAgLTI3MCAgcGx1Z2lucy9rcmFyYy9r cmFyYy5jcHAKTSAgKzE5ICAgLTE5ICAgcGx1Z2lucy9rcmFyYy9rcmFyYy5oCgpodHRwczovL2lu dmVudC5rZGUub3JnL3V0aWxpdGllcy9rcnVzYWRlci8tL2NvbW1pdC9iMGRjYjc4ZDVjZGM3MzE4 YTcyZDY4ODA3Y2I3Njc1YWZiOTE1ZjIwCgpkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9D TWFrZUxpc3RzLnR4dAppbmRleCAxMDlmZDdiYjEuLmYwZjdiYTI2ZCAxMDA2NDQKLS0tIGEvQ01h a2VMaXN0cy50eHQKKysrIGIvQ01ha2VMaXN0cy50eHQKQEAgLTE0Myw3ICsxNDMsNyBAQCBpZiAo Q01BS0VfQ09NUElMRVJfSVNfR05VQ1hYKQogICAgIHNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01B S0VfQ1hYX0ZMQUdTfSAtV2FsbCAtV2V4dHJhIC1mbm8tY29tbW9uIC1hbnNpIC1XcGVkYW50aWMg LVdjb252ZXJzaW9uIC1XcG9pbnRlci1hcml0aCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg LVdjYXN0LXF1YWwgLVdjYXN0LWFsaWduIC1Xd3JpdGUtc3RyaW5ncyAtV3N1Z2dlc3Qtb3ZlcnJp ZGUgLVdmbG9hdC1lcXVhbCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgLVdvdmVybG9hZGVk LXZpcnR1YWwgLVd1bmRlZiAtV2xvZ2ljYWwtb3AgLVd1bmluaXRpYWxpemVkIC1XcmVkdW5kYW50 LWRlY2xzIC1Xbm9leGNlcHQgXAotICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm9uLXZpcnR1 YWwtZHRvciAtV2N0b3ItZHRvci1wcml2YWN5IC1XemVyby1hcy1udWxsLXBvaW50ZXItY29uc3Rh bnQgLVdzaWduLXByb21vIiBDQUNIRSBTVFJJTkcgIiIgRk9SQ0UpCisgICAgICAgICAgICAgICAg ICAgICAgICAgLVdub24tdmlydHVhbC1kdG9yIC1XY3Rvci1kdG9yLXByaXZhY3kgLVd6ZXJvLWFz LW51bGwtcG9pbnRlci1jb25zdGFudCAtV3NpZ24tcHJvbW8gLVdzaGFkb3ciIENBQ0hFIFNUUklO RyAiIiBGT1JDRSkKIGVuZGlmKCkKIAogcmVtb3ZlX2RlZmluaXRpb25zKC1EUVRfTk9fS0VZV09S RFMgIC1EUVRfTk9fQ0FTVF9GUk9NX0FTQ0lJIC1EUVRfTk9fQ0FTVF9UT19BU0NJSSkKZGlmZiAt LWdpdCBhL2FwcC9BY3Rpb25NYW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcCBiL2FwcC9BY3Rpb25N YW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcAppbmRleCA1ZWZjNjEzOTguLjYzYmIyNWEwOSAxMDA2 NDQKLS0tIGEvYXBwL0FjdGlvbk1hbi91c2VyYWN0aW9ubGlzdHZpZXcuY3BwCisrKyBiL2FwcC9B Y3Rpb25NYW4vdXNlcmFjdGlvbmxpc3R2aWV3LmNwcApAQCAtMTg2LDE2ICsxODYsMTYgQEAgdm9p ZCBVc2VyQWN0aW9uTGlzdFZpZXc6OnJlbW92ZVNlbGVjdGVkQWN0aW9ucygpCiAKIC8vIFVzZXJB Y3Rpb25MaXN0Vmlld0l0ZW0KIAotVXNlckFjdGlvbkxpc3RWaWV3SXRlbTo6VXNlckFjdGlvbkxp c3RWaWV3SXRlbShRVHJlZVdpZGdldCAqdmlldywgS3JBY3Rpb24gKmFjdGlvbikKLSAgICA6IFFU cmVlV2lkZ2V0SXRlbSh2aWV3KQorVXNlckFjdGlvbkxpc3RWaWV3SXRlbTo6VXNlckFjdGlvbkxp c3RWaWV3SXRlbShRVHJlZVdpZGdldCAqaW5pdFZpZXcsIEtyQWN0aW9uICppbml0QWN0aW9uKQor ICAgIDogUVRyZWVXaWRnZXRJdGVtKGluaXRWaWV3KQogewotICAgIHNldEFjdGlvbihhY3Rpb24p OworICAgIHNldEFjdGlvbihpbml0QWN0aW9uKTsKIH0KIAotVXNlckFjdGlvbkxpc3RWaWV3SXRl bTo6VXNlckFjdGlvbkxpc3RWaWV3SXRlbShRVHJlZVdpZGdldEl0ZW0gKml0ZW0sIEtyQWN0aW9u ICphY3Rpb24pCi0gICAgOiBRVHJlZVdpZGdldEl0ZW0oaXRlbSkKK1VzZXJBY3Rpb25MaXN0Vmll d0l0ZW06OlVzZXJBY3Rpb25MaXN0Vmlld0l0ZW0oUVRyZWVXaWRnZXRJdGVtICppbml0SXRlbSwg S3JBY3Rpb24gKmluaXRBY3Rpb24pCisgICAgOiBRVHJlZVdpZGdldEl0ZW0oaW5pdEl0ZW0pCiB7 Ci0gICAgc2V0QWN0aW9uKGFjdGlvbik7CisgICAgc2V0QWN0aW9uKGluaXRBY3Rpb24pOwogfQog CiBVc2VyQWN0aW9uTGlzdFZpZXdJdGVtOjp+VXNlckFjdGlvbkxpc3RWaWV3SXRlbSgpID0gZGVm YXVsdDsKZGlmZiAtLWdpdCBhL2FwcC9Cb29rTWFuL2tyYm9va21hcmtoYW5kbGVyLmNwcCBiL2Fw cC9Cb29rTWFuL2tyYm9va21hcmtoYW5kbGVyLmNwcAppbmRleCA4NGNjMWZhMDIuLmM1YjcxOTUz YSAxMDA2NDQKLS0tIGEvYXBwL0Jvb2tNYW4va3Jib29rbWFya2hhbmRsZXIuY3BwCisrKyBiL2Fw cC9Cb29rTWFuL2tyYm9va21hcmtoYW5kbGVyLmNwcApAQCAtMjE4LDcgKzIxOCw3IEBAIHZvaWQg S3JCb29rbWFya0hhbmRsZXI6OmV4cG9ydFRvRmlsZSgpCiAgICAgUUZpbGUgZmlsZShmaWxlbmFt ZSk7CiAgICAgaWYgKGZpbGUub3BlbihRSU9EZXZpY2U6OldyaXRlT25seSkpIHsKICAgICAgICAg UVRleHRTdHJlYW0gc3RyZWFtKCZmaWxlKTsKLSAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIFVURi04 IGlzIHVzZWQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgaW4gUVRleHRTdHJlYW0KKyAgICAgICAg Ly8gQnkgZGVmYXVsdCwgVVRGLTggaXMgdXNlZCBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyBpbiBR VGV4dFN0cmVhbQogICAgICAgICBzdHJlYW0gPDwgZG9jLnRvU3RyaW5nKCk7CiAgICAgICAgIGZp bGUuY2xvc2UoKTsKICAgICB9IGVsc2UgewpAQCAtNDQ3LDE4ICs0NDcsMTcgQEAgdm9pZCBLckJv b2ttYXJrSGFuZGxlcjo6YnVpbGRNZW51KEtyQm9va21hcmsgKnBhcmVudCwgUU1lbnUgKm1lbnUs IGludCBkZXB0aCkKICAgICAgICAgICAgIC8vIGFkZCB0aGUgdG9wIDE1IHVybHMKICNkZWZpbmUg TUFYIDE1CiAgICAgICAgICAgICBRTGlzdDxRVXJsPiBsaXN0ID0gX21haW5XaW5kb3ctPnBvcHVs YXJVcmxzKCktPmdldE1vc3RQb3B1bGFyVXJscyhNQVgpOwotICAgICAgICAgICAgUUxpc3Q8UVVy bD46Okl0ZXJhdG9yIGl0OwotICAgICAgICAgICAgZm9yIChpdCA9IGxpc3QuYmVnaW4oKTsgaXQg IT0gbGlzdC5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgZm9yIChjb25zdCBRVXJsICZ1cmwg OiBsaXN0KSB7CiAgICAgICAgICAgICAgICAgUVN0cmluZyBuYW1lOwotICAgICAgICAgICAgICAg IGlmICgoKml0KS5pc0xvY2FsRmlsZSgpKQotICAgICAgICAgICAgICAgICAgICBuYW1lID0gKCpp dCkucGF0aCgpOworICAgICAgICAgICAgICAgIGlmICh1cmwuaXNMb2NhbEZpbGUoKSkKKyAgICAg ICAgICAgICAgICAgICAgbmFtZSA9IHVybC5wYXRoKCk7CiAgICAgICAgICAgICAgICAgZWxzZQot ICAgICAgICAgICAgICAgICAgICBuYW1lID0gKCppdCkudG9EaXNwbGF5U3RyaW5nKCk7Ci0gICAg ICAgICAgICAgICAgLy8gbm90ZTogdGhlc2UgYm9va21hcmsgYXJlIHB1dCBpbnRvIHRoZSBwcml2 YXRlIGNvbGxlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IHVybC50b0Rpc3BsYXlT dHJpbmcoKTsKKyAgICAgICAgICAgICAgICAvLyBOT1RFOiB0aGVzZSBib29rbWFyayBhcmUgcHV0 IGludG8gdGhlIHByaXZhdGUgY29sbGVjdGlvbgogICAgICAgICAgICAgICAgIC8vIGFzIHRvIG5v dCBzcGFtIHRoZSBnZW5lcmFsIGNvbGxlY3Rpb24KICAgICAgICAgICAgICAgICBLckJvb2ttYXJr ICpibSA9IEtyQm9va21hcms6OmdldEV4aXN0aW5nQm9va21hcmsobmFtZSwgX3ByaXZhdGVDb2xs ZWN0aW9uKTsKICAgICAgICAgICAgICAgICBpZiAoIWJtKQotICAgICAgICAgICAgICAgICAgICBi bSA9IG5ldyBLckJvb2ttYXJrKG5hbWUsICppdCwgX3ByaXZhdGVDb2xsZWN0aW9uKTsKKyAgICAg ICAgICAgICAgICAgICAgYm0gPSBuZXcgS3JCb29rbWFyayhuYW1lLCB1cmwsIF9wcml2YXRlQ29s bGVjdGlvbik7CiAgICAgICAgICAgICAgICAgbmV3TWVudS0+YWRkQWN0aW9uKGJtKTsKICAgICAg ICAgICAgICAgICBDT05ORUNUX0JNKGJtKTsKICAgICAgICAgICAgIH0KQEAgLTcxNCw4ICs3MTMs NyBAQCBib29sIEtyQm9va21hcmtIYW5kbGVyOjpldmVudEZpbHRlcihRT2JqZWN0ICpvYmosIFFF dmVudCAqZXYpCiAgICAgICAgIHN3aXRjaCAoZHluYW1pY19jYXN0PFFNb3VzZUV2ZW50ICo+KGV2 KS0+YnV0dG9uKCkpIHsKICAgICAgICAgY2FzZSBRdDo6UmlnaHRCdXR0b246CiAgICAgICAgICAg ICBfbWlkZGxlQ2xpY2sgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChvYmotPmluaGVyaXRzKCJR TWVudSIpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byAqbWVudSA9IGR5bmFtaWNfY2FzdDxRTWVu dSAqPihvYmopOworICAgICAgICAgICAgaWYgKG1lbnUgIT0gbnVsbHB0cikgewogICAgICAgICAg ICAgICAgIFFBY3Rpb24gKmFjdCA9IG1lbnUtPmFjdGlvbkF0KGR5bmFtaWNfY2FzdDxRTW91c2VF dmVudCAqPihldiktPnBvcygpKTsKIAogICAgICAgICAgICAgICAgIGlmIChvYmogPT0gX21haW5C b29rbWFya1BvcHVwICYmIF9zcGVjaWFsQm9va21hcmtzLmNvbnRhaW5zKGFjdCkpIHsKQEAgLTcy OCw3ICs3MjYsNyBAQCBib29sIEtyQm9va21hcmtIYW5kbGVyOjpldmVudEZpbHRlcihRT2JqZWN0 ICpvYmosIFFFdmVudCAqZXYpCiAgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2xpY2tlZChtZW51 LCBibSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAg IH0gZWxzZSBpZiAoYWN0ICYmIGFjdC0+ZGF0YSgpLmNhbkNvbnZlcnQ8S3JCb29rbWFyayAqPigp KSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gKmJtID0gYWN0LT5kYXRhKCkudmFsdWU8S3JC b29rbWFyayAqPigpOworICAgICAgICAgICAgICAgICAgICBibSA9IGFjdC0+ZGF0YSgpLnZhbHVl PEtyQm9va21hcmsgKj4oKTsKICAgICAgICAgICAgICAgICAgICAgcmlnaHRDbGlja2VkKG1lbnUs IGJtKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9hcHAv RGlhbG9ncy9jaGVja3N1bWRsZy5jcHAgYi9hcHAvRGlhbG9ncy9jaGVja3N1bWRsZy5jcHAKaW5k ZXggODlhOGYxMTA5Li4wNjVjZDhiNDEgMTAwNjQ0Ci0tLSBhL2FwcC9EaWFsb2dzL2NoZWNrc3Vt ZGxnLmNwcAorKysgYi9hcHAvRGlhbG9ncy9jaGVja3N1bWRsZy5jcHAKQEAgLTM5MSw3ICszOTEs NyBAQCBib29sIENyZWF0ZVdpemFyZDo6c2F2ZVBlckZpbGUoKQogICAgIHJldHVybiB0cnVlOwog fQogCi1ib29sIENyZWF0ZVdpemFyZDo6c2F2ZUNoZWNrc3VtRmlsZShjb25zdCBRU3RyaW5nTGlz dCAmZGF0YSwgY29uc3QgUVN0cmluZyAmZmlsZW5hbWUpCitib29sIENyZWF0ZVdpemFyZDo6c2F2 ZUNoZWNrc3VtRmlsZShjb25zdCBRU3RyaW5nTGlzdCAmY2hlY2tzdW1MaW5lcywgY29uc3QgUVN0 cmluZyAmZmlsZW5hbWUpCiB7CiAgICAgUVN0cmluZyBmaWxlUGF0aCA9IGZpbGVuYW1lLmlzRW1w dHkoKSA/IG1fc3VnZ2VzdGVkRmlsZVBhdGggOiBmaWxlbmFtZTsKICAgICBpZiAoZmlsZW5hbWUu aXNFbXB0eSgpIHx8IFFGaWxlOjpleGlzdHMoZmlsZVBhdGgpKSB7CkBAIC00MDMsNyArNDAzLDcg QEAgYm9vbCBDcmVhdGVXaXphcmQ6OnNhdmVDaGVja3N1bUZpbGUoY29uc3QgUVN0cmluZ0xpc3Qg JmRhdGEsIGNvbnN0IFFTdHJpbmcgJmZpbGUKICAgICBRRmlsZSBmaWxlKGZpbGVQYXRoKTsKICAg ICBpZiAoZmlsZS5vcGVuKFFJT0RldmljZTo6V3JpdGVPbmx5KSkgewogICAgICAgICBRVGV4dFN0 cmVhbSBzdHJlYW0oJmZpbGUpOwotICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJmxpbmUgOiBk YXRhKQorICAgICAgICBmb3IgKGNvbnN0IFFTdHJpbmcgJmxpbmUgOiBjaGVja3N1bUxpbmVzKQog ICAgICAgICAgICAgc3RyZWFtIDw8IGxpbmUgPDwgIlxuIjsKICAgICAgICAgZmlsZS5jbG9zZSgp OwogICAgIH0KZGlmZiAtLWdpdCBhL2FwcC9EaWFsb2dzL3BhY2tndWkuY3BwIGIvYXBwL0RpYWxv Z3MvcGFja2d1aS5jcHAKaW5kZXggNTMyYzM3ODQzLi5hMWUzODE3ZTIgMTAwNjQ0Ci0tLSBhL2Fw cC9EaWFsb2dzL3BhY2tndWkuY3BwCisrKyBiL2FwcC9EaWFsb2dzL3BhY2tndWkuY3BwCkBAIC0z MywxMiArMzMsMTIgQEAgUVN0cmluZyBQYWNrR1VJOjpkZXN0aW5hdGlvbiA9IG51bGxwdHI7CiBR U3RyaW5nIFBhY2tHVUk6OnR5cGUgPSBudWxscHRyOwogUU1hcDxRU3RyaW5nLCBRU3RyaW5nPiBQ YWNrR1VJOjpleHRyYVByb3BzOwogCi1QYWNrR1VJOjpQYWNrR1VJKGNvbnN0IFFTdHJpbmcgJmRl ZmF1bHROYW1lLCBjb25zdCBRU3RyaW5nICZkZWZhdWx0UGF0aCwgcXNpemV0eXBlIG5vT2ZGaWxl cywgY29uc3QgUVN0cmluZyAmZmlsZW5hbWUpCitQYWNrR1VJOjpQYWNrR1VJKGNvbnN0IFFTdHJp bmcgJmRlZmF1bHROYW1lLCBjb25zdCBRU3RyaW5nICZkZWZhdWx0UGF0aCwgcXNpemV0eXBlIG5v T2ZGaWxlcywgY29uc3QgUVN0cmluZyAmZmlsZU5hbWUpCiAgICAgOiBQYWNrR1VJQmFzZShudWxs cHRyKQogewogICAgIC8vIGZpcnN0LCBmaWxsIHRoZSBXaGF0VG9QYWNrIHRleHRmaWVsZCB3aXRo IGluZm9ybWF0aW9uCiAgICAgaWYgKG5vT2ZGaWxlcyA9PSAxKQotICAgICAgICBUZXh0TGFiZWwx LT5zZXRUZXh0KGkxOG4oIlBhY2sgJTEiLCBmaWxlbmFtZSkpOworICAgICAgICBUZXh0TGFiZWwx LT5zZXRUZXh0KGkxOG4oIlBhY2sgJTEiLCBmaWxlTmFtZSkpOwogICAgIGVsc2UKICAgICAgICAg VGV4dExhYmVsMS0+c2V0VGV4dChpMThucCgiUGFjayAlMSBmaWxlIiwgIlBhY2sgJTEgZmlsZXMi LCBub09mRmlsZXMpKTsKIApkaWZmIC0tZ2l0IGEvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvbWFw LmNwcCBiL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL21hcC5jcHAKaW5kZXggYTE3NjA5ODM3Li41 ZGEyZWU0YTMgMTAwNjQ0Ci0tLSBhL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL21hcC5jcHAKKysr IGIvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvbWFwLmNwcApAQCAtMjc3LDkgKzI3Nyw5IEBAIHZv aWQgUmFkaWFsTWFwOjpNYXA6OnBhaW50KHVuc2lnbmVkIGludCBzY2FsZUZhY3RvcikKICAgICBm aWxsKCk7IC8vIGVyYXNlIGJhY2tncm91bmQKIAogICAgIGZvciAoaW50IHggPSBtX3Zpc2libGVE ZXB0aDsgeCA+PSAwOyAtLXgpIHsKLSAgICAgICAgaW50IHdpZHRoID0gcmVjdC53aWR0aCgpIC8g MjsKKyAgICAgICAgaW50IGJhc2VSYWRpdXMgPSByZWN0LndpZHRoKCkgLyAyOwogICAgICAgICAv LyBjbGV2ZXIgZ2VvbWV0cmljIHRyaWNrIHRvIGZpbmQgbGFyZ2VzdCBhbmdsZSB0aGF0IHdpbGwg Z2l2ZSBiaWdnZXN0IGFycm93IGhlYWQKLSAgICAgICAgYXV0byBhX21heCA9IHN0YXRpY19jYXN0 PGludD4oYWNvcygoZG91YmxlKXdpZHRoIC8gZG91YmxlKCh3aWR0aCArIDUpICogc2NhbGVGYWN0 b3IpKSAqICgxODAgKiAxNiAvIE1fUEkpKTsKKyAgICAgICAgYXV0byBhX21heCA9IHN0YXRpY19j YXN0PGludD4oYWNvcygoZG91YmxlKWJhc2VSYWRpdXMgLyBkb3VibGUoKGJhc2VSYWRpdXMgKyA1 KSAqIHNjYWxlRmFjdG9yKSkgKiAoMTgwICogMTYgLyBNX1BJKSk7CiAKICAgICAgICAgZm9yIChD b25zdEl0ZXJhdG9yPFNlZ21lbnQ+IGl0ID0gbV9zaWduYXR1cmVbeF0uY29uc3RJdGVyYXRvcigp OyBpdCAhPSBtX3NpZ25hdHVyZVt4XS5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgLy8gZHJh dyB0aGUgcGllIHNlZ21lbnRzLCBtb3N0IG9mIHRoaXMgY29kZSBpcyBjb25jZXJuZWQgd2l0aCBk cmF3aW5nIHRoZSBsaXR0bGUKQEAgLTMwMSwxNSArMzAxLDE1IEBAIHZvaWQgUmFkaWFsTWFwOjpN YXA6OnBhaW50KHVuc2lnbmVkIGludCBzY2FsZUZhY3RvcikKIAogICAgICAgICAgICAgICAgIGFb MV0gKz0gYVswXTsKIAotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwLCByYWRpdXMgPSB3 aWR0aDsgaSA8IDM7ICsraSkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwLCBjdXJy ZW50UmFkaXVzID0gYmFzZVJhZGl1czsgaSA8IDM7ICsraSkgewogICAgICAgICAgICAgICAgICAg ICBkb3VibGUgcmEgPSBNX1BJIC8gKDE4MCAqIDE2KSAqIGFbaV0sIHNpbnJhLCBjb3NyYTsKIAog ICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSAyKQotICAgICAgICAgICAgICAgICAgICAgICAg cmFkaXVzICs9IDUgKiBzY2FsZUZhY3RvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJl bnRSYWRpdXMgKz0gNSAqIHNjYWxlRmFjdG9yOwogICAgICAgICAgICAgICAgICAgICBzaW5yYSA9 IHNpbihyYSk7CiAgICAgICAgICAgICAgICAgICAgIGNvc3JhID0gY29zKHJhKTsKLSAgICAgICAg ICAgICAgICAgICAgcG9zLnJ4KCkgPSBjcG9zLngoKSArIHN0YXRpY19jYXN0PGludD4oY29zcmEg KiByYWRpdXMpOwotICAgICAgICAgICAgICAgICAgICBwb3MucnkoKSA9IGNwb3MueSgpIC0gc3Rh dGljX2Nhc3Q8aW50PihzaW5yYSAqIHJhZGl1cyk7CisgICAgICAgICAgICAgICAgICAgIHBvcy5y eCgpID0gY3Bvcy54KCkgKyBzdGF0aWNfY2FzdDxpbnQ+KGNvc3JhICogY3VycmVudFJhZGl1cyk7 CisgICAgICAgICAgICAgICAgICAgIHBvcy5yeSgpID0gY3Bvcy55KCkgLSBzdGF0aWNfY2FzdDxp bnQ+KHNpbnJhICogY3VycmVudFJhZGl1cyk7CiAgICAgICAgICAgICAgICAgICAgIHB0cy5zZXRQ b2ludChpLCBwb3MpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtMzI0LDEyICszMjQsMTIgQEAg dm9pZCBSYWRpYWxNYXA6Ok1hcDo6cGFpbnQodW5zaWduZWQgaW50IHNjYWxlRmFjdG9yKQogICAg ICAgICAgICAgICAgIC8vKioqKiBjb2RlIGlzIGJsb2F0ZWQhCiAgICAgICAgICAgICAgICAgcGFp bnQuc2F2ZSgpOwogICAgICAgICAgICAgICAgIFFQZW4gcGVuID0gcGFpbnQucGVuKCk7Ci0gICAg ICAgICAgICAgICAgaW50IHdpZHRoID0gMiAqIHNjYWxlRmFjdG9yOwotICAgICAgICAgICAgICAg IHBlbi5zZXRXaWR0aCh3aWR0aCk7CisgICAgICAgICAgICAgICAgaW50IHBlbldpZHRoID0gMiAq IHNjYWxlRmFjdG9yOworICAgICAgICAgICAgICAgIHBlbi5zZXRXaWR0aChwZW5XaWR0aCk7CiAg ICAgICAgICAgICAgICAgcGFpbnQuc2V0UGVuKHBlbik7CiAgICAgICAgICAgICAgICAgUVJlY3Qg cmVjdDIgPSByZWN0OwotICAgICAgICAgICAgICAgIHdpZHRoIC89IDI7Ci0gICAgICAgICAgICAg ICAgcmVjdDIuYWRqdXN0KHdpZHRoLCB3aWR0aCwgLXdpZHRoLCAtd2lkdGgpOworICAgICAgICAg ICAgICAgIHBlbldpZHRoIC89IDI7CisgICAgICAgICAgICAgICAgcmVjdDIuYWRqdXN0KHBlbldp ZHRoLCBwZW5XaWR0aCwgLXBlbldpZHRoLCAtcGVuV2lkdGgpOwogICAgICAgICAgICAgICAgIHBh aW50LmRyYXdBcmMocmVjdDIsICgqaXQpLT5zdGFydCgpLCAoKml0KS0+bGVuZ3RoKCkpOwogICAg ICAgICAgICAgICAgIHBhaW50LnJlc3RvcmUoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBh L2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL3NlZ21lbnRUaXAuY3BwIGIvYXBwL0Rpc2tVc2FnZS9y YWRpYWxNYXAvc2VnbWVudFRpcC5jcHAKaW5kZXggZmM2MTYxZDE5Li4zMTRhZGMxYWEgMTAwNjQ0 Ci0tLSBhL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL3NlZ21lbnRUaXAuY3BwCisrKyBiL2FwcC9E aXNrVXNhZ2UvcmFkaWFsTWFwL3NlZ21lbnRUaXAuY3BwCkBAIC0xMDMsMTIgKzEwMywxMiBAQCB2 b2lkIFNlZ21lbnRUaXA6OnVwZGF0ZVRpcChjb25zdCBGaWxlICpjb25zdCBmaWxlLCBjb25zdCBE aXJlY3RvcnkgKmNvbnN0IHJvb3QpCiAgICAgUVN0cmluZyBzMiA9IGZpbGUtPmh1bWFuUmVhZGFi bGVTaXplKCk7CiAgICAgUUxvY2FsZSBsb2M7CiAgICAgY29uc3QgdWludCBNQVJHSU4gPSAzOwot ICAgIGNvbnN0IEZpbGVTaXplIHBjID0gMTAwICogZmlsZS0+c2l6ZSgpIC8gcm9vdC0+c2l6ZSgp OworICAgIGNvbnN0IEZpbGVTaXplIHNpemVQZXJjZW50ID0gMTAwICogZmlsZS0+c2l6ZSgpIC8g cm9vdC0+c2l6ZSgpOwogICAgIHVpbnQgbWF4dyA9IDA7CiAgICAgdWludCBoID0gZm9udE1ldHJp Y3MoKS5oZWlnaHQoKSAqIDIgKyAyICogTUFSR0lOOwogCi0gICAgaWYgKHBjID4gMCkKLSAgICAg ICAgczIgKz0gUVN0cmluZygiICglMSUpIikuYXJnKGxvYy50b1N0cmluZyhwYykpOworICAgIGlm IChzaXplUGVyY2VudCA+IDApCisgICAgICAgIHMyICs9IFFTdHJpbmcoIiAoJTElKSIpLmFyZyhs b2MudG9TdHJpbmcoc2l6ZVBlcmNlbnQpKTsKIAogICAgIG1fdGV4dCA9IHMxOwogICAgIG1fdGV4 dCArPSAnXG4nOwpAQCAtMTE2LDExICsxMTYsMTEgQEAgdm9pZCBTZWdtZW50VGlwOjp1cGRhdGVU aXAoY29uc3QgRmlsZSAqY29uc3QgZmlsZSwgY29uc3QgRGlyZWN0b3J5ICpjb25zdCByb290KQog CiAgICAgaWYgKGZpbGUtPmlzRGlyKCkpIHsKICAgICAgICAgZG91YmxlIGZpbGVzID0gZHluYW1p Y19jYXN0PGNvbnN0IERpcmVjdG9yeSAqPihmaWxlKS0+ZmlsZUNvdW50KCk7Ci0gICAgICAgIGNv bnN0IGF1dG8gcGMgPSB1aW50KCgxMDAgKiBmaWxlcykgLyAoZG91YmxlKXJvb3QtPmZpbGVDb3Vu dCgpKTsKKyAgICAgICAgY29uc3QgYXV0byBmaWxlQ291bnRQZXJjZW50ID0gdWludCgoMTAwICog ZmlsZXMpIC8gKGRvdWJsZSlyb290LT5maWxlQ291bnQoKSk7CiAgICAgICAgIFFTdHJpbmcgczMg PSBpMThuKCJGaWxlczogJTEiLCBsb2MudG9TdHJpbmcoZmlsZXMsICdmJywgMCkpOwogCi0gICAg ICAgIGlmIChwYyA+IDApCi0gICAgICAgICAgICBzMyArPSBRU3RyaW5nKCIgKCUxJSkiKS5hcmco bG9jLnRvU3RyaW5nKHBjKSk7CisgICAgICAgIGlmIChmaWxlQ291bnRQZXJjZW50ID4gMCkKKyAg ICAgICAgICAgIHMzICs9IFFTdHJpbmcoIiAoJTElKSIpLmFyZyhsb2MudG9TdHJpbmcoZmlsZUNv dW50UGVyY2VudCkpOwogCiAgICAgICAgIG1heHcgPSBmb250TWV0cmljcygpLmhvcml6b250YWxB ZHZhbmNlKHMzKTsKICAgICAgICAgaCArPSBmb250TWV0cmljcygpLmhlaWdodCgpOwpkaWZmIC0t Z2l0IGEvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvd2lkZ2V0RXZlbnRzLmNwcCBiL2FwcC9EaXNr VXNhZ2UvcmFkaWFsTWFwL3dpZGdldEV2ZW50cy5jcHAKaW5kZXggMTViY2IxZmNjLi42MjMwOWQ5 M2YgMTAwNjQ0Ci0tLSBhL2FwcC9EaXNrVXNhZ2UvcmFkaWFsTWFwL3dpZGdldEV2ZW50cy5jcHAK KysrIGIvYXBwL0Rpc2tVc2FnZS9yYWRpYWxNYXAvd2lkZ2V0RXZlbnRzLmNwcApAQCAtMTgyLDcg KzE4Miw2IEBAIHZvaWQgUmFkaWFsTWFwOjpXaWRnZXQ6Om1vdXNlUHJlc3NFdmVudChRTW91c2VF dmVudCAqZSkKICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IGFjdFZpZXdNYWcgfHwg cmVzdWx0ID09IGFjdEZpbGVPcGVuKSB7CiAgICAgICAgICAgICAgICAgZ290byBzZWN0aW9uVHdv OwogICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gYWN0RWRpdERlbCkgewotICAgICAg ICAgICAgICAgIGNvbnN0IFFVcmwgdXJsID0gV2lkZ2V0Ojp1cmwobV9mb2N1cy0+ZmlsZSgpKTsK ICAgICAgICAgICAgICAgICBjb25zdCBRU3RyaW5nIG1lc3NhZ2UgPQogICAgICAgICAgICAgICAg ICAgICAobV9mb2N1cy0+ZmlsZSgpLT5pc0RpcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAg PyBpMThuKCI8cXQ+VGhlIGZvbGRlciBhdCA8aT4nJTEnPC9pPiB3aWxsIGJlIDxiPnJlY3Vyc2l2 ZWx5PC9iPiBhbmQgPGI+cGVybWFuZW50bHk8L2I+IGRlbGV0ZWQuPC9xdD4iLCB1cmwudG9EaXNw bGF5U3RyaW5nKCkpCmRpZmYgLS1naXQgYS9hcHAvRmlsZVN5c3RlbS9maWxlc3lzdGVtLmNwcCBi L2FwcC9GaWxlU3lzdGVtL2ZpbGVzeXN0ZW0uY3BwCmluZGV4IDdiY2M3MzM0Ny4uYzQ1ZTA0OWI5 IDEwMDY0NAotLS0gYS9hcHAvRmlsZVN5c3RlbS9maWxlc3lzdGVtLmNwcAorKysgYi9hcHAvRmls ZVN5c3RlbS9maWxlc3lzdGVtLmNwcApAQCAtMTc3LDggKzE3Nyw4IEBAIHZvaWQgRmlsZVN5c3Rl bTo6Y29ubmVjdEpvYlRvRGVzdGluYXRpb24oS0pvYiAqam9iLCBjb25zdCBRVXJsICZkZXN0aW5h dGlvbikKICAgICB9KTsKICAgICAvLyAoYWRkaXRpb25hbCkgZGlyZWN0IHJlZnJlc2ggaWYgb24g bG9jYWwgZnMgYmVjYXVzZSB3YXRjaGVyIGlzIHRvbyBzbG93CiAgICAgY29uc3QgYm9vbCByZWZy ZXNoID0gY2xlYW5VcmwoZGVzdGluYXRpb24pID09IF9jdXJyZW50RGlyZWN0b3J5ICYmIGlzTG9j YWwoKTsKLSAgICBjb25uZWN0KGpvYiwgJktJTzo6Sm9iOjpyZXN1bHQsIHRoaXMsIFs9XShLSm9i ICpqb2IpIHsKLSAgICAgICAgc2xvdEpvYlJlc3VsdChqb2IsIHJlZnJlc2gpOworICAgIGNvbm5l Y3Qoam9iLCAmS0lPOjpKb2I6OnJlc3VsdCwgdGhpcywgWz1dKEtKb2IgKmZpbmlzaGVkSm9iKSB7 CisgICAgICAgIHNsb3RKb2JSZXN1bHQoZmluaXNoZWRKb2IsIHJlZnJlc2gpOwogICAgIH0pOwog fQogCmRpZmYgLS1naXQgYS9hcHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAgYi9h cHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAKaW5kZXggNzM4ZjBlYzJmLi44NGEx MDg0MTEgMTAwNjQ0Ci0tLSBhL2FwcC9GaWxlU3lzdGVtL3ZpcnR1YWxmaWxlc3lzdGVtLmNwcAor KysgYi9hcHAvRmlsZVN5c3RlbS92aXJ0dWFsZmlsZXN5c3RlbS5jcHAKQEAgLTE1OCw4ICsxNTgs OCBAQCB2b2lkIFZpcnR1YWxGaWxlU3lzdGVtOjpyZW5hbWUoY29uc3QgUVN0cmluZyAmZmlsZU5h bWUsIGNvbnN0IFFTdHJpbmcgJm5ld05hbWUpCiAgICAgX3ZpcnRGaWxlc3lzdGVtRGljdFtjdXJy ZW50RGlyKCldLT5hcHBlbmQoZGVzdCk7CiAKICAgICBLSU86OkpvYiAqam9iID0gS0lPOjptb3Zl QXMoaXRlbS0+Z2V0VXJsKCksIGRlc3QsIEtJTzo6SGlkZVByb2dyZXNzSW5mbyk7Ci0gICAgY29u bmVjdChqb2IsICZLSU86OkpvYjo6cmVzdWx0LCB0aGlzLCBbPV0oS0pvYiAqam9iKSB7Ci0gICAg ICAgIHNsb3RKb2JSZXN1bHQoam9iLCBmYWxzZSk7CisgICAgY29ubmVjdChqb2IsICZLSU86Okpv Yjo6cmVzdWx0LCB0aGlzLCBbPV0oS0pvYiAqZmluaXNoZWRKb2IpIHsKKyAgICAgICAgc2xvdEpv YlJlc3VsdChmaW5pc2hlZEpvYiwgZmFsc2UpOwogICAgIH0pOwogICAgIGNvbm5lY3Qoam9iLCAm S0lPOjpKb2I6OnJlc3VsdCwgdGhpcywgWz1dKCkgewogICAgICAgICBlbWl0IGZpbGVTeXN0ZW1D aGFuZ2VkKGN1cnJlbnREaXJlY3RvcnkoKSwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvYXBwL0ZpbHRl ci9hZHZhbmNlZGZpbHRlci5jcHAgYi9hcHAvRmlsdGVyL2FkdmFuY2VkZmlsdGVyLmNwcAppbmRl eCBmYTFiNjdlOWYuLmQ5M2U0MWY5MSAxMDA2NDQKLS0tIGEvYXBwL0ZpbHRlci9hZHZhbmNlZGZp bHRlci5jcHAKKysrIGIvYXBwL0ZpbHRlci9hZHZhbmNlZGZpbHRlci5jcHAKQEAgLTQ0NSwxMyAr NDQ1LDEzIEBAIHZvaWQgQWR2YW5jZWRGaWx0ZXI6OmNoYW5nZURhdGUoS0xpbmVFZGl0ICpwKQog CiB2b2lkIEFkdmFuY2VkRmlsdGVyOjpmaWxsTGlzdChLQ29tYm9Cb3ggKmxpc3QsIGNvbnN0IFFT dHJpbmcgJmZpbGVuYW1lKQogewotICAgIFFGaWxlIGRhdGEoZmlsZW5hbWUpOwotICAgIGlmICgh ZGF0YS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkpKSB7CisgICAgUUZpbGUgaW5wdXRGaWxlKGZp bGVuYW1lKTsKKyAgICBpZiAoIWlucHV0RmlsZS5vcGVuKFFJT0RldmljZTo6UmVhZE9ubHkpKSB7 CiAgICAgICAgIHFXYXJuaW5nKCkgPDwgIlNlYXJjaDogVW5hYmxlIHRvIHJlYWQgIiA8PCBmaWxl bmFtZSA8PCAiICEhISI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gYW5kIHJlYWQg aXQgaW50byB0aGUgdGVtcG9yYXJ5IGFycmF5Ci0gICAgUVRleHRTdHJlYW0gdCgmZGF0YSk7Cisg ICAgUVRleHRTdHJlYW0gdCgmaW5wdXRGaWxlKTsKICAgICB3aGlsZSAoIXQuYXRFbmQoKSkgewog ICAgICAgICBRU3RyaW5nIHMgPSB0LnJlYWRMaW5lKCk7CiAgICAgICAgIFFTdHJpbmcgbmFtZSA9 IHMubGVmdChzLmluZGV4T2YoJzonKSk7CmRpZmYgLS1naXQgYS9hcHAvRmlsdGVyL2ZpbHRlcnRh YnMuY3BwIGIvYXBwL0ZpbHRlci9maWx0ZXJ0YWJzLmNwcAppbmRleCBjY2E2M2ZiZjguLmVjZTli MzBjMiAxMDA2NDQKLS0tIGEvYXBwL0ZpbHRlci9maWx0ZXJ0YWJzLmNwcAorKysgYi9hcHAvRmls dGVyL2ZpbHRlcnRhYnMuY3BwCkBAIC0yMiw3ICsyMiw3IEBACiBGaWx0ZXJUYWJzOjpGaWx0ZXJU YWJzKGludCBwcm9wZXJ0aWVzLCBRVGFiV2lkZ2V0ICp0YWJXaWRnZXQsIFFPYmplY3QgKnBhcmVu dCwgUVN0cmluZ0xpc3QgZXh0cmFPcHRpb25zKQogICAgIDogUU9iamVjdChwYXJlbnQpCiB7Ci0g ICAgdGhpcy0+dGFiV2lkZ2V0ID0gdGFiV2lkZ2V0OworICAgIHRoaXMtPm1fdGFiV2lkZ2V0ID0g dGFiV2lkZ2V0OwogCiAgICAgR2VuZXJhbEZpbHRlciAqZ2VuZXJhbEZpbHRlciA9IG5ldyBHZW5l cmFsRmlsdGVyKHRoaXMsIHByb3BlcnRpZXMsIHRhYldpZGdldCwgc3RkOjptb3ZlKGV4dHJhT3B0 aW9ucykpOwogICAgIHRhYldpZGdldC0+YWRkVGFiKGdlbmVyYWxGaWx0ZXIsIGkxOG4oIiZHZW5l cmFsIikpOwpAQCAtNTgsNyArNTgsNyBAQCBGaWx0ZXJTZXR0aW5ncyBGaWx0ZXJUYWJzOjpnZXRT ZXR0aW5ncygpCiAKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBmaWx0ZXJMaXN0LmNvdW50KCk7 IGkrKykgewogICAgICAgICBpZiAoIWZpbHRlckxpc3RbaV0tPmdldFNldHRpbmdzKHMpKSB7Ci0g ICAgICAgICAgICB0YWJXaWRnZXQtPnNldEN1cnJlbnRJbmRleChwYWdlTnVtYmVyc1tpXSk7Cisg ICAgICAgICAgICBtX3RhYldpZGdldC0+c2V0Q3VycmVudEluZGV4KHBhZ2VOdW1iZXJzW2ldKTsK ICAgICAgICAgICAgIHJldHVybiBGaWx0ZXJTZXR0aW5ncygpOwogICAgICAgICB9CiAgICAgfQpA QCAtOTgsNyArOTgsNyBAQCB2b2lkIEZpbHRlclRhYnM6OmxvYWRGcm9tUHJvZmlsZShjb25zdCBR U3RyaW5nICZuYW1lKQogICAgIEZpbHRlclNldHRpbmdzIHM7CiAgICAgcy5sb2FkKEtDb25maWdH cm91cChrckNvbmZpZywgbmFtZSkpOwogICAgIGlmICghcy5pc1ZhbGlkKCkpCi0gICAgICAgIEtN ZXNzYWdlQm94OjplcnJvcih0YWJXaWRnZXQsIGkxOG4oIkNvdWxkIG5vdCBsb2FkIHByb2ZpbGUu IikpOworICAgICAgICBLTWVzc2FnZUJveDo6ZXJyb3IobV90YWJXaWRnZXQsIGkxOG4oIkNvdWxk IG5vdCBsb2FkIHByb2ZpbGUuIikpOwogICAgIGVsc2UKICAgICAgICAgYXBwbHlTZXR0aW5ncyhz KTsKIH0KZGlmZiAtLWdpdCBhL2FwcC9GaWx0ZXIvZmlsdGVydGFicy5oIGIvYXBwL0ZpbHRlci9m aWx0ZXJ0YWJzLmgKaW5kZXggNGI5YTU1ZmJlLi4xNjUyN2EwZjUgMTAwNjQ0Ci0tLSBhL2FwcC9G aWx0ZXIvZmlsdGVydGFicy5oCisrKyBiL2FwcC9GaWx0ZXIvZmlsdGVydGFicy5oCkBAIC01OCw3 ICs1OCw3IEBAIHByaXZhdGU6CiAgICAgUUxpc3Q8RmlsdGVyQmFzZSAqPiBmaWx0ZXJMaXN0Owog ICAgIFFMaXN0PGludD4gcGFnZU51bWJlcnM7CiAKLSAgICBRVGFiV2lkZ2V0ICp0YWJXaWRnZXQ7 CisgICAgUVRhYldpZGdldCAqbV90YWJXaWRnZXQ7CiB9OwogCiAjZW5kaWYgLyogRklMVEVSVEFC U19IICovCmRpZmYgLS1naXQgYS9hcHAvRmlsdGVyL2dlbmVyYWxmaWx0ZXIuY3BwIGIvYXBwL0Zp bHRlci9nZW5lcmFsZmlsdGVyLmNwcAppbmRleCAxYjU5MDJkZjUuLmIwYWI4NWQ4ZCAxMDA2NDQK LS0tIGEvYXBwL0ZpbHRlci9nZW5lcmFsZmlsdGVyLmNwcAorKysgYi9hcHAvRmlsdGVyL2dlbmVy YWxmaWx0ZXIuY3BwCkBAIC0yMSw4ICsyMSw4IEBACiAjaW5jbHVkZSA8UVB1c2hCdXR0b24+CiAK ICNpbmNsdWRlIDxLQ2hhcnNldHM+Ci0jaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KICNpbmNs dWRlIDxLTGF6eUxvY2FsaXplZFN0cmluZz4KKyNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgog I2luY2x1ZGUgPEtNZXNzYWdlQm94PgogI2luY2x1ZGUgPEtTaGFyZWRDb25maWc+CiAjaW5jbHVk ZSA8S1NoZWxsPgpAQCAtNzksNyArNzksNyBAQCBwcml2YXRlOgogICAgIGludCBtQ3Vyc29yOwog fTsKIAotR2VuZXJhbEZpbHRlcjo6R2VuZXJhbEZpbHRlcihGaWx0ZXJUYWJzICp0YWJzLCBpbnQg cHJvcGVydGllcywgUVdpZGdldCAqcGFyZW50LCBRU3RyaW5nTGlzdCBleHRyYU9wdGlvbnMpCitH ZW5lcmFsRmlsdGVyOjpHZW5lcmFsRmlsdGVyKEZpbHRlclRhYnMgKnRhYnMsIGludCBwcm9wZXJ0 aWVzLCBRV2lkZ2V0ICpwYXJlbnQsIFFTdHJpbmdMaXN0IGV4dHJhT3B0aW9uS2V5cykKICAgICA6 IFFXaWRnZXQocGFyZW50KQogICAgICwgcHJvZmlsZU1hbmFnZXIobnVsbHB0cikKICAgICAsIGZs dFRhYnModGFicykKQEAgLTg4LDcgKzg4LDcgQEAgR2VuZXJhbEZpbHRlcjo6R2VuZXJhbEZpbHRl cihGaWx0ZXJUYWJzICp0YWJzLCBpbnQgcHJvcGVydGllcywgUVdpZGdldCAqcGFyZW50LAogICAg IGZpbHRlckxheW91dC0+c2V0U3BhY2luZyg2KTsKICAgICBmaWx0ZXJMYXlvdXQtPnNldENvbnRl bnRzTWFyZ2lucygxMSwgMTEsIDExLCAxMSk7CiAKLSAgICB0aGlzLT5wcm9wZXJ0aWVzID0gcHJv cGVydGllczsKKyAgICB0aGlzLT5tX3Byb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOwogCiAgICAgLy8g T3B0aW9ucyBmb3IgbmFtZSBmaWx0ZXJpbmcKIApAQCAtMzY0LDExICszNjQsMTEgQEAgR2VuZXJh bEZpbHRlcjo6R2VuZXJhbEZpbHRlcihGaWx0ZXJUYWJzICp0YWJzLCBpbnQgcHJvcGVydGllcywg UVdpZGdldCAqcGFyZW50LAogICAgIH0KICAgICBmaWx0ZXJMYXlvdXQtPmFkZExheW91dChyZWN1 cnNlTGF5b3V0LCAzLCAwKTsKIAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXh0cmFPcHRpb25z Lmxlbmd0aCgpOyBpKyspIHsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGV4dHJhT3B0aW9uS2V5 cy5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgIGF1dG8gKm9wdGlvbiA9IG5ldyBRQ2hlY2tCb3go dGhpcyk7Ci0gICAgICAgIG9wdGlvbi0+c2V0VGV4dChleHRyYU9wdGlvbnNbaV0pOworICAgICAg ICBvcHRpb24tPnNldFRleHQoZXh0cmFPcHRpb25LZXlzW2ldKTsKICAgICAgICAgcmVjdXJzZUxh eW91dC0+YWRkV2lkZ2V0KG9wdGlvbik7Ci0gICAgICAgIHRoaXMtPmV4dHJhT3B0aW9ucy5pbnNl cnQoZXh0cmFPcHRpb25zW2ldLCBvcHRpb24pOworICAgICAgICB0aGlzLT5leHRyYU9wdGlvbnMu aW5zZXJ0KGV4dHJhT3B0aW9uS2V5c1tpXSwgb3B0aW9uKTsKICAgICB9CiAKICAgICAvLyBDb25u ZWN0aW9uIHRhYmxlCkBAIC00MTksNyArNDE5LDcgQEAgR2VuZXJhbEZpbHRlcjo6fkdlbmVyYWxG aWx0ZXIoKQogICAgIGdyb3VwLndyaXRlRW50cnkoIkNvbnRhaW5zVGV4dCBDb21wbGV0aW9uIiwg bGlzdCk7CiAgICAgbGlzdCA9IGNvbnRhaW5zVGV4dC0+aGlzdG9yeUl0ZW1zKCk7CiAgICAgZ3Jv dXAud3JpdGVFbnRyeSgiQ29udGFpbnNUZXh0IEhpc3RvcnkiLCBsaXN0KTsKLSAgICBpZiAoKHBy b3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYmIChwcm9wZXJ0aWVzICYg RmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpKSB7CisgICAgaWYgKChtX3Byb3BlcnRpZXMg JiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYmIChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJU YWJzOjpIYXNSZWN1cnNlT3B0aW9ucykpIHsKICAgICAgICAgbGlzdCA9IGV4Y2x1ZGVGb2xkZXJO YW1lcy0+aGlzdG9yeUl0ZW1zKCk7CiAgICAgICAgIGdyb3VwLndyaXRlRW50cnkoIkV4Y2x1ZGVG b2xkZXJOYW1lc0hpc3RvcnkiLCBsaXN0KTsKICAgICAgICAgZ3JvdXAud3JpdGVFbnRyeSgiRXhj bHVkZUZvbGRlck5hbWVzIiwgZXhjbHVkZUZvbGRlck5hbWVzLT5jdXJyZW50VGV4dCgpKTsKQEAg LTQ0NSw3ICs0NDUsNyBAQCB2b2lkIEdlbmVyYWxGaWx0ZXI6OnF1ZXJ5QWNjZXB0ZWQoKQogewog ICAgIHNlYXJjaEZvci0+YWRkVG9IaXN0b3J5KHNlYXJjaEZvci0+Y3VycmVudFRleHQoKSk7CiAg ICAgY29udGFpbnNUZXh0LT5hZGRUb0hpc3RvcnkoY29udGFpbnNUZXh0LT5jdXJyZW50VGV4dCgp KTsKLSAgICBpZiAoKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYm IChwcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpKSB7CisgICAgaWYg KChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pICYmIChtX3Byb3Bl cnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNSZWN1cnNlT3B0aW9ucykpIHsKICAgICAgICAgZXhjbHVk ZUZvbGRlck5hbWVzLT5hZGRUb0hpc3RvcnkoZXhjbHVkZUZvbGRlck5hbWVzLT5jdXJyZW50VGV4 dCgpKTsKICAgICB9CiB9CkBAIC01MzcsNyArNTM3LDcgQEAgdm9pZCBHZW5lcmFsRmlsdGVyOjpz bG90RGlzYWJsZSgpCiAgICAgYm9vbCBzdGF0ZSA9IGNvbnRhaW5zUmVnRXhwLT5pc0NoZWNrZWQo KTsKICAgICBib29sIGdsb2JhbCA9IG9mVHlwZS0+Y3VycmVudFRleHQoKSAhPSBpMThuKCJGb2xk ZXJzIik7CiAgICAgYm9vbCByZW1vdGVPbmx5ID0gZmFsc2U7Ci0gICAgaWYgKHByb3BlcnRpZXMg JiBGaWx0ZXJUYWJzOjpIYXNTZWFyY2hJbikgeworICAgIGlmIChtX3Byb3BlcnRpZXMgJiBGaWx0 ZXJUYWJzOjpIYXNTZWFyY2hJbikgewogICAgICAgICBjb25zdCBRTGlzdDxRVXJsPiB1cmxMaXN0 ID0gc2VhcmNoSW4tPnVybExpc3QoKTsKICAgICAgICAgcmVtb3RlT25seSA9IHVybExpc3QuY291 bnQoKSAhPSAwOwogICAgICAgICBmb3IgKGNvbnN0IFFVcmwgJnVybCA6IHVybExpc3QpCkBAIC01 NTEsNyArNTUxLDcgQEAgdm9pZCBHZW5lcmFsRmlsdGVyOjpzbG90RGlzYWJsZSgpCiAgICAgY29u dGVudEVuY29kaW5nLT5zZXRFbmFibGVkKGdsb2JhbCk7CiAgICAgY29udGFpbnNUZXh0Q2FzZS0+ c2V0RW5hYmxlZChnbG9iYWwpOwogICAgIGNvbnRhaW5zUmVnRXhwLT5zZXRFbmFibGVkKGdsb2Jh bCk7Ci0gICAgaWYgKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNSZWN1cnNlT3B0aW9ucykK KyAgICBpZiAobV9wcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpCiAg ICAgICAgIHNlYXJjaEluQXJjaGl2ZXMtPnNldEVuYWJsZWQoZ2xvYmFsICYmICFyZW1vdGVPbmx5 KTsKICAgICBjb250YWluc0xhYmVsLT5zZXRFbmFibGVkKGdsb2JhbCk7CiAgICAgY29udGFpbnNU ZXh0LT5zZXRFbmFibGVkKGdsb2JhbCk7CkBAIC01OTQsMTMgKzU5NCwxMyBAQCBib29sIEdlbmVy YWxGaWx0ZXI6OmdldFNldHRpbmdzKEZpbHRlclNldHRpbmdzICZzKQogICAgIGlmIChjb250ZW50 RW5jb2RpbmctPmN1cnJlbnRJbmRleCgpICE9IDApCiAgICAgICAgIHMuY29udGVudEVuY29kaW5n ID0gS0NoYXJzZXRzOjpjaGFyc2V0cygpLT5lbmNvZGluZ0Zvck5hbWUoY29udGVudEVuY29kaW5n LT5jdXJyZW50VGV4dCgpKTsKIAotICAgIGlmIChwcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFz UmVjdXJzZU9wdGlvbnMpIHsKKyAgICBpZiAobV9wcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFz UmVjdXJzZU9wdGlvbnMpIHsKICAgICAgICAgcy5yZWN1cnNpdmUgPSBzZWFyY2hJbkRpcnMtPmlz Q2hlY2tlZCgpOwogICAgICAgICBzLnNlYXJjaEluQXJjaGl2ZXMgPSBzZWFyY2hJbkFyY2hpdmVz LT5pc0NoZWNrZWQoKTsKICAgICAgICAgcy5mb2xsb3dMaW5rcyA9IGZvbGxvd0xpbmtzLT5pc0No ZWNrZWQoKTsKICAgICB9CiAKLSAgICBpZiAocHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc1Nl YXJjaEluKSB7CisgICAgaWYgKG1fcHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc1NlYXJjaElu KSB7CiAgICAgICAgIHMuc2VhcmNoSW4gPSBzZWFyY2hJbi0+dXJsTGlzdCgpOwogICAgICAgICBp ZiAocy5zZWFyY2hJbi5pc0VtcHR5KCkpIHsgLy8gd2UgbmVlZCBhIHBsYWNlIHRvIHNlYXJjaCBp bgogICAgICAgICAgICAgS01lc3NhZ2VCb3g6OmVycm9yKHRoaXMsIGkxOG4oIlBsZWFzZSBzcGVj aWZ5IGEgbG9jYXRpb24gdG8gc2VhcmNoIGluLiIpKTsKQEAgLTYwOSw5ICs2MDksOSBAQCBib29s IEdlbmVyYWxGaWx0ZXI6OmdldFNldHRpbmdzKEZpbHRlclNldHRpbmdzICZzKQogICAgICAgICB9 CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNo SW4pIHsKKyAgICBpZiAobV9wcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzRG9udFNlYXJjaElu KSB7CiAgICAgICAgIHMuZG9udFNlYXJjaEluID0gZG9udFNlYXJjaEluLT51cmxMaXN0KCk7Ci0g ICAgICAgIGlmIChwcm9wZXJ0aWVzICYgRmlsdGVyVGFiczo6SGFzUmVjdXJzZU9wdGlvbnMpIHsK KyAgICAgICAgaWYgKG1fcHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc1JlY3Vyc2VPcHRpb25z KSB7CiAgICAgICAgICAgICBpZiAodXNlRXhjbHVkZUZvbGRlck5hbWVzLT5pc0NoZWNrZWQoKSkg ewogICAgICAgICAgICAgICAgIHMuZXhjbHVkZUZvbGRlck5hbWVzID0gS1NoZWxsOjpzcGxpdEFy Z3MoZXhjbHVkZUZvbGRlck5hbWVzLT5jdXJyZW50VGV4dCgpKTsKICAgICAgICAgICAgIH0gZWxz ZSB7CkBAIC02MzYsMTkgKzYzNiwxOSBAQCB2b2lkIEdlbmVyYWxGaWx0ZXI6OmFwcGx5U2V0dGlu Z3MoY29uc3QgRmlsdGVyU2V0dGluZ3MgJnMpCiAKICAgICBzZXRDb21ib0JveFZhbHVlKGNvbnRl bnRFbmNvZGluZywgS0NoYXJzZXRzOjpjaGFyc2V0cygpLT5kZXNjcmlwdGlvbkZvckVuY29kaW5n KHMuY29udGVudEVuY29kaW5nKSk7CiAKLSAgICBpZiAocHJvcGVydGllcyAmIEZpbHRlclRhYnM6 Okhhc1JlY3Vyc2VPcHRpb25zKSB7CisgICAgaWYgKG1fcHJvcGVydGllcyAmIEZpbHRlclRhYnM6 Okhhc1JlY3Vyc2VPcHRpb25zKSB7CiAgICAgICAgIHNlYXJjaEluRGlycy0+c2V0Q2hlY2tlZChz LnJlY3Vyc2l2ZSk7CiAgICAgICAgIHNlYXJjaEluQXJjaGl2ZXMtPnNldENoZWNrZWQocy5zZWFy Y2hJbkFyY2hpdmVzKTsKICAgICAgICAgZm9sbG93TGlua3MtPnNldENoZWNrZWQocy5mb2xsb3dM aW5rcyk7CiAgICAgfQogCi0gICAgaWYgKHByb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNTZWFy Y2hJbikgeworICAgIGlmIChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNTZWFyY2hJbikg ewogICAgICAgICBzZWFyY2hJbi0+bGluZUVkaXQoKS0+Y2xlYXIoKTsKICAgICAgICAgc2VhcmNo SW4tPmxpc3RCb3goKS0+Y2xlYXIoKTsKICAgICAgICAgc2VhcmNoSW4tPmxpc3RCb3goKS0+YWRk SXRlbXMoS3JTZXJ2aWNlczo6dG9TdHJpbmdMaXN0KHMuc2VhcmNoSW4pKTsKICAgICB9CiAKLSAg ICBpZiAocHJvcGVydGllcyAmIEZpbHRlclRhYnM6Okhhc0RvbnRTZWFyY2hJbikgeworICAgIGlm IChtX3Byb3BlcnRpZXMgJiBGaWx0ZXJUYWJzOjpIYXNEb250U2VhcmNoSW4pIHsKICAgICAgICAg ZG9udFNlYXJjaEluLT5saW5lRWRpdCgpLT5jbGVhcigpOwogICAgICAgICBkb250U2VhcmNoSW4t Pmxpc3RCb3goKS0+Y2xlYXIoKTsKICAgICAgICAgZG9udFNlYXJjaEluLT5saXN0Qm94KCktPmFk ZEl0ZW1zKEtyU2VydmljZXM6OnRvU3RyaW5nTGlzdChzLmRvbnRTZWFyY2hJbikpOwpkaWZmIC0t Z2l0IGEvYXBwL0ZpbHRlci9nZW5lcmFsZmlsdGVyLmggYi9hcHAvRmlsdGVyL2dlbmVyYWxmaWx0 ZXIuaAppbmRleCBlOTQxYmRjNTUuLmJhYTRlNzEyNSAxMDA2NDQKLS0tIGEvYXBwL0ZpbHRlci9n ZW5lcmFsZmlsdGVyLmgKKysrIGIvYXBwL0ZpbHRlci9nZW5lcmFsZmlsdGVyLmgKQEAgLTk0LDcg Kzk0LDcgQEAgcHVibGljOgogCiAgICAgUHJvZmlsZU1hbmFnZXIgKnByb2ZpbGVNYW5hZ2VyOwog Ci0gICAgaW50IHByb3BlcnRpZXM7CisgICAgaW50IG1fcHJvcGVydGllczsKIAogICAgIEZpbHRl clRhYnMgKmZsdFRhYnM7CiAKZGlmZiAtLWdpdCBhL2FwcC9HVUkva2Zua2V5cy5jcHAgYi9hcHAv R1VJL2tmbmtleXMuY3BwCmluZGV4IDg1MmE0ZTNkOC4uNmMzYjA5MWVlIDEwMDY0NAotLS0gYS9h cHAvR1VJL2tmbmtleXMuY3BwCisrKyBiL2FwcC9HVUkva2Zua2V5cy5jcHAKQEAgLTIwLDcgKzIw LDcgQEAKIAogS0ZuS2V5czo6S0ZuS2V5cyhRV2lkZ2V0ICpwYXJlbnQsIEtyTWFpbldpbmRvdyAq bWFpbldpbmRvdykKICAgICA6IFFXaWRnZXQocGFyZW50KQotICAgICwgbWFpbldpbmRvdyhtYWlu V2luZG93KQorICAgICwgbV9tYWluV2luZG93KG1haW5XaW5kb3cpCiB7CiAgICAgYnV0dG9uTGlz dCA8PCBzZXR1cChtYWluV2luZG93LT5saXN0UGFuZWxBY3Rpb25zKCktPmFjdFJlbmFtZUYyLCBp MThuKCJSZW5hbWUiKSkgPDwgc2V0dXAobWFpbldpbmRvdy0+bGlzdFBhbmVsQWN0aW9ucygpLT5h Y3RWaWV3RmlsZUYzLCBpMThuKCJWaWV3IikpCiAgICAgICAgICAgICAgICA8PCBzZXR1cChtYWlu V2luZG93LT5saXN0UGFuZWxBY3Rpb25zKCktPmFjdEVkaXRGaWxlRjQsIGkxOG4oIkVkaXQiKSkg PDwgc2V0dXAobWFpbldpbmRvdy0+bGlzdFBhbmVsQWN0aW9ucygpLT5hY3RDb3B5RjUsIGkxOG4o IkNvcHkiKSkKZGlmZiAtLWdpdCBhL2FwcC9HVUkva2Zua2V5cy5oIGIvYXBwL0dVSS9rZm5rZXlz LmgKaW5kZXggMjRlNTg3N2Y4Li4zZjRlOWM3ZTYgMTAwNjQ0Ci0tLSBhL2FwcC9HVUkva2Zua2V5 cy5oCisrKyBiL2FwcC9HVUkva2Zua2V5cy5oCkBAIC0zMyw3ICszMyw3IEBAIHByaXZhdGU6CiAK ICAgICBCdXR0b25FbnRyeSBzZXR1cChRQWN0aW9uICphY3Rpb24sIGNvbnN0IFFTdHJpbmcgJnRl eHQpOwogCi0gICAgS3JNYWluV2luZG93ICptYWluV2luZG93OworICAgIEtyTWFpbldpbmRvdyAq bV9tYWluV2luZG93OwogICAgIFFMaXN0PEJ1dHRvbkVudHJ5PiBidXR0b25MaXN0OwogfTsKIApk aWZmIC0tZ2l0IGEvYXBwL0dVSS9wcm9maWxlbWFuYWdlci5jcHAgYi9hcHAvR1VJL3Byb2ZpbGVt YW5hZ2VyLmNwcAppbmRleCAyMDIzM2YxZTguLmE3ZDYyNmZlMSAxMDA2NDQKLS0tIGEvYXBwL0dV SS9wcm9maWxlbWFuYWdlci5jcHAKKysrIGIvYXBwL0dVSS9wcm9maWxlbWFuYWdlci5jcHAKQEAg LTI3LDcgKzI3LDcgQEAgUHJvZmlsZU1hbmFnZXI6OlByb2ZpbGVNYW5hZ2VyKGNvbnN0IFFTdHJp bmcgJnByb2ZpbGVUeXBlLCBRV2lkZ2V0ICpwYXJlbnQpCiAgICAgc2V0Rml4ZWRXaWR0aCgxNiAr IDE1KTsKICAgICBzZXRUb29sVGlwKGkxOG4oIlByb2ZpbGVzIikpOwogCi0gICAgdGhpcy0+cHJv ZmlsZVR5cGUgPSBwcm9maWxlVHlwZTsKKyAgICB0aGlzLT5tX3Byb2ZpbGVUeXBlID0gcHJvZmls ZVR5cGU7CiAKICAgICBjb25uZWN0KHRoaXMsICZQcm9maWxlTWFuYWdlcjo6Y2xpY2tlZCwgdGhp cywgJlByb2ZpbGVNYW5hZ2VyOjpwcm9maWxlUG9wdXApOwogCkBAIC00OCw3ICs0OCw3IEBAIHZv aWQgUHJvZmlsZU1hbmFnZXI6OnByb2ZpbGVQb3B1cCgpCiAgICAgcG9wdXAuc2V0VGl0bGUoaTE4 bigiUHJvZmlsZXMiKSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBwcm9maWxlTGlzdC5j b3VudCgpOyBpKyspIHsKLSAgICAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGtyQ29uZmlnLCBwcm9m aWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbaV0pOworICAgICAgICBLQ29uZmlnR3JvdXAg Z3JvdXAoa3JDb25maWcsIG1fcHJvZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W2ldKTsK ICAgICAgICAgUVN0cmluZyBuYW1lID0gZ3JvdXAucmVhZEVudHJ5KCJOYW1lIik7CiAgICAgICAg IHBvcHVwLmFkZEFjdGlvbihuYW1lKS0+c2V0RGF0YShRVmFyaWFudCgoaW50KShMT0FEX0VOVFJZ X0lEICsgaSkpKTsKICAgICAgICAgcmVtb3ZlUG9wdXAuYWRkQWN0aW9uKG5hbWUpLT5zZXREYXRh KFFWYXJpYW50KChpbnQpKFJFTU9WRV9FTlRSWV9JRCArIGkpKSk7CkBAIC03MywxNiArNzMsMTYg QEAgdm9pZCBQcm9maWxlTWFuYWdlcjo6cHJvZmlsZVBvcHVwKCkKICAgICBpZiAocmVzdWx0ID09 IEFERF9ORVdfRU5UUllfSUQpCiAgICAgICAgIG5ld1Byb2ZpbGUoKTsKICAgICBlbHNlIGlmIChy ZXN1bHQgPj0gTE9BRF9FTlRSWV9JRCAmJiByZXN1bHQgPCBMT0FEX0VOVFJZX0lEICsgcHJvZmls ZUxpc3QuY291bnQoKSkgewotICAgICAgICBlbWl0IGxvYWRGcm9tUHJvZmlsZShwcm9maWxlVHlw ZSArICIgLSAiICsgcHJvZmlsZUxpc3RbcmVzdWx0IC0gTE9BRF9FTlRSWV9JRF0pOworICAgICAg ICBlbWl0IGxvYWRGcm9tUHJvZmlsZShtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlz dFtyZXN1bHQgLSBMT0FEX0VOVFJZX0lEXSk7CiAgICAgfSBlbHNlIGlmIChyZXN1bHQgPj0gUkVN T1ZFX0VOVFJZX0lEICYmIHJlc3VsdCA8IFJFTU9WRV9FTlRSWV9JRCArIHByb2ZpbGVMaXN0LmNv dW50KCkpIHsKLSAgICAgICAga3JDb25maWctPmRlbGV0ZUdyb3VwKHByb2ZpbGVUeXBlICsgIiAt ICIgKyBwcm9maWxlTGlzdFtyZXN1bHQgLSBSRU1PVkVfRU5UUllfSURdKTsKKyAgICAgICAga3JD b25maWctPmRlbGV0ZUdyb3VwKG1fcHJvZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W3Jl c3VsdCAtIFJFTU9WRV9FTlRSWV9JRF0pOwogICAgICAgICBwcm9maWxlTGlzdC5yZW1vdmVBbGwo cHJvZmlsZUxpc3RbcmVzdWx0IC0gUkVNT1ZFX0VOVFJZX0lEXSk7CiAKICAgICAgICAgS0NvbmZp Z0dyb3VwIGdyb3VwKGtyQ29uZmlnLCAiUHJpdmF0ZSIpOwotICAgICAgICBncm91cC53cml0ZUVu dHJ5KHByb2ZpbGVUeXBlLCBwcm9maWxlTGlzdCk7CisgICAgICAgIGdyb3VwLndyaXRlRW50cnko bV9wcm9maWxlVHlwZSwgcHJvZmlsZUxpc3QpOwogICAgICAgICBrckNvbmZpZy0+c3luYygpOwog ICAgIH0gZWxzZSBpZiAocmVzdWx0ID49IE9WRVJXUklURV9FTlRSWV9JRCAmJiByZXN1bHQgPCBP VkVSV1JJVEVfRU5UUllfSUQgKyBwcm9maWxlTGlzdC5jb3VudCgpKSB7Ci0gICAgICAgIGVtaXQg c2F2ZVRvUHJvZmlsZShwcm9maWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbcmVzdWx0IC0g T1ZFUldSSVRFX0VOVFJZX0lEXSk7CisgICAgICAgIGVtaXQgc2F2ZVRvUHJvZmlsZShtX3Byb2Zp bGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtyZXN1bHQgLSBPVkVSV1JJVEVfRU5UUllfSURd KTsKICAgICB9CiB9CiAKQEAgLTk1LDExICs5NSwxMSBAQCB2b2lkIFByb2ZpbGVNYW5hZ2VyOjpu ZXdQcm9maWxlKGNvbnN0IFFTdHJpbmcgJmRlZmF1bHROYW1lKQogICAgICAgICAgICAgcHJvZmls ZU51bSsrOwogCiAgICAgICAgIFFTdHJpbmcgcHJvZmlsZVN0cmluZyA9IFFTdHJpbmcoIiUxIiku YXJnKHByb2ZpbGVOdW0pOwotICAgICAgICBRU3RyaW5nIHByb2ZpbGVOYW1lID0gcHJvZmlsZVR5 cGUgKyAiIC0gIiArIHByb2ZpbGVTdHJpbmc7CisgICAgICAgIFFTdHJpbmcgcHJvZmlsZU5hbWUg PSBtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlU3RyaW5nOwogICAgICAgICBwcm9maWxl TGlzdC5hcHBlbmQoUVN0cmluZygiJTEiKS5hcmcocHJvZmlsZVN0cmluZykpOwogCiAgICAgICAg IEtDb25maWdHcm91cCBncm91cChrckNvbmZpZywgIlByaXZhdGUiKTsKLSAgICAgICAgZ3JvdXAu d3JpdGVFbnRyeShwcm9maWxlVHlwZSwgcHJvZmlsZUxpc3QpOworICAgICAgICBncm91cC53cml0 ZUVudHJ5KG1fcHJvZmlsZVR5cGUsIHByb2ZpbGVMaXN0KTsKIAogICAgICAgICBLQ29uZmlnR3Jv dXAgcGcoa3JDb25maWcsIHByb2ZpbGVOYW1lKTsKICAgICAgICAgcGcud3JpdGVFbnRyeSgiTmFt ZSIsIHByb2ZpbGUpOwpAQCAtMTExLDE1ICsxMTEsMTUgQEAgdm9pZCBQcm9maWxlTWFuYWdlcjo6 bmV3UHJvZmlsZShjb25zdCBRU3RyaW5nICZkZWZhdWx0TmFtZSkKIHZvaWQgUHJvZmlsZU1hbmFn ZXI6OmRlbGV0ZVByb2ZpbGUoY29uc3QgUVN0cmluZyAmbmFtZSkKIHsKICAgICBmb3IgKGludCBp ID0gMDsgaSAhPSBwcm9maWxlTGlzdC5jb3VudCgpOyBpKyspIHsKLSAgICAgICAgS0NvbmZpZ0dy b3VwIGdyb3VwKGtyQ29uZmlnLCBwcm9maWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbaV0p OworICAgICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcsIG1fcHJvZmlsZVR5cGUgKyAi IC0gIiArIHByb2ZpbGVMaXN0W2ldKTsKICAgICAgICAgUVN0cmluZyBjdXJyZW50TmFtZSA9IGdy b3VwLnJlYWRFbnRyeSgiTmFtZSIpOwogCiAgICAgICAgIGlmIChuYW1lID09IGN1cnJlbnROYW1l KSB7Ci0gICAgICAgICAgICBrckNvbmZpZy0+ZGVsZXRlR3JvdXAocHJvZmlsZVR5cGUgKyAiIC0g IiArIHByb2ZpbGVMaXN0W2ldKTsKKyAgICAgICAgICAgIGtyQ29uZmlnLT5kZWxldGVHcm91cCht X3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CiAgICAgICAgICAgICBwcm9m aWxlTGlzdC5yZW1vdmVBbGwocHJvZmlsZUxpc3RbaV0pOwogCiAgICAgICAgICAgICBLQ29uZmln R3JvdXAgcGcoa3JDb25maWcsICJQcml2YXRlIik7Ci0gICAgICAgICAgICBwZy53cml0ZUVudHJ5 KHByb2ZpbGVUeXBlLCBwcm9maWxlTGlzdCk7CisgICAgICAgICAgICBwZy53cml0ZUVudHJ5KG1f cHJvZmlsZVR5cGUsIHByb2ZpbGVMaXN0KTsKICAgICAgICAgICAgIGtyQ29uZmlnLT5zeW5jKCk7 CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEyOSwxMSArMTI5LDExIEBAIHZv aWQgUHJvZmlsZU1hbmFnZXI6OmRlbGV0ZVByb2ZpbGUoY29uc3QgUVN0cmluZyAmbmFtZSkKIHZv aWQgUHJvZmlsZU1hbmFnZXI6Om92ZXJ3cml0ZVByb2ZpbGUoY29uc3QgUVN0cmluZyAmbmFtZSkK IHsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBwcm9maWxlTGlzdC5jb3VudCgpOyBpKyspIHsK LSAgICAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGtyQ29uZmlnLCBwcm9maWxlVHlwZSArICIgLSAi ICsgcHJvZmlsZUxpc3RbaV0pOworICAgICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcs IG1fcHJvZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W2ldKTsKICAgICAgICAgUVN0cmlu ZyBjdXJyZW50TmFtZSA9IGdyb3VwLnJlYWRFbnRyeSgiTmFtZSIpOwogCiAgICAgICAgIGlmIChu YW1lID09IGN1cnJlbnROYW1lKSB7Ci0gICAgICAgICAgICBlbWl0IHNhdmVUb1Byb2ZpbGUocHJv ZmlsZVR5cGUgKyAiIC0gIiArIHByb2ZpbGVMaXN0W2ldKTsKKyAgICAgICAgICAgIGVtaXQgc2F2 ZVRvUHJvZmlsZShtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CiAgICAg ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDIsMTEgKzE0MiwxMSBAQCB2 b2lkIFByb2ZpbGVNYW5hZ2VyOjpvdmVyd3JpdGVQcm9maWxlKGNvbnN0IFFTdHJpbmcgJm5hbWUp CiBib29sIFByb2ZpbGVNYW5hZ2VyOjpsb2FkUHJvZmlsZShjb25zdCBRU3RyaW5nICZuYW1lKQog ewogICAgIGZvciAoaW50IGkgPSAwOyBpICE9IHByb2ZpbGVMaXN0LmNvdW50KCk7IGkrKykgewot ICAgICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcsIHByb2ZpbGVUeXBlICsgIiAtICIg KyBwcm9maWxlTGlzdFtpXSk7CisgICAgICAgIEtDb25maWdHcm91cCBncm91cChrckNvbmZpZywg bV9wcm9maWxlVHlwZSArICIgLSAiICsgcHJvZmlsZUxpc3RbaV0pOwogICAgICAgICBRU3RyaW5n IGN1cnJlbnROYW1lID0gZ3JvdXAucmVhZEVudHJ5KCJOYW1lIik7CiAKICAgICAgICAgaWYgKG5h bWUgPT0gY3VycmVudE5hbWUpIHsKLSAgICAgICAgICAgIGVtaXQgbG9hZEZyb21Qcm9maWxlKHBy b2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CisgICAgICAgICAgICBlbWl0IGxv YWRGcm9tUHJvZmlsZShtX3Byb2ZpbGVUeXBlICsgIiAtICIgKyBwcm9maWxlTGlzdFtpXSk7CiAg ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL2Fw cC9HVUkvcHJvZmlsZW1hbmFnZXIuaCBiL2FwcC9HVUkvcHJvZmlsZW1hbmFnZXIuaAppbmRleCAw NjgxNTAzNjcuLmFhMGYzODBlNCAxMDA2NDQKLS0tIGEvYXBwL0dVSS9wcm9maWxlbWFuYWdlci5o CisrKyBiL2FwcC9HVUkvcHJvZmlsZW1hbmFnZXIuaApAQCAtNTcsNyArNTcsNyBAQCBzaWduYWxz OgogICAgIHZvaWQgbG9hZEZyb21Qcm9maWxlKFFTdHJpbmcgcHJvZmlsZU5hbWUpOwogCiBwcml2 YXRlOgotICAgIFFTdHJpbmcgcHJvZmlsZVR5cGU7CisgICAgUVN0cmluZyBtX3Byb2ZpbGVUeXBl OwogICAgIFFTdHJpbmdMaXN0IHByb2ZpbGVMaXN0OwogfTsKIApkaWZmIC0tZ2l0IGEvYXBwL0tv bmZpZ3VyYXRvci9rZ3Byb3RvY29scy5jcHAgYi9hcHAvS29uZmlndXJhdG9yL2tncHJvdG9jb2xz LmNwcAppbmRleCAzNGViMDkzNTcuLjZmYjA5ZWE0NSAxMDA2NDQKLS0tIGEvYXBwL0tvbmZpZ3Vy YXRvci9rZ3Byb3RvY29scy5jcHAKKysrIGIvYXBwL0tvbmZpZ3VyYXRvci9rZ3Byb3RvY29scy5j cHAKQEAgLTIwNCwxMCArMjA0LDEwIEBAIHZvaWQgS2dQcm90b2NvbHM6OnNsb3RSZW1vdmVQcm90 b2NvbCgpCiAKIHZvaWQgS2dQcm90b2NvbHM6OnJlbW92ZVByb3RvY29sKGNvbnN0IFFTdHJpbmcg Jm5hbWUpCiB7Ci0gICAgUUxpc3Q8UVRyZWVXaWRnZXRJdGVtICo+IGl0ZW1MaXN0ID0gbGlua0xp c3QtPmZpbmRJdGVtcyhuYW1lLCBRdDo6TWF0Y2hFeGFjdGx5LCAwKTsKKyAgICBRTGlzdDxRVHJl ZVdpZGdldEl0ZW0gKj4gbWF0Y2hpbmdJdGVtcyA9IGxpbmtMaXN0LT5maW5kSXRlbXMobmFtZSwg UXQ6Ok1hdGNoRXhhY3RseSwgMCk7CiAKLSAgICBpZiAoaXRlbUxpc3QuY291bnQoKSkgewotICAg ICAgICBRVHJlZVdpZGdldEl0ZW0gKml0ZW0gPSBpdGVtTGlzdFswXTsKKyAgICBpZiAobWF0Y2hp bmdJdGVtcy5jb3VudCgpKSB7CisgICAgICAgIFFUcmVlV2lkZ2V0SXRlbSAqaXRlbSA9IG1hdGNo aW5nSXRlbXNbMF07CiAKICAgICAgICAgd2hpbGUgKGl0ZW0tPmNoaWxkQ291bnQoKSAhPSAwKQog ICAgICAgICAgICAgcmVtb3ZlTWltZShpdGVtLT5jaGlsZCgwKS0+dGV4dCgwKSk7CkBAIC0yMzYs MTEgKzIzNiwxMSBAQCB2b2lkIEtnUHJvdG9jb2xzOjphZGRNaW1lKFFTdHJpbmcgbmFtZSwgY29u c3QgUVN0cmluZyAmcHJvdG9jb2wpCiB7CiAgICAgUUxpc3Q8UUxpc3RXaWRnZXRJdGVtICo+IGxp c3QgPSBtaW1lTGlzdC0+ZmluZEl0ZW1zKG5hbWUsIFF0OjpNYXRjaEV4YWN0bHkpOwogCi0gICAg UUxpc3Q8UVRyZWVXaWRnZXRJdGVtICo+IGl0ZW1MaXN0ID0gbGlua0xpc3QtPmZpbmRJdGVtcyhw cm90b2NvbCwgUXQ6Ok1hdGNoRXhhY3RseSB8IFF0OjpNYXRjaFJlY3Vyc2l2ZSwgMCk7CisgICAg UUxpc3Q8UVRyZWVXaWRnZXRJdGVtICo+IG1hdGNoaW5nSXRlbXMgPSBsaW5rTGlzdC0+ZmluZEl0 ZW1zKHByb3RvY29sLCBRdDo6TWF0Y2hFeGFjdGx5IHwgUXQ6Ok1hdGNoUmVjdXJzaXZlLCAwKTsK IAogICAgIFFUcmVlV2lkZ2V0SXRlbSAqY3VycmVudExpc3RJdGVtID0gbnVsbHB0cjsKLSAgICBp ZiAoaXRlbUxpc3QuY291bnQoKSAhPSAwKQotICAgICAgICBjdXJyZW50TGlzdEl0ZW0gPSBpdGVt TGlzdFswXTsKKyAgICBpZiAobWF0Y2hpbmdJdGVtcy5jb3VudCgpICE9IDApCisgICAgICAgIGN1 cnJlbnRMaXN0SXRlbSA9IG1hdGNoaW5nSXRlbXNbMF07CiAKICAgICBpZiAobGlzdC5jb3VudCgp ID4gMCAmJiBjdXJyZW50TGlzdEl0ZW0gJiYgY3VycmVudExpc3RJdGVtLT5wYXJlbnQoKSA9PSBu dWxscHRyKSB7CiAgICAgICAgIGRlbGV0ZSBsaXN0WzBdOwpAQCAtMjYzLDExICsyNjMsMTEgQEAg dm9pZCBLZ1Byb3RvY29sczo6c2xvdFJlbW92ZU1pbWUoKQogCiB2b2lkIEtnUHJvdG9jb2xzOjpy ZW1vdmVNaW1lKGNvbnN0IFFTdHJpbmcgJm5hbWUpCiB7Ci0gICAgUUxpc3Q8UVRyZWVXaWRnZXRJ dGVtICo+IGl0ZW1MaXN0ID0gbGlua0xpc3QtPmZpbmRJdGVtcyhuYW1lLCBRdDo6TWF0Y2hFeGFj dGx5IHwgUXQ6Ok1hdGNoUmVjdXJzaXZlLCAwKTsKKyAgICBRTGlzdDxRVHJlZVdpZGdldEl0ZW0g Kj4gbWF0Y2hpbmdJdGVtcyA9IGxpbmtMaXN0LT5maW5kSXRlbXMobmFtZSwgUXQ6Ok1hdGNoRXhh Y3RseSB8IFF0OjpNYXRjaFJlY3Vyc2l2ZSwgMCk7CiAKICAgICBRVHJlZVdpZGdldEl0ZW0gKmN1 cnJlbnRNaW1lSXRlbSA9IG51bGxwdHI7Ci0gICAgaWYgKGl0ZW1MaXN0LmNvdW50KCkgIT0gMCkK LSAgICAgICAgY3VycmVudE1pbWVJdGVtID0gaXRlbUxpc3RbMF07CisgICAgaWYgKG1hdGNoaW5n SXRlbXMuY291bnQoKSAhPSAwKQorICAgICAgICBjdXJyZW50TWltZUl0ZW0gPSBtYXRjaGluZ0l0 ZW1zWzBdOwogCiAgICAgaWYgKGN1cnJlbnRNaW1lSXRlbSAmJiBjdXJyZW50TWltZUl0ZW0tPnBh cmVudCgpICE9IG51bGxwdHIpIHsKICAgICAgICAgbWltZUxpc3QtPmFkZEl0ZW0oY3VycmVudE1p bWVJdGVtLT50ZXh0KDApKTsKQEAgLTM0NiwxMiArMzQ2LDEyIEBAIGJvb2wgS2dQcm90b2NvbHM6 OmFwcGx5KCkKIHsKICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JDb25maWcsICJQcm90b2NvbHMi KTsKIAotICAgIFFTdHJpbmdMaXN0IHByb3RvY29sTGlzdDsKKyAgICBRU3RyaW5nTGlzdCBoYW5k bGVkUHJvdG9jb2xzOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gbGlua0xpc3QtPnRvcExl dmVsSXRlbUNvdW50KCk7IGkrKykgewogICAgICAgICBRVHJlZVdpZGdldEl0ZW0gKml0ZW0gPSBs aW5rTGlzdC0+dG9wTGV2ZWxJdGVtKGkpOwogCi0gICAgICAgIHByb3RvY29sTGlzdC5hcHBlbmQo aXRlbS0+dGV4dCgwKSk7CisgICAgICAgIGhhbmRsZWRQcm90b2NvbHMuYXBwZW5kKGl0ZW0tPnRl eHQoMCkpOwogCiAgICAgICAgIFFTdHJpbmdMaXN0IG1pbWVzOwogCkBAIC0zNjIsNyArMzYyLDcg QEAgYm9vbCBLZ1Byb3RvY29sczo6YXBwbHkoKQogICAgICAgICB9CiAgICAgICAgIGdyb3VwLndy aXRlRW50cnkoUVN0cmluZygiTWltZXMgRm9yICUxIikuYXJnKGl0ZW0tPnRleHQoMCkpLCBtaW1l cyk7CiAgICAgfQotICAgIGdyb3VwLndyaXRlRW50cnkoIkhhbmRsZWQgUHJvdG9jb2xzIiwgcHJv dG9jb2xMaXN0KTsKKyAgICBncm91cC53cml0ZUVudHJ5KCJIYW5kbGVkIFByb3RvY29scyIsIGhh bmRsZWRQcm90b2NvbHMpOwogICAgIGtyQ29uZmlnLT5zeW5jKCk7CiAKICAgICBLckFyY0hhbmRs ZXI6OmNsZWFyUHJvdG9jb2xDYWNoZSgpOwpkaWZmIC0tZ2l0IGEvYXBwL0tvbmZpZ3VyYXRvci9r b25maWd1cmF0b3JpdGVtcy5jcHAgYi9hcHAvS29uZmlndXJhdG9yL2tvbmZpZ3VyYXRvcml0ZW1z LmNwcAppbmRleCBhMWMxNmQwZGUuLjNjYjE4ZThlZCAxMDA2NDQKLS0tIGEvYXBwL0tvbmZpZ3Vy YXRvci9rb25maWd1cmF0b3JpdGVtcy5jcHAKKysrIGIvYXBwL0tvbmZpZ3VyYXRvci9rb25maWd1 cmF0b3JpdGVtcy5jcHAKQEAgLTI2LDEyICsyNiwxMiBAQAogI2luY2x1ZGUgPEtTaGFyZWRDb25m aWc+CiAjaW5jbHVkZSA8dXRpbGl0eT4KIAotS29uZmlndXJhdG9yRXh0ZW5zaW9uOjpLb25maWd1 cmF0b3JFeHRlbnNpb24oUU9iamVjdCAqb2JqLCBRU3RyaW5nIGNmZ0dyb3VwLCBRU3RyaW5nIGNm Z05hbWUsIGJvb2wgcmVzdGFydE5lZWRlZCwgaW50IHBhZ2UpCitLb25maWd1cmF0b3JFeHRlbnNp b246OktvbmZpZ3VyYXRvckV4dGVuc2lvbihRT2JqZWN0ICpvYmosIFFTdHJpbmcgY2ZnR3JvdXAs IFFTdHJpbmcgY2ZnTmFtZSwgYm9vbCBpc1Jlc3RhcnROZWVkZWQsIGludCBwYWdlKQogICAgIDog b2JqZWN0UHRyKG9iaikKICAgICAsIGFwcGx5Q29ubmVjdGVkKGZhbHNlKQogICAgICwgc2V0RGVm YXVsdHNDb25uZWN0ZWQoZmFsc2UpCiAgICAgLCBjaGFuZ2VkKGZhbHNlKQotICAgICwgcmVzdGFy dE5lZWRlZChyZXN0YXJ0TmVlZGVkKQorICAgICwgcmVzdGFydE5lZWRlZChpc1Jlc3RhcnROZWVk ZWQpCiAgICAgLCBzdWJwYWdlKHBhZ2UpCiAgICAgLCBjb25maWdHcm91cChzdGQ6Om1vdmUoY2Zn R3JvdXApKQogICAgICwgY29uZmlnTmFtZShzdGQ6Om1vdmUoY2ZnTmFtZSkpCkBAIC04Myw5ICs4 MywxNSBAQCBib29sIEtvbmZpZ3VyYXRvckV4dGVuc2lvbjo6aXNDaGFuZ2VkKCkKIC8vIEtvbmZp Z3VyYXRvckNoZWNrQm94IGNsYXNzCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAK LUtvbmZpZ3VyYXRvckNoZWNrQm94OjpLb25maWd1cmF0b3JDaGVja0JveChRU3RyaW5nIGNvbmZp Z0dyb3VwLCBRU3RyaW5nIG5hbWUsIGJvb2wgZGVmYXVsdFZhbHVlLCBjb25zdCBRU3RyaW5nICZ0 ZXh0LCBRV2lkZ2V0ICpwYXJlbnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCitLb25maWd1cmF0 b3JDaGVja0JveDo6S29uZmlndXJhdG9yQ2hlY2tCb3goUVN0cmluZyBjb25maWdHcm91cCwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIG5hbWUsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpbml0aWFsRGVm YXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IFFTdHJpbmcgJnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgUVdpZGdldCAqcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgcmVzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpbnQgcGFnZSkKICAgICA6IFFDaGVja0JveCh0ZXh0LCBwYXJlbnQpCi0gICAg LCBkZWZhdWx0VmFsdWUoZGVmYXVsdFZhbHVlKQorICAgICwgZGVmYXVsdFZhbHVlKGluaXRpYWxE ZWZhdWx0VmFsdWUpCiB7CiAgICAgZXh0ID0gbmV3IEtvbmZpZ3VyYXRvckV4dGVuc2lvbih0aGlz LCBzdGQ6Om1vdmUoY29uZmlnR3JvdXApLCBzdGQ6Om1vdmUobmFtZSksIHJlc3RhcnQsIHBhZ2Up OwogICAgIGNvbm5lY3QoZXh0LCAmS29uZmlndXJhdG9yRXh0ZW5zaW9uOjphcHBseUF1dG8sIHRo aXMsICZLb25maWd1cmF0b3JDaGVja0JveDo6c2xvdEFwcGx5KTsKQEAgLTE0OCwxNiArMTU0LDE2 IEBAIHZvaWQgS29uZmlndXJhdG9yQ2hlY2tCb3g6OnNsb3RTZXREZWZhdWx0cyhRT2JqZWN0ICop CiAKIEtvbmZpZ3VyYXRvclNwaW5Cb3g6OktvbmZpZ3VyYXRvclNwaW5Cb3goUVN0cmluZyBjb25m aWdHcm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmlu ZyBjb25maWdOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bnQgZGVmYXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgaW5pdGlhbERlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IG1pbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW50IG1heCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVdpZGdldCAqcGFyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBib29sIHJlc3RhcnROZWVkZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGJvb2wgaXNSZXN0YXJ0TmVlZGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpbnQgcGFnZSkKICAgICA6IFFTcGluQm94KHBhcmVudCkKLSAgICAsIGRl ZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCisgICAgLCBkZWZhdWx0VmFsdWUoaW5pdGlhbERlZmF1 bHRWYWx1ZSkKIHsKLSAgICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0 ZDo6bW92ZShjb25maWdHcm91cCksIHN0ZDo6bW92ZShjb25maWdOYW1lKSwgcmVzdGFydE5lZWRl ZCwgcGFnZSk7CisgICAgZXh0ID0gbmV3IEtvbmZpZ3VyYXRvckV4dGVuc2lvbih0aGlzLCBzdGQ6 Om1vdmUoY29uZmlnR3JvdXApLCBzdGQ6Om1vdmUoY29uZmlnTmFtZSksIGlzUmVzdGFydE5lZWRl ZCwgcGFnZSk7CiAgICAgY29ubmVjdChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5 QXV0bywgdGhpcywgJktvbmZpZ3VyYXRvclNwaW5Cb3g6OnNsb3RBcHBseSk7CiAgICAgY29ubmVj dChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OnNldERlZmF1bHRzQXV0bywgdGhpcywgJktv bmZpZ3VyYXRvclNwaW5Cb3g6OnNsb3RTZXREZWZhdWx0cyk7CiAgICAgY29ubmVjdChleHQsICZL b25maWd1cmF0b3JFeHRlbnNpb246OnNldEluaXRpYWxWYWx1ZSwgdGhpcywgJktvbmZpZ3VyYXRv clNwaW5Cb3g6OmxvYWRJbml0aWFsVmFsdWUpOwpAQCAtMjI0LDkgKzIzMCw5IEBAIEtvbmZpZ3Vy YXRvckNoZWNrQm94ICpLb25maWd1cmF0b3JDaGVja0JveEdyb3VwOjpmaW5kKGNvbnN0IFFTdHJp bmcgJm5hbWUpCiAvLyBLb25maWd1cmF0b3JSYWRpb0J1dHRvbnMgY2xhc3MKIC8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KIAotS29uZmlndXJhdG9yUmFkaW9CdXR0b25zOjpLb25maWd1 cmF0b3JSYWRpb0J1dHRvbnMoUVN0cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1lLCBRU3Ry aW5nIGRlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50LCBib29sIHJlc3RhcnQsIGludCBwYWdl KQorS29uZmlndXJhdG9yUmFkaW9CdXR0b25zOjpLb25maWd1cmF0b3JSYWRpb0J1dHRvbnMoUVN0 cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1lLCBRU3RyaW5nIGluaXRpYWxEZWZhdWx0VmFs dWUsIFFXaWRnZXQgKnBhcmVudCwgYm9vbCByZXN0YXJ0LCBpbnQgcGFnZSkKICAgICA6IFFXaWRn ZXQocGFyZW50KQotICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShkZWZhdWx0VmFsdWUpKQor ICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShpbml0aWFsRGVmYXVsdFZhbHVlKSkKIHsKICAg ICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0ZDo6bW92ZShjb25maWdH cm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CiAgICAgY29ubmVjdChleHQs ICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5QXV0bywgdGhpcywgJktvbmZpZ3VyYXRvclJh ZGlvQnV0dG9uczo6c2xvdEFwcGx5KTsKQEAgLTMyNyw5ICszMzMsOSBAQCB2b2lkIEtvbmZpZ3Vy YXRvclJhZGlvQnV0dG9uczo6c2xvdFNldERlZmF1bHRzKFFPYmplY3QgKikKIC8vIEtvbmZpZ3Vy YXRvckVkaXRCb3ggY2xhc3MKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAotS29u ZmlndXJhdG9yRWRpdEJveDo6S29uZmlndXJhdG9yRWRpdEJveChRU3RyaW5nIGNvbmZpZ0dyb3Vw LCBRU3RyaW5nIG5hbWUsIFFTdHJpbmcgZGVmYXVsdFZhbHVlLCBRV2lkZ2V0ICpwYXJlbnQsIGJv b2wgcmVzdGFydCwgaW50IHBhZ2UpCitLb25maWd1cmF0b3JFZGl0Qm94OjpLb25maWd1cmF0b3JF ZGl0Qm94KFFTdHJpbmcgY29uZmlnR3JvdXAsIFFTdHJpbmcgbmFtZSwgUVN0cmluZyBpbml0aWFs RGVmYXVsdFZhbHVlLCBRV2lkZ2V0ICpwYXJlbnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCiAg ICAgOiBRTGluZUVkaXQocGFyZW50KQotICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShkZWZh dWx0VmFsdWUpKQorICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShpbml0aWFsRGVmYXVsdFZh bHVlKSkKIHsKICAgICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0ZDo6 bW92ZShjb25maWdHcm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CiAgICAg Y29ubmVjdChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5QXV0bywgdGhpcywgJktv bmZpZ3VyYXRvckVkaXRCb3g6OnNsb3RBcHBseSk7CkBAIC0zNjksMTQgKzM3NSwxNCBAQCB2b2lk IEtvbmZpZ3VyYXRvckVkaXRCb3g6OnNsb3RTZXREZWZhdWx0cyhRT2JqZWN0ICopCiAKIEtvbmZp Z3VyYXRvclVSTFJlcXVlc3Rlcjo6S29uZmlndXJhdG9yVVJMUmVxdWVzdGVyKFFTdHJpbmcgY29u ZmlnR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRU3RyaW5nIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRU3RyaW5nIGRlZmF1bHRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgaW5pdGlhbERlZmF1bHRWYWx1 ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFX aWRnZXQgKnBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJvb2wgcmVzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBwYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBleHBhbnNpb24pCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRXhwYW5zaW9uKQogICAg IDogS1VybFJlcXVlc3RlcihwYXJlbnQpCi0gICAgLCBkZWZhdWx0VmFsdWUoc3RkOjptb3ZlKGRl ZmF1bHRWYWx1ZSkpCi0gICAgLCBleHBhbnNpb24oZXhwYW5zaW9uKQorICAgICwgZGVmYXVsdFZh bHVlKHN0ZDo6bW92ZShpbml0aWFsRGVmYXVsdFZhbHVlKSkKKyAgICAsIGV4cGFuc2lvbihpc0V4 cGFuc2lvbikKIHsKICAgICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0 ZDo6bW92ZShjb25maWdHcm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CiAg ICAgY29ubmVjdChleHQsICZLb25maWd1cmF0b3JFeHRlbnNpb246OmFwcGx5QXV0bywgdGhpcywg JktvbmZpZ3VyYXRvclVSTFJlcXVlc3Rlcjo6c2xvdEFwcGx5KTsKQEAgLTQxNCw5ICs0MjAsOSBA QCB2b2lkIEtvbmZpZ3VyYXRvclVSTFJlcXVlc3Rlcjo6c2xvdFNldERlZmF1bHRzKFFPYmplY3Qg KikKIC8vIEtvbmZpZ3VyYXRvckZvbnRDaG9vc2VyIGNsYXNzCiAvLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vCiAKLUtvbmZpZ3VyYXRvckZvbnRDaG9vc2VyOjpLb25maWd1cmF0b3JGb250 Q2hvb3NlcihRU3RyaW5nIGNvbmZpZ0dyb3VwLCBRU3RyaW5nIG5hbWUsIGNvbnN0IFFGb250ICZk ZWZhdWx0VmFsdWUsIFFXaWRnZXQgKnBhcmVudCwgYm9vbCByZXN0YXJ0LCBpbnQgcGFnZSkKK0tv bmZpZ3VyYXRvckZvbnRDaG9vc2VyOjpLb25maWd1cmF0b3JGb250Q2hvb3NlcihRU3RyaW5nIGNv bmZpZ0dyb3VwLCBRU3RyaW5nIG5hbWUsIGNvbnN0IFFGb250ICZpbml0aWFsRGVmYXVsdFZhbHVl LCBRV2lkZ2V0ICpwYXJlbnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCiAgICAgOiBRV2lkZ2V0 KHBhcmVudCkKLSAgICAsIGRlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCisgICAgLCBkZWZhdWx0 VmFsdWUoaW5pdGlhbERlZmF1bHRWYWx1ZSkKIHsKICAgICBhdXRvICpsYXlvdXQgPSBuZXcgUUhC b3hMYXlvdXQodGhpcyk7CiAKQEAgLTQ4NSw3ICs0OTEsNyBAQCB2b2lkIEtvbmZpZ3VyYXRvckZv bnRDaG9vc2VyOjpzbG90QnJvd3NlRm9udCgpCiAKIEtvbmZpZ3VyYXRvckNvbWJvQm94OjpLb25m aWd1cmF0b3JDb21ib0JveChRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGRlZmF1bHRWYWx1ZSwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGluaXRpYWxEZWZhdWx0 VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS09ORklH VVJBVE9SX05BTUVfVkFMVUVfUEFJUiAqbGlzdEluLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGludCBsaXN0SW5MZW4sCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50LApAQCAtNDkzLDcgKzQ5OSw3IEBA IEtvbmZpZ3VyYXRvckNvbWJvQm94OjpLb25maWd1cmF0b3JDb21ib0JveChRU3RyaW5nIGNvbmZp Z0dyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg ZWRpdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IHBhZ2UpCiAgICAgOiBRQ29tYm9Cb3gocGFyZW50KQotICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6 bW92ZShkZWZhdWx0VmFsdWUpKQorICAgICwgZGVmYXVsdFZhbHVlKHN0ZDo6bW92ZShpbml0aWFs RGVmYXVsdFZhbHVlKSkKICAgICAsIGxpc3RMZW4obGlzdEluTGVuKQogewogICAgIGxpc3QgPSBu ZXcgS09ORklHVVJBVE9SX05BTUVfVkFMVUVfUEFJUltsaXN0SW5MZW5dOwpAQCAtNTY4LDE0ICs1 NzQsMTQgQEAgdm9pZCBLb25maWd1cmF0b3JDb21ib0JveDo6c2xvdFNldERlZmF1bHRzKFFPYmpl Y3QgKikKIAogS29uZmlndXJhdG9yQ29sb3JDaG9vc2VyOjpLb25maWd1cmF0b3JDb2xvckNob29z ZXIoUVN0cmluZyBjb25maWdHcm91cCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvciAmZGVmYXVsdFZhbHVlLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg UUNvbG9yICZpbml0aWFsRGVmYXVsdFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0LAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQURESVRJT05BTF9D T0xPUiAqYWRkQ29sUHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW50IGFkZENvbE51bSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGludCBwYWdlKQogICAgIDogUUNvbWJvQm94KHBhcmVudCkK LSAgICAsIGRlZmF1bHRWYWx1ZShkZWZhdWx0VmFsdWUpCisgICAgLCBkZWZhdWx0VmFsdWUoaW5p dGlhbERlZmF1bHRWYWx1ZSkKICAgICAsIGRpc2FibGVDb2xvckNob29zZXIodHJ1ZSkKIHsKICAg ICBleHQgPSBuZXcgS29uZmlndXJhdG9yRXh0ZW5zaW9uKHRoaXMsIHN0ZDo6bW92ZShjb25maWdH cm91cCksIHN0ZDo6bW92ZShuYW1lKSwgcmVzdGFydCwgcGFnZSk7CkBAIC03NzcsOSArNzgzLDkg QEAgUUNvbG9yIEtvbmZpZ3VyYXRvckNvbG9yQ2hvb3Nlcjo6Z2V0Q29sb3IoKQogLy8gS29uZmln dXJhdG9yTGlzdEJveCBjbGFzcwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCi1L b25maWd1cmF0b3JMaXN0Qm94OjpLb25maWd1cmF0b3JMaXN0Qm94KFFTdHJpbmcgY29uZmlnR3Jv dXAsIFFTdHJpbmcgbmFtZSwgUVN0cmluZ0xpc3QgZGVmYXVsdFZhbHVlLCBRV2lkZ2V0ICpwYXJl bnQsIGJvb2wgcmVzdGFydCwgaW50IHBhZ2UpCitLb25maWd1cmF0b3JMaXN0Qm94OjpLb25maWd1 cmF0b3JMaXN0Qm94KFFTdHJpbmcgY29uZmlnR3JvdXAsIFFTdHJpbmcgbmFtZSwgUVN0cmluZ0xp c3QgaW5pdGlhbERlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50LCBib29sIHJlc3RhcnQsIGlu dCBwYWdlKQogICAgIDogS3JMaXN0V2lkZ2V0KHBhcmVudCkKLSAgICAsIGRlZmF1bHRWYWx1ZShz dGQ6Om1vdmUoZGVmYXVsdFZhbHVlKSkKKyAgICAsIGRlZmF1bHRWYWx1ZShzdGQ6Om1vdmUoaW5p dGlhbERlZmF1bHRWYWx1ZSkpCiB7CiAgICAgZXh0ID0gbmV3IEtvbmZpZ3VyYXRvckV4dGVuc2lv bih0aGlzLCBzdGQ6Om1vdmUoY29uZmlnR3JvdXApLCBzdGQ6Om1vdmUobmFtZSksIHJlc3RhcnQs IHBhZ2UpOwogICAgIGNvbm5lY3QoZXh0LCAmS29uZmlndXJhdG9yRXh0ZW5zaW9uOjphcHBseUF1 dG8sIHRoaXMsICZLb25maWd1cmF0b3JMaXN0Qm94OjpzbG90QXBwbHkpOwpkaWZmIC0tZ2l0IGEv YXBwL0tvbmZpZ3VyYXRvci9rb25maWd1cmF0b3JpdGVtcy5oIGIvYXBwL0tvbmZpZ3VyYXRvci9r b25maWd1cmF0b3JpdGVtcy5oCmluZGV4IGFmNGZmNjg3Yi4uZjYwMWJhODlkIDEwMDY0NAotLS0g YS9hcHAvS29uZmlndXJhdG9yL2tvbmZpZ3VyYXRvcml0ZW1zLmgKKysrIGIvYXBwL0tvbmZpZ3Vy YXRvci9rb25maWd1cmF0b3JpdGVtcy5oCkBAIC0zNyw3ICszNyw3IEBAIGNsYXNzIEtvbmZpZ3Vy YXRvckV4dGVuc2lvbiA6IHB1YmxpYyBRT2JqZWN0CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgot ICAgIEtvbmZpZ3VyYXRvckV4dGVuc2lvbihRT2JqZWN0ICpvYmosIFFTdHJpbmcgY2ZnR3JvdXAs IFFTdHJpbmcgY2ZnTmFtZSwgYm9vbCByZXN0YXJ0TmVlZGVkID0gZmFsc2UsIGludCBwYWdlID0g RklSU1RfUEFHRSk7CisgICAgS29uZmlndXJhdG9yRXh0ZW5zaW9uKFFPYmplY3QgKm9iaiwgUVN0 cmluZyBjZmdHcm91cCwgUVN0cmluZyBjZmdOYW1lLCBib29sIGlzUmVzdGFydE5lZWRlZCA9IGZh bHNlLCBpbnQgcGFnZSA9IEZJUlNUX1BBR0UpOwogCiAgICAgdmlydHVhbCB2b2lkIGxvYWRJbml0 aWFsVmFsdWUoKTsKICAgICB2aXJ0dWFsIGJvb2wgYXBwbHkoKTsKQEAgLTEwOSw3ICsxMDksNyBA QCBjbGFzcyBLb25maWd1cmF0b3JDaGVja0JveCA6IHB1YmxpYyBRQ2hlY2tCb3gKIHB1YmxpYzoK ICAgICBLb25maWd1cmF0b3JDaGVja0JveChRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAg ICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBi b29sIGRlZmF1bHRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGluaXRpYWxE ZWZhdWx0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUVN0cmluZyAmdGV4 dCwKICAgICAgICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0ICpwYXJlbnQgPSBudWxscHRyLAog ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVzdGFydCA9IGZhbHNlLApAQCAtMTUwLDEx ICsxNTAsMTEgQEAgY2xhc3MgS29uZmlndXJhdG9yU3BpbkJveCA6IHB1YmxpYyBRU3BpbkJveAog cHVibGljOgogICAgIEtvbmZpZ3VyYXRvclNwaW5Cb3goUVN0cmluZyBjb25maWdHcm91cCwKICAg ICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgY29uZmlnTmFtZSwKLSAgICAgICAgICAgICAg ICAgICAgICAgIGludCBkZWZhdWx0VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQg aW5pdGlhbERlZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW4sCiAg ICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF4LAogICAgICAgICAgICAgICAgICAgICAgICAg UVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg cmVzdGFydE5lZWRlZCA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1Jl c3RhcnROZWVkZWQgPSBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYWdlID0g RklSU1RfUEFHRSk7CiAgICAgfktvbmZpZ3VyYXRvclNwaW5Cb3goKSBvdmVycmlkZTsKIApAQCAt MjA0LDcgKzIwNCwxMiBAQCBjbGFzcyBLb25maWd1cmF0b3JSYWRpb0J1dHRvbnMgOiBwdWJsaWMg UVdpZGdldAogICAgIFFfT0JKRUNUCiAKIHB1YmxpYzoKLSAgICBLb25maWd1cmF0b3JSYWRpb0J1 dHRvbnMoUVN0cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1lLCBRU3RyaW5nIGRlZmF1bHRW YWx1ZSwgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwgYm9vbCByZXN0YXJ0ID0gZmFsc2UsIGlu dCBwYWdlID0gRklSU1RfUEFHRSk7CisgICAgS29uZmlndXJhdG9yUmFkaW9CdXR0b25zKFFTdHJp bmcgY29uZmlnR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFt ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBpbml0aWFsRGVmYXVsdFZh bHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0ICpwYXJlbnQgPSBudWxs cHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlc3RhcnQgPSBmYWxzZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhZ2UgPSBGSVJTVF9QQUdFKTsKICAg ICB+S29uZmlndXJhdG9yUmFkaW9CdXR0b25zKCkgb3ZlcnJpZGU7CiAKICAgICBpbmxpbmUgS29u ZmlndXJhdG9yRXh0ZW5zaW9uICpleHRlbnNpb24oKQpAQCAtMjQ3LDcgKzI1Miw3IEBAIGNsYXNz IEtvbmZpZ3VyYXRvckVkaXRCb3ggOiBwdWJsaWMgUUxpbmVFZGl0CiAgICAgUV9PQkpFQ1QKIAog cHVibGljOgotICAgIEtvbmZpZ3VyYXRvckVkaXRCb3goUVN0cmluZyBjb25maWdHcm91cCwgUVN0 cmluZyBuYW1lLCBRU3RyaW5nIGRlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0 ciwgYm9vbCByZXN0YXJ0ID0gZmFsc2UsIGludCBwYWdlID0gRklSU1RfUEFHRSk7CisgICAgS29u ZmlndXJhdG9yRWRpdEJveChRU3RyaW5nIGNvbmZpZ0dyb3VwLCBRU3RyaW5nIG5hbWUsIFFTdHJp bmcgaW5pdGlhbERlZmF1bHRWYWx1ZSwgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwgYm9vbCBy ZXN0YXJ0ID0gZmFsc2UsIGludCBwYWdlID0gRklSU1RfUEFHRSk7CiAgICAgfktvbmZpZ3VyYXRv ckVkaXRCb3goKSBvdmVycmlkZTsKIAogICAgIGlubGluZSBLb25maWd1cmF0b3JFeHRlbnNpb24g KmV4dGVuc2lvbigpCkBAIC0yNzUsMTEgKzI4MCwxMSBAQCBjbGFzcyBLb25maWd1cmF0b3JVUkxS ZXF1ZXN0ZXIgOiBwdWJsaWMgS1VybFJlcXVlc3RlcgogcHVibGljOgogICAgIEtvbmZpZ3VyYXRv clVSTFJlcXVlc3RlcihRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRU3RyaW5nIG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJp bmcgZGVmYXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGlu aXRpYWxEZWZhdWx0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFXaWRnZXQg KnBhcmVudCA9IG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcmVz dGFydCA9IGZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFnZSA9IEZJ UlNUX1BBR0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZXhwYW5zaW9uID0g dHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNFeHBhbnNpb24gPSB0 cnVlKTsKICAgICB+S29uZmlndXJhdG9yVVJMUmVxdWVzdGVyKCkgb3ZlcnJpZGU7CiAKICAgICBp bmxpbmUgS29uZmlndXJhdG9yRXh0ZW5zaW9uICpleHRlbnNpb24oKQpAQCAtMzA4LDcgKzMxMyw3 IEBAIGNsYXNzIEtvbmZpZ3VyYXRvckZvbnRDaG9vc2VyIDogcHVibGljIFFXaWRnZXQKIHB1Ymxp YzoKICAgICBLb25maWd1cmF0b3JGb250Q2hvb3NlcihRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBRRm9udCAmZGVmYXVsdFZhbHVlLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IFFGb250ICZpbml0aWFsRGVmYXVsdFZhbHVlLAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFXaWRnZXQgKnBhcmVudCA9IG51bGxwdHIsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0ID0gZmFsc2UsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW50IHBhZ2UgPSBGSVJTVF9QQUdFKTsKQEAgLTM2Myw3ICszNjgsNyBAQCBjbGFz cyBLb25maWd1cmF0b3JDb21ib0JveCA6IHB1YmxpYyBRQ29tYm9Cb3gKIHB1YmxpYzoKICAgICBL b25maWd1cmF0b3JDb21ib0JveChRU3RyaW5nIGNvbmZpZ0dyb3VwLAogICAgICAgICAgICAgICAg ICAgICAgICAgIFFTdHJpbmcgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5n IGRlZmF1bHRWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGluaXRpYWxE ZWZhdWx0VmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgS09ORklHVVJBVE9SX05BTUVf VkFMVUVfUEFJUiAqbGlzdEluLAogICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaXN0SW5M ZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50ID0gbnVsbHB0ciwK QEAgLTQwNyw3ICs0MTIsNyBAQCBjbGFzcyBLb25maWd1cmF0b3JDb2xvckNob29zZXIgOiBwdWJs aWMgUUNvbWJvQm94CiBwdWJsaWM6CiAgICAgS29uZmlndXJhdG9yQ29sb3JDaG9vc2VyKFFTdHJp bmcgY29uZmlnR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgbmFt ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUUNvbG9yICZkZWZhdWx0VmFs dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFFDb2xvciAmaW5pdGlhbERl ZmF1bHRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVdpZGdldCAqcGFyZW50 ID0gbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0ID0g ZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFERElUSU9OQUxfQ09MT1IgKmFk ZENvbFB0ciA9IG51bGxwdHIsCkBAIC00NTgsNyArNDYzLDEyIEBAIGNsYXNzIEtvbmZpZ3VyYXRv ckxpc3RCb3ggOiBwdWJsaWMgS3JMaXN0V2lkZ2V0CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgot ICAgIEtvbmZpZ3VyYXRvckxpc3RCb3goUVN0cmluZyBjb25maWdHcm91cCwgUVN0cmluZyBuYW1l LCBRU3RyaW5nTGlzdCBkZWZhdWx0VmFsdWUsIFFXaWRnZXQgKnBhcmVudCA9IG51bGxwdHIsIGJv b2wgcmVzdGFydCA9IGZhbHNlLCBpbnQgcGFnZSA9IEZJUlNUX1BBR0UpOworICAgIEtvbmZpZ3Vy YXRvckxpc3RCb3goUVN0cmluZyBjb25maWdHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAg IFFTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmdMaXN0IGluaXRp YWxEZWZhdWx0VmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBRV2lkZ2V0ICpwYXJlbnQg PSBudWxscHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCByZXN0YXJ0ID0gZmFsc2Us CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFnZSA9IEZJUlNUX1BBR0UpOwogICAgIH5L b25maWd1cmF0b3JMaXN0Qm94KCkgb3ZlcnJpZGU7CiAKICAgICBpbmxpbmUgS29uZmlndXJhdG9y RXh0ZW5zaW9uICpleHRlbnNpb24oKQpkaWZmIC0tZ2l0IGEvYXBwL0tvbmZpZ3VyYXRvci9rcnJl c3VsdHRhYmxlLmNwcCBiL2FwcC9Lb25maWd1cmF0b3Iva3JyZXN1bHR0YWJsZS5jcHAKaW5kZXgg MjQ1ZmFhZmQ0Li5iZmE4MzZlMDEgMTAwNjQ0Ci0tLSBhL2FwcC9Lb25maWd1cmF0b3Iva3JyZXN1 bHR0YWJsZS5jcHAKKysrIGIvYXBwL0tvbmZpZ3VyYXRvci9rcnJlc3VsdHRhYmxlLmNwcApAQCAt MzEwLDcgKzMxMCw3IEBAIEtyVG9vbFJlc3VsdFRhYmxlOjp+S3JUb29sUmVzdWx0VGFibGUoKSA9 IGRlZmF1bHQ7CiBib29sIEtyVG9vbFJlc3VsdFRhYmxlOjphZGRSb3coU2VhcmNoT2JqZWN0ICpz ZWFyY2gsIFFHcmlkTGF5b3V0ICpncmlkKQogewogICAgIGF1dG8gKmFwcEdyb3VwID0gZHluYW1p Y19jYXN0PEFwcGxpY2F0aW9uR3JvdXAgKj4oc2VhcmNoKTsKLSAgICBRTGlzdDxBcHBsaWNhdGlv biAqPiBfYXBwcyA9IGFwcEdyb3VwLT5nZXRBcHBWZWMoKTsKKyAgICBRTGlzdDxBcHBsaWNhdGlv biAqPiBfYXBwc1ZlYyA9IGFwcEdyb3VwLT5nZXRBcHBWZWMoKTsKIAogICAgIC8vIE5hbWUgY29s dW1uCiAgICAgX2xhYmVsID0gbmV3IFFMYWJlbChhcHBHcm91cC0+Z2V0U2VhcmNoTmFtZSgpLCB0 aGlzKTsKQEAgLTMyMiw3ICszMjIsNyBAQCBib29sIEtyVG9vbFJlc3VsdFRhYmxlOjphZGRSb3co U2VhcmNoT2JqZWN0ICpzZWFyY2gsIFFHcmlkTGF5b3V0ICpncmlkKQogICAgIFFXaWRnZXQgKnRv b2xCb3hXaWRnZXQgPSBuZXcgUVdpZGdldCh0aGlzKTsKICAgICBhdXRvICp0b29sQm94ID0gbmV3 IFFWQm94TGF5b3V0KHRvb2xCb3hXaWRnZXQpOwogCi0gICAgZm9yIChhdXRvICZfYXBwIDogX2Fw cHMpIHsKKyAgICBmb3IgKGF1dG8gJl9hcHAgOiBfYXBwc1ZlYykgewogICAgICAgICBhdXRvICps ID0gbmV3IEtVcmxMYWJlbChfYXBwLT5nZXRXZWJzaXRlKCksIF9hcHAtPmdldEFwcE5hbWUoKSwg dG9vbEJveFdpZGdldCk7CiAgICAgICAgIHRvb2xCb3gtPmFkZFdpZGdldChsKTsKIApAQCAtMzM4 LDcgKzMzOCw3IEBAIGJvb2wgS3JUb29sUmVzdWx0VGFibGU6OmFkZFJvdyhTZWFyY2hPYmplY3Qg KnNlYXJjaCwgUUdyaWRMYXlvdXQgKmdyaWQpCiAgICAgUVdpZGdldCAqdmJveFdpZGdldCA9IG5l dyBRV2lkZ2V0KHRoaXMpOwogICAgIGF1dG8gKnZib3ggPSBuZXcgUVZCb3hMYXlvdXQodmJveFdp ZGdldCk7CiAKLSAgICBmb3IgKGF1dG8gJl9hcHAgOiBfYXBwcykgeworICAgIGZvciAoYXV0byAm X2FwcCA6IF9hcHBzVmVjKSB7CiAgICAgICAgIF9sYWJlbCA9IG5ldyBRTGFiZWwoX2FwcC0+Z2V0 UGF0aCgpLCB2Ym94V2lkZ2V0KTsKICAgICAgICAgX2xhYmVsLT5zZXRDb250ZW50c01hcmdpbnMo NSwgNSwgNSwgNSk7CiAgICAgICAgIF9sYWJlbC0+c2V0QWxpZ25tZW50KFF0OjpBbGlnblRvcCk7 CmRpZmYgLS1naXQgYS9hcHAvS3JWaWV3ZXIvbGlzdGVyLmNwcCBiL2FwcC9LclZpZXdlci9saXN0 ZXIuY3BwCmluZGV4IDg5ODNlMDY1MC4uMWQzNzQzMDE2IDEwMDY0NAotLS0gYS9hcHAvS3JWaWV3 ZXIvbGlzdGVyLmNwcAorKysgYi9hcHAvS3JWaWV3ZXIvbGlzdGVyLmNwcApAQCAtMTEsOSArMTEs OSBAQAogI2luY2x1ZGUgPFFEYXRlPgogI2luY2x1ZGUgPFFGaWxlPgogI2luY2x1ZGUgPFFSZWN0 PgorI2luY2x1ZGUgPFFTdHJpbmdDb252ZXJ0ZXI+CiAjaW5jbHVkZSA8UVRlbXBvcmFyeUZpbGU+ CiAjaW5jbHVkZSA8UVRleHRTdHJlYW0+Ci0jaW5jbHVkZSA8UVN0cmluZ0NvbnZlcnRlcj4KIC8v IFF0R3VpCiAjaW5jbHVkZSA8UUNsaXBib2FyZD4KICNpbmNsdWRlIDxRRm9udERhdGFiYXNlPgpA QCAtNDAsMTAgKzQwLDEwIEBACiAjaW5jbHVkZSA8S0FjdGlvbkNvbGxlY3Rpb24+CiAjaW5jbHVk ZSA8S0NoYXJzZXRzPgogI2luY2x1ZGUgPEtJTy9Db3B5Sm9iPgorI2luY2x1ZGUgPEtJTy9Kb2JU cmFja2VyPgogI2luY2x1ZGUgPEtJTy9Kb2JVaURlbGVnYXRlPgogI2luY2x1ZGUgPEtJTy9Kb2JV aURlbGVnYXRlRmFjdG9yeT4KICNpbmNsdWRlIDxLSU8vVHJhbnNmZXJKb2I+Ci0jaW5jbHVkZSA8 S0lPL0pvYlRyYWNrZXI+CiAjaW5jbHVkZSA8S0pvYlRyYWNrZXJJbnRlcmZhY2U+CiAjaW5jbHVk ZSA8S0xvY2FsaXplZFN0cmluZz4KICNpbmNsdWRlIDxLTWVzc2FnZUJveD4KQEAgLTE4NDgsMTEg KzE4NDgsMTMgQEAgdm9pZCBMaXN0ZXI6OnVwZGF0ZVByb2dyZXNzQmFyKCkKIAogdm9pZCBMaXN0 ZXI6Omp1bXBUb1Bvc2l0aW9uKCkKIHsKLSAgICBib29sIG9rID0gdHJ1ZTsKLSAgICBRU3RyaW5n IHJlcyA9IFFJbnB1dERpYWxvZzo6Z2V0VGV4dChfdGV4dEFyZWEsIGkxOG4oIkp1bXAgdG8gcG9z aXRpb24iKSwgaTE4bigiVGV4dCBwb3NpdGlvbjoiKSwgUUxpbmVFZGl0OjpOb3JtYWwsICIwIiwg Jm9rKTsKLSAgICBpZiAoIW9rKQotICAgICAgICByZXR1cm47Ci0KKyAgICBRU3RyaW5nIHJlczsK KyAgICB7CisgICAgICAgIGJvb2wgb2sgPSB0cnVlOworICAgICAgICByZXMgPSBRSW5wdXREaWFs b2c6OmdldFRleHQoX3RleHRBcmVhLCBpMThuKCJKdW1wIHRvIHBvc2l0aW9uIiksIGkxOG4oIlRl eHQgcG9zaXRpb246IiksIFFMaW5lRWRpdDo6Tm9ybWFsLCAiMCIsICZvayk7CisgICAgICAgIGlm ICghb2spCisgICAgICAgICAgICByZXR1cm47CisgICAgfQogICAgIHJlcyA9IHJlcy50cmltbWVk KCk7CiAgICAgcWludDY0IHBvcyA9IC0xOwogICAgIGlmIChyZXMuc3RhcnRzV2l0aChRTGF0aW4x U3RyaW5nKCIweCIpKSkgewpkaWZmIC0tZ2l0IGEvYXBwL0tyVmlld2VyL3BhbmVsdmlld2VyLmNw cCBiL2FwcC9LclZpZXdlci9wYW5lbHZpZXdlci5jcHAKaW5kZXggODIzOGQyNTY1Li43ODNhMzVi M2MgMTAwNjQ0Ci0tLSBhL2FwcC9LclZpZXdlci9wYW5lbHZpZXdlci5jcHAKKysrIGIvYXBwL0ty Vmlld2VyL3BhbmVsdmlld2VyLmNwcApAQCAtMTQsMjcgKzE0LDI4IEBACiAvLyBRdFdpZGdldHMK ICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAKKyNpbmNsdWRlIDxLSU8vU3RhdEpvYj4KICNpbmNs dWRlIDxLTG9jYWxpemVkU3RyaW5nPgogI2luY2x1ZGUgPEtQYXJ0cy9OYXZpZ2F0aW9uRXh0ZW5z aW9uPgotI2luY2x1ZGUgPEtQYXJ0cy9SZWFkV3JpdGVQYXJ0PgotI2luY2x1ZGUgPEtTaGFyZWRD b25maWc+CiAjaW5jbHVkZSA8S1BhcnRzL1BhcnRMb2FkZXI+Ci0jaW5jbHVkZSA8S0lPL1N0YXRK b2I+CisjaW5jbHVkZSA8S1BhcnRzL1JlYWRXcml0ZVBhcnQ+CiAjaW5jbHVkZSA8S1NlcnZpY2U+ CisjaW5jbHVkZSA8S1NoYXJlZENvbmZpZz4KIAogI2luY2x1ZGUgPEtGaWxlSXRlbT4KICNpbmNs dWRlIDxLTWVzc2FnZUJveD4KIAogI2luY2x1ZGUgIi4uL2RlZmF1bHRzLmgiCisjaW5jbHVkZSAi a3J2aWV3ZXIuaCIKICNpbmNsdWRlICJsaXN0ZXIuaCIKIAogI2RlZmluZSBESUNUU0laRSAyMTEK IAotUGFuZWxWaWV3ZXJCYXNlOjpQYW5lbFZpZXdlckJhc2UoUVdpZGdldCAqcGFyZW50LCBLclZp ZXdlcjo6TW9kZSBtb2RlKQorUGFuZWxWaWV3ZXJCYXNlOjpQYW5lbFZpZXdlckJhc2UoUVdpZGdl dCAqcGFyZW50LCBLclZpZXdlcjo6TW9kZSBwYW5lbE1vZGUpCiAgICAgOiBRU3RhY2tlZFdpZGdl dChwYXJlbnQpCiAgICAgLCBtaW1lcyhudWxscHRyKQogICAgICwgY3BhcnQobnVsbHB0cikKLSAg ICAsIG1vZGUobW9kZSkKKyAgICAsIG1vZGUocGFuZWxNb2RlKQogewogICAgIHNldFNpemVQb2xp Y3koUVNpemVQb2xpY3koUVNpemVQb2xpY3k6OlByZWZlcnJlZCwgUVNpemVQb2xpY3k6Oklnbm9y ZWQpKTsKIApAQCAtMTEwLDggKzExMSw4IEBAIHZvaWQgUGFuZWxWaWV3ZXJCYXNlOjpvcGVuVXJs KGNvbnN0IFFVcmwgJnVybCkKIAogLyogLS0tLT09PXsgUGFuZWxWaWV3ZXIgfT09PS0tLS0gKi8K IAotUGFuZWxWaWV3ZXI6OlBhbmVsVmlld2VyKFFXaWRnZXQgKnBhcmVudCwgS3JWaWV3ZXI6Ok1v ZGUgbW9kZSkKLSAgICA6IFBhbmVsVmlld2VyQmFzZShwYXJlbnQsIG1vZGUpCitQYW5lbFZpZXdl cjo6UGFuZWxWaWV3ZXIoUVdpZGdldCAqcGFyZW50LCBLclZpZXdlcjo6TW9kZSBwYW5lbE1vZGUp CisgICAgOiBQYW5lbFZpZXdlckJhc2UocGFyZW50LCBwYW5lbE1vZGUpCiB7CiB9CiAKQEAgLTE2 NywyMCArMTY4LDI1IEBAIEtQYXJ0czo6UmVhZE9ubHlQYXJ0ICpQYW5lbFZpZXdlcjo6Z2V0RGVm YXVsdFBhcnQoY29uc3QgS0ZpbGVJdGVtICZmaSkKICAgICBLQ29uZmlnR3JvdXAgZ3JvdXAoa3JD b25maWcsICJHZW5lcmFsIik7CiAgICAgUVN0cmluZyBtb2RlU3RyaW5nID0gZ3JvdXAucmVhZEVu dHJ5KCJEZWZhdWx0IFZpZXdlciBNb2RlIiwgUVN0cmluZygiZ2VuZXJpYyIpKTsKIAotICAgIEty Vmlld2VyOjpNb2RlIG1vZGUgPSBLclZpZXdlcjo6R2VuZXJpYzsKKyAgICBLclZpZXdlcjo6TW9k ZSBhY3RpdmVNb2RlID0gS3JWaWV3ZXI6OkdlbmVyaWM7CiAKLSAgICBpZiAobW9kZVN0cmluZyA9 PSAiZ2VuZXJpYyIpCi0gICAgICAgIG1vZGUgPSBLclZpZXdlcjo6R2VuZXJpYzsKLSAgICBlbHNl IGlmIChtb2RlU3RyaW5nID09ICJ0ZXh0IikKLSAgICAgICAgbW9kZSA9IEtyVmlld2VyOjpUZXh0 OwotICAgIGVsc2UgaWYgKG1vZGVTdHJpbmcgPT0gImhleCIpCi0gICAgICAgIG1vZGUgPSBLclZp ZXdlcjo6SGV4OwotICAgIGVsc2UgaWYgKG1vZGVTdHJpbmcgPT0gImxpc3RlciIpCi0gICAgICAg IG1vZGUgPSBLclZpZXdlcjo6TGlzdGVyOworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJh eTxzdGQ6OnBhaXI8Y29uc3QgY2hhciAqLCBLclZpZXdlcjo6TW9kZT4sIDQ+IG1hcHBpbmcgPSB7 eworICAgICAgICB7ImdlbmVyaWMiLCBLclZpZXdlcjo6R2VuZXJpY30sCisgICAgICAgIHsidGV4 dCIsIEtyVmlld2VyOjpUZXh0fSwKKyAgICAgICAgeyJoZXgiLCBLclZpZXdlcjo6SGV4fSwKKyAg ICAgICAgeyJsaXN0ZXIiLCBLclZpZXdlcjo6TGlzdGVyfSwKKyAgICB9fTsKKworICAgIGZvciAo Y29uc3QgYXV0byAmW2tleSwgdmFsdWVdIDogbWFwcGluZykgeworICAgICAgICBpZiAoa2V5ID09 IG1vZGVTdHJpbmcpIHsKKyAgICAgICAgICAgIGFjdGl2ZU1vZGUgPSB2YWx1ZTsKKyAgICAgICAg ICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQogCiAgICAgUU1pbWVUeXBlIG1pbWVUeXBlID0g ZmkuZGV0ZXJtaW5lTWltZVR5cGUoKTsKICAgICBib29sIGlzQmluYXJ5ID0gZmFsc2U7Ci0gICAg aWYgKG1vZGUgPT0gS3JWaWV3ZXI6OkdlbmVyaWMgfHwgbW9kZSA9PSBLclZpZXdlcjo6TGlzdGVy KSB7CisgICAgaWYgKGFjdGl2ZU1vZGUgPT0gS3JWaWV3ZXI6OkdlbmVyaWMgfHwgYWN0aXZlTW9k ZSA9PSBLclZpZXdlcjo6TGlzdGVyKSB7CiAgICAgICAgIGlzQmluYXJ5ID0gIW1pbWVUeXBlLmlu aGVyaXRzKFFTdHJpbmdMaXRlcmFsKCJ0ZXh0L3BsYWluIikpOwogICAgIH0KIApAQCAtMTkxLDcg KzE5Nyw3IEBAIEtQYXJ0czo6UmVhZE9ubHlQYXJ0ICpQYW5lbFZpZXdlcjo6Z2V0RGVmYXVsdFBh cnQoY29uc3QgS0ZpbGVJdGVtICZmaSkKIAogICAgIEtQYXJ0czo6UmVhZE9ubHlQYXJ0ICpwYXJ0 ID0gbnVsbHB0cjsKIAotICAgIHN3aXRjaCAobW9kZSkgeworICAgIHN3aXRjaCAoYWN0aXZlTW9k ZSkgewogICAgIGNhc2UgS3JWaWV3ZXI6OkdlbmVyaWM6CiAgICAgICAgIGlmICgobWltZXR5cGUu c3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCJ0ZXh0LyIpKSB8fCBtaW1ldHlwZS5zdGFydHNXaXRo KFFMYXRpbjFTdHJpbmcoImFsbC8iKSkpICYmIGZpbGVTaXplID4gbGltaXQpIHsKICAgICAgICAg ICAgIHBhcnQgPSBnZXRMaXN0ZXJQYXJ0KGlzQmluYXJ5KTsKQEAgLTMxNCw4ICszMjAsOCBAQCBL UGFydHM6OlJlYWRPbmx5UGFydCAqUGFuZWxWaWV3ZXI6OmNyZWF0ZVBhcnQoUVN0cmluZyBtaW1l dHlwZSkKIAogLyogLS0tLT09PXsgUGFuZWxFZGl0b3IgfT09PS0tLS0gKi8KIAotUGFuZWxFZGl0 b3I6OlBhbmVsRWRpdG9yKFFXaWRnZXQgKnBhcmVudCwgS3JWaWV3ZXI6Ok1vZGUgbW9kZSkKLSAg ICA6IFBhbmVsVmlld2VyQmFzZShwYXJlbnQsIG1vZGUpCitQYW5lbEVkaXRvcjo6UGFuZWxFZGl0 b3IoUVdpZGdldCAqcGFyZW50LCBLclZpZXdlcjo6TW9kZSBwYW5lbE1vZGUpCisgICAgOiBQYW5l bFZpZXdlckJhc2UocGFyZW50LCBwYW5lbE1vZGUpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL2FwcC9N b3VudE1hbi9rbW91bnRtYW5ndWkuY3BwIGIvYXBwL01vdW50TWFuL2ttb3VudG1hbmd1aS5jcHAK aW5kZXggOWIxNDRjNjEzLi44ZTlmOTFiNzIgMTAwNjQ0Ci0tLSBhL2FwcC9Nb3VudE1hbi9rbW91 bnRtYW5ndWkuY3BwCisrKyBiL2FwcC9Nb3VudE1hbi9rbW91bnRtYW5ndWkuY3BwCkBAIC0xNSw5 ICsxNSw5IEBACiAKIC8vIFF0Q29yZQogI2luY2x1ZGUgPFFDcnlwdG9ncmFwaGljSGFzaD4KKyNp bmNsdWRlIDxRRXZlbnRMb29wPgogI2luY2x1ZGUgPFFGaWxlSW5mbz4KICNpbmNsdWRlIDxRTGlz dD4KLSNpbmNsdWRlIDxRRXZlbnRMb29wPgogLy8gUXRHdWkKICNpbmNsdWRlIDxRQml0bWFwPgog I2luY2x1ZGUgPFFDdXJzb3I+CkBAIC0zMiwxMSArMzIsMTEgQEAKICNpbmNsdWRlIDxRUHVzaEJ1 dHRvbj4KIAogI2luY2x1ZGUgPEtHdWlJdGVtPgorI2luY2x1ZGUgPEtJTy9GaWxlU3lzdGVtRnJl ZVNwYWNlSm9iPgogI2luY2x1ZGUgPEtMb2NhbGl6ZWRTdHJpbmc+CiAjaW5jbHVkZSA8S01lc3Nh Z2VCb3g+CiAjaW5jbHVkZSA8S01vdW50UG9pbnQ+CiAjaW5jbHVkZSA8S1NoYXJlZENvbmZpZz4K LSNpbmNsdWRlIDxLSU8vRmlsZVN5c3RlbUZyZWVTcGFjZUpvYj4KIAogI2luY2x1ZGUgPFNvbGlk L1N0b3JhZ2VWb2x1bWU+CiAKQEAgLTIxNywxOCArMjE3LDE4IEBAIHZvaWQgS01vdW50TWFuR1VJ OjpnZXRTcGFjZURhdGEoKQogICAgICAgICBpZiAobW91bnRNYW4tPmludmFsaWRGaWxlc3lzdGVt KGl0LT5tb3VudFR5cGUoKSkpIHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0g ICAgICAgIGZzRGF0YSBkYXRhOworICAgICAgICBmc0RhdGEgbW91bnRJbmZvOwogCi0gICAgICAg IGRhdGEuc2V0TW50UG9pbnQoaXQtPm1vdW50UG9pbnQoKSk7Ci0gICAgICAgIGRhdGEuc2V0TW91 bnRlZCh0cnVlKTsKLSAgICAgICAgZGF0YS5zZXROYW1lKGl0LT5tb3VudGVkRnJvbSgpKTsKLSAg ICAgICAgZGF0YS5zZXRUeXBlKGl0LT5tb3VudFR5cGUoKSk7CisgICAgICAgIG1vdW50SW5mby5z ZXRNbnRQb2ludChpdC0+bW91bnRQb2ludCgpKTsKKyAgICAgICAgbW91bnRJbmZvLnNldE1vdW50 ZWQodHJ1ZSk7CisgICAgICAgIG1vdW50SW5mby5zZXROYW1lKGl0LT5tb3VudGVkRnJvbSgpKTsK KyAgICAgICAgbW91bnRJbmZvLnNldFR5cGUoaXQtPm1vdW50VHlwZSgpKTsKICAgICAgICAgS0lP OjpGaWxlU3lzdGVtRnJlZVNwYWNlSm9iICpqb2IgPSBLSU86OmZpbGVTeXN0ZW1GcmVlU3BhY2Uo UVVybDo6ZnJvbUxvY2FsRmlsZShpdC0+bW91bnRQb2ludCgpKSk7CiAgICAgICAgIFFfQVNTRVJU KGpvYiAhPSBudWxscHRyKTsKIAogICAgICAgICBzaWduYWxzVG9XYWl0Rm9yLT5vcGVyYXRvcisr KCk7Ci0gICAgICAgIGNvbm5lY3Qoam9iLCAmS0lPOjpGaWxlU3lzdGVtRnJlZVNwYWNlSm9iOjpm aW5pc2hlZCwgdGhpcywgW3RoaXMsIGRhdGEsIGV2ZW50TG9vcCwgc2lnbmFsc1RvV2FpdEZvcl0o S0pvYiAqam9iKSB7Ci0gICAgICAgICAgICB0aGlzLT5mcmVlU3BhY2VSZXN1bHQoam9iLCBkYXRh KTsKKyAgICAgICAgY29ubmVjdChqb2IsICZLSU86OkZpbGVTeXN0ZW1GcmVlU3BhY2VKb2I6OmZp bmlzaGVkLCB0aGlzLCBbdGhpcywgbW91bnRJbmZvLCBldmVudExvb3AsIHNpZ25hbHNUb1dhaXRG b3JdKEtKb2IgKmZpbmlzaGVkSm9iKSB7CisgICAgICAgICAgICB0aGlzLT5mcmVlU3BhY2VSZXN1 bHQoZmluaXNoZWRKb2IsIG1vdW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmICghc2lnbmFsc1Rv V2FpdEZvci0+ZGVyZWYoKSkgewogICAgICAgICAgICAgICAgIGV2ZW50TG9vcC0+cXVpdCgpOyAv LyBhbGwgZG9uZQpAQCAtMjQ4LDIxICsyNDgsMjEgQEAgdm9pZCBLTW91bnRNYW5HVUk6OmdldFNw YWNlRGF0YSgpCiAgICAgdXBkYXRlTGlzdCgpOwogfQogCi12b2lkIEtNb3VudE1hbkdVSTo6ZnJl ZVNwYWNlUmVzdWx0KEtKb2IgKmpvYiwgZnNEYXRhIGRhdGEpCit2b2lkIEtNb3VudE1hbkdVSTo6 ZnJlZVNwYWNlUmVzdWx0KEtKb2IgKmpvYiwgZnNEYXRhIGZzSW5mbykKIHsKICAgICBpZiAoIWpv Yi0+ZXJyb3IoKSkgewogICAgICAgICBLSU86OkZpbGVTeXN0ZW1GcmVlU3BhY2VKb2IgKmZyZWVT cGFjZUpvYiA9IHFvYmplY3RfY2FzdDxLSU86OkZpbGVTeXN0ZW1GcmVlU3BhY2VKb2IgKj4oam9i KTsKICAgICAgICAgUV9BU1NFUlQoZnJlZVNwYWNlSm9iICE9IG51bGxwdHIpOwogICAgICAgICAv LyBTZXQgdGhlIG1pc3NpbmcgaW5mb3JtYXRpb24sIHdpdGggdGhlIGFzc3VtcHRpb24gdGhlIGNh bGxlciBhbHJlYWR5IHNldCB0aGUgcmVzdAotICAgICAgICBkYXRhLnNldFRvdGFsQmxrcyhmcmVl U3BhY2VKb2ItPnNpemUoKSAvIDEwMjQpOwotICAgICAgICBkYXRhLnNldEZyZWVCbGtzKGZyZWVT cGFjZUpvYi0+YXZhaWxhYmxlU2l6ZSgpIC8gMTAyNCk7CisgICAgICAgIGZzSW5mby5zZXRUb3Rh bEJsa3MoZnJlZVNwYWNlSm9iLT5zaXplKCkgLyAxMDI0KTsKKyAgICAgICAgZnNJbmZvLnNldEZy ZWVCbGtzKGZyZWVTcGFjZUpvYi0+YXZhaWxhYmxlU2l6ZSgpIC8gMTAyNCk7CiAKLSAgICAgICAg ZmlsZVN5c3RlbXMuYXBwZW5kKGRhdGEpOworICAgICAgICBmaWxlU3lzdGVtcy5hcHBlbmQoZnNJ bmZvKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBIb3cgY2FuIHdlIHNpZ25hbCB0aGUgZXJy b3IKLSAgICAgICAgZGF0YS5zZXRUb3RhbEJsa3MoMCk7Ci0gICAgICAgIGRhdGEuc2V0RnJlZUJs a3MoMCk7Ci0gICAgICAgIGZpbGVTeXN0ZW1zLmFwcGVuZChkYXRhKTsKKyAgICAgICAgZnNJbmZv LnNldFRvdGFsQmxrcygwKTsKKyAgICAgICAgZnNJbmZvLnNldEZyZWVCbGtzKDApOworICAgICAg ICBmaWxlU3lzdGVtcy5hcHBlbmQoZnNJbmZvKTsKICAgICB9CiB9CiAKQEAgLTI3NCwxNiArMjc0 LDE2IEBAIHZvaWQgS01vdW50TWFuR1VJOjphZGROb25Nb3VudGVkKCkKICAgICAgICAgaWYgKEtN b3VudE1hbjo6ZmluZEluTGlzdEJ5TW50UG9pbnQobW91bnRlZCwgaXQtPm1vdW50UG9pbnQoKSkp IHsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg ZnNEYXRhIGRhdGE7Ci0gICAgICAgICAgICBkYXRhLnNldE1udFBvaW50KGl0LT5tb3VudFBvaW50 KCkpOwotICAgICAgICAgICAgZGF0YS5zZXRNb3VudGVkKGZhbHNlKTsKLSAgICAgICAgICAgIGRh dGEuc2V0VHlwZShpdC0+bW91bnRUeXBlKCkpOwotICAgICAgICAgICAgZGF0YS5zZXROYW1lKGl0 LT5tb3VudGVkRnJvbSgpKTsKKyAgICAgICAgICAgIGZzRGF0YSBtb3VudEluZm87CisgICAgICAg ICAgICBtb3VudEluZm8uc2V0TW50UG9pbnQoaXQtPm1vdW50UG9pbnQoKSk7CisgICAgICAgICAg ICBtb3VudEluZm8uc2V0TW91bnRlZChmYWxzZSk7CisgICAgICAgICAgICBtb3VudEluZm8uc2V0 VHlwZShpdC0+bW91bnRUeXBlKCkpOworICAgICAgICAgICAgbW91bnRJbmZvLnNldE5hbWUoaXQt Pm1vdW50ZWRGcm9tKCkpOwogCi0gICAgICAgICAgICBpZiAobW91bnRNYW4tPmludmFsaWRGaWxl c3lzdGVtKGRhdGEudHlwZSgpKSkKKyAgICAgICAgICAgIGlmIChtb3VudE1hbi0+aW52YWxpZEZp bGVzeXN0ZW0obW91bnRJbmZvLnR5cGUoKSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAK LSAgICAgICAgICAgIGZpbGVTeXN0ZW1zLmFwcGVuZChkYXRhKTsKKyAgICAgICAgICAgIGZpbGVT eXN0ZW1zLmFwcGVuZChtb3VudEluZm8pOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0 IGEvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnNvcnQuY3BwIGIvYXBwL1BhbmVsL1BhbmVsVmlldy9r cnNvcnQuY3BwCmluZGV4IGI2NTNkNjM3YS4uMzNlOWI4MzJjIDEwMDY0NAotLS0gYS9hcHAvUGFu ZWwvUGFuZWxWaWV3L2tyc29ydC5jcHAKKysrIGIvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnNvcnQu Y3BwCkBAIC0xMDAsNDggKzEwMCw0NiBAQCBpbnQgY29tcGFyZU51bWJlcnMoUVN0cmluZyAmYVMx LCBpbnQgJmFQb3MxLCBRU3RyaW5nICZhUzIsIGludCAmYVBvczIpCiAgICAgcmV0dXJuIHJlczsK IH0KIAotYm9vbCBjb21wYXJlVGV4dHNBbHBoYWJldGljYWwoUVN0cmluZyAmYVMxLCBRU3RyaW5n ICZhUzIsIGNvbnN0IEtyVmlld1Byb3BlcnRpZXMgKl92aWV3UHJvcGVydGllcywgYm9vbCBhTnVt YmVycykKK2Jvb2wgY29tcGFyZVRleHRzQWxwaGFiZXRpY2FsKFFTdHJpbmcgJmxlZnRTdHJpbmcs IFFTdHJpbmcgJnJpZ2h0U3RyaW5nLCBjb25zdCBLclZpZXdQcm9wZXJ0aWVzICpfdmlld1Byb3Bl cnRpZXMsIGJvb2wgYU51bWJlcnMpCiB7Ci0gICAgaW50IGxQb3NpdGlvblMxID0gMDsKLSAgICBp bnQgbFBvc2l0aW9uUzIgPSAwOworICAgIGludCBsZWZ0UG9zID0gMDsKKyAgICBpbnQgcmlnaHRQ b3MgPSAwOwogICAgIC8vIHNvbWV0aW1lcywgbG9jYWxlQXdhcmVDb21wYXJlIGlzIG5vdCBjYXNl IHNlbnNpdGl2ZS4gaW4gdGhhdCBjYXNlLCB3ZSBuZWVkIHRvIGZhbGxiYWNrIHRvIGEgc2ltcGxl IHN0cmluZyBjb21wYXJlIChLREUgYnVnICM0MDEzMSkKICAgICBib29sIGxVc2VMb2NhbGVBd2Fy ZSA9ICgoX3ZpZXdQcm9wZXJ0aWVzLT5zb3J0T3B0aW9ucyAmIEtyVmlld1Byb3BlcnRpZXM6Okln bm9yZUNhc2UpIHx8IF92aWV3UHJvcGVydGllcy0+bG9jYWxlQXdhcmVDb21wYXJlSXNDYXNlU2Vu c2l0aXZlKQogICAgICAgICAmJiAoX3ZpZXdQcm9wZXJ0aWVzLT5zb3J0T3B0aW9ucyAmIEtyVmll d1Byb3BlcnRpZXM6OkxvY2FsZUF3YXJlU29ydCk7Ci0gICAgaW50IGogPSAwOwotICAgIFFDaGFy IGxjaGFyMTsKLSAgICBRQ2hhciBsY2hhcjI7CiAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAg bGNoYXIxID0gYVMxW2xQb3NpdGlvblMxXTsKLSAgICAgICAgbGNoYXIyID0gYVMyW2xQb3NpdGlv blMyXTsKKyAgICAgICAgY29uc3QgUUNoYXIgbGVmdENoYXIgPSBsZWZ0U3RyaW5nW2xlZnRQb3Nd OworICAgICAgICBjb25zdCBRQ2hhciByaWdodENoYXIgPSByaWdodFN0cmluZ1tyaWdodFBvc107 CiAgICAgICAgIC8vIGRldGVjdCBudW1iZXJzCi0gICAgICAgIGlmIChhTnVtYmVycyAmJiBsY2hh cjEuaXNEaWdpdCgpICYmIGxjaGFyMi5pc0RpZ2l0KCkpIHsKLSAgICAgICAgICAgIGludCBqID0g Y29tcGFyZU51bWJlcnMoYVMxLCBsUG9zaXRpb25TMSwgYVMyLCBsUG9zaXRpb25TMik7Ci0gICAg ICAgICAgICBpZiAoaiAhPSAwKQotICAgICAgICAgICAgICAgIHJldHVybiBqIDwgMDsKKyAgICAg ICAgaWYgKGFOdW1iZXJzICYmIGxlZnRDaGFyLmlzRGlnaXQoKSAmJiByaWdodENoYXIuaXNEaWdp dCgpKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gY29tcGFyZU51bWJlcnMobGVmdFN0cmlu ZywgbGVmdFBvcywgcmlnaHRTdHJpbmcsIHJpZ2h0UG9zKTsKKyAgICAgICAgICAgIGlmIChyZXN1 bHQgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IDwgMDsKICAgICAgICAgfSBl bHNlIGlmIChsVXNlTG9jYWxlQXdhcmUKLSAgICAgICAgICAgICAgICAgICAmJiAoKGxjaGFyMSA+ PSBRQ2hhcigxMjgpICYmICgobGNoYXIyID49ICdBJyAmJiBsY2hhcjIgPD0gJ1onKSB8fCAobGNo YXIyID49ICdhJyAmJiBsY2hhcjIgPD0gJ3onKSB8fCBsY2hhcjIgPj0gUUNoYXIoMTI4KSkpCi0g ICAgICAgICAgICAgICAgICAgICAgIHx8IChsY2hhcjIgPj0gUUNoYXIoMTI4KSAmJiAoKGxjaGFy MSA+PSAnQScgJiYgbGNoYXIxIDw9ICdaJykgfHwgKGxjaGFyMSA+PSAnYScgJiYgbGNoYXIxIDw9 ICd6JykgfHwgbGNoYXIxID49IFFDaGFyKDEyOCkpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAm JiAoKGxlZnRDaGFyID49IFFDaGFyKDEyOCkgJiYgKChyaWdodENoYXIgPj0gJ0EnICYmIHJpZ2h0 Q2hhciA8PSAnWicpIHx8IChyaWdodENoYXIgPj0gJ2EnICYmIHJpZ2h0Q2hhciA8PSAneicpIHx8 IHJpZ2h0Q2hhciA+PSBRQ2hhcigxMjgpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgfHwgKHJp Z2h0Q2hhciA+PSBRQ2hhcigxMjgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoKGxl ZnRDaGFyID49ICdBJyAmJiBsZWZ0Q2hhciA8PSAnWicpIHx8IChsZWZ0Q2hhciA+PSAnYScgJiYg bGVmdENoYXIgPD0gJ3onKSB8fCBsZWZ0Q2hhciA+PSBRQ2hhcigxMjgpKSkpKSB7CiAgICAgICAg ICAgICAvLyB1c2UgbG9jYWxlQXdhcmVDb21wYXJlIHdoZW4gYSB1bmljb2RlIGNoYXJhY3RlciBp cyBlbmNvdW50ZXJlZAotICAgICAgICAgICAgaiA9IFFTdHJpbmc6OmxvY2FsZUF3YXJlQ29tcGFy ZShsY2hhcjEsIGxjaGFyMik7Ci0gICAgICAgICAgICBpZiAoaiAhPSAwKQotICAgICAgICAgICAg ICAgIHJldHVybiBqIDwgMDsKLSAgICAgICAgICAgIGxQb3NpdGlvblMxKys7Ci0gICAgICAgICAg ICBsUG9zaXRpb25TMisrOworICAgICAgICAgICAgaW50IHJlc3VsdCA9IFFTdHJpbmc6OmxvY2Fs ZUF3YXJlQ29tcGFyZShsZWZ0Q2hhciwgcmlnaHRDaGFyKTsKKyAgICAgICAgICAgIGlmIChyZXN1 bHQgIT0gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0IDwgMDsKKyAgICAgICAgICAg IGxlZnRQb3MrKzsKKyAgICAgICAgICAgIHJpZ2h0UG9zKys7CiAgICAgICAgIH0gZWxzZSB7CiAg ICAgICAgICAgICAvLyBpZiBjaGFyYWN0ZXJzIGFyZSBsYXRpbiBvciBsb2NhbGVBd2FyZUNvbXBh cmUgaXMgbm90IGNhc2Ugc2Vuc2l0aXZlIHRoZW4gdXNlIHNpbXBsZSBjaGFyYWN0ZXJzIGNvbXBh cmUgaXMgZW5vdWdoCi0gICAgICAgICAgICBpZiAobGNoYXIxIDwgbGNoYXIyKQorICAgICAgICAg ICAgaWYgKGxlZnRDaGFyIDwgcmlnaHRDaGFyKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl OwotICAgICAgICAgICAgaWYgKGxjaGFyMSA+IGxjaGFyMikKKyAgICAgICAgICAgIGlmIChsZWZ0 Q2hhciA+IHJpZ2h0Q2hhcikKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg ICAgICBsUG9zaXRpb25TMSsrOwotICAgICAgICAgICAgbFBvc2l0aW9uUzIrKzsKKyAgICAgICAg ICAgIGxlZnRQb3MrKzsKKyAgICAgICAgICAgIHJpZ2h0UG9zKys7CiAgICAgICAgIH0KICAgICAg ICAgLy8gYXQgdGhpcyBwb2ludCBzdHJpbmdzIGFyZSBlcXVhbCwgY2hlY2sgaWYgZW5kcyBvZiBz dHJpbmdzIGFyZSByZWFjaGVkCi0gICAgICAgIGlmIChsUG9zaXRpb25TMSA9PSBhUzEubGVuZ3Ro KCkgJiYgbFBvc2l0aW9uUzIgPT0gYVMyLmxlbmd0aCgpKQorICAgICAgICBpZiAobGVmdFBvcyA9 PSBsZWZ0U3RyaW5nLmxlbmd0aCgpICYmIHJpZ2h0UG9zID09IHJpZ2h0U3RyaW5nLmxlbmd0aCgp KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAobFBvc2l0aW9uUzEgPT0g YVMxLmxlbmd0aCgpICYmIGxQb3NpdGlvblMyIDwgYVMyLmxlbmd0aCgpKQorICAgICAgICBpZiAo bGVmdFBvcyA9PSBsZWZ0U3RyaW5nLmxlbmd0aCgpICYmIHJpZ2h0UG9zIDwgcmlnaHRTdHJpbmcu bGVuZ3RoKCkpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGxQb3NpdGlv blMxIDwgYVMxLmxlbmd0aCgpICYmIGxQb3NpdGlvblMyID09IGFTMi5sZW5ndGgoKSkKKyAgICAg ICAgaWYgKGxlZnRQb3MgPCBsZWZ0U3RyaW5nLmxlbmd0aCgpICYmIHJpZ2h0UG9zID09IHJpZ2h0 U3RyaW5nLmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIH0KQEAg LTE3Niw0OSArMTc0LDQ5IEBAIGJvb2wgY29tcGFyZVRleHRzQ2hhcmFjdGVyQ29kZShRU3RyaW5n ICZhUzEsIFFTdHJpbmcgJmFTMiwgY29uc3QgS3JWaWV3UHJvcGVydGllCiAgICAgfQogfQogCi1i b29sIGNvbXBhcmVUZXh0c0tydXNhZGVyKGNvbnN0IFFTdHJpbmcgJmFTMSwgY29uc3QgUVN0cmlu ZyAmYVMyLCBjb25zdCBLclZpZXdQcm9wZXJ0aWVzICpfdmlld1Byb3BlcnRpZXMpCitib29sIGNv bXBhcmVUZXh0c0tydXNhZGVyKGNvbnN0IFFTdHJpbmcgJmxlZnRTdHJpbmcsIGNvbnN0IFFTdHJp bmcgJnJpZ2h0U3RyaW5nLCBjb25zdCBLclZpZXdQcm9wZXJ0aWVzICpfdmlld1Byb3BlcnRpZXMp CiB7CiAgICAgLy8gc29tZXRpbWVzLCBsb2NhbGVBd2FyZUNvbXBhcmUgaXMgbm90IGNhc2Ugc2Vu c2l0aXZlLiBpbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gZmFsbGJhY2sgdG8gYSBzaW1wbGUgc3Ry aW5nIGNvbXBhcmUgKEtERSBidWcgIzQwMTMxKQogICAgIGlmICgoKF92aWV3UHJvcGVydGllcy0+ c29ydE9wdGlvbnMgJiBLclZpZXdQcm9wZXJ0aWVzOjpJZ25vcmVDYXNlKSB8fCBfdmlld1Byb3Bl cnRpZXMtPmxvY2FsZUF3YXJlQ29tcGFyZUlzQ2FzZVNlbnNpdGl2ZSkKICAgICAgICAgJiYgKF92 aWV3UHJvcGVydGllcy0+c29ydE9wdGlvbnMgJiBLclZpZXdQcm9wZXJ0aWVzOjpMb2NhbGVBd2Fy ZVNvcnQpKQotICAgICAgICByZXR1cm4gUVN0cmluZzo6bG9jYWxlQXdhcmVDb21wYXJlKGFTMSwg YVMyKSA8IDA7CisgICAgICAgIHJldHVybiBRU3RyaW5nOjpsb2NhbGVBd2FyZUNvbXBhcmUobGVm dFN0cmluZywgcmlnaHRTdHJpbmcpIDwgMDsKICAgICBlbHNlCiAgICAgICAgIC8vIGlmIGxvY2Fs ZUF3YXJlQ29tcGFyZSBpcyBub3QgY2FzZSBzZW5zaXRpdmUgdGhlbiB1c2Ugc2ltcGxlIGNvbXBh cmUgaXMgZW5vdWdoCi0gICAgICAgIHJldHVybiBRU3RyaW5nOjpjb21wYXJlKGFTMSwgYVMyKSA8 IDA7CisgICAgICAgIHJldHVybiBRU3RyaW5nOjpjb21wYXJlKGxlZnRTdHJpbmcsIHJpZ2h0U3Ry aW5nKSA8IDA7CiB9CiAKLWJvb2wgY29tcGFyZVRleHRzKFFTdHJpbmcgYVMxLCBRU3RyaW5nIGFT MiwgY29uc3QgS3JWaWV3UHJvcGVydGllcyAqX3ZpZXdQcm9wZXJ0aWVzLCBib29sIGFzYywgYm9v bCBpc05hbWUpCitib29sIGNvbXBhcmVUZXh0cyhRU3RyaW5nIGxlZnRTdHJpbmcsIFFTdHJpbmcg cmlnaHRTdHJpbmcsIGNvbnN0IEtyVmlld1Byb3BlcnRpZXMgKl92aWV3UHJvcGVydGllcywgYm9v bCBhc2MsIGJvb2wgaXNOYW1lKQogewogICAgIC8vIGNoZWNrIGVtcHR5IHN0cmluZ3MKLSAgICBp ZiAoYVMxLmxlbmd0aCgpID09IDAgJiYgYVMyLmxlbmd0aCgpID09IDApIHsKKyAgICBpZiAobGVm dFN0cmluZy5pc0VtcHR5KCkgJiYgcmlnaHRTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICB9IGVsc2UgaWYgKGFTMS5sZW5ndGgoKSA9PSAwKSB7CisgICAgfSBl bHNlIGlmIChsZWZ0U3RyaW5nLmlzRW1wdHkoKSkgewogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAg ICB9IGVsc2UgaWYgKGFTMi5sZW5ndGgoKSA9PSAwKSB7CisgICAgfSBlbHNlIGlmIChyaWdodFN0 cmluZy5pc0VtcHR5KCkpIHsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlm IChpc05hbWUpIHsKLSAgICAgICAgaWYgKGFTMSA9PSAiLi4iKSB7CisgICAgICAgIGlmIChsZWZ0 U3RyaW5nID09ICIuLiIpIHsKICAgICAgICAgICAgIHJldHVybiAhYXNjOwogICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgaWYgKGFTMiA9PSAiLi4iKQorICAgICAgICAgICAgaWYgKHJpZ2h0 U3RyaW5nID09ICIuLiIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGFzYzsKICAgICAgICAgfQog ICAgIH0KIAogICAgIHN3aXRjaCAoX3ZpZXdQcm9wZXJ0aWVzLT5zb3J0TWV0aG9kKSB7CiAgICAg Y2FzZSBLclZpZXdQcm9wZXJ0aWVzOjpBbHBoYWJldGljYWw6Ci0gICAgICAgIHJldHVybiBjb21w YXJlVGV4dHNBbHBoYWJldGljYWwoYVMxLCBhUzIsIF92aWV3UHJvcGVydGllcywgZmFsc2UpOwor ICAgICAgICByZXR1cm4gY29tcGFyZVRleHRzQWxwaGFiZXRpY2FsKGxlZnRTdHJpbmcsIHJpZ2h0 U3RyaW5nLCBfdmlld1Byb3BlcnRpZXMsIGZhbHNlKTsKICAgICBjYXNlIEtyVmlld1Byb3BlcnRp ZXM6OkFscGhhYmV0aWNhbE51bWJlcnM6Ci0gICAgICAgIHJldHVybiBjb21wYXJlVGV4dHNBbHBo YWJldGljYWwoYVMxLCBhUzIsIF92aWV3UHJvcGVydGllcywgdHJ1ZSk7CisgICAgICAgIHJldHVy biBjb21wYXJlVGV4dHNBbHBoYWJldGljYWwobGVmdFN0cmluZywgcmlnaHRTdHJpbmcsIF92aWV3 UHJvcGVydGllcywgdHJ1ZSk7CiAgICAgY2FzZSBLclZpZXdQcm9wZXJ0aWVzOjpDaGFyYWN0ZXJD b2RlOgotICAgICAgICByZXR1cm4gY29tcGFyZVRleHRzQ2hhcmFjdGVyQ29kZShhUzEsIGFTMiwg X3ZpZXdQcm9wZXJ0aWVzLCBmYWxzZSk7CisgICAgICAgIHJldHVybiBjb21wYXJlVGV4dHNDaGFy YWN0ZXJDb2RlKGxlZnRTdHJpbmcsIHJpZ2h0U3RyaW5nLCBfdmlld1Byb3BlcnRpZXMsIGZhbHNl KTsKICAgICBjYXNlIEtyVmlld1Byb3BlcnRpZXM6OkNoYXJhY3RlckNvZGVOdW1iZXJzOgotICAg ICAgICByZXR1cm4gY29tcGFyZVRleHRzQ2hhcmFjdGVyQ29kZShhUzEsIGFTMiwgX3ZpZXdQcm9w ZXJ0aWVzLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVUZXh0c0NoYXJhY3RlckNvZGUo bGVmdFN0cmluZywgcmlnaHRTdHJpbmcsIF92aWV3UHJvcGVydGllcywgdHJ1ZSk7CiAgICAgY2Fz ZSBLclZpZXdQcm9wZXJ0aWVzOjpLcnVzYWRlcjoKICAgICBkZWZhdWx0OgotICAgICAgICByZXR1 cm4gY29tcGFyZVRleHRzS3J1c2FkZXIoYVMxLCBhUzIsIF92aWV3UHJvcGVydGllcyk7CisgICAg ICAgIHJldHVybiBjb21wYXJlVGV4dHNLcnVzYWRlcihsZWZ0U3RyaW5nLCByaWdodFN0cmluZywg X3ZpZXdQcm9wZXJ0aWVzKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9QYW5l bFZpZXcva3J2aWV3cHJvcGVydGllcy5jcHAgYi9hcHAvUGFuZWwvUGFuZWxWaWV3L2tydmlld3By b3BlcnRpZXMuY3BwCmluZGV4IGJlZjgyNDZmYS4uZTQ4YTJkYjA0IDEwMDY0NAotLS0gYS9hcHAv UGFuZWwvUGFuZWxWaWV3L2tydmlld3Byb3BlcnRpZXMuY3BwCisrKyBiL2FwcC9QYW5lbC9QYW5l bFZpZXcva3J2aWV3cHJvcGVydGllcy5jcHAKQEAgLTgsMjQgKzgsMjQgQEAKIAogI2luY2x1ZGUg PHV0aWxpdHk+CiAKLUtyVmlld1Byb3BlcnRpZXM6OktyVmlld1Byb3BlcnRpZXMoYm9vbCBkaXNw bGF5SWNvbnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgbnVtZXJp Y1Blcm1pc3Npb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLclZpZXdQ cm9wZXJ0aWVzOjpTb3J0T3B0aW9ucyBzb3J0T3B0aW9ucywKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgS3JWaWV3UHJvcGVydGllczo6U29ydE1ldGhvZCBzb3J0TWV0aG9kLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGh1bWFuUmVhZGFibGVTaXpl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGxvY2FsZUF3YXJlQ29t cGFyZUlzQ2FzZVNlbnNpdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVN0cmluZ0xpc3QgYXRvbWljRXh0ZW5zaW9ucykKLSAgICA6IG51bWVyaWNQZXJtaXNzaW9ucyhu dW1lcmljUGVybWlzc2lvbnMpCi0gICAgLCBkaXNwbGF5SWNvbnMoZGlzcGxheUljb25zKQorS3JW aWV3UHJvcGVydGllczo6S3JWaWV3UHJvcGVydGllcyhib29sIHNob3dJY29ucywKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VOdW1lcmljUGVybWlzc2lvbnMsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtyVmlld1Byb3BlcnRpZXM6OlNvcnRP cHRpb25zIGluaXRTb3J0T3B0aW9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgS3JWaWV3UHJvcGVydGllczo6U29ydE1ldGhvZCBpbml0U29ydE1ldGhvZCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VIdW1hblJlYWRhYmxlU2l6ZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB1c2VMb2NhbGVBd2FyZUNvbXBh cmVJc0Nhc2VTZW5zaXRpdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFT dHJpbmdMaXN0IGluaXRBdG9taWNFeHRlbnNpb25zKQorICAgIDogbnVtZXJpY1Blcm1pc3Npb25z KHVzZU51bWVyaWNQZXJtaXNzaW9ucykKKyAgICAsIGRpc3BsYXlJY29ucyhzaG93SWNvbnMpCiAg ICAgLCBzb3J0Q29sdW1uKE5hbWUpCi0gICAgLCBzb3J0T3B0aW9ucyhzb3J0T3B0aW9ucykKLSAg ICAsIHNvcnRNZXRob2Qoc29ydE1ldGhvZCkKKyAgICAsIHNvcnRPcHRpb25zKGluaXRTb3J0T3B0 aW9ucykKKyAgICAsIHNvcnRNZXRob2QoaW5pdFNvcnRNZXRob2QpCiAgICAgLCBmaWx0ZXIoS3JW aWV3UHJvcGVydGllczo6QWxsKQogICAgICwgZmlsdGVyTWFzayhLclF1ZXJ5KCIqIikpCiAgICAg LCBmaWx0ZXJBcHBseXNUb0RpcnMoZmFsc2UpCi0gICAgLCBsb2NhbGVBd2FyZUNvbXBhcmVJc0Nh c2VTZW5zaXRpdmUobG9jYWxlQXdhcmVDb21wYXJlSXNDYXNlU2Vuc2l0aXZlKQotICAgICwgaHVt YW5SZWFkYWJsZVNpemUoaHVtYW5SZWFkYWJsZVNpemUpCi0gICAgLCBhdG9taWNFeHRlbnNpb25z KHN0ZDo6bW92ZShhdG9taWNFeHRlbnNpb25zKSkKKyAgICAsIGxvY2FsZUF3YXJlQ29tcGFyZUlz Q2FzZVNlbnNpdGl2ZSh1c2VMb2NhbGVBd2FyZUNvbXBhcmVJc0Nhc2VTZW5zaXRpdmUpCisgICAg LCBodW1hblJlYWRhYmxlU2l6ZSh1c2VIdW1hblJlYWRhYmxlU2l6ZSkKKyAgICAsIGF0b21pY0V4 dGVuc2lvbnMoc3RkOjptb3ZlKGluaXRBdG9taWNFeHRlbnNpb25zKSkKICAgICAsIG51bWJlck9m Q29sdW1ucygxKQogewogfQpkaWZmIC0tZ2l0IGEvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnZpZXdw cm9wZXJ0aWVzLmggYi9hcHAvUGFuZWwvUGFuZWxWaWV3L2tydmlld3Byb3BlcnRpZXMuaAppbmRl eCAzNTFlYjVkMmQuLmFkMmIxZjE3MiAxMDA2NDQKLS0tIGEvYXBwL1BhbmVsL1BhbmVsVmlldy9r cnZpZXdwcm9wZXJ0aWVzLmgKKysrIGIvYXBwL1BhbmVsL1BhbmVsVmlldy9rcnZpZXdwcm9wZXJ0 aWVzLmgKQEAgLTUzLDkgKzUzLDI2IEBAIHB1YmxpYzoKICAgICAgICAgQWNjZXNzZWQgPSAweGEs CiAgICAgICAgIE1BWF9DT0xVTU5TID0gMHgwYgogICAgIH07Ci0gICAgZW51bSBTb3J0T3B0aW9u cyB7IERlc2NlbmRpbmcgPSAweDIwMCwgRGlyc0ZpcnN0ID0gMHg0MDAsIElnbm9yZUNhc2UgPSAw eDgwMCwgQWx3YXlzU29ydERpcnNCeU5hbWUgPSAweDEwMDAsIExvY2FsZUF3YXJlU29ydCA9IDB4 MjAwMCB9OwotICAgIGVudW0gU29ydE1ldGhvZCB7IEFscGhhYmV0aWNhbCA9IDB4MSwgQWxwaGFi ZXRpY2FsTnVtYmVycyA9IDB4MiwgQ2hhcmFjdGVyQ29kZSA9IDB4NCwgQ2hhcmFjdGVyQ29kZU51 bWJlcnMgPSAweDgsIEtydXNhZGVyID0gMHgxMCB9OwotICAgIGVudW0gRmlsdGVyU3BlYyB7IERp cnMgPSAweDEsIEZpbGVzID0gMHgyLCBBbGwgPSAweDMsIEN1c3RvbSA9IDB4NCB9OworICAgIGVu dW0gU29ydE9wdGlvbnMgeworICAgICAgICBEZXNjZW5kaW5nID0gMHgyMDAsCisgICAgICAgIERp cnNGaXJzdCA9IDB4NDAwLAorICAgICAgICBJZ25vcmVDYXNlID0gMHg4MDAsCisgICAgICAgIEFs d2F5c1NvcnREaXJzQnlOYW1lID0gMHgxMDAwLAorICAgICAgICBMb2NhbGVBd2FyZVNvcnQgPSAw eDIwMDAKKyAgICB9OworICAgIGVudW0gU29ydE1ldGhvZCB7CisgICAgICAgIEFscGhhYmV0aWNh bCA9IDB4MSwKKyAgICAgICAgQWxwaGFiZXRpY2FsTnVtYmVycyA9IDB4MiwKKyAgICAgICAgQ2hh cmFjdGVyQ29kZSA9IDB4NCwKKyAgICAgICAgQ2hhcmFjdGVyQ29kZU51bWJlcnMgPSAweDgsCisg ICAgICAgIEtydXNhZGVyID0gMHgxMAorICAgIH07CisgICAgZW51bSBGaWx0ZXJTcGVjIHsKKyAg ICAgICAgRGlycyA9IDB4MSwKKyAgICAgICAgRmlsZXMgPSAweDIsCisgICAgICAgIEFsbCA9IDB4 MywKKyAgICAgICAgQ3VzdG9tID0gMHg0CisgICAgfTsKIAogICAgIEtyVmlld1Byb3BlcnRpZXMo Ym9vbCBkaXNwbGF5SWNvbnMsCiAgICAgICAgICAgICAgICAgICAgICBib29sIG51bWVyaWNQZXJt aXNzaW9ucywKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9rcmxheW91dGZhY3RvcnkuaCBiL2FwcC9Q YW5lbC9rcmxheW91dGZhY3RvcnkuaAppbmRleCBhNTk3MGM3OTEuLjBhMDMxZjkzYSAxMDA2NDQK LS0tIGEvYXBwL1BhbmVsL2tybGF5b3V0ZmFjdG9yeS5oCisrKyBiL2FwcC9QYW5lbC9rcmxheW91 dGZhY3RvcnkuaApAQCAtMjMsOSArMjMsOSBAQCBjbGFzcyBMaXN0UGFuZWw7CiBjbGFzcyBLckxh eW91dEZhY3RvcnkKIHsKIHB1YmxpYzoKLSAgICBLckxheW91dEZhY3RvcnkoTGlzdFBhbmVsICpw YW5lbCwgUUhhc2g8UVN0cmluZywgUVdpZGdldCAqPiAmd2lkZ2V0cykKLSAgICAgICAgOiBwYW5l bChwYW5lbCkKLSAgICAgICAgLCB3aWRnZXRzKHdpZGdldHMpCisgICAgS3JMYXlvdXRGYWN0b3J5 KExpc3RQYW5lbCAqbGlzdFBhbmVsLCBRSGFzaDxRU3RyaW5nLCBRV2lkZ2V0ICo+ICZ3aWRnZXRz TWFwKQorICAgICAgICA6IHBhbmVsKGxpc3RQYW5lbCkKKyAgICAgICAgLCB3aWRnZXRzKHdpZGdl dHNNYXApCiAgICAgewogICAgIH0KICAgICAvLyBjcmVhdGVzIHRoZSBsYXlvdXQgYW5kIGFkZHMg dGhlIHdpZGdldHMgdG8gaXQKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9rcnBhbmVsLmggYi9hcHAv UGFuZWwva3JwYW5lbC5oCmluZGV4IGIwNDU1ZTUwOS4uMGVmMjM4NTVjIDEwMDY0NAotLS0gYS9h cHAvUGFuZWwva3JwYW5lbC5oCisrKyBiL2FwcC9QYW5lbC9rcnBhbmVsLmgKQEAgLTE5LDkgKzE5 LDkgQEAgY2xhc3MgS3JWaWV3OwogY2xhc3MgS3JQYW5lbAogewogcHVibGljOgotICAgIEtyUGFu ZWwoQWJzdHJhY3RQYW5lbE1hbmFnZXIgKm1hbmFnZXIsIExpc3RQYW5lbCAqcGFuZWwsIExpc3RQ YW5lbEZ1bmMgKmZ1bmMpCisgICAgS3JQYW5lbChBYnN0cmFjdFBhbmVsTWFuYWdlciAqbWFuYWdl ciwgTGlzdFBhbmVsICpwYW5lbCwgTGlzdFBhbmVsRnVuYyAqcGFuZWxDYWxsYmFjaykKICAgICAg ICAgOiBndWkocGFuZWwpCi0gICAgICAgICwgZnVuYyhmdW5jKQorICAgICAgICAsIGZ1bmMocGFu ZWxDYWxsYmFjaykKICAgICAgICAgLCB2aWV3KG51bGxwdHIpCiAgICAgICAgICwgX21hbmFnZXIo bWFuYWdlcikKICAgICB7CmRpZmYgLS1naXQgYS9hcHAvUGFuZWwva3JzZWFyY2hiYXIuY3BwIGIv YXBwL1BhbmVsL2tyc2VhcmNoYmFyLmNwcAppbmRleCBmZjk1YTk4YTEuLjA2Yzc4M2RlNSAxMDA2 NDQKLS0tIGEvYXBwL1BhbmVsL2tyc2VhcmNoYmFyLmNwcAorKysgYi9hcHAvUGFuZWwva3JzZWFy Y2hiYXIuY3BwCkBAIC0yNjAsMTYgKzI2MCwxNCBAQCBib29sIEtyU2VhcmNoQmFyOjpldmVudEZp bHRlcihRT2JqZWN0ICp3YXRjaGVkLCBRRXZlbnQgKmV2ZW50KQogICAgICAgICB9CiAgICAgICAg IHJldHVybiB0cnVlOwogICAgIH0gZWxzZSBpZiAod2F0Y2hlZCA9PSBfdGV4dEJveCkgewotICAg ICAgICBjb25zdCBib29sIGhhbmRsZWQgPSBoYW5kbGVLZXlQcmVzc0V2ZW50KGtlKTsKLSAgICAg ICAgaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgaWYgKGhhbmRsZUtleVByZXNzRXZlbnQoa2UpKSB7 CiAgICAgICAgICAgICBfdmlldy0+d2lkZ2V0KCktPnNldEZvY3VzKCk7CiAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAgICAvLyBhbGxvdyB0aGUgdmlldyB0byBoYW5k bGUgKG1vc3QpIGtleSBldmVudHMgZnJvbSB0aGUgdGV4dCBib3gKICAgICAgICAgaWYgKChtb2Rp ZmllcnMgPT0gUXQ6Ok5vTW9kaWZpZXIgfHwgbW9kaWZpZXJzID09IFF0OjpLZXlwYWRNb2RpZmll cikgJiYga2UtPmtleSgpICE9IFF0OjpLZXlfU3BhY2UgJiYga2UtPmtleSgpICE9IFF0OjpLZXlf QmFja3NwYWNlCiAgICAgICAgICAgICAmJiBrZS0+a2V5KCkgIT0gUXQ6OktleV9MZWZ0ICYmIGtl LT5rZXkoKSAhPSBRdDo6S2V5X1JpZ2h0KSB7Ci0gICAgICAgICAgICBjb25zdCBib29sIGhhbmRs ZWQgPSBfdmlldy0+aGFuZGxlS2V5RXZlbnQoa2UpOwotICAgICAgICAgICAgaWYgKGhhbmRsZWQp IHsKKyAgICAgICAgICAgIGlmIChfdmlldy0+aGFuZGxlS2V5RXZlbnQoa2UpKSB7CiAgICAgICAg ICAgICAgICAgX3ZpZXctPndpZGdldCgpLT5zZXRGb2N1cygpOwogICAgICAgICAgICAgICAgIHJl dHVybiB0cnVlOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvYXBwL1BhbmVsL2xpc3RwYW5l bC5jcHAgYi9hcHAvUGFuZWwvbGlzdHBhbmVsLmNwcAppbmRleCA3OTZkODk1MWUuLmRiNWNiZmE5 YSAxMDA2NDQKLS0tIGEvYXBwL1BhbmVsL2xpc3RwYW5lbC5jcHAKKysrIGIvYXBwL1BhbmVsL2xp c3RwYW5lbC5jcHAKQEAgLTg2LDggKzg2LDggQEAgY2xhc3MgQWN0aW9uQnV0dG9uIDogcHVibGlj IFFUb29sQnV0dG9uCiBwdWJsaWM6CiAgICAgQWN0aW9uQnV0dG9uKFFXaWRnZXQgKnBhcmVudCwg TGlzdFBhbmVsICpwYW5lbCwgUUFjdGlvbiAqYWN0aW9uLCBjb25zdCBRU3RyaW5nICZ0ZXh0ID0g UVN0cmluZygpKQogICAgICAgICA6IFFUb29sQnV0dG9uKHBhcmVudCkKLSAgICAgICAgLCBwYW5l bChwYW5lbCkKLSAgICAgICAgLCBhY3Rpb24oYWN0aW9uKQorICAgICAgICAsIG1fcGFuZWwocGFu ZWwpCisgICAgICAgICwgbV9hY3Rpb24oYWN0aW9uKQogICAgIHsKICAgICAgICAgc2V0VGV4dCh0 ZXh0KTsKICAgICAgICAgc2V0QXV0b1JhaXNlKHRydWUpOwpAQCAtOTksMTIgKzk5LDEyIEBAIHB1 YmxpYzoKIHByb3RlY3RlZDoKICAgICB2b2lkIG1vdXNlUHJlc3NFdmVudChRTW91c2VFdmVudCAq KSBvdmVycmlkZQogICAgIHsKLSAgICAgICAgcGFuZWwtPnNsb3RGb2N1c09uTWUoKTsKLSAgICAg ICAgYWN0aW9uLT50cmlnZ2VyKCk7CisgICAgICAgIG1fcGFuZWwtPnNsb3RGb2N1c09uTWUoKTsK KyAgICAgICAgbV9hY3Rpb24tPnRyaWdnZXIoKTsKICAgICB9CiAKLSAgICBMaXN0UGFuZWwgKnBh bmVsOwotICAgIFFBY3Rpb24gKmFjdGlvbjsKKyAgICBMaXN0UGFuZWwgKm1fcGFuZWw7CisgICAg UUFjdGlvbiAqbV9hY3Rpb247CiB9OwogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwpAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgTGlzdFBhbmVs Ojpjb21wYXJlRGlycyhib29sIG90aGVyUGFuZWxUb28pCiAgICAgfQogCiAgICAgS0NvbmZpZ0dy b3VwIHBnKGtyQ29uZmlnLCAiUHJpdmF0ZSIpOwotICAgIGludCBjb21wYXJlTW9kZSA9IHBnLnJl YWRFbnRyeSgiQ29tcGFyZSBNb2RlIiwgMCk7CisgICAgaW50IGNvbXBhcmVTdHJhdGVneSA9IHBn LnJlYWRFbnRyeSgiQ29tcGFyZSBNb2RlIiwgMCk7CiAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGty Q29uZmlnLCAiTG9vayZGZWVsIik7CiAgICAgYm9vbCBzZWxlY3REaXJzID0gZ3JvdXAucmVhZEVu dHJ5KCJNYXJrIERpcnMiLCBmYWxzZSk7CiAKQEAgLTcwMCw3ICs3MDAsNyBAQCB2b2lkIExpc3RQ YW5lbDo6Y29tcGFyZURpcnMoYm9vbCBvdGhlclBhbmVsVG9vKQogICAgICAgICAgICAgaXNOZXdl ciA9IGZ1bmMtPmdldEZpbGVJdGVtKGl0ZW0pLT5nZXRNb2RpZmljYXRpb25UaW1lKCkgPiBvdGhl clBhbmVsKCktPmZ1bmMtPmdldEZpbGVJdGVtKG90aGVySXRlbSktPmdldE1vZGlmaWNhdGlvblRp bWUoKTsKICAgICAgICAgfQogCi0gICAgICAgIHN3aXRjaCAoY29tcGFyZU1vZGUpIHsKKyAgICAg ICAgc3dpdGNoIChjb21wYXJlU3RyYXRlZ3kpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAg ICAgaXRlbS0+c2V0U2VsZWN0ZWQoaXNOZXdlciB8fCBpc1NpbmdsZSk7CiAgICAgICAgICAgICBi cmVhazsKZGlmZiAtLWdpdCBhL2FwcC9QYW5lbC9saXN0cGFuZWxmcmFtZS5jcHAgYi9hcHAvUGFu ZWwvbGlzdHBhbmVsZnJhbWUuY3BwCmluZGV4IDY3YmVhZDFmOS4uNTI4MWUyNjExIDEwMDY0NAot LS0gYS9hcHAvUGFuZWwvbGlzdHBhbmVsZnJhbWUuY3BwCisrKyBiL2FwcC9QYW5lbC9saXN0cGFu ZWxmcmFtZS5jcHAKQEAgLTE5LDExICsxOSwxMSBAQAogI2luY2x1ZGUgPEtTaGFyZWRDb25maWc+ CiAjaW5jbHVkZSA8S1VybE1pbWVEYXRhPgogCi1MaXN0UGFuZWxGcmFtZTo6TGlzdFBhbmVsRnJh bWUoUVdpZGdldCAqcGFyZW50LCBjb25zdCBRU3RyaW5nICZjb2xvcikKK0xpc3RQYW5lbEZyYW1l OjpMaXN0UGFuZWxGcmFtZShRV2lkZ2V0ICpwYXJlbnQsIGNvbnN0IFFTdHJpbmcgJmNvbG9yTmFt ZSkKICAgICA6IFFGcmFtZShwYXJlbnQpCi0gICAgLCBjb2xvcihjb2xvcikKKyAgICAsIGNvbG9y KGNvbG9yTmFtZSkKIHsKLSAgICBpZiAoIWNvbG9yLmlzRW1wdHkoKSkgeworICAgIGlmICghY29s b3JOYW1lLmlzRW1wdHkoKSkgewogICAgICAgICBjb2xvcnNDaGFuZ2VkKCk7CiAgICAgICAgIHJl ZnJlc2hDb2xvcnMoZmFsc2UpOwogICAgICAgICBzZXRBdXRvRmlsbEJhY2tncm91bmQodHJ1ZSk7 CmRpZmYgLS1naXQgYS9hcHAvUGFuZWwvcGFuZWxjb250ZXh0bWVudS5jcHAgYi9hcHAvUGFuZWwv cGFuZWxjb250ZXh0bWVudS5jcHAKaW5kZXggNWQxYjBjNTBlLi42Y2Q0NjMzOGMgMTAwNjQ0Ci0t LSBhL2FwcC9QYW5lbC9wYW5lbGNvbnRleHRtZW51LmNwcAorKysgYi9hcHAvUGFuZWwvcGFuZWxj b250ZXh0bWVudS5jcHAKQEAgLTE4LDggKzE4LDggQEAKICNpbmNsdWRlIDxLRmlsZUl0ZW1MaXN0 UHJvcGVydGllcz4KICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgogI2luY2x1ZGUgPEtNZXNz YWdlQm94PgotI2luY2x1ZGUgPEtQbHVnaW5NZXRhRGF0YT4KICNpbmNsdWRlIDxLUGx1Z2luRmFj dG9yeT4KKyNpbmNsdWRlIDxLUGx1Z2luTWV0YURhdGE+CiAjaW5jbHVkZSA8S1Byb2Nlc3M+CiAK ICNpbmNsdWRlICIuLi9BcmNoaXZlL2tyYXJjaGFuZGxlci5oIgpAQCAtODcsNyArODcsNyBAQCBQ YW5lbENvbnRleHRNZW51OjpQYW5lbENvbnRleHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRn ZXQgKnBhcmVudCkKICAgICBjb25zdCBib29sIGluVHJhc2ggPSBwcm90b2NvbHMuY29udGFpbnMo InRyYXNoIik7CiAgICAgY29uc3QgYm9vbCB0cmFzaE9ubHkgPSBpblRyYXNoICYmIHByb3RvY29s cy5jb3VudCgpID09IDE7CiAKLSAgICBGaWxlSXRlbSAqZmlsZSA9IGZpbGVzLmZpcnN0KCk7Cisg ICAgRmlsZUl0ZW0gKmN1cnJlbnRGaWxlID0gZmlsZXMuZmlyc3QoKTsKIAogICAgIC8vIC0tLS0t LS0tLS0tLSB0aGUgT1BFTi9CUk9XU0Ugb3B0aW9uIC0gb3BlbiBwcmVmZXJyZWQgc2VydmljZQog CkBAIC05OCw3ICs5OCw3IEBAIFBhbmVsQ29udGV4dE1lbnU6OlBhbmVsQ29udGV4dE1lbnUoS3JQ YW5lbCAqa3JQYW5lbCwgUVdpZGdldCAqcGFyZW50KQogICAgICAgICBpZiAobXVsdGlwbGVTZWxl Y3Rpb25zKSB7CiAgICAgICAgICAgICBvcGVuQWN0aW9uLT5zZXRUZXh0KGkxOG4oIk9wZW4vUnVu IEZpbGVzIikpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgb3BlbkFjdGlvbi0+c2V0 VGV4dChmaWxlLT5pc0V4ZWN1dGFibGUoKSAmJiAhZmlsZS0+aXNEaXIoKSA/IGkxOG4oIlJ1biIp IDogaTE4bigiT3BlbiIpKTsKKyAgICAgICAgICAgIG9wZW5BY3Rpb24tPnNldFRleHQoY3VycmVu dEZpbGUtPmlzRXhlY3V0YWJsZSgpICYmICFjdXJyZW50RmlsZS0+aXNEaXIoKSA/IGkxOG4oIlJ1 biIpIDogaTE4bigiT3BlbiIpKTsKICAgICAgICAgICAgIGNvbnN0IEtyVmlld0l0ZW1MaXN0IHZp ZXdJdGVtcyA9IHBhbmVsLT52aWV3LT5nZXRTZWxlY3RlZEtyVmlld0l0ZW1zKCk7CiAgICAgICAg ICAgICBvcGVuQWN0aW9uLT5zZXRJY29uKHZpZXdJdGVtcy5maXJzdCgpLT5pY29uKCkpOwogICAg ICAgICB9CkBAIC0xMTQsMTEgKzExNCwxMSBAQCBQYW5lbENvbnRleHRNZW51OjpQYW5lbENvbnRl eHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRnZXQgKnBhcmVudCkKIAogICAgIC8vIGJyb3dz ZSBhcmNoaXZlIC0gaWYgb25lIGZpbGUgaXMgc2VsZWN0ZWQgYW5kIHRoZSBmaWxlIGNhbiBiZSBi cm93c2VkIGFzIGFyY2hpdmUuLi4KICAgICBpZiAoIW11bHRpcGxlU2VsZWN0aW9ucwotICAgICAg ICAmJiAhcGFuZWwtPmZ1bmMtPmJyb3dzYWJsZUFyY2hpdmVQYXRoKGZpbGUtPmdldE5hbWUoKSku aXNFbXB0eSgpCisgICAgICAgICYmICFwYW5lbC0+ZnVuYy0+YnJvd3NhYmxlQXJjaGl2ZVBhdGgo Y3VycmVudEZpbGUtPmdldE5hbWUoKSkuaXNFbXB0eSgpCiAgICAgICAgIC8vIC4uLmJ1dCB1c2Vy IGRpc2FibGVkIGFyY2hpdmUgYnJvd3NpbmcuLi4KICAgICAgICAgJiYgKCFLQ29uZmlnR3JvdXAo a3JDb25maWcsICJBcmNoaXZlcyIpLnJlYWRFbnRyeSgiQXJjaGl2ZXNBc0RpcmVjdG9yaWVzIiwg X0FyY2hpdmVzQXNEaXJlY3RvcmllcykKICAgICAgICAgICAgIC8vIC4uLm9yIHRoZSBmaWxlIGlz IG5vdCBhIHN0YW5kYXJkIGFyY2hpdmUgKGUuZy4gb2R0LCBkb2N4LCBldGMuKS4uLgotICAgICAg ICAgICAgfHwgIUtyQXJjSGFuZGxlcjo6YXJjU3VwcG9ydGVkKGZpbGUtPmdldE1pbWUoKSkpKSB7 CisgICAgICAgICAgICB8fCAhS3JBcmNIYW5kbGVyOjphcmNTdXBwb3J0ZWQoY3VycmVudEZpbGUt PmdldE1pbWUoKSkpKSB7CiAgICAgICAgIC8vIC4uLml0IHdpbGwgbm90IGJlIGJyb3dzZWQgYXMg YSBkaXJlY3RvcnkgYnkgZGVmYXVsdCwgYnV0IGFkZCBhbiBvcHRpb24gZm9yIGl0CiAgICAgICAg IFFBY3Rpb24gKmJyb3dzZUFjdCA9IGFkZEFjdGlvbihpMThuKCJCcm93c2UgQXJjaGl2ZSIpKTsK ICAgICAgICAgYnJvd3NlQWN0LT5zZXREYXRhKFFWYXJpYW50KHN0YXRpY19jYXN0PGludD4oQlJP V1NFX0lEKSkpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIFBhbmVsQ29udGV4dE1lbnU6OlBhbmVsQ29u dGV4dE1lbnUoS3JQYW5lbCAqa3JQYW5lbCwgUVdpZGdldCAqcGFyZW50KQogICAgICAgICAgICAg fQogICAgICAgICB9CiAgICAgICAgIG9wZW5XaXRoTWVudS0+YWRkU2VwYXJhdG9yKCk7Ci0gICAg ICAgIGlmICghbXVsdGlwbGVTZWxlY3Rpb25zICYmIGZpbGUtPmlzRGlyKCkpIHsKKyAgICAgICAg aWYgKCFtdWx0aXBsZVNlbGVjdGlvbnMgJiYgY3VycmVudEZpbGUtPmlzRGlyKCkpIHsKICAgICAg ICAgICAgIG9wZW5XaXRoTWVudS0+YWRkQWN0aW9uKEljb24oInV0aWxpdGllcy10ZXJtaW5hbCIp LCBpMThuKCJUZXJtaW5hbCIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KE9Q RU5fVEVSTV9JRCkpKTsKICAgICAgICAgfQogICAgICAgICBvcGVuV2l0aE1lbnUtPmFkZEFjdGlv bihpMThuKCJPdGhlci4uLiIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KENI T09TRV9JRCkpKTsKQEAgLTE2NSw3ICsxNjUsNyBAQCBQYW5lbENvbnRleHRNZW51OjpQYW5lbENv bnRleHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRnZXQgKnBhcmVudCkKICAgICBhZGRTZXBh cmF0b3IoKTsKIAogICAgIC8vIC0tLS0tLS0tLS0tLS0tLSB1c2VyIGFjdGlvbnMKLSAgICBRQWN0 aW9uICp1c2VyQWN0aW9uID0gbmV3IFVzZXJBY3Rpb25Qb3B1cE1lbnUoZmlsZS0+Z2V0VXJsKCks IHRoaXMpOworICAgIFFBY3Rpb24gKnVzZXJBY3Rpb24gPSBuZXcgVXNlckFjdGlvblBvcHVwTWVu dShjdXJyZW50RmlsZS0+Z2V0VXJsKCksIHRoaXMpOwogICAgIHVzZXJBY3Rpb24tPnNldFRleHQo aTE4bigiVXNlciBBY3Rpb25zIikpOwogICAgIGFkZEFjdGlvbih1c2VyQWN0aW9uKTsKIApAQCAt MjE0LDcgKzIxNCw3IEBAIFBhbmVsQ29udGV4dE1lbnU6OlBhbmVsQ29udGV4dE1lbnUoS3JQYW5l bCAqa3JQYW5lbCwgUVdpZGdldCAqcGFyZW50KQogICAgICAgICBhdXRvICpsaW5rTWVudSA9IG5l dyBRTWVudSh0aGlzKTsKICAgICAgICAgbGlua01lbnUtPmFkZEFjdGlvbihpMThuKCJOZXcgU3lt bGluay4uLiIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KE5FV19TWU1MSU5L X0lEKSkpOwogICAgICAgICBsaW5rTWVudS0+YWRkQWN0aW9uKGkxOG4oIk5ldyBIYXJkbGluay4u LiIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KE5FV19MSU5LX0lEKSkpOwot ICAgICAgICBpZiAoZmlsZS0+aXNTeW1MaW5rKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRGaWxl LT5pc1N5bUxpbmsoKSkgewogICAgICAgICAgICAgbGlua01lbnUtPmFkZEFjdGlvbihpMThuKCJS ZWRpcmVjdCBMaW5rLi4uIikpLT5zZXREYXRhKFFWYXJpYW50KHN0YXRpY19jYXN0PGludD4oUkVE SVJFQ1RfTElOS19JRCkpKTsKICAgICAgICAgfQogICAgICAgICBRQWN0aW9uICpsaW5rQWN0aW9u ID0gYWRkTWVudShsaW5rTWVudSk7CkBAIC0yMjQsMTIgKzIyNCwxMiBAQCBQYW5lbENvbnRleHRN ZW51OjpQYW5lbENvbnRleHRNZW51KEtyUGFuZWwgKmtyUGFuZWwsIFFXaWRnZXQgKnBhcmVudCkK ICAgICBhZGRTZXBhcmF0b3IoKTsKIAogICAgIC8vIC0tLS0tLS0tLS0gY2FsY3VsYXRlIHNwYWNl Ci0gICAgaWYgKHBhbmVsLT5mdW5jLT5maWxlcygpLT5pc0xvY2FsKCkgJiYgKGZpbGUtPmlzRGly KCkgfHwgbXVsdGlwbGVTZWxlY3Rpb25zKSkKKyAgICBpZiAocGFuZWwtPmZ1bmMtPmZpbGVzKCkt PmlzTG9jYWwoKSAmJiAoY3VycmVudEZpbGUtPmlzRGlyKCkgfHwgbXVsdGlwbGVTZWxlY3Rpb25z KSkKICAgICAgICAgYWRkQWN0aW9uKHBhbmVsLT5ndWktPmFjdGlvbnMoKS0+YWN0Q2FsY3VsYXRl KTsKIAogICAgIC8vIC0tLS0tLS0tLS0gbW91bnQvdW1vdW50L2VqZWN0Ci0gICAgaWYgKHBhbmVs LT5mdW5jLT5maWxlcygpLT5pc0xvY2FsKCkgJiYgZmlsZS0+aXNEaXIoKSAmJiAhbXVsdGlwbGVT ZWxlY3Rpb25zKSB7Ci0gICAgICAgIGNvbnN0IFFTdHJpbmcgc2VsZWN0ZWREaXJlY3RvcnlQYXRo ID0gZmlsZS0+Z2V0VXJsKCkucGF0aCgpOworICAgIGlmIChwYW5lbC0+ZnVuYy0+ZmlsZXMoKS0+ aXNMb2NhbCgpICYmIGN1cnJlbnRGaWxlLT5pc0RpcigpICYmICFtdWx0aXBsZVNlbGVjdGlvbnMp IHsKKyAgICAgICAgY29uc3QgUVN0cmluZyBzZWxlY3RlZERpcmVjdG9yeVBhdGggPSBjdXJyZW50 RmlsZS0+Z2V0VXJsKCkucGF0aCgpOwogICAgICAgICBpZiAoa3JNdE1hbi5nZXRTdGF0dXMoc2Vs ZWN0ZWREaXJlY3RvcnlQYXRoKSA9PSBLTW91bnRNYW46Ok1PVU5URUQpCiAgICAgICAgICAgICBh ZGRBY3Rpb24oaTE4bigiVW5tb3VudCIpKS0+c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxp bnQ+KFVOTU9VTlRfSUQpKSk7CiAgICAgICAgIGVsc2UgaWYgKGtyTXRNYW4uZ2V0U3RhdHVzKHNl bGVjdGVkRGlyZWN0b3J5UGF0aCkgPT0gS01vdW50TWFuOjpOT1RfTU9VTlRFRCkKQEAgLTIzOSw3 ICsyMzksNyBAQCBQYW5lbENvbnRleHRNZW51OjpQYW5lbENvbnRleHRNZW51KEtyUGFuZWwgKmty UGFuZWwsIFFXaWRnZXQgKnBhcmVudCkKICAgICB9CiAKICAgICAvLyAtLS0tLS0tLS0gc2VuZCBi eSBtYWlsCi0gICAgaWYgKEtyU2VydmljZXM6OnN1cHBvcnRlZFRvb2xzKCkuY29udGFpbnMoIk1B SUwiKSAmJiAhZmlsZS0+aXNEaXIoKSkgeworICAgIGlmIChLclNlcnZpY2VzOjpzdXBwb3J0ZWRU b29scygpLmNvbnRhaW5zKCJNQUlMIikgJiYgIWN1cnJlbnRGaWxlLT5pc0RpcigpKSB7CiAgICAg ICAgIGFkZEFjdGlvbihJY29uKCJtYWlsLXNlbmQiKSwgaTE4bigiU2VuZCBieSBFbWFpbCIpKS0+ c2V0RGF0YShRVmFyaWFudChzdGF0aWNfY2FzdDxpbnQ+KFNFTkRfQllfRU1BSUxfSUQpKSk7CiAg ICAgfQogCmRpZmYgLS1naXQgYS9hcHAvUGFuZWwvcGFuZWxmdW5jLmNwcCBiL2FwcC9QYW5lbC9w YW5lbGZ1bmMuY3BwCmluZGV4IGNjMmZkMjM2Yi4uNGZmODQxMmRlIDEwMDY0NAotLS0gYS9hcHAv UGFuZWwvcGFuZWxmdW5jLmNwcAorKysgYi9hcHAvUGFuZWwvcGFuZWxmdW5jLmNwcApAQCAtMjIs OCArMjIsOCBAQAogCiAjaW5jbHVkZSA8S0Rlc2t0b3BGaWxlPgogI2luY2x1ZGUgPEtJTy9EZXNr dG9wRXhlY1BhcnNlcj4KLSNpbmNsdWRlIDxLSU8vSm9iVWlEZWxlZ2F0ZT4KICNpbmNsdWRlIDxL SU8vSm9iVHJhY2tlcj4KKyNpbmNsdWRlIDxLSU8vSm9iVWlEZWxlZ2F0ZT4KICNpbmNsdWRlIDxL Sm9iVHJhY2tlckludGVyZmFjZT4KICNpbmNsdWRlIDxLTG9jYWxpemVkU3RyaW5nPgogI2luY2x1 ZGUgPEtQcm9jZXNzPgpAQCAtMzIsOCArMzIsOCBAQAogI2luY2x1ZGUgPEtVcmxNaW1lRGF0YT4K IAogI2luY2x1ZGUgPEtJTy9Db21tYW5kTGF1bmNoZXJKb2I+Ci0jaW5jbHVkZSA8S0lPL09wZW5V cmxKb2I+CiAjaW5jbHVkZSA8S0lPL0pvYlVpRGVsZWdhdGVGYWN0b3J5PgorI2luY2x1ZGUgPEtJ Ty9PcGVuVXJsSm9iPgogI2luY2x1ZGUgPEtJTy9TdGF0Sm9iPgogCiAjaW5jbHVkZSA8S09wZW5X aXRoRGlhbG9nPgpAQCAtNzYsNyArNzYsNiBAQAogI2luY2x1ZGUgImxpc3RwYW5lbGFjdGlvbnMu aCIKICNpbmNsdWRlICJwYW5lbGZ1bmMuaCIKIAotCiBRUG9pbnRlcjxMaXN0UGFuZWxGdW5jPiBM aXN0UGFuZWxGdW5jOjpjb3B5VG9DbGlwYm9hcmRPcmlnaW47CiAKIExpc3RQYW5lbEZ1bmM6Okxp c3RQYW5lbEZ1bmMoTGlzdFBhbmVsICpwYXJlbnQpCkBAIC01MzksMTMgKzUzOCwxMyBAQCB2b2lk IExpc3RQYW5lbEZ1bmM6OnNsb3RTdGF0RWRpdChLSm9iICpqb2IpCiAgICAgICAgICAgICB0ZW1w RmlsZS0+c2V0QXV0b1JlbW92ZShmYWxzZSk7IC8vIGRvbmUgYmVsb3cKICAgICAgICAgICAgIHRl bXBGaWxlLT5vcGVuKCk7IC8vIGNyZWF0ZSBmaWxlCiAKLSAgICAgICAgICAgIEtJTzo6Q29weUpv YiAqam9iID0gS0lPOjpjb3B5KFFVcmw6OmZyb21Mb2NhbEZpbGUodGVtcEZpbGUtPmZpbGVOYW1l KCkpLCB1cmwpOwotICAgICAgICAgICAgam9iLT5zZXRVaURlbGVnYXRlKG51bGxwdHIpOwotICAg ICAgICAgICAgam9iLT5zZXREZWZhdWx0UGVybWlzc2lvbnModHJ1ZSk7Ci0gICAgICAgICAgICBj b25uZWN0KGpvYiwgJktJTzo6Q29weUpvYjo6cmVzdWx0LCB0aGlzLCBbPV0oS0pvYiAqam9iKSB7 Ci0gICAgICAgICAgICAgICAgc2xvdEZpbGVDcmVhdGVkKGpvYiwgdXJsKTsKKyAgICAgICAgICAg IEtJTzo6Q29weUpvYiAqY29weUpvYiA9IEtJTzo6Y29weShRVXJsOjpmcm9tTG9jYWxGaWxlKHRl bXBGaWxlLT5maWxlTmFtZSgpKSwgdXJsKTsKKyAgICAgICAgICAgIGNvcHlKb2ItPnNldFVpRGVs ZWdhdGUobnVsbHB0cik7CisgICAgICAgICAgICBjb3B5Sm9iLT5zZXREZWZhdWx0UGVybWlzc2lv bnModHJ1ZSk7CisgICAgICAgICAgICBjb25uZWN0KGNvcHlKb2IsICZLSU86OkNvcHlKb2I6OnJl c3VsdCwgdGhpcywgWz1dKEtKb2IgKmZpbmlzaGVkSm9iKSB7CisgICAgICAgICAgICAgICAgc2xv dEZpbGVDcmVhdGVkKGZpbmlzaGVkSm9iLCB1cmwpOwogICAgICAgICAgICAgfSk7Ci0gICAgICAg ICAgICBjb25uZWN0KGpvYiwgJktJTzo6Q29weUpvYjo6cmVzdWx0LCB0ZW1wRmlsZSwgJlFUZW1w b3JhcnlGaWxlOjpkZWxldGVMYXRlcik7CisgICAgICAgICAgICBjb25uZWN0KGNvcHlKb2IsICZL SU86OkNvcHlKb2I6OnJlc3VsdCwgdGVtcEZpbGUsICZRVGVtcG9yYXJ5RmlsZTo6ZGVsZXRlTGF0 ZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg S01lc3NhZ2VCb3g6OmVycm9yKG51bGxwdHIsIGpvYi0+ZXJyb3JTdHJpbmcoKSk7CmRpZmYgLS1n aXQgYS9hcHAvU2VhcmNoL2tyc2VhcmNoZGlhbG9nLmNwcCBiL2FwcC9TZWFyY2gva3JzZWFyY2hk aWFsb2cuY3BwCmluZGV4IDlhZmQwODczZS4uM2Y3NzU3Y2M1IDEwMDY0NAotLS0gYS9hcHAvU2Vh cmNoL2tyc2VhcmNoZGlhbG9nLmNwcAorKysgYi9hcHAvU2VhcmNoL2tyc2VhcmNoZGlhbG9nLmNw cApAQCAtMTUzLDggKzE1Myw3IEBAIEtyU2VhcmNoRGlhbG9nOjpLclNlYXJjaERpYWxvZyhjb25z dCBRU3RyaW5nICZwcm9maWxlLCBRV2lkZ2V0ICpwYXJlbnQpCiAgICAgc2VhcmNoVGV4dFRvQ2xp cGJvYXJkLT5zZXRUZXh0KGkxOG4oIlF1ZXJ5IHRvIGNsaXBib2FyZCIpKTsKICAgICBzZWFyY2hU ZXh0VG9DbGlwYm9hcmQtPnNldFRvb2xUaXAoaTE4bigiUGxhY2Ugc2VhcmNoIHRleHQgdG8gY2xp cGJvYXJkIHdoZW4gYSBmb3VuZCBmaWxlIGlzIG9wZW5lZC4iKSk7CiAgICAgc2VhcmNoVGV4dFRv Q2xpcGJvYXJkLT5zZXRDaGVja1N0YXRlKHN0YXRpY19jYXN0PFF0OjpDaGVja1N0YXRlPihncm91 cC5yZWFkRW50cnkoIlF1ZXJ5VG9DbGlwYm9hcmQiLCAwKSkpOwotICAgIGNvbm5lY3Qoc2VhcmNo VGV4dFRvQ2xpcGJvYXJkLCAmUUNoZWNrQm94OjpzdGF0ZUNoYW5nZWQsIHRoaXMsIFs9XShpbnQg c3RhdGUpIHsKLSAgICAgICAgS0NvbmZpZ0dyb3VwIGdyb3VwKGtyQ29uZmlnLCAiU2VhcmNoIik7 CisgICAgY29ubmVjdChzZWFyY2hUZXh0VG9DbGlwYm9hcmQsICZRQ2hlY2tCb3g6OnN0YXRlQ2hh bmdlZCwgdGhpcywgW2dyb3VwXShpbnQgc3RhdGUpIG11dGFibGUgewogICAgICAgICBncm91cC53 cml0ZUVudHJ5KCJRdWVyeVRvQ2xpcGJvYXJkIiwgc3RhdGUpOwogICAgIH0pOwogICAgIGJ1dHRv bnNMYXlvdXQtPmFkZFdpZGdldChzZWFyY2hUZXh0VG9DbGlwYm9hcmQpOwpkaWZmIC0tZ2l0IGEv YXBwL1NlYXJjaC9rcnNlYXJjaG1vZC5jcHAgYi9hcHAvU2VhcmNoL2tyc2VhcmNobW9kLmNwcApp bmRleCA4OGViZTJmM2EuLjNmYzViOTU4ZSAxMDA2NDQKLS0tIGEvYXBwL1NlYXJjaC9rcnNlYXJj aG1vZC5jcHAKKysrIGIvYXBwL1NlYXJjaC9rcnNlYXJjaG1vZC5jcHAKQEAgLTgxLDI1ICs4MSwy NSBAQCB2b2lkIEtyU2VhcmNoTW9kOjpzY2FuVXJsKGNvbnN0IFFVcmwgJnVybCkKIAogICAgIG1f dW5TY2FubmVkVXJscy5wdXNoKHVybCk7CiAgICAgd2hpbGUgKCFtX3VuU2Nhbm5lZFVybHMuaXNF bXB0eSgpKSB7Ci0gICAgICAgIGNvbnN0IFFVcmwgdXJsID0gbV91blNjYW5uZWRVcmxzLnBvcCgp OworICAgICAgICBjb25zdCBRVXJsIGN1cnJlbnRVcmwgPSBtX3VuU2Nhbm5lZFVybHMucG9wKCk7 CiAKICAgICAgICAgaWYgKG1fc3RvcFNlYXJjaCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg ICAgICBpZiAobV9xdWVyeS0+aXNFeGNsdWRlZCh1cmwpKSB7Ci0gICAgICAgICAgICBpZiAoIW1f cXVlcnktPnNlYXJjaEluRGlycygpLmNvbnRhaW5zKHVybCkpCisgICAgICAgIGlmIChtX3F1ZXJ5 LT5pc0V4Y2x1ZGVkKGN1cnJlbnRVcmwpKSB7CisgICAgICAgICAgICBpZiAoIW1fcXVlcnktPnNl YXJjaEluRGlycygpLmNvbnRhaW5zKGN1cnJlbnRVcmwpKQogICAgICAgICAgICAgICAgIGNvbnRp bnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1fc2Nhbm5lZFVybHMuY29udGFpbnModXJs KSkKKyAgICAgICAgaWYgKG1fc2Nhbm5lZFVybHMuY29udGFpbnMoY3VycmVudFVybCkpCiAgICAg ICAgICAgICAvLyBhdm9pZCBlbmRsZXNzIGxvb3AKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0g ICAgICAgIG1fc2Nhbm5lZFVybHMucHVzaCh1cmwpOworICAgICAgICBtX3NjYW5uZWRVcmxzLnB1 c2goY3VycmVudFVybCk7CiAKLSAgICAgICAgZW1pdCBzZWFyY2hpbmcodXJsLnRvRGlzcGxheVN0 cmluZyhRVXJsOjpQcmVmZXJMb2NhbEZpbGUpKTsKKyAgICAgICAgZW1pdCBzZWFyY2hpbmcoY3Vy cmVudFVybC50b0Rpc3BsYXlTdHJpbmcoUVVybDo6UHJlZmVyTG9jYWxGaWxlKSk7CiAKLSAgICAg ICAgc2NhbkRpcmVjdG9yeSh1cmwpOworICAgICAgICBzY2FuRGlyZWN0b3J5KGN1cnJlbnRVcmwp OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvYXBwL1NwbGl0dGVyL2NvbWJpbmVyLmNwcCBiL2Fw cC9TcGxpdHRlci9jb21iaW5lci5jcHAKaW5kZXggYmYxYzZmMmVhLi4xMWM2ZTYxZDQgMTAwNjQ0 Ci0tLSBhL2FwcC9TcGxpdHRlci9jb21iaW5lci5jcHAKKysrIGIvYXBwL1NwbGl0dGVyL2NvbWJp bmVyLmNwcApAQCAtMTMsOCArMTMsOCBAQAogCiAjaW5jbHVkZSA8S0ZpbGVJdGVtPgogI2luY2x1 ZGUgPEtJTy9Kb2I+Ci0jaW5jbHVkZSA8S0lPL1N0YXRKb2I+CiAjaW5jbHVkZSA8S0lPL0pvYlVp RGVsZWdhdGU+CisjaW5jbHVkZSA8S0lPL1N0YXRKb2I+CiAjaW5jbHVkZSA8S0xvY2FsaXplZFN0 cmluZz4KICNpbmNsdWRlIDxLTWVzc2FnZUJveD4KICNpbmNsdWRlIDx1dGlsaXR5PgpAQCAtNjgs MTIgKzY4LDEyIEBAIHZvaWQgQ29tYmluZXI6OmNvbWJpbmUoKQogCiAgICAgaWYgKCFmaWxlLmlz UmVhZGFibGUoKSkgewogICAgICAgICBpbnQgcmV0ID0gS01lc3NhZ2VCb3g6OnF1ZXN0aW9uVHdv QWN0aW9ucyhudWxscHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaTE4bigiVGhlIENSQyBpbmZvcm1hdGlvbiBmaWxlICglMSkgaXMgbWlzc2luZy5cbiIK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlZhbGlk aXR5IGNoZWNraW5nIGlzIGltcG9zc2libGUgd2l0aG91dCBpdC4gQ29udGludWUgY29tYmluaW5n PyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNw bFVSTC50b0Rpc3BsYXlTdHJpbmcoUVVybDo6UHJlZmVyTG9jYWxGaWxlKSksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSwKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNvbnQoKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0 ZW06OmNhbmNlbCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaTE4bigiVGhlIENSQyBpbmZvcm1hdGlvbiBmaWxlICglMSkgaXMgbWlzc2luZy5c biIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiVmFsaWRpdHkgY2hlY2tpbmcgaXMgaW1wb3NzaWJsZSB3aXRob3V0IGl0LiBDb250aW51ZSBj b21iaW5pbmc/IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzcGxVUkwudG9EaXNwbGF5U3RyaW5nKFFVcmw6OlByZWZlckxvY2FsRmlsZSkp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7fSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS1N0YW5k YXJkR3VpSXRlbTo6Y29udCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBLU3RhbmRhcmRHdWlJdGVtOjpjYW5jZWwoKSk7CiAKICAgICAgICAgaWYg KHJldCA9PSBLTWVzc2FnZUJveDo6U2Vjb25kYXJ5QWN0aW9uKSB7CiAgICAgICAgICAgICByZWpl Y3QoKTsKQEAgLTEwMSwxMCArMTAxLDEwIEBAIHZvaWQgQ29tYmluZXI6OmNvbWJpbmVTcGxpdEZp bGVEYXRhUmVjZWl2ZWQoS0lPOjpKb2IgKiwgY29uc3QgUUJ5dGVBcnJheSAmYnl0ZUFyCiB2b2lk IENvbWJpbmVyOjpjb21iaW5lU3BsaXRGaWxlRmluaXNoZWQoS0pvYiAqam9iKQogewogICAgIGNv bWJpbmVSZWFkSm9iID0gbnVsbHB0cjsKLSAgICBRU3RyaW5nIGVycm9yOworICAgIFFTdHJpbmcg ZXJyOwogCiAgICAgaWYgKGpvYi0+ZXJyb3IoKSkKLSAgICAgICAgZXJyb3IgPSBpMThuKCJFcnJv ciBhdCByZWFkaW5nIHRoZSBDUkMgZmlsZSAoJTEpLiIsIHNwbFVSTC50b0Rpc3BsYXlTdHJpbmco UVVybDo6UHJlZmVyTG9jYWxGaWxlKSk7CisgICAgICAgIGVyciA9IGkxOG4oIkVycm9yIGF0IHJl YWRpbmcgdGhlIENSQyBmaWxlICglMSkuIiwgc3BsVVJMLnRvRGlzcGxheVN0cmluZyhRVXJsOjpQ cmVmZXJMb2NhbEZpbGUpKTsKICAgICBlbHNlIHsKICAgICAgICAgc3BsaXRGaWxlLnJlbW92ZSgn XHInKTsgLy8gV2luZG93cyBjb21wYXRpYmlsaXR5CiAgICAgICAgIFFTdHJpbmdMaXN0IHNwbGl0 RmlsZUNvbnRlbnQgPSBzcGxpdEZpbGUuc3BsaXQoJ1xuJyk7CkBAIC0xMzMsMTcgKzEzMywxNyBA QCB2b2lkIENvbWJpbmVyOjpjb21iaW5lU3BsaXRGaWxlRmluaXNoZWQoS0pvYiAqam9iKQogICAg ICAgICB9CiAKICAgICAgICAgaWYgKCFoYXNGaWxlTmFtZSB8fCAhaGFzU2l6ZSB8fCAhaGFzQ3Jj KQotICAgICAgICAgICAgZXJyb3IgPSBpMThuKCJOb3QgYSB2YWxpZCBDUkMgZmlsZS4iKTsKKyAg ICAgICAgICAgIGVyciA9IGkxOG4oIk5vdCBhIHZhbGlkIENSQyBmaWxlLiIpOwogICAgICAgICBl bHNlCiAgICAgICAgICAgICBoYXNWYWxpZFNwbGl0RmlsZSA9IHRydWU7CiAgICAgfQogCi0gICAg aWYgKCFlcnJvci5pc0VtcHR5KCkpIHsKKyAgICBpZiAoIWVyci5pc0VtcHR5KCkpIHsKICAgICAg ICAgaW50IHJldCA9IEtNZXNzYWdlQm94OjpxdWVzdGlvblR3b0FjdGlvbnMobnVsbHB0ciwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yICsgaTE4bigi XG5WYWxpZGl0eSBjaGVja2luZyBpcyBpbXBvc3NpYmxlIHdpdGhvdXQgYSBnb29kIENSQyBmaWxl LiBDb250aW51ZSBjb21iaW5pbmc/IiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNvbnQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNhbmNlbCgpKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyICsgaTE4bigi XG5WYWxpZGl0eSBjaGVja2luZyBpcyBpbXBvc3NpYmxlIHdpdGhvdXQgYSBnb29kIENSQyBmaWxl LiBDb250aW51ZSBjb21iaW5pbmc/IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHt9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBLU3RhbmRhcmRHdWlJdGVtOjpjb250KCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtTdGFuZGFyZEd1aUl0ZW06OmNh bmNlbCgpKTsKICAgICAgICAgaWYgKHJldCA9PSBLTWVzc2FnZUJveDo6U2Vjb25kYXJ5QWN0aW9u KSB7CiAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4MSw3 ICsxODEsOCBAQCB2b2lkIENvbWJpbmVyOjpzdGF0RGVzdFJlc3VsdChLSm9iICpqb2IpCiAgICAg ICAgICAgICByZWplY3QoKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7IC8vIGRlc3RpbmF0aW9u IGFscmVhZHkgZXhpc3RzCi0gICAgICAgIEtJTzo6UmVuYW1lRGlhbG9nX09wdGlvbnMgbW9kZSA9 IGR5bmFtaWNfY2FzdDxLSU86OlN0YXRKb2IgKj4oam9iKS0+c3RhdFJlc3VsdCgpLmlzRGlyKCkg PyBLSU86OlJlbmFtZURpYWxvZ19EZXN0SXNEaXJlY3RvcnkgOiBLSU86OlJlbmFtZURpYWxvZ19P dmVyd3JpdGU7CisgICAgICAgIEtJTzo6UmVuYW1lRGlhbG9nX09wdGlvbnMgbW9kZSA9CisgICAg ICAgICAgICBkeW5hbWljX2Nhc3Q8S0lPOjpTdGF0Sm9iICo+KGpvYiktPnN0YXRSZXN1bHQoKS5p c0RpcigpID8gS0lPOjpSZW5hbWVEaWFsb2dfRGVzdElzRGlyZWN0b3J5IDogS0lPOjpSZW5hbWVE aWFsb2dfT3ZlcndyaXRlOwogICAgICAgICBLSU86OlJlbmFtZURpYWxvZyBkbGcodGhpcywgaTE4 bigiRmlsZSBBbHJlYWR5IEV4aXN0cyIpLCBRVXJsKCksIHdyaXRlVVJMLCBtb2RlKTsKICAgICAg ICAgc3dpdGNoIChkbGcuZXhlYygpKSB7CiAgICAgICAgIGNhc2UgS0lPOjpSZXN1bHRfT3Zlcndy aXRlOgpkaWZmIC0tZ2l0IGEvYXBwL1NwbGl0dGVyL3NwbGl0dGVyZ3VpLmNwcCBiL2FwcC9TcGxp dHRlci9zcGxpdHRlcmd1aS5jcHAKaW5kZXggNzI0YzgwZDUyLi5hNjVjNGFlZTcgMTAwNjQ0Ci0t LSBhL2FwcC9TcGxpdHRlci9zcGxpdHRlcmd1aS5jcHAKKysrIGIvYXBwL1NwbGl0dGVyL3NwbGl0 dGVyZ3VpLmNwcApAQCAtMzMsOSArMzMsOSBAQAogI2luY2x1ZGUgPHV0aWxpdHk+CiAKIHN0cnVj dCBTcGxpdHRlckdVSTo6UHJlZGVmaW5lZERldmljZSB7Ci0gICAgUHJlZGVmaW5lZERldmljZShR U3RyaW5nIG5hbWUsIEtJTzo6ZmlsZXNpemVfdCBjYXBhY2l0eSkKLSAgICAgICAgOiBuYW1lKHN0 ZDo6bW92ZShuYW1lKSkKLSAgICAgICAgLCBjYXBhY2l0eShjYXBhY2l0eSkKKyAgICBQcmVkZWZp bmVkRGV2aWNlKFFTdHJpbmcgaW5pdE5hbWUsIEtJTzo6ZmlsZXNpemVfdCBpbml0Q2FwYWNpdHkp CisgICAgICAgIDogbmFtZShzdGQ6Om1vdmUoaW5pdE5hbWUpKQorICAgICAgICAsIGNhcGFjaXR5 KGluaXRDYXBhY2l0eSkKICAgICB7CiAgICAgfQogICAgIFByZWRlZmluZWREZXZpY2UoY29uc3Qg UHJlZGVmaW5lZERldmljZSAmb3RoZXIpCmRpZmYgLS1naXQgYS9hcHAvU3luY2hyb25pemVyL3N5 bmNocm9uaXplci5jcHAgYi9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplci5jcHAKaW5kZXgg Y2IxZDZkNWY4Li5iZTc3OGRmMTkgMTAwNjQ0Ci0tLSBhL2FwcC9TeW5jaHJvbml6ZXIvc3luY2hy b25pemVyLmNwcAorKysgYi9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplci5jcHAKQEAgLTMz LDEwICszMywxMCBAQAogI2luY2x1ZGUgPFFWQm94TGF5b3V0PgogCiAjaW5jbHVkZSA8S0lPL0Rl bGV0ZUpvYj4KKyNpbmNsdWRlIDxLSU8vRmlsZUNvcHlKb2I+CiAjaW5jbHVkZSA8S0lPL0pvYlVp RGVsZWdhdGU+Ci0jaW5jbHVkZSA8S0lPL1NraXBEaWFsb2c+CiAjaW5jbHVkZSA8S0lPL01rZGly Sm9iPgotI2luY2x1ZGUgPEtJTy9GaWxlQ29weUpvYj4KKyNpbmNsdWRlIDxLSU8vU2tpcERpYWxv Zz4KICNpbmNsdWRlIDxLSU8vV2lkZ2V0c0Fza1VzZXJBY3Rpb25IYW5kbGVyPgogI2luY2x1ZGUg PEtMb2NhbGl6ZWRTdHJpbmc+CiAjaW5jbHVkZSA8S01lc3NhZ2VCb3g+CkBAIC05Nyw5ICs5Nyw5 IEBAIHZvaWQgU3luY2hyb25pemVyOjpyZXNldCgpCiAgICAgc3RvcHBlZCA9IGZhbHNlOwogICAg IHJlY3Vyc2VTdWJEaXJzID0gZm9sbG93U3ltTGlua3MgPSBpZ25vcmVEYXRlID0gYXN5bW1ldHJp YyA9IGNtcEJ5Q29udGVudCA9IGlnbm9yZUNhc2UgPSBhdXRvU2Nyb2xsID0gZmFsc2U7CiAgICAg bWFya0VxdWFscyA9IG1hcmtEaWZmZXJzID0gbWFya0NvcHlUb0xlZnQgPSBtYXJrQ29weVRvUmln aHQgPSBtYXJrRGVsZXRhYmxlID0gbWFya0R1cGxpY2F0ZXMgPSBtYXJrU2luZ2xlcyA9IGZhbHNl OwotICAgIGxlZnRDb3B5RW5hYmxlZCA9IHJpZ2h0Q29weUVuYWJsZWQgPSBkZWxldGVFbmFibGVk ID0gb3ZlcldyaXRlID0gYXV0b1NraXAgPSBwYXVzZWQgPSBmYWxzZTsKLSAgICBsZWZ0Q29weU5y ID0gcmlnaHRDb3B5TnIgPSBkZWxldGVOciA9IDA7Ci0gICAgbGVmdENvcHlTaXplID0gcmlnaHRD b3B5U2l6ZSA9IGRlbGV0ZVNpemUgPSAwOworICAgIG1fbGVmdENvcHlFbmFibGVkID0gbV9yaWdo dENvcHlFbmFibGVkID0gbV9kZWxldGVFbmFibGVkID0gbV9vdmVyV3JpdGUgPSBhdXRvU2tpcCA9 IHBhdXNlZCA9IGZhbHNlOworICAgIG1fbGVmdENvcHlOciA9IG1fcmlnaHRDb3B5TnIgPSBtX2Rl bGV0ZU5yID0gMDsKKyAgICBtX2xlZnRDb3B5U2l6ZSA9IG1fcmlnaHRDb3B5U2l6ZSA9IGRlbGV0 ZVNpemUgPSAwOwogICAgIGNvbXBhcmVkRGlycyA9IGZpbGVDb3VudCA9IDA7CiAgICAgbGVmdEJh c2VEaXIuY2xlYXIoKTsKICAgICByaWdodEJhc2VEaXIuY2xlYXIoKTsKQEAgLTEzOSw3ICsxMzks NyBAQCBpbnQgU3luY2hyb25pemVyOjpjb21wYXJlKFFTdHJpbmcgbGVmdFVSTCwKIAogICAgIHN0 b3BwZWQgPSBmYWxzZTsKIAotICAgIHRoaXMtPnF1ZXJ5ID0gcXVlcnk7CisgICAgdGhpcy0+bV9x dWVyeSA9IHF1ZXJ5OwogCiAgICAgbGVmdFVSTCA9IEtVcmxDb21wbGV0aW9uOjpyZXBsYWNlZFBh dGgobGVmdFVSTCwgdHJ1ZSwgdHJ1ZSk7CiAgICAgcmlnaHRVUkwgPSBLVXJsQ29tcGxldGlvbjo6 cmVwbGFjZWRQYXRoKHJpZ2h0VVJMLCB0cnVlLCB0cnVlKTsKQEAgLTI0Niw3ICsyNDYsNyBAQCB2 b2lkIFN5bmNocm9uaXplcjo6Y29tcGFyZURpcmVjdG9yeShTeW5jaHJvbml6ZXJGaWxlSXRlbSAq cGFyZW50LAogICAgICAgICBpZiAoY2hlY2tJZlNlbGVjdGVkICYmICFzZWxlY3RlZEZpbGVzLmNv bnRhaW5zKGZpbGVfbmFtZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBpZiAo IXF1ZXJ5LT5tYXRjaChsZWZ0X2ZpbGUpKQorICAgICAgICBpZiAoIW1fcXVlcnktPm1hdGNoKGxl ZnRfZmlsZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAoKHJpZ2h0X2Zp bGUgPSByaWdodF9kaXJlY3RvcnktPnNlYXJjaChmaWxlX25hbWUsIGlnbm9yZUNhc2UpKSA9PSBu dWxscHRyKQpAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgU3luY2hyb25pemVyOjpjb21wYXJlRGly ZWN0b3J5KFN5bmNocm9uaXplckZpbGVJdGVtICpwYXJlbnQsCiAgICAgICAgIGlmIChjaGVja0lm U2VsZWN0ZWQgJiYgIXNlbGVjdGVkRmlsZXMuY29udGFpbnMoZmlsZV9uYW1lKSkKICAgICAgICAg ICAgIGNvbnRpbnVlOwogCi0gICAgICAgIGlmICghcXVlcnktPm1hdGNoKHJpZ2h0X2ZpbGUpKQor ICAgICAgICBpZiAoIW1fcXVlcnktPm1hdGNoKHJpZ2h0X2ZpbGUpKQogICAgICAgICAgICAgY29u dGludWU7CiAKICAgICAgICAgaWYgKGxlZnRfZGlyZWN0b3J5LT5zZWFyY2goZmlsZV9uYW1lLCBp Z25vcmVDYXNlKSA9PSBudWxscHRyKQpAQCAtMzIyLDEwICszMjIsMTAgQEAgdm9pZCBTeW5jaHJv bml6ZXI6OmNvbXBhcmVEaXJlY3RvcnkoU3luY2hyb25pemVyRmlsZUl0ZW0gKnBhcmVudCwKICAg ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAvLyBFeGNsdWRl IHRoZSBsZWZ0LXNpZGUgZm9sZGVyIGlmIGl0J3MgaW5zaWRlIHRoZSBleGNsdXNpb24gbGlzdAot ICAgICAgICAgICAgICAgIGlmIChxdWVyeS0+aXNFeGNsdWRlZChsZWZ0X2ZpbGUtPmdldFVybCgp KSkKKyAgICAgICAgICAgICAgICBpZiAobV9xdWVyeS0+aXNFeGNsdWRlZChsZWZ0X2ZpbGUtPmdl dFVybCgpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAgICAg ICBpZiAoIXF1ZXJ5LT5tYXRjaERpck5hbWUobGVmdF9maWxlX25hbWUpKQorICAgICAgICAgICAg ICAgIGlmICghbV9xdWVyeS0+bWF0Y2hEaXJOYW1lKGxlZnRfZmlsZV9uYW1lKSkKICAgICAgICAg ICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICBpZiAoKHJpZ2h0X2ZpbGUg PSByaWdodF9kaXJlY3RvcnktPnNlYXJjaChsZWZ0X2ZpbGVfbmFtZSwgaWdub3JlQ2FzZSkpID09 IG51bGxwdHIpIHsKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIFN5bmNocm9uaXplcjo6Y29tcGFy ZURpcmVjdG9yeShTeW5jaHJvbml6ZXJGaWxlSXRlbSAqcGFyZW50LAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdF9maWxl LT5nZXRNb2RlKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBsZWZ0X2ZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICFxdWVyeS0+bWF0Y2gobGVmdF9maWxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbV9xdWVyeS0+bWF0Y2gobGVm dF9maWxlKSk7CiAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmFwcGVuZChuZXcgQ29tcGFyZVRh c2sobWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGVmdFVSTCArIGxlZnRfZmlsZV9uYW1lICsgJy8nLAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnREaXIuaXNFbXB0eSgpID8gbGVmdF9maWxlX25h bWUgOiBsZWZ0RGlyICsgJy8nICsgbGVmdF9maWxlX25hbWUsCkBAIC0zNjgsNyArMzY4LDcgQEAg dm9pZCBTeW5jaHJvbml6ZXI6OmNvbXBhcmVEaXJlY3RvcnkoU3luY2hyb25pemVyRmlsZUl0ZW0g KnBhcmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBsZWZ0X2ZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0X2ZpbGUt PmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5LT5tYXRjaChsZWZ0X2ZpbGUp KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAhbV9xdWVyeS0+bWF0Y2gobGVmdF9maWxlKSk7CiAgICAgICAgICAgICAgICAg ICAgIHN0YWNrLmFwcGVuZChuZXcgQ29tcGFyZVRhc2sobWUsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFVSTCArIGxlZnRfZmlsZV9uYW1lICsg Jy8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJp Z2h0VVJMICsgcmlnaHRfZmlsZV9uYW1lICsgJy8nLApAQCAtMzg4LDEwICszODgsMTAgQEAgdm9p ZCBTeW5jaHJvbml6ZXI6OmNvbXBhcmVEaXJlY3RvcnkoU3luY2hyb25pemVyRmlsZUl0ZW0gKnBh cmVudCwKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgICAgICAv LyBFeGNsdWRlIHRoZSByaWdodC1zaWRlIGZvbGRlciBpZiBpdCdzIGluc2lkZSB0aGUgZXhjbHVz aW9uIGxpc3QKLSAgICAgICAgICAgICAgICBpZiAocXVlcnktPmlzRXhjbHVkZWQocmlnaHRfZmls ZS0+Z2V0VXJsKCkpKQorICAgICAgICAgICAgICAgIGlmIChtX3F1ZXJ5LT5pc0V4Y2x1ZGVkKHJp Z2h0X2ZpbGUtPmdldFVybCgpKSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAg ICAgICAgICAgICAgICBpZiAoIXF1ZXJ5LT5tYXRjaERpck5hbWUoZmlsZV9uYW1lKSkKKyAgICAg ICAgICAgICAgICBpZiAoIW1fcXVlcnktPm1hdGNoRGlyTmFtZShmaWxlX25hbWUpKQogICAgICAg ICAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICAgICAgICAgIGlmIChsZWZ0X2RpcmVj dG9yeS0+c2VhcmNoKGZpbGVfbmFtZSwgaWdub3JlQ2FzZSkgPT0gbnVsbHB0cikgewpAQCAtNDA2 LDcgKzQwNiw3IEBAIHZvaWQgU3luY2hyb25pemVyOjpjb21wYXJlRGlyZWN0b3J5KFN5bmNocm9u aXplckZpbGVJdGVtICpwYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRfZmlsZS0+Z2V0TW9kZSgpLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJpZ2h0X2ZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5LT5t YXRjaChyaWdodF9maWxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIW1fcXVlcnktPm1hdGNoKHJpZ2h0X2ZpbGUpKTsK ICAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAg ICAgbmV3IENvbXBhcmVUYXNrKG1lLCByaWdodFVSTCArIGZpbGVfbmFtZSArICcvJywgcmlnaHRE aXIuaXNFbXB0eSgpID8gZmlsZV9uYW1lIDogcmlnaHREaXIgKyAnLycgKyBmaWxlX25hbWUsIGZh bHNlLCBpZ25vcmVIaWRkZW4pKTsKICAgICAgICAgICAgICAgICB9CkBAIC02OTYsOCArNjk2LDgg QEAgU3luY2hyb25pemVyRmlsZUl0ZW0gKlN5bmNocm9uaXplcjo6YWRkRHVwbGljYXRlSXRlbShT eW5jaHJvbml6ZXJGaWxlSXRlbSAqcGFyZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaXNUZW1wKTsKIAogICAgIGlmICh1bmNlcnRhaW4gPT0gVFRfVU5LTk9XTikg ewotICAgICAgICBRVXJsIGxlZnRVUkwgPSBTeW5jaHJvbml6ZXI6OmZzVXJsKGxlZnREaXIuaXNF bXB0eSgpID8gKFFTdHJpbmcpIChsZWZ0QmFzZURpciArIGxlZnROYW1lKTogbGVmdEJhc2VEaXIg KyBsZWZ0RGlyICsgUVN0cmluZygnLycpICsgbGVmdE5hbWUpOwotICAgICAgICBRVXJsIHJpZ2h0 VVJMID0gU3luY2hyb25pemVyOjpmc1VybChyaWdodERpci5pc0VtcHR5KCkgPyAoUVN0cmluZykg KHJpZ2h0QmFzZURpciArIHJpZ2h0TmFtZSkgOiByaWdodEJhc2VEaXIgKyByaWdodERpciArICcv JyArIHJpZ2h0TmFtZSk7CisgICAgICAgIFFVcmwgbGVmdFVSTCA9IFN5bmNocm9uaXplcjo6ZnNV cmwobGVmdERpci5pc0VtcHR5KCkgPyAoUVN0cmluZykobGVmdEJhc2VEaXIgKyBsZWZ0TmFtZSkg OiBsZWZ0QmFzZURpciArIGxlZnREaXIgKyBRU3RyaW5nKCcvJykgKyBsZWZ0TmFtZSk7CisgICAg ICAgIFFVcmwgcmlnaHRVUkwgPSBTeW5jaHJvbml6ZXI6OmZzVXJsKHJpZ2h0RGlyLmlzRW1wdHko KSA/IChRU3RyaW5nKShyaWdodEJhc2VEaXIgKyByaWdodE5hbWUpIDogcmlnaHRCYXNlRGlyICsg cmlnaHREaXIgKyAnLycgKyByaWdodE5hbWUpOwogICAgICAgICBzdGFjay5hcHBlbmQobmV3IENv bXBhcmVDb250ZW50VGFzayh0aGlzLCBpdGVtLCBsZWZ0VVJMLCByaWdodFVSTCwgbGVmdFNpemUp KTsKICAgICB9CiAKQEAgLTcxNyw3ICs3MTcsNyBAQCB2b2lkIFN5bmNocm9uaXplcjo6YWRkU2lu Z2xlRGlyZWN0b3J5KFN5bmNocm9uaXplckZpbGVJdGVtICpwYXJlbnQsIFN5bmNocm9uaXplcgog CiAgICAgICAgIGZpbGVfbmFtZSA9IGZpbGUtPmdldE5hbWUoKTsKIAotICAgICAgICBpZiAoIXF1 ZXJ5LT5tYXRjaChmaWxlKSkKKyAgICAgICAgaWYgKCFtX3F1ZXJ5LT5tYXRjaChmaWxlKSkKICAg ICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChpc0xlZnQpCkBAIC03NTIsNyArNzUy LDcgQEAgdm9pZCBTeW5jaHJvbml6ZXI6OmFkZFNpbmdsZURpcmVjdG9yeShTeW5jaHJvbml6ZXJG aWxlSXRlbSAqcGFyZW50LCBTeW5jaHJvbml6ZXIKICAgICAgICAgICAgIGlmIChleGNsdWRlZFBh dGhzLmNvbnRhaW5zKGRpck5hbWUuaXNFbXB0eSgpID8gZmlsZV9uYW1lIDogZGlyTmFtZSArICcv JyArIGZpbGVfbmFtZSkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgICAg IGlmICghcXVlcnktPm1hdGNoRGlyTmFtZShmaWxlX25hbWUpKQorICAgICAgICAgICAgaWYgKCFt X3F1ZXJ5LT5tYXRjaERpck5hbWUoZmlsZV9uYW1lKSkKICAgICAgICAgICAgICAgICBjb250aW51 ZTsKIAogICAgICAgICAgICAgU3luY2hyb25pemVyRmlsZUl0ZW0gKm1lOwpAQCAtNzY5LDcgKzc2 OSw3IEBAIHZvaWQgU3luY2hyb25pemVyOjphZGRTaW5nbGVEaXJlY3RvcnkoU3luY2hyb25pemVy RmlsZUl0ZW0gKnBhcmVudCwgU3luY2hyb25pemVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZmlsZS0+Z2V0TW9kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGZpbGUtPmdldEFDTCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5 LT5tYXRjaChmaWxlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIW1f cXVlcnktPm1hdGNoKGZpbGUpKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBt ZSA9IGFkZFJpZ2h0T25seUl0ZW0ocGFyZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBmaWxlX25hbWUsCkBAIC03ODIsNyArNzgyLDcgQEAgdm9pZCBTeW5jaHJvbml6 ZXI6OmFkZFNpbmdsZURpcmVjdG9yeShTeW5jaHJvbml6ZXJGaWxlSXRlbSAqcGFyZW50LCBTeW5j aHJvbml6ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS0+Z2V0 TW9kZSgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLT5nZXRB Q0woKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIXF1ZXJ5LT5tYXRjaChmaWxlKSk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICFtX3F1ZXJ5LT5tYXRjaChmaWxl KSk7CiAgICAgICAgICAgICBzdGFjay5hcHBlbmQobmV3IENvbXBhcmVUYXNrKG1lLCB1cmwgKyBm aWxlX25hbWUgKyAnLycsIGRpck5hbWUuaXNFbXB0eSgpID8gZmlsZV9uYW1lIDogZGlyTmFtZSAr ICcvJyArIGZpbGVfbmFtZSwgaXNMZWZ0LCBpZ25vcmVIaWRkZW4pKTsKICAgICAgICAgfQogICAg IH0KQEAgLTg3MywxMSArODczLDExIEBAIHZvaWQgU3luY2hyb25pemVyOjpvcGVyYXRlKFN5bmNo cm9uaXplckZpbGVJdGVtICppdGVtLCB2b2lkICgqZXhlY3V0ZU9wZXJhdGlvbikoCiAKICAgICAg ICAgUUxpc3RJdGVyYXRvcjxTeW5jaHJvbml6ZXJGaWxlSXRlbSAqPiBpdChyZXN1bHRMaXN0KTsK ICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgU3luY2hyb25pemVy RmlsZUl0ZW0gKml0ZW0gPSBpdC5uZXh0KCk7CisgICAgICAgICAgICBTeW5jaHJvbml6ZXJGaWxl SXRlbSAqbmV4dEl0ZW0gPSBpdC5uZXh0KCk7CiAKLSAgICAgICAgICAgIGlmIChpdGVtLT5sZWZ0 RGlyZWN0b3J5KCkgPT0gbGVmdERpck5hbWUgfHwgaXRlbS0+bGVmdERpcmVjdG9yeSgpLnN0YXJ0 c1dpdGgobGVmdERpck5hbWUgKyAnLycpIHx8IGl0ZW0tPnJpZ2h0RGlyZWN0b3J5KCkgPT0gcmln aHREaXJOYW1lCi0gICAgICAgICAgICAgICAgfHwgaXRlbS0+cmlnaHREaXJlY3RvcnkoKS5zdGFy dHNXaXRoKHJpZ2h0RGlyTmFtZSArICcvJykpCi0gICAgICAgICAgICAgICAgZXhlY3V0ZU9wZXJh dGlvbihpdGVtKTsKKyAgICAgICAgICAgIGlmIChuZXh0SXRlbS0+bGVmdERpcmVjdG9yeSgpID09 IGxlZnREaXJOYW1lIHx8IG5leHRJdGVtLT5sZWZ0RGlyZWN0b3J5KCkuc3RhcnRzV2l0aChsZWZ0 RGlyTmFtZSArICcvJykKKyAgICAgICAgICAgICAgICB8fCBuZXh0SXRlbS0+cmlnaHREaXJlY3Rv cnkoKSA9PSByaWdodERpck5hbWUgfHwgbmV4dEl0ZW0tPnJpZ2h0RGlyZWN0b3J5KCkuc3RhcnRz V2l0aChyaWdodERpck5hbWUgKyAnLycpKQorICAgICAgICAgICAgICAgIGV4ZWN1dGVPcGVyYXRp b24obmV4dEl0ZW0pOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTA2NiwxNyArMTA2NiwxNyBA QCB2b2lkIFN5bmNocm9uaXplcjo6c2V0U2Nyb2xsaW5nKGJvb2wgc2Nyb2xsKQogCiB2b2lkIFN5 bmNocm9uaXplcjo6c3luY2hyb25pemUoUVdpZGdldCAqc3luY1dkZywgYm9vbCBsZWZ0Q29weUVu YWJsZWQsIGJvb2wgcmlnaHRDb3B5RW5hYmxlZCwgYm9vbCBkZWxldGVFbmFibGVkLCBib29sIG92 ZXJXcml0ZSwgaW50IHBhclRocmVhZHMpCiB7Ci0gICAgdGhpcy0+bGVmdENvcHlFbmFibGVkID0g bGVmdENvcHlFbmFibGVkOwotICAgIHRoaXMtPnJpZ2h0Q29weUVuYWJsZWQgPSByaWdodENvcHlF bmFibGVkOwotICAgIHRoaXMtPmRlbGV0ZUVuYWJsZWQgPSBkZWxldGVFbmFibGVkOwotICAgIHRo aXMtPm92ZXJXcml0ZSA9IG92ZXJXcml0ZTsKKyAgICB0aGlzLT5tX2xlZnRDb3B5RW5hYmxlZCA9 IGxlZnRDb3B5RW5hYmxlZDsKKyAgICB0aGlzLT5tX3JpZ2h0Q29weUVuYWJsZWQgPSByaWdodENv cHlFbmFibGVkOworICAgIHRoaXMtPm1fZGVsZXRlRW5hYmxlZCA9IGRlbGV0ZUVuYWJsZWQ7Cisg ICAgdGhpcy0+bV9vdmVyV3JpdGUgPSBvdmVyV3JpdGU7CiAgICAgdGhpcy0+cGFyYWxsZWxUaHJl YWRzID0gcGFyVGhyZWFkczsKICAgICB0aGlzLT5zeW5jRGxnV2lkZ2V0ID0gc3luY1dkZzsKIAog ICAgIGF1dG9Ta2lwID0gcGF1c2VkID0gZGlzYWJsZU5ld1Rhc2tzID0gZmFsc2U7CiAKLSAgICBs ZWZ0Q29weU5yID0gcmlnaHRDb3B5TnIgPSBkZWxldGVOciA9IDA7Ci0gICAgbGVmdENvcHlTaXpl ID0gcmlnaHRDb3B5U2l6ZSA9IGRlbGV0ZVNpemUgPSAwOworICAgIG1fbGVmdENvcHlOciA9IG1f cmlnaHRDb3B5TnIgPSBtX2RlbGV0ZU5yID0gMDsKKyAgICBtX2xlZnRDb3B5U2l6ZSA9IG1fcmln aHRDb3B5U2l6ZSA9IGRlbGV0ZVNpemUgPSAwOwogCiAgICAgaW5UYXNrRmluaXNoZWQgPSAwOwog ICAgIGxhc3RUYXNrID0gbnVsbHB0cjsKQEAgLTExMjMsMTEgKzExMjMsMTEgQEAgU3luY2hyb25p emVyRmlsZUl0ZW0gKlN5bmNocm9uaXplcjo6Z2V0TmV4dFRhc2soKQogICAgICAgICBpZiAoY3Vy cmVudFRhc2stPmlzTWFya2VkKCkpIHsKICAgICAgICAgICAgIHRhc2sgPSBjdXJyZW50VGFzay0+ dGFzaygpOwogCi0gICAgICAgICAgICBpZiAobGVmdENvcHlFbmFibGVkICYmIHRhc2sgPT0gVFRf Q09QWV9UT19MRUZUKQorICAgICAgICAgICAgaWYgKG1fbGVmdENvcHlFbmFibGVkICYmIHRhc2sg PT0gVFRfQ09QWV9UT19MRUZUKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg ZWxzZSBpZiAocmlnaHRDb3B5RW5hYmxlZCAmJiB0YXNrID09IFRUX0NPUFlfVE9fUklHSFQpCisg ICAgICAgICAgICBlbHNlIGlmIChtX3JpZ2h0Q29weUVuYWJsZWQgJiYgdGFzayA9PSBUVF9DT1BZ X1RPX1JJR0hUKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxzZSBpZiAo ZGVsZXRlRW5hYmxlZCAmJiB0YXNrID09IFRUX0RFTEVURSkKKyAgICAgICAgICAgIGVsc2UgaWYg KG1fZGVsZXRlRW5hYmxlZCAmJiB0YXNrID09IFRUX0RFTEVURSkKICAgICAgICAgICAgICAgICBi cmVhazsKICAgICAgICAgfQogICAgIH0gd2hpbGUgKHRydWUpOwpAQCAtMTE2MSwxMyArMTE2MSwx MyBAQCB2b2lkIFN5bmNocm9uaXplcjo6ZXhlY3V0ZVRhc2soU3luY2hyb25pemVyRmlsZUl0ZW0g KnRhc2spCiAKICAgICAgICAgICAgIGlmICh0YXNrLT5yaWdodExpbmsoKS5pc051bGwoKSkgewog ICAgICAgICAgICAgICAgIEtJTzo6RmlsZUNvcHlKb2IgKmpvYiA9Ci0gICAgICAgICAgICAgICAg ICAgIEtJTzo6ZmlsZV9jb3B5KHJpZ2h0VVJMLCBkZXN0VVJMLCAtMSwgKChvdmVyV3JpdGUgfHwg dGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1bHRGbGFncykg fCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOworICAgICAgICAgICAgICAgICAgICBLSU86OmZpbGVf Y29weShyaWdodFVSTCwgZGVzdFVSTCwgLTEsICgobV9vdmVyV3JpdGUgfHwgdGFzay0+b3Zlcldy aXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1bHRGbGFncykgfCBLSU86OkhpZGVQ cm9ncmVzc0luZm8pOwogICAgICAgICAgICAgICAgIGNvbm5lY3Qoam9iLCBTSUdOQUwocHJvY2Vz c2VkU2l6ZShLSm9iICosIHF1bG9uZ2xvbmcpKSwgdGhpcywgU0xPVChzbG90UHJvY2Vzc2VkU2l6 ZShLSm9iICosIHF1bG9uZ2xvbmcpKSk7CiAgICAgICAgICAgICAgICAgY29ubmVjdChqb2IsICZL SU86OkZpbGVDb3B5Sm9iOjpyZXN1bHQsIHRoaXMsICZTeW5jaHJvbml6ZXI6OnNsb3RUYXNrRmlu aXNoZWQpOwogICAgICAgICAgICAgICAgIGpvYk1hcFtqb2JdID0gdGFzazsKICAgICAgICAgICAg IH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgS0lPOjpTaW1wbGVKb2IgKmpvYiA9Ci0gICAgICAg ICAgICAgICAgICAgIEtJTzo6c3ltbGluayh0YXNrLT5yaWdodExpbmsoKSwgZGVzdFVSTCwgKChv dmVyV3JpdGUgfHwgdGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRl ZmF1bHRGbGFncykgfCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOworICAgICAgICAgICAgICAgICAg ICBLSU86OnN5bWxpbmsodGFzay0+cmlnaHRMaW5rKCksIGRlc3RVUkwsICgobV9vdmVyV3JpdGUg fHwgdGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1bHRGbGFn cykgfCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOwogICAgICAgICAgICAgICAgIGNvbm5lY3Qoam9i LCAmS0lPOjpTaW1wbGVKb2I6OnJlc3VsdCwgdGhpcywgJlN5bmNocm9uaXplcjo6c2xvdFRhc2tG aW5pc2hlZCk7CiAgICAgICAgICAgICAgICAgam9iTWFwW2pvYl0gPSB0YXNrOwogICAgICAgICAg ICAgfQpAQCAtMTE4NiwxMyArMTE4NiwxMyBAQCB2b2lkIFN5bmNocm9uaXplcjo6ZXhlY3V0ZVRh c2soU3luY2hyb25pemVyRmlsZUl0ZW0gKnRhc2spCiAKICAgICAgICAgICAgIGlmICh0YXNrLT5s ZWZ0TGluaygpLmlzTnVsbCgpKSB7CiAgICAgICAgICAgICAgICAgS0lPOjpGaWxlQ29weUpvYiAq am9iID0KLSAgICAgICAgICAgICAgICAgICAgS0lPOjpmaWxlX2NvcHkobGVmdFVSTCwgZGVzdFVS TCwgLTEsICgob3ZlcldyaXRlIHx8IHRhc2stPm92ZXJXcml0ZSgpKSA/IEtJTzo6T3ZlcndyaXRl IDogS0lPOjpEZWZhdWx0RmxhZ3MpIHwgS0lPOjpIaWRlUHJvZ3Jlc3NJbmZvKTsKKyAgICAgICAg ICAgICAgICAgICAgS0lPOjpmaWxlX2NvcHkobGVmdFVSTCwgZGVzdFVSTCwgLTEsICgobV9vdmVy V3JpdGUgfHwgdGFzay0+b3ZlcldyaXRlKCkpID8gS0lPOjpPdmVyd3JpdGUgOiBLSU86OkRlZmF1 bHRGbGFncykgfCBLSU86OkhpZGVQcm9ncmVzc0luZm8pOwogICAgICAgICAgICAgICAgIGNvbm5l Y3Qoam9iLCBTSUdOQUwocHJvY2Vzc2VkU2l6ZShLSm9iICosIHF1bG9uZ2xvbmcpKSwgdGhpcywg U0xPVChzbG90UHJvY2Vzc2VkU2l6ZShLSm9iICosIHF1bG9uZ2xvbmcpKSk7CiAgICAgICAgICAg ICAgICAgY29ubmVjdChqb2IsICZLSU86OkZpbGVDb3B5Sm9iOjpyZXN1bHQsIHRoaXMsICZTeW5j aHJvbml6ZXI6OnNsb3RUYXNrRmluaXNoZWQpOwogICAgICAgICAgICAgICAgIGpvYk1hcFtqb2Jd ID0gdGFzazsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgS0lPOjpTaW1w bGVKb2IgKmpvYiA9Ci0gICAgICAgICAgICAgICAgICAgIEtJTzo6c3ltbGluayh0YXNrLT5sZWZ0 TGluaygpLCBkZXN0VVJMLCAoKG92ZXJXcml0ZSB8fCB0YXNrLT5vdmVyV3JpdGUoKSkgPyBLSU86 Ok92ZXJ3cml0ZSA6IEtJTzo6RGVmYXVsdEZsYWdzKSB8IEtJTzo6SGlkZVByb2dyZXNzSW5mbyk7 CisgICAgICAgICAgICAgICAgICAgIEtJTzo6c3ltbGluayh0YXNrLT5sZWZ0TGluaygpLCBkZXN0 VVJMLCAoKG1fb3ZlcldyaXRlIHx8IHRhc2stPm92ZXJXcml0ZSgpKSA/IEtJTzo6T3ZlcndyaXRl IDogS0lPOjpEZWZhdWx0RmxhZ3MpIHwgS0lPOjpIaWRlUHJvZ3Jlc3NJbmZvKTsKICAgICAgICAg ICAgICAgICBjb25uZWN0KGpvYiwgJktJTzo6U2ltcGxlSm9iOjpyZXN1bHQsIHRoaXMsICZTeW5j aHJvbml6ZXI6OnNsb3RUYXNrRmluaXNoZWQpOwogICAgICAgICAgICAgICAgIGpvYk1hcFtqb2Jd ID0gdGFzazsKICAgICAgICAgICAgIH0KQEAgLTEzNjUsNyArMTM2NSw3IEBAIHZvaWQgU3luY2hy b25pemVyOjpzbG90VGFza0ZpbmlzaGVkKEtKb2IgKmpvYikKICAgICAgICAgICAgICAgICAgICAg aW5UYXNrRmluaXNoZWQtLTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAg ICAgICAgIGNhc2UgS0lPOjpSZXN1bHRfT3ZlcndyaXRlQWxsOgotICAgICAgICAgICAgICAgICAg ICBvdmVyV3JpdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtX292ZXJXcml0ZSA9IHRy dWU7CiAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGVUYXNrKGl0ZW0pOwogICAgICAgICAgICAg ICAgICAgICBpblRhc2tGaW5pc2hlZC0tOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CkBA IC0xNDIxLDIyICsxNDIxLDIyIEBAIHZvaWQgU3luY2hyb25pemVyOjpzbG90VGFza0ZpbmlzaGVk KEtKb2IgKmpvYikKIAogICAgIHN3aXRjaCAoaXRlbS0+dGFzaygpKSB7CiAgICAgY2FzZSBUVF9D T1BZX1RPX0xFRlQ6Ci0gICAgICAgIGxlZnRDb3B5TnIrKzsKLSAgICAgICAgbGVmdENvcHlTaXpl ICs9IGl0ZW0tPnJpZ2h0U2l6ZSgpIC0gcmVjZWl2ZWRTaXplOworICAgICAgICBtX2xlZnRDb3B5 TnIrKzsKKyAgICAgICAgbV9sZWZ0Q29weVNpemUgKz0gaXRlbS0+cmlnaHRTaXplKCkgLSByZWNl aXZlZFNpemU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVFRfQ09QWV9UT19SSUdIVDoKLSAg ICAgICAgcmlnaHRDb3B5TnIrKzsKLSAgICAgICAgcmlnaHRDb3B5U2l6ZSArPSBpdGVtLT5sZWZ0 U2l6ZSgpIC0gcmVjZWl2ZWRTaXplOworICAgICAgICBtX3JpZ2h0Q29weU5yKys7CisgICAgICAg IG1fcmlnaHRDb3B5U2l6ZSArPSBpdGVtLT5sZWZ0U2l6ZSgpIC0gcmVjZWl2ZWRTaXplOwogICAg ICAgICBicmVhazsKICAgICBjYXNlIFRUX0RFTEVURToKLSAgICAgICAgZGVsZXRlTnIrKzsKKyAg ICAgICAgbV9kZWxldGVOcisrOwogICAgICAgICBkZWxldGVTaXplICs9IGl0ZW0tPmxlZnRTaXpl KCkgLSByZWNlaXZlZFNpemU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAg IGJyZWFrOwogICAgIH0KIAotICAgIGVtaXQgcHJvY2Vzc2VkU2l6ZXMobGVmdENvcHlOciwgbGVm dENvcHlTaXplLCByaWdodENvcHlOciwgcmlnaHRDb3B5U2l6ZSwgZGVsZXRlTnIsIGRlbGV0ZVNp emUpOworICAgIGVtaXQgcHJvY2Vzc2VkU2l6ZXMobV9sZWZ0Q29weU5yLCBtX2xlZnRDb3B5U2l6 ZSwgbV9yaWdodENvcHlOciwgbV9yaWdodENvcHlTaXplLCBtX2RlbGV0ZU5yLCBkZWxldGVTaXpl KTsKIAogICAgIGlmICgtLWluVGFza0ZpbmlzaGVkID09IDApIHsKICAgICAgICAgaWYgKHBhdXNl ZCkKQEAgLTE0NzEsNyArMTQ3MSw3IEBAIHZvaWQgU3luY2hyb25pemVyOjpzbG90UHJvY2Vzc2Vk U2l6ZShLSm9iICpqb2IsIHF1bG9uZ2xvbmcgc2l6ZSkKICAgICAgICAgYnJlYWs7CiAgICAgfQog Ci0gICAgZW1pdCBwcm9jZXNzZWRTaXplcyhsZWZ0Q29weU5yLCBsZWZ0Q29weVNpemUgKz0gZGws IHJpZ2h0Q29weU5yLCByaWdodENvcHlTaXplICs9IGRyLCBkZWxldGVOciwgZGVsZXRlU2l6ZSAr PSBkZCk7CisgICAgZW1pdCBwcm9jZXNzZWRTaXplcyhtX2xlZnRDb3B5TnIsIG1fbGVmdENvcHlT aXplICs9IGRsLCBtX3JpZ2h0Q29weU5yLCBtX3JpZ2h0Q29weVNpemUgKz0gZHIsIG1fZGVsZXRl TnIsIGRlbGV0ZVNpemUgKz0gZGQpOwogfQogCiB2b2lkIFN5bmNocm9uaXplcjo6cGF1c2UoKQpk aWZmIC0tZ2l0IGEvYXBwL1N5bmNocm9uaXplci9zeW5jaHJvbml6ZXIuaCBiL2FwcC9TeW5jaHJv bml6ZXIvc3luY2hyb25pemVyLmgKaW5kZXggZGI2MmY0MzI1Li5hNTIxYTk4ZWQgMTAwNjQ0Ci0t LSBhL2FwcC9TeW5jaHJvbml6ZXIvc3luY2hyb25pemVyLmgKKysrIGIvYXBwL1N5bmNocm9uaXpl ci9zeW5jaHJvbml6ZXIuaApAQCAtMjA0LDcgKzIwNCw3IEBAIHByb3RlY3RlZDoKICAgICBRU3Ry aW5nIGxlZnRCYXNlRGlyOyAvLyB0aGUgbGVmdC1zaWRlIGJhc2UgZGlyZWN0b3J5CiAgICAgUVN0 cmluZyByaWdodEJhc2VEaXI7IC8vIHRoZSByaWdodC1zaWRlIGJhc2UgZGlyZWN0b3J5CiAgICAg UVN0cmluZ0xpc3QgZXhjbHVkZWRQYXRoczsgLy8gbGlzdCBvZiB0aGUgZXhjbHVkZWQgcGF0aHMK LSAgICBLclF1ZXJ5ICpxdWVyeTsgLy8gdGhlIGZpbHRlciB1c2VkIGZvciB0aGUgcXVlcnkKKyAg ICBLclF1ZXJ5ICptX3F1ZXJ5OyAvLyB0aGUgZmlsdGVyIHVzZWQgZm9yIHRoZSBxdWVyeQogICAg IGJvb2wgc3RvcHBlZDsgLy8gJ1N0b3AnIGJ1dHRvbiB3YXMgcHJlc3NlZAogCiAgICAgaW50IGVx dWFsc1RocmVzaG9sZDsgLy8gdGhyZXNob2xkIHRvIHRyZWF0IGZpbGVzIGVxdWFsCkBAIC0yMTks MjAgKzIxOSwyMCBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtYXJrRHVwbGljYXRlczsgLy8gc2hv dyB0aGUgZHVwbGljYXRlZCBpdGVtcwogICAgIGJvb2wgbWFya1NpbmdsZXM7IC8vIHNob3cgdGhl IHNpbmdsZSBpdGVtcwogCi0gICAgYm9vbCBsZWZ0Q29weUVuYWJsZWQ7IC8vIGNvcHkgdG8gbGVm dCBpcyBlbmFibGVkIGF0IHN5bmNocm9uaXplCi0gICAgYm9vbCByaWdodENvcHlFbmFibGVkOyAv LyBjb3B5IHRvIHJpZ2h0IGlzIGVuYWJsZWQgYXQgc3luY2hyb25pemUKLSAgICBib29sIGRlbGV0 ZUVuYWJsZWQ7IC8vIGRlbGV0ZSBpcyBlbmFibGVkIGF0IHN5bmNocm9uaXplCi0gICAgYm9vbCBv dmVyV3JpdGU7IC8vIG92ZXJ3cml0ZSBvciBxdWVyeSBlYWNoIG1vZGlmaWNhdGlvbgorICAgIGJv b2wgbV9sZWZ0Q29weUVuYWJsZWQ7IC8vIGNvcHkgdG8gbGVmdCBpcyBlbmFibGVkIGF0IHN5bmNo cm9uaXplCisgICAgYm9vbCBtX3JpZ2h0Q29weUVuYWJsZWQ7IC8vIGNvcHkgdG8gcmlnaHQgaXMg ZW5hYmxlZCBhdCBzeW5jaHJvbml6ZQorICAgIGJvb2wgbV9kZWxldGVFbmFibGVkOyAvLyBkZWxl dGUgaXMgZW5hYmxlZCBhdCBzeW5jaHJvbml6ZQorICAgIGJvb2wgbV9vdmVyV3JpdGU7IC8vIG92 ZXJ3cml0ZSBvciBxdWVyeSBlYWNoIG1vZGlmaWNhdGlvbgogICAgIGJvb2wgYXV0b1NraXA7IC8v IGF1dG9tYXRpYyBza2lwcGluZwogICAgIGJvb2wgcGF1c2VkOyAvLyBwYXVzZSBmbGFnCiAgICAg Ym9vbCBkaXNhYmxlTmV3VGFza3M7IC8vIGF0IG1rZGlyIHRoZSBmdXJ0aGVyIHRhc2sgY3JlYXRp b24gaXMgZGlzYWJsZWQKIAotICAgIGludCBsZWZ0Q29weU5yOyAvLyB0aGUgZmlsZSBudW1iZXIg Y29waWVkIHRvIGxlZnQKLSAgICBpbnQgcmlnaHRDb3B5TnI7IC8vIHRoZSBmaWxlIG51bWJlciBj b3BpZWQgdG8gcmlnaHQKLSAgICBpbnQgZGVsZXRlTnI7IC8vIHRoZSBudW1iZXIgb2YgdGhlIGRl bGV0ZWQgZmlsZXMKKyAgICBpbnQgbV9sZWZ0Q29weU5yOyAvLyB0aGUgZmlsZSBudW1iZXIgY29w aWVkIHRvIGxlZnQKKyAgICBpbnQgbV9yaWdodENvcHlOcjsgLy8gdGhlIGZpbGUgbnVtYmVyIGNv cGllZCB0byByaWdodAorICAgIGludCBtX2RlbGV0ZU5yOyAvLyB0aGUgbnVtYmVyIG9mIHRoZSBk ZWxldGVkIGZpbGVzCiAgICAgaW50IHBhcmFsbGVsVGhyZWFkczsgLy8gdGhlIG51bWJlciBvZiB0 aGUgcGFyYWxsZWwgcHJvY2Vzc2luZyB0aHJlYWRzCi0gICAgS0lPOjpmaWxlc2l6ZV90IGxlZnRD b3B5U2l6ZTsgLy8gdGhlIHRvdGFsIHNpemUgY29waWVkIHRvIGxlZnQKLSAgICBLSU86OmZpbGVz aXplX3QgcmlnaHRDb3B5U2l6ZTsgLy8gdGhlIHRvdGFsIHNpemUgY29waWVkIHRvIHJpZ2h0Cisg ICAgS0lPOjpmaWxlc2l6ZV90IG1fbGVmdENvcHlTaXplOyAvLyB0aGUgdG90YWwgc2l6ZSBjb3Bp ZWQgdG8gbGVmdAorICAgIEtJTzo6ZmlsZXNpemVfdCBtX3JpZ2h0Q29weVNpemU7IC8vIHRoZSB0 b3RhbCBzaXplIGNvcGllZCB0byByaWdodAogICAgIEtJTzo6ZmlsZXNpemVfdCBkZWxldGVTaXpl OyAvLyB0aGUgc2l6ZSBvZiB0aGUgZGVsZXRlZCBmaWxlcwogCiAgICAgaW50IGNvbXBhcmVkRGly czsgLy8gdGhlIG51bWJlciBvZiB0aGUgY29tcGFyZWQgZGlyZWN0b3JpZXMKZGlmZiAtLWdpdCBh L2FwcC9TeW5jaHJvbml6ZXIvc3luY2hyb25pemVydGFzay5jcHAgYi9hcHAvU3luY2hyb25pemVy L3N5bmNocm9uaXplcnRhc2suY3BwCmluZGV4IGEyNTdmYjY1ZS4uOGY3YTM2N2I4IDEwMDY0NAot LS0gYS9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suY3BwCisrKyBiL2FwcC9TeW5j aHJvbml6ZXIvc3luY2hyb25pemVydGFzay5jcHAKQEAgLTY4LDEyICs2OCwxMiBAQCB2b2lkIENv bXBhcmVUYXNrOjpzdGFydCgpCiAgICAgICAgIG1fc3RhdGUgPSBTVF9TVEFURV9QRU5ESU5HOwog ICAgICAgICBtX2xvYWRGaW5pc2hlZCA9IG1fb3RoZXJMb2FkRmluaXNoZWQgPSBmYWxzZTsKIAot ICAgICAgICBtX2Rpckxpc3QgPSBuZXcgU3luY2hyb25pemVyRGlyTGlzdChwYXJlbnRXaWRnZXQs IGlnbm9yZUhpZGRlbik7CisgICAgICAgIG1fZGlyTGlzdCA9IG5ldyBTeW5jaHJvbml6ZXJEaXJM aXN0KG1fcGFyZW50V2lkZ2V0LCBpZ25vcmVIaWRkZW4pOwogICAgICAgICBjb25uZWN0KG1fZGly TGlzdCwgJlN5bmNocm9uaXplckRpckxpc3Q6OmZpbmlzaGVkLCB0aGlzLCAmQ29tcGFyZVRhc2s6 OnNsb3RGaW5pc2hlZCk7CiAgICAgICAgIG1fZGlyTGlzdC0+bG9hZChtX3VybCwgZmFsc2UpOwog CiAgICAgICAgIGlmIChtX2R1cGxpY2F0ZSkgewotICAgICAgICAgICAgbV9vdGhlckRpckxpc3Qg PSBuZXcgU3luY2hyb25pemVyRGlyTGlzdChwYXJlbnRXaWRnZXQsIGlnbm9yZUhpZGRlbik7Cisg ICAgICAgICAgICBtX290aGVyRGlyTGlzdCA9IG5ldyBTeW5jaHJvbml6ZXJEaXJMaXN0KG1fcGFy ZW50V2lkZ2V0LCBpZ25vcmVIaWRkZW4pOwogICAgICAgICAgICAgY29ubmVjdChtX290aGVyRGly TGlzdCwgJlN5bmNocm9uaXplckRpckxpc3Q6OmZpbmlzaGVkLCB0aGlzLCAmQ29tcGFyZVRhc2s6 OnNsb3RPdGhlckZpbmlzaGVkKTsKICAgICAgICAgICAgIG1fb3RoZXJEaXJMaXN0LT5sb2FkKG1f b3RoZXJVcmwsIGZhbHNlKTsKICAgICAgICAgfQpAQCAtMTQxLDE0ICsxNDEsMTQgQEAgdm9pZCBD b21wYXJlQ29udGVudFRhc2s6OnN0YXJ0KCkKICAgICBpZiAobGVmdFVSTC5pc0xvY2FsRmlsZSgp ICYmIHJpZ2h0VVJMLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgbGVmdEZpbGUgPSBuZXcgUUZp bGUobGVmdFVSTC5wYXRoKCkpOwogICAgICAgICBpZiAoIWxlZnRGaWxlLT5vcGVuKFFJT0Rldmlj ZTo6UmVhZE9ubHkpKSB7Ci0gICAgICAgICAgICBLTWVzc2FnZUJveDo6ZXJyb3IocGFyZW50V2lk Z2V0LCBpMThuKCJFcnJvciBhdCBvcGVuaW5nICUxLiIsIGxlZnRVUkwucGF0aCgpKSk7CisgICAg ICAgICAgICBLTWVzc2FnZUJveDo6ZXJyb3IobV9wYXJlbnRXaWRnZXQsIGkxOG4oIkVycm9yIGF0 IG9wZW5pbmcgJTEuIiwgbGVmdFVSTC5wYXRoKCkpKTsKICAgICAgICAgICAgIG1fc3RhdGUgPSBT VF9TVEFURV9FUlJPUjsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg IHJpZ2h0RmlsZSA9IG5ldyBRRmlsZShyaWdodFVSTC5wYXRoKCkpOwogICAgICAgICBpZiAoIXJp Z2h0RmlsZS0+b3BlbihRSU9EZXZpY2U6OlJlYWRPbmx5KSkgewotICAgICAgICAgICAgS01lc3Nh Z2VCb3g6OmVycm9yKHBhcmVudFdpZGdldCwgaTE4bigiRXJyb3IgYXQgb3BlbmluZyAlMS4iLCBy aWdodFVSTC5wYXRoKCkpKTsKKyAgICAgICAgICAgIEtNZXNzYWdlQm94OjplcnJvcihtX3BhcmVu dFdpZGdldCwgaTE4bigiRXJyb3IgYXQgb3BlbmluZyAlMS4iLCByaWdodFVSTC5wYXRoKCkpKTsK ICAgICAgICAgICAgIG1fc3RhdGUgPSBTVF9TVEFURV9FUlJPUjsKICAgICAgICAgICAgIHJldHVy bjsKICAgICAgICAgfQpAQCAtMTg0LDggKzE4NCw4IEBAIHZvaWQgQ29tcGFyZUNvbnRlbnRUYXNr Ojpsb2NhbEZpbGVDb21wYXJlQ3ljbGUoKQogICAgIGNoYXIgbGVmdEJ1ZmZlclsxNDQwXTsKICAg ICBjaGFyIHJpZ2h0QnVmZmVyWzE0NDBdOwogCi0gICAgUUVsYXBzZWRUaW1lciB0aW1lcjsKLSAg ICB0aW1lci5zdGFydCgpOworICAgIFFFbGFwc2VkVGltZXIgbG9jYWxUaW1lcjsKKyAgICBsb2Nh bFRpbWVyLnN0YXJ0KCk7CiAKICAgICBpbnQgY250ID0gMDsKIApAQCAtMjA4LDcgKzIwOCw3IEBA IHZvaWQgQ29tcGFyZUNvbnRlbnRUYXNrOjpsb2NhbEZpbGVDb21wYXJlQ3ljbGUoKQogICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKCsrY250ICUgMTYpID09IDAg JiYgdGltZXIuZWxhcHNlZCgpID49IDI1MCkKKyAgICAgICAgaWYgKCgrK2NudCAlIDE2KSA9PSAw ICYmIGxvY2FsVGltZXIuZWxhcHNlZCgpID49IDI1MCkKICAgICAgICAgICAgIGJyZWFrOwogICAg IH0KIApAQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgQ29tcGFyZUNvbnRlbnRUYXNrOjpzbG90Rmlu aXNoZWQoS0pvYiAqam9iKQogCiAgICAgaWYgKGpvYi0+ZXJyb3IoKSAmJiBqb2ItPmVycm9yKCkg IT0gS0lPOjpFUlJfVVNFUl9DQU5DRUxFRCAmJiAhZXJyb3JQcmludGVkKSB7CiAgICAgICAgIGVy cm9yUHJpbnRlZCA9IHRydWU7Ci0gICAgICAgIEtNZXNzYWdlQm94OjplcnJvcihwYXJlbnRXaWRn ZXQsCisgICAgICAgIEtNZXNzYWdlQm94OjplcnJvcihtX3BhcmVudFdpZGdldCwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGkxOG4oIkkvTyBlcnJvciB3aGlsZSBjb21wYXJpbmcgZmlsZSAl MSB3aXRoICUyLiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZnRVUkwudG9E aXNwbGF5U3RyaW5nKFFVcmw6OlByZWZlckxvY2FsRmlsZSksCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHJpZ2h0VVJMLnRvRGlzcGxheVN0cmluZyhRVXJsOjpQcmVmZXJMb2NhbEZp bGUpKSk7CmRpZmYgLS1naXQgYS9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suaCBi L2FwcC9TeW5jaHJvbml6ZXIvc3luY2hyb25pemVydGFzay5oCmluZGV4IDZiMTg4MTU2Yy4uZmIy OTRiOThlIDEwMDY0NAotLS0gYS9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suaAor KysgYi9hcHAvU3luY2hyb25pemVyL3N5bmNocm9uaXplcnRhc2suaApAQCAtNDAsNyArNDAsNyBA QCBwdWJsaWM6CiAKICAgICBpbmxpbmUgaW50IHN0YXJ0KFFXaWRnZXQgKnBhcmVudFdpZGdldCkK ICAgICB7Ci0gICAgICAgIHRoaXMtPnBhcmVudFdpZGdldCA9IHBhcmVudFdpZGdldDsKKyAgICAg ICAgdGhpcy0+bV9wYXJlbnRXaWRnZXQgPSBwYXJlbnRXaWRnZXQ7CiAgICAgICAgIHN0YXJ0KCk7 CiAgICAgICAgIHJldHVybiBzdGF0ZSgpOwogICAgIH0KQEAgLTcyLDcgKzcyLDcgQEAgcHJvdGVj dGVkOgogICAgIH0KICAgICBpbnQgbV9zdGF0ZTsKICAgICBRU3RyaW5nIG1fc3RhdHVzTWVzc2Fn ZTsKLSAgICBRV2lkZ2V0ICpwYXJlbnRXaWRnZXQ7CisgICAgUVdpZGdldCAqbV9wYXJlbnRXaWRn ZXQ7CiB9OwogCiBjbGFzcyBDb21wYXJlVGFzayA6IHB1YmxpYyBTeW5jaHJvbml6ZXJUYXNrCmRp ZmYgLS1naXQgYS9hcHAvaWNvbi5jcHAgYi9hcHAvaWNvbi5jcHAKaW5kZXggMjIxOGQwYjYxLi5i ZDE0NjkzYmYgMTAwNjQ0Ci0tLSBhL2FwcC9pY29uLmNwcAorKysgYi9hcHAvaWNvbi5jcHAKQEAg LTkxLDkgKzkxLDkgQEAgc3RydWN0IEljb25TZWFyY2hSZXN1bHQgewogICAgIFFJY29uIGljb247 IC8vLzwgaWNvbiByZXR1cm5lZCBieSBzZWFyY2g7IG51bGwgaWNvbiBpZiBub3QgZm91bmQKICAg ICBRU3RyaW5nIG9yaWdpbmFsVGhlbWVOYW1lOyAvLy88IG9yaWdpbmFsIHRoZW1lIG5hbWUgaWYg dGhlbWUgaXMgbW9kaWZpZWQgYnkgc2VhcmNoCiAKLSAgICBJY29uU2VhcmNoUmVzdWx0KFFJY29u IGljb24sIFFTdHJpbmcgb3JpZ2luYWxUaGVtZU5hbWUpCi0gICAgICAgIDogaWNvbihzdGQ6Om1v dmUoaWNvbikpCi0gICAgICAgICwgb3JpZ2luYWxUaGVtZU5hbWUoc3RkOjptb3ZlKG9yaWdpbmFs VGhlbWVOYW1lKSkKKyAgICBJY29uU2VhcmNoUmVzdWx0KFFJY29uIGluaXRJY29uLCBRU3RyaW5n IGluaXRPcmlnaW5hbFRoZW1lTmFtZSkKKyAgICAgICAgOiBpY29uKHN0ZDo6bW92ZShpbml0SWNv bikpCisgICAgICAgICwgb3JpZ2luYWxUaGVtZU5hbWUoc3RkOjptb3ZlKGluaXRPcmlnaW5hbFRo ZW1lTmFtZSkpCiAgICAgewogICAgIH0KIH07CkBAIC0xODgsMTkgKzE4OCwyNSBAQCBjbGFzcyBJ Y29uQ2FjaGVLZXkKIHsKIHB1YmxpYzoKICAgICBJY29uQ2FjaGVLZXkoY29uc3QgUVN0cmluZyAm bmFtZSwgY29uc3QgUVN0cmluZ0xpc3QgJm92ZXJsYXlzLCBjb25zdCBRU2l6ZSAmc2l6ZSwgUUlj b246Ok1vZGUgbW9kZSwgUUljb246OlN0YXRlIHN0YXRlKQotICAgICAgICA6IG5hbWUobmFtZSkK LSAgICAgICAgLCBvdmVybGF5cyhvdmVybGF5cykKLSAgICAgICAgLCBzaXplKHNpemUpCi0gICAg ICAgICwgbW9kZShtb2RlKQotICAgICAgICAsIHN0YXRlKHN0YXRlKQorICAgICAgICA6IG1fbmFt ZShuYW1lKQorICAgICAgICAsIG1fb3ZlcmxheXMob3ZlcmxheXMpCisgICAgICAgICwgbV9zaXpl KHNpemUpCisgICAgICAgICwgbV9tb2RlKG1vZGUpCisgICAgICAgICwgbV9zdGF0ZShzdGF0ZSkK ICAgICB7Ci0gICAgICAgIGF1dG8gcmVwciA9IFFTdHJpbmcoIiUxIFslMl0gJTN4JTQgJTUgJTYi KS5hcmcobmFtZSkuYXJnKG92ZXJsYXlzLmpvaW4oJzsnKSkuYXJnKHNpemUud2lkdGgoKSkuYXJn KHNpemUuaGVpZ2h0KCkpLmFyZygoaW50KW1vZGUpLmFyZygoaW50KXN0YXRlKTsKKyAgICAgICAg YXV0byByZXByID0gUVN0cmluZygiJTEgWyUyXSAlM3glNCAlNSAlNiIpCisgICAgICAgICAgICAg ICAgICAgICAgICAuYXJnKG5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAuYXJnKG92ZXJs YXlzLmpvaW4oJzsnKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC5hcmcoc2l6ZS53aWR0aCgp KQorICAgICAgICAgICAgICAgICAgICAgICAgLmFyZyhzaXplLmhlaWdodCgpKQorICAgICAgICAg ICAgICAgICAgICAgICAgLmFyZyhzdGF0aWNfY2FzdDxpbnQ+KG1vZGUpKQorICAgICAgICAgICAg ICAgICAgICAgICAgLmFyZyhzdGF0aWNfY2FzdDxpbnQ+KHN0YXRlKSk7CiAgICAgICAgIF9oYXNo ID0gcUhhc2gocmVwcik7CiAgICAgfQogCiAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEljb25D YWNoZUtleSAmeCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBuYW1lID09IHgubmFtZSAm JiBvdmVybGF5cyA9PSB4Lm92ZXJsYXlzICYmIHNpemUgPT0geC5zaXplICYmIG1vZGUgPT0geC5t b2RlICYmIHN0YXRlID09IHguc3RhdGU7CisgICAgICAgIHJldHVybiBtX25hbWUgPT0geC5tX25h bWUgJiYgbV9vdmVybGF5cyA9PSB4Lm1fb3ZlcmxheXMgJiYgbV9zaXplID09IHgubV9zaXplICYm IG1fbW9kZSA9PSB4Lm1fbW9kZSAmJiBtX3N0YXRlID09IHgubV9zdGF0ZTsKICAgICB9CiAKICAg ICBzaXplX3QgaGFzaCgpIGNvbnN0CkBAIC0yMDgsMTEgKzIxNCwxMSBAQCBwdWJsaWM6CiAgICAg ICAgIHJldHVybiBfaGFzaDsKICAgICB9CiAKLSAgICBRU3RyaW5nIG5hbWU7Ci0gICAgUVN0cmlu Z0xpc3Qgb3ZlcmxheXM7Ci0gICAgUVNpemUgc2l6ZTsKLSAgICBRSWNvbjo6TW9kZSBtb2RlOwot ICAgIFFJY29uOjpTdGF0ZSBzdGF0ZTsKKyAgICBRU3RyaW5nIG1fbmFtZTsKKyAgICBRU3RyaW5n TGlzdCBtX292ZXJsYXlzOworICAgIFFTaXplIG1fc2l6ZTsKKyAgICBRSWNvbjo6TW9kZSBtX21v ZGU7CisgICAgUUljb246OlN0YXRlIG1fc3RhdGU7CiAKIHByaXZhdGU6CiAgICAgc2l6ZV90IF9o YXNoOwpkaWZmIC0tZ2l0IGEvYXBwL2tyZGVidWdsb2dnZXIuY3BwIGIvYXBwL2tyZGVidWdsb2dn ZXIuY3BwCmluZGV4IDkwMTVhMmJhYi4uYzM3OTM4Yjg5IDEwMDY0NAotLS0gYS9hcHAva3JkZWJ1 Z2xvZ2dlci5jcHAKKysrIGIvYXBwL2tyZGVidWdsb2dnZXIuY3BwCkBAIC0yMSwxMiArMjEsMTAg QEAgS3JEZWJ1Z0xvZ2dlcjo6S3JEZWJ1Z0xvZ2dlcigpCiAKIFFTdHJpbmcgS3JEZWJ1Z0xvZ2dl cjo6aW5kZW50ZWRDb2RlUG9pbnQoY29uc3QgUVN0cmluZyAmZnVuY3Rpb25OYW1lLCBpbnQgbGlu ZSwgY29uc3QgUVN0cmluZyAmaW5kZW50YXRpb25TeW1ib2wpIGNvbnN0CiB7Ci0gICAgUVN0cmlu ZyByZXN1bHQgPSBRU3RyaW5nKGluZGVudGF0aW9uLCAnICcpICUgIC8vIEFwcGxpZXMgdGhlIGlu ZGVudGF0aW9uIGxldmVsIHRvIG1ha2UgbG9ncyBjbGVhcmVyCi0gICAgICAgICAgICAgICAgICAg ICBpbmRlbnRhdGlvblN5bWJvbCAlIGZ1bmN0aW9uTmFtZTsgIC8vIFVzZXMgUVN0cmluZ0J1aWxk ZXIgdG8gY29uY2F0ZW5hdGUKKyAgICBRU3RyaW5nIHJlc3VsdCA9IFFTdHJpbmcoaW5kZW50YXRp b24sICcgJykgJSAvLyBBcHBsaWVzIHRoZSBpbmRlbnRhdGlvbiBsZXZlbCB0byBtYWtlIGxvZ3Mg Y2xlYXJlcgorICAgICAgICBpbmRlbnRhdGlvblN5bWJvbCAlIGZ1bmN0aW9uTmFtZTsgLy8gVXNl cyBRU3RyaW5nQnVpbGRlciB0byBjb25jYXRlbmF0ZQogICAgIGlmICghYnJpZWZNb2RlKQotICAg ICAgICByZXN1bHQgPSBRU3RyaW5nKCJQaWQ6JTEgIikuYXJnKGdldHBpZCgpKSAlCi0gICAgICAg ICAgICAgICAgcmVzdWx0ICUKLSAgICAgICAgICAgICAgICAobGluZSAhPSAwID8gUVN0cmluZygi KCUxKSIpLmFyZyhsaW5lKSA6ICIiKTsKKyAgICAgICAgcmVzdWx0ID0gUVN0cmluZygiUGlkOiUx ICIpLmFyZyhnZXRwaWQoKSkgJSByZXN1bHQgJSAobGluZSAhPSAwID8gUVN0cmluZygiKCUxKSIp LmFyZyhsaW5lKSA6ICIiKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NCw4ICs0Miw4 IEBAIHZvaWQgS3JEZWJ1Z0xvZ2dlcjo6aW5jcmVhc2VJbmRlbnRhdGlvbigpCiAvLyBNZW1iZXIg ZnVuY3Rpb25zIG9mIHRoZSBLckRlYnVnRnVuY3Rpb25Mb2dnZXIgY2xhc3MKIC8vIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1LckRlYnVnRnVuY3Rpb25Mb2dnZXI6OktyRGVidWdG dW5jdGlvbkxvZ2dlcihjb25zdCBRU3RyaW5nICZmdW5jdGlvbk5hbWUsIGludCBsaW5lKSA6Ci0g ICAgZnVuY3Rpb25OYW1lKGZ1bmN0aW9uTmFtZSkKK0tyRGVidWdGdW5jdGlvbkxvZ2dlcjo6S3JE ZWJ1Z0Z1bmN0aW9uTG9nZ2VyKGNvbnN0IFFTdHJpbmcgJmZ1bmN0aW9uTmFtZSwgaW50IGxpbmUp CisgICAgOiBtX2Z1bmN0aW9uTmFtZShmdW5jdGlvbk5hbWUpCiB7CiAgICAgLy8gU2hvd3MgdGhh dCBhIGZ1bmN0aW9uIGhhcyBiZWVuIHN0YXJ0ZWQKICAgICBxRGVidWcoKS5ub3NwYWNlKCkubm9x dW90ZSgpIDw8IGtyRGVidWdMb2dnZXIuaW5kZW50ZWRDb2RlUG9pbnQoZnVuY3Rpb25OYW1lLCBs aW5lLCAi4pSPIik7CkBAIC01Nyw1ICs1NSw1IEBAIEtyRGVidWdGdW5jdGlvbkxvZ2dlcjo6fkty RGVidWdGdW5jdGlvbkxvZ2dlcigpCiB7CiAgICAga3JEZWJ1Z0xvZ2dlci5kZWNyZWFzZUluZGVu dGF0aW9uKCk7CiAgICAgLy8gU2hvd3MgdGhhdCBhIGZ1bmN0aW9uIGlzIGdvaW5nIHRvIGZpbmlz aAotICAgIHFEZWJ1ZygpLm5vc3BhY2UoKS5ub3F1b3RlKCkgPDwga3JEZWJ1Z0xvZ2dlci5pbmRl bnRlZENvZGVQb2ludChmdW5jdGlvbk5hbWUsIDAsICLilJciKTsKKyAgICBxRGVidWcoKS5ub3Nw YWNlKCkubm9xdW90ZSgpIDw8IGtyRGVidWdMb2dnZXIuaW5kZW50ZWRDb2RlUG9pbnQobV9mdW5j dGlvbk5hbWUsIDAsICLilJciKTsKIH0KZGlmZiAtLWdpdCBhL2FwcC9rcmRlYnVnbG9nZ2VyLmgg Yi9hcHAva3JkZWJ1Z2xvZ2dlci5oCmluZGV4IDQ5MDFjYmRiYS4uZWYwYjQ2YWFiIDEwMDY0NAot LS0gYS9hcHAva3JkZWJ1Z2xvZ2dlci5oCisrKyBiL2FwcC9rcmRlYnVnbG9nZ2VyLmgKQEAgLTU4 LDcgKzU4LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIC8vISBUaGUgbmFtZSBvZiBhIGZ1 bmN0aW9uIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHdyaXR0ZW4gYWJvdXQKLSAgICBRU3RyaW5nIGZ1 bmN0aW9uTmFtZTsKKyAgICBRU3RyaW5nIG1fZnVuY3Rpb25OYW1lOwogfTsKIAogLy8gLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NCwxMCArNzQsOCBAQCBleHRlcm4gS3JEZWJ1 Z0xvZ2dlciBrckRlYnVnTG9nZ2VyOwogICAgIGNhdXNlZCB0aGF0IHdoZW4gdGhlIG9iamVjdCBp cyBkZXN0cm95ZWQgKGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzIGZpbmlzaGVkKSB0aGUgZGVzdHJ1 Y3RvciBzaG93cwogICAgIG90aGVyIGluZm9ybWF0aW9uICh1c2VmdWwgdG8ga25vdyBlLmcuIHRo YXQgdGhlIGZ1bmN0aW9uIGhhcyBmaW5pc2hlZCkKICovCi0jZGVmaW5lIEtSRlVOQyBcCi0gICAg S3JEZWJ1Z0Z1bmN0aW9uTG9nZ2VyIGZ1bmN0aW9uTG9nZ2VyKF9fRlVOQ1RJT05fXywgX19MSU5F X18pOworI2RlZmluZSBLUkZVTkMgS3JEZWJ1Z0Z1bmN0aW9uTG9nZ2VyIGZ1bmN0aW9uTG9nZ2Vy KF9fRlVOQ1RJT05fXywgX19MSU5FX18pOwogCi0jZGVmaW5lIEtSREVCVUcoLi4uKSBcCi0gICAg cURlYnVnKCkubm9zcGFjZSgpLm5vcXVvdGUoKSA8PCBrckRlYnVnTG9nZ2VyLmluZGVudGVkQ29k ZVBvaW50KF9fRlVOQ1RJT05fXywgX19MSU5FX18pIDw8ICI6ICIgPDwgX19WQV9BUkdTX187Cisj ZGVmaW5lIEtSREVCVUcoLi4uKSBxRGVidWcoKS5ub3NwYWNlKCkubm9xdW90ZSgpIDw8IGtyRGVi dWdMb2dnZXIuaW5kZW50ZWRDb2RlUG9pbnQoX19GVU5DVElPTl9fLCBfX0xJTkVfXykgPDwgIjog IiA8PCBfX1ZBX0FSR1NfXzsKIAogI2VuZGlmIC8vIEtSREVCVUdMT0dHRVJfSApkaWZmIC0tZ2l0 IGEvYXBwL2tydXNhZGVyLmNwcCBiL2FwcC9rcnVzYWRlci5jcHAKaW5kZXggNjIxOGQyYTFhLi5h MzJjYmY3NDQgMTAwNjQ0Ci0tLSBhL2FwcC9rcnVzYWRlci5jcHAKKysrIGIvYXBwL2tydXNhZGVy LmNwcApAQCAtNjMsOCArNjMsOCBAQAogI2luY2x1ZGUgIkdVSS9rcnVzYWRlcnN0YXR1cy5oIgog I2luY2x1ZGUgIkdVSS90ZXJtaW5hbGRvY2suaCIKICNpbmNsdWRlICJKb2JNYW4vam9ibWFuLmgi Ci0jaW5jbHVkZSAiS3JWaWV3ZXIva3J2aWV3ZXIuaCIKICNpbmNsdWRlICJLb25maWd1cmF0b3Iv a2dwcm90b2NvbHMuaCIKKyNpbmNsdWRlICJLclZpZXdlci9rcnZpZXdlci5oIgogI2luY2x1ZGUg Ik1vdW50TWFuL2ttb3VudG1hbi5oIgogI2luY2x1ZGUgIlBhbmVsL1BhbmVsVmlldy9rcnZpZXcu aCIKICNpbmNsdWRlICJQYW5lbC9QYW5lbFZpZXcva3J2aWV3ZmFjdG9yeS5oIgpAQCAtNTg5LDE4 ICs1ODksMTggQEAgdm9pZCBLcnVzYWRlcjo6ZG9PcGVuVXJsKCkKICAgICAgICAgQUNUSVZFX01O Ry0+c2xvdE5ld1RhYih1cmwpOwogfQogCi12b2lkIEtydXNhZGVyOjpzbG90R290TmV3U3RhcnR1 cChjb25zdCBLU3RhcnR1cEluZm9JZCAmaWQsIGNvbnN0IEtTdGFydHVwSW5mb0RhdGEgJmRhdGEp Cit2b2lkIEtydXNhZGVyOjpzbG90R290TmV3U3RhcnR1cChjb25zdCBLU3RhcnR1cEluZm9JZCAm aWQsIGNvbnN0IEtTdGFydHVwSW5mb0RhdGEgJmluZm9EYXRhKQogewogICAgIFFfVU5VU0VEKGlk KQotICAgIFFfVU5VU0VEKGRhdGEpCisgICAgUV9VTlVTRUQoaW5mb0RhdGEpCiAgICAgLy8gVGhp cyBpcyBoZXJlIHRvIHNob3cgYnVzeSBtb3VzZSBjdXJzb3Igd2hlbiBfb3RoZXJfIGFwcGxpY2F0 aW9ucyBhcmUgbGF1bmNoZWQsIG5vdCBmb3Iga3J1c2FkZXIgaXRzZWxmLgogICAgIHFBcHAtPnNl dE92ZXJyaWRlQ3Vyc29yKFF0OjpCdXN5Q3Vyc29yKTsKIH0KIAotdm9pZCBLcnVzYWRlcjo6c2xv dEdvdFJlbW92ZVN0YXJ0dXAoY29uc3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25zdCBLU3RhcnR1 cEluZm9EYXRhICZkYXRhKQordm9pZCBLcnVzYWRlcjo6c2xvdEdvdFJlbW92ZVN0YXJ0dXAoY29u c3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25zdCBLU3RhcnR1cEluZm9EYXRhICZpbmZvRGF0YSkK IHsKICAgICBRX1VOVVNFRChpZCkKLSAgICBRX1VOVVNFRChkYXRhKQorICAgIFFfVU5VU0VEKGlu Zm9EYXRhKQogICAgIHFBcHAtPnJlc3RvcmVPdmVycmlkZUN1cnNvcigpOwogfQogCmRpZmYgLS1n aXQgYS9hcHAva3J1c2FkZXIuaCBiL2FwcC9rcnVzYWRlci5oCmluZGV4IDllOGRjMWI3Zi4uMjIw Yjk3ZTVhIDEwMDY0NAotLS0gYS9hcHAva3J1c2FkZXIuaAorKysgYi9hcHAva3J1c2FkZXIuaApA QCAtMTE2LDggKzExNiw4IEBAIHB1YmxpYyBzbG90czoKIAogcHJvdGVjdGVkIHNsb3RzOgogICAg IHZvaWQgZG9PcGVuVXJsKCk7Ci0gICAgdm9pZCBzbG90R290TmV3U3RhcnR1cChjb25zdCBLU3Rh cnR1cEluZm9JZCAmaWQsIGNvbnN0IEtTdGFydHVwSW5mb0RhdGEgJmRhdGEpOwotICAgIHZvaWQg c2xvdEdvdFJlbW92ZVN0YXJ0dXAoY29uc3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25zdCBLU3Rh cnR1cEluZm9EYXRhICZkYXRhKTsKKyAgICB2b2lkIHNsb3RHb3ROZXdTdGFydHVwKGNvbnN0IEtT dGFydHVwSW5mb0lkICZpZCwgY29uc3QgS1N0YXJ0dXBJbmZvRGF0YSAmaW5mb0RhdGEpOworICAg IHZvaWQgc2xvdEdvdFJlbW92ZVN0YXJ0dXAoY29uc3QgS1N0YXJ0dXBJbmZvSWQgJmlkLCBjb25z dCBLU3RhcnR1cEluZm9EYXRhICZpbmZvRGF0YSk7CiAKIHByb3RlY3RlZDoKICAgICB2b2lkIGNs b3NlRXZlbnQoUUNsb3NlRXZlbnQgKmV2ZW50KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL2FwcC9t YWluLmNwcCBiL2FwcC9tYWluLmNwcAppbmRleCA0YzU1ZjYyZGIuLjc0NjcwMTM5ZiAxMDA2NDQK LS0tIGEvYXBwL21haW4uY3BwCisrKyBiL2FwcC9tYWluLmNwcApAQCAtMjc2LDcgKzI3Niw2IEBA IGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAgICAgLy8gc3BsYXNoIHNjcmVlbiAt IGlmIHRoZSB1c2VyIHdhbnRzIG9uZQogICAgIFFTcGxhc2hTY3JlZW4gKnNwbGFzaCA9IG51bGxw dHI7CiAgICAgeyAvLyBkb24ndCByZW1vdmUgYnJhY2tldAotICAgICAgICBLQ29uZmlnR3JvdXAg Y2ZnKEtTaGFyZWRDb25maWc6Om9wZW5Db25maWcoKSwgUVN0cmluZ0xpdGVyYWwoIkxvb2smRmVl bCIpKTsKICAgICAgICAgaWYgKGNmZy5yZWFkRW50cnkoIlNob3cgc3BsYXNoc2NyZWVuIiwgX1No b3dTcGxhc2hTY3JlZW4pKSB7CiAgICAgICAgICAgICBRU3RyaW5nIHNwbGFzaEZpbGVuYW1lID0g UVN0YW5kYXJkUGF0aHM6OmxvY2F0ZShRU3RhbmRhcmRQYXRoczo6QXBwRGF0YUxvY2F0aW9uLCBR U3RyaW5nTGl0ZXJhbCgic3BsYXNoLnBuZyIpKTsKICAgICAgICAgICAgIFFQaXhtYXAgcGl4bWFw KHNwbGFzaEZpbGVuYW1lKTsKZGlmZiAtLWdpdCBhL3BsdWdpbnMva3JhcmMva3JhcmMuY3BwIGIv cGx1Z2lucy9rcmFyYy9rcmFyYy5jcHAKaW5kZXggM2RkOTBhMTkwLi45NzljN2VhZDkgMTAwNjQ0 Ci0tLSBhL3BsdWdpbnMva3JhcmMva3JhcmMuY3BwCisrKyBiL3BsdWdpbnMva3JhcmMva3JhcmMu Y3BwCkBAIC0yNCw4ICsyNCw4IEBACiAjaW5jbHVkZSA8cXBsYXRmb3JtZGVmcy5oPgogCiAjaW5j bHVkZSA8S0ZpbGVJdGVtPgotI2luY2x1ZGUgPEtJTy9Kb2I+CiAjaW5jbHVkZSA8S0lPL0F1dGhJ bmZvPgorI2luY2x1ZGUgPEtJTy9Kb2I+CiAjaW5jbHVkZSA8S0xvY2FsaXplZFN0cmluZz4KICNp bmNsdWRlIDxLUHJvY2Vzcz4KICNpbmNsdWRlIDxLVGFyPgpAQCAtMTE1LDkgKzExNSw5IEBAIGNs YXNzIER1bW15V29ya2VyIDogcHVibGljIEtJTzo6V29ya2VyQmFzZQogewogcHVibGljOgogICAg IER1bW15V29ya2VyKGNvbnN0IFFCeXRlQXJyYXkgJnBvb2xfc29ja2V0LCBjb25zdCBRQnl0ZUFy cmF5ICZhcHBfc29ja2V0KQotICAgICAgICA6IFdvcmtlckJhc2UoImtpb19rcmFyYyIsIHBvb2xf c29ja2V0LCBhcHBfc29ja2V0KXsKLQotICAgICAgICB9CisgICAgICAgIDogV29ya2VyQmFzZSgi a2lvX2tyYXJjIiwgcG9vbF9zb2NrZXQsIGFwcF9zb2NrZXQpCisgICAgeworICAgIH0KIH07CiAK IGludCBRX0RFQ0xfRVhQT1JUIGtkZW1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQpAQCAtMTUw LDExICsxNTAsMTEgQEAgaW50IFFfREVDTF9FWFBPUlQga2RlbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAjaWZkZWYgS1JBUkNfRU5BQkxFRAoga2lvX2tyYXJjUHJvdG9jb2w6Omtpb19rcmFy Y1Byb3RvY29sKGNvbnN0IFFCeXRlQXJyYXkgJnBvb2xfc29ja2V0LCBjb25zdCBRQnl0ZUFycmF5 ICZhcHBfc29ja2V0KQogICAgIDogV29ya2VyQmFzZSgia2lvX2tyYXJjIiwgcG9vbF9zb2NrZXQs IGFwcF9zb2NrZXQpCi0gICAgLCBhcmNoaXZlQ2hhbmdlZCh0cnVlKQotICAgICwgYXJjRmlsZShu dWxscHRyKQotICAgICwgZXh0QXJjUmVhZHkoZmFsc2UpCi0gICAgLCBwYXNzd29yZChRU3RyaW5n KCkpCi0gICAgLCBjb2RlYyhudWxscHRyKQorICAgICwgbV9hcmNoaXZlQ2hhbmdlZCh0cnVlKQor ICAgICwgbV9hcmNGaWxlKG51bGxwdHIpCisgICAgLCBtX2V4dEFyY1JlYWR5KGZhbHNlKQorICAg ICwgbV9wYXNzd29yZChRU3RyaW5nKCkpCisgICAgLCBtX2NvZGVjKG51bGxwdHIpCiB7CiAgICAg S1JGVU5DOwogICAgIEtDb25maWdHcm91cCBncm91cCgma3JDb25mLCAiR2VuZXJhbCIpOwpAQCAt MTY2LDExICsxNjYsMTEgQEAga2lvX2tyYXJjUHJvdG9jb2w6Omtpb19rcmFyY1Byb3RvY29sKGNv bnN0IFFCeXRlQXJyYXkgJnBvb2xfc29ja2V0LCBjb25zdCBRQnl0ZUEKICAgICAgICAgUURpcigp Lm1rZGlyKHRtcERpclBhdGgpOwogICAgIH0KIAotICAgIGFyY1RlbXBEaXIgPSB0bXBEaXJQYXRo ICsgRElSX1NFUEFSQVRPUjsKKyAgICBtX2FyY1RlbXBEaXIgPSB0bXBEaXJQYXRoICsgRElSX1NF UEFSQVRPUjsKICAgICBRU3RyaW5nIGRpck5hbWUgPSAia3JBcmMiICsgUURhdGVUaW1lOjpjdXJy ZW50RGF0ZVRpbWUoKS50b1N0cmluZyhRdDo6SVNPRGF0ZSk7CiAgICAgZGlyTmFtZS5yZXBsYWNl KFFSZWd1bGFyRXhwcmVzc2lvbigiOiIpLCAiXyIpOwogICAgIHRtcERpci5ta2RpcihkaXJOYW1l KTsKLSAgICBhcmNUZW1wRGlyID0gYXJjVGVtcERpciArIGRpck5hbWUgKyBESVJfU0VQQVJBVE9S OworICAgIG1fYXJjVGVtcERpciA9IG1fYXJjVGVtcERpciArIGRpck5hbWUgKyBESVJfU0VQQVJB VE9SOwogCiAgICAga3JBcmNDb2RlYyA9IG5ldyBLckFyY0NvZGVjKFFUZXh0Q29kZWM6OmNvZGVj Rm9yTG9jYWxlKCkpOwogfQpAQCAtMTgxLDcgKzE4MSw3IEBAIGtpb19rcmFyY1Byb3RvY29sOjp+ a2lvX2tyYXJjUHJvdG9jb2woKQogICAgIEtSRlVOQzsKICAgICAvLyBkZWxldGUgdGhlIHRlbXAg ZGlyZWN0b3J5CiAgICAgS1Byb2Nlc3MgcHJvYzsKLSAgICBwcm9jIDw8IGZ1bGxQYXRoTmFtZSgi cm0iKSA8PCAiLXJmIiA8PCBhcmNUZW1wRGlyOworICAgIHByb2MgPDwgZnVsbFBhdGhOYW1lKCJy bSIpIDw8ICItcmYiIDw8IG1fYXJjVGVtcERpcjsKICAgICBwcm9jLnN0YXJ0KCk7CiAgICAgcHJv Yy53YWl0Rm9yRmluaXNoZWQoKTsKIH0KQEAgLTIwMCwxMyArMjAwLDEzIEBAIEtJTzo6V29ya2Vy UmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpjaGVja1dyaXRlU3VwcG9ydCgpCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICJZb3UgY2FuIGVuYWJsZSBpdCBvbiB0aGUgJ0FyY2hp dmVzJyBwYWdlIGluIEtvbmZpZ3VyYXRvci4iKSk7CiB9CiAKLXZvaWQga2lvX2tyYXJjUHJvdG9j b2w6OnJlY2VpdmVkRGF0YShLUHJvY2VzcyAqLCBRQnl0ZUFycmF5ICZkKQordm9pZCBraW9fa3Jh cmNQcm90b2NvbDo6cmVjZWl2ZWREYXRhKEtQcm9jZXNzICosIFFCeXRlQXJyYXkgJmJ5dGVEYXRh KQogewogICAgIEtSRlVOQzsKLSAgICBjb25zdCBRQnl0ZUFycmF5ICZidWYoZCk7Ci0gICAgZGF0 YShidWYpOwotICAgIHByb2Nlc3NlZFNpemUoZC5sZW5ndGgoKSk7Ci0gICAgZGVjb21wcmVzc2Vk TGVuICs9IGQubGVuZ3RoKCk7CisgICAgY29uc3QgYXV0byBsZW4gPSBieXRlRGF0YS5sZW5ndGgo KTsKKyAgICBkYXRhKGJ5dGVEYXRhKTsKKyAgICBwcm9jZXNzZWRTaXplKGxlbik7CisgICAgbV9k ZWNvbXByZXNzZWRMZW4gKz0gbGVuOwogfQogCiBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ cm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAmdXJsLCBpbnQgcGVybWlzc2lvbnMpCkBAIC0yMTks OSArMjE5LDkgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Om1rZGlyKGNv bnN0IFFVcmwgJnVybCwgaW50IHBlcm1pc3Npb25zKQogICAgIGlmICghd3JpdGVTdXBwb3J0UmVz dWx0LnN1Y2Nlc3MoKSkKICAgICAgICAgcmV0dXJuIHdyaXRlU3VwcG9ydFJlc3VsdDsKIAotICAg ICAgICAvLyBJbiBjYXNlIG9mIEtJTzo6bWtwYXRoIGNhbGwgdGhlcmUgaXMgYSBta2RpciBjYWxs IGZvciBldmVyeSBwYXRoIGVsZW1lbnQuCi0gICAgICAgIC8vIFRoZXJlZm9yZSB0aGUgcGF0aCBh bGwgdGhlIHdheSB1cCB0byBvdXIgYXJjaGl2ZSBuZWVkcyB0byBiZSBjaGVja2VkIGZvciBleGlz dGVuY2UKLSAgICAgICAgLy8gYW5kIHJlcG9ydGVkIGFzIHN1Y2Nlc3MuCisgICAgLy8gSW4gY2Fz ZSBvZiBLSU86Om1rcGF0aCBjYWxsIHRoZXJlIGlzIGEgbWtkaXIgY2FsbCBmb3IgZXZlcnkgcGF0 aCBlbGVtZW50LgorICAgIC8vIFRoZXJlZm9yZSB0aGUgcGF0aCBhbGwgdGhlIHdheSB1cCB0byBv dXIgYXJjaGl2ZSBuZWVkcyB0byBiZSBjaGVja2VkIGZvciBleGlzdGVuY2UKKyAgICAvLyBhbmQg cmVwb3J0ZWQgYXMgc3VjY2Vzcy4KICAgICBpZiAoUURpcigpLmV4aXN0cyhwYXRoKSkgewogICAg ICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpwYXNzKCk7CiAgICAgfQpAQCAtMjMxLDIyICsyMzEs MjIgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Om1rZGlyKGNvbnN0IFFV cmwgJnVybCwgaW50IHBlcm1pc3Npb25zKQogICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3Vs dDsKICAgICB9CiAKLSAgICBpZiAobmV3QXJjaGl2ZVVSTCAmJiAhaW5pdERpckRpY3QodXJsKSkg eworICAgIGlmIChtX25ld0FyY2hpdmVVUkwgJiYgIWluaXREaXJEaWN0KHVybCkpIHsKICAgICAg ICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9UX0VOVEVSX0RJUkVDVE9SWSwg cGF0aCk7CiAgICAgfQogCiAgICAgaWYgKHB1dENtZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmV0 dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJDcmVh dGluZyBmb2xkZXJzIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCAlMSBhcmNoaXZlcy4iLCBhcmNUeXBl KSk7CisgICAgICAgIHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9SVEVEX0FD VElPTiwgaTE4bigiQ3JlYXRpbmcgZm9sZGVycyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggJTEgYXJj aGl2ZXMuIiwgbV9hcmNUeXBlKSk7CiAgICAgfQogCi0gICAgY29uc3QgUVN0cmluZyBhcmNGaWxl UGF0aCA9IGdldFBhdGgoYXJjRmlsZS0+dXJsKCkpOworICAgIGNvbnN0IFFTdHJpbmcgYXJjRmls ZVBhdGggPSBnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCkpOwogCi0gICAgaWYgKGFyY1R5cGUgPT0g ImFyaiIgfHwgYXJjVHlwZSA9PSAibGhhIikgeworICAgIGlmIChtX2FyY1R5cGUgPT0gImFyaiIg fHwgbV9hcmNUeXBlID09ICJsaGEiKSB7CiAgICAgICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5t aWQoYXJjRmlsZVBhdGgubGVuZ3RoKCkpOwogICAgICAgICBpZiAoYXJjRGlyLnJpZ2h0KDEpICE9 IERJUl9TRVBBUkFUT1IpCiAgICAgICAgICAgICBhcmNEaXIgPSBhcmNEaXIgKyBESVJfU0VQQVJB VE9SOwogCi0gICAgICAgIGlmIChkaXJEaWN0LmZpbmQoYXJjRGlyKSA9PSBkaXJEaWN0LmVuZCgp KQorICAgICAgICBpZiAobV9kaXJEaWN0LmZpbmQoYXJjRGlyKSA9PSBtX2RpckRpY3QuZW5kKCkp CiAgICAgICAgICAgICBhZGROZXdEaXIoYXJjRGlyKTsKICAgICAgICAgcmV0dXJuIFdvcmtlclJl c3VsdDo6cGFzcygpOwogICAgIH0KQEAgLTI1OSw3ICsyNTksNyBAQCBLSU86OldvcmtlclJlc3Vs dCBraW9fa3JhcmNQcm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAmdXJsLCBpbnQgcGVybWlzc2lv bnMpCiAgICAgaWYgKHBlcm1pc3Npb25zID09IC0xKQogICAgICAgICBwZXJtaXNzaW9ucyA9IDA3 Nzc7IC8vIHNldCBkZWZhdWx0IHBlcm1pc3Npb25zCiAKLSAgICBRQnl0ZUFycmF5IGFyY1RlbXBE aXJFbmMgPSBhcmNUZW1wRGlyLnRvTG9jYWw4Qml0KCk7CisgICAgUUJ5dGVBcnJheSBhcmNUZW1w RGlyRW5jID0gbV9hcmNUZW1wRGlyLnRvTG9jYWw4Qml0KCk7CiAgICAgZm9yIChxc2l6ZXR5cGUg aSA9IDA7IGkgPCB0ZW1wRGlyLmxlbmd0aCgpICYmIGkgPj0gMDsgaSA9IHRlbXBEaXIuaW5kZXhP ZihESVJfU0VQQVJBVE9SLCBpICsgMSkpIHsKICAgICAgICAgUUJ5dGVBcnJheSBuZXdEaXJzID0g ZW5jb2RlU3RyaW5nKHRlbXBEaXIubGVmdChpKSk7CiAgICAgICAgIG5ld0RpcnMucHJlcGVuZChh cmNUZW1wRGlyRW5jKTsKQEAgLTI3Myw3ICsyNzMsNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9f a3JhcmNQcm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAmdXJsLCBpbnQgcGVybWlzc2lvbnMpCiAg ICAgS3JMaW5lY291bnRpbmdQcm9jZXNzIHByb2M7CiAgICAgcHJvYyA8PCBwdXRDbWQgPDwgYXJj RmlsZVBhdGggPDwgbG9jYWxlRW5jb2RlZFN0cmluZyh0ZW1wRGlyKTsKICAgICBpbmZvTWVzc2Fn ZShpMThuKCJDcmVhdGluZyAlMS4uLiIsIHVybC5maWxlTmFtZSgpKSk7Ci0gICAgUURpcjo6c2V0 Q3VycmVudChhcmNUZW1wRGlyKTsKKyAgICBRRGlyOjpzZXRDdXJyZW50KG1fYXJjVGVtcERpcik7 CiAKICAgICBTRVRfS1JDT0RFQwogICAgIHByb2Muc3RhcnQoKTsKQEAgLTI4Miw3ICsyODIsNyBA QCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6bWtkaXIoY29uc3QgUVVybCAm dXJsLCBpbnQgcGVybWlzc2lvbnMpCiAgICAgcHJvYy53YWl0Rm9yRmluaXNoZWQoKTsKIAogICAg IC8vIGRlbGV0ZSB0aGUgdGVtcCBkaXJlY3RvcnkKLSAgICBRRGlyKCkucm1kaXIoYXJjVGVtcERp cik7CisgICAgUURpcigpLnJtZGlyKG1fYXJjVGVtcERpcik7CiAKICAgICBpZiAocHJvYy5leGl0 U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQgfHwgIWNoZWNrU3RhdHVzKHByb2MuZXhp dENvZGUoKSkpIHsKICAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9U X1dSSVRFLCBwYXRoICsgIlxuXG4iICsgcHJvYy5nZXRFcnJvck1zZygpKTsKQEAgLTMwOSwxMiAr MzA5LDEyIEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpwdXQoY29uc3Qg UVVybCAmdXJsLCBpbnQgcGVybWlzc2lvbnMsIEtJTzo6CiAgICAgaWYgKCFzZXRBcmNGaWxlUmVz dWx0LnN1Y2Nlc3MoKSkgewogICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3VsdDsKICAgICB9 Ci0gICAgaWYgKG5ld0FyY2hpdmVVUkwgJiYgIWluaXREaXJEaWN0KHVybCkpIHsKKyAgICBpZiAo bV9uZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwpKSB7CiAgICAgICAgIHJldHVybiBX b3JrZXJSZXN1bHQ6OmZhaWwoRVJSX0NBTk5PVF9FTlRFUl9ESVJFQ1RPUlksIGdldFBhdGgodXJs KSk7CiAgICAgfQogCiAgICAgaWYgKHB1dENtZC5pc0VtcHR5KCkpIHsKLSAgICAgICAgcmV0dXJu IFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJXcml0aW5n IHRvICUxIGFyY2hpdmVzIGlzIG5vdCBzdXBwb3J0ZWQuIiwgYXJjVHlwZSkpOworICAgICAgICBy ZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9VTlNVUFBPUlRFRF9BQ1RJT04sIGkxOG4oIldy aXRpbmcgdG8gJTEgYXJjaGl2ZXMgaXMgbm90IHN1cHBvcnRlZC4iLCBtX2FyY1R5cGUpKTsKICAg ICB9CiAgICAgaWYgKCFvdmVyd3JpdGUgJiYgZmluZEZpbGVFbnRyeSh1cmwpKSB7CiAgICAgICAg IHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX0ZJTEVfQUxSRUFEWV9FWElTVCwgZ2V0UGF0 aCh1cmwpKTsKQEAgLTMzMiw3ICszMzIsNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ cm90b2NvbDo6cHV0KGNvbnN0IFFVcmwgJnVybCwgaW50IHBlcm1pc3Npb25zLCBLSU86OgogICAg IGlmIChwZXJtaXNzaW9ucyA9PSAtMSkKICAgICAgICAgcGVybWlzc2lvbnMgPSAwNzc3OyAvLyBz ZXQgZGVmYXVsdCBwZXJtaXNzaW9ucwogCi0gICAgUUJ5dGVBcnJheSBhcmNUZW1wRGlyRW5jID0g YXJjVGVtcERpci50b0xvY2FsOEJpdCgpOworICAgIFFCeXRlQXJyYXkgYXJjVGVtcERpckVuYyA9 IG1fYXJjVGVtcERpci50b0xvY2FsOEJpdCgpOwogICAgIGZvciAocXNpemV0eXBlIGkgPSAwOyBp IDwgdGVtcERpci5sZW5ndGgoKSAmJiBpID49IDA7IGkgPSB0ZW1wRGlyLmluZGV4T2YoRElSX1NF UEFSQVRPUiwgaSArIDEpKSB7CiAgICAgICAgIFFCeXRlQXJyYXkgbmV3RGlycyA9IGVuY29kZVN0 cmluZyh0ZW1wRGlyLmxlZnQoaSkpOwogICAgICAgICBuZXdEaXJzLnByZXBlbmQoYXJjVGVtcERp ckVuYyk7CkBAIC0zNzksOSArMzc5LDkgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJv dG9jb2w6OnB1dChjb25zdCBRVXJsICZ1cmwsIGludCBwZXJtaXNzaW9ucywgS0lPOjoKIAogICAg IC8vIHBhY2sgdGhlIGZpbGUKICAgICBLckxpbmVjb3VudGluZ1Byb2Nlc3MgcHJvYzsKLSAgICBw cm9jIDw8IHB1dENtZCA8PCBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpKSA8PCBsb2NhbGVFbmNvZGVk U3RyaW5nKHRlbXBGaWxlKTsKKyAgICBwcm9jIDw8IHB1dENtZCA8PCBnZXRQYXRoKG1fYXJjRmls ZS0+dXJsKCkpIDw8IGxvY2FsZUVuY29kZWRTdHJpbmcodGVtcEZpbGUpOwogICAgIGluZm9NZXNz YWdlKGkxOG4oIlBhY2tpbmcgJTEuLi4iLCB1cmwuZmlsZU5hbWUoKSkpOwotICAgIFFEaXI6OnNl dEN1cnJlbnQoYXJjVGVtcERpcik7CisgICAgUURpcjo6c2V0Q3VycmVudChtX2FyY1RlbXBEaXIp OwogCiAgICAgU0VUX0tSQ09ERUMKICAgICBwcm9jLnN0YXJ0KCk7CkBAIC0zOTAsNyArMzkwLDcg QEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnB1dChjb25zdCBRVXJsICZ1 cmwsIGludCBwZXJtaXNzaW9ucywgS0lPOjoKICAgICBwcm9jLndhaXRGb3JGaW5pc2hlZCgpOwog CiAgICAgLy8gcmVtb3ZlIHRoZSBmaWxlcwotICAgIFFEaXIoKS5ybWRpcihhcmNUZW1wRGlyKTsK KyAgICBRRGlyKCkucm1kaXIobV9hcmNUZW1wRGlyKTsKIAogICAgIGlmIChwcm9jLmV4aXRTdGF0 dXMoKSAhPSBRUHJvY2Vzczo6Tm9ybWFsRXhpdCB8fCAhY2hlY2tTdGF0dXMocHJvYy5leGl0Q29k ZSgpKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfV1JJ VEUsIGdldFBhdGgodXJsKSArICJcblxuIiArIHByb2MuZ2V0RXJyb3JNc2coKSk7CkBAIC00MTYs MTIgKzQxNiwxMiBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNv bnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQogICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNj ZXNzKCkpIHsKICAgICAgICAgcmV0dXJuIHNldEFyY0ZpbGVSZXN1bHQ7CiAgICAgfQotICAgIGlm IChuZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwpKSB7CisgICAgaWYgKG1fbmV3QXJj aGl2ZVVSTCAmJiAhaW5pdERpckRpY3QodXJsKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVz dWx0OjpmYWlsKEVSUl9DQU5OT1RfRU5URVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkpOwogICAg IH0KIAogICAgIGlmIChnZXRDbWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJldHVybiBXb3JrZXJS ZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9SVEVEX0FDVElPTiwgaTE4bigiUmV0cmlldmluZyBkYXRh IGZyb20gJTEgYXJjaGl2ZXMgaXMgbm90IHN1cHBvcnRlZC4iLCBhcmNUeXBlKSk7CisgICAgICAg IHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9SVEVEX0FDVElPTiwgaTE4bigi UmV0cmlldmluZyBkYXRhIGZyb20gJTEgYXJjaGl2ZXMgaXMgbm90IHN1cHBvcnRlZC4iLCBtX2Fy Y1R5cGUpKTsKICAgICB9CiAgICAgVURTRW50cnkgKmVudHJ5ID0gZmluZEZpbGVFbnRyeSh1cmwp OwogICAgIGlmICghZW50cnkpIHsKQEAgLTQzMywxMCArNDMzLDEwIEBAIEtJTzo6V29ya2VyUmVz dWx0IGtpb19rcmFyY1Byb3RvY29sOjpnZXQoY29uc3QgUVVybCAmdXJsLCBpbnQgdHJpZXMpCiAK ICAgICBLSU86OmZpbGVzaXplX3QgZXhwZWN0ZWRTaXplID0gS0ZpbGVJdGVtKCplbnRyeSwgdXJs KS5zaXplKCk7CiAgICAgLy8gZm9yIFJQTSBmaWxlcyBleHRyYWN0IHRoZSBjcGlvIGZpbGUgZmly c3QKLSAgICBpZiAoIWV4dEFyY1JlYWR5ICYmIGFyY1R5cGUgPT0gInJwbSIpIHsKKyAgICBpZiAo IW1fZXh0QXJjUmVhZHkgJiYgbV9hcmNUeXBlID09ICJycG0iKSB7CiAgICAgICAgIEtyTGluZWNv dW50aW5nUHJvY2VzcyBjcGlvOwotICAgICAgICBjcGlvIDw8ICJycG0yY3BpbyIgPDwgZ2V0UGF0 aChhcmNGaWxlLT51cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKTsKLSAgICAgICAgY3Bp by5zZXRTdGFuZGFyZE91dHB1dEZpbGUoYXJjVGVtcERpciArICJjb250ZW50cy5jcGlvIik7Cisg ICAgICAgIGNwaW8gPDwgInJwbTJjcGlvIiA8PCBnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCksIFFV cmw6OlN0cmlwVHJhaWxpbmdTbGFzaCk7CisgICAgICAgIGNwaW8uc2V0U3RhbmRhcmRPdXRwdXRG aWxlKG1fYXJjVGVtcERpciArICJjb250ZW50cy5jcGlvIik7CiAKICAgICAgICAgY3Bpby5zdGFy dCgpOwogICAgICAgICBjcGlvLndhaXRGb3JGaW5pc2hlZCgpOwpAQCAtNDQ0LDEzICs0NDQsMTMg QEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OmdldChjb25zdCBRVXJsICZ1 cmwsIGludCB0cmllcykKICAgICAgICAgaWYgKGNwaW8uZXhpdFN0YXR1cygpICE9IFFQcm9jZXNz OjpOb3JtYWxFeGl0IHx8ICFjaGVja1N0YXR1cyhjcGlvLmV4aXRDb2RlKCkpKSB7CiAgICAgICAg ICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfUkVBRCwgZ2V0UGF0aCh1 cmwpICsgIlxuXG4iICsgY3Bpby5nZXRFcnJvck1zZygpKTsKICAgICAgICAgfQotICAgICAgICBl eHRBcmNSZWFkeSA9IHRydWU7CisgICAgICAgIG1fZXh0QXJjUmVhZHkgPSB0cnVlOwogICAgIH0K ICAgICAvLyBmb3IgREVCIGZpbGVzIGV4dHJhY3QgdGhlIHRhciBmaWxlIGZpcnN0Ci0gICAgaWYg KCFleHRBcmNSZWFkeSAmJiBhcmNUeXBlID09ICJkZWIiKSB7CisgICAgaWYgKCFtX2V4dEFyY1Jl YWR5ICYmIG1fYXJjVHlwZSA9PSAiZGViIikgewogICAgICAgICBLckxpbmVjb3VudGluZ1Byb2Nl c3MgZHBrZzsKLSAgICAgICAgZHBrZyA8PCBjbWQgPDwgIi0tZnN5cy10YXJmaWxlIiA8PCBnZXRQ YXRoKGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpOwotICAgICAgICBk cGtnLnNldFN0YW5kYXJkT3V0cHV0RmlsZShhcmNUZW1wRGlyICsgImNvbnRlbnRzLmNwaW8iKTsK KyAgICAgICAgZHBrZyA8PCBjbWQgPDwgIi0tZnN5cy10YXJmaWxlIiA8PCBnZXRQYXRoKG1fYXJj RmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCk7CisgICAgICAgIGRwa2cuc2V0 U3RhbmRhcmRPdXRwdXRGaWxlKG1fYXJjVGVtcERpciArICJjb250ZW50cy5jcGlvIik7CiAKICAg ICAgICAgZHBrZy5zdGFydCgpOwogICAgICAgICBkcGtnLndhaXRGb3JGaW5pc2hlZCgpOwpAQCAt NDU4LDQxICs0NTgsNDEgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Omdl dChjb25zdCBRVXJsICZ1cmwsIGludCB0cmllcykKICAgICAgICAgaWYgKGRwa2cuZXhpdFN0YXR1 cygpICE9IFFQcm9jZXNzOjpOb3JtYWxFeGl0IHx8ICFjaGVja1N0YXR1cyhkcGtnLmV4aXRDb2Rl KCkpKSB7CiAgICAgICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1Rf UkVBRCwgZ2V0UGF0aCh1cmwpICsgIlxuXG4iICsgZHBrZy5nZXRFcnJvck1zZygpKTsKICAgICAg ICAgfQotICAgICAgICBleHRBcmNSZWFkeSA9IHRydWU7CisgICAgICAgIG1fZXh0QXJjUmVhZHkg PSB0cnVlOwogICAgIH0KIAogICAgIC8vIFVzZSB0aGUgZXh0ZXJuYWwgdW5wYWNrZXIgdG8gdW5w YWNrIHRoZSBmaWxlCi0gICAgUVN0cmluZyBmaWxlID0gZ2V0UGF0aCh1cmwpLm1pZChnZXRQYXRo KGFyY0ZpbGUtPnVybCgpKS5sZW5ndGgoKSArIDEpOworICAgIFFTdHJpbmcgZmlsZSA9IGdldFBh dGgodXJsKS5taWQoZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpKS5sZW5ndGgoKSArIDEpOwogICAg IEtyTGluZWNvdW50aW5nUHJvY2VzcyBwcm9jOwotICAgIGlmIChleHRBcmNSZWFkeSkgewotICAg ICAgICBwcm9jIDw8IGdldENtZCA8PCBhcmNUZW1wRGlyICsgImNvbnRlbnRzLmNwaW8iIDw8ICcq JyArIGxvY2FsZUVuY29kZWRTdHJpbmcoZmlsZSk7Ci0gICAgfSBlbHNlIGlmIChhcmNUeXBlID09 ICJhcmoiIHx8IGFyY1R5cGUgPT0gImFjZSIgfHwgYXJjVHlwZSA9PSAiN3oiKSB7Ci0gICAgICAg IHByb2MgPDwgZ2V0Q21kIDw8IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh aWxpbmdTbGFzaCkgPDwgbG9jYWxlRW5jb2RlZFN0cmluZyhmaWxlKTsKLSAgICAgICAgaWYgKGFy Y1R5cGUgPT0gImFjZSIgJiYgUUZpbGUoIi9kZXYvcHRteCIpLmV4aXN0cygpKSAvLyBEb24ndCBy ZW1vdmUsIHVuYWNlIGNyYXNoZXMgaWYgbWlzc2luZyEhIQorICAgIGlmIChtX2V4dEFyY1JlYWR5 KSB7CisgICAgICAgIHByb2MgPDwgZ2V0Q21kIDw8IG1fYXJjVGVtcERpciArICJjb250ZW50cy5j cGlvIiA8PCAnKicgKyBsb2NhbGVFbmNvZGVkU3RyaW5nKGZpbGUpOworICAgIH0gZWxzZSBpZiAo bV9hcmNUeXBlID09ICJhcmoiIHx8IG1fYXJjVHlwZSA9PSAiYWNlIiB8fCBtX2FyY1R5cGUgPT0g Ijd6IikgeworICAgICAgICBwcm9jIDw8IGdldENtZCA8PCBnZXRQYXRoKG1fYXJjRmlsZS0+dXJs KCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkgPDwgbG9jYWxlRW5jb2RlZFN0cmluZyhmaWxl KTsKKyAgICAgICAgaWYgKG1fYXJjVHlwZSA9PSAiYWNlIiAmJiBRRmlsZSgiL2Rldi9wdG14Iiku ZXhpc3RzKCkpIC8vIERvbid0IHJlbW92ZSwgdW5hY2UgY3Jhc2hlcyBpZiBtaXNzaW5nISEhCiAg ICAgICAgICAgICBwcm9jLnNldFN0YW5kYXJkSW5wdXRGaWxlKCIvZGV2L3B0bXgiKTsKICAgICAg ICAgZmlsZSA9IHVybC5maWxlTmFtZSgpOwogICAgICAgICBkZWNvbXByZXNzVG9GaWxlID0gdHJ1 ZTsKICAgICB9IGVsc2UgewotICAgICAgICBkZWNvbXByZXNzZWRMZW4gPSAwOworICAgICAgICBt X2RlY29tcHJlc3NlZExlbiA9IDA7CiAgICAgICAgIC8vIERldGVybWluZSB0aGUgbWltZXR5cGUg b2YgdGhlIGZpbGUgdG8gYmUgcmV0cmlldmVkLCBhbmQgZW1pdCBpdC4KICAgICAgICAgLy8gVGhp cyBpcyBtYW5kYXRvcnkgaW4gYWxsIHNsYXZlcyAoZm9yIEtSdW4vQnJvd3NlclJ1biB0byB3b3Jr KS4KICAgICAgICAgUU1pbWVEYXRhYmFzZSBkYjsKLSAgICAgICAgUU1pbWVUeXBlIG10ID0gZGIu bWltZVR5cGVGb3JGaWxlKGFyY1RlbXBEaXIgKyBmaWxlKTsKKyAgICAgICAgUU1pbWVUeXBlIG10 ID0gZGIubWltZVR5cGVGb3JGaWxlKG1fYXJjVGVtcERpciArIGZpbGUpOwogICAgICAgICBpZiAo bXQuaXNWYWxpZCgpKQogICAgICAgICAgICAgbWltZVR5cGUobXQubmFtZSgpKTsKIAogICAgICAg ICBRU3RyaW5nIGVzY2FwZWRGaWxlbmFtZSA9IGZpbGU7Ci0gICAgICAgIGlmIChhcmNUeXBlID09 ICJ6aXAiKSAvLyBsZWZ0IGJyYWNrZXQgbmVlZHMgdG8gYmUgZXNjYXBlZAorICAgICAgICBpZiAo bV9hcmNUeXBlID09ICJ6aXAiKSAvLyBsZWZ0IGJyYWNrZXQgbmVlZHMgdG8gYmUgZXNjYXBlZAog ICAgICAgICAgICAgZXNjYXBlZEZpbGVuYW1lLnJlcGxhY2UoJ1snLCAiW1tdIik7Ci0gICAgICAg IHByb2MgPDwgZ2V0Q21kIDw8IGdldFBhdGgoYXJjRmlsZS0+dXJsKCkpOwotICAgICAgICBpZiAo YXJjVHlwZSAhPSAiZ3ppcCIgJiYgYXJjVHlwZSAhPSAiYnppcDIiICYmIGFyY1R5cGUgIT0gImx6 bWEiICYmIGFyY1R5cGUgIT0gInh6IikKKyAgICAgICAgcHJvYyA8PCBnZXRDbWQgPDwgZ2V0UGF0 aChtX2FyY0ZpbGUtPnVybCgpKTsKKyAgICAgICAgaWYgKG1fYXJjVHlwZSAhPSAiZ3ppcCIgJiYg bV9hcmNUeXBlICE9ICJiemlwMiIgJiYgbV9hcmNUeXBlICE9ICJsem1hIiAmJiBtX2FyY1R5cGUg IT0gInh6IikKICAgICAgICAgICAgIHByb2MgPDwgbG9jYWxlRW5jb2RlZFN0cmluZyhlc2NhcGVk RmlsZW5hbWUpOwogICAgICAgICBjb25uZWN0KCZwcm9jLCAmS3JMaW5lY291bnRpbmdQcm9jZXNz OjpuZXdPdXRwdXREYXRhLCB0aGlzLCAma2lvX2tyYXJjUHJvdG9jb2w6OnJlY2VpdmVkRGF0YSk7 CiAgICAgICAgIHByb2Muc2V0TWVyZ2UoZmFsc2UpOwogICAgIH0KICAgICBpbmZvTWVzc2FnZShp MThuKCJVbnBhY2tpbmcgJTEuLi4iLCB1cmwuZmlsZU5hbWUoKSkpOwogICAgIC8vIGNoYW5nZSB0 aGUgd29ya2luZyBkaXJlY3RvcnkgdG8gb3VyIGFyY1RlbXBEaXIKLSAgICBRRGlyOjpzZXRDdXJy ZW50KGFyY1RlbXBEaXIpOworICAgIFFEaXI6OnNldEN1cnJlbnQobV9hcmNUZW1wRGlyKTsKIAog ICAgIFNFVF9LUkNPREVDCiAgICAgcHJvYy5zZXRUZXh0TW9kZUVuYWJsZWQoZmFsc2UpOwpAQCAt NTA4LDIwICs1MDgsMjAgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Omdl dChjb25zdCBRVXJsICZ1cmwsIGludCB0cmllcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHByb2MuZXJyb3JTdHJpbmcoKSkpOwogICAgIH0KIAotICAgIGlmICghZXh0 QXJjUmVhZHkgJiYgIWRlY29tcHJlc3NUb0ZpbGUpIHsKKyAgICBpZiAoIW1fZXh0QXJjUmVhZHkg JiYgIWRlY29tcHJlc3NUb0ZpbGUpIHsKICAgICAgICAgaWYgKHByb2MuZXhpdFN0YXR1cygpICE9 IFFQcm9jZXNzOjpOb3JtYWxFeGl0IHx8ICFjaGVja1N0YXR1cyhwcm9jLmV4aXRDb2RlKCkpCi0g ICAgICAgICAgICB8fCAoYXJjVHlwZSAhPSAiYnppcDIiICYmIGFyY1R5cGUgIT0gImx6bWEiICYm IGFyY1R5cGUgIT0gInh6IiAmJiBleHBlY3RlZFNpemUgIT0gZGVjb21wcmVzc2VkTGVuKSkgewot ICAgICAgICAgICAgaWYgKGVuY3J5cHRlZCAmJiB0cmllcykgeworICAgICAgICAgICAgfHwgKG1f YXJjVHlwZSAhPSAiYnppcDIiICYmIG1fYXJjVHlwZSAhPSAibHptYSIgJiYgbV9hcmNUeXBlICE9 ICJ4eiIgJiYgZXhwZWN0ZWRTaXplICE9IG1fZGVjb21wcmVzc2VkTGVuKSkgeworICAgICAgICAg ICAgaWYgKG1fZW5jcnlwdGVkICYmIHRyaWVzKSB7CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0 ZVBhc3N3b3JkKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldCh1cmwsIHRyaWVzIC0gMSk7 CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEtJ Tzo6RVJSX0FDQ0VTU19ERU5JRUQsIGdldFBhdGgodXJsKSArICJcblxuIiArIHByb2MuZ2V0RXJy b3JNc2coKSk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAocHJvYy5leGl0 U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQgfHwgIWNoZWNrU3RhdHVzKHByb2MuZXhp dENvZGUoKSkgfHwgIVFGaWxlSW5mbzo6ZXhpc3RzKGFyY1RlbXBEaXIgKyBmaWxlKSkgeworICAg ICAgICBpZiAocHJvYy5leGl0U3RhdHVzKCkgIT0gUVByb2Nlc3M6Ok5vcm1hbEV4aXQgfHwgIWNo ZWNrU3RhdHVzKHByb2MuZXhpdENvZGUoKSkgfHwgIVFGaWxlSW5mbzo6ZXhpc3RzKG1fYXJjVGVt cERpciArIGZpbGUpKSB7CiAgICAgICAgICAgICBpZiAoZGVjb21wcmVzc1RvRmlsZSkKLSAgICAg ICAgICAgICAgICBRRmlsZShhcmNUZW1wRGlyICsgZmlsZSkucmVtb3ZlKCk7Ci0gICAgICAgICAg ICBpZiAoZW5jcnlwdGVkICYmIHRyaWVzKSB7CisgICAgICAgICAgICAgICAgUUZpbGUobV9hcmNU ZW1wRGlyICsgZmlsZSkucmVtb3ZlKCk7CisgICAgICAgICAgICBpZiAobV9lbmNyeXB0ZWQgJiYg dHJpZXMpIHsKICAgICAgICAgICAgICAgICBpbnZhbGlkYXRlUGFzc3dvcmQoKTsKICAgICAgICAg ICAgICAgICByZXR1cm4gZ2V0KHVybCwgdHJpZXMgLSAxKTsKICAgICAgICAgICAgIH0KQEAgLTUy OSw3ICs1MjksNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNv bnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQogICAgICAgICB9CiAgICAgICAgIC8vIHRoZSBmb2xs b3dpbmcgYmxvY2sgaXMgcmlwcGVkIGZyb20gS0RFIGZpbGUgS0lPOjpTbGF2ZQogICAgICAgICAv LyAkSWQ6IGtyYXJjLmNwcCx2IDEuNDMgMjAwNy8wMS8xMyAxMzozOTo1MSBja2FyYWkgRXhwICQK LSAgICAgICAgUUJ5dGVBcnJheSBfcGF0aChRRmlsZTo6ZW5jb2RlTmFtZShhcmNUZW1wRGlyICsg ZmlsZSkpOworICAgICAgICBRQnl0ZUFycmF5IF9wYXRoKFFGaWxlOjplbmNvZGVOYW1lKG1fYXJj VGVtcERpciArIGZpbGUpKTsKICAgICAgICAgUVRfU1RBVEJVRiBidWZmOwogICAgICAgICBpZiAo UVRfTFNUQVQoX3BhdGguY29uc3REYXRhKCksICZidWZmKSA9PSAtMSkgewogICAgICAgICAgICAg aWYgKGVycm5vID09IEVBQ0NFUykKQEAgLTU0OSw3ICs1NDksNyBAQCBLSU86OldvcmtlclJlc3Vs dCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNvbnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQogICAg ICAgICAvLyBEZXRlcm1pbmUgdGhlIG1pbWV0eXBlIG9mIHRoZSBmaWxlIHRvIGJlIHJldHJpZXZl ZCwgYW5kIGVtaXQgaXQuCiAgICAgICAgIC8vIFRoaXMgaXMgbWFuZGF0b3J5IGluIGFsbCBzbGF2 ZXMgKGZvciBLUnVuL0Jyb3dzZXJSdW4gdG8gd29yaykuCiAgICAgICAgIFFNaW1lRGF0YWJhc2Ug ZGI7Ci0gICAgICAgIFFNaW1lVHlwZSBtdCA9IGRiLm1pbWVUeXBlRm9yRmlsZShhcmNUZW1wRGly ICsgZmlsZSk7CisgICAgICAgIFFNaW1lVHlwZSBtdCA9IGRiLm1pbWVUeXBlRm9yRmlsZShtX2Fy Y1RlbXBEaXIgKyBmaWxlKTsKICAgICAgICAgaWYgKG10LmlzVmFsaWQoKSkKICAgICAgICAgICAg IG1pbWVUeXBlKG10Lm5hbWUoKSk7CiAKQEAgLTU5NCw3ICs1OTQsNyBAQCBLSU86OldvcmtlclJl c3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Z2V0KGNvbnN0IFFVcmwgJnVybCwgaW50IHRyaWVzKQog ICAgICAgICBwcm9jZXNzZWRTaXplKGJ1ZmYuc3Rfc2l6ZSk7CiAKICAgICAgICAgaWYgKGRlY29t cHJlc3NUb0ZpbGUpCi0gICAgICAgICAgICBRRmlsZShhcmNUZW1wRGlyICsgZmlsZSkucmVtb3Zl KCk7CisgICAgICAgICAgICBRRmlsZShtX2FyY1RlbXBEaXIgKyBmaWxlKS5yZW1vdmUoKTsKICAg ICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6cGFzcygpOwogICAgIH0KICAgICAvLyBzZW5kIGVt cHR5IGJ1ZmZlciB0byBtYXJrIEVPRgpAQCAtNjE1LDI2ICs2MTUsMjYgQEAgS0lPOjpXb3JrZXJS ZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OmRlbChRVXJsIGNvbnN0ICZ1cmwsIGJvb2wgaXNGaWxl KQogICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNjZXNzKCkpIHsKICAgICAgICAgcmV0dXJu IHNldEFyY0ZpbGVSZXN1bHQ7CiAgICAgfQotICAgIGlmIChuZXdBcmNoaXZlVVJMICYmICFpbml0 RGlyRGljdCh1cmwpKSB7CisgICAgaWYgKG1fbmV3QXJjaGl2ZVVSTCAmJiAhaW5pdERpckRpY3Qo dXJsKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfRU5U RVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkpOwogICAgIH0KIAogICAgIGlmIChkZWxDbWQuaXNF bXB0eSgpKSB7Ci0gICAgICAgIHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQUE9S VEVEX0FDVElPTiwgaTE4bigiRGVsZXRpbmcgZmlsZXMgZnJvbSAlMSBhcmNoaXZlcyBpcyBub3Qg c3VwcG9ydGVkLiIsIGFyY1R5cGUpKTsKKyAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFp bChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJEZWxldGluZyBmaWxlcyBmcm9tICUxIGFy Y2hpdmVzIGlzIG5vdCBzdXBwb3J0ZWQuIiwgbV9hcmNUeXBlKSk7CiAgICAgfQogICAgIGlmICgh ZmluZEZpbGVFbnRyeSh1cmwpKSB7Ci0gICAgICAgIGlmICgoYXJjVHlwZSAhPSAiYXJqIiAmJiBh cmNUeXBlICE9ICJsaGEiKSB8fCBpc0ZpbGUpIHsKKyAgICAgICAgaWYgKChtX2FyY1R5cGUgIT0g ImFyaiIgJiYgbV9hcmNUeXBlICE9ICJsaGEiKSB8fCBpc0ZpbGUpIHsKICAgICAgICAgICAgIHJl dHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoS0lPOjpFUlJfRE9FU19OT1RfRVhJU1QsIGdldFBhdGgo dXJsKSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBRU3RyaW5nIGZpbGUgPSBnZXRQYXRoKHVy bCkubWlkKGdldFBhdGgoYXJjRmlsZS0+dXJsKCkpLmxlbmd0aCgpICsgMSk7CisgICAgUVN0cmlu ZyBmaWxlID0gZ2V0UGF0aCh1cmwpLm1pZChnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCkpLmxlbmd0 aCgpICsgMSk7CiAgICAgaWYgKCFpc0ZpbGUgJiYgZmlsZS5yaWdodCgxKSAhPSBESVJfU0VQQVJB VE9SKSB7Ci0gICAgICAgIGlmIChhcmNUeXBlID09ICJ6aXAiKQorICAgICAgICBpZiAobV9hcmNU eXBlID09ICJ6aXAiKQogICAgICAgICAgICAgZmlsZSA9IGZpbGUgKyBESVJfU0VQQVJBVE9SOwog ICAgIH0KICAgICBLckxpbmVjb3VudGluZ1Byb2Nlc3MgcHJvYzsKLSAgICBwcm9jIDw8IGRlbENt ZCA8PCBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpKSA8PCBsb2NhbGVFbmNvZGVkU3RyaW5nKGZpbGUp OworICAgIHByb2MgPDwgZGVsQ21kIDw8IGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSkgPDwgbG9j YWxlRW5jb2RlZFN0cmluZyhmaWxlKTsKICAgICBpbmZvTWVzc2FnZShpMThuKCJEZWxldGluZyAl MS4uLiIsIHVybC5maWxlTmFtZSgpKSk7CiAKICAgICBTRVRfS1JDT0RFQwpAQCAtNjU5LDE5ICs2 NTksMTkgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnN0YXQoY29uc3Qg UVVybCAmdXJsKQogICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNjZXNzKCkpIHsKICAgICAg ICAgcmV0dXJuIHNldEFyY0ZpbGVSZXN1bHQ7CiAgICAgfQotICAgIGlmIChuZXdBcmNoaXZlVVJM ICYmICFpbml0RGlyRGljdCh1cmwpKSB7CisgICAgaWYgKG1fbmV3QXJjaGl2ZVVSTCAmJiAhaW5p dERpckRpY3QodXJsKSkgewogICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVSUl9D QU5OT1RfRU5URVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkpOwogICAgIH0KIAogICAgIGlmIChs aXN0Q21kLmlzRW1wdHkoKSkgewotICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEVS Ul9VTlNVUFBPUlRFRF9BQ1RJT04sIGkxOG4oIkFjY2Vzc2luZyBmaWxlcyBpcyBub3Qgc3VwcG9y dGVkIHdpdGggJTEgYXJjaGl2ZXMuIiwgYXJjVHlwZSkpOworICAgICAgICByZXR1cm4gV29ya2Vy UmVzdWx0OjpmYWlsKEVSUl9VTlNVUFBPUlRFRF9BQ1RJT04sIGkxOG4oIkFjY2Vzc2luZyBmaWxl cyBpcyBub3Qgc3VwcG9ydGVkIHdpdGggJTEgYXJjaGl2ZXMuIiwgbV9hcmNUeXBlKSk7CiAgICAg fQogCiAgICAgUVN0cmluZyBwYXRoID0gZ2V0UGF0aCh1cmwsIFFVcmw6OlN0cmlwVHJhaWxpbmdT bGFzaCk7CiAgICAgUVVybCBuZXdVcmwgPSB1cmw7CiAKICAgICAvLyBidXQgdHJlYXQgdGhlIGFy Y2hpdmUgaXRzZWxmIGFzIHRoZSBhcmNoaXZlIHJvb3QKLSAgICBpZiAocGF0aCA9PSBnZXRQYXRo KGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpKSB7CisgICAgaWYgKHBh dGggPT0gZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gp KSB7CiAgICAgICAgIG5ld1VybC5zZXRQYXRoKHBhdGggKyBESVJfU0VQQVJBVE9SKTsKICAgICAg ICAgcGF0aCA9IGdldFBhdGgobmV3VXJsKTsKICAgICB9CkBAIC03MDcsMTIgKzcwNywxMiBAQCBL SU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6Y29weShjb25zdCBRVXJsICZ1cmws IGNvbnN0IFFVcmwgJmRlc3QsIGludAogCiAgICAgLy8gS0RFIEhBQ0s6IG9wZW5pbmcgdGhlIHBh c3N3b3JkIGRsZyBpbiBjb3B5IGNhdXNlcyBlcnJvciBmb3IgdGhlIENPUFksIGFuZCBmdXJ0aGVy IHByb2JsZW1zCiAgICAgLy8gdGhhdCdzIHdoeSBlbmNyeXB0ZWQgZmlsZXMgYXJlIG5vdCBhbGxv d2VkIHRvIGNvcHkKLSAgICBpZiAoIWVuY3J5cHRlZCAmJiBkZXN0LmlzTG9jYWxGaWxlKCkpCisg ICAgaWYgKCFtX2VuY3J5cHRlZCAmJiBkZXN0LmlzTG9jYWxGaWxlKCkpCiAgICAgICAgIGRvIHsK ICAgICAgICAgICAgIGlmICh1cmwuZmlsZU5hbWUoKSAhPSBkZXN0LmZpbGVOYW1lKCkpCiAgICAg ICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGlmIChRVGV4dENvZGVjOjpjb2RlY0Zv ckxvY2FsZSgpLT5uYW1lKCkgIT0gY29kZWMtPm5hbWUoKSkKKyAgICAgICAgICAgIGlmIChRVGV4 dENvZGVjOjpjb2RlY0ZvckxvY2FsZSgpLT5uYW1lKCkgIT0gbV9jb2RlYy0+bmFtZSgpKQogICAg ICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAvLyB0aGUgZmlsZSBleGlzdHMgYW5k IHdlIGRvbid0IHdhbnQgdG8gb3ZlcndyaXRlCkBAIC03MjQsNyArNzI0LDcgQEAgS0lPOjpXb3Jr ZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OmNvcHkoY29uc3QgUVVybCAmdXJsLCBjb25zdCBR VXJsICZkZXN0LCBpbnQKICAgICAgICAgICAgIGlmICghc2V0QXJjRmlsZVJlc3VsdC5zdWNjZXNz KCkpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3VsdDsKICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgIGlmIChuZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwp KSB7CisgICAgICAgICAgICBpZiAobV9uZXdBcmNoaXZlVVJMICYmICFpbml0RGlyRGljdCh1cmwp KSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9U X0VOVEVSX0RJUkVDVE9SWSwgZ2V0UGF0aCh1cmwpKTsKICAgICAgICAgICAgIH0KIApAQCAtNzMy LDcgKzczMiw3IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpjb3B5KGNv bnN0IFFVcmwgJnVybCwgY29uc3QgUVVybCAmZGVzdCwgaW50CiAgICAgICAgICAgICBpZiAoY29w eUNtZC5pc0VtcHR5KCkgfHwgIWVudHJ5KQogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg ICAgICAgICBRU3RyaW5nIGZpbGUgPSBnZXRQYXRoKHVybCkubWlkKGdldFBhdGgoYXJjRmlsZS0+ dXJsKCkpLmxlbmd0aCgpICsgMSk7CisgICAgICAgICAgICBRU3RyaW5nIGZpbGUgPSBnZXRQYXRo KHVybCkubWlkKGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSkubGVuZ3RoKCkgKyAxKTsKIAogICAg ICAgICAgICAgUVN0cmluZyBkZXN0RGlyID0gZ2V0UGF0aChkZXN0LCBRVXJsOjpTdHJpcFRyYWls aW5nU2xhc2gpOwogICAgICAgICAgICAgaWYgKCFRRGlyKGRlc3REaXIpLmV4aXN0cygpKSB7CkBA IC03NDQsMTQgKzc0NCwxNCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6 Y29weShjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFFVcmwgJmRlc3QsIGludAogICAgICAgICAgICAg UURpcjo6c2V0Q3VycmVudChkZXN0RGlyKTsKIAogICAgICAgICAgICAgUVN0cmluZyBlc2NhcGVk RmlsZW5hbWUgPSBmaWxlOwotICAgICAgICAgICAgaWYgKGFyY1R5cGUgPT0gInppcCIpIHsKKyAg ICAgICAgICAgIGlmIChtX2FyY1R5cGUgPT0gInppcCIpIHsKICAgICAgICAgICAgICAgICAvLyBs ZWZ0IGJyYWNrZXQgbmVlZHMgdG8gYmUgZXNjYXBlZAogICAgICAgICAgICAgICAgIGVzY2FwZWRG aWxlbmFtZS5yZXBsYWNlKCdbJywgIltbXSIpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAg ICBLckxpbmVjb3VudGluZ1Byb2Nlc3MgcHJvYzsKLSAgICAgICAgICAgIHByb2MgPDwgY29weUNt ZCA8PCBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpIDw8 IGVzY2FwZWRGaWxlbmFtZTsKLSAgICAgICAgICAgIGlmIChhcmNUeXBlID09ICJhY2UiICYmIFFG aWxlKCIvZGV2L3B0bXgiKS5leGlzdHMoKSkgLy8gRG9uJ3QgcmVtb3ZlLCB1bmFjZSBjcmFzaGVz IGlmIG1pc3NpbmchISEKKyAgICAgICAgICAgIHByb2MgPDwgY29weUNtZCA8PCBnZXRQYXRoKG1f YXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkgPDwgZXNjYXBlZEZpbGVu YW1lOworICAgICAgICAgICAgaWYgKG1fYXJjVHlwZSA9PSAiYWNlIiAmJiBRRmlsZSgiL2Rldi9w dG14IikuZXhpc3RzKCkpIC8vIERvbid0IHJlbW92ZSwgdW5hY2UgY3Jhc2hlcyBpZiBtaXNzaW5n ISEhCiAgICAgICAgICAgICAgICAgcHJvYy5zZXRTdGFuZGFyZElucHV0RmlsZSgiL2Rldi9wdG14 Iik7CiAgICAgICAgICAgICBwcm9jLnNldE91dHB1dENoYW5uZWxNb2RlKEtQcm9jZXNzOjpTZXBh cmF0ZUNoYW5uZWxzKTsgLy8gd2l0aG91dCB0aGlzIG91dHB1dCByZWRpcmVjdGlvbiBoYXMgbm8g ZWZmZWN0CiAKQEAgLTc3MCw3ICs3NzAsNyBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ cm90b2NvbDo6Y29weShjb25zdCBRVXJsICZ1cmwsIGNvbnN0IFFVcmwgJmRlc3QsIGludAogICAg ICAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6cGFzcygpOwogICAgICAgICB9IHdoaWxlIChm YWxzZSk7CiAKLSAgICBpZiAoZW5jcnlwdGVkKQorICAgIGlmIChtX2VuY3J5cHRlZCkKICAgICAg ICAgS1JERUJVRygiRVJST1I6ICIgPDwgdXJsLnBhdGgoKSA8PCAiIGlzIGVuY3J5cHRlZC4iKTsK ICAgICBpZiAoIWRlc3QuaXNMb2NhbEZpbGUoKSkKICAgICAgICAgS1JERUJVRygiRVJST1I6ICIg PDwgZGVzdC5wYXRoKCkgPDwgIiBpcyBub3QgYSBsb2NhbCBmaWxlLiIpOwpAQCAtNzg4LDcgKzc4 OCw3IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjpyZW5hbWUoY29uc3Qg UVVybCAmc3JjLCBjb25zdCBRVXJsICZkZXN0LCBLCiAgICAgUV9VTlVTRUQoZmxhZ3MpOwogCiAg ICAgS1JERUJVRygicmVuYW1pbmcgZnJvbTogIiA8PCBzcmMucGF0aCgpIDw8ICIgdG86ICIgPDwg ZGVzdC5wYXRoKCkpOwotICAgIEtSREVCVUcoImNvbW1hbmQ6ICIgPDwgYXJjUGF0aCk7CisgICAg S1JERUJVRygiY29tbWFuZDogIiA8PCBtX2FyY1BhdGgpOwogCiAgICAgY29uc3QgYXV0byB3cml0 ZVN1cHBvcnRSZXN1bHQgPSBjaGVja1dyaXRlU3VwcG9ydCgpOwogICAgIGlmICghd3JpdGVTdXBw b3J0UmVzdWx0LnN1Y2Nlc3MoKSkKQEAgLTgwMyw3ICs4MDMsNyBAQCBLSU86OldvcmtlclJlc3Vs dCBraW9fa3JhcmNQcm90b2NvbDo6cmVuYW1lKGNvbnN0IFFVcmwgJnNyYywgY29uc3QgUVVybCAm ZGVzdCwgSwogICAgIH0KIAogICAgIEtyTGluZWNvdW50aW5nUHJvY2VzcyBwcm9jOwotICAgIHBy b2MgPDwgcmVuQ21kIDw8IGFyY1BhdGggPDwgc3JjLnBhdGgoKS5yZW1vdmUoYXJjUGF0aCArICcv JykgPDwgZGVzdC5wYXRoKCkucmVtb3ZlKGFyY1BhdGggKyAnLycpOworICAgIHByb2MgPDwgcmVu Q21kIDw8IG1fYXJjUGF0aCA8PCBzcmMucGF0aCgpLnJlbW92ZShtX2FyY1BhdGggKyAnLycpIDw8 IGRlc3QucGF0aCgpLnJlbW92ZShtX2FyY1BhdGggKyAnLycpOwogICAgIHByb2Muc3RhcnQoKTsK ICAgICBwcm9jLndhaXRGb3JGaW5pc2hlZCgpOwogCkBAIC04MjMsNyArODIzLDcgQEAgS0lPOjpX b3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6Omxpc3REaXIoY29uc3QgUVVybCAmdXJsKQog ICAgICAgICByZXR1cm4gc2V0QXJjRmlsZVJlc3VsdDsKICAgICB9CiAgICAgaWYgKGxpc3RDbWQu aXNFbXB0eSgpKSB7Ci0gICAgICAgIHJldHVybiBXb3JrZXJSZXN1bHQ6OmZhaWwoRVJSX1VOU1VQ UE9SVEVEX0FDVElPTiwgaTE4bigiTGlzdGluZyBmb2xkZXJzIGlzIG5vdCBzdXBwb3J0ZWQgZm9y ICUxIGFyY2hpdmVzLiIsIGFyY1R5cGUpKTsKKyAgICAgICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6 ZmFpbChFUlJfVU5TVVBQT1JURURfQUNUSU9OLCBpMThuKCJMaXN0aW5nIGZvbGRlcnMgaXMgbm90 IHN1cHBvcnRlZCBmb3IgJTEgYXJjaGl2ZXMuIiwgbV9hcmNUeXBlKSk7CiAgICAgfQogICAgIFFT dHJpbmcgcGF0aCA9IGdldFBhdGgodXJsKTsKICAgICBpZiAocGF0aC5yaWdodCgxKSAhPSBESVJf U0VQQVJBVE9SKQpAQCAtODQ0LDE1ICs4NDQsMTUgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2ty YXJjUHJvdG9jb2w6Omxpc3REaXIoY29uc3QgUVVybCAmdXJsKQogICAgICAgICByZXR1cm4gV29y a2VyUmVzdWx0OjpmYWlsKEVSUl9DQU5OT1RfRU5URVJfRElSRUNUT1JZLCBnZXRQYXRoKHVybCkp OwogICAgIH0KIAotICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0aChhcmNGaWxl LT51cmwoKSkubGVuZ3RoKCkpOworICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0 aChtX2FyY0ZpbGUtPnVybCgpKS5sZW5ndGgoKSk7CiAgICAgYXJjRGlyLnRydW5jYXRlKGFyY0Rp ci5sYXN0SW5kZXhPZihESVJfU0VQQVJBVE9SKSk7CiAgICAgaWYgKGFyY0Rpci5yaWdodCgxKSAh PSBESVJfU0VQQVJBVE9SKQogICAgICAgICBhcmNEaXIgPSBhcmNEaXIgKyBESVJfU0VQQVJBVE9S OwogCi0gICAgaWYgKGRpckRpY3QuZmluZChhcmNEaXIpID09IGRpckRpY3QuZW5kKCkpIHsKKyAg ICBpZiAobV9kaXJEaWN0LmZpbmQoYXJjRGlyKSA9PSBtX2RpckRpY3QuZW5kKCkpIHsKICAgICAg ICAgcmV0dXJuIFdvcmtlclJlc3VsdDo6ZmFpbChFUlJfQ0FOTk9UX0VOVEVSX0RJUkVDVE9SWSwg Z2V0UGF0aCh1cmwpKTsKICAgICB9Ci0gICAgVURTRW50cnlMaXN0ICpkaXJMaXN0ID0gZGlyRGlj dFthcmNEaXJdOworICAgIFVEU0VudHJ5TGlzdCAqZGlyTGlzdCA9IG1fZGlyRGljdFthcmNEaXJd OwogICAgIHRvdGFsU2l6ZShkaXJMaXN0LT5zaXplKCkpOwogICAgIGxpc3RFbnRyaWVzKCpkaXJM aXN0KTsKICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpwYXNzKCk7CkBAIC04NjQsNDAgKzg2NCw0 MCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6c2V0QXJjRmlsZShjb25z dCBRVXJsICZ1cmwpCiAgICAgS1JERUJVRyh1cmwuZmlsZU5hbWUoKSk7CiAgICAgUVN0cmluZyBw YXRoID0gZ2V0UGF0aCh1cmwpOwogICAgIHRpbWVfdCBjdXJyVGltZSA9IHRpbWUobnVsbHB0cik7 Ci0gICAgYXJjaGl2ZUNoYW5nZWQgPSB0cnVlOwotICAgIG5ld0FyY2hpdmVVUkwgPSB0cnVlOwor ICAgIG1fYXJjaGl2ZUNoYW5nZWQgPSB0cnVlOworICAgIG1fbmV3QXJjaGl2ZVVSTCA9IHRydWU7 CiAgICAgLy8gaXMgdGhlIGZpbGUgYWxyZWFkeSBzZXQgPwotICAgIGlmIChhcmNGaWxlICYmIGdl dFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkgPT0gcGF0aC5s ZWZ0KGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkubGVu Z3RoKCkpKSB7Ci0gICAgICAgIG5ld0FyY2hpdmVVUkwgPSBmYWxzZTsKKyAgICBpZiAobV9hcmNG aWxlICYmIGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNo KSA9PSBwYXRoLmxlZnQoZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWls aW5nU2xhc2gpLmxlbmd0aCgpKSkgeworICAgICAgICBtX25ld0FyY2hpdmVVUkwgPSBmYWxzZTsK ICAgICAgICAgLy8gSGFzIGl0IGNoYW5nZWQgPwotICAgICAgICBLRmlsZUl0ZW0gKm5ld0FyY0Zp bGUgPSBuZXcgS0ZpbGVJdGVtKGFyY0ZpbGUtPnVybCgpLCBRU3RyaW5nKCksIGFyY0ZpbGUtPm1v ZGUoKSk7Ci0gICAgICAgIGlmIChtZXRhRGF0YSgiQ2hhcnNldCIpICE9IGN1cnJlbnRDaGFyc2V0 IHx8ICFuZXdBcmNGaWxlLT5jbXAoKmFyY0ZpbGUpKSB7Ci0gICAgICAgICAgICBjdXJyZW50Q2hh cnNldCA9IG1ldGFEYXRhKCJDaGFyc2V0Iik7Ci0KLSAgICAgICAgICAgIGNvZGVjID0gUVRleHRD b2RlYzo6Y29kZWNGb3JOYW1lKGN1cnJlbnRDaGFyc2V0LnRvTGF0aW4xKCkpOwotICAgICAgICAg ICAgaWYgKGNvZGVjID09IG51bGxwdHIpCi0gICAgICAgICAgICAgICAgY29kZWMgPSBRVGV4dENv ZGVjOjpjb2RlY0Zvck1pYig0IC8qIGxhdGluLTEgKi8pOwotCi0gICAgICAgICAgICBkZWxldGUg YXJjRmlsZTsKLSAgICAgICAgICAgIHBhc3N3b3JkLmNsZWFyKCk7Ci0gICAgICAgICAgICBleHRB cmNSZWFkeSA9IGZhbHNlOwotICAgICAgICAgICAgYXJjRmlsZSA9IG5ld0FyY0ZpbGU7CisgICAg ICAgIEtGaWxlSXRlbSAqbmV3QXJjRmlsZSA9IG5ldyBLRmlsZUl0ZW0obV9hcmNGaWxlLT51cmwo KSwgUVN0cmluZygpLCBtX2FyY0ZpbGUtPm1vZGUoKSk7CisgICAgICAgIGlmIChtZXRhRGF0YSgi Q2hhcnNldCIpICE9IG1fY3VycmVudENoYXJzZXQgfHwgIW5ld0FyY0ZpbGUtPmNtcCgqbV9hcmNG aWxlKSkgeworICAgICAgICAgICAgbV9jdXJyZW50Q2hhcnNldCA9IG1ldGFEYXRhKCJDaGFyc2V0 Iik7CisKKyAgICAgICAgICAgIG1fY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUobV9j dXJyZW50Q2hhcnNldC50b0xhdGluMSgpKTsKKyAgICAgICAgICAgIGlmIChtX2NvZGVjID09IG51 bGxwdHIpCisgICAgICAgICAgICAgICAgbV9jb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTWli KDQgLyogbGF0aW4tMSAqLyk7CisKKyAgICAgICAgICAgIGRlbGV0ZSBtX2FyY0ZpbGU7CisgICAg ICAgICAgICBtX3Bhc3N3b3JkLmNsZWFyKCk7CisgICAgICAgICAgICBtX2V4dEFyY1JlYWR5ID0g ZmFsc2U7CisgICAgICAgICAgICBtX2FyY0ZpbGUgPSBuZXdBcmNGaWxlOwogICAgICAgICB9IGVs c2UgeyAvLyBzYW1lIG9sZCBmaWxlCiAgICAgICAgICAgICBkZWxldGUgbmV3QXJjRmlsZTsKLSAg ICAgICAgICAgIGFyY2hpdmVDaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZW5jcnlw dGVkICYmIHBhc3N3b3JkLmlzTnVsbCgpKQorICAgICAgICAgICAgbV9hcmNoaXZlQ2hhbmdlZCA9 IGZhbHNlOworICAgICAgICAgICAgaWYgKG1fZW5jcnlwdGVkICYmIG1fcGFzc3dvcmQuaXNOdWxs KCkpCiAgICAgICAgICAgICAgICAgKHZvaWQpaW5pdEFyY1BhcmFtZXRlcnMoKTsKICAgICAgICAg fQogICAgIH0gZWxzZSB7IC8vIGl0J3MgYSBuZXcgZmlsZS4uLgotICAgICAgICBleHRBcmNSZWFk eSA9IGZhbHNlOworICAgICAgICBtX2V4dEFyY1JlYWR5ID0gZmFsc2U7CiAKICAgICAgICAgLy8g bmV3IGFyY2hpdmUgZmlsZSBtZWFucyBuZXcgZGlyRGljdCwgdG9vCi0gICAgICAgIGRpckRpY3Qu Y2xlYXIoKTsKKyAgICAgICAgbV9kaXJEaWN0LmNsZWFyKCk7CiAKLSAgICAgICAgaWYgKGFyY0Zp bGUpIHsKLSAgICAgICAgICAgIGRlbGV0ZSBhcmNGaWxlOwotICAgICAgICAgICAgcGFzc3dvcmQu Y2xlYXIoKTsKLSAgICAgICAgICAgIGFyY0ZpbGUgPSBudWxscHRyOworICAgICAgICBpZiAobV9h cmNGaWxlKSB7CisgICAgICAgICAgICBkZWxldGUgbV9hcmNGaWxlOworICAgICAgICAgICAgbV9w YXNzd29yZC5jbGVhcigpOworICAgICAgICAgICAgbV9hcmNGaWxlID0gbnVsbHB0cjsKICAgICAg ICAgfQogICAgICAgICBRU3RyaW5nIG5ld1BhdGggPSBwYXRoOwogICAgICAgICBpZiAobmV3UGF0 aC5yaWdodCgxKSAhPSBESVJfU0VQQVJBVE9SKQpAQCAtOTA3LDE5ICs5MDcsMTkgQEAgS0lPOjpX b3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnNldEFyY0ZpbGUoY29uc3QgUVVybCAmdXJs KQogICAgICAgICAgICAgaWYgKHFmaS5leGlzdHMoKSAmJiAhcWZpLmlzRGlyKCkpIHsKICAgICAg ICAgICAgICAgICBRVF9TVEFUQlVGIHN0YXRfcDsKICAgICAgICAgICAgICAgICBRVF9MU1RBVChu ZXdQYXRoLmxlZnQocG9zKS50b0xvY2FsOEJpdCgpLmNvbnN0RGF0YSgpLCAmc3RhdF9wKTsKLSAg ICAgICAgICAgICAgICBhcmNGaWxlID0gbmV3IEtGaWxlSXRlbShRVXJsOjpmcm9tTG9jYWxGaWxl KG5ld1BhdGgubGVmdChwb3MpKSwgUVN0cmluZygpLCBzdGF0X3Auc3RfbW9kZSk7CisgICAgICAg ICAgICAgICAgbV9hcmNGaWxlID0gbmV3IEtGaWxlSXRlbShRVXJsOjpmcm9tTG9jYWxGaWxlKG5l d1BhdGgubGVmdChwb3MpKSwgUVN0cmluZygpLCBzdGF0X3Auc3RfbW9kZSk7CiAgICAgICAgICAg ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFhcmNG aWxlKSB7CisgICAgICAgIGlmICghbV9hcmNGaWxlKSB7CiAgICAgICAgICAgICAvLyBLUkRFQlVH KCJFUlJPUjogIiA8PCBwYXRoIDw8ICIgZG9lcyBub3QgZXhpc3QuIik7CiAgICAgICAgICAgICBy ZXR1cm4gV29ya2VyUmVzdWx0OjpmYWlsKEtJTzo6RVJSX0RPRVNfTk9UX0VYSVNULCB1cmwudG9T dHJpbmcoKSk7CiAgICAgICAgIH0KLSAgICAgICAgY3VycmVudENoYXJzZXQgPSBtZXRhRGF0YSgi Q2hhcnNldCIpOworICAgICAgICBtX2N1cnJlbnRDaGFyc2V0ID0gbWV0YURhdGEoIkNoYXJzZXQi KTsKIAotICAgICAgICBjb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTmFtZShjdXJyZW50Q2hh cnNldC50b0xhdGluMSgpKTsKLSAgICAgICAgaWYgKGNvZGVjID09IG51bGxwdHIpCi0gICAgICAg ICAgICBjb2RlYyA9IFFUZXh0Q29kZWM6OmNvZGVjRm9yTWliKDQgLyogbGF0aW4tMSAqLyk7Cisg ICAgICAgIG1fY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck5hbWUobV9jdXJyZW50Q2hhcnNl dC50b0xhdGluMSgpKTsKKyAgICAgICAgaWYgKG1fY29kZWMgPT0gbnVsbHB0cikKKyAgICAgICAg ICAgIG1fY29kZWMgPSBRVGV4dENvZGVjOjpjb2RlY0Zvck1pYig0IC8qIGxhdGluLTEgKi8pOwog ICAgIH0KIAogICAgIC8qIEZJWDogZmlsZSBjaGFuZ2UgY2FuIG9ubHkgYmUgZGV0ZWN0ZWQgaWYg dGhlIHRpbWVzdGFtcCBiZXR3ZWVuIHRoZSB0d28gY29uc2VxdWVudApAQCAtOTI5LDI3ICs5Mjks MjcgQEAgS0lPOjpXb3JrZXJSZXN1bHQga2lvX2tyYXJjUHJvdG9jb2w6OnNldEFyY0ZpbGUoY29u c3QgUVVybCAmdXJsKQogICAgICAgIGlmIHRoZSBtb2RpZmljYXRpb24gdGltZSBlcXVhbHMgd2l0 aCB0aGUgY3VycmVudCB0aW1lLiBXaGlsZSB0aGlzIGNvbmRpdGlvbiBpcyB0cnVlLAogICAgICAg IHdlIGNhbiBzYXksIHRoYXQgdGhlIGFyY2hpdmUgaXMgY2hhbmdpbmcsIHNvIGNvbnRlbnQgcmVy ZWFkIGlzIGFsd2F5cyBuZWNlc3NhcnkKICAgICAgICBkdXJpbmcgdGhhdCBwZXJpb2QuICovCi0g ICAgaWYgKGFyY2hpdmVDaGFuZ2luZykKLSAgICAgICAgYXJjaGl2ZUNoYW5nZWQgPSB0cnVlOwot ICAgIGFyY2hpdmVDaGFuZ2luZyA9IChjdXJyVGltZSA9PSAodGltZV90KWFyY0ZpbGUtPnRpbWUo S0ZpbGVJdGVtOjpNb2RpZmljYXRpb25UaW1lKS50b1NlY3NTaW5jZUVwb2NoKCkpOworICAgIGlm IChtX2FyY2hpdmVDaGFuZ2luZykKKyAgICAgICAgbV9hcmNoaXZlQ2hhbmdlZCA9IHRydWU7Cisg ICAgbV9hcmNoaXZlQ2hhbmdpbmcgPSAoY3VyclRpbWUgPT0gKHRpbWVfdCltX2FyY0ZpbGUtPnRp bWUoS0ZpbGVJdGVtOjpNb2RpZmljYXRpb25UaW1lKS50b1NlY3NTaW5jZUVwb2NoKCkpOwogCi0g ICAgYXJjUGF0aCA9IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdT bGFzaCk7Ci0gICAgYXJjVHlwZSA9IGRldGVjdEFyY2hpdmUoZW5jcnlwdGVkLCBhcmNQYXRoKTsK KyAgICBtX2FyY1BhdGggPSBnZXRQYXRoKG1fYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh aWxpbmdTbGFzaCk7CisgICAgbV9hcmNUeXBlID0gZGV0ZWN0QXJjaGl2ZShtX2VuY3J5cHRlZCwg bV9hcmNQYXRoKTsKIAotICAgIGlmIChhcmNUeXBlID09ICJ0YnoiKQotICAgICAgICBhcmNUeXBl ID0gImJ6aXAyIjsKLSAgICBlbHNlIGlmIChhcmNUeXBlID09ICJ0Z3oiKQotICAgICAgICBhcmNU eXBlID0gImd6aXAiOwotICAgIGVsc2UgaWYgKGFyY1R5cGUgPT0gInRseiIpCi0gICAgICAgIGFy Y1R5cGUgPSAibHptYSI7Ci0gICAgZWxzZSBpZiAoYXJjVHlwZSA9PSAidHh6IikKLSAgICAgICAg YXJjVHlwZSA9ICJ4eiI7CisgICAgaWYgKG1fYXJjVHlwZSA9PSAidGJ6IikKKyAgICAgICAgbV9h cmNUeXBlID0gImJ6aXAyIjsKKyAgICBlbHNlIGlmIChtX2FyY1R5cGUgPT0gInRneiIpCisgICAg ICAgIG1fYXJjVHlwZSA9ICJnemlwIjsKKyAgICBlbHNlIGlmIChtX2FyY1R5cGUgPT0gInRseiIp CisgICAgICAgIG1fYXJjVHlwZSA9ICJsem1hIjsKKyAgICBlbHNlIGlmIChtX2FyY1R5cGUgPT0g InR4eiIpCisgICAgICAgIG1fYXJjVHlwZSA9ICJ4eiI7CiAKLSAgICBpZiAoYXJjVHlwZS5pc0Vt cHR5KCkpIHsKLSAgICAgICAgYXJjVHlwZSA9IGFyY0ZpbGUtPm1pbWV0eXBlKCk7Ci0gICAgICAg IGFyY1R5cGUgPSBnZXRTaG9ydFR5cGVGcm9tTWltZShhcmNUeXBlKTsKLSAgICAgICAgaWYgKGFy Y1R5cGUgPT0gImphciIpCi0gICAgICAgICAgICBhcmNUeXBlID0gInppcCI7CisgICAgaWYgKG1f YXJjVHlwZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9hcmNUeXBlID0gbV9hcmNGaWxlLT5taW1l dHlwZSgpOworICAgICAgICBtX2FyY1R5cGUgPSBnZXRTaG9ydFR5cGVGcm9tTWltZShtX2FyY1R5 cGUpOworICAgICAgICBpZiAobV9hcmNUeXBlID09ICJqYXIiKQorICAgICAgICAgICAgbV9hcmNU eXBlID0gInppcCI7CiAgICAgfQogCiAgICAgcmV0dXJuIGluaXRBcmNQYXJhbWV0ZXJzKCk7CkBA IC05NjMsMTIgKzk2MywxMiBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0RGlyRGljdChj b25zdCBRVXJsICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgIC8vIGlmKCAhc2V0QXJjRmlsZShnZXRQ YXRoKHVybCkpICkgcmV0dXJuIGZhbHNlOwogICAgIC8vIG5vIG5lZWQgdG8gcmVzY2FuIHRoZSBh cmNoaXZlIGlmIGl0J3Mgbm90IGNoYW5nZWQKICAgICAvLyBLUkRFQlVHKCJhY2hpdmVDaGFuZ2Vk OiAiIDw8IGFyY2hpdmVDaGFuZ2VkIDw8ICIgZm9yY2VkOiAiIDw8IGZvcmNlZCk7Ci0gICAgaWYg KCFhcmNoaXZlQ2hhbmdlZCAmJiAhZm9yY2VkKSB7CisgICAgaWYgKCFtX2FyY2hpdmVDaGFuZ2Vk ICYmICFmb3JjZWQpIHsKICAgICAgICAgLy8gS1JERUJVRygiZG9pbmcgbm90aGluZy4iKTsKICAg ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZXh0QXJjUmVhZHkgPSBmYWxzZTsKKyAg ICBtX2V4dEFyY1JlYWR5ID0gZmFsc2U7CiAKICAgICBjb25zdCBhdXRvIHNldEFyY0ZpbGVSZXN1 bHQgPSBzZXRBcmNGaWxlKHVybCk7CiAgICAgaWYgKCFzZXRBcmNGaWxlUmVzdWx0LnN1Y2Nlc3Mo KSkgeyAvKiBpZiB0aGUgYXJjaGl2ZSB3YXMgY2hhbmdlZCByZWZyZXNoIHRoZSBmaWxlIGluZm9y bWF0aW9uICovCkBAIC05ODQsMTUgKzk4NCwxNSBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjpp bml0RGlyRGljdChjb25zdCBRVXJsICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgICAgICByZXR1cm4g ZmFsc2U7CiAgICAgfQogCi0gICAgaWYgKGFyY1R5cGUgIT0gImJ6aXAyIiAmJiBhcmNUeXBlICE9 ICJsem1hIiAmJiBhcmNUeXBlICE9ICJ4eiIpIHsKLSAgICAgICAgaWYgKGFyY1R5cGUgPT0gInJw bSIpIHsKLSAgICAgICAgICAgIHByb2MgPDwgbGlzdENtZCA8PCBhcmNQYXRoOworICAgIGlmICht X2FyY1R5cGUgIT0gImJ6aXAyIiAmJiBtX2FyY1R5cGUgIT0gImx6bWEiICYmIG1fYXJjVHlwZSAh PSAieHoiKSB7CisgICAgICAgIGlmIChtX2FyY1R5cGUgPT0gInJwbSIpIHsKKyAgICAgICAgICAg IHByb2MgPDwgbGlzdENtZCA8PCBtX2FyY1BhdGg7CiAgICAgICAgICAgICBwcm9jLnNldFN0YW5k YXJkT3V0cHV0RmlsZSh0ZW1wLmZpbGVOYW1lKCkpOwogICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgcHJvYyA8PCBsaXN0Q21kIDw8IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0 cmlwVHJhaWxpbmdTbGFzaCk7CisgICAgICAgICAgICBwcm9jIDw8IGxpc3RDbWQgPDwgZ2V0UGF0 aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gpOwogICAgICAgICAg ICAgcHJvYy5zZXRTdGFuZGFyZE91dHB1dEZpbGUodGVtcC5maWxlTmFtZSgpKTsKICAgICAgICAg fQotICAgICAgICBpZiAoYXJjVHlwZSA9PSAiYWNlIiAmJiBRRmlsZSgiL2Rldi9wdG14IikuZXhp c3RzKCkpIC8vIERvbid0IHJlbW92ZSwgdW5hY2UgY3Jhc2hlcyBpZiBtaXNzaW5nISEhCisgICAg ICAgIGlmIChtX2FyY1R5cGUgPT0gImFjZSIgJiYgUUZpbGUoIi9kZXYvcHRteCIpLmV4aXN0cygp KSAvLyBEb24ndCByZW1vdmUsIHVuYWNlIGNyYXNoZXMgaWYgbWlzc2luZyEhIQogICAgICAgICAg ICAgcHJvYy5zZXRTdGFuZGFyZElucHV0RmlsZSgiL2Rldi9wdG14Iik7CiAKICAgICAgICAgcHJv Yy5zZXRPdXRwdXRDaGFubmVsTW9kZShLUHJvY2Vzczo6U2VwYXJhdGVDaGFubmVscyk7IC8vIHdp dGhvdXQgdGhpcyBvdXRwdXQgcmVkaXJlY3Rpb24gaGFzIG5vIGVmZmVjdApAQCAtMTAwMywxNCAr MTAwMywxNCBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0RGlyRGljdChjb25zdCBRVXJs ICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgIH0KICAgICAvLyBjbGVhciB0aGUgZGlyIGRpY3Rpb25h cnkKIAotICAgIFFIYXNoSXRlcmF0b3I8UVN0cmluZywgS0lPOjpVRFNFbnRyeUxpc3QgKj4gbGl0 KGRpckRpY3QpOworICAgIFFIYXNoSXRlcmF0b3I8UVN0cmluZywgS0lPOjpVRFNFbnRyeUxpc3Qg Kj4gbGl0KG1fZGlyRGljdCk7CiAgICAgd2hpbGUgKGxpdC5oYXNOZXh0KCkpCiAgICAgICAgIGRl bGV0ZSBsaXQubmV4dCgpLnZhbHVlKCk7Ci0gICAgZGlyRGljdC5jbGVhcigpOworICAgIG1fZGly RGljdC5jbGVhcigpOwogCiAgICAgLy8gYWRkIHRoZSAiLyIgZGlyZWN0b3J5CiAgICAgYXV0byAq cm9vdCA9IG5ldyBVRFNFbnRyeUxpc3QoKTsKLSAgICBkaXJEaWN0Lmluc2VydChESVJfU0VQQVJB VE9SLCByb290KTsKKyAgICBtX2RpckRpY3QuaW5zZXJ0KERJUl9TRVBBUkFUT1IsIHJvb3QpOwog ICAgIC8vIGFuZCB0aGUgIi8iIFVEU0VudHJ5CiAgICAgVURTRW50cnkgZW50cnk7CiAgICAgZW50 cnkuZmFzdEluc2VydChLSU86OlVEU0VudHJ5OjpVRFNfTkFNRSwgIi4iKTsKQEAgLTEwMjAsNyAr MTAyMCw3IEBAIGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmluaXREaXJEaWN0KGNvbnN0IFFVcmwg JnVybCwgYm9vbCBmb3JjZWQpCiAKICAgICByb290LT5hcHBlbmQoZW50cnkpOwogCi0gICAgaWYg KGFyY1R5cGUgPT0gImJ6aXAyIiB8fCBhcmNUeXBlID09ICJsem1hIiB8fCBhcmNUeXBlID09ICJ4 eiIpCisgICAgaWYgKG1fYXJjVHlwZSA9PSAiYnppcDIiIHx8IG1fYXJjVHlwZSA9PSAibHptYSIg fHwgbV9hcmNUeXBlID09ICJ4eiIpCiAgICAgICAgIGFib3J0KCk7CiAKICAgICBjaGFyIGJ1Zlsx MDAwXTsKQEAgLTEwMjksNyArMTAyOSw3IEBAIGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmluaXRE aXJEaWN0KGNvbnN0IFFVcmwgJnVybCwgYm9vbCBmb3JjZWQpCiAgICAgaW50IGxpbmVObyA9IDA7 CiAgICAgYm9vbCBpbnZhbGlkTGluZSA9IGZhbHNlOwogICAgIC8vIHRoZSByYXIgbGlzdCBpcyBz dGFydGVkIHdpdGggYSAtLS0tLS0gbGluZS4KLSAgICBpZiAoYXJjVHlwZSA9PSAicmFyIiB8fCBh cmNUeXBlID09ICJhcmoiIHx8IGFyY1R5cGUgPT0gImxoYSIgfHwgYXJjVHlwZSA9PSAiN3oiKSB7 CisgICAgaWYgKG1fYXJjVHlwZSA9PSAicmFyIiB8fCBtX2FyY1R5cGUgPT0gImFyaiIgfHwgbV9h cmNUeXBlID09ICJsaGEiIHx8IG1fYXJjVHlwZSA9PSAiN3oiKSB7CiAgICAgICAgIHdoaWxlICh0 ZW1wLnJlYWRMaW5lKGJ1ZiwgMTAwMCkgIT0gLTEpIHsKICAgICAgICAgICAgIGxpbmUgPSBkZWNv ZGVTdHJpbmcoYnVmKTsKICAgICAgICAgICAgIGlmIChsaW5lLnN0YXJ0c1dpdGgoUUxhdGluMVN0 cmluZygiLS0tLS0tLS0tLSIpKSkKQEAgLTEwMzgsNyArMTAzOCw3IEBAIGJvb2wga2lvX2tyYXJj UHJvdG9jb2w6OmluaXREaXJEaWN0KGNvbnN0IFFVcmwgJnVybCwgYm9vbCBmb3JjZWQpCiAgICAg fQogICAgIHdoaWxlICh0ZW1wLnJlYWRMaW5lKGJ1ZiwgMTAwMCkgIT0gLTEpIHsKICAgICAgICAg bGluZSA9IGRlY29kZVN0cmluZyhidWYpOwotICAgICAgICBpZiAoYXJjVHlwZSA9PSAicmFyIikg eworICAgICAgICBpZiAobV9hcmNUeXBlID09ICJyYXIiKSB7CiAgICAgICAgICAgICAvLyB0aGUg cmFyIGxpc3QgaXMgZW5kZWQgd2l0aCBhIC0tLS0tLSBsaW5lLgogICAgICAgICAgICAgaWYgKGxp bmUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCItLS0tLS0tLS0tIikpKSB7CiAgICAgICAgICAg ICAgICAgaW52YWxpZExpbmUgPSAhaW52YWxpZExpbmU7CkBAIC0xMDUxLDEyICsxMDUxLDEyIEBA IGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmluaXREaXJEaWN0KGNvbnN0IFFVcmwgJnVybCwgYm9v bCBmb3JjZWQpCiAgICAgICAgICAgICAgICAgICAgIGxpbmVbMF0gPSAnICc7CiAgICAgICAgICAg ICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFyY1R5cGUgPT0gImFjZSIpIHsKKyAgICAgICAg aWYgKG1fYXJjVHlwZSA9PSAiYWNlIikgewogICAgICAgICAgICAgLy8gdGhlIGFjZSBsaXN0IGJl Z2lucyB3aXRoIGEgbnVtYmVyLgogICAgICAgICAgICAgaWYgKCFsaW5lWzBdLmlzRGlnaXQoKSkK ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBpZiAoYXJjVHlw ZSA9PSAiYXJqIikgeworICAgICAgICBpZiAobV9hcmNUeXBlID09ICJhcmoiKSB7CiAgICAgICAg ICAgICAvLyB0aGUgYXJqIGxpc3QgaXMgZW5kZWQgd2l0aCBhIC0tLS0tLSBsaW5lLgogICAgICAg ICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChRTGF0aW4xU3RyaW5nKCItLS0tLS0tLS0tIikpKSB7 CiAgICAgICAgICAgICAgICAgaW52YWxpZExpbmUgPSAhaW52YWxpZExpbmU7CkBAIC0xMDczLDcg KzEwNzMsNyBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0RGlyRGljdChjb25zdCBRVXJs ICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lICsgZGVjb2Rl U3RyaW5nKGJ1Zik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGFyY1R5 cGUgPT0gImxoYSIgfHwgYXJjVHlwZSA9PSAiN3oiKSB7CisgICAgICAgIGlmIChtX2FyY1R5cGUg PT0gImxoYSIgfHwgbV9hcmNUeXBlID09ICI3eiIpIHsKICAgICAgICAgICAgIC8vIHRoZSBhcmog bGlzdCBpcyBlbmRlZCB3aXRoIGEgLS0tLS0tIGxpbmUuCiAgICAgICAgICAgICBpZiAobGluZS5z dGFydHNXaXRoKFFMYXRpbjFTdHJpbmcoIi0tLS0tLS0tLS0iKSkpCiAgICAgICAgICAgICAgICAg YnJlYWs7CkBAIC0xMDgzLDcgKzEwODMsNyBAQCBib29sIGtpb19rcmFyY1Byb3RvY29sOjppbml0 RGlyRGljdChjb25zdCBRVXJsICZ1cmwsIGJvb2wgZm9yY2VkKQogICAgIC8vIGNsb3NlIGFuZCBk ZWxldGUgb3VyIGZpbGUKICAgICB0ZW1wLmNsb3NlKCk7CiAKLSAgICBhcmNoaXZlQ2hhbmdlZCA9 IGZhbHNlOworICAgIG1fYXJjaGl2ZUNoYW5nZWQgPSBmYWxzZTsKICAgICAvLyBLUkRFQlVHKCJk b25lLiIpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgUVN0cmlu ZyBraW9fa3JhcmNQcm90b2NvbDo6ZmluZEFyY0RpcmVjdG9yeShjb25zdCBRVXJsICZ1cmwpCiAg ICAgaWYgKCFpbml0RGlyRGljdCh1cmwpKSB7CiAgICAgICAgIHJldHVybiBRU3RyaW5nKCk7CiAg ICAgfQotICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0aChhcmNGaWxlLT51cmwo KSkubGVuZ3RoKCkpOworICAgIFFTdHJpbmcgYXJjRGlyID0gcGF0aC5taWQoZ2V0UGF0aChtX2Fy Y0ZpbGUtPnVybCgpKS5sZW5ndGgoKSk7CiAgICAgYXJjRGlyLnRydW5jYXRlKGFyY0Rpci5sYXN0 SW5kZXhPZihESVJfU0VQQVJBVE9SKSk7CiAgICAgaWYgKGFyY0Rpci5yaWdodCgxKSAhPSBESVJf U0VQQVJBVE9SKQogICAgICAgICBhcmNEaXIgPSBhcmNEaXIgKyBESVJfU0VQQVJBVE9SOwpAQCAt MTExNSwxMyArMTExNSwxMyBAQCBVRFNFbnRyeSAqa2lvX2tyYXJjUHJvdG9jb2w6OmZpbmRGaWxl RW50cnkoY29uc3QgUVVybCAmdXJsKQogICAgIGlmIChhcmNEaXIuaXNFbXB0eSgpKQogICAgICAg ICByZXR1cm4gbnVsbHB0cjsKIAotICAgIFFIYXNoPFFTdHJpbmcsIEtJTzo6VURTRW50cnlMaXN0 ICo+OjppdGVyYXRvciBpdGVmID0gZGlyRGljdC5maW5kKGFyY0Rpcik7Ci0gICAgaWYgKGl0ZWYg PT0gZGlyRGljdC5lbmQoKSkKKyAgICBRSGFzaDxRU3RyaW5nLCBLSU86OlVEU0VudHJ5TGlzdCAq Pjo6aXRlcmF0b3IgaXRlZiA9IG1fZGlyRGljdC5maW5kKGFyY0Rpcik7CisgICAgaWYgKGl0ZWYg PT0gbV9kaXJEaWN0LmVuZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBVRFNFbnRy eUxpc3QgKmRpckxpc3QgPSBpdGVmLnZhbHVlKCk7CiAKICAgICBRU3RyaW5nIG5hbWUgPSBnZXRQ YXRoKHVybCk7Ci0gICAgaWYgKGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh aWxpbmdTbGFzaCkgPT0gZ2V0UGF0aCh1cmwsIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCkpCisg ICAgaWYgKGdldFBhdGgobV9hcmNGaWxlLT51cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNo KSA9PSBnZXRQYXRoKHVybCwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKSkKICAgICAgICAgbmFt ZSA9ICcuJzsgLy8gdGhlICcvJyBjYXNlCiAgICAgZWxzZSB7CiAgICAgICAgIGlmIChuYW1lLnJp Z2h0KDEpID09IERJUl9TRVBBUkFUT1IpCkBAIC0xMTM4LDE0ICsxMTM4LDE0IEBAIFVEU0VudHJ5 ICpraW9fa3JhcmNQcm90b2NvbDo6ZmluZEZpbGVFbnRyeShjb25zdCBRVXJsICZ1cmwpCiAgICAg cmV0dXJuIG51bGxwdHI7CiB9CiAKLVFTdHJpbmcga2lvX2tyYXJjUHJvdG9jb2w6Om5leHRXb3Jk KFFTdHJpbmcgJnMsIGNoYXIgZCkKK1FTdHJpbmcga2lvX2tyYXJjUHJvdG9jb2w6Om5leHRXb3Jk KFFTdHJpbmcgJnNvdXJjZVN0cmluZywgY2hhciBkZWxpbWl0ZXIpCiB7CiAgICAgLy8gTm90ZTog S1JGVU5DIHdhcyBub3QgdXNlZCBoZXJlIGluIG9yZGVyIHRvIGF2b2lkIGZpbGxpbmcgdGhlIGxv ZyB3aXRoIHRvbyBtdWNoIGluZm9ybWF0aW9uCi0gICAgcyA9IHMudHJpbW1lZCgpOwotICAgIHFz aXpldHlwZSBqID0gcy5pbmRleE9mKGQsIDApOwotICAgIFFTdHJpbmcgdGVtcCA9IHMubGVmdChq KTsgLy8gZmluZCB0aGUgbGVmdG1vc3Qgd29yZC4KLSAgICBzLnJlbW92ZSgwLCBqKTsKLSAgICBy ZXR1cm4gdGVtcDsKKyAgICBzb3VyY2VTdHJpbmcgPSBzb3VyY2VTdHJpbmcudHJpbW1lZCgpOwor ICAgIHFzaXpldHlwZSBkZWxpbWl0ZXJJbmRleCA9IHNvdXJjZVN0cmluZy5pbmRleE9mKGRlbGlt aXRlciwgMCk7CisgICAgUVN0cmluZyB0ZW1wU3RyaW5nID0gc291cmNlU3RyaW5nLmxlZnQoZGVs aW1pdGVySW5kZXgpOyAvLyBmaW5kIHRoZSBsZWZ0bW9zdCB3b3JkLgorICAgIHNvdXJjZVN0cmlu Zy5yZW1vdmUoMCwgZGVsaW1pdGVySW5kZXgpOworICAgIHJldHVybiB0ZW1wU3RyaW5nOwogfQog CiBtb2RlX3Qga2lvX2tyYXJjUHJvdG9jb2w6OnBhcnNlUGVybVN0cmluZyhRU3RyaW5nIHBlcm0p CkBAIC0xMTkzLDggKzExOTMsOCBAQCBVRFNFbnRyeUxpc3QgKmtpb19rcmFyY1Byb3RvY29sOjph ZGROZXdEaXIoY29uc3QgUVN0cmluZyAmcGF0aCkKICAgICBVRFNFbnRyeUxpc3QgKmRpcjsKIAog ICAgIC8vIGNoZWNrIGlmIHRoZSBjdXJyZW50IGRpciBleGlzdHMKLSAgICBRSGFzaDxRU3RyaW5n LCBLSU86OlVEU0VudHJ5TGlzdCAqPjo6aXRlcmF0b3IgaXRlZiA9IGRpckRpY3QuZmluZChwYXRo KTsKLSAgICBpZiAoaXRlZiAhPSBkaXJEaWN0LmVuZCgpKQorICAgIFFIYXNoPFFTdHJpbmcsIEtJ Tzo6VURTRW50cnlMaXN0ICo+OjppdGVyYXRvciBpdGVmID0gbV9kaXJEaWN0LmZpbmQocGF0aCk7 CisgICAgaWYgKGl0ZWYgIT0gbV9kaXJEaWN0LmVuZCgpKQogICAgICAgICByZXR1cm4gaXRlZi52 YWx1ZSgpOwogCiAgICAgLy8gc2V0IGRpciB0byB0aGUgcGFyZW50IGRpcgpAQCAtMTIxNywxMyAr MTIxNywxMyBAQCBVRFNFbnRyeUxpc3QgKmtpb19rcmFyY1Byb3RvY29sOjphZGROZXdEaXIoY29u c3QgUVN0cmluZyAmcGF0aCkKICAgICBlbnRyeS5mYXN0SW5zZXJ0KEtJTzo6VURTRW50cnk6OlVE U19GSUxFX1RZUEUsIG1vZGUgJiBTX0lGTVQpOyAvLyBrZWVwIGZpbGUgdHlwZSBvbmx5CiAgICAg ZW50cnkuZmFzdEluc2VydChLSU86OlVEU0VudHJ5OjpVRFNfQUNDRVNTLCBtb2RlICYgMDc3Nzcp OyAvLyBrZWVwIHBlcm1pc3Npb25zIG9ubHkKICAgICBlbnRyeS5mYXN0SW5zZXJ0KEtJTzo6VURT RW50cnk6OlVEU19TSVpFLCAwKTsKLSAgICBlbnRyeS5mYXN0SW5zZXJ0KEtJTzo6VURTRW50cnk6 OlVEU19NT0RJRklDQVRJT05fVElNRSwgYXJjRmlsZS0+dGltZShLRmlsZUl0ZW06Ok1vZGlmaWNh dGlvblRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKSk7CisgICAgZW50cnkuZmFzdEluc2VydChLSU86 OlVEU0VudHJ5OjpVRFNfTU9ESUZJQ0FUSU9OX1RJTUUsIG1fYXJjRmlsZS0+dGltZShLRmlsZUl0 ZW06Ok1vZGlmaWNhdGlvblRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKSk7CiAKICAgICBkaXItPmFw cGVuZChlbnRyeSk7CiAKICAgICAvLyBjcmVhdGUgYSBuZXcgZGlyZWN0b3J5IGVudHJ5IGFuZCBh ZGQgaXQuLgogICAgIGRpciA9IG5ldyBVRFNFbnRyeUxpc3QoKTsKLSAgICBkaXJEaWN0Lmluc2Vy dChwYXRoLCBkaXIpOworICAgIG1fZGlyRGljdC5pbnNlcnQocGF0aCwgZGlyKTsKIAogICAgIHJl dHVybiBkaXI7CiB9CkBAIC0xMjQzLDcgKzEyNDMsNyBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29s OjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgIHRpbWVfdCB0aW1lID0g Ojp0aW1lKG51bGxwdHIpOwogICAgIFFTdHJpbmcgZnVsbE5hbWU7CiAKLSAgICBpZiAoYXJjVHlw ZSA9PSAiemlwIikgeworICAgIGlmIChtX2FyY1R5cGUgPT0gInppcCIpIHsKICAgICAgICAgLy8g cGVybWlzc2lvbnMKICAgICAgICAgcGVybSA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICAvLyBp Z25vcmUgdGhlIG5leHQgMiBmaWVsZHMKQEAgLTEyNTUsOSArMTI1NSw5IEBAIHZvaWQga2lvX2ty YXJjUHJvdG9jb2w6OnBhcnNlTGluZShpbnQgbGluZU5vLCBRU3RyaW5nIGxpbmUpCiAgICAgICAg IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBuZXh0V29yZChsaW5lKTsKICAgICAgICAgLy8gZGF0 ZSAmIHRpbWUKLSAgICAgICAgUVN0cmluZyBkID0gbmV4dFdvcmQobGluZSk7Ci0gICAgICAgIFFE YXRlIHFkYXRlKGQubWlkKDAsIDQpLnRvSW50KCksIGQubWlkKDQsIDIpLnRvSW50KCksIGQubWlk KDYsIDIpLnRvSW50KCkpOwotICAgICAgICBRVGltZSBxdGltZShkLm1pZCg5LCAyKS50b0ludCgp LCBkLm1pZCgxMSwgMikudG9JbnQoKSwgZC5taWQoMTMsIDIpLnRvSW50KCkpOworICAgICAgICBR U3RyaW5nIGRhdGVTdHIgPSBuZXh0V29yZChsaW5lKTsKKyAgICAgICAgUURhdGUgcWRhdGUoZGF0 ZVN0ci5taWQoMCwgNCkudG9JbnQoKSwgZGF0ZVN0ci5taWQoNCwgMikudG9JbnQoKSwgZGF0ZVN0 ci5taWQoNiwgMikudG9JbnQoKSk7CisgICAgICAgIFFUaW1lIHF0aW1lKGRhdGVTdHIubWlkKDks IDIpLnRvSW50KCksIGRhdGVTdHIubWlkKDExLCAyKS50b0ludCgpLCBkYXRlU3RyLm1pZCgxMywg MikudG9JbnQoKSk7CiAgICAgICAgIHRpbWUgPSBRRGF0ZVRpbWUocWRhdGUsIHF0aW1lKS50b1Nl Y3NTaW5jZUVwb2NoKCk7CiAgICAgICAgIC8vIGZ1bGwgbmFtZQogICAgICAgICBmdWxsTmFtZSA9 IG5leHRXb3JkKGxpbmUsICdcbicpOwpAQCAtMTI2Niw3ICsxMjY2LDcgQEAgdm9pZCBraW9fa3Jh cmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAg ICAgIHBlcm0gPSAocGVybS5hdCgwKSA9PSAnZCcgfHwgZnVsbE5hbWUuZW5kc1dpdGgoRElSX1NF UEFSQVRPUikpID8gImRyd3hyLXhyLXgiIDogIi1ydy1yLS1yLS0iOwogICAgICAgICBtb2RlID0g cGFyc2VQZXJtU3RyaW5nKHBlcm0pOwogICAgIH0KLSAgICBpZiAoYXJjVHlwZSA9PSAicmFyIikg eworICAgIGlmIChtX2FyY1R5cGUgPT0gInJhciIpIHsKICAgICAgICAgLy8gcGVybWlzc2lvbnMK ICAgICAgICAgcGVybSA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICAvLyBzaXplCkBAIC0xMjc1 LDggKzEyNzUsOCBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVO bywgUVN0cmluZyBsaW5lKQogICAgICAgICBuZXh0V29yZChsaW5lKTsKICAgICAgICAgbmV4dFdv cmQobGluZSk7CiAgICAgICAgIC8vIGRhdGUgJiB0aW1lCi0gICAgICAgIFFTdHJpbmcgZCA9IG5l eHRXb3JkKGxpbmUpOwotICAgICAgICBRRGF0ZSBxZGF0ZShkLmxlZnQoNCkudG9JbnQoKSwgZC5t aWQoNSwgMikudG9JbnQoKSwgZC5taWQoOCwgMikudG9JbnQoKSk7CisgICAgICAgIFFTdHJpbmcg ZGF0ZVN0ciA9IG5leHRXb3JkKGxpbmUpOworICAgICAgICBRRGF0ZSBxZGF0ZShkYXRlU3RyLmxl ZnQoNCkudG9JbnQoKSwgZGF0ZVN0ci5taWQoNSwgMikudG9JbnQoKSwgZGF0ZVN0ci5taWQoOCwg MikudG9JbnQoKSk7CiAgICAgICAgIFFTdHJpbmcgdCA9IG5leHRXb3JkKGxpbmUpOwogICAgICAg ICBRVGltZSBxdGltZSh0Lm1pZCgwLCAyKS50b0ludCgpLCB0Lm1pZCgzLCAyKS50b0ludCgpLCAw KTsKICAgICAgICAgdGltZSA9IFFEYXRlVGltZShxZGF0ZSwgcXRpbWUpLnRvU2Vjc1NpbmNlRXBv Y2goKTsKQEAgLTEyOTksNyArMTI5OSw3IEBAIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OnBhcnNl TGluZShpbnQgbGluZU5vLCBRU3RyaW5nIGxpbmUpCiAgICAgICAgICAgICBwZXJtID0gKHBlcm0u YXQoMCkgPT0gJ2QnKSA/ICJkcnd4ci14ci14IiA6ICItcnctci0tci0tIjsKICAgICAgICAgbW9k ZSA9IHBhcnNlUGVybVN0cmluZyhwZXJtKTsKICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gImFy aiIpIHsKKyAgICBpZiAobV9hcmNUeXBlID09ICJhcmoiKSB7CiAgICAgICAgIG5leHRXb3JkKGxp bmUpOwogICAgICAgICAvLyBmdWxsIG5hbWUKICAgICAgICAgZnVsbE5hbWUgPSBuZXh0V29yZChs aW5lLCAnXG4nKTsKQEAgLTEzMTIsMTEgKzEzMTIsMTEgQEAgdm9pZCBraW9fa3JhcmNQcm90b2Nv bDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAgbmV4dFdvcmQo bGluZSk7CiAgICAgICAgIG5leHRXb3JkKGxpbmUpOwogICAgICAgICAvLyBkYXRlICYgdGltZQot ICAgICAgICBRU3RyaW5nIGQgPSBuZXh0V29yZChsaW5lKTsKLSAgICAgICAgaW50IHllYXIgPSAx OTAwICsgZC5taWQoMCwgMikudG9JbnQoKTsKKyAgICAgICAgUVN0cmluZyBkYXRlU3RyID0gbmV4 dFdvcmQobGluZSk7CisgICAgICAgIGludCB5ZWFyID0gMTkwMCArIGRhdGVTdHIubWlkKDAsIDIp LnRvSW50KCk7CiAgICAgICAgIGlmICh5ZWFyIDwgMTkzMCkKICAgICAgICAgICAgIHllYXIgKz0g MTAwOwotICAgICAgICBRRGF0ZSBxZGF0ZSh5ZWFyLCBkLm1pZCgzLCAyKS50b0ludCgpLCBkLm1p ZCg2LCAyKS50b0ludCgpKTsKKyAgICAgICAgUURhdGUgcWRhdGUoeWVhciwgZGF0ZVN0ci5taWQo MywgMikudG9JbnQoKSwgZGF0ZVN0ci5taWQoNiwgMikudG9JbnQoKSk7CiAgICAgICAgIFFTdHJp bmcgdCA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBRVGltZSBxdGltZSh0Lm1pZCgwLCAyKS50 b0ludCgpLCB0Lm1pZCgzLCAyKS50b0ludCgpLCAwKTsKICAgICAgICAgdGltZSA9IFFEYXRlVGlt ZShxZGF0ZSwgcXRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKTsKQEAgLTEzMjYsNyArMTMyNiw3IEBA IHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OnBhcnNlTGluZShpbnQgbGluZU5vLCBRU3RyaW5nIGxp bmUpCiAgICAgICAgICAgICBwZXJtID0gKHBlcm0uYXQoMCkgPT0gJ2QnKSA/ICJkcnd4ci14ci14 IiA6ICItcnctci0tci0tIjsKICAgICAgICAgbW9kZSA9IHBhcnNlUGVybVN0cmluZyhwZXJtKTsK ICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gInJwbSIpIHsKKyAgICBpZiAobV9hcmNUeXBlID09 ICJycG0iKSB7CiAgICAgICAgIC8vIGZ1bGwgbmFtZQogICAgICAgICBmdWxsTmFtZSA9IG5leHRX b3JkKGxpbmUpOwogICAgICAgICAvLyBzaXplCkBAIC0xMzUxLDcgKzEzNTEsNyBAQCB2b2lkIGtp b19rcmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAg ICAgICB9CiAjZW5kaWYKICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gImd6aXAiKSB7CisgICAg aWYgKG1fYXJjVHlwZSA9PSAiZ3ppcCIpIHsKICAgICAgICAgaWYgKCFsaW5lTm8pCiAgICAgICAg ICAgICByZXR1cm47IC8vIGlnbm9yZSB0aGUgZmlyc3QgbGluZQogICAgICAgICAvLyBmaXJzdCBm aWVsZCBpcyB1bmNvbXByZXNzZWQgc2l6ZSAtIGlnbm9yZSBpdApAQCAtMTM2NCwzMyArMTM2NCwz MyBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmlu ZyBsaW5lKQogICAgICAgICBmdWxsTmFtZSA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBmdWxs TmFtZSA9IGZ1bGxOYW1lLm1pZChmdWxsTmFtZS5sYXN0SW5kZXhPZihESVJfU0VQQVJBVE9SKSAr IDEpOwogICAgIH0KLSAgICBpZiAoYXJjVHlwZSA9PSAibHptYSIpIHsKLSAgICAgICAgZnVsbE5h bWUgPSBhcmNGaWxlLT5uYW1lKCk7CisgICAgaWYgKG1fYXJjVHlwZSA9PSAibHptYSIpIHsKKyAg ICAgICAgZnVsbE5hbWUgPSBtX2FyY0ZpbGUtPm5hbWUoKTsKICAgICAgICAgaWYgKGZ1bGxOYW1l LmVuZHNXaXRoKFFMYXRpbjFTdHJpbmcoImx6bWEiKSkpIHsKICAgICAgICAgICAgIGZ1bGxOYW1l LnRydW5jYXRlKGZ1bGxOYW1lLmxlbmd0aCgpIC0gNSk7CiAgICAgICAgIH0KLSAgICAgICAgbW9k ZSA9IGFyY0ZpbGUtPm1vZGUoKTsKLSAgICAgICAgc2l6ZSA9IGFyY0ZpbGUtPnNpemUoKTsKKyAg ICAgICAgbW9kZSA9IG1fYXJjRmlsZS0+bW9kZSgpOworICAgICAgICBzaXplID0gbV9hcmNGaWxl LT5zaXplKCk7CiAgICAgfQotICAgIGlmIChhcmNUeXBlID09ICJ4eiIpIHsKLSAgICAgICAgZnVs bE5hbWUgPSBhcmNGaWxlLT5uYW1lKCk7CisgICAgaWYgKG1fYXJjVHlwZSA9PSAieHoiKSB7Cisg ICAgICAgIGZ1bGxOYW1lID0gbV9hcmNGaWxlLT5uYW1lKCk7CiAgICAgICAgIGlmIChmdWxsTmFt ZS5lbmRzV2l0aChRTGF0aW4xU3RyaW5nKCJ4eiIpKSkgewogICAgICAgICAgICAgZnVsbE5hbWUu dHJ1bmNhdGUoZnVsbE5hbWUubGVuZ3RoKCkgLSAzKTsKICAgICAgICAgfQotICAgICAgICBtb2Rl ID0gYXJjRmlsZS0+bW9kZSgpOwotICAgICAgICBzaXplID0gYXJjRmlsZS0+c2l6ZSgpOworICAg ICAgICBtb2RlID0gbV9hcmNGaWxlLT5tb2RlKCk7CisgICAgICAgIHNpemUgPSBtX2FyY0ZpbGUt PnNpemUoKTsKICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gImJ6aXAyIikgeworICAgIGlmICht X2FyY1R5cGUgPT0gImJ6aXAyIikgewogICAgICAgICAvLyBUaGVyZSBpcyBubyB3YXkgdG8gbGlz dCBiemlwMiBmaWxlcywgc28gd2UgdGFrZSBvdXIgaW5mb3JtYXRpb24gZnJvbQogICAgICAgICAv LyB0aGUgYXJjaGl2ZSBpdHNlbGYuLi4KLSAgICAgICAgZnVsbE5hbWUgPSBhcmNGaWxlLT5uYW1l KCk7CisgICAgICAgIGZ1bGxOYW1lID0gbV9hcmNGaWxlLT5uYW1lKCk7CiAgICAgICAgIGlmIChm dWxsTmFtZS5lbmRzV2l0aChRTGF0aW4xU3RyaW5nKCJiejIiKSkpIHsKICAgICAgICAgICAgIGZ1 bGxOYW1lLnRydW5jYXRlKGZ1bGxOYW1lLmxlbmd0aCgpIC0gNCk7CiAgICAgICAgIH0KLSAgICAg ICAgbW9kZSA9IGFyY0ZpbGUtPm1vZGUoKTsKLSAgICAgICAgc2l6ZSA9IGFyY0ZpbGUtPnNpemUo KTsKKyAgICAgICAgbW9kZSA9IG1fYXJjRmlsZS0+bW9kZSgpOworICAgICAgICBzaXplID0gbV9h cmNGaWxlLT5zaXplKCk7CiAgICAgfQotICAgIGlmIChhcmNUeXBlID09ICJsaGEiKSB7CisgICAg aWYgKG1fYXJjVHlwZSA9PSAibGhhIikgewogICAgICAgICAvLyBwZXJtaXNzaW9ucwogICAgICAg ICBwZXJtID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIGlmIChwZXJtLmxlbmd0aCgpICE9IDEw KQpAQCAtMTQyMCwxMyArMTQyMCwxMyBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJzZUxp bmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgICAgICAvLyBmdWxsIG5hbWUKICAgICAg ICAgZnVsbE5hbWUgPSBuZXh0V29yZChsaW5lLCAnXG4nKTsKICAgICB9Ci0gICAgaWYgKGFyY1R5 cGUgPT0gImFjZSIpIHsKKyAgICBpZiAobV9hcmNUeXBlID09ICJhY2UiKSB7CiAgICAgICAgIC8v IGRhdGUgJiB0aW1lCi0gICAgICAgIFFTdHJpbmcgZCA9IG5leHRXb3JkKGxpbmUpOwotICAgICAg ICBpbnQgeWVhciA9IDE5MDAgKyBkLm1pZCg2LCAyKS50b0ludCgpOworICAgICAgICBRU3RyaW5n IGRhdGVTdHIgPSBuZXh0V29yZChsaW5lKTsKKyAgICAgICAgaW50IHllYXIgPSAxOTAwICsgZGF0 ZVN0ci5taWQoNiwgMikudG9JbnQoKTsKICAgICAgICAgaWYgKHllYXIgPCAxOTMwKQogICAgICAg ICAgICAgeWVhciArPSAxMDA7Ci0gICAgICAgIFFEYXRlIHFkYXRlKHllYXIsIGQubWlkKDMsIDIp LnRvSW50KCksIGQubWlkKDAsIDIpLnRvSW50KCkpOworICAgICAgICBRRGF0ZSBxZGF0ZSh5ZWFy LCBkYXRlU3RyLm1pZCgzLCAyKS50b0ludCgpLCBkYXRlU3RyLm1pZCgwLCAyKS50b0ludCgpKTsK ICAgICAgICAgUVN0cmluZyB0ID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIFFUaW1lIHF0aW1l KHQubWlkKDAsIDIpLnRvSW50KCksIHQubWlkKDMsIDIpLnRvSW50KCksIDApOwogICAgICAgICB0 aW1lID0gUURhdGVUaW1lKHFkYXRlLCBxdGltZSkudG9TZWNzU2luY2VFcG9jaCgpOwpAQCAtMTQ0 MSw3ICsxNDQxLDcgQEAgdm9pZCBraW9fa3JhcmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5l Tm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAgaWYgKGZ1bGxOYW1lWzBdID09ICcqJykgLy8gZW5j cnlwdGVkIGFyY2hpdmVzIHN0YXJ0cyB3aXRoICcqJwogICAgICAgICAgICAgZnVsbE5hbWUgPSBm dWxsTmFtZS5taWQoMSk7CiAgICAgfQotICAgIGlmIChhcmNUeXBlID09ICJkZWIiKSB7CisgICAg aWYgKG1fYXJjVHlwZSA9PSAiZGViIikgewogICAgICAgICAvLyBwZXJtaXNzaW9ucwogICAgICAg ICBwZXJtID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIG1vZGUgPSBwYXJzZVBlcm1TdHJpbmco cGVybSk7CkBAIC0xNDUxLDggKzE0NTEsOCBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpwYXJz ZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgICAgICAvLyBzaXplCiAgICAgICAg IHNpemUgPSBuZXh0V29yZChsaW5lKS50b0xvbmcoKTsKICAgICAgICAgLy8gZGF0ZSAmIHRpbWUK LSAgICAgICAgUVN0cmluZyBkID0gbmV4dFdvcmQobGluZSk7Ci0gICAgICAgIFFEYXRlIHFkYXRl KGQubWlkKDAsIDQpLnRvSW50KCksIGQubWlkKDUsIDIpLnRvSW50KCksIGQubWlkKDgsIDIpLnRv SW50KCkpOworICAgICAgICBRU3RyaW5nIGRhdGVTdHIgPSBuZXh0V29yZChsaW5lKTsKKyAgICAg ICAgUURhdGUgcWRhdGUoZGF0ZVN0ci5taWQoMCwgNCkudG9JbnQoKSwgZGF0ZVN0ci5taWQoNSwg MikudG9JbnQoKSwgZGF0ZVN0ci5taWQoOCwgMikudG9JbnQoKSk7CiAgICAgICAgIFFTdHJpbmcg dCA9IG5leHRXb3JkKGxpbmUpOwogICAgICAgICBRVGltZSBxdGltZSh0Lm1pZCgwLCAyKS50b0lu dCgpLCB0Lm1pZCgzLCAyKS50b0ludCgpLCAwKTsKICAgICAgICAgdGltZSA9IFFEYXRlVGltZShx ZGF0ZSwgcXRpbWUpLnRvU2Vjc1NpbmNlRXBvY2goKTsKQEAgLTE0NjQsMTAgKzE0NjQsMTAgQEAg dm9pZCBraW9fa3JhcmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGlu ZSkKICAgICAgICAgICAgIGZ1bGxOYW1lID0gZnVsbE5hbWUubGVmdChmdWxsTmFtZS5pbmRleE9m KCItPiIpIC0gMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKGFyY1R5cGUgPT0gIjd6Iikg eworICAgIGlmIChtX2FyY1R5cGUgPT0gIjd6IikgewogICAgICAgICAvLyBkYXRlICYgdGltZQot ICAgICAgICBRU3RyaW5nIGQgPSBuZXh0V29yZChsaW5lKTsKLSAgICAgICAgUURhdGUgcWRhdGUo ZC5taWQoMCwgNCkudG9JbnQoKSwgZC5taWQoNSwgMikudG9JbnQoKSwgZC5taWQoOCwgMikudG9J bnQoKSk7CisgICAgICAgIFFTdHJpbmcgZGF0ZVN0ciA9IG5leHRXb3JkKGxpbmUpOworICAgICAg ICBRRGF0ZSBxZGF0ZShkYXRlU3RyLm1pZCgwLCA0KS50b0ludCgpLCBkYXRlU3RyLm1pZCg1LCAy KS50b0ludCgpLCBkYXRlU3RyLm1pZCg4LCAyKS50b0ludCgpKTsKICAgICAgICAgUVN0cmluZyB0 ID0gbmV4dFdvcmQobGluZSk7CiAgICAgICAgIFFUaW1lIHF0aW1lKHQubWlkKDAsIDIpLnRvSW50 KCksIHQubWlkKDMsIDIpLnRvSW50KCksIHQubWlkKDYsIDIpLnRvSW50KCkpOwogICAgICAgICB0 aW1lID0gUURhdGVUaW1lKHFkYXRlLCBxdGltZSkudG9TZWNzU2luY2VFcG9jaCgpOwpAQCAtMTQ5 OCw4ICsxNDk4LDggQEAgdm9pZCBraW9fa3JhcmNQcm90b2NvbDo6cGFyc2VMaW5lKGludCBsaW5l Tm8sIFFTdHJpbmcgbGluZSkKICAgICAgICAgZnVsbE5hbWUgPSBESVJfU0VQQVJBVE9SICsgZnVs bE5hbWU7CiAgICAgUVN0cmluZyBwYXRoID0gZnVsbE5hbWUubGVmdChmdWxsTmFtZS5sYXN0SW5k ZXhPZihESVJfU0VQQVJBVE9SKSArIDEpOwogICAgIC8vIHNldC9jcmVhdGUgdGhlIGRpcmVjdG9y eSBVRFNFbnRyeUxpc3QKLSAgICBRSGFzaDxRU3RyaW5nLCBLSU86OlVEU0VudHJ5TGlzdCAqPjo6 aXRlcmF0b3IgaXRlZiA9IGRpckRpY3QuZmluZChwYXRoKTsKLSAgICBpZiAoaXRlZiA9PSBkaXJE aWN0LmVuZCgpKQorICAgIFFIYXNoPFFTdHJpbmcsIEtJTzo6VURTRW50cnlMaXN0ICo+OjppdGVy YXRvciBpdGVmID0gbV9kaXJEaWN0LmZpbmQocGF0aCk7CisgICAgaWYgKGl0ZWYgPT0gbV9kaXJE aWN0LmVuZCgpKQogICAgICAgICBkaXIgPSBhZGROZXdEaXIocGF0aCk7CiAgICAgZWxzZQogICAg ICAgICBkaXIgPSBpdGVmLnZhbHVlKCk7CkBAIC0xNTIxLDggKzE1MjEsOCBAQCB2b2lkIGtpb19r cmFyY1Byb3RvY29sOjpwYXJzZUxpbmUoaW50IGxpbmVObywgUVN0cmluZyBsaW5lKQogICAgIH0K ICAgICBpZiAoU19JU0RJUihtb2RlKSkgewogICAgICAgICBmdWxsTmFtZSA9IGZ1bGxOYW1lICsg RElSX1NFUEFSQVRPUjsKLSAgICAgICAgaWYgKGRpckRpY3QuZmluZChmdWxsTmFtZSkgPT0gZGly RGljdC5lbmQoKSkKLSAgICAgICAgICAgIGRpckRpY3QuaW5zZXJ0KGZ1bGxOYW1lLCBuZXcgVURT RW50cnlMaXN0KCkpOworICAgICAgICBpZiAobV9kaXJEaWN0LmZpbmQoZnVsbE5hbWUpID09IG1f ZGlyRGljdC5lbmQoKSkKKyAgICAgICAgICAgIG1fZGlyRGljdC5pbnNlcnQoZnVsbE5hbWUsIG5l dyBVRFNFbnRyeUxpc3QoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gdHJ5IHRv IG92ZXJ3cml0ZSBhbiBleGlzdGluZyBlbnRyeQogICAgICAgICAgICAgVURTRW50cnlMaXN0Ojpp dGVyYXRvciBlbnRyeUl0OwpAQCAtMTU1MSw5ICsxNTUxLDkgQEAgdm9pZCBraW9fa3JhcmNQcm90 b2NvbDo6cGFyc2VMaW5lKGludCBsaW5lTm8sIFFTdHJpbmcgbGluZSkKIEtJTzo6V29ya2VyUmVz dWx0IGtpb19rcmFyY1Byb3RvY29sOjppbml0QXJjUGFyYW1ldGVycygpCiB7CiAgICAgS1JGVU5D OwotICAgIEtSREVCVUcoImFyY1R5cGU6ICIgPDwgYXJjVHlwZSk7CisgICAgS1JERUJVRygiYXJj VHlwZTogIiA8PCBtX2FyY1R5cGUpOwogCi0gICAgbm9lbmNvZGluZyA9IGZhbHNlOworICAgIG1f bm9lbmNvZGluZyA9IGZhbHNlOwogCiAgICAgY21kLmNsZWFyKCk7CiAgICAgbGlzdENtZCA9IFFT dHJpbmdMaXN0KCk7CkBAIC0xNTYzLDggKzE1NjMsOCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9f a3JhcmNQcm90b2NvbDo6aW5pdEFyY1BhcmFtZXRlcnMoKQogICAgIHB1dENtZCA9IFFTdHJpbmdM aXN0KCk7CiAgICAgcmVuQ21kID0gUVN0cmluZ0xpc3QoKTsKIAotICAgIGlmIChhcmNUeXBlID09 ICJ6aXAiKSB7Ci0gICAgICAgIG5vZW5jb2RpbmcgPSB0cnVlOworICAgIGlmIChtX2FyY1R5cGUg PT0gInppcCIpIHsKKyAgICAgICAgbV9ub2VuY29kaW5nID0gdHJ1ZTsKICAgICAgICAgY21kID0g ZnVsbFBhdGhOYW1lKCJ1bnppcCIpOwogICAgICAgICBsaXN0Q21kIDw8IGZ1bGxQYXRoTmFtZSgi dW56aXAiKSA8PCAiLVpUcy16LXQtaCI7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5hbWUo InVuemlwIikgPDwgIi1wIjsKQEAgLTE1ODQsMTIgKzE1ODQsMTIgQEAgS0lPOjpXb3JrZXJSZXN1 bHQga2lvX2tyYXJjUHJvdG9jb2w6OmluaXRBcmNQYXJhbWV0ZXJzKCkKICAgICAgICAgfQogCiAg ICAgICAgIGlmICghZ2V0UGFzc3dvcmQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGdldENt ZCA8PCAiLVAiIDw8IHBhc3N3b3JkOwotICAgICAgICAgICAgY29weUNtZCA8PCAiLVAiIDw8IHBh c3N3b3JkOwotICAgICAgICAgICAgcHV0Q21kIDw8ICItUCIgPDwgcGFzc3dvcmQ7CisgICAgICAg ICAgICBnZXRDbWQgPDwgIi1QIiA8PCBtX3Bhc3N3b3JkOworICAgICAgICAgICAgY29weUNtZCA8 PCAiLVAiIDw8IG1fcGFzc3dvcmQ7CisgICAgICAgICAgICBwdXRDbWQgPDwgIi1QIiA8PCBtX3Bh c3N3b3JkOwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChhcmNUeXBlID09ICJyYXIiKSB7Ci0g ICAgICAgIG5vZW5jb2RpbmcgPSB0cnVlOworICAgIH0gZWxzZSBpZiAobV9hcmNUeXBlID09ICJy YXIiKSB7CisgICAgICAgIG1fbm9lbmNvZGluZyA9IHRydWU7CiAgICAgICAgIGlmIChRU3RhbmRh cmRQYXRoczo6ZmluZEV4ZWN1dGFibGUoUVN0cmluZ0xpdGVyYWwoInJhciIpKS5pc0VtcHR5KCkp IHsKICAgICAgICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFtZSgidW5yYXIiKTsKICAgICAgICAgICAg IGxpc3RDbWQgPDwgZnVsbFBhdGhOYW1lKCJ1bnJhciIpIDw8ICItYy0iCkBAIC0xNjIxLDE1ICsx NjIxLDE1IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjppbml0QXJjUGFy YW1ldGVycygpCiAgICAgICAgICAgICAgICAgICAgPDwgImEiOwogICAgICAgICB9CiAgICAgICAg IGlmICghZ2V0UGFzc3dvcmQoKS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIGdldENtZCA8PCBR U3RyaW5nKCItcCUxIikuYXJnKHBhc3N3b3JkKTsKLSAgICAgICAgICAgIGxpc3RDbWQgPDwgUVN0 cmluZygiLXAlMSIpLmFyZyhwYXNzd29yZCk7Ci0gICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJp bmcoIi1wJTEiKS5hcmcocGFzc3dvcmQpOworICAgICAgICAgICAgZ2V0Q21kIDw8IFFTdHJpbmco Ii1wJTEiKS5hcmcobV9wYXNzd29yZCk7CisgICAgICAgICAgICBsaXN0Q21kIDw8IFFTdHJpbmco Ii1wJTEiKS5hcmcobV9wYXNzd29yZCk7CisgICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJpbmco Ii1wJTEiKS5hcmcobV9wYXNzd29yZCk7CiAgICAgICAgICAgICBpZiAoIXB1dENtZC5pc0VtcHR5 KCkpIHsKLSAgICAgICAgICAgICAgICBwdXRDbWQgPDwgUVN0cmluZygiLXAlMSIpLmFyZyhwYXNz d29yZCk7Ci0gICAgICAgICAgICAgICAgZGVsQ21kIDw8IFFTdHJpbmcoIi1wJTEiKS5hcmcocGFz c3dvcmQpOworICAgICAgICAgICAgICAgIHB1dENtZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1f cGFzc3dvcmQpOworICAgICAgICAgICAgICAgIGRlbENtZCA8PCBRU3RyaW5nKCItcCUxIikuYXJn KG1fcGFzc3dvcmQpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChh cmNUeXBlID09ICJycG0iKSB7CisgICAgfSBlbHNlIGlmIChtX2FyY1R5cGUgPT0gInJwbSIpIHsK ICAgICAgICAgY21kID0gZnVsbFBhdGhOYW1lKCJycG0iKTsKICAgICAgICAgbGlzdENtZCA8PCBm dWxsUGF0aE5hbWUoInJwbSIpIDw8ICItLWR1bXAiCiAgICAgICAgICAgICAgICAgPDwgIi1scHEi OwpAQCAtMTYzOSwzNSArMTYzOSwzNSBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90 b2NvbDo6aW5pdEFyY1BhcmFtZXRlcnMoKQogICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlzdCgp OwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBjb3B5Q21kID0gUVN0 cmluZ0xpc3QoKTsKLSAgICB9IGVsc2UgaWYgKGFyY1R5cGUgPT0gImd6aXAiKSB7CisgICAgfSBl bHNlIGlmIChtX2FyY1R5cGUgPT0gImd6aXAiKSB7CiAgICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFt ZSgiZ3ppcCIpOwogICAgICAgICBsaXN0Q21kIDw8IGZ1bGxQYXRoTmFtZSgiZ3ppcCIpIDw8ICIt bCI7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5hbWUoImd6aXAiKSA8PCAiLWRjIjsKICAg ICAgICAgY29weUNtZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIGRlbENtZCA9IFFTdHJpbmdM aXN0KCk7CiAgICAgICAgIHB1dENtZCA9IFFTdHJpbmdMaXN0KCk7Ci0gICAgfSBlbHNlIGlmIChh cmNUeXBlID09ICJiemlwMiIpIHsKKyAgICB9IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAiYnppcDIi KSB7CiAgICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFtZSgiYnppcDIiKTsKICAgICAgICAgbGlzdENt ZCA8PCBmdWxsUGF0aE5hbWUoImJ6aXAyIik7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5h bWUoImJ6aXAyIikgPDwgIi1kYyI7CiAgICAgICAgIGNvcHlDbWQgPSBRU3RyaW5nTGlzdCgpOwog ICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5n TGlzdCgpOwotICAgIH0gZWxzZSBpZiAoYXJjVHlwZSA9PSAibHptYSIpIHsKKyAgICB9IGVsc2Ug aWYgKG1fYXJjVHlwZSA9PSAibHptYSIpIHsKICAgICAgICAgY21kID0gZnVsbFBhdGhOYW1lKCJs em1hIik7CiAgICAgICAgIGxpc3RDbWQgPDwgZnVsbFBhdGhOYW1lKCJsem1hIik7CiAgICAgICAg IGdldENtZCA8PCBmdWxsUGF0aE5hbWUoImx6bWEiKSA8PCAiLWRjIjsKICAgICAgICAgY29weUNt ZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIGRlbENtZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAg ICAgIHB1dENtZCA9IFFTdHJpbmdMaXN0KCk7Ci0gICAgfSBlbHNlIGlmIChhcmNUeXBlID09ICJ4 eiIpIHsKKyAgICB9IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAieHoiKSB7CiAgICAgICAgIGNtZCA9 IGZ1bGxQYXRoTmFtZSgieHoiKTsKICAgICAgICAgbGlzdENtZCA8PCBmdWxsUGF0aE5hbWUoInh6 Iik7CiAgICAgICAgIGdldENtZCA8PCBmdWxsUGF0aE5hbWUoInh6IikgPDwgIi1kYyI7CiAgICAg ICAgIGNvcHlDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlz dCgpOwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5nTGlzdCgpOwotICAgIH0gZWxzZSBpZiAoYXJj VHlwZSA9PSAiYXJqIikgeworICAgIH0gZWxzZSBpZiAobV9hcmNUeXBlID09ICJhcmoiKSB7CiAg ICAgICAgIGNtZCA9IGZ1bGxQYXRoTmFtZSgiYXJqIik7CiAgICAgICAgIGxpc3RDbWQgPDwgZnVs bFBhdGhOYW1lKCJhcmoiKSA8PCAidiIKICAgICAgICAgICAgICAgICA8PCAiLXkiCkBAIC0xNjgy LDE4ICsxNjgyLDE4IEBAIEtJTzo6V29ya2VyUmVzdWx0IGtpb19rcmFyY1Byb3RvY29sOjppbml0 QXJjUGFyYW1ldGVycygpCiAgICAgICAgIHB1dENtZCA8PCBmdWxsUGF0aE5hbWUoImFyaiIpIDw8 ICItciIKICAgICAgICAgICAgICAgIDw8ICJhIjsKICAgICAgICAgaWYgKCFnZXRQYXNzd29yZCgp LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgZ2V0Q21kIDw8IFFTdHJpbmcoIi1nJTEiKS5hcmco cGFzc3dvcmQpOwotICAgICAgICAgICAgY29weUNtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKHBh c3N3b3JkKTsKLSAgICAgICAgICAgIHB1dENtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKHBhc3N3 b3JkKTsKKyAgICAgICAgICAgIGdldENtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKG1fcGFzc3dv cmQpOworICAgICAgICAgICAgY29weUNtZCA8PCBRU3RyaW5nKCItZyUxIikuYXJnKG1fcGFzc3dv cmQpOworICAgICAgICAgICAgcHV0Q21kIDw8IFFTdHJpbmcoIi1nJTEiKS5hcmcobV9wYXNzd29y ZCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyY1R5cGUgPT0gImxoYSIpIHsKKyAgICB9 IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAibGhhIikgewogICAgICAgICBjbWQgPSBmdWxsUGF0aE5h bWUoImxoYSIpOwogICAgICAgICBsaXN0Q21kIDw8IGZ1bGxQYXRoTmFtZSgibGhhIikgPDwgImwi OwogICAgICAgICBnZXRDbWQgPDwgZnVsbFBhdGhOYW1lKCJsaGEiKSA8PCAicHEiOwogICAgICAg ICBjb3B5Q21kIDw8IGZ1bGxQYXRoTmFtZSgibGhhIikgPDwgImVpZiI7CiAgICAgICAgIGRlbENt ZCA8PCBmdWxsUGF0aE5hbWUoImxoYSIpIDw8ICJkIjsKICAgICAgICAgcHV0Q21kIDw8IGZ1bGxQ YXRoTmFtZSgibGhhIikgPDwgImEiOwotICAgIH0gZWxzZSBpZiAoYXJjVHlwZSA9PSAiYWNlIikg eworICAgIH0gZWxzZSBpZiAobV9hcmNUeXBlID09ICJhY2UiKSB7CiAgICAgICAgIGNtZCA9IGZ1 bGxQYXRoTmFtZSgidW5hY2UiKTsKICAgICAgICAgbGlzdENtZCA8PCBmdWxsUGF0aE5hbWUoInVu YWNlIikgPDwgInYiOwogICAgICAgICBnZXRDbWQgPDwgZnVsbFBhdGhOYW1lKCJ1bmFjZSIpIDw8 ICJlIgpAQCAtMTcwMywxOCArMTcwMywxOCBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQ cm90b2NvbDo6aW5pdEFyY1BhcmFtZXRlcnMoKQogICAgICAgICBkZWxDbWQgPSBRU3RyaW5nTGlz dCgpOwogICAgICAgICBwdXRDbWQgPSBRU3RyaW5nTGlzdCgpOwogICAgICAgICBpZiAoIWdldFBh c3N3b3JkKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBnZXRDbWQgPDwgUVN0cmluZygiLXAl MSIpLmFyZyhwYXNzd29yZCk7Ci0gICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJpbmcoIi1wJTEi KS5hcmcocGFzc3dvcmQpOworICAgICAgICAgICAgZ2V0Q21kIDw8IFFTdHJpbmcoIi1wJTEiKS5h cmcobV9wYXNzd29yZCk7CisgICAgICAgICAgICBjb3B5Q21kIDw8IFFTdHJpbmcoIi1wJTEiKS5h cmcobV9wYXNzd29yZCk7CiAgICAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGFyY1R5cGUgPT0gImRl YiIpIHsKKyAgICB9IGVsc2UgaWYgKG1fYXJjVHlwZSA9PSAiZGViIikgewogICAgICAgICBjbWQg PSBmdWxsUGF0aE5hbWUoImRwa2ciKTsKICAgICAgICAgbGlzdENtZCA8PCBmdWxsUGF0aE5hbWUo ImRwa2ciKSA8PCAiLWMiOwogICAgICAgICBnZXRDbWQgPDwgZnVsbFBhdGhOYW1lKCJ0YXIiKSA8 PCAieHZmIjsKICAgICAgICAgY29weUNtZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIGRlbENt ZCA9IFFTdHJpbmdMaXN0KCk7CiAgICAgICAgIHB1dENtZCA9IFFTdHJpbmdMaXN0KCk7Ci0gICAg fSBlbHNlIGlmIChhcmNUeXBlID09ICI3eiIpIHsKLSAgICAgICAgbm9lbmNvZGluZyA9IHRydWU7 CisgICAgfSBlbHNlIGlmIChtX2FyY1R5cGUgPT0gIjd6IikgeworICAgICAgICBtX25vZW5jb2Rp bmcgPSB0cnVlOwogICAgICAgICBjbWQgPSBmaW5kN3pFeGVjdXRhYmxlKCk7CiAgICAgICAgIGlm IChjbWQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICByZXR1cm4gV29ya2VyUmVzdWx0OjpmYWls KEtJTzo6RVJSX0NBTk5PVF9MQVVOQ0hfUFJPQ0VTUywge30pOwpAQCAtMTczMiwxMiArMTczMiwx MiBAQCBLSU86OldvcmtlclJlc3VsdCBraW9fa3JhcmNQcm90b2NvbDo6aW5pdEFyY1BhcmFtZXRl cnMoKQogICAgICAgICAgICAgICAgPDwgIi15IjsKICAgICAgICAgcmVuQ21kIDw8IGNtZCA8PCAi cm4iOwogICAgICAgICBpZiAoIWdldFBhc3N3b3JkKCkuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAg ICBnZXRDbWQgPDwgUVN0cmluZygiLXAlMSIpLmFyZyhwYXNzd29yZCk7Ci0gICAgICAgICAgICBs aXN0Q21kIDw8IFFTdHJpbmcoIi1wJTEiKS5hcmcocGFzc3dvcmQpOwotICAgICAgICAgICAgY29w eUNtZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKHBhc3N3b3JkKTsKKyAgICAgICAgICAgIGdldENt ZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1fcGFzc3dvcmQpOworICAgICAgICAgICAgbGlzdENt ZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1fcGFzc3dvcmQpOworICAgICAgICAgICAgY29weUNt ZCA8PCBRU3RyaW5nKCItcCUxIikuYXJnKG1fcGFzc3dvcmQpOwogICAgICAgICAgICAgaWYgKCFw dXRDbWQuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgcHV0Q21kIDw8IFFTdHJpbmcoIi1w JTEiKS5hcmcocGFzc3dvcmQpOwotICAgICAgICAgICAgICAgIGRlbENtZCA8PCBRU3RyaW5nKCIt cCUxIikuYXJnKHBhc3N3b3JkKTsKKyAgICAgICAgICAgICAgICBwdXRDbWQgPDwgUVN0cmluZygi LXAlMSIpLmFyZyhtX3Bhc3N3b3JkKTsKKyAgICAgICAgICAgICAgICBkZWxDbWQgPDwgUVN0cmlu ZygiLXAlMSIpLmFyZyhtX3Bhc3N3b3JkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg IH0KQEAgLTE3NjIsNyArMTc2Miw3IEBAIGJvb2wga2lvX2tyYXJjUHJvdG9jb2w6OmNoZWNrU3Rh dHVzKGludCBleGl0Q29kZSkKIHsKICAgICBLUkZVTkM7CiAgICAgS1JERUJVRyhleGl0Q29kZSk7 Ci0gICAgcmV0dXJuIEtyQXJjQmFzZU1hbmFnZXI6OmNoZWNrU3RhdHVzKGFyY1R5cGUsIGV4aXRD b2RlKTsKKyAgICByZXR1cm4gS3JBcmNCYXNlTWFuYWdlcjo6Y2hlY2tTdGF0dXMobV9hcmNUeXBl LCBleGl0Q29kZSk7CiB9CiAKIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OmNoZWNrSWY3eklzRW5j cnlwdGVkKGJvb2wgJmVuY3J5cHRlZCwgUVN0cmluZyBmaWxlTmFtZSkKQEAgLTE3NzEsNyArMTc3 MSw3IEBAIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OmNoZWNrSWY3eklzRW5jcnlwdGVkKGJvb2wg JmVuY3J5cHRlZCwgUVN0cmluZyBmaWxlTmFtZSkKICAgICAvLyBjaGFuZ2VzIG11c3QgYWxzbyBi ZSBhcHBsaWVkIHRvIGBLckFyY0hhbmRsZXI6OmNoZWNrSWY3eklzRW5jcnlwdGVkKClgCiAKICAg ICBLUkZVTkM7Ci0gICAgaWYgKGVuY3J5cHRlZEFyY2hQYXRoID09IGZpbGVOYW1lKQorICAgIGlm IChtX2VuY3J5cHRlZEFyY2hQYXRoID09IGZpbGVOYW1lKQogICAgICAgICBlbmNyeXB0ZWQgPSB0 cnVlOwogICAgIGVsc2UgeyAvLyB3ZSB0cnkgdG8gZmluZCB3aGV0aGVyIHRoZSA3eiBhcmNoaXZl IGlzIGVuY3J5cHRlZAogICAgICAgICAvLyB0aGlzIGlzIGhhcmQgYXMgdGhlIGhlYWRlcnMgYXJl IGFsc28gY29tcHJlc3NlZApAQCAtMTc4MCw3ICsxNzgwLDcgQEAgdm9pZCBraW9fa3JhcmNQcm90 b2NvbDo6Y2hlY2tJZjd6SXNFbmNyeXB0ZWQoYm9vbCAmZW5jcnlwdGVkLCBRU3RyaW5nIGZpbGVO YW1lKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgbGFzdERhdGEg PSBlbmNyeXB0ZWRBcmNoUGF0aCA9ICIiOworICAgICAgICBtX2xhc3REYXRhID0gbV9lbmNyeXB0 ZWRBcmNoUGF0aCA9ICIiOwogCiAgICAgICAgIEtyTGluZWNvdW50aW5nUHJvY2VzcyBwcm9jOwog ICAgICAgICAvLyBOb3RlOiBUaGF0IGNvbW1hbmQgdXNlcyBpbmZvcm1hdGlvbiBnaXZlbiBpbiBh IGNvbW1lbnQgZnJvbQpAQCAtMTc5MCwxMCArMTc5MCwxMCBAQCB2b2lkIGtpb19rcmFyY1Byb3Rv Y29sOjpjaGVja0lmN3pJc0VuY3J5cHRlZChib29sICZlbmNyeXB0ZWQsIFFTdHJpbmcgZmlsZU5h bWUpCiAgICAgICAgIGNvbm5lY3QoJnByb2MsICZLckxpbmVjb3VudGluZ1Byb2Nlc3M6Om5ld091 dHB1dERhdGEsIHRoaXMsICZraW9fa3JhcmNQcm90b2NvbDo6Y2hlY2s3ek91dHB1dEZvclBhc3N3 b3JkKTsKICAgICAgICAgcHJvYy5zdGFydCgpOwogICAgICAgICBwcm9jLndhaXRGb3JGaW5pc2hl ZCgpOwotICAgICAgICBlbmNyeXB0ZWQgPSB0aGlzLT5lbmNyeXB0ZWQ7CisgICAgICAgIGVuY3J5 cHRlZCA9IHRoaXMtPm1fZW5jcnlwdGVkOwogCiAgICAgICAgIGlmIChlbmNyeXB0ZWQpCi0gICAg ICAgICAgICBlbmNyeXB0ZWRBcmNoUGF0aCA9IGZpbGVOYW1lOworICAgICAgICAgICAgbV9lbmNy eXB0ZWRBcmNoUGF0aCA9IGZpbGVOYW1lOwogICAgIH0KIH0KIApAQCAtMTgwNSwxMCArMTgwNSwx MCBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpjaGVjazd6T3V0cHV0Rm9yUGFzc3dvcmQoS1By b2Nlc3MgKnByb2MsIFFCeXRlQXJyYXkgJmJ1ZgogICAgIEtSRlVOQzsKICAgICBRU3RyaW5nIGRh dGEgPSBRU3RyaW5nKGJ1Zik7CiAKLSAgICBRU3RyaW5nIGNoZWNrYWJsZSA9IGxhc3REYXRhICsg ZGF0YTsKKyAgICBRU3RyaW5nIGNoZWNrYWJsZSA9IG1fbGFzdERhdGEgKyBkYXRhOwogCiAgICAg UVN0cmluZ0xpc3QgbGluZXMgPSBjaGVja2FibGUuc3BsaXQoJ1xuJyk7Ci0gICAgbGFzdERhdGEg PSBsaW5lc1tsaW5lcy5jb3VudCgpIC0gMV07CisgICAgbV9sYXN0RGF0YSA9IGxpbmVzW2xpbmVz LmNvdW50KCkgLSAxXTsKICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBsaW5lcy5jb3VudCgpOyBp KyspIHsKICAgICAgICAgUVN0cmluZyBsaW5lID0gbGluZXNbaV0udHJpbW1lZCgpLnRvTG93ZXIo KTsKICAgICAgICAgcXNpemV0eXBlIG5keCA9IGxpbmUuaW5kZXhPZigibGlzdGluZyIpOyAvLyBS ZW1pbmRlcjogTG93ZXItY2FzZSBsZXR0ZXJzIGFyZSB1c2VkCkBAIC0xODE5LDcgKzE4MTksNyBA QCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjpjaGVjazd6T3V0cHV0Rm9yUGFzc3dvcmQoS1Byb2Nl c3MgKnByb2MsIFFCeXRlQXJyYXkgJmJ1ZgogCiAgICAgICAgIGlmICgobGluZS5jb250YWlucygi cGFzc3dvcmQiKSAmJiBsaW5lLmNvbnRhaW5zKCJlbnRlciIpKSB8fCBsaW5lID09IFFTdHJpbmdM aXRlcmFsKCJlbmNyeXB0ZWQgPSArIikpIHsKICAgICAgICAgICAgIEtSREVCVUcoIkVuY3J5cHRl ZCA3eiBhcmNoaXZlIGZvdW5kISIpOwotICAgICAgICAgICAgZW5jcnlwdGVkID0gdHJ1ZTsKKyAg ICAgICAgICAgIG1fZW5jcnlwdGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHByb2MtPmtpbGwoKTsK ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTgyOSw5ICsxODI5LDkgQEAgdm9p ZCBraW9fa3JhcmNQcm90b2NvbDo6Y2hlY2s3ek91dHB1dEZvclBhc3N3b3JkKEtQcm9jZXNzICpw cm9jLCBRQnl0ZUFycmF5ICZidWYKIHZvaWQga2lvX2tyYXJjUHJvdG9jb2w6OmludmFsaWRhdGVQ YXNzd29yZCgpCiB7CiAgICAgS1JGVU5DOwotICAgIEtSREVCVUcoZ2V0UGF0aChhcmNGaWxlLT51 cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKSArIERJUl9TRVBBUkFUT1IpOworICAgIEtS REVCVUcoZ2V0UGF0aChtX2FyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRyYWlsaW5nU2xhc2gp ICsgRElSX1NFUEFSQVRPUik7CiAKLSAgICBpZiAoIWVuY3J5cHRlZCkKKyAgICBpZiAoIW1fZW5j cnlwdGVkKQogICAgICAgICByZXR1cm47CiAKICAgICBLSU86OkF1dGhJbmZvIGF1dGhJbmZvOwpA QCAtMTg0MCwxMiArMTg0MCwxMiBAQCB2b2lkIGtpb19rcmFyY1Byb3RvY29sOjppbnZhbGlkYXRl UGFzc3dvcmQoKQogICAgIGF1dGhJbmZvLnJlYWRPbmx5ID0gdHJ1ZTsKICAgICBhdXRoSW5mby5r ZWVwUGFzc3dvcmQgPSB0cnVlOwogICAgIGF1dGhJbmZvLnZlcmlmeVBhdGggPSB0cnVlOwotICAg IFFTdHJpbmcgZmlsZU5hbWUgPSBnZXRQYXRoKGFyY0ZpbGUtPnVybCgpLCBRVXJsOjpTdHJpcFRy YWlsaW5nU2xhc2gpOworICAgIFFTdHJpbmcgZmlsZU5hbWUgPSBnZXRQYXRoKG1fYXJjRmlsZS0+ dXJsKCksIFFVcmw6OlN0cmlwVHJhaWxpbmdTbGFzaCk7CiAgICAgYXV0aEluZm8udXJsID0gUVVy bDo6ZnJvbUxvY2FsRmlsZShST09UX0RJUik7CiAgICAgYXV0aEluZm8udXJsLnNldEhvc3QoZmls ZU5hbWUgLyoucmVwbGFjZSgnLycsJ18nKSovKTsKICAgICBhdXRoSW5mby51cmwuc2V0U2NoZW1l KCJrcmFyYyIpOwogCi0gICAgcGFzc3dvcmQuY2xlYXIoKTsKKyAgICBtX3Bhc3N3b3JkLmNsZWFy KCk7CiAKICAgICBjYWNoZUF1dGhlbnRpY2F0aW9uKGF1dGhJbmZvKTsKIH0KQEAgLTE4NTMsMTIg KzE4NTMsMTIgQEAgdm9pZCBraW9fa3JhcmNQcm90b2NvbDo6aW52YWxpZGF0ZVBhc3N3b3JkKCkK IFFTdHJpbmcga2lvX2tyYXJjUHJvdG9jb2w6OmdldFBhc3N3b3JkKCkKIHsKICAgICBLUkZVTkM7 Ci0gICAgS1JERUJVRygiRW5jcnlwdGVkOiAiIDw8IGVuY3J5cHRlZCk7CisgICAgS1JERUJVRygi RW5jcnlwdGVkOiAiIDw8IG1fZW5jcnlwdGVkKTsKIAotICAgIGlmICghcGFzc3dvcmQuaXNOdWxs KCkpCi0gICAgICAgIHJldHVybiBwYXNzd29yZDsKLSAgICBpZiAoIWVuY3J5cHRlZCkKLSAgICAg ICAgcmV0dXJuIChwYXNzd29yZCA9ICIiKTsKKyAgICBpZiAoIW1fcGFzc3dvcmQuaXNOdWxsKCkp CisgICAgICAgIHJldHVybiBtX3Bhc3N3b3JkOworICAgIGlmICghbV9lbmNyeXB0ZWQpCisgICAg ICAgIHJldHVybiAobV9wYXNzd29yZCA9ICIiKTsKIAogICAgIEtJTzo6QXV0aEluZm8gYXV0aElu Zm87CiAgICAgYXV0aEluZm8uY2FwdGlvbiA9IGkxOG4oIktyYXJjIFBhc3N3b3JkIERpYWxvZyIp OwpAQCAtMTg2NiwxNCArMTg2NiwxNCBAQCBRU3RyaW5nIGtpb19rcmFyY1Byb3RvY29sOjpnZXRQ YXNzd29yZCgpCiAgICAgYXV0aEluZm8ucmVhZE9ubHkgPSB0cnVlOwogICAgIGF1dGhJbmZvLmtl ZXBQYXNzd29yZCA9IHRydWU7CiAgICAgYXV0aEluZm8udmVyaWZ5UGF0aCA9IHRydWU7Ci0gICAg UVN0cmluZyBmaWxlTmFtZSA9IGdldFBhdGgoYXJjRmlsZS0+dXJsKCksIFFVcmw6OlN0cmlwVHJh aWxpbmdTbGFzaCk7CisgICAgUVN0cmluZyBmaWxlTmFtZSA9IGdldFBhdGgobV9hcmNGaWxlLT51 cmwoKSwgUVVybDo6U3RyaXBUcmFpbGluZ1NsYXNoKTsKICAgICBhdXRoSW5mby51cmwgPSBRVXJs Ojpmcm9tTG9jYWxGaWxlKFJPT1RfRElSKTsKICAgICBhdXRoSW5mby51cmwuc2V0SG9zdChmaWxl TmFtZSAvKi5yZXBsYWNlKCcvJywnXycpKi8pOwogICAgIGF1dGhJbmZvLnVybC5zZXRTY2hlbWUo ImtyYXJjIik7CiAKICAgICBpZiAoY2hlY2tDYWNoZWRBdXRoZW50aWNhdGlvbihhdXRoSW5mbykg JiYgIWF1dGhJbmZvLnBhc3N3b3JkLmlzTnVsbCgpKSB7CiAgICAgICAgIC8vIEtSREVCVUcoYXV0 aEluZm8ucGFzc3dvcmQpOwotICAgICAgICByZXR1cm4gKHBhc3N3b3JkID0gYXV0aEluZm8ucGFz c3dvcmQpOworICAgICAgICByZXR1cm4gKG1fcGFzc3dvcmQgPSBhdXRoSW5mby5wYXNzd29yZCk7 CiAgICAgfQogCiAgICAgYXV0aEluZm8ucGFzc3dvcmQuY2xlYXIoKTsKQEAgLTE4ODEsMjIgKzE4 ODEsMjIgQEAgUVN0cmluZyBraW9fa3JhcmNQcm90b2NvbDo6Z2V0UGFzc3dvcmQoKQogICAgIGlu dCBlcnJDb2RlID0gb3BlblBhc3N3b3JkRGlhbG9nKGF1dGhJbmZvLCBpMThuKCJBY2Nlc3Npbmcg dGhlIGZpbGUgcmVxdWlyZXMgYSBwYXNzd29yZC4iKSk7CiAgICAgaWYgKCFlcnJDb2RlICYmICFh dXRoSW5mby5wYXNzd29yZC5pc051bGwoKSkgewogICAgICAgICAvLyBLUkRFQlVHKGF1dGhJbmZv LnBhc3N3b3JkKTsKLSAgICAgICAgcmV0dXJuIChwYXNzd29yZCA9IGF1dGhJbmZvLnBhc3N3b3Jk KTsKKyAgICAgICAgcmV0dXJuIChtX3Bhc3N3b3JkID0gYXV0aEluZm8ucGFzc3dvcmQpOwogICAg IH0gZWxzZSB7Ci0gICAgICAgIHBhc3N3b3JkLmNsZWFyKCk7CisgICAgICAgIG1fcGFzc3dvcmQu Y2xlYXIoKTsKICAgICB9CiAKICAgICAvLyBLUkRFQlVHKHBhc3N3b3JkKTsKLSAgICByZXR1cm4g cGFzc3dvcmQ7CisgICAgcmV0dXJuIG1fcGFzc3dvcmQ7CiB9CiAKIFFTdHJpbmcga2lvX2tyYXJj UHJvdG9jb2w6OmxvY2FsZUVuY29kZWRTdHJpbmcoUVN0cmluZyBzdHIpCiB7CiAgICAgLy8gTm90 ZTogS1JGVU5DIHdhcyBub3QgdXNlZCBoZXJlIGluIG9yZGVyIHRvIGF2b2lkIGZpbGxpbmcgdGhl IGxvZyB3aXRoIHRvbyBtdWNoIGluZm9ybWF0aW9uCi0gICAgaWYgKG5vZW5jb2RpbmcpCisgICAg aWYgKG1fbm9lbmNvZGluZykKICAgICAgICAgcmV0dXJuIHN0cjsKIAotICAgIFFCeXRlQXJyYXkg YXJyYXkgPSBjb2RlYy0+ZnJvbVVuaWNvZGUoc3RyKTsKKyAgICBRQnl0ZUFycmF5IGFycmF5ID0g bV9jb2RlYy0+ZnJvbVVuaWNvZGUoc3RyKTsKIAogICAgIC8vIGVuY29kaW5nIHRoZSBieXRlIGFy cmF5IHRvIFFTdHJpbmcsIG1hcHBpbmcgMHgwMDAwLTB4MDBGRiB0byAweEUwMDAtMHhFMEZGCiAg ICAgLy8gc2VlIEtyQXJjQ29kZWMgZm9yIG1vcmUgZXhwbGFuYXRpb24KQEAgLTE5MTQsMTcgKzE5 MTQsMTcgQEAgUVN0cmluZyBraW9fa3JhcmNQcm90b2NvbDo6bG9jYWxlRW5jb2RlZFN0cmluZyhR U3RyaW5nIHN0cikKIFFCeXRlQXJyYXkga2lvX2tyYXJjUHJvdG9jb2w6OmVuY29kZVN0cmluZyhj b25zdCBRU3RyaW5nICZzdHIpCiB7CiAgICAgLy8gTm90ZTogS1JGVU5DIHdhcyBub3QgdXNlZCBo ZXJlIGluIG9yZGVyIHRvIGF2b2lkIGZpbGxpbmcgdGhlIGxvZyB3aXRoIHRvbyBtdWNoIGluZm9y bWF0aW9uCi0gICAgaWYgKG5vZW5jb2RpbmcpCisgICAgaWYgKG1fbm9lbmNvZGluZykKICAgICAg ICAgcmV0dXJuIFFUZXh0Q29kZWM6OmNvZGVjRm9yTG9jYWxlKCktPmZyb21Vbmljb2RlKHN0cik7 Ci0gICAgcmV0dXJuIGNvZGVjLT5mcm9tVW5pY29kZShzdHIpOworICAgIHJldHVybiBtX2NvZGVj LT5mcm9tVW5pY29kZShzdHIpOwogfQogCiBRU3RyaW5nIGtpb19rcmFyY1Byb3RvY29sOjpkZWNv ZGVTdHJpbmcoY2hhciAqYnVmKQogewogICAgIC8vIE5vdGU6IEtSRlVOQyB3YXMgbm90IHVzZWQg aGVyZSBpbiBvcmRlciB0byBhdm9pZCBmaWxsaW5nIHRoZSBsb2cgd2l0aCB0b28gbXVjaCBpbmZv cm1hdGlvbgotICAgIGlmIChub2VuY29kaW5nKQorICAgIGlmIChtX25vZW5jb2RpbmcpCiAgICAg ICAgIHJldHVybiBRVGV4dENvZGVjOjpjb2RlY0ZvckxvY2FsZSgpLT50b1VuaWNvZGUoYnVmKTsK LSAgICByZXR1cm4gY29kZWMtPnRvVW5pY29kZShidWYpOworICAgIHJldHVybiBtX2NvZGVjLT50 b1VuaWNvZGUoYnVmKTsKIH0KIAogUVN0cmluZyBraW9fa3JhcmNQcm90b2NvbDo6Z2V0UGF0aChj b25zdCBRVXJsICZ1cmwsIFFVcmw6OkZvcm1hdHRpbmdPcHRpb25zIG9wdGlvbnMpCmRpZmYgLS1n aXQgYS9wbHVnaW5zL2tyYXJjL2tyYXJjLmggYi9wbHVnaW5zL2tyYXJjL2tyYXJjLmgKaW5kZXgg OTBiOGQxYTljLi41MjNmZDE1ZTQgMTAwNjQ0Ci0tLSBhL3BsdWdpbnMva3JhcmMva3JhcmMuaAor KysgYi9wbHVnaW5zL2tyYXJjL2tyYXJjLmgKQEAgLTg2LDI1ICs4NiwyNSBAQCBwcml2YXRlOgog ICAgIEtJTzo6VURTRW50cnlMaXN0ICphZGROZXdEaXIoY29uc3QgUVN0cmluZyAmcGF0aCk7CiAg ICAgUV9SRVFVSVJFRF9SRVNVTFQgS0lPOjpXb3JrZXJSZXN1bHQgY2hlY2tXcml0ZVN1cHBvcnQo KTsKIAotICAgIFFIYXNoPFFTdHJpbmcsIEtJTzo6VURTRW50cnlMaXN0ICo+IGRpckRpY3Q7IC8v PCB0aGUgZGlyZWN0b3JpZXMgZGF0YSBzdHJ1Y3R1cmUuCi0gICAgYm9vbCBlbmNyeXB0ZWQ7IC8v PCB0ZWxscyB3aGV0aGVyIHRoZSBhcmNoaXZlIGlzIGVuY3J5cHRlZAotICAgIGJvb2wgYXJjaGl2 ZUNoYW5nZWQ7IC8vPCB0cnVlIGlmIHRoZSBhcmNoaXZlIHdhcyBjaGFuZ2VkLgotICAgIGJvb2wg YXJjaGl2ZUNoYW5naW5nOyAvLzwgdHJ1ZSBpZiB0aGUgYXJjaGl2ZSBpcyBjdXJyZW50bHkgY2hh bmdpbmcuCi0gICAgYm9vbCBuZXdBcmNoaXZlVVJMOyAvLzwgdHJ1ZSBpZiBuZXcgYXJjaGl2ZSB3 YXMgZW50ZXJlZCBmb3IgdGhlIHByb3RvY29sCi0gICAgYm9vbCBub2VuY29kaW5nOyAvLzwgN3og ZmlsZXMgdXNlIFVURi0xNiwgc28gZW5jb2RpbmcgaXMgdW5uZWNlc3NhcnkKLSAgICBLSU86OmZp bGVzaXplX3QgZGVjb21wcmVzc2VkTGVuOyAvLzwgdGhlIG51bWJlciBvZiB0aGUgZGVjb21wcmVz c2VkIGJ5dGVzCi0gICAgS0ZpbGVJdGVtICphcmNGaWxlOyAvLzwgdGhlIGFyY2hpdmUgZmlsZSBp dGVtLgotICAgIFFTdHJpbmcgYXJjUGF0aDsgLy88IHRoZSBhcmNoaXZlIGxvY2F0aW9uCi0gICAg UVN0cmluZyBhcmNUZW1wRGlyOyAvLzwgdGhlIGN1cnJlbnRseSB1c2VkIHRlbXAgZGlyZWN0b3J5 LgotICAgIFFTdHJpbmcgYXJjVHlwZTsgLy88IHRoZSBhcmNoaXZlIHR5cGUuCi0gICAgYm9vbCBl eHRBcmNSZWFkeTsgLy88IFVzZWQgZm9yIFJQTSAmIERFQiBmaWxlcy4KLSAgICBRU3RyaW5nIHBh c3N3b3JkOyAvLzwgUGFzc3dvcmQgZm9yIHRoZSBhcmNoaXZlcwotCi0gICAgUVN0cmluZyBsYXN0 RGF0YTsKLSAgICBRU3RyaW5nIGVuY3J5cHRlZEFyY2hQYXRoOwotCi0gICAgUVN0cmluZyBjdXJy ZW50Q2hhcnNldDsKLSAgICBRVGV4dENvZGVjICpjb2RlYzsKKyAgICBRSGFzaDxRU3RyaW5nLCBL SU86OlVEU0VudHJ5TGlzdCAqPiBtX2RpckRpY3Q7IC8vPCB0aGUgZGlyZWN0b3JpZXMgZGF0YSBz dHJ1Y3R1cmUuCisgICAgYm9vbCBtX2VuY3J5cHRlZDsgLy88IHRlbGxzIHdoZXRoZXIgdGhlIGFy Y2hpdmUgaXMgZW5jcnlwdGVkCisgICAgYm9vbCBtX2FyY2hpdmVDaGFuZ2VkOyAvLzwgdHJ1ZSBp ZiB0aGUgYXJjaGl2ZSB3YXMgY2hhbmdlZC4KKyAgICBib29sIG1fYXJjaGl2ZUNoYW5naW5nOyAv LzwgdHJ1ZSBpZiB0aGUgYXJjaGl2ZSBpcyBjdXJyZW50bHkgY2hhbmdpbmcuCisgICAgYm9vbCBt X25ld0FyY2hpdmVVUkw7IC8vPCB0cnVlIGlmIG5ldyBhcmNoaXZlIHdhcyBlbnRlcmVkIGZvciB0 aGUgcHJvdG9jb2wKKyAgICBib29sIG1fbm9lbmNvZGluZzsgLy88IDd6IGZpbGVzIHVzZSBVVEYt MTYsIHNvIGVuY29kaW5nIGlzIHVubmVjZXNzYXJ5CisgICAgS0lPOjpmaWxlc2l6ZV90IG1fZGVj b21wcmVzc2VkTGVuOyAvLzwgdGhlIG51bWJlciBvZiB0aGUgZGVjb21wcmVzc2VkIGJ5dGVzCisg ICAgS0ZpbGVJdGVtICptX2FyY0ZpbGU7IC8vPCB0aGUgYXJjaGl2ZSBmaWxlIGl0ZW0uCisgICAg UVN0cmluZyBtX2FyY1BhdGg7IC8vPCB0aGUgYXJjaGl2ZSBsb2NhdGlvbgorICAgIFFTdHJpbmcg bV9hcmNUZW1wRGlyOyAvLzwgdGhlIGN1cnJlbnRseSB1c2VkIHRlbXAgZGlyZWN0b3J5LgorICAg IFFTdHJpbmcgbV9hcmNUeXBlOyAvLzwgdGhlIGFyY2hpdmUgdHlwZS4KKyAgICBib29sIG1fZXh0 QXJjUmVhZHk7IC8vPCBVc2VkIGZvciBSUE0gJiBERUIgZmlsZXMuCisgICAgUVN0cmluZyBtX3Bh c3N3b3JkOyAvLzwgUGFzc3dvcmQgZm9yIHRoZSBhcmNoaXZlcworCisgICAgUVN0cmluZyBtX2xh c3REYXRhOworICAgIFFTdHJpbmcgbV9lbmNyeXB0ZWRBcmNoUGF0aDsKKworICAgIFFTdHJpbmcg bV9jdXJyZW50Q2hhcnNldDsKKyAgICBRVGV4dENvZGVjICptX2NvZGVjOwogfTsKIAogI2lmZGVm IFFfT1NfV0lOCg==