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: Michal Kolar To: git-commits@fedoraproject.org Subject: [rpms/gdb] f44: Rebase to FSF GDB 17.2. Date: Thu, 25 Jun 2026 00:56:46 GMT Message-ID: <178234900640.1.5318356091770756049.rpms-gdb-f17655f37931@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: f44 X-Git-Rev: f17655f37931fdb7e2d9e0bb4ce1bea33a4514d3 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGY0NAogICAgICAgICAgICBDb21t aXQgOiBmMTc2NTVmMzc5MzFmZGI3ZTJkOWUwYmI0Y2UxYmVhMzNhNDUxNGQzCiAgICAgICAgICAg IEF1dGhvciA6IE1pY2hhbCBLb2xhciA8bWtvbGFyQHJlZGhhdC5jb20+CiAgICAgICAgICAgIERh dGUgICA6IDIwMjYtMDYtMjRUMjE6Mzk6NTMrMDA6MDAKICAgICAgICAgICAgU3RhdHMgIDogKzI5 ODcvLTE2MyBpbiAxMCBmaWxlKHMpCiAgICAgICAgICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZl ZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvZjE3NjU1ZjM3OTMxZmRiN2UyZDllMGJiNGNlMWJl YTMzYTQ1MTRkMz9icmFuY2g9ZjQ0CgogICAgICAgICAgICBMb2c6CiAgICAgICAgICAgIFJlYmFz ZSB0byBGU0YgR0RCIDE3LjIuCgpEZWxldGVkOiBnZGItcmhiejI0MzU5NTAtc2tpcC1yZXZlcnQu cGF0Y2gKCkJhY2twb3J0IGU0OTJmYjIyYjcwLCBnZGI6IGJhY2twb3J0IERBUCBjb3JlIGZpbGUg c3VwcG9ydAoKUmVwbGFjZSBtYW51YWwsIG11bHRpLWZpbGUgcGF0Y2ggaW5jbHVzaW9uIHdpdGgg bW9kZXJuIGF1dG9zZXR1cAoKQWRkIHJwbWluc3BlY3QueWFtbCB0byBkZWZpbmUgcGFja2FnZS1z cGVjaWZpYyB0ZXN0aW5nIHBvbGljeQoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdp dGlnbm9yZQppbmRleCA1YzE4YjY1Li5lNjlhNWZiIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisr KyBiLy5naXRpZ25vcmUKQEAgLTEsNSArMSw0IEBACiAvbmV3LWZlZG9yYS1yZWxlYXNlCiAvZ2Ri LWxpYnN0ZGMrKy12My1weXRob24tOC4xLjEtMjAxODA2MjYudGFyLnh6CiAvdjIuMC41LnRhci5n egotL2dkYi0xNi4zLnRhci54egotL2dkYi0xNy4xLnRhci54egorL2dkYi0xNy4yLnRhci54egoK ZGlmZiAtLWdpdCBhL19nZGIuc3BlYy5QYXRjaC5pbmNsdWRlIGIvX2dkYi5zcGVjLlBhdGNoLmlu Y2x1ZGUKaW5kZXggMTI3ZGUzMC4uMzM5YjIxNiAxMDA2NDQKLS0tIGEvX2dkYi5zcGVjLlBhdGNo LmluY2x1ZGUKKysrIGIvX2dkYi5zcGVjLlBhdGNoLmluY2x1ZGUKQEAgLTM3LDM2ICszNywzMiBA QCBQYXRjaDAwNjogZ2RiLXJoYnoyNDI0MzI1LWMrKzIwLWltcGxpY2l0LWxhbWJkYS1jYXB0dXJl LnBhdGNoCiAjIHdoZW4gYmFja3BvcnRpbmcgdGhpcyBmaXguCiBQYXRjaDAwNzogZ2RiLXJoYnoy NDAzNTgwLW1pc3BsYWNlZC1zeW10YWJzLnBhdGNoCiAKLSMgQmFja3BvcnQgb2YgdXBzdHJlYW0g Y29tbWl0IGYwOGZmYmJmMjY5MWJhZDJkNWRmNjYwZWU2NDQ2NDc2ODc3NzVmMGMKLSMgQ2FuIGJl IGRyb3BwZWQgb24gYSByZWJhc2UgdG8gZ2RiIDE3LjIgb3IgMTguMQotUGF0Y2gwMDg6IGdkYi1y aGJ6MjQzNTk1MC1za2lwLXJldmVydC5wYXRjaAotCiAjIEJhY2twb3J0IG9mIHVwc3RyZWFtIGNv bW1pdCBjMWRhMDEzOTE1ZSBmcm9tIEtldmluIEJ1ZXR0bmVyCiAjIChSSEJaIDI0MTM0MDUpLgot UGF0Y2gwMDk6IGdkYi1yaGJ6MjQxMzQwNS1nY29yZS11bnJlYWRhYmxlLXBhZ2VzLnBhdGNoCitQ YXRjaDAwODogZ2RiLXJoYnoyNDEzNDA1LWdjb3JlLXVucmVhZGFibGUtcGFnZXMucGF0Y2gKIAog IyBCYWNrcG9ydCBvZiB1cHN0cmVhbSBjb21taXQgZDJjYzE2Y2Q3ZmMgZnJvbSBKYW4gVnJhbnkg Zml4aW5nCiAjIEZBSUxzIGluIGdkYi5iYXNlL2ZpbGVpby5leHAgY2F1c2VkIGJ5IG1hY3JvIGV4 cGFuc2lvbiBvZgogIyBwYXRoIGNvbXBvbmVudHMgaW4gT1VURElSLmdkYi90ZXN0c3VpdGU6IGZp eCBGQUlMcyBpbiBmaWxlaW8uZXhwCi1QYXRjaDAxMDogZ2RiLWZpbGVpby10ZXN0LWZpeGVzLnBh dGNoCitQYXRjaDAwOTogZ2RiLWZpbGVpby10ZXN0LWZpeGVzLnBhdGNoCiAKICMgQmFja3BvcnQg dXBzdHJlYW0gY29tbWl0IDhiZDA4ZWU5MmM0IHRvIGFkZHJlc3MgcmhiejIzNjY0NjEuICBUaGlz CiAjIGNvbW1pdCB3aWxsIGRyb3Agb3V0IHdpdGggR0RCIDE4LgotUGF0Y2gwMTE6IGdkYi1yaGJ6 MjM2NjQ2MS1taXNzaW5nLXRocmVhZC5wYXRjaAorUGF0Y2gwMTA6IGdkYi1yaGJ6MjM2NjQ2MS1t aXNzaW5nLXRocmVhZC5wYXRjaAogCiAjIEJhY2twb3J0IHVwc3RyZWFtIGNvbW1pdCBjZDI4OWRm MDY4ZSB0byBhZGRyZXNzIHJoYnoyMzY2NDYxLiAgVGhpcwogIyBjb21taXQgd2lsbCBkcm9wIG91 dCB3aXRoIEdEQiAxOC4KLVBhdGNoMDEyOiBnZGItcmhiejIzNjY0NjEtYmFkLXNvbGliLWVudHJ5 LWFkZHIucGF0Y2gKK1BhdGNoMDExOiBnZGItcmhiejIzNjY0NjEtYmFkLXNvbGliLWVudHJ5LWFk ZHIucGF0Y2gKIAogIyBGaXggdXNlIG9mIGRlcHJlY2F0ZWQgdHJhY2UgdmFyaWFibGUgc3ViY29t bWFuZAogIyAoVG9tIGRlIFZyaWVzKQotUGF0Y2gwMTM6IGdkYi1maXgtdGVzdHN1aXRlLW5ld2Vy LXRjbC5wYXRjaAorUGF0Y2gwMTI6IGdkYi1maXgtdGVzdHN1aXRlLW5ld2VyLXRjbC5wYXRjaAog CiAjIEJhY2twb3J0IHRoZSBmb2xsb3dpbmcgdXBzdHJlYW0gY29tbWl0cyBpbiBvcmRlciB0byBh ZGRyZXNzIFJIQloKICMgMjQ2NzI1MTogZDk4MDMxN2M3ZjEsIDk1OGQwNjI2MmE3LCA3ZDFkNzM4 NjU2MSwgODkxNWRlMDg4M2MsCiAjIDhmNjVhYjdiNzFmLiAgVGhlc2UgY29tbWl0cyB3aWxsIGFs bCBkcm9wIG91dCB3aGVuIHdlIHJlYmFzZSB0byBHREIKICMgMTguCi1QYXRjaDAxNDogZ2RiLXJo YnoyNDY3MjUxLWNvbXB1dGVkLWxvY2F0aW9uLXN5bnRoZXRpYy1wb2ludGVycy5wYXRjaAorUGF0 Y2gwMTM6IGdkYi1yaGJ6MjQ2NzI1MS1jb21wdXRlZC1sb2NhdGlvbi1zeW50aGV0aWMtcG9pbnRl cnMucGF0Y2gKIAogIyBGaXggRUlMU0VRIHByb2JsZW1zIGZvciBVVEY4IHJlbGF0ZWQgdGVzdHMg d2hlbiB1c2luZyBleHBlY3QKICMgZW5hYmxlZCB3aXRoIFRjbCA5IGFuZCBmdWxsIHNldCBvZiBU Y2wgOSBjb21wYXRpYmlsaXR5IGZpeGVzCkBAIC03Nyw1ICs3Myw5IEBAIFBhdGNoMDE0OiBnZGIt cmhiejI0NjcyNTEtY29tcHV0ZWQtbG9jYXRpb24tc3ludGhldGljLXBvaW50ZXJzLnBhdGNoCiAj IEZvciBpdHMgc3RhdHVzLCBzZWU6CiAjCiAjIGh0dHBzOi8vaW5ib3guc291cmNld2FyZS5vcmcv Z2RiLXBhdGNoZXMvMjAyNjA1MjYxOTI3MDEuMzgzNTI2Mi0yLWtldmluYkByZWRoYXQuY29tL1Qv I3UKLVBhdGNoMDE1OiBnZGItdGNsOS11dGY4LWVuY29kaW5nLWZpeC5wYXRjaAorUGF0Y2gwMTQ6 IGdkYi10Y2w5LXV0ZjgtZW5jb2RpbmctZml4LnBhdGNoCisKKyMgQmFja3BvcnQgb2YgdXBzdHJl YW0gY29tbWl0IGU0OTJmYjIyYjcwCisjIGdkYjogYmFja3BvcnQgREFQIGNvcmUgZmlsZSBzdXBw b3J0CitQYXRjaDAxNTogZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUtc3VwcG9ydC5wYXRjaAog CgpkaWZmIC0tZ2l0IGEvX2dpdF91cHN0cmVhbV9jb21taXQgYi9fZ2l0X3Vwc3RyZWFtX2NvbW1p dAppbmRleCA0NTJjYTUzLi5kYTRjOTJlIDEwMDY0NAotLS0gYS9fZ2l0X3Vwc3RyZWFtX2NvbW1p dAorKysgYi9fZ2l0X3Vwc3RyZWFtX2NvbW1pdApAQCAtMSArMSBAQAotNjMxYTQ5YzQ1MmE0YTQ1 NmRkOTg4OWQxNzI1NDFlYTc4OWY4YmNhZQorN2FkZjlmYTZiMWNjYjNjNzBmODZjYjYzMDM2OGI5 ZDNkZmZjZjNhYQoKZGlmZiAtLWdpdCBhL19wYXRjaF9vcmRlciBiL19wYXRjaF9vcmRlcgppbmRl eCAwNGY3MzJmLi5jZGRiNDFiIDEwMDY0NAotLS0gYS9fcGF0Y2hfb3JkZXIKKysrIGIvX3BhdGNo X29yZGVyCkBAIC01LDcgKzUsNiBAQCBnZGItcmhiejI0MjQzMjUtYzIzLWNvbnN0LWJ1aWxkLXdh cm5pbmdzLnBhdGNoCiBnZGItcmhiejI0MjQzMjUtYzIzLW1vcmUtY29uc3QtZml4ZXMucGF0Y2gK IGdkYi1yaGJ6MjQyNDMyNS1jKysyMC1pbXBsaWNpdC1sYW1iZGEtY2FwdHVyZS5wYXRjaAogZ2Ri LXJoYnoyNDAzNTgwLW1pc3BsYWNlZC1zeW10YWJzLnBhdGNoCi1nZGItcmhiejI0MzU5NTAtc2tp cC1yZXZlcnQucGF0Y2gKIGdkYi1yaGJ6MjQxMzQwNS1nY29yZS11bnJlYWRhYmxlLXBhZ2VzLnBh dGNoCiBnZGItZmlsZWlvLXRlc3QtZml4ZXMucGF0Y2gKIGdkYi1yaGJ6MjM2NjQ2MS1taXNzaW5n LXRocmVhZC5wYXRjaApAQCAtMTMsMyArMTIsNCBAQCBnZGItcmhiejIzNjY0NjEtYmFkLXNvbGli LWVudHJ5LWFkZHIucGF0Y2gKIGdkYi1maXgtdGVzdHN1aXRlLW5ld2VyLXRjbC5wYXRjaAogZ2Ri LXJoYnoyNDY3MjUxLWNvbXB1dGVkLWxvY2F0aW9uLXN5bnRoZXRpYy1wb2ludGVycy5wYXRjaAog Z2RiLXRjbDktdXRmOC1lbmNvZGluZy1maXgucGF0Y2gKK2dkYi1iYWNrcG9ydC1kYXAtY29yZS1m aWxlLXN1cHBvcnQucGF0Y2gKCmRpZmYgLS1naXQgYS9nZGItYmFja3BvcnQtZGFwLWNvcmUtZmls ZS1zdXBwb3J0LnBhdGNoIGIvZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUtc3VwcG9ydC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTEwODA1Ci0tLSAvZGV2L251 bGwKKysrIGIvZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZpbGUtc3VwcG9ydC5wYXRjaApAQCAtMCww ICsxLDI5NTYgQEAKK0Zyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAx CitGcm9tOiBNaWNoYWwgS29sYXIgPG1rb2xhckByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAyNCBK dW4gMjAyNiAyMToyNTozMyArMDAwMAorU3ViamVjdDogZ2RiLWJhY2twb3J0LWRhcC1jb3JlLWZp bGUtc3VwcG9ydC5wYXRjaAorCis7OyBCYWNrcG9ydCBvZiB1cHN0cmVhbSBjb21taXQgZTQ5MmZi MjJiNzAKKzs7IGdkYjogYmFja3BvcnQgREFQIGNvcmUgZmlsZSBzdXBwb3J0CisKK0JhY2stcG9y dCB0aGUgZm9sbG93aW5nIHVwc3RyZWFtIGNvbW1pdHMgdG8gZW5hYmxlIGNvcmUgZmlsZSBzdXBw b3J0Cit3aXRoaW4gR0RCJ3MgREFQIHByb3RvY29sIGltcGxlbWVudGF0aW9uOgorCisgICogMGE0 ODFiYjlhNmQgZ2RiL2RhcDogYWRkIHN1cHBvcnQgZm9yIG9wZW5pbmcgY29yZSBmaWxlcworICAq IDRlY2FhYzM5YzI2IGdkYi9weXRob246IG5ldyBldmVudHMuY29yZWZpbGVfY2hhbmdlZCBldmVu dAorICAqIGVjYWM0MmFmNzM1IEFsd2F5cyBwcm9wYWdhdGUgZXhjZXB0aW9ucyBpbiBEQVAKKyAg KiBmYzhlNWE1NjViMyBnZGI6IG1ha2Ugc3RydWN0dXJlZCBjb3JlIGZpbGUgbWFwcGluZ3MgcHJv Y2Vzc2luZyBnbG9iYWwKKyAgKiBmNjljMWQwM2M0ZCBnZGIvcHl0aG9uOiBhZGQgQ29yZWZpbGUu bWFwcGVkX2ZpbGVzIG1ldGhvZAorICAqIDc4NjI1NTRiY2Y0IGdkYi9weXRob246IGludHJvZHVj ZSBnZGIuQ29yZWZpbGUgQVBJCisKK1RoZSBjb21taXQgbWVzc2FnZXMgZm9yIGVhY2ggaW5kaXZp ZHVhbCBjb21taXQgZm9sbG93OgorCistLS0gMGE0ODFiYjlhNmQ6CisKK2dkYi9kYXA6IGFkZCBz dXBwb3J0IGZvciBvcGVuaW5nIGNvcmUgZmlsZXMKKworVGhpcyBwYXRjaCBhZGRzIGNvcmUgZmls ZSBzdXBwb3J0IHRvIEdEQidzIERBUCBpbnRlcmZhY2UuCisKK0NvcmUgZmlsZXMgYXJlIHN1cHBv cnRlZCBhcyBhIEdEQiBzcGVjaWZpYyBhcmd1bWVudCB0byAnYXR0YWNoJywgdGhlCituZXcgYXJn dW1lbnQgaXMgJ2NvcmVGaWxlJywgdGhlIG5hbWUgb2YgdGhlIGNvcmUgZmlsZSB0byBkZWJ1Zy4K KworSSB0aGluayBoYW5kbGluZyBjb3JlIGZpbGVzIHZpYSBhdHRhY2ggbWFrZXMgdGhlIG1vc3Qg c2Vuc2U7IGF0dGFjaCBpcworZm9yIGNvbm5lY3RpbmcgdG8gZXhpc3RpbmcgcHJvY2Vzc2VzLCBi dXQgdGhlc2UgdGFyZ2V0cyBhcmUgKHVzdWFsbHkpCitzdG9wcGVkIGFzIHNvb24gYXMgR0RCIGF0 dGFjaGVzLCBhbmQgdGhhdCdzIHdoYXQgYSBjb3JlIGZpbGUgbG9va3MKK2xpa2UsIGEgdGFyZ2V0 IHRoYXQgd2FzIHJ1bm5pbmcsIGJ1dCBpcyBub3cgc3RvcHBlZC4gIEl0IGp1c3QgaGFwcGVucwor dGhhdCBjb3JlIGZpbGUgdGFyZ2V0cyBhcmUgc3BlY2lhbCBpbiB0aGF0IHRoZSB0YXJnZXQgY2Fu bm90IGJlCityZXN1bWVkIGFnYWluLCBub3IgY2FuIHRoZSB1c2VyIG1vZGlmeSB0aGUgcHJvZ3Jh bSBzdGF0ZSAoZS5nLiB3cml0ZQordG8gbWVtb3J5IG9yIHJlZ2lzdGVycykuCisKK1ByaW9yIHRv IHN0YXJ0aW5nIHRoaXMgd29yayBJIHRvb2sgYSBsb29rIGF0IHdoYXQgbGxkYiBkb2VzLiAgVGhl Citkb2N1bWVudGF0aW9uIGlzIG5vdCBzdXBlciBjbGVhciwgYnV0IHRoaXMgcGFnZSBzZWVtcyB0 byBpbmRpY2F0ZSB0aGF0CitsbGRiIG1pZ2h0IGFsc28gdXNlIHRoZSAnY29yZUZpbGUnIGFyZ3Vt ZW50IHRvICdhdHRhY2gnOgorCisgIGh0dHBzOi8vbGxkYi5sbHZtLm9yZy91c2UvbGxkYmRhcC5o dG1sI2NvbmZpZ3VyYXRpb24tc2V0dGluZ3MtcmVmZXJlbmNlCisKK0xpa2UgSSBzYWlkLCBpdCdz IG5vdCB2ZXJ5IGNsZWFyLCBidXQgc2VhcmNoIGZvciAiY29yZUZpbGUiIGFuZCB5b3UnbGwKK3Nl ZSBpdCBtZW50aW9uZWQsIGp1c3Qgb25jZSwgdW5kZXIgdGhlICJhdHRhY2giIGhlYWRlci4gIElu IG9yZGVyIHRvCitiZSBjb21wYXRpYmxlIHdpdGggbGxkYiBJIHVzZWQgdGhlIHNhbWUgYXJndW1l bnQgbmFtZSB3aXRoIHRoZSBzYW1lCitjYXBpdGFsaXNhdGlvbi4KKworVGhlIG5ldyBhcmd1bWVu dCBpcyBhZGRlZCB0byB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgbWVudGlvbmVkIGluIE5FV1MuCisK K0kgaGFkIHRvIG1ha2Ugc29tZSBjaGFuZ2VzIHRvIHRlc3RzdWl0ZS9saWIvZGFwLXN1cHBvcnQu ZXhwIHRvIHN1cHBvcnQKK3RoaXMgbmV3IGZlYXR1cmUuICBUaGVyZSdzIGEgbmV3IGRhcF9jb3Jl ZmlsZSBwcm9jIHRvIGhhbmRsZSBzZXR0aW5nCit1cCB0aGUgaW5pdGlhbCBjb25uZWN0aW9uLiAg VGhpcyBzZWVtZWQgY2xlYW5lciB0aGF0IG92ZXJsb2FkaW5nCitkYXBfYXR0YWNoLCBldmVuIHRo b3VnaCB1bmRlciB0aGUgaG9vZCBpdCBpcyBzdGlsbCBhbiAnYXR0YWNoJyByZXF1ZXN0Cit0aGF0 IGdldHMgc2VudC4KKworVGhlIG5ldyB0ZXN0IHRyaWVzIHRvIHdyaXRlIHRvIG1lbW9yeSBhbmQg cmVnaXN0ZXJzIHdpdGggdGhlIGNvcmUgZmlsZQordGFyZ2V0IGluIHBsYWNlLCBuZWl0aGVyIG9m IHRoZXNlIHJlcXVlc3RzIHN1Y2NlZWQsIHdoaWNoIGlzIHdoYXQgd2UKK3dhbnQsIGJ1dCB0aGUg ZXhjZXB0aW9ucyBhcmUgbG9nZ2VkIGludG8gdGhlIGRhcCBsb2cgZmlsZS4gIFRoZQorZGFwX3No dXRkb3duIHByb2MgY2FsbHMgZGFwX2NoZWNrX2xvZ19maWxlIHRvIGNoZWNrIHRoZSBsb2cgZm9y CitleGNlcHRpb25zLCBhbmQgdGhlc2UgdHdvIGV4Y2VwdGlvbnMgYXJlIHNwb3R0ZWQgYW5kIHRy aWdnZXIgYSBGQUlMLgorVG8gYXZvaWQgdGhpcyBJJ3ZlIGFkZGVkIGEgbmV3ICJleHBlY3RlZF9l eGNlcHRpb25fY291bnQiIGFyZ3VtZW50Citmb3IgZGFwX3NodXRkb3duLiAgTm93IHdlIGNoZWNr IHRoYXQgd2Ugc2VlIHRoZSBleHBlY3RlZCBudW1iZXIgb2YKK2V4Y2VwdGlvbnMuICBXZSBkb24n dCBjaGVjayBmb3IgdGhlIHNwZWNpZmljIGV4Y2VwdGlvbiB0eXBlcyByaWdodAorbm93LCBidXQg YXMgdGhlIHRlc3QgaXMgYWxyZWFkeSBjaGVja2luZyB0aGF0IHRoZSBleHBlY3RlZCByZXF1ZXN0 cworZmFpbCwgSSB0aGluayB3ZSdyZSBPSy4KKworQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkgPHRv bUB0cm9tZXkuY29tPgorCistLS0gIDRlY2FhYzM5YzI2OgorCitnZGIvcHl0aG9uOiBuZXcgZXZl bnRzLmNvcmVmaWxlX2NoYW5nZWQgZXZlbnQKKworQWRkIGEgbmV3IFB5dGhvbiBldmVudCByZWdp c3RyeSwgZXZlbnRzLmNvcmVmaWxlX2NoYW5nZWQuICBUaGlzIGV2ZW50CitpcyBlbWl0dGVkIGVh Y2ggdGltZSB0aGUgY29yZWZpbGUgd2l0aGluIGFuIGluZmVyaW9yIGNoYW5nZXMuCisKK1RoZSBl dmVudCBvYmplY3QgaGFzIGEgc2luZ2xlICdpbmZlcmlvcicgYXR0cmlidXRlIHdoaWNoIGlzIHRo ZQorZ2RiLkluZmVyaW9yIG9iamVjdCBmb3Igd2hpY2ggdGhlIGNvcmUgZmlsZSBjaGFuZ2VkLiAg VGhlIHVzZXIgY2FuCit0aGVuIGluc3BlY3QgSW5mZXJpb3IuY29yZWZpbGUgdG8gc2VlIGRldGFp bHMgYWJvdXQgdGhlIG5ldyBjb3JlIGZpbGUsCitvciB0aGlzIHdpbGwgYmUgTm9uZSBpZiB0aGUg Y29yZSBmaWxlIHdhcyByZW1vdmVkIGZyb20gdGhlIGluZmVyaW9yLgorCitJJ3ZlIHVwZGF0ZWQg dGhlIGV4aXN0aW5nIHRlc3QgdG8gY292ZXIgdGhpcyBuZXcgZXZlbnQuCisKK1RoZSBuZXcgdGVz dCBjb3ZlcnMgYm90aCB0aGUgY29yZWZpbGVfY2hhbmdlZCBldmVudCwgYnV0IGFsc28gbW9uaXRv cnMKK3RoZSBleGl0ZWQgZXZlbnQuICBUaGlzIHRpZXMgaW50byB0aGUgd29yayBkb25lIGluIHRo ZSBwcmV2aW91cworY29tbWl0IHdoZXJlIHdlIHVzZSB3aGV0aGVyIHRoZSBpbmZlcmlvciBoYXMg ZXhpdGVkIG9yIG5vdCBhcyBhIGd1YXJkCitmb3Igd2hldGhlciBjb3JlX3RhcmdldDo6ZXhpdF9j b3JlX2ZpbGVfaW5mZXJpb3Igc2hvdWxkIGJlIGNhbGxlZC4KK1VubG9hZGluZyBhIGNvcmUgZmls ZSBzaG91bGQgcmVzdWx0IGluIGEgc2luZ2xlIGNvcmVmaWxlX2NoYW5nZWQgZXZlbnQKK2FuZCBh IHNpbmdsZSBleGl0ZWQgZXZlbnQuCisKK1Jldmlld2VkLUJ5OiBFbGkgWmFyZXRza2lpIDxlbGl6 QGdudS5vcmc+CisKKy0tLSBlY2FjNDJhZjczNToKKworQWx3YXlzIHByb3BhZ2F0ZSBleGNlcHRp b25zIGluIERBUAorCitUaGlzIGNoYW5nZXMgdGhlIERBUCBleGVjX2FuZF9sb2cgZnVuY3Rpb24g dG8gYWx3YXlzIHRyYW5zZm9ybSBhbgorZXhjZXB0aW9uIGludG8gYSBEQVBFeGNlcHRpb24gYW5k IHByb3BhZ2F0ZSBpdC4KKworQXMgdGhlIGJ1ZyBwb2ludHMgb3V0LCB3ZSBoYXZlbid0IGFsd2F5 cyB3cmFwcGVkIGNhbGxzIHdoZW4KK2FwcHJvcHJpYXRlLiAgSSB0aGluayBpdCdzIGJldHRlciB0 byBjYXVzZSB0aGUgcmVxdWVzdCB0byBmYWlsIGJ5CitkZWZhdWx0OyBpZiBhbnkgc3BvdCB0cnVs eSBuZWVkcyB0byBpZ25vcmUgZXJyb3JzLCB0aGF0IGlzIHJlYWRpbHkKK2RvbmUgYXQgdGhlIHBv aW50IG9mIGNhbGwuCisKK0J1ZzogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93 X2J1Zy5jZ2k/aWQ9MzMzNDYKKworLS0tIGZjOGU1YTU2NWIzOgorCitnZGI6IG1ha2Ugc3RydWN0 dXJlZCBjb3JlIGZpbGUgbWFwcGluZ3MgcHJvY2Vzc2luZyBnbG9iYWwKKworSW4gY29yZWxvdy5j LCB3aXRoaW4gY29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFwcGluZ3MsIHdlIGhhdmUgY29kZQor dGhhdCB3cmFwcyBhcm91bmQgYSBjYWxsIHRvIGdkYmFyY2hfcmVhZF9jb3JlX2ZpbGVfbWFwcGlu Z3MgYW5kCitwcm92aWRlcyBtb3JlIHN0cnVjdHVyZSB0byB0aGUgcmVzdWx0cy4KKworU3BlY2lm aWNhbGx5LCBnZGJhcmNoX3JlYWRfY29yZV9maWxlX21hcHBpbmdzIGNhbGxzIGEgY2FsbGJhY2sg b25jZQorZm9yIGV2ZXJ5IHJlZ2lvbiBvZiBldmVyeSBtYXBwZWQgZmlsZS4gIFRoZSB3cmFwcGVy IGNvZGUgZ3JvdXBzIGFsbCBvZgordGhlIG1hcHBpbmdzIGZvciBvbmUgZmlsZSBpbnRvIGFuIGlu c3RhbmNlIG9mICdzdHJ1Y3QgbWFwcGVkX2ZpbGUnLAordGhpcyBhbGxvd3MgYWxsIG9mIHRoZSBt YXBwZWQgcmVnaW9ucyB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlCitidWlsZC1pZCBhbmQgZmls ZW5hbWUgb2YgYSBmaWxlLgorCitJbiB0aGUgbmV4dCBjb21taXQgSSBwbGFuIHRvIG1ha2UgdGhp cyBpbmZvcm1hdGlvbiBhdmFpbGFibGUgdmlhIHRoZQorUHl0aG9uIEFQSSwgYW5kIHNvIEkgbmVl ZCB0byBhbGxvdyBhY2Nlc3MgdG8gdGhpcyBzdHJ1Y3R1cmVkIHdyYXBwaW5nCitvdXRzaWRlIG9m IGNvcmVsb3cuYy4KKworVGhpcyBjb21taXQgcmVuYW1lcyAnc3RydWN0IG1hcHBlZF9maWxlJyB0 byAnc3RydWN0IGNvcmVfbWFwcGVkX2ZpbGUnCithbmQgbW92ZXMgdGhlIHN0cnVjdCBpbnRvIGdk YmNvcmUuaC4gIFRoZW4gYSBuZXcgZ2xvYmFsIGZ1bmN0aW9uCitnZGJfcmVhZF9jb3JlX2ZpbGVf bWFwcGluZ3MgaXMgY3JlYXRlZCBpbnRvIHdoaWNoIEkgbW92ZSB0aGUgY29kZSB0bworYnVpbGQg dGhlIHN0cnVjdHVyZWQgZGF0YS4KKworVGhlbiBjb3JlbG93LmMgaXMgdXBkYXRlZCB0byBjYWxs IGdkYl9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncy4KKworVGhpcyBjb21taXQgZG9lcyBub3QgZXh0 ZW5kIHRoZSBQeXRob24gQVBJLCB0aGF0IGlzIGZvciB0aGUgbmV4dAorY29tbWl0LgorCitUaGVy ZSBzaG91bGQgYmUgbm8gdXNlciB2aXNpYmxlIGNoYW5nZXMgYWZ0ZXIgdGhpcyBjb21taXQuCisK K0J1ZzogaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MzI4 NDQKKworQXBwcm92ZWQtQnk6IFRvbSBUcm9tZXkgPHRvbUB0cm9tZXkuY29tPgorCistLS0gZjY5 YzFkMDNjNGQ6CisKK2dkYi9weXRob246IGFkZCBDb3JlZmlsZS5tYXBwZWRfZmlsZXMgbWV0aG9k CisKK0FkZCBhIG5ldyBDb3JlZmlsZS5tYXBwZWRfZmlsZXMgbWV0aG9kIHdoaWNoIHJldHVybnMg YSBsaXN0IG9mCitnZGIuQ29yZWZpbGVNYXBwZWRGaWxlIG9iamVjdHMuCisKK0VhY2ggZ2RiLkNv cmVmaWxlTWFwcGVkRmlsZSBvYmplY3QgcmVwcmVzZW50cyBhIGZpbGUgdGhhdCB3YXMgbWFwcGVk CitpbnRvIHRoZSBwcm9jZXNzIHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMgY3JlYXRlZC4KKworQSBn ZGIuQ29yZWZpbGVNYXBwZWRGaWxlIGhhcyBhdHRyaWJ1dGVzOgorCisgICsgZmlsZW5hbWUgIC0t IEEgc3RyaW5nLCB0aGUgbmFtZSBvZiB0aGUgbWFwcGVkIGZpbGUuCisgICsgYnVpbGRfaWQgLS0g QSBzdHJpbmcgb3IgTm9uZSwgdGhlIGJ1aWxkLWlkIG9mIHRoZSBtYXBwZWQgZmlsZSBpZgorICAg ICAgICAgICAgICAgIEdEQiBjb3VsZCBmaW5kIGl0IChOb25lIGlmIG5vdCkuCisgICsgaXNfbWFp bl9leGVjdXRhYmxlIC0tIEEgYm9vbGVhbiwgVHJ1ZSBpZiB0aGlzIG1hcHBpbmcgaXMgdGhlIG1h aW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlY3V0YWJsZS4KKyAgKyByZWdpb25zIC0t IEEgbGlzdCBjb250YWluaW5nIHRoZSByZWdpb25zIG9mIHRoaXMgZmlsZSB0aGF0IHdlcmUKKyAg ICAgICAgICAgICAgIG1hcHBlZCBpbnRvIHRoZSBwcm9jZXNzLgorCitUaGUgJ3JlZ2lvbnMnIGxp c3QgaXMgYSBsaXN0IG9mIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gb2JqZWN0cywKK2Vh Y2ggb2YgdGhlc2Ugb2JqZWN0cyBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorCisgICsg c3RhcnQgLS0gdGhlIHN0YXJ0IGFkZHJlc3Mgd2l0aGluIHRoZSBpbmZlcmlvci4KKyAgKyBlbmQg LS0gdGhlIGVuZCBhZGRyZXNzIHdpdGhpbiB0aGUgaW5mZXJpb3IuCisgICsgZmlsZV9vZmZzZXQg LS0gdGhlIG9mZnNldCB3aXRoaW4gdGhlIG1hcHBlZCBmaWxlIGZvciB0aGlzIG1hcHBpbmcuCisK K1RoZXJlIGFyZSBkb2NzIGFuZCB0ZXN0cy4KKworQnVnOiBodHRwczovL3NvdXJjZXdhcmUub3Jn L2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zMjg0NAorCitBcHByb3ZlZC1CeTogVG9tIFRyb21l eSA8dG9tQHRyb21leS5jb20+CisKKy0tLSA3ODYyNTU0YmNmNDoKKworZ2RiL3B5dGhvbjogaW50 cm9kdWNlIGdkYi5Db3JlZmlsZSBBUEkKKworVGhpcyBjb21taXQgc3RhcnRzIGFkZGluZyBzb21l IGNvcmUgZmlsZSByZWxhdGVkIGZlYXR1cmVzIHRvIHRoZQorUHl0aG9uIEFQSS4KKworSW4gdGhp cyBpbml0aWFsIGNvbW1pdCBJJ3ZlIHRyaWVkIHRvIGtlZXAgdGhlIGNoYW5nZXMgYXMgc21hbGwg YXMKK3Bvc3NpYmxlIGZvciBlYXN5IHJldmlldy4KKworVGhlcmUncyBhIG5ldyBQeXRob24gY2xh c3MgZ2RiLkNvcmVmaWxlLCB3aGljaCByZXByZXNlbnRzIGEgbG9hZGVkCitjb3JlIGZpbGUuICBU aGlzIEFQSSBkb2Vzbid0IGFsbG93IHRoZSB1c2VyIHRvIGNyZWF0ZSB0aGVpciBvd24KK2dkYi5D b3JlZmlsZSBvYmplY3RzLCBhIGNvcmUgZmlsZSBtdXN0IGJlIGxvYWRlZCB1c2luZyB0aGUgJ2Nv cmUtZmlsZScKK2NvbW1hbmQsIHRoZW4gYSBnZGIuQ29yZWZpbGUgb2JqZWN0IGNhbiBiZSBvYnRh aW5lZCBieSBxdWVyeWluZyB0aGUKK2luZmVyaW9yIGluIHdoaWNoIHRoZSBjb3JlIGZpbGUgd2Fz IGxvYWRlZC4KKworVGhlcmUncyBhIG5ldyBhdHRyaWJ1dGUgZ2RiLkluZmVyaW9yLmNvcmVmaWxl LCB0aGlzIGlzIE5vbmUgd2hlbiBubworY29yZSBmaWxlIGlzIGxvYWRlZCwgb3IgY29udGFpbnMg YSBnZGIuQ29yZWZpbGUgb2JqZWN0IGlmIGEgY29yZSBmaWxlCitoYXMgYmVlbiBsb2FkZWQuCisK K0N1cnJlbnRseSwgdGhlIGdkYi5Db3JlZmlsZSBvYmplY3QgaGFzIG9uZSBhdHRyaWJ1dGUsIGFu ZCBvbmUgbWV0aG9kLAordGhlc2UgYXJlOgorCisgIGdkYi5Db3JlZmlsZS5maWxlbmFtZSAtLSB0 aGUgZmlsZSBuYW1lIG9mIHRoZSBsb2FkZWQgY29yZSBmaWxlLgorCisgIGdkYi5Db3JlZmlsZS5p c192YWxpZCgpIC0tIGluZGljYXRlcyBpZiBhIGdkYi5Db3JlZmlsZSBvYmplY3QgaXMKKyAgdmFs aWQgb3Igbm90LiAgU2VlIG5vdGVzIGJlbG93LgorCitBIGdkYi5Db3JlZmlsZSBvYmplY3QgaXMg b25seSB2YWxpZCB3aGlsZSB0aGUgY29ycmVzcG9uZGluZyBjb3JlIGZpbGUKK2lzIGxvYWRlZCBp bnRvIGFuIGluZmVyaW9yLiAgVW5sb2FkaW5nIHRoZSBjb3JlIGZpbGUsIG9yIGxvYWRpbmcgYQor ZGlmZmVyZW50IG9uZSB3aWxsIGNhdXNlIGEgZ2RiLkNvcmVmaWxlIG9iamVjdCB0byBiZWNvbWUg aW52YWxpZC4gIEZvcgorZXhhbXBsZToKKworICAoZ2RiKSBjb3JlLWZpbGUgL3RtcC9jb3JlLjU0 MzEzCisgIC4uLiBzbmlwIC4uLgorICAoZ2RiKSBweXRob24gY29yZT1nZGIuc2VsZWN0ZWRfaW5m ZXJpb3IoKS5jb3JlZmlsZQorICAoZ2RiKSBweXRob24gcHJpbnQoY29yZSkKKyAgPGdkYi5Db3Jl ZmlsZSBpbmZlcmlvcj0xIGZpbGVuYW1lPScvdG1wL2NvcmUuNTQzMTMnPgorICAoZ2RiKSBweXRo b24gcHJpbnQoY29yZS5pc192YWxpZCgpKQorICBUcnVlCisgIChnZGIpIGNvcmUtZmlsZQorICBO byBjb3JlIGZpbGUgbm93LgorICAoZ2RiKSBweXRob24gcHJpbnQoY29yZSkKKyAgPGdkYi5Db3Jl ZmlsZSAoaW52YWxpZCk+CisgIChnZGIpIHB5dGhvbiBwcmludChjb3JlLmlzX3ZhbGlkKCkpCisg IEZhbHNlCisgIChnZGIpCisKK0luIG9yZGVyIHRvIHRyYWNrIGNoYW5nZXMgdG8gdGhlIGNvcmUg ZmlsZSwgdGhlcmUgaXMgYSBuZXcgb2JzZXJ2YWJsZQorJ2NvcmVfZmlsZV9jaGFuZ2VkJywgd2hp Y2ggYWNjb3VudHMgZm9yIHRoZSBjaGFuZ2VzIGluIGNvcmVsb3cuYywKK29ic2VydmFibGUsYywg YW5kIG9ic2VydmFibGUuaC4gIEN1cnJlbnRseSwgdGhpcyBvYnNlcnZhYmxlIGlzIG5vdAordmlz aWJsZSBhcyBhIFB5dGhvbiBldmVudC4KKworSSBjaG9zZSB0byBhY2Nlc3MgdGhlIGNvcmUgZmls ZSB2aWEgdGhlIGluZmVyaW9yIGV2ZW4gdGhvdWdoIHRoZSBjb3JlCitmaWxlIEJGRCBvYmplY3Qg aXMgYWN0dWFsbHkgc3RvcmVkIHdpdGhpbiB0aGUgcHJvZ3JhbV9zcGFjZS4gIEFzIHN1Y2gsCitp dCBtaWdodCBzZWVtIHRoYXQgdGhlIG5hdHVyYWwgY2hvaWNlIHdvdWxkIGJlIHRvIGFkZCB0aGUg YXR0cmlidXRlIGFzCitnZGIuUHJvZ3NwYWNlLmNvcmVmaWxlLgorCitGb3IgYmFja2dyb3VuZCBy ZWFkaW5nIG9uIG15IGNob2ljZSwgcGxlYXNlIHNlZToKKworICBodHRwczovL2luYm94LnNvdXJj ZXdhcmUub3JnL2dkYi1wYXRjaGVzLzU3N2YyYzQ3NzkzYWNiNTAxYzI2MTFjMGU2YzdlYTM3OWY3 NzQ4MzAuMTY2ODc4OTY1OC5naXQuYWJ1cmdlc3NAcmVkaGF0LmNvbQorCitUaGlzIHBhdGNoIHdh cyBuZXZlciBtZXJnZWQsIGl0IGlzIHN0aWxsIG9uIG15IGJhY2tsb2csIGJ1dCB0aGUKK29ic2Vy dmF0aW9uIGluIHRoYXQgd29yayBpcyB0aGF0IHNvbWUgdGFyZ2V0cyBhcmUgbm90IHJlYWxseQor c2hhcmVhYmxlLiAgRm9yIGV4YW1wbGUsIHRoZSBjb3JlX3RhcmdldCAoY29yZWxvdy5jKSBzdG9y ZXMKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBsb2FkZWQgY29yZSBmaWxlIHdpdGhpbiB0aGUgdGFy Z2V0IGluc3RhbmNlLiAgQXMKK3N1Y2gsIGVhY2ggdGFyZ2V0IGluc3RhbmNlIHJlcHJlc2VudHMg YSBzaW5nbGUgbG9hZGVkIGNvcmUgZmlsZS4KKworRXhjZXB0IHRoYXQgdGhlIEJGRCBwYXJ0IG9m IHRoZSBjb3JlIGZpbGUgaXMgc3RvcmVkIGluIHRoZQorcHJvZ3JhbV9zcGFjZSwgd2hpY2ggaXMg YSBsaXR0bGUgd2VpcmQuCisKK0R1cmluZyByZXZpZXcsIFRvbSBtYWRlIHRoZSBvYnNlcnZhdGlv biwgdGhhdCBtYXliZSB3ZSBzaG91bGQKK2ludmVzdGlnYXRlIG1vdmluZyB0aGUgY29yZSBmaWxl IEJGRCBpbnRvIHRoZSBjb3JlX3RhcmdldC4gIEknbQoraW5jbGluZWQgdG8gYWdyZWUgd2l0aCB0 aGlzIGFzIGEgZGlyZWN0aW9uIG9mIHRyYXZlbC4KKworQWxsIHRoaXMgbGVhdmVzIHVzIHdpdGgg dHdvIG9ic2VydmF0aW9uczoKKworICAxLiBDdXJyZW50bHksIGxvYWRpbmcgYSBjb3JlIGZpbGUg aW50byBhbiBpbmZlcmlvciwgdGhlbiB1c2luZworICAgICAnYWRkLWluZmVyaW9yJyB3aWxsIHRy eSB0byBzaGFyZSB0aGUgY29yZV90YXJnZXQgYmV0d2VlbgorICAgICBpbmZlcmlvcnMuICBUaGlz IGlzIGJyb2tlbiwgYW5kIGNhbiB0cmlnZ2VyIEdEQiBjcmFzaGVzLiAgVGhlCisgICAgIG9idmlv dXMgZml4LCB3aXRob3V0IHJld29ya2luZyBjb3JlX3RhcmdldCwgaXMganVzdCB0byBwcmV2ZW50 CisgICAgIHRoaXMgc2hhcmluZywgbWFraW5nIGNvcmVfdGFyZ2V0IHBlci1pbmZlcmlvci4KKwor ICAyLiBIYXZpbmcgdGhlIGNvcmUgZmlsZSBpbmZvcm1hdGlvbiBzcGxpdCBiZXR3ZWVuIHRoZSBj b3JlX3RhcmdldAorICAgICBpbnN0YW5jZSwgYW5kIHRoZSBCRkQgc3RvcmVkIGluIHRoZSBwcm9n cmFtX3NwYWNlIGlzIGEgbGl0dGxlCisgICAgIHdlaXJkLCBhbmQgaXMgcmVhbGx5IGp1c3QgaGlz dG9yaWNhbC4gIFBsYW5uaW5nIGZvciBhIGZ1dHVyZQorICAgICB3aGVyZSB0aGUgQkZEIGlzIGFs c28gc3RvcmVkIGluIHRoZSBjb3JlX3RhcmdldCBtaWdodCBiZSB3aXNlLgorCitTbywgaWYgd2Ug aW1hZ2luZSB0aGF0IHRoZSBCRkQgaXMgKG9uZSBkYXkpIG1vdmVkIGludG8gdGhlCitjb3JlX3Rh cmdldCwgYW5kIHRoYXQgdGhlIGNvcmVfdGFyZ2V0IHJlYWxseSBiZWNvbWVzIG5vbi1zaGFyZWFi bGUsCit0aGVuIGl0IGlzLCBJIHRoaW5rLCBjbGVhcmVyIHRoYXQgdGhlIGNvcmVmaWxlIGF0dHJp YnV0ZSBzaG91bGQgbGl2ZQorb24gdGhlIGdkYi5JbmZlcmlvciBvYmplY3QsIG5vdCB0aGUgZ2Ri LlByb2dzcGFjZSBvYmplY3QuCisKK1RoZXJlJ3MgdGVzdGluZyBmb3IgYWxsIHRoZSBmdW5jdGlv bmFsaXR5IGFkZGVkIGluIHRoaXMgY29tbWl0LgorCitCdWc6IGh0dHBzOi8vc291cmNld2FyZS5v cmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTMyODQ0CisKK1Jldmlld2VkLUJ5OiBFbGkgWmFy ZXRza2lpIDxlbGl6QGdudS5vcmc+CitBcHByb3ZlZC1CeTogVG9tIFRyb21leSA8dG9tQHRyb21l eS5jb20+CisKK2RpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUuaW4gYi9nZGIvTWFrZWZpbGUuaW4K Ky0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL01ha2VmaWxlLmluCitAQCAtMzk5LDYg KzM5OSw3IEBAIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKKyAJcHl0aG9uL3B5LWNvbG9yLmMgXAor IAlweXRob24vcHktY29ubmVjdGlvbi5jIFwKKyAJcHl0aG9uL3B5LWNvbnRpbnVlZXZlbnQuYyBc CisrCXB5dGhvbi9weS1jb3JlZmlsZS5jIFwKKyAJcHl0aG9uL3B5LWRhcC5jIFwKKyAJcHl0aG9u L3B5LWRpc2FzbS5jIFwKKyAJcHl0aG9uL3B5LWV2ZW50LmMgXAorZGlmZiAtLWdpdCBhL2dkYi9O RVdTIGIvZ2RiL05FV1MKKy0tLSBhL2dkYi9ORVdTCisrKysgYi9nZGIvTkVXUworQEAgLTEzLDYg KzEzLDggQEAKKyAKKyAgICoqIEdEQiBub3cgc3VwcG9ydHMgdGhlICJjb21wbGV0aW9ucyIgcmVx dWVzdC4KKyAKKysgICoqIFRoZSBhdHRhY2ggcmVxdWVzdCBub3cgYWNjZXB0cyB0aGUgY29yZUZp bGUgcGFyYW1ldGVyLgorKworICogInNldCBzdHlsZSIgY29tbWFuZHMgbm93IHN1cHBvcnRzIG51 bWVyaWMgZm9ybWF0IGZvciBiYXNpYyBjb2xvcnMKKyAgIGZyb20gMCB0byAyNTUgYW5kICNSUkdH QkIgZm9ybWF0IGZvciBUcnVlQ29sb3IuCisgCitAQCAtMTc2LDYgKzE3OCwzMiBAQCBpbmZvIHRo cmVhZHMgWy1naWRdIFstc3RvcHBlZF0gWy1ydW5uaW5nXSBbSURdLi4uCisgICAgICB1bmF2YWls YWJpbGl0eSBsaWtlIGdkYi5WYWx1ZS5pc19vcHRpbWl6ZWRfb3V0IGNoZWNrcyBmb3IKKyAgICAg IG9wdGltaXplZCBvdXQgdmFsdWVzLgorIAorKyAgKiogTmV3IGdkYi5Db3JlZmlsZSBjbGFzcyB3 aGljaCByZXByZXNlbnRzIGEgbG9hZGVkIGNvcmUgZmlsZS4gIFRoaXMKKysgICAgIGhhcyBhbiBh dHRyaWJ1dGUgQ29yZWZpbGUuZmlsZW5hbWUsIHRoZSBmaWxlIG5hbWUgb2YgdGhlIGxvYWRlZAor KyAgICAgY29yZSBmaWxlLCBhbmQgYSBtZXRob2QgQ29yZWZpbGUuaXNfdmFsaWQoKSwgd2hpY2gg cmV0dXJucyBGYWxzZQorKyAgICAgd2hlbiBhIENvcmVmaWxlIG9iamVjdCBiZWNvbWVzIGludmFs aWQgKGUuZy4gd2hlbiB0aGUgY29yZSBmaWxlCisrICAgICBpcyB1bmxvYWRlZCkuICBUaGVyZSBp cyBhbHNvIENvcmVmaWxlLm1hcHBlZF9maWxlcygpIHdoaWNoCisrICAgICByZXR1cm5zIGEgbGlz dCBvZiBDb3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0cywgcmVwcmVzZW50aW5nIGZpbGVzCisrICAg ICB0aGF0IHdlcmUgbWFwcGVkIGludG8gdGhlIGNvcmUgZmlsZSB3aGVuIGl0IHdhcyBjcmVhdGVk LgorKworKyAgKiogTmV3IGdkYi5Db3JlZmlsZU1hcHBlZEZpbGUgdHlwZSByZXByZXNlbnRpbmcg YSBmaWxlIHRoYXQgd2FzCisrICAgICBtYXBwZWQgd2hlbiB0aGUgY29yZSBmaWxlIHdhcyBjcmVh dGVkLiAgSGFzIHJlYWQtb25seSBhdHRyaWJ1dGVzCisrICAgICBmaWxlbmFtZSAoc3RyaW5nKSwg YnVpbGRfaWQgKHN0cmluZyksIGlzX21haW5fZXhlY3V0YWJsZQorKyAgICAgKGJvb2xlYW4pLCBh bmQgcmVnaW9ucyAobGlzdCBvZiBDb3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gb2JqZWN0cykuCisr CisrICAqKiBOZXcgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiB0eXBlLCB3aGljaCByZXBy ZXNlbnRzIGEgbWFwcGVkCisrICAgICByZWdpb24gb2YgYSBmaWxlIChzZWUgZ2RiLkNvcmVmaWxl TWFwcGVkRmlsZSBhYm92ZSkuICBIYXMKKysgICAgIHJlYWQtb25seSBhdHRyaWJ1dGVzIHN0YXJ0 LCBlbmQsIGFuZCBmaWxlX29mZnNldC4KKysKKysgICoqIE5ldyBJbmZlcmlvci5jb3JlZmlsZSBh dHRyaWJ1dGUuICBUaGlzIHJlYWQgb25seSBhdHRyaWJ1dGUKKysgICAgIGNvbnRhaW5zIHRoZSBn ZGIuQ29yZWZpbGUgb2JqZWN0IGlmIGEgY29yZSBmaWxlIGlzIGxvYWRlZCBpbnRvCisrICAgICB0 aGUgaW5mZXJpb3IsIG90aGVyd2lzZSwgdGhpcyBjb250YWlucyBOb25lLgorKworKyAgKiogTmV3 IGV2ZW50IHJlZ2lzdHJ5IGdkYi5ldmVudHMuY29yZWZpbGVfY2hhbmdlZCwgd2hpY2ggZW1pdHMg YQorKyAgICAgQ29yZWZpbGVDaGFuZ2VkRXZlbnQgd2hlbmV2ZXIgdGhlIGNvcmUgZmlsZSBhc3Nv Y2lhdGVkIHdpdGggYW4KKysgICAgIGluZmVyaW9yIGNoYW5nZXMuICBUaGUgZXZlbnQgaGFzIGFu ICdpbmZlcmlvcicgYXR0cmlidXRlIHdoaWNoIGlzCisrICAgICB0aGUgZ2RiLkluZmVyaW9yIGlu IHdoaWNoIHRoZSBjb3JlIGZpbGUgaGFzIGNoYW5nZWQuCisrCisgKiBHdWlsZSBBUEkKKyAKKyAg ICoqIE5ldyB0eXBlIDxnZGI6Y29sb3I+IGZvciBkZWFsaW5nIHdpdGggY29sb3JzLgorZGlmZiAt LWdpdCBhL2dkYi9jb3JlbG93LmMgYi9nZGIvY29yZWxvdy5jCistLS0gYS9nZGIvY29yZWxvdy5j CisrKysgYi9nZGIvY29yZWxvdy5jCitAQCAtNTMsNiArNTMsNyBAQAorICNpbmNsdWRlICJ4bWwt dGRlc2MuaCIKKyAjaW5jbHVkZSAibWVtdGFnLmgiCisgI2luY2x1ZGUgImNsaS9jbGktc3R5bGUu aCIKKysjaW5jbHVkZSAib2JzZXJ2YWJsZS5oIgorIAorICNpZm5kZWYgT19MQVJHRUZJTEUKKyAj ZGVmaW5lIE9fTEFSR0VGSUxFIDAKK0BAIC0zNjUsMTA4ICszNjYsMjcgQEAgY29yZV90YXJnZXQ6 OmNvcmVfdGFyZ2V0ICgpCisgdm9pZAorIGNvcmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdz ICgpCisgeworLSAgLyogVHlwZSBob2xkaW5nIGluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGZp bGUgbWFwcGVkIGludG8gdGhlIGluZmVyaW9yCistICAgICBhdCB0aGUgcG9pbnQgd2hlbiB0aGUg Y29yZSBmaWxlIHdhcyBjcmVhdGVkLiAgQXNzb2NpYXRlcyBhIGJ1aWxkLWlkCistICAgICB3aXRo IHRoZSBsaXN0IG9mIHJlZ2lvbnMgdGhlIGZpbGUgaXMgbWFwcGVkIGludG8uICAqLworLSAgc3Ry dWN0IG1hcHBlZF9maWxlCistICB7CistICAgIC8qIFR5cGUgZm9yIGEgcmVnaW9uIG9mIGEgZmls ZSB0aGF0IHdhcyBtYXBwZWQgaW50byB0aGUgaW5mZXJpb3Igd2hlbgorLSAgICAgICB0aGUgY29y ZSBmaWxlIHdhcyBnZW5lcmF0ZWQuICAqLworLSAgICBzdHJ1Y3QgcmVnaW9uCistICAgIHsKKy0g ICAgICAvKiBDb25zdHJ1Y3Rvci4gICBTZWUgbWVtYmVyIHZhcmlhYmxlcyBmb3IgYXJndW1lbnQg ZGVzY3JpcHRpb25zLiAgKi8KKy0gICAgICByZWdpb24gKENPUkVfQUREUiBzdGFydF8sIENPUkVf QUREUiBlbmRfLCBDT1JFX0FERFIgZmlsZV9vZnNfKQorLQk6IHN0YXJ0IChzdGFydF8pLAorLQkg IGVuZCAoZW5kXyksCistCSAgZmlsZV9vZnMgKGZpbGVfb2ZzXykKKy0gICAgICB7IC8qIE5vdGhp bmcuICAqLyB9CistCistICAgICAgLyogVGhlIGluZmVyaW9yIGFkZHJlc3MgZm9yIHRoZSBzdGFy dCBvZiB0aGUgbWFwcGVkIHJlZ2lvbi4gICovCistICAgICAgQ09SRV9BRERSIHN0YXJ0OworLQor LSAgICAgIC8qIFRoZSBpbmZlcmlvciBhZGRyZXNzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBtYXBw ZWQgcmVnaW9uLiAgKi8KKy0gICAgICBDT1JFX0FERFIgZW5kOworLQorLSAgICAgIC8qIFRoZSBv ZmZzZXQgd2l0aGluIHRoZSBtYXBwZWQgZmlsZSBmb3IgdGhpcyBjb250ZW50LiAgKi8KKy0gICAg ICBDT1JFX0FERFIgZmlsZV9vZnM7CistICAgIH07CistCistICAgIC8qIElmIG5vdCBudWxscHRy LCB0aGVuIHRoaXMgaXMgdGhlIGJ1aWxkLWlkIGFzc29jaWF0ZWQgd2l0aCB0aGlzCistICAgICAg IGZpbGUuICAqLworLSAgICBjb25zdCBiZmRfYnVpbGRfaWQgKmJ1aWxkX2lkID0gbnVsbHB0cjsK Ky0KKy0gICAgLyogSWYgdHJ1ZSB0aGVuIHdlIGhhdmUgc2VlbiBtdWx0aXBsZSBkaWZmZXJlbnQg YnVpbGQtaWRzIGFzc29jaWF0ZWQKKy0gICAgICAgd2l0aCB0aGUgc2FtZSBmaWxlbmFtZS4gIFRo ZSBidWlsZF9pZCBmaWVsZCB3aWxsIGhhdmUgYmVlbiBzZXQgYmFjaworLSAgICAgICB0byBudWxs cHRyLCBhbmQgd2Ugc2hvdWxkIG5vdCBzZXQgYnVpbGRfaWQgaW4gZnV0dXJlLiAgKi8KKy0gICAg Ym9vbCBpZ25vcmVfYnVpbGRfaWRfcCA9IGZhbHNlOworLQorLSAgICAvKiBBbGwgdGhlIG1hcHBl ZCByZWdpb25zIG9mIHRoaXMgZmlsZS4gICovCistICAgIHN0ZDo6dmVjdG9yPHJlZ2lvbj4gcmVn aW9uczsKKy0gIH07CistCisgICBnZGI6OnVub3JkZXJlZF9tYXA8c3RkOjpzdHJpbmcsIHN0cnVj dCBiZmQgKj4gYmZkX21hcDsKKyAgIGdkYjo6dW5vcmRlcmVkX3NldDxzdGQ6OnN0cmluZz4gdW5h dmFpbGFibGVfcGF0aHM7CisgCisgICAvKiBBbGwgZmlsZXMgbWFwcGVkIGludG8gdGhlIGNvcmUg ZmlsZS4gIFRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lLiAgKi8KKy0gIGdkYjo6dW5vcmRlcmVkX21h cDxzdGQ6OnN0cmluZywgbWFwcGVkX2ZpbGU+IG1hcHBlZF9maWxlczsKKy0KKy0gIC8qIFNlZSBs aW51eF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncygpIGluIGxpbnV4LXRkZXAuYyBmb3IgYW4gZXhh bXBsZQorLSAgICAgcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgbWV0aG9kLiAgKi8KKy0gIGdkYmFy Y2hfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgKG1fY29yZV9nZGJhcmNoLAorLQkJCQkgICBjdXJy ZW50X3Byb2dyYW1fc3BhY2UtPmNvcmVfYmZkICgpLAorLQorLSAgICAvKiBBZnRlciBkZXRlcm1p bmluZyB0aGUgbnVtYmVyIG9mIG1hcHBpbmdzLCByZWFkX2NvcmVfZmlsZV9tYXBwaW5ncworLSAg ICAgICB3aWxsIGludm9rZSB0aGlzIGxhbWJkYS4gICovCistICAgIFsmXSAoVUxPTkdFU1QpCist ICAgICAgeworLSAgICAgIH0sCistCistICAgIC8qIHJlYWRfY29yZV9maWxlX21hcHBpbmdzIHdp bGwgaW52b2tlIHRoaXMgbGFtYmRhIGZvciBlYWNoIG1hcHBpbmcKKy0gICAgICAgdGhhdCBpdCBm aW5kcy4gICovCistICAgIFsmXSAoaW50IG51bSwgVUxPTkdFU1Qgc3RhcnQsIFVMT05HRVNUIGVu ZCwgVUxPTkdFU1QgZmlsZV9vZnMsCistCSBjb25zdCBjaGFyICpmaWxlbmFtZSwgY29uc3QgYmZk X2J1aWxkX2lkICpidWlsZF9pZCkKKy0gICAgICB7CistCS8qIEFyY2hpdGVjdHVyZS1zcGVjaWZp YyByZWFkX2NvcmVfbWFwcGluZyBtZXRob2RzIGFyZSBleHBlY3RlZCB0bworLQkgICB3ZWVkIG91 dCBub24tZmlsZS1iYWNrZWQgbWFwcGluZ3MuICAqLworLQlnZGJfYXNzZXJ0IChmaWxlbmFtZSAh PSBudWxscHRyKTsKKysgIHN0ZDo6dmVjdG9yPGNvcmVfbWFwcGVkX2ZpbGU+IG1hcHBlZF9maWxl cworKyAgICA9IGdkYl9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyAobV9jb3JlX2dkYmFyY2gsCisr CQkJCSAgIGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+Y29yZV9iZmQgKCkpOworIAorLQkvKiBBZGQg dGhpcyBtYXBwZWQgcmVnaW9uIHRvIHRoZSBkYXRhIGZvciBGSUxFTkFNRS4gICovCistCW1hcHBl ZF9maWxlICZmaWxlX2RhdGEgPSBtYXBwZWRfZmlsZXNbZmlsZW5hbWVdOworLQlmaWxlX2RhdGEu cmVnaW9ucy5lbXBsYWNlX2JhY2sgKHN0YXJ0LCBlbmQsIGZpbGVfb2ZzKTsKKy0JaWYgKGJ1aWxk X2lkICE9IG51bGxwdHIgJiYgIWZpbGVfZGF0YS5pZ25vcmVfYnVpbGRfaWRfcCkKKy0JICB7Cist CSAgICBpZiAoZmlsZV9kYXRhLmJ1aWxkX2lkID09IG51bGxwdHIpCistCSAgICAgIGZpbGVfZGF0 YS5idWlsZF9pZCA9IGJ1aWxkX2lkOworLQkgICAgZWxzZSBpZiAoIWJ1aWxkX2lkX2VxdWFsIChi dWlsZF9pZCwgZmlsZV9kYXRhLmJ1aWxkX2lkKSkKKy0JICAgICAgeworLQkJd2FybmluZyAoXygi TXVsdGlwbGUgYnVpbGQtaWRzIGZvdW5kIGZvciAlcHMiKSwKKy0JCQkgc3R5bGVkX3N0cmluZyAo ZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLCBmaWxlbmFtZSkpOworLQkJZmlsZV9kYXRhLmJ1aWxk X2lkID0gbnVsbHB0cjsKKy0JCWZpbGVfZGF0YS5pZ25vcmVfYnVpbGRfaWRfcCA9IHRydWU7Cist CSAgICAgIH0KKy0JICB9CistICAgICAgfSk7CistCistICAvKiBHZXQgdGhlIGJ1aWxkLWlkIG9m IHRoZSBjb3JlIGZpbGUuICAqLworLSAgY29uc3QgYmZkX2J1aWxkX2lkICpjb3JlX2J1aWxkX2lk CistICAgID0gYnVpbGRfaWRfYmZkX2dldCAoY3VycmVudF9wcm9ncmFtX3NwYWNlLT5jb3JlX2Jm ZCAoKSk7CistCistICBmb3IgKGNvbnN0IGF1dG8gJltmaWxlbmFtZSwgZmlsZV9kYXRhXSA6IG1h cHBlZF9maWxlcykKKysgIGZvciAoY29uc3QgY29yZV9tYXBwZWRfZmlsZSAmZmlsZV9kYXRhIDog bWFwcGVkX2ZpbGVzKQorICAgICB7CistICAgICAgLyogSWYgdGhpcyBtYXBwZWQgZmlsZSBoYXMg dGhlIHNhbWUgYnVpbGQtaWQgYXMgd2FzIGRpc2NvdmVyZWQgZm9yCistCSB0aGUgY29yZS1maWxl IGl0c2VsZiwgdGhlbiB3ZSBhc3N1bWUgdGhpcyBpcyB0aGUgbWFpbgorLQkgZXhlY3V0YWJsZS4g IFJlY29yZCB0aGUgZmlsZW5hbWUgYXMgd2UgY2FuIHVzZSB0aGlzIGxhdGVyLiAgKi8KKy0gICAg ICBpZiAoZmlsZV9kYXRhLmJ1aWxkX2lkICE9IG51bGxwdHIKKy0JICAmJiBtX2V4cGVjdGVkX2V4 ZWNfZmlsZW5hbWUuZW1wdHkgKCkKKy0JICAmJiBidWlsZF9pZF9lcXVhbCAoZmlsZV9kYXRhLmJ1 aWxkX2lkLCBjb3JlX2J1aWxkX2lkKSkKKy0JbV9leHBlY3RlZF9leGVjX2ZpbGVuYW1lID0gZmls ZW5hbWU7CisrICAgICAgLyogSWYgdGhpcyBtYXBwZWQgZmlsZSBpcyBtYXJrZWQgYXMgdGhlIG1h aW4gZXhlY3V0YWJsZSB0aGVuIHJlY29yZAorKwkgdGhlIGZpbGVuYW1lIGFzIHdlIGNhbiB1c2Ug dGhpcyBsYXRlci4gICovCisrICAgICAgaWYgKGZpbGVfZGF0YS5pc19tYWluX2V4ZWMgJiYgbV9l eHBlY3RlZF9leGVjX2ZpbGVuYW1lLmVtcHR5ICgpKQorKwltX2V4cGVjdGVkX2V4ZWNfZmlsZW5h bWUgPSBmaWxlX2RhdGEuZmlsZW5hbWU7CisgCisgICAgICAgLyogVXNlIGV4ZWNfZmlsZV9maW5k KCkgdG8gZG8gc3lzcm9vdCBleHBhbnNpb24uICBJdCdsbAorIAkgYWxzbyBzdHJpcCB0aGUgcG90 ZW50aWFsIHN5c3Jvb3QgInRhcmdldDoiIHByZWZpeC4gIElmCisgCSB0aGVyZSBpcyBubyBzeXNy b290LCBhbiBlcXVpdmFsZW50IChwb3NzaWJseSBtb3JlCisgCSBjYW5vbmljYWwpIHBhdGhuYW1l IHdpbGwgYmUgcHJvdmlkZWQuICAqLworICAgICAgIGdkYjo6dW5pcXVlX3htYWxsb2NfcHRyPGNo YXI+IGV4cGFuZGVkX2ZuYW1lCistCT0gZXhlY19maWxlX2ZpbmQgKGZpbGVuYW1lLmNfc3RyICgp LCBudWxscHRyKTsKKysJPSBleGVjX2ZpbGVfZmluZCAoZmlsZV9kYXRhLmZpbGVuYW1lLmNfc3Ry ICgpLCBudWxscHRyKTsKKyAKKyAgICAgICBib29sIGJ1aWxkX2lkX21pc21hdGNoID0gZmFsc2U7 CisgICAgICAgaWYgKGV4cGFuZGVkX2ZuYW1lICE9IG51bGxwdHIgJiYgZmlsZV9kYXRhLmJ1aWxk X2lkICE9IG51bGxwdHIpCitAQCAtNTA4LDcgKzQyOCw3IEBAIGNvcmVfdGFyZ2V0OjpidWlsZF9m aWxlX21hcHBpbmdzICgpCisgCXsKKyAJICBhYmZkID0gZmluZF9vYmpmaWxlX2J5X2J1aWxkX2lk IChjdXJyZW50X3Byb2dyYW1fc3BhY2UsCisgCQkJCQkgICBmaWxlX2RhdGEuYnVpbGRfaWQsCist CQkJCQkgICBmaWxlbmFtZS5jX3N0ciAoKSk7CisrCQkJCQkgICBmaWxlX2RhdGEuZmlsZW5hbWUu Y19zdHIgKCkpOworIAorIAkgIGlmIChhYmZkICE9IG51bGxwdHIpCisgCSAgICB7CitAQCAtNTI2 LDcgKzQ0Niw3IEBAIGNvcmVfdGFyZ2V0OjpidWlsZF9maWxlX21hcHBpbmdzICgpCisgCX0KKyAK KyAgICAgICBzdGQ6OnZlY3RvcjxtZW1fcmFuZ2U+IHJhbmdlczsKKy0gICAgICBmb3IgKGNvbnN0 IG1hcHBlZF9maWxlOjpyZWdpb24gJnJlZ2lvbiA6IGZpbGVfZGF0YS5yZWdpb25zKQorKyAgICAg IGZvciAoY29uc3QgY29yZV9tYXBwZWRfZmlsZTo6cmVnaW9uICZyZWdpb24gOiBmaWxlX2RhdGEu cmVnaW9ucykKKyAJcmFuZ2VzLmVtcGxhY2VfYmFjayAocmVnaW9uLnN0YXJ0LCByZWdpb24uZW5k IC0gcmVnaW9uLnN0YXJ0KTsKKyAKKyAgICAgICBpZiAoZXhwYW5kZWRfZm5hbWUgPT0gbnVsbHB0 cgorQEAgLTU0NCw3ICs0NjQsNyBAQCBjb3JlX3RhcmdldDo6YnVpbGRfZmlsZV9tYXBwaW5ncyAo KQorIAkgIGJvb2wgY29udGVudF9pc19pbl9jb3JlX2ZpbGVfcCA9IHRydWU7CisgCisgCSAgLyog UmVjb3JkIGFsbCByZWdpb25zIGZvciB0aGlzIGZpbGUgYXMgdW5hdmFpbGFibGUuICAqLworLQkg IGZvciAoY29uc3QgbWFwcGVkX2ZpbGU6OnJlZ2lvbiAmcmVnaW9uIDogZmlsZV9kYXRhLnJlZ2lv bnMpCisrCSAgZm9yIChjb25zdCBjb3JlX21hcHBlZF9maWxlOjpyZWdpb24gJnJlZ2lvbiA6IGZp bGVfZGF0YS5yZWdpb25zKQorIAkgICAgeworIAkgICAgICAvKiBDaGVjayB0byBzZWUgaWYgdGhl IHJlZ2lvbiBpcyBhdmFpbGFibGUgd2l0aGluIHRoZSBjb3JlCisgCQkgZmlsZS4gICovCitAQCAt NTc2LDMzICs0OTYsMzMgQEAgY29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFwcGluZ3MgKCkKKyAJ ICBpZiAoYnVpbGRfaWRfbWlzbWF0Y2gpCisgCSAgICB7CisgCSAgICAgIGlmIChleHBhbmRlZF9m bmFtZSA9PSBudWxscHRyCistCQkgIHx8IGZpbGVuYW1lID09IGV4cGFuZGVkX2ZuYW1lLmdldCAo KSkKKysJCSAgfHwgZmlsZV9kYXRhLmZpbGVuYW1lID09IGV4cGFuZGVkX2ZuYW1lLmdldCAoKSkK KyAJCXdhcm5pbmcgKF8oIkZpbGUgJXBzIGRvZXNuJ3QgbWF0Y2ggYnVpbGQtaWQgZnJvbSBjb3Jl LWZpbGUgIgorIAkJCSAgICJkdXJpbmcgZmlsZS1iYWNrZWQgbWFwcGluZyBwcm9jZXNzaW5nIiks CisgCQkJIHN0eWxlZF9zdHJpbmcgKGZpbGVfbmFtZV9zdHlsZS5zdHlsZSAoKSwKKy0JCQkJCWZp bGVuYW1lLmNfc3RyICgpKSk7CisrCQkJCQlmaWxlX2RhdGEuZmlsZW5hbWUuY19zdHIgKCkpKTsK KyAJICAgICAgZWxzZQorIAkJd2FybmluZyAoXygiRmlsZSAlcHMgd2hpY2ggd2FzIGV4cGFuZGVk IHRvICVwcywgZG9lc24ndCBtYXRjaCAiCisgCQkJICAgImJ1aWxkLWlkIGZyb20gY29yZS1maWxl IGR1cmluZyBmaWxlLWJhY2tlZCAiCisgCQkJICAgIm1hcHBpbmcgcHJvY2Vzc2luZyIpLAorIAkJ CSBzdHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksCistCQkJCQlmaWxlbmFt ZS5jX3N0ciAoKSksCisrCQkJCQlmaWxlX2RhdGEuZmlsZW5hbWUuY19zdHIgKCkpLAorIAkJCSBz dHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksCisgCQkJCQlleHBhbmRlZF9m bmFtZS5nZXQgKCkpKTsKKyAJICAgIH0KKyAJICBlbHNlIGlmICghY29udGVudF9pc19pbl9jb3Jl X2ZpbGVfcCkKKyAJICAgIHsKKyAJICAgICAgaWYgKGV4cGFuZGVkX2ZuYW1lID09IG51bGxwdHIK Ky0JCSAgfHwgZmlsZW5hbWUgPT0gZXhwYW5kZWRfZm5hbWUuZ2V0ICgpKQorKwkJICB8fCBmaWxl X2RhdGEuZmlsZW5hbWUgPT0gZXhwYW5kZWRfZm5hbWUuZ2V0ICgpKQorIAkJd2FybmluZyAoXygi Q2FuJ3Qgb3BlbiBmaWxlICVwcyBkdXJpbmcgZmlsZS1iYWNrZWQgbWFwcGluZyAiCisgCQkJICAg Im5vdGUgcHJvY2Vzc2luZyIpLAorIAkJCSBzdHlsZWRfc3RyaW5nIChmaWxlX25hbWVfc3R5bGUu c3R5bGUgKCksCistCQkJCQlmaWxlbmFtZS5jX3N0ciAoKSkpOworKwkJCQkJZmlsZV9kYXRhLmZp bGVuYW1lLmNfc3RyICgpKSk7CisgCSAgICAgIGVsc2UKKyAJCXdhcm5pbmcgKF8oIkNhbid0IG9w ZW4gZmlsZSAlcHMgd2hpY2ggd2FzIGV4cGFuZGVkIHRvICVwcyAiCisgCQkJICAgImR1cmluZyBm aWxlLWJhY2tlZCBtYXBwaW5nIG5vdGUgcHJvY2Vzc2luZyIpLAorIAkJCSBzdHlsZWRfc3RyaW5n IChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksCistCQkJCQlmaWxlbmFtZS5jX3N0ciAoKSksCisr CQkJCQlmaWxlX2RhdGEuZmlsZW5hbWUuY19zdHIgKCkpLAorIAkJCSBzdHlsZWRfc3RyaW5nIChm aWxlX25hbWVfc3R5bGUuc3R5bGUgKCksCisgCQkJCQlleHBhbmRlZF9mbmFtZS5nZXQgKCkpKTsK KyAJICAgIH0KK0BAIC02MTYsNyArNTM2LDcgQEAgY29yZV90YXJnZXQ6OmJ1aWxkX2ZpbGVfbWFw cGluZ3MgKCkKKyAJCQkJICAgIGFiZmQuZ2V0ICgpKTsKKyAKKyAJICAvKiBDcmVhdGUgc2VjdGlv bnMgZm9yIGVhY2ggbWFwcGVkIHJlZ2lvbi4gICovCistCSAgZm9yIChjb25zdCBtYXBwZWRfZmls ZTo6cmVnaW9uICZyZWdpb24gOiBmaWxlX2RhdGEucmVnaW9ucykKKysJICBmb3IgKGNvbnN0IGNv cmVfbWFwcGVkX2ZpbGU6OnJlZ2lvbiAmcmVnaW9uIDogZmlsZV9kYXRhLnJlZ2lvbnMpCisgCSAg ICB7CisgCSAgICAgIC8qIE1ha2UgbmV3IEJGRCBzZWN0aW9uLiAgQWxsIHNlY3Rpb25zIGhhdmUg dGhlIHNhbWUgbmFtZSwKKyAJCSB3aGljaCBpcyBwZXJtaXR0ZWQgYnkgYmZkX21ha2Vfc2VjdGlv bl9hbnl3YXkoKS4gICovCitAQCAtNjUyLDcgKzU3Miw3IEBAIGNvcmVfdGFyZ2V0OjpidWlsZF9m aWxlX21hcHBpbmdzICgpCisgCSAgICAgIHNvbmFtZSA9IGdkYl9iZmRfcmVhZF9lbGZfc29uYW1l IChhY3R1YWxfZmlsZW5hbWUpOworIAkgICAgfQorIAorLQkgIG1fbWFwcGVkX2ZpbGVfaW5mby5h ZGQgKHNvbmFtZS5nZXQgKCksIGZpbGVuYW1lLmNfc3RyICgpLAorKwkgIG1fbWFwcGVkX2ZpbGVf aW5mby5hZGQgKHNvbmFtZS5nZXQgKCksIGZpbGVfZGF0YS5maWxlbmFtZS5jX3N0ciAoKSwKKyAJ CQkJICBhY3R1YWxfZmlsZW5hbWUsIHN0ZDo6bW92ZSAocmFuZ2VzKSwKKyAJCQkJICBmaWxlX2Rh dGEuYnVpbGRfaWQpOworIAl9CitAQCAtNjc4LDYgKzU5OCw5IEBAIGNvcmVfdGFyZ2V0OjpjbGVh cl9jb3JlICgpCisgICAgICAgY2xlYXJfc29saWIgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSk7Cisg CisgICAgICAgY3VycmVudF9wcm9ncmFtX3NwYWNlLT5jYmZkLnJlc2V0IChudWxscHRyKTsKKysK KysgICAgICAvKiBOb3RpZnkgdGhhdCB0aGUgY29yZSBmaWxlIGhhcyBjaGFuZ2VkLiAgKi8KKysg ICAgICBnZGI6Om9ic2VydmVyczo6Y29yZV9maWxlX2NoYW5nZWQubm90aWZ5IChjdXJyZW50X2lu ZmVyaW9yICgpKTsKKyAgICAgfQorIH0KKyAKK0BAIC0xMjc4LDYgKzEyMDEsOSBAQCBjb3JlX3Rh cmdldF9vcGVuIChjb25zdCBjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAJICBleGNlcHRpb25f cHJpbnQgKGdkYl9zdGRlcnIsIGV4Y2VwdCk7CisgCX0KKyAgICAgfQorKworKyAgLyogTm90aWZ5 IHRoYXQgdGhlIGNvcmUgZmlsZSBoYXMgY2hhbmdlZC4gICovCisrICBnZGI6Om9ic2VydmVyczo6 Y29yZV9maWxlX2NoYW5nZWQubm90aWZ5IChjdXJyZW50X2luZmVyaW9yICgpKTsKKyB9CisgCisg dm9pZAorQEAgLTIxNTYsNiArMjA4MiwxMDMgQEAgbWFwcGVkX2ZpbGVfaW5mbzo6bG9va3VwIChj b25zdCBjaGFyICpmaWxlbmFtZSwKKyAKKyAvKiBTZWUgZ2RiY29yZS5oLiAgKi8KKyAKKytzdGQ6 OnZlY3Rvcjxjb3JlX21hcHBlZF9maWxlPgorK2dkYl9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBiZmQgKmNiZmQpCisreworKyAgc3RkOjp2 ZWN0b3I8Y29yZV9tYXBwZWRfZmlsZT4gcmVzdWx0czsKKysKKysgIC8qIEEgbWFwIGVudHJ5IHVz ZWQgd2hpbGUgYnVpbGRpbmcgUkVTVUxUUy4gICovCisrICBzdHJ1Y3QgbWFwX2VudHJ5CisrICB7 CisrICAgIGV4cGxpY2l0IG1hcF9lbnRyeSAoY29yZV9tYXBwZWRfZmlsZSAqcHRyKQorKyAgICAg IDogZmlsZV9kYXRhIChwdHIpCisrICAgIHsgLyogTm90aGluZy4gICovIH0KKysKKysgICAgLyog UG9pbnRzIHRvIGFuIGVudHJ5IGluIFJFU1VMVFMsIHRoaXMgYWxsb3dzIGVudHJpZXMgdG8gYmUg cXVpY2tseQorKyAgICAgICBsb29rZWQgdXAgYW5kIHVwZGF0ZWQgYXMgbmV3IG1hcHBpbmdzIGFy ZSByZWFkLiAgKi8KKysgICAgY29yZV9tYXBwZWRfZmlsZSAqZmlsZV9kYXRhID0gbnVsbHB0cjsK KysKKysgICAgLyogSWYgdHJ1ZSB0aGVuIHdlIGhhdmUgc2VlbiBtdWx0aXBsZSBkaWZmZXJlbnQg YnVpbGQtaWRzIGFzc29jaWF0ZWQKKysgICAgICAgd2l0aCB0aGUgZmlsZW5hbWUgb2YgRklMRV9E QVRBLiAgVGhlIEZJTEVfREFUQS0+YnVpbGRfaWQgZmllbGQgd2lsbAorKyAgICAgICBoYXZlIGJl ZW4gc2V0IHRvIG51bGxwdHIsIGFuZCB3ZSBzaG91bGQgbm90IHNldCBGSUxFX0RBVEEtPmJ1aWxk X2lkCisrICAgICAgIGluIGZ1dHVyZS4gICovCisrICAgIGJvb2wgaWdub3JlX2J1aWxkX2lkX3Ag PSBmYWxzZTsKKysgIH07CisrCisrICAvKiBBbGwgZmlsZXMgbWFwcGVkIGludG8gdGhlIGNvcmUg ZmlsZS4gIFRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lLiAgKi8KKysgIGdkYjo6dW5vcmRlcmVkX21h cDxzdGQ6OnN0cmluZywgbWFwX2VudHJ5PiBtYXBwZWRfZmlsZXM7CisrCisrICAvKiBHZXQgdGhl IGJ1aWxkLWlkIG9mIHRoZSBjb3JlIGZpbGUuICBBdCBsZWFzdCBvbiBMaW51eCwgdGhpcyB3aWxs IGJlCisrICAgICB0aGUgYnVpbGQtaWQgZm9yIHRoZSBtYWluIGV4ZWN1dGFibGUuICBJZiBvdGhl ciB0YXJnZXRzIGFkZCB0aGUKKysgICAgIGdkYmFyY2hfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3Mg bWV0aG9kLCB0aGVuIGl0IG1pZ2h0IHR1cm4gb3V0IHRoYXQKKysgICAgIHRoaXMgbG9naWMgaXMg bm8gbG9uZ2VyIHRydWUsIGluIHdoaWNoIGNhc2UgdGhpcyBtaWdodCBuZWVkIHRvIG1vdmUKKysg ICAgIGludG8gdGhlIGdkYmFyY2hfcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MgbWV0aG9kLiAgKi8K KysgIGNvbnN0IGJmZF9idWlsZF9pZCAqY29yZV9idWlsZF9pZCA9IGJ1aWxkX2lkX2JmZF9nZXQg KGNiZmQpOworKworKyAgLyogU2VlIGxpbnV4X3JlYWRfY29yZV9maWxlX21hcHBpbmdzKCkgaW4g bGludXgtdGRlcC5jIGZvciBhbiBleGFtcGxlCisrICAgICByZWFkX2NvcmVfZmlsZV9tYXBwaW5n cyBtZXRob2QuICAqLworKyAgZ2RiYXJjaF9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyAoZ2RiYXJj aCwgY2JmZCwKKysgICAgLyogQWZ0ZXIgZGV0ZXJtaW5pbmcgdGhlIG51bWJlciBvZiBtYXBwaW5n cywgcmVhZF9jb3JlX2ZpbGVfbWFwcGluZ3MKKysgICAgICAgd2lsbCBpbnZva2UgdGhpcyBsYW1i ZGEuICAqLworKyAgICBbJl0gKFVMT05HRVNUKQorKyAgICAgIHsKKysgICAgICB9LAorKworKyAg ICAvKiByZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyB3aWxsIGludm9rZSB0aGlzIGxhbWJkYSBmb3Ig ZWFjaCBtYXBwaW5nCisrICAgICAgIHRoYXQgaXQgZmluZHMuICAqLworKyAgICBbJl0gKGludCBu dW0sIFVMT05HRVNUIHN0YXJ0LCBVTE9OR0VTVCBlbmQsIFVMT05HRVNUIGZpbGVfb2ZzLAorKwkg Y29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGJmZF9idWlsZF9pZCAqYnVpbGRfaWQpCisrICAg ICAgeworKwkvKiBBcmNoaXRlY3R1cmUtc3BlY2lmaWMgcmVhZF9jb3JlX21hcHBpbmcgbWV0aG9k cyBhcmUgZXhwZWN0ZWQgdG8KKysJICAgd2VlZCBvdXQgbm9uLWZpbGUtYmFja2VkIG1hcHBpbmdz LiAgKi8KKysJZ2RiX2Fzc2VydCAoZmlsZW5hbWUgIT0gbnVsbHB0cik7CisrCisrCS8qIEFkZCB0 aGlzIG1hcHBlZCByZWdpb24gdG8gdGhlIGRhdGEgZm9yIEZJTEVOQU1FLiAgKi8KKysJYXV0byBp dGVyID0gbWFwcGVkX2ZpbGVzLmZpbmQgKGZpbGVuYW1lKTsKKysJaWYgKGl0ZXIgPT0gbWFwcGVk X2ZpbGVzLmVuZCAoKSkKKysJICB7CisrCSAgICAvKiBDcmVhdGUgZW50cnkgaW4gcmVzdWx0cyBs aXN0LiAgKi8KKysJICAgIHJlc3VsdHMuZW1wbGFjZV9iYWNrICgpOworKworKwkgICAgLyogVGhl IGVudHJ5IHRvIGJlIGFkZGVkIHRvIHRoZSBsb29rdXAgbWFwLiAgKi8KKysJICAgIG1hcF9lbnRy eSBlbnRyeSAoJnJlc3VsdHMuYmFjayAoKSk7CisrCSAgICBlbnRyeS5maWxlX2RhdGEtPmZpbGVu YW1lID0gZmlsZW5hbWU7CisrCisrCSAgICAvKiBBZGQgZW50cnkgdG8gdGhlIHF1aWNrIGxvb2t1 cCBtYXAgYW5kIHVwZGF0ZSBJVEVSLiAgKi8KKysJICAgIGF1dG8gaW5zZXJ0ZWRfcmVzdWx0Cisr CSAgICAgID0gbWFwcGVkX2ZpbGVzLmluc2VydCAoe2ZpbGVuYW1lLCBzdGQ6Om1vdmUgKGVudHJ5 KX0pOworKwkgICAgZ2RiX2Fzc2VydCAoaW5zZXJ0ZWRfcmVzdWx0LnNlY29uZCk7CisrCSAgICBp dGVyID0gaW5zZXJ0ZWRfcmVzdWx0LmZpcnN0OworKwkgIH0KKysKKysJY29yZV9tYXBwZWRfZmls ZSAmZmlsZV9kYXRhID0gKml0ZXItPnNlY29uZC5maWxlX2RhdGE7CisrCWJvb2wgJmlnbm9yZV9i dWlsZF9pZF9wID0gaXRlci0+c2Vjb25kLmlnbm9yZV9idWlsZF9pZF9wOworKworKwlmaWxlX2Rh dGEucmVnaW9ucy5lbXBsYWNlX2JhY2sgKHN0YXJ0LCBlbmQsIGZpbGVfb2ZzKTsKKysJaWYgKGJ1 aWxkX2lkICE9IG51bGxwdHIgJiYgIWlnbm9yZV9idWlsZF9pZF9wKQorKwkgIHsKKysJICAgIGlm IChmaWxlX2RhdGEuYnVpbGRfaWQgPT0gbnVsbHB0cikKKysJICAgICAgZmlsZV9kYXRhLmJ1aWxk X2lkID0gYnVpbGRfaWQ7CisrCSAgICBlbHNlIGlmICghYnVpbGRfaWRfZXF1YWwgKGJ1aWxkX2lk LCBmaWxlX2RhdGEuYnVpbGRfaWQpKQorKwkgICAgICB7CisrCQl3YXJuaW5nIChfKCJNdWx0aXBs ZSBidWlsZC1pZHMgZm91bmQgZm9yICVwcyIpLAorKwkJCSBzdHlsZWRfc3RyaW5nIChmaWxlX25h bWVfc3R5bGUuc3R5bGUgKCksIGZpbGVuYW1lKSk7CisrCQlmaWxlX2RhdGEuYnVpbGRfaWQgPSBu dWxscHRyOworKwkJaWdub3JlX2J1aWxkX2lkX3AgPSB0cnVlOworKwkgICAgICB9CisrCSAgfQor KworKwlpZiAoYnVpbGRfaWQgIT0gbnVsbHB0cgorKwkgICAgJiYgY29yZV9idWlsZF9pZCAhPSBu dWxscHRyCisrCSAgICAmJiBidWlsZF9pZF9lcXVhbCAoYnVpbGRfaWQsIGNvcmVfYnVpbGRfaWQp KQorKwkgIGZpbGVfZGF0YS5pc19tYWluX2V4ZWMgPSB0cnVlOworKyAgICAgIH0pOworKworKyAg cmV0dXJuIHJlc3VsdHM7CisrfQorKworKy8qIFNlZSBnZGJjb3JlLmguICAqLworKworIHN0ZDo6 b3B0aW9uYWwgPGNvcmVfdGFyZ2V0X21hcHBlZF9maWxlX2luZm8+CisgY29yZV90YXJnZXRfZmlu ZF9tYXBwZWRfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsCisgCQkJICAgICAgc3RkOjpvcHRp b25hbDxDT1JFX0FERFI+IGFkZHIpCitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBi L2dkYi9kb2MvZ2RiLnRleGluZm8KKy0tLSBhL2dkYi9kb2MvZ2RiLnRleGluZm8KKysrKyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KK0BAIC00MDAyOSwxMCArNDAwMjksMTAgQEAgd2lsbCBzZXQgYSB0 ZW1wb3JhcnkgYnJlYWtwb2ludCBhdCB0aGUgcHJvZ3JhbSdzIGZpcnN0IGluc3RydWN0aW9uLCB1 c2luZworIHRoZSBzYW1lIGFwcHJvYWNoIGFzIHRoZSBAY29kZXtzdGFydGl9IGNvbW1hbmQuICBA eHJlZntTdGFydGluZ30uCisgQGVuZCB0YWJsZQorIAorLUB2YWx1ZXtHREJOfSBkZWZpbmVzIHNv bWUgcGFyYW1ldGVycyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8gdGhlCistQGNvZGV7YXR0YWNofSBy ZXF1ZXN0LiAgRWl0aGVyIEBjb2Rle3BpZH0gb3IgQGNvZGV7dGFyZ2V0fSBtdXN0IGJlCistc3Bl Y2lmaWVkLCBidXQgaWYgYm90aCBhcmUgc3BlY2lmaWVkIHRoZW4gQGNvZGV7dGFyZ2V0fSB3aWxs IGJlCistaWdub3JlZC4KKytAdmFsdWV7R0RCTn0gZGVmaW5lcyBzb21lIGFkZGl0aW9uYWwgcGFy YW1ldGVycyB0aGF0IGNhbiBiZSBwYXNzZWQgdG8KKyt0aGUgQGNvZGV7YXR0YWNofSByZXF1ZXN0 LiAgT25lIG9mIEBjb2Rle3BpZH0sIEBjb2Rle3RhcmdldH0sIG9yCisrQGNvZGV7Y29yZUZpbGV9 IG11c3QgYmUgc3BlY2lmaWVkLiAgSWYgbXVsdGlwbGUgYXJlIHNwZWNpZmllZCwgdGhleQorK2Fy ZSBjaGVja2VkIGZvciBpbiB0aGF0IG9yZGVyLCBhbmQgdGhlIGZpcnN0IG9uZSBmb3VuZCBpcyB1 c2VkLgorIAorIEB0YWJsZSBAY29kZQorIEBpdGVtIHBpZAorQEAgLTQwMDQ4LDYgKzQwMDQ4LDEw IEBAIHNob3VsZCBiZSBzdXBwbGllZC4KKyBAaXRlbSB0YXJnZXQKKyBUaGUgdGFyZ2V0IHRvIHdo aWNoIEB2YWx1ZXtHREJOfSBzaG91bGQgY29ubmVjdC4gIFRoaXMgaXMgYSBzdHJpbmcgYW5kCisg aXMgcGFzc2VkIHRvIHRoZSBAY29kZXt0YXJnZXQgcmVtb3RlfSBjb21tYW5kLiAgQHhyZWZ7Q29u bmVjdGluZ30uCisrCisrQGl0ZW0gY29yZUZpbGUKKytBIHN0cmluZyB0aGF0IHNwZWNpZmllcyBh IGNvcmUgZmlsZSB0byB1c2UuICBUaGlzIGNvcnJlc3BvbmRzIHRvIHRoZQorK0BrYmR7Y29yZS1m aWxlfSBjb21tYW5kLiAgQHhyZWZ7Y29yZS1maWxlIGNvbW1hbmR9LgorIEBlbmQgdGFibGUKKyAK KyBJbiByZXNwb25zZSB0byB0aGUgQGNvZGV7ZGlzYXNzZW1ibGV9IHJlcXVlc3QsIERBUCBhbGxv d3MgdGhlIGNsaWVudAorZGlmZiAtLWdpdCBhL2dkYi9kb2MvcHl0aG9uLnRleGkgYi9nZGIvZG9j L3B5dGhvbi50ZXhpCistLS0gYS9nZGIvZG9jL3B5dGhvbi50ZXhpCisrKysgYi9nZGIvZG9jL3B5 dGhvbi50ZXhpCitAQCAtMjMzLDYgKzIzMyw3IEBAIG9wdGlvbmFsIGFyZ3VtZW50cyB3aGlsZSBz a2lwcGluZyBvdGhlcnMuICBFeGFtcGxlOgorICogRGlzYXNzZW1ibHkgSW4gUHl0aG9uOjogICAg ICAgSW5zdHJ1Y3Rpb24gRGlzYXNzZW1ibHkgSW4gUHl0aG9uCisgKiBNaXNzaW5nIERlYnVnIElu Zm8gSW4gUHl0aG9uOjogSGFuZGxlIG1pc3NpbmcgZGVidWcgaW5mbyBmcm9tIFB5dGhvbi4KKyAq IE1pc3NpbmcgT2JqZmlsZXMgSW4gUHl0aG9uOjogIEhhbmRsZSBvYmpmaWxlcyBmcm9tIFB5dGhv bi4KKysqIENvcmUgRmlsZXMgSW4gUHl0aG9uOjogICAgICAgIFB5dGhvbiByZXByZXNlbnRhdGlv biBvZiBjb3JlIGZpbGVzLgorIEBlbmQgbWVudQorIAorIEBub2RlIEJhc2ljIFB5dGhvbgorQEAg LTM2MjYsNiArMzYyNywxNSBAQCBuZWNlc3NhcnkgcXVvdGluZyBmb3IgdGhlIHNoZWxsOyB3aGVu IGEgc2VxdWVuY2UgaXMgYXNzaWduZWQsIHRoZQorIHF1b3RpbmcgaXMgYXBwbGllZCBieSBAdmFs dWV7R0RCTn0uCisgQGVuZCBkZWZ2YXIKKyAKKytAZGVmdmFyIEluZmVyaW9yLmNvcmVmaWxlCisr SWYgYSBjb3JlIGZpbGUgaGFzIGJlZW4gbG9hZGVkIGludG8gdGhpcyBpbmZlcmlvciAoQHB4cmVm e2NvcmUtZmlsZQorK2NvbW1hbmR9KSwgdGhlbiB0aGlzIGNvbnRhaW5zIGEgQGNvZGV7Z2RiLkNv cmVmaWxlfSBvYmplY3QgdGhhdAorK3JlcHJlc2VudHMgdGhlIGxvYWRlZCBjb3JlIGZpbGUgKEBw eHJlZntDb3JlIEZpbGVzIEluIFB5dGhvbn0pLgorKworK0lmIG5vIGNvcmUgZmlsZSBoYXMgYmVl biBsb2FkZWQgaW50byB0aGlzIGluZmVyaW9yLCB0aGVuIHRoaXMKKythdHRyaWJ1dGUgY29udGFp bnMgQGNvZGV7Tm9uZX0uCisrQGVuZCBkZWZ2YXIKKysKKyBBIEBjb2Rle2dkYi5JbmZlcmlvcn0g b2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisgCisgQGRlZnVuIEluZmVyaW9yLmlz X3ZhbGlkICgpCitAQCAtNDA5NCw2ICs0MTA0LDE3IEBAIGZpbGUgaXMgdXBkYXRlZCBmaXJzdCwg c28gd2hlbiB0aGlzIGV2ZW50IGlzIGVtaXR0ZWQsIHRoZSBleGVjdXRhYmxlCisgZmlsZW5hbWUg d2lsbCBoYXZlIGNoYW5nZWQsIGJ1dCB0aGUgc3ltYm9sIGZpbGVuYW1lIG1pZ2h0IHN0aWxsIGhv bGQKKyBpdHMgcHJldmlvdXMgdmFsdWUuCisgCisrQGl0ZW0gZXZlbnRzLmNvcmVmaWxlX2NoYW5n ZWQKKytFbWl0cyBAY29kZXtnZGIuQ29yZWZpbGVDaGFuZ2VkRXZlbnR9IHdoaWNoIGluZGljYXRl cyB0aGF0IHRoZSBjb3JlCisrZmlsZSBhc3NvY2lhdGVkIHdpdGggYSBAY29kZXtnZGIuSW5mZXJp b3J9IGhhcyBjaGFuZ2VkLCBlaXRoZXIgYSBuZXcKKytjb3JlIGZpbGUgaGFzIGJlZW4gbG9hZGVk LCBvciB0aGUgZXhpc3RpbmcgY29yZSBmaWxlIGhhcyBiZWVuCisrdW5sb2FkZWQgKEBweHJlZntD b3JlIEZpbGVzIEluIFB5dGhvbn0pLgorKworK0BkZWZ2YXIgQ29yZWZpbGVDaGFuZ2VkRXZlbnQu aW5mZXJpb3IKKytUaGUgQGNvZGV7Z2RiLkluZmVyaW9yfSBpbiB3aGljaCB0aGUgY29yZSBmaWxl IGhhcyBjaGFuZ2VkCisrKEBweHJlZntJbmZlcmlvcnMgSW4gUHl0aG9ufSkuCisrQGVuZCBkZWZ2 YXIKKysKKyBAaXRlbSBldmVudHMubmV3X3Byb2dzcGFjZQorIFRoaXMgaXMgZW1pdHRlZCB3aGVu IEB2YWx1ZXtHREJOfSBhZGRzIGEgbmV3IHByb2dyYW0gc3BhY2UKKyAoQHB4cmVme1Byb2dzcGFj ZXMgSW4gUHl0aG9uLCxQcm9ncmFtIFNwYWNlcyBJbiBQeXRob259KS4gIFRoZSBldmVudAorQEAg LTg2MjQsNiArODY0NSwxMDYgQEAgaGFuZGxlcnMsIGFsbCBvZiB0aGUgbWF0Y2hpbmcgaGFuZGxl cnMgYXJlIGVuYWJsZWQuICBUaGUKKyBAY29kZXtlbmFibGVkfSBmaWVsZCBvZiBlYWNoIG1hdGNo aW5nIGhhbmRsZXIgaXMgc2V0IHRvIEBjb2Rle1RydWV9LgorIEBlbmQgdGFibGUKKyAKKytAbm9k ZSBDb3JlIEZpbGVzIEluIFB5dGhvbgorK0BzdWJzdWJzZWN0aW9uIENvcmUgRmlsZXMgSW4gUHl0 aG9uCisrQGNpbmRleCBweXRob24sIGNvcmUgZmlsZXMKKysKKytXaGVuIGEgY29yZSBmaWxlIGlz IGxvYWRlZCBpbnRvIGFuIGluZmVyaW9yIChAcHhyZWZ7SW5mZXJpb3JzIEluCisrUHl0aG9ufSkg Zm9yIGV4YW1pbmF0aW9uIChAcHhyZWZ7Y29yZS1maWxlIGNvbW1hbmR9KSwgaW5mb3JtYXRpb24K KythYm91dCB0aGUgY29yZSBmaWxlIGlzIGNvbnRhaW5lZCBpbiBhIEBjb2Rle2dkYi5Db3JlZmls ZX0gb2JqZWN0LgorKworK1RoZSBAY29kZXtnZGIuQ29yZWZpbGV9IGZvciBhbiBpbmZlcmlvciBj YW4gYmUgYWNjZXNzZWQgdXNpbmcgdGhlCisrQGNvZGV7SW5mZXJpb3IuY29yZWZpbGV9IGF0dHJp YnV0ZS4gIFRoaXMgd2lsbCBiZSBAY29kZXtOb25lfSBpZgorK25vIGNvcmUgZmlsZSBpcyBsb2Fk ZWQuCisrCisrQSBAY29kZXtnZGIuQ29yZWZpbGV9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBh dHRyaWJ1dGVzOgorKworK0BkZWZ2YXIgQ29yZWZpbGUuZmlsZW5hbWUKKytUaGlzIHJlYWQgb25s eSBhdHRyaWJ1dGUgY29udGFpbnMgYSBub24tZW1wdHkgc3RyaW5nLCB0aGUgZmlsZSBuYW1lIG9m CisrdGhlIGNvcmUgZmlsZS4gIEF0dGVtcHRpbmcgdG8gYWNjZXNzIHRoaXMgYXR0cmlidXRlIG9u IGFuIGludmFsaWQKKytAY29kZXtnZGIuQ29yZWZpbGV9IG9iamVjdCB3aWxsIHJhaXNlIGEgQGNv ZGV7UnVudGltZUVycm9yfSBleGNlcHRpb24uCisrQGVuZCBkZWZ2YXIKKysKKytBIEBjb2Rle2dk Yi5Db3JlZmlsZX0gb2JqZWN0IGhhcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisrCisrQGRlZnVu IENvcmVmaWxlLmlzX3ZhbGlkICgpCisrUmV0dXJucyBAY29kZXtUcnVlfSBpZiB0aGUgQGNvZGV7 Z2RiLkNvcmVmaWxlfSBvYmplY3QgaXMgdmFsaWQsCisrQGNvZGV7RmFsc2V9IGlmIG5vdC4gIEEg QGNvZGV7Z2RiLkNvcmVmaWxlfSBvYmplY3Qgd2lsbCBiZWNvbWUgaW52YWxpZAorK3doZW4gdGhl IGNvcmUgZmlsZSBpcyB1bmxvYWRlZCBmcm9tIHRoZSBpbmZlcmlvciB1c2luZyB0aGUKKytAa2Jk e2NvcmUtZmlsZX0gY29tbWFuZCAoQHB4cmVme2NvcmUtZmlsZSBjb21tYW5kfSksIG9yIGlmIHRo ZQorK2luZmVyaW9yIGluIHdoaWNoIHRoZSBjb3JlIGZpbGUgaXMgbG9hZGVkIGlzIGRlbGV0ZWQu ICBBbGwgb3RoZXIKKytAY29kZXtnZGIuQ29yZWZpbGV9IG1ldGhvZHMgYW5kIGF0dHJpYnV0ZXMg d2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYKKytpdCBpcyBpbnZhbGlkIGF0IHRoZSB0aW1lIHRo ZSBtZXRob2QgaXMgY2FsbGVkLCBvciB0aGUgYXR0cmlidXRlCisrYWNjZXNzZWQuCisrQGVuZCBk ZWZ1bgorKworK0BkZWZ1biBDb3JlZmlsZS5tYXBwZWRfZmlsZXMgKCkKKytSZXR1cm4gYSBsaXN0 IG9mIEBjb2Rle2dkYi5Db3JlZmlsZU1hcHBlZEZpbGV9IChzZWUgYmVsb3cpIG9iamVjdHMKKyty ZXByZXNlbnRpbmcgZmlsZXMgdGhhdCB3ZXJlIG1hcHBlZCBpbnRvIHRoZSBwcm9jZXNzIHdoZW4g dGhlIGNvcmUKKytmaWxlIHdhcyBjcmVhdGVkLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyByZWFkIGZy b20gdGhlIEBzYW1we05UX0ZJTEV9CisrY29yZSBmaWxlIG5vdGUgb24gTGludXguICBOb3QgZXZl cnkgdGFyZ2V0IHN1cHBvcnRzIGFjY2Vzc2luZyB0aGlzCisraW5mb3JtYXRpb24sIGZvciB0YXJn ZXRzIHdpdGhvdXQgc3VwcG9ydCwgYW4gZW1wdHkgbGlzdCB3aWxsIGJlCisrcmV0dXJuZWQuCisr QGVuZCBkZWZ1bgorKworK09uZSBtYXkgYWRkIGFyYml0cmFyeSBhdHRyaWJ1dGVzIHRvIEBjb2Rl e2dkYi5Db3JlZmlsZX0gb2JqZWN0cyBpbiB0aGUKKyt1c3VhbCBQeXRob24gd2F5LiAgVGhpcyBp cyB1c2VmdWwgaWYsIGZvciBleGFtcGxlLCBvbmUgbmVlZHMgdG8gZG8KKytzb21lIGV4dHJhIHJl Y29yZCBrZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29yZWZpbGUuCisrQHhyZWZ7Y2hvb3Np bmcgYXR0cmlidXRlIG5hbWVzfSwgZm9yIGd1aWRhbmNlIG9uIHNlbGVjdGluZyBhIHN1aXRhYmxl CisrbmFtZSBmb3IgbmV3IGF0dHJpYnV0ZXMuCisrCisrVGhlIEBjb2Rle0NvcmVmaWxlLm1hcHBl ZF9maWxlcyAoKX0gbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mCisrQGNvZGV7Z2RiLkNvcmVmaWxl TWFwcGVkRmlsZX0gb2JqZWN0cy4gIEVhY2ggb2YgdGhlc2Ugb2JqZWN0cworK3JlcHJlc2VudHMg YSBmaWxlIHRoYXQgd2FzIGZ1bGx5LCBvciBwYXJ0aWFsbHksIG1hcHBlZCBpbnRvIHRoZQorK3By b2Nlc3NlcyBhZGRyZXNzIHNwYWNlIHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMgY3JlYXRlZC4KKysK KytBIEBjb2Rle2dkYi5Db3JlZmlsZU1hcHBlZEZpbGV9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2lu ZyBhdHRyaWJ1dGVzOgorKworK0BkZWZ2YXIgQ29yZWZpbGVNYXBwZWRGaWxlLmZpbGVuYW1lCisr VGhpcyByZWFkIG9ubHkgYXR0cmlidXRlIGNvbnRhaW5zIGEgbm9uLWVtcHR5IHN0cmluZywgdGhl IGZpbGUgbmFtZSBvZgorK3RoZSBtYXBwZWQgZmlsZS4KKytAZW5kIGRlZnZhcgorKworK0BkZWZ2 YXIgQ29yZWZpbGVNYXBwZWRGaWxlLmJ1aWxkX2lkCisrVGhpcyByZWFkIG9ubHkgYXR0cmlidXRl IGNvbnRhaW5zIGEgbm9uLWVtcHR5IHN0cmluZyBvciBAY29kZXtOb25lfS4KKytUaGlzIGlzIHRo ZSBidWlsZC1pZCBvZiB0aGUgbWFwcGVkIGZpbGUgZXh0cmFjdGVkIGZyb20gdGhlIGNvcmUgZmls ZSwKKytvciBAY29kZXtOb25lfSBpZiB0aGVyZSB3YXMgbm8gYnVpbGQtaWQsIG9yIEB2YWx1ZXtH REJOfSB3YXMgdW5hYmxlIHRvCisrZXh0cmFjdCB0aGUgYnVpbGQtaWQuCisrQGVuZCBkZWZ2YXIK KysKKytAZGVmdmFyIENvcmVmaWxlTWFwcGVkRmlsZS5pc19tYWluX2V4ZWN1dGFibGUKKytUaGlz IHJlYWQgb25seSBhdHRyaWJ1dGUgaXMgQGNvZGV7VHJ1ZX0gaWYgQHZhbHVle0dEQk59IGJlbGll dmVzIHRoaXMKKyttYXBwaW5nIHJlcHJlc2VudHMgdGhlIG1haW4gZXhlY3V0YWJsZSBmb3Igd2hp Y2ggdGhpcyBjb3JlIGZpbGUgd2FzCisrY3JlYXRlZC4gIFRoaXMgd2lsbCBiZSBAY29kZXtGYWxz ZX0gZm9yIGFsbCBvdGhlciBtYXBwaW5ncy4KKytAZW5kIGRlZnZhcgorKworK0BkZWZ2YXIgQ29y ZWZpbGVNYXBwZWRGaWxlLnJlZ2lvbnMKKytUaGlzIHJlYWQgb25seSBhdHRyaWJ1dGUgY29udGFp bnMgYSBsaXN0IG9mCisrQGNvZGV7Z2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbn0gb2JqZWN0 cy4gIEVhY2ggb2YgdGhlc2Ugb2JqZWN0cworK2Rlc2NyaWJlcyBhIHJlZ2lvbiBvZiB0aGUgZmls ZSB0aGF0IHdhcyBtYXBwZWQgaW50byB0aGUgcHJvY2VzcyB3aGVuCisrdGhlIGNvcmUgZmlsZSB3 YXMgY3JlYXRlZCwgZnVydGhlciBkZXRhaWxzIGFyZSBnaXZlbiBiZWxvdy4KKytAZW5kIGRlZnZh cgorKworK1RoZSBAY29kZXtnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9ufSBvYmplY3QgZGVz Y3JpYmVzIHdoaWNoIHBhcnQgb2YKKythIGZpbGUgdGhhdCB3YXMgbWFwcGVkIGludG8gYSBwcm9j ZXNzIHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMgY3JlYXRlZC4KKysKKytBIEBjb2Rle2dkYi5Db3Jl ZmlsZU1hcHBlZEZpbGV9IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorKwor K0BkZWZ2YXIgQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uLnN0YXJ0CisrVGhpcyByZWFkIG9ubHkg YXR0cmlidXRlIGNvbnRhaW5zIHRoZSBzdGFydCBhZGRyZXNzIG9mIHRoaXMgbWFwcGluZworK3dp dGhpbiB0aGUgaW5mZXJpb3IuCisrQGVuZCBkZWZ2YXIKKysKKytAZGVmdmFyIENvcmVmaWxlTWFw cGVkRmlsZVJlZ2lvbi5lbmQKKytUaGlzIHJlYWQgb25seSBhdHRyaWJ1dGUgY29udGFpbnMgZW5k IGFkZHJlc3Mgb2YgdGhpcyBtYXBwaW5nIHdpdGhpbgorK3RoZSBpbmZlcmlvci4KKytAZW5kIGRl ZnZhcgorKworK0BkZWZ2YXIgQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uLmZpbGVfb2Zmc2V0Cisr VGhpcyByZWFkIG9ubHkgYXR0cmlidXRlIGNvbnRhaW5zIHRoZSBvZmZzZXQgd2l0aGluIHRoZSBt YXBwZWQgZmlsZQorK2ZvciB0aGlzIG1hcHBpbmcuCisrQGVuZCBkZWZ2YXIKKysKKyBAbm9kZSBQ eXRob24gQXV0by1sb2FkaW5nCisgQHN1YnNlY3Rpb24gUHl0aG9uIEF1dG8tbG9hZGluZworIEBj aW5kZXggUHl0aG9uIGF1dG8tbG9hZGluZworZGlmZiAtLWdpdCBhL2dkYi9nZGJjb3JlLmggYi9n ZGIvZ2RiY29yZS5oCistLS0gYS9nZGIvZ2RiY29yZS5oCisrKysgYi9nZGIvZ2RiY29yZS5oCitA QCAtMjU4LDQgKzI1OCw0NyBAQCBzdGQ6Om9wdGlvbmFsPGNvcmVfdGFyZ2V0X21hcHBlZF9maWxl X2luZm8+CisgY29yZV90YXJnZXRfZmluZF9tYXBwZWRfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5h bWUsCisgCQkJICAgICAgc3RkOjpvcHRpb25hbDxDT1JFX0FERFI+IGFkZHIpOworIAorKy8qIFR5 cGUgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBmaWxlIG1hcHBlZCBpbnRvIHRo ZSBpbmZlcmlvcgorKyAgIGF0IHRoZSBwb2ludCB3aGVuIHRoZSBjb3JlIGZpbGUgd2FzIGNyZWF0 ZWQuICBBc3NvY2lhdGVzIGEgYnVpbGQtaWQKKysgICB3aXRoIHRoZSBsaXN0IG9mIHJlZ2lvbnMg dGhlIGZpbGUgaXMgbWFwcGVkIGludG8uICAqLworK3N0cnVjdCBjb3JlX21hcHBlZF9maWxlCisr eworKyAgLyogVHlwZSBmb3IgYSByZWdpb24gb2YgYSBmaWxlIHRoYXQgd2FzIG1hcHBlZCBpbnRv IHRoZSBpbmZlcmlvciB3aGVuCisrICAgICB0aGUgY29yZSBmaWxlIHdhcyBnZW5lcmF0ZWQuICAq LworKyAgc3RydWN0IHJlZ2lvbgorKyAgeworKyAgICAvKiBDb25zdHJ1Y3Rvci4gICBTZWUgbWVt YmVyIHZhcmlhYmxlcyBmb3IgYXJndW1lbnQgZGVzY3JpcHRpb25zLiAgKi8KKysgICAgcmVnaW9u IChDT1JFX0FERFIgc3RhcnRfLCBDT1JFX0FERFIgZW5kXywgQ09SRV9BRERSIGZpbGVfb2ZzXykK KysgICAgICA6IHN0YXJ0IChzdGFydF8pLAorKwllbmQgKGVuZF8pLAorKwlmaWxlX29mcyAoZmls ZV9vZnNfKQorKyAgICB7IC8qIE5vdGhpbmcuICAqLyB9CisrCisrICAgIC8qIFRoZSBpbmZlcmlv ciBhZGRyZXNzIGZvciB0aGUgc3RhcnQgb2YgdGhlIG1hcHBlZCByZWdpb24uICAqLworKyAgICBD T1JFX0FERFIgc3RhcnQ7CisrCisrICAgIC8qIFRoZSBpbmZlcmlvciBhZGRyZXNzIGltbWVkaWF0 ZWx5IGFmdGVyIHRoZSBtYXBwZWQgcmVnaW9uLiAgKi8KKysgICAgQ09SRV9BRERSIGVuZDsKKysK KysgICAgLyogVGhlIG9mZnNldCB3aXRoaW4gdGhlIG1hcHBlZCBmaWxlIGZvciB0aGlzIGNvbnRl bnQuICAqLworKyAgICBDT1JFX0FERFIgZmlsZV9vZnM7CisrICB9OworKworKyAgLyogVGhlIGZp bGVuYW1lIGFzIHJlY29yZGVkIGluIHRoZSBjb3JlIGZpbGUuICAqLworKyAgc3RkOjpzdHJpbmcg ZmlsZW5hbWU7CisrCisrICAvKiBJZiBub3QgbnVsbHB0ciwgdGhlbiB0aGlzIGlzIHRoZSBidWls ZC1pZCBhc3NvY2lhdGVkIHdpdGggdGhpcworKyAgICAgZmlsZS4gICovCisrICBjb25zdCBiZmRf YnVpbGRfaWQgKmJ1aWxkX2lkID0gbnVsbHB0cjsKKysKKysgIC8qIEFsbCB0aGUgbWFwcGVkIHJl Z2lvbnMgb2YgdGhpcyBmaWxlLiAgKi8KKysgIHN0ZDo6dmVjdG9yPHJlZ2lvbj4gcmVnaW9uczsK KysKKysgIC8qIFRydWUgaWYgdGhpcyBpcyB0aGUgbWFpbiBleGVjdXRhYmxlLiAgKi8KKysgIGJv b2wgaXNfbWFpbl9leGVjID0gZmFsc2U7CisrfTsKKysKKytleHRlcm4gc3RkOjp2ZWN0b3I8Y29y ZV9tYXBwZWRfZmlsZT4gZ2RiX3JlYWRfY29yZV9maWxlX21hcHBpbmdzCisrICAoc3RydWN0IGdk YmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBiZmQgKmNiZmQpOworKworICNlbmRpZiAvKiBHREJfR0RC Q09SRV9IICovCitkaWZmIC0tZ2l0IGEvZ2RiL29ic2VydmFibGUuYyBiL2dkYi9vYnNlcnZhYmxl LmMKKy0tLSBhL2dkYi9vYnNlcnZhYmxlLmMKKysrKyBiL2dkYi9vYnNlcnZhYmxlLmMKK0BAIC03 Niw2ICs3Niw3IEBAIERFRklORV9PQlNFUlZBQkxFICh0YXJnZXRfcG9zdF93YWl0KTsKKyBERUZJ TkVfT0JTRVJWQUJMRSAobmV3X3Byb2dyYW1fc3BhY2UpOworIERFRklORV9PQlNFUlZBQkxFIChm cmVlX3Byb2dyYW1fc3BhY2UpOworIERFRklORV9PQlNFUlZBQkxFICh0dWlfZW5hYmxlZCk7Cisr REVGSU5FX09CU0VSVkFCTEUgKGNvcmVfZmlsZV9jaGFuZ2VkKTsKKyAKKyB9IC8qIG5hbWVzcGFj ZSBvYnNlcnZlcnMgKi8KKyB9IC8qIG5hbWVzcGFjZSBnZGIgKi8KK2RpZmYgLS1naXQgYS9nZGIv b2JzZXJ2YWJsZS5oIGIvZ2RiL29ic2VydmFibGUuaAorLS0tIGEvZ2RiL29ic2VydmFibGUuaAor KysrIGIvZ2RiL29ic2VydmFibGUuaAorQEAgLTI2MCw2ICsyNjAsMTIgQEAgZXh0ZXJuIG9ic2Vy dmFibGUgPHByb2dyYW1fc3BhY2UgKi8qIHBzcGFjZSAqLz4gZnJlZV9wcm9ncmFtX3NwYWNlOwor IAorIGV4dGVybiBvYnNlcnZhYmxlPGJvb2wgLyogZW5hYmxlZCAqLz4gdHVpX2VuYWJsZWQ7Cisg CisrLyogVGhlIGNvcmUgZmlsZSBsb2FkZWQgaW50byB0aGUgcHJvZ3JhbSBzcGFjZSBpbmZlcmlv ciBJTkYgaGFzIGNoYW5nZWQuCisrICAgVGhlIHByb2Nlc3Mgb2YgY2hhbmdpbmcgaGFzIGNvbXBs ZXRlZCwgaS5lLiB3aGVuIHVubG9hZGluZywgdGhlIHVubG9hZAorKyAgIGlzIG5vdyBjb21wbGV0 ZS4gIFdoZW4gbG9hZGluZyBhIG5ldyBjb3JlIGZpbGUsIHRoZSBsb2FkIGlzIGNvbXBsZXRlLAor KyAgIHNoYXJlZCBsaWJyYXJpZXMgaGF2ZSBiZWVuIGxvYWRlZCwgcmVnaXN0ZXJzIGFuZCB0aHJl YWRzIHJlYWQgaW4sIGV0Yy4gICovCisrZXh0ZXJuIG9ic2VydmFibGU8aW5mZXJpb3IgKi8qIGlu ZiAqLz4gY29yZV9maWxlX2NoYW5nZWQ7CisrCisgfSAvKiBuYW1lc3BhY2Ugb2JzZXJ2ZXJzICov CisgCisgfSAvKiBuYW1lc3BhY2UgZ2RiICovCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIv Z2RiL2RhcC9ldmVudHMucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2V2ZW50cy5weQorLS0t IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9ldmVudHMucHkKKysrKyBiL2dkYi9weXRob24vbGli L2dkYi9kYXAvZXZlbnRzLnB5CitAQCAtMTYxLDcgKzE2MSw3IEBAIF9leHBlY3RlZF9wYXVzZSA9 IEZhbHNlCisgCisgCisgQGluX2dkYl90aHJlYWQKKy1kZWYgZXhlY19hbmRfZXhwZWN0X3N0b3Ao Y21kLCBleHBlY3RlZF9wYXVzZT1GYWxzZSwgcHJvcGFnYXRlX2V4Y2VwdGlvbj1GYWxzZSk6Cisr ZGVmIGV4ZWNfYW5kX2V4cGVjdF9zdG9wKGNtZCwgZXhwZWN0ZWRfcGF1c2U9RmFsc2UpOgorICAg ICAiIiJBIHdyYXBwZXIgZm9yIGV4ZWNfYW5kX2xvZyB0aGF0IHNldHMgdGhlIGNvbnRpbnVlLXN1 cHByZXNzaW9uIGZsYWcuCisgCisgICAgIFdoZW4gRVhQRUNURURfUEFVU0UgaXMgVHJ1ZSwgYSBz dG9wIHRoYXQgbG9va3MgbGlrZSBhIHBhdXNlIChlLmcuLAorQEAgLTE3NCw3ICsxNzQsNyBAQCBk ZWYgZXhlY19hbmRfZXhwZWN0X3N0b3AoY21kLCBleHBlY3RlZF9wYXVzZT1GYWxzZSwgcHJvcGFn YXRlX2V4Y2VwdGlvbj1GYWxzZSk6CisgICAgICMgY29udGludWluZy4KKyAgICAgX3N1cHByZXNz X2NvbnQgPSBub3QgZXhwZWN0ZWRfcGF1c2UKKyAgICAgIyBGSVhNRSBpZiB0aGUgY2FsbCBmYWls cyBzaG91bGQgd2UgY2xlYXIgX3N1cHByZXNzX2NvbnQ/CistICAgIGV4ZWNfYW5kX2xvZyhjbWQs IHByb3BhZ2F0ZV9leGNlcHRpb24pCisrICAgIGV4ZWNfYW5kX2xvZyhjbWQpCisgCisgCisgIyBN YXAgZnJvbSBnZGIgc3RvcCByZWFzb25zIHRvIERBUCBzdG9wIHJlYXNvbnMuICBTb21lIG9mIHRo ZXNlIGNhbid0CitAQCAtMjc2LDYgKzI3NiwzMSBAQCBkZWYgX29uX2luZmVyaW9yX2NhbGwoZXZl bnQpOgorICAgICAgICAgICAgIHNlbmRfZXZlbnQoInN0b3BwZWQiLCBvYmopCisgCisgCisrQGlu X2dkYl90aHJlYWQKKytkZWYgX29uX2NvcmVmaWxlX2NoYW5nZWQoZXZlbnQpOgorKyAgICAjIEln bm9yZSBldmVudHMgcmVsYXRpbmcgdG8gY29yZWZpbGUgYmVpbmcgdW5sb2FkZWQuCisrICAgIGlm IGV2ZW50LmluZmVyaW9yLmNvcmVmaWxlIGlzIE5vbmU6CisrICAgICAgICByZXR1cm4KKysKKysg ICAgIyBDb3JlZmlsZXMgYXJlIHVzdWFsbHkgYXR0YWNoZWQgdmlhIHRoZSAnYXR0YWNoJyByZXF1 ZXN0LCB3aGljaAorKyAgICAjIHNldHMgdGhlIGdsb2JhbCBfZXhwZWN0ZWRfc3RvcF9yZWFzb24g dG8gJ2F0dGFjaCcuICBJdCBpcworKyAgICAjIGJlY2F1c2Ugb2YgdGhpcyB0aGF0IGl0IGlzIHNh ZmUgdG8gZm9yd2FyZCB0byBfb25fc3RvcCwgYXMgd2hlbgorKyAgICAjIF9leHBlY3RlZF9zdG9w X3JlYXNvbiBpcyBzZXQgX29uX3N0b3AgZG9lc24ndCByZWFkIHRoZQorKyAgICAjIGV2ZW50LmRl dGFpbHMsIHdoaWNoIEVWRU5UIGRvZXNuJ3QgaGF2ZS4KKysgICAgIworKyAgICAjIEhvd2V2ZXIs IGlmIHRoZSB1c2VyIGxvYWRzIGEgY29yZSBmaWxlIHZpYSBzb21lIG1lY2hhbmlzbSBvdGhlcgor KyAgICAjIHRoYW4gdGhlICdhdHRhY2gnIHJlcXVlc3QsIGUuZy4gdGhleSB1c2UgdGhlIHJlcGwg dG8gaXNzdWUgYSBHREIKKysgICAgIyAnY29yZS1maWxlJyBjb21tYW5kLCB0aGVuIHdoZW4gd2Ug Z2V0IGhlcmUgX2V4cGVjdGVkX3N0b3BfcmVhc29uCisrICAgICMgd2lsbCBub3QgYmUgc2V0Lgor KyAgICAjCisrICAgICMgU28sIGluIGVpdGhlciBjYXNlLCBzZXQgX2V4cGVjdGVkX3N0b3BfcmVh c29uIG5vdy4KKysgICAgZ2xvYmFsIF9leHBlY3RlZF9zdG9wX3JlYXNvbgorKyAgICBfZXhwZWN0 ZWRfc3RvcF9yZWFzb24gPSAiYXR0YWNoIgorKworKyAgICAjIEEgY29yZWZpbGUgd2FzIGxvYWRl ZCwgYW5ub3VuY2UgdGhhdCB0aGUgaW5mZXJpb3IgaGFzIHN0b3BwZWQuCisrICAgIF9vbl9zdG9w KGV2ZW50KQorKworKworIGdkYi5ldmVudHMuc3RvcC5jb25uZWN0KF9vbl9zdG9wKQorIGdkYi5l dmVudHMuZXhpdGVkLmNvbm5lY3QoX29uX2V4aXQpCisgZ2RiLmV2ZW50cy5uZXdfdGhyZWFkLmNv bm5lY3QoX25ld190aHJlYWQpCitAQCAtMjg0LDMgKzMwOSw0IEBAIGdkYi5ldmVudHMuY29udC5j b25uZWN0KF9jb250KQorIGdkYi5ldmVudHMubmV3X29iamZpbGUuY29ubmVjdChfbmV3X29iamZp bGUpCisgZ2RiLmV2ZW50cy5mcmVlX29iamZpbGUuY29ubmVjdChfb2JqZmlsZV9yZW1vdmVkKQor IGdkYi5ldmVudHMuaW5mZXJpb3JfY2FsbC5jb25uZWN0KF9vbl9pbmZlcmlvcl9jYWxsKQorK2dk Yi5ldmVudHMuY29yZWZpbGVfY2hhbmdlZC5jb25uZWN0KF9vbl9jb3JlZmlsZV9jaGFuZ2VkKQor ZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvbGF1bmNoLnB5IGIvZ2RiL3B5dGhv bi9saWIvZ2RiL2RhcC9sYXVuY2gucHkKKy0tLSBhL2dkYi9weXRob24vbGliL2dkYi9kYXAvbGF1 bmNoLnB5CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL2xhdW5jaC5weQorQEAgLTU5LDEy ICs1OSwxNiBAQCBjbGFzcyBfTGF1bmNoT3JBdHRhY2hEZWZlcnJlZFJlcXVlc3QoRGVmZXJyZWRS ZXF1ZXN0KToKKyAgICAgICAgIHN1cGVyKCkucmVzY2hlZHVsZSgpCisgCisgCisrIyBIYW5kbGUg d2hpdGVzcGFjZSwgcXVvdGVzLCBhbmQgYmFja3NsYXNoZXMgaGVyZS4gIEV4YWN0bHkgd2hhdAor KyMgdG8gcXVvdGUgZGVwZW5kcyBvbiBsaWJpYmVydHkncyBidWlsZGFyZ3YgYW5kIHNhZmUtY3R5 cGUuCisrZGVmIGVzY2FwZV9maWxlbmFtZShmaWxlbmFtZSk6CisrICAgIHJldHVybiByZS5zdWIo IlsgXHRcblxyXGZcdlxcXFwnXCJdIiwgIlxcXFxcXGc8MD4iLCBmaWxlbmFtZSkKKysKKysKKyAj IEEgd3JhcHBlciBmb3IgdGhlICdmaWxlJyBjb21tYW5kIHRoYXQgY29ycmVjdGx5IHF1b3RlcyBp dHMgYXJndW1lbnQuCisgQGluX2dkYl90aHJlYWQKKyBkZWYgZmlsZV9jb21tYW5kKHByb2dyYW0p OgorLSAgICAjIEhhbmRsZSB3aGl0ZXNwYWNlLCBxdW90ZXMsIGFuZCBiYWNrc2xhc2hlcyBoZXJl LiAgRXhhY3RseSB3aGF0CistICAgICMgdG8gcXVvdGUgZGVwZW5kcyBvbiBsaWJpYmVydHkncyBi dWlsZGFyZ3YgYW5kIHNhZmUtY3R5cGUuCistICAgIHByb2dyYW0gPSByZS5zdWIoIlsgXHRcblxy XGZcdlxcXFwnXCJdIiwgIlxcXFxcXGc8MD4iLCBwcm9ncmFtKQorKyAgICBwcm9ncmFtID0gZXNj YXBlX2ZpbGVuYW1lKHByb2dyYW0pCisgICAgIGV4ZWNfYW5kX2xvZygiZmlsZSAiICsgcHJvZ3Jh bSkKKyAKKyAKK0BAIC0xMzIsNiArMTM2LDcgQEAgZGVmIGF0dGFjaCgKKyAgICAgcHJvZ3JhbTog T3B0aW9uYWxbc3RyXSA9IE5vbmUsCisgICAgIHBpZDogT3B0aW9uYWxbaW50XSA9IE5vbmUsCisg ICAgIHRhcmdldDogT3B0aW9uYWxbc3RyXSA9IE5vbmUsCisrICAgIGNvcmVGaWxlOiBPcHRpb25h bFtzdHJdID0gTm9uZSwKKyAgICAgKiphcmdzLAorICk6CisgICAgICMgVGhlIGFjdHVhbCBhdHRh Y2ggaXMgaGFuZGxlZCBieSB0aGlzIGZ1bmN0aW9uLgorQEAgLTE0MywxMSArMTQ4LDE0IEBAIGRl ZiBhdHRhY2goCisgICAgICAgICAgICAgY21kID0gImF0dGFjaCAiICsgc3RyKHBpZCkKKyAgICAg ICAgIGVsaWYgdGFyZ2V0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgIGNtZCA9ICJ0YXJnZXQg cmVtb3RlICIgKyB0YXJnZXQKKysgICAgICAgIGVsaWYgY29yZUZpbGUgaXMgbm90IE5vbmU6Cisr ICAgICAgICAgICAgY21kID0gImNvcmUtZmlsZSAiICsgZXNjYXBlX2ZpbGVuYW1lKGNvcmVGaWxl KQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICByYWlzZSBEQVBFeGNlcHRpb24oImF0dGFj aCByZXF1aXJlcyBlaXRoZXIgJ3BpZCcgb3IgJ3RhcmdldCciKQorKyAgICAgICAgICAgIHJhaXNl IERBUEV4Y2VwdGlvbigiYXR0YWNoIHJlcXVpcmVzIGVpdGhlciAncGlkJywgJ3RhcmdldCcsIG9y ICdjb3JlRmlsZSciKQorICAgICAgICAgZXhwZWN0X3Byb2Nlc3MoImF0dGFjaCIpCisgICAgICAg ICBleHBlY3Rfc3RvcCgiYXR0YWNoIikKKyAgICAgICAgIGV4ZWNfYW5kX2xvZyhjbWQpCisrCisg ICAgICAgICAjIEF0dGFjaCByZXNwb25zZSBkb2VzIG5vdCBoYXZlIGEgYm9keS4KKyAgICAgICAg IHJldHVybiBOb25lCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9uZXh0 LnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2RhcC9uZXh0LnB5CistLS0gYS9nZGIvcHl0aG9uL2xp Yi9nZGIvZGFwL25leHQucHkKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9kYXAvbmV4dC5weQor QEAgLTc2LDcgKzc2LDcgQEAgZGVmIHN0ZXBfaW4oCisgQHJlcXVlc3QoInN0ZXBPdXQiKQorIGRl ZiBzdGVwX291dCgqLCB0aHJlYWRJZDogaW50LCBzaW5nbGVUaHJlYWQ6IGJvb2wgPSBGYWxzZSwg KiphcmdzKToKKyAgICAgX2hhbmRsZV90aHJlYWRfc3RlcCh0aHJlYWRJZCwgc2luZ2xlVGhyZWFk LCBUcnVlKQorLSAgICBleGVjX2FuZF9leHBlY3Rfc3RvcCgiZmluaXNoICYiLCBwcm9wYWdhdGVf ZXhjZXB0aW9uPVRydWUpCisrICAgIGV4ZWNfYW5kX2V4cGVjdF9zdG9wKCJmaW5pc2ggJiIpCisg CisgCisgQHJlcXVlc3QoImNvbnRpbnVlIikKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9n ZGIvZGFwL3NlcnZlci5weSBiL2dkYi9weXRob24vbGliL2dkYi9kYXAvc2VydmVyLnB5CistLS0g YS9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL3NlcnZlci5weQorKysrIGIvZ2RiL3B5dGhvbi9saWIv Z2RiL2RhcC9zZXJ2ZXIucHkKK0BAIC0xOSw2ICsxOSw3IEBAIGltcG9ydCBpbnNwZWN0CisgaW1w b3J0IGpzb24KKyBpbXBvcnQgdGhyZWFkaW5nCisgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250 ZXh0bWFuYWdlcgorK2Zyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorIAorIGltcG9ydCBnZGIK KyAKK0BAIC02MTAsMTEgKzYxMSwyOSBAQCBkZWYgdGVybWluYXRlKCoqYXJncyk6CisgICAgIGV4 ZWNfYW5kX2xvZygia2lsbCIpCisgCisgCisrQGluX2dkYl90aHJlYWQKKytkZWYgX2Rpc2Nvbm5l Y3Rfb3Jfa2lsbCh0ZXJtaW5hdGU6IE9wdGlvbmFsW2Jvb2xdKToKKysgICAgaW5mID0gZ2RiLnNl bGVjdGVkX2luZmVyaW9yKCkKKysgICAgaWYgaW5mLmNvbm5lY3Rpb24gaXMgTm9uZToKKysgICAg ICAgICMgTm90aGluZyB0byBkbyBoZXJlLgorKyAgICAgICAgcmV0dXJuCisrICAgIGlmIHRlcm1p bmF0ZSBpcyBOb25lOgorKyAgICAgICAgIyBUaGUgZGVmYXVsdCBkZXBlbmRzIG9uIHdoZXRoZXIg dGhlIGluZmVyaW9yIHdhcyBhdHRhY2hlZCBvcgorKyAgICAgICAgIyBsYXVuY2hlZC4KKysgICAg ICAgIHRlcm1pbmF0ZSA9IG5vdCBpbmYud2FzX2F0dGFjaGVkCisrCisrICAgIGlmIGluZi5jb3Jl ZmlsZSBpcyBub3QgTm9uZToKKysgICAgICAgIGV4ZWNfYW5kX2xvZygiY29yZS1maWxlIikKKysg ICAgZWxpZiB0ZXJtaW5hdGU6CisrICAgICAgICBleGVjX2FuZF9sb2coImtpbGwiKQorKyAgICBl bGlmIGluZi53YXNfYXR0YWNoZWQ6CisrICAgICAgICBleGVjX2FuZF9sb2coImRldGFjaCIpCisr CisrCisgQHJlcXVlc3QoImRpc2Nvbm5lY3QiLCBvbl9kYXBfdGhyZWFkPVRydWUsIGV4cGVjdF9z dG9wcGVkPUZhbHNlKQorIEBjYXBhYmlsaXR5KCJzdXBwb3J0VGVybWluYXRlRGVidWdnZWUiKQor LWRlZiBkaXNjb25uZWN0KCosIHRlcm1pbmF0ZURlYnVnZ2VlOiBib29sID0gRmFsc2UsICoqYXJn cyk6CistICAgIGlmIHRlcm1pbmF0ZURlYnVnZ2VlOgorLSAgICAgICAgc2VuZF9nZGJfd2l0aF9y ZXNwb25zZSgia2lsbCIpCisrZGVmIGRpc2Nvbm5lY3QoKiwgdGVybWluYXRlRGVidWdnZWU6IE9w dGlvbmFsW2Jvb2xdID0gTm9uZSwgKiphcmdzKToKKysgICAgc2VuZF9nZGJfd2l0aF9yZXNwb25z ZShsYW1iZGE6IF9kaXNjb25uZWN0X29yX2tpbGwodGVybWluYXRlRGVidWdnZWUpKQorICAgICBf c2VydmVyLnNodXRkb3duKCkKKyAKKyAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv ZGFwL3N0YXJ0dXAucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZGFwL3N0YXJ0dXAucHkKKy0tLSBh L2dkYi9weXRob24vbGliL2dkYi9kYXAvc3RhcnR1cC5weQorKysrIGIvZ2RiL3B5dGhvbi9saWIv Z2RiL2RhcC9zdGFydHVwLnB5CitAQCAtMjA0LDcgKzIwNCw3IEBAIGRlZiBsb2dfc3RhY2sobGV2 ZWw9TG9nTGV2ZWwuREVGQVVMVCk6CisgCisgCisgQGluX2dkYl90aHJlYWQKKy1kZWYgZXhlY19h bmRfbG9nKGNtZCwgcHJvcGFnYXRlX2V4Y2VwdGlvbj1GYWxzZSk6CisrZGVmIGV4ZWNfYW5kX2xv ZyhjbWQpOgorICAgICAiIiJFeGVjdXRlIHRoZSBnZGIgY29tbWFuZCBDTUQuCisgICAgIElmIGxv Z2dpbmcgaXMgZW5hYmxlZCwgbG9nIHRoZSBjb21tYW5kIGFuZCBpdHMgb3V0cHV0LiIiIgorICAg ICBsb2coIisrKyAiICsgY21kKQorQEAgLTIxMywxMCArMjEzLDEwIEBAIGRlZiBleGVjX2FuZF9s b2coY21kLCBwcm9wYWdhdGVfZXhjZXB0aW9uPUZhbHNlKToKKyAgICAgICAgIGlmIG91dHB1dCAh PSAiIjoKKyAgICAgICAgICAgICBsb2coIj4+PiAiICsgb3V0cHV0KQorICAgICBleGNlcHQgZ2Ri LmVycm9yIGFzIGU6CistICAgICAgICBpZiBwcm9wYWdhdGVfZXhjZXB0aW9uOgorLSAgICAgICAg ICAgIHJhaXNlIERBUEV4Y2VwdGlvbihzdHIoZSkpIGZyb20gZQorLSAgICAgICAgZWxzZToKKy0g ICAgICAgICAgICBsb2dfc3RhY2soKQorKyAgICAgICAgIyBEb24ndCBub3JtYWxseSB3YW50IHRv IHNlZSB0aGlzLCBhcyBpdCBpbnRlcmZlcmVzIHdpdGggdGhlCisrICAgICAgICAjIHRlc3Qgc3Vp dGUuCisrICAgICAgICBsb2dfc3RhY2soTG9nTGV2ZWwuRlVMTCkKKysgICAgICAgIHJhaXNlIERB UEV4Y2VwdGlvbihzdHIoZSkpIGZyb20gZQorIAorIAorIEBpbl9nZGJfdGhyZWFkCitkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weS1hbGwtZXZlbnRzLmRlZiBiL2dkYi9weXRob24vcHktYWxsLWV2 ZW50cy5kZWYKKy0tLSBhL2dkYi9weXRob24vcHktYWxsLWV2ZW50cy5kZWYKKysrKyBiL2dkYi9w eXRob24vcHktYWxsLWV2ZW50cy5kZWYKK0BAIC00NiwzICs0Niw0IEBAIEdEQl9QWV9ERUZJTkVf RVZFTlQoZXhlY3V0YWJsZV9jaGFuZ2VkKQorIEdEQl9QWV9ERUZJTkVfRVZFTlQobmV3X3Byb2dz cGFjZSkKKyBHREJfUFlfREVGSU5FX0VWRU5UKGZyZWVfcHJvZ3NwYWNlKQorIEdEQl9QWV9ERUZJ TkVfRVZFTlQodHVpX2VuYWJsZWQpCisrR0RCX1BZX0RFRklORV9FVkVOVChjb3JlZmlsZV9jaGFu Z2VkKQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHktY29yZWZpbGUuYyBiL2dkYi9weXRob24v cHktY29yZWZpbGUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi9weXRob24vcHktY29yZWZpbGUuYworQEAgLTAsMCArMSw3MjMgQEAKKysvKiBQeXRob24g aW50ZXJmYWNlIHRvIGNvcmUgZmlsZXMuCisrCisrICAgQ29weXJpZ2h0IChDKSAyMDI1IEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdE Qi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAg IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh bnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2lu Y2x1ZGUgInB5dGhvbi1pbnRlcm5hbC5oIgorKyNpbmNsdWRlICJwcm9nc3BhY2UuaCIKKysjaW5j bHVkZSAib2JzZXJ2YWJsZS5oIgorKyNpbmNsdWRlICJpbmZlcmlvci5oIgorKyNpbmNsdWRlICJn ZGJjb3JlLmgiCisrI2luY2x1ZGUgImdkYnN1cHBvcnQvcnNwLWxvdy5oIgorKyNpbmNsdWRlICJw eS1ldmVudC5oIgorKworKy8qIEEgZ2RiLkNvcmVmaWxlIG9iamVjdC4gICovCisrCisrc3RydWN0 IGNvcmVmaWxlX29iamVjdAorK3sKKysgIFB5T2JqZWN0X0hFQUQKKysKKysgIC8qIFRoZSBpbmZl cmlvciB0aGlzIGNvcmUgZmlsZSBpcyBhdHRhY2hlZCB0by4gIFRoaXMgd2lsbCBiZSBzZXQgdG8g TlVMTAorKyAgICAgd2hlbiB0aGUgaW5mZXJpb3IgaXMgZGVsZXRlZCwgb3IgaWYgYSBkaWZmZXJl bnQgY29yZSBmaWxlIGlzIGxvYWRlZAorKyAgICAgZm9yIHRoZSBpbmZlcmlvci4gIFdoZW4gdGhp cyBpcyBOVUxMIHRoZSBnZGIuQ29yZWZpbGUgb2JqZWN0IGlzCisrICAgICBjb25zaWRlcmVkIGlu dmFsaWQuKi8KKysgIHN0cnVjdCBpbmZlcmlvciAqaW5mZXJpb3I7CisrCisrICAvKiBEaWN0aW9u YXJ5IGhvbGRpbmcgdXNlci1hZGRlZCBhdHRyaWJ1dGVzLiAgVGhpcyBpcyB0aGUgX19kaWN0X18K KysgICAgIGF0dHJpYnV0ZSBvZiB0aGUgb2JqZWN0LiAgVGhpcyBpcyBhbiBvd25pbmcgcmVmZXJl bmNlLiAgKi8KKysgIFB5T2JqZWN0ICpkaWN0OworKworKyAgLyogQSBUdXBsZSBvZiBnZGIuQ29y ZWZpbGVNYXBwZWRGaWxlIG9iamVjdHMuICBUaGlzIHR1cGxlIGlzIG9ubHkgY3JlYXRlZAorKyAg ICAgdGhlIGZpcnN0IHRpbWUgdGhlIHVzZXIgY2FsbHMgZ2RiLkNvcmVmaWxlLm1hcHBlZF9maWxl cygpLCB0aGUgcmVzdWx0CisrICAgICBpcyBjYWNoZWQgaGVyZS4gIElmIHRoaXMgcG9pbnRlciBp cyBub3QgTlVMTCB0aGVuIHRoaXMgaXMgYW4gb3duaW5nCisrICAgICBwb2ludGVyIChpLmUuIHRo aXMgb3ducyBhIHJlZmVyZW5jZSB0byB0aGUgVHVwbGUpLiAgKi8KKysgIFB5T2JqZWN0ICptYXBw ZWRfZmlsZXM7CisrfTsKKysKKytleHRlcm4gUHlUeXBlT2JqZWN0IGNvcmVmaWxlX29iamVjdF90 eXBlCisrICAgIENQWUNIRUNLRVJfVFlQRV9PQkpFQ1RfRk9SX1RZUEVERUYgKCJjb3JlZmlsZV9v YmplY3QiKTsKKysKKysvKiBBIGdkYi5Db3JlZmlsZU1hcHBlZCBvYmplY3QuICAqLworKworK3N0 cnVjdCBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QKKyt7CisrICBQeU9iamVjdF9IRUFECisr CisrICAvKiBUaGUgbmFtZSBvZiBhIGZpbGUgdGhhdCB3YXMgbWFwcGVkIHdoZW4gdGhlIGNvcmUg ZmlsZSB3YXMgY3JlYXRlZC4KKysgICAgIFRoaXMgaXMgYSAnc3RyJyBvYmplY3QuICAqLworKyAg UHlPYmplY3QgKmZpbGVuYW1lOworKworKyAgLyogVGhlIGJ1aWxkLWlkIG9mIGEgZmlsZSB0aGF0 IHdhcyBtYXBwZWQgd2hlbiB0aGUgY29yZSBmaWxlIHdhcworKyAgICAgY3JlYXRlZC4gIFRoaXMg aXMgZWl0aGVyIGEgJ3N0cicgaWYgdGhlIGZpbGUgaGFkIGEgYnVpbGQtaWQsIG9yCisrICAgICAn Tm9uZScgaWYgdGhlcmUgd2FzIG5vIGJ1aWxkLWlkIGZvciB0aGlzIGZpbGUuICAqLworKyAgUHlP YmplY3QgKmJ1aWxkX2lkOworKworKyAgLyogQSBMaXN0IG9mIGdkYi5Db3JlZmlsZU1hcHBlZEZp bGVSZWdpb24gb2JqZWN0cy4gICovCisrICBQeU9iamVjdCAqcmVnaW9uczsKKysKKysgIC8qIFRy dWUgaWYgdGhpcyByZXByZXNlbnRzIHRoZSBtYWluIGV4ZWN1dGFibGUgZnJvbSB3aGljaCB0aGUg Y29yZSBmaWxlCisrICAgICB3YXMgY3JlYXRlZC4gICovCisrICBib29sIGlzX21haW5fZXhlY19w OworK307CisrCisrZXh0ZXJuIFB5VHlwZU9iamVjdCBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmpl Y3RfdHlwZQorKyAgICBDUFlDSEVDS0VSX1RZUEVfT0JKRUNUX0ZPUl9UWVBFREVGICgiY29yZWZp bGVfbWFwcGVkX2ZpbGVfb2JqZWN0Iik7CisrCisrLyogQSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxl UmVnaW9uIG9iamVjdC4gICovCisrCisrc3RydWN0IGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lv bl9vYmplY3QKKyt7CisrICBQeU9iamVjdF9IRUFECisrCisrICAvKiBUaGUgc3RhcnQgYW5kIGVu ZCBhZGRyZXNzZXMgZm9yIHRoaXMgbWFwcGluZywgdGhlc2UgYXJlIGFkZHJlc3NlcworKyAgICAg d2l0aGluIHRoZSBpbmZlcmlvcidzIGFkZHJlc3Mgc3BhY2UuICAqLworKyAgQ09SRV9BRERSIHN0 YXJ0OworKyAgQ09SRV9BRERSIGVuZDsKKysKKysgIC8qIFRoZSBvZmZzZXQgd2l0aGluIHRoZSBt YXBwZWQgZmlsZSBmb3IgdGhpcyBtYXBwaW5nLiAgKi8KKysgIFVMT05HRVNUIGZpbGVfb2Zmc2V0 OworK307CisrCisrZXh0ZXJuIFB5VHlwZU9iamVjdCBjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdp b25fb2JqZWN0X3R5cGUKKysgICAgQ1BZQ0hFQ0tFUl9UWVBFX09CSkVDVF9GT1JfVFlQRURFRiAo ImNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3QiKTsKKysKKysvKiBDbGVhciB0aGUg aW5mZXJpb3IgcG9pbnRlciBpbiBhIENvcmVmaWxlIG9iamVjdCBPQkogd2hlbiBhbiBpbmZlcmlv ciBpcworKyAgIGRlbGV0ZWQuICAqLworKworK3N0cnVjdCBpbmZlcmlvcl9jb3JlZmlsZV9kZWxl dGVyCisreworKyAgdm9pZCBvcGVyYXRvcigpIChjb3JlZmlsZV9vYmplY3QgKm9iaikKKysgIHsK KysgICAgaWYgKCFnZGJfcHl0aG9uX2luaXRpYWxpemVkKQorKyAgICAgIHJldHVybjsKKysKKysg ICAgZ2RicHlfZW50ZXIgZW50ZXJfcHk7CisrCisrICAgIC8qIFdoZW4gT0JKRUNUIGdvZXMgb3V0 IG9mIHNjb3BlIHRoaXMgd2lsbCBQeV9ERUNSRUYgb24gT0JKLiAgKi8KKysgICAgZ2RicHlfcmVm PGNvcmVmaWxlX29iamVjdD4gb2JqZWN0IChvYmopOworKworKyAgICAvKiBDbGVhcmluZyB0aGUg aW5mZXJpb3IgcG9pbnRlciBtYXJrcyB0aGUgZ2RiLkNvcmVmaWxlIGFzIGludmFsaWQuICAqLwor KyAgICBvYmplY3QtPmluZmVyaW9yID0gbnVsbHB0cjsKKysgIH0KKyt9OworKworKy8qIFN0b3Jl IGEgZ2RiLkNvcmVmaWxlIG9iamVjdCBpbiBhbiBpbmZlcmlvcidzIHJlZ2lzdHJ5LiAgKi8KKysK KytzdGF0aWMgY29uc3QgcmVnaXN0cnk8aW5mZXJpb3I+OjprZXk8Y29yZWZpbGVfb2JqZWN0LAor KwkJCQkgICAgIGluZmVyaW9yX2NvcmVmaWxlX2RlbGV0ZXI+CisrICAgICBjZnB5X2luZmVyaW9y X2NvcmVmaWxlX2RhdGFfa2V5OworKworKy8qIFNlZSBweXRob24taW50ZXJuYWwuaC4gICovCisr CisrZ2RicHlfcmVmPD4KKytnZGJweV9jb3JlX2ZpbGVfZnJvbV9pbmZlcmlvciAoaW5mZXJpb3Ig KmluZikKKyt7CisrICBnZGJfYXNzZXJ0IChpbmYgIT0gbnVsbHB0cik7CisrICBnZGJfYXNzZXJ0 IChpbmYtPnBzcGFjZSAhPSBudWxscHRyKTsKKysKKysgIHByb2dyYW1fc3BhY2UgKnBzcGFjZSA9 IGluZi0+cHNwYWNlOworKworKyAgaWYgKHBzcGFjZS0+Y29yZV9iZmQgKCkgPT0gbnVsbHB0cikK KysgICAgcmV0dXJuIGdkYnB5X3JlZjw+OjpuZXdfcmVmZXJlbmNlIChQeV9Ob25lKTsKKysKKysg IFB5T2JqZWN0ICpyZXN1bHQgPSAoUHlPYmplY3QgKikgY2ZweV9pbmZlcmlvcl9jb3JlZmlsZV9k YXRhX2tleS5nZXQgKGluZik7CisrICBpZiAocmVzdWx0ID09IG51bGxwdHIpCisrICAgIHsKKysg ICAgICBnZGJweV9yZWY8Y29yZWZpbGVfb2JqZWN0PiBvYmplY3QKKysJKFB5T2JqZWN0X05ldyAo Y29yZWZpbGVfb2JqZWN0LCAmY29yZWZpbGVfb2JqZWN0X3R5cGUpKTsKKysgICAgICBpZiAob2Jq ZWN0ID09IG51bGxwdHIpCisrCXJldHVybiBudWxscHRyOworKworKyAgICAgIC8qIEVuc3VyZSB0 aGUgJ2luZmVyaW9yJyBmaWVsZCBpcyBzZXQgdG8gTlVMTC4gIElmIHRoZSBQeURpY3RfTmV3Cisr CSBjYWxsIGZhaWxzIHRoZW4gdGhlIGdkYi5Db3JlZmlsZSB3aWxsIGJlIGRpc2NhcmRlZCBhbmQK KysJIGNmcHlfZGVhbGxvYyB3aWxsIGJlIGNhbGxlZCwgd2hpY2ggcmVxdWlyZXMgdGhhdCB0aGUg J2luZmVyaW9yJyBiZQorKwkgc2V0IHRvIE5VTEwuICAqLworKyAgICAgIG9iamVjdC0+aW5mZXJp b3IgPSBudWxscHRyOworKyAgICAgIG9iamVjdC0+bWFwcGVkX2ZpbGVzID0gbnVsbHB0cjsKKysg ICAgICBvYmplY3QtPmRpY3QgPSBQeURpY3RfTmV3ICgpOworKyAgICAgIGlmIChvYmplY3QtPmRp Y3QgPT0gbnVsbHB0cikKKysJcmV0dXJuIG51bGxwdHI7CisrCisrICAgICAgLyogTm93IHRoYXQg dGhlIGdkYi5Db3JlZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgaW5pdGlhbGlzZWQgYW5kIHdl CisrCSBrbm93IHRoYXQgaXQgaXMgZ29pbmcgdG8gYmUgcGFzc2VkIGJhY2sgdG8gdGhlIHVzZXIs IG1vdmUgaXQgb3V0CisrCSBvZiB0aGUgaW52YWxpZCBzdGF0ZSBieSBzZXR0aW5nIHRoZSAnaW5m ZXJpb3InIGZpZWxkIHRvIGEgbm9uIE5VTEwKKysJIHZhbHVlLiAgKi8KKysgICAgICBvYmplY3Qt PmluZmVyaW9yID0gaW5mOworKyAgICAgIGNmcHlfaW5mZXJpb3JfY29yZWZpbGVfZGF0YV9rZXku c2V0IChpbmYsIG9iamVjdC5nZXQgKCkpOworKyAgICAgIHJlc3VsdCA9IChQeU9iamVjdCAqKSBv YmplY3QucmVsZWFzZSAoKTsKKysgICAgfQorKworKyAgcmV0dXJuIGdkYnB5X3JlZjw+OjpuZXdf cmVmZXJlbmNlIChyZXN1bHQpOworK30KKysKKysvKiBSZXR1cm4gdHJ1ZSBpZiBPQkogaXMgdmFs aWQuICAqLworKworK3N0YXRpYyBib29sCisrY2ZweV9jb3JlZmlsZV9vYmplY3RfaXNfdmFsaWQg KGNvbnN0IGNvcmVmaWxlX29iamVjdCAqb2JqKQorK3sKKysgIGlmIChvYmotPmluZmVyaW9yID09 IG51bGxwdHIpCisrICAgIHJldHVybiBmYWxzZTsKKysKKysgIGdkYl9hc3NlcnQgKG9iai0+aW5m ZXJpb3ItPnBzcGFjZSAhPSBudWxscHRyKTsKKysKKysgIHJldHVybiBvYmotPmluZmVyaW9yLT5w c3BhY2UtPmNvcmVfYmZkICgpICE9IG51bGxwdHI7CisrfQorKworKy8qIFJlcXVpcmUgdGhhdCBD T1JFRklMRV9PQkogYmUgYSB2YWxpZCBjb3JlIGZpbGUuICBBIHZhbGlkIGNvcmUgZmlsZQorKyAg IG9iamVjdCBoYXMgYSB2YWxpZCBwcm9ncmFtIHNwYWNlLCBhbmQgdGhlIHByb2dyYW0gc3BhY2Ug aGFzIGEgY29yZSBmaWxlCisrICAgbG9hZGVkIGludG8gaXQuICAqLworKyNkZWZpbmUgQ0ZQWV9S RVFVSVJFX1ZBTElEKGNvcmVmaWxlX29iaikJCQkJXAorKyAgZG8gewkJCQkJCQkJCVwKKysgICAg aWYgKCFjZnB5X2NvcmVmaWxlX29iamVjdF9pc192YWxpZCAoY29yZWZpbGVfb2JqKSkJCQlcCisr ICAgICAgewkJCQkJCQkJCVwKKysJUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19SdW50aW1lRXJyb3Is CQkJCVwKKysJCQkgXygiQ29yZWZpbGUgbm8gbG9uZ2VyIGV4aXN0cy4iKSk7CQlcCisrCXJldHVy biBudWxscHRyOwkJCQkJCQlcCisrICAgICAgfQkJCQkJCQkJCVwKKysgIH0gd2hpbGUgKDApCisr CisrLyogUmVhZCB0aGUgZ2RiLkNvcmVmaWxlLmZpbGVuYW1lIGF0dHJpYnV0ZS4gICovCisrCisr c3RhdGljIFB5T2JqZWN0ICoKKytjZnB5X2dldF9maWxlbmFtZSAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpCisreworKyAgY29yZWZpbGVfb2JqZWN0ICpvYmogPSAoY29yZWZpbGVfb2Jq ZWN0ICopIHNlbGY7CisrCisrICBDRlBZX1JFUVVJUkVfVkFMSUQgKG9iaik7CisrCisrICAvKiBJ ZiB0aGUgcHJvZ3JhbSBzcGFjZSdzIGNvcmUgZmlsZSBoYWQgYmVlbiBjbGVhcmVkLCB0aGVuIHRo aXMgQ29yZWZpbGUKKysgICAgIG9iamVjdCB3b3VsZCBoYXZlIGJlZW4gaW52YWxpZGF0ZWQuICAq LworKyAgYmZkICphYmZkID0gb2JqLT5pbmZlcmlvci0+cHNwYWNlLT5jb3JlX2JmZCAoKTsKKysg IGdkYl9hc3NlcnQgKGFiZmQgIT0gbnVsbHB0cik7CisrCisrICByZXR1cm4gaG9zdF9zdHJpbmdf dG9fcHl0aG9uX3N0cmluZyAoYmZkX2dldF9maWxlbmFtZSAoYWJmZCkpLnJlbGVhc2UgKCk7Cisr fQorKworKy8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi5Db3JlZmlsZS5pc192YWxpZCAoc2VsZikg LT4gQm9vbGVhbi4KKysgICBSZXR1cm5zIFRydWUgaWYgdGhpcyBjb3JlIGZpbGUgb2JqZWN0IGlz IGFzc29jaWF0ZWQgd2l0aCBhIHByb2dyYW0gc3BhY2UKKysgICB0aGF0IHN0aWxsIGV4aXN0cywg YW4gdGhlIHByb2dyYW0gc3BhY2Ugc3RpbGwgaGFzIGEgY29yZSBmaWxlIGxvYWRlZC4gICovCisr Cisrc3RhdGljIFB5T2JqZWN0ICoKKytjZnB5X2lzX3ZhbGlkIChQeU9iamVjdCAqc2VsZiwgUHlP YmplY3QgKmFyZ3MpCisreworKyAgY29yZWZpbGVfb2JqZWN0ICpvYmogPSAoY29yZWZpbGVfb2Jq ZWN0ICopIHNlbGY7CisrCisrICBpZiAoIWNmcHlfY29yZWZpbGVfb2JqZWN0X2lzX3ZhbGlkIChv YmopKQorKyAgICBQeV9SRVRVUk5fRkFMU0U7CisrCisrICBQeV9SRVRVUk5fVFJVRTsKKyt9Cisr CisrLyogSW1wbGVtZW50IGdkYi5Db3JlZmlsZS5tYXBwZWRfZmlsZXMgKCkuICBSZXR1cm4gYSBM aXN0IG9mCisrICAgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3RzLiAgVGhlIGxpc3QgaXMg Y3JlYXRlZCB0aGUgZmlyc3QgdGltZQorKyAgIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgYW5kIHRo ZW4gY2FjaGVkIHdpdGhpbiB0aGUgZ2RiLkNvcmVmaWxlIG9iamVjdCwKKysgICBmdXR1cmUgY2Fs bHMganVzdCByZXR1cm4gYSByZWZlcmVuY2UgdG8gdGhlIHNhbWUgbGlzdC4gICovCisrCisrc3Rh dGljIFB5T2JqZWN0ICoKKytjZnB5X21hcHBlZF9maWxlcyAoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKQorK3sKKysgIGNvcmVmaWxlX29iamVjdCAqb2JqID0gKGNvcmVmaWxlX29iamVj dCAqKSBzZWxmOworKworKyAgQ0ZQWV9SRVFVSVJFX1ZBTElEIChvYmopOworKworKyAgLyogSWYg d2UgaGF2ZSBhbHJlYWR5IGNyZWF0ZWQgdGhlIExpc3QgdGhlbiBqdXN0IHJldHVybiBhbm90aGVy IHJlZmVyZW5jZQorKyAgICAgdG8gdGhlIGV4aXN0aW5nIGxpc3QuICAqLworKyAgaWYgKG9iai0+ bWFwcGVkX2ZpbGVzICE9IG51bGxwdHIpCisrICAgIHsKKysgICAgICBQeV9JTkNSRUYgKG9iai0+ bWFwcGVkX2ZpbGVzKTsKKysgICAgICByZXR1cm4gb2JqLT5tYXBwZWRfZmlsZXM7CisrICAgIH0K KysKKysgIC8qIEdldCBhbGwgdGhlIG1hcHBpbmcgZGF0YSBmcm9tIEdEQi4gICovCisrICBzdGQ6 OnZlY3Rvcjxjb3JlX21hcHBlZF9maWxlPiBtYXBwZWRfZmlsZXM7CisrICB0cnkKKysgICAgewor KyAgICAgIG1hcHBlZF9maWxlcworKwk9IGdkYl9yZWFkX2NvcmVfZmlsZV9tYXBwaW5ncyAob2Jq LT5pbmZlcmlvci0+YXJjaCAoKSwKKysJCQkJICAgICAgIGN1cnJlbnRfcHJvZ3JhbV9zcGFjZS0+ Y29yZV9iZmQgKCkpOworKyAgICB9CisrICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlvbiAmZXhj ZXB0KQorKyAgICB7CisrICAgICAgcmV0dXJuIGdkYnB5X2hhbmRsZV9nZGJfZXhjZXB0aW9uIChu dWxscHRyLCBleGNlcHQpOworKyAgICB9CisrCisrICAvKiBDcmVhdGUgYSBuZXcgbGlzdCB0byBo b2xkIHRoZSByZXN1bHRzLiAgKi8KKysgIGdkYnB5X3JlZjw+IHR1cGxlIChQeVR1cGxlX05ldyAo bWFwcGVkX2ZpbGVzLnNpemUgKCkpKTsKKysgIGlmICh0dXBsZSA9PSBudWxscHRyKQorKyAgICBy ZXR1cm4gbnVsbHB0cjsKKysKKysgIC8qIENyZWF0ZSBlYWNoIGdkYi5Db3JlZmlsZU1hcHBlZEZp bGUgb2JqZWN0LiAgKi8KKysgIFB5X3NzaXplX3QgdHVwbGVfaWR4ID0gMDsKKysgIGZvciAoY29u c3QgY29yZV9tYXBwZWRfZmlsZSAmZmlsZSA6IG1hcHBlZF9maWxlcykKKysgICAgeworKyAgICAg IC8qIFRoZSBmaWxlbmFtZSAnc3RyJyBvYmplY3QuICAqLworKyAgICAgIGdkYnB5X3JlZjw+IGZp bGVuYW1lCisrCT0gaG9zdF9zdHJpbmdfdG9fcHl0aG9uX3N0cmluZyAoZmlsZS5maWxlbmFtZS5j X3N0ciAoKSk7CisrICAgICAgaWYgKGZpbGVuYW1lID09IG51bGxwdHIpCisrCXJldHVybiBudWxs cHRyOworKworKyAgICAgIC8qIFRoZSBidWlsZC1pZCBvYmplY3QuICBFaXRoZXIgYSAnc3RyJyBv ciAnTm9uZScuICAqLworKyAgICAgIGdkYnB5X3JlZjw+IGJ1aWxkX2lkOworKyAgICAgIGlmIChm aWxlLmJ1aWxkX2lkICE9IG51bGxwdHIpCisrCXsKKysJICBzdGQ6OnN0cmluZyBoZXhfZm9ybSA9 IGJpbjJoZXggKGZpbGUuYnVpbGRfaWQtPmRhdGEsCisrCQkJCQkgIGZpbGUuYnVpbGRfaWQtPnNp emUpOworKworKwkgIGJ1aWxkX2lkCisrCSAgICA9IGhvc3Rfc3RyaW5nX3RvX3B5dGhvbl9zdHJp bmcgKGhleF9mb3JtLmNfc3RyICgpKTsKKysJICBpZiAoYnVpbGRfaWQgPT0gbnVsbHB0cikKKysJ ICAgIHJldHVybiBudWxscHRyOworKwl9CisrICAgICAgZWxzZQorKwlidWlsZF9pZCA9IGdkYnB5 X3JlZjw+OjpuZXdfcmVmZXJlbmNlIChQeV9Ob25lKTsKKysKKysgICAgICAvKiBMaXN0IHRvIGhv bGQgYWxsIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9uIG9iamVjdHMuICAqLworKyAg ICAgIGdkYnB5X3JlZjw+IHJlZ2lvbnMgKFB5VHVwbGVfTmV3IChmaWxlLnJlZ2lvbnMuc2l6ZSAo KSkpOworKyAgICAgIGlmIChyZWdpb25zID09IG51bGxwdHIpCisrCXJldHVybiBudWxscHRyOwor KworKyAgICAgIC8qIENyZWF0ZSBhbGwgdGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVSZWdpb24g b2JqZWN0cy4gICovCisrICAgICAgUHlfc3NpemVfdCByZWdpb25zX2lkeCA9IDA7CisrICAgICAg Zm9yIChjb25zdCBjb3JlX21hcHBlZF9maWxlOjpyZWdpb24gJnIgOiBmaWxlLnJlZ2lvbnMpCisr CXsKKysJICAvKiBBY3R1YWxseSBjcmVhdGUgdGhlIG9iamVjdC4gICovCisrCSAgZ2RicHlfcmVm PGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3Q+IHJlZ2lvbl9vYmoKKysJICAgIChQ eU9iamVjdF9OZXcgKGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3QsCisrCQkJICAg JmNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3RfdHlwZSkpOworKwkgIGlmIChyZWdp b25fb2JqID09IG51bGxwdHIpCisrCSAgICByZXR1cm4gbnVsbHB0cjsKKysKKysJICAvKiBJbml0 aWFsaXNlIHRoZSBvYmplY3QuICAqLworKwkgIHJlZ2lvbl9vYmotPnN0YXJ0ID0gci5zdGFydDsK KysJICByZWdpb25fb2JqLT5lbmQgPSByLmVuZDsKKysJICByZWdpb25fb2JqLT5maWxlX29mZnNl dCA9IHIuZmlsZV9vZnM7CisrCisrCSAgLyogQWRkIHRvIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRG aWxlUmVnaW9uIGxpc3QuICAqLworKwkgIGlmIChQeVR1cGxlX1NldEl0ZW0gKHJlZ2lvbnMuZ2V0 ICgpLCByZWdpb25zX2lkeCsrLAorKwkJCSAgICAgICAoUHlPYmplY3QgKikgcmVnaW9uX29iai5y ZWxlYXNlICgpKSA8IDApCisrCSAgICByZXR1cm4gbnVsbHB0cjsKKysJfQorKworKyAgICAgIC8q IEFjdHVhbGx5IGNyZWF0ZSB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3QuICAqLwor KyAgICAgIGdkYnB5X3JlZjxjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3Q+IGVudHJ5CisrCShQ eU9iamVjdF9OZXcgKGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCwKKysJCSAgICAgICAmY29y ZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0X3R5cGUpKTsKKysgICAgICBpZiAoZW50cnkgPT0gbnVs bHB0cikKKysJcmV0dXJuIG51bGxwdHI7CisrCisrICAgICAgLyogSW5pdGlhbGlzZSB0aGUgb2Jq ZWN0LiAgKi8KKysgICAgICBlbnRyeS0+ZmlsZW5hbWUgPSBmaWxlbmFtZS5yZWxlYXNlICgpOwor KyAgICAgIGVudHJ5LT5idWlsZF9pZCA9IGJ1aWxkX2lkLnJlbGVhc2UgKCk7CisrICAgICAgZW50 cnktPnJlZ2lvbnMgPSByZWdpb25zLnJlbGVhc2UgKCk7CisrICAgICAgZW50cnktPmlzX21haW5f ZXhlY19wID0gZmlsZS5pc19tYWluX2V4ZWM7CisrCisrICAgICAgLyogQWRkIHRvIHRoZSBnZGIu Q29yZWZpbGVNYXBwZWRGaWxlIGxpc3QuICAqLworKyAgICAgIGlmIChQeVR1cGxlX1NldEl0ZW0g KHR1cGxlLmdldCAoKSwgdHVwbGVfaWR4KyssCisrCQkJICAgKFB5T2JqZWN0ICopIGVudHJ5LnJl bGVhc2UgKCkpIDwgMCkKKysJcmV0dXJuIG51bGxwdHI7CisrICAgIH0KKysKKysgIC8qIE5vIGVy cm9ycy4gIE1vdmUgdGhlIHJlZmVyZW5jZSBjdXJyZW50bHkgaW4gTElTVCBpbnRvIHRoZSBDb3Jl ZmlsZQorKyAgICAgb2JqZWN0IGl0c2VsZi4gIFRoZW4gY3JlYXRlIGEgbmV3IHJlZmVyZW5jZSBh bmQgaGFuZCB0aGlzIGJhY2sgdG8gdGhlCisrICAgICB1c2VyLiAgKi8KKysgIG9iai0+bWFwcGVk X2ZpbGVzID0gdHVwbGUucmVsZWFzZSAoKTsKKysgIFB5X0lOQ1JFRiAob2JqLT5tYXBwZWRfZmls ZXMpOworKyAgcmV0dXJuIG9iai0+bWFwcGVkX2ZpbGVzOworK30KKysKKysvKiBFbWl0IGEgQ29y ZWZpbGVDaGFuZ2VkRXZlbnQgZXZlbnQsIElORiBpcyB0aGUgaW5mZXJpb3IgaW4gd2hpY2ggdGhl IGNvcmUKKysgICBmaWxlIGNoYW5nZWQuICBSZXR1cm4gMCBvbiBzdWNjZXNzLCBvciBhIG5lZ2F0 aXZlIHZhbHVlIG9uIGVycm9yLiAgKi8KKysKKytzdGF0aWMgaW50CisrZW1pdF9jb3JlZmlsZV9j aGFuZ2VkX2V2ZW50IChpbmZlcmlvciAqaW5mKQorK3sKKysgIC8qIElmIHRoZXJlIGFyZSBubyBs aXN0ZW5lcnMgdGhlbiB3ZSBhcmUgZG9uZS4gICovCisrICBpZiAoZXZyZWdweV9ub19saXN0ZW5l cnNfcCAoZ2RiX3B5X2V2ZW50cy5jb3JlZmlsZV9jaGFuZ2VkKSkKKysgICAgcmV0dXJuIDA7Cisr CisrICBnZGJweV9yZWY8PiBldmVudF9vYmoKKysgICAgPSBjcmVhdGVfZXZlbnRfb2JqZWN0ICgm Y29yZWZpbGVfY2hhbmdlZF9ldmVudF9vYmplY3RfdHlwZSk7CisrICBpZiAoZXZlbnRfb2JqID09 IG51bGxwdHIpCisrICAgIHJldHVybiAtMTsKKysKKysgIGdkYnB5X3JlZjxpbmZlcmlvcl9vYmpl Y3Q+IGluZl9vYmogPSBpbmZlcmlvcl90b19pbmZlcmlvcl9vYmplY3QgKGluZik7CisrICBpZiAo aW5mX29iaiA9PSBudWxscHRyCisrICAgICAgfHwgZXZweV9hZGRfYXR0cmlidXRlIChldmVudF9v YmouZ2V0ICgpLCAiaW5mZXJpb3IiLAorKwkJCSAgICAgKFB5T2JqZWN0ICopIGluZl9vYmouZ2V0 ICgpKSA8IDApCisrICAgIHJldHVybiAtMTsKKysKKysgIHJldHVybiBldnB5X2VtaXRfZXZlbnQg KGV2ZW50X29iai5nZXQgKCksIGdkYl9weV9ldmVudHMuY29yZWZpbGVfY2hhbmdlZCk7CisrfQor KworKy8qIENhbGxiYWNrIGZyb20gZ2RiOjpvYnNlcnZlcnM6OmNvcmVfZmlsZV9jaGFuZ2VkLiAg VGhlIGNvcmUgZmlsZSBmb3IKKysgICBJTkYgaGFzIGJlZW4gY2hhbmdlZC4gICovCisrCisrc3Rh dGljIHZvaWQKKytjZnB5X2NvcmVmaWxlX2NoYW5nZWQgKGluZmVyaW9yICppbmYpCisreworKyAg LyogSXQncyBzYWZlIHRvIGRvIHRoaXMgZXZlbiBpZiBQeXRob24gaXMgbm90IGluaXRpYWxpemVk LCBidXQgdGhlcmUKKysgICAgIHNob3VsZCBiZSBub3RoaW5nIHRvIGNsZWFyIGluIHRoYXQgY2Fz ZS4gICovCisrICBjZnB5X2luZmVyaW9yX2NvcmVmaWxlX2RhdGFfa2V5LmNsZWFyIChpbmYpOwor KworKyAgaWYgKCFnZGJfcHl0aG9uX2luaXRpYWxpemVkKQorKyAgICByZXR1cm47CisrCisrICBn ZGJweV9lbnRlciBlbnRlcl9weTsKKysKKysgIGlmIChlbWl0X2NvcmVmaWxlX2NoYW5nZWRfZXZl bnQgKGluZikgPCAwKQorKyAgICBnZGJweV9wcmludF9zdGFjayAoKTsKKyt9CisrCisrLyogQ2Fs bGVkIHdoZW4gYSBnZGIuQ29yZWZpbGUgaXMgZGVzdHJveWVkLiAgKi8KKysKKytzdGF0aWMgdm9p ZAorK2NmcHlfZGVhbGxvYyAoUHlPYmplY3QgKm9iaikKKyt7CisrICBjb3JlZmlsZV9vYmplY3Qg KmNvcmVmaWxlID0gKGNvcmVmaWxlX29iamVjdCAqKSBvYmo7CisrCisrICAvKiBFdmVyeSBnZGIu Q29yZWZpbGUgaXMgY2FjaGVkIGluIGFuIGluZmVyaW9yJ3MgcmVnaXN0cnkuICBUaGUgb25seSB3 YXkKKysgICAgIGZvciBhIGdkYi5Db3JlZmlsZSB0byBiZSBkZWFsbG9jYXRlZCBpcyB0byByZW1v dmUgdGhlIG9iamVjdCByZWZlcmVuY2UKKysgICAgIGZyb20gdGhlIHJlZ2lzdHJ5IChhbmQgZGVj IGl0cyByZWYgY291bnQpLCBidXQgYmVmb3JlIHdlIGRvIHRoYXQsIHdlCisrICAgICBzZXQgdGhl IG9iamVjdCdzIGluZmVyaW9yIHBvaW50ZXIgdG8gTlVMTC4gICovCisrICBnZGJfYXNzZXJ0IChj b3JlZmlsZS0+aW5mZXJpb3IgPT0gbnVsbHB0cik7CisrCisrICBQeV9YREVDUkVGIChjb3JlZmls ZS0+ZGljdCk7CisrICBQeV9YREVDUkVGIChjb3JlZmlsZS0+bWFwcGVkX2ZpbGVzKTsKKysKKysg IFB5X1RZUEUgKG9iaiktPnRwX2ZyZWUgKG9iaik7CisrfQorKworKy8qIF9fcmVwcl9fIGltcGxl bWVudGF0aW9uIGZvciBnZGIuQ29yZWZpbGUuICAqLworKworK3N0YXRpYyBQeU9iamVjdCAqCisr Y2ZweV9yZXByIChQeU9iamVjdCAqc2VsZikKKyt7CisrICBjb3JlZmlsZV9vYmplY3QgKm9iaiA9 IChjb3JlZmlsZV9vYmplY3QgKikgc2VsZjsKKysKKysgIGlmICghY2ZweV9jb3JlZmlsZV9vYmpl Y3RfaXNfdmFsaWQgKG9iaikpCisrICAgIHJldHVybiBnZGJfcHlfaW52YWxpZF9vYmplY3RfcmVw ciAoc2VsZik7CisrCisrICBwcm9ncmFtX3NwYWNlICpwc3BhY2UgPSBvYmotPmluZmVyaW9yLT5w c3BhY2U7CisrICBnZGJfYXNzZXJ0IChwc3BhY2UgIT0gbnVsbHB0cik7CisrICByZXR1cm4gUHlV bmljb2RlX0Zyb21Gb3JtYXQgKCI8JXMgaW5mZXJpb3I9JWQgZmlsZW5hbWU9JyVzJz4iLAorKwkJ CSAgICAgICBQeV9UWVBFIChzZWxmKS0+dHBfbmFtZSwKKysJCQkgICAgICAgb2JqLT5pbmZlcmlv ci0+bnVtLAorKwkJCSAgICAgICBiZmRfZ2V0X2ZpbGVuYW1lIChwc3BhY2UtPmNvcmVfYmZkICgp KSk7CisrfQorKworKwwKKysKKysvKiBDYWxsZWQgd2hlbiBhIGdkYi5Db3JlZmlsZU1hcHBlZEZp bGUgaXMgZGVzdHJveWVkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2NmbWZweV9kZWFsbG9jIChQ eU9iamVjdCAqb2JqKQorK3sKKysgIGNvcmVmaWxlX21hcHBlZF9maWxlX29iamVjdCAqbWFwcGVk X2ZpbGUKKysgICAgPSAoY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICopIG9iajsKKysKKysg IFB5X1hERUNSRUYgKG1hcHBlZF9maWxlLT5maWxlbmFtZSk7CisrICBQeV9YREVDUkVGIChtYXBw ZWRfZmlsZS0+YnVpbGRfaWQpOworKyAgUHlfWERFQ1JFRiAobWFwcGVkX2ZpbGUtPnJlZ2lvbnMp OworKworKyAgUHlfVFlQRSAob2JqKS0+dHBfZnJlZSAob2JqKTsKKyt9CisrCisrLyogUmVhZCB0 aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZS5maWxlbmFtZSBhdHRyaWJ1dGUuICAqLworKworK3N0 YXRpYyBQeU9iamVjdCAqCisrY2ZtZnB5X2dldF9maWxlbmFtZSAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpCisreworKyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICpvYmoKKysg ICAgPSAoY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBnZGJfYXNz ZXJ0IChvYmotPmZpbGVuYW1lICE9IG51bGxwdHIpOworKworKyAgUHlfSU5DUkVGIChvYmotPmZp bGVuYW1lKTsKKysgIHJldHVybiBvYmotPmZpbGVuYW1lOworK30KKysKKysvKiBSZWFkIHRoZSBn ZGIuQ29yZWZpbGVNYXBwZWRGaWxlLmJ1aWxkX2lkIGF0dHJpYnV0ZS4gICovCisrCisrc3RhdGlj IFB5T2JqZWN0ICoKKytjZm1mcHlfZ2V0X2J1aWxkX2lkIChQeU9iamVjdCAqc2VsZiwgdm9pZCAq Y2xvc3VyZSkKKyt7CisrICBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QgKm9iagorKyAgICA9 IChjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QgKikgc2VsZjsKKysKKysgIGdkYl9hc3NlcnQg KG9iai0+YnVpbGRfaWQgIT0gbnVsbHB0cik7CisrCisrICBQeV9JTkNSRUYgKG9iai0+YnVpbGRf aWQpOworKyAgcmV0dXJuIG9iai0+YnVpbGRfaWQ7CisrfQorKworKy8qIFJlYWQgdGhlIGdkYi5D b3JlZmlsZU1hcHBlZEZpbGUucmVnaW9ucyBhdHRyaWJ1dGUuICAqLworKworK3N0YXRpYyBQeU9i amVjdCAqCisrY2ZtZnB5X2dldF9yZWdpb25zIChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3Vy ZSkKKyt7CisrICBjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QgKm9iagorKyAgICA9IChjb3Jl ZmlsZV9tYXBwZWRfZmlsZV9vYmplY3QgKikgc2VsZjsKKysKKysgIGdkYl9hc3NlcnQgKG9iai0+ cmVnaW9ucyAhPSBudWxscHRyKTsKKysKKysgIFB5X0lOQ1JFRiAob2JqLT5yZWdpb25zKTsKKysg IHJldHVybiBvYmotPnJlZ2lvbnM7CisrfQorKworKy8qIFJlYWQgdGhlIGdkYi5Db3JlZmlsZU1h cHBlZEZpbGUuaXNfbWFpbl9leGVjdXRhYmxlIGF0dHJpYnV0ZS4gICovCisrCisrc3RhdGljIFB5 T2JqZWN0ICoKKytjZm1mX2lzX21haW5fZXhlYyAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1 cmUpCisreworKyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICpvYmoKKysgICAgPSAoY29y ZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0ICopIHNlbGY7CisrCisrICBpZiAob2JqLT5pc19tYWlu X2V4ZWNfcCkKKysgICAgUHlfUkVUVVJOX1RSVUU7CisrICBlbHNlCisrICAgIFB5X1JFVFVSTl9G QUxTRTsKKyt9CisrCisrDAorKworKy8qIFJlYWQgdGhlIGdkYi5Db3JlZmlsZU1hcHBlZEZpbGVS ZWdpb24uc3RhcnQgYXR0cmlidXRlLiAgKi8KKysKKytzdGF0aWMgUHlPYmplY3QgKgorK2NmbWZy cHlfZ2V0X3N0YXJ0IChQeU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyt7CisrICBjb3Jl ZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0ICpvYmoKKysgICAgPSAoY29yZWZpbGVfbWFw cGVkX2ZpbGVfcmVnaW9uX29iamVjdCAqKSBzZWxmOworKworKyAgcmV0dXJuIGdkYl9weV9vYmpl Y3RfZnJvbV91bG9uZ2VzdCAob2JqLT5zdGFydCkucmVsZWFzZSAoKTsKKyt9CisrCisrLyogUmVh ZCB0aGUgZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbi5lbmQgYXR0cmlidXRlLiAgKi8KKysK KytzdGF0aWMgUHlPYmplY3QgKgorK2NmbWZycHlfZ2V0X2VuZCAoUHlPYmplY3QgKnNlbGYsIHZv aWQgKmNsb3N1cmUpCisreworKyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVnaW9uX29iamVjdCAq b2JqCisrICAgID0gKGNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3QgKikgc2VsZjsK KysKKysgIHJldHVybiBnZGJfcHlfb2JqZWN0X2Zyb21fdWxvbmdlc3QgKG9iai0+ZW5kKS5yZWxl YXNlICgpOworK30KKysKKysvKiBSZWFkIHRoZSBnZGIuQ29yZWZpbGVNYXBwZWRGaWxlUmVnaW9u LmZpbGVfb2Zmc2V0IGF0dHJpYnV0ZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytjZm1m cnB5X2dldF9maWxlX29mZnNldCAoUHlPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisrewor KyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVnaW9uX29iamVjdCAqb2JqCisrICAgID0gKGNvcmVm aWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3QgKikgc2VsZjsKKysKKysgIHJldHVybiBnZGJf cHlfb2JqZWN0X2Zyb21fdWxvbmdlc3QgKG9iai0+ZmlsZV9vZmZzZXQpLnJlbGVhc2UgKCk7Cisr fQorKworKwwKKysKKytzdGF0aWMgaW50CisrZ2RicHlfaW5pdGlhbGl6ZV9jb3JlZmlsZSAoKQor K3sKKysgIGdkYjo6b2JzZXJ2ZXJzOjpjb3JlX2ZpbGVfY2hhbmdlZC5hdHRhY2ggKGNmcHlfY29y ZWZpbGVfY2hhbmdlZCwKKysJCQkJCSAgICAicHktY29yZWZpbGUiKTsKKysKKysgIGlmIChnZGJw eV90eXBlX3JlYWR5ICgmY29yZWZpbGVfb2JqZWN0X3R5cGUpIDwgMCkKKysgICAgcmV0dXJuIC0x OworKworKyAgaWYgKGdkYnB5X3R5cGVfcmVhZHkgKCZjb3JlZmlsZV9tYXBwZWRfZmlsZV9vYmpl Y3RfdHlwZSkgPCAwKQorKyAgICByZXR1cm4gLTE7CisrCisrICBpZiAoZ2RicHlfdHlwZV9yZWFk eSAoJmNvcmVmaWxlX21hcHBlZF9maWxlX3JlZ2lvbl9vYmplY3RfdHlwZSkgPCAwKQorKyAgICBy ZXR1cm4gLTE7CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrR0RCUFlfSU5JVElBTElaRV9GSUxF IChnZGJweV9pbml0aWFsaXplX2NvcmVmaWxlKTsKKysKKysMCisrCisrc3RhdGljIGdkYl9QeUdl dFNldERlZiBjb3JlZmlsZV9nZXRzZXRbXSA9CisreworKyAgeyAiX19kaWN0X18iLCBnZGJfcHlf Z2VuZXJpY19kaWN0LCBudWxscHRyLAorKyAgICAiVGhlIF9fZGljdF9fIGZvciB0aGUgZ2RiLkNv cmVmaWxlLiIsICZjb3JlZmlsZV9vYmplY3RfdHlwZSB9LAorKyAgeyAiZmlsZW5hbWUiLCBjZnB5 X2dldF9maWxlbmFtZSwgbnVsbHB0ciwKKysgICAgIlRoZSBmaWxlbmFtZSBvZiBhIHZhbGlkIENv cmVmaWxlIG9iamVjdC4iLCBudWxscHRyIH0sCisrICB7IG51bGxwdHIgfQorK307CisrCisrc3Rh dGljIFB5TWV0aG9kRGVmIGNvcmVmaWxlX29iamVjdF9tZXRob2RzW10gPQorK3sKKysgIHsgImlz X3ZhbGlkIiwgY2ZweV9pc192YWxpZCwgTUVUSF9OT0FSR1MsCisrICAgICJpc192YWxpZCAoKSAt PiBCb29sZWFuLlxuXAorK1JldHVybiB0cnVlIGlmIHRoaXMgQ29yZWZpbGUgaXMgdmFsaWQsIGZh bHNlIGlmIG5vdC4iIH0sCisrICB7ICJtYXBwZWRfZmlsZXMiLCBjZnB5X21hcHBlZF9maWxlcywg TUVUSF9OT0FSR1MsCisrICAgICJtYXBwZWRfZmlsZXMgKCkgLT4gTGlzdCBvZiBtYXBwaW5nIHR1 cGxlcy5cblwKKytSZXR1cm4gYSBsaXN0IG9mIHR1cGxlcy4gIEVhY2ggdHVwbGUgcmVwcmVzZW50 cyBhIG1hcHBpbmcgZnJvbSB0aGVcCisrY29yZSBmaWxlLiIgfSwKKysgIHsgbnVsbHB0ciB9Cisr fTsKKysKKytQeVR5cGVPYmplY3QgY29yZWZpbGVfb2JqZWN0X3R5cGUgPQorK3sKKysgIFB5VmFy T2JqZWN0X0hFQURfSU5JVCAobnVsbHB0ciwgMCkKKysgICJnZGIuQ29yZWZpbGUiLAkJICAvKnRw X25hbWUqLworKyAgc2l6ZW9mIChjb3JlZmlsZV9vYmplY3QpLAkgIC8qdHBfYmFzaWNzaXplKi8K KysgIDAsCQkJCSAgLyp0cF9pdGVtc2l6ZSovCisrICBjZnB5X2RlYWxsb2MsCQkJICAvKnRwX2Rl YWxsb2MqLworKyAgMCwJCQkJICAvKnRwX3ByaW50Ki8KKysgIDAsCQkJCSAgLyp0cF9nZXRhdHRy Ki8KKysgIDAsCQkJCSAgLyp0cF9zZXRhdHRyKi8KKysgIDAsCQkJCSAgLyp0cF9jb21wYXJlKi8K KysgIGNmcHlfcmVwciwJCQkgIC8qdHBfcmVwciovCisrICAwLAkJCQkgIC8qdHBfYXNfbnVtYmVy Ki8KKysgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5jZSovCisrICAwLAkJCQkgIC8qdHBfYXNfbWFw cGluZyovCisrICAwLAkJCQkgIC8qdHBfaGFzaCAqLworKyAgMCwJCQkJICAvKnRwX2NhbGwqLwor KyAgMCwJCQkJICAvKnRwX3N0ciovCisrICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8qLworKyAgMCwJ CQkJICAvKnRwX3NldGF0dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIqLworKyAgUHlf VFBGTEFHU19ERUZBVUxULAkJICAvKnRwX2ZsYWdzKi8KKysgICJHREIgY29yZWZpbGUgb2JqZWN0 IiwJICAvKiB0cF9kb2MgKi8KKysgIDAsCQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KKysgIDAsCQkJ CSAgLyogdHBfY2xlYXIgKi8KKysgIDAsCQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KKysgIDAs CQkJCSAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfaXRlciAqLwor KyAgMCwJCQkJICAvKiB0cF9pdGVybmV4dCAqLworKyAgY29yZWZpbGVfb2JqZWN0X21ldGhvZHMs CSAgLyogdHBfbWV0aG9kcyAqLworKyAgMCwJCQkJICAvKiB0cF9tZW1iZXJzICovCisrICBjb3Jl ZmlsZV9nZXRzZXQsCQkgIC8qIHRwX2dldHNldCAqLworKyAgMCwJCQkJICAvKiB0cF9iYXNlICov CisrICAwLAkJCQkgIC8qIHRwX2RpY3QgKi8KKysgIDAsCQkJCSAgLyogdHBfZGVzY3JfZ2V0ICov CisrICAwLAkJCQkgIC8qIHRwX2Rlc2NyX3NldCAqLworKyAgb2Zmc2V0b2YgKGNvcmVmaWxlX29i amVjdCwgZGljdCksIC8qIHRwX2RpY3RvZmZzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfaW5pdCAq LworKyAgMCwJCQkJICAvKiB0cF9hbGxvYyAqLworKyAgMCwJCQkJICAvKiB0cF9uZXcgKi8KKyt9 OworKworK3N0YXRpYyBnZGJfUHlHZXRTZXREZWYgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0 X2dldHNldFtdID0KKyt7CisrICB7ICJmaWxlbmFtZSIsIGNmbWZweV9nZXRfZmlsZW5hbWUsIG51 bGxwdHIsCisrICAgICJUaGUgZmlsZW5hbWUgb2YgYSBDb3JlZmlsZU1hcHBlZEZpbGUgb2JqZWN0 LiIsIG51bGxwdHIgfSwKKysgIHsgImJ1aWxkX2lkIiwgY2ZtZnB5X2dldF9idWlsZF9pZCwgbnVs bHB0ciwKKysgICAgIlRoZSBidWlsZC1pZCBvZiBhIENvcmVmaWxlTWFwcGVkRmlsZSBvYmplY3Qg b3IgTm9uZS4iLCBudWxscHRyIH0sCisrICB7ICJyZWdpb25zIiwgY2ZtZnB5X2dldF9yZWdpb25z LCBudWxscHRyLAorKyAgICAiVGhlIGxpc3Qgb2YgcmVnaW9ucyBmcm9tIGEgQ29yZWZpbGVNYXBw ZWRGaWxlIG9iamVjdC4iLCBudWxscHRyIH0sCisrICB7ICJpc19tYWluX2V4ZWN1dGFibGUiLCBj Zm1mX2lzX21haW5fZXhlYywgbnVsbHB0ciwKKysgICAgIlRydWUgZm9yIHRoZSBtYWluIGV4ZWN1 dGFibGUgbWFwcGluZywgb3RoZXJ3aXNlIEZhbHNlLiIsIG51bGxwdHIgfSwKKysgIHsgbnVsbHB0 ciB9CisrfTsKKysKKytQeVR5cGVPYmplY3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0X3R5 cGUgPQorK3sKKysgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCAoTlVMTCwgMCkKKysgICJnZGIuQ29y ZWZpbGVNYXBwZWRGaWxlIiwJICAvKnRwX25hbWUqLworKyAgc2l6ZW9mIChjb3JlZmlsZV9tYXBw ZWRfZmlsZV9vYmplY3QpLAkvKnRwX2Jhc2ljc2l6ZSovCisrICAwLAkJCQkgIC8qdHBfaXRlbXNp emUqLworKyAgY2ZtZnB5X2RlYWxsb2MsCQkgIC8qdHBfZGVhbGxvYyovCisrICAwLAkJCQkgIC8q dHBfcHJpbnQqLworKyAgMCwJCQkJICAvKnRwX2dldGF0dHIqLworKyAgMCwJCQkJICAvKnRwX3Nl dGF0dHIqLworKyAgMCwJCQkJICAvKnRwX2NvbXBhcmUqLworKyAgMCwJCQkJICAvKnRwX3JlcHIq LworKyAgMCwJCQkJICAvKnRwX2FzX251bWJlciovCisrICAwLAkJCQkgIC8qdHBfYXNfc2VxdWVu Y2UqLworKyAgMCwJCQkJICAvKnRwX2FzX21hcHBpbmcqLworKyAgMCwJCQkJICAvKnRwX2hhc2gg Ki8KKysgIDAsCQkJCSAgLyp0cF9jYWxsKi8KKysgIDAsCQkJCSAgLyp0cF9zdHIqLworKyAgMCwJ CQkJICAvKnRwX2dldGF0dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRhdHRybyovCisrICAwLAkJ CQkgIC8qdHBfYXNfYnVmZmVyKi8KKysgIFB5X1RQRkxBR1NfREVGQVVMVCwJCSAgLyp0cF9mbGFn cyovCisrICAiR0RCIGNvcmVmaWxlIG1hcHBlZCBmaWxlIG9iamVjdCIsCS8qIHRwX2RvYyAqLwor KyAgMCwJCQkJICAvKiB0cF90cmF2ZXJzZSAqLworKyAgMCwJCQkJICAvKiB0cF9jbGVhciAqLwor KyAgMCwJCQkJICAvKiB0cF9yaWNoY29tcGFyZSAqLworKyAgMCwJCQkJICAvKiB0cF93ZWFrbGlz dG9mZnNldCAqLworKyAgMCwJCQkJICAvKiB0cF9pdGVyICovCisrICAwLAkJCQkgIC8qIHRwX2l0 ZXJuZXh0ICovCisrICAwLAkJCQkgIC8qIHRwX21ldGhvZHMgKi8KKysgIDAsCQkJCSAgLyogdHBf bWVtYmVycyAqLworKyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVfb2JqZWN0X2dldHNldCwJLyogdHBf Z2V0c2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Jhc2UgKi8KKysgIDAsCQkJCSAgLyogdHBfZGlj dCAqLworKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfZGVz Y3Jfc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKysgIDAsCQkJCSAgLyog dHBfaW5pdCAqLworKyAgMCwJCQkJICAvKiB0cF9hbGxvYyAqLworKyAgMCwJCQkJICAvKiB0cF9u ZXcgKi8KKyt9OworKworK3N0YXRpYyBnZGJfUHlHZXRTZXREZWYgY29yZWZpbGVfbWFwcGVkX2Zp bGVfcmVnaW9uX29iamVjdF9nZXRzZXRbXSA9CisreworKyAgeyAic3RhcnQiLCBjZm1mcnB5X2dl dF9zdGFydCwgbnVsbHB0ciwKKysgICAgIlRoZSBzdGFydCBhZGRyZXNzIG9mIGEgQ29yZWZpbGVN YXBwZWRGaWxlUmVnaW9uIG9iamVjdC4iLCBudWxscHRyIH0sCisrICB7ICJlbmQiLCBjZm1mcnB5 X2dldF9lbmQsIG51bGxwdHIsCisrICAgICJUaGUgZW5kIGFkZHJlc3Mgb2YgYSBDb3JlZmlsZU1h cHBlZEZpbGVSZWdpb24gb2JqZWN0LiIsIG51bGxwdHIgfSwKKysgIHsgImZpbGVfb2Zmc2V0Iiwg Y2ZtZnJweV9nZXRfZmlsZV9vZmZzZXQsIG51bGxwdHIsCisrICAgICJUaGUgZmlsZSBvZmZzZXQg b2YgYSBDb3JlZmlsZU1hcHBlZEZpbGVSZWdpb24gb2JqZWN0LiIsIG51bGxwdHIgfSwKKysgIHsg bnVsbHB0ciB9CisrfTsKKysKKytQeVR5cGVPYmplY3QgY29yZWZpbGVfbWFwcGVkX2ZpbGVfcmVn aW9uX29iamVjdF90eXBlID0KKyt7CisrICBQeVZhck9iamVjdF9IRUFEX0lOSVQgKE5VTEwsIDAp CisrICAiZ2RiLkNvcmVmaWxlTWFwcGVkRmlsZVJlZ2lvbiIsICAvKnRwX25hbWUqLworKyAgc2l6 ZW9mIChjb3JlZmlsZV9tYXBwZWRfZmlsZV9yZWdpb25fb2JqZWN0KSwJLyp0cF9iYXNpY3NpemUq LworKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXplKi8KKysgIDAsCQkJCSAgLyp0cF9kZWFsbG9jKi8K KysgIDAsCQkJCSAgLyp0cF9wcmludCovCisrICAwLAkJCQkgIC8qdHBfZ2V0YXR0ciovCisrICAw LAkJCQkgIC8qdHBfc2V0YXR0ciovCisrICAwLAkJCQkgIC8qdHBfY29tcGFyZSovCisrICAwLAkJ CQkgIC8qdHBfcmVwciovCisrICAwLAkJCQkgIC8qdHBfYXNfbnVtYmVyKi8KKysgIDAsCQkJCSAg Lyp0cF9hc19zZXF1ZW5jZSovCisrICAwLAkJCQkgIC8qdHBfYXNfbWFwcGluZyovCisrICAwLAkJ CQkgIC8qdHBfaGFzaCAqLworKyAgMCwJCQkJICAvKnRwX2NhbGwqLworKyAgMCwJCQkJICAvKnRw X3N0ciovCisrICAwLAkJCQkgIC8qdHBfZ2V0YXR0cm8qLworKyAgMCwJCQkJICAvKnRwX3NldGF0 dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9hc19idWZmZXIqLworKyAgUHlfVFBGTEFHU19ERUZBVUxU LAkJICAvKnRwX2ZsYWdzKi8KKysgICJHREIgY29yZWZpbGUgbWFwcGVkIGZpbGUgcmVnaW9uIG9i amVjdCIsCS8qIHRwX2RvYyAqLworKyAgMCwJCQkJICAvKiB0cF90cmF2ZXJzZSAqLworKyAgMCwJ CQkJICAvKiB0cF9jbGVhciAqLworKyAgMCwJCQkJICAvKiB0cF9yaWNoY29tcGFyZSAqLworKyAg MCwJCQkJICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworKyAgMCwJCQkJICAvKiB0cF9pdGVyICov CisrICAwLAkJCQkgIC8qIHRwX2l0ZXJuZXh0ICovCisrICAwLAkJCQkgIC8qIHRwX21ldGhvZHMg Ki8KKysgIDAsCQkJCSAgLyogdHBfbWVtYmVycyAqLworKyAgY29yZWZpbGVfbWFwcGVkX2ZpbGVf cmVnaW9uX29iamVjdF9nZXRzZXQsCS8qIHRwX2dldHNldCAqLworKyAgMCwJCQkJICAvKiB0cF9i YXNlICovCisrICAwLAkJCQkgIC8qIHRwX2RpY3QgKi8KKysgIDAsCQkJCSAgLyogdHBfZGVzY3Jf Z2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Rlc2NyX3NldCAqLworKyAgMCwJCQkJICAvKiB0cF9k aWN0b2Zmc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2luaXQgKi8KKysgIDAsCQkJCSAgLyogdHBf YWxsb2MgKi8KKysgIDAsCQkJCSAgLyogdHBfbmV3ICovCisrfTsKK2RpZmYgLS1naXQgYS9nZGIv cHl0aG9uL3B5LWV2ZW50LXR5cGVzLmRlZiBiL2dkYi9weXRob24vcHktZXZlbnQtdHlwZXMuZGVm CistLS0gYS9nZGIvcHl0aG9uL3B5LWV2ZW50LXR5cGVzLmRlZgorKysrIGIvZ2RiL3B5dGhvbi9w eS1ldmVudC10eXBlcy5kZWYKK0BAIC0xNDUsMyArMTQ1LDggQEAgR0RCX1BZX0RFRklORV9FVkVO VF9UWVBFICh0dWlfZW5hYmxlZCwKKyAJCQkgICJUdWlFbmFibGVkRXZlbnQiLAorIAkJCSAgIkdE QiBUVUkgZW5hYmxlZCBldmVudCBvYmplY3QiLAorIAkJCSAgZXZlbnRfb2JqZWN0X3R5cGUpOwor KworK0dEQl9QWV9ERUZJTkVfRVZFTlRfVFlQRSAoY29yZWZpbGVfY2hhbmdlZCwKKysJCQkgICJD b3JlZmlsZUNoYW5nZWRFdmVudCIsCisrCQkJICAiR0RCIGNvcmVmaWxlIGNoYW5nZWQgZXZlbnQi LAorKwkJCSAgZXZlbnRfb2JqZWN0X3R5cGUpOworZGlmZiAtLWdpdCBhL2dkYi9weXRob24vcHkt aW5mZXJpb3IuYyBiL2dkYi9weXRob24vcHktaW5mZXJpb3IuYworLS0tIGEvZ2RiL3B5dGhvbi9w eS1pbmZlcmlvci5jCisrKysgYi9nZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMKK0BAIC05NzMsNiAr OTczLDIyIEBAIGluZnB5X2dldF9tYWluX25hbWUgKFB5T2JqZWN0ICpzZWxmLCB2b2lkICpjbG9z dXJlKQorICAgcmV0dXJuIGhvc3Rfc3RyaW5nX3RvX3B5dGhvbl9zdHJpbmcgKG5hbWUpLnJlbGVh c2UgKCk7CisgfQorIAorKy8qIEltcGxlbWVudCB0aGUgSW5mZXJpb3IuY29yZWZpbGUgZ2V0dGVy LiAgUmV0dXJucyBhIGdkYi5Db3JlZmlsZQorKyAgIG9iamVjdCwgb3IgTm9uZS4gICovCisrCisr c3RhdGljIFB5T2JqZWN0ICoKKytpbmZweV9nZXRfY29yZV9maWxlIChQeU9iamVjdCAqc2VsZiwg dm9pZCAqY2xvc3VyZSkKKyt7CisrICBpbmZlcmlvcl9vYmplY3QgKmluZiA9IChpbmZlcmlvcl9v YmplY3QgKikgc2VsZjsKKysKKysgIElORlBZX1JFUVVJUkVfVkFMSUQgKGluZik7CisrCisrICBp bmZlcmlvciAqaW5mZXJpb3IgPSBpbmYtPmluZmVyaW9yOworKyAgZ2RiX2Fzc2VydCAoaW5mZXJp b3IgIT0gbnVsbHB0cik7CisrCisrICByZXR1cm4gZ2RicHlfY29yZV9maWxlX2Zyb21faW5mZXJp b3IgKGluZmVyaW9yKS5yZWxlYXNlICgpOworK30KKysKKyBzdGF0aWMgdm9pZAorIGluZnB5X2Rl YWxsb2MgKFB5T2JqZWN0ICpvYmopCisgeworQEAgLTEwNjIsNiArMTA3OCw4IEBAIHN0YXRpYyBn ZGJfUHlHZXRTZXREZWYgaW5mZXJpb3Jfb2JqZWN0X2dldHNldFtdID0KKyAgIHsgInByb2dzcGFj ZSIsIGluZnB5X2dldF9wcm9nc3BhY2UsIE5VTEwsICJQcm9ncmFtIHNwYWNlIG9mIHRoaXMgaW5m ZXJpb3IiIH0sCisgICB7ICJtYWluX25hbWUiLCBpbmZweV9nZXRfbWFpbl9uYW1lLCBudWxscHRy LAorICAgICAiTmFtZSBvZiAnbWFpbicgZnVuY3Rpb24sIGlmIGtub3duLiIsIG51bGxwdHIgfSwK KysgIHsgImNvcmVmaWxlIiwgaW5mcHlfZ2V0X2NvcmVfZmlsZSwgbnVsbHB0ciwKKysgICAgIlRo ZSBjb3JlZmlsZSBsb2FkZWQgaW4gdG8gdGhpcyBpbmZlcmlvciwgb3IgTm9uZS4iLCBudWxscHRy IH0sCisgICB7IE5VTEwgfQorIH07CisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24t aW50ZXJuYWwuaCBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKKy0tLSBhL2dkYi9weXRo b24vcHl0aG9uLWludGVybmFsLmgKKysrKyBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgK K0BAIC0xMTEzLDYgKzExMTMsMTQgQEAgZXh0ZXJuIHN0ZDo6b3B0aW9uYWw8aW50PiBnZGJweV9w cmludF9pbnNuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkJCSAgICBDT1JFX0FERFIg YWRkcmVzcywKKyAJCQkJCSAgICBkaXNhc3NlbWJsZV9pbmZvICppbmZvKTsKKyAKKysvKiBSZXR1 cm4gdGhlIGdkYi5Db3JlZmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBjb3JlIGZpbGUgbG9h ZGVkIGludG8KKysgICB0aGUgcHJvZ3JhbSBzcGFjZSBvZiBJTkYsIG9yIE5vbmUgaWYgdGhlcmUg aXMgbm8gY29yZSBmaWxlIGxvYWRlZC4gIElORgorKyAgIG11c3Qgbm90IGJlIE5VTEwuICBJZiBh biBlcnJvciBvY2N1cnMgdGhlbiBOVUxMIGlzIHJldHVybmVkLCBhbmQgYQorKyAgIHN1aXRhYmxl IFB5dGhvbiBlcnJvciB3aWxsIGJlIHNldC4gICovCisrCisrZXh0ZXJuIGdkYnB5X3JlZjw+IGdk YnB5X2NvcmVfZmlsZV9mcm9tX2luZmVyaW9yIChpbmZlcmlvciAqaW5mKTsKKysKKysKKyAvKiBB IHdyYXBwZXIgZm9yIFB5VHlwZV9SZWFkeSB0aGF0IGFsc28gYXV0b21hdGljYWxseSByZWdpc3Rl cnMgdGhlCisgICAgdHlwZSBpbiB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlLiAgUmV0dXJucyAwIG9u IHN1Y2Nlc3MsIC0xIG9uIGVycm9yLgorICAgIElmIE1PRCBpcyBzdXBwbGllZCwgdGhlbiB0aGUg dHlwZSBpcyBhZGRlZCB0byB0aGF0IG1vZHVsZS4gIElmIE1PRAorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmRhcC9hdHRhY2gtZmFpbC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5kYXAv YXR0YWNoLWZhaWwuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2F0dGFjaC1mYWlsLmV4cAorQEAgLTAsMCArMSwzMiBA QAorKyMgQ29weXJpZ2h0IDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworKyMgVGVzdCAiYXR0YWNoIiBmYWlsdXJl IGluIERBUC4KKysKKytyZXF1aXJlIGNhbl9zcGF3bl9mb3JfYXR0YWNoIGFsbG93X2RhcF90ZXN0 cworKworK2xvYWRfbGliIGRhcC1zdXBwb3J0LmV4cAorKworKyMgUGFzc2luZyBhbiBlbXB0eSBy ZW1vdGUgbmFtZSBoZXJlIHdpbGwgZ3VhcmFudGVlIGEgZmFpbHVyZSB3aXRob3V0CisrIyB0cnlp bmcgdG8gZmluZCBhIHJlYWwgcmVtb3RlLgorK3NldCBpZCBbZGFwX3RhcmdldF9yZW1vdGUgeyIi fV0KKysKKytkYXBfY2hlY2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImNvbmZpZ3VyYXRpb25Eb25l IiBjb25maWd1cmF0aW9uRG9uZQorKworK3NldCByZXNwIFtsaW5kZXggW2RhcF9yZWFkX3Jlc3Bv bnNlIGF0dGFjaCAkaWRdIDBdCisrZ2RiX2Fzc2VydCB7W2RpY3QgZ2V0ICRyZXNwIHN1Y2Nlc3Nd ID09ICJmYWxzZSJ9IFwKKysgICAgImF0dGFjaCBmYWlsZWQiCisrCisrZGFwX3NodXRkb3duCitk aWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2NvcmVmaWxlLmMgYi9nZGIvdGVzdHN1 aXRlL2dkYi5kYXAvY29yZWZpbGUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5jCitAQCAtMCwwICsxLDQ1 IEBACisrLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K KysKKysgICBDb3B5cmlnaHQgMjAyNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQorKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQg eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF LiAgU2VlIHRoZQorKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUg PHN0ZGxpYi5oPgorKworK2ludCBnbG9iYWxfdmFyID0gMDsKKysKKyt2b2lkCisrYmF6ICh2b2lk KQorK3sKKysgIGFib3J0ICgpOworK30KKysKKyt2b2lkCisrYmFyICh2b2lkKQorK3sKKysgIGJh eiAoKTsKKyt9CisrCisrdm9pZAorK2ZvbyAodm9pZCkKKyt7CisrICBiYXIgKCk7CisrfQorKwor K2ludAorK21haW4gKHZvaWQpCisreworKyAgZm9vICgpOworKyAgcmV0dXJuIDA7CisrfQorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmRhcC9jb3JlZmlsZS5leHAgYi9nZGIvdGVzdHN1 aXRlL2dkYi5kYXAvY29yZWZpbGUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZGFwL2NvcmVmaWxlLmV4cAorQEAgLTAsMCAr MSwxOTYgQEAKKysjIENvcHlyaWdodCAyMDI2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m CisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRlc3QgdXNpbmcgImF0 dGFjaCIgaW4gREFQIGZvciBvcGVuaW5nIGEgY29yZSBmaWxlLgorKworK3JlcXVpcmUgYWxsb3df ZGFwX3Rlc3RzCisrCisrbG9hZF9saWIgZGFwLXN1cHBvcnQuZXhwCisrCisrc3RhbmRhcmRfdGVz dGZpbGUKKysKKytpZiB7W2J1aWxkX2V4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0uZXhwICR0ZXN0Zmls ZV0gPT0gLTF9IHsKKysgICAgcmV0dXJuCisrfQorKworK3NldCBjb3JlZmlsZSBbY29yZV9maW5k ICRiaW5maWxlIHt9XQorK2lmIHskY29yZWZpbGUgPT0gIiJ9IHsKKysgICAgdW50ZXN0ZWQgInVu YWJsZSB0byBjcmVhdGUgb3IgZmluZCBjb3JlZmlsZSIKKysgICAgcmV0dXJuCisrfQorKworK3Nl dCBvdGhlcl9jb3JlZmlsZSBbc3RhbmRhcmRfb3V0cHV0X2ZpbGUgIiR7dGVzdGZpbGV9IHdpdGgg c3BhY2VzLmNvcmUiXQorK3JlbW90ZV9leGVjIGJ1aWxkICJjcCBcIiRjb3JlZmlsZVwiIFwiJG90 aGVyX2NvcmVmaWxlXCIiCisrCisrIyBUZXN0IHRoYXQgYXR0YWNoaW5nIHRvIGEgY29yZSBmaWxl IHdvcmtzIGF0IGFsbC4KKytzZXQgYXR0YWNoX2lkIFtkYXBfY29yZWZpbGUgJGNvcmVmaWxlICRi aW5maWxlXQorKworK2RhcF9jaGVja19yZXF1ZXN0X2FuZF9yZXNwb25zZSAiY29uZmlndXJhdGlv bkRvbmUiIGNvbmZpZ3VyYXRpb25Eb25lCisrCisrZGFwX2NoZWNrX3Jlc3BvbnNlICJhdHRhY2gg cmVzcG9uc2UiIGF0dGFjaCAkYXR0YWNoX2lkCisrCisrZGFwX3dhaXRfZm9yX2V2ZW50X2FuZF9j aGVjayAic3RvcHBlZCIgc3RvcHBlZCBcCisrICAgICJib2R5IHJlYXNvbiIgYXR0YWNoCisrCisr IyBUcnkgJ2NvbnRpbnVlJywgdGhpcyBzaG91bGQgZmFpbC4KKytzZXQgb2JqIFtkYXBfcmVxdWVz dF9hbmRfcmVzcG9uc2UgY29udGludWUgXAorKwkgICAgIHtvIHRocmVhZElkIFtpIDFdfV0KKytz ZXQgcmVzcG9uc2UgW2xpbmRleCAkb2JqIDBdCisrZ2RiX2Fzc2VydCB7IFtkaWN0IGdldCAkcmVz cG9uc2Ugc3VjY2Vzc10gPT0gImZhbHNlIiB9IFwKKysgICAgImNvbnRpbnVlIHdpdGggY29yZSBm aWxlIHRhcmdldCIKKysKKysjIEdldCBhIGJhY2t0cmFjZSBmcm9tIHRoZSBjb3JlIGZpbGUuCisr c2V0IGJ0IFtsaW5kZXggW2RhcF9jaGVja19yZXF1ZXN0X2FuZF9yZXNwb25zZSAiYmFja3RyYWNl IiBzdGFja1RyYWNlIFwKKysJCSAgICB7byB0aHJlYWRJZCBbaSAxXX1dIDBdCisrc2V0IGZyYW1l X2lkIFtkaWN0IGdldCBbbGluZGV4IFtkaWN0IGdldCAkYnQgYm9keSBzdGFja0ZyYW1lc10gMF0g aWRdCisrCisrIyBHZXQgYWxsIHNjb3BlcyBmb3IgZnJhbWUgMC4gIFNlYXJjaCB0aHJvdWdoIHNj b3BlcyB0byBmaW5kIHRoZQorKyMgcmVnaXN0ZXIgc2NvcGUuCisrc2V0IHNjb3BlcyBbZGFwX2No ZWNrX3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJnZXQgc2NvcGVzIiBzY29wZXMgXAorKwkJW2Zvcm1h dCB7byBmcmFtZUlkIFtpICVkXX0gJGZyYW1lX2lkXV0KKytzZXQgc2NvcGVzIFtkaWN0IGdldCBb bGluZGV4ICRzY29wZXMgMF0gYm9keSBzY29wZXNdCisrc2V0IHJlZ19zY29wZSAiIgorK2ZvcmVh Y2ggcyAkc2NvcGVzIHsKKysgICAgaWYge1tkaWN0IGdldCAkcyBuYW1lXSA9PSAiUmVnaXN0ZXJz In0geworKwlzZXQgcmVnX3Njb3BlICRzCisrICAgIH0KKyt9CisrZ2RiX2Fzc2VydCB7ICRyZWdf c2NvcGUgbmUgIiIgfSAiZm91bmQgcmVnaXN0ZXIgc2NvcGUiCisrCisrIyBSZWFkIGFsbCB0aGUg cmVnaXN0ZXJzIGZyb20gdGhlIHJlZ2lzdGVyIHNjb3BlLgorK3NldCBudW0gW2RpY3QgZ2V0ICRy ZWdfc2NvcGUgdmFyaWFibGVzUmVmZXJlbmNlXQorK3NldCByZXBseSBbbGluZGV4IFtkYXBfY2hl Y2tfcmVxdWVzdF9hbmRfcmVzcG9uc2UgImZldGNoIGFsbCByZWdpc3RlcnMiIFwKKysJCSAgICAg ICJ2YXJpYWJsZXMiIFwKKysJCSAgICAgIFtmb3JtYXQge28gdmFyaWFibGVzUmVmZXJlbmNlIFtp ICVkXSBjb3VudCBbaSAlZF19ICRudW1cCisrCQkJICAgW2RpY3QgZ2V0ICRyZWdfc2NvcGUgbmFt ZWRWYXJpYWJsZXNdXV0gMF0KKysKKysjIEZpbmQgdGhlIG5hbWUgYW5kIHZhbHVlIG9mIGEgcmVn aXN0ZXIsIHdlJ2xsIHVzZSB0aGlzIHRvIHRyeSBzZXR0aW5nCisrIyBhIHJlZ2lzdGVyIGJlbG93 LgorK3NldCByZWdzIFtkaWN0IGdldCAkcmVwbHkgYm9keSB2YXJpYWJsZXNdCisrZ2RiX2Fzc2Vy dCB7W2xsZW5ndGggJHJlZ3NdID4gMH0gImdvdCBhdCBsZWFzdCBvbmUgcmVnaXN0ZXIiCisrc2V0 IHJlZ19uYW1lIFtkaWN0IGdldCBbbGluZGV4ICRyZWdzIDBdIG5hbWVdCisrc2V0IHJlZ192YWx1 ZSBbZGljdCBnZXQgW2xpbmRleCAkcmVncyAwXSB2YWx1ZV0KKysKKytzZXQgb2JqIFtkYXBfcmVx dWVzdF9hbmRfcmVzcG9uc2Ugc2V0RXhwcmVzc2lvbiBcCisrCSAgICAge28gZXhwcmVzc2lvbiBb cyBnbG9iYWxfdmFyXSB2YWx1ZSBbcyAyM119XQorK3NldCByZXNwb25zZSBbbGluZGV4ICRvYmog MF0KKytnZGJfYXNzZXJ0IHsgW2RpY3QgZ2V0ICRyZXNwb25zZSBzdWNjZXNzXSA9PSAiZmFsc2Ui IH0gXAorKyAgICAic2V0IGdsb2JhbCB2YXJpYWJsZSBmYWlscyIKKytzZXQgZXhwZWN0ZWRfZXhj ZXB0aW9uX2NvdW50IDEKKysKKysjIFRyeSBzZXR0aW5nIGEgcmVnaXN0ZXIsIHRoaXMgc2hvdWxk IGZhaWwgYXMgcmVnaXN0ZXJzIGFyZSBub3QKKysjIHdyaXRhYmxlIGZvciBhIGNvcmUgZmlsZSB0 YXJnZXQuICBXZSBuZWVkIHRvIHdyaXRlIGJhY2sgYSBkaWZmZXJlbnQKKysjIHJlZ2lzdGVyIHZh bHVlLCBzbyB3ZSBhZGQgb25lIHRvIHRoZSBjdXJyZW50IHZhbHVlLiAgVGhpcyBtZWFucyB3ZQor KyMgY2FuIG9ubHkgcnVuIHRoZSB0ZXN0IGlmIHRoZSBjdXJyZW50IHJlZ2lzdGVyIHZhbHVlIGlz IGFuIGludGVnZXIuCisraWYge1tzdHJpbmcgaXMgaW50ZWdlciAtc3RyaWN0ICRyZWdfdmFsdWVd fSB7CisrICAgIHNldCBuZXdfdmFsdWUgW2V4cHIgeyRyZWdfdmFsdWUgKyAxfV0KKysgICAgc2V0 IG9iaiBbZGFwX3JlcXVlc3RfYW5kX3Jlc3BvbnNlIHNldEV4cHJlc3Npb24gXAorKwkJIHtvIGV4 cHJlc3Npb24gW3MgXCQkcmVnX25hbWVdIHZhbHVlIFtzICRuZXdfdmFsdWVdfV0KKysgICAgc2V0 IHJlc3BvbnNlIFtsaW5kZXggJG9iaiAwXQorKyAgICBnZGJfYXNzZXJ0IHsgW2RpY3QgZ2V0ICRy ZXNwb25zZSBzdWNjZXNzXSA9PSAiZmFsc2UiIH0gXAorKwkic2V0IHJlZ2lzdGVyIGZhaWxzIgor KyAgICBpbmNyIGV4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudAorK30KKysKKytkYXBfc2h1dGRvd24g ZmFsc2UgJGV4cGVjdGVkX2V4Y2VwdGlvbl9jb3VudAorKworKyMgUmVjb25uZWN0IHRvIHRoZSBj b3JlIGZpbGUuICBUaGlzIHRpbWUgd2hlbiB3ZSBzaHV0ZG93biB3ZSB3aWxsCisrIyByZXF1ZXN0 IHRoYXQgdGhlIHRhcmdldCBiZSB0ZXJtaW5hdGVkLCBHREIgc2hvdWxkIHN0aWxsIGp1c3QKKysj IGRpc2Nvbm5lY3QgdGhvdWdoIGFzIGNvcmUgZmlsZSB0YXJnZXRzIGNhbm5vdCBiZSBraWxsZWQu Cisrd2l0aF90ZXN0X3ByZWZpeCAicmVhdHRhY2giIHsKKysgICAgc2V0IGF0dGFjaF9pZCBbZGFw X2NvcmVmaWxlICRjb3JlZmlsZSAkYmluZmlsZV0KKysKKysgICAgZGFwX2NoZWNrX3JlcXVlc3Rf YW5kX3Jlc3BvbnNlICJjb25maWd1cmF0aW9uRG9uZSIgY29uZmlndXJhdGlvbkRvbmUKKysKKysg ICAgZGFwX2NoZWNrX3Jlc3BvbnNlICJhdHRhY2ggcmVzcG9uc2UiIGF0dGFjaCAkYXR0YWNoX2lk CisrCisrICAgIGRhcF93YWl0X2Zvcl9ldmVudF9hbmRfY2hlY2sgInN0b3BwZWQiIHN0b3BwZWQg XAorKwkiYm9keSByZWFzb24iIGF0dGFjaAorKworKyAgICAjIFJlcXVlc3QgdGhlIHRhcmdldCBi ZSB0ZXJtaW5hdGVkLiAgVGhpcyBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yCisrICAgICMgY29yZSBm aWxlIHRhcmdldHMgKHdoaWNoIGNhbm5vdCBiZSBraWxsZWQpLCBidXQgR0RCIHNob3VsZAorKyAg ICAjIGhhbmRsZSB0aGlzIGdyYWNlZnVsbHkgYW5kIGp1c3QgZGlzY29ubmVjdC4KKysgICAgZGFw X3NodXRkb3duIHRydWUKKyt9CisrCisrIyBUZXN0IGxvYWRpbmcgYSBjb3JlIGZpbGUgd2l0aCBz cGFjZXMgaW4gaXRzIG5hbWUuCisrd2l0aF90ZXN0X3ByZWZpeCAiY29yZSBmaWxlIHdpdGggc3Bh Y2VzIiB7CisrICAgIGdkYl9leGl0CisrCisrICAgICMgVGVzdCB0aGF0IGF0dGFjaGluZyB0byBh IGNvcmUgZmlsZSB3b3JrcyBhdCBhbGwuCisrICAgIHNldCBhdHRhY2hfaWQgW2RhcF9jb3JlZmls ZSAkb3RoZXJfY29yZWZpbGVdCisrCisrICAgIGRhcF9jaGVja19yZXF1ZXN0X2FuZF9yZXNwb25z ZSAiY29uZmlndXJhdGlvbkRvbmUiIGNvbmZpZ3VyYXRpb25Eb25lCisrCisrICAgIGRhcF9jaGVj a19yZXNwb25zZSAiYXR0YWNoIHJlc3BvbnNlIiBhdHRhY2ggJGF0dGFjaF9pZAorKworKyAgICBk YXBfd2FpdF9mb3JfZXZlbnRfYW5kX2NoZWNrICJzdG9wcGVkIiBzdG9wcGVkIFwKKysJImJvZHkg cmVhc29uIiBhdHRhY2gKKysKKysgICAgIyBVc2UgdGhlIHJlcGwgdG8gaXNzdWUgYW4gJ2luZm8g aW5mZXJpb3JzJyBjb21tYW5kLgorKyAgICBzZXQgb2JqIFtkYXBfY2hlY2tfcmVxdWVzdF9hbmRf cmVzcG9uc2UgImNvbW1hbmQgcmVwbCIgXAorKwkJIGV2YWx1YXRlIHtvIGV4cHJlc3Npb24gW3Mg ImluZm8gaW5mZXJpb3JzIl0gY29udGV4dCBbcyByZXBsXX1dCisrICAgIHNldCByZXNwb25zZSBb bGluZGV4ICRvYmogMF0KKysgICAgc2V0IHJlc3VsdCBbZGljdCBnZXQgJHJlc3BvbnNlIGJvZHkg cmVzdWx0XQorKyAgICBzZXQgcmVzdWx0IFtzdHJpbmcgbWFwIHtcXG4gXG4gXFx0IFx0fSAkcmVz dWx0XQorKyAgICB2ZXJib3NlIC1sb2cgIkluZm8gSW5mZXJpb3JzIE91dHB1dDpcbiRyZXN1bHRc blxuIgorKworKyAgICAjIENoZWNrIHRoYXQgdGhlIG91dHB1dCBjb250YWlucyB0aGUgaGVhZGVy IGxpbmUsIHRoZSBleGVjdXRhYmxlCisrICAgICMgbmFtZSwgYW5kIHRoZSBjb3JlIGZpbGUgbmFt ZS4gIFdlIGRpZG4ndCBwYXNzIHRoZSBleGVjdXRhYmxlCisrICAgICMgbmFtZSB3aGVuIGxvYWRp bmcgdGhlIGNvcmUgZmlsZSwgYnV0IEdEQiBzaG91bGQgaGF2ZSBiZWVuIGFibGUKKysgICAgIyB0 byBmaW5kIHRoZSBleGVjdXRhYmxlIGZyb20gdGhlIGNvcmUgZmlsZS4KKysgICAgZ2RiX2Fzc2Vy dCB7IFtyZWdleHAgIk51bVxccytEZXNjcmlwdGlvblxccytDb25uZWN0aW9uXFxzK0V4ZWN1dGFi bGUiICRyZXN1bHRdIH0gXAorKwkiaW5mbyBpbmZlcmlvcnMgY29sdW1uIGhlYWRlcnMgZm91bmQi CisrCisrICAgIGdkYl9hc3NlcnQgeyBbcmVnZXhwICJbc3RyaW5nX3RvX3JlZ2V4cCAkYmluZmls ZV1cXHMqXG4iICRyZXN1bHRdIH0gXAorKwkiZXhlY3V0YWJsZSBuYW1lIHdhcyBzZXQgZHVyaW5n IGNvcmUgZmlsZSBsb2FkIgorKworKyAgICBkYXBfc2h1dGRvd24KKyt9CisrCisrIyBUZXN0IGxv YWRpbmcgYSBjb3JlIGZpbGUgdmlhIHRoZSByZXBsLgorK3dpdGhfdGVzdF9wcmVmaXggImxvYWQg Y29yZSBmaWxlIHZpYSByZXBsIiB7CisrICAgIGdkYl9leGl0CisrCisrICAgIGlmIHtbZGFwX2lu aXRpYWxpemVdID09ICIifSB7CisrCXJldHVybgorKyAgICB9CisrCisrICAgICMgVXNlIHRoZSBy ZXBsIHRvIGlzc3VlIGEgJ2NvcmUtZmlsZScgY29tbWFuZC4KKysgICAgc2V0IG9iaiBbZGFwX2No ZWNrX3JlcXVlc3RfYW5kX3Jlc3BvbnNlICJjb21tYW5kIHJlcGwiIFwKKysJCSBldmFsdWF0ZSBb Zm9ybWF0IHtvIGV4cHJlc3Npb24gW3MgImNvcmUtZmlsZSAlcyJdIGNvbnRleHQgW3MgcmVwbF19 ICRjb3JlZmlsZV1dCisrICAgIHNldCByZXNwb25zZSBbbGluZGV4ICRvYmogMF0KKysgICAgc2V0 IHJlc3VsdCBbZGljdCBnZXQgJHJlc3BvbnNlIGJvZHkgcmVzdWx0XQorKyAgICBzZXQgcmVzdWx0 IFtzdHJpbmcgbWFwIHtcXG4gXG4gXFx0IFx0fSAkcmVzdWx0XQorKyAgICB2ZXJib3NlIC1sb2cg IkNvcmUtRmlsZSBDb21tYW5kIE91dHB1dDpcbiRyZXN1bHRcblxuIgorKworKyAgICAjIEJ5IHRo ZSB0aW1lIHdlIGdvdCB0aGUgcmVzcG9uc2UgZnJvbSB0aGUgJ2NvcmUtZmlsZScgY29tbWFuZCwK KysgICAgIyB0aGUgc3RvcHBlZCBldmVudCwgc2VudCB3aGVuIHdlIGF0dGFjaCB0byBhIGNvcmUg ZmlsZSwgc2hvdWxkCisrICAgICMgYWxyZWFkeSBoYXZlIGJlZW4gc2VlbiwgY2hlY2sgZm9yIGl0 IG5vdy4KKysgICAgc2V0IG9rIGZhbHNlCisrICAgIGZvcmVhY2ggZCBbbGluZGV4ICRvYmogMV0g eworKwlpZiB7W2RpY3QgZ2V0ICRkIHR5cGVdICE9ICJldmVudCIKKysJICAgIHx8IFtkaWN0IGdl dCAkZCBldmVudF0gIT0gInN0b3BwZWQifSB7CisrCSAgICBjb250aW51ZQorKwl9CisrCWlmIHtb ZGljdCBnZXQgJGQgYm9keSByZWFzb25dID09ICJhdHRhY2gifSB7CisrCSAgICBzZXQgb2sgdHJ1 ZQorKwkgICAgYnJlYWsKKysJfQorKyAgICB9CisrICAgIGdkYl9hc3NlcnQgeyAkb2sgfSAic2F3 IHN0b3BwZWQgZXZlbnQiCisrCisrICAgIGRhcF9zaHV0ZG93bgorK30KK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY29yZWZpbGUuYyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnB5dGhvbi9weS1jb3JlZmlsZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAorLS0tIC9kZXYvbnVs bAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxlLmMKK0BAIC0wLDAg KzEsMjUgQEAKKysvKiBDb3B5cmlnaHQgMjAyNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysKKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdGRsaWIuaD4KKysKKytp bnQKKyttYWluICh2b2lkKQorK3sKKysgIC8qIFdpdGggY29ycmVjdCB1bGltaXQsIGV0Yy4gdGhp cyBzaG91bGQgY2F1c2UgYSBjb3JlIGR1bXAuICAqLworKyAgYWJvcnQgKCk7CisrfQorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1jb3JlZmlsZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHktY29yZWZpbGUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNvcmVmaWxl LmV4cAorQEAgLTAsMCArMSwzNjUgQEAKKysjIENvcHlyaWdodCAoQykgMjAyNSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIwor KyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisr CisrIyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR0RCIHRlc3RzdWl0ZS4gIEl0IHRlc3RzIHRo ZSBjb3JlIGZpbGUKKysjIHN1cHBvcnQgaW4gUHl0aG9uLgorKworK3JlcXVpcmUgaXNuYXRpdmUK KytyZXF1aXJlIHshaXNfcmVtb3RlIGhvc3R9CisrCisrbG9hZF9saWIgZ2RiLXB5dGhvbi5leHAK KysKKytyZXF1aXJlIGFsbG93X3B5dGhvbl90ZXN0cworKworK3N0YW5kYXJkX3Rlc3RmaWxlCisr CisraWYge1tidWlsZF9leGVjdXRhYmxlICJidWlsZCBleGVjdXRhYmxlIiAkdGVzdGZpbGUgJHNy Y2ZpbGVdID09IC0xfSB7CisrICAgIHJldHVybgorK30KKysKKytzZXQgcmVtb3RlX3B5dGhvbl9m aWxlIFwKKysgICAgW2dkYl9yZW1vdGVfZG93bmxvYWQgaG9zdCAke3NyY2Rpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9LnB5XQorKworK3NldCBjb3JlZmlsZSBbY29yZV9maW5kICRiaW5maWxlXQor K2lmIHskY29yZWZpbGUgPT0gIiJ9IHsKKysgICAgdW5zdXBwb3J0ZWQgImNvdWxkbid0IGNyZWF0 ZSBvciBmaW5kIGNvcmVmaWxlIgorKyAgICByZXR1cm4KKyt9CisrCisrIyBIZWxwZXIgcHJvYyB0 byBydW4gdGhlICdjb3JlLWZpbGUnIGNvbW1hbmQuICBUYWtlcyBvcHRpb25hbCBhcmd1bWVudHM6 CisrIworKyMgICAtY29yZWZpbGUgRklMRU5BTUUgOiBMb2FkIEZJTEVOQU1FIGFzIHRoZSBuZXcg Y29yZSBmaWxlLiAgSWYgdGhpcworKyMgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCBp cyBub3QgZ2l2ZW4gdGhlbiB0aGUgY3VycmVudCBjb3JlCisrIyAgICAgICAgICAgICAgICAgICAg ICAgIGZpbGUgd2lsbCBiZSB1bmxvYWRlZC4KKysjCisrIyAgIC1pbmZlcmlvciBOVU0gOiBUaGUg aW5mZXJpb3IgaW4gd2hpY2ggdGhlIGNvcmVmaWxlIGlzIGJlaW5nIGNoYW5nZWQuCisrIyAgICAg ICAgICAgICAgICAgICBUaGlzIGlzIHVzZWQgdG8gbWF0Y2ggdGhlIGNvcmVmaWxlX2NoYW5nZWQg ZXZlbnRzCisrIyAgICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgYmUgZW1pdHRlZC4KKysjCisr IyAgIC1wcmVmaXggU1RSSU5HIDogQSB0ZXN0IHByZWZpeCwgdG8gbWFrZSB0ZXN0IG5hbWVzIHVu aXF1ZS4KKysjCisrIyAgIC1yZXBsYWNlbWVudCA6IFRoZXJlJ3MgYWxyZWFkeSBhIGNvcmUgZmls ZSBsb2FkZWQgd2hlbiB0aGlzIGNvbW1hbmQKKysjICAgICAgICAgICAgICAgICAgaXMgYmVpbmcg cnVuLgorK3Byb2MgY29yZV9maWxlX2NtZCB7IGFyZ3MgfSB7CisrICAgIHBhcnNlX3NvbWVfYXJn cyB7CisrCXtjb3JlZmlsZSAiIn0KKysJe2luZmVyaW9yIDF9CisrCXtwcmVmaXggIiJ9CisrCXty ZXBsYWNlbWVudH0KKysgICAgfQorKworKyAgICBpZiB7ICRwcmVmaXggZXEgIiIgfSB7CisrCWlm IHsgJGNvcmVmaWxlIGVxICIiIH0geworKwkgICAgc2V0IHByZWZpeCAidW5sb2FkIGNvcmVmaWxl IgorKwl9IGVsc2UgeworKwkgICAgc2V0IHByZWZpeCAibG9hZCBjb3JlZmlsZSIKKysJfQorKyAg ICB9CisrCisrICAgIHdpdGhfdGVzdF9wcmVmaXggJHByZWZpeCB7CisrCWdkYl90ZXN0ICJldmVu dHMgY29yZWZpbGVfY2hhbmdlZCBjaGVjayIgXAorKwkgICAgIl5ObyBjb3JlZmlsZV9jaGFuZ2Vk IGV2ZW50IGhhcyBiZWVuIHNlZW5cXC4iIFwKKysJICAgICJubyBjb3JlZmlsZSBldmVudCBoYXMg YmVlbiBzZWVuIgorKworKwlnZGJfdGVzdCAiZXZlbnRzIGV4aXRlZCBjaGVjayIgXAorKwkgICAg Il5ObyBleGl0ZWQgZXZlbnQgaGFzIGJlZW4gc2VlblxcLiIgXAorKwkgICAgIm5vIGV4aXRlZCBl dmVudCBoYXMgYmVlbiBzZWVuIgorKworKwlpZiB7ICRjb3JlZmlsZSBlcSAiIiB9IHsKKysJICAg IGdkYl90ZXN0ICJjb3JlLWZpbGUiICJeTm8gY29yZSBmaWxlIG5vd1xcLiIgInVubG9hZCBjdXJy ZW50IGNvcmUgZmlsZSIKKysKKysJICAgIGdkYl90ZXN0ICJldmVudHMgY29yZWZpbGVfY2hhbmdl ZCBjaGVjayIgXAorKwkJIkV2ZW50IDEvMSwgSW5mZXJpb3IgJGluZmVyaW9yLCBDb3JlZmlsZSBO b25lIiBcCisrCQkiZXhwZWN0ZWQgY29yZWZpbGUgZXZlbnQgaGFzIGJlZW4gc2VlbiIKKysKKysJ ICAgIGdkYl90ZXN0ICJldmVudHMgZXhpdGVkIGNoZWNrIiBcCisrCQkiRXZlbnQgMS8xLCBJbmZl cmlvciAkaW5mZXJpb3IsIEV4aXQgQ29kZSBOb25lIiBcCisrCQkiZXhwZWN0ZWQgZXhpdGVkIGV2 ZW50IGhhcyBiZWVuIHNlZW4iCisrCX0gZWxzZSB7CisrCSAgICBnZGJfdGVzdCAiY29yZS1maWxl ICRjb3JlZmlsZSIgIi4qIiAibG9hZCBjb3JlIGZpbGUiCisrCisrCSAgICBpZiB7ICRyZXBsYWNl bWVudCB9IHsKKysJCWdkYl90ZXN0ICJldmVudHMgY29yZWZpbGVfY2hhbmdlZCBjaGVjayIgXAor KwkJICAgIFttdWx0aV9saW5lIFwKKysJCQkgIkV2ZW50IDEvMiwgSW5mZXJpb3IgJGluZmVyaW9y LCBDb3JlZmlsZSBOb25lIiBcCisrCQkJICJFdmVudCAyLzIsIEluZmVyaW9yICRpbmZlcmlvciwg Q29yZWZpbGUgW3N0cmluZ190b19yZWdleHAgJGNvcmVmaWxlXSJdIFwKKysJCSAgICAiZXhwZWN0 ZWQgY29yZWZpbGUgZXZlbnQgaGFzIGJlZW4gc2VlbiIKKysKKysJCWdkYl90ZXN0ICJldmVudHMg ZXhpdGVkIGNoZWNrIiBcCisrCQkgICAgIkV2ZW50IDEvMSwgSW5mZXJpb3IgJGluZmVyaW9yLCBF eGl0IENvZGUgTm9uZSIgXAorKwkJICAgICJleHBlY3RlZCBleGl0ZWQgZXZlbnQgaGFzIGJlZW4g c2VlbiIKKysJICAgIH0gZWxzZSB7CisrCQlnZGJfdGVzdCAiZXZlbnRzIGNvcmVmaWxlX2NoYW5n ZWQgY2hlY2siIFwKKysJCSAgICAiRXZlbnQgMS8xLCBJbmZlcmlvciAkaW5mZXJpb3IsIENvcmVm aWxlIFtzdHJpbmdfdG9fcmVnZXhwICRjb3JlZmlsZV0iIFwKKysJCSAgICAiZXhwZWN0ZWQgY29y ZWZpbGUgZXZlbnQgaGFzIGJlZW4gc2VlbiIKKysKKysJCWdkYl90ZXN0ICJldmVudHMgZXhpdGVk IGNoZWNrIiBcCisrCQkgICAgIl5ObyBleGl0ZWQgZXZlbnQgaGFzIGJlZW4gc2VlblxcLiIgXAor KwkJICAgICJubyBleGl0ZWQgZXZlbnQgd2FzIGVtaXR0ZWQiCisrCSAgICB9CisrCX0KKysgICAg fQorKworKyAgICBnZGJfdGVzdF9ub19vdXRwdXQgLW5vcGFzcyAiZXZlbnRzIGNvcmVmaWxlX2No YW5nZWQgcmVzZXQiCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAtbm9wYXNzICJldmVudHMgZXhp dGVkIHJlc2V0IgorK30KKysKKysjIEEgaGVscGVyIHByb2MgcnVucyBjbGVhbl9yZXN0YXJ0IHBh c3NpbmcgdGhyb3VnaCBBUkdTLCBhbmQgdGhlbiBsb2FkcyB0aGUKKysjIHRlc3QncyBQeXRob24g c2NyaXB0LgorK3Byb2MgY2xlYW5fcmVzdGFydF9hbmRfbG9hZF9weV9zY3JpcHQgeyBhcmdzIH0g eworKyAgICBjbGVhbl9yZXN0YXJ0IHsqfSRhcmdzCisrCisrICAgICMgTG9hZCB0aGUgUHl0aG9u IHNjcmlwdCBpbnRvIEdEQi4KKysgICAgZ2RiX3Rlc3QgInNvdXJjZSAkOjpyZW1vdGVfcHl0aG9u X2ZpbGUiICJeU3VjY2VzcyIgXAorKwkic291cmNlIHB5dGhvbiBzY3JpcHQiCisrfQorKworKyMg Q3JlYXRlIGEgY29weSBvZiB0aGUgY29yZWZpbGUuCisrc2V0IG90aGVyX2NvcmVmaWxlIFtzdGFu ZGFyZF9vdXRwdXRfZmlsZSAke3Rlc3RmaWxlfS1vdGhlci5jb3JlXQorK3JlbW90ZV9leGVjIGJ1 aWxkICJjcCAkY29yZWZpbGUgJG90aGVyX2NvcmVmaWxlIgorKworK2NsZWFuX3Jlc3RhcnRfYW5k X2xvYWRfcHlfc2NyaXB0CisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gaW5mID0gZ2Ri LnNlbGVjdGVkX2luZmVyaW9yKCkiIFwKKysgICAgImNhcHR1cmUgY3VycmVudCBpbmZlcmlvciIK KysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGluZi5jb3JlZmlsZSkiICJeTm9uZSIgXAorKyAg ICAiSW5mZXJpb3IuY29yZWZpbGUgaXMgTm9uZSBiZWZvcmUgbG9hZGluZyBhIGNvcmUgZmlsZSIK KysKKytjb3JlX2ZpbGVfY21kIC1jb3JlZmlsZSAkY29yZWZpbGUKKysKKytzZXQgZmlsZV9yZSBb c3RyaW5nX3RvX3JlZ2V4cCAkY29yZWZpbGVdCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChpbmYu Y29yZWZpbGUpIiAiXjxnZGJcXC5Db3JlZmlsZSBpbmZlcmlvcj0xIGZpbGVuYW1lPSckZmlsZV9y ZSc+IiBcCisrICAgICJJbmZlcmlvci5jb3JlZmlsZSBpcyBhIHZhbGlkIG9iamVjdCBhZnRlciBs b2FkaW5nIGEgY29yZSBmaWxlIgorKworK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGNvcmUx PWluZi5jb3JlZmlsZSIgImNhcHR1cmUgZ2RiLkNvcmVmaWxlIG9iamVjdCIKKysKKytnZGJfdGVz dCAicHl0aG9uIHByaW50KGNvcmUxLl9fZGljdF9fKSIgIl5cXHtcXH0iIFwKKysgICAgInByaW50 IENvcmVmaWxlLl9fZGljdF9fIHdoZW4gZW1wdHkiCisrCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJw eXRob24gY29yZTEuX215X2F0dHJpYnV0ZSA9IFwiSGVsbG9cIiIgXAorKyAgICAid3JpdGUgbmV3 IGF0dHJpYnV0ZSBpbnRvIENvcmVmaWxlIG9iamVjdCIKKysKKytnZGJfdGVzdCAicHl0aG9uIHBy aW50KGNvcmUxLl9teV9hdHRyaWJ1dGUpIiAiXkhlbGxvIiBcCisrICAgICJpbW1lZGlhdGVseSBy ZWFkIG5ldyBhdHRyaWJ1dGUiCisrCisrZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMS5fX2Rp Y3RfXykiICJeXFx7J19teV9hdHRyaWJ1dGUnOiAnSGVsbG8nXFx9IiBcCisrICAgICJwcmludCBD b3JlZmlsZS5fX2RpY3RfXyBhZnRlciBhZGRpbmcgYW4gYXR0cmlidXRlIgorKworK2dkYl90ZXN0 ICJweXRob24gcHJpbnQoY29yZTEuZmlsZW5hbWUpIiAiXiRmaWxlX3JlIiBcCisrICAgICJDb3Jl ZmlsZS5maWxlbmFtZSBhdHRyaWJ1dGUgd29ya3MgYXMgZXhwZWN0ZWQiCisrCisrZ2RiX3Rlc3Qg InB5dGhvbiBwcmludChjb3JlMS5pc192YWxpZCgpKSIgIl5UcnVlIiBcCisrICAgICJDb3JlZmls ZS5pc192YWxpZCgpIGlzIFRydWUgd2hpbGUgY29yZWZpbGUgaXMgbG9hZGVkIgorKworK2NvcmVf ZmlsZV9jbWQKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUxLmlzX3ZhbGlkKCkpIiAi XkZhbHNlIiBcCisrICAgICJDb3JlZmlsZS5pc192YWxpZCgpIGlzIEZhbHNlIGFmdGVyIGNvcmVm aWxlIGlzIHVubG9hZGVkIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuX19kaWN0 X18pIiAiXlxceydfbXlfYXR0cmlidXRlJzogJ0hlbGxvJ1xcfSIgXAorKyAgICAicHJpbnQgQ29y ZWZpbGUuX19kaWN0X18gd2l0aCBhdHRyaWJ1dGUgd2hlbiBpbnZhbGlkIgorKworK2dkYl90ZXN0 ICJweXRob24gcHJpbnQoY29yZTEpIiAiXjxnZGJcXC5Db3JlZmlsZSBcXChpbnZhbGlkXFwpPiIg XAorKyAgICAicHJpbnQgYW4gaW52YWxpZCBnZGIuQ29yZWZpbGUgb2JqZWN0IgorKworK2dkYl90 ZXN0ICJweXRob24gcHJpbnQoY29yZTEuZmlsZW5hbWUpIiBcCisrICAgIFttdWx0aV9saW5lIFwK KysJICJQeXRob24gRXhjZXB0aW9uIDxjbGFzcyAnUnVudGltZUVycm9yJz46IENvcmVmaWxlIG5v IGxvbmdlciBleGlzdHNcXC4iIFwKKysJICJFcnJvciBvY2N1cnJlZCBpbiBQeXRob246IENvcmVm aWxlIG5vIGxvbmdlciBleGlzdHNcXC4iXSBcCisrICAgICJlcnJvciB3aGVuIHJlYWRpbmcgZmls ZW5hbWUgZnJvbSBpbnZhbGlkIENvcmVmaWxlIgorKworK2dkYl90ZXN0ICJweXRob24gcHJpbnQo aW5mLmNvcmVmaWxlKSIgIl5Ob25lIiBcCisrICAgICJJbmZlcmlvci5jb3JlZmlsZSBpcyBOb25l IGFnYWluIGFmdGVyIGNvcmVmaWxlIHVubG9hZCIKKysKKytnZGJfdGVzdCAicHl0aG9uIHByaW50 KGNvcmUxLl9teV9hdHRyaWJ1dGUpIiAiXkhlbGxvIiBcCisrICAgICJyZWFkIG5ldyBhdHRyaWJ1 dGUgZnJvbSBpbnZhbGlkIGNvcmUgZmlsZSIKKysKKysjIENyZWF0ZSBhIHNlY29uZCBpbmZlcmlv ci4KKytnZGJfdGVzdCAiYWRkLWluZmVyaW9yIgorK2dkYl90ZXN0ICJpbmZlcmlvciAyIgorKwor K3dpdGhfdGVzdF9wcmVmaXggImluIHNlY29uZCBpbmZlcmlvciIgeworKyAgICBjb3JlX2ZpbGVf Y21kIC1jb3JlZmlsZSAkY29yZWZpbGUgLWluZmVyaW9yIDIKKysKKysgICAgZ2RiX3Rlc3QgInB5 dGhvbiBwcmludChpbmYuY29yZWZpbGUpIiAiXk5vbmUiIFwKKysJImZpcnN0IGluZmVyaW9yIHN0 aWxsIGhhcyBubyBjb3JlIGZpbGUiCisrCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9u IGNvcmUyPWdkYi5zZWxlY3RlZF9pbmZlcmlvcigpLmNvcmVmaWxlIiBcCisrCSJjYXB0dXJlIGdk Yi5Db3JlZmlsZSBvYmplY3QiCisrCisrICAgICMgVGhlIF9teV9hdHRyaWJ1dGUgd2FzIGFkZGVk IHRvIENPUkUxLCBub3QgQ09SRTIuICBDaGVjayBpdAorKyAgICAjIGRvZXNuJ3Qgc29tZWhvdyBh cHBlYXIgb24gQ09SRTIuCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTIuX215X2F0 dHJpYnV0ZSkiIFwKKysJIkF0dHJpYnV0ZUVycm9yLio6ICdnZGJcXC5Db3JlZmlsZScgb2JqZWN0 IGhhcyBubyBhdHRyaWJ1dGUgJ19teV9hdHRyaWJ1dGUnIiBcCisrCSJ0cnkgdG8gcmVhZCBhdHRy aWJ1dGUgdGhhdCBkb2Vzbid0IGV4aXN0IgorKworKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50 KGNvcmUyLmZpbGVuYW1lKSIgIl4kZmlsZV9yZSIgXAorKwkiQ29yZWZpbGUuZmlsZW5hbWUgYXR0 cmlidXRlIHdvcmtzIGFzIGV4cGVjdGVkIgorKworKyAgICBnZGJfdGVzdCAiaW5mZXJpb3IgMSIK Kyt9CisrCisrIyBSZWFkIHRoZSBuYW1lIG9mIHRoZSBjb3JlIGZpbGUgZnJvbSB0aGUgc2Vjb25k IHByb2dyYW0gc3BhY2Ugd2hpbGUKKysjIHRoZSBjdXJyZW50IHByb2dyYW0gc3BhY2UgaXMgdGhl IGZpcnN0IG9uZS4KKytnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUyLmZpbGVuYW1lKSIgIl4k ZmlsZV9yZSIgXAorKyAgICAiQ29yZWZpbGUuZmlsZW5hbWUgYXR0cmlidXRlIHdvcmtzIGZyb20g ZGlmZmVyZW50IHByb2dzcGFjZSIKKysKKysjIExvYWQgdGhlIG90aGVyIGNvcmVmaWxlIGludG8g dGhlIGZpcnN0IGluZmVyaW9yLgorK2NvcmVfZmlsZV9jbWQgLWNvcmVmaWxlICRvdGhlcl9jb3Jl ZmlsZSBcCisrICAgIC1wcmVmaXggImxvYWQgb3RoZXIgY29yZWZpbGUgaW50byBpbmZlcmlvciAx IgorKworKyMgRGVsZXRlIHRoZSBzZWNvbmQgaW5mZXJpb3IuICBXZSBuZWVkIHRvIHN3aXRjaCB0 byB0aGUgc2Vjb25kCisrIyBpbmZlcmlvciBhbmQgdW5sb2FkIGl0cyBjb3JlZmlsZSBiZWZvcmUg d2UgY2FuIGRvIHRoYXQuICBUaGVuLAorKyMgc3dpdGNoIGJhY2sgdG8gdGhlIGZpcnN0IGluZmVy aW9yLCBkZWxldGUgdGhlIHNlY29uZCwgYW5kIHRyeSB0bworKyMgcmVhZCB0aGUgZmlsZW5hbWUg b2YgdGhlIGNvcmUgZmlsZSBmcm9tIHRoZSAobm93IGRlbGV0ZWQpIHNlY29uZAorKyMgaW5mZXJp b3IuICBXZSBzaG91bGQgZ2V0IGFuIGVycm9yIGFib3V0IHRoZSBnZGIuQ29yZWZpbGUgYmVpbmcK KysjIGludmFsaWQuCisrd2l0aF90ZXN0X3ByZWZpeCAicmVtb3ZlIHNlY29uZCBpbmZlcmlvciIg eworKyAgICBnZGJfdGVzdCAiaW5mZXJpb3IgMiIKKysKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBw cmludChpbmYuY29yZWZpbGUuZmlsZW5hbWUpIiBcCisrCSJeW3N0cmluZ190b19yZWdleHAgJG90 aGVyX2NvcmVmaWxlXSIgXAorKwkicmVhZCBpbmZlcmlvciAxIGNvcmVmaWxlIHdoZW4gaW4gaW5m ZXJpb3IgMiIKKysKKysgICAgZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJweXRob24gY29yZTE9aW5mLmNv cmVmaWxlIiBcCisrCSJjYXB0dXJlIGluZmVyaW9yIDEgZ2RiLkNvcmVmaWxlIHdoaWxlIGluIGlu ZmVyaW9yIDIiCisrCisrICAgICMgVGhpcyBpcyBhIG5ldyBDT1JFMSBvYmplY3QsIGNoZWNrIHRo YXQgX215X2F0dHJpYnV0ZSBpcyBnb25lLgorKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGNv cmUxLl9teV9hdHRyaWJ1dGUpIiBcCisrCSJBdHRyaWJ1dGVFcnJvci4qOiAnZ2RiXFwuQ29yZWZp bGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdfbXlfYXR0cmlidXRlJyIgXAorKwkidHJ5IHRv IHJlYWQgYXR0cmlidXRlIHRoYXQgZG9lc24ndCBleGlzdCIKKysKKysgICAgY29yZV9maWxlX2Nt ZCAtaW5mZXJpb3IgMgorKworKyAgICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUyLmZpbGVu YW1lKSIgXAorKwlbbXVsdGlfbGluZSBcCisrCSAgICAgIlB5dGhvbiBFeGNlcHRpb24gPGNsYXNz ICdSdW50aW1lRXJyb3InPjogQ29yZWZpbGUgbm8gbG9uZ2VyIGV4aXN0c1xcLiIgXAorKwkgICAg ICJFcnJvciBvY2N1cnJlZCBpbiBQeXRob246IENvcmVmaWxlIG5vIGxvbmdlciBleGlzdHNcXC4i XSBcCisrCSJlcnJvciB3aGVuIHJlYWRpbmcgZmlsZW5hbWUgZnJvbSBpbnZhbGlkIENvcmVmaWxl IgorKworKyAgICBnZGJfdGVzdCAiaW5mZXJpb3IgMSIKKysKKysgICAgZ2RiX3Rlc3QgInJlbW92 ZS1pbmZlcmlvcnMgMiIKKysKKysgICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludChjb3JlMi5pc192 YWxpZCgpKSIgIl5GYWxzZSIgXAorKwkiQ29yZWZpbGUuaXNfdmFsaWQoKSBpcyBGYWxzZSBhZnRl ciBjb3JlZmlsZSBpcyB1bmxvYWRlZCwgYW5kIFByb2dzcGFjZSBpcyBkZWxldGVkIgorKworKyAg ICBnZGJfdGVzdCAicHl0aG9uIHByaW50KGNvcmUyLmZpbGVuYW1lKSIgXAorKwlbbXVsdGlfbGlu ZSBcCisrCSAgICAgIlB5dGhvbiBFeGNlcHRpb24gPGNsYXNzICdSdW50aW1lRXJyb3InPjogQ29y ZWZpbGUgbm8gbG9uZ2VyIGV4aXN0c1xcLiIgXAorKwkgICAgICJFcnJvciBvY2N1cnJlZCBpbiBQ eXRob246IENvcmVmaWxlIG5vIGxvbmdlciBleGlzdHNcXC4iXSBcCisrCSJlcnJvciB3aGVuIHJl YWRpbmcgZmlsZW5hbWUgb2YgYW4gaW52YWxpZCBDb3JlZmlsZSwgZnJvbSBkZWxldGVkIHByb2dy YW0gc3BhY2UiCisrCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQoY29yZTEuaXNfdmFsaWQo KSkiICJeVHJ1ZSIgXAorKwkiY2hlY2sgaW5mZXJpb3IgMSBjb3JlIGZpbGUgaXMgc3RpbGwgdmFs aWQiCisrfQorKworKyMgVGVzdCB0aGUgQ29yZWZpbGUubWFwcGVkX2ZpbGVzKCkgQVBJLiAgVGhl IFB5dGhvbiBzY3JpcHQgdGhhdCBpcworKyMgc291cmNlZCBoZXJlIGltcGxlbWVudHMgJ2luZm8g cHJvYyBtYXBwaW5ncycgaW4gUHl0aG9uIHVzaW5nIHRoZQorKyMgbWFwcGVkX2ZpbGVzIEFQSS4g IFRoZSBvdXRwdXQgZnJvbSB0aGUgYnVpbHQtaW4gY29tbWFuZCwgYW5kIHRoZQorKyMgUHl0aG9u IGNvbW1hbmQgc2hvdWxkIGJlIGlkZW50aWNhbC4KKyt3aXRoX3Rlc3RfcHJlZml4ICJ0ZXN0IG1h cHBlZCBmaWxlcyBkYXRhIiB7CisrICAgIGNsZWFuX3Jlc3RhcnRfYW5kX2xvYWRfcHlfc2NyaXB0 CisrCisrICAgICMgTG9hZCB0aGUgY29yZSBmaWxlLgorKyAgICBjb3JlX2ZpbGVfY21kIC1jb3Jl ZmlsZSAkY29yZWZpbGUKKysKKysgICAgIyBUd28gZmlsZXMgdG8gd3JpdGUgdGhlIG91dHB1dCB0 by4KKysgICAgc2V0IG91dF8xIFtzdGFuZGFyZF9vdXRwdXRfZmlsZSAke2dkYl90ZXN0X2ZpbGVf bmFtZX0tb3V0LTEudHh0XQorKyAgICBzZXQgb3V0XzIgW3N0YW5kYXJkX291dHB1dF9maWxlICR7 Z2RiX3Rlc3RfZmlsZV9uYW1lfS1vdXQtMi50eHRdCisrCisrICAgICMgUnVuIHRoZSBidWlsdC1p biBjb21tYW5kLCB0aGVuIHRoZSBuZXcgUHl0aG9uIGNvbW1hbmQsIGNhcHR1cmUKKysgICAgIyB0 aGUgb3V0cHV0LgorKyAgICBnZGJfdGVzdCAicGlwZSBpbmZvIHByb2MgbWFwcGluZ3MgfCB0ZWUg JG91dF8xIiAiLioiIFwKKysJImNhcHR1cmUgYnVpbHQtaW4gbWFwcGluZ3Mgb3V0cHV0IgorKyAg ICBnZGJfdGVzdCAicGlwZSBpbmZvIHByb2MgcHktbWFwcGluZ3MgfCB0ZWUgJG91dF8yIiAiLioi IFwKKysJImNhcHR1cmUgUHl0aG9uIGJhc2VkIG1hcHBpbmdzIGRhdGEiCisrCisrICAgICMgQ2hl Y2sgdGhlIG91dHB1dCBpcyBpZGVudGljYWwuCisrICAgIGdkYl90ZXN0ICJzaGVsbCBkaWZmIC1z ICRvdXRfMSAkb3V0XzIiIFwKKysJIkZpbGVzIFxbXlxyXG5cXSstb3V0LTEudHh0IGFuZCBcW15c clxuXF0rLW91dC0yLnR4dCBhcmUgaWRlbnRpY2FsIiBcCisrCSJkaWZmIGlucHV0IGFuZCBvdXRw dXQgb25lIgorKworKyAgICAjIENoZWNrIGJ1aWxkLWlkcyB3aXRoaW4gdGhlIGNvcmUgZmlsZSBt YXBwaW5nIGRhdGEuCisrICAgIGdkYl90ZXN0ICJjaGVjay1idWlsZC1pZHMiICJeUEFTUyIKKysK KysgICAgIyBDaGVjayB0aGUgaXNfbWFpbl9leGVjdXRhYmxlIGZsYWcgaW4gdGhlIG1hcHBpbmcg ZGF0YS4KKysgICAgZ2RiX3Rlc3QgImNoZWNrLW1haW4tZXhlY3V0YWJsZSIgIl5QQVNTIgorKwor KyAgICAjIENoZWNrIHRoYXQgdGhlIG1hcHBlZCBmaWxlcyAibGlzdCIgaXMgYWN0dWFsbHkgYW4g aW1tdXRhYmxlCisrICAgICMgdHVwbGUuCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9u IGNvcmUgPSBnZGIuc2VsZWN0ZWRfaW5mZXJpb3IoKS5jb3JlZmlsZSIKKysgICAgZ2RiX3Rlc3Rf bm9fb3V0cHV0ICJweXRob24gbWFwcGVkX2ZpbGVzID0gY29yZS5tYXBwZWRfZmlsZXMoKSIKKysg ICAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCh0eXBlKG1hcHBlZF9maWxlcykpIiBcCisrCSJePGNs YXNzICd0dXBsZSc+IgorKyAgICBnZGJfdGVzdCAicHl0aG9uIG1hcHBlZF9maWxlc1xbMFxdID0g Tm9uZSIgXAorKwkiJ3R1cGxlJyBvYmplY3QgZG9lcyBub3Qgc3VwcG9ydCBpdGVtIGFzc2lnbm1l bnQiCisrICAgIGdkYl90ZXN0ICJweXRob24gcHJpbnQobWFwcGVkX2ZpbGVzXFswXF0gaXMgTm9u ZSkiICJeRmFsc2UiCisrCisrICAgICMgQW5kIHNhbWUgZm9yIHRoZSBsaXN0IG9mIHJlZ2lvbnMg Zm9yIGEgbWFwcGVkIGZpbGUuCisrICAgIGdkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIHJlZ2lv bnMgPSBtYXBwZWRfZmlsZXNcWzBcXS5yZWdpb25zIgorKyAgICBnZGJfdGVzdCAicHl0aG9uIHBy aW50KHR5cGUocmVnaW9ucykpIiBcCisrCSJePGNsYXNzICd0dXBsZSc+IgorKyAgICBnZGJfdGVz dCAicHl0aG9uIHJlZ2lvbnNcWzBcXSA9IE5vbmUiIFwKKysJIid0dXBsZScgb2JqZWN0IGRvZXMg bm90IHN1cHBvcnQgaXRlbSBhc3NpZ25tZW50IgorK30KKysKKysjIExvYWQgYSBjb3JlIGZpbGUu ICBHREIgc2hvdWxkIGZpZ3VyZSBvdXQgd2hpY2ggZmlsZSBpcyBiZWluZyBkZWJ1Z2dlZC4KKysj IFRoZW4gdXNlICdzdGFydCcgdG8gcnVuIHRoaXMgZXhlY3V0YWJsZSwgdGhpcyB3aWxsIHJlcGxh Y2UgdGhlIGNvcmUgZmlsZQorKyMgdGFyZ2V0LiAgQXQgbGVhc3Qgb24gTGludXgsIHRoaXMgcmVw bGFjZW1lbnQgaXMgZG9uZSB3aXRob3V0IGNhbGxpbmcKKysjIHRhcmdldF9kZXRhY2guICBUaGlz IHRlc3QgY2hlY2tzIHRoYXQgdGhlIGV4cGVjdGVkIGNvcmUgZmlsZSBjaGFuZ2VkIGFuZAorKyMg aW5mZXJpb3IgZXhpdGVkIGV2ZW50cyBhcmUgc3RpbGwgc2Vlbi4KKyt3aXRoX3Rlc3RfcHJlZml4 ICJzdGFydCBmcm9tIGNvcmVmaWxlIiB7CisrICAgIGlmIHsgW2dkYl9wcm90b2NvbF9pc19uYXRp dmVdIH0geworKwljbGVhbl9yZXN0YXJ0X2FuZF9sb2FkX3B5X3NjcmlwdAorKworKwkjIExvYWQg dGhlIGNvcmUgZmlsZS4KKysJY29yZV9maWxlX2NtZCAtY29yZWZpbGUgJGNvcmVmaWxlCisrCisr CSMgQ2hlY2sgR0RCIGZpZ3VyZWQgb3V0IHRoZSBleGVjdXRhYmxlLgorKwlnZGJfdGVzdCAiaW5m byBpbmZlcmlvcnMgMSIgXAorKwkgICAgIlxbXlxyXG5cXStbc3RyaW5nX3RvX3JlZ2V4cCAkYmlu ZmlsZV1cXHMqIiBcCisrCSAgICAiY2hlY2sgZXhlY3V0YWJsZSB3YXMgZGV0ZWN0ZWQgY29ycmVj dGx5IgorKworKwlnZGJfdGVzdCAic3RhcnQiIFwKKysJICAgICJUZW1wb3JhcnkgYnJlYWtwb2lu dCAkOjpkZWNpbWFsLCBtYWluIFxcKFxcKS4qIiBcCisrCisrCWdkYl90ZXN0ICJldmVudHMgY29y ZWZpbGVfY2hhbmdlZCBjaGVjayIgXAorKwkgICAgIkV2ZW50IDEvMSwgSW5mZXJpb3IgMSwgQ29y ZWZpbGUgTm9uZSIgXAorKwkgICAgImV4cGVjdGVkIGNvcmVmaWxlIGV2ZW50IGhhcyBiZWVuIHNl ZW4iCisrCisrCWdkYl90ZXN0ICJldmVudHMgZXhpdGVkIGNoZWNrIiBcCisrCSAgICAiRXZlbnQg MS8xLCBJbmZlcmlvciAxLCBFeGl0IENvZGUgTm9uZSIgXAorKwkgICAgImV4cGVjdGVkIGV4aXRl ZCBldmVudCBoYXMgYmVlbiBzZWVuIgorKworKwlnZGJfdGVzdF9ub19vdXRwdXQgLW5vcGFzcyAi ZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQgcmVzZXQiCisrCWdkYl90ZXN0X25vX291dHB1dCAtbm9w YXNzICJldmVudHMgZXhpdGVkIHJlc2V0IgorKyAgICB9CisrfQorKworKyMgTG9hZCBhIGNvcmUg ZmlsZSwgdGhlbiBsb2FkIGEgZGlmZmVyZW50IGNvcmUgZmlsZSB0byByZXBsYWNlIGl0LgorKyMg Q2hlY2sgdGhhdCB0aGUgZXZlbnRzIHRoYXQgYXJlIGVtaXR0ZWQgYXJlIGFzIGV4cGVjdGVkLgor K3dpdGhfdGVzdF9wcmVmaXggImxvYWQgb25lIGNvcmUgZmlsZSBvdmVyIGFub3RoZXIiIHsKKysg ICAgY2xlYW5fcmVzdGFydF9hbmRfbG9hZF9weV9zY3JpcHQKKysKKysgICAgIyBMb2FkIHRoZSBj b3JlIGZpbGUuCisrICAgIGNvcmVfZmlsZV9jbWQgLWNvcmVmaWxlICRjb3JlZmlsZSBcCisrCS1w cmVmaXggImxvYWQgZmlyc3QgY29yZWZpbGUiCisrCisrICAgIGNvcmVfZmlsZV9jbWQgLWNvcmVm aWxlICRvdGhlcl9jb3JlZmlsZSBcCisrCS1wcmVmaXggImxvYWQgc2Vjb25kIGNvcmVmaWxlIiBc CisrCS1yZXBsYWNlbWVudAorK30KK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktY29yZWZpbGUucHkgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY29yZWZpbGUu cHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktY29yZWZpbGUucHkKK0BAIC0wLDAgKzEsMjYxIEBACisrIyBDb3B5 cmlnaHQgKEMpIDIwMjUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrIyBUaGlz IHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247 IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBvcHRpb24p IGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBp biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1FUkNIQU5U QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysj IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIworKyMgWW91 IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKworK2ltcG9ydCBwYXRobGliCisrCisrCisrY2xhc3Mg TWFwcGluZzoKKysgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hcHBpbmcsIHJlZ2lvbik6CisrICAg ICAgICBzZWxmLl9tYXBwaW5nID0gbWFwcGluZworKyAgICAgICAgc2VsZi5fcmVnaW9uID0gcmVn aW9uCisrCisrICAgIEBwcm9wZXJ0eQorKyAgICBkZWYgc3RhcnQoc2VsZik6CisrICAgICAgICBy ZXR1cm4gc2VsZi5fcmVnaW9uLnN0YXJ0CisrCisrICAgIEBwcm9wZXJ0eQorKyAgICBkZWYgZW5k KHNlbGYpOgorKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlZ2lvbi5lbmQKKysKKysgICAgQHByb3Bl cnR5CisrICAgIGRlZiBvZmZzZXQoc2VsZik6CisrICAgICAgICByZXR1cm4gc2VsZi5fcmVnaW9u LmZpbGVfb2Zmc2V0CisrCisrICAgIEBwcm9wZXJ0eQorKyAgICBkZWYgZmlsZW5hbWUoc2VsZik6 CisrICAgICAgICByZXR1cm4gc2VsZi5fbWFwcGluZy5maWxlbmFtZQorKworKworK2RlZiBpbmZv X3Byb2NfbWFwcGluZ3MoKToKKysgICAgcHJpbnQoIk1hcHBlZCBhZGRyZXNzIHNwYWNlczoiKQor KyAgICBwcmludCgiIikKKysgICAgZm9ybWF0X3N0ciA9ICIlLTE4cyAlLTE4cyAlLTE4cyAlLTE4 cyAlcyAiCisrICAgIHByaW50KGZvcm1hdF9zdHIgJSAoIlN0YXJ0IEFkZHIiLCAiRW5kIEFkZHIi LCAiU2l6ZSIsICJPZmZzZXQiLCAiRmlsZSIpKQorKworKyAgICBjb3JlID0gZ2RiLnNlbGVjdGVk X2luZmVyaW9yKCkuY29yZWZpbGUKKysgICAgbWFwcGluZ3MgPSBjb3JlLm1hcHBlZF9maWxlcygp CisrCisrICAgIHJlc3VsdCA9IFtdCisrICAgIGZvciBtIGluIG1hcHBpbmdzOgorKyAgICAgICAg Zm9yIHIgaW4gbS5yZWdpb25zOgorKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoTWFwcGluZyht LCByKSkKKysKKysgICAgcmVzdWx0LnNvcnQoa2V5PWxhbWJkYSB4OiB4LnN0YXJ0KQorKyAgICBm b3IgciBpbiByZXN1bHQ6CisrICAgICAgICBzeiA9IHIuZW5kIC0gci5zdGFydAorKyAgICAgICAg cHJpbnQoCisrICAgICAgICAgICAgZm9ybWF0X3N0cgorKyAgICAgICAgICAgICUgKAorKyAgICAg ICAgICAgICAgICAiMHglMDE2eCIgJSByLnN0YXJ0LAorKyAgICAgICAgICAgICAgICAiMHglMDE2 eCIgJSByLmVuZCwKKysgICAgICAgICAgICAgICAgIjB4JS0xNngiICUgc3osCisrICAgICAgICAg ICAgICAgICIweCUtMTZ4IiAlIHIub2Zmc2V0LAorKyAgICAgICAgICAgICAgICAiJXMiICUgci5m aWxlbmFtZSwKKysgICAgICAgICAgICApCisrICAgICAgICApCisrCisrCisrY2xhc3MgSW5mb1By b2NQeU1hcHBpbmdzKGdkYi5Db21tYW5kKToKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAg ICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwgImluZm8gcHJvYyBweS1tYXBwaW5ncyIs IGdkYi5DT01NQU5EX0RBVEEpCisrCisrICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90 dHkpOgorKyAgICAgICAgaW5mb19wcm9jX21hcHBpbmdzKCkKKysKKysKKytJbmZvUHJvY1B5TWFw cGluZ3MoKQorKworKworK2NsYXNzIENoZWNrQnVpbGRJZHMoZ2RiLkNvbW1hbmQpOgorKyAgICBk ZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAi Y2hlY2stYnVpbGQtaWRzIiwgZ2RiLkNPTU1BTkRfREFUQSkKKysKKysgICAgZGVmIGludm9rZShz ZWxmLCBhcmdzLCBmcm9tX3R0eSk6CisrICAgICAgICBpbmYgPSBnZGIuc2VsZWN0ZWRfaW5mZXJp b3IoKQorKyAgICAgICAgb2JqZmlsZXMgPSBpbmYucHJvZ3NwYWNlLm9iamZpbGVzKCkKKysKKysg ICAgICAgIHBhdGhfdG9fYnVpbGRfaWQgPSB7fQorKworKyAgICAgICAgZm9yIG8gaW4gb2JqZmls ZXM6CisrICAgICAgICAgICAgaWYgbm90IG8uaXNfZmlsZSBvciBvLmJ1aWxkX2lkIGlzIE5vbmU6 CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlCisrICAgICAgICAgICAgcCA9IHBhdGhsaWIuUGF0 aChvLmZpbGVuYW1lKS5yZXNvbHZlKCkKKysgICAgICAgICAgICBiID0gby5idWlsZF9pZAorKyAg ICAgICAgICAgIHBhdGhfdG9fYnVpbGRfaWRbcF0gPSBiCisrCisrICAgICAgICBjb3VudCA9IDAK KysgICAgICAgIGNvcmVfbWFwcGVkX2ZpbGVzID0gaW5mLmNvcmVmaWxlLm1hcHBlZF9maWxlcygp CisrICAgICAgICBmb3IgbSBpbiBjb3JlX21hcHBlZF9maWxlczoKKysgICAgICAgICAgICBwID0g cGF0aGxpYi5QYXRoKG0uZmlsZW5hbWUpLnJlc29sdmUoKQorKyAgICAgICAgICAgIGIgPSBtLmJ1 aWxkX2lkCisrCisrICAgICAgICAgICAgaWYgcCBpbiBwYXRoX3RvX2J1aWxkX2lkOgorKyAgICAg ICAgICAgICAgICBjb3VudCArPSAxCisrICAgICAgICAgICAgICAgIGFzc2VydCBwYXRoX3RvX2J1 aWxkX2lkW3BdID09IGIsICJidWlsZC1pZCBtaXNtYXRjaCBmb3IgJXMiICUgcAorKworKyAgICAg ICAgYXNzZXJ0IGNvdW50ID4gMCwgIm5vIG1hcHBlZCBmaWxlcyBjaGVja2VkIgorKworKyAgICAg ICAgcHJpbnQoIlBBU1MiKQorKworKworK0NoZWNrQnVpbGRJZHMoKQorKworKworK2NsYXNzIENo ZWNrTWFpbkV4ZWMoZ2RiLkNvbW1hbmQpOgorKyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAg ICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyhzZWxmLCAiY2hlY2stbWFpbi1leGVjdXRhYmxlIiwg Z2RiLkNPTU1BTkRfREFUQSkKKysKKysgICAgZGVmIGludm9rZShzZWxmLCBhcmdzLCBmcm9tX3R0 eSk6CisrICAgICAgICBpbmYgPSBnZGIuc2VsZWN0ZWRfaW5mZXJpb3IoKQorKyAgICAgICAgcHNw YWNlID0gaW5mLnByb2dzcGFjZQorKyAgICAgICAgZXhlY19maWxlbmFtZSA9IHBhdGhsaWIuUGF0 aChwc3BhY2UuZXhlY3V0YWJsZV9maWxlbmFtZSkucmVzb2x2ZSgpCisrCisrICAgICAgICBjb3Vu dCA9IDAKKysgICAgICAgIGNvcmVfbWFwcGVkX2ZpbGVzID0gaW5mLmNvcmVmaWxlLm1hcHBlZF9m aWxlcygpCisrICAgICAgICBmb3IgbSBpbiBjb3JlX21hcHBlZF9maWxlczoKKysgICAgICAgICAg ICBpZiBub3QgbS5pc19tYWluX2V4ZWN1dGFibGU6CisrICAgICAgICAgICAgICAgIGNvbnRpbnVl CisrCisrICAgICAgICAgICAgcCA9IHBhdGhsaWIuUGF0aChtLmZpbGVuYW1lKS5yZXNvbHZlKCkK KysKKysgICAgICAgICAgICBjb3VudCArPSAxCisrICAgICAgICAgICAgYXNzZXJ0IGV4ZWNfZmls ZW5hbWUgPT0gcCwgIm1haW4gZXhlYyBmaWxlbmFtZSBtaXNtYXRjaCIKKysKKysgICAgICAgIGFz c2VydCBjb3VudCA9PSAxLCAiaW52YWxpZCBtYWluIGV4ZWN1dGFibGUgY291bnQiCisrCisrICAg ICAgICBwcmludCgiUEFTUyIpCisrCisrCisrQ2hlY2tNYWluRXhlYygpCisrCisrCisrIyBBbiAn ZXZlbnRzJyBwcmVmaXggY29tbWFuZC4KKytjbGFzcyBldmVudHNfY21kKGdkYi5Db21tYW5kKToK KysgICAgIiIiSW5mb3JtYXRpb24gYWJvdXQgcmVjZW50IFB5dGhvbiBldmVudHMuIiIiCisrCisr ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5pdF9fKHNl bGYsICJldmVudHMiLCBnZGIuQ09NTUFORF9VU0VSLCBwcmVmaXg9VHJ1ZSkKKysKKysKKysjIEFu ICdldmVudHMgY29yZWZpbGVfY2hhbmdlZCcgc3ViLWNvbW1hbmQuCisrY2xhc3MgZXZlbnRzX2Nv cmVmaWxlX2NoYW5nZWRfY21kKGdkYi5Db21tYW5kKToKKysgICAgIiIiQ2hlY2sgcmVjZW50IGNv cmVmaWxlX2NoYW5nZWQgZXZlbnRzLgorKworKyAgICBSZXF1aXJlcyBhIHNpbmdsZSBhcmd1bWVu dCBlaXRoZXIgJ2NoZWNrJyBvciAncmVzZXQnLiAgV2l0aAorKyAgICAnY2hlY2snLCBwcmludCBk ZXRhaWxzIG9mIGV2ZXJ5IHJlY2VudCBjb3JlZmlsZV9jaGFuZ2VkIGV2ZW50LgorKyAgICBXaXRo ICdyZXNldCcgY2xlYXIgdGhlIGxpc3Qgb2YgcmVjZW50IGNvcmVmaWxlX2NoYW5nZWQgZXZlbnRz LiIiIgorKworKyAgICBkZWYgX19pbml0X18oc2VsZik6CisrICAgICAgICBnZGIuQ29tbWFuZC5f X2luaXRfXyhzZWxmLCAiZXZlbnRzIGNvcmVmaWxlX2NoYW5nZWQiLCBnZGIuQ09NTUFORF9VU0VS KQorKyAgICAgICAgc2VsZi5fZXZlbnRzID0gW10KKysgICAgICAgIGdkYi5ldmVudHMuY29yZWZp bGVfY2hhbmdlZC5jb25uZWN0KGxhbWJkYSBlOiBzZWxmLl9jb3JlZmlsZV9jaGFuZ2VkX2hhbmRs ZXIoZSkpCisrCisrICAgIGRlZiBfY29yZWZpbGVfY2hhbmdlZF9oYW5kbGVyKHNlbGYsIGV2ZW50 KToKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50LCBnZGIuQ29yZWZpbGVDaGFuZ2Vk RXZlbnQpCisrICAgICAgICBpbmYgPSBldmVudC5pbmZlcmlvcgorKyAgICAgICAgYXNzZXJ0IGlz aW5zdGFuY2UoaW5mLCBnZGIuSW5mZXJpb3IpCisrCisrICAgICAgICBjb3JlZmlsZSA9IGluZi5j b3JlZmlsZQorKyAgICAgICAgaWYgY29yZWZpbGUgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAg YXNzZXJ0IGNvcmVmaWxlLmlzX3ZhbGlkKCkKKysgICAgICAgICAgICBjb3JlZmlsZSA9IGNvcmVm aWxlLmZpbGVuYW1lCisrCisrICAgICAgICBvYmogPSB7ImluZmVyaW9yIjogaW5mLm51bSwgImNv cmVmaWxlIjogY29yZWZpbGV9CisrICAgICAgICBzZWxmLl9ldmVudHMuYXBwZW5kKG9iaikKKysK KysgICAgZGVmIGludm9rZShzZWxmLCBhcmdzLCBmcm9tX3R0eSk6CisrICAgICAgICBpZiBhcmdz ID09ICJjaGVjayI6CisrICAgICAgICAgICAgaWYgbGVuKHNlbGYuX2V2ZW50cykgPT0gMDoKKysg ICAgICAgICAgICAgICAgcHJpbnQoIk5vIGNvcmVmaWxlX2NoYW5nZWQgZXZlbnQgaGFzIGJlZW4g c2Vlbi4iKQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAgIHRvdGFsID0gbGVu KHNlbGYuX2V2ZW50cykKKysgICAgICAgICAgICAgICAgZm9yIGlkeCwgb2JqIGluIGVudW1lcmF0 ZShzZWxmLl9ldmVudHMsIHN0YXJ0PTEpOgorKyAgICAgICAgICAgICAgICAgICAgaW5mX251bSA9 IG9ialsiaW5mZXJpb3IiXQorKyAgICAgICAgICAgICAgICAgICAgY29yZWZpbGUgPSBvYmpbImNv cmVmaWxlIl0KKysKKysgICAgICAgICAgICAgICAgICAgIGlmIGNvcmVmaWxlIGlzIE5vbmU6Cisr ICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gIk5vbmUiCisrICAgICAgICAgICAgICAgICAg ICBlbHNlOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IGNvcmVmaWxlCisrCisrICAg ICAgICAgICAgICAgICAgICBwcmludCgKKysgICAgICAgICAgICAgICAgICAgICAgICAiRXZlbnQg e30ve30sIEluZmVyaW9yIHt9LCBDb3JlZmlsZSB7fSIuZm9ybWF0KAorKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBpZHgsIHRvdGFsLCBpbmZfbnVtLCBtc2cKKysgICAgICAgICAgICAgICAg ICAgICAgICApCisrICAgICAgICAgICAgICAgICAgICApCisrICAgICAgICBlbGlmIGFyZ3MgPT0g InJlc2V0IjoKKysgICAgICAgICAgICBzZWxmLl9ldmVudHMgPSBbXQorKyAgICAgICAgZWxzZToK KysgICAgICAgICAgICByYWlzZSBnZGIuR2RiRXJyb3IoIlVua25vd24gY29tbWFuZCBhcmdzOiB7 fSIuZm9ybWF0KGFyZ3MpKQorKworKworKyMgQW4gJ2V2ZW50cyBleGl0ZWQnIHN1Yi1jb21tYW5k LgorK2NsYXNzIGV2ZW50c19leGl0ZWRfY21kKGdkYi5Db21tYW5kKToKKysgICAgIiIiQ2hlY2sg cmVjZW50IGV4aXRlZCBldmVudHMuCisrCisrICAgIFJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50 IGVpdGhlciAnY2hlY2snIG9yICdyZXNldCcuICBXaXRoCisrICAgICdjaGVjaycsIHByaW50IGRl dGFpbHMgb2YgZXZlcnkgcmVjZW50IGV4aXRlZCBldmVudC4gIFdpdGggJ3Jlc2V0JworKyAgICBj bGVhciB0aGUgbGlzdCBvZiByZWNlbnQgZXhpdGVkIGV2ZW50cy4iIiIKKysKKysgICAgZGVmIF9f aW5pdF9fKHNlbGYpOgorKyAgICAgICAgZ2RiLkNvbW1hbmQuX19pbml0X18oc2VsZiwgImV2ZW50 cyBleGl0ZWQiLCBnZGIuQ09NTUFORF9VU0VSKQorKyAgICAgICAgc2VsZi5fZXZlbnRzID0gW10K KysgICAgICAgIGdkYi5ldmVudHMuZXhpdGVkLmNvbm5lY3QobGFtYmRhIGU6IHNlbGYuX2V4aXRl ZF9oYW5kbGVyKGUpKQorKworKyAgICBkZWYgX2V4aXRlZF9oYW5kbGVyKHNlbGYsIGV2ZW50KToK KysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGV2ZW50LCBnZGIuRXhpdGVkRXZlbnQpCisrICAg ICAgICBpbmYgPSBldmVudC5pbmZlcmlvcgorKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaW5m LCBnZGIuSW5mZXJpb3IpCisrCisrICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAiZXhpdF9jb2Rl Iik6CisrICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZXZlbnQuZXhpdF9jb2RlLCBpbnQp CisrICAgICAgICAgICAgZXhpdF9jb2RlID0gZXZlbnQuZXhpdF9jb2RlCisrICAgICAgICBlbHNl OgorKyAgICAgICAgICAgIGV4aXRfY29kZSA9IE5vbmUKKysKKysgICAgICAgIG9iaiA9IHsiaW5m ZXJpb3IiOiBpbmYubnVtLCAiZXhpdF9jb2RlIjogZXhpdF9jb2RlfQorKyAgICAgICAgc2VsZi5f ZXZlbnRzLmFwcGVuZChvYmopCisrCisrICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90 dHkpOgorKyAgICAgICAgaWYgYXJncyA9PSAiY2hlY2siOgorKyAgICAgICAgICAgIGlmIGxlbihz ZWxmLl9ldmVudHMpID09IDA6CisrICAgICAgICAgICAgICAgIHByaW50KCJObyBleGl0ZWQgZXZl bnQgaGFzIGJlZW4gc2Vlbi4iKQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAgICAg IHRvdGFsID0gbGVuKHNlbGYuX2V2ZW50cykKKysgICAgICAgICAgICAgICAgZm9yIGlkeCwgb2Jq IGluIGVudW1lcmF0ZShzZWxmLl9ldmVudHMsIHN0YXJ0PTEpOgorKyAgICAgICAgICAgICAgICAg ICAgaW5mX251bSA9IG9ialsiaW5mZXJpb3IiXQorKyAgICAgICAgICAgICAgICAgICAgZXhpdF9j b2RlID0gb2JqWyJleGl0X2NvZGUiXQorKworKyAgICAgICAgICAgICAgICAgICAgaWYgZXhpdF9j b2RlIGlzIE5vbmU6CisrICAgICAgICAgICAgICAgICAgICAgICAgbXNnID0gIk5vbmUiCisrICAg ICAgICAgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9IGV4 aXRfY29kZQorKworKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoCisrICAgICAgICAgICAgICAg ICAgICAgICAgIkV2ZW50IHt9L3t9LCBJbmZlcmlvciB7fSwgRXhpdCBDb2RlIHt9Ii5mb3JtYXQo CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkeCwgdG90YWwsIGluZl9udW0sIG1zZwor KyAgICAgICAgICAgICAgICAgICAgICAgICkKKysgICAgICAgICAgICAgICAgICAgICkKKysgICAg ICAgIGVsaWYgYXJncyA9PSAicmVzZXQiOgorKyAgICAgICAgICAgIHNlbGYuX2V2ZW50cyA9IFtd CisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHJhaXNlIGdkYi5HZGJFcnJvcigiVW5rbm93 biBjb21tYW5kIGFyZ3M6IHt9Ii5mb3JtYXQoYXJncykpCisrCisrCisrZXZlbnRzX2NtZCgpCisr ZXZlbnRzX2NvcmVmaWxlX2NoYW5nZWRfY21kKCkKKytldmVudHNfZXhpdGVkX2NtZCgpCisrCisr cHJpbnQoIlN1Y2Nlc3MiKQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2RhcC1zdXBw b3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2RhcC1zdXBwb3J0LmV4cAorLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9saWIvZGFwLXN1cHBvcnQuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9kYXAt c3VwcG9ydC5leHAKK0BAIC0zNjIsNiArMzYyLDIyIEBAIHByb2MgZGFwX2F0dGFjaCB7cGlkIHtw cm9nICIifX0geworICAgICByZXR1cm4gW2RhcF9zZW5kX3JlcXVlc3QgYXR0YWNoICRhcmdzXQor IH0KKyAKKysjIFN0YXJ0IGdkYiwgc2VuZCBhIERBUCBpbml0aWFsaXplIHJlcXVlc3QsIGFuZCB0 aGVuIGFuIGF0dGFjaCByZXF1ZXN0CisrIyBzcGVjaWZ5aW5nIENPUkVGSUxFIGFzIHRoZSBjb3Jl IGZpbGUgdG8gYXR0YWNoIHRvLiAgUmV0dXJucyB0aGUKKysjIGVtcHR5IHN0cmluZyBvbiBmYWls dXJlLCBvciB0aGUgYXR0YWNoIHJlcXVlc3Qgc2VxdWVuY2UgSUQuCisrcHJvYyBkYXBfY29yZWZp bGUge2NvcmVmaWxlIHtwcm9nICIifX0geworKyAgICBpZiB7W2RhcF9pbml0aWFsaXplICJzdGFy dHVwIC0gaW5pdGlhbGl6ZSJdID09ICIifSB7CisrCXJldHVybiAiIgorKyAgICB9CisrCisrICAg IHNldCBhcmdzIFtmb3JtYXQge28gY29yZUZpbGUgW3MgIiVzIl19ICRjb3JlZmlsZV0KKysgICAg aWYgeyRwcm9nICE9ICIifSB7CisrCWFwcGVuZCBhcmdzIFtmb3JtYXQgeyBwcm9ncmFtIFtzICIl cyJdfSAkcHJvZ10KKysgICAgfQorKworKyAgICByZXR1cm4gW2RhcF9zZW5kX3JlcXVlc3QgYXR0 YWNoICRhcmdzXQorK30KKysKKyAjIFN0YXJ0IGdkYiwgc2VuZCBhIERBUCBpbml0aWFsaXplIHJl cXVlc3QsIGFuZCB0aGVuIGFuIGF0dGFjaCByZXF1ZXN0CisgIyBzcGVjaWZ5aW5nIFRBUkdFVCBh cyB0aGUgcmVtb3RlIHRhcmdldC4gIFJldHVybnMgdGhlIGVtcHR5IHN0cmluZyBvbgorICMgZmFp bHVyZSwgb3IgdGhlIGF0dGFjaCByZXF1ZXN0IHNlcXVlbmNlIElELgorQEAgLTM3MiwyNiArMzg4 LDMzIEBAIHByb2MgZGFwX3RhcmdldF9yZW1vdGUge3RhcmdldH0geworICAgICByZXR1cm4gW2Rh cF9zZW5kX3JlcXVlc3QgYXR0YWNoIFtmb3JtYXQge28gdGFyZ2V0IFtzICVzXX0gJHRhcmdldF1d CisgfQorIAorLSMgUmVhZCB0aGUgbW9zdCByZWNlbnQgREFQIGxvZyBmaWxlIGFuZCBjaGVjayBp dCBmb3IgZXhjZXB0aW9ucy4KKy1wcm9jIGRhcF9jaGVja19sb2dfZmlsZSB7fSB7CisrIyBSZWFk IHRoZSBtb3N0IHJlY2VudCBEQVAgbG9nIGZpbGUgYW5kIGNoZWNrIGl0IGZvciBleGNlcHRpb25z LiAgV2UKKysjIGV4cGVjdCB0byBzZWUgZXhhY3RseSBFWFBFQ1RFRF9FWENFUFRJT05fQ09VTlQg ZXhjZXB0aW9ucyBpbiB0aGUgbG9nLgorK3Byb2MgZGFwX2NoZWNrX2xvZ19maWxlIHsge2V4cGVj dGVkX2V4Y2VwdGlvbl9jb3VudCAwfSB9IHsKKyAgICAgc2V0IGZkIFtvcGVuIFtjdXJyZW50X2Rh cF9sb2dfZmlsZV1dCisgICAgIHNldCBjb250ZW50cyBbcmVhZCAkZmRdCisgICAgIGNsb3NlICRm ZAorIAorLSAgICBzZXQgb2sgMQorKyAgICBzZXQgZXhjZXB0aW9uX2NvdW50IDAKKyAgICAgZm9y ZWFjaCBsaW5lIFtzcGxpdCAkY29udGVudHMgIlxuIl0geworIAlpZiB7W3JlZ2V4cCAiXlRyYWNl YmFjayIgJGxpbmVdfSB7CistCSAgICBzZXQgb2sgMAorLQkgICAgYnJlYWsKKysJICAgIGluY3Ig ZXhjZXB0aW9uX2NvdW50CisrCSAgICBpZiB7ICRleGNlcHRpb25fY291bnQgPiAkZXhwZWN0ZWRf ZXhjZXB0aW9uX2NvdW50fSB7CisrCQlicmVhaworKwkgICAgfQorIAl9CisgICAgIH0KKyAKKy0g ICAgaWYgeyRva30geworKyAgICBpZiB7JGV4Y2VwdGlvbl9jb3VudCA9PSAkZXhwZWN0ZWRfZXhj ZXB0aW9uX2NvdW50fSB7CisgCXBhc3MgImV4Y2VwdGlvbnMgaW4gbG9nIGZpbGUiCisgICAgIH0g ZWxzZSB7CisgCXZlcmJvc2UgLWxvZyAtLSAgIi0tLSBEQVAgTE9HIFNUQVJUIC0tLSIKKyAJdmVy Ym9zZSAtbG9nIC0tICRjb250ZW50cworIAl2ZXJib3NlIC1sb2cgLS0gICItLS0gREFQIExPRyBF TkQgLS0tIgorKwlpZiB7ICRleHBlY3RlZF9leGNlcHRpb25fY291bnQgPiAwIH0geworKwkgICAg dmVyYm9zZSAtbG9nIC0tIFtqb2luIFtsaXN0ICJFeHBlY3RlZCAkZXhwZWN0ZWRfZXhjZXB0aW9u X2NvdW50IiBcCisrCQkJCQkiZXhjZXB0aW9uKHMpLCBzYXcgJGV4Y2VwdGlvbl9jb3VudCJdXQor Kwl9CisgCWZhaWwgImV4Y2VwdGlvbnMgaW4gbG9nIGZpbGUiCisgICAgIH0KKyB9CitAQCAtNDA3 LDggKzQzMCw5IEBAIHByb2MgZGFwX2NoZWNrX2xvZ19maWxlX3JlIHsgcmUgfSB7CisgfQorIAor ICMgQ2xlYW5seSBzaHV0IGRvd24gZ2RiLiAgVEVSTUlOQVRFIGlzIHBhc3NlZCBhcyB0aGUgdGVy bWluYXRlRGVidWdnZWUKKy0jIHBhcmFtZXRlciB0byB0aGUgcmVxdWVzdC4KKy1wcm9jIGRhcF9z aHV0ZG93biB7e3Rlcm1pbmF0ZSBmYWxzZX19IHsKKysjIHBhcmFtZXRlciB0byB0aGUgcmVxdWVz dC4gIFRoZSBFWFBFQ1RFRF9FWENFUFRJT05fQ09VTlQgaXMgdGhlCisrIyBudW1iZXIgb2YgZXhj ZXB0aW9ucyB0aGF0IHdlIGV4cGVjdCB0byBzZWUgaW4gdGhlIGxhdGVzdCBEQVAgbG9nLgorK3By b2MgZGFwX3NodXRkb3duIHt7dGVybWluYXRlIGZhbHNlfSB7ZXhwZWN0ZWRfZXhjZXB0aW9uX2Nv dW50IDB9fSB7CisgICAgIGRhcF9jaGVja19yZXF1ZXN0X2FuZF9yZXNwb25zZSAic2h1dGRvd24i IGRpc2Nvbm5lY3QgXAorIAlbZm9ybWF0IHtvIHRlcm1pbmF0ZURlYnVnZ2VlIFtsICVzXX0gJHRl cm1pbmF0ZV0KKyAKK0BAIC00MjAsNyArNDQ0LDcgQEAgcHJvYyBkYXBfc2h1dGRvd24ge3t0ZXJt aW5hdGUgZmFsc2V9fSB7CisgCisgICAgIGNsZWFyX2dkYl9zcGF3bl9pZAorIAorLSAgICBkYXBf Y2hlY2tfbG9nX2ZpbGUKKysgICAgZGFwX2NoZWNrX2xvZ19maWxlICRleHBlY3RlZF9leGNlcHRp b25fY291bnQKKyB9CisgCisgIyBTZWFyY2ggdGhlIGV2ZW50IGxpc3QgRVZFTlRTIGZvciBhbiBv dXRwdXQgZXZlbnQgbWF0Y2hpbmcgdGhlIHJlZ2V4cAoKZGlmZiAtLWdpdCBhL2dkYi1yaGJ6MjQw MzU4MC1taXNwbGFjZWQtc3ltdGFicy5wYXRjaCBiL2dkYi1yaGJ6MjQwMzU4MC1taXNwbGFjZWQt c3ltdGFicy5wYXRjaAppbmRleCA3OTk2ZDgyLi4zNWZkYWFkIDEwMDY0NAotLS0gYS9nZGItcmhi ejI0MDM1ODAtbWlzcGxhY2VkLXN5bXRhYnMucGF0Y2gKKysrIGIvZ2RiLXJoYnoyNDAzNTgwLW1p c3BsYWNlZC1zeW10YWJzLnBhdGNoCkBAIC05Miw3ICs5Miw3IEBAIGRpZmYgLS1naXQgYS9nZGIv ZHdhcmYyL2xpbmUtaGVhZGVyLmggYi9nZGIvZHdhcmYyL2xpbmUtaGVhZGVyLmgKIGRpZmYgLS1n aXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVhZC5jCiAtLS0gYS9nZGIvZHdh cmYyL3JlYWQuYwogKysrIGIvZ2RiL2R3YXJmMi9yZWFkLmMKLUBAIC02MjIyLDggKzYyMjIsOCBA QCBkd2FyZjJfY3U6OnNldHVwX3R5cGVfdW5pdF9ncm91cHMgKHN0cnVjdCBkaWVfaW5mbyAqZGll KQorQEAgLTYyMjcsOCArNjIyNyw4IEBAIGR3YXJmMl9jdTo6c2V0dXBfdHlwZV91bml0X2dyb3Vw cyAoc3RydWN0IGRpZV9pbmZvICpkaWUpCiAgCSAgICAgIHNmLT5zeW10YWIgPSBhbGxvY2F0ZV9z eW10YWIgKGN1c3QsIG5hbWUsIG5hbWVfZm9yX2lkKTsKICAJICAgIH0KICAKQEAgLTEwMyw3ICsx MDMsNyBAQCBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMi9yZWFkLmMgYi9nZGIvZHdhcmYyL3JlYWQu YwogIAl9CiAgICAgIH0KICAgIGVsc2UKLUBAIC02MjQxLDcgKzYyNDEsNyBAQCBkd2FyZjJfY3U6 OnNldHVwX3R5cGVfdW5pdF9ncm91cHMgKHN0cnVjdCBkaWVfaW5mbyAqZGllKQorQEAgLTYyNDYs NyArNjI0Niw3IEBAIGR3YXJmMl9jdTo6c2V0dXBfdHlwZV91bml0X2dyb3VwcyAoc3RydWN0IGRp ZV9pbmZvICpkaWUpCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGZpbGVfbmFtZXMuc2l6ZSAoKTsg KytpKQogIAl7CiAgCSAgZmlsZV9lbnRyeSAmZmUgPSBmaWxlX25hbWVzW2ldOwpAQCAtMTEyLDcg KzExMiw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dkYi9kd2FyZjIvcmVh ZC5jCiAgCX0KICAgICAgfQogIAotQEAgLTExNTg0LDcgKzExNTg0LDcgQEAgcHJvY2Vzc19zdHJ1 Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC0xMTU4OSw3ICsxMTU4OSw3IEBAIHByb2Nlc3Nfc3RydWN0dXJlX3Njb3BlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCSAgICB7CiAgCSAgICAgIC8q IEFueSByZWxhdGVkIHN5bXRhYiB3aWxsIGRvLiAgKi8KICAJICAgICAgc3ltdGFiCkBAIC0xMjEs NyArMTIxLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3YXJmMi9y ZWFkLmMKICAJICAgIH0KICAJICBlbHNlCiAgCSAgICB7Ci1AQCAtMTY1ODcsNiArMTY1ODcsOSBA QCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1LAorQEAgLTE2NTkyLDYgKzE2NTkyLDkgQEAgZHdhcmZfZGVjb2RlX2xpbmVzIChz dHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKICAgIGlmIChkZWNv ZGVfbWFwcGluZykKICAgICAgZHdhcmZfZGVjb2RlX2xpbmVzXzEgKGxoLCBjdSwgbG93cGMpOwog IApAQCAtMTMxLDcgKzEzMSw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYyL3JlYWQuYyBiL2dk Yi9kd2FyZjIvcmVhZC5jCiAgICAvKiBNYWtlIHN1cmUgYSBzeW10YWIgaXMgY3JlYXRlZCBmb3Ig ZXZlcnkgZmlsZSwgZXZlbiBmaWxlcwogICAgICAgd2hpY2ggY29udGFpbiBvbmx5IHZhcmlhYmxl cyAoaS5lLiBubyBjb2RlIHdpdGggYXNzb2NpYXRlZAogICAgICAgbGluZSBudW1iZXJzKS4gICov Ci1AQCAtMTY2MDIsNyArMTY2MDUsNyBAQCBkd2FyZl9kZWNvZGVfbGluZXMgKHN0cnVjdCBsaW5l X2hlYWRlciAqbGgsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAorQEAgLTE2NjA3LDcgKzE2NjEwLDcg QEAgZHdhcmZfZGVjb2RlX2xpbmVzIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwKICAJc2YtPnN5bXRhYiA9IGFsbG9jYXRlX3N5bXRhYiAoY3VzdCwgc2YtPm5h bWUuY19zdHIgKCksCiAgCQkJCSAgICAgIHNmLT5uYW1lX2Zvcl9pZC5jX3N0ciAoKSk7CiAgCkBA IC0xNDAsNyArMTQwLDcgQEAgZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjIvcmVhZC5jIGIvZ2RiL2R3 YXJmMi9yZWFkLmMKICAgICAgfQogIH0KICAKLUBAIC0xNjg3OSw3ICsxNjg4Miw3IEBAIG5ld19z eW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3 YXJmMl9jdSAqY3UsCitAQCAtMTY4ODQsNyArMTY4ODcsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1LAog IAkgICAgICBpZiAoZmUgPT0gTlVMTCkKICAJCWNvbXBsYWludCAoXygiZmlsZSBpbmRleCBvdXQg b2YgcmFuZ2UiKSk7CiAgCSAgICAgIGVsc2UKCmRpZmYgLS1naXQgYS9nZGItcmhiejI0MzU5NTAt c2tpcC1yZXZlcnQucGF0Y2ggYi9nZGItcmhiejI0MzU5NTAtc2tpcC1yZXZlcnQucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzMWQwNjMuLjAwMDAwMDAKLS0tIGEvZ2RiLXJo YnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM4ICswLDAg QEAKLUZyb20gRkVET1JBX1BBVENIRVMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBB bmRyZXcgQnVyZ2VzcyA8YWJ1cmdlc3NAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgOSBGZWIgMjAy NiAxNjozMToyMyArMDAwMAotU3ViamVjdDogZ2RiLXJoYnoyNDM1OTUwLXNraXAtcmV2ZXJ0LnBh dGNoCi0KLTs7IEJhY2twb3J0IG9mIHVwc3RyZWFtIGNvbW1pdCBmMDhmZmJiZjI2OTFiYWQyZDVk ZjY2MGVlNjQ0NjQ3Njg3Nzc1ZjBjCi07OyBDYW4gYmUgZHJvcHBlZCBvbiBhIHJlYmFzZSB0byBn ZGIgMTcuMiBvciAxOC4xCi0KLVJldmVydCAic2tpcCAtZ2ZpbGU6IGNhbGwgZm5tYXRjaCB3aXRo b3V0IEZOTV9GSUxFX05BTUUiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgMDI2NDZhNGM1NjFlYzg4 NDkxMTE0Yjg3OTUwY2JiODI3YzdkNjE0Yy4gIFNlZToKLQotICBodHRwczovL2luYm94LnNvdXJj ZXdhcmUub3JnL2dkYi1wYXRjaGVzLzIwMjYwMjAzMTg1NTI4Ljk0NjkxOC0xLWd1aW5ldmVyZUBy ZWRoYXQuY29tCi0KLVRoaXMgY29tbWl0IGludHJvZHVjZWQgYSBub24gYmFja3dhcmQgY29tcGF0 aWJsZSBjaGFuZ2UgdG8gaG93IEdEQgotaGFuZGxlZCBza2lwIGZpbGVzLiAgU29tZXRoaW5nIGxp a2U6Ci0KLSAgc2tpcCAtZ2ZpbGUgZGlyLyouYwotCi1ubyBsb25nZXIgbWF0Y2hlcyBldmVyeSBm aWxlIHdpdGhpbiAnZGlyLycsIGJ1dCBub3cgbWF0Y2hlcyBldmVyeSBmaWxlCi1pbiAnZGlyLycg YW5kIHdpdGhpbiBldmVyeSBzdWItZGlyZWN0b3J5IG9mICdkaXIvJywgd2hpY2ggbWlnaHQgbm90 IGJlCi13aGF0IHRoZSB1c2VyIHdhbnRlZC4KLQotVGhlIG9yaWdpbmFsIGludGVudGlvbiBiZWhp bmQgdGhlIGNvbW1pdCBpcyBzb2xpZCwgd2UganVzdCBuZWVkIHRvCi1maW5kIGEgYmV0dGVyIGlt cGxlbWVudGF0aW9uLgotCi1CdWc6IGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hv d19idWcuY2dpP2lkPTMzODcyCi0KLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIv Z2RiL2RvYy9nZGIudGV4aW5mbwotLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbwotKysrIGIvZ2Ri L2RvYy9nZGIudGV4aW5mbwotQEAgLTY4MjUsOSArNjgyNSw3IEBAIEZ1bmN0aW9ucyBpbiBAdmFy e2ZpbGV9IHdpbGwgYmUgc2tpcHBlZCBvdmVyIHdoZW4gc3RlcHBpbmcuCi0gQGl0ZW14IC1nZmkg QHZhcntmaWxlLWdsb2ItcGF0dGVybn0KLSBAY2luZGV4IHNraXBwaW5nIG92ZXIgZmlsZXMgdmlh IGdsb2Itc3R5bGUgcGF0dGVybnMKLSBGdW5jdGlvbnMgaW4gZmlsZXMgbWF0Y2hpbmcgQHZhcntm aWxlLWdsb2ItcGF0dGVybn0gd2lsbCBiZSBza2lwcGVkCi0tb3ZlciB3aGVuIHN0ZXBwaW5nLiAg VGhlIGRpcmVjdG9yeSBzZXBhcmF0b3IgY2hhcmFjdGVyIEBmaWxley99IGlzIHRyZWF0ZWQgYXMg YQotLXJlZ3VsYXIgY2hhcmFjdGVyLCBzbyBpdCBjYW4gYmUgbWF0Y2hlZCBieSB3aWxkY2FyZCBj aGFyYWN0ZXJzIEBmaWxleyp9IGFuZAotLUBmaWxlez99LgotK292ZXIgd2hlbiBzdGVwcGluZy4K LSAKLSBAc21hbGxleGFtcGxlCi0gKEB2YWx1ZXtHREJQfSkgc2tpcCAtZ2ZpIHV0aWxzLyouYwot ZGlmZiAtLWdpdCBhL2dkYi9za2lwLmMgYi9nZGIvc2tpcC5jCi0tLS0gYS9nZGIvc2tpcC5jCi0r KysgYi9nZGIvc2tpcC5jCi1AQCAtNTMxLDcgKzUzMSw3IEBAIHNraXBsaXN0X2VudHJ5Ojpkb19z a2lwX2dmaWxlX3AgKGNvbnN0IHN5bXRhYl9hbmRfbGluZSAmZnVuY3Rpb25fc2FsKSBjb25zdAot ICAgLyogQ2hlY2sgZmlyc3Qgc29sZSBTWU1UQUItPkZJTEVOQU1FLiAgSXQgbWF5IG5vdCBiZSBh IHN1YnN0cmluZyBvZgotICAgICAgc3ltdGFiX3RvX2Z1bGxuYW1lIGFzIGl0IG1heSBjb250YWlu ICIuLyIgZXRjLiAgKi8KLSAgIGlmIChnZGJfZmlsZW5hbWVfZm5tYXRjaCAobV9maWxlLmNfc3Ry ICgpLCBmdW5jdGlvbl9zYWwuc3ltdGFiLT5maWxlbmFtZSwKLS0JCQkgICAgRk5NX05PRVNDQVBF KSA9PSAwKQotKwkJCSAgICBGTk1fRklMRV9OQU1FIHwgRk5NX05PRVNDQVBFKSA9PSAwKQotICAg ICByZXN1bHQgPSB0cnVlOwotIAotICAgLyogQmVmb3JlIHdlIGludm9rZSBzeW10YWJfdG9fZnVs bG5hbWUsIHdoaWNoIGlzIGV4cGVuc2l2ZSwgZG8gYSBxdWljawotQEAgLTU0MiwxNCArNTQyLDE0 IEBAIHNraXBsaXN0X2VudHJ5Ojpkb19za2lwX2dmaWxlX3AgKGNvbnN0IHN5bXRhYl9hbmRfbGlu ZSAmZnVuY3Rpb25fc2FsKSBjb25zdAotICAgZWxzZSBpZiAoIWJhc2VuYW1lc19tYXlfZGlmZmVy Ci0gICAgICAgJiYgZ2RiX2ZpbGVuYW1lX2ZubWF0Y2ggKGxiYXNlbmFtZSAobV9maWxlLmNfc3Ry ICgpKSwKLSAJCQkgICAgICAgbGJhc2VuYW1lIChmdW5jdGlvbl9zYWwuc3ltdGFiLT5maWxlbmFt ZSksCi0tCQkJICAgICAgIEZOTV9OT0VTQ0FQRSkgIT0gMCkKLSsJCQkgICAgICAgRk5NX0ZJTEVf TkFNRSB8IEZOTV9OT0VTQ0FQRSkgIT0gMCkKLSAgICAgcmVzdWx0ID0gZmFsc2U7Ci0gICBlbHNl Ci0gICAgIHsKLSAgICAgICAvKiBOb3RlOiBzeW10YWJfdG9fZnVsbG5hbWUgY2FjaGVzIGl0cyBy ZXN1bHQsIHRodXMgd2UgZG9uJ3QgaGF2ZSB0by4gICovCi0gICAgICAgY29uc3QgY2hhciAqZnVs bG5hbWUgPSBzeW10YWJfdG9fZnVsbG5hbWUgKGZ1bmN0aW9uX3NhbC5zeW10YWIpOwotIAotLSAg ICAgIHJlc3VsdCA9IGdkYl9maWxlbmFtZV9mbm1hdGNoIChtX2ZpbGUuY19zdHIgKCksIGZ1bGxu YW1lLCBGTk1fTk9FU0NBUEUpOwotKyAgICAgIHJlc3VsdCA9IGNvbXBhcmVfZ2xvYl9maWxlbmFt ZXNfZm9yX3NlYXJjaCAoZnVsbG5hbWUsIG1fZmlsZS5jX3N0ciAoKSk7Ci0gICAgIH0KLSAKLSAg IGlmIChkZWJ1Z19za2lwKQotZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIu YwotLS0tIGEvZ2RiL3N5bXRhYi5jCi0rKysgYi9nZGIvc3ltdGFiLmMKLUBAIC02OTgsNiArNjk4 LDQwIEBAIGl0ZXJhdGVfb3Zlcl9zb21lX3N5bXRhYnMgKGNvbnN0IGNoYXIgKm5hbWUsCi0gICBy ZXR1cm4gZmFsc2U7Ci0gfQotIAotKy8qIFNhbWUgYXMgY29tcGFyZV9maWxlbmFtZXNfZm9yX3Nl YXJjaCwgYnV0IGZvciBnbG9iLXN0eWxlIHBhdHRlcm5zLgotKyAgIEhlYWRzIHVwIG9uIHRoZSBv cmRlciBvZiB0aGUgYXJndW1lbnRzLiAgVGhleSBtYXRjaCB0aGUgb3JkZXIgb2YKLSsgICBjb21w YXJlX2ZpbGVuYW1lc19mb3Jfc2VhcmNoLCBidXQgaXQncyB0aGUgb3Bwb3NpdGUgb2YgdGhlIG9y ZGVyIG9mCi0rICAgYXJndW1lbnRzIHRvIGdkYl9maWxlbmFtZV9mbm1hdGNoLiAgKi8KLSsKLSti b29sCi0rY29tcGFyZV9nbG9iX2ZpbGVuYW1lc19mb3Jfc2VhcmNoIChjb25zdCBjaGFyICpmaWxl bmFtZSwKLSsJCQkJICAgY29uc3QgY2hhciAqc2VhcmNoX25hbWUpCi0rewotKyAgLyogV2UgcmVs eSBvbiB0aGUgcHJvcGVydHkgb2YgZ2xvYi1zdHlsZSBwYXR0ZXJucyB3aXRoIEZOTV9GSUxFX05B TUUgdGhhdAotKyAgICAgYWxsIC9zIGhhdmUgdG8gYmUgZXhwbGljaXRseSBzcGVjaWZpZWQuICAq LwotKyAgaW50IGZpbGVfcGF0aF9lbGVtZW50cyA9IGNvdW50X3BhdGhfZWxlbWVudHMgKGZpbGVu YW1lKTsKLSsgIGludCBzZWFyY2hfcGF0aF9lbGVtZW50cyA9IGNvdW50X3BhdGhfZWxlbWVudHMg KHNlYXJjaF9uYW1lKTsKLSsKLSsgIGlmIChzZWFyY2hfcGF0aF9lbGVtZW50cyA+IGZpbGVfcGF0 aF9lbGVtZW50cykKLSsgICAgcmV0dXJuIGZhbHNlOwotKwotKyAgaWYgKElTX0FCU09MVVRFX1BB VEggKHNlYXJjaF9uYW1lKSkKLSsgICAgewotKyAgICAgIHJldHVybiAoc2VhcmNoX3BhdGhfZWxl bWVudHMgPT0gZmlsZV9wYXRoX2VsZW1lbnRzCi0rCSAgICAgICYmIGdkYl9maWxlbmFtZV9mbm1h dGNoIChzZWFyY2hfbmFtZSwgZmlsZW5hbWUsCi0rCQkJCSAgICAgICBGTk1fRklMRV9OQU1FIHwg Rk5NX05PRVNDQVBFKSA9PSAwKTsKLSsgICAgfQotKwotKyAgewotKyAgICBjb25zdCBjaGFyICpm aWxlX3RvX2NvbXBhcmUKLSsgICAgICA9IHN0cmlwX2xlYWRpbmdfcGF0aF9lbGVtZW50cyAoZmls ZW5hbWUsCi0rCQkJCSAgICAgZmlsZV9wYXRoX2VsZW1lbnRzIC0gc2VhcmNoX3BhdGhfZWxlbWVu dHMpOwotKwotKyAgICByZXR1cm4gZ2RiX2ZpbGVuYW1lX2ZubWF0Y2ggKHNlYXJjaF9uYW1lLCBm aWxlX3RvX2NvbXBhcmUsCi0rCQkJCSBGTk1fRklMRV9OQU1FIHwgRk5NX05PRVNDQVBFKSA9PSAw OwotKyAgfQotK30KLSsKLSAvKiBTZWUgc3ltdGFiLmguICAqLwotIAotIHZvaWQKLWRpZmYgLS1n aXQgYS9nZGIvdXRpbHMuYyBiL2dkYi91dGlscy5jCi0tLS0gYS9nZGIvdXRpbHMuYwotKysrIGIv Z2RiL3V0aWxzLmMKLUBAIC0zNDY2LDggKzM0NjYsOCBAQCB3YWl0X3RvX2RpZV93aXRoX3RpbWVv dXQgKHBpZF90IHBpZCwgaW50ICpzdGF0dXMsIGludCB0aW1lb3V0KQotIAotICNlbmRpZiAvKiBI QVZFX1dBSVRQSUQgKi8KLSAKLS0vKiBQcm92aWRlIGZubWF0Y2ggY29tcGF0aWJsZSBmdW5jdGlv biBmb3IgbWF0Y2hpbmcgb2YgaG9zdCBmaWxlcy4KLS0gICBGTk1fTk9FU0NBUEUgbXVzdCBiZSBz ZXQgaW4gRkxBR1MuCi0rLyogUHJvdmlkZSBmbm1hdGNoIGNvbXBhdGlibGUgZnVuY3Rpb24gZm9y IEZOTV9GSUxFX05BTUUgbWF0Y2hpbmcgb2YgaG9zdCBmaWxlcy4KLSsgICBCb3RoIEZOTV9GSUxF X05BTUUgYW5kIEZOTV9OT0VTQ0FQRSBtdXN0IGJlIHNldCBpbiBGTEFHUy4KLSAKLSAgICBJdCBo YW5kbGVzIGNvcnJlY3RseSBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSBhbmQKLSAgICBIQVZF X0NBU0VfSU5TRU5TSVRJVkVfRklMRV9TWVNURU0uICAqLwotQEAgLTM0NzUsNiArMzQ3NSw4IEBA IHdhaXRfdG9fZGllX3dpdGhfdGltZW91dCAocGlkX3QgcGlkLCBpbnQgKnN0YXR1cywgaW50IHRp bWVvdXQpCi0gaW50Ci0gZ2RiX2ZpbGVuYW1lX2ZubWF0Y2ggKGNvbnN0IGNoYXIgKnBhdHRlcm4s IGNvbnN0IGNoYXIgKnN0cmluZywgaW50IGZsYWdzKQotIHsKLSsgIGdkYl9hc3NlcnQgKChmbGFn cyAmIEZOTV9GSUxFX05BTUUpICE9IDApOwotKwotICAgLyogSXQgaXMgdW5jbGVhciBob3cgJ1wn IGVzY2FwaW5nIHZzLiBkaXJlY3Rvcnkgc2VwYXJhdG9yIHNob3VsZCBjb2V4aXN0LiAgKi8KLSAg IGdkYl9hc3NlcnQgKChmbGFncyAmIEZOTV9OT0VTQ0FQRSkgIT0gMCk7Ci0gCgpkaWZmIC0tZ2l0 IGEvZ2RiLXJwbS1zdWdnZXN0aW9uLXNjcmlwdC5wYXRjaCBiL2dkYi1ycG0tc3VnZ2VzdGlvbi1z Y3JpcHQucGF0Y2gKaW5kZXggMDdhNjhkNS4uMjhkZjE0YiAxMDA2NDQKLS0tIGEvZ2RiLXJwbS1z dWdnZXN0aW9uLXNjcmlwdC5wYXRjaAorKysgYi9nZGItcnBtLXN1Z2dlc3Rpb24tc2NyaXB0LnBh dGNoCkBAIC0zMyw3ICszMyw3IEBAIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIv Z2RiL2RvYy9nZGIudGV4aW5mbwogICogTWFuIFBhZ2VzOjogICAgICAgICAgICAgICAgICAgTWFu dWFsIHBhZ2VzCiAgKiBDb3B5aW5nOjogICAgICAgICAgICAgICAgICAgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBzYXlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3cg eW91IGNhbiBjb3B5IGFuZCBzaGFyZSBAdmFsdWV7R0RCTn0KLUBAIC01MDk4OCw2ICs1MDk4OSwx MTEgQEAgU2hvdyB0aGUgY3VycmVudCB2ZXJib3NpdHkgc2V0dGluZy4KK0BAIC01MDk4Niw2ICs1 MDk4NywxMTEgQEAgU2hvdyB0aGUgY3VycmVudCB2ZXJib3NpdHkgc2V0dGluZy4KICAKICBAZW5k IHRhYmxlCiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCAzMjc2NmVi Li4yZWUxODYzIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtNDEsMTEg KzQxLDExIEBAIE5hbWU6ICV7P3NjbF9wcmVmaXh9Z2RiCiAjIFNlZSB0aW1lc3RhbXAgb2Ygc291 cmNlIGdudWxpYiBpbnN0YWxsZWQgaW50byBnbnVsaWIvIC4KICVnbG9iYWwgc25hcGdudWxpYiAy MDIyMDUwMQogJWdsb2JhbCB0YXJuYW1lIGdkYi0le3ZlcnNpb259Ci1WZXJzaW9uOiAxNy4xCitW ZXJzaW9uOiAxNy4yCiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGluZyBy ZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEgcGFy dCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUgZm9y IHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogNiV7P2Rpc3R9CitSZWxlYXNlOiAxJXs/ZGlzdH0KIAog TGljZW5zZTogR1BMLTMuMC1vci1sYXRlciBBTkQgQlNELTMtQ2xhdXNlIEFORCBGU0ZBUCBBTkQg TEdQTC0yLjEtb3ItbGF0ZXIgQU5EIEdQTC0yLjAtb3ItbGF0ZXIgQU5EIExHUEwtMi4wLW9yLWxh dGVyIEFORCBMaWNlbnNlUmVmLUZlZG9yYS1QdWJsaWMtRG9tYWluIEFORCBHRkRMLTEuMy1vci1s YXRlciBBTkQgTEdQTC0yLjAtb3ItbGF0ZXIgV0lUSCBHQ0MtZXhjZXB0aW9uLTIuMCBBTkQgR1BM LTMuMC1vci1sYXRlciBXSVRIIEdDQy1leGNlcHRpb24tMy4xIEFORCBHUEwtMi4wLW9yLWxhdGVy IFdJVEggR05VLWNvbXBpbGVyLWV4Y2VwdGlvbiBBTkQgTUlUCiAjIERvIG5vdCBwcm92aWRlIFVS TCBmb3Igc25hcHNob3RzIGFzIHRoZSBmaWxlIGxhc3RzIHRoZXJlIG9ubHkgZm9yIDIgZGF5cy4K QEAgLTkyNSw2ICs5MjUsMTMgQEAgZmkKICMgZW5kaWYgc2NsCiAKICVjaGFuZ2Vsb2cKKyogV2Vk IEp1biAyNCAyMDI2IE1pY2hhbCBLb2xhciA8bWtvbGFyQHJlZGhhdC5jb20+IC0gMTcuMi0xCist IFJlYmFzZSB0byBGU0YgR0RCIDE3LjIuCisgIERlbGV0ZWQ6IGdkYi1yaGJ6MjQzNTk1MC1za2lw LXJldmVydC5wYXRjaAorICBCYWNrcG9ydCBlNDkyZmIyMmI3MCwgZ2RiOiBiYWNrcG9ydCBEQVAg Y29yZSBmaWxlIHN1cHBvcnQKKyAgUmVwbGFjZSBtYW51YWwsIG11bHRpLWZpbGUgcGF0Y2ggaW5j bHVzaW9uIHdpdGggbW9kZXJuIGF1dG9zZXR1cAorICBBZGQgcnBtaW5zcGVjdC55YW1sIHRvIGRl ZmluZSBwYWNrYWdlLXNwZWNpZmljIHRlc3RpbmcgcG9saWN5CisKICogV2VkIE1heSAyNyAyMDI2 IEtldmluIEJ1ZXR0bmVyIDxrZXZpbmJAcmVkaGF0LmNvbT4KIC0gQXBwbGllZCBwcm9wb3NlZCBw YXRjaCAiW2dkYi90ZXN0c3VpdGUsIFRjbCA5XSBGaXggRUlMU0VRIHByb2JsZW1zIGZvcgogICBV VEY4IHJlbGF0ZWQgdGVzdHMiLiAgVGhpcyBpcyByZXF1aXJlZCBpbiBvcmRlciB0byBjb21wbGV0 ZSBhIGJ1aWxkCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggZmQzYzIwNC4u Zjc2ZTc3YyAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi1T SEE1MTIgKGdkYi0xNy4xLnRhci54eikgPSBmMWE2NzUxZTQzOWEyMTI4ZmVjZjNlYWU4YjU3YzE2 MDhhMGRjN2NmZTc5YjQzNTZhOTM3ODc0ZTVhNDJiYjJkZjBhYmEzNmViNmE5NDUyYzQxOTY2OTA4 YjlhNTkwNzZjN2NhZDk3MjBmNjg0Njg4YWI5NTZiNjUwODBmMWQ3YworU0hBNTEyIChnZGItMTcu Mi50YXIueHopID0gNzc5NGM1YTE4NWJlN2VkNWU3YWQxMDAwYzRmZjdkODQ5N2M4MDQyNWExYmMx MDhhYWI4ZmQzZGQ4ZWNkZGUwMzRlMjk0ZGZkNjViMjVjNmIwZGNkOGVkMmEyNDBjYWYwNzI5M2Yz ZTczNzkxYjZjZmM4OTBkNTgwZDBhZjQ1ODEK