From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Carl George To: git-commits@fedoraproject.org Subject: [rpms/blackbox-terminal] f43: Update to version 0.15.2 Date: Wed, 01 Jul 2026 19:18:20 GMT Message-ID: <178293350013.1.7751146089486288081.rpms-blackbox-terminal-1453c486f974@fedoraproject.org> List-ID: X-Git-Repo: rpms/blackbox-terminal X-Git-Branch: f43 X-Git-Rev: 1453c486f974eeb655556559f63b8a8e01b7bbe3 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvYmxhY2tib3gtdGVybWluYWwKICAgICAgICAgICAgQnJhbmNoIDogZjQzCiAg ICAgICAgICAgIENvbW1pdCA6IDE0NTNjNDg2Zjk3NGVlYjY1NTU1NjU1OWY2M2I4YThlMDFiN2Ji ZTMKICAgICAgICAgICAgQXV0aG9yIDogQ2FybCBHZW9yZ2UgPGNhcmx3Z2VvcmdlQGdtYWlsLmNv bT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAyNi0wNy0wMVQxMjoyNToyNC0wNTowMAogICAgICAg ICAgICBTdGF0cyAgOiArMjA3OC8tMiBpbiAzIGZpbGUocykKICAgICAgICAgICAgVVJMICAgIDog aHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9ibGFja2JveC10ZXJtaW5hbC9jLzE0 NTNjNDg2Zjk3NGVlYjY1NTU1NjU1OWY2M2I4YThlMDFiN2JiZTM/YnJhbmNoPWY0MwoKICAgICAg ICAgICAgTG9nOgogICAgICAgICAgICBVcGRhdGUgdG8gdmVyc2lvbiAwLjE1LjIKCi4uLiByaGJ6 IzI0ODc0MjcKLSBBZGQgbmF1dGlsdXMgZXh0ZW5zaW9uIHN1YnBhY2thZ2UKLSBGaXggYnVnIHdp dGggbmV3IHRhYnMgbG9zaW5nIHdvcmtpbmcgZGlyZWN0b3J5CgotLS0KZGlmZiAtLWdpdCBhLzAw MDEtSW1wbGVtZW50LWxhc3Qta25vd24tY3dkLnBhdGNoIGIvMDAwMS1JbXBsZW1lbnQtbGFzdC1r bm93bi1jd2QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUyNWI1 NQotLS0gL2Rldi9udWxsCisrKyBiLzAwMDEtSW1wbGVtZW50LWxhc3Qta25vd24tY3dkLnBhdGNo CkBAIC0wLDAgKzEsMjA1NyBAQAorRnJvbSAwZGI2N2NkY2UwNzVhNGQ0N2VlNTYwMmMxNzU1YWJk NTg1NmZjZTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bG8gUXVlaXJveiA8 MTQ3MzktcmFnZ2VzaWx2ZXJAdXNlcnMubm9yZXBseS5naXRsYWIuZ25vbWUub3JnPgorRGF0ZTog VGh1LCAxMSBKdW4gMjAyNiAxODozMzoxMyAtMDMwMAorU3ViamVjdDogW1BBVENIXSBJbXBsZW1l bnQgbGFzdCBrbm93biBjd2QKKworKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNzE4MmQ2ZGE4 ZGRiZDkyNWRiMDAxYjMwZWQ2YjNiMDA5MjdkZDdmNSkKKy0tLQorIHNyYy93aWRnZXRzL1Rlcm1p bmFsLnZhbGEgfCAzODEgKysrKysrKysrKy0tLS0tLS0tLQorIHNyYy93aWRnZXRzL1dpbmRvdy52 YWxhICAgfCA3NDcgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAyIGZp bGVzIGNoYW5nZWQsIDU2OSBpbnNlcnRpb25zKCspLCA1NTkgZGVsZXRpb25zKC0pCisKK2RpZmYg LS1naXQgYS9zcmMvd2lkZ2V0cy9UZXJtaW5hbC52YWxhIGIvc3JjL3dpZGdldHMvVGVybWluYWwu dmFsYQoraW5kZXggOWY1ZDhkZC4uNjQwMmNjNSAxMDA2NDQKKy0tLSBhL3NyYy93aWRnZXRzL1Rl cm1pbmFsLnZhbGEKKysrKyBiL3NyYy93aWRnZXRzL1Rlcm1pbmFsLnZhbGEKK0BAIC0xOSw3ICsx OSw2IEBACisgICovCisgCisgcHVibGljIGNsYXNzIFRlcm1pbmFsLlRlcm1pbmFsIDogVnRlLlRl cm1pbmFsIHsKKy0KKyAgIC8qKgorICAgICogTGlzdCBvZiBhdmFpbGFibGUgZHJvcCB0YXJnZXRz IGZvciBUZXJtaW5hbAorICAgICovCitAQCAtMzIsOSArMzEsOSBAQCBwdWJsaWMgY2xhc3MgVGVy bWluYWwuVGVybWluYWwgOiBWdGUuVGVybWluYWwgeworICAgc3RhdGljIHN0cmluZ1tdIGJsYWNr Ym94X2VudnYgPSB7CisgICAgICJURVJNPXh0ZXJtLTI1NmNvbG9yIiwKKyAgICAgIkNPTE9SVEVS TT10cnVlY29sb3IiLAorLSAgICAiVEVSTV9QUk9HUkFNPSVzIi5wcmludGYgKEFQUF9OQU1FKSwK Ky0gICAgIkJMQUNLQk9YX1RIRU1FU19ESVI9JXMiLnByaW50ZiAoQ29uc3RhbnRzLmdldF91c2Vy X3NjaGVtZXNfZGlyICgpKSwKKy0gICAgIlZURV9WRVJTSU9OPSV1Ii5wcmludGYgKAorKyAgICAi VEVSTV9QUk9HUkFNPSVzIi5wcmludGYoQVBQX05BTUUpLAorKyAgICAiQkxBQ0tCT1hfVEhFTUVT X0RJUj0lcyIucHJpbnRmKENvbnN0YW50cy5nZXRfdXNlcl9zY2hlbWVzX2RpcigpKSwKKysgICAg IlZURV9WRVJTSU9OPSV1Ii5wcmludGYoCisgICAgICAgVnRlLk1BSk9SX1ZFUlNJT04gKiAxMDAw MCArIFZ0ZS5NSU5PUl9WRVJTSU9OICogMTAwICsgVnRlLk1JQ1JPX1ZFUlNJT04KKyAgICAgKQor ICAgfTsKK0BAIC00NSwxOCArNDQsMTggQEAgcHVibGljIGNsYXNzIFRlcm1pbmFsLlRlcm1pbmFs IDogVnRlLlRlcm1pbmFsIHsKKyAgICAqIFRoaXMgc2lnbmFsIGlzIGVtaXR0ZWQgd2hlbiB0aGUg dGVybWluYWwgcHJvY2VzcyBleGl0cy4gU29tZXRoaW5nIHNob3VsZAorICAgICogbGlzdGVuIGZv ciB0aGlzIHNpZ25hbCBhbmQgY2xvc2UgdGhlIHRhYiB0aGF0IGNvbnRhaW5zIHRoaXMgdGVybWlu YWwuCisgICAgKi8KKy0gIHB1YmxpYyBzaWduYWwgdm9pZCBleGl0ICgpOworKyAgcHVibGljIHNp Z25hbCB2b2lkIGV4aXQoKTsKKyAKKy0gIHB1YmxpYyBzaWduYWwgdm9pZCBzcGF3bl9mYWlsZWQg KHN0cmluZz8gZXJyb3JfbWVzc2FnZSk7CisrICBwdWJsaWMgc2lnbmFsIHZvaWQgc3Bhd25fZmFp bGVkKHN0cmluZz8gZXJyb3JfbWVzc2FnZSk7CisgCistICBwdWJsaWMgc2lnbmFsIHZvaWQgY29u dGV4dF9jaGFuZ2VkIChQcm9jZXNzQ29udGV4dCBjb250ZXh0KTsKKysgIHB1YmxpYyBzaWduYWwg dm9pZCBjb250ZXh0X2NoYW5nZWQoUHJvY2Vzc0NvbnRleHQgY29udGV4dCk7CisgCisgICAvLyBQ cm9wZXJ0aWVzCisgCistICBwdWJsaWMgU2NoZW1lICAgICAgICAgICBzY2hlbWUgIHsgZ2V0OyBz ZXQ7IH0KKy0gIHB1YmxpYyBQaWQgICAgICAgICAgICAgIHBpZCAgICAgeyBnZXQ7IHByb3RlY3Rl ZCBzZXQ7IGRlZmF1bHQgPSAtMTsgfQorLSAgcHVibGljIFByb2Nlc3M/ICAgICAgICAgcHJvY2Vz cyB7IGdldDsgcHJvdGVjdGVkIHNldDsgZGVmYXVsdCA9IG51bGw7IH0KKy0gIHB1YmxpYyB1aW50 ICAgICAgICAgICAgIGlkICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CisrICBwdWJsaWMgU2No ZW1lICAgc2NoZW1lICB7IGdldDsgc2V0OyB9CisrICBwdWJsaWMgUGlkICAgICAgcGlkICAgICB7 IGdldDsgcHJvdGVjdGVkIHNldDsgZGVmYXVsdCA9IC0xOyB9CisrICBwdWJsaWMgUHJvY2Vzcz8g cHJvY2VzcyB7IGdldDsgcHJvdGVjdGVkIHNldDsgZGVmYXVsdCA9IG51bGw7IH0KKysgIHB1Ymxp YyB1aW50ICAgICBpZCAgICAgIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorIAorICAgcHVibGljIGJv b2wgbmVlZHNfYXR0ZW50aW9uIHsKKyAgICAgZ2V0OworQEAgLTY2LDMxICs2NSwzMSBAQCBwdWJs aWMgY2xhc3MgVGVybWluYWwuVGVybWluYWwgOiBWdGUuVGVybWluYWwgeworIAorICAgcHVibGlj IHVpbnQgdXNlcl9zY3JvbGxiYWNrX2xpbmVzIHsKKyAgICAgZ2V0IHsKKy0gICAgICB2YXIgc2V0 dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCAoKTsKKysgICAgICB2YXIgc2V0dGluZ3MgPSBT ZXR0aW5ncy5nZXRfZGVmYXVsdCgpOworIAorICAgICAgIHN3aXRjaCAoc2V0dGluZ3Muc2Nyb2xs YmFja19tb2RlKSB7CisgICAgICAgICBjYXNlIFNjcm9sbGJhY2tNb2RlLkZJWEVEOiAgICAgcmV0 dXJuIHNldHRpbmdzLnNjcm9sbGJhY2tfbGluZXM7CisgICAgICAgICBjYXNlIFNjcm9sbGJhY2tN b2RlLlVOTElNSVRFRDogcmV0dXJuIC0xOworICAgICAgICAgY2FzZSBTY3JvbGxiYWNrTW9kZS5E SVNBQkxFRDogIHJldHVybiAwOworICAgICAgICAgZGVmYXVsdDoKKy0gICAgICAgICAgZXJyb3Ig KCJJbnZhbGlkIHNjcm9sbGJhY2stbW9kZSAldSIsIHNldHRpbmdzLnNjcm9sbGJhY2tfbW9kZSk7 CisrICAgICAgICAgIGVycm9yKCJJbnZhbGlkIHNjcm9sbGJhY2stbW9kZSAldSIsIHNldHRpbmdz LnNjcm9sbGJhY2tfbW9kZSk7CisgICAgICAgfQorICAgICB9CisgICB9CisgCisgICAvLyBGaWVs ZHMKKyAKKy0gIHB1YmxpYyAgV2luZG93ICAgICAgICAgICAgd2luZG93OworLSAgcHJpdmF0ZSB1 aW50ICAgICAgICAgICAgICBvcmlnaW5hbF9zY3JvbGxiYWNrX2xpbmVzOworLXByaXZhdGUgc3Rh dGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CistICBwcml2YXRlIHVpbnQgICAgICAgICAgICAg IGF0dGVudGlvbl90aW1lciA9IDA7CisrICBwdWJsaWMgV2luZG93IHdpbmRvdzsKKysgIHByaXZh dGUgdWludCAgb3JpZ2luYWxfc2Nyb2xsYmFja19saW5lczsKKysgIHByaXZhdGUgc3RhdGljIHVp bnQgbmV4dF9pZCA9IDA7CisrICBwcml2YXRlIHVpbnQgYXR0ZW50aW9uX3RpbWVyID0gMDsKKyAK KyAgIC8vIEZJWE1FOiBlaXRoZXIgZ2V0IHJpZCBvZiB0aGlzIGZpZWxkLCBvciBzdG9wIGNyZWF0 aW5nIGEgbG9jYWwgY29weSBvZgorICAgLy8gc2V0dGluZ3MgZXZlcnkgdGltZSB3ZSBuZWVkIHRv IHVzZSBpdAorICAgcHJpdmF0ZSBTZXR0aW5ncyBzZXR0aW5nczsKKyAKKyAgIHB1YmxpYyBUZXJt aW5hbCAoV2luZG93IHdpbmRvdywgc3RyaW5nPyBjb21tYW5kID0gbnVsbCwgc3RyaW5nPyBjd2Qg PSBudWxsKSB7CistICAgIE9iamVjdCAoCisrICAgIE9iamVjdCgKKyAgICAgICBhbGxvd19oeXBl cmxpbms6IHRydWUsCisgICAgICAgcmVjZWl2ZXNfZGVmYXVsdDogdHJ1ZSwKKyAgICAgICBzY3Jv bGxfdW5pdF9pc19waXhlbHM6IHRydWUKK0BAIC0xMDcsMTE5ICsxMDYsMTE3IEBAIHByaXZhdGUg c3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgIHRoaXMuaGFsaWduID0gR3RrLkFs aWduLkZJTEw7CisgICAgIHRoaXMudmFsaWduID0gR3RrLkFsaWduLkZJTEw7CisgCistICAgIHRo aXMuY2hpbGRfZXhpdGVkLmNvbm5lY3QgKHRoaXMub25fY2hpbGRfZXhpdGVkKTsKKysgICAgdGhp cy5jaGlsZF9leGl0ZWQuY29ubmVjdCh0aGlzLm9uX2NoaWxkX2V4aXRlZCk7CisgCistICAgIHRo aXMuc2V0dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCAoKTsKKy0gICAgVGhlbWVQcm92aWRl ci5nZXRfZGVmYXVsdCAoKS5ub3RpZnkgWyJjdXJyZW50LXRoZW1lIl0uY29ubmVjdCAodGhpcy5v bl90aGVtZV9jaGFuZ2VkKTsKKy0gICAgdGhpcy5zZXR0aW5ncy5ub3RpZnlbImZvbnQiXS5jb25u ZWN0ICh0aGlzLm9uX2ZvbnRfY2hhbmdlZCk7CistICAgIHRoaXMuc2V0dGluZ3Mubm90aWZ5WyJ0 ZXJtaW5hbC1wYWRkaW5nIl0uY29ubmVjdCAodGhpcy5vbl9wYWRkaW5nX2NoYW5nZWQpOworLSAg ICB0aGlzLnNldHRpbmdzLm5vdGlmeVsib3BhY2l0eSJdLmNvbm5lY3QgKHRoaXMub25fdGhlbWVf Y2hhbmdlZCk7CisrICAgIHRoaXMuc2V0dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCgpOwor KyAgICBUaGVtZVByb3ZpZGVyLmdldF9kZWZhdWx0KCkubm90aWZ5WyJjdXJyZW50LXRoZW1lIl0u Y29ubmVjdCgKKysgICAgICB0aGlzLm9uX3RoZW1lX2NoYW5nZWQpOworKyAgICB0aGlzLnNldHRp bmdzLm5vdGlmeVsiZm9udCJdLmNvbm5lY3QodGhpcy5vbl9mb250X2NoYW5nZWQpOworKyAgICB0 aGlzLnNldHRpbmdzLm5vdGlmeVsidGVybWluYWwtcGFkZGluZyJdLmNvbm5lY3QodGhpcy5vbl9w YWRkaW5nX2NoYW5nZWQpOworKyAgICB0aGlzLnNldHRpbmdzLm5vdGlmeVsib3BhY2l0eSJdLmNv bm5lY3QodGhpcy5vbl90aGVtZV9jaGFuZ2VkKTsKKyAKKy0gICAgdGhpcy5zZXR1cF9kcmFnX2Ry b3AgKCk7CistICAgIHRoaXMuc2V0dXBfcmVnZXhlcyAoKTsKKy0gICAgdGhpcy5jb25uZWN0X3Np Z25hbHMgKCk7CistICAgIHRoaXMuYmluZF9kYXRhICgpOworLSAgICB0aGlzLm9uX3RoZW1lX2No YW5nZWQgKCk7CistICAgIHRoaXMub25fZm9udF9jaGFuZ2VkICgpOworLSAgICB0aGlzLm9uX3Bh ZGRpbmdfY2hhbmdlZCAoKTsKKysgICAgdGhpcy5zZXR1cF9kcmFnX2Ryb3AoKTsKKysgICAgdGhp cy5zZXR1cF9yZWdleGVzKCk7CisrICAgIHRoaXMuY29ubmVjdF9zaWduYWxzKCk7CisrICAgIHRo aXMuYmluZF9kYXRhKCk7CisrICAgIHRoaXMub25fdGhlbWVfY2hhbmdlZCgpOworKyAgICB0aGlz Lm9uX2ZvbnRfY2hhbmdlZCgpOworKyAgICB0aGlzLm9uX3BhZGRpbmdfY2hhbmdlZCgpOworIAor ICAgICB0cnkgeworLSAgICAgIHRoaXMuc3Bhd24gKGNvbW1hbmQsIGN3ZCk7CistICAgIH0KKy0g ICAgY2F0Y2ggKEVycm9yIGUpIHsKKy0gICAgICB3YXJuaW5nICgiJXMiLCBlLm1lc3NhZ2UpOwor KyAgICAgIHRoaXMuc3Bhd24oY29tbWFuZCwgY3dkKTsKKysgICAgfSBjYXRjaCAoRXJyb3IgZSkg eworKyAgICAgIHdhcm5pbmcoIiVzIiwgZS5tZXNzYWdlKTsKKyAgICAgfQorICAgfQorIAorICNp ZiBCTEFDS0JPWF9ERUJVR19NRU1PUlkKKyAgIH5UZXJtaW5hbCAoKSB7CistICAgIG1lc3NhZ2Ug KCJUZXJtaW5hbCBkZXN0cm95ZWQiKTsKKysgICAgbWVzc2FnZSgiVGVybWluYWwgZGVzdHJveWVk Iik7CisgICB9CisrCisgI2VuZGlmCisgCisgICBwdWJsaWMgb3ZlcnJpZGUgdm9pZCBkaXNwb3Nl KCkgeworICNpZiBCTEFDS0JPWF9ERUJVR19NRU1PUlkKKy0gICAgbWVzc2FnZSAoIlRlcm1pbmFs IGRpc3Bvc2UiKTsKKysgICAgbWVzc2FnZSgiVGVybWluYWwgZGlzcG9zZSIpOworICNlbmRpZgor LSAgICBiYXNlLmRpc3Bvc2UgKCk7CisrICAgIGJhc2UuZGlzcG9zZSgpOworICAgfQorIAorICAg Ly8gTWV0aG9kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CisgCistICBwcml2YXRlIHZvaWQgc2V0dXBfZHJhZ19kcm9w ICgpIHsKKy0gICAgdmFyIHRhcmdldCA9IG5ldyBHdGsuRHJvcFRhcmdldCAoVHlwZS5JTlZBTElE LCBHZGsuRHJhZ0FjdGlvbi5DT1BZKTsKKysgIHByaXZhdGUgdm9pZCBzZXR1cF9kcmFnX2Ryb3Ao KSB7CisrICAgIHZhciB0YXJnZXQgPSBuZXcgR3RrLkRyb3BUYXJnZXQoVHlwZS5JTlZBTElELCBH ZGsuRHJhZ0FjdGlvbi5DT1BZKTsKKyAKKy0gICAgdGFyZ2V0LnNldF9ndHlwZXMgKHsKKysgICAg dGFyZ2V0LnNldF9ndHlwZXMoeworICAgICAgIHR5cGVvZiAoR2RrLkZpbGVMaXN0KSwKKyAgICAg ICB0eXBlb2YgKEdMaWIuRmlsZSksCisgICAgICAgdHlwZW9mIChzdHJpbmcpLAorICAgICB9KTsK KyAKKy0gICAgdGFyZ2V0LmRyb3AuY29ubmVjdCAodGhpcy5vbl9kcmFnX2RhdGFfcmVjZWl2ZWQp OworKyAgICB0YXJnZXQuZHJvcC5jb25uZWN0KHRoaXMub25fZHJhZ19kYXRhX3JlY2VpdmVkKTsK KyAKKy0gICAgdGhpcy5hZGRfY29udHJvbGxlciAodGFyZ2V0KTsKKysgICAgdGhpcy5hZGRfY29u dHJvbGxlcih0YXJnZXQpOworICAgfQorIAorLSAgcHJpdmF0ZSBib29sIG9uX2RyYWdfZGF0YV9y ZWNlaXZlZCAoCisrICBwcml2YXRlIGJvb2wgb25fZHJhZ19kYXRhX3JlY2VpdmVkKAorICAgICBH dGsuRHJvcFRhcmdldCB0YXJnZXQsCisgICAgIFZhbHVlIHZhbHVlLAorICAgICBkb3VibGUgeCwK KyAgICAgZG91YmxlIHkKKyAgICkgeworLSAgICB2YXIgdnR5cGUgPSB2YWx1ZS50eXBlICgpOwor KyAgICB2YXIgdnR5cGUgPSB2YWx1ZS50eXBlKCk7CisgCisgICAgIGlmICh2dHlwZSA9PSB0eXBl b2YgKEdkay5GaWxlTGlzdCkpIHsKKy0gICAgICB2YXIgbGlzdCA9IChHZGsuRmlsZUxpc3QpIHZh bHVlLmdldF9ib3hlZCAoKTsKKysgICAgICB2YXIgbGlzdCA9IChHZGsuRmlsZUxpc3QpIHZhbHVl LmdldF9ib3hlZCgpOworIAorLSAgICAgIGZvcmVhY2ggKHVub3duZWQgR0xpYi5GaWxlIGZpbGUg aW4gbGlzdC5nZXRfZmlsZXMgKCkpIHsKKy0gICAgICAgIHRoaXMuZmVlZF9jaGlsZCAoU2hlbGwu cXVvdGUgKGZpbGUuZ2V0X3BhdGggKCkpLmRhdGEpOworLSAgICAgICAgdGhpcy5mZWVkX2NoaWxk ICgiICIuZGF0YSk7CisrICAgICAgZm9yZWFjaCAodW5vd25lZCBHTGliLkZpbGUgZmlsZSBpbiBs aXN0LmdldF9maWxlcygpKSB7CisrICAgICAgICB0aGlzLmZlZWRfY2hpbGQoU2hlbGwucXVvdGUo ZmlsZS5nZXRfcGF0aCgpKS5kYXRhKTsKKysgICAgICAgIHRoaXMuZmVlZF9jaGlsZCgiICIuZGF0 YSk7CisgICAgICAgfQorIAorICAgICAgIHJldHVybiB0cnVlOworLSAgICB9CistICAgIGVsc2Ug aWYgKHZ0eXBlID09IHR5cGVvZiAoR0xpYi5GaWxlKSkgeworLSAgICAgIHZhciBmaWxlID0gKEdM aWIuRmlsZSkgdmFsdWUuZ2V0X29iamVjdCAoKTsKKy0gICAgICB2YXIgcGF0aCA9IGZpbGU/Lmdl dF9wYXRoICgpOworKyAgICB9IGVsc2UgaWYgKHZ0eXBlID09IHR5cGVvZiAoR0xpYi5GaWxlKSkg eworKyAgICAgIHZhciBmaWxlID0gKEdMaWIuRmlsZSkgdmFsdWUuZ2V0X29iamVjdCgpOworKyAg ICAgIHZhciBwYXRoID0gZmlsZT8uZ2V0X3BhdGgoKTsKKyAKKyAgICAgICBpZiAocGF0aCAhPSBu dWxsKSB7CistICAgICAgICB0aGlzLmZlZWRfY2hpbGQgKFNoZWxsLnF1b3RlIChwYXRoKS5kYXRh KTsKKy0gICAgICAgIHRoaXMuZmVlZF9jaGlsZCAoIiAiLmRhdGEpOworKyAgICAgICAgdGhpcy5m ZWVkX2NoaWxkKFNoZWxsLnF1b3RlKHBhdGgpLmRhdGEpOworKyAgICAgICAgdGhpcy5mZWVkX2No aWxkKCIgIi5kYXRhKTsKKyAgICAgICB9CisgCisgICAgICAgcmV0dXJuIHRydWU7CistICAgIH0K Ky0gICAgZWxzZSBpZiAodnR5cGUgPT0gdHlwZW9mIChzdHJpbmcpKSB7CistICAgICAgdmFyIHRl eHQgPSB2YWx1ZS5nZXRfc3RyaW5nICgpOworKyAgICB9IGVsc2UgaWYgKHZ0eXBlID09IHR5cGVv ZiAoc3RyaW5nKSkgeworKyAgICAgIHZhciB0ZXh0ID0gdmFsdWUuZ2V0X3N0cmluZygpOworIAor ICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHsKKy0gICAgICAgIHRoaXMuZmVlZF9jaGlsZCAodGV4 dC5kYXRhKTsKKysgICAgICAgIHRoaXMuZmVlZF9jaGlsZCh0ZXh0LmRhdGEpOworICAgICAgIH0K KyAKKyAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgfQorIAorLSAgICB3YXJuaW5nICgiWW91IGRy b3BwZWQgc29tZXRoaW5nIFRlcm1pbmFsIGNhbid0IGhhbmRsZSB5ZXQgOigiKTsKKysgICAgd2Fy bmluZygiWW91IGRyb3BwZWQgc29tZXRoaW5nIFRlcm1pbmFsIGNhbid0IGhhbmRsZSB5ZXQgOigi KTsKKyAgICAgcmV0dXJuIGZhbHNlOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIHNldHVwX3Jl Z2V4ZXMgKCkgeworKyAgcHJpdmF0ZSB2b2lkIHNldHVwX3JlZ2V4ZXMoKSB7CisgICAgIGZvcmVh Y2ggKHVub3duZWQgc3RyaW5nIHN0ciBpbiBDb25zdGFudHMuVVJMX1JFR0VYX1NUUklOR1MpIHsK KyAgICAgICB0cnkgeworLSAgICAgICAgdmFyIHJlZyA9IG5ldyBWdGUuUmVnZXguZm9yX21hdGNo ICgKKysgICAgICAgIHZhciByZWcgPSBuZXcgVnRlLlJlZ2V4LmZvcl9tYXRjaCgKKyAgICAgICAg ICAgc3RyLCAtMSwgUENSRTIuRmxhZ3MuTVVMVElMSU5FCisgICAgICAgICApOworLSAgICAgICAg aW50IGlkID0gdGhpcy5tYXRjaF9hZGRfcmVnZXggKHJlZywgMCk7CistICAgICAgICB0aGlzLm1h dGNoX3NldF9jdXJzb3JfbmFtZSAoaWQsICJwb2ludGVyIik7CistICAgICAgfQorLSAgICAgIGNh dGNoIChFcnJvciBlKSB7CistICAgICAgICB3YXJuaW5nIChlLm1lc3NhZ2UpOworKyAgICAgICAg aW50IGlkID0gdGhpcy5tYXRjaF9hZGRfcmVnZXgocmVnLCAwKTsKKysgICAgICAgIHRoaXMubWF0 Y2hfc2V0X2N1cnNvcl9uYW1lKGlkLCAicG9pbnRlciIpOworKyAgICAgIH0gY2F0Y2ggKEVycm9y IGUpIHsKKysgICAgICAgIHdhcm5pbmcoZS5tZXNzYWdlKTsKKyAgICAgICB9CisgICAgIH0KKyAg IH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9mb250X2NoYW5nZWQgKCkgeworLSAgICB0aGlzLmZv bnRfZGVzYyA9IFBhbmdvLkZvbnREZXNjcmlwdGlvbi5mcm9tX3N0cmluZyAoCisrICBwcml2YXRl IHZvaWQgb25fZm9udF9jaGFuZ2VkKCkgeworKyAgICB0aGlzLmZvbnRfZGVzYyA9IFBhbmdvLkZv bnREZXNjcmlwdGlvbi5mcm9tX3N0cmluZygKKyAgICAgICB0aGlzLnNldHRpbmdzLmZvbnQKKyAg ICAgKTsKKyAgIH0KK0BAIC0yMzAsMTggKzIyNywxOCBAQCBwcml2YXRlIHN0YXRpYyB1aW50ICAg ICAgIG5leHRfaWQgPSAwOworICAgICByZXR1cm4gYmdfdHJhbnNwYXJlbnQ7CisgICB9CisgCist ICBwcml2YXRlIHZvaWQgb25fdGhlbWVfY2hhbmdlZCAoKSB7CistICAgIHZhciB0aGVtZV9wcm92 aWRlciA9IFRoZW1lUHJvdmlkZXIuZ2V0X2RlZmF1bHQgKCk7CisrICBwcml2YXRlIHZvaWQgb25f dGhlbWVfY2hhbmdlZCgpIHsKKysgICAgdmFyIHRoZW1lX3Byb3ZpZGVyID0gVGhlbWVQcm92aWRl ci5nZXRfZGVmYXVsdCgpOworICAgICB2YXIgdGhlbWVfbmFtZSA9IHRoZW1lX3Byb3ZpZGVyLmN1 cnJlbnRfdGhlbWU7CistICAgIHZhciB0aGVtZSA9IHRoZW1lX3Byb3ZpZGVyLnRoZW1lcy5nZXQg KHRoZW1lX25hbWUpOworKyAgICB2YXIgdGhlbWUgPSB0aGVtZV9wcm92aWRlci50aGVtZXMuZ2V0 KHRoZW1lX25hbWUpOworIAorICAgICBpZiAodGhlbWUgPT0gbnVsbCkgeworLSAgICAgIHdhcm5p bmcgKCJJTlZBTElEIFRIRU1FICclcyciLCB0aGVtZV9uYW1lKTsKKysgICAgICB3YXJuaW5nKCJJ TlZBTElEIFRIRU1FICclcyciLCB0aGVtZV9uYW1lKTsKKyAgICAgICByZXR1cm47CisgICAgIH0K KyAKKy0gICAgdmFyIGJnID0gdGhpcy5nZXRfYmFja2dyb3VuZF9jb2xvciAodGhlbWUpOworLSAg ICB0aGlzLnNldF9jb2xvcnMgKAorKyAgICB2YXIgYmcgPSB0aGlzLmdldF9iYWNrZ3JvdW5kX2Nv bG9yKHRoZW1lKTsKKysgICAgdGhpcy5zZXRfY29sb3JzKAorICAgICAgIHRoZW1lLmZvcmVncm91 bmRfY29sb3IsCisgICAgICAgYmcsCisgICAgICAgdGhlbWUucGFsZXR0ZS5kYXRhCitAQCAtMjQ5 LDExICsyNDYsMTEgQEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAg IH0KKyAKKyAgIHByaXZhdGUgR3RrLkNzc1Byb3ZpZGVyPyBwYWRkaW5nX3Byb3ZpZGVyID0gbnVs bDsKKy0gIHByaXZhdGUgdm9pZCBvbl9wYWRkaW5nX2NoYW5nZWQgKCkgeworLSAgICB2YXIgcGFk ID0gdGhpcy5zZXR0aW5ncy5nZXRfcGFkZGluZyAoKTsKKysgIHByaXZhdGUgdm9pZCBvbl9wYWRk aW5nX2NoYW5nZWQoKSB7CisrICAgIHZhciBwYWQgPSB0aGlzLnNldHRpbmdzLmdldF9wYWRkaW5n KCk7CisgCisgICAgIGlmICh0aGlzLnBhZGRpbmdfcHJvdmlkZXIgIT0gbnVsbCkgeworLSAgICAg IHRoaXMuZ2V0X3N0eWxlX2NvbnRleHQgKCkucmVtb3ZlX3Byb3ZpZGVyICh0aGlzLnBhZGRpbmdf cHJvdmlkZXIpOworKyAgICAgIHRoaXMuZ2V0X3N0eWxlX2NvbnRleHQoKS5yZW1vdmVfcHJvdmlk ZXIodGhpcy5wYWRkaW5nX3Byb3ZpZGVyKTsKKyAgICAgICB0aGlzLnBhZGRpbmdfcHJvdmlkZXIg PSBudWxsOworICAgICB9CisgCitAQCAtMjY2LDE0ICsyNjMsMTQgQEAgcHJpdmF0ZSBzdGF0aWMg dWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgICApCisgICAgICk7CisgCistICAgIHRoaXMu Z2V0X3N0eWxlX2NvbnRleHQgKCkuYWRkX3Byb3ZpZGVyICgKKysgICAgdGhpcy5nZXRfc3R5bGVf Y29udGV4dCgpLmFkZF9wcm92aWRlcigKKyAgICAgICB0aGlzLnBhZGRpbmdfcHJvdmlkZXIsCisg ICAgICAgR3RrLlNUWUxFX1BST1ZJREVSX1BSSU9SSVRZX0FQUExJQ0FUSU9OCisgICAgICk7Cisg ICB9CisgCistICBwcml2YXRlIHZvaWQgYmluZF9kYXRhICgpIHsKKy0gICAgdGhpcy5zZXR0aW5n cy5zY2hlbWEuYmluZCAoCisrICBwcml2YXRlIHZvaWQgYmluZF9kYXRhKCkgeworKyAgICB0aGlz LnNldHRpbmdzLnNjaGVtYS5iaW5kKAorICAgICAgICJ0aGVtZS1ib2xkLWlzLWJyaWdodCIsCisg ICAgICAgdGhpcywKKyAgICAgICAiYm9sZC1pcy1icmlnaHQiLAorQEAgLTI4NywyOCArMjg0LDI4 IEBAIHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgICAgU2V0dGlu Z3NCaW5kRmxhZ3MuREVGQVVMVAorICAgICApOworIAorLSAgICB0aGlzLnNldHRpbmdzLnNjaGVt YS5iaW5kICgKKysgICAgdGhpcy5zZXR0aW5ncy5zY2hlbWEuYmluZCgKKyAgICAgICAidGVybWlu YWwtYmVsbCIsCisgICAgICAgdGhpcywKKyAgICAgICAiYXVkaWJsZS1iZWxsIiwKKyAgICAgICBT ZXR0aW5nc0JpbmRGbGFncy5ERUZBVUxUCisgICAgICk7CisgCistICAgIHRoaXMuc2V0dGluZ3Mu c2NoZW1hLmJpbmQgKAorKyAgICB0aGlzLnNldHRpbmdzLnNjaGVtYS5iaW5kKAorICAgICAgICJ0 ZXJtaW5hbC1jZWxsLXdpZHRoIiwKKyAgICAgICB0aGlzLAorICAgICAgICJjZWxsLXdpZHRoLXNj YWxlIiwKKyAgICAgICBTZXR0aW5nc0JpbmRGbGFncy5ERUZBVUxUCisgICAgICk7CisgCistICAg IHRoaXMuc2V0dGluZ3Muc2NoZW1hLmJpbmQgKAorKyAgICB0aGlzLnNldHRpbmdzLnNjaGVtYS5i aW5kKAorICAgICAgICJ0ZXJtaW5hbC1jZWxsLWhlaWdodCIsCisgICAgICAgdGhpcywKKyAgICAg ICAiY2VsbC1oZWlnaHQtc2NhbGUiLAorICAgICAgIFNldHRpbmdzQmluZEZsYWdzLkRFRkFVTFQK KyAgICAgKTsKKyAKKy0gICAgdGhpcy5zZXR0aW5ncy5iaW5kX3Byb3BlcnR5ICgKKysgICAgdGhp cy5zZXR0aW5ncy5iaW5kX3Byb3BlcnR5KAorICAgICAgICJjdXJzb3Itc2hhcGUiLAorICAgICAg IHRoaXMsCisgICAgICAgImN1cnNvci1zaGFwZSIsCitAQCAtMzE3LDcgKzMxNCw3IEBAIHByaXZh dGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgICAgbnVsbAorICAgICApOwor IAorLSAgICB0aGlzLnNldHRpbmdzLmJpbmRfcHJvcGVydHkgKAorKyAgICB0aGlzLnNldHRpbmdz LmJpbmRfcHJvcGVydHkoCisgICAgICAgImN1cnNvci1ibGluay1tb2RlIiwKKyAgICAgICB0aGlz LAorICAgICAgICJjdXJzb3ItYmxpbmstbW9kZSIsCitAQCAtMzI2LDcgKzMyMyw3IEBAIHByaXZh dGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgICAgbnVsbAorICAgICApOwor IAorLSAgICB0aGlzLmJpbmRfcHJvcGVydHkgKAorKyAgICB0aGlzLmJpbmRfcHJvcGVydHkoCisg ICAgICAgInVzZXItc2Nyb2xsYmFjay1saW5lcyIsCisgICAgICAgdGhpcywKKyAgICAgICAic2Ny b2xsYmFjay1saW5lcyIsCitAQCAtMzQzLDcgKzM0MCw3IEBAIHByaXZhdGUgc3RhdGljIHVpbnQg ICAgICAgbmV4dF9pZCA9IDA7CisgICAgIC8vIFNlZToKKyAgICAgLy8gLSBodHRwczovL2dpdGxh Yi5nbm9tZS5vcmcvcmFnZ2VzaWx2ZXIvYmxhY2tib3gvLS9pc3N1ZXMvMTc5CisgICAgIC8vIC0g aHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL3Z0ZS8tL2lzc3Vlcy8zMzYKKy0gICAgdGhp cy5zZXR0aW5ncy5iaW5kX3Byb3BlcnR5ICgKKysgICAgdGhpcy5zZXR0aW5ncy5iaW5kX3Byb3Bl cnR5KAorICAgICAgICJzaG93LXNjcm9sbGJhcnMiLAorICAgICAgIHRoaXMsCisgICAgICAgImVu YWJsZS1mYWxsYmFjay1zY3JvbGxpbmciLAorQEAgLTM1Myw3MyArMzUwLDcyIEBAIHByaXZhdGUg c3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgICk7CisgICB9CisgCistICBwcml2 YXRlIHN0cmluZyBwcm9jZXNzX2NvbXBsZXRlZF9ub3RpZmljYXRpb25faWQgKCkgeworLSAgICBy ZXR1cm4gInByb2Nlc3MtY29tcGxldGVkLSV1LSV1Ii5wcmludGYgKHdpbmRvdy5pZCwgdGhpcy5p ZCk7CisrICBwcml2YXRlIHN0cmluZyBwcm9jZXNzX2NvbXBsZXRlZF9ub3RpZmljYXRpb25faWQo KSB7CisrICAgIHJldHVybiAicHJvY2Vzcy1jb21wbGV0ZWQtJXUtJXUiLnByaW50Zih3aW5kb3cu aWQsIHRoaXMuaWQpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX2F0dGVudGlvbl9yZWNl aXZlZCAoKSB7CistICAgICB0aGlzLm5lZWRzX2F0dGVudGlvbiA9IGZhbHNlOworLSAgICAgdGhp cy53aXRoZHJhd19jb21tYW5kX2NvbXBsZXRlZF9ub3RpZmljYXRpb24gKCk7CisrICBwcml2YXRl IHZvaWQgb25fYXR0ZW50aW9uX3JlY2VpdmVkKCkgeworKyAgICB0aGlzLm5lZWRzX2F0dGVudGlv biA9IGZhbHNlOworKyAgICB0aGlzLndpdGhkcmF3X2NvbW1hbmRfY29tcGxldGVkX25vdGlmaWNh dGlvbigpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIGNvbm5lY3Rfc2lnbmFscyAoKSB7Cist ICAgIHZhciBrcGNvbnRyb2xsZXIgPSBuZXcgR3RrLkV2ZW50Q29udHJvbGxlcktleSAoKTsKKy0g ICAga3Bjb250cm9sbGVyLmtleV9wcmVzc2VkLmNvbm5lY3QgKHRoaXMub25fa2V5X3ByZXNzZWQp OworLSAgICB0aGlzLmFkZF9jb250cm9sbGVyIChrcGNvbnRyb2xsZXIpOworKyAgcHJpdmF0ZSB2 b2lkIGNvbm5lY3Rfc2lnbmFscygpIHsKKysgICAgdmFyIGtwY29udHJvbGxlciA9IG5ldyBHdGsu RXZlbnRDb250cm9sbGVyS2V5KCk7CisrICAgIGtwY29udHJvbGxlci5rZXlfcHJlc3NlZC5jb25u ZWN0KHRoaXMub25fa2V5X3ByZXNzZWQpOworKyAgICB0aGlzLmFkZF9jb250cm9sbGVyKGtwY29u dHJvbGxlcik7CisgCistICAgIHZhciBsZWZ0X2NsaWNrX2NvbnRyb2xsZXIgPSBuZXcgR3RrLkdl c3R1cmVDbGljayAoKSB7CisrICAgIHZhciBsZWZ0X2NsaWNrX2NvbnRyb2xsZXIgPSBuZXcgR3Rr Lkdlc3R1cmVDbGljaygpIHsKKyAgICAgICBidXR0b24gPSBHZGsuQlVUVE9OX1BSSU1BUlksCisg ICAgIH07CistICAgIGxlZnRfY2xpY2tfY29udHJvbGxlci5wcmVzc2VkLmNvbm5lY3QgKChnZXN0 dXJlLCBuX2NsaWNrZWQsIHgsIHkpID0+IHsKKy0gICAgICB2YXIgZXZlbnQgPSBnZXN0dXJlLmdl dF9jdXJyZW50X2V2ZW50ICgpOworLSAgICAgIHZhciBwYXR0ZXJuID0gdGhpcy5jaGVja19tYXRj aF9hdCAoeCwgeSwgbnVsbCkgPz8gdGhpcy5oeXBlcmxpbmtfaG92ZXJfdXJpOworKyAgICBsZWZ0 X2NsaWNrX2NvbnRyb2xsZXIucHJlc3NlZC5jb25uZWN0KChnZXN0dXJlLCBuX2NsaWNrZWQsIHgs IHkpID0+IHsKKysgICAgICB2YXIgZXZlbnQgPSBnZXN0dXJlLmdldF9jdXJyZW50X2V2ZW50KCk7 CisrICAgICAgdmFyIHBhdHRlcm4gPSB0aGlzLmNoZWNrX21hdGNoX2F0KHgsIHksIG51bGwpID8/ IHRoaXMuaHlwZXJsaW5rX2hvdmVyX3VyaTsKKyAKKyAgICAgICBpZiAoCistICAgICAgICAoZXZl bnQuZ2V0X21vZGlmaWVyX3N0YXRlICgpICYgR2RrLk1vZGlmaWVyVHlwZS5DT05UUk9MX01BU0sp ID09IDAgfHwKKysgICAgICAgIChldmVudC5nZXRfbW9kaWZpZXJfc3RhdGUoKSAmIEdkay5Nb2Rp ZmllclR5cGUuQ09OVFJPTF9NQVNLKSA9PSAwIHx8CisgICAgICAgICBwYXR0ZXJuID09IG51bGwK KyAgICAgICApIHsKKyAgICAgICAgIHJldHVybjsKKyAgICAgICB9CisgCisgICAgICAgdHJ5IHsK Ky0gICAgICAgIEdMaWIuQXBwSW5mby5sYXVuY2hfZGVmYXVsdF9mb3JfdXJpIChwYXR0ZXJuLCBu dWxsKTsKKy0gICAgICB9CistICAgICAgY2F0Y2ggKEVycm9yIGUpIHsKKy0gICAgICAgIHdhcm5p bmcgKCJGYWlsZWQgdG8gb3BlbiBsaW5rICVzIiwgZS5tZXNzYWdlKTsKKysgICAgICAgIEdMaWIu QXBwSW5mby5sYXVuY2hfZGVmYXVsdF9mb3JfdXJpKHBhdHRlcm4sIG51bGwpOworKyAgICAgIH0g Y2F0Y2ggKEVycm9yIGUpIHsKKysgICAgICAgIHdhcm5pbmcoIkZhaWxlZCB0byBvcGVuIGxpbmsg JXMiLCBlLm1lc3NhZ2UpOworICAgICAgIH0KKyAgICAgfSk7CistICAgIHRoaXMuYWRkX2NvbnRy b2xsZXIgKGxlZnRfY2xpY2tfY29udHJvbGxlcik7CisrICAgIHRoaXMuYWRkX2NvbnRyb2xsZXIo bGVmdF9jbGlja19jb250cm9sbGVyKTsKKyAKKy0gICAgdGhpcy5zZXR0aW5ncy5ub3RpZnkgWyJz Y3JvbGxiYWNrLWxpbmVzIl0KKy0gICAgICAuY29ubmVjdCAoKCkgPT4geworLSAgICAgICAgdGhp cy5ub3RpZnlfcHJvcGVydHkgKCJ1c2VyLXNjcm9sbGJhY2stbGluZXMiKTsKKy0gICAgICB9KTsK KysgICAgdGhpcy5zZXR0aW5ncy5ub3RpZnlbInNjcm9sbGJhY2stbGluZXMiXQorKyAgICAuY29u bmVjdCgoKSA9PiB7CisrICAgICAgdGhpcy5ub3RpZnlfcHJvcGVydHkoInVzZXItc2Nyb2xsYmFj ay1saW5lcyIpOworKyAgICB9KTsKKyAKKy0gICAgdGhpcy5zZXR0aW5ncy5ub3RpZnkgWyJzY3Jv bGxiYWNrLW1vZGUiXQorLSAgICAgIC5jb25uZWN0ICgoKSA9PiB7CistICAgICAgICB0aGlzLm5v dGlmeV9wcm9wZXJ0eSAoInVzZXItc2Nyb2xsYmFjay1saW5lcyIpOworLSAgICAgIH0pOworKyAg ICB0aGlzLnNldHRpbmdzLm5vdGlmeVsic2Nyb2xsYmFjay1tb2RlIl0KKysgICAgLmNvbm5lY3Qo KCkgPT4geworKyAgICAgIHRoaXMubm90aWZ5X3Byb3BlcnR5KCJ1c2VyLXNjcm9sbGJhY2stbGlu ZXMiKTsKKysgICAgfSk7CisgCistICAgIHRoaXMubm90aWZ5IFsiaGFzLWZvY3VzIl0uY29ubmVj dCAoKCkgPT4geworKyAgICB0aGlzLm5vdGlmeVsiaGFzLWZvY3VzIl0uY29ubmVjdCgoKSA9PiB7 CisgICAgICAgaWYgKHRoaXMuYXR0ZW50aW9uX3RpbWVyID4gMCkgeworLSAgICAgICAgR0xpYi5T b3VyY2UucmVtb3ZlICh0aGlzLmF0dGVudGlvbl90aW1lcik7CisrICAgICAgICBHTGliLlNvdXJj ZS5yZW1vdmUodGhpcy5hdHRlbnRpb25fdGltZXIpOworICAgICAgICAgdGhpcy5hdHRlbnRpb25f dGltZXIgPSAwOworICAgICAgIH0KKyAgICAgICBpZiAodGhpcy5oYXNfZm9jdXMpIHsKKy0gICAg ICAgIHRoaXMuYXR0ZW50aW9uX3RpbWVyID0gR0xpYi5UaW1lb3V0LmFkZF9vbmNlICgyICogMTAw MCwgKCkgPT4geworLSAgICAgICAgICB0aGlzLm9uX2F0dGVudGlvbl9yZWNlaXZlZCAoKTsKKysg ICAgICAgIHRoaXMuYXR0ZW50aW9uX3RpbWVyID0gR0xpYi5UaW1lb3V0LmFkZF9vbmNlKDIgKiAx MDAwLCAoKSA9PiB7CisrICAgICAgICAgIHRoaXMub25fYXR0ZW50aW9uX3JlY2VpdmVkKCk7Cisg ICAgICAgICAgIHRoaXMuYXR0ZW50aW9uX3RpbWVyID0gMDsKKyAgICAgICAgIH0pOworICAgICAg IH0KKyAgICAgfSk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgc3Bhd24gKHN0cmluZz8gY29t bWFuZCwgc3RyaW5nPyBjd2QpIHRocm93cyBFcnJvciB7CisrICBwcml2YXRlIHZvaWQgc3Bhd24o c3RyaW5nPyBjb21tYW5kLCBzdHJpbmc/IGN3ZCkgdGhyb3dzIEVycm9yIHsKKyAgICAgQXJyYXk8 c3RyaW5nPiBhcmd2ID0gbmV3IEFycmF5PHN0cmluZz4gKCk7CisgICAgIEFycmF5PHN0cmluZz4g ZW52diA9IG5ldyBBcnJheTxzdHJpbmc+ICgpOworICAgICBWdGUuUHR5RmxhZ3MgZmxhZ3MgPSBW dGUuUHR5RmxhZ3MuREVGQVVMVDsKKyAKKy0gICAgdmFyIHNldHRpbmdzID0gU2V0dGluZ3MuZ2V0 X2RlZmF1bHQgKCk7CisrICAgIHZhciBzZXR0aW5ncyA9IFNldHRpbmdzLmdldF9kZWZhdWx0KCk7 CisgICAgIHN0cmluZ1tdPyBjdXN0b21fc2hlbGxfY29tbWFuZHYgPSBudWxsOworIAorICAgICBz dHJpbmcgc2hlbGw7CitAQCAtNDI4LDM4ICs0MjQsMzggQEAgcHJpdmF0ZSBzdGF0aWMgdWludCAg ICAgICBuZXh0X2lkID0gMDsKKyAgICAgICBzZXR0aW5ncy51c2VfY3VzdG9tX2NvbW1hbmQgJiYK KyAgICAgICBzZXR0aW5ncy5jdXN0b21fc2hlbGxfY29tbWFuZCAhPSAiIgorICAgICApIHsKKy0g ICAgICBTaGVsbC5wYXJzZV9hcmd2IChzZXR0aW5ncy5jdXN0b21fc2hlbGxfY29tbWFuZCwgb3V0 IGN1c3RvbV9zaGVsbF9jb21tYW5kdik7CisrICAgICAgU2hlbGwucGFyc2VfYXJndihzZXR0aW5n cy5jdXN0b21fc2hlbGxfY29tbWFuZCwKKysgICAgICAgICAgICAgICAgICAgICAgIG91dCBjdXN0 b21fc2hlbGxfY29tbWFuZHYpOworICAgICB9CisgCistICAgIHZhciB0bXBfZW52diA9IEVudmly b24uZ2V0ICgpOworKyAgICB2YXIgdG1wX2VudnYgPSBFbnZpcm9uLmdldCgpOworIAorICAgICBm b3JlYWNoIChzdHJpbmcgZW52IGluIHRtcF9lbnZ2KSB7CistICAgICAgZW52di5hcHBlbmRfdmFs IChlbnYpOworKyAgICAgIGVudnYuYXBwZW5kX3ZhbChlbnYpOworICAgICB9CisgCisgICAgIGZv cmVhY2ggKHVub3duZWQgc3RyaW5nIGVudiBpbiBUZXJtaW5hbC5ibGFja2JveF9lbnZ2KSB7Cist ICAgICAgZW52di5hcHBlbmRfdmFsIChlbnYpOworKyAgICAgIGVudnYuYXBwZW5kX3ZhbChlbnYp OworICAgICB9CisgCistICAgIHNoZWxsID0gRW52aXJvbi5nZXRfdmFyaWFibGUgKGVudnYuZGF0 YSwgIlNIRUxMIik7CisrICAgIHNoZWxsID0gRW52aXJvbi5nZXRfdmFyaWFibGUoZW52di5kYXRh LCAiU0hFTEwiKTsKKyAKKyAgICAgaWYgKGN1c3RvbV9zaGVsbF9jb21tYW5kdiAhPSBudWxsKSB7 CisgICAgICAgZm9yZWFjaCAodW5vd25lZCBzdHJpbmcgcyBpbiBjdXN0b21fc2hlbGxfY29tbWFu ZHYpIHsKKy0gICAgICAgIGFyZ3YuYXBwZW5kX3ZhbCAocyk7CisrICAgICAgICBhcmd2LmFwcGVu ZF92YWwocyk7CisgICAgICAgfQorLSAgICB9CistICAgIGVsc2UgeworLSAgICAgIGFyZ3YuYXBw ZW5kX3ZhbCAoc2hlbGwpOworKyAgICB9IGVsc2UgeworKyAgICAgIGFyZ3YuYXBwZW5kX3ZhbChz aGVsbCk7CisgICAgICAgaWYgKHNldHRpbmdzLmNvbW1hbmRfYXNfbG9naW5fc2hlbGwgJiYgY29t bWFuZCA9PSBudWxsKSB7CistICAgICAgICBhcmd2LmFwcGVuZF92YWwgKCItLWxvZ2luIik7Cisr ICAgICAgICBhcmd2LmFwcGVuZF92YWwoIi0tbG9naW4iKTsKKyAgICAgICB9CisgICAgIH0KKyAg ICAgaWYgKGNvbW1hbmQgIT0gbnVsbCkgeworLSAgICAgIGFyZ3YuYXBwZW5kX3ZhbCAoIi1jIik7 CistICAgICAgYXJndi5hcHBlbmRfdmFsIChjb21tYW5kKTsKKysgICAgICBhcmd2LmFwcGVuZF92 YWwoIi1jIik7CisrICAgICAgYXJndi5hcHBlbmRfdmFsKGNvbW1hbmQpOworICAgICB9CisgCist ICAgIHRoaXMuc3Bhd25fYXN5bmMgKAorKyAgICB0aGlzLnNwYXduX2FzeW5jKAorICAgICAgIGZs YWdzLAorICAgICAgIGN3ZCwKKyAgICAgICBhcmd2LmRhdGEsCitAQCAtNDcyLDM4ICs0NjgsMzcg QEAgcHJpdmF0ZSBzdGF0aWMgdWludCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgKTsKKyAgIH0K KyAKKy0gIHByaXZhdGUgdm9pZCBfb25fc3Bhd25fZmluaXNoZWQgKFZ0ZS5UZXJtaW5hbCB0LCBQ aWQgcGlkLCBHTGliLkVycm9yPyBlcnJvcikgeworKyAgcHJpdmF0ZSB2b2lkIF9vbl9zcGF3bl9m aW5pc2hlZChWdGUuVGVybWluYWwgdCwgUGlkIHBpZCwgR0xpYi5FcnJvcj8gZXJyb3IpIHsKKyAg ICAgaWYgKGVycm9yID09IG51bGwpIHsKKyAgICAgICB0aGlzLnBpZCA9IHBpZDsKKy0gICAgICB0 aGlzLm9uX3NwYXduX2ZpbmlzaGVkICgpOworLSAgICB9CistICAgIGVsc2UgeworLSAgICAgIHRo aXMuc3Bhd25fZmFpbGVkIChlcnJvci5tZXNzYWdlKTsKKysgICAgICB0aGlzLm9uX3NwYXduX2Zp bmlzaGVkKCk7CisrICAgIH0gZWxzZSB7CisrICAgICAgdGhpcy5zcGF3bl9mYWlsZWQoZXJyb3Iu bWVzc2FnZSk7CisgICAgIH0KKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9zcGF3bl9maW5p c2hlZCAoKSB7CisrICBwcml2YXRlIHZvaWQgb25fc3Bhd25fZmluaXNoZWQoKSB7CisgICAgIGlm IChfcGlkIDwgMCkgeworICAgICAgIHJldHVybjsKKyAgICAgfQorIAorLSAgICB0aGlzLnByb2Nl c3MgPSBuZXcgUHJvY2VzcyAoKSB7CistICAgICAgdGVybWluYWxfZmQgPSB0aGlzLnB0eS5nZXRf ZmQgKCksCisrICAgIHRoaXMucHJvY2VzcyA9IG5ldyBQcm9jZXNzKCkgeworKyAgICAgIHRlcm1p bmFsX2ZkID0gdGhpcy5wdHkuZ2V0X2ZkKCksCisgICAgICAgcGlkID0gdGhpcy5waWQsCisgICAg ICAgZm9yZWdyb3VuZF9waWQgPSAtMSwKKyAgICAgfTsKKyAKKy0gICAgdGhpcy5wcm9jZXNzLmZv cmVncm91bmRfdGFza19maW5pc2hlZC5jb25uZWN0ICgoX3Byb2Nlc3MpID0+IHsKKysgICAgdGhp cy5wcm9jZXNzLmZvcmVncm91bmRfdGFza19maW5pc2hlZC5jb25uZWN0KChfcHJvY2VzcykgPT4g eworICAgICAgIGlmICghdGhpcy5oYXNfZm9jdXMgJiYgX3Byb2Nlc3MubGFzdF9mb3JlZ3JvdW5k X3Rhc2tfY29tbWFuZCAhPSBudWxsKSB7CisgICAgICAgICB0aGlzLm5lZWRzX2F0dGVudGlvbiA9 IHRydWU7CistICAgICAgICB0aGlzLnNlbmRfY29tbWFuZF9jb21wbGV0ZWRfbm90aWZpY2F0aW9u ICgpOworKyAgICAgICAgdGhpcy5zZW5kX2NvbW1hbmRfY29tcGxldGVkX25vdGlmaWNhdGlvbigp OworICAgICAgIH0KKyAgICAgfSk7CisgCistICAgIHRoaXMucHJvY2Vzcy5ub3RpZnkgWyJjb250 ZXh0Il0uY29ubmVjdCAoKF9fcHJvY2Vzcywgc3BlYykgPT4geworKyAgICB0aGlzLnByb2Nlc3Mu bm90aWZ5WyJjb250ZXh0Il0uY29ubmVjdCgoX19wcm9jZXNzLCBzcGVjKSA9PiB7CisgICAgICAg dmFyIGNvbnRleHQgPSAoX3Byb2Nlc3MgYXMgUHJvY2Vzcyk/LmNvbnRleHQgPz8gUHJvY2Vzc0Nv bnRleHQuREVGQVVMVDsKKyAKKy0gICAgICB0aGlzLmNvbnRleHRfY2hhbmdlZC5lbWl0IChjb250 ZXh0KTsKKysgICAgICB0aGlzLmNvbnRleHRfY2hhbmdlZC5lbWl0KGNvbnRleHQpOworICAgICAg IC8vICBzdHJpbmcgY29udGV4dF9zdHIgPQorICAgICAgIC8vICAgIGNvbnRleHQgPT0gUHJvY2Vz c0NvbnRleHQuU1NICisgICAgICAgLy8gICAgICA/ICJzc2giCitAQCAtNTEzLDkgKzUwOCw5IEBA IHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7CisgICAgICAgLy8gIG1lc3Nh Z2UgKCJOZXcgY29udGV4dCBmb3IgcHJvY2VzczogJXMiLCBjb250ZXh0X3N0cik7CisgICAgIH0p OworIAorLSAgICBQcm9jZXNzV2F0Y2hlci5nZXRfaW5zdGFuY2UgKCkud2F0Y2ggKHRoaXMucHJv Y2Vzcyk7CisrICAgIFByb2Nlc3NXYXRjaGVyLmdldF9pbnN0YW5jZSgpLndhdGNoKHRoaXMucHJv Y2Vzcyk7CisgCistICAgIHRoaXMuY29udGV4dF9jaGFuZ2VkLmVtaXQgKHRoaXMucHJvY2Vzcy5j b250ZXh0KTsKKysgICAgdGhpcy5jb250ZXh0X2NoYW5nZWQuZW1pdCh0aGlzLnByb2Nlc3MuY29u dGV4dCk7CisgICB9CisgCisgICBwcml2YXRlIHZvaWQgc2VuZF9jb21tYW5kX2NvbXBsZXRlZF9u b3RpZmljYXRpb24oKSB7CitAQCAtNTM1LDI1ICs1MzAsMjUgQEAgcHJpdmF0ZSBzdGF0aWMgdWlu dCAgICAgICBuZXh0X2lkID0gMDsKKyAgICAgKTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCB3 aXRoZHJhd19jb21tYW5kX2NvbXBsZXRlZF9ub3RpZmljYXRpb24gKCkgeworLSAgICB0aGlzLndp bmRvdy5hcHBsaWNhdGlvbi53aXRoZHJhd19ub3RpZmljYXRpb24gKAorLSAgICAgIHByb2Nlc3Nf Y29tcGxldGVkX25vdGlmaWNhdGlvbl9pZCAoKQorKyAgcHJpdmF0ZSB2b2lkIHdpdGhkcmF3X2Nv bW1hbmRfY29tcGxldGVkX25vdGlmaWNhdGlvbigpIHsKKysgICAgdGhpcy53aW5kb3cuYXBwbGlj YXRpb24ud2l0aGRyYXdfbm90aWZpY2F0aW9uKAorKyAgICAgIHByb2Nlc3NfY29tcGxldGVkX25v dGlmaWNhdGlvbl9pZCgpCisgICAgICk7CisgICB9CisgCisgICAvLyBTaWduYWwgY2FsbGJhY2tz ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9jaGlsZF9leGl0ZWQgKGludCBzdGF0dXMpIHsKKy0g ICAgZGVidWcgKCJDaGlsZCBleGl0ZWQgd2l0aCBjb2RlICVkIiwgc3RhdHVzKTsKKysgIHByaXZh dGUgdm9pZCBvbl9jaGlsZF9leGl0ZWQoaW50IHN0YXR1cykgeworKyAgICBkZWJ1ZygiQ2hpbGQg ZXhpdGVkIHdpdGggY29kZSAlZCIsIHN0YXR1cyk7CisgICAgIHRoaXMucGlkID0gLTE7CisgICAg IC8vICBUaGlzIGlzIG5vdCBhIGdvb2QgaWRlYS4gQW5vdGhlciB0aHJlYWQgbWlnaHQgYmUgbW9k aWZ5aW5nIHRoaXMgZmllbGQKKyAgICAgLy8gIGFzIHdlbGwuCisgICAgIC8vICB0aGlzLnByb2Nl c3MuZW5kZWQgPSB0cnVlOworICAgICB0aGlzLnByb2Nlc3MgPSBudWxsOworLSAgICB0aGlzLmV4 aXQgKCk7CisrICAgIHRoaXMuZXhpdCgpOworICAgfQorIAorLSAgcHJpdmF0ZSBib29sIG9uX2tl eV9wcmVzc2VkICgKKysgIHByaXZhdGUgYm9vbCBvbl9rZXlfcHJlc3NlZCgKKyAgICAgdWludCBr ZXl2YWwsCisgICAgIHVpbnQga2V5Y29kZSwKKyAgICAgR2RrLk1vZGlmaWVyVHlwZSBzdGF0ZQor QEAgLTU2MiwyMCArNTU3LDIwIEBAIHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9 IDA7CisgICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgCistICAgIHN3aXRjaCAoR2RrLmtl eXZhbF9uYW1lIChrZXl2YWwpKSB7CisrICAgIHN3aXRjaCAoR2RrLmtleXZhbF9uYW1lKGtleXZh bCkpIHsKKyAgICAgICBjYXNlICJjIjoKKyAgICAgICAgIGlmICgKKy0gICAgICAgICAgdGhpcy5n ZXRfaGFzX3NlbGVjdGlvbiAoKSAmJgorLSAgICAgICAgICBTZXR0aW5ncy5nZXRfZGVmYXVsdCAo KS5lYXN5X2NvcHlfcGFzdGUKKysgICAgICAgICAgdGhpcy5nZXRfaGFzX3NlbGVjdGlvbigpICYm CisrICAgICAgICAgIFNldHRpbmdzLmdldF9kZWZhdWx0KCkuZWFzeV9jb3B5X3Bhc3RlCisgICAg ICAgICApIHsKKy0gICAgICAgICAgdGhpcy5kb19jb3B5X2NsaXBib2FyZCAoKTsKKy0gICAgICAg ICAgdGhpcy51bnNlbGVjdF9hbGwgKCk7CisrICAgICAgICAgIHRoaXMuZG9fY29weV9jbGlwYm9h cmQoKTsKKysgICAgICAgICAgdGhpcy51bnNlbGVjdF9hbGwoKTsKKyAgICAgICAgICAgcmV0dXJu IHRydWU7CisgICAgICAgICB9CisgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgY2FzZSAi diI6CistICAgICAgICBpZiAoU2V0dGluZ3MuZ2V0X2RlZmF1bHQgKCkuZWFzeV9jb3B5X3Bhc3Rl KSB7CistICAgICAgICAgIHRoaXMuZG9fcGFzdGVfY2xpcGJvYXJkICgpOworKyAgICAgICAgaWYg KFNldHRpbmdzLmdldF9kZWZhdWx0KCkuZWFzeV9jb3B5X3Bhc3RlKSB7CisrICAgICAgICAgIHRo aXMuZG9fcGFzdGVfY2xpcGJvYXJkKCk7CisgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAg ICAgfQorICAgICAgICAgcmV0dXJuIGZhbHNlOworQEAgLTU4NCw3ICs1NzksNyBAQCBwcml2YXRl IHN0YXRpYyB1aW50ICAgICAgIG5leHRfaWQgPSAwOworICAgICByZXR1cm4gZmFsc2U7CisgICB9 CisgCistICBwdWJsaWMgYXN5bmMgYm9vbCBnZXRfY2FuX2Nsb3NlIChvdXQgc3RyaW5nIGNvbW1h bmQgPSBudWxsKSB7CisrICBwdWJsaWMgYXN5bmMgYm9vbCBnZXRfY2FuX2Nsb3NlKG91dCBzdHJp bmcgY29tbWFuZCA9IG51bGwpIHsKKyAgICAgY29tbWFuZCA9IG51bGw7CisgCisgICAgIGlmICh0 aGlzLnBpZCA8IDAgfHwgdGhpcy5wdHkgPT0gbnVsbCkgeworQEAgLTU5Nyw3ICs1OTIsNyBAQCBw cml2YXRlIHN0YXRpYyB1aW50ICAgICAgIG5leHRfaWQgPSAwOworICAgICB9CisgCisgICAgIC8v IEdldCB0ZXJtaW5hbCdzIGZvcmVncm91bmQgcHJvY2VzcworLSAgICB2YXIgZmdwaWQgPSB5aWVs ZCBnZXRfZm9yZWdyb3VuZF9wcm9jZXNzIChmZCk7CisrICAgIHZhciBmZ3BpZCA9IHlpZWxkIGdl dF9mb3JlZ3JvdW5kX3Byb2Nlc3MoZmQpOworICAgICBpZiAoZmdwaWQgPT0gLTEpIHsKKyAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgIH0KK0BAIC02MDYsNTUgKzYwMSw1MyBAQCBwcml2YXRlIHN0 YXRpYyB1aW50ICAgICAgIG5leHRfaWQgPSAwOworICAgICAgIHJldHVybiB0cnVlOworICAgICB9 CisgCistICAgIGNvbW1hbmQgPSBnZXRfcHJvY2Vzc19jbWRsaW5lIChmZ3BpZCk7CisrICAgIGNv bW1hbmQgPSBnZXRfcHJvY2Vzc19jbWRsaW5lKGZncGlkKTsKKyAKKyAgICAgcmV0dXJuIGNvbW1h bmQgPT0gbnVsbDsKKyAgIH0KKyAKKy0gIHB1YmxpYyB2b2lkIHpvb21faW4gKCkgeworLSAgICB0 aGlzLmZvbnRfc2NhbGUgPSBkb3VibGUubWluICgxMCwgdGhpcy5mb250X3NjYWxlICsgMC4xKTsK KysgIHB1YmxpYyB2b2lkIHpvb21faW4oKSB7CisrICAgIHRoaXMuZm9udF9zY2FsZSA9IGRvdWJs ZS5taW4oMTAsIHRoaXMuZm9udF9zY2FsZSArIDAuMSk7CisgICB9CisgCistICBwdWJsaWMgdm9p ZCB6b29tX291dCAoKSB7CistICAgIHRoaXMuZm9udF9zY2FsZSA9IGRvdWJsZS5tYXggKDAuMSwg dGhpcy5mb250X3NjYWxlIC0gMC4xKTsKKysgIHB1YmxpYyB2b2lkIHpvb21fb3V0KCkgeworKyAg ICB0aGlzLmZvbnRfc2NhbGUgPSBkb3VibGUubWF4KDAuMSwgdGhpcy5mb250X3NjYWxlIC0gMC4x KTsKKyAgIH0KKyAKKy0gIHB1YmxpYyB2b2lkIHpvb21fZGVmYXVsdCAoKSB7CisrICBwdWJsaWMg dm9pZCB6b29tX2RlZmF1bHQoKSB7CisgICAgIHRoaXMuZm9udF9zY2FsZSA9IDEuMDsKKyAgIH0K KyAKKy0gIHB1YmxpYyB2b2lkIGRvX3Bhc3RlX2NsaXBib2FyZCAoKSB7CistICAgIHRoaXMucGFz dGVfY2xpcGJvYXJkICgpOworKyAgcHVibGljIHZvaWQgZG9fcGFzdGVfY2xpcGJvYXJkKCkgewor KyAgICB0aGlzLnBhc3RlX2NsaXBib2FyZCgpOworICAgfQorIAorLSAgcHVibGljIHZvaWQgZG9f Y29weV9jbGlwYm9hcmQgKCkgeworLSAgICB0aGlzLmNvcHlfY2xpcGJvYXJkICgpOworKyAgcHVi bGljIHZvaWQgZG9fY29weV9jbGlwYm9hcmQoKSB7CisrICAgIHRoaXMuY29weV9jbGlwYm9hcmQo KTsKKyAgIH0KKyAKKy0gIHB1YmxpYyBhc3luYyB2b2lkIGRvX3Bhc3RlX2Zyb21fc2VsZWN0aW9u X2NsaXBib2FyZCAoKSB7CisrICBwdWJsaWMgYXN5bmMgdm9pZCBkb19wYXN0ZV9mcm9tX3NlbGVj dGlvbl9jbGlwYm9hcmQoKSB7CisgICAgIC8vICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IHNlZW0g dG8gYmUgd29ya2luZyBpbiBHVEsgNCB5ZXQuCisgICAgIC8vICB0aGlzLnBhc3RlX3ByaW1hcnkg KCk7CisgCistICAgIHZhciBjbGlwYm9hcmQgPSBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCAoKS5n ZXRfcHJpbWFyeV9jbGlwYm9hcmQgKCk7CisrICAgIHZhciBjbGlwYm9hcmQgPSBHZGsuRGlzcGxh eS5nZXRfZGVmYXVsdCgpLmdldF9wcmltYXJ5X2NsaXBib2FyZCgpOworICAgICB0cnkgeworLSAg ICAgIHZhciB0ZXh0ID0geWllbGQgY2xpcGJvYXJkLnJlYWRfdGV4dF9hc3luYyAobnVsbCk7Cist ICAgICAgdGhpcy5wYXN0ZV90ZXh0ICh0ZXh0KTsKKy0gICAgfQorLSAgICBjYXRjaCAoRXJyb3Ig ZSkgeworLSAgICAgIHdhcm5pbmcgKCIlcyIsIGUubWVzc2FnZSk7CisrICAgICAgdmFyIHRleHQg PSB5aWVsZCBjbGlwYm9hcmQucmVhZF90ZXh0X2FzeW5jKG51bGwpOworKyAgICAgIHRoaXMucGFz dGVfdGV4dCh0ZXh0KTsKKysgICAgfSBjYXRjaCAoRXJyb3IgZSkgeworKyAgICAgIHdhcm5pbmco IiVzIiwgZS5tZXNzYWdlKTsKKyAgICAgfQorICAgfQorIAorLSAgcHVibGljIHN0cmluZz8gZ2V0 X2N1cnJlbnRfd29ya2luZ19kaXJlY3RvcnkgKCkgeworLSAgICBzdHJpbmc/IGN3ZCA9IHRoaXMu Z2V0X2N1cnJlbnRfZGlyZWN0b3J5X3VyaSAoKTsKKysgIHB1YmxpYyBzdHJpbmc/IGdldF9jdXJy ZW50X3dvcmtpbmdfZGlyZWN0b3J5KCkgeworKyAgICBzdHJpbmc/IGN3ZCA9IHRoaXMuZ2V0X2N1 cnJlbnRfZGlyZWN0b3J5X3VyaSgpOworIAorICAgICBpZiAoY3dkICE9IG51bGwpIHsKKyAgICAg ICB0cnkgeworLSAgICAgICAgc3RyaW5nIHBhdGggPSBHTGliLkZpbGVuYW1lLmZyb21fdXJpIChj d2QsIG51bGwpOworKyAgICAgICAgc3RyaW5nIHBhdGggPSBHTGliLkZpbGVuYW1lLmZyb21fdXJp KGN3ZCwgbnVsbCk7CisgICAgICAgICBjd2QgPSBwYXRoOworLSAgICAgIH0KKy0gICAgICBjYXRj aCAoR0xpYi5Db252ZXJ0RXJyb3IgZSkgeworLSAgICAgICAgd2FybmluZyAoIiVzIiwgZS5tZXNz YWdlKTsKKysgICAgICB9IGNhdGNoIChHTGliLkNvbnZlcnRFcnJvciBlKSB7CisrICAgICAgICB3 YXJuaW5nKCIlcyIsIGUubWVzc2FnZSk7CisgICAgICAgICBjd2QgPSBudWxsOworICAgICAgIH0K KyAgICAgfQorQEAgLTY2MiwxMCArNjU1LDEwIEBAIHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAg bmV4dF9pZCA9IDA7CisgICAgIHJldHVybiBjd2Q7CisgICB9CisgCistICBwdWJsaWMgc3RhdGlj IHN0cmluZz8gZ2V0X2N1cnJlbnRfd29ya2luZ19kaXJlY3RvcnlfZm9yX25ld19zZXNzaW9uICgK KysgIHB1YmxpYyBzdGF0aWMgc3RyaW5nPyBnZXRfY3VycmVudF93b3JraW5nX2RpcmVjdG9yeV9m b3JfbmV3X3Nlc3Npb24oCisgICAgIFRlcm1pbmFsPyBwcmV2aW91c190ZXJtaW5hbCA9IG51bGwK KyAgICkgeworLSAgICB2YXIgc2V0dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCAoKTsKKysg ICAgdmFyIHNldHRpbmdzID0gU2V0dGluZ3MuZ2V0X2RlZmF1bHQoKTsKKyAgICAgdmFyIG1vZGUg PSBzZXR0aW5ncy53b3JraW5nX2RpcmVjdG9yeV9tb2RlOworICAgICB2YXIgY3VzdG9tX3dvcmtp bmdfZGlyZWN0b3J5ID0gc2V0dGluZ3MuY3VzdG9tX3dvcmtpbmdfZGlyZWN0b3J5OworIAorQEAg LTY3MywxMCArNjY2LDExIEBAIHByaXZhdGUgc3RhdGljIHVpbnQgICAgICAgbmV4dF9pZCA9IDA7 CisgICAgICAgY2FzZSBXb3JraW5nRGlyZWN0b3J5TW9kZS5DVVNUT006CisgICAgICAgICByZXR1 cm4gY3VzdG9tX3dvcmtpbmdfZGlyZWN0b3J5OworICAgICAgIGNhc2UgV29ya2luZ0RpcmVjdG9y eU1vZGUuSE9NRV9ESVJFQ1RPUlk6CistICAgICAgICByZXR1cm4gR0xpYi5FbnZpcm9ubWVudC5n ZXRfaG9tZV9kaXIgKCk7CisrICAgICAgICByZXR1cm4gR0xpYi5FbnZpcm9ubWVudC5nZXRfaG9t ZV9kaXIoKTsKKyAgICAgICBjYXNlIFdvcmtpbmdEaXJlY3RvcnlNb2RlLlBSRVZJT1VTX1NFU1NJ T046CisgICAgICAgICBpZiAocHJldmlvdXNfdGVybWluYWwgIT0gbnVsbCkgeworLSAgICAgICAg ICByZXR1cm4gcHJldmlvdXNfdGVybWluYWwuZ2V0X2N1cnJlbnRfd29ya2luZ19kaXJlY3Rvcnkg KCk7CisrICAgICAgICAgIHJldHVybiBwcmV2aW91c190ZXJtaW5hbC5nZXRfY3VycmVudF93b3Jr aW5nX2RpcmVjdG9yeSgpCisrICAgICAgICAgICAgICAgICA/PyBwcmV2aW91c190ZXJtaW5hbC53 aW5kb3cubGFzdF9rbm93bl9jd2Q7CisgICAgICAgICB9CisgICAgICAgICBicmVhazsKKyAgICAg fQorQEAgLTY4NCw4ICs2NzgsNyBAQCBwcml2YXRlIHN0YXRpYyB1aW50ICAgICAgIG5leHRfaWQg PSAwOworICAgICByZXR1cm4gbnVsbDsKKyAgIH0KKyAKKy0gIHB1YmxpYyB2b2lkIG9uX2JlZm9y ZV9jbG9zZSAoKSB7CistICAgIHRoaXMud2l0aGRyYXdfY29tbWFuZF9jb21wbGV0ZWRfbm90aWZp Y2F0aW9uICgpOworKyAgcHVibGljIHZvaWQgb25fYmVmb3JlX2Nsb3NlKCkgeworKyAgICB0aGlz LndpdGhkcmF3X2NvbW1hbmRfY29tcGxldGVkX25vdGlmaWNhdGlvbigpOworICAgfQorIH0KKy0K K2RpZmYgLS1naXQgYS9zcmMvd2lkZ2V0cy9XaW5kb3cudmFsYSBiL3NyYy93aWRnZXRzL1dpbmRv dy52YWxhCitpbmRleCA4MWY4Zjc5Li4wMzZhNGE1IDEwMDY0NAorLS0tIGEvc3JjL3dpZGdldHMv V2luZG93LnZhbGEKKysrKyBiL3NyYy93aWRnZXRzL1dpbmRvdy52YWxhCitAQCAtMjMsOCArMjMs OCBAQCBwdWJsaWMgc3RydWN0IFRlcm1pbmFsLlBhZGRpbmcgeworICAgdWludCBib3R0b207Cisg ICB1aW50IGxlZnQ7CisgCistICBwdWJsaWMgVmFyaWFudCB0b192YXJpYW50ICgpIHsKKy0gICAg cmV0dXJuIG5ldyBWYXJpYW50ICgKKysgIHB1YmxpYyBWYXJpYW50IHRvX3ZhcmlhbnQoKSB7Cisr ICAgIHJldHVybiBuZXcgVmFyaWFudCgKKyAgICAgICAiKHV1dXUpIiwKKyAgICAgICB0aGlzLnRv cCwKKyAgICAgICB0aGlzLnJpZ2h0LAorQEAgLTMzLDMxICszMywzMSBAQCBwdWJsaWMgc3RydWN0 IFRlcm1pbmFsLlBhZGRpbmcgeworICAgICApOworICAgfQorIAorLSAgcHVibGljIHN0YXRpYyBQ YWRkaW5nIHplcm8gKCkgeworKyAgcHVibGljIHN0YXRpYyBQYWRkaW5nIHplcm8oKSB7CisgICAg IHJldHVybiB7IDAgfTsKKyAgIH0KKyAKKy0gIHB1YmxpYyBzdGF0aWMgUGFkZGluZyBmcm9tX3Zh cmlhbnQgKFZhcmlhbnQgdmFyaSkgeworLSAgICBpZiAoIXZhcmkuY2hlY2tfZm9ybWF0X3N0cmlu ZyAoIih1dXV1KSIsIGZhbHNlKSkgcmV0dXJuIFBhZGRpbmcuemVybyAoKTsKKysgIHB1YmxpYyBz dGF0aWMgUGFkZGluZyBmcm9tX3ZhcmlhbnQoVmFyaWFudCB2YXJpKSB7CisrICAgIGlmICghdmFy aS5jaGVja19mb3JtYXRfc3RyaW5nKCIodXV1dSkiLCBmYWxzZSkpIHsgcmV0dXJuIFBhZGRpbmcu emVybygpOyB9CisgCistICAgIHZhciBpdGVyID0gdmFyaS5pdGVyYXRvciAoKTsKKysgICAgdmFy ICBpdGVyID0gdmFyaS5pdGVyYXRvcigpOworICAgICB1aW50IHRvcCA9IDAsIHJpZ2h0ID0gMCwg Ym90dG9tID0gMCwgbGVmdCA9IDA7CisgCistICAgIGl0ZXIubmV4dCAoInUiLCAmdG9wKTsKKy0g ICAgaXRlci5uZXh0ICgidSIsICZyaWdodCk7CistICAgIGl0ZXIubmV4dCAoInUiLCAmYm90dG9t KTsKKy0gICAgaXRlci5uZXh0ICgidSIsICZsZWZ0KTsKKysgICAgaXRlci5uZXh0KCJ1IiwgJnRv cCk7CisrICAgIGl0ZXIubmV4dCgidSIsICZyaWdodCk7CisrICAgIGl0ZXIubmV4dCgidSIsICZi b3R0b20pOworKyAgICBpdGVyLm5leHQoInUiLCAmbGVmdCk7CisgCistICAgIHJldHVybiBQYWRk aW5nICgpIHsKKy0gICAgICB0b3AgPSB0b3AsCistICAgICAgcmlnaHQgPSByaWdodCwKKy0gICAg ICBib3R0b20gPSBib3R0b20sCistICAgICAgbGVmdCA9IGxlZnQsCisrICAgIHJldHVybiBQYWRk aW5nKCkgeworKyAgICAgICAgICAgICB0b3AgPSB0b3AsCisrICAgICAgICAgICAgIHJpZ2h0ID0g cmlnaHQsCisrICAgICAgICAgICAgIGJvdHRvbSA9IGJvdHRvbSwKKysgICAgICAgICAgICAgbGVm dCA9IGxlZnQsCisgICAgIH07CisgICB9CisgCistICBwdWJsaWMgc3RyaW5nIHRvX3N0cmluZyAo KSB7CistICAgIHJldHVybiAiUGFkZGluZyB7ICV1LCAldSwgJXUsICV1IH0iLnByaW50ZiAoCisr ICBwdWJsaWMgc3RyaW5nIHRvX3N0cmluZygpIHsKKysgICAgcmV0dXJuICJQYWRkaW5nIHsgJXUs ICV1LCAldSwgJXUgfSIucHJpbnRmKAorICAgICAgIHRoaXMudG9wLAorICAgICAgIHRoaXMucmln aHQsCisgICAgICAgdGhpcy5ib3R0b20sCitAQCAtNjgsNyArNjgsNyBAQCBwdWJsaWMgc3RydWN0 IFRlcm1pbmFsLlBhZGRpbmcgeworICAgLyoqCisgICAgKiBXaGV0aGVyIHBhZGRpbmcgb24gYWxs IHNpZGVzIGlzIHRoZSBzYW1lLgorICAgICovCistICBwdWJsaWMgYm9vbCBpc19lcXVpbGF0ZXJh bCAoKSB7CisrICBwdWJsaWMgYm9vbCBpc19lcXVpbGF0ZXJhbCgpIHsKKyAgICAgcmV0dXJuICgK KyAgICAgICB0aGlzLnRvcCA9PSB0aGlzLnJpZ2h0ICYmCisgICAgICAgdGhpcy5yaWdodCA9PSB0 aGlzLmJvdHRvbSAmJgorQEAgLTc4LDM4ICs3OCw0MSBAQCBwdWJsaWMgc3RydWN0IFRlcm1pbmFs LlBhZGRpbmcgeworIH0KKyAKKyBwdWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93IDogQWR3LkFw cGxpY2F0aW9uV2luZG93IHsKKy0KKyAgIC8vIFNpZ25hbHMKKyAKKy0gIHByaXZhdGUgc2lnbmFs IHZvaWQgaGVhZGVyX2Jhcl9hbmltYXRpb25fZmluaXNoZWQgKCk7CisrICBwcml2YXRlIHNpZ25h bCB2b2lkIGhlYWRlcl9iYXJfYW5pbWF0aW9uX2ZpbmlzaGVkKCk7CisgCisgICAvLyBQcm9wZXJ0 aWVzCisgCistICBwdWJsaWMgVGhlbWVQcm92aWRlciAgdGhlbWVfcHJvdmlkZXIgICAgICAgIHsg Z2V0OyBwcml2YXRlIHNldDsgfQorLSAgcHVibGljIEFkdy5UYWJWaWV3ICAgIHRhYl92aWV3ICAg ICAgICAgICAgICB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KKy0gIHB1YmxpYyBBZHcuVGFiQmFyICAg ICB0YWJfYmFyICAgICAgICAgICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0OyB9CistICBwdWJsaWMg VGVybWluYWw/ICAgICAgYWN0aXZlX3Rlcm1pbmFsICAgICAgIHsgZ2V0OyBwcml2YXRlIHNldDsg fQorLSAgcHVibGljIFRlcm1pbmFsVGFiPyAgIGFjdGl2ZV90ZXJtaW5hbF90YWIgICB7IGdldDsg cHJpdmF0ZSBzZXQ7IGRlZmF1bHQgPSBudWxsOyB9CistICBwdWJsaWMgc3RyaW5nICAgICAgICAg YWN0aXZlX3Rlcm1pbmFsX3RpdGxlIHsgZ2V0OyBwcml2YXRlIHNldDsgZGVmYXVsdCA9ICIiOyB9 CistICBwdWJsaWMgdWludCAgICAgICAgICAgaWQgICAgICAgICAgICAgICAgICAgIHsgZ2V0OyBw cml2YXRlIHNldDsgfQorKyAgcHVibGljIFRoZW1lUHJvdmlkZXIgdGhlbWVfcHJvdmlkZXIgICAg ICAgIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorKyAgcHVibGljIEFkdy5UYWJWaWV3ICAgdGFiX3Zp ZXcgICAgICAgICAgICAgIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorKyAgcHVibGljIEFkdy5UYWJC YXIgICAgdGFiX2JhciAgICAgICAgICAgICAgIHsgZ2V0OyBwcml2YXRlIHNldDsgfQorKyAgcHVi bGljIFRlcm1pbmFsPyAgICAgYWN0aXZlX3Rlcm1pbmFsICAgICAgIHsgZ2V0OyBwcml2YXRlIHNl dDsgfQorKyAgcHVibGljIFRlcm1pbmFsVGFiPyAgYWN0aXZlX3Rlcm1pbmFsX3RhYiAgIHsgZ2V0 OyBwcml2YXRlIHNldDsgZGVmYXVsdCA9IG51bGw7CisrICB9CisrICBwdWJsaWMgc3RyaW5nIGFj dGl2ZV90ZXJtaW5hbF90aXRsZSB7IGdldDsgcHJpdmF0ZSBzZXQ7IGRlZmF1bHQgPSAiIjsgfQor KyAgcHVibGljIHVpbnQgICBpZCAgICAgICAgICAgICAgICAgICAgeyBnZXQ7IHByaXZhdGUgc2V0 OyB9CisgCisgICAvLyBUZXJtaW5hbCB0YWJzIHNldCB0aGlzIHRvIGFueSBsaW5rIGNsaWNrZWQg YnkgdGhlIHVzZXIuIFRoZSB2YWx1ZSBpcyB0aGVuCisgICAvLyBjb25zdW1lZCBieSB0aGUgb3Bl bi1saW5rIGFuZCBjb3B5LWxpbmsgYWN0aW9ucy4KKy0gIHB1YmxpYyBzdHJpbmc/IGxpbmsgIHsg Z2V0OyBzZXQ7IGRlZmF1bHQgPSBudWxsOyB9CisrICBwdWJsaWMgc3RyaW5nPyBsaW5rIHsgZ2V0 OyBzZXQ7IGRlZmF1bHQgPSBudWxsOyB9CisrICAvLyBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBs YXN0IGtub3duIGN3ZCBmb3IgYW55IHRlcm1pbmFsIG9uIHRoaXMgV2luZG93LgorKyAgLy8gVXNl ZnVsIHdoZW4gb3BlbmluZyBhIG5ldyB0YWIgZnJvbSBvbmUgd2hlcmUgdGhlIGN3ZCBjYW5ub3Qg YmUgZGV0ZXJtaW5lZC4KKysgIHB1YmxpYyBzdHJpbmc/IGxhc3Rfa25vd25fY3dkIHsgZ2V0OyBw cml2YXRlIHNldDsgZGVmYXVsdCA9IG51bGw7IH0KKyAKKyAgIC8vIEZpZWxkcworIAorLSAgQXJy YXk8dWxvbmc+ICBhY3RpdmVfdGVybWluYWxfc2lnbmFsX2hhbmRsZXJzID0gbmV3IEFycmF5PHVs b25nPiAoKTsKKy0gIEFycmF5PHVsb25nPiAgYWN0aXZlX3Rlcm1pbmFsX3RhYl9zaWduYWxfaGFu ZGxlcnMgPSBuZXcgQXJyYXk8dWxvbmc+ICgpOworLSAgYm9vbCAgICAgICAgICBmb3JjZV9jbG9z ZSA9IGZhbHNlOworLSAgY29uc3QgdWludCAgICBoZWFkZXJfYmFyX3JldmVhbGVyX2R1cmF0aW9u X21zID0gMjUwOworLSAgR3RrLlJldmVhbGVyICBoZWFkZXJfYmFyX3JldmVhbGVyOworLSAgSGVh ZGVyQmFyICAgICBoZWFkZXJfYmFyOworLSAgU2V0dGluZ3MgICAgICBzZXR0aW5ncyA9IFNldHRp bmdzLmdldF9kZWZhdWx0ICgpOworLSAgdWludCAgICAgICAgICBoZWFkZXJfYmFyX3dhaXRpbmdf ZmxvYXRpbmdfYW5pbWF0aW9uID0gMDsKKy0gIHVpbnQgICAgICAgICAgaGVhZGVyX2Jhcl93YWl0 aW5nX2Zsb2F0aW5nX2RlbGF5ID0gMDsKKy0gIEd0ay5Cb3ggICAgICAgbGF5b3V0X2JveDsKKy0g IEd0ay5PdmVybGF5ICAgb3ZlcmxheTsKKysgIEFycmF5PHVsb25nPiBhY3RpdmVfdGVybWluYWxf c2lnbmFsX2hhbmRsZXJzID0gbmV3IEFycmF5PHVsb25nPiAoKTsKKysgIEFycmF5PHVsb25nPiBh Y3RpdmVfdGVybWluYWxfdGFiX3NpZ25hbF9oYW5kbGVycyA9IG5ldyBBcnJheTx1bG9uZz4gKCk7 CisrICBib29sIGZvcmNlX2Nsb3NlID0gZmFsc2U7CisrICBjb25zdCB1aW50ICAgaGVhZGVyX2Jh cl9yZXZlYWxlcl9kdXJhdGlvbl9tcyA9IDI1MDsKKysgIEd0ay5SZXZlYWxlciBoZWFkZXJfYmFy X3JldmVhbGVyOworKyAgSGVhZGVyQmFyICAgIGhlYWRlcl9iYXI7CisrICBTZXR0aW5ncyAgICAg c2V0dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCgpOworKyAgdWludCAgICAgICAgaGVhZGVy X2Jhcl93YWl0aW5nX2Zsb2F0aW5nX2FuaW1hdGlvbiA9IDA7CisrICB1aW50ICAgICAgICBoZWFk ZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdfZGVsYXkgPSAwOworKyAgR3RrLkJveCAgICAgbGF5b3V0 X2JveDsKKysgIEd0ay5PdmVybGF5IG92ZXJsYXk7CisgICBwcml2YXRlIHN0YXRpYyB1aW50IG5l eHRfaWQgPSAwOworIAorICAgd2VhayBBZHcuVGFiUGFnZT8gdGFiX21lbnVfdGFyZ2V0ID0gbnVs bDsKK0BAIC0xMzYsNDEgKzEzOSw0MyBAQCBwdWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93IDog QWR3LkFwcGxpY2F0aW9uV2luZG93IHsKKyAgICAgdGhpcy5pZCA9IG5leHRfaWQ7CisgICAgIG5l eHRfaWQrKzsKKyAgICAgaWYgKERFVkVMKSB7CistICAgICAgdGhpcy5hZGRfY3NzX2NsYXNzICgi ZGV2ZWwiKTsKKysgICAgICB0aGlzLmFkZF9jc3NfY2xhc3MoImRldmVsIik7CisgICAgIH0KKyAK KyAgICAgLy8gRklYTUU6IG1vdmUgdGhpcyBvdmVyIHRvIGFuIHVpIGZpbGUKKyAKKy0gICAgdGhp cy5sYXlvdXRfYm94ID0gbmV3IEd0ay5Cb3ggKEd0ay5PcmllbnRhdGlvbi5WRVJUSUNBTCwgMCk7 CisrICAgIHRoaXMubGF5b3V0X2JveCA9IG5ldyBHdGsuQm94KEd0ay5PcmllbnRhdGlvbi5WRVJU SUNBTCwgMCk7CisgCistICAgIHRoaXMudGFiX3ZpZXcgPSBuZXcgQWR3LlRhYlZpZXcgKCkgewor KyAgICB0aGlzLnRhYl92aWV3ID0gbmV3IEFkdy5UYWJWaWV3KCkgeworICAgICAgIC8vIERpc2Fi bGUgQWR3LlRhYlZpZXcgc2hvcnRjdXRzCisgICAgICAgc2hvcnRjdXRzID0gQWR3LlRhYlZpZXdT aG9ydGN1dHMuTk9ORSwKKyAgICAgfTsKKyAKKy0gICAgdGhpcy5oZWFkZXJfYmFyID0gbmV3IEhl YWRlckJhciAodGhpcyk7CisrICAgIHRoaXMuaGVhZGVyX2JhciA9IG5ldyBIZWFkZXJCYXIodGhp cyk7CisgCisgICAgIHRoaXMudGFiX2JhciA9IHRoaXMuaGVhZGVyX2Jhci50YWJfYmFyOworICAg ICB0aGlzLnRhYl9iYXIudmlldyA9IHRoaXMudGFiX3ZpZXc7CisgCistICAgIHRoaXMuaGVhZGVy X2Jhcl9yZXZlYWxlciA9IG5ldyBHdGsuUmV2ZWFsZXIgKCkgeworKyAgICB0aGlzLmhlYWRlcl9i YXJfcmV2ZWFsZXIgPSBuZXcgR3RrLlJldmVhbGVyKCkgeworICAgICAgIHRyYW5zaXRpb25fZHVy YXRpb24gPSBXaW5kb3cuaGVhZGVyX2Jhcl9yZXZlYWxlcl9kdXJhdGlvbl9tcywKKyAgICAgICBj aGlsZCA9IHRoaXMuaGVhZGVyX2JhciwKKyAgICAgICB2YWxpZ24gPSBHdGsuQWxpZ24uU1RBUlQs CisgICAgIH07CisgCistICAgIHZhciBidWlsZGVyID0gbmV3IEd0ay5CdWlsZGVyLmZyb21fcmVz b3VyY2UgKCIvY29tL3JhZ2dlc2lsdmVyL0JsYWNrQm94L2d0ay90YWItbWVudS51aSIpOworLSAg ICB0aGlzLnRhYl92aWV3Lm1lbnVfbW9kZWwgPSBidWlsZGVyLmdldF9vYmplY3QgKCJ0YWItbWVu dSIpIGFzIEdMaWIuTWVudTsKKysgICAgdmFyIGJ1aWxkZXIgPQorKyAgICAgIG5ldyBHdGsuQnVp bGRlci5mcm9tX3Jlc291cmNlKAorKyAgICAgICAgIi9jb20vcmFnZ2VzaWx2ZXIvQmxhY2tCb3gv Z3RrL3RhYi1tZW51LnVpIik7CisrICAgIHRoaXMudGFiX3ZpZXcubWVudV9tb2RlbCA9IGJ1aWxk ZXIuZ2V0X29iamVjdCgidGFiLW1lbnUiKSBhcyBHTGliLk1lbnU7CisgCistICAgIHRoaXMubGF5 b3V0X2JveC5hcHBlbmQgKHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxlcik7CistICAgIHRoaXMubGF5 b3V0X2JveC5hcHBlbmQgKHRoaXMudGFiX3ZpZXcpOworKyAgICB0aGlzLmxheW91dF9ib3guYXBw ZW5kKHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxlcik7CisrICAgIHRoaXMubGF5b3V0X2JveC5hcHBl bmQodGhpcy50YWJfdmlldyk7CisgCistICAgIHRoaXMub3ZlcmxheSA9IG5ldyBHdGsuT3Zlcmxh eSAoKTsKKysgICAgdGhpcy5vdmVybGF5ID0gbmV3IEd0ay5PdmVybGF5KCk7CisgICAgIHRoaXMu b3ZlcmxheS5jaGlsZCA9IHRoaXMubGF5b3V0X2JveDsKKyAKKyAgICAgdGhpcy5jb250ZW50ID0g dGhpcy5vdmVybGF5OworIAorLSAgICB0aGlzLnNldF9uYW1lICgiYmxhY2tib3gtbWFpbi13aW5k b3ciKTsKKysgICAgdGhpcy5zZXRfbmFtZSgiYmxhY2tib3gtbWFpbi13aW5kb3ciKTsKKyAgIH0K KyAKKyAgIHB1YmxpYyBXaW5kb3cgKAorQEAgLTE3OSwxMSArMTg0LDExIEBAIHB1YmxpYyBjbGFz cyBUZXJtaW5hbC5XaW5kb3cgOiBBZHcuQXBwbGljYXRpb25XaW5kb3cgeworICAgICBzdHJpbmc/ IGN3ZCA9IG51bGwsCisgICAgIGJvb2wgc2tpcF9pbml0aWFsX3RhYiA9IGZhbHNlCisgICApIHsK Ky0gICAgdmFyIHNldHQgPSBTZXR0aW5ncy5nZXRfZGVmYXVsdCAoKTsKKysgICAgdmFyIHNldHQg PSBTZXR0aW5ncy5nZXRfZGVmYXVsdCgpOworICAgICB2YXIgd3dpZHRoID0gKGludCkgKHNldHQu cmVtZW1iZXJfd2luZG93X3NpemUgPyBzZXR0LndpbmRvd193aWR0aCA6IDcwMCk7CisgICAgIHZh ciB3aGVpZ2h0ID0gKGludCkgKHNldHQucmVtZW1iZXJfd2luZG93X3NpemUgPyBzZXR0LndpbmRv d19oZWlnaHQgOiA0NTApOworIAorLSAgICBPYmplY3QgKAorKyAgICBPYmplY3QoCisgICAgICAg YXBwbGljYXRpb246IGFwcCwKKyAgICAgICBkZWZhdWx0X3dpZHRoOiB3d2lkdGgsCisgICAgICAg ZGVmYXVsdF9oZWlnaHQ6IHdoZWlnaHQsCitAQCAtMTkxLDE4ICsxOTYsMTggQEAgcHVibGljIGNs YXNzIFRlcm1pbmFsLldpbmRvdyA6IEFkdy5BcHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgbWF4 aW1pemVkOiBzZXR0LnJlbWVtYmVyX3dpbmRvd19zaXplICYmIHNldHQud2FzX21heGltaXplZAor ICAgICApOworIAorLSAgICB0aGlzLnRoZW1lX3Byb3ZpZGVyID0gVGhlbWVQcm92aWRlci5nZXRf ZGVmYXVsdCAoKTsKKysgICAgdGhpcy50aGVtZV9wcm92aWRlciA9IFRoZW1lUHJvdmlkZXIuZ2V0 X2RlZmF1bHQoKTsKKyAKKy0gICAgdGhpcy5hZGRfYWN0aW9ucyAoKTsKKy0gICAgdGhpcy5jb25u ZWN0X3NpZ25hbHMgKCk7CisrICAgIHRoaXMuYWRkX2FjdGlvbnMoKTsKKysgICAgdGhpcy5jb25u ZWN0X3NpZ25hbHMoKTsKKyAKKyAgICAgaWYgKCFza2lwX2luaXRpYWxfdGFiKSB7CistICAgICAg dGhpcy5uZXdfdGFiIChjb21tYW5kLCBjd2QpOworKyAgICAgIHRoaXMubmV3X3RhYihjb21tYW5k LCBjd2QpOworICAgICB9CisgICB9CisgCistICBwcml2YXRlIHZvaWQgY29ubmVjdF9zaWduYWxz ICgpIHsKKy0gICAgdGhpcy5iaW5kX3Byb3BlcnR5ICgKKysgIHByaXZhdGUgdm9pZCBjb25uZWN0 X3NpZ25hbHMoKSB7CisrICAgIHRoaXMuYmluZF9wcm9wZXJ0eSgKKyAgICAgICAiYWN0aXZlLXRl cm1pbmFsLXRpdGxlIiwKKyAgICAgICB0aGlzLAorICAgICAgICJ0aXRsZSIsCitAQCAtMjExLDk1 ICsyMTYsOTUgQEAgcHVibGljIGNsYXNzIFRlcm1pbmFsLldpbmRvdyA6IEFkdy5BcHBsaWNhdGlv bldpbmRvdyB7CisgICAgICAgbnVsbAorICAgICApOworIAorLSAgICB0aGlzLnNldHRpbmdzLnNj aGVtYS5iaW5kICgKKysgICAgdGhpcy5zZXR0aW5ncy5zY2hlbWEuYmluZCgKKyAgICAgICAiZmls bC10YWJzIiwKKyAgICAgICB0aGlzLnRhYl9iYXIsCisgICAgICAgImV4cGFuZC10YWJzIiwKKyAg ICAgICBTZXR0aW5nc0JpbmRGbGFncy5HRVQKKyAgICAgKTsKKyAKKy0gICAgdGhpcy5zZXR0aW5n cy5zY2hlbWEuYmluZCAoCisrICAgIHRoaXMuc2V0dGluZ3Muc2NoZW1hLmJpbmQoCisgICAgICAg InNob3ctaGVhZGVyYmFyIiwKKyAgICAgICB0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIsCisgICAg ICAgInJldmVhbC1jaGlsZCIsCisgICAgICAgU2V0dGluZ3NCaW5kRmxhZ3MuR0VUCisgICAgICk7 CisgCistICAgIHRoaXMuc2V0dGluZ3Mubm90aWZ5IFsiY29udGV4dC1hd2FyZS1oZWFkZXItYmFy Il0uY29ubmVjdCAoKCkgPT4geworLSAgICAgIHRoaXMub25fYWN0aXZlX3Rlcm1pbmFsX2NvbnRl eHRfY2hhbmdlZCAoKTsKKysgICAgdGhpcy5zZXR0aW5ncy5ub3RpZnlbImNvbnRleHQtYXdhcmUt aGVhZGVyLWJhciJdLmNvbm5lY3QoKCkgPT4geworKyAgICAgIHRoaXMub25fYWN0aXZlX3Rlcm1p bmFsX2NvbnRleHRfY2hhbmdlZCgpOworICAgICB9KTsKKyAKKy0gICAgdGhpcy5oZWFkZXJfYmFy X3JldmVhbGVyLm5vdGlmeSBbInJldmVhbC1jaGlsZCJdCistICAgICAgLmNvbm5lY3QgKHRoaXMu b25fcmV2ZWFsX2hlYWRlcl9iYXJfY2hhbmdlZCk7CisrICAgIHRoaXMuaGVhZGVyX2Jhcl9yZXZl YWxlci5ub3RpZnlbInJldmVhbC1jaGlsZCJdCisrICAgIC5jb25uZWN0KHRoaXMub25fcmV2ZWFs X2hlYWRlcl9iYXJfY2hhbmdlZCk7CisgCistICAgIHNldHRpbmdzLm5vdGlmeSBbInNob3ctaGVh ZGVyYmFyIl0uY29ubmVjdCAoKCkgPT4geworLSAgICAgIGlmIChTZXR0aW5ncy5nZXRfZGVmYXVs dCAoKS5zaG93X2hlYWRlcmJhcikgeworLSAgICAgICAgdGhpcy5vbl9zaG93X2hlYWRlcl9iYXJf Y2hhbmdlZCAoKTsKKysgICAgc2V0dGluZ3Mubm90aWZ5WyJzaG93LWhlYWRlcmJhciJdLmNvbm5l Y3QoKCkgPT4geworKyAgICAgIGlmIChTZXR0aW5ncy5nZXRfZGVmYXVsdCgpLnNob3dfaGVhZGVy YmFyKSB7CisrICAgICAgICB0aGlzLm9uX3Nob3dfaGVhZGVyX2Jhcl9jaGFuZ2VkKCk7CisgICAg ICAgfQorICAgICB9KTsKKyAKKy0gICAgc2V0dGluZ3Mubm90aWZ5IFsic2hvdy1oZWFkZXJiYXIi XS5jb25uZWN0X2FmdGVyICgoKSA9PiB7CistICAgICAgaWYgKCFTZXR0aW5ncy5nZXRfZGVmYXVs dCAoKS5zaG93X2hlYWRlcmJhcikgeworLSAgICAgICAgdGhpcy5vbl9zaG93X2hlYWRlcl9iYXJf Y2hhbmdlZCAoKTsKKysgICAgc2V0dGluZ3Mubm90aWZ5WyJzaG93LWhlYWRlcmJhciJdLmNvbm5l Y3RfYWZ0ZXIoKCkgPT4geworKyAgICAgIGlmICghU2V0dGluZ3MuZ2V0X2RlZmF1bHQoKS5zaG93 X2hlYWRlcmJhcikgeworKyAgICAgICAgdGhpcy5vbl9zaG93X2hlYWRlcl9iYXJfY2hhbmdlZCgp OworICAgICAgIH0KKyAgICAgfSk7CisgCistICAgIHRoaXMub25fc2hvd19oZWFkZXJfYmFyX2No YW5nZWQgKCk7CisrICAgIHRoaXMub25fc2hvd19oZWFkZXJfYmFyX2NoYW5nZWQoKTsKKyAKKy0g ICAgc2V0dGluZ3Mubm90aWZ5IFsiZmxvYXRpbmctY29udHJvbHMiXQorLSAgICAgIC5jb25uZWN0 ICh0aGlzLm9uX2Zsb2F0aW5nX2NvbnRyb2xzX2NoYW5nZWQpOworKyAgICBzZXR0aW5ncy5ub3Rp ZnlbImZsb2F0aW5nLWNvbnRyb2xzIl0KKysgICAgLmNvbm5lY3QodGhpcy5vbl9mbG9hdGluZ19j b250cm9sc19jaGFuZ2VkKTsKKyAKKy0gICAgdGhpcy50YWJfdmlldy5jcmVhdGVfd2luZG93LmNv bm5lY3QgKCgpID0+IHsKKy0gICAgICB2YXIgdyA9IHRoaXMubmV3X3dpbmRvdyAobnVsbCwgdHJ1 ZSk7CisrICAgIHRoaXMudGFiX3ZpZXcuY3JlYXRlX3dpbmRvdy5jb25uZWN0KCgpID0+IHsKKysg ICAgICB2YXIgdyA9IHRoaXMubmV3X3dpbmRvdyhudWxsLCB0cnVlKTsKKyAgICAgICByZXR1cm4g dy50YWJfdmlldzsKKyAgICAgfSk7CisgCistICAgIHRoaXMudGFiX3ZpZXcuY2xvc2VfcGFnZS5j b25uZWN0ICgocGFnZSkgPT4geworLSAgICAgIHRoaXMudHJ5X2Nsb3NpbmdfdGFiLmJlZ2luIChw YWdlKTsKKysgICAgdGhpcy50YWJfdmlldy5jbG9zZV9wYWdlLmNvbm5lY3QoKHBhZ2UpID0+IHsK KysgICAgICB0aGlzLnRyeV9jbG9zaW5nX3RhYi5iZWdpbihwYWdlKTsKKyAgICAgICByZXR1cm4g dHJ1ZTsKKyAgICAgfSk7CisgCisgICAgIC8vIENsb3NlIHRoZSB3aW5kb3cgaWYgYWxsIHRhYnMg d2VyZSBjbG9zZWQKKy0gICAgdGhpcy50YWJfdmlldy5ub3RpZnlbIm4tcGFnZXMiXS5jb25uZWN0 ICgoKSA9PiB7CisrICAgIHRoaXMudGFiX3ZpZXcubm90aWZ5WyJuLXBhZ2VzIl0uY29ubmVjdCgo KSA9PiB7CisgICAgICAgaWYgKHRoaXMudGFiX3ZpZXcubl9wYWdlcyA8IDEpIHsKKy0gICAgICAg IHRoaXMuY2xvc2UgKCk7CisrICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgfQorICAgICB9 KTsKKyAKKy0gICAgdGhpcy50YWJfdmlldy5ub3RpZnlbInNlbGVjdGVkLXBhZ2UiXS5jb25uZWN0 ICgoKSA9PiB7CistICAgICAgdGhpcy5vbl90YWJfc2VsZWN0ZWQgKCk7CisrICAgIHRoaXMudGFi X3ZpZXcubm90aWZ5WyJzZWxlY3RlZC1wYWdlIl0uY29ubmVjdCgoKSA9PiB7CisrICAgICAgdGhp cy5vbl90YWJfc2VsZWN0ZWQoKTsKKyAgICAgfSk7CisgCistICAgIHRoaXMudGFiX3ZpZXcuc2V0 dXBfbWVudS5jb25uZWN0ICh0aGlzLm9uX3NldHVwX21lbnUpOworKyAgICB0aGlzLnRhYl92aWV3 LnNldHVwX21lbnUuY29ubmVjdCh0aGlzLm9uX3NldHVwX21lbnUpOworIAorLSAgICB0aGlzLm5v dGlmeVsiZGVmYXVsdC13aWR0aCJdLmNvbm5lY3QgKCgpID0+IHsKKysgICAgdGhpcy5ub3RpZnlb ImRlZmF1bHQtd2lkdGgiXS5jb25uZWN0KCgpID0+IHsKKyAgICAgICB0aGlzLnNldHRpbmdzLndp bmRvd193aWR0aCA9IHRoaXMuZGVmYXVsdF93aWR0aDsKKyAgICAgfSk7CisgCistICAgIHRoaXMu bm90aWZ5WyJkZWZhdWx0LWhlaWdodCJdLmNvbm5lY3QgKCgpID0+IHsKKysgICAgdGhpcy5ub3Rp ZnlbImRlZmF1bHQtaGVpZ2h0Il0uY29ubmVjdCgoKSA9PiB7CisgICAgICAgdGhpcy5zZXR0aW5n cy53aW5kb3dfaGVpZ2h0ID0gdGhpcy5kZWZhdWx0X2hlaWdodDsKKyAgICAgfSk7CisgCistICAg IHRoaXMubm90aWZ5IFsiYWN0aXZlLXRlcm1pbmFsIl0KKy0gICAgICAuY29ubmVjdCAodGhpcy5v bl9hY3RpdmVfdGVybWluYWxfdGFiX2NoYW5nZWQpOworKyAgICB0aGlzLm5vdGlmeVsiYWN0aXZl LXRlcm1pbmFsIl0KKysgICAgLmNvbm5lY3QodGhpcy5vbl9hY3RpdmVfdGVybWluYWxfdGFiX2No YW5nZWQpOworIAorLSAgICB2YXIgbW90aW9uX2NvbnRyb2xsZXIgPSBuZXcgR3RrLkV2ZW50Q29u dHJvbGxlck1vdGlvbiAoKTsKKy0gICAgbW90aW9uX2NvbnRyb2xsZXIubW90aW9uLmNvbm5lY3Qg KHRoaXMub25fbW91c2VfbW90aW9uKTsKKysgICAgdmFyIG1vdGlvbl9jb250cm9sbGVyID0gbmV3 IEd0ay5FdmVudENvbnRyb2xsZXJNb3Rpb24oKTsKKysgICAgbW90aW9uX2NvbnRyb2xsZXIubW90 aW9uLmNvbm5lY3QodGhpcy5vbl9tb3VzZV9tb3Rpb24pOworIAorLSAgICAodGhpcyBhcyBHdGsu V2lkZ2V0KT8uYWRkX2NvbnRyb2xsZXIgKG1vdGlvbl9jb250cm9sbGVyKTsKKysgICAgKHRoaXMg YXMgR3RrLldpZGdldCk/LmFkZF9jb250cm9sbGVyKG1vdGlvbl9jb250cm9sbGVyKTsKKyAKKy0g ICAgdGhpcy5jbG9zZV9yZXF1ZXN0LmNvbm5lY3QgKHRoaXMub25fY2xvc2VfcmVxdWVzdCk7Cisr ICAgIHRoaXMuY2xvc2VfcmVxdWVzdC5jb25uZWN0KHRoaXMub25fY2xvc2VfcmVxdWVzdCk7Cisg CistICAgIHRoaXMubm90aWZ5IFsibGluayJdLmNvbm5lY3QgKCgpID0+IHsKKysgICAgdGhpcy5u b3RpZnlbImxpbmsiXS5jb25uZWN0KCgpID0+IHsKKyAgICAgICB2YXIgZW5hYmxlZCA9IHRoaXMu bGluayAhPSBudWxsOworIAorLSAgICAgIG1lc3NhZ2UgKCJTZXR0aW5nIGxpbmsgYWN0aW9ucyB0 byAlcyIsIGVuYWJsZWQudG9fc3RyaW5nICgpKTsKKy0gICAgICB0aGlzLmNvcHlfbGlua19hY3Rp b24uc2V0X2VuYWJsZWQgKHRoaXMubGluayAhPSBudWxsKTsKKy0gICAgICB0aGlzLm9wZW5fbGlu a19hY3Rpb24uc2V0X2VuYWJsZWQgKHRoaXMubGluayAhPSBudWxsKTsKKysgICAgICBtZXNzYWdl KCJTZXR0aW5nIGxpbmsgYWN0aW9ucyB0byAlcyIsIGVuYWJsZWQudG9fc3RyaW5nKCkpOworKyAg ICAgIHRoaXMuY29weV9saW5rX2FjdGlvbi5zZXRfZW5hYmxlZCh0aGlzLmxpbmsgIT0gbnVsbCk7 CisrICAgICAgdGhpcy5vcGVuX2xpbmtfYWN0aW9uLnNldF9lbmFibGVkKHRoaXMubGluayAhPSBu dWxsKTsKKyAgICAgfSk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25fbW91c2VfbW90aW9u ICgKKysgIHByaXZhdGUgdm9pZCBvbl9tb3VzZV9tb3Rpb24oCisgICAgIEd0ay5FdmVudENvbnRy b2xsZXJNb3Rpb24gXywKKyAgICAgZG91YmxlIF9tb3VzZVgsCisgICAgIGRvdWJsZSBtb3VzZVkK K0BAIC0zMTAsNyArMzE1LDcgQEAgcHVibGljIGNsYXNzIFRlcm1pbmFsLldpbmRvdyA6IEFkdy5B cHBsaWNhdGlvbldpbmRvdyB7CisgICAgICAgcmV0dXJuOworICAgICB9CisgCistICAgIHZhciBo Yl9oZWlnaHQgPSB0aGlzLmhlYWRlcl9iYXIuZ2V0X2hlaWdodCAoKTsKKysgICAgdmFyIGhiX2hl aWdodCA9IHRoaXMuaGVhZGVyX2Jhci5nZXRfaGVpZ2h0KCk7CisgICAgIHZhciBpc19zaG93biA9 IHRoaXMuaGVhZGVyX2Jhcl9yZXZlYWxlci5yZXZlYWxfY2hpbGQ7CisgCisgICAgIHZhciB0cmln Z2VyX2FyZWEgPSBzZXR0aW5ncy5mbG9hdGluZ19jb250cm9sc19ob3Zlcl9hcmVhOworQEAgLTMy Miw2MSArMzI3LDY1IEBAIHB1YmxpYyBjbGFzcyBUZXJtaW5hbC5XaW5kb3cgOiBBZHcuQXBwbGlj YXRpb25XaW5kb3cgeworICAgICAgIC8vIE9ubHkgc2NoZWR1bGUgYW5pbWF0aW9uIGlmIHRoZXJl IGFyZW4ndCBhbnkgc2NoZWR1bGVkCisgICAgICAgaWYgKHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5n X2Zsb2F0aW5nX2RlbGF5ID09IDApIHsKKyAgICAgICAgIC8vIFdhaXQgZm9yIGRlbGF5IHRvIHNo b3cgZmxvYXRpbmcgY29udHJvbHMKKy0gICAgICAgIHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5nX2Zs b2F0aW5nX2RlbGF5ID0gVGltZW91dC5hZGQgKAorKyAgICAgICAgdGhpcy5oZWFkZXJfYmFyX3dh aXRpbmdfZmxvYXRpbmdfZGVsYXkgPSBUaW1lb3V0LmFkZCgKKyAgICAgICAgICAgc2V0dGluZ3Mu ZGVsYXlfYmVmb3JlX3Nob3dpbmdfZmxvYXRpbmdfY29udHJvbHMsCisgICAgICAgICAgICgpID0+ IHsKKy0gICAgICAgICAgICB0aGlzLmhlYWRlcl9iYXJfd2FpdGluZ19mbG9hdGluZ19kZWxheSA9 IDA7CisrICAgICAgICAgIHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5nX2Zsb2F0aW5nX2RlbGF5ID0g MDsKKyAKKy0gICAgICAgICAgICB0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIucmV2ZWFsX2NoaWxk ID0gdHJ1ZTsKKysgICAgICAgICAgdGhpcy5oZWFkZXJfYmFyX3JldmVhbGVyLnJldmVhbF9jaGls ZCA9IHRydWU7CisgCistICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgICAgICB9Cisr ICAgICAgICAgIHJldHVybiBmYWxzZTsKKysgICAgICAgIH0KKyAgICAgICAgICk7CisgICAgICAg fQorLSAgICB9CistICAgIGVsc2UgaWYgKAorKyAgICB9IGVsc2UgaWYgKAorICAgICAgICFpc19o b3ZlcmluZ190cmlnZ2VyX2FyZWEgJiYKKyAgICAgICAoaXNfc2hvd24gfHwgdGhpcy5oZWFkZXJf YmFyX3dhaXRpbmdfZmxvYXRpbmdfZGVsYXkgIT0gMCkKKyAgICAgKSB7CisgICAgICAgaWYgKHRo aXMuaGVhZGVyX2Jhcl93YWl0aW5nX2Zsb2F0aW5nX2RlbGF5ICE9IDApIHsKKy0gICAgICAgIFNv dXJjZS5yZW1vdmUgKHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5nX2Zsb2F0aW5nX2RlbGF5KTsKKysg ICAgICAgIFNvdXJjZS5yZW1vdmUodGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdfZGVs YXkpOworICAgICAgICAgdGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdfZmxvYXRpbmdfZGVsYXkgPSAw OworICAgICAgIH0KKyAgICAgICB0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIucmV2ZWFsX2NoaWxk ID0gZmFsc2U7CisgICAgIH0KKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9zZXR1cF9tZW51 IChBZHcuVGFiUGFnZT8gcGFnZSkgeworKyAgcHJpdmF0ZSB2b2lkIG9uX3NldHVwX21lbnUoQWR3 LlRhYlBhZ2U/IHBhZ2UpIHsKKyAgICAgdGhpcy50YWJfbWVudV90YXJnZXQgPSBwYWdlOworIAor LSAgICB0aGlzLm1vdmVfdGFiX2xlZnRfYWN0aW9uLnNldF9lbmFibGVkIChwYWdlICE9IG51bGwg JiYgdGhpcy50YWJfdmlldy5nZXRfcGFnZV9wb3NpdGlvbiAocGFnZSkgPiAwKTsKKy0gICAgdGhp cy5tb3ZlX3RhYl9yaWdodF9hY3Rpb24uc2V0X2VuYWJsZWQgKHBhZ2UgIT0gbnVsbCAmJiB0aGlz LnRhYl92aWV3LmdldF9wYWdlX3Bvc2l0aW9uIChwYWdlKSA8IHRoaXMudGFiX3ZpZXcubl9wYWdl cyAtIDEpOworLSAgICB0aGlzLmNsb3NlX3NwZWNpZmljX3RhYl9hY3Rpb24uc2V0X2VuYWJsZWQg KHBhZ2UgIT0gbnVsbCk7CistICAgIHRoaXMuZGV0YXRjaF90YWJfYWN0aW9uLnNldF9lbmFibGVk IChwYWdlICE9IG51bGwgJiYgdGhpcy50YWJfdmlldy5uX3BhZ2VzID4gMSk7CisrICAgIHRoaXMu bW92ZV90YWJfbGVmdF9hY3Rpb24uc2V0X2VuYWJsZWQocGFnZSAhPSBudWxsICYmCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJfdmlldy5nZXRfcGFn ZV9wb3NpdGlvbigKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHBhZ2UpID4gMCk7CisrICAgIHRoaXMubW92ZV90YWJfcmlnaHRfYWN0aW9uLnNldF9lbmFibGVk KHBhZ2UgIT0gbnVsbCAmJgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGlzLnRhYl92aWV3LmdldF9wYWdlX3Bvc2l0aW9uKAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UpIDwgdGhpcy50YWJfdmlldy5uX3BhZ2Vz IC0gMSk7CisrICAgIHRoaXMuY2xvc2Vfc3BlY2lmaWNfdGFiX2FjdGlvbi5zZXRfZW5hYmxlZChw YWdlICE9IG51bGwpOworKyAgICB0aGlzLmRldGF0Y2hfdGFiX2FjdGlvbi5zZXRfZW5hYmxlZChw YWdlICE9IG51bGwgJiYKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg dGhpcy50YWJfdmlldy5uX3BhZ2VzID4gMSk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25f cmV2ZWFsX2hlYWRlcl9iYXJfY2hhbmdlZCAoKSB7CisrICBwcml2YXRlIHZvaWQgb25fcmV2ZWFs X2hlYWRlcl9iYXJfY2hhbmdlZCgpIHsKKyAgICAgdGhpcy5oZWFkZXJfYmFyX3dhaXRpbmdfZmxv YXRpbmdfYW5pbWF0aW9uID0gVGltZW91dAorLSAgICAgIC5hZGQgKGhlYWRlcl9iYXJfcmV2ZWFs ZXJfZHVyYXRpb25fbXMsICgpID0+IHsKKy0gICAgICAgIHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5n X2Zsb2F0aW5nX2FuaW1hdGlvbiA9IDA7CistICAgICAgICB0aGlzLmhlYWRlcl9iYXJfYW5pbWF0 aW9uX2ZpbmlzaGVkICgpOworLSAgICAgICAgcmV0dXJuIGZhbHNlOworLSAgICAgIH0pOworKyAg ICAgIC5hZGQoaGVhZGVyX2Jhcl9yZXZlYWxlcl9kdXJhdGlvbl9tcywgKCkgPT4geworKyAgICAg IHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5nX2Zsb2F0aW5nX2FuaW1hdGlvbiA9IDA7CisrICAgICAg dGhpcy5oZWFkZXJfYmFyX2FuaW1hdGlvbl9maW5pc2hlZCgpOworKyAgICAgIHJldHVybiBmYWxz ZTsKKysgICAgfSk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25fZmxvYXRpbmdfY29udHJv bHNfY2hhbmdlZCAoKSB7CistICAgIHRoaXMuc2V0X2hlYWRlcl9iYXJfdG9fZmxvYXRpbmcuYmVn aW4gKAorKyAgcHJpdmF0ZSB2b2lkIG9uX2Zsb2F0aW5nX2NvbnRyb2xzX2NoYW5nZWQoKSB7Cisr ICAgIHRoaXMuc2V0X2hlYWRlcl9iYXJfdG9fZmxvYXRpbmcuYmVnaW4oCisgICAgICAgIXRoaXMu c2V0dGluZ3Muc2hvd19oZWFkZXJiYXIgJiYgdGhpcy5zZXR0aW5ncy5mbG9hdGluZ19jb250cm9s cworICAgICApOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX3Nob3dfaGVhZGVyX2Jhcl9j aGFuZ2VkICgpIHsKKy0gICAgdGhpcy5zZXRfaGVhZGVyX2Jhcl90b19mbG9hdGluZy5iZWdpbiAo CisrICBwcml2YXRlIHZvaWQgb25fc2hvd19oZWFkZXJfYmFyX2NoYW5nZWQoKSB7CisrICAgIHRo aXMuc2V0X2hlYWRlcl9iYXJfdG9fZmxvYXRpbmcuYmVnaW4oCisgICAgICAgIXRoaXMuc2V0dGlu Z3Muc2hvd19oZWFkZXJiYXIgJiYgdGhpcy5zZXR0aW5ncy5mbG9hdGluZ19jb250cm9scworICAg ICApOworICAgfQorIAorLSAgcHJpdmF0ZSBhc3luYyB2b2lkIHdhaXRfZm9yX2hlYWRlcl9iYXJf YW5pbWF0aW9uICgpIHsKKysgIHByaXZhdGUgYXN5bmMgdm9pZCB3YWl0X2Zvcl9oZWFkZXJfYmFy X2FuaW1hdGlvbigpIHsKKyAgICAgaWYgKHRoaXMuaGVhZGVyX2Jhcl93YWl0aW5nX2Zsb2F0aW5n X2FuaW1hdGlvbiA9PSAwKSB7CisgICAgICAgcmV0dXJuOworICAgICB9CitAQCAtMzg1LDE2ICsz OTQsMTYgQEAgcHVibGljIGNsYXNzIFRlcm1pbmFsLldpbmRvdyA6IEFkdy5BcHBsaWNhdGlvbldp bmRvdyB7CisgCisgICAgIHVsb25nIGhpZCA9IDA7CisgCistICAgIGhpZCA9IHRoaXMuaGVhZGVy X2Jhcl9hbmltYXRpb25fZmluaXNoZWQuY29ubmVjdF9hZnRlciAoKCkgPT4geworLSAgICAgIGNh bGxiYWNrICgpOworLSAgICAgIHRoaXMuZGlzY29ubmVjdCAoaGlkKTsKKysgICAgaGlkID0gdGhp cy5oZWFkZXJfYmFyX2FuaW1hdGlvbl9maW5pc2hlZC5jb25uZWN0X2FmdGVyKCgpID0+IHsKKysg ICAgICBjYWxsYmFjaygpOworKyAgICAgIHRoaXMuZGlzY29ubmVjdChoaWQpOworICAgICB9KTsK KyAKKyAgICAgeWllbGQ7CisgICB9CisgCisgICBwcml2YXRlIGJvb2wgc2V0dGluZ19oZWFkZXJf YmFyX3RvX2Zsb2F0aW5nID0gZmFsc2U7CistICBwcml2YXRlIGFzeW5jIHZvaWQgc2V0X2hlYWRl cl9iYXJfdG9fZmxvYXRpbmcgKGJvb2wgc2hvdWxkX2Zsb2F0KSB7CisrICBwcml2YXRlIGFzeW5j IHZvaWQgc2V0X2hlYWRlcl9iYXJfdG9fZmxvYXRpbmcoYm9vbCBzaG91bGRfZmxvYXQpIHsKKyAg ICAgaWYgKHRoaXMuc2V0dGluZ19oZWFkZXJfYmFyX3RvX2Zsb2F0aW5nKSB7CisgICAgICAgcmV0 dXJuOworICAgICB9CitAQCAtNDAzLDE0ICs0MTIsMTQgQEAgcHVibGljIGNsYXNzIFRlcm1pbmFs LldpbmRvdyA6IEFkdy5BcHBsaWNhdGlvbldpbmRvdyB7CisgCisgICAgIGlmIChzaG91bGRfZmxv YXQgJiYgdGhpcy5oZWFkZXJfYmFyX3JldmVhbGVyLnBhcmVudCAhPSB0aGlzLm92ZXJsYXkpIHsK KyAgICAgICAvLyAuLi4KKy0gICAgICB5aWVsZCB0aGlzLndhaXRfZm9yX2hlYWRlcl9iYXJfYW5p bWF0aW9uICgpOworLSAgICAgIHRoaXMubGF5b3V0X2JveC5yZW1vdmUgKHRoaXMuaGVhZGVyX2Jh cl9yZXZlYWxlcik7CistICAgICAgdGhpcy5vdmVybGF5LmFkZF9vdmVybGF5ICh0aGlzLmhlYWRl cl9iYXJfcmV2ZWFsZXIpOworLSAgICB9CistICAgIGVsc2UgaWYgKCFzaG91bGRfZmxvYXQgJiYg dGhpcy5oZWFkZXJfYmFyX3JldmVhbGVyLnBhcmVudCAhPSB0aGlzLmxheW91dF9ib3gpIHsKKysg ICAgICB5aWVsZCB0aGlzLndhaXRfZm9yX2hlYWRlcl9iYXJfYW5pbWF0aW9uKCk7CisrICAgICAg dGhpcy5sYXlvdXRfYm94LnJlbW92ZSh0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIpOworKyAgICAg IHRoaXMub3ZlcmxheS5hZGRfb3ZlcmxheSh0aGlzLmhlYWRlcl9iYXJfcmV2ZWFsZXIpOworKyAg ICB9IGVsc2UgaWYgKCFzaG91bGRfZmxvYXQgJiYKKysgICAgICAgICAgICAgICB0aGlzLmhlYWRl cl9iYXJfcmV2ZWFsZXIucGFyZW50ICE9IHRoaXMubGF5b3V0X2JveCkgeworICAgICAgIC8vIC4u LgorLSAgICAgIHRoaXMub3ZlcmxheS5yZW1vdmVfb3ZlcmxheSAodGhpcy5oZWFkZXJfYmFyX3Jl dmVhbGVyKTsKKy0gICAgICB0aGlzLmxheW91dF9ib3gucHJlcGVuZCAodGhpcy5oZWFkZXJfYmFy X3JldmVhbGVyKTsKKysgICAgICB0aGlzLm92ZXJsYXkucmVtb3ZlX292ZXJsYXkodGhpcy5oZWFk ZXJfYmFyX3JldmVhbGVyKTsKKysgICAgICB0aGlzLmxheW91dF9ib3gucHJlcGVuZCh0aGlzLmhl YWRlcl9iYXJfcmV2ZWFsZXIpOworICAgICB9CisgCisgICAgIHRoaXMuc2V0dGluZ19oZWFkZXJf YmFyX3RvX2Zsb2F0aW5nID0gZmFsc2U7CitAQCAtNDE4LDE1ICs0MjcsMTUgQEAgcHVibGljIGNs YXNzIFRlcm1pbmFsLldpbmRvdyA6IEFkdy5BcHBsaWNhdGlvbldpbmRvdyB7CisgCisgICAvLyBU aGlzIG1ldGhvZCBpcyBjYWxsZWQgcmlnaHQgYmVmb3JlIHRoZSB3aW5kb3cgaXMgY2xvc2VkLiBV c2UgaXQgdG8gc3RvcmUKKyAgIC8vIHdpbmRvdy1yZWxhdGVkIHN0YXRlIHN1Y2ggYXMgcG9zaXRp b24gYW5kIHNpemUuCistICBwcml2YXRlIHZvaWQgb25fYmVmb3JlX2Nsb3NlICgpIHsKKy0gICAg dmFyIHNldHRpbmdzID0gU2V0dGluZ3MuZ2V0X2RlZmF1bHQgKCk7CisrICBwcml2YXRlIHZvaWQg b25fYmVmb3JlX2Nsb3NlKCkgeworKyAgICB2YXIgc2V0dGluZ3MgPSBTZXR0aW5ncy5nZXRfZGVm YXVsdCgpOworIAorICAgICBzZXR0aW5ncy53YXNfZnVsbHNjcmVlbmVkID0gdGhpcy5mdWxsc2Ny ZWVuZWQ7CisgICAgIHNldHRpbmdzLndhc19tYXhpbWl6ZWQgPSB0aGlzLm1heGltaXplZDsKKyAK KyAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0aGlzLnRhYl92aWV3Lm5fcGFnZXM7IGkrKykgewor LSAgICAgIHZhciBwYWdlID0gdGhpcy50YWJfdmlldy5nZXRfbnRoX3BhZ2UgKGkpOworLSAgICAg IChwYWdlLmdldF9jaGlsZCAoKSBhcyBUZXJtaW5hbFRhYik/Lm9uX2JlZm9yZV9jbG9zZSAoKTsK KysgICAgICB2YXIgcGFnZSA9IHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlKGkpOworKyAgICAg IChwYWdlLmdldF9jaGlsZCgpIGFzIFRlcm1pbmFsVGFiKT8ub25fYmVmb3JlX2Nsb3NlKCk7Cisg ICAgIH0KKyAgIH0KKyAKK0BAIC00MzcsNjYgKzQ0Niw2OSBAQCBwdWJsaWMgY2xhc3MgVGVybWlu YWwuV2luZG93IDogQWR3LkFwcGxpY2F0aW9uV2luZG93IHsKKyAgIC8vIHRvIGNsb3NlIHRoZSB3 aW5kb3cuIElmIHRoZSB1c2VyIGNvbmZpcm1zIGNsb3NpbmcgdGhlIHdpbmRvdywgb3IgaWYgdGhl cmUKKyAgIC8vIGFyZSBubyBydW5uaW5nIHByb2Nlc3NlcywgdGhlIGRpc3BhdGNoZWQgZnVuY3Rp b24gd2lsbCBmaXJlIGEgbmV3CisgICAvLyBjbG9zZV9yZXF1ZXN0IGV2ZW50IGFuZCB0aGlzIGZ1 bmN0aW9uIHdpbGwgZmluYWxseSBjbG9zZSB0aGUgd2luZG93LgorLSAgcHJpdmF0ZSBib29sIG9u X2Nsb3NlX3JlcXVlc3QgKCkgeworKyAgcHJpdmF0ZSBib29sIG9uX2Nsb3NlX3JlcXVlc3QoKSB7 CisgICAgIGlmICh0aGlzLmZvcmNlX2Nsb3NlKSB7CistICAgICAgdGhpcy5vbl9iZWZvcmVfY2xv c2UgKCk7CisrICAgICAgdGhpcy5vbl9iZWZvcmVfY2xvc2UoKTsKKyAgICAgICByZXR1cm4gZmFs c2U7IC8vIEFsbG93IGNsb3NpbmcKKyAgICAgfQorIAorLSAgICB0aGlzLnRyeV9jbG9zaW5nX3dp bmRvdy5iZWdpbiAob25fY2xvc2VfcmVxdWVzdF9yZXNvbHZlcik7CisrICAgIHRoaXMudHJ5X2Ns b3Npbmdfd2luZG93LmJlZ2luKG9uX2Nsb3NlX3JlcXVlc3RfcmVzb2x2ZXIpOworIAorICAgICBy ZXR1cm4gdHJ1ZTsgLy8gQmxvY2sgY2xvc2luZyBmb3Igbm93CisgICB9CisgCistICBwcml2YXRl IHN0YXRpYyB2b2lkIG9uX2Nsb3NlX3JlcXVlc3RfcmVzb2x2ZXIgKEdMaWIuT2JqZWN0PyBfd2lu ZG93LCBHTGliLkFzeW5jUmVzdWx0IG9iaikgeworKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBvbl9j bG9zZV9yZXF1ZXN0X3Jlc29sdmVyKAorKyAgICBHTGliLk9iamVjdD8gX3dpbmRvdywKKysgICAg R0xpYi5Bc3luY1Jlc3VsdCBvYmoKKysgICkgeworICAgICBpZiAoX3dpbmRvdyAhPSBudWxsICYm IF93aW5kb3cgaXMgV2luZG93KSB7CisgICAgICAgdmFyIHdpbmRvdyA9IF93aW5kb3cgYXMgV2lu ZG93OworLSAgICAgIHdpbmRvdy50cnlfY2xvc2luZ193aW5kb3cuZW5kIChvYmopOworKyAgICAg IHdpbmRvdy50cnlfY2xvc2luZ193aW5kb3cuZW5kKG9iaik7CisgICAgICAgaWYgKHdpbmRvdy5m b3JjZV9jbG9zZSkgeworLSAgICAgICAgd2luZG93LmNsb3NlICgpOworKyAgICAgICAgd2luZG93 LmNsb3NlKCk7CisgICAgICAgfQorICAgICB9CisgICB9CisgCistICBwcml2YXRlIGFzeW5jIHZv aWQgdHJ5X2Nsb3NpbmdfdGFiIChBZHcuVGFiUGFnZSBwYWdlKSB7CistICAgIHZhciB0YWIgPSBw YWdlLmNoaWxkIGFzIFRlcm1pbmFsVGFiOworLSAgICB2YXIgdGVybWluYWwgPSB0YWI/LnRlcm1p bmFsOworLSAgICBib29sIGNhbl9jbG9zZSA9IHRydWU7CisrICBwcml2YXRlIGFzeW5jIHZvaWQg dHJ5X2Nsb3NpbmdfdGFiKEFkdy5UYWJQYWdlIHBhZ2UpIHsKKysgICAgdmFyICAgICB0YWIgPSBw YWdlLmNoaWxkIGFzIFRlcm1pbmFsVGFiOworKyAgICB2YXIgICAgIHRlcm1pbmFsID0gdGFiPy50 ZXJtaW5hbDsKKysgICAgYm9vbCAgICBjYW5fY2xvc2UgPSB0cnVlOworICAgICBzdHJpbmc/IGNv bW1hbmQgPSBudWxsOworIAorICAgICBpZiAodGVybWluYWwgIT0gbnVsbCkgeworLSAgICAgIGlm ICghKHlpZWxkIHRlcm1pbmFsLmdldF9jYW5fY2xvc2UgKG91dCBjb21tYW5kKSkpIHsKKy0gICAg ICAgIGNhbl9jbG9zZSA9IHlpZWxkIGNvbmZpcm1fY2xvc2luZyAoeyBjb21tYW5kIH0pOworKyAg ICAgIGlmICghKHlpZWxkIHRlcm1pbmFsLmdldF9jYW5fY2xvc2Uob3V0IGNvbW1hbmQpKSkgewor KyAgICAgICAgY2FuX2Nsb3NlID0geWllbGQgY29uZmlybV9jbG9zaW5nKHsgY29tbWFuZCB9KTsK KyAgICAgICB9CisgICAgIH0KKyAKKyAgICAgaWYgKGNhbl9jbG9zZSkgeworLSAgICAgIHRhYj8u b25fYmVmb3JlX2Nsb3NlICgpOworKyAgICAgIHRhYj8ub25fYmVmb3JlX2Nsb3NlKCk7CisgICAg IH0KKyAKKy0gICAgdGhpcy50YWJfdmlldy5jbG9zZV9wYWdlX2ZpbmlzaCAocGFnZSwgY2FuX2Ns b3NlKTsKKysgICAgdGhpcy50YWJfdmlldy5jbG9zZV9wYWdlX2ZpbmlzaChwYWdlLCBjYW5fY2xv c2UpOworICAgICBpZiAoY2FuX2Nsb3NlICYmIHRlcm1pbmFsID09IHRoaXMuYWN0aXZlX3Rlcm1p bmFsKSB7CisgICAgICAgdGhpcy5hY3RpdmVfdGVybWluYWwgPSBudWxsOworICAgICB9CisgICB9 CisgCistICBwcml2YXRlIGFzeW5jIHZvaWQgdHJ5X2Nsb3Npbmdfd2luZG93ICgpIHsKKysgIHBy aXZhdGUgYXN5bmMgdm9pZCB0cnlfY2xvc2luZ193aW5kb3coKSB7CisgICAgIHVpbnQgbl9wYWdl cyA9IHRoaXMudGFiX3ZpZXcubl9wYWdlczsKKyAgICAgc3RyaW5nP1tdIGNvbW1hbmRzID0ge307 CisgICAgIGJvb2wgY2FuX2Nsb3NlID0gdHJ1ZTsKKyAKKyAgICAgZm9yICh1aW50IGkgPSAwOyBp IDwgbl9wYWdlczsgaSsrKSB7CisgICAgICAgc3RyaW5nPyBjb21tYW5kID0gbnVsbDsKKy0gICAg ICB2YXIgcGFnZSA9IHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlICgoaW50KSBpKTsKKy0gICAg ICB2YXIgdGVybWluYWwgPSAocGFnZS5nZXRfY2hpbGQgKCkgYXMgVGVybWluYWxUYWIpPy50ZXJt aW5hbDsKKysgICAgICB2YXIgICAgIHBhZ2UgPSB0aGlzLnRhYl92aWV3LmdldF9udGhfcGFnZSgo aW50KSBpKTsKKysgICAgICB2YXIgICAgIHRlcm1pbmFsID0gKHBhZ2UuZ2V0X2NoaWxkKCkgYXMg VGVybWluYWxUYWIpPy50ZXJtaW5hbDsKKyAKKy0gICAgICBpZiAodGVybWluYWwgIT0gbnVsbCAm JiAhKHlpZWxkIHRlcm1pbmFsLmdldF9jYW5fY2xvc2UgKG91dCBjb21tYW5kKSkpIHsKKysgICAg ICBpZiAodGVybWluYWwgIT0gbnVsbCAmJiAhKHlpZWxkIHRlcm1pbmFsLmdldF9jYW5fY2xvc2Uo b3V0IGNvbW1hbmQpKSkgeworICAgICAgICAgY29tbWFuZHMgKz0gY29tbWFuZDsKKyAgICAgICB9 CisgICAgIH0KKyAKKyAgICAgaWYgKGNvbW1hbmRzLmxlbmd0aCA+IDApIHsKKy0gICAgICBjYW5f Y2xvc2UgPSB5aWVsZCBjb25maXJtX2Nsb3NpbmcgKAorKyAgICAgIGNhbl9jbG9zZSA9IHlpZWxk IGNvbmZpcm1fY2xvc2luZygKKyAgICAgICAgIGNvbW1hbmRzLAorICAgICAgICAgQ29uZmlybUNs b3NpbmdDb250ZXh0LldJTkRPVworICAgICAgICk7CitAQCAtNTA3LDQyNiArNTE5LDQzMSBAQCBw dWJsaWMgY2xhc3MgVGVybWluYWwuV2luZG93IDogQWR3LkFwcGxpY2F0aW9uV2luZG93IHsKKyAg ICAgfQorICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIGFkZF9hY3Rpb25zICgpIHsKKy0gICAgdGhp cy5hZGRfYWN0aW9uX2VudHJpZXMgKEFDVElPTl9FTlRSSUVTLCB0aGlzKTsKKysgIHByaXZhdGUg dm9pZCBhZGRfYWN0aW9ucygpIHsKKysgICAgdGhpcy5hZGRfYWN0aW9uX2VudHJpZXMoQUNUSU9O X0VOVFJJRVMsIHRoaXMpOworIAorLSAgICB2YXIgc2EgPSBuZXcgU2ltcGxlQWN0aW9uICgiZWRp dF9wcmVmZXJlbmNlcyIsIG51bGwpOworLSAgICBzYS5hY3RpdmF0ZS5jb25uZWN0ICgoKSA9PiB7 CisrICAgIHZhciBzYSA9IG5ldyBTaW1wbGVBY3Rpb24oImVkaXRfcHJlZmVyZW5jZXMiLCBudWxs KTsKKysgICAgc2EuYWN0aXZhdGUuY29ubmVjdCgoKSA9PiB7CisgICAgICAgaWYgKHByZWZlcmVu Y2VzX3dpbmRvdyA9PSBudWxsKSB7CistICAgICAgICBwcmVmZXJlbmNlc193aW5kb3cgPSBuZXcg UHJlZmVyZW5jZXNXaW5kb3cgKHRoaXMsIHRoaXMuYXBwbGljYXRpb24pOworKyAgICAgICAgcHJl ZmVyZW5jZXNfd2luZG93ID0gbmV3IFByZWZlcmVuY2VzV2luZG93KHRoaXMsIHRoaXMuYXBwbGlj YXRpb24pOworICAgICAgIH0KKyAKKy0gICAgICBwcmVmZXJlbmNlc193aW5kb3cucHJlc2VudCAo dGhpcyk7CisrICAgICAgcHJlZmVyZW5jZXNfd2luZG93LnByZXNlbnQodGhpcyk7CisgICAgIH0p OworLSAgICB0aGlzLmFkZF9hY3Rpb24gKHNhKTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsK KyAKKy0gICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uICgicGFzdGUiLCBudWxsKTsKKy0gICAgc2Eu YWN0aXZhdGUuY29ubmVjdCAoKCkgPT4geworLSAgICAgIHRoaXMub25fcGFzdGVfYWN0aXZhdGVk ICgpOworKyAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24oInBhc3RlIiwgbnVsbCk7CisrICAgIHNh LmFjdGl2YXRlLmNvbm5lY3QoKCkgPT4geworKyAgICAgIHRoaXMub25fcGFzdGVfYWN0aXZhdGVk KCk7CisgICAgIH0pOworLSAgICB0aGlzLmFkZF9hY3Rpb24gKHNhKTsKKysgICAgdGhpcy5hZGRf YWN0aW9uKHNhKTsKKyAKKy0gICAgdGhpcy5jb3B5X2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24g KCJjb3B5IiwgbnVsbCk7CistICAgIGNvcHlfYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QgKCgpID0+ IHsKKy0gICAgICB0aGlzLm9uX2NvcHlfYWN0aXZhdGVkICgpOworKyAgICB0aGlzLmNvcHlfYWN0 aW9uID0gbmV3IFNpbXBsZUFjdGlvbigiY29weSIsIG51bGwpOworKyAgICBjb3B5X2FjdGlvbi5h Y3RpdmF0ZS5jb25uZWN0KCgpID0+IHsKKysgICAgICB0aGlzLm9uX2NvcHlfYWN0aXZhdGVkKCk7 CisgICAgIH0pOworLSAgICB0aGlzLmNvcHlfYWN0aW9uLnNldF9lbmFibGVkIChmYWxzZSk7Cist ICAgIHRoaXMuYWRkX2FjdGlvbiAodGhpcy5jb3B5X2FjdGlvbik7CisrICAgIHRoaXMuY29weV9h Y3Rpb24uc2V0X2VuYWJsZWQoZmFsc2UpOworKyAgICB0aGlzLmFkZF9hY3Rpb24odGhpcy5jb3B5 X2FjdGlvbik7CisgCistICAgIHNhID0gbmV3IFNpbXBsZUFjdGlvbiAoInN3aXRjaC1oZWFkZXJi YXItbW9kZSIsIG51bGwpOworLSAgICBzYS5hY3RpdmF0ZS5jb25uZWN0ICgoKSA9PiB7CisrICAg IHNhID0gbmV3IFNpbXBsZUFjdGlvbigic3dpdGNoLWhlYWRlcmJhci1tb2RlIiwgbnVsbCk7Cisr ICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QoKCkgPT4geworICAgICAgIHRoaXMuc2V0dGluZ3Muc2hv d19oZWFkZXJiYXIgPSAhdGhpcy5zZXR0aW5ncy5zaG93X2hlYWRlcmJhcjsKKyAgICAgfSk7Cist ICAgIHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICB0aGlzLmFkZF9hY3Rpb24oc2EpOworIAor LSAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24gKCJmdWxsc2NyZWVuIiwgbnVsbCk7CistICAgIHNh LmFjdGl2YXRlLmNvbm5lY3QgKHRoaXMudG9nZ2xlX2Z1bGxzY3JlZW4pOworLSAgICB0aGlzLmFk ZF9hY3Rpb24gKHNhKTsKKysgICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uKCJmdWxsc2NyZWVuIiwg bnVsbCk7CisrICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QodGhpcy50b2dnbGVfZnVsbHNjcmVlbik7 CisrICAgIHRoaXMuYWRkX2FjdGlvbihzYSk7CisgCistICAgIHNhID0gbmV3IFNpbXBsZUFjdGlv biAoInNlYXJjaCIsIG51bGwpOworLSAgICBzYS5hY3RpdmF0ZS5jb25uZWN0ICh0aGlzLnNlYXJj aCk7CistICAgIHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICBzYSA9IG5ldyBTaW1wbGVBY3Rp b24oInNlYXJjaCIsIG51bGwpOworKyAgICBzYS5hY3RpdmF0ZS5jb25uZWN0KHRoaXMuc2VhcmNo KTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsKKyAKKy0gICAgc2EgPSBuZXcgU2ltcGxlQWN0 aW9uICgiem9vbS1pbiIsIG51bGwpOworLSAgICBzYS5hY3RpdmF0ZS5jb25uZWN0ICh0aGlzLnpv b21faW4pOworLSAgICB0aGlzLmFkZF9hY3Rpb24gKHNhKTsKKysgICAgc2EgPSBuZXcgU2ltcGxl QWN0aW9uKCJ6b29tLWluIiwgbnVsbCk7CisrICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QodGhpcy56 b29tX2luKTsKKysgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsKKyAKKy0gICAgc2EgPSBuZXcgU2lt cGxlQWN0aW9uICgiem9vbS1vdXQiLCBudWxsKTsKKy0gICAgc2EuYWN0aXZhdGUuY29ubmVjdCAo dGhpcy56b29tX291dCk7CistICAgIHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICBzYSA9IG5l dyBTaW1wbGVBY3Rpb24oInpvb20tb3V0IiwgbnVsbCk7CisrICAgIHNhLmFjdGl2YXRlLmNvbm5l Y3QodGhpcy56b29tX291dCk7CisrICAgIHRoaXMuYWRkX2FjdGlvbihzYSk7CisgCistICAgIHNh ID0gbmV3IFNpbXBsZUFjdGlvbiAoInpvb20tZGVmYXVsdCIsIG51bGwpOworLSAgICBzYS5hY3Rp dmF0ZS5jb25uZWN0ICh0aGlzLnpvb21fZGVmYXVsdCk7CistICAgIHRoaXMuYWRkX2FjdGlvbiAo c2EpOworKyAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24oInpvb20tZGVmYXVsdCIsIG51bGwpOwor KyAgICBzYS5hY3RpdmF0ZS5jb25uZWN0KHRoaXMuem9vbV9kZWZhdWx0KTsKKysgICAgdGhpcy5h ZGRfYWN0aW9uKHNhKTsKKyAKKy0gICAgc2EgPSBuZXcgU2ltcGxlQWN0aW9uICgiY2xvc2UtdGFi IiwgbnVsbCk7CistICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QgKHRoaXMuY2xvc2VfYWN0aXZlX3Rh Yik7CistICAgIHRoaXMuYWRkX2FjdGlvbiAoc2EpOworKyAgICBzYSA9IG5ldyBTaW1wbGVBY3Rp b24oImNsb3NlLXRhYiIsIG51bGwpOworKyAgICBzYS5hY3RpdmF0ZS5jb25uZWN0KHRoaXMuY2xv c2VfYWN0aXZlX3RhYik7CisrICAgIHRoaXMuYWRkX2FjdGlvbihzYSk7CisgCisgICAgIGZvciAo aW50IGkgPSAxOyBpIDwgMTA7IGkrKykgeworICAgICAgIHZhciB0YWIgPSBpOworLSAgICAgIHNh ID0gbmV3IFNpbXBsZUFjdGlvbiAoInN3aXRjaC10YWItJWQiLnByaW50ZiAodGFiKSwgbnVsbCk7 CistICAgICAgc2EuYWN0aXZhdGUuY29ubmVjdCAoKCkgPT4geworLSAgICAgICAgdGhpcy5mb2N1 c19udGhfdGFiICh0YWIpOworKyAgICAgIHNhID0gbmV3IFNpbXBsZUFjdGlvbigic3dpdGNoLXRh Yi0lZCIucHJpbnRmKHRhYiksIG51bGwpOworKyAgICAgIHNhLmFjdGl2YXRlLmNvbm5lY3QoKCkg PT4geworKyAgICAgICAgdGhpcy5mb2N1c19udGhfdGFiKHRhYik7CisgICAgICAgfSk7CistICAg ICAgdGhpcy5hZGRfYWN0aW9uIChzYSk7CisrICAgICAgdGhpcy5hZGRfYWN0aW9uKHNhKTsKKyAg ICAgfQorIAorLSAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24gKCJzd2l0Y2gtdGFiLWxhc3QiLCBu dWxsKTsKKy0gICAgc2EuYWN0aXZhdGUuY29ubmVjdCAoKCkgPT4geworLSAgICAgIHRoaXMuZm9j dXNfbnRoX3RhYiAoLTEpOworKyAgICBzYSA9IG5ldyBTaW1wbGVBY3Rpb24oInN3aXRjaC10YWIt bGFzdCIsIG51bGwpOworKyAgICBzYS5hY3RpdmF0ZS5jb25uZWN0KCgpID0+IHsKKysgICAgICB0 aGlzLmZvY3VzX250aF90YWIoLTEpOworICAgICB9KTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uIChz YSk7CisrICAgIHRoaXMuYWRkX2FjdGlvbihzYSk7CisgCistICAgIHRoaXMuY29weV9saW5rX2Fj dGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24gKCJjb3B5LWxpbmsiLCBudWxsKTsKKy0gICAgdGhpcy5j b3B5X2xpbmtfYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QgKHRoaXMub25fY29weV9saW5rKTsKKy0g ICAgdGhpcy5jb3B5X2xpbmtfYWN0aW9uLnNldF9lbmFibGVkIChmYWxzZSk7CisrICAgIHRoaXMu Y29weV9saW5rX2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24oImNvcHktbGluayIsIG51bGwpOwor KyAgICB0aGlzLmNvcHlfbGlua19hY3Rpb24uYWN0aXZhdGUuY29ubmVjdCh0aGlzLm9uX2NvcHlf bGluayk7CisrICAgIHRoaXMuY29weV9saW5rX2FjdGlvbi5zZXRfZW5hYmxlZChmYWxzZSk7Cisg CistICAgIHRoaXMub3Blbl9saW5rX2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24gKCJvcGVuLWxp bmsiLCBudWxsKTsKKy0gICAgdGhpcy5vcGVuX2xpbmtfYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3Qg KHRoaXMub25fb3Blbl9saW5rKTsKKy0gICAgdGhpcy5vcGVuX2xpbmtfYWN0aW9uLnNldF9lbmFi bGVkIChmYWxzZSk7CisrICAgIHRoaXMub3Blbl9saW5rX2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rp b24oIm9wZW4tbGluayIsIG51bGwpOworKyAgICB0aGlzLm9wZW5fbGlua19hY3Rpb24uYWN0aXZh dGUuY29ubmVjdCh0aGlzLm9uX29wZW5fbGluayk7CisrICAgIHRoaXMub3Blbl9saW5rX2FjdGlv bi5zZXRfZW5hYmxlZChmYWxzZSk7CisgCistICAgIHRoaXMuYWRkX2FjdGlvbiAodGhpcy5jb3B5 X2xpbmtfYWN0aW9uKTsKKy0gICAgdGhpcy5hZGRfYWN0aW9uICh0aGlzLm9wZW5fbGlua19hY3Rp b24pOworKyAgICB0aGlzLmFkZF9hY3Rpb24odGhpcy5jb3B5X2xpbmtfYWN0aW9uKTsKKysgICAg dGhpcy5hZGRfYWN0aW9uKHRoaXMub3Blbl9saW5rX2FjdGlvbik7CisgCistICAgIHRoaXMubW92 ZV90YWJfbGVmdF9hY3Rpb24gPSBuZXcgU2ltcGxlQWN0aW9uICgibW92ZS10YWItbGVmdCIsIG51 bGwpOworLSAgICB0aGlzLm1vdmVfdGFiX2xlZnRfYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QgKHRo aXMubW92ZV90YWJfbGVmdCk7CistICAgIHRoaXMuYWRkX2FjdGlvbiAodGhpcy5tb3ZlX3RhYl9s ZWZ0X2FjdGlvbik7CisrICAgIHRoaXMubW92ZV90YWJfbGVmdF9hY3Rpb24gPSBuZXcgU2ltcGxl QWN0aW9uKCJtb3ZlLXRhYi1sZWZ0IiwgbnVsbCk7CisrICAgIHRoaXMubW92ZV90YWJfbGVmdF9h Y3Rpb24uYWN0aXZhdGUuY29ubmVjdCh0aGlzLm1vdmVfdGFiX2xlZnQpOworKyAgICB0aGlzLmFk ZF9hY3Rpb24odGhpcy5tb3ZlX3RhYl9sZWZ0X2FjdGlvbik7CisgCistICAgIHRoaXMubW92ZV90 YWJfcmlnaHRfYWN0aW9uID0gbmV3IFNpbXBsZUFjdGlvbiAoIm1vdmUtdGFiLXJpZ2h0IiwgbnVs bCk7CistICAgIHRoaXMubW92ZV90YWJfcmlnaHRfYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3QgKHRo aXMubW92ZV90YWJfcmlnaHQpOworLSAgICB0aGlzLmFkZF9hY3Rpb24gKHRoaXMubW92ZV90YWJf cmlnaHRfYWN0aW9uKTsKKysgICAgdGhpcy5tb3ZlX3RhYl9yaWdodF9hY3Rpb24gPSBuZXcgU2lt cGxlQWN0aW9uKCJtb3ZlLXRhYi1yaWdodCIsIG51bGwpOworKyAgICB0aGlzLm1vdmVfdGFiX3Jp Z2h0X2FjdGlvbi5hY3RpdmF0ZS5jb25uZWN0KHRoaXMubW92ZV90YWJfcmlnaHQpOworKyAgICB0 aGlzLmFkZF9hY3Rpb24odGhpcy5tb3ZlX3RhYl9yaWdodF9hY3Rpb24pOworIAorLSAgICB0aGlz LmNsb3NlX3NwZWNpZmljX3RhYl9hY3Rpb24gPSBuZXcgU2ltcGxlQWN0aW9uICgiY2xvc2Utc3Bl Y2lmaWMtdGFiIiwgbnVsbCk7CistICAgIHRoaXMuY2xvc2Vfc3BlY2lmaWNfdGFiX2FjdGlvbi5h Y3RpdmF0ZS5jb25uZWN0ICh0aGlzLmNsb3NlX3NwZWNpZmljX3RhYik7CistICAgIHRoaXMuYWRk X2FjdGlvbiAodGhpcy5jbG9zZV9zcGVjaWZpY190YWJfYWN0aW9uKTsKKysgICAgdGhpcy5jbG9z ZV9zcGVjaWZpY190YWJfYWN0aW9uID0gbmV3IFNpbXBsZUFjdGlvbigiY2xvc2Utc3BlY2lmaWMt dGFiIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBudWxsKTsKKysgICAgdGhpcy5jbG9zZV9zcGVjaWZpY190YWJfYWN0aW9uLmFjdGl2YXRl LmNvbm5lY3QodGhpcy5jbG9zZV9zcGVjaWZpY190YWIpOworKyAgICB0aGlzLmFkZF9hY3Rpb24o dGhpcy5jbG9zZV9zcGVjaWZpY190YWJfYWN0aW9uKTsKKyAKKy0gICAgdGhpcy5kZXRhdGNoX3Rh Yl9hY3Rpb24gPSBuZXcgU2ltcGxlQWN0aW9uICgiZGV0YXRjaC10YWIiLCBudWxsKTsKKy0gICAg dGhpcy5kZXRhdGNoX3RhYl9hY3Rpb24uYWN0aXZhdGUuY29ubmVjdCAodGhpcy5kZXRhdGNoX3Rh Yik7CistICAgIHRoaXMuYWRkX2FjdGlvbiAodGhpcy5kZXRhdGNoX3RhYl9hY3Rpb24pOworKyAg ICB0aGlzLmRldGF0Y2hfdGFiX2FjdGlvbiA9IG5ldyBTaW1wbGVBY3Rpb24oImRldGF0Y2gtdGFi IiwgbnVsbCk7CisrICAgIHRoaXMuZGV0YXRjaF90YWJfYWN0aW9uLmFjdGl2YXRlLmNvbm5lY3Qo dGhpcy5kZXRhdGNoX3RhYik7CisrICAgIHRoaXMuYWRkX2FjdGlvbih0aGlzLmRldGF0Y2hfdGFi X2FjdGlvbik7CisgCistICAgIHRoaXMucmVuYW1lX3RhYl9hY3Rpb24gPSBuZXcgU2ltcGxlQWN0 aW9uICgicmVuYW1lLXRhYiIsIG51bGwpOworLSAgICB0aGlzLnJlbmFtZV90YWJfYWN0aW9uLmFj dGl2YXRlLmNvbm5lY3QgKHRoaXMucmVuYW1lX3RhYik7CistICAgIHRoaXMuYWRkX2FjdGlvbiAo dGhpcy5yZW5hbWVfdGFiX2FjdGlvbik7CisrICAgIHRoaXMucmVuYW1lX3RhYl9hY3Rpb24gPSBu ZXcgU2ltcGxlQWN0aW9uKCJyZW5hbWUtdGFiIiwgbnVsbCk7CisrICAgIHRoaXMucmVuYW1lX3Rh Yl9hY3Rpb24uYWN0aXZhdGUuY29ubmVjdCh0aGlzLnJlbmFtZV90YWIpOworKyAgICB0aGlzLmFk ZF9hY3Rpb24odGhpcy5yZW5hbWVfdGFiX2FjdGlvbik7CisgICB9CisgCistICBwcml2YXRlIHZv aWQgcmVuYW1lX3RhYiAoKSB7CisrICBwcml2YXRlIHZvaWQgcmVuYW1lX3RhYigpIHsKKyAgICAg Ly8gSWYgdGhpcyB3YXMgYSBzdHJvbmcgcmVmLCB0aGUgZGlhbG9nIHdvdWxkIGtlZXAgdGhlIHRl cm1pbmFsIGFsaXZlIGFmdGVyCisgICAgIC8vIGl0IGV4aXRlZCB1bnRpbCB0aGUgdXNlciBmaXJl ZCBhIHJlc3BvbnNlLiBXZSBkb24ndCB3YW50IHRoYXQuIEluc3RlYWQsCisgICAgIC8vIHdlIGp1 c3QgbmVlZCB0byBjaGVjayB3aGVuIHdlIGdldCB0aGUgcmVzcG9uc2UgaWYgdGhlIHBhZ2Ugc3Rp bGwgZXhpc3RzLgorICAgICB3ZWFrIEFkdy5UYWJQYWdlPyB0YXJnZXQgPQorICAgICAgIHRoaXMu dGFiX21lbnVfdGFyZ2V0ID8/IHRoaXMudGFiX3ZpZXcuc2VsZWN0ZWRfcGFnZTsKKyAKKy0gICAg aWYgKHRhcmdldCA9PSBudWxsKSByZXR1cm47CisrICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeyBy ZXR1cm47IH0KKyAKKy0gICAgdmFyIGQgPSBuZXcgQWR3LkFsZXJ0RGlhbG9nIChfKCJSZW5hbWUg VGFiIiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiU2V0IGEgY3VzdG9t IHRpdGxlIGZvciB0aGlzIHRhYiIpKTsKKysgICAgdmFyIGQgPSBuZXcgQWR3LkFsZXJ0RGlhbG9n KF8oIlJlbmFtZSBUYWIiKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlNl dCBhIGN1c3RvbSB0aXRsZSBmb3IgdGhpcyB0YWIiKSk7CisgCistICAgIHZhciBlbnRyeSA9IG5l dyBHdGsuRW50cnkgKCkgeworKyAgICB2YXIgZW50cnkgPSBuZXcgR3RrLkVudHJ5KCkgeworICAg ICAgIHBsYWNlaG9sZGVyX3RleHQgPSBfKCJFbnRlciBhIGN1c3RvbSB0YWIgdGl0bGUiKSwKKyAg ICAgICB0ZXh0ID0gKHRhcmdldC5jaGlsZCBhcyBUZXJtaW5hbFRhYik/LnRpdGxlX292ZXJyaWRl ID8/ICIiCisgICAgIH07CisgCisgICAgIGQuZXh0cmFfY2hpbGQgPSBlbnRyeTsKKyAKKy0gICAg ZC5hZGRfcmVzcG9uc2UgKCJjYW5jZWwiLCBfKCJDYW5jZWwiKSk7CistICAgIGQuYWRkX3Jlc3Bv bnNlICgicmVzZXQiLCBfKCJSZXNldCBUaXRsZSIpKTsKKy0gICAgZC5hZGRfcmVzcG9uc2UgKCJv dmVycmlkZSIsIF8oIlNldCBUaXRsZSIpKTsKKysgICAgZC5hZGRfcmVzcG9uc2UoImNhbmNlbCIs IF8oIkNhbmNlbCIpKTsKKysgICAgZC5hZGRfcmVzcG9uc2UoInJlc2V0IiwgXygiUmVzZXQgVGl0 bGUiKSk7CisrICAgIGQuYWRkX3Jlc3BvbnNlKCJvdmVycmlkZSIsIF8oIlNldCBUaXRsZSIpKTsK KyAKKy0gICAgZC5zZXRfcmVzcG9uc2VfYXBwZWFyYW5jZSAoImNhbmNlbCIsIEFkdy5SZXNwb25z ZUFwcGVhcmFuY2UuREVGQVVMVCk7CistICAgIGQuc2V0X3Jlc3BvbnNlX2FwcGVhcmFuY2UgKCJy ZXNldCIsIEFkdy5SZXNwb25zZUFwcGVhcmFuY2UuREVTVFJVQ1RJVkUpOworLSAgICBkLnNldF9y ZXNwb25zZV9hcHBlYXJhbmNlICgib3ZlcnJpZGUiLCBBZHcuUmVzcG9uc2VBcHBlYXJhbmNlLlNV R0dFU1RFRCk7CisrICAgIGQuc2V0X3Jlc3BvbnNlX2FwcGVhcmFuY2UoImNhbmNlbCIsIEFkdy5S ZXNwb25zZUFwcGVhcmFuY2UuREVGQVVMVCk7CisrICAgIGQuc2V0X3Jlc3BvbnNlX2FwcGVhcmFu Y2UoInJlc2V0IiwgQWR3LlJlc3BvbnNlQXBwZWFyYW5jZS5ERVNUUlVDVElWRSk7CisrICAgIGQu c2V0X3Jlc3BvbnNlX2FwcGVhcmFuY2UoIm92ZXJyaWRlIiwgQWR3LlJlc3BvbnNlQXBwZWFyYW5j ZS5TVUdHRVNURUQpOworIAorLSAgICBkLnNldF9yZXNwb25zZV9lbmFibGVkICgib3ZlcnJpZGUi LCBlbnRyeS50ZXh0LnN0cmlwICgpICE9ICIiKTsKKy0gICAgZC5zZXRfZGVmYXVsdF9yZXNwb25z ZSAoIm92ZXJyaWRlIik7CistICAgIGQuc2V0X2Nsb3NlX3Jlc3BvbnNlICgiY2FuY2VsIik7Cisr ICAgIGQuc2V0X3Jlc3BvbnNlX2VuYWJsZWQoIm92ZXJyaWRlIiwgZW50cnkudGV4dC5zdHJpcCgp ICE9ICIiKTsKKysgICAgZC5zZXRfZGVmYXVsdF9yZXNwb25zZSgib3ZlcnJpZGUiKTsKKysgICAg ZC5zZXRfY2xvc2VfcmVzcG9uc2UoImNhbmNlbCIpOworIAorLSAgICBlbnRyeS5jaGFuZ2VkLmNv bm5lY3QgKChfZW50cnkpID0+IHsKKy0gICAgICBkLnNldF9yZXNwb25zZV9lbmFibGVkICgib3Zl cnJpZGUiLCBfZW50cnkudGV4dC5zdHJpcCAoKSAhPSAiIik7CisrICAgIGVudHJ5LmNoYW5nZWQu Y29ubmVjdCgoX2VudHJ5KSA9PiB7CisrICAgICAgZC5zZXRfcmVzcG9uc2VfZW5hYmxlZCgib3Zl cnJpZGUiLCBfZW50cnkudGV4dC5zdHJpcCgpICE9ICIiKTsKKyAgICAgfSk7CisgCistICAgIGVu dHJ5LmFjdGl2YXRlLmNvbm5lY3QgKCgpID0+IHsKKy0gICAgICBpZiAoZC5nZXRfcmVzcG9uc2Vf ZW5hYmxlZCAoIm92ZXJyaWRlIikpIHsKKy0gICAgICAgIGQucmVzcG9uc2UuZW1pdCAoIm92ZXJy aWRlIik7CistICAgICAgICBkLmNsb3NlICgpOworKyAgICBlbnRyeS5hY3RpdmF0ZS5jb25uZWN0 KCgpID0+IHsKKysgICAgICBpZiAoZC5nZXRfcmVzcG9uc2VfZW5hYmxlZCgib3ZlcnJpZGUiKSkg eworKyAgICAgICAgZC5yZXNwb25zZS5lbWl0KCJvdmVycmlkZSIpOworKyAgICAgICAgZC5jbG9z ZSgpOworICAgICAgIH0KKyAgICAgfSk7CisgCistICAgIGQucmVzcG9uc2UuY29ubmVjdCAoKHJl c3BvbnNlKSA9PiB7CisrICAgIGQucmVzcG9uc2UuY29ubmVjdCgocmVzcG9uc2UpID0+IHsKKyAg ICAgICBpZiAodGFyZ2V0IGlzIEFkdy5UYWJQYWdlKSB7CisgICAgICAgICBpZiAocmVzcG9uc2Ug PT0gInJlc2V0IikgeworLSAgICAgICAgICAodGFyZ2V0LmNoaWxkIGFzIFRlcm1pbmFsVGFiKT8u b3ZlcnJpZGVfdGl0bGUgKG51bGwpOworLSAgICAgICAgfQorLSAgICAgICAgZWxzZSBpZiAocmVz cG9uc2UgPT0gIm92ZXJyaWRlIiAmJiBlbnRyeS50ZXh0ICE9ICIiKSB7CistICAgICAgICAgICh0 YXJnZXQuY2hpbGQgYXMgVGVybWluYWxUYWIpPy5vdmVycmlkZV90aXRsZSAoZW50cnkudGV4dCk7 CisrICAgICAgICAgICh0YXJnZXQuY2hpbGQgYXMgVGVybWluYWxUYWIpPy5vdmVycmlkZV90aXRs ZShudWxsKTsKKysgICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UgPT0gIm92ZXJyaWRlIiAmJiBl bnRyeS50ZXh0ICE9ICIiKSB7CisrICAgICAgICAgICh0YXJnZXQuY2hpbGQgYXMgVGVybWluYWxU YWIpPy5vdmVycmlkZV90aXRsZShlbnRyeS50ZXh0KTsKKyAgICAgICAgIH0KKyAgICAgICB9Cisg CistICAgICAgZC5kZXN0cm95ICgpOworKyAgICAgIGQuZGVzdHJveSgpOworICAgICAgIGVudHJ5 ID0gbnVsbDsKKyAgICAgICB0YXJnZXQgPSBudWxsOworICAgICAgIGQgPSBudWxsOworICAgICB9 KTsKKyAKKy0gICAgZC5wcmVzZW50ICh0aGlzKTsKKysgICAgZC5wcmVzZW50KHRoaXMpOworICAg fQorIAorLSAgcHJpdmF0ZSB2b2lkIG1vdmVfdGFiX2xlZnQgKCkgeworKyAgcHJpdmF0ZSB2b2lk IG1vdmVfdGFiX2xlZnQoKSB7CisgICAgIHZhciB0YXJnZXQgPSB0aGlzLnRhYl9tZW51X3Rhcmdl dCA/PyB0aGlzLnRhYl92aWV3LnNlbGVjdGVkX3BhZ2U7CistICAgIGlmICh0YXJnZXQgPT0gbnVs bCkgcmV0dXJuOworKyAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsgcmV0dXJuOyB9CisgCistICAg IHZhciBwb3MgPSB0aGlzLnRhYl92aWV3LmdldF9wYWdlX3Bvc2l0aW9uICh0YXJnZXQpOworLSAg ICBpZiAocG9zID09IDApIHJldHVybjsKKy0gICAgdGhpcy50YWJfdmlldy5yZW9yZGVyX3BhZ2Ug KHRhcmdldCwgcG9zIC0gMSk7CisrICAgIHZhciBwb3MgPSB0aGlzLnRhYl92aWV3LmdldF9wYWdl X3Bvc2l0aW9uKHRhcmdldCk7CisrICAgIGlmIChwb3MgPT0gMCkgeyByZXR1cm47IH0KKysgICAg dGhpcy50YWJfdmlldy5yZW9yZGVyX3BhZ2UodGFyZ2V0LCBwb3MgLSAxKTsKKyAgIH0KKyAKKy0g IHByaXZhdGUgdm9pZCBtb3ZlX3RhYl9yaWdodCAoKSB7CisrICBwcml2YXRlIHZvaWQgbW92ZV90 YWJfcmlnaHQoKSB7CisgICAgIHZhciB0YXJnZXQgPSB0aGlzLnRhYl9tZW51X3RhcmdldCA/PyB0 aGlzLnRhYl92aWV3LnNlbGVjdGVkX3BhZ2U7CistICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgcmV0 dXJuOworKyAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsgcmV0dXJuOyB9CisgCistICAgIHZhciBw b3MgPSB0aGlzLnRhYl92aWV3LmdldF9wYWdlX3Bvc2l0aW9uICh0YXJnZXQpOworLSAgICBpZiAo cG9zID49IHRoaXMudGFiX3ZpZXcubl9wYWdlcyAtIDEpIHJldHVybjsKKy0gICAgdGhpcy50YWJf dmlldy5yZW9yZGVyX3BhZ2UgKHRhcmdldCwgcG9zICsgMSk7CisrICAgIHZhciBwb3MgPSB0aGlz LnRhYl92aWV3LmdldF9wYWdlX3Bvc2l0aW9uKHRhcmdldCk7CisrICAgIGlmIChwb3MgPj0gdGhp cy50YWJfdmlldy5uX3BhZ2VzIC0gMSkgeyByZXR1cm47IH0KKysgICAgdGhpcy50YWJfdmlldy5y ZW9yZGVyX3BhZ2UodGFyZ2V0LCBwb3MgKyAxKTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBj bG9zZV9zcGVjaWZpY190YWIgKCkgeworKyAgcHJpdmF0ZSB2b2lkIGNsb3NlX3NwZWNpZmljX3Rh YigpIHsKKyAgICAgdmFyIHRhcmdldCA9IHRoaXMudGFiX21lbnVfdGFyZ2V0ID8/IHRoaXMudGFi X3ZpZXcuc2VsZWN0ZWRfcGFnZTsKKy0gICAgaWYgKHRhcmdldCA9PSBudWxsKSByZXR1cm47Cisr ICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeyByZXR1cm47IH0KKyAKKy0gICAgdGhpcy50YWJfdmll dy5jbG9zZV9wYWdlICh0YXJnZXQpOworKyAgICB0aGlzLnRhYl92aWV3LmNsb3NlX3BhZ2UodGFy Z2V0KTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBkZXRhdGNoX3RhYiAoKSB7CisrICBwcml2 YXRlIHZvaWQgZGV0YXRjaF90YWIoKSB7CisgICAgIHZhciB0YXJnZXQgPSB0aGlzLnRhYl9tZW51 X3RhcmdldCA/PyB0aGlzLnRhYl92aWV3LnNlbGVjdGVkX3BhZ2U7CistICAgIGlmICh0YXJnZXQg PT0gbnVsbCkgcmV0dXJuOworKyAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsgcmV0dXJuOyB9Cisg CistICAgIHZhciB3ID0gbmV3IFdpbmRvdyAodGhpcy5hcHBsaWNhdGlvbiwgbnVsbCwgbnVsbCwg dHJ1ZSk7CistICAgIHRoaXMudGFiX3ZpZXcudHJhbnNmZXJfcGFnZSAodGFyZ2V0LCB3LnRhYl92 aWV3LCAwKTsKKy0gICAgdy5wcmVzZW50ICgpOworKyAgICB2YXIgdyA9IG5ldyBXaW5kb3codGhp cy5hcHBsaWNhdGlvbiwgbnVsbCwgbnVsbCwgdHJ1ZSk7CisrICAgIHRoaXMudGFiX3ZpZXcudHJh bnNmZXJfcGFnZSh0YXJnZXQsIHcudGFiX3ZpZXcsIDApOworKyAgICB3LnByZXNlbnQoKTsKKyAg IH0KKyAKKy0gIHB1YmxpYyB2b2lkIHNlYXJjaCAoKSB7CistICAgICh0aGlzLnRhYl92aWV3LnNl bGVjdGVkX3BhZ2U/LmNoaWxkIGFzIFRlcm1pbmFsVGFiKT8uc2VhcmNoICgpOworKyAgcHVibGlj IHZvaWQgc2VhcmNoKCkgeworKyAgICAodGhpcy50YWJfdmlldy5zZWxlY3RlZF9wYWdlPy5jaGls ZCBhcyBUZXJtaW5hbFRhYik/LnNlYXJjaCgpOworICAgfQorIAorLSAgcHVibGljIHZvaWQgem9v bV9pbiAoKSB7CistICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsPy56b29tX2luICgpOworKyAgcHVi bGljIHZvaWQgem9vbV9pbigpIHsKKysgICAgdGhpcy5hY3RpdmVfdGVybWluYWw/Lnpvb21faW4o KTsKKyAgIH0KKyAKKy0gIHB1YmxpYyB2b2lkIHpvb21fb3V0ICgpIHsKKy0gICAgdGhpcy5hY3Rp dmVfdGVybWluYWw/Lnpvb21fb3V0ICgpOworKyAgcHVibGljIHZvaWQgem9vbV9vdXQoKSB7Cisr ICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsPy56b29tX291dCgpOworICAgfQorIAorLSAgcHVibGlj IHZvaWQgem9vbV9kZWZhdWx0ICgpIHsKKy0gICAgdGhpcy5hY3RpdmVfdGVybWluYWw/Lnpvb21f ZGVmYXVsdCAoKTsKKysgIHB1YmxpYyB2b2lkIHpvb21fZGVmYXVsdCgpIHsKKysgICAgdGhpcy5h Y3RpdmVfdGVybWluYWw/Lnpvb21fZGVmYXVsdCgpOworICAgfQorIAorLSAgcHVibGljIHZvaWQg Y2xvc2VfYWN0aXZlX3RhYiAoKSB7CistICAgIHRoaXMudGFiX3ZpZXcuY2xvc2VfcGFnZSAodGhp cy50YWJfdmlldy5zZWxlY3RlZF9wYWdlKTsKKysgIHB1YmxpYyB2b2lkIGNsb3NlX2FjdGl2ZV90 YWIoKSB7CisrICAgIHRoaXMudGFiX3ZpZXcuY2xvc2VfcGFnZSh0aGlzLnRhYl92aWV3LnNlbGVj dGVkX3BhZ2UpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX29wZW5fbGluayAoKSB7Cist ICAgIGlmICh0aGlzLmxpbmsgPT0gbnVsbCkgcmV0dXJuOworKyAgcHJpdmF0ZSB2b2lkIG9uX29w ZW5fbGluaygpIHsKKysgICAgaWYgKHRoaXMubGluayA9PSBudWxsKSB7IHJldHVybjsgfQorIAor ICAgICB0cnkgeworLSAgICAgIEdMaWIuQXBwSW5mby5sYXVuY2hfZGVmYXVsdF9mb3JfdXJpICh0 aGlzLmxpbmssIG51bGwpOworLSAgICB9CistICAgIGNhdGNoIChFcnJvciBlKSB7CistICAgICAg d2FybmluZyAoIkZhaWxlZCB0byBvcGVuIGxpbmsgJXMiLCBlLm1lc3NhZ2UpOworKyAgICAgIEdM aWIuQXBwSW5mby5sYXVuY2hfZGVmYXVsdF9mb3JfdXJpKHRoaXMubGluaywgbnVsbCk7CisrICAg IH0gY2F0Y2ggKEVycm9yIGUpIHsKKysgICAgICB3YXJuaW5nKCJGYWlsZWQgdG8gb3BlbiBsaW5r ICVzIiwgZS5tZXNzYWdlKTsKKyAgICAgfQorICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX2Nv cHlfbGluayAoKSB7CistICAgIGlmICh0aGlzLmxpbmsgPT0gbnVsbCkgcmV0dXJuOworKyAgcHJp dmF0ZSB2b2lkIG9uX2NvcHlfbGluaygpIHsKKysgICAgaWYgKHRoaXMubGluayA9PSBudWxsKSB7 IHJldHVybjsgfQorIAorLSAgICBHZGsuRGlzcGxheS5nZXRfZGVmYXVsdCAoKS5nZXRfY2xpcGJv YXJkICgpLnNldF90ZXh0ICh0aGlzLmxpbmspOworKyAgICBHZGsuRGlzcGxheS5nZXRfZGVmYXVs dCgpLmdldF9jbGlwYm9hcmQoKS5zZXRfdGV4dCh0aGlzLmxpbmspOworICAgfQorIAorLSAgcHVi bGljIHZvaWQgb25fbmV3X3RhYiAoKSB7CisrICBwdWJsaWMgdm9pZCBvbl9uZXdfdGFiKCkgewor ICAgICBzdHJpbmc/IGN3ZCA9IFRlcm1pbmFsCistICAgICAgLmdldF9jdXJyZW50X3dvcmtpbmdf ZGlyZWN0b3J5X2Zvcl9uZXdfc2Vzc2lvbiAodGhpcy5hY3RpdmVfdGVybWluYWwpOworKyAgICAg IC5nZXRfY3VycmVudF93b3JraW5nX2RpcmVjdG9yeV9mb3JfbmV3X3Nlc3Npb24odGhpcy5hY3Rp dmVfdGVybWluYWwpOworIAorLSAgICB0aGlzLm5ld190YWIgKG51bGwsIGN3ZCk7CisrICAgIHRo aXMubmV3X3RhYihudWxsLCBjd2QpOworICAgfQorIAorLSAgcHVibGljIHZvaWQgbmV3X3RhYiAo c3RyaW5nPyBjb21tYW5kLCBzdHJpbmc/IGN3ZCkgeworLSAgICB2YXIgdGFiID0gbmV3IFRlcm1p bmFsVGFiICh0aGlzLCB0aGlzLnRhYl92aWV3Lm5fcGFnZXMgKyAxLCBjb21tYW5kLCBjd2QpOwor LSAgICB2YXIgcGFnZSA9IHRoaXMudGFiX3ZpZXcuYWRkX3BhZ2UgKHRhYiwgbnVsbCk7CisrICBw dWJsaWMgdm9pZCBuZXdfdGFiKHN0cmluZz8gY29tbWFuZCwgc3RyaW5nPyBjd2QpIHsKKysgICAg dmFyIHRhYiA9IG5ldyBUZXJtaW5hbFRhYih0aGlzLCB0aGlzLnRhYl92aWV3Lm5fcGFnZXMgKyAx LCBjb21tYW5kLCBjd2QpOworKyAgICB2YXIgcGFnZSA9IHRoaXMudGFiX3ZpZXcuYWRkX3BhZ2Uo dGFiLCBudWxsKTsKKyAKKy0gICAgdGFiLnRlcm1pbmFsLmJpbmRfcHJvcGVydHkgKCJuZWVkcy1h dHRlbnRpb24iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZSwKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZWVkcy1hdHRlbnRpb24iLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5CaW5kaW5nRmxhZ3MuU1lOQ19DUkVBVEUsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgbnVsbCk7CisrICAgIHRhYi50ZXJtaW5hbC5iaW5kX3Byb3BlcnR5KCJu ZWVkcy1hdHRlbnRpb24iLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlLAor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZHMtYXR0ZW50aW9uIiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5CaW5kaW5nRmxhZ3MuU1lOQ19DUkVBVEUs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG51bGwpOworIAorLSAgICB0YWIuYmluZF9wcm9wZXJ0eSAoInRpdGxl IiwKKy0gICAgICAgICAgICAgICAgICAgICAgIHBhZ2UsCistICAgICAgICAgICAgICAgICAgICAg ICAidGl0bGUiLAorLSAgICAgICAgICAgICAgICAgICAgICAgR0xpYi5CaW5kaW5nRmxhZ3MuU1lO Q19DUkVBVEUsCistICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorLSAgICAgICAgICAgICAg ICAgICAgICAgbnVsbCk7CisrICAgIHRhYi5iaW5kX3Byb3BlcnR5KCJ0aXRsZSIsCisrICAgICAg ICAgICAgICAgICAgICAgIHBhZ2UsCisrICAgICAgICAgICAgICAgICAgICAgICJ0aXRsZSIsCisr ICAgICAgICAgICAgICAgICAgICAgIEdMaWIuQmluZGluZ0ZsYWdzLlNZTkNfQ1JFQVRFLAorKyAg ICAgICAgICAgICAgICAgICAgICBudWxsLAorKyAgICAgICAgICAgICAgICAgICAgICBudWxsKTsK KyAKKy0gICAgdGFiLmNsb3NlX3JlcXVlc3QuY29ubmVjdCAoKF90YWIpID0+IHsKKy0gICAgICB2 YXIgX3BhZ2UgPSB0aGlzLnRhYl92aWV3LmdldF9wYWdlIChfdGFiKTsKKysgICAgdGFiLmNsb3Nl X3JlcXVlc3QuY29ubmVjdCgoX3RhYikgPT4geworKyAgICAgIHZhciBfcGFnZSA9IHRoaXMudGFi X3ZpZXcuZ2V0X3BhZ2UoX3RhYik7CisgICAgICAgaWYgKF9wYWdlICE9IG51bGwpIHsKKy0gICAg ICAgIHRoaXMudGFiX3ZpZXcuY2xvc2VfcGFnZSAoX3BhZ2UpOworKyAgICAgICAgdGhpcy50YWJf dmlldy5jbG9zZV9wYWdlKF9wYWdlKTsKKyAgICAgICB9CisgICAgIH0pOworIAorLSAgICB0aGlz LnRhYl92aWV3LnNldF9zZWxlY3RlZF9wYWdlIChwYWdlKTsKKysgICAgdGhpcy50YWJfdmlldy5z ZXRfc2VsZWN0ZWRfcGFnZShwYWdlKTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9wYXN0 ZV9hY3RpdmF0ZWQgKCkgeworKyAgcHJpdmF0ZSB2b2lkIG9uX3Bhc3RlX2FjdGl2YXRlZCgpIHsK KyAgICAgKHRoaXMudGFiX3ZpZXcuc2VsZWN0ZWRfcGFnZT8uY2hpbGQgYXMgVGVybWluYWxUYWIp Py50ZXJtaW5hbAorLSAgICAgIC5kb19wYXN0ZV9jbGlwYm9hcmQgKCk7CisrICAgIC5kb19wYXN0 ZV9jbGlwYm9hcmQoKTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCBvbl9jb3B5X2FjdGl2YXRl ZCAoKSB7CisrICBwcml2YXRlIHZvaWQgb25fY29weV9hY3RpdmF0ZWQoKSB7CisgICAgICh0aGlz LnRhYl92aWV3LnNlbGVjdGVkX3BhZ2U/LmNoaWxkIGFzIFRlcm1pbmFsVGFiKT8udGVybWluYWwK Ky0gICAgICAuZG9fY29weV9jbGlwYm9hcmQgKCk7CisrICAgIC5kb19jb3B5X2NsaXBib2FyZCgp OworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX3RhYl9zZWxlY3RlZCAoKSB7CisrICBwcml2 YXRlIHZvaWQgb25fdGFiX3NlbGVjdGVkKCkgeworICAgICBpZiAodGhpcy5hY3RpdmVfdGVybWlu YWxfdGFiICE9IG51bGwpIHsKKyAgICAgICBmb3JlYWNoICh1bm93bmVkIHVsb25nIGlkIGluIHRo aXMuYWN0aXZlX3Rlcm1pbmFsX3RhYl9zaWduYWxfaGFuZGxlcnMpIHsKKy0gICAgICAgIHRoaXMu YWN0aXZlX3Rlcm1pbmFsX3RhYi5kaXNjb25uZWN0IChpZCk7CisrICAgICAgICB0aGlzLmFjdGl2 ZV90ZXJtaW5hbF90YWIuZGlzY29ubmVjdChpZCk7CisgICAgICAgfQorLSAgICAgIHRoaXMuYWN0 aXZlX3Rlcm1pbmFsX3RhYl9zaWduYWxfaGFuZGxlcnMucmVtb3ZlX3JhbmdlICgKKysgICAgICB0 aGlzLmFjdGl2ZV90ZXJtaW5hbF90YWJfc2lnbmFsX2hhbmRsZXJzLnJlbW92ZV9yYW5nZSgKKyAg ICAgICAgIDAsCisgICAgICAgICB0aGlzLmFjdGl2ZV90ZXJtaW5hbF90YWJfc2lnbmFsX2hhbmRs ZXJzLmxlbmd0aAorICAgICAgICk7CisgICAgIH0KKyAgICAgaWYgKHRoaXMuYWN0aXZlX3Rlcm1p bmFsICE9IG51bGwpIHsKKyAgICAgICBmb3JlYWNoICh1bm93bmVkIHVsb25nIGlkIGluIHRoaXMu YWN0aXZlX3Rlcm1pbmFsX3NpZ25hbF9oYW5kbGVycykgeworLSAgICAgICAgdGhpcy5hY3RpdmVf dGVybWluYWwuZGlzY29ubmVjdCAoaWQpOworKyAgICAgICAgdGhpcy5hY3RpdmVfdGVybWluYWwu ZGlzY29ubmVjdChpZCk7CisgICAgICAgfQorLSAgICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsX3Np Z25hbF9oYW5kbGVycy5yZW1vdmVfcmFuZ2UgKAorKyAgICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFs X3NpZ25hbF9oYW5kbGVycy5yZW1vdmVfcmFuZ2UoCisgICAgICAgICAwLAorICAgICAgICAgdGhp cy5hY3RpdmVfdGVybWluYWxfc2lnbmFsX2hhbmRsZXJzLmxlbmd0aAorICAgICAgICk7CisgICAg IH0KKy0gICAgdGhpcy5mcmVlemVfbm90aWZ5ICgpOworLSAgICB0aGlzLmFjdGl2ZV90ZXJtaW5h bF90YWIgPSB0aGlzLnRhYl92aWV3LnNlbGVjdGVkX3BhZ2U/LmNoaWxkIGFzIFRlcm1pbmFsVGFi OworKyAgICB2YXIgb3V0Z29pbmdfY3dkID0gdGhpcy5hY3RpdmVfdGVybWluYWw/LmdldF9jdXJy ZW50X3dvcmtpbmdfZGlyZWN0b3J5KCk7CisrICAgIGlmIChvdXRnb2luZ19jd2QgIT0gbnVsbCkg eworKyAgICAgIHRoaXMubGFzdF9rbm93bl9jd2QgPSBvdXRnb2luZ19jd2Q7CisrICAgIH0KKysK KysgICAgdGhpcy5mcmVlemVfbm90aWZ5KCk7CisrICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsX3Rh YiA9CisrICAgICAgdGhpcy50YWJfdmlldy5zZWxlY3RlZF9wYWdlPy5jaGlsZCBhcyBUZXJtaW5h bFRhYjsKKyAgICAgdGhpcy5hY3RpdmVfdGVybWluYWwgPSB0aGlzLmFjdGl2ZV90ZXJtaW5hbF90 YWI/LnRlcm1pbmFsOworLSAgICB0aGlzLmFjdGl2ZV90ZXJtaW5hbD8uZ3JhYl9mb2N1cyAoKTsK Ky0gICAgdGhpcy50aGF3X25vdGlmeSAoKTsKKysgICAgdGhpcy5hY3RpdmVfdGVybWluYWw/Lmdy YWJfZm9jdXMoKTsKKysgICAgdGhpcy50aGF3X25vdGlmeSgpOworICAgfQorIAorLSAgcHJpdmF0 ZSB2b2lkIG9uX2FjdGl2ZV90ZXJtaW5hbF90YWJfY2hhbmdlZCAoKSB7CisrICBwcml2YXRlIHZv aWQgb25fYWN0aXZlX3Rlcm1pbmFsX3RhYl9jaGFuZ2VkKCkgeworICAgICBpZiAodGhpcy5hY3Rp dmVfdGVybWluYWxfdGFiID09IG51bGwpIHsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAKKyAg ICAgdWxvbmcgaGFuZGxlcjsKKyAKKy0gICAgdGhpcy5vbl9hY3RpdmVfdGVybWluYWxfc2VsZWN0 aW9uX2NoYW5nZWQgKCk7CisrICAgIHRoaXMub25fYWN0aXZlX3Rlcm1pbmFsX3NlbGVjdGlvbl9j aGFuZ2VkKCk7CisgICAgIGhhbmRsZXIgPSB0aGlzLmFjdGl2ZV90ZXJtaW5hbAorICAgICAgIC5z ZWxlY3Rpb25fY2hhbmdlZAorLSAgICAgIC5jb25uZWN0ICh0aGlzLm9uX2FjdGl2ZV90ZXJtaW5h bF9zZWxlY3Rpb25fY2hhbmdlZCk7CisrICAgICAgLmNvbm5lY3QodGhpcy5vbl9hY3RpdmVfdGVy bWluYWxfc2VsZWN0aW9uX2NoYW5nZWQpOworIAorLSAgICB0aGlzLmFjdGl2ZV90ZXJtaW5hbF9z aWduYWxfaGFuZGxlcnMuYXBwZW5kX3ZhbCAoaGFuZGxlcik7CisrICAgIHRoaXMuYWN0aXZlX3Rl cm1pbmFsX3NpZ25hbF9oYW5kbGVycy5hcHBlbmRfdmFsKGhhbmRsZXIpOworIAorICAgICAvLyBG SVhNRTogdGhpcyBzaG91bGQgYmUgd2F0Y2hpbmcgdGhlIFRlcm1pbmFsVGFiJ3MgYHRpdGxlYAor LSAgICB0aGlzLm9uX2FjdGl2ZV90ZXJtaW5hbF90aXRsZV9jaGFuZ2VkICgpOworKyAgICB0aGlz Lm9uX2FjdGl2ZV90ZXJtaW5hbF90aXRsZV9jaGFuZ2VkKCk7CisgICAgIGhhbmRsZXIgPSB0aGlz LmFjdGl2ZV90ZXJtaW5hbF90YWIKKy0gICAgICAubm90aWZ5IFsidGl0bGUiXQorLSAgICAgIC5j b25uZWN0ICh0aGlzLm9uX2FjdGl2ZV90ZXJtaW5hbF90aXRsZV9jaGFuZ2VkKTsKKysgICAgICAu bm90aWZ5WyJ0aXRsZSJdCisrICAgICAgLmNvbm5lY3QodGhpcy5vbl9hY3RpdmVfdGVybWluYWxf dGl0bGVfY2hhbmdlZCk7CisgCistICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFsX3RhYl9zaWduYWxf aGFuZGxlcnMuYXBwZW5kX3ZhbCAoaGFuZGxlcik7CisrICAgIHRoaXMuYWN0aXZlX3Rlcm1pbmFs X3RhYl9zaWduYWxfaGFuZGxlcnMuYXBwZW5kX3ZhbChoYW5kbGVyKTsKKyAKKy0gICAgdGhpcy5v bl9hY3RpdmVfdGVybWluYWxfY29udGV4dF9jaGFuZ2VkICgpOworKyAgICB0aGlzLm9uX2FjdGl2 ZV90ZXJtaW5hbF9jb250ZXh0X2NoYW5nZWQoKTsKKyAgICAgaGFuZGxlciA9IHRoaXMuYWN0aXZl X3Rlcm1pbmFsCisgICAgICAgLmNvbnRleHRfY2hhbmdlZAorLSAgICAgIC5jb25uZWN0ICh0aGlz Lm9uX2FjdGl2ZV90ZXJtaW5hbF90YWJfY2hhbmdlZCk7CisrICAgICAgLmNvbm5lY3QodGhpcy5v bl9hY3RpdmVfdGVybWluYWxfdGFiX2NoYW5nZWQpOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lk IG9uX2FjdGl2ZV90ZXJtaW5hbF9jb250ZXh0X2NoYW5nZWQgKCkgeworKyAgcHJpdmF0ZSB2b2lk IG9uX2FjdGl2ZV90ZXJtaW5hbF9jb250ZXh0X2NoYW5nZWQoKSB7CisgICAgIHZhciBjb250ZXh0 ID0gdGhpcy5hY3RpdmVfdGVybWluYWw/LnByb2Nlc3M/LmNvbnRleHQ7CisgICAgIHZhciBpc19j b250ZXh0X2F3YXJlX2VuYWJsZWQgPQorLSAgICAgIFNldHRpbmdzLmdldF9kZWZhdWx0ICgpLmNv bnRleHRfYXdhcmVfaGVhZGVyX2JhcjsKKysgICAgICBTZXR0aW5ncy5nZXRfZGVmYXVsdCgpLmNv bnRleHRfYXdhcmVfaGVhZGVyX2JhcjsKKyAKKy0gICAgd2lkZ2V0X3NldF9jc3NfY2xhc3MgKAor KyAgICB3aWRnZXRfc2V0X2Nzc19jbGFzcygKKyAgICAgICB0aGlzLAorICAgICAgICJjb250ZXh0 LXJvb3QiLAorICAgICAgIGNvbnRleHQgPT0gUHJvY2Vzc0NvbnRleHQuUk9PVCAmJiBpc19jb250 ZXh0X2F3YXJlX2VuYWJsZWQKKyAgICAgKTsKKyAKKy0gICAgd2lkZ2V0X3NldF9jc3NfY2xhc3Mg KAorKyAgICB3aWRnZXRfc2V0X2Nzc19jbGFzcygKKyAgICAgICB0aGlzLAorICAgICAgICJjb250 ZXh0LXNzaCIsCisgICAgICAgY29udGV4dCA9PSBQcm9jZXNzQ29udGV4dC5TU0ggJiYgaXNfY29u dGV4dF9hd2FyZV9lbmFibGVkCisgICAgICk7CisgICB9CisgCistICBwcml2YXRlIHZvaWQgb25f YWN0aXZlX3Rlcm1pbmFsX3RpdGxlX2NoYW5nZWQgKCkgeworLSAgICB0aGlzLmFjdGl2ZV90ZXJt aW5hbF90aXRsZSA9IHRoaXMudGFiX3ZpZXcuZ2V0X3NlbGVjdGVkX3BhZ2UgKCkudGl0bGU7Cisr ICBwcml2YXRlIHZvaWQgb25fYWN0aXZlX3Rlcm1pbmFsX3RpdGxlX2NoYW5nZWQoKSB7CisrICAg IHRoaXMuYWN0aXZlX3Rlcm1pbmFsX3RpdGxlID0gdGhpcy50YWJfdmlldy5nZXRfc2VsZWN0ZWRf cGFnZSgpLnRpdGxlOworICAgfQorIAorLSAgcHJpdmF0ZSB2b2lkIG9uX2FjdGl2ZV90ZXJtaW5h bF9zZWxlY3Rpb25fY2hhbmdlZCAoKSB7CisrICBwcml2YXRlIHZvaWQgb25fYWN0aXZlX3Rlcm1p bmFsX3NlbGVjdGlvbl9jaGFuZ2VkKCkgeworICAgICBib29sIGVuYWJsZWQgPSBmYWxzZTsKKy0g ICAgaWYgKHRoaXMuYWN0aXZlX3Rlcm1pbmFsPy5nZXRfaGFzX3NlbGVjdGlvbiAoKSkgeworKyAg ICBpZiAodGhpcy5hY3RpdmVfdGVybWluYWw/LmdldF9oYXNfc2VsZWN0aW9uKCkpIHsKKyAgICAg ICBlbmFibGVkID0gdHJ1ZTsKKyAgICAgfQorLSAgICB0aGlzLmNvcHlfYWN0aW9uLnNldF9lbmFi bGVkIChlbmFibGVkKTsKKysgICAgdGhpcy5jb3B5X2FjdGlvbi5zZXRfZW5hYmxlZChlbmFibGVk KTsKKyAgIH0KKyAKKy0gIHByaXZhdGUgdm9pZCB0b2dnbGVfZnVsbHNjcmVlbiAoKSB7CisrICBw cml2YXRlIHZvaWQgdG9nZ2xlX2Z1bGxzY3JlZW4oKSB7CisgICAgIGlmICh0aGlzLmZ1bGxzY3Jl ZW5lZCkgeworLSAgICAgIHRoaXMudW5mdWxsc2NyZWVuICgpOworKyAgICAgIHRoaXMudW5mdWxs c2NyZWVuKCk7CisgICAgIH0gZWxzZSB7CistICAgICAgdGhpcy5mdWxsc2NyZWVuICgpOworKyAg ICAgIHRoaXMuZnVsbHNjcmVlbigpOworICAgICB9CisgICB9CisgCistICBwdWJsaWMgV2luZG93 IG5ld193aW5kb3cgKAorKyAgcHVibGljIFdpbmRvdyBuZXdfd2luZG93KAorICAgICBzdHJpbmc/ IGN3ZCA9IG51bGwsCisgICAgIGJvb2wgc2tpcF9pbml0aWFsX3RhYiA9IGZhbHNlCisgICApIHsK Ky0gICAgdmFyIHcgPSBuZXcgV2luZG93ICh0aGlzLmFwcGxpY2F0aW9uLCBudWxsLCBjd2QsIHNr aXBfaW5pdGlhbF90YWIpOworLSAgICB3LnNob3cgKCk7CisrICAgIHZhciB3ID0gbmV3IFdpbmRv dyh0aGlzLmFwcGxpY2F0aW9uLCBudWxsLCBjd2QsIHNraXBfaW5pdGlhbF90YWIpOworKyAgICB3 LnNob3coKTsKKyAgICAgcmV0dXJuIHc7CisgICB9CisgCistICBwdWJsaWMgdm9pZCBmb2N1c19u ZXh0X3RhYiAoKSB7CistICAgIGlmICghdGhpcy50YWJfdmlldy5zZWxlY3RfbmV4dF9wYWdlICgp KSB7CistICAgICAgdGhpcy50YWJfdmlldy5zZXRfc2VsZWN0ZWRfcGFnZSAodGhpcy50YWJfdmll dy5nZXRfbnRoX3BhZ2UgKDApKTsKKysgIHB1YmxpYyB2b2lkIGZvY3VzX25leHRfdGFiKCkgewor KyAgICBpZiAoIXRoaXMudGFiX3ZpZXcuc2VsZWN0X25leHRfcGFnZSgpKSB7CisrICAgICAgdGhp cy50YWJfdmlldy5zZXRfc2VsZWN0ZWRfcGFnZSh0aGlzLnRhYl92aWV3LmdldF9udGhfcGFnZSgw KSk7CisgICAgIH0KKyAgIH0KKyAKKy0gIHB1YmxpYyB2b2lkIGZvY3VzX3ByZXZpb3VzX3RhYiAo KSB7CistICAgIGlmICghdGhpcy50YWJfdmlldy5zZWxlY3RfcHJldmlvdXNfcGFnZSAoKSkgewor LSAgICAgIHRoaXMudGFiX3ZpZXcuc2V0X3NlbGVjdGVkX3BhZ2UgKHRoaXMudGFiX3ZpZXcuZ2V0 X250aF9wYWdlICh0aGlzLnRhYl92aWV3Lm5fcGFnZXMgLSAxKSk7CisrICBwdWJsaWMgdm9pZCBm b2N1c19wcmV2aW91c190YWIoKSB7CisrICAgIGlmICghdGhpcy50YWJfdmlldy5zZWxlY3RfcHJl dmlvdXNfcGFnZSgpKSB7CisrICAgICAgdGhpcy50YWJfdmlldy5zZXRfc2VsZWN0ZWRfcGFnZSh0 aGlzLnRhYl92aWV3LmdldF9udGhfcGFnZSgKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhpcy50YWJfdmlldy5uX3BhZ2VzIC0gMSkpOworICAgICB9CisgICB9Cisg CistICBwdWJsaWMgdm9pZCBmb2N1c19udGhfdGFiIChpbnQgaW5kZXgpIHsKKysgIHB1YmxpYyB2 b2lkIGZvY3VzX250aF90YWIoaW50IGluZGV4KSB7CisgICAgIGlmICh0aGlzLnRhYl92aWV3Lm5f cGFnZXMgPD0gMSkgeworICAgICAgIHJldHVybjsKKyAgICAgfQorICAgICBpZiAoaW5kZXggPCAw KSB7CisgICAgICAgLy8gR28gdG8gbGFzdCB0YWIKKy0gICAgICB0aGlzLnRhYl92aWV3LnNldF9z ZWxlY3RlZF9wYWdlICgKKy0gICAgICAgIHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlICh0aGlz LnRhYl92aWV3Lm5fcGFnZXMgLSAxKQorKyAgICAgIHRoaXMudGFiX3ZpZXcuc2V0X3NlbGVjdGVk X3BhZ2UoCisrICAgICAgICB0aGlzLnRhYl92aWV3LmdldF9udGhfcGFnZSh0aGlzLnRhYl92aWV3 Lm5fcGFnZXMgLSAxKQorICAgICAgICk7CisgICAgICAgcmV0dXJuOworICAgICB9CisgICAgIGlm IChpbmRleCA+IHRoaXMudGFiX3ZpZXcubl9wYWdlcykgeworICAgICAgIHJldHVybjsKKy0gICAg fQorLSAgICBlbHNlIHsKKy0gICAgICB0aGlzLnRhYl92aWV3LnNldF9zZWxlY3RlZF9wYWdlICh0 aGlzLnRhYl92aWV3LmdldF9udGhfcGFnZSAoaW5kZXggLSAxKSk7CisrICAgIH0gZWxzZSB7Cisr ICAgICAgdGhpcy50YWJfdmlldy5zZXRfc2VsZWN0ZWRfcGFnZSh0aGlzLnRhYl92aWV3LmdldF9u dGhfcGFnZShpbmRleCAtIDEpKTsKKyAgICAgICByZXR1cm47CisgICAgIH0KKyAgIH0KKyAKKy0g IHB1YmxpYyB2b2lkIGZvY3VzX3RhYl93aXRoX2lkICh1aW50IHRhYl9pZCkgeworLSAgICBmb3Ig KGludCBpID0gMDsgaSAhPSB0aGlzLnRhYl92aWV3LmdldF9uX3BhZ2VzICgpOyBpKyspIHsKKy0g ICAgICB2YXIgcGFnZSA9IHRoaXMudGFiX3ZpZXcuZ2V0X250aF9wYWdlIChpKTsKKy0gICAgICB2 YXIgdGFiID0gcGFnZS5nZXRfY2hpbGQgKCkgYXMgVGVybWluYWxUYWI7CistICAgICAgaWYgKHRh YiAhPSBudWxsICYmIHRhYi5nZXRfaWQgKCkgPT0gdGFiX2lkKSB7CistICAgICAgICB0aGlzLnRh Yl92aWV3LnNldF9zZWxlY3RlZF9wYWdlIChwYWdlKTsKKy0gICAgICAgIHRoaXMucHJlc2VudCAo KTsKKysgIHB1YmxpYyB2b2lkIGZvY3VzX3RhYl93aXRoX2lkKHVpbnQgdGFiX2lkKSB7CisrICAg IGZvciAoaW50IGkgPSAwOyBpICE9IHRoaXMudGFiX3ZpZXcuZ2V0X25fcGFnZXMoKTsgaSsrKSB7 CisrICAgICAgdmFyIHBhZ2UgPSB0aGlzLnRhYl92aWV3LmdldF9udGhfcGFnZShpKTsKKysgICAg ICB2YXIgdGFiID0gcGFnZS5nZXRfY2hpbGQoKSBhcyBUZXJtaW5hbFRhYjsKKysgICAgICBpZiAo dGFiICE9IG51bGwgJiYgdGFiLmdldF9pZCgpID09IHRhYl9pZCkgeworKyAgICAgICAgdGhpcy50 YWJfdmlldy5zZXRfc2VsZWN0ZWRfcGFnZShwYWdlKTsKKysgICAgICAgIHRoaXMucHJlc2VudCgp OworICAgICAgICAgcmV0dXJuOworICAgICAgIH0KKyAgICAgfQoKZGlmZiAtLWdpdCBhL2JsYWNr Ym94LXRlcm1pbmFsLnNwZWMgYi9ibGFja2JveC10ZXJtaW5hbC5zcGVjCmluZGV4IDA2MmM5MjIu LmQ0Njg4YzIgMTAwNjQ0Ci0tLSBhL2JsYWNrYm94LXRlcm1pbmFsLnNwZWMKKysrIGIvYmxhY2ti b3gtdGVybWluYWwuc3BlYwpAQCAtMSwxMyArMSwxNyBAQAogJWdsb2JhbCByZG5uICAgIGNvbS5y YWdnZXNpbHZlci5CbGFja0JveAogCiBOYW1lOiAgICAgICAgICAgYmxhY2tib3gtdGVybWluYWwK LVZlcnNpb246ICAgICAgICAwLjE1LjEKK1ZlcnNpb246ICAgICAgICAwLjE1LjIKIFJlbGVhc2U6 ICAgICAgICAlYXV0b3JlbGVhc2UKIFN1bW1hcnk6ICAgICAgICBFbGVnYW50IGFuZCBjdXN0b21p emFibGUgdGVybWluYWwgZm9yIEdOT01FCiBMaWNlbnNlOiAgICAgICAgR1BMLTMuMC1vci1sYXRl cgogVVJMOiAgICAgICAgICAgIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9yYWdnZXNpbHZlci9i bGFja2JveAogU291cmNlOiAgICAgICAgICV7dXJsfS8tL2FyY2hpdmUvdiV7dmVyc2lvbn0vYmxh Y2tib3gtdiV7dmVyc2lvbn0udGFyLmd6CiAKKyMgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL3Jh Z2dlc2lsdmVyL2JsYWNrYm94Ly0vd29ya19pdGVtcy80MjQKKyMgaHR0cHM6Ly9naXRsYWIuZ25v bWUub3JnL3JhZ2dlc2lsdmVyL2JsYWNrYm94Ly0vY29tbWl0LzcxODJkNmRhOGRkYmQ5MjVkYjAw MWIzMGVkNmIzYjAwOTI3ZGQ3ZjUKK1BhdGNoOiAgICAgICAgICAwMDAxLUltcGxlbWVudC1sYXN0 LWtub3duLWN3ZC5wYXRjaAorCiAjIGh0dHBzOi8vZmVkb3JhcHJvamVjdC5vcmcvd2lraS9DaGFu Z2VzL0VuY291cmFnZUk2ODZMZWFmUmVtb3ZhbAogRXhjbHVkZUFyY2g6ICAgICV7aXg4Nn0KIApA QCAtMzcsNiArNDEsMTcgQEAgUmVxdWlyZXM6ICAgICAgIGhpY29sb3ItaWNvbi10aGVtZQogQmxh Y2sgQm94IGlzIGFuIGVsZWdhbnQgYW5kIGN1c3RvbWl6YWJsZSB0ZXJtaW5hbCBmb3IgR05PTUUu CiAKIAorJXBhY2thZ2UgbmF1dGlsdXMKK1N1bW1hcnk6ICAgICAgICBCbGFjayBCb3ggZXh0ZW5z aW9uIGZvciBOYXV0aWx1cworUmVxdWlyZXM6ICAgICAgICV7bmFtZX0lez9faXNhfSA9ICV7dmVy c2lvbn0tJXtyZWxlYXNlfQorUmVxdWlyZXM6ICAgICAgIG5hdXRpbHVzLXB5dGhvbiV7P19pc2F9 CisKKworJWRlc2NyaXB0aW9uIG5hdXRpbHVzCitUaGlzIHBhY2thZ2UgcHJvdmlkZXMgYSBOYXV0 aWx1cyBleHRlbnNpb24gdGhhdCBhZGRzIHRoZSAnT3BlbiBpbiBCbGFjayBCb3gnCitvcHRpb24g dG8gdGhlIHJpZ2h0LWNsaWNrIGNvbnRleHQgbWVudSBpbiBOYXV0aWx1cy4KKworCiAlcHJlcAog JWF1dG9zZXR1cCAtcCAxIC1uIGJsYWNrYm94LXYle3ZlcnNpb259CiAKQEAgLTcxLDUgKzg2LDkg QEAgYXBwc3RyZWFtLXV0aWwgdmFsaWRhdGUtcmVsYXggLS1ub25ldCAle2J1aWxkcm9vdH0le19t ZXRhaW5mb2Rpcn0vJXtyZG5ufS5tZXRhaW4KICV7X21ldGFpbmZvZGlyfS8le3Jkbm59Lm1ldGFp bmZvLnhtbAogCiAKKyVmaWxlcyBuYXV0aWx1cworJXtfZGF0YWRpcn0vbmF1dGlsdXMtcHl0aG9u L2V4dGVuc2lvbnMvb3Blbi1ibGFja2JveC5weQorCisKICVjaGFuZ2Vsb2cKICVhdXRvY2hhbmdl bG9nCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggYTI3MmJhNC4uOWMzNjY0 MCAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1TSEE1MTIg KGJsYWNrYm94LXYwLjE1LjEudGFyLmd6KSA9IGEwNTI1ZjIxYTkxMGQwM2IzYWQ1N2RjMWIzZWM5 NzBjNTgzMjYxYzI2MWJjYzE3NDM2YzAxZWUyOWE3Y2QxNjIwNTI0MjdkN2MyYmUzYzRhMGU3MjQ3 YWRiMmI1ODA3NTMyNTNjMTNlNGZjOTMzNzIzZmY5M2EyNjA3YWNhNGNlCitTSEE1MTIgKGJsYWNr Ym94LXYwLjE1LjIudGFyLmd6KSA9IDhlZDRhMDk3MjI2OGU4NmE1Y2ZhN2I4N2Q0ODk1NDViNzM0 ZTk5YTJkNTEyZDc1NzE4OGM1YTllZTI4ZWY4YjdjNjNiMjhhYjgyZGZlN2JjZTVlYTY0ZDJmMjdj ODFhYjgzMDVkZTA2YmYxNGM5Y2RlYTJmZWM1ZTI5ODY0MzEyCg==