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: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.2.50.20110320 (which is a 7.3 pre-release). Date: Sat, 27 Jun 2026 23:55:05 GMT Message-ID: <178260450530.1.17823673384111753142.rpms-gdb-48cf710500f7@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 48cf710500f7b60bee2ee3d9962438462daaefd0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogNDhjZjcxMDUwMGY3YjYwYmVlMmVlM2Q5OTYyNDM4NDYyZGFh ZWZkMAogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KICAgICAgICAgICAgRGF0ZSAgIDogMjAxMS0wMy0yMFQyMTo0NDoyMCswMTow MAogICAgICAgICAgICBTdGF0cyAgOiArNDc2NS8tMTgwNiBpbiAyMCBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvNDhj ZjcxMDUwMGY3YjYwYmVlMmVlM2Q5OTYyNDM4NDYyZGFhZWZkMD9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICBSZWJhc2UgdG8gRlNGIEdEQiA3 LjIuNTAuMjAxMTAzMjAgKHdoaWNoIGlzIGEgNy4zIHByZS1yZWxlYXNlKS4KTWVyZ2UgYXJjaGVy LXNlcmdpb2RqLXN0YXAsIHRoZSBTeXN0ZW1UYXAgcHJvYmVzIGJyZWFrcG9pbnRzIGZlYXR1cmUu CltzdGFwXSBGaXggLU8yIHdhcm5pbmdzLgpGaXggQWRhIHN1cHBvcnQgY3Jhc2ggb24gdW5pbml0 aWFsaXplZCBnZGJhcmNoLgoKLS0tCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9y ZQppbmRleCBhZTI3NGM1Li5hNWVkYTNmIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5n aXRpZ25vcmUKQEAgLTEsMiArMSwyIEBACiAvbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRh ci5iejIKLS9nZGItNy4yLjUwLjIwMTEwMzA1LnRhci5iejIKKy9nZGItNy4yLjUwLjIwMTEwMzIw LnRhci5iejIKCmRpZmYgLS1naXQgYS9nZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFk LXRlc3QucGF0Y2ggYi9nZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3QucGF0 Y2gKaW5kZXggMWQ5YzYxYi4uOTFkYzY5YSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1iejIwMjY4OS1l eGVjLWZyb20tcHRocmVhZC10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjMtYnoyMDI2ODktZXhlYy1m cm9tLXB0aHJlYWQtdGVzdC5wYXRjaApAQCAtOTIsNyArOTIsNyBAQAogK2dkYl9ydW5fY21kCiAr CiArZ2RiX3Rlc3RfbXVsdGlwbGUge30gIlByb2dyYW0gZXhpdGVkIiB7Ci0rICAgLXJlICJcclxu UHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuXHJcbiRnZGJfcHJvbXB0ICQiIHsKKysgICAtcmUgIlxy XG5cXFxbSW5mZXJpb3IgLiogZXhpdGVkIG5vcm1hbGx5XFxcXVxyXG4kZ2RiX3Byb21wdCAkIiB7 CiArICAgICAgIHBhc3MgIlByb2dyYW0gZXhpdGVkIgogKyAgIH0KICt9CgpkaWZmIC0tZ2l0IGEv Z2RiLTYuMy1pbmZlcmlvci1ub3RpZmljYXRpb24tMjAwNTA3MjEucGF0Y2ggYi9nZGItNi4zLWlu ZmVyaW9yLW5vdGlmaWNhdGlvbi0yMDA1MDcyMS5wYXRjaAppbmRleCBhNzg5YjFiLi4wZWIzOTdj IDEwMDY0NAotLS0gYS9nZGItNi4zLWluZmVyaW9yLW5vdGlmaWNhdGlvbi0yMDA1MDcyMS5wYXRj aAorKysgYi9nZGItNi4zLWluZmVyaW9yLW5vdGlmaWNhdGlvbi0yMDA1MDcyMS5wYXRjaApAQCAt OSwxMCArOSwxMCBAQAogCiAJKiBnZGIuYmFzZS9hdHRhY2gtMzIuZXhwOiBGaXggZm9yZ290dGVu ICRHREJGTEFHUyBhcyBzZXQuCiAKLUluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIw MDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmMJMjAwOC0xMi0wNyAxMDow NjowMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmMJMjAxMS0wMy0yMCAyMDoxNTo1Ny4wMDAwMDAwMDAgKzAx MDAKIEBAIC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUg c3RhcnRlZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBieSBnZGIu ICBUaHVzLCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTM0LDEwICsz NCwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2F0dGFjaC0zMi5jCiArICAgIH0KICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNi44LjUw LjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmV4cAorSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hdHRhY2gtMzIuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFj aC0zMi5leHAJMjAwOC0xMi0wNyAxMDowODo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyLmV4cAkyMDExLTAz LTIwIDIwOjIwOjAzLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSwyNDUgQEAKICsjIENvcHly aWdodCAyMDA1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTUzLDcgKzE1 Myw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YXR0YWNoLTMyLmV4cAogKwogKyAgICAjIEFsbG93IHRoZSB0ZXN0IHByb2Nlc3MgdG8gZXhpdCwg dG8gY2xlYW51cCBhZnRlciBvdXJzZWx2ZXMuCiArCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIg IlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5LiIgImFmdGVyIGF0dGFjaC0zMiwgZXhpdCIKKysgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiB7XFtJbmZlcmlvciAuKiBleGl0ZWQgbm9ybWFsbHlcXX0gImFm dGVyIGF0dGFjaC0zMiwgZXhpdCIKICsKICsgICAgIyBNYWtlIHN1cmUgd2UgZG9uJ3QgbGVhdmUg YSBwcm9jZXNzIGFyb3VuZCB0byBjb25mdXNlCiArICAgICMgdGhlIG5leHQgdGVzdCBydW4gKGFu ZCBwcmV2ZW50IHRoZSBjb21waWxlIGJ5IGtlZXBpbmcKQEAgLTIzNCw3ICsyMzQsNyBAQCBJbmRl eDogZ2RiLTYuOC41MC4yMDA4MTEyOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC0zMi5l eHAKICsgICAgIyBHZXQgcmlkIG9mIHRoZSBwcm9jZXNzCiArICAgIAogKyAgICBnZGJfdGVzdCAi cCBzaG91bGRfZXhpdCA9IDEiCi0rICAgIGdkYl90ZXN0ICJjIiAiUHJvZ3JhbSBleGl0ZWQgbm9y bWFsbHkuIgorKyAgICBnZGJfdGVzdCAiYyIge1xbSW5mZXJpb3IgLiogZXhpdGVkIG5vcm1hbGx5 XF19CiArICAgCiArICAgICMgQmUgcGFyYW5vaWQKICsgICAKQEAgLTI4NCwxMCArMjg0LDEwIEBA IEluZGV4OiBnZGItNi44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNo LTMyLmV4cAogK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGIt Ni44LjUwLjIwMDgxMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyYi5jCitJbmRl eDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2F0dGFjaC0zMmIu YwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAw MCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9h dHRhY2gtMzJiLmMJMjAwOC0xMi0wNyAxMDowNjowMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXR0YWNoLTMyYi5jCTIwMTEt MDMtMjAgMjA6MTU6NTcuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDI0IEBACiArLyogVGhp cyBwcm9ncmFtIGlzIGludGVuZGVkIHRvIGJlIHN0YXJ0ZWQgb3V0c2lkZSBvZiBnZGIsIGFuZCB0 aGVuCiArICAgYXR0YWNoZWQgdG8gYnkgZ2RiLiAgVGh1cywgaXQgc2ltcGx5IHNwaW5zIGluIGEg bG9vcC4gIFRoZSBsb29wCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5w YXRjaCBiL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKaW5kZXggOTgyOGFmYS4uMGI0 YTJkYiAxMDA2NDQKLS0tIGEvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaAorKysgYi9n ZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMKK0luZGV4OiBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDExMDMwNS5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFjCTIw MTEtMDMtMDMgMTc6NTc6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMw NS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDExLTAzLTA1IDA4OjI2OjUzLjAwMDAwMDAw MCArMDEwMAorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvdGVzdHN1aXRlL2NvbmZp Z3VyZS5hYwkyMDExLTAzLTAzIDE3OjU3OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMS0wMy0yMCAyMDoyMTo0 My4wMDAwMDAwMDAgKzAxMDAKIEBAIC05Nyw2ICs5Nyw2IEBAIEFDX09VVFBVVChbTWFrZWZpbGUg XAogICAgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21wYXQvTWFrZWZpbGUg XAogICAgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIFwKQEAgLTEwLDEwICsxMCwxMCBAQCBJ bmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwogKyAg Z2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdk Yi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnBpZS9NYWtlZmlsZSBcCiAgICBnZGIucHl0aG9uL01ha2Vm aWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi5zdGFicy9NYWtlZmlsZSBcCiAgICBnZGIudGhy ZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZV0pCi1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQorSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLjUwLjIwMTEwMzA1Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMS0w My0wMyAxNzo1Nzo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1L2dk Yi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTEtMDMtMDUgMDg6MjY6NTguMDAwMDAwMDAwICswMTAw CistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIw MTEtMDMtMDMgMTc6NTc6NTUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMy MC9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCAr MDEwMAogQEAgLTM0NDgsNyArMzQ0OCw3IEBAIGRvbmUKICAKICAKQEAgLTMxLDEwICszMSwxMCBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQogICAg ICAiZ2RiLnB5dGhvbi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIu cHl0aG9uL01ha2VmaWxlIiA7OwogICAgICAiZ2RiLnJldmVyc2UvTWFrZWZpbGUiKSBDT05GSUdf RklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLnJldmVyc2UvTWFrZWZpbGUiIDs7CiAgICAgICJnZGIu c3RhYnMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ2RiLnN0YWJzL01h a2VmaWxlIiA7OwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2F0dGFjaC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvYXR0YWNoLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9hdHRhY2guYwkyMDExLTAzLTA1IDA4OjI2OjI4LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCTIw MTEtMDMtMjAgMjA6MjE6NDMuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDIwIEBACiArLyog VGhpcyBwcm9ncmFtIGlzIGludGVuZGVkIHRvIGJlIHN0YXJ0ZWQgb3V0c2lkZSBvZiBnZGIsIGFu ZCB0aGVuCiArICAgYXR0YWNoZWQgdG8gYnkgZ2RiLiAgVGh1cywgaXQgc2ltcGx5IHNwaW5zIGlu IGEgbG9vcC4gIFRoZSBsb29wCkBAIC01NiwxMCArNTYsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCiArICAgIH0KICsgIHJldHVy biAwOwogK30KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBp ZS9hdHRhY2gyLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9hdHRhY2gyLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9hdHRhY2gyLmMJMjAxMS0wMy0wNSAwODoyNjoyOC4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMJ MjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMjQgQEAKICsv KiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdkYiwg YW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3BpbnMg aW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTg1LDEwICs4NSwxMCBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoMi5jCiArICAgIH0KICsgIHJl dHVybiAoMCk7CiArfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL2JyZWFrLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9icmVhay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvYnJlYWsuYwkyMDExLTAzLTA1IDA4OjI2OjI4LjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMJMjAx MS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMTQ2IEBACiArLyog VGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTIz NiwxMCArMjM2LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUv Z2RiLnBpZS9icmVhay5jCiArICAgIH0KICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4y LjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYworSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysg Z2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMJMjAxMS0w My0wNSAwODoyNjoyOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dk Yi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAw MCArMDEwMAogQEAgLTAsMCArMSw0NCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBH REIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBAIC0yODUsMTAgKzI4NSwxMCBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKICt2b2lkIG1h cmtlcjMgKGEsIGIpIGNoYXIgKmEsICpiOyB7fQkvKiBzZXQgYnJlYWtwb2ludCAxOCBoZXJlICov CiArdm9pZCBtYXJrZXI0IChkKSBsb25nIGQ7IHt9CQkvKiBzZXQgYnJlYWtwb2ludCAxMyBoZXJl ICovCiArI2VuZGlmCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dk Yi5waWUvY29yZW1ha2VyLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9jb3JlbWFrZXIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMDUvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCTIwMTEtMDMtMDUgMDg6MjY6MjguMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUv Y29yZW1ha2VyLmMJMjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAg KzEsMTQyIEBACiArLyogQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5 OTkKICsgICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTQzMiwxMSArNDMyLDEx IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3Jl bWFrZXIuYwogKyAgcmV0dXJuIDA7CiArfQogKwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUv Z2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEw MzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41 MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDExLTAzLTA1IDA4 OjI2OjI4LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSw0MjMgQEAKKysrKyBnZGItNy4yLjUw LjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTEtMDMtMjAgMjA6 MjU6NTMuMDAwMDAwMDAwICswMTAwCitAQCAtMCwwICsxLDQxNyBAQAogKyMgICBDb3B5cmlnaHQg MTk5NywgMTk5OSwgMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsjIFRo aXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv b3IgbW9kaWZ5CkBAIC02OTksMTMgKzY5OSw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1 L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCiArCiArICAgIyBBbGxvdyB0aGUgdGVz dCBwcm9jZXNzIHRvIGV4aXQsIHRvIGNsZWFudXAgYWZ0ZXIgb3Vyc2VsdmVzLgogKyAgICMKLSsg ICBzZW5kX2dkYiAiY29udGludWVcbiIKLSsgICBnZGJfZXhwZWN0IHsKLSsgICAgICAtcmUgIlBy b2dyYW0gZXhpdGVkIG5vcm1hbGx5LiokZ2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAgICAgICAg ICAgICAge3Bhc3MgImFmdGVyIGF0dGFjaDIsIGV4aXQifQotKyAgICAgIC1yZSAiJGdkYl9wcm9t cHQgJCIge2ZhaWwgImFmdGVyIGF0dGFjaDIsIGV4aXQifQotKyAgICAgIHRpbWVvdXQgICAgICAg ICB7ZmFpbCAiKHRpbWVvdXQpIGFmdGVyIGF0dGFjaDIsIGV4aXQifQotKyAgIH0KKysgICBnZGJf dGVzdCAiY29udGludWUiIHtcW0luZmVyaW9yIC4qIGV4aXRlZCBub3JtYWxseVxdfSAiYWZ0ZXIg YXR0YWNoMiwgZXhpdCIKICsKICsgICAjIE1ha2Ugc3VyZSB3ZSBkb24ndCBsZWF2ZSBhIHByb2Nl c3MgYXJvdW5kIHRvIGNvbmZ1c2UKICsgICAjIHRoZSBuZXh0IHRlc3QgcnVuIChhbmQgcHJldmVu dCB0aGUgY29tcGlsZSBieSBrZWVwaW5nCkBAIC04MzEsNyArODI1LDcgQEAgSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKICsgICAjIEdl dCByaWQgb2YgdGhlIHByb2Nlc3MKICsgICAjCiArICAgZ2RiX3Rlc3QgInAgc2hvdWxkX2V4aXQg PSAxIiAiLioiCi0rICAgZ2RiX3Rlc3QgImMiICIuKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5Lioi CisrICAgZ2RiX3Rlc3QgImMiIHtcW0luZmVyaW9yIC4qIGV4aXRlZCBub3JtYWxseVxdfQogKyAg IAogKyAgICMgQmUgcGFyYW5vaWQKICsgICAjCkBAIC04NjAsMTAgKzg1NCwxMCBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAogK2Rv X2NhbGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEw MzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIw MTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4y LjUwLjIwMTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMS0wMy0wNSAw ODoyNjoyOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0 c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAx MDAKIEBAIC0wLDAgKzEsOTY2IEBACiArIyAgIENvcHlyaWdodCAxOTg4LCAxOTkwLCAxOTkxLCAx OTkyLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LAogKyMgICAyMDAwLCAyMDAy LCAyMDAzLCAyMDA0CkBAIC0xODMxLDEwICsxODI1LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIw MTEwMzA1L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKICsgICAgc2VuZF9nZGIgInNl dCBhcmdzIG1haW5cbiIKICsgICAgZ2RiX2V4cGVjdCAtcmUgIi4qJGdkYl9wcm9tcHQgJCIge30K ICt9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29y ZWZpbGUuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5w aWUvY29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTEtMDMtMDUgMDg6MjY6MjguMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZp bGUuZXhwCTIwMTEtMDMtMjAgMjA6MjE6NDMuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDIz MyBAQAogKyMgQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5 OTgsIDE5OTksIDIwMDAKICsjIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMjA2 OSwxMCArMjA2MywxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRl L2dkYi5waWUvY29yZWZpbGUuZXhwCiArZ2RiX3Rlc3QgInVwIiAiI1xbMC05XF0qICpcWzAtOXhh LWZIJ1xdKiBpbiAuKiBcXCguKlxcKS4qIiAidXAgaW4gY29yZWZpbGUuZXhwIChyZWluaXQpIgog KwogK2dkYl90ZXN0ICJjb3JlIiAiTm8gY29yZSBmaWxlIG5vdy4iCi1JbmRleDogZ2RiLTcuMi41 MC4yMDExMDMwNS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4KK0luZGV4OiBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9NYWtlZmlsZS5pbgogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmlu CTIwMTEtMDMtMDUgMDg6MjY6MjguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEx MDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUuaW4JMjAxMS0wMy0yMCAyMDoyMTo0 My4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMTkgQEAKICtWUEFUSCA9IEBzcmNkaXJACiAr c3JjZGlyID0gQHNyY2RpckAKCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJw bS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCmluZGV4IDAzOGFhODQu LjJmZmFkZTEgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCisr KyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2V2ZW50LXRvcC5jCitJbmRleDogZ2RiLTcuMi41 MC4yMDExMDMyMC9nZGIvZXZlbnQtdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIw MTEwMjEzLm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDEtMDEgMTY6MzM6MDMuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvZXZlbnQtdG9wLmMJMjAxMS0wMi0x MyAxOToyMTo0OS4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcv Z2RiL2V2ZW50LXRvcC5jCTIwMTEtMDMtMTYgMTY6MTg6NTguMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDExMDMyMC9nZGIvZXZlbnQtdG9wLmMJMjAxMS0wMy0yMCAxNToyMjo1MS4w MDAwMDAwMDAgKzAxMDAKIEBAIC0zMyw2ICszMyw3IEBACiAgI2luY2x1ZGUgImNsaS9jbGktc2Ny aXB0LmgiICAgICAvKiBmb3IgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICovCiAgI2luY2x1ZGUg Im1haW4uaCIKQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9n ZGIvZXZlbnQtdG9wLmMKICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24gcnVsZXMg b24gZGlzcGxheWluZyB0aGUgY29tbWFuZAogICAgICAgcHJvbXB0LiAgKi8KICAgIGlmICghY3Vy cmVudF9pbnRlcnBfZGlzcGxheV9wcm9tcHRfcCAoKSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEw MjEzL2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9lbGZyZWFk LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2VsZnJlYWQu YwkyMDExLTAyLTEzIDE5OjIxOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAx MTAyMTMvZ2RiL2VsZnJlYWQuYwkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAot QEAgLTQyLDYgKzQyLDcgQEAKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2VsZnJl YWQuYwkyMDExLTAzLTIwIDE1OjIyOjM0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAu MjAxMTAzMjAvZ2RiL2VsZnJlYWQuYwkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEw MAorQEAgLTQ5LDYgKzQ5LDcgQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJn ZGJjbWQuaCIKICAjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2VsZnJlYWQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0 aWFsaXplX2VsZnJlYWQgKHZvaWQpOwogIAotQEAgLTEzNzQsOCArMTM3NSwzNjEgQEAgYnVpbGRf aWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYgorQEAgLTE2MjMsOCArMTYyNCwzNjEg QEAgYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9pZCAqYgogICAgcmV0dXJuIHJl dHZhbDsKICB9CiAgCkBAIC00MDMsNyArNDAzLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAy MTMvZ2RiL2VsZnJlYWQuYwogICAgIGF2b2lkYW5jZS4gICovCiAgCiAgc3RydWN0IG1pc3Npbmdf ZmlsZXBhaXIKLUBAIC0xNDI5LDExICsxNzgzLDE3IEBAIG1pc3NpbmdfZmlsZXBhaXJfY2hhbmdl ICh2b2lkKQorQEAgLTE2NzgsMTEgKzIwMzIsMTcgQEAgbWlzc2luZ19maWxlcGFpcl9jaGFuZ2Ug KHZvaWQpCiAgICAgICAgLyogQWxsIHRoZWlyIG1lbW9yeSBjYW1lIGp1c3QgZnJvbSBtaXNzaW5n X2ZpbGVwYWlyX09CU1RBQ0suICAqLwogICAgICAgIG1pc3NpbmdfZmlsZXBhaXJfaGFzaCA9IE5V TEw7CiAgICAgIH0KQEAgLTQyMSw3ICs0MjEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIx My9nZGIvZWxmcmVhZC5jCiAgICBtaXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAoKTsKICB9CiAgCi1A QCAtMTUwMCwxNCArMTg2MCwzNSBAQCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpi aW5hcnksCitAQCAtMTc0OSwxNCArMjEwOSwzNSBAQCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25z dCBjaGFyICpiaW5hcnksCiAgCiAgICAqc2xvdCA9IG1pc3NpbmdfZmlsZXBhaXI7CiAgCkBAIC00 NjQsMTEgKzQ2NCwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvZWxmcmVhZC5j CiAgfQogIAogIHN0YXRpYyBjaGFyICoKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9z eW1maWxlLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9zeW1maWxlLmgKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDExLTAy LTEzIDE5OjIxOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2Ri L3N5bWZpbGUuaAkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAotQEAgLTU2MCw2 ICs1NjAsOCBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCistLS0g Z2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMS0wMy0yMCAxNToxOTo1 Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9zeW1maWxlLmgJ MjAxMS0wMy0yMCAxNToyMjo1MS4wMDAwMDAwMDAgKzAxMDAKK0BAIC02MTcsNiArNjE3LDggQEAg ZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWRfYWRkcl9nZQogIGV4dGVybiBjaGFyICpi dWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZCwKICAJCQkJICAg Y2hhciAqKmxpbmtfcmV0dXJuLCBpbnQgYWRkX2RlYnVnX3N1ZmZpeCk7CiAgZXh0ZXJuIHZvaWQg ZGVidWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LCBjb25zdCBjaGFyICpkZWJ1 Zyk7CkBAIC00NzcsMTEgKzQ3NywxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIv c3ltZmlsZS5oCiAgCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKLUluZGV4OiBnZGItNy4y LjUwLjIwMTEwMjEzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK0luZGV4OiBnZGItNy4yLjUw LjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAyLTEz IDE5OjIxOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAot QEAgLTEzOTUsNyArMTM5NSw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKKy0tLSBn ZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAz LTIwIDE1OjE5OjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2Ri L3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEw MAorQEAgLTEzOTcsNyArMTM5Nyw3IEBAIHByb2MgZGVmYXVsdF9nZGJfc3RhcnQgeyB9IHsKICAJ ICAgIHdhcm5pbmcgIkNvdWxkbid0IHNldCB0aGUgd2lkdGggdG8gMC4iCiAgCX0KICAgICAgfQpA QCAtNDkwLDEwICs0OTAsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAogICAgICBzZW5kX2dkYiAic2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxu IgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIkZ2RiX3Byb21wdCAkIiB7Ci1JbmRleDog Z2RiLTcuMi41MC4yMDExMDIxMy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAorSW5k ZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAJMjAxMS0wMi0xMyAxOToyMTo0NC4wMDAwMDAwMDAgKzAxMDAKLSsr KyBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIw MTEtMDItMTMgMTk6MjE6NDkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDExMDMy MC5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDMtMjAgMTU6MTk6 NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEwMAog QEAgLTIyMSw3ICsyMjEsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsK ICAJICAgIH0KICAgICAgCX0KQEAgLTUwMywxMCArNTAzLDEwIEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTEwMjEzL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCiAgICAgIHNlbmRfZ2Ri ICIxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7 CiAgCS1yZSAiLioxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcclxuMTkwXFxcXmRvbmVc clxuJG1pX2dkYl9wcm9tcHQkIiB7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvdHVp L3R1aS1pbnRlcnAuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3R1aS90dWktaW50 ZXJwLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL3R1aS90 dWktaW50ZXJwLmMJMjAxMS0wMS0wMSAxNjozMzo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTEwMjEzL2dkYi90dWkvdHVpLWludGVycC5jCTIwMTEtMDItMTMgMTk6MjE6NDku MDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi90dWkvdHVp LWludGVycC5jCTIwMTEtMDEtMDEgMTY6MzM6NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu Mi41MC4yMDExMDMyMC9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDExLTAzLTIwIDE1OjIyOjUxLjAw MDAwMDAwMCArMDEwMAogQEAgLTMxLDYgKzMxLDcgQEAKICAjaW5jbHVkZSAidHVpL3R1aS5oIgog ICNpbmNsdWRlICJ0dWkvdHVpLWlvLmgiCkBAIC01MjQsMTAgKzUyNCwxMCBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDIxMy9nZGIvdHVpL3R1aS1pbnRlcnAuYwogICAgICAgIC8qIFRlbGwgcmVh ZGxpbmUgd2hhdCB0aGUgcHJvbXB0IHRvIGRpc3BsYXkgaXMgYW5kIHdoYXQgZnVuY3Rpb24KICAg ICAgICAgICBpdCB3aWxsIG5lZWQgdG8gY2FsbCBhZnRlciBhIHdob2xlIGxpbmUgaXMgcmVhZC4g VGhpcyBhbHNvCiAgICAgICAgICAgZGlzcGxheXMgdGhlIGZpcnN0IHByb21wdC4gICovCi1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvYWNsb2NhbC5tNAorSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAzMjAvZ2RiL2FjbG9jYWwubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEw MjEzLm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9hY2xvY2FsLm00CTIwMTEtMDItMTMgMTk6 MjE6NDkuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi9h Y2xvY2FsLm00CTIwMTEtMDItMTUgMjI6MDU6NTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu Mi41MC4yMDExMDMyMC9nZGIvYWNsb2NhbC5tNAkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAw MCArMDEwMAogQEAgLTE5LDYgKzE5LDE2MiBAQCBZb3UgaGF2ZSBhbm90aGVyIHZlcnNpb24gb2Yg YXV0b2NvbmYuICBJCiAgSWYgeW91IGhhdmUgcHJvYmxlbXMsIHlvdSBtYXkgbmVlZCB0byByZWdl bmVyYXRlIHRoZSBidWlsZCBzeXN0ZW0gZW50aXJlbHkuCiAgVG8gZG8gc28sIHVzZSB0aGUgcHJv Y2VkdXJlIGRvY3VtZW50ZWQgYnkgdGhlIHBhY2thZ2UsIHR5cGljYWxseSBgYXV0b3JlY29uZicu XSldKQpAQCAtNjkxLDEwICs2OTEsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2Ri L2FjbG9jYWwubTQKICAjIENvcHlyaWdodCAoQykgMjAwMiwgMjAwMywgMjAwNSwgMjAwNiwgMjAw NywgMjAwOCAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAgIwogICMgVGhpcyBmaWxl IGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLUluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWcuaW4KK0luZGV4OiBnZGItNy4yLjUwLjIwMTEw MzIwL2dkYi9jb25maWcuaW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9y aWcvZ2RiL2NvbmZpZy5pbgkyMDExLTAxLTE0IDE0OjM4OjIzLjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2NvbmZpZy5pbgkyMDExLTAyLTEzIDE5OjIxOjQ5LjAw MDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvY29uZmlnLmlu CTIwMTEtMDMtMTcgMTQ6MTk6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEx MDMyMC9nZGIvY29uZmlnLmluCTIwMTEtMDMtMjAgMTU6MjI6NTEuMDAwMDAwMDAwICswMTAwCiBA QCAtNDYsNiArNDYsOSBAQAogIC8qIERlZmluZSB0byBCRkQncyBkZWZhdWx0IHRhcmdldCB2ZWN0 b3IuICovCiAgI3VuZGVmIERFRkFVTFRfQkZEX1ZFQwpAQCAtNzA1LDcgKzcwNSw3IEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgdG8gMSBpZiB0 cmFuc2xhdGlvbiBvZiBwcm9ncmFtIG1lc3NhZ2VzIHRvIHRoZSB1c2VyJ3MgbmF0aXZlCiAgICAg bGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwogICN1bmRlZiBFTkFCTEVfTkxTCi1AQCAtMjI5LDYg KzIzMiw5IEBACitAQCAtMjMzLDYgKzIzNiw5IEBACiAgLyogRGVmaW5lIGlmIFB5dGhvbiAyLjcg aXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJQWVRIT04yXzcKICAKQEAgLTcxNSwx MCArNzE1LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWcuaW4KICAv KiBEZWZpbmUgaWYgbGlidW53aW5kIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYg SEFWRV9MSUJVTldJTkQKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWd1 cmUKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9jb25maWd1cmUKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDExLTAyLTExIDEw OjU3OjI0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2NvbmZp Z3VyZQkyMDExLTAyLTEzIDE5OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAu MjAxMTAzMjAub3JpZy9nZGIvY29uZmlndXJlCTIwMTEtMDMtMTcgMTQ6MTk6MDkuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvY29uZmlndXJlCTIwMTEtMDMtMjAg MTU6MjM6MjkuMDAwMDAwMDAwICswMTAwCiBAQCAtNjgyLDYgKzY4Miw5IEBAIFJFUE9SVF9CVUdT X1RPCiAgUEtHVkVSU0lPTgogIFRBUkdFVF9PQlMKQEAgLTc0Nyw3ICs3NDcsNyBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDExMDIxMy9nZGIvY29uZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhNS01G JwotQEAgLTE2NTMsNiArMTY2MCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE2NTIsNiAr MTY1OSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg W0RBVEFESVIvZ2RiXQogICAgLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEgKICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBz b3VyY2UgZmlsZXMKQEAgLTc1Niw3ICs3NTYsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIx My9nZGIvY29uZmlndXJlCiAgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5k IGZyYW1lIHVud2luZGluZyBzdXBwb3J0CiAgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2Ug dGhlIGN1cnNlcyBsaWJyYXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGxpYnJhcnkKLUBAIC0xNjg4LDYgKzE2OTcsOSBAQCBTb21lIGluZmx1ZW50 aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKK0BAIC0xNjg3LDYgKzE2OTYsOSBAQCBTb21lIGlu Zmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKICAgIENQUEZMQUdTICAgIEMvQysrL09i amVjdGl2ZSBDIHByZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAg ICAgICAgICAgICAgIHlvdSBoYXZlIGhlYWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3Rvcnkg PGluY2x1ZGUgZGlyPgogICAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IKQEAgLTc2Niw3ICs3 NjYsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvY29uZmlndXJlCiAgICBZQUND ICAgICAgICBUaGUgYFlldCBBbm90aGVyIEMgQ29tcGlsZXInIGltcGxlbWVudGF0aW9uIHRvIHVz ZS4gRGVmYXVsdHMgdG8KICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91 dCBvZjogYGJpc29uIC15JywgYGJ5YWNjJywgYHlhY2MnLgogICAgWUZMQUdTICAgICAgVGhlIGxp c3Qgb2YgYXJndW1lbnRzIHRoYXQgd2lsbCBiZSBwYXNzZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4K LUBAIC03ODg1LDYgKzc4OTcsNDg2IEBAIF9BQ0VPRgorQEAgLTc4ODQsNiArNzg5Niw0ODYgQEAg X0FDRU9GCiAgZmkKICAKICAKQEAgLTEyNTMsMTAgKzEyNTMsMTAgQEAgSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAyMTMvZ2RiL2NvbmZpZ3VyZQogIAogIAogIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3Rz dWl0ZSIKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9jb25maWd1cmUuYWMKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTAyLTExIDEwOjU3 OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMvZ2RiL2NvbmZpZ3Vy ZS5hYwkyMDExLTAyLTEzIDE5OjIyOjMwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjIuNTAu MjAxMTAzMjAub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTEtMDMtMTcgMTQ6MTk6MTAuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvY29uZmlndXJlLmFjCTIwMTEt MDMtMjAgMTU6MjM6MTcuMDAwMDAwMDAwICswMTAwCiBAQCAtMTA4LDYgKzEwOCwxOTkgQEAgQVNf SEVMUF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcwogICAgICAgICAgICAgICAgW1Jl bG9jYXRlZCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gXSkKICBdKQpAQCAtMTQ1NSwxMiAr MTQ1NSwxMiBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxMy9nZGIvY29uZmlndXJlLmFjCiAr ZmkKICsgCiAgQUNfQ09ORklHX1NVQkRJUlModGVzdHN1aXRlKQotIEFDX0NPTkZJR19TVUJESVJT KGNvbW1vbikKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjEzL2dkYi9hY2luY2x1ZGUubTQK KyAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJh dGlvbnMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9hY2luY2x1ZGUubTQKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjEzLm9yaWcvZ2RiL2FjaW5jbHVkZS5tNAkyMDEw LTA1LTI3IDA1OjQwOjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMTMv Z2RiL2FjaW5jbHVkZS5tNAkyMDExLTAyLTEzIDE5OjIxOjQ5LjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUtMjcgMDU6 NDA6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvYWNpbmNs dWRlLm00CTIwMTEtMDMtMjAgMTU6MjI6NTEuMDAwMDAwMDAwICswMTAwCiBAQCAtMSwzICsxLDUg QEAKICsjIHNlcmlhbCAxCiArCkBAIC0xNDc2LDEwICsxNDc2LDEwIEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTEwMjEzL2dkYi9hY2luY2x1ZGUubTQKICAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERD CiAgIyBAbWFpbmRleCBQUk9HX0NDX1NUREMKICAjIEBvdmluZGV4IENDCi1JbmRleDogZ2RiLTcu Mi41MC4yMDExMDIxMy9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9n ZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxMy5vcmlnL2dk Yi9jb3JlbG93LmMJMjAxMS0wMi0xMyAxOToyMTo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTEwMjEzL2dkYi9jb3JlbG93LmMJMjAxMS0wMi0xMyAxOToyMTo0OS4wMDAwMDAw MDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL2NvcmVsb3cuYwkyMDEx LTAzLTIwIDE1OjE5OjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAv Z2RiL2NvcmVsb3cuYwkyMDExLTAzLTIwIDE1OjIyOjUxLjAwMDAwMDAwMCArMDEwMAogQEAgLTMy MCw3ICszMjAsNyBAQCBidWlsZF9pZF9sb2NhdGVfZXhlYyAoaW50IGZyb21fdHR5KQogICAgICAg ICAgc3ltZmlsZV9vYmpmaWxlLT5mbGFncyB8PSBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEOwog ICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaCBiL2dkYi02 LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5kZXggM2Q4ZTVkZS4uNzIwYmYyMSAxMDA2NDQKLS0t IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2Ri L2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2NvcmVsb3cuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAxMTcub3JpZy9nZGIvY29yZWxvdy5jCTIwMTEt MDEtMDUgMjM6MjI6NDcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9n ZGIvY29yZWxvdy5jCTIwMTEtMDEtMTcgMTU6NTI6MDYuMDAwMDAwMDAwICswMTAwCistLS0gZ2Ri LTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0wMi0yNiAwMzowNzowNy4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9jb3JlbG93LmMJMjAx MS0wMy0yMCAxNToxOTo1Mi4wMDAwMDAwMDAgKzAxMDAKIEBAIC00Nyw2ICs0Nyw5IEBACiAgI2lu Y2x1ZGUgImZpbGVuYW1lcy5oIgogICNpbmNsdWRlICJwcm9nc3BhY2UuaCIKQEAgLTkwLDExICs5 MCwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvY29yZWxvdy5jCiArCQkJICAg TlVMTCwgTlVMTCwgTlVMTCwKICsJCQkgICAmc2V0bGlzdCwgJnNob3dsaXN0KTsKICB9Ci1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZG9jL2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcu Mi41MC4yMDExMDMyMC9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi41MC4yMDExMDExNy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wMS0xNyAxNTo1MDo0 MS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMS0wMS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xNTIyMCw2ICsx NTIyMCwyNyBAQCBpbmZvcm1hdGlvbiBmaWxlcy4KKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9y aWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTAzLTIwIDE1OjE3OjQ0LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTAzLTIw IDE1OjE5OjUyLjAwMDAwMDAwMCArMDEwMAorQEAgLTE1MzQzLDYgKzE1MzQzLDI3IEBAIGluZm9y bWF0aW9uIGZpbGVzLgogIAogIEBlbmQgdGFibGUKICAKQEAgLTEyMiwxMCArMTIyLDEwIEBAIElu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9kb2MvZ2RiLnRleGluZm8KICBAY2luZGV4IEBj b2Rley5nbnVfZGVidWdsaW5rfSBzZWN0aW9ucwogIEBjaW5kZXggZGVidWcgbGluayBzZWN0aW9u cwogIEEgZGVidWcgbGluayBpcyBhIHNwZWNpYWwgc2VjdGlvbiBvZiB0aGUgZXhlY3V0YWJsZSBm aWxlIG5hbWVkCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvc29saWItc3ZyNC5jCitJ bmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvc29saWItc3ZyNC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9zb2xpYi1zdnI0LmMJMjAxMS0wMS0xNyAx NTo0NzozNy4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9zb2xp Yi1zdnI0LmMJMjAxMS0wMS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4y LjUwLjIwMTEwMzIwLm9yaWcvZ2RiL3NvbGliLXN2cjQuYwkyMDExLTAzLTIwIDE1OjE3OjQzLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3NvbGliLXN2cjQuYwky MDExLTAzLTIwIDE1OjE5OjUyLjAwMDAwMDAwMCArMDEwMAogQEAgLTExNzksOSArMTE3OSw0OSBA QCBzdnI0X2N1cnJlbnRfc29zICh2b2lkKQogIAkJICAgICBzYWZlX3N0cmVycm9yIChlcnJjb2Rl KSk7CiAgCSAgZWxzZQpAQCAtMTc5LDEzICsxNzksMTMgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAxMTcvZ2RiL3NvbGliLXN2cjQuYwogIAkgICAgfQogIAkgIHhmcmVlIChidWZmZXIpOwogIAot SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2VsZnJlYWQuYworSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL2VsZnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAx MTAxMTcub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTEtMDEtMTcgMTU6NDc6MzcuMDAwMDAwMDAwICsw MTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCTIwMTEtMDEtMTcgMTU6 NTI6MDYuMDAwMDAwMDAwICswMTAwCi1AQCAtMzgsNiArMzgsMTAgQEAKLSAjaW5jbHVkZSAiZGVt YW5nbGUuaCIKLSAjaW5jbHVkZSAicHN5bXByaXYuaCIKKy0tLSBnZGItNy4yLjUwLjIwMTEwMzIw Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDExLTAzLTIwIDE1OjE3OjQyLjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2VsZnJlYWQuYwkyMDExLTAzLTIwIDE1OjIyOjM0 LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ1LDYgKzQ1LDEwIEBACisgI2luY2x1ZGUgInN0YXAtcHJv YmUuaCIKKyAjaW5jbHVkZSAiYXJjaC11dGlscy5oIgogICNpbmNsdWRlICJnZGJ0eXBlcy5oIgog KyNpbmNsdWRlICJsaWJiZmQuaCIKICsjaW5jbHVkZSAiZ2RiY29yZS5oIgpAQCAtMTk0LDggKzE5 NCw4IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9lbGZyZWFkLmMKICAKICBleHRl cm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKICAKLUBAIC04MjMsMTYgKzgyNyw2 NSBAQCByZXNvbHZlX2dudV9pZnVuYyAoY29uc3QgY2hhciAqZnVuY3Rpb25fCi0gICByZXR1cm4g MDsKK0BAIC0xMDcyLDE2ICsxMDc2LDY1IEBAIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJu X3N0b3AgKHN0cnUKKyAgIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0aW9ucyAoYiwgc2Fscyk7CiAg fQogIAogKy8qIExvY2F0ZSBOVF9HTlVfQlVJTERfSUQgYW5kIHJldHVybiBpdHMgbWF0Y2hpbmcg ZGVidWcgZmlsZW5hbWUuCkBAIC0yNjIsNyArMjYyLDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAxMTcvZ2RiL2VsZnJlYWQuYwogIHsKICAgIHN0cnVjdCBidWlsZF9pZCAqcmV0dmFsOwogIAot QEAgLTg0OCw2ICs5MDEsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKK0BAIC0x MDk3LDYgKzExNTAsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJmZCAqYWJmZCkKICAgIHJldHVy biByZXR2YWw7CiAgfQogIApAQCAtNjExLDcgKzYxMSw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIw MTEwMTE3L2dkYi9lbGZyZWFkLmMKICAvKiBSZXR1cm4gaWYgRklMRU5BTUUgaGFzIE5UX0dOVV9C VUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAqLwogIAogIHN0YXRpYyBpbnQKLUBA IC04NjIsNyArMTI1Nyw3IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAqZmlsZW5hbWUs IHMKK0BAIC0xMTExLDcgKzE1MDYsNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZp bGVuYW1lLCBzCiAgICBpZiAoYWJmZCA9PSBOVUxMKQogICAgICByZXR1cm4gMDsKICAKQEAgLTYy MCw3ICs2MjAsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAg CiAgICBpZiAoZm91bmQgPT0gTlVMTCkKICAgICAgd2FybmluZyAoXygiRmlsZSBcIiVzXCIgaGFz IG5vIGJ1aWxkLWlkLCBmaWxlIHNraXBwZWQiKSwgZmlsZW5hbWUpOwotQEAgLTg4MCwxNCArMTI3 NSwxNiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtMTEy OSwxNCArMTUyNCwxNiBAQCBidWlsZF9pZF92ZXJpZnkgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBz CiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTY0MSw3ICs2NDEsNyBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgCiAgICAvKiBLZWVwIGJhY2t3YXJkIGNv bXBhdGliaWxpdHkgc28gdGhhdCBERUJVR19GSUxFX0RJUkVDVE9SWSBiZWluZyAiIiB3aWxsCiAg ICAgICBjYXVzZSAiLy5idWlsZC1pZC8uLi4iIGxvb2t1cHMuICAqLwotQEAgLTkxOCw3ICsxMzE1 LDEwIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BAIC0xMTY3 LDcgKzE1NjQsMTAgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAog IAkqcysrID0gJy8nOwogICAgICAgIHdoaWxlIChzaXplLS0gPiAwKQogIAlzICs9IHNwcmludGYg KHMsICIlMDJ4IiwgKHVuc2lnbmVkKSAqZGF0YSsrKTsKQEAgLTY1Myw3ICs2NTMsNyBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgLyogbHJlYWxw YXRoKCkgaXMgZXhwZW5zaXZlIGV2ZW4gZm9yIHRoZSB1c3VhbGx5IG5vbi1leGlzdGVudCBmaWxl cy4gICovCiAgICAgICAgaWYgKGFjY2VzcyAobGluaywgRl9PSykgPT0gMCkKLUBAIC05MzEsMjYg KzEzMzEsMjAxIEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGQKK0BA IC0xMTgwLDI2ICsxNTgwLDIwMSBAQCBidWlsZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0 IGJ1aWxkCiAgCX0KICAKICAgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCkBAIC03MjMsOSArNzIz LDkgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2VsZnJlYWQuYwogKwogKyAgcmV0 dmFsID0gb2JzdGFja19hbGxvYyAoJm1pc3NpbmdfZmlsZXBhaXJfb2JzdGFjaywgc2l6ZSk7CiAr ICBtZW1zZXQgKHJldHZhbCwgMCwgc2l6ZSk7Ci0gICByZXR1cm4gcmV0dmFsOwotIH0KLSAKKysg IHJldHVybiByZXR2YWw7CisrfQorKwogK3N0YXRpYyBoYXNodmFsX3QKICttaXNzaW5nX2ZpbGVw YWlyX2hhc2hfZnVuYyAoY29uc3Qgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIgKmVsZW0pCiArewpA QCAtNzM1LDkgKzczNSw5IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9lbGZyZWFk LmMKICsgIGlmIChlbGVtLT5kZWJ1ZyAhPSBOVUxMKQogKyAgICByZXR2YWwgXj0gaHRhYl9oYXNo X3N0cmluZyAoZWxlbS0+ZGVidWcpOwogKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCisgICBy ZXR1cm4gcmV0dmFsOworIH0KKyAKICtzdGF0aWMgaW50CiArbWlzc2luZ19maWxlcGFpcl9lcSAo Y29uc3Qgc3RydWN0IG1pc3NpbmdfZmlsZXBhaXIgKmVsZW0xLAogKwkJICAgICAgIGNvbnN0IHN0 cnVjdCBtaXNzaW5nX2ZpbGVwYWlyICplbGVtMikKQEAgLTg1OSw3ICs4NTksNyBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgICAgICAgeGZyZWUgKGJ1aWxkX2lk KTsKICAgICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4g ICovCiAgICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCAmJiBzdHJjbXAgKGJ1aWxkX2lk X25hbWUsIG9iamZpbGUtPm5hbWUpID09IDApCi1AQCAtOTYwLDcgKzE1MzUsNyBAQCBmaW5kX3Nl cGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCitAQCAtMTIwOSw3ICsxNzg0LDcgQEAg ZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5X2J1aWxkaWQgKHN0cgogIAkgIHhmcmVlIChidWls ZF9pZF9uYW1lKTsKICAJfQogICAgICAgIGVsc2UgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTCkK QEAgLTg2OCw5ICs4NjgsOSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVh ZC5jCiAgICAgIH0KICAgIHJldHVybiBOVUxMOwogIH0KLUBAIC0xMTQ4LDkgKzE3MjMsMTAgQEAg ZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAorQEAgLTE0MDcsOSArMTk4 MiwxMCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgICAgICBg Lm5vdGUuZ251LmJ1aWxkLWlkJy4gICovCi0gICBpZiAoIW9iamZpbGVfaGFzX3BhcnRpYWxfc3lt Ym9scyAob2JqZmlsZSkpCisgICBlbHNlIGlmICghb2JqZmlsZV9oYXNfcGFydGlhbF9zeW1ib2xz IChvYmpmaWxlKSkKICAgICAgewogLSAgICAgIGNoYXIgKmRlYnVnZmlsZTsKICsgICAgICBjaGFy ICpkZWJ1Z2ZpbGUsICpidWlsZF9pZF9maWxlbmFtZTsKQEAgLTg4MSw3ICs4ODEsNyBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgaWYgKGRlYnVn ZmlsZSA9PSBOVUxMKQogIAlkZWJ1Z2ZpbGUgPSBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlf ZGVidWdsaW5rIChvYmpmaWxlKTsKLUBAIC0xMTYyLDYgKzE3MzgsMTIgQEAgZWxmX3N5bWZpbGVf cmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAorQEAgLTE0MjEsNiArMTk5NywxMiBAQCBlbGZf c3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCiAgCSAgc3ltYm9sX2ZpbGVfYWRk X3NlcGFyYXRlIChhYmZkLCBzeW1maWxlX2ZsYWdzLCBvYmpmaWxlKTsKICAJICB4ZnJlZSAoZGVi dWdmaWxlKTsKICAJfQpAQCAtODk0LDEwICs4OTQsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAxMTcvZ2RiL2VsZnJlYWQuYwogICAgICB9CiAgfQogIAotQEAgLTEzMzcsNCArMTkxOSwxNiBA QCB2b2lkCi0gX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCkKLSB7Ci0gICBhZGRfc3ltdGFiX2Zu cyAoJmVsZl9zeW1fZm5zKTsKK0BAIC0xODc5LDQgKzI0NjEsMTYgQEAgX2luaXRpYWxpemVfZWxm cmVhZCAodm9pZCkKKyAKKyAgIGVsZl9vYmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhID0gcmVn aXN0ZXJfb2JqZmlsZV9kYXRhICgpOworICAgZ251X2lmdW5jX2Zuc19wID0gJmVsZl9nbnVfaWZ1 bmNfZm5zOwogKwogKyAgYWRkX3NldHNob3dfemludGVnZXJfY21kICgiYnVpbGQtaWQtdmVyYm9z ZSIsIG5vX2NsYXNzLCAmYnVpbGRfaWRfdmVyYm9zZSwKICsJCQkgICAgXygiXApAQCAtOTExLDEx ICs5MTEsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2VsZnJlYWQuYwogKwog KyAgb2JzZXJ2ZXJfYXR0YWNoX2V4ZWN1dGFibGVfY2hhbmdlZCAoZGVidWdfcHJpbnRfZXhlY3V0 YWJsZV9jaGFuZ2VkKTsKICB9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvc3ltZmls ZS5oCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9zeW1maWxlLmgJMjAxMS0wMS0xMSAy Mjo1MzoyNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9zeW1m aWxlLmgJMjAxMS0wMS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAKLUBAIC01NTQsNiArNTU0 LDEzIEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAoc3RydWN0IHMKKy0tLSBnZGIt Ny4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDExLTAzLTIwIDE1OjE3OjQzLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3N5bWZpbGUuaAkyMDEx LTAzLTIwIDE1OjE5OjUyLjAwMDAwMDAwMCArMDEwMAorQEAgLTYxMSw2ICs2MTEsMTMgQEAgdm9p ZCBmcmVlX3N5bWZpbGVfc2VnbWVudF9kYXRhIChzdHJ1Y3QgcwogIAogIGV4dGVybiBzdHJ1Y3Qg Y2xlYW51cCAqaW5jcmVtZW50X3JlYWRpbmdfc3ltdGFiICh2b2lkKTsKICAKQEAgLTkyOSwxMSAr OTI5LDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9zeW1maWxlLmgKICAvKiBG cm9tIGR3YXJmMnJlYWQuYyAqLwogIAogIGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChzdHJ1 Y3Qgb2JqZmlsZSAqKTsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAxLTE3IDE1OjQ3OjM3LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTAx LTE3IDE1OjUyOjA2LjAwMDAwMDAwMCArMDEwMAotQEAgLTEzOTUsNiArMTM5NSwxNiBAQCBwcm9j IGRlZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wMy0yMCAxNToxNzo0My4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAx MS0wMy0yMCAxNToxOTo1Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMzk3LDYgKzEzOTcsMTYgQEAg cHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0 IHRoZSB3aWR0aCB0byAwLiIKICAJfQogICAgICB9CkBAIC05NTAsMTAgKzk1MCwxMCBAQCBJbmRl eDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHJl dHVybiAwOwogIH0KICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUv bGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAx MTcub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTAxLTAxIDE2OjMz OjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0 ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0wMS0xNyAxNTo1MjowNi4wMDAwMDAwMDAgKzAxMDAK Ky0tLSBnZGItNy4yLjUwLjIwMTEwMzIwLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAJMjAxMS0wMy0wNyAxNzowMzowNC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUw LjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDMtMjAgMTU6 MTk6NTIuMDAwMDAwMDAwICswMTAwCiBAQCAtMjIxLDYgKzIyMSwxNiBAQCBwcm9jIGRlZmF1bHRf bWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsKICAJICAgIH0KICAgICAgCX0KQEAgLTk3MSwxMyArOTcx LDEzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1 cHBvcnQuZXhwCiAgCiAgICAgIGRldGVjdF9hc3luYwogIAotSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAxMTcvZ2RiL29iamZpbGVzLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9vYmpm aWxlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDExNy5vcmlnL2dkYi9vYmpm aWxlcy5oCTIwMTEtMDEtMTAgMjE6Mzg6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41 MC4yMDExMDExNy9nZGIvb2JqZmlsZXMuaAkyMDExLTAxLTE3IDE1OjUyOjI2LjAwMDAwMDAwMCAr MDEwMAotQEAgLTQzNCw2ICs0MzQsMTAgQEAgc3RydWN0IG9iamZpbGUKKy0tLSBnZGItNy4yLjUw LjIwMTEwMzIwLm9yaWcvZ2RiL29iamZpbGVzLmgJMjAxMS0wMy0wNyAxNzoxNzoyOS4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9vYmpmaWxlcy5oCTIwMTEtMDMt MjAgMTU6MjA6MjkuMDAwMDAwMDAwICswMTAwCitAQCAtNDQxLDYgKzQ0MSwxMCBAQCBzdHJ1Y3Qg b2JqZmlsZQogIAotICNkZWZpbmUgT0JKRl9VU0VSTE9BREVECSgxIDw8IDMpCS8qIFVzZXIgbG9h ZGVkICovCisgI2RlZmluZSBPQkpGX1BTWU1UQUJTX1JFQUQgKDEgPDwgNCkKICAKICsvKiBUaGlz IGZpbGUgd2FzIGxvYWRlZCBhY2NvcmRpbmcgdG8gdGhlIEJVSUxEX0lEX0NPUkVfTE9BRFMgcnVs ZXMuICAqLwogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5m by5wYXRjaCBiL2dkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaAppbmRleCA2 NGJjNjg2Li5kNzI2M2ZmIDEwMDY0NAotLS0gYS9nZGItNi42LWJ6MjM1MTk3LWZvcmstZGV0YWNo LWluZm8ucGF0Y2gKKysrIGIvZ2RiLTYuNi1iejIzNTE5Ny1mb3JrLWRldGFjaC1pbmZvLnBhdGNo CkBAIC0zLDExICszLDExIEBACiAJUG9ydCB0byBHREItNi44cHJlLgogCVJlbW92ZSB0aGUgYFsn IGNoYXJhY3RlciBmcm9tIHRoZSBHREItNi44IGRlZmF1bHQgbWVzc2FnZS4KIAotSW5kZXg6IGdk Yi03LjAuNTAuMjAxMDAxMTUvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEx MDMyMC9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1 Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMDM6MjI6MzEuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAwMzoy MzoyOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC03MjQsNyArNzI0LDcgQEAgaG9sZGluZyB0aGUgY2hp bGQgc3RvcHBlZC4gIFRyeSBcInNldCBkZQorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9n ZGIvbGludXgtbmF0LmMJMjAxMS0wMy0yMCAxNjo1OTo1MS4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9saW51eC1uYXQuYwkyMDExLTAzLTIwIDE2OjU5OjUxLjAw MDAwMDAwMCArMDEwMAorQEAgLTcxNiw3ICs3MTYsNyBAQCBob2xkaW5nIHRoZSBjaGlsZCBzdG9w cGVkLiAgVHJ5IFwic2V0IGRlCiAgCSAgICAgIHJlbW92ZV9icmVha3BvaW50c19waWQgKEdFVF9Q SUQgKGluZmVyaW9yX3B0aWQpKTsKICAJICAgIH0KICAKQEAgLTE2LDEwICsxNiwxMCBAQCBJbmRl eDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMKICAJICAgIHsKICAJICAgICAg dGFyZ2V0X3Rlcm1pbmFsX291cnMgKCk7CiAgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKGdkYl9z dGRsb2csCi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2ZvcmstZGV0YWNoLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvZm9yay1kZXRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMTUvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5jCTIwMTAtMDEtMTUgMDM6MjI6NTIuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2ZvcmstZGV0YWNoLmMJMjAxMS0wMy0yMCAxNjo1OTo1MS4wMDAwMDAwMDAgKzAxMDAKIEBA IC0wLDAgKzEsNTcgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgogKwpAQCAtNzgsMTAgKzc4LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guYwogKyAgICB9CiArICByZXR1 cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2ZvcmstZGV0YWNoLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAw MTE1L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZm9yay1kZXRhY2guZXhwCTIwMTAtMDEtMTUgMDM6 MjI6NTIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL2ZvcmstZGV0YWNoLmV4cAkyMDExLTAzLTIwIDE3OjEyOjIyLjAwMDAwMDAw MCArMDEwMAogQEAgLTAsMCArMSwzNiBAQAogKyMgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMTcsNSArMTE3LDUgQEAgSW5kZXg6IGdkYi03LjAu NTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9mb3JrLWRldGFjaC5leHAKICtnZGJf cnVuX2NtZAogKyMgYFN0YXJ0aW5nIHByb2dyYW06IC4qJyBwcmVmaXggaXMgYXZhaWxhYmxlIHNp bmNlIGdkYi02LjcuCiArZ2RiX3Rlc3QgIiIgXAotKyAgICAgICAgICJEZXRhY2hpbmcgYWZ0ZXIg Zm9yayBmcm9tIGNoaWxkIHByb2Nlc3MuKlByb2dyYW0gZXhpdGVkIG5vcm1hbGx5XFwuLioiIFwK KysgICAgICAgICAiRGV0YWNoaW5nIGFmdGVyIGZvcmsgZnJvbSBjaGlsZCBwcm9jZXNzLipcXFxb SW5mZXJpb3IgLiogZXhpdGVkIG5vcm1hbGx5XFxcXSIgXAogKyAgICAgICAgICJJbmZvIG1lc3Nh Z2UgY2F1Z2h0IgoKZGlmZiAtLWdpdCBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8u cGF0Y2ggYi9nZGItNi44LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCmluZGV4IDIxNmE5 NWQuLmI1ZWI1MTQgMTAwNjQ0Ci0tLSBhL2dkYi02LjgtYnoyNTQyMjktZ2NvcmUtcHJwc2luZm8u cGF0Y2gKKysrIGIvZ2RiLTYuOC1iejI1NDIyOS1nY29yZS1wcnBzaW5mby5wYXRjaApAQCAtMSw4 ICsxLDggQEAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2JmZC9lbGYtYmZkLmgKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYtYmZkLmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvYmZkL2VsZi1iZmQuaAkyMDEwLTA2LTI3IDA2OjA3OjUxLjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvYmZkL2VsZi1iZmQuaAkyMDEw LTA3LTEyIDIzOjAwOjA0LjAwMDAwMDAwMCArMDIwMAotQEAgLTIxNzEsOCArMjE3MSwxMCBAQCBl eHRlcm4gRWxmX0ludGVybmFsX1BoZHIgKiBfYmZkX2VsZl9maW5kCistLS0gZ2RiLTcuMi41MC4y MDExMDMyMC5vcmlnL2JmZC9lbGYtYmZkLmgJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2JmZC9lbGYtYmZkLmgJMjAxMS0wMy0yMCAx NToyNDowMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMTkzLDggKzIxOTMsMTAgQEAgZXh0ZXJuIEVs Zl9JbnRlcm5hbF9QaGRyICogX2JmZF9lbGZfZmluZAogIC8qIEV4cG9ydGVkIGludGVyZmFjZSBm b3Igd3JpdGluZyBlbGYgY29yZWZpbGUgbm90ZXMuICovCiAgZXh0ZXJuIGNoYXIgKmVsZmNvcmVf d3JpdGVfbm90ZQogICAgKGJmZCAqLCBjaGFyICosIGludCAqLCBjb25zdCBjaGFyICosIGludCwg Y29uc3Qgdm9pZCAqLCBpbnQpOwpAQCAtMTQsMTEgKzE0LDExIEBAIEluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2JmZC9lbGYtYmZkLmgKICBleHRlcm4gY2hhciAqZWxmY29yZV93cml0ZV9wcnN0 YXR1cwogICAgKGJmZCAqLCBjaGFyICosIGludCAqLCBsb25nLCBpbnQsIGNvbnN0IHZvaWQgKik7 CiAgZXh0ZXJuIGNoYXIgKiBlbGZjb3JlX3dyaXRlX3BzdGF0dXMKLUluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2JmZC9lbGYuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvYmZkL2VsZi5j CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2JmZC9lbGYuYwkyMDEw LTA1LTE4IDA1OjMxOjA1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv YmZkL2VsZi5jCTIwMTAtMDctMTIgMjI6NTE6MTcuMDAwMDAwMDAwICswMjAwCi1AQCAtODU4Miwx MyArODU4MiwxMiBAQCBlbGZjb3JlX3dyaXRlX25vdGUgKGJmZCAqYWJmZCwKKy0tLSBnZGItNy4y LjUwLjIwMTEwMzIwLm9yaWcvYmZkL2VsZi5jCTIwMTEtMDMtMjAgMTU6MTc6NDIuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9iZmQvZWxmLmMJMjAxMS0wMy0yMCAxNToy NDowMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC04ODE0LDEzICs4ODE0LDEyIEBAIGVsZmNvcmVfd3Jp dGVfbm90ZSAoYmZkICphYmZkLAogICAgcmV0dXJuIGJ1ZjsKICB9CiAgCkBAIC0zNCw3ICszNCw3 IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2JmZC9lbGYuYwogIHsKICAgIGNvbnN0IGNo YXIgKm5vdGVfbmFtZSA9ICJDT1JFIjsKICAgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRh ICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJmZCk7Ci1AQCAtODU5Niw0OCArODU5NSw1 NSBAQCBlbGZjb3JlX3dyaXRlX3BycHNpbmZvIChiZmQgICphYmZkLAorQEAgLTg4MjgsNDggKzg4 MjcsNTUgQEAgZWxmY29yZV93cml0ZV9wcnBzaW5mbyAoYmZkICAqYWJmZCwKICAgIGlmIChiZWQt PmVsZl9iYWNrZW5kX3dyaXRlX2NvcmVfbm90ZSAhPSBOVUxMKQogICAgICB7CiAgICAgICAgY2hh ciAqcmV0OwpAQCAtMTA5LDExICsxMDksMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEv YmZkL2VsZi5jCiAgCiAgI2lmIGRlZmluZWQgKEhBVkVfUFJTVEFUVVNfVCkKICBjaGFyICoKLUlu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjIu NTAuMjAxMTAzMjAvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4y MDEwMDcxMS5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEwLTA3LTEyIDIzOjA1OjIyLjAwMDAwMDAw MCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDct MTIgMjI6NTc6MzQuMDAwMDAwMDAwICswMjAwCi1AQCAtNDQ2Niw2ICs0NDY2LDEzMSBAQCBsaW51 eF9zcHVfbWFrZV9jb3JlZmlsZV9ub3RlcyAoYmZkICpvYmZkCistLS0gZ2RiLTcuMi41MC4yMDEx MDMyMC5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTAzLTIwIDE1OjE3OjQ2LjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDMtMjAg MTU6MjU6MzYuMDAwMDAwMDAwICswMTAwCitAQCAtNDYwMyw2ICs0NjAzLDEzMSBAQCBsaW51eF9z cHVfbWFrZV9jb3JlZmlsZV9ub3RlcyAoYmZkICpvYmZkCiAgICByZXR1cm4gYXJncy5ub3RlX2Rh dGE7CiAgfQogIApAQCAtMjQ1LDExICsyNDUsMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2xpbnV4LW5hdC5jCiAgLyogRmlsbHMgdGhlICJ0b19tYWtlX2NvcmVmaWxlX25vdGUi IHRhcmdldCB2ZWN0b3IuICBCdWlsZHMgdGhlIG5vdGUKICAgICBzZWN0aW9uIGZvciBhIGNvcmVm aWxlLCBhbmQgcmV0dXJucyBpdCBpbiBhIG1hbGxvYyBidWZmZXIuICAqLwogIAotQEAgLTQ0ODQs MjYgKzQ2MDksMTEgQEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJmZCAqb2JmZAor QEAgLTQ2MjEsMjYgKzQ3NDYsMTEgQEAgbGludXhfbmF0X21ha2VfY29yZWZpbGVfbm90ZXMgKGJm ZCAqb2JmZAogIAogICAgaWYgKGdldF9leGVjX2ZpbGUgKDApKQogICAgICB7Ci0tICAgICAgc3Ry bmNweSAoZm5hbWUsIHN0cnJjaHIgKGdldF9leGVjX2ZpbGUgKDApLCAnLycpICsgMSwgc2l6ZW9m IChmbmFtZSkpOworLSAgICAgIHN0cm5jcHkgKGZuYW1lLCBsYmFzZW5hbWUgKGdldF9leGVjX2Zp bGUgKDApKSwgc2l6ZW9mIChmbmFtZSkpOwogLSAgICAgIHN0cm5jcHkgKHBzYXJncywgZ2V0X2V4 ZWNfZmlsZSAoMCksIHNpemVvZiAocHNhcmdzKSk7CiAtICAgICAgaWYgKGdldF9pbmZlcmlvcl9h cmdzICgpKQogLQl7CkBAIC0yNzUsMTEgKzI3NSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvbGludXgtbmF0LmMKICAgICAgfQogIAogICAgLyogRHVtcCBpbmZvcm1hdGlvbiBm b3IgdGhyZWFkcy4gICovCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvcHJvY2ZzLmMK K0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9wcm9jZnMuYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvcHJvY2ZzLmMJMjAxMC0wNy0wNyAxODoxNTox Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9wcm9jZnMuYwky MDEwLTA3LTEyIDIzOjA1OjIzLjAwMDAwMDAwMCArMDIwMAotQEAgLTU3NzAsNiArNTc3MCw3IEBA IHByb2Nmc19tYWtlX25vdGVfc2VjdGlvbiAoYmZkICpvYmZkLCBpbnQKKy0tLSBnZGItNy4yLjUw LjIwMTEwMzIwLm9yaWcvZ2RiL3Byb2Nmcy5jCTIwMTEtMDMtMDkgMTM6NDg6NTUuMDAwMDAwMDAw ICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvcHJvY2ZzLmMJMjAxMS0wMy0yMCAx NToyNDowMi4wMDAwMDAwMDAgKzAxMDAKK0BAIC01NzUyLDYgKzU3NTIsNyBAQCBwcm9jZnNfbWFr ZV9ub3RlX3NlY3Rpb24gKGJmZCAqb2JmZCwgaW50CiAgICBub3RlX2RhdGEgPSAoY2hhciAqKSBl bGZjb3JlX3dyaXRlX3BycHNpbmZvIChvYmZkLAogIAkJCQkJICAgICAgIG5vdGVfZGF0YSwKICAJ CQkJCSAgICAgICBub3RlX3NpemUsCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1iejQ0Mjc2NS10aHJl YWRlZC1leGVjLXRlc3QucGF0Y2ggYi9nZGItNi44LWJ6NDQyNzY1LXRocmVhZGVkLWV4ZWMtdGVz dC5wYXRjaAppbmRleCA5ODY4OTRkLi4xMDA2NTg4IDEwMDY0NAotLS0gYS9nZGItNi44LWJ6NDQy NzY1LXRocmVhZGVkLWV4ZWMtdGVzdC5wYXRjaAorKysgYi9nZGItNi44LWJ6NDQyNzY1LXRocmVh ZGVkLWV4ZWMtdGVzdC5wYXRjaApAQCAtMTcwLDQgKzE3MCw0IEBAIGRpZmYgLXVwIC11IC1YIC9y b290L2prcmF0b2NoLy5kaWZmaS5saXN0IC1ydXAgZ2RiLTYuOC9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzCiArZ2RiX3J1bl9jbWQgJHtiaW5maWxlX25vdGhyZWFkc30gJHtiaW5maWxlX3RocmVh ZHN9IDAKICAKICBnZGJfdGVzdF9tdWx0aXBsZSB7fSAiUHJvZ3JhbSBleGl0ZWQiIHsKLSAgICAt cmUgIlxyXG5Qcm9ncmFtIGV4aXRlZCBub3JtYWxseS5cclxuJGdkYl9wcm9tcHQgJCIgeworICAg IC1yZSAiXHJcblxcXFtJbmZlcmlvciAuKiBleGl0ZWQgbm9ybWFsbHlcXFxdXHJcbiRnZGJfcHJv bXB0ICQiIHsKCmRpZmYgLS1naXQgYS9nZGItYWRhLWdkYmFyY2gtY3Jhc2gucGF0Y2ggYi9nZGIt YWRhLWdkYmFyY2gtY3Jhc2gucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNTYxZmNlMQotLS0gL2Rldi9udWxsCisrKyBiL2dkYi1hZGEtZ2RiYXJjaC1jcmFzaC5wYXRj aApAQCAtMCwwICsxLDQ5IEBACitodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMS0wMy9tc2cwMDk0Ni5odG1sCitTdWJqZWN0OiBbcGF0Y2hdIGFkYTogRml4IHJhc2hlcyBv biBnZGJhcmNoIGdhcmJhZ2UKKworSGkgSm9lbCwKKworZm9yIGdkYi5hZGEvc3RyX3JlZl9jbXAu ZXhwIG9uIHg4Nl82NC1mZWRvcmExNS1saW51eC1nbnUgaXQgdHVybnM6CisKKyhnZGIpIHByaW50 IFN0cmluZ19WYXIgKDEgLi4gMykgPSAiSGVsIgorRVJST1I6IFByb2Nlc3Mgbm8gbG9uZ2VyIGV4 aXN0cworVU5SRVNPTFZFRDogZ2RiLmFkYS9zdHJfcmVmX2NtcC5leHA6IHByaW50IFN0cmluZ19W YXIgKDEgLi4gMykgPSAiSGVsIgorLT4KKyhnZGIpIHByaW50IFN0cmluZ19WYXIgKDEgLi4gMykg PSAiSGVsIgorJDEgPSBmYWxzZQorKGdkYikgRkFJTDogZ2RiLmFkYS9zdHJfcmVmX2NtcC5leHA6 IHByaW50IFN0cmluZ19WYXIgKDEgLi4gMykgPSAiSGVsIgorCitHREIgY3Jhc2hlcyB0aGUgZm9y bWVyIHdheSB3aXRob3V0IHRoaXMgZml4IG9uOgorCWdjYy1nbmF0LTQuNi4wLTAuMTQuZmMxNS54 ODZfNjQKKwlnY2MtZ25hdC00LjUuMS00LmZjMTQueDg2XzY0CisKK0kgY2Fubm90IHRlc3QgRlNG IGdjYyA8PTQuNSBteXNlbGYgYXMgaXRzIEFkYSBidWlsZCBlcnJvcnMgb3V0IGZvciBtZSBvbjoK Kwl1aW50cC5hZGI6MjQyOjIyOiBleHBlY3QgdHlwZSAiSG51bSIgZGVmaW5lZCBhdCBsaW5lIDkx CisKK0dEQiBQQVNTZXMgb24gdGhlc2UgR05BVHMgZXZlbiB3aXRob3V0IHRoaXMgZml4IGJ1dCB0 aGF0IGlzIG5vdCB0aGUgcG9pbnQ6CisJR05BVCA0LjcuMCAyMDExMDMyMCAoZXhwZXJpbWVudGFs KQorCUdOQVQgNC42LjAgMjAxMTAzMjAgKHByZXJlbGVhc2UpCisKK1RoaXMgaXMgb25seSBhIHN1 Z2dlc3Rpb24sIEkgZG8gbm90IGtub3cgbXVjaCBhYm91dCB0aGUgYWRhLSogY29kZS4KKworCitU aGFua3MsCitKYW4KKworCitnZGIvCisyMDExLTAzLTIwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5r cmF0b2NodmlsQHJlZGhhdC5jb20+CisKKwkqIGFkYS1sYW5nLmMgKHJlcGxhY2Vfb3BlcmF0b3Jf d2l0aF9jYWxsKTogQ29weSBhbHNvIEdEQkFSQ0guCisKKy0tLSBhL2dkYi9hZGEtbGFuZy5jCisr KysgYi9nZGIvYWRhLWxhbmcuYworQEAgLTM2NjEsNiArMzY2MSw3IEBAIHJlcGxhY2Vfb3BlcmF0 b3Jfd2l0aF9jYWxsIChzdHJ1Y3QgZXhwcmVzc2lvbiAqKmV4cHAsIGludCBwYywgaW50IG5hcmdz LAorIAorICAgbmV3ZXhwLT5uZWx0cyA9IGV4cC0+bmVsdHMgKyA3IC0gb3BsZW47CisgICBuZXdl eHAtPmxhbmd1YWdlX2RlZm4gPSBleHAtPmxhbmd1YWdlX2RlZm47CisrICBuZXdleHAtPmdkYmFy Y2ggPSBleHAtPmdkYmFyY2g7CisgICBtZW1jcHkgKG5ld2V4cC0+ZWx0cywgZXhwLT5lbHRzLCBF WFBfRUxFTV9UT19CWVRFUyAocGMpKTsKKyAgIG1lbWNweSAobmV3ZXhwLT5lbHRzICsgcGMgKyA3 LCBleHAtPmVsdHMgKyBwYyArIG9wbGVuLAorICAgICAgICAgICBFWFBfRUxFTV9UT19CWVRFUyAo ZXhwLT5uZWx0cyAtIHBjIC0gb3BsZW4pKTsKKwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXItcGll LWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAt ZGlzYWJsZWQucGF0Y2gKaW5kZXggODE2NjFjYS4uOGQxNmU2YSAxMDA2NDQKLS0tIGEvZ2RiLWFy Y2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUt YWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcu Mi41MC4yMDExMDIyMi9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDExMDMy MC9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIyMi5v cmlnL2dkYi9icmVha3BvaW50LmMJMjAxMS0wMi0yMyAwMDoxMjo1OS4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4yLjUwLjIwMTEwMjIyL2dkYi9icmVha3BvaW50LmMJMjAxMS0wMi0yMyAwMDox MzowNC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMDU0Nyw2ICsxMDU0Nyw1MCBAQCB1cGRhdGVfYnJl YWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVhCistLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5v cmlnL2dkYi9icmVha3BvaW50LmMJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9icmVha3BvaW50LmMJMjAxMS0wMy0yMCAxNToy ODo0OC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDY3OCw2ICsxMDY3OCw1MCBAQCB1cGRhdGVfYnJl YWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVhCiAgICB1cGRhdGVfZ2xvYmFsX2xvY2F0aW9u X2xpc3QgKDEpOwogIH0KICAKQEAgLTUzLDI1ICs1MywyNSBAQCBJbmRleDogZ2RiLTcuMi41MC4y MDExMDIyMi9nZGIvYnJlYWtwb2ludC5jCiAgLyogUmVzZXQgYSBicmVha3BvaW50IGdpdmVuIGl0 J3Mgc3RydWN0IGJyZWFrcG9pbnQgKiBCSU5ULgogICAgIFRoZSB2YWx1ZSB3ZSByZXR1cm4gZW5k cyB1cCBiZWluZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hfZXJyb3JzLgogICAgIFVudXNl ZCBpbiB0aGlzIGNhc2UuICAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMjIvZ2RiL2JyZWFr cG9pbnQuaAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL2JyZWFrcG9pbnQuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAyMjIub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIw MTEtMDItMjMgMDA6MTI6NTkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIy Mi9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDItMjMgMDA6MTM6MTYuMDAwMDAwMDAwICswMTAwCi1A QCAtMTE5Miw0ICsxMTkyLDcgQEAgZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0 IGJyZQorLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEt MDMtMjAgMTU6MTc6NDIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDExMDMyMC9n ZGIvYnJlYWtwb2ludC5oCTIwMTEtMDMtMjAgMTU6Mjk6MzMuMDAwMDAwMDAwICswMTAwCitAQCAt MTIxMCw0ICsxMjEwLDcgQEAgZXh0ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292ZXJf YgogIAotIGV4dGVybiBpbnQgZ2V0X251bWJlcl9vcl9yYW5nZSAoY2hhciAqKnBwKTsKKyBleHRl cm4gaW50IHVzZXJfYnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsKICAKICtleHRl cm4gdm9pZCBicmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAr CQkJCSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwogICNlbmRpZiAvKiAhZGVm aW5lZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMjIvZ2RiL29i amZpbGVzLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9vYmpmaWxlcy5jCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIyMi5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTEt MDEtMTAgMjE6Mzg6NDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIyMi9n ZGIvb2JqZmlsZXMuYwkyMDExLTAyLTIzIDAwOjEzOjA0LjAwMDAwMDAwMCArMDEwMAotQEAgLTg0 Niw2ICs4NDYsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQot IAkJCQlvYmpfc2VjdGlvbl9hZGRyIChzKSk7Ci0gICAgIH0KKy0tLSBnZGItNy4yLjUwLjIwMTEw MzIwLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMS0wMy0yMCAxNToxNzo0Mi4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi9vYmpmaWxlcy5jCTIwMTEtMDMtMjAgMTU6 Mjk6MDUuMDAwMDAwMDAwICswMTAwCitAQCAtODUxLDYgKzg1MSwxMSBAQCBvYmpmaWxlX3JlbG9j YXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCisgICAgIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVf Zm5zLT5zeW1fcmVsb2NhdGVfcHJvYmUgKG9iamZpbGUsCisgCQkJCQkJICAgIG5ld19vZmZzZXRz LCBkZWx0YSk7CiAgCiArICAvKiBGaW5hbCBjYWxsIG9mIGJyZWFrcG9pbnRfcmVfc2V0IGNhbiBr ZWVwIGJyZWFrcG9pbnQgbG9jYXRpb25zIGRpc2FibGVkIGlmCiArICAgICB0aGVpciBhZGRyZXNz ZXMgbWF0Y2guICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVy LnBhdGNoCmluZGV4IDY5MGIwMjUuLjRiNGE2YTYgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0 Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiwyMiArMiwxMTYgQEAgaHR0cDovL3NvdXJj ZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9n ZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoKLWNvbW1pdCBl ODAyZTFmYjIzZDQ1NWQ2NzVkY2EwZjRkN2Q2YzhkZjE4NDY3NzE5Citjb21taXQgNmIyYTBiZjc1 ODI2M2QyMmJmMmIzYmQyZTAyNjY1Y2YwYzI0YjBiZQogCiBicmFuY2ggYGFyY2hlcicgLSB0aGUg bWVyZ2Ugb2YgYnJhbmNoZXM6CiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKIGFyY2hlci1qYW5r cmF0b2NodmlsLXdhdGNocG9pbnQzCiBhcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwogYXJjaGVy LXRyb21leS1weXRob24KK2FyY2hlci1zZXJnaW9kai1zdGFwCiAjVE9ETz86YXJjaGVyLXRyb21l eS1vcHRpb25hbC1wc3ltdGFiIChjaGVycnktcGlja2VkIGZyb20gcG9zdC03LjIgbWFzdGVyKQog I1RPRE8/OmFyY2hlci10cm9tZXktdGhyZWFkZWQtZHdhcmYKIAogCitkaWZmIC0tZ2l0IGEvYmZk L2VsZi1iZmQuaCBiL2JmZC9lbGYtYmZkLmgKK2luZGV4IDIxZWMzOGYuLjUwYzEyNzIgMTAwNjQ0 CistLS0gYS9iZmQvZWxmLWJmZC5oCisrKysgYi9iZmQvZWxmLWJmZC5oCitAQCAtMTQ3Niw2ICsx NDc2LDEzIEBAIGVudW0KKyAgIFRhZ19jb21wYXRpYmlsaXR5ID0gMzIKKyB9OworIAorK3N0cnVj dCBzZHRfbm90ZQorK3sKKysgIHN0cnVjdCBzZHRfbm90ZSAqbmV4dDsKKysgIGJmZF9zaXplX3R5 cGUgc2l6ZTsKKysgIGJmZF9ieXRlIGRhdGFbMV07CisrfTsKKysKKyAvKiBTb21lIHByaXZhdGUg ZGF0YSBpcyBzdGFzaGVkIGF3YXkgZm9yIGZ1dHVyZSB1c2UgdXNpbmcgdGhlIHRkYXRhIHBvaW50 ZXIKKyAgICBpbiB0aGUgYmZkIHN0cnVjdHVyZS4gICovCisgCitAQCAtMTYzMyw2ICsxNjQwLDgg QEAgc3RydWN0IGVsZl9vYmpfdGRhdGEKKyAgIGJmZF9zaXplX3R5cGUgYnVpbGRfaWRfc2l6ZTsK KyAgIGJmZF9ieXRlICpidWlsZF9pZDsKKyAKKysgIHN0cnVjdCBzZHRfbm90ZSAqc2R0X25vdGVf aGVhZDsKKysKKyAgIC8qIFRydWUgaWYgdGhlIGJmZCBjb250YWlucyBzeW1ib2xzIHRoYXQgaGF2 ZSB0aGUgU1RUX0dOVV9JRlVOQworICAgICAgc3ltYm9sIHR5cGUuICBVc2VkIHRvIHNldCB0aGUg b3NhYmkgZmllbGQgaW4gdGhlIEVMRiBoZWFkZXIKKyAgICAgIHN0cnVjdHVyZS4gICovCitkaWZm IC0tZ2l0IGEvYmZkL2VsZi5jIGIvYmZkL2VsZi5jCitpbmRleCBmNjlhYmYyLi4zYzAzOGViIDEw MDY0NAorLS0tIGEvYmZkL2VsZi5jCisrKysgYi9iZmQvZWxmLmMKK0BAIC04NDE2LDYgKzg0MTYs MzcgQEAgZWxmb2JqX2dyb2tfZ251X25vdGUgKGJmZCAqYWJmZCwgRWxmX0ludGVybmFsX05vdGUg Km5vdGUpCisgICAgIH0KKyB9CisgCisrI2RlZmluZSBTRFRfTk9URV9UWVBFIDMKKysKKytzdGF0 aWMgYmZkX2Jvb2xlYW4KKytlbGZvYmpfZ3Jva19zdGFwc2R0X25vdGVfMSAoYmZkICphYmZkLCBF bGZfSW50ZXJuYWxfTm90ZSAqbm90ZSkKKyt7CisrICBzdHJ1Y3Qgc2R0X25vdGUgKmN1ciA9Cisr ICAgIChzdHJ1Y3Qgc2R0X25vdGUgKikgYmZkX2FsbG9jIChhYmZkLCBzaXplb2YgKHN0cnVjdCBz ZHRfbm90ZSkKKysJCQkJICAgKyBub3RlLT5kZXNjc3opOworKworKyAgY3VyLT5uZXh0ID0gKHN0 cnVjdCBzZHRfbm90ZSAqKSAoZWxmX3RkYXRhIChhYmZkKSktPnNkdF9ub3RlX2hlYWQ7CisrICBj dXItPnNpemUgPSAoYmZkX3NpemVfdHlwZSkgbm90ZS0+ZGVzY3N6OworKyAgbWVtY3B5IChjdXIt PmRhdGEsIG5vdGUtPmRlc2NkYXRhLCBub3RlLT5kZXNjc3opOworKworKyAgZWxmX3RkYXRhIChh YmZkKS0+c2R0X25vdGVfaGVhZCA9IGN1cjsKKysKKysgIHJldHVybiBUUlVFOworK30KKysKKytz dGF0aWMgYmZkX2Jvb2xlYW4KKytlbGZvYmpfZ3Jva19zdGFwc2R0X25vdGUgKGJmZCAqYWJmZCwg RWxmX0ludGVybmFsX05vdGUgKm5vdGUpCisreworKyAgc3dpdGNoIChub3RlLT50eXBlKQorKyAg ICB7CisrICAgIGNhc2UgU0RUX05PVEVfVFlQRToKKysgICAgICByZXR1cm4gZWxmb2JqX2dyb2tf c3RhcHNkdF9ub3RlXzEgKGFiZmQsIG5vdGUpOworKworKyAgICBkZWZhdWx0OgorKyAgICAgIHJl dHVybiBUUlVFOworKyAgICB9CisrfQorKworIHN0YXRpYyBiZmRfYm9vbGVhbgorIGVsZmNvcmVf bmV0YnNkX2dldF9sd3BpZCAoRWxmX0ludGVybmFsX05vdGUgKm5vdGUsIGludCAqbHdwaWRwKQor IHsKK0BAIC05MTg5LDYgKzkyMjAsMTIgQEAgZWxmX3BhcnNlX25vdGVzIChiZmQgKmFiZmQsIGNo YXIgKmJ1Ziwgc2l6ZV90IHNpemUsIGZpbGVfcHRyIG9mZnNldCkKKyAJICAgICAgaWYgKCEgZWxm b2JqX2dyb2tfZ251X25vdGUgKGFiZmQsICZpbikpCisgCQlyZXR1cm4gRkFMU0U7CisgCSAgICB9 CisrCSAgZWxzZSBpZiAoaW4ubmFtZXN6ID09IHNpemVvZiAic3RhcHNkdCIKKysJCSAgICYmIHN0 cmNtcCAoaW4ubmFtZWRhdGEsICJzdGFwc2R0IikgPT0gMCkKKysJICAgIHsKKysJICAgICAgaWYg KCEgZWxmb2JqX2dyb2tfc3RhcHNkdF9ub3RlIChhYmZkLCAmaW4pKQorKwkJcmV0dXJuIEZBTFNF OworKwkgICAgfQorIAkgIGJyZWFrOworIAl9CisgCiBkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxl LmluIGIvZ2RiL01ha2VmaWxlLmluCi1pbmRleCAwMGQ2MjRmLi42MzVhY2QzIDEwMDY0NAoraW5k ZXggNDg5YjFlOS4uYzMzMmIxYiAxMDA2NDQKIC0tLSBhL2dkYi9NYWtlZmlsZS5pbgogKysrIGIv Z2RiL01ha2VmaWxlLmluCi1AQCAtODA4LDcgKzgwOCw4IEBAIGFubm90YXRlLmggc2ltLXJlZ25v LmggZGljdGlvbmFyeS5oIGRmcC5oIG1haW4uaCBmcmFtZS11bndpbmQuaAlcCitAQCAtNzE2LDgg KzcxNiw4IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFuZy5jIGFkYS10eXBlcHJpbnQuYyBh ZGEtdmFscHJpbnQuYyBhZGEtdGFza3MuYyBcCisgCXNlbnRpbmVsLWZyYW1lLmMgXAorIAlzZXJp YWwuYyBzZXItYmFzZS5jIHNlci11bml4LmMgXAorIAlzb2xpYi5jIHNvbGliLXRhcmdldC5jIHNv dXJjZS5jIFwKKy0Jc3RhYnNyZWFkLmMgc3RhY2suYyBzdGQtcmVncy5jIHN5bWZpbGUuYyBzeW1m aWxlLW1lbS5jIHN5bW1pc2MuYyBcCistCXN5bXRhYi5jIFwKKysJc3RhYnNyZWFkLmMgc3RhY2su YyBzdGFwLXByb2JlLmMgc3RkLXJlZ3MuYyBcCisrCXN5bWZpbGUuYyBzeW1maWxlLW1lbS5jIHN5 bW1pc2MuYyBzeW10YWIuYyBcCisgCXRhcmdldC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0YXJn ZXQtbWVtb3J5LmMgXAorIAl0aHJlYWQuYyB0b3AuYyB0cmFjZXBvaW50LmMgXAorIAl0cmFkLWZy YW1lLmMgXAorQEAgLTgwMSw3ICs4MDEsOCBAQCBhbm5vdGF0ZS5oIHNpbS1yZWduby5oIGRpY3Rp b25hcnkuaCBkZnAuaCBtYWluLmggZnJhbWUtdW53aW5kLmgJXAogIHJlbW90ZS1maWxlaW8uaCBp Mzg2LWxpbnV4LXRkZXAuaCB2YXgtdGRlcC5oIG9iamMtbGFuZy5oIFwKICBzZW50aW5lbC1mcmFt ZS5oIGJjYWNoZS5oIHN5bWZpbGUuaCB3aW5kb3dzLXRkZXAuaCBsaW51eC10ZGVwLmggXAogIGdk Yl91c2xlZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5oIG1pY3JvYmxhemUtdGRlcC5oIFwKQEAgLTI3 LDcgKzEyMSwxNiBAQCBpbmRleCAwMGQ2MjRmLi42MzVhY2QzIDEwMDY0NAogIAogICMgSGVhZGVy IGZpbGVzIHRoYXQgYWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4g b2JqZGlyLgogIAotQEAgLTEzMTcsNiArMTMxOCwxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29u ZmlnLmluIGNvbmZpZy5zdGF0dXMKK0BAIC04ODYsNyArODg3LDcgQEAgQ09NTU9OX09CUyA9ICQo REVQRklMRVMpICQoQ09ORklHX09CUykgJChZWU9CSikgXAorIAlwcm9sb2d1ZS12YWx1ZS5vIG1l bW9yeS1tYXAubyBtZW1yYW5nZS5vIHhtbC1zdXBwb3J0Lm8geG1sLXN5c2NhbGwubyBcCisgCXRh cmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQtbWVtb3J5Lm8geG1sLXRkZXNjLm8geG1sLWJ1aWx0 aW4ubyBcCisgCWluZmVyaW9yLm8gb3NkYXRhLm8gZ2RiX3VzbGVlcC5vIHJlY29yZC5vIGdjb3Jl Lm8gXAorLQlqaXQubyBwcm9nc3BhY2UubworKwlqaXQubyBwcm9nc3BhY2UubyBzdGFwLXByb2Jl Lm8KKyAKKyBUU09CUyA9IGluZmxvdy5vCisgCitAQCAtMTMwNyw2ICsxMzA4LDEyIEBAIHN0YW1w LWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1cwogIAkgIENPTkZJR19MSU5LUz0g XAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAgLTQwLDExICsxNDMsMjYgQEAgaW5k ZXggMDBkNjI0Zi4uNjM1YWNkMyAxMDA2NDQKICBjb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29u ZmlndXJlIGNvbmZpZ3VyZS50Z3QgY29uZmlndXJlLmhvc3QKICAJJChTSEVMTCkgY29uZmlnLnN0 YXR1cyAtLXJlY2hlY2sKICAKK2RpZmYgLS1naXQgYS9nZGIvTkVXUyBiL2dkYi9ORVdTCitpbmRl eCBmZWViZjYxLi4yNzlhMWM5IDEwMDY0NAorLS0tIGEvZ2RiL05FV1MKKysrKyBiL2dkYi9ORVdT CitAQCAtMzYsNiArMzYsMTAgQEAKKyAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIE9wZW5DTCBD IGxhbmd1YWdlIChodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5jbCkKKyAgIGhhcyBiZWVuIGlu dGVncmF0ZWQgaW50byBHREIuCisgCisrKiBHREIgbm93IGhhcyBzdXBwb3J0IGZvciBTeXN0ZW1U YXAgPHN5cy9zZHQuaD4gcHJvYmVzLiAgWW91IGNhbiBzZXQgYQorKyAgYnJlYWtwb2ludCB1c2lu ZyB0aGUgbmV3ICJwcm9iZToiIGxpbmVzcGVjIGFuZCBpbnNwZWN0IHRoZSBwcm9iZQorKyAgYXJn dW1lbnRzIHVzaW5nIHRoZSBuZXcgJF9wcm9iZV9hcmcgZmFtaWx5IG9mIGNvbnZlbmllbmNlIHZh cmlhYmxlcy4KKysKKyAqIFB5dGhvbiBzY3JpcHRpbmcKKyAKKyAgICoqIFBhcmFtZXRlcnMgY2Fu IG5vdyBiZSBiZSBzdWItY2xhc3NlZCBpbiBQeXRob24sIGFuZCBpbiBwYXJ0aWN1bGFyCiBkaWZm IC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMgYi9nZGIvYWRhLWxhbmcuYwotaW5kZXggZDBhMTAxNC4u MzI1MzdjYiAxMDA2NDQKK2luZGV4IGVkNTFhYjAuLjY4NTE4MTAgMTAwNjQ0CiAtLS0gYS9nZGIv YWRhLWxhbmcuYwogKysrIGIvZ2RiL2FkYS1sYW5nLmMKLUBAIC0xMTM4OSw2ICsxMTM4OSw3IEBA IGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBw YywgaW50ICpvcGxlbnAsCitAQCAtMTEzOTAsNiArMTEzOTAsNyBAQCBhZGFfb3BlcmF0b3JfbGVu Z3RoIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcGMsIGludCAqb3BsZW5wLAog IAogIHN0YXRpYyBpbnQKICBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpl eHAsIGludCBwb3MsCkBAIC01Miw3ICsxNzAsNyBAQCBpbmRleCBkMGExMDE0Li4zMjUzN2NiIDEw MDY0NAogIAkJICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCB2b2lkICpkYXRhKSwKICAJCSAgICB2b2lkICpkYXRhKQogIHsKLUBAIC0xMTQwMywxMiArMTE0 MDQsMTUgQEAgYWRhX29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQg cG9zLAorQEAgLTExNDA0LDEyICsxMTQwNSwxNSBAQCBhZGFfb3BlcmF0b3JfY2hlY2sgKHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCWJyZWFrOwogIAogICAgICAgIGRlZmF1bHQ6 CkBAIC0yOTIsNiArNDEwLDI5IEBAIGluZGV4IGE4NjlmODUuLmM1OWRhYTAgMTAwNjQ0CiAgfQog IAwKICAKK2RpZmYgLS1naXQgYS9nZGIvYXgtZ2RiLmMgYi9nZGIvYXgtZ2RiLmMKK2luZGV4IGQx NzM2ZTEuLjNlNTQ3MTYgMTAwNjQ0CistLS0gYS9nZGIvYXgtZ2RiLmMKKysrKyBiL2dkYi9heC1n ZGIuYworQEAgLTIwMDEsNyArMjAwMSw4IEBAIGdlbl9leHByIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCB1bmlvbiBleHBfZWxlbWVudCAqKnBjLAorIAorICAgICBjYXNlIE9QX0lOVEVSTkFMVkFS OgorICAgICAgIHsKKy0JY29uc3QgY2hhciAqbmFtZSA9IGludGVybmFsdmFyX25hbWUgKCgqcGMp WzFdLmludGVybmFsdmFyKTsKKysJc3RydWN0IGludGVybmFsdmFyICp2YXIgPSAoKnBjKVsxXS5p bnRlcm5hbHZhcjsKKysJY29uc3QgY2hhciAqbmFtZSA9IGludGVybmFsdmFyX25hbWUgKHZhcik7 CisgCXN0cnVjdCB0cmFjZV9zdGF0ZV92YXJpYWJsZSAqdHN2OworIAorIAkoKnBjKSArPSAzOwor QEAgLTIwMTUsNyArMjAxNiw3IEBAIGdlbl9leHByIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCB1 bmlvbiBleHBfZWxlbWVudCAqKnBjLAorIAkgICAgdmFsdWUtPmtpbmQgPSBheHNfcnZhbHVlOwor IAkgICAgdmFsdWUtPnR5cGUgPSBidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5f bG9uZ19sb25nOworIAkgIH0KKy0JZWxzZQorKwllbHNlIGlmICghIGNvbXBpbGVfaW50ZXJuYWx2 YXJfdG9fYXggKHZhciwgYXgsIHZhbHVlKSkKKyAJICBlcnJvciAoXygiJCVzIGlzIG5vdCBhIHRy YWNlIHN0YXRlIHZhcmlhYmxlOyBHREIgYWdlbnQgIgorIAkJICAgImV4cHJlc3Npb25zIGNhbm5v dCB1c2UgY29udmVuaWVuY2UgdmFyaWFibGVzLiIpLCBuYW1lKTsKKyAgICAgICB9CiBkaWZmIC0t Z2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYwogaW5kZXggNzc2YWU1My4uMzU0NGNmMiAx MDA2NDQKIC0tLSBhL2dkYi9ibG9jay5jCkBAIC0zMzAsMTAgKzQ3MSwxMCBAQCBpbmRleCAwN2Q1 YmM3Li5mYWQ4OWIxIDEwMDY0NAogKwogICNlbmRpZiAvKiBCTE9DS19IICovCiBkaWZmIC0tZ2l0 IGEvZ2RiL2Jsb2NrZnJhbWUuYyBiL2dkYi9ibG9ja2ZyYW1lLmMKLWluZGV4IGI5YWFmNTQuLmUx ZjMyNDIgMTAwNjQ0CitpbmRleCA1YmM1OTMwLi4zYjU0NmE3IDEwMDY0NAogLS0tIGEvZ2RiL2Js b2NrZnJhbWUuYwogKysrIGIvZ2RiL2Jsb2NrZnJhbWUuYwotQEAgLTE2MCw2ICsxNjAsNyBAQCBz dGF0aWMgQ09SRV9BRERSIGNhY2hlX3BjX2Z1bmN0aW9uX2xvdyA9IDA7CitAQCAtMTYzLDYgKzE2 Myw3IEBAIHN0YXRpYyBDT1JFX0FERFIgY2FjaGVfcGNfZnVuY3Rpb25fbG93ID0gMDsKICBzdGF0 aWMgQ09SRV9BRERSIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwogIHN0YXRpYyBjaGFyICpj YWNoZV9wY19mdW5jdGlvbl9uYW1lID0gMDsKICBzdGF0aWMgc3RydWN0IG9ial9zZWN0aW9uICpj YWNoZV9wY19mdW5jdGlvbl9zZWN0aW9uID0gTlVMTDsKQEAgLTM0MSw3ICs0ODIsNyBAQCBpbmRl eCBiOWFhZjU0Li5lMWYzMjQyIDEwMDY0NAogIAogIC8qIENsZWFyIGNhY2hlLCBlLmcuIHdoZW4g c3ltYm9sIHRhYmxlIGlzIGRpc2NhcmRlZC4gICovCiAgCi1AQCAtMTcwLDYgKzE3MSw3IEBAIGNs ZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKQorQEAgLTE3Myw2ICsxNzQsNyBAQCBjbGVhcl9w Y19mdW5jdGlvbl9jYWNoZSAodm9pZCkKICAgIGNhY2hlX3BjX2Z1bmN0aW9uX2hpZ2ggPSAwOwog ICAgY2FjaGVfcGNfZnVuY3Rpb25fbmFtZSA9IChjaGFyICopIDA7CiAgICBjYWNoZV9wY19mdW5j dGlvbl9zZWN0aW9uID0gTlVMTDsKQEAgLTM0OSwxNiArNDkwLDM0IEBAIGluZGV4IGI5YWFmNTQu LmUxZjMyNDIgMTAwNjQ0CiAgfQogIAogIC8qIEZpbmRzIHRoZSAiZnVuY3Rpb24iICh0ZXh0IHN5 bWJvbCkgdGhhdCBpcyBzbWFsbGVyIHRoYW4gUEMgYnV0Ci1AQCAtMTg1LDcgKzE4Nyw3IEBAIGNs ZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKQorQEAgLTE4MCwxNyArMTgyLDE5IEBAIGNsZWFy X3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKQorICAgICpOQU1FIGFuZC9vciAqQUREUkVTUyBjb25k aXRpb25hbGx5IGlmIHRoYXQgcG9pbnRlciBpcyBub24tbnVsbC4KKyAgICBJZiBFTkRBRERSIGlz IG5vbi1udWxsLCB0aGVuIHNldCAqRU5EQUREUiB0byBiZSB0aGUgZW5kIG9mIHRoZQorICAgIGZ1 bmN0aW9uIChleGNsdXNpdmUpLCBidXQgcGFzc2luZyBFTkRBRERSIGFzIG5vbi1udWxsIG1lYW5z IHRoYXQKKy0gICB0aGUgZnVuY3Rpb24gbWlnaHQgY2F1c2Ugc3ltYm9scyB0byBiZSByZWFkLiAg VGhpcyBmdW5jdGlvbiBlaXRoZXIKKy0gICBzdWNjZWVkcyBvciBmYWlscyAobm90IGhhbGZ3YXkg c3VjY2VlZHMpLiAgSWYgaXQgc3VjY2VlZHMsIGl0IHNldHMKKy0gICAqTkFNRSwgKkFERFJFU1Ms IGFuZCAqRU5EQUREUiB0byByZWFsIGluZm9ybWF0aW9uIGFuZCByZXR1cm5zIDEuCistICAgSWYg aXQgZmFpbHMsIGl0IHNldHMgKk5BTUUsICpBRERSRVNTLCBhbmQgKkVOREFERFIgdG8gemVybyBh bmQKKy0gICByZXR1cm5zIDAuICAqLworKyAgIHRoZSBmdW5jdGlvbiBtaWdodCBjYXVzZSBzeW1i b2xzIHRvIGJlIHJlYWQuICBJZiBJU19HTlVfSUZVTkNfUCBpcyBwcm92aWRlZAorKyAgICpJU19H TlVfSUZVTkNfUCBpcyBzZXQgdG8gMSBvbiByZXR1cm4gaWYgdGhlIGZ1bmN0aW9uIGlzIFNUVF9H TlVfSUZVTkMuCisrICAgVGhpcyBmdW5jdGlvbiBlaXRoZXIgc3VjY2VlZHMgb3IgZmFpbHMgKG5v dCBoYWxmd2F5IHN1Y2NlZWRzKS4gIElmIGl0CisrICAgc3VjY2VlZHMsIGl0IHNldHMgKk5BTUUs ICpBRERSRVNTLCBhbmQgKkVOREFERFIgdG8gcmVhbCBpbmZvcm1hdGlvbiBhbmQKKysgICByZXR1 cm5zIDEuICBJZiBpdCBmYWlscywgaXQgc2V0cyAqTkFNRSwgKkFERFJFU1MsICpFTkRBRERSIGFu ZAorKyAgICpJU19HTlVfSUZVTkNfUCB0byB6ZXJvIGFuZCByZXR1cm5zIDAuICAqLwogIAogIC8q IEJhY2t3YXJkIGNvbXBhdGliaWxpdHksIG5vIHNlY3Rpb24gYXJndW1lbnQuICAqLwogIAotLWlu dAotK2VudW0gZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX3R5cGUKLSBmaW5kX3BjX3BhcnRpYWxf ZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hhciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywK LSAJCQkgIENPUkVfQUREUiAqZW5kYWRkcikKKyBpbnQKKy1maW5kX3BjX3BhcnRpYWxfZnVuY3Rp b24gKENPUkVfQUREUiBwYywgY2hhciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKKy0JCQkg IENPUkVfQUREUiAqZW5kYWRkcikKKytmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb25fZ251X2lmdW5j IChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLAorKwkJCQkgICAgQ09SRV9BRERSICphZGRyZXNz LCBDT1JFX0FERFIgKmVuZGFkZHIsCisrCQkJCSAgICBpbnQgKmlzX2dudV9pZnVuY19wKQogIHsK LUBAIC0yMzcsNiArMjM5LDcgQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIg cGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisgICBzdHJ1Y3Qgb2JqX3NlY3Rp b24gKnNlY3Rpb247CisgICBzdHJ1Y3Qgc3ltYm9sICpmOworQEAgLTI0MCw2ICsyNDQsNyBAQCBm aW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiBwYywgY2hhciAqKm5hbWUsIENPUkVf QUREUiAqYWRkcmVzcywKICAJICBjYWNoZV9wY19mdW5jdGlvbl9oaWdoID0gQkxPQ0tfRU5EIChT WU1CT0xfQkxPQ0tfVkFMVUUgKGYpKTsKICAJICBjYWNoZV9wY19mdW5jdGlvbl9uYW1lID0gU1lN Qk9MX0xJTktBR0VfTkFNRSAoZik7CiAgCSAgY2FjaGVfcGNfZnVuY3Rpb25fc2VjdGlvbiA9IHNl Y3Rpb247CkBAIC0zNjYsMTIgKzUyNSwxMyBAQCBpbmRleCBiOWFhZjU0Li5lMWYzMjQyIDEwMDY0 NAogIAkgIGdvdG8gcmV0dXJuX2NhY2hlZF92YWx1ZTsKICAJfQogICAgICB9Ci1AQCAtMjU5LDEy ICsyNjIsMTMgQEAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIg KipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCitAQCAtMjYyLDEyICsyNjcsMTUgQEAgZmluZF9w Y19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIg KmFkZHJlc3MsCiAgCSphZGRyZXNzID0gMDsKICAgICAgICBpZiAoZW5kYWRkciAhPSBOVUxMKQog IAkqZW5kYWRkciA9IDA7Ci0tICAgICAgcmV0dXJuIDA7Ci0rICAgICAgcmV0dXJuIEZJTkRfUENf UEFSVElBTF9GVU5DVElPTl9OT1RfRk9VTkQ7CisrICAgICAgaWYgKGlzX2dudV9pZnVuY19wICE9 IE5VTEwpCisrCSppc19nbnVfaWZ1bmNfcCA9IDA7CisgICAgICAgcmV0dXJuIDA7CiAgICAgIH0K ICAKICAgIGNhY2hlX3BjX2Z1bmN0aW9uX2xvdyA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3lt Ym9sKTsKQEAgLTM4MSwyOSArNTQxLDQzIEBAIGluZGV4IGI5YWFmNTQuLmUxZjMyNDIgMTAwNjQ0 CiAgCiAgICAvKiBJZiB0aGUgbWluaW1hbCBzeW1ib2wgaGFzIGEgc2l6ZSwgdXNlIGl0IGZvciB0 aGUgY2FjaGUuCiAgICAgICBPdGhlcndpc2UgdXNlIHRoZSBsZXNzZXIgb2YgdGhlIG5leHQgbWlu aW1hbCBzeW1ib2wgaW4gdGhlIHNhbWUKLUBAIC0zMjcsNyArMzMxLDggQEAgZmluZF9wY19wYXJ0 aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJl c3MsCitAQCAtMzMwLDkgKzMzOCwyMiBAQCBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVf QUREUiBwYywgY2hhciAqKm5hbWUsIENPUkVfQUREUiAqYWRkcmVzcywKICAJKmVuZGFkZHIgPSBj YWNoZV9wY19mdW5jdGlvbl9oaWdoOwogICAgICB9CiAgCi0tICByZXR1cm4gMTsKLSsgIHJldHVy biBjYWNoZV9wY19mdW5jdGlvbl9pc19nbnVfaWZ1bmMgPyBGSU5EX1BDX1BBUlRJQUxfRlVOQ1RJ T05fR05VX0lGVU5DCi0rCQkJCQk6IEZJTkRfUENfUEFSVElBTF9GVU5DVElPTl9OT1JNQUw7Cisr ICBpZiAoaXNfZ251X2lmdW5jX3ApCisrICAgICppc19nbnVfaWZ1bmNfcCA9IGNhY2hlX3BjX2Z1 bmN0aW9uX2lzX2dudV9pZnVuYzsKKysKKyAgIHJldHVybiAxOwogIH0KICAKKysvKiBTZWUgZmlu ZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX2dudV9pZnVuYywgb25seSB0aGUgSVNfR05VX0lGVU5DX1Ag cGFyYW1ldGVyCisrICAgaXMgb21pdHRlZCBoZXJlIGZvciBiYWNrd2FyZCBBUEkgY29tcGF0aWJp bGl0eS4gICovCisrCisraW50CisrZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChDT1JFX0FERFIg cGMsIGNoYXIgKipuYW1lLCBDT1JFX0FERFIgKmFkZHJlc3MsCisrCQkJICBDT1JFX0FERFIgKmVu ZGFkZHIpCisreworKyAgcmV0dXJuIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbl9nbnVfaWZ1bmMg KHBjLCBuYW1lLCBhZGRyZXNzLCBlbmRhZGRyLCBOVUxMKTsKKyt9CisrCiAgLyogUmV0dXJuIHRo ZSBpbm5lcm1vc3Qgc3RhY2sgZnJhbWUgZXhlY3V0aW5nIGluc2lkZSBvZiBCTE9DSywgb3IgTlVM TAorICAgIGlmIHRoZXJlIGlzIG5vIHN1Y2ggZnJhbWUuICBJZiBCTE9DSyBpcyBOVUxMLCBqdXN0 IHJldHVybiBOVUxMLiAgKi8KKyAKIGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2Ri L2JyZWFrcG9pbnQuYwotaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKK2luZGV4IGM1NWU1 YzAuLjFhNzFjZjggMTAwNjQ0CiAtLS0gYS9nZGIvYnJlYWtwb2ludC5jCiArKysgYi9nZGIvYnJl YWtwb2ludC5jCi1AQCAtNjMsNiArNjMsNyBAQAorQEAgLTYyLDYgKzYyLDggQEAKKyAjaW5jbHVk ZSAiaml0LmgiCiAgI2luY2x1ZGUgInhtbC1zeXNjYWxsLmgiCiAgI2luY2x1ZGUgInBhcnNlci1k ZWZzLmgiCisrI2luY2x1ZGUgImdkYl9yZWdleC5oIgorKyNpbmNsdWRlICJzdGFwLXByb2JlLmgi CiAgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKLSsjaW5jbHVkZSAicmVnY2FjaGUuaCIKICAK ICAvKiByZWFkbGluZSBpbmNsdWRlIGZpbGVzICovCi0gI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRs aW5lLmgiCi1AQCAtMTA1LDYgKzEwNiw5IEBAIHN0YXRpYyB2b2lkIGJyZWFrX2NvbW1hbmRfMSAo Y2hhciAqLCBpbnQsIGludCk7CitAQCAtMTA2LDYgKzEwOCw5IEBAIHN0YXRpYyB2b2lkIGJyZWFr X2NvbW1hbmRfMSAoY2hhciAqLCBpbnQsIGludCk7CiAgCiAgc3RhdGljIHZvaWQgbWVudGlvbiAo c3RydWN0IGJyZWFrcG9pbnQgKik7CiAgCkBAIC00MTMsMjEgKzU4NywxMyBAQCBpbmRleCA1YmNh Yjg3Li41MjllYTYyIDEwMDY0NAogIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBnZGJ0ayBz b3VyY2VzIGFuZCB0aHVzIGNhbiBub3QgYmUgbWFkZQogICAgIHN0YXRpYy4gICovCiAgc3RydWN0 IGJyZWFrcG9pbnQgKnNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs Ci1AQCAtMjE4LDYgKzIyMiwxMCBAQCBzdGF0aWMgdm9pZCBkaXNhYmxlX3RyYWNlX2NvbW1hbmQg KGNoYXIgKiwgaW50KTsKLSAKLSBzdGF0aWMgdm9pZCB0cmFjZV9wYXNzX2NvbW1hbmQgKGNoYXIg KiwgaW50KTsKLSAKLStzdGF0aWMgdm9pZCBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoc3RydWN0 IGJyZWFrcG9pbnQgKmIpOwotKwotK3N0YXRpYyB2b2lkIGdudV9pZnVuY19yZXNvbHZlcl9yZXR1 cm5fc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpOwotKwotIC8qIEFzc3VtaW5nIHdlJ3JlIGNy ZWF0aW5nIGEgc3RhdGljIHRyYWNlcG9pbnQsIGRvZXMgUyBsb29rIGxpa2UgYQotICAgIHN0YXRp YyB0cmFjZXBvaW50IG1hcmtlciBzcGVjICgiLW0gTUFSS0VSX0lEIik/ICAqLwotICNkZWZpbmUg aXNfbWFya2VyX3NwZWMocykJCQkJCQlcCi1AQCAtMTE0OSw2ICsxMTU3LDIyIEBAIHdhdGNocG9p bnRfaW5fdGhyZWFkX3Njb3BlIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC0xMTU4LDYgKzEx NjMsMjUgQEAgd2F0Y2hwb2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpi KQogIAkgICAgICAmJiAhaXNfZXhlY3V0aW5nIChpbmZlcmlvcl9wdGlkKSkpOwogIH0KICAKKysv KiBTZXQgd2F0Y2hwb2ludCBCIHRvIGRpc3BfZGVsX2F0X25leHRfc3RvcCwgZXZlbiBpbmNsdWRp bmcgaXRzIHBvc3NpYmxlCisrICAgYXNzb2NpYXRlZCBicF93YXRjaHBvaW50X3Njb3BlIGJyZWFr cG9pbnQuICAqLworKwogK3N0YXRpYyB2b2lkCiArd2F0Y2hwb2ludF9kZWxfYXRfbmV4dF9zdG9w IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICt7CkBAIC00NDcsNyArNjEzLDcgQEAgaW5kZXggNWJj YWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAvKiBBc3N1bWluZyB0aGF0IEIgaXMgYSB3YXRjaHBvaW50 OgogICAgIC0gUmVwYXJzZSB3YXRjaHBvaW50IGV4cHJlc3Npb24sIGlmIFJFUEFSU0UgaXMgbm9u LXplcm8KICAgICAtIEV2YWx1YXRlIGV4cHJlc3Npb24gYW5kIHN0b3JlIHRoZSByZXN1bHQgaW4g Qi0+dmFsCi1AQCAtMTIwOCwxMiArMTIzMiwxNyBAQCB1cGRhdGVfd2F0Y2hwb2ludCAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsIGludCByZXBhcnNlKQorQEAgLTEyMTcsMTIgKzEyNDEsMTcgQEAgdXBk YXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKICAgIHN0 cnVjdCBmcmFtZV9pZCBzYXZlZF9mcmFtZV9pZDsKICAgIGludCBmcmFtZV9zYXZlZDsKICAKQEAg LTQ2NSw3ICs2MzEsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogICAgaWYgKGIt PmRpc3Bvc2l0aW9uID09IGRpc3BfZGVsX2F0X25leHRfc3RvcCkKICAgICAgcmV0dXJuOwogICAK LUBAIC0xNDQzLDEzICsxNDcyLDcgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3Bv aW50ICpiLCBpbnQgcmVwYXJzZSkKK0BAIC0xNDUyLDEzICsxNDgxLDcgQEAgdXBkYXRlX3dhdGNo cG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKICBXYXRjaHBvaW50ICVk IGRlbGV0ZWQgYmVjYXVzZSB0aGUgcHJvZ3JhbSBoYXMgbGVmdCB0aGUgYmxvY2tcblwKICBpbiB3 aGljaCBpdHMgZXhwcmVzc2lvbiBpcyB2YWxpZC5cbiIpLAogIAkJICAgICAgIGItPm51bWJlcik7 CkBAIC00ODAsNyArNjQ2LDQyIEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgICAg IH0KICAKICAgIC8qIFJlc3RvcmUgdGhlIHNlbGVjdGVkIGZyYW1lLiAgKi8KLUBAIC0xODQwLDYg KzE4NjMsNyBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCitAQCAtMTUwMCw2 ICsxNTIzLDI0IEBAIHNob3VsZF9iZV9pbnNlcnRlZCAoc3RydWN0IGJwX2xvY2F0aW9uICpibCkK KyAgIHJldHVybiAxOworIH0KKyAKKysvKiBTZXQgb3IgY2xlYXIgYSBTeXN0ZW1UYXAgc2VtYXBo b3JlLiAgQVJDSCBpcyB0aGUgdGFyZ2V0CisrICAgYXJjaGl0ZWN0dXJlOyBBRERSRVNTIGlzIHRo ZSBhZGRyZXNzIG9mIHRoZSBzZW1hcGhvcmUsIGFuZCBTRVRUSU5HCisrICAgaXMgZWl0aGVyIHpl cm8gb3Igb25lLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK21vZGlmeV9zZW1hcGhvcmUgKHN0cnVj dCBnZGJhcmNoICphcmNoLCBDT1JFX0FERFIgYWRkcmVzcywgaW50IHNldHRpbmcpCisreworKyAg Z2RiX2J5dGUgYnl0ZXNbc2l6ZW9mIChMT05HRVNUKV07CisrICAvKiBUaGUgQUJJIHNwZWNpZmll cyAidW5zaWduZWQgc2hvcnQiLiAgKi8KKysgIHN0cnVjdCB0eXBlICp0eXBlID0gYnVpbHRpbl90 eXBlIChhcmNoKS0+YnVpbHRpbl91bnNpZ25lZF9zaG9ydDsKKysKKysgIHN0b3JlX3Vuc2lnbmVk X2ludGVnZXIgKGJ5dGVzLCBUWVBFX0xFTkdUSCAodHlwZSksCisrCQkJICBnZGJhcmNoX2J5dGVf b3JkZXIgKGFyY2gpLCBzZXR0aW5nKTsKKysKKysgIC8qIElnbm9yZSBlcnJvcnMuICBGSVhNRS4g ICovCisrICB0YXJnZXRfd3JpdGVfbWVtb3J5IChhZGRyZXNzLCBieXRlcywgVFlQRV9MRU5HVEgg KHR5cGUpKTsKKyt9CisrCisgLyogSW5zZXJ0IGEgbG93LWxldmVsICJicmVha3BvaW50IiBvZiBz b21lIHR5cGUuICBCTCBpcyB0aGUgYnJlYWtwb2ludAorICAgIGxvY2F0aW9uLiAgQW55IGVycm9y IG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIFRNUF9FUlJPUl9TVFJFQU07IGFuZAorICAgIERJU0FC TEVEX0JSRUFLUywgYW5kIEhXX0JSRUFLUE9JTlRfRVJST1IgYXJlIHVzZWQgdG8gcmVwb3J0IHBy b2JsZW1zLgorQEAgLTE1OTUsNiArMTYzNiw5IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3RydWN0 IGJwX2xvY2F0aW9uICpibCwKKyAJICBlbHNlCisgCSAgICB2YWwgPSB0YXJnZXRfaW5zZXJ0X2Jy ZWFrcG9pbnQgKGJsLT5nZGJhcmNoLAorIAkJCQkJICAgICZibC0+dGFyZ2V0X2luZm8pOworKwor KwkgIGlmIChibC0+c2VtYXBob3JlICE9IDApCisrCSAgICBtb2RpZnlfc2VtYXBob3JlIChibC0+ Z2RiYXJjaCwgYmwtPnNlbWFwaG9yZSwgMSk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0x ODQ5LDYgKzE4OTMsNyBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCiAgICBp bnQgdmFsID0gMDsKICAgIGludCBkaXNhYmxlZF9icmVha3MgPSAwOwogICAgaW50IGh3X2JyZWFr cG9pbnRfZXJyb3IgPSAwOwpAQCAtNDg4LDcgKzY4OSw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVh NjIgMTAwNjQ0CiAgCiAgICBzdHJ1Y3QgdWlfZmlsZSAqdG1wX2Vycm9yX3N0cmVhbSA9IG1lbV9m aWxlb3BlbiAoKTsKICAgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cF91 aV9maWxlX2RlbGV0ZSAodG1wX2Vycm9yX3N0cmVhbSk7Ci1AQCAtMTg2Nyw5ICsxODkxLDEzIEBA IGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xODc2LDkgKzE5MjEsMTMg QEAgaW5zZXJ0X2JyZWFrcG9pbnRfbG9jYXRpb25zICh2b2lkKQogICAgICAgIC8qIEZvciB0YXJn ZXRzIHRoYXQgc3VwcG9ydCBnbG9iYWwgYnJlYWtwb2ludHMsIHRoZXJlJ3Mgbm8gbmVlZAogIAkg dG8gc2VsZWN0IGFuIGluZmVyaW9yIHRvIGluc2VydCBicmVha3BvaW50IHRvLiAgSW4gZmFjdCwg ZXZlbgogIAkgaWYgd2UgYXJlbid0IGF0dGFjaGVkIHRvIGFueSBwcm9jZXNzIHlldCwgd2Ugc2hv dWxkIHN0aWxsCkBAIC01MDQsNyArNzA1LDcgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2 NDQKICAJY29udGludWU7CiAgCiAgICAgICAgdmFsID0gaW5zZXJ0X2JwX2xvY2F0aW9uIChibCwg dG1wX2Vycm9yX3N0cmVhbSwgJmRpc2FibGVkX2JyZWFrcywKLUBAIC0xODkzLDEzICsxOTIxLDE5 IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKK0BAIC0xOTAyLDEzICsxOTUx LDE5IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0aW9ucyAodm9pZCkKICAKICAgICAgICBpZiAo YnB0LT5kaXNwb3NpdGlvbiA9PSBkaXNwX2RlbF9hdF9uZXh0X3N0b3ApCiAgCWNvbnRpbnVlOwpA QCAtNTMwLDcgKzczMSwxMDQgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAg ICBpZiAoc29tZV9mYWlsZWQpCiAgCXsKICAJICBmb3IgKGxvYyA9IGJwdC0+bG9jOyBsb2M7IGxv YyA9IGxvYy0+bmV4dCkKLUBAIC0zNDc5LDYgKzM1MTMsOCBAQCBwcmludF9pdF90eXBpY2FsIChi cHN0YXQgYnMpCitAQCAtMjA5MCwxNSArMjE0NSwyNCBAQCBzdHJ1Y3QgYnJlYWtwb2ludF9vYmpm aWxlX2RhdGEKKyAgIC8qIE1pbmltYWwgc3ltYm9sKHMpIGZvciAibG9uZ2ptcCIsICJzaWdsb25n am1wIiwgZXRjLiAoaWYgYW55KS4gICovCisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvbmdq bXBfbXN5bVtOVU1fTE9OR0pNUF9OQU1FU107CisgCisrICAvKiBTeXN0ZW1UYXAgcHJvYmUgcG9p bnQgZm9yIGxvbmdqbXAgKGlmIGFueSkuICAqLworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUg KmxvbmdqbXBfcHJvYmU7CisrCisgICAvKiBNaW5pbWFsIHN5bWJvbCBmb3IgInN0ZDo6dGVybWlu YXRlKCkiIChpZiBhbnkpLiAgKi8KKyAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqdGVybWluYXRl X21zeW07CisgCisgICAvKiBNaW5pbWFsIHN5bWJvbCBmb3IgIl9VbndpbmRfRGVidWdIb29rIiAo aWYgYW55KS4gICovCisgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmV4Y2VwdGlvbl9tc3ltOwor KworKyAgLyogU3lzdGVtVGFwIHByb2JlIHBvaW50IGZvciB1bndpbmRpbmcgKGlmIGFueSkuICAq LworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKmV4Y2VwdGlvbl9wcm9iZTsKKyB9OworIAor IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgb2JqZmlsZV9kYXRhICpicmVha3BvaW50X29iamZpbGVfa2V5 OworIAorKy8qIFN5c3RlbVRhcCBwcm9iZSBub3QgZm91bmQgc2VudGluZWwuICAqLworK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSBwcm9iZV9ub3RfZm91bmQ7CisrCisgLyogTWluaW1h bCBzeW1ib2wgbm90IGZvdW5kIHNlbnRpbmVsLiAgKi8KKyBzdGF0aWMgc3RydWN0IG1pbmltYWxf c3ltYm9sIG1zeW1fbm90X2ZvdW5kOworIAorQEAgLTIyMDYsNiArMjI3MCwyOSBAQCBjcmVhdGVf bG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAodm9pZCkKKyAKKyAgICAgICBicF9vYmpmaWxlX2Rh dGEgPSBnZXRfYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEgKG9iamZpbGUpOworIAorKyAgICAgIGlm IChicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUgIT0gJnByb2JlX25vdF9mb3VuZCkKKysJ eworKwkgIGlmIChicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUgPT0gTlVMTCkKKysJICAg IGJwX29iamZpbGVfZGF0YS0+bG9uZ2ptcF9wcm9iZQorKwkgICAgICA9IGZpbmRfcHJvYmVfaW5f b2JqZmlsZSAob2JqZmlsZSwgImxpYmMiLCAibG9uZ2ptcCIpOworKworKwkgIGlmIChicF9vYmpm aWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUpCisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBicmVha3Bv aW50ICpiOworKwkgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2Fy Y2ggKG9iamZpbGUpOworKworKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQg KGdkYmFyY2gsCisrCQkJCQkgICAgICBicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmUtPmFk ZHJlc3MsCisrCQkJCQkgICAgICBicF9sb25nam1wX21hc3Rlcik7CisrCSAgICAgIGItPmFkZHJf c3RyaW5nID0geHN0cmR1cCAoInByb2JlOmxpYmM6bG9uZ2ptcCIpOworKwkgICAgICBiLT5lbmFi bGVfc3RhdGUgPSBicF9kaXNhYmxlZDsKKysKKysJICAgICAgY29udGludWU7CisrCSAgICB9Cisr CSAgZWxzZQorKwkgICAgYnBfb2JqZmlsZV9kYXRhLT5sb25nam1wX3Byb2JlID0gJnByb2JlX25v dF9mb3VuZDsKKysJfQorKworICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fTE9OR0pNUF9OQU1F UzsgaSsrKQorIAl7CisgCSAgc3RydWN0IGJyZWFrcG9pbnQgKmI7CitAQCAtMjMxNCw2ICsyNDAx LDMxIEBAIGNyZWF0ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCisgCisgICAg ICAgYnBfb2JqZmlsZV9kYXRhID0gZ2V0X2JyZWFrcG9pbnRfb2JqZmlsZV9kYXRhIChvYmpmaWxl KTsKKyAKKysgICAgICAvKiBXZSBwcmVmZXIgdGhlIFN5c3RlbVRhcCBwcm9iZSBwb2ludCBpZiBp dCBleGlzdHMuICAqLworKyAgICAgIGlmIChicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9i ZSAhPSAmcHJvYmVfbm90X2ZvdW5kKQorKwl7CisrCSAgaWYgKGJwX29iamZpbGVfZGF0YS0+ZXhj ZXB0aW9uX3Byb2JlID09IE5VTEwpCisrCSAgICBicF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9w cm9iZQorKwkgICAgICA9IGZpbmRfcHJvYmVfaW5fb2JqZmlsZSAob2JqZmlsZSwgImxpYmdjYyIs ICJ1bndpbmQiKTsKKysKKysJICBpZiAoYnBfb2JqZmlsZV9kYXRhLT5leGNlcHRpb25fcHJvYmUp CisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOworKwkgICAgICBzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKworKwkgICAg ICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdkYmFyY2gsCisrCQkJCQkgICAgICBi cF9vYmpmaWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZS0+YWRkcmVzcywKKysJCQkJCSAgICAgIGJw X2V4Y2VwdGlvbl9tYXN0ZXIpOworKwkgICAgICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCJw cm9iZTpsaWJnY2M6dW53aW5kIik7CisrCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2Fi bGVkOworKwkgICAgICBjb250aW51ZTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICBicF9vYmpm aWxlX2RhdGEtPmV4Y2VwdGlvbl9wcm9iZSA9ICZwcm9iZV9ub3RfZm91bmQ7CisrCX0KKysKKysg ICAgICAvKiBPdGhlcndpc2UsIHRyeSB0aGUgaG9vayBmdW5jdGlvbi4gICovCisrCisgICAgICAg aWYgKG1zeW1fbm90X2ZvdW5kX3AgKGJwX29iamZpbGVfZGF0YS0+ZXhjZXB0aW9uX21zeW0pKQor IAljb250aW51ZTsKKyAKK0BAIC0yNTMyLDYgKzI2NDQsOSBAQCByZW1vdmVfYnJlYWtwb2ludF8x IChzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKKyAJICAgIHZh bCA9IHRhcmdldF9yZW1vdmVfaHdfYnJlYWtwb2ludCAoYmwtPmdkYmFyY2gsICZibC0+dGFyZ2V0 X2luZm8pOworIAkgIGVsc2UKKyAJICAgIHZhbCA9IHRhcmdldF9yZW1vdmVfYnJlYWtwb2ludCAo YmwtPmdkYmFyY2gsICZibC0+dGFyZ2V0X2luZm8pOworKworKwkgIGlmIChibC0+c2VtYXBob3Jl ICE9IDApCisrCSAgICBtb2RpZnlfc2VtYXBob3JlIChibC0+Z2RiYXJjaCwgYmwtPnNlbWFwaG9y ZSwgMCk7CisgCX0KKyAgICAgICBlbHNlCisgCXsKK0BAIC0zNDg4LDYgKzM2MDMsOCBAQCBwcmlu dF9pdF90eXBpY2FsIChicHN0YXQgYnMpCiAgICAgIGNhc2UgYnBfdHJhY2Vwb2ludDoKICAgICAg Y2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgpAQCAtNTM5 LDcgKzgzNyw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgICAgIGRlZmF1bHQ6 CiAgICAgICAgcmVzdWx0ID0gUFJJTlRfVU5LTk9XTjsKICAgICAgICBicmVhazsKLUBAIC0zNzA0 LDYgKzM3NDAsOCBAQCB3YXRjaHBvaW50X2NoZWNrICh2b2lkICpwKQorQEAgLTM3MTMsNiArMzgz MCw4IEBAIHdhdGNocG9pbnRfY2hlY2sgKHZvaWQgKnApCiAgICBnZGJfYXNzZXJ0IChicy0+YnJl YWtwb2ludF9hdCAhPSBOVUxMKTsKICAgIGIgPSBicy0+YnJlYWtwb2ludF9hdDsKICAKQEAgLTU0 OCw3ICs4NDYsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogICAgLyogSWYgdGhp cyBpcyBhIGxvY2FsIHdhdGNocG9pbnQsIHdlIG9ubHkgd2FudCB0byBjaGVjayBpZiB0aGUKICAg ICAgIHdhdGNocG9pbnQgZnJhbWUgaXMgaW4gc2NvcGUgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlz IHRoZSB0aHJlYWQKICAgICAgIHRoYXQgd2FzIHVzZWQgdG8gY3JlYXRlIHRoZSB3YXRjaHBvaW50 LiAgKi8KLUBAIC0zODEzLDEzICszODUxLDcgQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkK K0BAIC0zODIyLDEzICszOTQxLDcgQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKICAJCSAg ICIgZGVsZXRlZCBiZWNhdXNlIHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9jayBpblxuXAog IHdoaWNoIGl0cyBleHByZXNzaW9uIGlzIHZhbGlkLlxuIik7ICAgICAKICAKQEAgLTU2Myw3ICs4 NjEsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAogICAgICAgIHJldHVybiBX UF9ERUxFVEVEOwogICAgICB9Ci1AQCAtNDAyNCw5ICs0MDU2LDcgQEAgYnBzdGF0X2NoZWNrX3dh dGNocG9pbnQgKGJwc3RhdCBicykKK0BAIC00MDMzLDkgKzQxNDYsNyBAQCBicHN0YXRfY2hlY2tf d2F0Y2hwb2ludCAoYnBzdGF0IGJzKQogIAkgICAgY2FzZSAwOgogIAkgICAgICAvKiBFcnJvciBm cm9tIGNhdGNoX2Vycm9ycy4gICovCiAgCSAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiV2F0Y2hw b2ludCAlZCBkZWxldGVkLlxuIiksIGItPm51bWJlcik7CkBAIC01NzQsNyArODcyLDcgQEAgaW5k ZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAJICAgICAgLyogV2UndmUgYWxyZWFkeSBwcmlu dGVkIHdoYXQgbmVlZHMgdG8gYmUgcHJpbnRlZC4gICovCiAgCSAgICAgIGJzLT5wcmludF9pdCA9 IHByaW50X2l0X2RvbmU7CiAgCSAgICAgIGJyZWFrOwotQEAgLTQyMzIsNyArNDI2Miw3IEBAIGJw c3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC00MjQ2 LDcgKzQzNTcsNyBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICph c3BhY2UsCiAgCSAgICAgd2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhhdCB3ZSB3aWxsIGhh bmRsZSB0aGUKICAJICAgICBvdXQtb2Ytc2NvcGUgZXZlbnQuICBXZSdsbCBnZXQgdG8gdGhlIHdh dGNocG9pbnQgbmV4dAogIAkgICAgIGl0ZXJhdGlvbi4gICovCkBAIC01ODMsNyArODgxLDcgQEAg aW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAJICAgIGItPnJlbGF0ZWRfYnJlYWtwb2lu dC0+d2F0Y2hwb2ludF90cmlnZ2VyZWQgPSB3YXRjaF90cmlnZ2VyZWRfeWVzOwogIAl9CiAgICAg IH0KLUBAIC00MzU0LDcgKzQzODQsNyBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQorQEAgLTQz NjgsNyArNDQ3OSw3IEBAIGhhbmRsZV9qaXRfZXZlbnQgKHZvaWQpCiAgLyogRGVjaWRlIHdoYXQg aW5mcnVuIG5lZWRzIHRvIGRvIHdpdGggdGhpcyBicHN0YXQuICAqLwogIAogIHN0cnVjdCBicHN0 YXRfd2hhdApAQCAtNTkyLDcgKzg5MCw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0 CiAgewogICAgc3RydWN0IGJwc3RhdF93aGF0IHJldHZhbDsKICAgIC8qIFdlIG5lZWQgdG8gZGVm ZXIgY2FsbGluZyBgc29saWJfYWRkJywgYXMgYWRkaW5nIG5ldyBzeW1ib2xzCi1AQCAtNDM2Miwx MiArNDM5MiwxMyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorQEAgLTQzNzYsMTIgKzQ0ODcs MTMgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBicykKICAgICAgIGFuZCBoZW5jZSBtYXkgY2xlYXIg dW5wcm9jZXNzZWQgZW50cmllcyBpbiB0aGUgQlMgY2hhaW4uICAqLwogICAgaW50IHNobGliX2V2 ZW50ID0gMDsKICAgIGludCBqaXRfZXZlbnQgPSAwOwpAQCAtNjA3LDQyICs5MDUsNTAgQEAgaW5k ZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAgewogICAgICAgIC8qIEV4dHJhY3QgdGhp cyBCUydzIGFjdGlvbi4gIEFmdGVyIHByb2Nlc3NpbmcgZWFjaCBCUywgd2UgY2hlY2sKICAJIGlm IGl0cyBhY3Rpb24gb3ZlcnJpZGVzIGFsbCB3ZSd2ZSBzZWVtIHNvIGZhci4gICovCi1AQCAtNDQ5 Nyw2ICs0NTI4LDIwIEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCitAQCAtNDUxMSw2ICs0NjIz LDE2IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCiAgCSAgICAgb3V0IGFscmVhZHkuICAqLwog IAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCiAgCQkJICBfKCJicHN0YXRf d2hhdDogdHJhY2Vwb2ludCBlbmNvdW50ZXJlZCIpKTsKICsJICBicmVhazsKICsJY2FzZSBicF9n bnVfaWZ1bmNfcmVzb2x2ZXI6Ci0rCSAgLyogU2tpcCB0aGUgY3VycmVudCBicmVha3BvaW50IGJ1 dCBvdGhlcndpc2Ugbm90aGluZyBoYXBwZW5zLiAgR0RCIGlzCi0rCSAgICAgaW5zZXJ0aW5nIG5l dyBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuIGF0IHRoaXMgcG9pbnQgYnV0Ci0rCSAgICAg YnBfZ251X2lmdW5jX3Jlc29sdmVyIGlzIGJlaW5nIGtlcHQgdGhlcmUgYXMgYW5vdGhlcgotKwkg ICAgIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4gbWF5IGJlIGluc2VydGVkIGluIHRoZSBt ZWFudGltZS4gICovCisrCSAgLyogU3RlcCBvdmVyIGl0IChhbmQgaW5zZXJ0IGJwX2dudV9pZnVu Y19yZXNvbHZlcl9yZXR1cm4pLiAgKi8KICsJICB0aGlzX2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NJ TkdMRTsKICsJICBicmVhazsKICsJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgot KwkgIC8qIFRoZSB3aG9sZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgd2l0aCBpdHMgYXNzb2NpYXRl ZAotKwkgICAgIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4gcmVsYXRlZF9icmVha3BvaW50 J3MgaGFzIGJlZW4KLSsJICAgICByZXNvbHZlZCBub3csIGFsbCB0aGVzZSBoZWxwZXIgYnJlYWtw b2ludHMgYXJlIGJlaW5nIHJlbW92ZWQgYW5kCi0rCSAgICAgbmV3IGZpbmFsIGJwX2JyZWFrcG9p bnQgaXMgYmVpbmcgcHV0IGF0IHRoZSB0YXJnZXQgbG9jYXRpb24uICAqLworKwkgIC8qIFRoZSBi cmVha3BvaW50IHdpbGwgYmUgcmVtb3ZlZCwgZXhlY3V0aW9uIHdpbGwgcmVzdGFydCBmcm9tIHRo ZQorKwkgICAgIFBDIG9mIHRoZSBmb3JtZXIgYnJlYWtwb2ludC4gICovCisrCSAgdGhpc19hY3Rp b24gPSBCUFNUQVRfV0hBVF9LRUVQX0NIRUNLSU5HOwogKwkgIGJyZWFrOwogIAlkZWZhdWx0Ogog IAkgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCiAgCQkJICBfKCJicHN0YXRf d2hhdDogdW5oYW5kbGVkIGJwdHlwZSAlZCIpLCAoaW50KSBicHR5cGUpOwotQEAgLTQ1MzQsNiAr NDU3OSwyMSBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorQEAgLTQ1MTksNiArNDY0MSw5IEBA IGJwc3RhdF93aGF0IChicHN0YXQgYnMpCisgICAgICAgcmV0dmFsLm1haW5fYWN0aW9uID0gbWF4 IChyZXR2YWwubWFpbl9hY3Rpb24sIHRoaXNfYWN0aW9uKTsKKyAgICAgfQorIAorKyAgLyogVGhl c2Ugb3BlcmF0aW9ucyBtYXkgYWZmZWN0IHRoZSBicy0+YnJlYWtwb2ludF9hdCBzdGF0ZSBzbyB0 aGV5IGFyZQorKyAgICAgZGVsYXllZCBhZnRlciBNQUlOX0FDVElPTiBpcyBkZWNpZGVkIGFib3Zl LiAgKi8KKysKKyAgIGlmIChzaGxpYl9ldmVudCkKKyAgICAgeworICAgICAgIGlmIChkZWJ1Z19p bmZydW4pCitAQCAtNDU0OCw2ICs0NjczLDIzIEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCiAg ICAgICAgaGFuZGxlX2ppdF9ldmVudCAoKTsKICAgICAgfQogIAogKyAgZm9yIChicyA9IGJzX2hl YWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCiArICAgIHsKLSsgICAgICBpZiAoYnMtPmJy ZWFrcG9pbnRfYXQgPT0gTlVMTCkKKysgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGJzLT5i cmVha3BvaW50X2F0OworKworKyAgICAgIGlmIChiID09IE5VTEwpCiArCWNvbnRpbnVlOwotKyAg ICAgIHN3aXRjaCAoYnMtPmJyZWFrcG9pbnRfYXQtPnR5cGUpCisrICAgICAgc3dpdGNoIChiLT50 eXBlKQogKwl7CiArCWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyOgotKwkgIGdudV9pZnVuY19y ZXNvbHZlcl9zdG9wIChicy0+YnJlYWtwb2ludF9hdCk7CisrCSAgZ251X2lmdW5jX3Jlc29sdmVy X3N0b3AgKGIpOwogKwkgIGJyZWFrOwogKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1 cm46Ci0rCSAgZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChicy0+YnJlYWtwb2ludF9h dCk7CisrCSAgZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChiKTsKICsJICBicmVhazsK ICsJfQogKyAgICB9CkBAIC02NTAsMTYgKzk1NiwxNiBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYy IDEwMDY0NAogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCi1AQCAtNDY4OSw2ICs0NzQ5LDggQEAg YnB0eXBlX3N0cmluZyAoZW51bSBicHR5cGUgdHlwZSkKK0BAIC00NzAzLDYgKzQ4NDUsOCBAQCBi cHR5cGVfc3RyaW5nIChlbnVtIGJwdHlwZSB0eXBlKQogICAgICB7YnBfZmFzdF90cmFjZXBvaW50 LCAiZmFzdCB0cmFjZXBvaW50In0sCiAgICAgIHticF9zdGF0aWNfdHJhY2Vwb2ludCwgInN0YXRp YyB0cmFjZXBvaW50In0sCiAgICAgIHticF9qaXRfZXZlbnQsICJqaXQgZXZlbnRzIn0sCi0rICAg IHticF9nbnVfaWZ1bmNfcmVzb2x2ZXIsICJnbnUtaWZ1bmMgcmVzb2x2ZXIifSwKLSsgICAge2Jw X2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sICJnbnUtZnVuYyByZXNvbHZlciByZXR1cm4ifSwK KysgICAge2JwX2dudV9pZnVuY19yZXNvbHZlciwgIlNUVF9HTlVfSUZVTkMgcmVzb2x2ZXIifSwK KysgICAge2JwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm4sICJTVFRfR05VX0lGVU5DIHJlc29s dmVyIHJldHVybiJ9LAogICAgfTsKICAKICAgIGlmICgoKGludCkgdHlwZSA+PSAoc2l6ZW9mIChi cHR5cGVzKSAvIHNpemVvZiAoYnB0eXBlc1swXSkpKQotQEAgLTQ4MjMsNiArNDg4NSw4IEBAIHBy aW50X29uZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC00 ODM3LDYgKzQ5ODEsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJy ZWFrcG9pbnQgKmIsCiAgICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6CiAgICAgICAgY2Fz ZSBicF9zdGF0aWNfdHJhY2Vwb2ludDoKICAgICAgICBjYXNlIGJwX2ppdF9ldmVudDoKQEAgLTY2 OCw3ICs5NzQsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAlpZiAob3B0cy5h ZGRyZXNzcHJpbnQpCiAgCSAgewogIAkgICAgYW5ub3RhdGVfZmllbGQgKDQpOwotQEAgLTUwOTgs NyArNTE2Miw4IEBAIHVzZXJfc2V0dGFibGVfYnJlYWtwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFr cG9pbnQgKmIpCitAQCAtNTExMiw3ICs1MjU4LDggQEAgdXNlcl9zZXR0YWJsZV9icmVha3BvaW50 IChjb25zdCBzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICAJICB8fCBiLT50eXBlID09IGJwX2NhdGNo cG9pbnQKICAJICB8fCBiLT50eXBlID09IGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQKICAJICB8fCBp c190cmFjZXBvaW50IChiKQpAQCAtNjc4LDcgKzk4NCw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVh NjIgMTAwNjQ0CiAgfQogIAogIC8qIFJldHVybiB0cnVlIGlmIHRoaXMgYnJlYWtwb2ludCB3YXMg c2V0IGJ5IHRoZSB1c2VyLCBmYWxzZSBpZiBpdCBpcwotQEAgLTU1OTQsNiArNTY1OSw4IEBAIGFs bG9jYXRlX2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorQEAgLTU2MDgsNiAr NTc1NSw4IEBAIGFsbG9jYXRlX2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQog ICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgogICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVf bWFzdGVyOgogICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CkBAIC02ODcsNyArOTkzLDcg QEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAgICBsb2MtPmxvY190eXBlID0g YnBfbG9jX3NvZnR3YXJlX2JyZWFrcG9pbnQ7CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgYnBf aGFyZHdhcmVfYnJlYWtwb2ludDoKLUBAIC01NjgzLDYgKzU3NTAsNyBAQCBzZXRfcmF3X2JyZWFr cG9pbnRfd2l0aG91dF9sb2NhdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTY5 Nyw2ICs1ODQ2LDcgQEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAogICAgYi0+b3BzID0gTlVMTDsKICAgIGItPmNvbmRpdGlvbl9u b3RfcGFyc2VkID0gMDsKICAgIGItPnB5X2JwX29iamVjdCA9IE5VTEw7CkBAIC02OTUsMjkgKzEw MDEsMzkgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAKICAgIC8qIEFkZCB0aGlz IGJyZWFrcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW4gc28gdGhhdCBhIGxpc3Qgb2YKICAg ICAgIGJyZWFrcG9pbnRzIHdpbGwgY29tZSBvdXQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBudW1i ZXJzLiAgKi8KLUBAIC01NzAxLDcgKzU3NjksNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91 dF9sb2NhdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtNTcxMyw5ICs1ODYzLDEy IEBAIHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKKyAgIHJldHVybiBiOworIH0KICAKLSAvKiBJbml0aWFsaXplIGxvYy0+ZnVuY3Rp b25fbmFtZS4gICovCistLyogSW5pdGlhbGl6ZSBsb2MtPmZ1bmN0aW9uX25hbWUuICAqLworKy8q IEluaXRpYWxpemUgbG9jLT5mdW5jdGlvbl9uYW1lLiAgRVhQTElDSVRfTE9DIHNheXMgbm8gaW5k aXJlY3QgZnVuY3Rpb24KKysgICByZXNvbHV0aW9ucyBzaG91bGQgYmUgbWFkZSBhcyB0aGUgdXNl ciBzcGVjaWZpZWQgdGhlIGxvY2F0aW9uIGV4cGxpY2l0bHkKKysgICBlbm91Z2guICAqLworKwog IHN0YXRpYyB2b2lkCiAtc2V0X2JyZWFrcG9pbnRfbG9jYXRpb25fZnVuY3Rpb24gKHN0cnVjdCBi cF9sb2NhdGlvbiAqbG9jKQogK3NldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1 Y3QgYnBfbG9jYXRpb24gKmxvYywgaW50IGV4cGxpY2l0X2xvYykKICB7CiAgICBnZGJfYXNzZXJ0 IChsb2MtPm93bmVyICE9IE5VTEwpOwogIAotQEAgLTU3MDksOCArNTc3NywyOSBAQCBzZXRfYnJl YWtwb2ludF9sb2NhdGlvbl9mdW5jdGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICpsb2MpCitAQCAt NTcyMyw4ICs1ODc2LDMzIEBAIHNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1 Y3QgYnBfbG9jYXRpb24gKmxvYykKICAgICAgICB8fCBsb2MtPm93bmVyLT50eXBlID09IGJwX2hh cmR3YXJlX2JyZWFrcG9pbnQKICAgICAgICB8fCBpc190cmFjZXBvaW50IChsb2MtPm93bmVyKSkK ICAgICAgewogLSAgICAgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAobG9jLT5hZGRyZXNzLCAm KGxvYy0+ZnVuY3Rpb25fbmFtZSksIAogLQkJCQlOVUxMLCBOVUxMKTsKLSsgICAgICBpZiAoZmlu ZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChsb2MtPmFkZHJlc3MsICYobG9jLT5mdW5jdGlvbl9uYW1l KSwgTlVMTCwKLSsJCQkJICAgIE5VTEwpID09IEZJTkRfUENfUEFSVElBTF9GVU5DVElPTl9HTlVf SUZVTkMKLSsJICAmJiAhZXhwbGljaXRfbG9jKQorKyAgICAgIGludCBpc19nbnVfaWZ1bmM7Cisr CisrICAgICAgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uX2dudV9pZnVuYyAobG9jLT5hZGRyZXNz LCAmbG9jLT5mdW5jdGlvbl9uYW1lLAorKwkJCQkJICBOVUxMLCBOVUxMLCAmaXNfZ251X2lmdW5j KTsKKysKKysgICAgICBpZiAoaXNfZ251X2lmdW5jICYmICFleHBsaWNpdF9sb2MpCiArCXsKICsJ ICBzdHJ1Y3QgYnJlYWtwb2ludCAqYiA9IGxvYy0+b3duZXI7CiArCiArCSAgZ2RiX2Fzc2VydCAo bG9jLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlKTsKLSsJICBpZiAocmVzb2x2ZV9n bnVfaWZ1bmMgKGxvYy0+ZnVuY3Rpb25fbmFtZSwgJmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MpKQor KwkgIGlmIChnbnVfaWZ1bmNfcmVzb2x2ZV9uYW1lIChsb2MtPmZ1bmN0aW9uX25hbWUsCisrCQkJ CSAgICAgICZsb2MtPnJlcXVlc3RlZF9hZGRyZXNzKSkKICsJICAgIHsKICsJICAgICAgLyogUmVj YWxjdWxhdGUgQUREUkVTUyBiYXNlZCBvbiBuZXcgUkVRVUVTVEVEX0FERFJFU1MuICAqLwogKwkg ICAgICBsb2MtPmFkZHJlc3MgPSBhZGp1c3RfYnJlYWtwb2ludF9hZGRyZXNzIChsb2MtPmdkYmFy Y2gsCkBAIC03MzYsNyArMTA1MiwxNSBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAog ICAgICAgIGlmIChsb2MtPmZ1bmN0aW9uX25hbWUpCiAgCWxvYy0+ZnVuY3Rpb25fbmFtZSA9IHhz dHJkdXAgKGxvYy0+ZnVuY3Rpb25fbmFtZSk7CiAgICAgIH0KLUBAIC01Nzg1LDcgKzU4NzQsOCBA QCBzZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTU3ODcs NiArNTk2NSw3IEBAIHNldF9yYXdfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CisgICBiLT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzID0gc2FsLnBjOworICAgYi0+bG9jLT5hZGRy ZXNzID0gYWRqdXN0ZWRfYWRkcmVzczsKKyAgIGItPmxvYy0+cHNwYWNlID0gc2FsLnBzcGFjZTsK KysgIGItPmxvYy0+c2VtYXBob3JlID0gc2FsLnNlbWFwaG9yZTsKKyAKKyAgIC8qIFN0b3JlIHRo ZSBwcm9ncmFtIHNwYWNlIHRoYXQgd2FzIHVzZWQgdG8gc2V0IHRoZSBicmVha3BvaW50LCBmb3IK KyAgICAgIGJyZWFrcG9pbnQgcmVzZXR0aW5nLiAgKi8KK0BAIC01Nzk5LDcgKzU5NzgsOCBAQCBz ZXRfcmF3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgYi0+bG9jLT5z ZWN0aW9uID0gc2FsLnNlY3Rpb247CiAgICBiLT5saW5lX251bWJlciA9IHNhbC5saW5lOwogIApA QCAtNzQ2LDcgKzEwNzAsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAogICAg YnJlYWtwb2ludHNfY2hhbmdlZCAoKTsKICAKLUBAIC02OTAyLDcgKzY5OTIsNyBAQCBjbG9uZV9t b21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcpCitAQCAtNjkxNiwx MyArNzA5NiwxNCBAQCBjbG9uZV9tb21lbnRhcnlfYnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9p bnQgKm9yaWcpCiAgCiAgICBjb3B5ID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRp b24gKG9yaWctPmdkYmFyY2gsIG9yaWctPnR5cGUpOwogICAgY29weS0+bG9jID0gYWxsb2NhdGVf YnBfbG9jYXRpb24gKGNvcHkpOwpAQCAtNzU1LDcgKzEwNzksMTQgQEAgaW5kZXggNWJjYWI4Ny4u NTI5ZWE2MiAxMDA2NDQKICAKICAgIGNvcHktPmxvYy0+Z2RiYXJjaCA9IG9yaWctPmxvYy0+Z2Ri YXJjaDsKICAgIGNvcHktPmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBvcmlnLT5sb2MtPnJlcXVl c3RlZF9hZGRyZXNzOwotQEAgLTcwMDIsNiArNzA5Miw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVh a3BvaW50ICpiKQorICAgY29weS0+bG9jLT5hZGRyZXNzID0gb3JpZy0+bG9jLT5hZGRyZXNzOwor ICAgY29weS0+bG9jLT5zZWN0aW9uID0gb3JpZy0+bG9jLT5zZWN0aW9uOworICAgY29weS0+bG9j LT5wc3BhY2UgPSBvcmlnLT5sb2MtPnBzcGFjZTsKKysgIGNvcHktPmxvYy0+c2VtYXBob3JlID0g b3JpZy0+bG9jLT5zZW1hcGhvcmU7CisgCisgICBpZiAob3JpZy0+c291cmNlX2ZpbGUgPT0gTlVM TCkKKyAgICAgY29weS0+c291cmNlX2ZpbGUgPSBOVUxMOworQEAgLTcwMTYsNiArNzE5Nyw3IEBA IG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQogIAlkb19jbGVhbnVwcyAodWlfb3V0X2No YWluKTsKICAJYnJlYWs7CiAgICAgICAgY2FzZSBicF9icmVha3BvaW50OgpAQCAtNzYzLDcgKzEw OTQsNyBAQCBpbmRleCA1YmNhYjg3Li41MjllYTYyIDEwMDY0NAogIAlpZiAodWlfb3V0X2lzX21p X2xpa2VfcCAodWlvdXQpKQogIAkgIHsKICAJICAgIHNheV93aGVyZSA9IDA7Ci1AQCAtNzAxMiw2 ICs3MTAzLDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCitAQCAtNzAyNiw2ICs3 MjA4LDggQEAgbWVudGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAgCWVsc2UKICAJICBwcmlu dGZfZmlsdGVyZWQgKF8oIkJyZWFrcG9pbnQiKSk7CiAgCXByaW50Zl9maWx0ZXJlZCAoXygiICVk IiksIGItPm51bWJlcik7CkBAIC03NzIsNyArMTEwMyw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVh NjIgMTAwNjQ0CiAgCXNheV93aGVyZSA9IDE7CiAgCWJyZWFrOwogICAgICAgIGNhc2UgYnBfaGFy ZHdhcmVfYnJlYWtwb2ludDoKLUBAIC03MDcxLDYgKzcxNjQsNyBAQCBtZW50aW9uIChzdHJ1Y3Qg YnJlYWtwb2ludCAqYikKK0BAIC03MDg1LDYgKzcyNjksNyBAQCBtZW50aW9uIChzdHJ1Y3QgYnJl YWtwb2ludCAqYikKICAgICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgogICAgICAgIGNhc2Ug YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CiAgICAgICAgY2FzZSBicF9leGNlcHRpb25fbWFzdGVy OgpAQCAtNzgwLDcgKzExMTEsMTEgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAJ YnJlYWs7CiAgICAgICAgfQogIAotQEAgLTcxMzEsNyArNzIyNSw4IEBAIGFkZF9sb2NhdGlvbl90 b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKK0BAIC03MTQyLDEwICs3MzI3LDEy IEBAIGFkZF9sb2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKyAg IGxvYy0+YWRkcmVzcyA9IGFkanVzdF9icmVha3BvaW50X2FkZHJlc3MgKGxvYy0+Z2RiYXJjaCwK KyAJCQkJCSAgICBsb2MtPnJlcXVlc3RlZF9hZGRyZXNzLCBiLT50eXBlKTsKKyAgIGxvYy0+cHNw YWNlID0gc2FsLT5wc3BhY2U7CisrICBsb2MtPnNlbWFwaG9yZSA9IHNhbC0+c2VtYXBob3JlOwog ICAgZ2RiX2Fzc2VydCAobG9jLT5wc3BhY2UgIT0gTlVMTCk7CiAgICBsb2MtPnNlY3Rpb24gPSBz YWwtPnNlY3Rpb247CiAgCkBAIC03OTAsNyArMTEyNSw3IEBAIGluZGV4IDViY2FiODcuLjUyOWVh NjIgMTAwNjQ0CiAgICByZXR1cm4gbG9jOwogIH0KICAMCi1AQCAtODU2Niw2ICs4NjYxLDcgQEAg d2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBhY2Nlc3NmbGFnLCBpbnQgZnJvbV90dHks CitAQCAtODU4MCw2ICs4NzY3LDcgQEAgd2F0Y2hfY29tbWFuZF8xIChjaGFyICphcmcsIGludCBh Y2Nlc3NmbGFnLCBpbnQgZnJvbV90dHksCiAgICBiID0gc2V0X3Jhd19icmVha3BvaW50X3dpdGhv dXRfbG9jYXRpb24gKE5VTEwsIGJwX3R5cGUpOwogICAgc2V0X2JyZWFrcG9pbnRfbnVtYmVyIChp bnRlcm5hbCwgYik7CiAgICBiLT50aHJlYWQgPSB0aHJlYWQ7CkBAIC03OTgsNyArMTEzMyw3IEBA IGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgICBiLT5kaXNwb3NpdGlvbiA9IGRpc3Bf ZG9udHRvdWNoOwogICAgYi0+ZXhwID0gZXhwOwogICAgYi0+ZXhwX3ZhbGlkX2Jsb2NrID0gZXhw X3ZhbGlkX2Jsb2NrOwotQEAgLTk3MjgsNiArOTgyNCw5IEBAIHVwZGF0ZV9nbG9iYWxfbG9jYXRp b25fbGlzdCAoaW50IHNob3VsZF9pbnNlcnQpCitAQCAtOTc0Miw2ICs5OTMwLDkgQEAgdXBkYXRl X2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkX2luc2VydCkKICAgICAgICBpbnQga2Vl cF9pbl90YXJnZXQgPSAwOwogICAgICAgIGludCByZW1vdmVkID0gMDsKICAKQEAgLTgwOCw3ICsx MTQzLDcgQEAgaW5kZXggNWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAgICAvKiBTa2lwIExP Q1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2ZXIgYmUgbmVlZGVkLgogIAkgU3Rv cCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGluZyBPTERfTE9DLiAgKi8KICAgICAg ICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9jYXRpb25fY291bnQKLUBAIC0xMDA0 NCwxMiArMTAxNDMsMjAgQEAgZGVsZXRlX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpi cHQpCitAQCAtMTAwNTgsMTIgKzEwMjQ5LDIwIEBAIGRlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3Qg YnJlYWtwb2ludCAqYnB0KQogIAogICAgLyogQXQgbGVhc3QgYXZvaWQgdGhpcyBzdGFsZSByZWZl cmVuY2UgdW50aWwgdGhlIHJlZmVyZW5jZSBjb3VudGluZwogICAgICAgb2YgYnJlYWtwb2ludHMg Z2V0cyByZXNvbHZlZC4gICovCkBAIC04MzQsMzAgKzExNjksMTYgQEAgaW5kZXggNWJjYWI4Ny4u NTI5ZWE2MiAxMDA2NDQKICAgICAgfQogIAogICAgb2JzZXJ2ZXJfbm90aWZ5X2JyZWFrcG9pbnRf ZGVsZXRlZCAoYnB0LT5udW1iZXIpOwotQEAgLTEwMzgwLDYgKzEwNDg3LDkgQEAgdXBkYXRlX2Jy ZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAgICAgcmV0dXJuOwot IAotICAgYi0+bG9jID0gTlVMTDsKLSsgIHhmcmVlIChiLT5zb3VyY2VfZmlsZSk7Ci0rICBiLT5z b3VyY2VfZmlsZSA9IE5VTEw7Ci0rICBiLT5saW5lX251bWJlciA9IDA7Ci0gCi0gICBmb3IgKGkg PSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQotICAgICB7Ci1AQCAtMTA0MDcsMTEgKzEwNTE3LDcg QEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAJ ICAgIH0KLSAJfQotIAotLSAgICAgIGlmIChiLT5zb3VyY2VfZmlsZSAhPSBOVUxMKQotLQl4ZnJl ZSAoYi0+c291cmNlX2ZpbGUpOwotLSAgICAgIGlmIChzYWxzLnNhbHNbaV0uc3ltdGFiID09IE5V TEwpCi0tCWItPnNvdXJjZV9maWxlID0gTlVMTDsKLS0gICAgICBlbHNlCi0rICAgICAgaWYgKHNh bHMuc2Fsc1tpXS5zeW10YWIgIT0gTlVMTCAmJiBiLT5zb3VyY2VfZmlsZSA9PSBOVUxMKQotIAli LT5zb3VyY2VfZmlsZSA9IHhzdHJkdXAgKHNhbHMuc2Fsc1tpXS5zeW10YWItPmZpbGVuYW1lKTsK K0BAIC0xMDM3Niw3ICsxMDU3NSw3IEBAIHVwZGF0ZV9zdGF0aWNfdHJhY2Vwb2ludCAoc3RydWN0 IGJyZWFrcG9pbnQgKmIsIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsKQorICAgcmV0dXJuIHNh bDsKKyB9CiAgCi0gICAgICAgaWYgKGItPmxpbmVfbnVtYmVyID09IDApCi1AQCAtMTA0OTQsNiAr MTA2MDAsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCistc3RhdGljIHZv aWQKKyt2b2lkCisgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2lu dCAqYiwKKyAJCQkgICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxzKQorIHsKK0BAIC0x MDUwOCw2ICsxMDcwNyw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKICAg ICAgY2FzZSBicF90cmFjZXBvaW50OgogICAgICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAg ICAgY2FzZSBicF9zdGF0aWNfdHJhY2Vwb2ludDoKQEAgLTg2NSw3ICsxMTg2LDcgQEAgaW5kZXgg NWJjYWI4Ny4uNTI5ZWE2MiAxMDA2NDQKICAgICAgICAvKiBEbyBub3QgYXR0ZW1wdCB0byByZS1z ZXQgYnJlYWtwb2ludHMgZGlzYWJsZWQgZHVyaW5nIHN0YXJ0dXAuICAqLwogICAgICAgIGlmIChi LT5lbmFibGVfc3RhdGUgPT0gYnBfc3RhcnR1cF9kaXNhYmxlZCkKICAJcmV0dXJuIDA7Ci1AQCAt MTA2NjQsNiArMTA3NzEsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCitA QCAtMTA2NzgsNiArMTA4NzgsNyBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQp CiAgICAgIGNhc2UgYnBfZXhjZXB0aW9uOgogICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1bWU6 CiAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgpAQCAtODczLDcgKzExOTQsNyBAQCBpbmRleCA1YmNh Yjg3Li41MjllYTYyIDEwMDY0NAogICAgICAgIGJyZWFrOwogICAgICB9CiAgCi1AQCAtMTA4Mjgs MTEgKzEwOTM2LDI1IEBAIG1hcF9icmVha3BvaW50X251bWJlcnMgKGNoYXIgKmFyZ3MsIHZvaWQg KCpmdW5jdGlvbikgKHN0cnVjdCBicmVha3BvaW50ICosCitAQCAtMTA4NDQsMTEgKzExMDQ1LDI1 IEBAIG1hcF9icmVha3BvaW50X251bWJlcnMgKGNoYXIgKmFyZ3MsIHZvaWQgKCpmdW5jdGlvbikg KHN0cnVjdCBicmVha3BvaW50ICosCiAgCSAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRtcCkK ICAJICAgIGlmIChiLT5udW1iZXIgPT0gbnVtKQogIAkgICAgICB7CkBAIC05MDMsNyArMTIyNCw3 IEBAIGluZGV4IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgCQlicmVhazsKICAJICAgICAgfQog IAkgIGlmIChtYXRjaCA9PSAwKQotQEAgLTExOTQ5LDYgKzEyMDcxLDI0IEBAIGFsbF90cmFjZXBv aW50cyAoKQorQEAgLTExOTc5LDYgKzEyMTk0LDI0IEBAIGFsbF90cmFjZXBvaW50cyAodm9pZCkK ICAgIHJldHVybiB0cF92ZWM7CiAgfQogIApAQCAtOTI4LDExNSArMTI0OSw3IEBAIGluZGV4IDVi Y2FiODcuLjUyOWVhNjIgMTAwNjQ0CiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBm b3IgdGhlIGJyZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhawogICAgIGNvbW1hbmRzLiAg SXQgaXMgZGVmaW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTIw MzQsNiArMTIxNzQsMTA3IEBAIGl0ZXJhdGVfb3Zlcl9icmVha3BvaW50cyAoaW50ICgqY2FsbGJh Y2spIChzdHJ1Y3QgYnJlYWtwb2ludCAqLCB2b2lkICopLAotICAgcmV0dXJuIE5VTEw7Ci0gfQot IAotK3N0YXRpYyB2b2lkCi0rZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3Bv aW50ICpiKQotK3sKLSsgIHN0cnVjdCBicmVha3BvaW50ICpiX3JldHVybjsKLSsgIHN0cnVjdCBm cmFtZV9pbmZvICpwcmV2X2ZyYW1lID0gZ2V0X3ByZXZfZnJhbWUgKGdldF9jdXJyZW50X2ZyYW1l ICgpKTsKLSsgIHN0cnVjdCBmcmFtZV9pZCBwcmV2X2ZyYW1lX2lkID0gZ2V0X3N0YWNrX2ZyYW1l X2lkIChwcmV2X2ZyYW1lKTsKLSsgIENPUkVfQUREUiBwcmV2X3BjID0gZ2V0X2ZyYW1lX3BjIChw cmV2X2ZyYW1lKTsKLSsgIGludCB0aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlv cl9wdGlkKTsKLSsKLSsgIGdkYl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29s dmVyKTsKLSsKLSsgIGZvciAoYl9yZXR1cm4gPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7IGJfcmV0 dXJuICE9IGI7Ci0rICAgICAgIGJfcmV0dXJuID0gYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtwb2lu dCkKLSsgICAgewotKyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT50eXBlID09IGJwX2dudV9p ZnVuY19yZXNvbHZlcl9yZXR1cm4pOwotKyAgICAgIGdkYl9hc3NlcnQgKGJfcmV0dXJuLT5sb2Mg IT0gTlVMTCAmJiBiX3JldHVybi0+bG9jLT5uZXh0ID09IE5VTEwpOwotKyAgICAgIGdkYl9hc3Nl cnQgKGZyYW1lX2lkX3AgKGJfcmV0dXJuLT5mcmFtZV9pZCkpOwotKwotKyAgICAgIGlmIChiX3Jl dHVybi0+dGhyZWFkID09IHRocmVhZF9pZAotKwkgICYmIGJfcmV0dXJuLT5sb2MtPnJlcXVlc3Rl ZF9hZGRyZXNzID09IHByZXZfcGMKLSsJICAmJiBmcmFtZV9pZF9lcSAoYl9yZXR1cm4tPmZyYW1l X2lkLCBwcmV2X2ZyYW1lX2lkKSkKLSsJYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGlmIChiX3JldHVy biA9PSBiKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0rCi0r ICAgICAgLyogTm8gbmVlZCB0byBjYWxsIGZpbmRfcGNfbGluZSBmb3Igc3ltYm9scyByZXNvbHZp bmcgYXMgdGhpcyBpcyBvbmx5Ci0rCSBhIGhlbHBlciBicmVha3BvaW50ZXIgbmV2ZXIgc2hvd24g dG8gdGhlIHVzZXIuICAqLwotKwotKyAgICAgIGluaXRfc2FsICgmc2FsKTsKLSsgICAgICBzYWwu cHNwYWNlID0gY3VycmVudF9pbmZlcmlvciAoKS0+cHNwYWNlOwotKyAgICAgIHNhbC5wYyA9IHBy ZXZfcGM7Ci0rICAgICAgc2FsLnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHNhbC5wYyk7Ci0r ICAgICAgc2FsLmV4cGxpY2l0X3BjID0gMTsKLSsgICAgICBiX3JldHVybiA9IHNldF9tb21lbnRh cnlfYnJlYWtwb2ludCAoZ2V0X2ZyYW1lX2FyY2ggKHByZXZfZnJhbWUpLCBzYWwsCi0rCQkJCQkg ICBwcmV2X2ZyYW1lX2lkLAotKwkJCQkJICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybik7 Ci0rCi0rICAgICAgLyogQWRkIG5ldyBiX3JldHVybiB0byB0aGUgcmluZyBsaXN0IGItPnJlbGF0 ZWRfYnJlYWtwb2ludC4gICovCi0rICAgICAgZ2RiX2Fzc2VydCAoYl9yZXR1cm4tPnJlbGF0ZWRf YnJlYWtwb2ludCA9PSBiX3JldHVybik7Ci0rICAgICAgYl9yZXR1cm4tPnJlbGF0ZWRfYnJlYWtw b2ludCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsgICAgICBiLT5yZWxhdGVkX2JyZWFrcG9p bnQgPSBiX3JldHVybjsKLSsgICAgfQotK30KLSsKLStzdGF0aWMgdm9pZAotK2dudV9pZnVuY19y ZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCi0rewotKyAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkp OwotKyAgc3RydWN0IHR5cGUgKmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNo KS0+YnVpbHRpbl9mdW5jX2Z1bmM7Ci0rICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZSA9IFRZUEVf VEFSR0VUX1RZUEUgKGZ1bmNfZnVuY190eXBlKTsKLSsgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2Fj aGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChpbmZlcmlvcl9wdGlkKTsKLSsgIHN0cnVjdCB2YWx1 ZSAqdmFsdWU7Ci0rICBDT1JFX0FERFIgcmVzb2x2ZWRfYWRkcmVzcywgcmVzb2x2ZWRfcGM7Ci0r ICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKLSsgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5l cyBzYWxzOwotKwotKyAgZ2RiX2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2 ZXJfcmV0dXJuKTsKLSsKLSsgIHZhbHVlID0gYWxsb2NhdGVfdmFsdWUgKHZhbHVlX3R5cGUpOwot KyAgZ2RiYXJjaF9yZXR1cm5fdmFsdWUgKGdkYmFyY2gsIGZ1bmNfZnVuY190eXBlLCB2YWx1ZV90 eXBlLCByZWdjYWNoZSwKLSsJCQl2YWx1ZV9jb250ZW50c19yYXcgKHZhbHVlKSwgTlVMTCk7Ci0r ICByZXNvbHZlZF9hZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOwotKyAgcmVzb2x2 ZWRfcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAotKwkJ CQkJCSAgICByZXNvbHZlZF9hZGRyZXNzLAotKwkJCQkJCSAgICAmY3VycmVudF90YXJnZXQpOwot KwotKyAgd2hpbGUgKGItPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKQotKyAgICB7Ci0rICAgICAg c3RydWN0IGJyZWFrcG9pbnQgKmJfbmV4dCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKLSsKLSsg ICAgICBzd2l0Y2ggKGItPnR5cGUpCi0rCXsKLSsJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6 Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKLSsJICBk ZWxldGVfYnJlYWtwb2ludCAoYik7Ci0rCSAgYnJlYWs7Ci0rCWRlZmF1bHQ6Ci0rCSAgaW50ZXJu YWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCQkgIF8oImhhbmRsZV9pbmZlcmlvcl9l dmVudDogSW52YWxpZCAiCi0rCQkJICAgICJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gYnJlYWtwb2lu dCB0eXBlICVkIiksCi0rCQkJICAoaW50KSBiLT50eXBlKTsKLSsJfQotKyAgICAgIGIgPSBiX25l eHQ7Ci0rICAgIH0KLSsgIGdkYl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29s dmVyKTsKLSsKLSsgIGdkYl9hc3NlcnQgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSA9PSBiLT5wc3Bh Y2UpOwotKyAgZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoZ2RiYXJjaCwgYi0+YWRkcl9zdHJpbmcs IHJlc29sdmVkX3BjKTsKLSsKLSsgIHNhbCA9IGZpbmRfcGNfbGluZSAocmVzb2x2ZWRfcGMsIDAp OwotKyAgc2Fscy5uZWx0cyA9IDE7Ci0rICBzYWxzLnNhbHMgPSAmc2FsOwotKwotKyAgYi0+dHlw ZSA9IGJwX2JyZWFrcG9pbnQ7Ci0rICB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKGIsIHNh bHMpOwotK30KLSsKLSB2b2lkCi0gX2luaXRpYWxpemVfYnJlYWtwb2ludCAodm9pZCkKLSB7Ci1A QCAtMTI1NjgsNCArMTI4MDksNyBAQCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVo YXZlcyBhcyBpZiBhbHdheXMtaW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCitAQCAtMTI1OTgsNCAr MTI4MzEsNyBAQCBpbmZlcmlvciBpbiBhbGwtc3RvcCBtb2RlLCBnZGIgYmVoYXZlcyBhcyBpZiBh bHdheXMtaW5zZXJ0ZWQgbW9kZSBpcyBvZmYuIiksCiAgICBhdXRvbWF0aWNfaGFyZHdhcmVfYnJl YWtwb2ludHMgPSAxOwogIAogICAgb2JzZXJ2ZXJfYXR0YWNoX2Fib3V0X3RvX3Byb2NlZWQgKGJy ZWFrcG9pbnRfYWJvdXRfdG9fcHJvY2VlZCk7CkBAIC0xMDQ1LDE5ICsxMjU4LDUxIEBAIGluZGV4 IDViY2FiODcuLjUyOWVhNjIgMTAwNjQ0CiArI2VuZGlmCiAgfQogZGlmZiAtLWdpdCBhL2dkYi9i cmVha3BvaW50LmggYi9nZGIvYnJlYWtwb2ludC5oCi1pbmRleCBhMGZlYTIxLi40YjI0NzAxIDEw MDY0NAoraW5kZXggYmQwOTcxMy4uNTg3ZTNhMSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50 LmgKICsrKyBiL2dkYi9icmVha3BvaW50LmgKLUBAIC0xNDgsNiArMTQ4LDkgQEAgZW51bSBicHR5 cGUKK0BAIC0xNDksNiArMTQ5LDE5IEBAIGVudW0gYnB0eXBlCiAgCiAgICAgIC8qIEV2ZW50IGZv ciBKSVQgY29tcGlsZWQgY29kZSBnZW5lcmF0aW9uIG9yIGRlbGV0aW9uLiAgKi8KICAgICAgYnBf aml0X2V2ZW50LAogKworKyAgICAvKiBCcmVha3BvaW50IGlzIHBsYWNlZCBhdCB0aGUgU1RUX0dO VV9JRlVOQyByZXNvbHZlci4gIFdoZW4gaGl0IEdEQgorKyAgICAgICBpbnNlcnRzIG5ldyBicF9n bnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuIGF0IHRoZSBjYWxsZXIuCisrICAgICAgIGJwX2dudV9p ZnVuY19yZXNvbHZlciBpcyBzdGlsbCBiZWluZyBrZXB0IGhlcmUgYXMgYSBkaWZmZXJlbnQgdGhy ZWFkCisrICAgICAgIG1heSBzdGlsbCBoaXQgaXQgYmVmb3JlIGJwX2dudV9pZnVuY19yZXNvbHZl cl9yZXR1cm4gaXMgaGl0IGJ5IHRoZQorKyAgICAgICBvcmlnaW5hbCB0aHJlYWQuICAqLwogKyAg ICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIsCisrCisrICAgIC8qIE9uIGl0cyBoaXQgR0RCIG5vdyBr bm93IHRoZSByZXNvbHZlZCBhZGRyZXNzIG9mIHRoZSB0YXJnZXQKKysgICAgICAgU1RUX0dOVV9J RlVOQyBmdW5jdGlvbi4gIEFzc29jaWF0ZWQgYnBfZ251X2lmdW5jX3Jlc29sdmVyIGNhbiBiZQor KyAgICAgICBkZWxldGVkIG5vdyBhbmQgdGhlIGJyZWFrcG9pbnQgbW92ZWQgdG8gdGhlIHRhcmdl dCBmdW5jdGlvbiBlbnRyeQorKyAgICAgICBwb2ludC4gICovCiArICAgIGJwX2dudV9pZnVuY19y ZXNvbHZlcl9yZXR1cm4sCiAgICB9OwogIAogIC8qIFN0YXRlcyBvZiBlbmFibGVtZW50IG9mIGJy ZWFrcG9pbnQuICAqLworQEAgLTM0NSw2ICszNTgsMTEgQEAgc3RydWN0IGJwX2xvY2F0aW9uCisg ICAgICBwcm9jZXNzb3IncyBhcmNoaXRlY3R1YWwgY29uc3RyYWludHMuICAqLworICAgQ09SRV9B RERSIHJlcXVlc3RlZF9hZGRyZXNzOworIAorKyAgLyogSWYgdGhlIGxvY2F0aW9uIGNvbWVzIGZy b20gYSBTeXN0ZW1UYXAgcHJvYmUgcG9pbnQsIGFuZCB0aGUgcHJvYmUKKysgICAgIGhhcyBhbiBh c3NvY2lhdGVkIHNlbWFwaG9yZSB2YXJpYWJsZSwgdGhlbiB0aGlzIGlzIHRoZSBhZGRyZXNzIG9m CisrICAgICB0aGUgc2VtYXBob3JlLiAgT3RoZXJ3aXNlLCB0aGlzIGlzIHplcm8uICAqLworKyAg Q09SRV9BRERSIHNlbWFwaG9yZTsKKysKKyAgIGNoYXIgKmZ1bmN0aW9uX25hbWU7CisgCisgICAv KiBEZXRhaWxzIG9mIHRoZSBwbGFjZWQgYnJlYWtwb2ludCwgd2hlbiBpbnNlcnRlZC4gICovCitA QCAtODg4LDYgKzkwNiw5IEBAIGV4dGVybiBpbnQgYnJlYWtwb2ludF90aHJlYWRfbWF0Y2ggKHN0 cnVjdCBhZGRyZXNzX3NwYWNlICosCisgCisgZXh0ZXJuIHZvaWQgdW50aWxfYnJlYWtfY29tbWFu ZCAoY2hhciAqLCBpbnQsIGludCk7CisgCisrZXh0ZXJuIHZvaWQgdXBkYXRlX2JyZWFrcG9pbnRf bG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKKysJCQkJCSBzdHJ1Y3Qgc3ltdGFic19h bmRfbGluZXMgc2Fscyk7CisrCisgZXh0ZXJuIHZvaWQgYnJlYWtwb2ludF9yZV9zZXQgKHZvaWQp OworIAorIGV4dGVybiB2b2lkIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAoc3RydWN0IGJyZWFr cG9pbnQgKik7CiBkaWZmIC0tZ2l0IGEvZ2RiL2MtdHlwZXByaW50LmMgYi9nZGIvYy10eXBlcHJp bnQuYwogaW5kZXggYzcwZmE0Yi4uNmJjMzM5NyAxMDA2NDQKIC0tLSBhL2dkYi9jLXR5cGVwcmlu dC5jCkBAIC0xMDgwLDYgKzEzMjUsMTggQEAgaW5kZXggYzcwZmE0Yi4uNmJjMzM5NyAxMDA2NDQK ICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwogIAogIAljX3R5cGVfcHJpbnRfdmFy c3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJlYW0sCitkaWZmIC0tZ2l0 IGEvZ2RiL2NvZmZyZWFkLmMgYi9nZGIvY29mZnJlYWQuYworaW5kZXggYjExZGQ3My4uMDg2OGE3 OSAxMDA2NDQKKy0tLSBhL2dkYi9jb2ZmcmVhZC5jCisrKysgYi9nZGIvY29mZnJlYWQuYworQEAg LTIxOTMsNiArMjE5Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBjb2ZmX3N5bV9m bnMgPQorIAorICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBzeW1fcmVsb2NhdGU6IFJl bG9jYXRlIGEgZGVidWcKKyAJCQkJICAgc2VjdGlvbi4gICovCisrICBOVUxMLAkJCQkvKiBzeW1f cHJvYmVfZm5zICovCisgICAmcHN5bV9mdW5jdGlvbnMKKyB9OworIAogZGlmZiAtLWdpdCBhL2dk Yi9kYXRhLWRpcmVjdG9yeS9NYWtlZmlsZS5pbiBiL2dkYi9kYXRhLWRpcmVjdG9yeS9NYWtlZmls ZS5pbgogaW5kZXggMTFjZjJlNi4uOWEyYThmOCAxMDA2NDQKIC0tLSBhL2dkYi9kYXRhLWRpcmVj dG9yeS9NYWtlZmlsZS5pbgpAQCAtMTExMSw2ICsxMzY4LDI2IEBAIGluZGV4IDExY2YyZTYuLjlh MmE4ZjggMTAwNjQ0CiAgCiAgRkxBR1NfVE9fUEFTUyA9IFwKICAJInByZWZpeD0kKHByZWZpeCki IFwKK2RpZmYgLS1naXQgYS9nZGIvZGJ4cmVhZC5jIGIvZ2RiL2RieHJlYWQuYworaW5kZXggODI0 MmNmOC4uYjJkYjY5OSAxMDA2NDQKKy0tLSBhL2dkYi9kYnhyZWFkLmMKKysrKyBiL2dkYi9kYnhy ZWFkLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFJlYWQgZGJ4IHN5bWJvbCB0YWJsZXMgYW5kIGNv bnZlcnQgdG8gaW50ZXJuYWwgZm9ybWF0LCBmb3IgR0RCLgorICAgIENvcHlyaWdodCAoQykgMTk4 NiwgMTk4NywgMTk4OCwgMTk4OSwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwK Ky0gICAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0 LCAyMDA4LCAyMDA5LCAyMDEwLgorKyAgIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIw MDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEuCisgICAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RC LgorQEAgLTM1ODYsNiArMzU4Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBhb3V0 X3N5bV9mbnMgPQorICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBp bmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCisgICBOVUxMLAorICAgZGVmYXVsdF9zeW1maWxl X3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLworKyAgTlVMTCwJCQkJ Lyogc3ltX3Byb2JlX2ZucyAqLworICAgJnBzeW1fZnVuY3Rpb25zCisgfTsKKyAKIGRpZmYgLS1n aXQgYS9nZGIvZGVmcy5oIGIvZ2RiL2RlZnMuaAogaW5kZXggOTQwOWRkZS4uZjBmYTRjNyAxMDA2 NDQKIC0tLSBhL2dkYi9kZWZzLmgKQEAgLTExMjUsNyArMTQwMiw3IEBAIGluZGV4IDk0MDlkZGUu LmYwZmE0YzcgMTAwNjQ0CiAgZXh0ZXJuIGNoYXIgKnhmdWxscGF0aCAoY29uc3QgY2hhciAqKTsK ICAKIGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9nZGIudGV4aW5m bwotaW5kZXggYTVlYWE3Mi4uNmNjOThkYyAxMDA2NDQKK2luZGV4IGZjYmJkNmMuLjg3Njc0OWQg MTAwNjQ0CiAtLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZvCiArKysgYi9nZGIvZG9jL2dkYi50ZXhp bmZvCiBAQCAtMTE3Nyw2ICsxMTc3LDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgpAQCAtMTE0 NSw3ICsxNDIyLDEwNyBAQCBpbmRleCBhNWVhYTcyLi42Y2M5OGRjIDEwMDY0NAogIEBjIHJlc29s dmUgdGhlIHNpdHVhdGlvbiBvZiB0aGVzZSBldmVudHVhbGx5CiAgQGl0ZW0gLXR1aQogIEBjaW5k ZXggQGNvZGV7LS10dWl9Ci1AQCAtMjA2NzcsOCArMjA2ODcsNiBAQCBjb250YWluaW5nIEBjb2Rl e2VuZH0uICBGb3IgZXhhbXBsZToKK0BAIC0zMjg2LDYgKzMyOTYsNyBAQCBhbGwgYnJlYWtwb2lu dHMgaW4gdGhhdCByYW5nZSBhcmUgb3BlcmF0ZWQgb24uCisgKiBDb25kaXRpb25zOjogICAgICAg ICAgICAgICAgICBCcmVhayBjb25kaXRpb25zCisgKiBCcmVhayBDb21tYW5kczo6ICAgICAgICAg ICAgICBCcmVha3BvaW50IGNvbW1hbmQgbGlzdHMKKyAqIFNhdmUgQnJlYWtwb2ludHM6OiAgICAg ICAgICAgIEhvdyB0byBzYXZlIGJyZWFrcG9pbnRzIGluIGEgZmlsZQorKyogU3RhdGljIFByb2Jl IFBvaW50czo6ICAgICAgICAgTGlzdGluZyBzdGF0aWMgcHJvYmUgcG9pbnRzCisgKiBFcnJvciBp biBCcmVha3BvaW50czo6ICAgICAgICBgYENhbm5vdCBpbnNlcnQgYnJlYWtwb2ludHMnJworICog QnJlYWtwb2ludC1yZWxhdGVkIFdhcm5pbmdzOjogYGBCcmVha3BvaW50IGFkZHJlc3MgYWRqdXN0 ZWQuLi4nJworIEBlbmQgbWVudQorQEAgLTQ0OTksNiArNDUxMCw1MCBAQCBhbmQgcmVtb3ZlIHRo ZSBicmVha3BvaW50IGRlZmluaXRpb25zIHlvdSdyZSBub3QgaW50ZXJlc3RlZCBpbiwgb3IKKyB0 aGF0IGNhbiBubyBsb25nZXIgYmUgcmVjcmVhdGVkLgorIEBlbmQgdGFibGUKKyAKKytAbm9kZSBT dGF0aWMgUHJvYmUgUG9pbnRzCisrQHN1YnNlY3Rpb24gU3RhdGljIFByb2JlIFBvaW50cworKwor K0BjaW5kZXggU3lzdGVtVGFwIHN0YXRpYyBwcm9iZSBwb2ludAorK0BjaW5kZXggc2R0LXByb2Jl CisrVGhlIEBzY3tnbnV9L0xpbnV4IHRvb2wgQGNvZGV7U3lzdGVtVGFwfSBwcm92aWRlcyBhIHdh eSBmb3IKKythcHBsaWNhdGlvbnMgdG8gZW1iZWQgc3RhdGljIHByb2JlcywgdXNpbmcgQGZpbGV7 c2R0Lmh9LiAgQHZhbHVle0dEQk59CisrY2FuIGxpc3QgdGhlIGF2YWlsYWJsZSBwcm9iZXMsIGFu ZCB5b3UgY2FuIHB1dCBicmVha3BvaW50cyBhdCB0aGUKKytwcm9iZSBwb2ludHMgKEBweHJlZntT cGVjaWZ5IExvY2F0aW9ufSkuCisrCisrWW91IGNhbiBleGFtaW5lIHRoZSBhdmFpbGFibGUgQGNv ZGV7U3lzdGVtVGFwfSBzdGF0aWMgcHJvYmVzIHVzaW5nCisrQGNvZGV7aW5mbyBwcm9iZXN9Ogor KworK0B0YWJsZSBAY29kZQorK0BraW5kZXggaW5mbyBwcm9iZXMKKytAaXRlbSBpbmZvIHByb2Jl cyBbQHZhcntwcm92aWRlcn0gW0B2YXJ7bmFtZX0gW0B2YXJ7b2JqZmlsZX1dXV0KKytMaXN0IHRo ZSBhdmFpbGFibGUgQGNvZGV7U3lzdGVtVGFwfSBzdGF0aWMgcHJvYmVzLgorKworK0lmIGdpdmVu LCBAdmFye3Byb3ZpZGVyfSBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIHNlbGVjdCB3 aGljaAorK3Byb3ZpZGVycyB0byBsaXN0LiAgSWYgb21pdHRlZCwgYWxsIHByb3ZpZGVycyBhcmUg bGlzdGVkLgorKworK0lmIGdpdmVuLCBAdmFye25hbWV9IGlzIGEgcmVndWxhciBleHByZXNzaW9u IHVzZWQgdG8gc2VsZWN0IHdoaWNoCisrcHJvYmVzIHRvIGxpc3QuICBJZiBvbWl0dGVkLCBhbGwg cHJvYmVzIGFyZSBsaXN0ZWQuCisrCisrSWYgZ2l2ZW4sIEB2YXJ7b2JqZmlsZX0gaXMgYSByZWd1 bGFyIGV4cHJlc3Npb24gdXNlZCB0byBzZWxlY3Qgd2hpY2gKKytvYmplY3QgZmlsZXMgKGV4ZWN1 dGFibGUgb3Igc2hhcmVkIGxpYnJhcmllcykgdG8gZXhhbWluZS4gIElmIG5vdAorK2dpdmVuLCBh bGwgb2JqZWN0IGZpbGVzIGFyZSBjb25zaWRlcmVkLgorK0BlbmQgdGFibGUKKysKKytAdmluZGV4 ICRfcHJvYmVfYXJnQHJ7LCBjb252ZW5pZW5jZSB2YXJpYWJsZX0KKytBIHByb2JlIG1heSBzcGVj aWZ5IHVwIHRvIHRlbiBhcmd1bWVudHMuICBUaGVzZSBhcmUgYXZhaWxhYmxlIGF0IHRoZQorK3Bv aW50IGF0IHdoaWNoIHRoZSBwcm9iZSBpcyBkZWZpbmVkLS0tdGhhdCBpcywgd2hlbiB0aGUgY3Vy cmVudCBQQyBpcworK2F0IHRoZSBwcm9iZSdzIGxvY2F0aW9uLiAgVGhlIGFyZ3VtZW50cyBhcmUg YXZhaWxhYmxlIHVzaW5nIHRoZQorK2NvbnZlbmllbmNlIHZhcmlhYmxlcyAoQHB4cmVme0NvbnZl bmllbmNlIFZhcnN9KQorK0Bjb2RleyRfcHJvYmVfYXJnMH1AZG90c3t9QGNvZGV7JF9wcm9iZV9h cmc5fS4gIEVhY2ggcHJvYmUgYXJndW1lbnQgaXMKKythbiBpbnRlZ2VyIG9mIHRoZSBhcHByb3By aWF0ZSBzaXplOyB0eXBlcyBhcmUgbm90IHByZXNlcnZlZC4gIFRoZQorK2NvbnZlbmllbmNlIHZh cmlhYmxlIEBjb2RleyRfcHJvYmVfYXJnY30gaG9sZHMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMK KythdCB0aGUgY3VycmVudCBwcm9iZSBwb2ludC4KKysKKytUaGVzZSB2YXJpYWJsZXMgYXJlIGFs d2F5cyBhdmFpbGFibGUsIGJ1dCBhdHRlbXB0cyB0byBhY2Nlc3MgdGhlbSBhdAorK2FueSBsb2Nh dGlvbiBvdGhlciB0aGFuIGEgcHJvYmUgcG9pbnQgd2lsbCBjYXVzZSBAdmFsdWV7R0RCTn0gdG8g Z2l2ZQorK2FuIGVycm9yLgorKworKworIEBjICBAaWZjbGVhciBCQVJFVEFSR0VUCisgQG5vZGUg RXJyb3IgaW4gQnJlYWtwb2ludHMKKyBAc3Vic2VjdGlvbiBgYENhbm5vdCBpbnNlcnQgYnJlYWtw b2ludHMnJworQEAgLTY0MTEsNiArNjQ2NiwyOSBAQCBzcGVjaWZ5IHRoZSBmdW5jdGlvbiB1bmFt YmlndW91c2x5LCBlLmcuLCBpZiB0aGVyZSBhcmUgc2V2ZXJhbAorIGZ1bmN0aW9ucyB3aXRoIGlk ZW50aWNhbCBuYW1lcyBpbiBkaWZmZXJlbnQgc291cmNlIGZpbGVzLgorIEBlbmQgdGFibGUKKyAK KytAY2luZGV4IFN5c3RlbVRhcCBzdGF0aWMgcHJvYmUgcG9pbnQKKytAaXRlbSBwcm9iZTpAcntb fUB2YXJ7b2JqZmlsZX06QHJ7XX1AcntbfUB2YXJ7cHJvdmlkZXJ9OkBye119QHZhcntuYW1lfQor K1RoZSBAc2N7Z251fS9MaW51eCB0b29sIEBjb2Rle1N5c3RlbVRhcH0gcHJvdmlkZXMgYSB3YXkg Zm9yCisrYXBwbGljYXRpb25zIHRvIGVtYmVkIHN0YXRpYyBwcm9iZXMuICBUaGlzIGZvcm0gb2Yg bGluZXNwZWMgc3BlY2lmaWVzCisrdGhlIGxvY2F0aW9uIG9mIHN1Y2ggYSBzdGF0aWMgcHJvYmUu ICBTZWUKKytAdXJlZntodHRwOi8vc291cmNld2FyZS5vcmcvc3lzdGVtdGFwL3dpa2kvQWRkaW5n VXNlclNwYWNlUHJvYmluZ1RvQXBwc30KKytmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBzdGF0aWMg cHJvYmVzLgorKworK0lmIEB2YXJ7b2JqZmlsZX0gaXMgZ2l2ZW4sIG9ubHkgcHJvYmVzIGNvbWlu ZyBmcm9tIHRoYXQgc2hhcmVkIGxpYnJhcnkKKytvciBleGVjdXRhYmxlIGFyZSBjb25zaWRlcmVk LiAgSWYgQHZhcntwcm92aWRlcn0gaXMgZ2l2ZW4sIHRoZW4gb25seQorK3Byb2JlcyBmcm9tIHRo YXQgcHJvdmlkZXIgYXJlIGNvbnNpZGVyZWQuCisrCisrQHhyZWZ7U3RhdGljIFByb2JlIFBvaW50 c30sIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGZpbmRpbmcgYW5kIHVzaW5nCisrc3RhdGljIHBy b2Jlcy4KKysKKytTb21lIHByb2JlcyBoYXZlIGFuIGFzc29jaWF0ZWQgc2VtYXBob3JlIHZhcmlh YmxlOyBmb3IgaW5zdGFuY2UsIHRoaXMKKytoYXBwZW5zIGF1dG9tYXRpY2FsbHkgaWYgeW91IGRl ZmluZWQgeW91ciBwcm9iZSB1c2luZyBhIERUcmFjZS1zdHlsZQorK0BmaWxley5kfSBmaWxlLiAg SWYgeW91ciBwcm9iZSBoYXMgYSBzZW1hcGhvcmUsIEB2YWx1ZXtHREJOfSB3aWxsCisrYXV0b21h dGljYWxseSBlbmFibGUgaXQgd2hlbiB5b3Ugc3BlY2lmeSBhIGJyZWFrcG9pbnQgdXNpbmcgdGhl CisrQHNhbXB7cHJvYmU6fSBub3RhdGlvbi4gIEJ1dCwgaWYgeW91IHB1dCBhIGJyZWFrcG9pbnQg YXQgYSBwcm9iZSdzCisrbG9jYXRpb24gYnkgc29tZSBvdGhlciBtZXRob2QgKGUuZy4sIEBjb2Rl e2JyZWFrIGZpbGU6bGluZX0pLCB0aGVuCisrQHZhbHVle0dEQk59IHdpbGwgbm90IGF1dG9tYXRp Y2FsbHkgc2V0IHRoZSBzZW1hcGhvcmUuCisrCisgQGVuZCB0YWJsZQorIAorIAorQEAgLTg0OTcs NiArODU3NSwxMCBAQCB0byBtYXRjaCB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBkYXRhIHdhcyBw cmludGVkLgorIFRoZSB2YXJpYWJsZSBAY29kZXskX2V4aXRjb2RlfSBpcyBhdXRvbWF0aWNhbGx5 IHNldCB0byB0aGUgZXhpdCBjb2RlIHdoZW4KKyB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCB0 ZXJtaW5hdGVzLgorIAorK0BpdGVtICRfcHJvYmVfYXJnYworK0BpdGVteCAkX3Byb2JlX2FyZzBA ZG90c3t9JF9wcm9iZV9hcmc5CisrQXJndW1lbnRzIHRvIGEgU3lzdGVtVGFwIHN0YXRpYyBwcm9i ZS4gIEB4cmVme1N0YXRpYyBQcm9iZSBQb2ludHN9LgorKworIEBpdGVtICRfc2RhdGEKKyBAdmlu ZGV4ICRfc2RhdGFAcnssIGluc3BlY3QsIGNvbnZlbmllbmNlIHZhcmlhYmxlfQorIFRoZSB2YXJp YWJsZSBAY29kZXskX3NkYXRhfSBjb250YWlucyBleHRyYSBjb2xsZWN0ZWQgc3RhdGljIHRyYWNl cG9pbnQKK0BAIC0yMDY4OSw4ICsyMDc3MSw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZv ciBleGFtcGxlOgogIAogIEBzbWFsbGV4YW1wbGUKICAoQHZhbHVle0dEQlB9KSBweXRob24KQEAg LTExNTQsNyArMTUzMSw3IEBAIGluZGV4IGE1ZWFhNzIuLjZjYzk4ZGMgMTAwNjQ0CiAgPnByaW50 IDIzCiAgPmVuZAogIDIzCi1AQCAtMjA2OTEsNiArMjA2OTksMTQgQEAgaW4gYSBQeXRob24gc2Ny aXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKK0BAIC0y MDcwMyw2ICsyMDc4MywxNCBAQCBpbiBhIFB5dGhvbiBzY3JpcHQuICBUaGlzIGNhbiBiZSBjb250 cm9sbGVkIHVzaW5nIEBjb2Rle21haW50IHNldAogIHB5dGhvbiBwcmludC1zdGFja306IGlmIEBj b2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4gUHl0aG9uIHN0YWNrCiAgcHJpbnRpbmcgaXMgZW5h YmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlbiBQeXRob24gc3RhY2sgcHJpbnRpbmcgaXMKICBkaXNh YmxlZC4KQEAgLTExNjksNyArMTU0Niw3IEBAIGluZGV4IGE1ZWFhNzIuLjZjYzk4ZGMgMTAwNjQ0 CiAgQGVuZCB0YWJsZQogIAogIEl0IGlzIGFsc28gcG9zc2libGUgdG8gZXhlY3V0ZSBhIFB5dGhv biBzY3JpcHQgZnJvbSB0aGUgQHZhbHVle0dEQk59Ci1AQCAtMjA3MTIsNiArMjA3MjgsMTQgQEAg YW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KK0BAIC0yMDcyNCw2ICsyMDgxMiwxNCBAQCBh bmQgdGh1cyBpcyBhbHdheXMgYXZhaWxhYmxlLgogIEBjaW5kZXggcHl0aG9uIGFwaQogIEBjaW5k ZXggcHJvZ3JhbW1pbmcgaW4gcHl0aG9uCiAgCkBAIC0xMzMwLDcgKzE3MDcsNyBAQCBpbmRleCBk MTZjODY1Li45NDZhZDk1IDEwMDY0NAogIFRoaXMgb2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50ZXJu YWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAKICBTZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2JzZXJ2 ZXIuZXhwLgogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmMgYi9nZGIvZHdhcmYyZXhwci5j Ci1pbmRleCBhZmU2ZGRlLi5kMzY0YjE0IDEwMDY0NAoraW5kZXggOGQxODEwZS4uNGEzZTJmMiAx MDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJleHByLmMKICsrKyBiL2dkYi9kd2FyZjJleHByLmMKIEBA IC05MDUsNiArOTA1LDEzIEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2Nv bnRleHQgKmN0eCwKQEAgLTEzNjksNyArMTc0Niw3IEBAIGluZGV4IDc4ZmY1M2YuLmM4M2YyM2Qg MTAwNjQ0CiAgICAvKiBUaGUgY3VycmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vy c2lvbiwgdmlhIERXX09QX2NhbGwqLAogICAgICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2Jq ZWN0X2FkZHJlc3MsIGV0Yy4sIGFuZCB0aGUgbWF4aW11bQogZGlmZiAtLWdpdCBhL2dkYi9kd2Fy ZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2NDQK K2luZGV4IDlmZDhkZjAuLmNiZmI2ZDYgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsr KyBiL2dkYi9kd2FyZjJsb2MuYwogQEAgLTEzNCw2ICsxMzQsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhw cl9iYXRvbgpAQCAtMTQwMiw3ICsxNzc5LDcgQEAgaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2 NDQKICsgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiAhPSBOVUxMKTsKICsgICAgICAqc3RhcnQg PSBzeW1iYXRvbi0+ZGF0YTsKICsgICAgICAqbGVuZ3RoID0gc3ltYmF0b24tPnNpemU7Ci0gICAg IH0KKysgICAgfQogKyAgZWxzZSBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoZnJhbWVmdW5jKSA9 PSAmZHdhcmYyX21pc3NpbmdfZnVuY3MpCiArICAgIHsKICsgICAgICBzdHJ1Y3QgZHdhcmYyX2xv Y2V4cHJfYmF0b24gKnN5bWJhdG9uOwpAQCAtMTQxMSw3ICsxNzg4LDcgQEAgaW5kZXggZTUxNmRm YS4uMTJmNmExOSAxMDA2NDQKICsgICAgICBnZGJfYXNzZXJ0IChzeW1iYXRvbiA9PSBOVUxMKTsK ICsgICAgICAqc3RhcnQgPSBOVUxMOwogKyAgICAgICpsZW5ndGggPSAwOwkvKiB1bnVzZWQgKi8K LSsgICAgfQorICAgICB9CiArICBlbHNlCiArICAgIGludGVybmFsX2Vycm9yIChfX0ZJTEVfXywg X19MSU5FX18sCiArCQkgICAgXygiVW5zdXBwb3J0ZWQgU1lNQk9MX0NPTVBVVEVEX09QUyAlcCBm b3IgXCIlc1wiIiksCkBAIC0xNDI1LDggKzE4MDIsOCBAQCBpbmRleCBlNTE2ZGZhLi4xMmY2YTE5 IDEwMDY0NAogIH0KICAKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3YXJmMl9ldmFsdWF0ZV9s b2NfZGVzYy4gIENvbXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAtMjg2LDYgKzI5OSwxNTkgQEAgZHdh cmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIHNpemVf dCBkaWVfb2Zmc2V0KQotIAkJCSAgICBjdHgtPmdldF9mcmFtZV9wYywgY3R4LT5iYXRvbik7CitA QCAtMjg2LDYgKzI5OSwxNzIgQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdhcmZf ZXhwcl9jb250ZXh0ICpjdHgsIHNpemVfdCBkaWVfb2Zmc2V0KQorIAkJICAgICBjdHgtPmdldF9m cmFtZV9wYywgY3R4LT5iYXRvbik7CiAgfQogIAogK3N0YXRpYyBDT1JFX0FERFIKQEAgLTE0OTEs NiArMTg2OCw3IEBAIGluZGV4IGU1MTZkZmEuLjEyZjZhMTkgMTAwNjQ0CiArICBzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0ICpjdHg7CiArICBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbiBiYXRvbjsK ICsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChwZXJf Y3UpOworKyAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXg7CiArCiArICBiYXRvbi5m cmFtZSA9IGZyYW1lOwogKyAgYmF0b24ucGVyX2N1ID0gcGVyX2N1OwpAQCAtMTUxMiw3ICsxODkw LDE3IEBAIGluZGV4IGU1MTZkZmEuLjEyZjZhMTkgMTAwNjQ0CiArICBjdHgtPmR3YXJmX2NhbGwg PSBkd2FyZl9leHByX2R3YXJmX2NhbGw7CiArICBjdHgtPmdldF9vYmplY3RfYWRkcmVzcyA9IGR3 YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3M7CiArCi0rICBkd2FyZl9leHByX2V2YWwgKGN0eCwgZGF0 YSwgc2l6ZSk7CisrICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFTS19FUlJPUikKKysgICAgewor KyAgICAgIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXplKTsKKysgICAgfQorKyAgaWYg KGV4LnJlYXNvbiA8IDApCisrICAgIHsKKysgICAgICBpZiAoZXguZXJyb3IgPT0gTk9UX0FWQUlM QUJMRV9FUlJPUikKKysJcmV0dXJuIE5VTEw7CisrICAgICAgZWxzZQorKwl0aHJvd19leGNlcHRp b24gKGV4KTsKKysgICAgfQogKwogKyAgLyogSXQgd2FzIHVzZWQgb25seSBkdXJpbmcgZHdhcmZf ZXhwcl9ldmFsLiAgKi8KICsgIGN0eC0+YmF0b24gPSBOVUxMOwpAQCAtMTUzMiw2ICsxOTIwLDgg QEAgaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2NDQKICsKICsgIGN0eCA9IGR3YXJmX2V4cHJf cHJlcF9jdHggKGdldF9zZWxlY3RlZF9mcmFtZSAoTlVMTCksIGRsYmF0b24tPmRhdGEsCiArCQkJ ICAgICBkbGJhdG9uLT5zaXplLCBkbGJhdG9uLT5wZXJfY3UpOworKyAgaWYgKGN0eCA9PSBOVUxM KQorKyAgICB0aHJvd19lcnJvciAoTk9UX0FWQUlMQUJMRV9FUlJPUiwgXygiVmFsdWUgbm90IGF2 YWlsYWJsZSIpKTsKICsgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQogKyAgICBlcnJvciAoXygi RFdfT1BfKnBpZWNlIGlzIHVuc3VwcG9ydGVkIGZvciBEV19GT1JNX2Jsb2NrIikpOwogKwpAQCAt MTU4NSw3ICsxOTc1LDcgQEAgaW5kZXggZTUxNmRmYS4uMTJmNmExOSAxMDA2NDQKICBzdHJ1Y3Qg cGllY2VfY2xvc3VyZQogIHsKICAgIC8qIFJlZmVyZW5jZSBjb3VudC4gICovCi1AQCAtMTA0NSwx MCArMTIxMSw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTEwNzIsMTEgKzEyNTEsOCBAQCBk d2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSwKICAJCQkgICAgICAgTE9OR0VTVCBieXRlX29mZnNldCkKICB7CiAg ICBzdHJ1Y3QgdmFsdWUgKnJldHZhbDsKQEAgLTE1OTMsMTcgKzE5ODMsMTcgQEAgaW5kZXggZTUx NmRmYS4uMTJmNmExOSAxMDA2NDQKICAgIHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eDsK ICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAtICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVyX2N1KTsKKy0gIHZvbGF0aWxlIHN0cnVjdCBn ZGJfZXhjZXB0aW9uIGV4OwogIAogICAgaWYgKGJ5dGVfb2Zmc2V0IDwgMCkKICAgICAgaW52YWxp ZF9zeW50aGV0aWNfcG9pbnRlciAoKTsKLUBAIC0xMDYxLDI1ICsxMjI1LDEwIEBAIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lLAorQEAgLTEwODksMzggKzEyNjUsMTQgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19k ZXNjX2Z1bGwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAg ICAgICAgcmV0dXJuIHJldHZhbDsKICAgICAgfQogIAogLSAgYmF0b24uZnJhbWUgPSBmcmFtZTsK IC0gIGJhdG9uLnBlcl9jdSA9IHBlcl9jdTsKLSsgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAo bnVsbF9jbGVhbnVwLCAwKTsKLSAKKy0KIC0gIGN0eCA9IG5ld19kd2FyZl9leHByX2NvbnRleHQg KCk7CiAtICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQg KGN0eCk7CiAtCkBAIC0xNjE4LDEzICsyMDA4LDMxIEBAIGluZGV4IGU1MTZkZmEuLjEyZjZhMTkg MTAwNjQ0CiAtICBjdHgtPmdldF9mcmFtZV9wYyA9IGR3YXJmX2V4cHJfZnJhbWVfcGM7CiAtICBj dHgtPmdldF90bHNfYWRkcmVzcyA9IGR3YXJmX2V4cHJfdGxzX2FkZHJlc3M7CiAtICBjdHgtPmR3 YXJmX2NhbGwgPSBkd2FyZl9leHByX2R3YXJmX2NhbGw7CisrICBvbGRfY2hhaW4gPSBtYWtlX2Ns ZWFudXAgKG51bGxfY2xlYW51cCwgMCk7CisgCistICBUUllfQ0FUQ0ggKGV4LCBSRVRVUk5fTUFT S19FUlJPUikKKy0gICAgeworLSAgICAgIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRhLCBzaXpl KTsKKy0gICAgfQorLSAgaWYgKGV4LnJlYXNvbiA8IDApCiArICBjdHggPSBkd2FyZl9leHByX3By ZXBfY3R4IChmcmFtZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKKysgIGlmIChjdHggPT0gTlVMTCkK KyAgICAgeworLSAgICAgIGlmIChleC5lcnJvciA9PSBOT1RfQVZBSUxBQkxFX0VSUk9SKQorLQl7 CistCSAgcmV0dmFsID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworLQkgIG1hcmtfdmFsdWVfYnl0 ZXNfdW5hdmFpbGFibGUgKHJldHZhbCwgMCwgVFlQRV9MRU5HVEggKHR5cGUpKTsKKy0JICByZXR1 cm4gcmV0dmFsOworLQl9CistICAgICAgZWxzZQorLQl0aHJvd19leGNlcHRpb24gKGV4KTsKKysg ICAgICByZXR2YWwgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrICAgICAgbWFya192YWx1ZV9i eXRlc191bmF2YWlsYWJsZSAocmV0dmFsLCAwLCBUWVBFX0xFTkdUSCAodHlwZSkpOworKyAgICAg IHJldHVybiByZXR2YWw7CisgICAgIH0KICAKLS0gIGR3YXJmX2V4cHJfZXZhbCAoY3R4LCBkYXRh LCBzaXplKTsKICAgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQotICAgICB7Ci0gICAgICAgc3Ry dWN0IHBpZWNlX2Nsb3N1cmUgKmM7Ci1AQCAtMTEyMyw2ICsxMjcyLDE1IEBAIGR3YXJmMl9ldmFs dWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLAorQEAgLTExNjYsNiArMTMxOCwxNSBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2Nf ZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJICAg IENPUkVfQUREUiBhZGRyZXNzID0gZHdhcmZfZXhwcl9mZXRjaF9hZGRyZXNzIChjdHgsIDApOwog IAkgICAgaW50IGluX3N0YWNrX21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVt b3J5IChjdHgsIDApOwogIApAQCAtMTY0MCw3ICsyMDQ4LDcgQEAgaW5kZXggZTUxNmRmYS4uMTJm NmExOSAxMDA2NDQKICAJICAgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwog IAkgICAgVkFMVUVfTFZBTCAocmV0dmFsKSA9IGx2YWxfbWVtb3J5OwogIAkgICAgaWYgKGluX3N0 YWNrX21lbW9yeSkKLUBAIC0yODA3LDExICsyOTY1LDUxIEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92 YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor QEAgLTI4NTAsMTEgKzMwMTEsNTEgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVj dCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgCQkJICAgICAgIGRs YmF0b24tPnBlcl9jdSk7CiAgfQogIApAQCAtMTcxNSw3ICsyMTIzLDcgQEAgaW5kZXggOTZhNDkw ZS4uYjBlYmIwNiAxMDA2NDQKICAvKiBDb21waWxlIGEgRFdBUkYgbG9jYXRpb24gZXhwcmVzc2lv biB0byBhbiBhZ2VudCBleHByZXNzaW9uLgogICAgIAogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJy ZWFkLmMgYi9nZGIvZHdhcmYycmVhZC5jCi1pbmRleCBkMTIwMjhmLi4zZjQ1YWZmIDEwMDY0NAor aW5kZXggODEwZjY2YS4uZjhkMjBhYyAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKICsr KyBiL2dkYi9kd2FyZjJyZWFkLmMKIEBAIC0xMjExLDYgKzEyMTEsOSBAQCBzdGF0aWMgdm9pZCBm aWxsX2luX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBkd2FyZjJfY3UgKmN1LApAQCAtMjE3Nyw3ICsy NTg1LDcgQEAgaW5kZXggZDEyMDI4Zi4uM2Y0NWFmZiAxMDA2NDQKICAKICAgIG5hbWUgPSBkd2Fy ZjJfbmFtZSAoZGllLCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC0xMDc4NiwxMCArMTA5OTQsMTIg QEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5 bWJvbCAqc3ltLAorQEAgLTEwODM1LDEwICsxMTA0MywxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9u IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5l LiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAg ICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2Fp biwgaXQgbWlnaHQKICAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQg aXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1hbmNlCkBAIC0yMTkyLDcgKzI2MDAsNyBAQCBpbmRleCBk MTIwMjhmLi4zZjQ1YWZmIDEwMDY0NAogIH0KICAKICAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBE V0FSRiBpbmZvcm1hdGlvbiBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCi1AQCAtMTA4Mjcs NiArMTEwMzcsOCBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTA4NzYsNiArMTEwODYs OCBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICAgICAgZWxzZQogIAlzeW0gPSBPQlNUQUNL X1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IHN5bWJvbCk7CiAgICAg ICAgT0JKU1RBVCAob2JqZmlsZSwgbl9zeW1zKyspOwpAQCAtMjIwMSw3ICsyNjA5LDcgQEAgaW5k ZXggZDEyMDI4Zi4uM2Y0NWFmZiAxMDA2NDQKICAKICAgICAgICAvKiBDYWNoZSB0aGlzIHN5bWJv bCdzIG5hbWUgYW5kIHRoZSBuYW1lJ3MgZGVtYW5nbGVkIGZvcm0gKGlmIGFueSkuICAqLwogICAg ICAgIFNZTUJPTF9TRVRfTEFOR1VBR0UgKHN5bSwgY3UtPmxhbmd1YWdlKTsKLUBAIC0xMTU5OSw2 ICsxMTgxMSw5IEBAIHJlYWRfdHlwZV9kaWVfMSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTExNjQ4LDYgKzExODYwLDkgQEAgcmVhZF90eXBlX2RpZV8x IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICAgYnJl YWs7CiAgICAgIH0KICAKQEAgLTIyMTEsNyArMjYxOSw3IEBAIGluZGV4IGQxMjAyOGYuLjNmNDVh ZmYgMTAwNjQ0CiAgICByZXR1cm4gdGhpc190eXBlOwogIH0KICAKLUBAIC0xNDQxOSw2MSArMTQ2 MzQsOTkgQEAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKK0BA IC0xNDQ2OCw2MSArMTQ2ODMsOTkgQEAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgZHdh cmYyX2N1ICpjdSwKICAgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOwog IH0KICAKQEAgLTIzNTQsNyArMjc2Miw3IEBAIGluZGV4IGQxMjAyOGYuLjNmNDVhZmYgMTAwNjQ0 CiAgICAgIH0KICB9CiAgCi1AQCAtMTQ4MTksNiArMTUwNzIsMjUgQEAgb2Zmc2V0X2FuZF90eXBl X2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCitAQCAtMTQ4 NjgsNiArMTUxMjEsMjUgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xo cywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCiAgICByZXR1cm4gb2ZzX2xocy0+b2Zmc2V0ID09IG9m c19yaHMtPm9mZnNldDsKICB9CiAgCkBAIC0yMzgwLDcgKzI3ODgsNyBAQCBpbmRleCBkMTIwMjhm Li4zZjQ1YWZmIDEwMDY0NAogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRv IFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZv ciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTQ4NDQsNiArMTUxMTYsOCBAQCBz ZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMTQ4OTMsNiArMTUxNjUsOCBAQCBzZXRfZGllX3R5cGUg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwogICAgaHRh Yl90ICp0eXBlX2hhc2hfcHRyOwogIApAQCAtMjM5MCwxOCArMjc5OCw1NiBAQCBpbmRleCBkMTIw MjhmLi4zZjQ1YWZmIDEwMDY0NAogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNl dCkuICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBub3QgYmUg ZG9pbmcgc28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwogZGlmZiAtLWdpdCBh L2dkYi9lbGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5jCi1pbmRleCBjNTkxMzRiLi5jMmM4MjI5IDEw MDY0NAoraW5kZXggZTYzOGEzNi4uYzE4OTNmZSAxMDA2NDQKIC0tLSBhL2dkYi9lbGZyZWFkLmMK ICsrKyBiL2dkYi9lbGZyZWFkLmMKLUBAIC0zNyw2ICszNyw3IEBACitAQCAtMzcsNiArMzcsMTQg QEAKICAjaW5jbHVkZSAiY29tcGxhaW50cy5oIgogICNpbmNsdWRlICJkZW1hbmdsZS5oIgogICNp bmNsdWRlICJwc3ltcHJpdi5oIgogKyNpbmNsdWRlICJnZGJ0eXBlcy5oIgorKyNpbmNsdWRlICJ2 YWx1ZS5oIgorKyNpbmNsdWRlICJpbmZjYWxsLmgiCisrI2luY2x1ZGUgImdkYnRocmVhZC5oIgor KyNpbmNsdWRlICJyZWdjYWNoZS5oIgorKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCisrI2luY2x1 ZGUgImFyY2gtdXRpbHMuaCIKKysjaW5jbHVkZSAiZ2RidHlwZXMuaCIKICAKICBleHRlcm4gdm9p ZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKICAKLUBAIC0xODMsNyArMTg0LDggQEAgcmVj b3JkX21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBpbnQgbmFtZV9sZW4sIGludCBj b3B5X25hbWUsCitAQCAtNTUsOCArNjMsMzAgQEAgc3RydWN0IGVsZmluZm8KKyAgICAgYXNlY3Rp b24gKm1kZWJ1Z3NlY3Q7CS8qIFNlY3Rpb24gcG9pbnRlciBmb3IgLm1kZWJ1ZyBzZWN0aW9uICov CisgICB9OworIAorKy8qIFBlci1vYmpmaWxlIGRhdGEgZm9yIFN5c3RlbXRhcCBwcm9iZSBpbmZv LiAgKi8KKysKKytzdGF0aWMgY29uc3Qgc3RydWN0IG9iamZpbGVfZGF0YSAqc3RhcF9wcm9iZV9r ZXkgPSBOVUxMOworKworKy8qIFBlci1vYmpmaWxlIGRhdGEgYWJvdXQgU3lzdGVtdGFwIHByb2Jl cy4gICovCisrCisrc3RydWN0IHN0YXBfcHJvYmVfcGVyX29iamZpbGUKKysgIHsKKysgICAgLyog VGhlIG51bWJlciBvZiBwcm9iZXMgaW4gdGhpcyBvYmpmaWxlLiAgKi8KKysgICAgaW50IHN0YXBf bnVtX3Byb2JlczsKKysKKysgICAgLyogVGhlIHByb2JlcyB0aGVtc2VsdmVzLiAgKi8KKysgICAg c3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKKysgIH07CisrCisgc3RhdGljIHZvaWQgZnJlZV9l bGZpbmZvICh2b2lkICopOworIAorKy8qIE1pbmltYWwgc3ltYm9scyBsb2NhdGVkIGF0IHRoZSBH T1QgZW50cmllcyBmb3IgLnBsdCAtIHRoYXQgaXMgdGhlIHJlYWwKKysgICBwb2ludGVyIHdoZXJl IHRoZSBnaXZlbiBlbnRyeSB3aWxsIGp1bXAgdG8uICBJdCBnZXRzIHVwZGF0ZWQgYnkgdGhlIHJl YWwKKysgICBmdW5jdGlvbiBhZGRyZXNzIGR1cmluZyBsYXp5IGxkLnNvIHJlc29sdmluZyBpbiB0 aGUgaW5mZXJpb3IuICBUaGVzZQorKyAgIG1pbmltYWwgc3ltYm9scyBhcmUgaW5kZXhlZCBmb3Ig PHRhYj4tY29tcGxldGlvbi4gICovCisrCisrI2RlZmluZSBTWU1CT0xfR09UX1BMVF9TVUZGSVgg IkBnb3QucGx0IgorKworIC8qIExvY2F0ZSB0aGUgc2VnbWVudHMgaW4gQUJGRC4gICovCisgCisg c3RhdGljIHN0cnVjdCBzeW1maWxlX3NlZ21lbnRfZGF0YSAqCitAQCAtMTg0LDcgKzIxNCw4IEBA IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IG5hbWVfbGVuLCBp bnQgY29weV9uYW1lLAogIHsKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZp bGVfYXJjaCAob2JqZmlsZSk7CiAgCkBAIC0yNDExLDcgKzI4NTcsNyBAQCBpbmRleCBjNTkxMzRi Li5jMmM4MjI5IDEwMDY0NAogICAgICBhZGRyZXNzID0gZ2RiYXJjaF9zbWFzaF90ZXh0X2FkZHJl c3MgKGdkYmFyY2gsIGFkZHJlc3MpOwogIAogICAgcmV0dXJuIHByaW1fcmVjb3JkX21pbmltYWxf c3ltYm9sX2Z1bGwgKG5hbWUsIG5hbWVfbGVuLCBjb3B5X25hbWUsIGFkZHJlc3MsCi1AQCAtMzkx LDcgKzM5MywxMCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBp bnQgdHlwZSwKK0BAIC0zOTMsNyArNDI0LDEwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIGludCB0eXBlLAogIAkgICAgewogIAkgICAgICBpZiAoc3ltLT5mbGFn cyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dFQUspKQogIAkJewpAQCAtMjQyMywxMSArMjg2OSwxNiBA QCBpbmRleCBjNTkxMzRiLi5jMmM4MjI5IDEwMDY0NAogIAkJfQogIAkgICAgICBlbHNlIGlmICgo c3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQogIAkJICAgICAgIHx8 ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKLUBAIC01NzQsNiArNTc5LDI1MCBAQCBlbGZfc3lt dGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwKLSAgICAgfQorQEAg LTU3Nyw2ICs2MTEsNDY3IEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIGludCB0eXBlLAorICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwogIH0KICAKLSsvKiBGSVhN RTogRGVsYXkgaXQgdGhyb3VnaCBlbGZfc3ltX2Zucy4gICovCisrLyogQnVpbGQgbWluaW1hbCBz eW1ib2xzIG5hbWVkIGBmdW5jdGlvbkBnb3QucGx0JyAoc2VlIFNZTUJPTF9HT1RfUExUX1NVRkZJ WCkKKysgICBmb3IgbGF0ZXIgbG9vayB1cHMgb2Ygd2hpY2ggZnVuY3Rpb24gdG8gY2FsbCB3aGVu IHVzZXIgcmVxdWVzdHMKKysgICBhIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24uICBBcyB0aGUgU1RU X0dOVV9JRlVOQyB0eXBlIGlzIGZvdW5kIGF0IHRoZSB0YXJnZXQKKysgICBsaWJyYXJ5IGRlZmlu aW5nIGBmdW5jdGlvbicgd2UgY2Fubm90IHlldCBrbm93IHdoaWxlIHJlYWRpbmcgT0JKRklMRSB3 aGljaAorKyAgIG9mIHRoZSBTWU1CT0xfR09UX1BMVF9TVUZGSVggZW50cmllcyB3aWxsIGJlIG5l ZWRlZCBhbmQgbGF0ZXIKKysgICBEWU5fU1lNQk9MX1RBQkxFIGlzIG5vIGxvbmdlciBlYXNpbHkg YXZhaWxhYmxlIGZvciBPQkpGSUxFLiAgKi8KICsKICtzdGF0aWMgdm9pZAogK2VsZl9yZWxfcGx0 X3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBhc3ltYm9sICoqZHluX3N5bWJvbF90YWJs ZSkKQEAgLTI0NzcsOCArMjkyOCw3IEBAIGluZGV4IGM1OTEzNGIuLmMyYzgyMjkgMTAwNjQ0CiAr ICAgICAgY29uc3QgY2hhciAqbmFtZSwgKm5hbWVfZ290X3BsdDsKICsgICAgICBzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKm1zeW07CiArICAgICAgQ09SRV9BRERSIGFkZHJlc3M7Ci0rICAgICAgY29u c3QgY2hhciAqc3VmZml4ID0gIkBnb3QucGx0IjsKLSsgICAgICBzaXplX3Qgc3VmZml4X2xlbiA9 IHN0cmxlbiAoc3VmZml4KTsKKysgICAgICBjb25zdCBzaXplX3QgZ290X3N1ZmZpeF9sZW4gPSBz dHJsZW4gKFNZTUJPTF9HT1RfUExUX1NVRkZJWCk7CiArICAgICAgc2l6ZV90IG5hbWVfbGVuOwog KwogKyAgICAgIG5hbWUgPSBiZmRfYXN5bWJvbF9uYW1lICgqcmVscGx0LT5yZWxvY2F0aW9uW3Jl bG9jXS5zeW1fcHRyX3B0cik7CkBAIC0yNDk1LDE2ICsyOTQ1LDE3IEBAIGluZGV4IGM1OTEzNGIu LmMyYzgyMjkgMTAwNjQ0CiArCSBPQkpGSUxFIHRoZSBzeW1ib2wgaXMgdW5kZWZpbmVkIGFuZCB0 aGUgb2JqZmlsZSBoYXZpbmcgTkFNRSBkZWZpbmVkCiArCSBtYXkgbm90IHlldCBoYXZlIGJlZW4g bG9hZGVkLiAgKi8KICsKLSsgICAgICBpZiAoc3RyaW5nX2J1ZmZlcl9zaXplIDwgbmFtZV9sZW4g KyBzdWZmaXhfbGVuKQorKyAgICAgIGlmIChzdHJpbmdfYnVmZmVyX3NpemUgPCBuYW1lX2xlbiAr IGdvdF9zdWZmaXhfbGVuKQogKwl7Ci0rCSAgc3RyaW5nX2J1ZmZlcl9zaXplID0gMiAqIChuYW1l X2xlbiArIHN1ZmZpeF9sZW4pOworKwkgIHN0cmluZ19idWZmZXJfc2l6ZSA9IDIgKiAobmFtZV9s ZW4gKyBnb3Rfc3VmZml4X2xlbik7CiArCSAgc3RyaW5nX2J1ZmZlciA9IHhyZWFsbG9jIChzdHJp bmdfYnVmZmVyLCBzdHJpbmdfYnVmZmVyX3NpemUpOwogKwl9CiArICAgICAgbWVtY3B5IChzdHJp bmdfYnVmZmVyLCBuYW1lLCBuYW1lX2xlbik7Ci0rICAgICAgbWVtY3B5ICgmc3RyaW5nX2J1ZmZl cltuYW1lX2xlbl0sIHN1ZmZpeCwgc3VmZml4X2xlbik7CisrICAgICAgbWVtY3B5ICgmc3RyaW5n X2J1ZmZlcltuYW1lX2xlbl0sIFNZTUJPTF9HT1RfUExUX1NVRkZJWCwKKysJICAgICAgZ290X3N1 ZmZpeF9sZW4pOwogKwotKyAgICAgIG1zeW0gPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKHN0cmlu Z19idWZmZXIsIG5hbWVfbGVuICsgc3VmZml4X2xlbiwgMSwKLSsJCQkJICAgIGFkZHJlc3MsIG1z dF9zbG90X2dvdF9wbHQsIGdvdF9wbHQsCisrICAgICAgbXN5bSA9IHJlY29yZF9taW5pbWFsX3N5 bWJvbCAoc3RyaW5nX2J1ZmZlciwgbmFtZV9sZW4gKyBnb3Rfc3VmZml4X2xlbiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBhZGRyZXNzLCBtc3Rfc2xvdF9nb3RfcGx0 LCBnb3RfcGx0LAogKwkJCQkgICAgb2JqZmlsZSk7CiArICAgICAgaWYgKG1zeW0pCiArCU1TWU1C T0xfU0laRSAobXN5bSkgPSBwdHJfc2l6ZTsKQEAgLTI1MTMsMjMgKzI5NjQsNjQgQEAgaW5kZXgg YzU5MTM0Yi4uYzJjODIyOSAxMDA2NDQKICsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKICt9CiAr Ci0rLyogRnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgZm9yIHBvc3NpYmx5IGNyZWF0ZWQgZHVwbGlj aXRpZXMgaW4gdGhlIGNhY2hlLgotKyAgIENoZWNrIGl0IGJ5IHJlc29sdmVfZ251X2lmdW5jX2J5 X2NhY2hlIGZpcnN0LiAgKi8KKysvKiBUaGUgZGF0YSBwb2ludGVyIGlzIGh0YWJfdCBmb3IgZ251 X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQuICAqLworKworK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgb2JqZmlsZV9kYXRhICplbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVfZGF0YTsKKysKKysv KiBNYXAgZnVuY3Rpb24gbmFtZXMgdG8gQ09SRV9BRERSIGluIGVsZl9vYmpmaWxlX2dudV9pZnVu Y19jYWNoZV9kYXRhLiAgKi8KKysKKytzdHJ1Y3QgZWxmX2dudV9pZnVuY19jYWNoZQorK3sKKysg IC8qIFRoaXMgaXMgYWx3YXlzIGEgZnVuY3Rpb24gZW50cnkgYWRkcmVzcywgbm90IGEgZnVuY3Rp b24gZGVzY3JpcHRvci4gICovCisrICBDT1JFX0FERFIgYWRkcjsKKysKKysgIGNoYXIgbmFtZVsx XTsKKyt9OworKworKy8qIGh0YWJfaGFzaCBmb3IgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hl X2RhdGEuICAqLworKworK3N0YXRpYyBoYXNodmFsX3QKKytlbGZfZ251X2lmdW5jX2NhY2hlX2hh c2ggKGNvbnN0IHZvaWQgKmFfdm9pZHApCisreworKyAgY29uc3Qgc3RydWN0IGVsZl9nbnVfaWZ1 bmNfY2FjaGUgKmEgPSBhX3ZvaWRwOworKworKyAgcmV0dXJuIGh0YWJfaGFzaF9zdHJpbmcgKGEt Pm5hbWUpOworK30KKysKKysvKiBodGFiX2VxIGZvciBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2Fj aGVfZGF0YS4gICovCisrCisrc3RhdGljIGludAorK2VsZl9nbnVfaWZ1bmNfY2FjaGVfZXEgKGNv bnN0IHZvaWQgKmFfdm9pZHAsIGNvbnN0IHZvaWQgKmJfdm9pZHApCisreworKyAgY29uc3Qgc3Ry dWN0IGVsZl9nbnVfaWZ1bmNfY2FjaGUgKmEgPSBhX3ZvaWRwOworKyAgY29uc3Qgc3RydWN0IGVs Zl9nbnVfaWZ1bmNfY2FjaGUgKmIgPSBiX3ZvaWRwOworKworKyAgcmV0dXJuIHN0cmNtcCAoYS0+ bmFtZSwgYi0+bmFtZSkgPT0gMDsKKyt9CisrCisrLyogUmVjb3JkIHRoZSB0YXJnZXQgZnVuY3Rp b24gYWRkcmVzcyBvZiBhIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24gTkFNRSBpcyB0aGUKKysgICBm dW5jdGlvbiBlbnRyeSBhZGRyZXNzIEFERFIuICBSZXR1cm4gMSBpZiBOQU1FIGFuZCBBRERSIGFy ZSBjb25zaWRlcmVkIGFzCisrICAgdmFsaWQgYW5kIHRoZXJlZm9yZSB0aGV5IHdlcmUgc3VjY2Vz c2Z1bGx5IHJlY29yZGVkLCByZXR1cm4gMCBvdGhlcndpc2UuCisrCisrICAgRnVuY3Rpb24gZG9l cyBub3QgZXhwZWN0IGEgZHVwbGljYXRlIGVudHJ5LiAgVXNlCisrICAgZWxmX2dudV9pZnVuY19y ZXNvbHZlX2J5X2NhY2hlIGZpcnN0IHRvIGNoZWNrIGlmIHRoZSBlbnRyeSBmb3IgTkFNRSBhbHJl YWR5CisrICAgZXhpc3RzLiAgKi8KICsKLStzdGF0aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sICoK LStnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoY29uc3QgY2hhciAqZnVuY3Rpb25f bmFtZSwKLSsJCQkJICBDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykKKytzdGF0aWMgaW50Cisr ZWxmX2dudV9pZnVuY19yZWNvcmRfY2FjaGUgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiBh ZGRyKQogK3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSwgKm1zeW1fbmV3OworKyAg c3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwogKyAgYXNlY3Rpb24gKnNlY3Q7CiArICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3Rn dDsKKysgIGh0YWJfdCBodGFiOworKyAgc3RydWN0IGVsZl9nbnVfaWZ1bmNfY2FjaGUgZW50cnlf bG9jYWwsICplbnRyeV9wOworKyAgdm9pZCAqKnNsb3Q7CiArCi0rICBtc3ltID0gbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjIChmdW5jdGlvbl9hZGRyZXNzKTsKKysgIG1zeW0gPSBsb29rdXBf bWluaW1hbF9zeW1ib2xfYnlfcGMgKGFkZHIpOwogKyAgaWYgKG1zeW0gPT0gTlVMTCkKLSsgICAg cmV0dXJuIE5VTEw7Ci0rICBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0 aW9uX2FkZHJlc3MpCi0rICAgIHJldHVybiBOVUxMOworKyAgICByZXR1cm4gMDsKKysgIGlmIChT WU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSkgIT0gYWRkcikKKysgICAgcmV0dXJuIDA7CiArICAv KiBtaW5pbWFsIHN5bWJvbHMgaGF2ZSBhbHdheXMgU1lNQk9MX09CSl9TRUNUSU9OIG5vbi1OVUxM LiAgKi8KICsgIHNlY3QgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT50aGVfYmZkX3NlY3Rp b247CiArICBvYmpmaWxlID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3ltKS0+b2JqZmlsZTsKQEAg LTI1MzgsNjcgKzMwMzAsMTA1IEBAIGluZGV4IGM1OTEzNGIuLmMyYzgyMjkgMTAwNjQ0CiArICAg ICByZXNvbHV0aW9uIGFuZCBpdCBoYXMgbm8gdXNlIGZvciBHREIuICBCZXNpZGVzICIudGV4dCIg dGhpcyBzeW1ib2wgY2FuCiArICAgICByZXNpZGUgYWxzbyBpbiAiLm9wZCIgZm9yIHBwYzY0IGZ1 bmN0aW9uIGRlc2NyaXB0b3IuICAqLwogKyAgaWYgKHN0cmNtcCAoYmZkX2dldF9zZWN0aW9uX25h bWUgKG9iamZpbGUtPm9iZmQsIHNlY3QpLCAiLnBsdCIpID09IDApCi0rICAgIHJldHVybiBOVUxM OwotKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1 bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKLSsg IHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3Qi LCBmdW5jdGlvbl9uYW1lKTsKLSsKLSsgIC8qIENyZWF0ZSBuZXcgYWxpYXMgIkBnbnUtaWZ1bmMt dGd0IiBmb3IgTVNZTS4gICovCi0rICBtc3ltX25ldyA9IHJlY29yZF9taW5pbWFsX3N5bWJvbCAo ZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0LAotKwkJCQkgICAgc3RybGVuIChmdW5jdGlvbl9u YW1lX2dudV9pZnVuY190Z3QpLCAxLAotKwkJCQkgICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1z eW0pLAotKwkJCQkgICAgTVNZTUJPTF9UWVBFIChtc3ltKSwgc2VjdCwgb2JqZmlsZSk7Ci0rICAv KiBTaG91bGQgbm90IGhhcHBlbi4gICovCi0rICBpZiAobXN5bV9uZXcgPT0gTlVMTCkKICsgICAg cmV0dXJuIDA7CiArCi0rICAvKiBvYmpmaWxlLT5tc3ltYm9scyBhcnJheSBpcyBhbHJlYWR5IGFs bG9jYXRlZCBvbiBvYnN0YWNrIGFuZCBpdCBjYW5ub3QgYmUKLSsgICAgIGVhc2lseSBleHRlbmRl ZC4gIFRoZXJlZm9yZSA8dGFiPi1jb21wbGV0aW9uIG9uIHN5bWJvbCBuYW1lcyB3aWxsIG5ldmVy Ci0rICAgICBzaG93IHRoZSBAZ251LWlmdW5jLXRndCBzeW1ib2wuICBMaW5rIGl0IGF0IGxlYXN0 IHRvIHRoZSBoYXNoIHRhYmxlIHNvCi0rICAgICB0aGF0IHJlc29sdmVfZ251X2lmdW5jX2J5X2Nh Y2hlIGNhbiBmaW5kIGl0LiAgKi8KLSsgIGFkZF9taW5zeW1fdG9faGFzaF90YWJsZSAobXN5bV9u ZXcsIG9iamZpbGUtPm1zeW1ib2xfaGFzaCk7Ci0rICAgIAotKyAgTVNZTUJPTF9TSVpFIChtc3lt X25ldykgPSBNU1lNQk9MX1NJWkUgKG1zeW0pOwotKyAgcmV0dXJuIG1zeW1fbmV3OworKyAgaHRh YiA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgZWxmX29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2Rh dGEpOworKyAgaWYgKGh0YWIgPT0gTlVMTCkKKysgICAgeworKyAgICAgIGh0YWIgPSBodGFiX2Ny ZWF0ZV9hbGxvY19leCAoMSwgZWxmX2dudV9pZnVuY19jYWNoZV9oYXNoLAorKwkJCQkgICBlbGZf Z251X2lmdW5jX2NhY2hlX2VxLAorKwkJCQkgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAorKwkJCQkgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCisrCQkJCSAgIGR1bW15X29i c3RhY2tfZGVhbGxvY2F0ZSk7CisrICAgICAgc2V0X29iamZpbGVfZGF0YSAob2JqZmlsZSwgZWxm X29iamZpbGVfZ251X2lmdW5jX2NhY2hlX2RhdGEsIGh0YWIpOworKyAgICB9CisrCisrICBlbnRy eV9sb2NhbC5hZGRyID0gYWRkcjsKKysgIG9ic3RhY2tfZ3JvdyAoJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjaywgJmVudHJ5X2xvY2FsLAorKwkJb2Zmc2V0b2YgKHN0cnVjdCBlbGZfZ251X2lmdW5j X2NhY2hlLCBuYW1lKSk7CisrICBvYnN0YWNrX2dyb3dfc3RyMCAoJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjaywgbmFtZSk7CisrICBlbnRyeV9wID0gb2JzdGFja19maW5pc2ggKCZvYmpmaWxlLT5v YmpmaWxlX29ic3RhY2spOworKworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChodGFiLCBlbnRy eV9wLCBJTlNFUlQpOworKyAgaWYgKCpzbG90ICE9IE5VTEwpCisrICAgIHsKKysgICAgICBzdHJ1 Y3QgZWxmX2dudV9pZnVuY19jYWNoZSAqZW50cnlfZm91bmRfcCA9ICpzbG90OworKyAgICAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+Z2RiYXJjaDsKKysKKysgICAgICBpZiAo ZW50cnlfZm91bmRfcC0+YWRkciAhPSBhZGRyKQorKwl7CisrCSAgLyogVGhpcyBjYXNlIGluZGlj YXRlcyBidWdneSBpbmZlcmlvciBwcm9ncmFtLCB0aGUgcmVzb2x2ZWQgYWRkcmVzcworKwkgICAg IHNob3VsZCBuZXZlciBjaGFuZ2UuICAqLworKworKwkgICAgd2FybmluZyAoXygiZ251LWluZGly ZWN0LWZ1bmN0aW9uIFwiJXNcIiBoYXMgY2hhbmdlZCBpdHMgcmVzb2x2ZWQgIgorKwkJICAgICAg ICJmdW5jdGlvbl9hZGRyZXNzIGZyb20gJXMgdG8gJXMiKSwKKysJCSAgICAgbmFtZSwgcGFkZHJl c3MgKGdkYmFyY2gsIGVudHJ5X2ZvdW5kX3AtPmFkZHIpLAorKwkJICAgICBwYWRkcmVzcyAoZ2Ri YXJjaCwgYWRkcikpOworKwl9CisrCisrICAgICAgLyogTmV3IEVOVFJZX1AgaXMgaGVyZSBsZWFr ZWQvZHVwbGljYXRlIGluIHRoZSBPQkpGSUxFIG9ic3RhY2suICAqLworKyAgICB9CisrICAqc2xv dCA9IGVudHJ5X3A7CisrCisrICByZXR1cm4gMTsKICt9CiArCi0rLyogQ2hlY2sgZmlyc3QgdGhl IGNhY2hlIGlmIGl0IC0gdW5saWtlbHkgLSBoYXMgbm90IGJlZW4gcG9wdWxhdGVkIHNpbmNlCi0r ICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyIGhhcyBiZWVuIGNyZWF0ZWQuICBnbnVfaWZ1bmNfcmVj b3JkX2NhY2hlX3VuY2hlY2tlZAotKyAgIGNvdWxkIGNyZWF0ZSBhIGR1cGxpY2F0ZSBzeW1ib2wg b3RoZXJ3aXNlLiAgKi8KKysvKiBUcnkgdG8gZmluZCB0aGUgdGFyZ2V0IHJlc29sdmVkIGZ1bmN0 aW9uIGVudHJ5IGFkZHJlc3Mgb2YgYSBTVFRfR05VX0lGVU5DCisrICAgZnVuY3Rpb24gTkFNRS4g IElmIHRoZSBhZGRyZXNzIGlzIGZvdW5kIGl0IGlzIHN0b3JlZCB0byAqQUREUl9QIChpZiBBRERS X1AKKysgICBpcyBub3QgTlVMTCkgYW5kIHRoZSBmdW5jdGlvbiByZXR1cm5zIDEuICBJdCByZXR1 cm5zIDAgb3RoZXJ3aXNlLgogKwotK3ZvaWQKLStnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKLSsJCQlDT1JF X0FERFIgZnVuY3Rpb25fYWRkcmVzcykKKysgICBPbmx5IHRoZSBlbGZfb2JqZmlsZV9nbnVfaWZ1 bmNfY2FjaGVfZGF0YSBoYXNoIHRhYmxlIGlzIHNlYXJjaGVkIGJ5IHRoaXMKKysgICBmdW5jdGlv bi4gICovCisrCisrc3RhdGljIGludAorK2VsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9ieV9jYWNoZSAo Y29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSICphZGRyX3ApCiArewotKyAgc3RydWN0IG1pbmlt YWxfc3ltYm9sICptc3ltOworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CiArCi0rICBtc3lt ID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9uX25hbWUpOwotKyAgaWYgKG1z eW0gPT0gTlVMTCkKLSsgICAgZ251X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQgKGZ1bmN0 aW9uX25hbWUsIGZ1bmN0aW9uX2FkZHJlc3MpOwotKyAgZWxzZSBpZiAoU1lNQk9MX1ZBTFVFX0FE RFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9uX2FkZHJlc3MpCisrICBBTExfUFNQQUNFX09CSkZJTEVT IChjdXJyZW50X3Byb2dyYW1fc3BhY2UsIG9iamZpbGUpCiArICAgIHsKLSsgICAgICAvKiBUaGlz IGNhc2UgaW5kaWNhdGVzIGJ1Z2d5IGluZmVyaW9yIHByb2dyYW0uICBHREIgd291bGQgbmVlZCB0 byB1cGRhdGUKLSsJIGl0cyBNU1lNIGNhY2hlIHN5bWJvbCBmb3IgZnVuY3Rpb25fYWRkcmVzcy4g IEFueXdheSBGVU5DVElPTl9OQU1FIGlzCi0rCSBuZXZlciBub3JtYWxseSBmb3VuZCBpbiB0aGUg Y2FzZSBhcyBpbiBzdWNoIGNhc2Ugbm8KLSsJIGJwX2dudV9pZnVuY19yZXNvbHZlciB3b3VsZCBi ZSBjcmVhdGVkIGluIHRoZSBmaXJzdCBwbGFjZS4gICovCi0rCi0rICAgICAgd2FybmluZyAoXygi Z251LWluZGlyZWN0LWZ1bmN0aW9uIFwiJXNcIiBoYXMgY2hhbmdlZCBpdHMgcmVzb2x2ZWQgIgot KwkJICJmdW5jdGlvbl9hZGRyZXNzIGZyb20gJXMgdG8gJXM7IEdEQiBpcyB1c2luZyB0aGUgZm9y bWVyIG9uZSIpLAotKwkgICAgICAgZnVuY3Rpb25fbmFtZSwgcGFkZHJlc3MgKGdkYmFyY2gsIFNZ TUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSksCi0rCSAgICAgICBwYWRkcmVzcyAoZ2RiYXJjaCwg ZnVuY3Rpb25fYWRkcmVzcykpOworKyAgICAgIGh0YWJfdCBodGFiOworKyAgICAgIHN0cnVjdCBl bGZfZ251X2lmdW5jX2NhY2hlICplbnRyeV9wOworKyAgICAgIHZvaWQgKipzbG90OworKworKyAg ICAgIGh0YWIgPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGVsZl9vYmpmaWxlX2dudV9pZnVuY19j YWNoZV9kYXRhKTsKKysgICAgICBpZiAoaHRhYiA9PSBOVUxMKQorKwljb250aW51ZTsKKysKKysg ICAgICBlbnRyeV9wID0gYWxsb2NhIChzaXplb2YgKCplbnRyeV9wKSArIHN0cmxlbiAobmFtZSkp OworKyAgICAgIHN0cmNweSAoZW50cnlfcC0+bmFtZSwgbmFtZSk7CisrCisrICAgICAgc2xvdCA9 IGh0YWJfZmluZF9zbG90IChodGFiLCBlbnRyeV9wLCBOT19JTlNFUlQpOworKyAgICAgIGlmIChz bG90ID09IE5VTEwpCisrCWNvbnRpbnVlOworKyAgICAgIGVudHJ5X3AgPSAqc2xvdDsKKysgICAg ICBnZGJfYXNzZXJ0IChlbnRyeV9wICE9IE5VTEwpOworKworKyAgICAgIGlmIChhZGRyX3ApCisr CSphZGRyX3AgPSBlbnRyeV9wLT5hZGRyOworKyAgICAgIHJldHVybiAxOwogKyAgICB9CisrCisr ICByZXR1cm4gMDsKICt9CiArCi0rc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCi0rcmVz b2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lKQorKy8qIFRy eSB0byBmaW5kIHRoZSB0YXJnZXQgcmVzb2x2ZWQgZnVuY3Rpb24gZW50cnkgYWRkcmVzcyBvZiBh IFNUVF9HTlVfSUZVTkMKKysgICBmdW5jdGlvbiBOQU1FLiAgSWYgdGhlIGFkZHJlc3MgaXMgZm91 bmQgaXQgaXMgc3RvcmVkIHRvICpBRERSX1AgKGlmIEFERFJfUAorKyAgIGlzIG5vdCBOVUxMKSBh bmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgMS4gIEl0IHJldHVybnMgMCBvdGhlcndpc2UuCisrCisr ICAgT25seSB0aGUgU1lNQk9MX0dPVF9QTFRfU1VGRklYIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQg YnkgdGhpcyBmdW5jdGlvbi4KKysgICBlbGZfZ251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUgbXVz dCBoYXZlIGJlZW4gYWxyZWFkeSBjYWxsZWQgZm9yIE5BTUUgdG8KKysgICBwcmV2ZW50IGNhY2hl IGVudHJpZXMgZHVwbGljYXRlcy4gICovCisrCisrc3RhdGljIGludAorK2VsZl9nbnVfaWZ1bmNf cmVzb2x2ZV9ieV9nb3QgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQUREUiAqYWRkcl9wKQogK3sK LSsgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ290X3BsdDsKKysgIGNoYXIgKm5hbWVfZ290X3BsdDsK ICsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworKyAgY29uc3Qgc2l6ZV90IGdvdF9zdWZmaXhf bGVuID0gc3RybGVuIChTWU1CT0xfR09UX1BMVF9TVUZGSVgpOwogKwotKyAgZnVuY3Rpb25fbmFt ZV9nb3RfcGx0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpICsgc3RybGVuICgiQGdv dC5wbHQiKQotKwkJCQkgICsgMSk7Ci0rICBzcHJpbnRmIChmdW5jdGlvbl9uYW1lX2dvdF9wbHQs ICIlc0Bnb3QucGx0IiwgZnVuY3Rpb25fbmFtZSk7CisrICBuYW1lX2dvdF9wbHQgPSBhbGxvY2Eg KHN0cmxlbiAobmFtZSkgKyBnb3Rfc3VmZml4X2xlbiArIDEpOworKyAgc3ByaW50ZiAobmFtZV9n b3RfcGx0LCAiJXMiIFNZTUJPTF9HT1RfUExUX1NVRkZJWCwgbmFtZSk7CiArCiArICBBTExfUFNQ QUNFX09CSkZJTEVTIChjdXJyZW50X3Byb2dyYW1fc3BhY2UsIG9iamZpbGUpCiArICAgIHsKQEAg LTI2MDYsMTIgKzMxMzYsMTIgQEAgaW5kZXggYzU5MTM0Yi4uYzJjODIyOSAxMDA2NDQKICsgICAg ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFyY2g7CiArICAgICAgc3Ry dWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRh X3B0cjsKICsgICAgICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRyX3R5cGUpOwot KyAgICAgIENPUkVfQUREUiBwb2ludGVyX2FkZHJlc3MsIGZ1bmN0aW9uX2FkZHJlc3M7CisrICAg ICAgQ09SRV9BRERSIHBvaW50ZXJfYWRkcmVzcywgYWRkcjsKICsgICAgICBhc2VjdGlvbiAqcGx0 OwogKyAgICAgIGdkYl9ieXRlICpidWYgPSBhbGxvY2EgKHB0cl9zaXplKTsKICsgICAgICBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CiArCi0rICAgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFs X3N5bWJvbCAoZnVuY3Rpb25fbmFtZV9nb3RfcGx0LCBOVUxMLCBvYmpmaWxlKTsKKysgICAgICBt c3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChuYW1lX2dvdF9wbHQsIE5VTEwsIG9iamZpbGUp OwogKyAgICAgIGlmIChtc3ltID09IE5VTEwpCiArCWNvbnRpbnVlOwogKyAgICAgIGlmIChNU1lN Qk9MX1RZUEUgKG1zeW0pICE9IG1zdF9zbG90X2dvdF9wbHQpCkBAIC0yNjI2LDU1ICszMTU2LDE4 OCBAQCBpbmRleCBjNTkxMzRiLi5jMmM4MjI5IDEwMDY0NAogKwljb250aW51ZTsKICsgICAgICBp ZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChwb2ludGVyX2FkZHJlc3MsIGJ1ZiwgcHRyX3NpemUpICE9 IDApCiArCWNvbnRpbnVlOwotKyAgICAgIGZ1bmN0aW9uX2FkZHJlc3MgPSBleHRyYWN0X3R5cGVk X2FkZHJlc3MgKGJ1ZiwgcHRyX3R5cGUpOwotKwotKyAgICAgIG1zeW0gPSBnbnVfaWZ1bmNfcmVj b3JkX2NhY2hlX3VuY2hlY2tlZCAoZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fYWRkcmVzcyk7Ci0r ICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKLSsJY29udGludWU7Ci0rICAgICAgcmV0dXJuIG1zeW07 CisrICAgICAgYWRkciA9IGV4dHJhY3RfdHlwZWRfYWRkcmVzcyAoYnVmLCBwdHJfdHlwZSk7Cisr ICAgICAgYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gs IGFkZHIsCisrCQkJCQkJICZjdXJyZW50X3RhcmdldCk7CisrCisrICAgICAgaWYgKGFkZHJfcCkK KysJKmFkZHJfcCA9IGFkZHI7CisrICAgICAgaWYgKGVsZl9nbnVfaWZ1bmNfcmVjb3JkX2NhY2hl IChuYW1lLCBhZGRyKSkKKysJcmV0dXJuIDE7CiArICAgIH0KICsKLSsgIHJldHVybiBOVUxMOwor KyAgcmV0dXJuIDA7CisrfQorKworKy8qIFRyeSB0byBmaW5kIHRoZSB0YXJnZXQgcmVzb2x2ZWQg ZnVuY3Rpb24gZW50cnkgYWRkcmVzcyBvZiBhIFNUVF9HTlVfSUZVTkMKKysgICBmdW5jdGlvbiBO QU1FLiAgSWYgdGhlIGFkZHJlc3MgaXMgZm91bmQgaXQgaXMgc3RvcmVkIHRvICpBRERSX1AgKGlm IEFERFJfUAorKyAgIGlzIG5vdCBOVUxMKSBhbmQgdGhlIGZ1bmN0aW9uIHJldHVybnMgMS4gIEl0 IHJldHVybnMgMCBvdGhlcndpc2UuCisrCisrICAgQm90aCB0aGUgZWxmX29iamZpbGVfZ251X2lm dW5jX2NhY2hlX2RhdGEgaGFzaCB0YWJsZSBhbmQKKysgICBTWU1CT0xfR09UX1BMVF9TVUZGSVgg bG9jYXRpb25zIGFyZSBzZWFyY2hlZCBieSB0aGlzIGZ1bmN0aW9uLiAgKi8KKysKKytzdGF0aWMg aW50CisrZWxmX2dudV9pZnVuY19yZXNvbHZlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVf QUREUiAqYWRkcl9wKQorK3sKKysgIGlmIChlbGZfZ251X2lmdW5jX3Jlc29sdmVfYnlfY2FjaGUg KG5hbWUsIGFkZHJfcCkpCisrICAgIHJldHVybiAxOworKyAgCisrICBpZiAoZWxmX2dudV9pZnVu Y19yZXNvbHZlX2J5X2dvdCAobmFtZSwgYWRkcl9wKSkKKysgICAgcmV0dXJuIDE7CisrCisrICBy ZXR1cm4gMDsKICt9CiArCi0rc3RydWN0IG1pbmltYWxfc3ltYm9sICoKLStyZXNvbHZlX2dudV9p ZnVuY19ieV9jYWNoZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSkKKysvKiBDYWxsIFNUVF9H TlVfSUZVTkMgLSBhIGZ1bmN0aW9uIHJldHVybmluZyBhZGRyZXNzcyBvZiBhIHJlYWwgZnVuY3Rp b24gdG8KKysgICBjYWxsLiAgUEMgaXMgdGhlU1RUX0dOVV9JRlVOQyByZXNvbHZpbmcgZnVuY3Rp b24gZW50cnkuICBUaGUgdmFsdWUgcmV0dXJuZWQKKysgICBpcyB0aGUgZW50cnkgcG9pbnQgb2Yg dGhlIHJlc29sdmVkIFNUVF9HTlVfSUZVTkMgdGFyZ2V0IGZ1bmN0aW9uIHRvIGNhbGwuCisrICAg Ki8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrZWxmX2dudV9pZnVuY19yZXNvbHZlX2FkZHIgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCiArewotKyAgY2hhciAqZnVuY3Rp b25fbmFtZV9nbnVfaWZ1bmNfdGd0OworKyAgY2hhciAqbmFtZV9hdF9wYzsKKysgIENPUkVfQURE UiBzdGFydF9hdF9wYywgYWRkcmVzczsKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9 IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3RydWN0IHZh bHVlICpmdW5jdGlvbiwgKmFkZHJlc3NfdmFsOwogKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1 bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAo IkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKLSsgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lm dW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9uYW1lKTsKKysgIC8qIFRyeSBm aXJzdCBhbnkgbm9uLWludHJ1c2l2ZSBtZXRob2RzIHdpdGhvdXQgYW4gaW5mZXJpb3IgY2FsbC4g ICovCiArCi0rICByZXR1cm4gbG9va3VwX21pbmltYWxfc3ltYm9sIChmdW5jdGlvbl9uYW1lX2du dV9pZnVuY190Z3QsIE5VTEwsIE5VTEwpOworKyAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlv biAocGMsICZuYW1lX2F0X3BjLCAmc3RhcnRfYXRfcGMsIE5VTEwpCisrICAgICAgJiYgc3RhcnRf YXRfcGMgPT0gcGMpCisrICAgIHsKKysgICAgICBpZiAoZWxmX2dudV9pZnVuY19yZXNvbHZlX25h bWUgKG5hbWVfYXRfcGMsICZhZGRyZXNzKSkKKysJcmV0dXJuIGFkZHJlc3M7CisrICAgIH0KKysg IGVsc2UKKysgICAgbmFtZV9hdF9wYyA9IE5VTEw7CisrCisrICBmdW5jdGlvbiA9IGFsbG9jYXRl X3ZhbHVlIChmdW5jX2Z1bmNfdHlwZSk7CisrICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24s IHBjKTsKKysKKysgIC8qIFNUVF9HTlVfSUZVTkMgcmVzb2x2ZXIgZnVuY3Rpb25zIGhhdmUgbm8g cGFyYW1ldGVycy4gIEZVTkNUSU9OIGlzIHRoZQorKyAgICAgZnVuY3Rpb24gZW50cnkgYWRkcmVz cy4gIEFERFJFU1MgbWF5IGJlIGEgZnVuY3Rpb24gZGVzY3JpcHRvci4gICovCisrCisrICBhZGRy ZXNzX3ZhbCA9IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5VTEwpOworKyAg YWRkcmVzcyA9IHZhbHVlX2FzX2FkZHJlc3MgKGFkZHJlc3NfdmFsKTsKKysgIGFkZHJlc3MgPSBn ZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyZXNzLAorKwkJ CQkJCSZjdXJyZW50X3RhcmdldCk7CisrCisrICBpZiAobmFtZV9hdF9wYykKKysgICAgZWxmX2du dV9pZnVuY19yZWNvcmRfY2FjaGUgKG5hbWVfYXRfcGMsIGFkZHJlc3MpOworKworKyAgcmV0dXJu IGFkZHJlc3M7CiArfQogKwotK2ludAotK3Jlc29sdmVfZ251X2lmdW5jIChjb25zdCBjaGFyICpm dW5jdGlvbl9uYW1lLCBDT1JFX0FERFIgKmZ1bmN0aW9uX2FkZHJlc3NwKQorKy8qIEhhbmRsZSBp bmZlcmlvciBoaXQgb2YgYnBfZ251X2lmdW5jX3Jlc29sdmVyLCBzZWUgaXRzIGRlZmluaXRpb24u ICAqLworKworK3N0YXRpYyB2b2lkCisrZWxmX2dudV9pZnVuY19yZXNvbHZlcl9zdG9wIChzdHJ1 Y3QgYnJlYWtwb2ludCAqYikKICt7Ci0rICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07Cisr ICBzdHJ1Y3QgYnJlYWtwb2ludCAqYl9yZXR1cm47CisrICBzdHJ1Y3QgZnJhbWVfaW5mbyAqcHJl dl9mcmFtZSA9IGdldF9wcmV2X2ZyYW1lIChnZXRfY3VycmVudF9mcmFtZSAoKSk7CisrICBzdHJ1 Y3QgZnJhbWVfaWQgcHJldl9mcmFtZV9pZCA9IGdldF9zdGFja19mcmFtZV9pZCAocHJldl9mcmFt ZSk7CisrICBDT1JFX0FERFIgcHJldl9wYyA9IGdldF9mcmFtZV9wYyAocHJldl9mcmFtZSk7Cisr ICBpbnQgdGhyZWFkX2lkID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7CisrCisr ICBnZGJfYXNzZXJ0IChiLT50eXBlID09IGJwX2dudV9pZnVuY19yZXNvbHZlcik7CiArCi0rICBt c3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9uX25hbWUpOwotKyAgaWYg KG1zeW0gIT0gTlVMTCkKKysgIGZvciAoYl9yZXR1cm4gPSBiLT5yZWxhdGVkX2JyZWFrcG9pbnQ7 IGJfcmV0dXJuICE9IGI7CisrICAgICAgIGJfcmV0dXJuID0gYl9yZXR1cm4tPnJlbGF0ZWRfYnJl YWtwb2ludCkKICsgICAgewotKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9WQUxV RV9BRERSRVNTIChtc3ltKTsKLSsgICAgICByZXR1cm4gMTsKKysgICAgICBnZGJfYXNzZXJ0IChi X3JldHVybi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuKTsKKysgICAgICBn ZGJfYXNzZXJ0IChiX3JldHVybi0+bG9jICE9IE5VTEwgJiYgYl9yZXR1cm4tPmxvYy0+bmV4dCA9 PSBOVUxMKTsKKysgICAgICBnZGJfYXNzZXJ0IChmcmFtZV9pZF9wIChiX3JldHVybi0+ZnJhbWVf aWQpKTsKKysKKysgICAgICBpZiAoYl9yZXR1cm4tPnRocmVhZCA9PSB0aHJlYWRfaWQKKysJICAm JiBiX3JldHVybi0+bG9jLT5yZXF1ZXN0ZWRfYWRkcmVzcyA9PSBwcmV2X3BjCisrCSAgJiYgZnJh bWVfaWRfZXEgKGJfcmV0dXJuLT5mcmFtZV9pZCwgcHJldl9mcmFtZV9pZCkpCisrCWJyZWFrOwog KyAgICB9CiArCi0rICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChmdW5jdGlvbl9u YW1lKTsKLSsgIGlmIChtc3ltICE9IE5VTEwpCisrICBpZiAoYl9yZXR1cm4gPT0gYikKICsgICAg ewotKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3lt KTsKLSsgICAgICByZXR1cm4gMTsKKysgICAgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsK KysKKysgICAgICAvKiBObyBuZWVkIHRvIGNhbGwgZmluZF9wY19saW5lIGZvciBzeW1ib2xzIHJl c29sdmluZyBhcyB0aGlzIGlzIG9ubHkKKysJIGEgaGVscGVyIGJyZWFrcG9pbnRlciBuZXZlciBz aG93biB0byB0aGUgdXNlci4gICovCisrCisrICAgICAgaW5pdF9zYWwgKCZzYWwpOworKyAgICAg IHNhbC5wc3BhY2UgPSBjdXJyZW50X2luZmVyaW9yICgpLT5wc3BhY2U7CisrICAgICAgc2FsLnBj ID0gcHJldl9wYzsKKysgICAgICBzYWwuc2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLnBj KTsKKysgICAgICBzYWwuZXhwbGljaXRfcGMgPSAxOworKyAgICAgIGJfcmV0dXJuID0gc2V0X21v bWVudGFyeV9icmVha3BvaW50IChnZXRfZnJhbWVfYXJjaCAocHJldl9mcmFtZSksIHNhbCwKKysJ CQkJCSAgIHByZXZfZnJhbWVfaWQsCisrCQkJCQkgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0 dXJuKTsKKysKKysgICAgICAvKiBBZGQgbmV3IGJfcmV0dXJuIHRvIHRoZSByaW5nIGxpc3QgYi0+ cmVsYXRlZF9icmVha3BvaW50LiAgKi8KKysgICAgICBnZGJfYXNzZXJ0IChiX3JldHVybi0+cmVs YXRlZF9icmVha3BvaW50ID09IGJfcmV0dXJuKTsKKysgICAgICBiX3JldHVybi0+cmVsYXRlZF9i cmVha3BvaW50ID0gYi0+cmVsYXRlZF9icmVha3BvaW50OworKyAgICAgIGItPnJlbGF0ZWRfYnJl YWtwb2ludCA9IGJfcmV0dXJuOwogKyAgICB9CisrfQogKwotKyAgcmV0dXJuIDA7CisrLyogSGFu ZGxlIGluZmVyaW9yIGhpdCBvZiBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuLCBzZWUgaXRz IGRlZmluaXRpb24uICAqLworKworK3N0YXRpYyB2b2lkCisrZWxmX2dudV9pZnVuY19yZXNvbHZl cl9yZXR1cm5fc3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisreworKyAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOworKyAg c3RydWN0IHR5cGUgKmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl9mdW5jX2Z1bmM7CisrICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VU X1RZUEUgKGZ1bmNfZnVuY190eXBlKTsKKysgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBn ZXRfdGhyZWFkX3JlZ2NhY2hlIChpbmZlcmlvcl9wdGlkKTsKKysgIHN0cnVjdCB2YWx1ZSAqdmFs dWU7CisrICBDT1JFX0FERFIgcmVzb2x2ZWRfYWRkcmVzcywgcmVzb2x2ZWRfcGM7CisrICBzdHJ1 Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKysgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBzYWxz OworKworKyAgZ2RiX2Fzc2VydCAoYi0+dHlwZSA9PSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0 dXJuKTsKKysKKysgIHZhbHVlID0gYWxsb2NhdGVfdmFsdWUgKHZhbHVlX3R5cGUpOworKyAgZ2Ri YXJjaF9yZXR1cm5fdmFsdWUgKGdkYmFyY2gsIGZ1bmNfZnVuY190eXBlLCB2YWx1ZV90eXBlLCBy ZWdjYWNoZSwKKysJCQl2YWx1ZV9jb250ZW50c19yYXcgKHZhbHVlKSwgTlVMTCk7CisrICByZXNv bHZlZF9hZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUpOworKyAgcmVzb2x2ZWRfcGMg PSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLAorKwkJCQkJCSAg ICByZXNvbHZlZF9hZGRyZXNzLAorKwkJCQkJCSAgICAmY3VycmVudF90YXJnZXQpOworKworKyAg d2hpbGUgKGItPnJlbGF0ZWRfYnJlYWtwb2ludCAhPSBiKQorKyAgICB7CisrICAgICAgc3RydWN0 IGJyZWFrcG9pbnQgKmJfbmV4dCA9IGItPnJlbGF0ZWRfYnJlYWtwb2ludDsKKysKKysgICAgICBz d2l0Y2ggKGItPnR5cGUpCisrCXsKKysJY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CisrCSAg YnJlYWs7CisrCWNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKKysJICBkZWxldGVf YnJlYWtwb2ludCAoYik7CisrCSAgYnJlYWs7CisrCWRlZmF1bHQ6CisrCSAgaW50ZXJuYWxfZXJy b3IgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCQkgIF8oImhhbmRsZV9pbmZlcmlvcl9ldmVudDog SW52YWxpZCAiCisrCQkJICAgICJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gYnJlYWtwb2ludCB0eXBl ICVkIiksCisrCQkJICAoaW50KSBiLT50eXBlKTsKKysJfQorKyAgICAgIGIgPSBiX25leHQ7Cisr ICAgIH0KKysgIGdkYl9hc3NlcnQgKGItPnR5cGUgPT0gYnBfZ251X2lmdW5jX3Jlc29sdmVyKTsK KysKKysgIGdkYl9hc3NlcnQgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSA9PSBiLT5wc3BhY2UpOwor KyAgZWxmX2dudV9pZnVuY19yZWNvcmRfY2FjaGUgKGItPmFkZHJfc3RyaW5nLCByZXNvbHZlZF9w Yyk7CisrCisrICBzYWwgPSBmaW5kX3BjX2xpbmUgKHJlc29sdmVkX3BjLCAwKTsKKysgIHNhbHMu bmVsdHMgPSAxOworKyAgc2Fscy5zYWxzID0gJnNhbDsKKysKKysgIGItPnR5cGUgPSBicF9icmVh a3BvaW50OworKyAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChiLCBzYWxzKTsKICt9CiAr CiAgc3RydWN0IGJ1aWxkX2lkCiAgICB7CiAgICAgIHNpemVfdCBzaXplOwotQEAgLTgxNCw2ICsx MDYzLDggQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBz eW1maWxlX2ZsYWdzKQorQEAgLTgxNyw2ICsxMzEyLDggQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQogIAkgICAgICAgYmZkX2Vy cm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOwogIAogICAgICAgIGVsZl9zeW10YWJfcmVhZCAob2Jq ZmlsZSwgU1RfRFlOQU1JQywgZHluc3ltY291bnQsIGR5bl9zeW1ib2xfdGFibGUsIDApOwpAQCAt MjY4MywyMyArMzM0NiwzMTEgQEAgaW5kZXggYzU5MTM0Yi4uYzJjODIyOSAxMDA2NDQKICAgICAg fQogIAogICAgLyogQWRkIHN5bnRoZXRpYyBzeW1ib2xzIC0gZm9yIGluc3RhbmNlLCBuYW1lcyBm b3IgYW55IFBMVCBlbnRyaWVzLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2 YWwuYwotaW5kZXggMDliNDFhMC4uN2MwYThmOSAxMDA2NDQKLS0tLSBhL2dkYi9ldmFsLmMKLSsr KyBiL2dkYi9ldmFsLmMKLUBAIC00NCw2ICs0NCw3IEBACi0gI2luY2x1ZGUgIm9iamZpbGVzLmgi Ci0gI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIKLSAjaW5jbHVkZSAid3JhcHBlci5oIgotKyNp bmNsdWRlICJkd2FyZjJsb2MuaCIKLSAKLSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotIAotQEAg LTQ4OSwyNyArNDkwLDIxNyBAQCBpbml0X2FycmF5X2VsZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJy YXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKK0BAIC0xMDcxLDcgKzE1NjgsMjQzIEBAIGVsZnN0 YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHBhcnRp YWxfc3ltdGFiICpwc3QpCisgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKyAJ ICAgICAgIF8oImVsZi9zdGFiIHNlY3Rpb24gaW5mb3JtYXRpb24gbWlzc2luZyBmb3IgJXMiKSwg ZmlsZW5hbWUpOwogIH0KLSAKLSBzdGF0aWMgc3RydWN0IHZhbHVlICoKLS12YWx1ZV9mOTBfc3Vi YXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksCisrCisrLyogSGVscGVyIGZ1bmN0aW9uIHRoYXQg cGFyc2VzIHRoZSBpbmZvcm1hdGlvbiBjb250YWluZWQgaW4gYQorKyAgIFN5c3RlbXRhcCdzIHBy b2JlLiAgQmFzaWNhbGx5LCB0aGUgaW5mb3JtYXRpb24gY29uc2lzdHMgaW46CisrCisrICAgLSBQ cm9iZSdzIFBDIGFkZHJlc3M7CisrICAgLSBMaW5rLXRpbWUgc2VjdGlvbiBhZGRyZXNzIG9mIGAu c3RhcHNkdC5iYXNlJyBzZWN0aW9uOworKyAgIC0gTGluay10aW1lIGFkZHJlc3Mgb2YgdGhlIHNl bWFwaG9yZSB2YXJpYWJsZSwgb3IgWkVSTyBpZiB0aGUKKysgICAgIHByb2JlIGRvZXNuJ3QgaGF2 ZSBhbiBhc3NvY2lhdGVkIHNlbWFwaG9yZTsKKysgICAtIFByb2JlJ3MgcHJvdmlkZXIgbmFtZTsK KysgICAtIFByb2JlJ3MgbmFtZTsKKysgICAtIFByb2JlJ3MgYXJndW1lbnQgZm9ybWF0LiAgKi8K KysKKytzdGF0aWMgdm9pZAorK2hhbmRsZV9wcm9iZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHN0cnVjdCBzZHRfbm90ZSAqZWwsCisrCSAgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpyZXQsIENP UkVfQUREUiBiYXNlKQorK3sKKysgIGJmZCAqYWJmZCA9IG9iamZpbGUtPm9iZmQ7CisrICBpbnQg c2l6ZSA9IGJmZF9nZXRfYXJjaF9zaXplIChhYmZkKSAvIDg7CisrICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKyAgc3RydWN0IHR5cGUgKnB0 cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKKysgIENP UkVfQUREUiBiYXNlX3JlZjsKKysKKysgIC8qIFByb3ZpZGVyIGFuZCB0aGUgbmFtZSBvZiB0aGUg cHJvYmUuICAqLworKyAgcmV0LT5wcm92aWRlciA9IChjb25zdCBjaGFyICopICZlbC0+ZGF0YVsz ICogc2l6ZV07CisrICByZXQtPm5hbWUgPSBtZW1jaHIgKHJldC0+cHJvdmlkZXIsICdcMCcsCisr CQkgICAgICAodW5zaWduZWQgbG9uZyAqKSBlbC0+ZGF0YQorKwkJICAgICAgKyBlbC0+c2l6ZSAt ICh1bnNpZ25lZCBsb25nICopIHJldC0+cHJvdmlkZXIpOworKyAgLyogTWFraW5nIHN1cmUgdGhl cmUgaXMgYSBuYW1lLiAgKi8KKysgIGlmICghcmV0LT5uYW1lKQorKyAgICBjb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsIF8oImNvcnJ1cHQgcHJvYmUgd2hlbiByZWFkaW5nIGAlcyciKSwK KysJICAgICAgIG9iamZpbGUtPm5hbWUpOworKyAgZWxzZQorKyAgICArK3JldC0+bmFtZTsKKysK KysgIC8qIFJldHJpZXZpbmcgdGhlIHByb2JlJ3MgYWRkcmVzcy4gICovCisrICByZXQtPmFkZHJl c3MgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKChjb25zdCBnZGJfYnl0ZSAqKSAmZWwtPmRhdGFb MF0sCisrCQkJCQlwdHJfdHlwZSk7CisrICAvKiBMaW5rLXRpbWUgc2hfYWRkciBvZiBgLnN0YXBz ZHQuYmFzZScgc2VjdGlvbi4gICovCisrICBiYXNlX3JlZiA9IGV4dHJhY3RfdHlwZWRfYWRkcmVz cyAoKGNvbnN0IGdkYl9ieXRlICopICZlbC0+ZGF0YVtzaXplXSwKKysJCQkJICAgIHB0cl90eXBl KTsKKysgIC8qIFNlbWFwaG9yZSBhZGRyZXNzLiAgKi8KKysgIHJldC0+c2VtX2FkZHIgPSBleHRy YWN0X3R5cGVkX2FkZHJlc3MgKChjb25zdCBnZGJfYnl0ZSAqKSAmZWwtPmRhdGFbMiAqIHNpemVd LAorKwkJCQkJIHB0cl90eXBlKTsKKysKKysgIHJldC0+YWRkcmVzcyArPSAoQU5PRkZTRVQgKG9i amZpbGUtPnNlY3Rpb25fb2Zmc2V0cywKKysJCQkgICAgIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUp KQorKwkJICAgKyBiYXNlIC0gYmFzZV9yZWYpOworKyAgaWYgKHJldC0+c2VtX2FkZHIpCisrICAg IHJldC0+c2VtX2FkZHIgKz0gKEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsCisr CQkJCVNFQ1RfT0ZGX0RBVEEgKG9iamZpbGUpKQorKwkJICAgICAgKyBiYXNlIC0gYmFzZV9yZWYp OworKworKyAgLyogQXJndW1lbnRzLiAgV2UgY2FuIG9ubHkgZXh0cmFjdCB0aGUgYXJndW1lbnQg Zm9ybWF0IGlmIHRoZXJlIGlzIGEgdmFsaWQKKysgICAgIG5hbWUgZm9yIHRoaXMgcHJvYmUuICAq LworKyAgaWYgKHJldC0+bmFtZSkKKysgICAgeworKyAgICAgIHJldC0+YXJncyA9IG1lbWNociAo cmV0LT5uYW1lLCAnXDAnLAorKwkJCSAgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEKKysJCQkg ICsgZWwtPnNpemUgLSAodW5zaWduZWQgbG9uZyAqKSByZXQtPm5hbWUpOworKworKyAgICAgIGlm IChyZXQtPmFyZ3MrKyAhPSBOVUxMCisrCSAgfHwgbWVtY2hyIChyZXQtPmFyZ3MsICdcMCcsICh1 bnNpZ25lZCBsb25nICopIGVsLT5kYXRhCisrCQkgICAgICsgZWwtPnNpemUgLSAodW5zaWduZWQg bG9uZyAqKSByZXQtPm5hbWUpCisrCSAgIT0gZWwtPmRhdGEgKyBlbC0+c2l6ZSAtIDEpCisrCWNv bXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiY29ycnVwdCBwcm9iZSB3aGVuIHJlYWRp bmcgYCVzJyIpLAorKwkJICAgb2JqZmlsZS0+bmFtZSk7CisrICAgIH0KKysgIGVsc2UKKysgICAg cmV0LT5hcmdzID0gTlVMTDsKKyt9CisrCisrI2RlZmluZSBTVEFQX0JBU0VfU0VDVElPTl9OQU1F ICIuc3RhcHNkdC5iYXNlIgorKworK3N0YXRpYyB2b2lkCisrZ2V0X2Jhc2VfYWRkcmVzc18xIChi ZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0LCB2b2lkICpvYmopCisreworKyAgYmZkX3ZtYSAqYmFz ZSA9IChiZmRfdm1hICopIG9iajsKKysKKysgIGlmICgqYmFzZSA9PSAoYmZkX3ZtYSkgLTEKKysg ICAgICAmJiAoc2VjdC0+ZmxhZ3MgJiAoU0VDX0RBVEEgfCBTRUNfQUxMT0MgfCBTRUNfSEFTX0NP TlRFTlRTKSkKKysgICAgICAmJiBzZWN0LT5uYW1lICYmICFzdHJjbXAgKHNlY3QtPm5hbWUsIFNU QVBfQkFTRV9TRUNUSU9OX05BTUUpKQorKyAgICAqYmFzZSA9IHNlY3QtPnZtYTsKKyt9CisrCisr c3RhdGljIGJmZF92bWEKKytnZXRfYmFzZV9hZGRyZXNzIChiZmQgKm9iZmQpCisreworKyAgYmZk X3ZtYSBiYXNlID0gKGJmZF92bWEpIC0xOworKworKyAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChv YmZkLCBnZXRfYmFzZV9hZGRyZXNzXzEsICh2b2lkICopICZiYXNlKTsKKysKKysgIHJldHVybiBi YXNlOworK30KKysKKysvKiBGSVhNRSBKVVNUIEZPUiBURVNUSU5HICoqLworK3N0YXRpYyBpbnQK KytlbGZfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK KysJCQkgICAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpOworKworK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqCisrZWxmX2dldF9wcm9iZXMgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBpbnQgKm51bV9wcm9iZXMpCisreworKyAgc3RydWN0IHN0YXBfcHJvYmUgKnJl dCA9IE5VTEw7CisrICBzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqcHJvYmVzX3Blcl9v YmpmaWxlOworKworKyAgLyogSW5pdGlhbGx5LCBubyBwcm9iZXMuICAqLworKyAgKm51bV9wcm9i ZXMgPSAwOworKworKyAgLyogSGF2ZSB3ZSBwYXJzZWQgdGhpcyBvYmpmaWxlJ3MgcHJvYmVzIGFs cmVhZHk/ICAqLworKyAgcHJvYmVzX3Blcl9vYmpmaWxlCisrICAgID0gKHN0cnVjdCBzdGFwX3By b2JlX3Blcl9vYmpmaWxlICopIG9iamZpbGVfZGF0YSAob2JqZmlsZSwKKysJCQkJCQkgICAgICBz dGFwX3Byb2JlX2tleSk7CisrCisrICBpZiAoIXByb2Jlc19wZXJfb2JqZmlsZSkKKysgICAgewor KyAgICAgIC8qIElmIHdlIGFyZSBoZXJlLCB0aGVuIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2Ug YXJlIHBhcnNpbmcgdGhlCisrCSBwcm9iZSdzIGluZm9ybWF0aW9uLiAgV2UgYmFzaWNhbGx5IGhh dmUgdG8gY291bnQgaG93IG1hbnkgcHJvYmVzCisrCSB0aGUgb2JqZmlsZSBoYXMsIGFuZCB0aGVu IGZpbGwgaW4gdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbgorKwkgZm9yIGVhY2ggb25lLiAgKi8K KysKKysgICAgICBiZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOworKyAgICAgIGJmZF92bWEgYmFz ZSA9IGdldF9iYXNlX2FkZHJlc3MgKG9iZmQpOworKyAgICAgIHN0cnVjdCBzZHRfbm90ZSAqaXRl cjsKKysgICAgICBpbnQgaTsKKysgICAgICBpbnQgbiA9IDA7CisrCisrICAgICAgaWYgKCEgZWxm X3RkYXRhIChvYmZkKS0+c2R0X25vdGVfaGVhZCkKKysJLyogVGhlcmUgaXNuJ3QgYW55IHByb2Jl IGhlcmUuICAqLworKwlyZXR1cm4gTlVMTDsKKysKKysgICAgICAvKiBBbGxvY2F0aW5nIHNwYWNl IGZvciBwcm9iZSBpbmZvLiAgKi8KKysgICAgICBmb3IgKGl0ZXIgPSBlbGZfdGRhdGEgKG9iZmQp LT5zZHRfbm90ZV9oZWFkOworKwkgICBpdGVyOworKwkgICBpdGVyID0gaXRlci0+bmV4dCwgKytu KTsKKysKKysgICAgICByZXQgPSB4Y2FsbG9jIChuLCBzaXplb2YgKHN0cnVjdCBzdGFwX3Byb2Jl KSk7CisrCisrICAgICAgLyogUGFyc2luZyBlYWNoIHByb2JlJ3MgaW5mb3JtYXRpb24uICAqLwor KyAgICAgIGZvciAoaXRlciA9IGVsZl90ZGF0YSAob2JmZCktPnNkdF9ub3RlX2hlYWQsIGkgPSAw OworKwkgICBpdGVyOworKwkgICBpdGVyID0gaXRlci0+bmV4dCwgaSsrKQorKwkvKiBXZSBmaXJz dCBoYXZlIHRvIGhhbmRsZSBhbGwgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZQorKwkgICBwcm9i ZSB3aGljaCBpcyBwcmVzZW50IGluIHRoZSBzZWN0aW9uLiAgKi8KKysJaGFuZGxlX3Byb2JlIChv YmpmaWxlLCBpdGVyLCAmcmV0W2ldLCBiYXNlKTsKKysKKysgICAgICAvKiBDcmVhdGluZyBhIGNh Y2hlIGZvciB0aGVzZSBwcm9iZXMgaW4gdGhlIG9iamZpbGUncyByZWdpc3RyeS4gICovCisrICAg ICAgcHJvYmVzX3Blcl9vYmpmaWxlID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9wcm9i ZV9wZXJfb2JqZmlsZSkpOworKworKyAgICAgIHByb2Jlc19wZXJfb2JqZmlsZS0+c3RhcF9udW1f cHJvYmVzID0gbjsKKysgICAgICBwcm9iZXNfcGVyX29iamZpbGUtPnByb2JlcyA9IHJldDsKKysK KysgICAgICBzZXRfb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBzdGFwX3Byb2JlX2tleSwgcHJvYmVz X3Blcl9vYmpmaWxlKTsKKysgICAgfQorKyAgZWxzZQorKyAgICByZXQgPSBwcm9iZXNfcGVyX29i amZpbGUtPnByb2JlczsKKysKKysgICpudW1fcHJvYmVzID0gcHJvYmVzX3Blcl9vYmpmaWxlLT5z dGFwX251bV9wcm9iZXM7CisrCisrICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW50Cisr ZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisr CQkJICAgICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQorK3sKKysgIGNvbnN0IGNo YXIgKnBhcmdzID0gcHJvYmUtPmFyZ3M7CisrCisrICBpZiAoIXBhcmdzIHx8ICEqcGFyZ3MgfHwg KnBhcmdzID09ICc6JykKKysgICAgLyogTm8gYXJndW1lbnRzLiAgKi8KKysgICAgcmV0dXJuIDA7 CisrCisrICByZXR1cm4gc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHByb2JlKTsKKyt9 CisrCisrc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisrZWxmX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3By b2JlICpwcm9iZSwKKysJCQkgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkgICAg IGludCBuKQorK3sKKysgIHJldHVybiBzdGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpm aWxlLCBwcm9iZSwgZnJhbWUsIG4pOworK30KKysKKytzdGF0aWMgdm9pZAorK2VsZl9jb21waWxl X3RvX2F4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCSAgIGNvbnN0IHN0cnVjdCBzdGFw X3Byb2JlICpwcm9iZSwKKysJCSAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJICAgc3Ry dWN0IGF4c192YWx1ZSAqdmFsdWUsCisrCQkgICBpbnQgbikKKyt7CisrICBzdGFwX2NvbXBpbGVf dG9fYXggKG9iamZpbGUsIHByb2JlLCBleHByLCB2YWx1ZSwgbik7CisrfQorKworK3N0YXRpYyB2 b2lkCisrZWxmX3N5bWZpbGVfcmVsb2NhdGVfcHJvYmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorKwkJCSAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpuZXdfb2Zmc2V0cywKKysJCQkgICAg c3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpCisreworKyAgaW50IGk7CisrICBzdHJ1Y3Qg c3RhcF9wcm9iZV9wZXJfb2JqZmlsZSAqcAorKyAgICA9IChzdHJ1Y3Qgc3RhcF9wcm9iZV9wZXJf b2JqZmlsZSAqKSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsCisrCQkJCQkJICAgICAgc3RhcF9wcm9i ZV9rZXkpOworKworKyAgaWYgKCFwKQorKyAgICAvKiBObyBwcm9iZSB0byByZWxvY2F0ZS4gICov CisrICAgIHJldHVybjsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBwLT5zdGFwX251bV9wcm9iZXM7 IGkrKykKKysgICAgeworKyAgICAgIHAtPnByb2Jlc1tpXS5hZGRyZXNzICs9IEFOT0ZGU0VUIChk ZWx0YSwgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOworKyAgICAgIGlmIChwLT5wcm9iZXNbaV0u c2VtX2FkZHIpCisrCXAtPnByb2Jlc1tpXS5zZW1fYWRkciArPSBBTk9GRlNFVCAoZGVsdGEsIFNF Q1RfT0ZGX0RBVEEgKG9iamZpbGUpKTsKKysgICAgfQorK30KKysKKytzdGF0aWMgdm9pZAorK3N0 YXBfcHJvYmVfa2V5X2ZyZWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkKQorK3sK KysgIGludCBpOworKyAgc3RydWN0IHN0YXBfcHJvYmVfcGVyX29iamZpbGUgKmRhdGEgPSAoc3Ry dWN0IHN0YXBfcHJvYmVfcGVyX29iamZpbGUgKikgZDsKKysKKysgIGZvciAoaSA9IDA7IGkgPCBk YXRhLT5zdGFwX251bV9wcm9iZXM7IGkrKykKKysgICAgc3RhcF9mcmVlX3BhcnNlZF9hcmdzIChk YXRhLT5wcm9iZXNbaV0ucGFyc2VkX2FyZ3MpOworKyAgeGZyZWUgKGRhdGEtPnByb2Jlcyk7Cisr ICB4ZnJlZSAoZGF0YSk7CisrfQorKworIAwKKytzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9wcm9i ZV9mbnMgZWxmX3Byb2JlX2ZucyA9CisreworKyAgZWxmX2dldF9wcm9iZXMsCQkvKiBzeW1fZ2V0 X3Byb2JlcyAqLworKyAgZWxmX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCwJLyogc3ltX2dldF9w cm9iZV9hcmd1bWVudF9jb3VudCAqLworKyAgZWxmX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50LAkv KiBzeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQgKi8KKysgIGVsZl9jb21waWxlX3RvX2F4LAkJ Lyogc3ltX2NvbXBpbGVfdG9fYXggKi8KKysgIGVsZl9zeW1maWxlX3JlbG9jYXRlX3Byb2JlLAkv KiBzeW1fcmVsb2NhdGVfcHJvYmUgKi8KKyt9OworKworIC8qIFJlZ2lzdGVyIHRoYXQgd2UgYXJl IGFibGUgdG8gaGFuZGxlIEVMRiBvYmplY3QgZmlsZSBmb3JtYXRzLiAgKi8KKyAKKyBzdGF0aWMg Y29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnMgPQorQEAgLTEwODYsNiArMTgxOSw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9CisgICBlbGZfc3ltZmls ZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8K KyAgIE5VTEwsCisgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVi dWcgc2VjdGlvbi4gICovCisrICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5bV9wcm9iZV9mbnMgKi8K KyAgICZwc3ltX2Z1bmN0aW9ucworIH07CisgCitAQCAtMTEwNCw2ICsxODM4LDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2xhenlfcHN5bXMgPQorICAgZWxmX3N5 bWZpbGVfc2VnbWVudHMsCQkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4g ICovCisgICBOVUxMLAorICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBh IGRlYnVnIHNlY3Rpb24uICAqLworKyAgJmVsZl9wcm9iZV9mbnMsCQkvKiBzeW1fcHJvYmVfZm5z ICovCisgICAmcHN5bV9mdW5jdGlvbnMKKyB9OworIAorQEAgLTExMjEsMTEgKzE4NTYsMjcgQEAg c3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleCA9CisgICBl bGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBm aWxlLiAgKi8KKyAgIE5VTEwsCisgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9j YXRlIGEgZGVidWcgc2VjdGlvbi4gICovCisrICAmZWxmX3Byb2JlX2ZucywJCS8qIHN5bV9wcm9i ZV9mbnMgKi8KKyAgICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucworIH07CisgCisrLyogU1RU X0dOVV9JRlVOQyByZXNvbHZlciB2ZWN0b3IgdG8gYmUgaW5zdGFsbGVkIHRvIGdudV9pZnVuY19m bnNfcC4gICovCisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVsZl9nbnVf aWZ1bmNfZm5zID0KKyt7CisrICBlbGZfZ251X2lmdW5jX3Jlc29sdmVfYWRkciwKKysgIGVsZl9n bnVfaWZ1bmNfcmVzb2x2ZV9uYW1lLAorKyAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9zdG9wLAor KyAgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcAorK307CisrCisgdm9pZAorIF9p bml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCisgeworKyAgc3RhcF9wcm9iZV9rZXkKKysgICAgPSBy ZWdpc3Rlcl9vYmpmaWxlX2RhdGFfd2l0aF9jbGVhbnVwIChOVUxMLCBzdGFwX3Byb2JlX2tleV9m cmVlKTsKKyAgIGFkZF9zeW10YWJfZm5zICgmZWxmX3N5bV9mbnMpOworKworKyAgZWxmX29iamZp bGVfZ251X2lmdW5jX2NhY2hlX2RhdGEgPSByZWdpc3Rlcl9vYmpmaWxlX2RhdGEgKCk7CisrICBn bnVfaWZ1bmNfZm5zX3AgPSAmZWxmX2dudV9pZnVuY19mbnM7CisgfQorZGlmZiAtLWdpdCBhL2dk Yi9ldmFsLmMgYi9nZGIvZXZhbC5jCitpbmRleCAwOWI0MWEwLi43YzBhOGY5IDEwMDY0NAorLS0t IGEvZ2RiL2V2YWwuYworKysrIGIvZ2RiL2V2YWwuYworQEAgLTQ0LDYgKzQ0LDcgQEAKKyAjaW5j bHVkZSAib2JqZmlsZXMuaCIKKyAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRl ICJ3cmFwcGVyLmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCisgCitAQCAtNDg5LDI3ICs0OTAsMjE3IEBAIGluaXRfYXJyYXlfZWxlbWVudCAo c3RydWN0IHZhbHVlICphcnJheSwgc3RydWN0IHZhbHVlICplbGVtZW50LAorIH0KKyAKKyBzdGF0 aWMgc3RydWN0IHZhbHVlICoKKy12YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJy YXksCiAtCQkgICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50ICpwb3MsIGVudW0gbm9zaWRl IG5vc2lkZSkKICt2YWx1ZV9mOTBfc3ViYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCAqcG9zLAogKwkJICAgIGludCBuYXJncywgZW51bSBub3Np ZGUgbm9zaWRlKQpAQCAtMzE4Miw3ICs0MTMzLDcgQEAgaW5kZXggMDliNDFhMC4uN2MwYThmOSAx MDA2NDQKICsKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQotaW5k ZXggMDI3NDVjOC4uM2E3MzBlNyAxMDA2NDQKK2luZGV4IGQ5Y2YzY2YuLjNlMTFlNTcgMTAwNjQ0 CiAtLS0gYS9nZGIvZi1leHAueQogKysrIGIvZ2RiL2YtZXhwLnkKIEBAIC0yOTMsNyArMjkzLDkg QEAgYXJnbGlzdCA6CXN1YnJhbmdlCkBAIC0zNDE5LDcgKzQzNzAsNyBAQCBpbmRleCAzMjgwZGRj Li4xMjhkNmJjIDEwMDY0NAogICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQogICAgICB7CiBk aWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IDY0NjMzNDIu Ljk1MWMyZmUgMTAwNjQ0CitpbmRleCAyYjM2MWVmLi4wMWUxYzBkIDEwMDY0NAogLS0tIGEvZ2Ri L2ZpbmR2YXIuYwogKysrIGIvZ2RiL2ZpbmR2YXIuYwogQEAgLTM1LDYgKzM1LDcgQEAKQEAgLTM0 MzAsNyArNDM4MSw3IEBAIGluZGV4IDY0NjMzNDIuLjk1MWMyZmUgMTAwNjQ0CiAgCiAgLyogQmFz aWMgYnl0ZS1zd2FwcGluZyByb3V0aW5lcy4gIEFsbCAnZXh0cmFjdCcgZnVuY3Rpb25zIHJldHVy biBhCiAgICAgaG9zdC1mb3JtYXQgaW50ZWdlciBmcm9tIGEgdGFyZ2V0LWZvcm1hdCBpbnRlZ2Vy IGF0IEFERFIgd2hpY2ggaXMKLUBAIC0zOTksOCArNDAwLDExIEBAIHN5bWJvbF9yZWFkX25lZWRz X2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCitAQCAtNDA4LDggKzQwOSwxMSBAQCBzeW1ib2xf cmVhZF9uZWVkc19mcmFtZSAoc3RydWN0IHN5bWJvbCAqc3ltKQogIAogIC8qIEdpdmVuIGEgc3Ry dWN0IHN5bWJvbCBmb3IgYSB2YXJpYWJsZSwKICAgICBhbmQgYSBzdGFjayBmcmFtZSBpZCwgcmVh ZCB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlCkBAIC0zNDQ0LDcgKzQzOTUsNyBAQCBpbmRleCA2 NDYzMzQyLi45NTFjMmZlIDEwMDY0NAogIAogIHN0cnVjdCB2YWx1ZSAqCiAgcmVhZF92YXJfdmFs dWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotQEAgLTQw OCwxNiArNDEyLDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTQxNywxNiArNDIxLDYgQEAgcmVhZF92YXJfdmFsdWUg KHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgc3RydWN0 IHZhbHVlICp2OwogICAgc3RydWN0IHR5cGUgKnR5cGUgPSBTWU1CT0xfVFlQRSAodmFyKTsKICAg IENPUkVfQUREUiBhZGRyOwpAQCAtMzQ2MSw3ICs0NDEyLDcgQEAgaW5kZXggNjQ2MzM0Mi4uOTUx YzJmZSAxMDA2NDQKICAKICAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKICAg ICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAgLTQyNyw3ICs0MjEsNyBAQCByZWFkX3Zhcl92YWx1 ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNDM2 LDcgKzQzMCw3IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKICAgICAgY2FzZSBMT0NfQ09OU1Q6CiAgICAgICAgLyogUHV0IHRo ZSBjb25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLwogICAgICAgIHYgPSBhbGxvY2F0 ZV92YWx1ZSAodHlwZSk7CkBAIC0zNDcwLDcgKzQ0MjEsNyBAQCBpbmRleCA2NDYzMzQyLi45NTFj MmZlIDEwMDY0NAogIAkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKHR5 cGUpKSwKICAJCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7CiAgICAgICAgVkFM VUVfTFZBTCAodikgPSBub3RfbHZhbDsKLUBAIC00NTIsMTIgKzQ0NiwxMiBAQCByZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAt NDYxLDEyICs0NTUsMTIgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAogICAgICBjYXNlIExPQ19DT05TVF9CWVRFUzoKICAg ICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwpAQCAtMzQ4NSw3ICs0NDM2LDcgQEAgaW5k ZXggNjQ2MzM0Mi4uOTUxYzJmZSAxMDA2NDQKICAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcp CiAgCWFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNT ICh2YXIpLAogIAkJCQkJIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci1AQCAtNDcwLDcgKzQ2 NCw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKK0BAIC00NzksNyArNDczLDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBz eW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGlmICghYWRkcikK ICAJcmV0dXJuIDA7CiAgICAgICAgYWRkciArPSBTWU1CT0xfVkFMVUUgKHZhcik7CkBAIC0zNDkz LDcgKzQ0NDQsNyBAQCBpbmRleCA2NDYzMzQyLi45NTFjMmZlIDEwMDY0NAogICAgICAgIGJyZWFr OwogIAogICAgICBjYXNlIExPQ19SRUZfQVJHOgotQEAgLTQ4NCwxNCArNDc3LDEyIEBAIHJlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK K0BAIC00OTMsMTQgKzQ4NiwxMiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFy LCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCWFyZ3JlZiArPSBTWU1CT0xfVkFMVUUgKHZh cik7CiAgCXJlZiA9IHZhbHVlX2F0IChsb29rdXBfcG9pbnRlcl90eXBlICh0eXBlKSwgYXJncmVm KTsKICAJYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKHJlZik7CkBAIC0zNTA4LDcgKzQ0NTksNyBA QCBpbmRleCA2NDYzMzQyLi45NTFjMmZlIDEwMDY0NAogICAgICAgIGJyZWFrOwogIAogICAgICBj YXNlIExPQ19UWVBFREVGOgotQEAgLTQ5OSw3ICs0OTAsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3Ry dWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNTA4LDcgKzQ5 OSw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSkKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfQkxPQ0s6CkBAIC0z NTE2LDcgKzQ0NjcsNyBAQCBpbmRleCA2NDYzMzQyLi45NTFjMmZlIDEwMDY0NAogICAgICAgIGlm IChvdmVybGF5X2RlYnVnZ2luZykKICAJYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcwog IAkgIChCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSwgU1lNQk9MX09CSl9T RUNUSU9OICh2YXIpKTsKLUBAIC01MjQsNyArNTE0LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTUzMyw3ICs1MjMs NiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5m byAqZnJhbWUpCiAgCSAgICAgIGVycm9yIChfKCJWYWx1ZSBvZiByZWdpc3RlciB2YXJpYWJsZSBu b3QgYXZhaWxhYmxlLiIpKTsKICAKICAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2 YWwpOwpAQCAtMzUyNCw3ICs0NDc1LDcgQEAgaW5kZXggNjQ2MzM0Mi4uOTUxYzJmZSAxMDA2NDQK ICAJICB9CiAgCWVsc2UKICAJICB7Ci1AQCAtNTYzLDcgKzU1Miw2IEBAIHJlYWRfdmFyX3ZhbHVl IChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKK0BAIC01NzIs NyArNTYxLDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lKQogIAlpZiAob2JqX3NlY3Rpb24KICAJICAgICYmIChvYmpfc2VjdGlv bi0+dGhlX2JmZF9zZWN0aW9uLT5mbGFncyAmIFNFQ19USFJFQURfTE9DQUwpICE9IDApCiAgCSAg YWRkciA9IHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MgKG9ial9zZWN0aW9uLT5vYmpmaWxl LCBhZGRyKTsKQEAgLTM1MzIsNyArNDQ4Myw3IEBAIGluZGV4IDY0NjMzNDIuLjk1MWMyZmUgMTAw NjQ0CiAgICAgICAgfQogICAgICAgIGJyZWFrOwogIAotQEAgLTU3OCw2ICs1NjYsMTAgQEAgcmVh ZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l KQorQEAgLTU4Nyw2ICs1NzUsMTAgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogICAgICB9CiAgCkBA IC0zNTQzLDEyICs0NDk0LDEzIEBAIGluZGV4IDY0NjMzNDIuLjk1MWMyZmUgMTAwNjQ0CiAgICBW QUxVRV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OwogICAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFk ZHIpOwogICAgcmV0dXJuIHY7Ci1AQCAtNjE3LDEwICs2MDksMTEgQEAgc3RydWN0IHZhbHVlICoK K0BAIC02MjYsMTEgKzYxOCwxMiBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2Zyb21fcmVnaXN0 ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCiAgewogICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJh bWUpOwogLSAgc3RydWN0IHR5cGUgKnR5cGUxID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CiAgICBz dHJ1Y3QgdmFsdWUgKnY7CisgICBpbnQgb3B0aW0sIHVuYXZhaWwsIG9rOwogIAogLSAgaWYgKGdk YmFyY2hfY29udmVydF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUxKSkKICsgIHR5 cGUgPSBjaGVja190eXBlZGVmICh0eXBlKTsKQEAgLTM1NTcsMTUgKzQ1MDksMTUgQEAgaW5kZXgg NjQ2MzM0Mi4uOTUxYzJmZSAxMDA2NDQKICAgICAgewogICAgICAgIC8qIFRoZSBJU0EvQUJJIG5l ZWQgdG8gc29tZXRoaW5nIHdlaXJkIHdoZW4gb2J0YWluaW5nIHRoZQogICAgICAgICAgIHNwZWNp ZmllZCB2YWx1ZSBmcm9tIHRoaXMgcmVnaXN0ZXIuICBJdCBtaWdodCBuZWVkIHRvCi1AQCAtNjM0 LDcgKzYyNyw3IEBAIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQg cmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCitAQCAtNjQzLDcgKzYzNiw3IEBAIHZh bHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVnbnVtLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCisgICAgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX3JlZ2lzdGVy OwogICAgICAgIFZBTFVFX0ZSQU1FX0lEICh2KSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwogICAg ICAgIFZBTFVFX1JFR05VTSAodikgPSByZWdudW07Ci0gICAgICAgZ2RiYXJjaF9yZWdpc3Rlcl90 b192YWx1ZSAoZ2RiYXJjaCwKLS0JCQkJIGZyYW1lLCByZWdudW0sIHR5cGUxLCB2YWx1ZV9jb250 ZW50c19yYXcgKHYpKTsKLSsJCQkJIGZyYW1lLCByZWdudW0sIHR5cGUsIHZhbHVlX2NvbnRlbnRz X3JhdyAodikpOworLSAgICAgIG9rID0gZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1ZSAoZ2RiYXJj aCwgZnJhbWUsIHJlZ251bSwgdHlwZTEsCisrICAgICAgb2sgPSBnZGJhcmNoX3JlZ2lzdGVyX3Rv X3ZhbHVlIChnZGJhcmNoLCBmcmFtZSwgcmVnbnVtLCB0eXBlLAorIAkJCQkgICAgICB2YWx1ZV9j b250ZW50c19yYXcgKHYpLCAmb3B0aW0sCisgCQkJCSAgICAgICZ1bmF2YWlsKTsKICAgICAgfQot ICAgZWxzZQotICAgICB7CiBkaWZmIC0tZ2l0IGEvZ2RiL2dkYmluaXQuaW4gYi9nZGIvZ2RiaW5p dC5pbgogaW5kZXggZmZiN2Y1My4uYTJlN2U5NCAxMDA2NDQKIC0tLSBhL2dkYi9nZGJpbml0Lmlu CkBAIC01NDE5LDUwICs2MzcxLDE1IEBAIGluZGV4IDgxOWM2YjguLmJlZjhhMzUgMTAwNjQ0CiAg ICAgcmF0aGVyIHRoYW4gc2V0dGluZyBpdCBkaXJlY3RseSB0byBjaGVjayB0aGF0IHRoZSBsZW5n dGggaXMgb25seQogICAgIHNldCBvbmNlLiAgSXQgYWxzbyBlbmFibGVzIHRoZSAnbWFpbnQgc2V0 L3Nob3cgc2hvdy1kZWJ1Zy1yZWdzJyAKIGRpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2Ri L2luZmNhbGwuYwotaW5kZXggNzVkZTU2Yy4uMmE2NGEwZSAxMDA2NDQKK2luZGV4IGQ0MjI0OGUu LmNhMjM3MDQgMTAwNjQ0CiAtLS0gYS9nZGIvaW5mY2FsbC5jCiArKysgYi9nZGIvaW5mY2FsbC5j Ci1AQCAtMjI4LDYgKzIyOCw1NiBAQCB2YWx1ZV9hcmdfY29lcmNlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgc3RydWN0IHZhbHVlICphcmcsCitAQCAtMjI4LDYgKzIyOCwyMSBAQCB2YWx1ZV9h cmdfY29lcmNlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHZhbHVlICphcmcsCiAg ICByZXR1cm4gdmFsdWVfY2FzdCAodHlwZSwgYXJnKTsKICB9CiAgCi0rLyogQ2FsbCBnbnUtaWZ1 bmMgKFNUVF9HTlVfSUZVTkMgLSBhIGZ1bmN0aW9uIHJldHVybmluZyBhZGRyZXNzcyBvZiBhIHJl YWwKLSsgICBmdW5jdGlvbiB0byBjYWxsKS4gIFBDIGlzIHRoZSBnbnUtaWZ1bmMgZnVuY3Rpb24g ZW50cnkuICBGdW5jdGlvbiByZXR1cm5zCi0rICAgZnVuY3Rpb24gZW50cnkgb2YgdGhlIGdudS1p ZnVuYy1yZXNvbHZlZCBmdW5jdGlvbiB0byBjYWxsLiAgSWYgUkVUVkFMX1RZUEVQCi0rICAgaXMg bm90IE5VTEwgZmlsbCBpbiAqUkVUVkFMX1RZUEVQIHdpdGggcmV0dXJuIHR5cGUgb2YgdGhlIGdu dS1pZnVuYy1yZXNvbHZlZAotKyAgIGZ1bmN0aW9uIHRvIGNhbGwuICBLZWVwICpSRVRWQUxfVFlQ RVAgaW50YWN0IGlmIHRoZSByZXR1cm4gdHlwZSBjb3VsZCBub3QgYmUKLSsgICBmb3VuZC4gICov Ci0rCi0rc3RhdGljIENPUkVfQUREUgotK2dudV9pZnVuY19yZXNvbHZlIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKQotK3sKLSsgIGNoYXIgKm5hbWVfYXRfcGM7Ci0rICBD T1JFX0FERFIgc3RhcnRfYXRfcGMsIGFkZHJlc3M7Ci0rICBzdHJ1Y3QgdHlwZSAqZnVuY19mdW5j X3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2Z1bmNfZnVuYzsKLSsgIHN0 cnVjdCB2YWx1ZSAqZnVuY3Rpb24sICphZGRyZXNzX3ZhbDsKLSsKLSsgIGlmIChmaW5kX3BjX3Bh cnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZV9hdF9wYywgJnN0YXJ0X2F0X3BjLCBOVUxMKQotKyAg ICAgICYmIHN0YXJ0X2F0X3BjID09IHBjKQotKyAgICB7Ci0rICAgICAgaWYgKHJlc29sdmVfZ251 X2lmdW5jIChuYW1lX2F0X3BjLCAmYWRkcmVzcykpCi0rCXJldHVybiBhZGRyZXNzOwotKyAgICB9 Ci0rICBlbHNlCi0rICAgIG5hbWVfYXRfcGMgPSBOVUxMOwotKwotKyAgZnVuY3Rpb24gPSBhbGxv Y2F0ZV92YWx1ZSAoZnVuY19mdW5jX3R5cGUpOwotKyAgc2V0X3ZhbHVlX2FkZHJlc3MgKGZ1bmN0 aW9uLCBwYyk7Ci0rCi0rICAvKiBnbnUtaWZ1bmNzIGhhdmUgbm8gYXJndW1lbnRzLiAgRlVOQ1RJ T04gaXMgdGhlIGZ1bmN0aW9uIGVudHJ5IGFkZHJlc3MKLSsgICAgIHdoaWxlIEFERFJFU1MgaXMg YSBwb3NzaWJsZSBmdW5jdGlvbiBkZXNjcmlwdG9yLi4gICovCi0rICBhZGRyZXNzX3ZhbCA9IGNh bGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5VTEwpOwotKyAgYWRkcmVzcyA9IHZh bHVlX2FzX2FkZHJlc3MgKGFkZHJlc3NfdmFsKTsKLSsKLSsgIGlmIChuYW1lX2F0X3BjKQotKyAg ICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChnZGJhcmNoLCBuYW1lX2F0X3BjLCBhZGRyZXNzKTsK LSsKLSsgIHJldHVybiBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNo LCBhZGRyZXNzLCAmY3VycmVudF90YXJnZXQpOwotK30KKysvKiBSZXR1cm4gdGhlIHJldHVybiB0 eXBlIG9mIGEgZnVuY3Rpb24gd2l0aCBpdHMgZmlyc3QgaW5zdHJ1Y3Rpb24gZXhhY3RseSBhdAor KyAgIHRoZSBQQyBhZGRyZXNzLiAgUmV0dXJuIE5VTEwgb3RoZXJ3aXNlLiAgKi8KICsKICtzdGF0 aWMgc3RydWN0IHR5cGUgKgogK2ZpbmRfZnVuY3Rpb25fcmV0dXJuX3R5cGUgKENPUkVfQUREUiBw YykKQEAgLTU0NzksNyArNjM5Niw3IEBAIGluZGV4IDc1ZGU1NmMuLjJhNjRhMGUgMTAwNjQ0CiAg LyogRGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJv bSBpdHMgdmFsdWUuCiAgICAgQ2FsbHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZh bGlkIGZvciBjYWxsaW5nLiAgKi8KICAKLUBAIC0yMzYsNyArMjg2LDYgQEAgZmluZF9mdW5jdGlv bl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBl KQorQEAgLTIzNiw3ICsyNTEsNiBAQCBmaW5kX2Z1bmN0aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAq ZnVuY3Rpb24sIHN0cnVjdCB0eXBlICoqcmV0dmFsX3R5cGUpCiAgewogICAgc3RydWN0IHR5cGUg KmZ0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKICAgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAoZnR5cGUpOwpAQCAtNTQ4Nyw3ICs2 NDA0LDcgQEAgaW5kZXggNzVkZTU2Yy4uMmE2NGEwZSAxMDA2NDQKICAgIHN0cnVjdCB0eXBlICp2 YWx1ZV90eXBlID0gTlVMTDsKICAgIENPUkVfQUREUiBmdW5hZGRyOwogIAotQEAgLTI0NCwyNCAr MjkzLDM0IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3Ry dWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKK0BAIC0yNDQsMjQgKzI1OCwzNCBAQCBmaW5kX2Z1bmN0 aW9uX2FkZHIgKHN0cnVjdCB2YWx1ZSAqZnVuY3Rpb24sIHN0cnVjdCB0eXBlICoqcmV0dmFsX3R5 cGUpCiAgICAgICBwYXJ0IG9mIGl0LiAgKi8KICAKICAgIC8qIERldGVybWluZSBhZGRyZXNzIHRv IGNhbGwuICAqLwpAQCAtNTUxOSw3ICs2NDM2LDcgQEAgaW5kZXggNzVkZTU2Yy4uMmE2NGEwZSAx MDA2NDQKIC0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAo Z2RiYXJjaCwgZnVuYWRkciwKIC0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKIC0JICB2YWx1ZV90 eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIGZ1bmFkZHIgPSBnbnVfaWZ1bmNf cmVzb2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7CisrCSAgZnVuYWRkciA9IGdudV9pZnVuY19yZXNv bHZlX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIpOwogKwogKwkgIC8qIFNraXAgcXVlcnlpbmcgdGhl IGZ1bmN0aW9uIHN5bWJvbCBpZiBubyBSRVRWQUxfVFlQRSBoYXMgYmVlbgogKwkgICAgIGFza2Vk IGZvci4gICovCkBAIC01NTMyLDggKzY0NDksMTk0IEBAIGluZGV4IDc1ZGU1NmMuLjJhNjRhMGUg MTAwNjQ0CiAgICAgIHsKICAgICAgICAvKiBIYW5kbGUgdGhlIGNhc2Ugb2YgZnVuY3Rpb25zIGxh Y2tpbmcgZGVidWdnaW5nIGluZm8uCiAgICAgICAgICAgVGhlaXIgdmFsdWVzIGFyZSBjaGFyYWN0 ZXJzIHNpbmNlIHRoZWlyIGFkZHJlc3NlcyBhcmUgY2hhci4gICovCitkaWZmIC0tZ2l0IGEvZ2Ri L2luZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCitpbmRleCA3Y2VlN2M4Li43NTFjOWVmIDEwMDY0NAor LS0tIGEvZ2RiL2luZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC01NCw2ICs1NCw4IEBA CisgI2luY2x1ZGUgImlubGluZS1mcmFtZS5oIgorICNpbmNsdWRlICJqaXQuaCIKKyAjaW5jbHVk ZSAidHJhY2Vwb2ludC5oIgorKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCisrI2luY2x1ZGUgIm9i amZpbGVzLmgiCisgCisgLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zICovCisgCitA QCAtMjI0Nyw3ICsyMjQ5LDcgQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFr cG9pbnRfYXRfc2FsIChzdHJ1Y3QgZ2RiYXJjaCAqLAorIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lk KTsKKyBzdGF0aWMgdm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0 IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsKKyBzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVz dW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKKy0JCQkJICAgIHN0cnVjdCBm cmFtZV9pbmZvICosIHN0cnVjdCBzeW1ib2wgKik7CisrCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5m byAqKTsKKyAKKyBzdGF0aWMgdm9pZCBzdG9wX3N0ZXBwaW5nIChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcyk7Cisgc3RhdGljIHZvaWQgcHJlcGFyZV90b193YWl0IChzdHJ1Y3Qg ZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7CitAQCAtNDE2NCw5ICs0MTY2LDE3IEBAIHBy b2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorIAorIAlpZiAod2hhdC5pc19sb25nam1wKQorIAkgIHsK Ky0JICAgIGlmICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkKKy0JCXx8 ICFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwKKy0JCQkJCQlmcmFtZSwgJmpt cF9idWZfcGMpKQorKwkgICAgc3RydWN0IHZhbHVlICphcmdfdmFsdWU7CisrCisrCSAgICAvKiBJ ZiB3ZSBzZXQgdGhlIGxvbmdqbXAgYnJlYWtwb2ludCB2aWEgYSBTeXN0ZW1UYXAgcHJvYmUsCisr CSAgICAgICB0aGVuIHVzZSBpdCB0byBleHRyYWN0IHRoZSBhcmd1bWVudHMuICBUaGUgZGVzdGlu YXRpb24KKysJICAgICAgIFBDIGlzIHRoZSB0aGlyZCBhcmd1bWVudCB0byB0aGUgcHJvYmUuICAq LworKwkgICAgYXJnX3ZhbHVlID0gc3RhcF9zYWZlX2V2YWx1YXRlX2F0X3BjIChmcmFtZSwgMik7 CisrCSAgICBpZiAoYXJnX3ZhbHVlKQorKwkgICAgICBqbXBfYnVmX3BjID0gdmFsdWVfYXNfYWRk cmVzcyAoYXJnX3ZhbHVlKTsKKysJICAgIGVsc2UgaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3Rh cmdldF9wIChnZGJhcmNoKQorKwkJICAgICB8fCAhZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQg KGdkYmFyY2gsCisrCQkJCQkJICAgICBmcmFtZSwgJmptcF9idWZfcGMpKQorIAkgICAgICB7Cisg CQlpZiAoZGVidWdfaW5mcnVuKQorIAkJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2cs CitAQCAtNDE4NCwxMiArNDE5NCw3IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgorIAkgICAg aW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFyY2gsIGptcF9idWZfcGMpOwor IAkgIH0KKyAJZWxzZQorLQkgIHsKKy0JICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBnZXRfZnJh bWVfZnVuY3Rpb24gKGZyYW1lKTsKKy0KKy0JICAgIGlmIChmdW5jKQorLQkgICAgICBjaGVja19l eGNlcHRpb25fcmVzdW1lIChlY3MsIGZyYW1lLCBmdW5jKTsKKy0JICB9CisrCSAgY2hlY2tfZXhj ZXB0aW9uX3Jlc3VtZSAoZWNzLCBmcmFtZSk7CisgCWtlZXBfZ29pbmcgKGVjcyk7CisgCXJldHVy bjsKKyAKK0BAIC01MjYzLDE1ICs1MjY4LDY0IEBAIGluc2VydF9leGNlcHRpb25fcmVzdW1lX2Jy ZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAsCisgICAgIH0KKyB9CisgCisrLyogQSBo ZWxwZXIgZm9yIGNoZWNrX2V4Y2VwdGlvbl9yZXN1bWUgdGhhdCBzZXRzIGFuCisrICAgZXhjZXB0 aW9uLWJyZWFrcG9pbnQgYmFzZWQgb24gYSBTeXN0ZW1UYXAgcHJvYmUuICAqLworKworK3N0YXRp YyB2b2lkCisraW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfZnJvbV9wcm9iZSAoc3RydWN0IHRocmVh ZF9pbmZvICp0cCwKKysJCQkJICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJ CQkJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQkgICAgc3RydWN0IGZyYW1lX2lu Zm8gKmZyYW1lKQorK3sKKysgIHN0cnVjdCB2YWx1ZSAqYXJnX3ZhbHVlOworKyAgQ09SRV9BRERS IGhhbmRsZXI7CisrICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnA7CisrCisrICBhcmdfdmFsdWUgPSBz dGFwX3NhZmVfZXZhbHVhdGVfYXRfcGMgKGZyYW1lLCAxKTsKKysgIGlmICghYXJnX3ZhbHVlKQor KyAgICByZXR1cm47CisrCisrICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAoYXJnX3ZhbHVl KTsKKysKKysgIGlmIChkZWJ1Z19pbmZydW4pCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2Ri X3N0ZGxvZywKKysJCQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKKysJCQko dW5zaWduZWQgbG9uZykgaGFuZGxlcik7CisrCisrICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtw b2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKKysJCQkJICAgICAgIGhhbmRsZXIs IGJwX2V4Y2VwdGlvbl9yZXN1bWUpOworKyAgYnAtPnRocmVhZCA9IHRwLT5udW07CisrICBpbmZl cmlvcl90aHJlYWQgKCktPmNvbnRyb2wuZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gYnA7 CisrfQorKworIC8qIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGlu dGVyY2VwdGVkLiAgQ2hlY2sgdG8KKyAgICBzZWUgd2hldGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVz dGluYXRpb24gaXMgb2YgaW50ZXJlc3QsIGFuZCBpZiBzbywKKyAgICBzZXQgYW4gZXhjZXB0aW9u IHJlc3VtZSBicmVha3BvaW50IHRoZXJlLiAgKi8KKyAKKyBzdGF0aWMgdm9pZAorIGNoZWNrX2V4 Y2VwdGlvbl9yZXN1bWUgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzLAorLQkJ CXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgc3RydWN0IHN5bWJvbCAqZnVuYykKKysJCQlzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgeworICAgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKKysg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnBy b2JlOworKyAgc3RydWN0IHN5bWJvbCAqZnVuYzsKKysKKysgIC8qIEZpcnN0IHNlZSBpZiB0aGlz IGV4Y2VwdGlvbiB1bndpbmRpbmcgYnJlYWtwb2ludCB3YXMgc2V0IHZpYSBhCisrICAgICBTeXN0 ZW1UYXAgcHJvYmUgcG9pbnQuICBJZiBzbywgdGhlIHByb2JlIGhhcyB0d28gYXJndW1lbnRzOiB0 aGUKKysgICAgIENGQSBhbmQgdGhlIEhBTkRMRVIuICBXZSBpZ25vcmUgdGhlIENGQSwgZXh0cmFj dCB0aGUgaGFuZGxlciwgYW5kCisrICAgICBzZXQgYSBicmVha3BvaW50IHRoZXJlLiAgKi8KKysg IHByb2JlID0gZmluZF9wcm9iZV9ieV9wYyAoZ2V0X2ZyYW1lX3BjIChmcmFtZSksICZvYmpmaWxl KTsKKysgIGlmIChwcm9iZSkKKysgICAgeworKyAgICAgIGluc2VydF9leGNlcHRpb25fcmVzdW1l X2Zyb21fcHJvYmUgKGVjcy0+ZXZlbnRfdGhyZWFkLCBwcm9iZSwKKysJCQkJCSAgb2JqZmlsZSwg ZnJhbWUpOworKyAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgZnVuYyA9IGdldF9mcmFtZV9m dW5jdGlvbiAoZnJhbWUpOworKyAgaWYgKCFmdW5jKQorKyAgICByZXR1cm47CisgCisgICBUUllf Q0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQorICAgICB7CitAQCAtNjI1Myw3ICs2MzA3LDgg QEAgc3RhdGljIHN0cnVjdCBsdmFsX2Z1bmNzIHNpZ2luZm9fdmFsdWVfZnVuY3MgPQorICAgIGlm IHRoZXJlJ3Mgbm8gb2JqZWN0IGF2YWlsYWJsZS4gICovCisgCisgc3RhdGljIHN0cnVjdCB2YWx1 ZSAqCistc2lnaW5mb19tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0 IGludGVybmFsdmFyICp2YXIpCisrc2lnaW5mb19tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIsCisrCQkgICAgdm9pZCAqaWdub3JlKQor IHsKKyAgIGlmICh0YXJnZXRfaGFzX3N0YWNrCisgICAgICAgJiYgIXB0aWRfZXF1YWwgKGluZmVy aW9yX3B0aWQsIG51bGxfcHRpZCkKK0BAIC02ODI2LDYgKzY4ODEsMTMgQEAgc2hvd19zY2hlZHVs ZV9tdWx0aXBsZSAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKyAJCQkgICAg Im9mIGFsbCBwcm9jZXNzZXMgaXMgJXMuXG4iKSwgdmFsdWUpOworIH0KKyAKKytzdGF0aWMgY29u c3Qgc3RydWN0IGludGVybmFsdmFyX2Z1bmNzIHNpZ2luZm9fZnVuY3MgPQorK3sKKysgIHNpZ2lu Zm9fbWFrZV92YWx1ZSwKKysgIE5VTEwsCisrICBOVUxMCisrfTsKKysKKyB2b2lkCisgX2luaXRp YWxpemVfaW5mcnVuICh2b2lkKQorIHsKK0BAIC03MDk4LDcgKzcxNjAsNyBAQCBUZWxscyBnZGIg d2hldGhlciB0byBkZXRhY2ggdGhlIGNoaWxkIG9mIGEgZm9yay4iKSwKKyAgICAgIHZhbHVlIHdp dGggYSB2b2lkIHR5cGVkIHZhbHVlLCBhbmQgd2hlbiB3ZSBnZXQgaGVyZSwgZ2RiYXJjaAorICAg ICAgaXNuJ3QgaW5pdGlhbGl6ZWQgeWV0LiAgQXQgdGhpcyBwb2ludCwgd2UncmUgcXVpdGUgc3Vy ZSB0aGVyZQorICAgICAgaXNuJ3QgYW5vdGhlciBjb252ZW5pZW5jZSB2YXJpYWJsZSBvZiB0aGUg c2FtZSBuYW1lLiAgKi8KKy0gIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfc2lnaW5m byIsIHNpZ2luZm9fbWFrZV92YWx1ZSk7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5 ICgiX3NpZ2luZm8iLCAmc2lnaW5mb19mdW5jcywgTlVMTCk7CisgCisgICBhZGRfc2V0c2hvd19i b29sZWFuX2NtZCAoIm9ic2VydmVyIiwgbm9fY2xhc3MsCisgCQkJICAgJm9ic2VydmVyX21vZGVf MSwgXygiXAorZGlmZiAtLWdpdCBhL2dkYi9saW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKK2lu ZGV4IDM5NTk0MDIuLjI0YmY1MzQgMTAwNjQ0CistLS0gYS9nZGIvbGluZXNwZWMuYworKysrIGIv Z2RiL2xpbmVzcGVjLmMKK0BAIC00Myw2ICs0Myw3IEBACisgI2luY2x1ZGUgImFyY2gtdXRpbHMu aCIKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSAiY2xpL2NsaS11dGlscy5oIgorKyNp bmNsdWRlICJzdGFwLXByb2JlLmgiCisgCisgLyogV2Ugc2hhcmUgdGhpcyBvbmUgd2l0aCBzeW10 YWIuYywgYnV0IGl0IGlzIG5vdCBleHBvcnRlZCB3aWRlbHkuICAqLworIAorQEAgLTc1Niw2ICs3 NTcsNyBAQCBrZWVwX25hbWVfaW5mbyAoY2hhciAqcHRyKQorICAgIFBDIHJldHVybmVkIGlzIDAu CisgICAgRklMRTpGVU5DVElPTiAtLSBsaWtld2lzZSwgYnV0IHByZWZlciBmdW5jdGlvbnMgaW4g dGhhdCBmaWxlLgorICAgICpFWFBSIC0tIGxpbmUgaW4gd2hpY2ggYWRkcmVzcyBFWFBSIGFwcGVh cnMuCisrICAgcHJvYmU6W09CSkZJTEU6XVtQUk9WSURFUjpdTkFNRSAtLSBhIHN5c3RlbXRhcCBz dGF0aWMgcHJvYmUKKyAKKyAgICBUaGlzIG1heSBhbGwgYmUgZm9sbG93ZWQgYnkgYW4gImlmIEVY UFIiLCB3aGljaCB3ZSBpZ25vcmUuCisgCitAQCAtODIzLDYgKzgyNSw5IEBAIGRlY29kZV9saW5l XzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXJzdGxpbmUsIHN0cnVjdCBzeW10YWIgKmRlZmF1 bHRfc3ltdGFiLAorICAgaWYgKCoqYXJncHRyID09ICcqJykKKyAgICAgcmV0dXJuIGRlY29kZV9p bmRpcmVjdCAoYXJncHRyKTsKKyAKKysgIGlmIChzdHJuY21wICgqYXJncHRyLCAicHJvYmU6Iiwg NikgPT0gMCkKKysgICAgcmV0dXJuIHBhcnNlX3N0YXBfcHJvYmUgKGFyZ3B0cik7CisrCisgICBp c19xdW90ZWQgPSAoc3RyY2hyIChnZXRfZ2RiX2NvbXBsZXRlcl9xdW90ZV9jaGFyYWN0ZXJzICgp LAorIAkJICAgICAgICoqYXJncHRyKSAhPSBOVUxMKTsKKyAKIGRpZmYgLS1naXQgYS9nZGIvbGlu dXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLWluZGV4IDkyMmEyY2YuLmY3ZjU3OTggMTAwNjQ0 CitpbmRleCA3MzI4MTJkLi4wM2IzZDE5IDEwMDY0NAogLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCiAr KysgYi9nZGIvbGludXgtbmF0LmMKIEBAIC0xMjU0LDYgKzEyNTQsNjQgQEAgaXRlcmF0ZV9vdmVy X2x3cHMgKHB0aWRfdCBmaWx0ZXIsCkBAIC01NjE3LDggKzY3MjAsMjAgQEAgaW5kZXggNDJjYjJm Yy4uMDVhYzExZCAxMDA2NDQKICAvKiBDcmVhdGUgYSBwcm90b3R5cGUgZ2VuZXJpYyBHTlUvTGlu dXggdGFyZ2V0LiAgVGhlIGNsaWVudCBjYW4KICAgICBvdmVycmlkZSBpdCB3aXRoIGxvY2FsIG1l dGhvZHMuICAqLwogIHN0cnVjdCB0YXJnZXRfb3BzICogbGludXhfdGFyZ2V0ICh2b2lkKTsKK2Rp ZmYgLS1naXQgYS9nZGIvbWFjaG9yZWFkLmMgYi9nZGIvbWFjaG9yZWFkLmMKK2luZGV4IGRiZjlh ZTQuLjNkYjllMTYgMTAwNjQ0CistLS0gYS9nZGIvbWFjaG9yZWFkLmMKKysrKyBiL2dkYi9tYWNo b3JlYWQuYworQEAgLTg0OSw2ICs4NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMg bWFjaG9fc3ltX2ZucyA9IHsKKyAgIGRlZmF1bHRfc3ltZmlsZV9zZWdtZW50cywJLyogR2V0IHNl Z21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLworICAgTlVMTCwKKyAgIG1hY2hvX3N5 bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCisrICBOVUxM LAkJCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLworICAgJnBzeW1fZnVuY3Rpb25zCisgfTsKKyAKIGRp ZmYgLS1naXQgYS9nZGIvbWFpbi5jIGIvZ2RiL21haW4uYwotaW5kZXggNmJlNDgwNS4uMWIwMDc1 OSAxMDA2NDQKK2luZGV4IGZmMzA1YTEuLjI2N2YwYjAgMTAwNjQ0CiAtLS0gYS9nZGIvbWFpbi5j CiArKysgYi9nZGIvbWFpbi5jCiBAQCAtMzksNiArMzksNyBAQApAQCAtNTYzOCw3ICs2NzUzLDcg QEAgaW5kZXggNmJlNDgwNS4uMWIwMDc1OSAxMDA2NDQKICAgIC8qIFRoZXNlIGFyZSBzdGF0aWMg c28gdGhhdCB3ZSBjYW4gdGFrZSB0aGVpciBhZGRyZXNzIGluIGFuCiAgICAgICBpbml0aWFsaXpl ci4gICovCiAgICBzdGF0aWMgaW50IHByaW50X2hlbHA7Ci1AQCAtNDQ4LDEwICs0NTEsMTQgQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC00NTEsMTAgKzQ1NCwxNCBAQCBjYXB0dXJl ZF9tYWluICh2b2lkICpkYXRhKQogICAgICAgIHsiYXJncyIsIG5vX2FyZ3VtZW50LCAmc2V0X2Fy Z3MsIDF9LAogICAgICAgIHsibCIsIHJlcXVpcmVkX2FyZ3VtZW50LCAwLCAnbCd9LAogICAgICAg IHsicmV0dXJuLWNoaWxkLXJlc3VsdCIsIG5vX2FyZ3VtZW50LCAmcmV0dXJuX2NoaWxkX3Jlc3Vs dCwgMX0sCkBAIC01NjU0LDcgKzY3NjksNyBAQCBpbmRleCA2YmU0ODA1Li4xYjAwNzU5IDEwMDY0 NAogICAgICAgIHsKICAJaW50IG9wdGlvbl9pbmRleDsKICAKLUBAIC00NjksNiArNDc2LDkgQEAg Y2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC00NzIsNiArNDc5LDkgQEAgY2FwdHVyZWRf bWFpbiAodm9pZCAqZGF0YSkKICAJICBjYXNlIDA6CiAgCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0 IGp1c3Qgc2V0cyBhIGZsYWcuICAqLwogIAkgICAgYnJlYWs7CkBAIC01NjY0LDcgKzY3NzksNyBA QCBpbmRleCA2YmU0ODA1Li4xYjAwNzU5IDEwMDY0NAogIAkgIGNhc2UgT1BUX1NFOgogIAkgICAg c3ltYXJnID0gb3B0YXJnOwogIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NjQsNyArNjc0 LDMxIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNjY3LDcgKzY3NywzMSBAQCBj YXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogTm93IHRoYXQgZ2RiX2luaXQgaGFz IGNyZWF0ZWQgdGhlIGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCiAgICAgICBwb3NpdGlvbiB0 byBzZXQgYXJncyBmb3IgdGhhdCBpbmZlcmlvci4gICovCkBAIC01Njk3LDcgKzY4MTIsNyBAQCBp bmRleCA2YmU0ODA1Li4xYjAwNzU5IDEwMDY0NAogICAgICB7CiAgICAgICAgLyogVGhlIHJlbWFp bmluZyBvcHRpb25zIGFyZSB0aGUgY29tbWFuZC1saW5lIG9wdGlvbnMgZm9yIHRoZQogIAkgaW5m ZXJpb3IuICBUaGUgZmlyc3Qgb25lIGlzIHRoZSBzeW0vZXhlYyBmaWxlLCBhbmQgdGhlIHJlc3QK LUBAIC05MTMsNyArOTQ3LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC05MTYs NyArOTUwLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAKICAgIC8qIFJlYWQgaW4g dGhlIG9sZCBoaXN0b3J5IGFmdGVyIGFsbCB0aGUgY29tbWFuZCBmaWxlcyBoYXZlIGJlZW4KICAg ICAgIHJlYWQuICAqLwpAQCAtNTcwNyw3ICs2ODIyLDcgQEAgaW5kZXggNmJlNDgwNS4uMWIwMDc1 OSAxMDA2NDQKICAKICAgIGlmIChiYXRjaF9mbGFnKQogICAgICB7Ci1AQCAtOTI0LDEzICs5NTks MjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC05MjcsMTMgKzk2MiwyNSBAQCBj YXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogICAgLyogU2hvdyB0aW1lIGFuZC9vciBzcGFjZSB1 c2FnZS4gICovCiAgICBkb19jbGVhbnVwcyAocHJlX3N0YXRfY2hhaW4pOwogIApAQCAtNTczOSw3 ICs2ODU0LDcgQEAgaW5kZXggNmJlNDgwNS4uMWIwMDc1OSAxMDA2NDQKICAgICAgfQogICAgLyog Tm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8KICB9Ci1AQCAtOTYy LDcgKzEwMDksMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCitA QCAtOTY1LDcgKzEwMTIsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJl YW0pCiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUgR05VIGRlYnVnZ2Vy LiAgVXNhZ2U6XG5cblwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtjb3Jl LWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCkBAIC01NzUzLDcgKzY4NjgsNyBAQCBpbmRleCA2YmU0 ODA1Li4xYjAwNzU5IDEwMDY0NAogIE9wdGlvbnM6XG5cblwKICAiKSwgc3RyZWFtKTsKICAgIGZw dXRzX3VuZmlsdGVyZWQgKF8oIlwKLUBAIC0xMDAwLDcgKzEwNTIsMTMgQEAgT3B0aW9uczpcblxu XAorQEAgLTEwMDMsNyArMTA1NSwxMyBAQCBPcHRpb25zOlxuXG5cCiAgICAtLW53CQkgICAgIERv IG5vdCB1c2UgYSB3aW5kb3cgaW50ZXJmYWNlLlxuXAogICAgLS1ueCAgICAgICAgICAgICAgIERv IG5vdCByZWFkICIpLCBzdHJlYW0pOwogICAgZnB1dHNfdW5maWx0ZXJlZCAoZ2RiaW5pdCwgc3Ry ZWFtKTsKQEAgLTU3ODEsMTAgKzY4OTYsMTAgQEAgaW5kZXggYTQwMTg0Ni4uMjZkY2E4YyAxMDA2 NDQKICAKICAgICAgICB2YXJvYmpfdXBkYXRlX29uZSAodmFyLCBwcmludF92YWx1ZXMsIDEgLyog ZXhwbGljaXQgKi8pOwogZGlmZiAtLWdpdCBhL2dkYi9taW5zeW1zLmMgYi9nZGIvbWluc3ltcy5j Ci1pbmRleCA4NDk3OTkxLi40NjM1ODUzIDEwMDY0NAoraW5kZXggNGFlN2YyNy4uOTdkNDI1ZSAx MDA2NDQKIC0tLSBhL2dkYi9taW5zeW1zLmMKICsrKyBiL2dkYi9taW5zeW1zLmMKLUBAIC0zMzgs OCArMzM4LDkgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sX3RleHQgKGNvbnN0IGNoYXIgKm5hbWUs IHN0cnVjdCBvYmpmaWxlICpvYmpmKQorQEAgLTMzMyw4ICszMzMsOSBAQCBsb29rdXBfbWluaW1h bF9zeW1ib2xfdGV4dCAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IG9iamZpbGUgKm9iamYpCiAg CSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+aGFzaF9uZXh0KQogIAkgICAgewogIAkgICAgICBp ZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwgbmFtZSkgPT0gMCAmJgpA QCAtNTc5NiwxMSArNjkxMSwxMSBAQCBpbmRleCA4NDk3OTkxLi40NjM1ODUzIDEwMDY0NAogIAkJ ewogIAkJICBzd2l0Y2ggKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkpCiAgCQkgICAgewotQEAgLTcw MSw2ICs3MDIsMTYgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcGMp CitAQCAtNjk2LDYgKzY5Nyw2OSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVf QUREUiBwYykKICAgIHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAo cGMsIE5VTEwpOwogIH0KICAKLSsvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0 aW9uIGltcGxlbWVudGluZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KKysvKiBSZXR1cm4gbm9u LXplcm8gaWZmIFBDIGlzIGluIGFuIFNUVF9HTlVfSUZVTkMgZnVuY3Rpb24gcmVzb2x2ZXIuICAq LwogKwogK2ludAogK2luX2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpCkBAIC01ODEwLDEw ICs2OTI1LDYzIEBAIGluZGV4IDg0OTc5OTEuLjQ2MzU4NTMgMTAwNjQ0CiArICByZXR1cm4gbXN5 bWJvbCAmJiBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYzsKICt9 CiArCisrLyogU2VlIGVsZl9nbnVfaWZ1bmNfcmVzb2x2ZV9hZGRyIGZvciBpdHMgcmVhbCBpbXBs ZW1lbnRhdGlvbi4gICovCisrCisrc3RhdGljIENPUkVfQUREUgorK3N0dWJfZ251X2lmdW5jX3Jl c29sdmVfYWRkciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKKyt7Cisr ICBlcnJvciAoXygiR0RCIGNhbm5vdCByZXNvbHZlIFNUVF9HTlVfSUZVTkMgc3ltYm9sIGF0IGFk ZHJlc3MgJXMgd2l0aG91dCAiCisrCSAgICJ0aGUgRUxGIHN1cHBvcnQgY29tcGlsZWQgaW4uIiks CisrCSBwYWRkcmVzcyAoZ2RiYXJjaCwgcGMpKTsKKyt9CisrCisrLyogU2VlIGVsZl9nbnVfaWZ1 bmNfcmVzb2x2ZV9uYW1lIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICovCisrCisrc3Rh dGljIGludAorK3N0dWJfZ251X2lmdW5jX3Jlc29sdmVfbmFtZSAoY29uc3QgY2hhciAqZnVuY3Rp b25fbmFtZSwKKysJCQkgICAgIENPUkVfQUREUiAqZnVuY3Rpb25fYWRkcmVzc19wKQorK3sKKysg IGVycm9yIChfKCJHREIgY2Fubm90IHJlc29sdmUgU1RUX0dOVV9JRlVOQyBzeW1ib2wgXCIlc1wi IHdpdGhvdXQgIgorKwkgICAidGhlIEVMRiBzdXBwb3J0IGNvbXBpbGVkIGluLiIpLAorKwkgZnVu Y3Rpb25fbmFtZSk7CisrfQorKworKy8qIFNlZSBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3Ag Zm9yIGl0cyByZWFsIGltcGxlbWVudGF0aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N0dWJf Z251X2lmdW5jX3Jlc29sdmVyX3N0b3AgKHN0cnVjdCBicmVha3BvaW50ICpiKQorK3sKKysgIGlu dGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgIF8oImVsZl9nbnVfaWZ1bmNf cmVzb2x2ZXJfc3RvcCBjYW5ub3QgYmUgcmVhY2hlZC4iKSk7CisrfQorKworKy8qIFNlZSBlbGZf Z251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlv bi4gICovCisrCisrc3RhdGljIHZvaWQKKytzdHViX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5f c3RvcCAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisreworKyAgaW50ZXJuYWxfZXJyb3IgKF9fRklM RV9fLCBfX0xJTkVfXywKKysJCSAgXygiZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3Rv cCBjYW5ub3QgYmUgcmVhY2hlZC4iKSk7CisrfQorKworKy8qIFNlZSBlbGZfZ251X2lmdW5jX2Zu cyBmb3IgaXRzIHJlYWwgaW1wbGVtZW50YXRpb24uICAqLworKworK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgZ251X2lmdW5jX2ZucyBzdHViX2dudV9pZnVuY19mbnMgPQorK3sKKysgIHN0dWJfZ251X2lm dW5jX3Jlc29sdmVfYWRkciwKKysgIHN0dWJfZ251X2lmdW5jX3Jlc29sdmVfbmFtZSwKKysgIHN0 dWJfZ251X2lmdW5jX3Jlc29sdmVyX3N0b3AsCisrICBzdHViX2dudV9pZnVuY19yZXNvbHZlcl9y ZXR1cm5fc3RvcCwKKyt9OworKworKy8qIEEgcGxhY2Vob2xkZXIgZm9yICZlbGZfZ251X2lmdW5j X2Zucy4gICovCisrCisrY29uc3Qgc3RydWN0IGdudV9pZnVuY19mbnMgKmdudV9pZnVuY19mbnNf cCA9ICZzdHViX2dudV9pZnVuY19mbnM7CisrCiAgLyogRmluZCB0aGUgbWluaW1hbCBzeW1ib2wg bmFtZWQgTkFNRSwgYW5kIHJldHVybiBib3RoIHRoZSBtaW5zeW0KICAgICBzdHJ1Y3QgYW5kIGl0 cyBvYmpmaWxlLiAgVGhpcyBvbmx5IGNoZWNrcyB0aGUgbGlua2FnZSBuYW1lLiAgU2V0cwogICAg ICpPQkpGSUxFX1AgYW5kIHJldHVybnMgdGhlIG1pbmltYWwgc3ltYm9sLCBpZiBpdCBpcyBmb3Vu ZC4gIElmIGl0Ci1AQCAtNzcwLDYgKzc4MSw3IEBAIHByaW1fcmVjb3JkX21pbmltYWxfc3ltYm9s IChjb25zdCBjaGFyICpuYW1lLCBDT1JFX0FERFIgYWRkcmVzcywKK0BAIC03NjUsNiArODI5LDcg QEAgcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIENPUkVfQURE UiBhZGRyZXNzLAogICAgc3dpdGNoIChtc190eXBlKQogICAgICB7CiAgICAgIGNhc2UgbXN0X3Rl eHQ6CkBAIC01ODIxLDcgKzY5ODksNyBAQCBpbmRleCA4NDk3OTkxLi40NjM1ODUzIDEwMDY0NAog ICAgICBjYXNlIG1zdF9maWxlX3RleHQ6CiAgICAgIGNhc2UgbXN0X3NvbGliX3RyYW1wb2xpbmU6 CiAgICAgICAgc2VjdGlvbiA9IFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpOwotQEAgLTEyMzUsNyAr MTI0Nyw4IEBAIGZpbmRfc29saWJfdHJhbXBvbGluZV90YXJnZXQgKHN0cnVjdCBmcmFtZV9pbmZv ICpmcmFtZSwgQ09SRV9BRERSIHBjKQorQEAgLTEyMzAsNyArMTI5NSw4IEBAIGZpbmRfc29saWJf dHJhbXBvbGluZV90YXJnZXQgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwgQ09SRV9BRERSIHBj KQogICAgICB7CiAgICAgICAgQUxMX01TWU1CT0xTIChvYmpmaWxlLCBtc3ltYm9sKQogICAgICAg IHsKQEAgLTU4MzEsOCArNjk5OSwzNiBAQCBpbmRleCA4NDk3OTkxLi40NjM1ODUzIDEwMDY0NAog IAkgICAgJiYgc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKICAJCSAgICAg ICBTWU1CT0xfTElOS0FHRV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKICAJICByZXR1cm4gU1lNQk9M X1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpOworZGlmZiAtLWdpdCBhL2dkYi9taXBzcmVhZC5jIGIv Z2RiL21pcHNyZWFkLmMKK2luZGV4IDc0ZDc5NWQuLjdlMDUzMTcgMTAwNjQ0CistLS0gYS9nZGIv bWlwc3JlYWQuYworKysrIGIvZ2RiL21pcHNyZWFkLmMKK0BAIC00MDIsNiArNDAyLDcgQEAgc3Rh dGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGVjb2ZmX3N5bV9mbnMgPQorICAgZGVmYXVsdF9zeW1m aWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICov CisgICBOVUxMLAorICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRl YnVnIHNlY3Rpb24uICAqLworKyAgTlVMTCwJCQkJLyogc3ltX3Byb2JlX2ZucyAqLworICAgJnBz eW1fZnVuY3Rpb25zCisgfTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvb2JqZmlsZXMuYyBiL2dkYi9v YmpmaWxlcy5jCitpbmRleCBmMzI1OWRkLi4xMzA5Y2RiIDEwMDY0NAorLS0tIGEvZ2RiL29iamZp bGVzLmMKKysrKyBiL2dkYi9vYmpmaWxlcy5jCitAQCAtODQ2LDYgKzg0NiwxMSBAQCBvYmpmaWxl X3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCQkJCW9ial9zZWN0aW9uX2Fk ZHIgKHMpKTsKKyAgICAgfQorIAorKyAgLyogUmVsb2NhdGluZyBTeXN0ZW10YXAgcHJvYmVzLiAg Ki8KKysgIGlmIChvYmpmaWxlLT5zZiAmJiBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucykKKysg ICAgb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9yZWxvY2F0ZV9wcm9iZSAob2JqZmls ZSwKKysJCQkJCQkgICAgbmV3X29mZnNldHMsIGRlbHRhKTsKKysKKyAgIC8qIERhdGEgY2hhbmdl ZC4gICovCisgICByZXR1cm4gMTsKKyB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBi L2dkYi9wLXZhbHByaW50LmMKLWluZGV4IDYxOGZjMTcuLjExODBiMmYgMTAwNjQ0CitpbmRleCBk MmVmYTViLi5kOThiM2E0IDEwMDY0NAogLS0tIGEvZ2RiL3AtdmFscHJpbnQuYwogKysrIGIvZ2Ri L3AtdmFscHJpbnQuYwogQEAgLTM5LDYgKzM5LDcgQEAKQEAgLTU5MTIsMTAgKzcxMDgsMTAgQEAg aW5kZXggNjE4ZmMxNy4uMTE4MGIyZiAxMDA2NDQKICB9CiAgDAogZGlmZiAtLWdpdCBhL2dkYi9w YXJzZS5jIGIvZ2RiL3BhcnNlLmMKLWluZGV4IDg1NmMyNGQuLjZkYjcxYzMgMTAwNjQ0CitpbmRl eCAwMmE3ZDg5Li44MWYzZjBjIDEwMDY0NAogLS0tIGEvZ2RiL3BhcnNlLmMKICsrKyBiL2dkYi9w YXJzZS5jCi1AQCAtNDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1p bmltYWxfc3ltYm9sICptc3ltYm9sKQorQEAgLTQ4Nyw5ICs0ODcsMjIgQEAgd3JpdGVfZXhwX21z eW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKICAgIHBjID0gZ2RiYXJjaF9j b252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgYWRkciwgJmN1cnJlbnRfdGFyZ2V0 KTsKICAgIGlmIChwYyAhPSBhZGRyKQogICAgICB7CkBAIC01OTI5LDggKzcxMjUsOSBAQCBpbmRl eCA4NTZjMjRkLi42ZGI3MWMzIDEwMDY0NAogKwkgICYmIFNZTUJPTF9WQUxVRV9BRERSRVNTIChp ZnVuY19tc3ltKSA9PSBwYykKICsJewogKwkgIC8qIEEgZnVuY3Rpb24gZGVzY3JpcHRvciBoYXMg YmVlbiByZXNvbHZlZCBidXQgUEMgaXMgc3RpbGwgaW4gdGhlCi0rCSAgICAgZ251LWlmdW5jIHJl c29sdmVyIGJvZHkgKHN1Y2ggYXMgYmVjYXVzZSBpbmZlcmlvciBkb2VzIG5vdCBydW4gdG8KLSsJ ICAgICBiZSBhYmxlIHRvIGNhbGwgaXQpLiAgKi8KKysJICAgICBTVFRfR05VX0lGVU5DIHJlc29s dmVyIGJvZHkgKHN1Y2ggYXMgYmVjYXVzZSBpbmZlcmlvciBkb2VzIG5vdAorKwkgICAgIHJ1biB0 byBiZSBhYmxlIHRvIGNhbGwgaXQpLiAgKi8KKysKICsJICB0eXBlID0gbXN0X3RleHRfZ251X2lm dW5jOwogKwl9CiArICAgICAgZWxzZQpAQCAtNTkzOCw3ICs3MTM1LDcgQEAgaW5kZXggODU2YzI0 ZC4uNmRiNzFjMyAxMDA2NDQKICAgICAgICBzZWN0aW9uID0gTlVMTDsKICAgICAgICBhZGRyID0g cGM7CiAgICAgIH0KLUBAIC01MjEsNiArNTMzLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCitAQCAtNTIxLDYgKzUzNCwxMSBAQCB3cml0ZV9l eHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQogICAgICAgIHdyaXRl X2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z190ZXh0X3N5bWJv bCk7CiAgICAgICAgYnJlYWs7CiAgCkBAIC01OTUwLDcgKzcxNDcsNyBAQCBpbmRleCA4NTZjMjRk Li42ZGI3MWMzIDEwMDY0NAogICAgICBjYXNlIG1zdF9kYXRhOgogICAgICBjYXNlIG1zdF9maWxl X2RhdGE6CiAgICAgIGNhc2UgbXN0X2JzczoKLUBAIC01MjgsNiArNTQ1LDEwIEBAIHdyaXRlX2V4 cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCitAQCAtNTI4LDYgKzU0 NiwxMCBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9s KQogICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9k ZWJ1Z19kYXRhX3N5bWJvbCk7CiAgICAgICAgYnJlYWs7CiAgCkBAIC01OTYxLDcgKzcxNTgsNyBA QCBpbmRleCA4NTZjMjRkLi42ZGI3MWMzIDEwMDY0NAogICAgICBkZWZhdWx0OgogICAgICAgIHdy aXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9kZWJ1Z191bmtub3du X3N5bWJvbCk7CiAgICAgICAgYnJlYWs7Ci1AQCAtMTQ4MCw2ICsxNTAxLDcgQEAgcGFyc2VyX2Zw cmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKK0BAIC0xNDgwLDYgKzE1MDIsNyBA QCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQogIAogIGludAog IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9z LApAQCAtNTk2OSw3ICs3MTY2LDcgQEAgaW5kZXggODU2YzI0ZC4uNmRiNzFjMyAxMDA2NDQKICAJ CQkgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkg ICAgICB2b2lkICpkYXRhKSwKICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNTIxLDcgKzE1NDMsNyBA QCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBv cywKK0BAIC0xNTIxLDcgKzE1NDQsNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAJICAgIHN0cnVjdCB0eXBlICp0eXBlID0gZWx0 c1twb3MgKyAyICsgYXJnXS50eXBlOwogIAkgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBU WVBFX09CSkZJTEUgKHR5cGUpOwogIApAQCAtNTk3OCw3ICs3MTc1LDcgQEAgaW5kZXggODU2YzI0 ZC4uNmRiNzFjMyAxMDA2NDQKICAJICAgICAgcmV0dXJuIDE7CiAgCSAgfQogICAgICAgIH0KLUBA IC0xNTM5LDcgKzE1NjEsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJl c3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xNTM5LDcgKzE1NjIsOCBAQCBvcGVyYXRvcl9jaGVj a19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKICAKICAJLyogQ2hl Y2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KICAJICAgU1lN Qk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KQEAgLTU5ODgsNyArNzE4 NSw3IEBAIGluZGV4IDg1NmMyNGQuLjZkYjcxYzMgMTAwNjQ0CiAgCSAgcmV0dXJuIDE7CiAgCiAg CS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2 YXJpYWJsZS4gICovCi1AQCAtMTU1MiwyNCArMTU3NSwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFu ZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKK0BAIC0xNTUyLDI0ICsxNTc2 LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgcG9zLAogIAogICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3IgVFlQRSBhbmQgT0JKRklMRSBp ZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAgLTYwMjQsNyArNzIyMSw3IEBA IGluZGV4IDg1NmMyNGQuLjZkYjcxYzMgMTAwNjQ0CiAgCSAgICAgaW50ICgqb2JqZmlsZV9mdW5j KSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAogIAkgICAgIHZvaWQgKmRh dGEpCiAgewotQEAgLTE1ODQsNyArMTYxMCw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLAorQEAgLTE1ODQsNyArMTYxMSw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOwogICAgICAgIGlm IChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBw b3MsCkBAIC02MDM1LDcgKzcyMzIsNyBAQCBpbmRleCA4NTZjMjRkLi42ZGI3MWMzIDEwMDY0NAog IAlyZXR1cm4gMTsKICAKICAgICAgICBlbmRwb3MgPSBwb3M7Ci1AQCAtMTYxNSw4ICsxNjQzLDI5 IEBAIGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQorQEAgLTE2MTUsOCArMTY0NCwyOSBAQCBleHBfdXNlc19vYmpmaWxlIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB7CiAgICBn ZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5V TEwpOwogIApAQCAtNjI0MywxMCArNzQ0MCwxMCBAQCBpbmRleCAwNDljZGU4Li5mM2QzNWVjIDEw MDY0NAogIAogICAgcmV0dXJuIHJldDsKIGRpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dk Yi9wcmludGNtZC5jCi1pbmRleCAxMjI0OWEwLi42OWFhZTAxIDEwMDY0NAoraW5kZXggODEzNjBh ZC4uOGZhOWE5OSAxMDA2NDQKIC0tLSBhL2dkYi9wcmludGNtZC5jCiArKysgYi9nZGIvcHJpbnRj bWQuYwotQEAgLTk3MCw2ICs5NzAsMTEgQEAgcHJpbnRfY29tbWFuZF8xIChjaGFyICpleHAsIGlu dCBpbnNwZWN0LCBpbnQgdm9pZHByaW50KQorQEAgLTk3Nyw2ICs5NzcsMTEgQEAgcHJpbnRfY29t bWFuZF8xIChjaGFyICpleHAsIGludCBpbnNwZWN0LCBpbnQgdm9pZHByaW50KQogICAgZWxzZQog ICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7CiAgCkBAIC02MjU4LDcgKzc0NTUs NyBAQCBpbmRleCAxMjI0OWEwLi42OWFhZTAxIDEwMDY0NAogICAgaWYgKHZvaWRwcmludCB8fCAo dmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKICAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5cGUg KHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKICAgICAgewotQEAgLTE0NzEsNiArMTQ3NiwyNCBA QCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorQEAgLTE0NzgsNiArMTQ4Mywy NCBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQogIAlzZXRfaW50ZXJuYWx2 YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CiAgICAg IH0KICB9CkBAIC02MjgzLDcgKzc0ODAsNyBAQCBpbmRleCAxMjI0OWEwLi42OWFhZTAxIDEwMDY0 NAogIAwKICAKICAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWlu LgotQEAgLTI4NjQsNCArMjg4Nyw4IEBAIFNob3cgcHJpbnRpbmcgb2Ygc291cmNlIGZpbGVuYW1l IGFuZCBsaW5lIG51bWJlciB3aXRoIDxzeW1ib2w+LiIpLCBOVUxMLAorQEAgLTI4NzIsNCArMjg5 NSw4IEBAIFNob3cgcHJpbnRpbmcgb2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciB3 aXRoIDxzeW1ib2w+LiIpLCBOVUxMLAogICAgYWRkX2NvbSAoImV2YWwiLCBub19jbGFzcywgZXZh bF9jb21tYW5kLCBfKCJcCiAgQ29udmVydCBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEs IGFyZzIsIGFyZzMsIC4uLiwgYXJnbiB0b1xuXAogIGEgY29tbWFuZCBsaW5lLCBhbmQgY2FsbCBp dC4iKSk7CkBAIC03MzE4LDcgKzg1MTUsNyBAQCBpbmRleCBjMDEwNDIwLi4zZjRhMjYxIDEwMDY0 NAogIAogIAwKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9nZGIvcHl0aG9u L3B5LXZhbHVlLmMKLWluZGV4IDUxNWVhZWMuLjVkNDgzZWQgMTAwNjQ0CitpbmRleCA0MzgxZDUy Li41ZGZmM2UyIDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5jCiArKysgYi9nZGIv cHl0aG9uL3B5LXZhbHVlLmMKIEBAIC0yOCw2ICsyOCw3IEBACkBAIC03MzYxLDcgKzg1NTgsNyBA QCBpbmRleCA1MTVlYWVjLi41ZDQ4M2VkIDEwMDY0NAogIAogIAwKIGRpZmYgLS1naXQgYS9nZGIv cHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9weXRob24uYwotaW5kZXggM2IxMGQ4Yy4uNzQ4 NWQxNCAxMDA2NDQKK2luZGV4IDkwZDVkYzguLmVjNDgyM2UgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0 aG9uL3B5dGhvbi5jCiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCiBAQCAtNDksOCArNDksMTEg QEAgc3RhdGljIGludCBnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSAxOwpAQCAtNzM3Niw3ICs4 NTczLDcgQEAgaW5kZXggM2IxMGQ4Yy4uNzQ4NWQxNCAxMDA2NDQKICAKICBzdGF0aWMgUHlNZXRo b2REZWYgR2RiTWV0aG9kc1tdOwogIAotQEAgLTcyMyw2ICs3MjYsNTMgQEAgZ2RicHlfcHJpbnRf c3RhY2sgKHZvaWQpCitAQCAtNzY5LDYgKzc3Miw1MyBAQCBnZGJweV9wcmludF9zdGFjayAodm9p ZCkKICAKICAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgogICAgIFRoZXJlIGFsd2F5 cyBpcyBvbmUuICAqLwpAQCAtNzQzMCw3ICs4NjI3LDcgQEAgaW5kZXggM2IxMGQ4Yy4uNzQ4NWQx NCAxMDA2NDQKICAKICBzdGF0aWMgUHlPYmplY3QgKgogIGdkYnB5X2dldF9jdXJyZW50X3Byb2dz cGFjZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotQEAgLTExMDgsNiAr MTE1OCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQorQEAgLTExOTQsNiAr MTI0NCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQogICAgICAiR2V0IGEg dmFsdWUgZnJvbSBoaXN0b3J5IiB9LAogICAgeyAiZXhlY3V0ZSIsIChQeUNGdW5jdGlvbikgZXhl Y3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKICAgICAgIkV4 ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKQEAgLTc0NDAsMTAgKzg2MzcsMTAgQEAgaW5kZXggM2Ix MGQ4Yy4uNzQ4NWQxNCAxMDA2NDQKICAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1 ZSIgfSwKICAKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5oIGIvZ2RiL3B5dGhvbi9w eXRob24uaAotaW5kZXggNThkOTdmYy4uOTNkNTZlZiAxMDA2NDQKK2luZGV4IGNlMGViMzUuLjE0 NTcyZjQgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCiArKysgYi9nZGIvcHl0aG9u L3B5dGhvbi5oCi1AQCAtMzAsNiArMzAsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJv bF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOworQEAgLTMyLDYgKzMyLDggQEAgdm9p ZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAq KTsKICAKICB2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNo YXIgKmZpbGUpOwogIApAQCAtNzQ2Niw4ICs4NjYzLDIwIEBAIGluZGV4IDQzMmRhOTkuLjc4YzZi MWMgMTAwNjQ0CiAgfQogIAogIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJn ZXQsIGNvbXB1dGUgdGhlIGVudHJ5LXBvaW50CitkaWZmIC0tZ2l0IGEvZ2RiL3NvbXJlYWQuYyBi L2dkYi9zb21yZWFkLmMKK2luZGV4IDcwODMxYTAuLmJhZjY4ZWEgMTAwNjQ0CistLS0gYS9nZGIv c29tcmVhZC5jCisrKysgYi9nZGIvc29tcmVhZC5jCitAQCAtNDM5LDYgKzQzOSw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBzb21fc3ltX2ZucyA9CisgICBkZWZhdWx0X3N5bWZpbGVf c2VnbWVudHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KKyAg IE5VTEwsCisgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcg c2VjdGlvbi4gICovCisrICBOVUxMLAkJCQkvKiBzeW1fZ2V0X3Byb2JlcyAqLworICAgJnBzeW1f ZnVuY3Rpb25zCisgfTsKKyAKIGRpZmYgLS1naXQgYS9nZGIvc3RhY2suYyBiL2dkYi9zdGFjay5j Ci1pbmRleCA2ZTU5Y2QwLi4wZWFjYWM5IDEwMDY0NAoraW5kZXggMDg4OGI2OS4uYzNlZmQ1YiAx MDA2NDQKIC0tLSBhL2dkYi9zdGFjay5jCiArKysgYi9nZGIvc3RhY2suYwogQEAgLTM2Niw2ICsz NjYsNyBAQCBwcmludF9mcmFtZV9hcmdzIChzdHJ1Y3Qgc3ltYm9sICpmdW5jLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCkBAIC03NDkyLDYgKzg3MDEsMjE0NyBAQCBpbmRleCA2ZTU5Y2QwLi4w ZWFjYWM5IDEwMDY0NAogIAkJICB1aV9vdXRfZmllbGRfc3RyZWFtICh1aW91dCwgInZhbHVlIiwg c3RiKTsKICAJICAgICAgICB9CiAgCSAgICAgIGVsc2UKK2RpZmYgLS1naXQgYS9nZGIvc3RhcC1w cm9iZS5jIGIvZ2RiL3N0YXAtcHJvYmUuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLmViMmZiN2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9zdGFwLXByb2JlLmMKK0BA IC0wLDAgKzEsMTkzOSBAQAorKy8qIFN5c3RlbXRhcCBwcm9iZSBzdXBwb3J0IGZvciBHREIuCisr CisrICAgQ29weXJpZ2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisrCisrI2luY2x1ZGUgImRlZnMuaCIKKysjaW5jbHVkZSAi c3RhcC1wcm9iZS5oIgorKyNpbmNsdWRlICJ2ZWMuaCIKKysjaW5jbHVkZSAidWktb3V0LmgiCisr I2luY2x1ZGUgImdkYl9yZWdleC5oIgorKyNpbmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNsdWRl ICJhcmNoLXV0aWxzLmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAiZmlsZW5h bWVzLmgiCisrI2luY2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKKysj aW5jbHVkZSAiYXguaCIKKysjaW5jbHVkZSAiYXgtZ2RiLmgiCisrI2luY2x1ZGUgInVzZXItcmVn cy5oIgorKyNpbmNsdWRlICJjb21wbGFpbnRzLmgiCisrI2luY2x1ZGUgImNsaS9jbGktdXRpbHMu aCIKKysKKysjaW5jbHVkZSA8Y3R5cGUuaD4KKysKKytlbnVtIHN0YXBfYXJnX2JpdG5lc3MKKyt7 CisrICBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5FRCwKKysgIFNUQVBfQVJHX0JJVE5FU1NfMzJC SVRfVU5TSUdORUQsCisrICBTVEFQX0FSR19CSVRORVNTXzMyQklUX1NJR05FRCwKKysgIFNUQVBf QVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQsCisrICBTVEFQX0FSR19CSVRORVNTXzY0QklUX1NJ R05FRCwKKyt9OworKworK3N0cnVjdCBzdGFwX3Byb2JlX2FyZworK3sKKysgIC8qIFRoZSBiaXRu ZXNzIG9mIHRoaXMgYXJndW1lbnQuICAqLworKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJpdG5l c3M7CisrCisrICAvKiBUaGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGlzIGFyZ3VtZW50LiAgKi8K KysgIGNoYXIgKmFyZ19zdHI7CisrfTsKKysKKysjZGVmaW5lIFNUQVBfTUFYX0FSR1MgMTAKKysK KytzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8KKyt7CisrICAvKiBUaGUgbnVtYmVyIG9mIHZhbGlkIHBh cnNlZCBhcmd1bWVudHMuICAqLworKyAgaW50IG5fYXJnczsKKysKKysgIC8qIFRoZSBwcm9iZSB0 byB3aGljaCB0aGVzZSBhcmd1bWVudHMgYmVsb25nLiAgKi8KKysgIHN0cnVjdCBzdGFwX3Byb2Jl ICpwcm9iZTsKKysKKysgIC8qIEluZm9ybWF0aW9uIGFib3V0IGVhY2ggYXJndW1lbnQuICAqLwor KyAgc3RydWN0IHN0YXBfcHJvYmVfYXJnICphcmc7CisrfTsKKysKKysvKiBTdHJ1Y3QgdGhhdCBj b250YWlucyBhbGwgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBldmFsdWF0ZQorKyAgIGFu IGV4cHJlc3Npb24uICAqLworKworK3N0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbworK3sKKysg IC8qIFRoZSBjb25zdGFudCBwb2ludGVyIHdoaWNoIGhvbGRzIHRoZSBleHByZXNzaW9uLiBUaGlz IGlzIHByaW1hcmlseQorKyAgICAgdXNlZCBmb3IgcHJpbnRpbmcgZXJyb3IgbWVzc2FnZXMuICBF dmFsdWF0aW9uIGZ1bmN0aW9ucyBzaG91bGQKKysgICAgIG5vdCBtb2RpZnkgdGhpcyBwb2ludGVy IGRpcmVjdGx5OyBpbnN0ZWFkLCB0aGV5IHNob3VsZCB1c2UgdGhlCisrICAgICBFWFBfQlVGRkVS IHBvaW50ZXIgYmVsb3cuICAqLworKyAgY29uc3QgY2hhciAqc2F2ZWRfZXhwcjsKKysKKysgIC8q IE1vZGlmaWFibGUgdmVyc2lvbiBvZiB0aGUgYWJvdmUgcG9pbnRlci4gICovCisrICBjaGFyICpl eHBfYnVmOworKworKyAgLyogVGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgZ2RiYXJjaC4gICov CisrICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaDsKKysKKysgIC8qIFRoZSBwb2ludGVyIHRvIHRo ZSBjdXJyZW50IGZyYW1lLCB1c2VkIHdoZW4gYWNjZXNzaW5nIHJlZ2lzdGVycycKKysgICAgIGNv bnRlbnRzLiAgKi8KKysgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZTsKKysKKysgIC8qIFRoZSBi aXRuZXNzIHNwZWNpZmllZCBmb3IgdGhpcyBhcmd1bWVudC4gICovCisrICBlbnVtIHN0YXBfYXJn X2JpdG5lc3MgYml0bmVzczsKKysKKysgIC8qIEZsYWcgdG8gaW5kaWNhdGUgaWYgd2UgYXJlIGNv bXBpbGluZyBhbiBhZ2VudCBleHByZXNzaW9uLiAgKi8KKysgIGludCBjb21waWxpbmdfcDsKKysK KysgIC8qIElmIHRoZSBhYm92ZSBmbGFnIGlzIHRydWUgKG9uZSksIHRoaXMgZmllbGQgd2lsbCBj b250YWluIHRoZQorKyAgICAgcG9pbnRlciB0byB0aGUgYWdlbnQgZXhwcmVzc2lvbi4gICovCisr ICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHI7CisrCisrICAvKiBUaGUgdmFsdWUgd2UgYXJlIG1v ZGlmeWluZyAoZm9yIGFnZW50IGV4cHJlc3Npb24pLiAgKi8KKysgIHN0cnVjdCBheHNfdmFsdWUg KnZhbHVlOworK307CisrCisrLyogVGhpcyBkdW1teSB2YXJpYWJsZSBpcyB1c2VkIHdoZW4gcGFy c2luZyBhIHByb2JlJ3MgYXJndW1lbnQgZmFpbHMuCisrICAgSW4gdGhpcyBjYXNlLCB0aGUgbnVt YmVyIG9mIGFyZ3VtZW50cyBmb3IgdGhpcyBwcm9iZSBpcyB6ZXJvLCBzbyB0aGF0J3MKKysgICB3 aHkgdGhpcyB2YXJpYWJsZSBpcyB1c2VmdWwuICAqLworKworK3N0YXRpYyBzdHJ1Y3Qgc3RhcF9h cmdzX2luZm8gZHVtbXlfc3RhcF9hcmdzX2luZm8gPQorKyAgeyAwLCBOVUxMLCBOVUxMIH07Cisr CisrLyogRXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgcHJvYmUncyBhcmd1bWVudCBleHByZXNzaW9u cy4gIExIUyByZXByZXNlbnRzCisrICAgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZXhwcmVzc2lvbiwg YW5kIFBSRUMgaXMgdGhlIHByZWNlZGVuY2Ugb2YgdGhlCisrICAgbGFzdCBvcGVyYXRvciBpZGVu dGlmaWVkIGJlZm9yZSBjYWxsaW5nIHRoZSBmdW5jdGlvbi4gICovCisrCisrc3RhdGljIHN0cnVj dCB2YWx1ZSAqCisrc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yIChzdHJ1Y3Qgc3RhcF9l dmFsdWF0aW9uX2luZm8gKmV2YWxfaW5mbywKKysJCQkJc3RydWN0IHZhbHVlICpsaHMsIGludCBw cmVjKTsKKysKKytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytzdGFwX2V2YWx1YXRlX2NvbmRpdGlv bmFsbHkgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvKTsKKysKKytzdGF0 aWMgdm9pZAorK3N0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKGNoYXIgKipzLCBpbnQgaW5zaWRl X3BhcmVuKQorK3sKKysgIGlmIChpbnNpZGVfcGFyZW4pCisrICAgICpzID0gc2tpcF9zcGFjZXMg KCpzKTsKKyt9CisrCisrc3RhdGljIGludAorK3N0YXBfcGFyc2VfYXJnIChjb25zdCBjaGFyICoq cCkKKyt7CisrICBjaGFyICpjdXIgPSAoY2hhciAqKSAqcDsKKysgIGludCBkb25lID0gMDsKKysg IGludCBwYXJlbl9vcGVuID0gMDsKKysKKysgIHdoaWxlICghZG9uZSkKKysgICAgeworKyAgICAg IHN3aXRjaCAoKmN1cikKKysJeworKwljYXNlICcgJzogY2FzZSAwOgorKwkgIC8qIElmIHdlJ3Jl IGhlcmUsIHRoZW4gd2UgaGF2ZSBhbHJlYWR5IHBhcnNlZCBldmVyeXRoaW5nCisrCSAgICAgZnJv bSB0aGlzIGFyZ3VtZW50LiAgKi8KKysJICBpZiAocGFyZW5fb3BlbikKKysJICAgIHJldHVybiAw OworKwkgIGRvbmUgPSAxOworKwkgIGJyZWFrOworKworKwljYXNlICcoJzoKKysJICArK3BhcmVu X29wZW47CisrCSAgKytjdXI7CisrCSAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwg cGFyZW5fb3Blbik7CisrCSAgYnJlYWs7CisrCisrCWNhc2UgJyknOgorKwkgIGlmICghcGFyZW5f b3BlbikKKysJICAgIHJldHVybiAwOworKworKwkgIC0tcGFyZW5fb3BlbjsKKysJICArK2N1cjsK KysJICBpZiAocGFyZW5fb3BlbikKKysJICAgIGN1ciA9IHNraXBfc3BhY2VzIChjdXIpOworKwkg IGJyZWFrOworKworKwljYXNlICcrJzogY2FzZSAnLSc6CisrCWNhc2UgJyonOiBjYXNlICcvJzoK KysJY2FzZSAnPic6IGNhc2UgJzwnOiBjYXNlICd8JzogY2FzZSAnJic6CisrCWNhc2UgJ14nOiBj YXNlICchJzoKKysJICAgIHsKKysJICAgICAgY2hhciBjID0gKmN1cjsKKysKKysJICAgICAgKytj dXI7CisrCSAgICAgIHN3aXRjaCAoKmN1cikKKysJCXsKKysJCWNhc2UgJz4nOgorKwkJICBpZiAo YyAhPSAnPCcgJiYgYyAhPSAnPicpCisrCQkgICAgcmV0dXJuIDA7CisrCisrCQkgICsrY3VyOwor KwkJICBicmVhazsKKysKKysJCWNhc2UgJzwnOgorKwkJICBpZiAoYyAhPSAnPCcpCisrCQkgICAg cmV0dXJuIDA7CisrCisrCQkgICsrY3VyOworKwkJICBicmVhazsKKysKKysJCWNhc2UgJz0nOgor KwkJICBpZiAoYyAhPSAnPScgJiYgYyAhPSAnPCcgJiYgYyAhPSAnPicgJiYgYyAhPSAnIScpCisr CQkgICAgcmV0dXJuIDA7CisrCisrCQkgICsrY3VyOworKwkJICBicmVhazsKKysKKysJCWNhc2Ug J3wnOgorKwkJICBpZiAoYyAhPSAnfCcpCisrCQkgICAgcmV0dXJuIDA7CisrCisrCQkgICsrY3Vy OworKwkJICBicmVhazsKKysKKysJCWNhc2UgJyYnOgorKwkJICBpZiAoYyAhPSAnJicpCisrCQkg ICAgcmV0dXJuIDA7CisrCisrCQkgICsrY3VyOworKwkJICBicmVhazsKKysKKysJCWRlZmF1bHQ6 CisrCQkgIGJyZWFrOworKwkJfQorKwkgICAgICAvKiBJbmZpeCBvcGVyYXRvcnMgdGFrZSB0d28g YXJndW1lbnRzLCBvbmUgb24gZWl0aGVyCisrCQkgc2lkZS4gIFNraXBwaW5nIHRoZSB3aGl0ZXNw YWNlcyB0aGF0IG1heSBoYXBwZW4gb24gdGhlCisrCQkgcmlnaHQgc2lkZS4gICovCisrCSAgICAg IHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVuX29wZW4pOworKwkgICAgfQor KwkgIGJyZWFrOworKworKwljYXNlICclJzoKKysJICAgIHsKKysJICAgICAgKytjdXI7CisrCSAg ICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVuX29wZW4pOworKwkgICAg ICBpZiAoKmN1ciA+PSAnYScgJiYgKmN1ciA8PSAneicpCisrCQl7CisrCQkgIC8qIFdlJ3JlIGRl YWxpbmcgd2l0aCBhIHJlZ2lzdGVyIG5hbWUuICAqLworKwkJICB3aGlsZSAoaXNhbG51bSAoKmN1 cikpCisrCQkgICAgKytjdXI7CisrCisrCQkgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZj dXIsIHBhcmVuX29wZW4pOworKworKwkJICAvKiBTb21lIHJlZ2lzdGVycyAoZS5nLiBmbG9hdGlu Zy1wb2ludCByZWdpc3RlciBzdGFjaworKwkJICAgICByZWdpc3RlcnMgb24gSW50ZWwgaTM4Nikg aGF2ZSB0aGUgZm9sbG93aW5nIHN5bnRheDoKKysKKysJCSAgICAgYCVzdCgwKScsIGAlc3QoMSkn LCBhbmQgc28gb24uCisrCisrCQkgICAgIFNvIGl0J3Mgb2sgdG8gZXhwZWN0IHBhcmVudGhlc2lz IGhlcmUuICAqLworKwkJICBpZiAoKmN1ciA9PSAnKCcpCisrCQkgICAgeworKwkJICAgICAgKytj dXI7CisrCQkgICAgICBzdGFwX3NraXBfd2hpdGVzcGFjZV9jb25kICgmY3VyLCBwYXJlbl9vcGVu KTsKKysJCSAgICAgIGlmICghaXNkaWdpdCAoKmN1cikpCisrCQkJLyogVGhpcyBpcyBhbiBlcnJv ciwgc2luY2Ugd2Ugb25seSBleHBlY3QgbnVtYmVycworKwkJCSAgIGluc2lkZSB0aGlzIHBhcmVu dGhlc2lzLiAgKi8KKysJCQlyZXR1cm4gMDsKKysJCSAgICAgICsrY3VyOworKwkJICAgICAgc3Rh cF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7CisrCQkgICAgICBpZiAo KmN1ciAhPSAnKScpCisrCQkJLyogV2Ugb25seSBleHBlY3Qgb25lIG51bWJlci4gICovCisrCQkJ cmV0dXJuIDA7CisrCQkgICAgICArK2N1cjsKKysJCSAgICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNl X2NvbmQgKCZjdXIsIHBhcmVuX29wZW4pOworKwkJICAgIH0KKysJCX0KKysJICAgIH0KKysJICBi cmVhazsKKysKKysJY2FzZSAnJCc6CisrCSAgICB7CisrCSAgICAgIC8qIFRoaXMgaXMgYW4gaW50 ZWdlciBjb25zdGFudC4gICovCisrCSAgICAgICsrY3VyOworKwkgICAgICBzdGFwX3NraXBfd2hp dGVzcGFjZV9jb25kICgmY3VyLCBwYXJlbl9vcGVuKTsKKysKKysJICAgICAgd2hpbGUgKGlzZGln aXQgKCpjdXIpKQorKwkJKytjdXI7CisrCisrCSAgICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2Nv bmQgKCZjdXIsIHBhcmVuX29wZW4pOworKwkgICAgfQorKwkgIGJyZWFrOworKworKwljYXNlICcw JzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6CisrCWNhc2UgJzUnOiBj YXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoKKysJICAgIHsKKysJICAgICAg Y2hhciAqb2xkID0gY3VyOworKworKwkgICAgICAvKiBOdW1iZXIuICAqLworKwkgICAgICB3aGls ZSAoaXNkaWdpdCAoKmN1cikpCisrCQkrK2N1cjsKKysKKysJICAgICAgLyogV2UgaGF2ZSB0byBk byBhIGxvb2thaGVhZCBoZXJlLCBiZWNhdXNlIHRoZSB1c2VyIG1heQorKwkJIGlucHV0IGAyICsg MicgKHdpdGggc3BhY2VzKSwgYW5kIHRoaXMgaXMgbm90IGFuIGVycm9yLiAgKi8KKysJICAgICAg Y3VyID0gc2tpcF9zcGFjZXMgKGN1cik7CisrCisrCSAgICAgIHN3aXRjaCAoKmN1cikKKysJCXsK KysJCWNhc2UgJysnOiBjYXNlICctJzoKKysJCSAgLyogV2UgbWF5IGZpbmQgdGhlIGBAJyBzaWdu LCBhbmQgaXQgbWVhbnMgdGhhdCB0aGUKKysJCSAgICAgYXJndW1lbnQgaGFzIGZpbmlzaGVkLCBz byB3ZSBzaG91bGRuJ3QgYWR2YW5jZSB0aGUKKysJCSAgICAgcG9pbnRlci4gICovCisrCQkgIGlm IChjdXJbMV0gJiYgKGN1clsxXSA9PSAnNCcgfHwgY3VyWzFdID09ICc4JykKKysJCSAgICAgICYm IGN1clsyXSAmJiBjdXJbMl0gPT0gJ0AnKQorKwkJICAgIHsKKysJCSAgICAgIGN1ciA9IG9sZDsK KysJCSAgICAgIGdvdG8gZmluOworKwkJICAgIH0KKysJCSAgYnJlYWs7CisrCisrCQljYXNlICcq JzogY2FzZSAnLyc6IGNhc2UgJz4nOiBjYXNlICc8JzoKKysJCWNhc2UgJ3wnOiBjYXNlICcmJzog Y2FzZSAnXic6IGNhc2UgJyEnOgorKwkJICAvKiBUaGlzIGlzIGEgYmluYXJ5IG9wZXJhdGlvbiwg d2hpY2ggbWVhbnMgd2UnbGwKKysJCSAgICAgaGF2ZSB0byBmaW5kIGFub3RoZXIgbnVtYmVyIGFm dGVyIHRoZSBvcGVyYXRvci4gICovCisrCQkgIGJyZWFrOworKworKwkJY2FzZSAnKCc6CisrCQkg IC8qIFdlIG1heSBhbHNvIGhhdmUgc2VudGVuY2VzIGluIHRoZSBmb3JtOgorKworKwkJICAgICBg NCAoJXJheCknICAqLworKwkJICBicmVhazsKKysJCX0KKysJICAgIH0KKytmaW46CisrCSAgYnJl YWs7CisrCX0KKysgICAgfQorKworKyAgKnAgPSBjdXI7CisrCisrICByZXR1cm4gMTsKKyt9Cisr Cisrc3RhdGljIHZvaWQKKytzdGFwX2ZyZWVfYXJnc19pbmZvICh2b2lkICphcmdzX2luZm9fcHRy KQorK3sKKysgIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAqYSA9IChzdHJ1Y3Qgc3RhcF9hcmdzX2lu Zm8gKikgYXJnc19pbmZvX3B0cjsKKysgIGludCBpOworKworKyAgZm9yIChpID0gMDsgaSA8IFNU QVBfTUFYX0FSR1M7IGkrKykKKysgICAgeworKyAgICAgIHhmcmVlIChhLT5hcmctPmFyZ19zdHIp OworKyAgICB9CisrCisrICB4ZnJlZSAoYS0+YXJnKTsKKysgIHhmcmVlIChhKTsKKyt9CisrCisr dm9pZAorK3N0YXBfcGFyc2VfcHJvYmVfYXJndW1lbnRzIChzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJv YmUpCisreworKyAgc3RydWN0IHN0YXBfYXJnc19pbmZvICphcmdzX2luZm87CisrICBzdHJ1Y3Qg Y2xlYW51cCAqYmFja190bzsKKysgIGNvbnN0IGNoYXIgKmN1ciA9IHByb2JlLT5hcmdzOworKyAg aW50IGN1cnJlbnRfYXJnID0gLTE7CisrICBlbnVtCisrICAgIHsKKysgICAgICBORVdfQVJHLAor KyAgICAgIEJJVE5FU1MsCisrICAgICAgUEFSU0VfQVJHLAorKyAgICB9IGN1cnJlbnRfc3RhdGU7 CisrCisrICAvKiBGb3Igbm93LCB3ZSBhc3N1bWUgZXZlcnl0aGluZyBpcyBub3QgZ29pbmcgdG8g d29yay4gICovCisrICBwcm9iZS0+cGFyc2VkX2FyZ3MgPSAmZHVtbXlfc3RhcF9hcmdzX2luZm87 CisrCisrICBpZiAoIWN1ciB8fCAhKmN1ciB8fCAqY3VyID09ICc6JykKKysgICAgcmV0dXJuOwor KworKyAgYXJnc19pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8p KTsKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKHN0YXBfZnJlZV9hcmdzX2luZm8sIGFyZ3Nf aW5mbyk7CisrICBhcmdzX2luZm8tPmFyZyA9IHhjYWxsb2MgKFNUQVBfTUFYX0FSR1MsIHNpemVv ZiAoc3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7CisrCisrICAvKiBPaywgbGV0J3Mgc3RhcnQuICAq LworKyAgY3VycmVudF9zdGF0ZSA9IE5FV19BUkc7CisrCisrICB3aGlsZSAoKmN1cikKKysgICAg eworKyAgICAgIHN3aXRjaCAoY3VycmVudF9zdGF0ZSkKKysJeworKwljYXNlIE5FV19BUkc6Cisr CSAgKytjdXJyZW50X2FyZzsKKysKKysJICBpZiAoY3VycmVudF9hcmcgPj0gU1RBUF9NQVhfQVJH UykKKysJICAgIHsKKysJICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJ CSBfKCJwcm9iZSBgJXMnIGhhcyBtb3JlIGFyZ3VtZW50cyB0aGFuIHRoZSBtYXhpbXVtICIKKysJ CQkgICAiYWxsb3dlZCIpLCBwcm9iZS0+bmFtZSk7CisrCSAgICAgIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKKysJICAgICAgcmV0dXJuOworKwkgICAgfQorKworKwkgIGN1cnJlbnRfc3RhdGUgPSBC SVRORVNTOworKwkgIGJyZWFrOworKworKwljYXNlIEJJVE5FU1M6CisrCSAgICB7CisrCSAgICAg IGVudW0gc3RhcF9hcmdfYml0bmVzcyBiOworKwkgICAgICBpbnQgZ290X21pbnVzID0gMDsKKysK KysJICAgICAgLyogV2UgZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5nIGxpa2U6CisrCisrCQkgTkBP UAorKworKwkJIFdoZXJlIGBOJyBjYW4gYmUgWyssLV1bNCw4XS4gIFRoaXMgaXMgbm90IG1hbmRh dG9yeSwgc28KKysJCSB3ZSBjaGVjayBpdCBoZXJlLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgZ28g dG8gdGhlIG5leHQKKysJCSBzdGF0ZS4gICovCisrCSAgICAgIGlmICgoKmN1ciA9PSAnLScgJiYg Y3VyWzFdICYmIGN1clsyXSAhPSAnQCcpCisrCQkgICYmIGN1clsxXSAhPSAnQCcpCisrCQl7Cisr CQkgIGN1cnJlbnRfc3RhdGUgPSBQQVJTRV9BUkc7CisrCQkgIGFyZ3NfaW5mby0+YXJnW2N1cnJl bnRfYXJnXS5iaXRuZXNzCisrCQkgICAgPSBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5FRDsKKysJ CSAgYnJlYWs7CisrCQl9CisrCisrCSAgICAgIGlmICgqY3VyID09ICctJykKKysJCXsKKysJCSAg LyogRGlzY2FyZCB0aGUgYC0nLiAgKi8KKysJCSAgKytjdXI7CisrCQkgIGdvdF9taW51cyA9IDE7 CisrCQl9CisrCisrCSAgICAgIGlmICgqY3VyID09ICc0JykKKysJCWIgPSBnb3RfbWludXMgPyBT VEFQX0FSR19CSVRORVNTXzMyQklUX1NJR05FRAorKwkJICA6IFNUQVBfQVJHX0JJVE5FU1NfMzJC SVRfVU5TSUdORUQ7CisrCSAgICAgIGVsc2UgaWYgKCpjdXIgPT0gJzgnKQorKwkJYiA9IGdvdF9t aW51cyA/IFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfU0lHTkVECisrCQkgIDogU1RBUF9BUkdfQklU TkVTU182NEJJVF9VTlNJR05FRDsKKysJICAgICAgZWxzZQorKwkJeworKwkJICAvKiBXZSBoYXZl IGFuIGVycm9yLCBiZWNhdXNlIHdlIGRvbid0IGV4cGVjdCBhbnl0aGluZworKwkJICAgICBleGNl cHQgNCBhbmQgOC4gICovCisrCQkgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJ CQkgICAgIF8oInVucmVjb2duaXplZCBiaXRuZXNzIGAlYycgZm9yIHByb2JlIGAlcyciKSwKKysJ CQkgICAgICpjdXIsIHByb2JlLT5uYW1lKTsKKysJCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwor KwkJICByZXR1cm47CisrCQl9CisrCisrCSAgICAgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJn XS5iaXRuZXNzID0gYjsKKysJICAgICAgLyogRGlzY2FyZCB0aGUgbnVtYmVyIGFuZCB0aGUgYEAn IHNpZ24uICAqLworKwkgICAgICBjdXIgKz0gMjsKKysJICAgICAgLyogTW92ZSBvbi4gICovCisr CSAgICAgIGN1cnJlbnRfc3RhdGUgPSBQQVJTRV9BUkc7CisrCSAgICB9CisrCSAgYnJlYWs7Cisr CisrCWNhc2UgUEFSU0VfQVJHOgorKwkgICAgeworKwkgICAgICBjb25zdCBjaGFyICpzdGFydCA9 IGN1cjsKKysKKysJICAgICAgaWYgKCFzdGFwX3BhcnNlX2FyZyAoJmN1cikpCisrCQl7CisrCQkg IC8qIFdlIGhhdmUgdHJpZWQgdG8gcGFyc2UgdGhpcyBhcmd1bWVudCwgYnV0IGl0J3MKKysJCSAg ICAgbWFsZm9ybWVkLiAgVGhpcyBpcyBhbiBlcnJvci4gICovCisrCQkgIGRvX2NsZWFudXBzIChi YWNrX3RvKTsKKysJCSAgcmV0dXJuOworKwkJfQorKworKwkgICAgICBhcmdzX2luZm8tPmFyZ1tj dXJyZW50X2FyZ10uYXJnX3N0cgorKwkJPSBzYXZlc3RyaW5nIChzdGFydCwgY3VyIC0gc3RhcnQp OworKwkgICAgICAvKiBTdGFydCBpdCBvdmVyIGFnYWluLiAgKi8KKysJICAgICAgY3VyID0gc2tp cF9zcGFjZXMgKChjaGFyICopIGN1cik7CisrCSAgICAgIGN1cnJlbnRfc3RhdGUgPSBORVdfQVJH OworKwkgICAgfQorKwkgIGJyZWFrOworKwl9CisrCisrICAgICAgaWYgKCEqY3VyICYmIGN1cnJl bnRfc3RhdGUgIT0gTkVXX0FSRykKKysJeworKwkgIC8qIFdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0 aGUgYXJndW1lbnQgc3RyaW5nLCBidXQgd2UncmUKKysJICAgICBzdGlsbCBpbiB0aGUgbWlkZGxl IG9mIHRoZSBwcm9jZXNzIG9mIHBhcnNpbmcgYW4gYXJndW1lbnQuCisrCSAgICAgSXQgbWVhbnMg dGhlIGFyZ3VtZW50IHN0cmluZyBpcyBtYWxmb3JtZWQuICAqLworKwkgIGNvbXBsYWludCAoJnN5 bWZpbGVfY29tcGxhaW50cywKKysJCSAgICAgXygibWFsZm9ybWVkIGFyZ3VtZW50IGZvciBwcm9i ZSBgJXMnIiksCisrCQkgICAgIHByb2JlLT5uYW1lKTsKKysJICBkb19jbGVhbnVwcyAoYmFja190 byk7CisrCSAgcmV0dXJuOworKwl9CisrICAgIH0KKysKKysgIGFyZ3NfaW5mby0+bl9hcmdzID0g Y3VycmVudF9hcmcgKyAxOworKyAgYXJnc19pbmZvLT5hcmcgPSB4cmVhbGxvYyAoYXJnc19pbmZv LT5hcmcsCisrCQkJICAgICAgYXJnc19pbmZvLT5uX2FyZ3MKKysJCQkgICAgICAqIHNpemVvZiAo c3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7CisrICBhcmdzX2luZm8tPnByb2JlID0gcHJvYmU7Cisr CisrICBwcm9iZS0+cGFyc2VkX2FyZ3MgPSBhcmdzX2luZm87CisrCisrICBkaXNjYXJkX2NsZWFu dXBzIChiYWNrX3RvKTsKKyt9CisrCisraW50Cisrc3RhcF9nZXRfcHJvYmVfYXJndW1lbnRfY291 bnQgKGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKKyt7CisrICBpZiAoIXByb2JlLT5w YXJzZWRfYXJncykKKysgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3Rh cF9wcm9iZSAqKSBwcm9iZSk7CisrCisrICByZXR1cm4gcHJvYmUtPnBhcnNlZF9hcmdzLT5uX2Fy Z3M7CisrfQorKworKy8qIFJldHVybnMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgbGV2ZWwgb2Yg T1AsIG9yIHplcm8gaWYgdGhlIG9wZXJhdG9yCisrICAgY29kZSB3YXMgbm90IHJlY29nbml6ZWQu CisrICAgVGhlIGxldmVscyB3ZXJlIHRha2VuIGZyb20gdGhlIGdhcyBtYW51YWwuICAqLworKwor K3N0YXRpYyBpbnQKKytzdGFwX2dldF9vcGVyYXRvcl9wcmVjIChlbnVtIGV4cF9vcGNvZGUgb3Ap CisreworKyAgc3dpdGNoIChvcCkKKysgICAgeworKyAgICBjYXNlIEJJTk9QX0xPR0lDQUxfT1I6 CisrICAgICAgcmV0dXJuIDE7CisrCisrICAgIGNhc2UgQklOT1BfTE9HSUNBTF9BTkQ6CisrICAg ICAgcmV0dXJuIDI7CisrCisrICAgIGNhc2UgQklOT1BfQUREOiBjYXNlIEJJTk9QX1NVQjoKKysg ICAgY2FzZSBCSU5PUF9FUVVBTDogY2FzZSBCSU5PUF9OT1RFUVVBTDoKKysgICAgY2FzZSBCSU5P UF9MRVNTOiBjYXNlIEJJTk9QX0xFUToKKysgICAgY2FzZSBCSU5PUF9HVFI6IGNhc2UgQklOT1Bf R0VROgorKyAgICAgIHJldHVybiAzOworKworKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfSU9SOiBj YXNlIEJJTk9QX0JJVFdJU0VfQU5EOgorKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOiBjYXNl IFVOT1BfTE9HSUNBTF9OT1Q6CisrICAgICAgcmV0dXJuIDQ7CisrCisrICAgIGNhc2UgQklOT1Bf TVVMOiBjYXNlIEJJTk9QX0RJVjogY2FzZSBCSU5PUF9SRU06CisrICAgIGNhc2UgQklOT1BfTFNI OiBjYXNlIEJJTk9QX1JTSDoKKysgICAgICByZXR1cm4gNTsKKysKKysgICAgZGVmYXVsdDoKKysg ICAgICByZXR1cm4gMDsKKysgICAgfQorK30KKysKKysvKiBHaXZlbiBTLCB0aGlzIGZ1bmN0aW9u IHJlYWRzIHRoZSBvcGVyYXRvciBpbiBpdCBhbmQgZmlsbHMgdGhlIE9QCisrICAgcG9pbnRlciB3 aXRoIGl0cyBjb2RlLiAgUmV0dXJucyAxIG9uIHN1Y2Nlc3MsIHplcm8gaWYgdGhlIG9wZXJhdG9y CisrICAgd2FzIG5vdCByZWNvZ25pemVkLiAgKi8KKysKKytzdGF0aWMgaW50Cisrc3RhcF9nZXRf b3Bjb2RlIChjaGFyICoqcywgZW51bSBleHBfb3Bjb2RlICpvcCkKKyt7CisrICBjaGFyIGMgPSAq KnM7CisrICBpbnQgcmV0ID0gMTsKKysKKysgICpzICs9IDE7CisrCisrICBzd2l0Y2ggKGMpCisr ICAgIHsKKysgICAgY2FzZSAnKic6CisrICAgICAgKm9wID0gQklOT1BfTVVMOworKyAgICAgIGJy ZWFrOworKworKyAgICBjYXNlICcvJzoKKysgICAgICAqb3AgPSBCSU5PUF9ESVY7CisrICAgICAg YnJlYWs7CisrCisrICAgIGNhc2UgJyUnOgorKyAgICAgIHsKKysJaWYgKGlzYWxwaGEgKCoqcykp CisrCSAgeworKwkgICAgLyogRGVhbGluZyB3aXRoIGEgcmVnaXN0ZXIgbmFtZS4gICovCisrCSAg ICByZXQgPSAwOworKwkgICAgYnJlYWs7CisrCSAgfQorKworKwkqb3AgPSBCSU5PUF9SRU07Cisr ICAgICAgfQorKyAgICBicmVhazsKKysKKysgICAgY2FzZSAnPCc6CisrICAgICAgKm9wID0gQklO T1BfTEVTUzsKKysgICAgICBpZiAoKipzID09ICc8JykKKysJeworKwkgICpzICs9IDE7CisrCSAg Km9wID0gQklOT1BfTFNIOworKwl9CisrICAgICAgZWxzZSBpZiAoKipzID09ICc9JykKKysJewor KwkgICpzICs9IDE7CisrCSAgKm9wID0gQklOT1BfTEVROworKwl9CisrICAgICAgZWxzZSBpZiAo KipzID09ICc+JykKKysJeworKwkgICpzICs9IDE7CisrCSAgKm9wID0gQklOT1BfTk9URVFVQUw7 CisrCX0KKysgICAgYnJlYWs7CisrCisrICAgIGNhc2UgJz4nOgorKyAgICAgICpvcCA9IEJJTk9Q X0dUUjsKKysgICAgICBpZiAoKipzID09ICc+JykKKysJeworKwkgICpzICs9IDE7CisrCSAgKm9w ID0gQklOT1BfUlNIOworKwl9CisrICAgICAgZWxzZSBpZiAoKipzID09ICc9JykKKysJeworKwkg ICpzICs9IDE7CisrCSAgKm9wID0gQklOT1BfR0VROworKwl9CisrICAgIGJyZWFrOworKworKyAg ICBjYXNlICd8JzoKKysgICAgICAqb3AgPSBCSU5PUF9CSVRXSVNFX0lPUjsKKysgICAgICBpZiAo KipzID09ICd8JykKKysJeworKwkgICpzICs9IDE7CisrCSAgKm9wID0gQklOT1BfTE9HSUNBTF9P UjsKKysJfQorKyAgICBicmVhazsKKysKKysgICAgY2FzZSAnJic6CisrICAgICAgKm9wID0gQklO T1BfQklUV0lTRV9BTkQ7CisrICAgICAgaWYgKCoqcyA9PSAnJicpCisrCXsKKysJICAqcyArPSAx OworKwkgICpvcCA9IEJJTk9QX0xPR0lDQUxfQU5EOworKwl9CisrICAgIGJyZWFrOworKworKyAg ICBjYXNlICdeJzoKKysgICAgICAqb3AgPSBCSU5PUF9CSVRXSVNFX1hPUjsKKysgICAgICBicmVh azsKKysKKysgICAgY2FzZSAnISc6CisrICAgICAgKm9wID0gVU5PUF9MT0dJQ0FMX05PVDsKKysg ICAgICBicmVhazsKKysKKysgICAgY2FzZSAnKyc6CisrICAgICAgKm9wID0gQklOT1BfQUREOwor KyAgICAgIGJyZWFrOworKworKyAgICBjYXNlICctJzoKKysgICAgICAqb3AgPSBCSU5PUF9TVUI7 CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgJz0nOgorKyAgICAgIGlmICgqKnMgIT0gJz0n KQorKwl7CisrCSAgcmV0ID0gMDsKKysJICBicmVhazsKKysJfQorKyAgICAgICpvcCA9IEJJTk9Q X0VRVUFMOworKyAgICAgIGJyZWFrOworKworKyAgICBkZWZhdWx0OgorKyAgICAgIC8qIFdlIGRp ZG4ndCBmaW5kIGFueSBvcGVyYXRvci4gICovCisrICAgICAgKnMgLT0gMTsKKysgICAgICByZXR1 cm4gMDsKKysgICAgfQorKworKyAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIHZvaWQKKytz dGFwX29wY29kZV90b19heCAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8s CisrCQkgICBlbnVtIGV4cF9vcGNvZGUgb3Bjb2RlKQorK3sKKysgIHN0cnVjdCBhZ2VudF9leHBy ICpleHByID0gZXZhbF9pbmZvLT5hZXhwcjsKKysKKysgIHN3aXRjaCAob3Bjb2RlKQorKyAgICB7 CisrICAgIGNhc2UgQklOT1BfTVVMOgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX211bCk7 CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfRElWOgorKyAgICAgIC8qIEZJWE1F OiBTaG91bGQgd2Ugc2lnbi1leHRlbmQgdGhlIG9wZXJhbmRzPyAgKi8KKysgICAgICBheF9zaW1w bGUgKGV4cHIsIGFvcF9kaXZfc2lnbmVkKTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBC SU5PUF9SRU06CisrICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfcmVtX3Vuc2lnbmVkKTsKKysg ICAgICBicmVhazsKKysKKysgICAgY2FzZSBCSU5PUF9MRVNTOgorKyAgICAgIC8qIEZJWE1FOiBT aG91bGQgd2Ugc2lnbi1leHRlbmQgdGhlIG9wZXJhbmRzPyAgKi8KKysgICAgICBheF9zaW1wbGUg KGV4cHIsIGFvcF9sZXNzX3NpZ25lZCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklO T1BfTEVROgorKyAgICAgIC8qIEEgPD0gQiBpcyAhKEIgPCBBKSAqLworKyAgICAgIGF4X3NpbXBs ZSAoZXhwciwgYW9wX3N3YXApOworKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xlc3Nfc2ln bmVkKTsKKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9sb2dfbm90KTsKKysgICAgICBicmVh azsKKysKKysgICAgY2FzZSBCSU5PUF9HVFI6CisrICAgICAgLyogQSA+IEIgaXMgQiA8IEEgKi8K KysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9zd2FwKTsKKysgICAgICBheF9zaW1wbGUgKGV4 cHIsIGFvcF9sZXNzX3NpZ25lZCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1Bf R0VROgorKyAgICAgIC8qIEEgPj0gQiBpcyAhKEEgPCBCKSAqLworKyAgICAgIGF4X3NpbXBsZSAo ZXhwciwgYW9wX2xlc3Nfc2lnbmVkKTsKKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9sb2df bm90KTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBCSU5PUF9OT1RFUVVBTDoKKysgICAg ICBheF9zaW1wbGUgKGV4cHIsIGFvcF9lcXVhbCk7CisrICAgICAgYXhfc2ltcGxlIChleHByLCBh b3BfbG9nX25vdCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfTFNIOgorKyAg ICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xzaCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNh c2UgQklOT1BfUlNIOgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX3JzaF91bnNpZ25lZCk7 CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfQklUV0lTRV9JT1I6CisrICAgICAg YXhfc2ltcGxlIChleHByLCBhb3BfYml0X29yKTsKKysgICAgICBicmVhazsKKysgICAgIAorKyAg ICBjYXNlIEJJTk9QX0xPR0lDQUxfT1I6CisrICAgICAgLyogRklYTUU6ID8/Pz8/ICovCisrLy8g ICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF8KKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBC SU5PUF9CSVRXSVNFX0FORDoKKysgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9iaXRfYW5kKTsK KysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKKysgICAgICAv KiBGSVhNRTogPz8/PyAqLworKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIEJJTk9QX0JJVFdJ U0VfWE9SOgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2JpdF94b3IpOworKyAgICAgIGJy ZWFrOworKworKyAgICBjYXNlIFVOT1BfTE9HSUNBTF9OT1Q6CisrICAgICAgYXhfc2ltcGxlIChl eHByLCBhb3BfbG9nX25vdCk7CisrICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfQURE OgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2FkZCk7CisrICAgICAgYnJlYWs7CisrCisr ICAgIGNhc2UgQklOT1BfU1VCOgorKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX3N1Yik7Cisr ICAgICAgYnJlYWs7CisrCisrICAgIGNhc2UgQklOT1BfRVFVQUw6CisrICAgICAgYXhfc2ltcGxl IChleHByLCBhb3BfZXF1YWwpOworKyAgICAgIGJyZWFrOworKworKyAgICBkZWZhdWx0OgorKyAg ICAgIGVycm9yIChfKCJJbnZhbGlkIG9wZXJhdG9yLiIpKTsKKysgICAgfQorK30KKysKKysvKiBS ZXR1cm5zIDEgaWYgKlMgaXMgYW4gb3BlcmF0b3IsIHplcm8gb3RoZXJ3aXNlLiAgKi8KKysKKytz dGF0aWMgaW50Cisrc3RhcF9pc19vcGVyYXRvciAoY2hhciAqcykKKyt7CisrICBjaGFyIG9wOwor KworKyAgaWYgKCFzIHx8ICEqcykKKysgICAgcmV0dXJuIDA7CisrCisrICBvcCA9ICpzOworKwor KyAgaWYgKCpzID09ICclJyAmJiBpc2FscGhhIChzWzFdKSkKKysgICAgLyogUmVnaXN0ZXIgbmFt ZS4gICovCisrICAgIHJldHVybiAwOworKworKyAgcmV0dXJuIChvcCA9PSAnKycgfHwgb3AgPT0g Jy0nIHx8IG9wID09ICcqJyB8fCBvcCA9PSAnLycKKysJICB8fCBvcCA9PSAnPicgfHwgb3AgPT0g JzwnIHx8IG9wID09ICchJyB8fCBvcCA9PSAnXicKKysJICB8fCBvcCA9PSAnfCcgfHwgb3AgPT0g JyYnIHx8IG9wID09ICclJyB8fCBvcCA9PSAnPScpOworK30KKysKKysvKiBUaGlzIGZ1bmN0aW9u IGZldGNoZXMgdGhlIHZhbHVlIG9mIHRoZSByZWdpc3RlciB3aG9zZQorKyAgIG5hbWUgc3RhcnRz IGluIHRoZSBleHByZXNzaW9uIGJ1ZmZlci4gIEl0IGFsc28gYXBwbGllcyBhbnkgcmVnaXN0ZXIK KysgICBkaXNwbGFjZW1lbnRzIChlLmcuLCBgLTQoJWVheCknKSwgYW5kIGluZGlyZWN0cyB0aGUg Y29udGVudHMgb2YgdGhlCisrICAgcmVnaXN0ZXIgKGUuZy4sIGAoJWVheCknKS4gIEl0IHJldHVy bnMgUkVUIGlmIHRoZSBvcGVyYXRpb24gaGFzIHN1Y2NlZWRlZCwKKysgICBvciBjYWxscyBgZXJy b3InIG90aGVyd2lzZS4gICovCisrCisrc3RhdGljIHN0cnVjdCB2YWx1ZSAqCisrc3RhcF9mZXRj aF9yZWdfdmFsdWUgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvLAorKwkJ ICAgICAgc3RydWN0IHZhbHVlICpkaXNwbGFjZW1lbnQpCisreworKyAgY29uc3QgY2hhciAqc3Rh cnQ7CisrICBjaGFyICpzID0gZXZhbF9pbmZvLT5leHBfYnVmOworKyAgc3RydWN0IGdkYmFyY2gg KmdkYmFyY2ggPSBldmFsX2luZm8tPmdkYmFyY2g7CisrICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUgPSBldmFsX2luZm8tPmZyYW1lOworKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJpdG5lc3Mg PSBldmFsX2luZm8tPmJpdG5lc3M7CisrI2RlZmluZSBSRUdfTkFNRV9NQVhfU0laRSAyMAorKyAg Y2hhciByZWduYW1lW1JFR19OQU1FX01BWF9TSVpFICsgMV07CisrICBpbnQgbGVuLCByZWdudW0s IGluZGlyZWN0X3AgPSAwOworKyAgc3RydWN0IHZhbHVlICpyZXQ7CisrICAKKysgIC8qIFRoZSBm dW5jdGlvbiB3aGljaCBjYWxsZWQgdXMgZGlkIG5vdCBjaGVjayBpZiB0aGUgZXhwcmVzc2lvbgor KyAgICAgYnVmZmVyIHdhcyBlbXB0eS4gICovCisrICBnZGJfYXNzZXJ0IChzICYmICpzKTsKKysK KysgIC8qIFZhbGlkIHJlZ2lzdGVyIG5hbWUgb24geDg2IHBsYXRmb3JtcyBhcmU6CisrCisrICAg ICBbcGFyZW5dJXthLXowLTl9W3BhcmVuXQorKworKyAgICAgTGV0J3MgY2hlY2sgZm9yIHRoYXQg aGVyZS4gICovCisrICBpZiAoKnMgPT0gJygnKQorKyAgICB7CisrICAgICAgKytzOworKyAgICAg IGlmICghKnMgfHwgKnMgIT0gJyUnCisrCSAgfHwgKCpzID09ICclJyAmJiAhaXNhbHBoYSAoc1sx XSkpKQorKwllcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIG9uIGV4cHJlc3Npb24gYCVz Jy4iKSwKKysJICAgICAgIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrICAgICAgKytzOworKyAg ICAgIC8qIFRoZSBwcmVzZW5jZSBvZiBwYXJlbnRoZXNpcyBtZWFucyB0aGF0IHdlIHdhbnQgdG8g aW5kaXJlY3QKKysJIHRoZSByZWdpc3Rlci4gICovCisrICAgICAgaW5kaXJlY3RfcCA9IDE7Cisr ICAgIH0KKysgIGVsc2UgaWYgKCpzID09ICclJykKKysgICAgeworKyAgICAgICsrczsKKysgICAg ICBpZiAoISpzIHx8ICFpc2FscGhhICgqcykpCisrCWVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVy IG5hbWUgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkgICAgICAgZXZhbF9pbmZvLT5zYXZlZF9l eHByKTsKKysgICAgfQorKyAgZWxzZQorKyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBu YW1lIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsK KysKKysgIGlmIChkaXNwbGFjZW1lbnQgJiYgIWluZGlyZWN0X3ApCisrICAgIC8qIFdlIGNhbm5v dCBhcHBseSBkaXNwbGFjZW1lbnQgdG8gbm9uLWluZGlyZWN0IHJlZ2lzdGVyIGFjY2Vzcy4gICov CisrICAgIGVycm9yIChfKCJUcnlpbmcgdG8gYXBwbHkgZGlzcGxhY2VtZW50IHdpdGhvdXQgaW5k aXJlY3RpbmcgcmVnaXN0ZXIgIgorKwkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksIGV2YWxf aW5mby0+c2F2ZWRfZXhwcik7CisrCisrICAvKiBPaywgbGV0J3MgY2FsY3VsYXRlIHRoZSBzaXpl IG9mIHRoZSByZWdpc3RlciBuYW1lLiAgKi8KKysgIHN0YXJ0ID0gczsKKysgIHdoaWxlIChpc2Fs bnVtICgqcykpCisrICAgICsrczsKKysKKysgIGxlbiA9IHMgLSBzdGFydDsKKysKKysgIGlmICgq cyA9PSAnKScpCisrICAgICsrczsKKysKKysgIGlmIChsZW4gPj0gUkVHX05BTUVfTUFYX1NJWkUp CisrICAgIGVycm9yIChfKCJUaGUgcmVnaXN0ZXIgbmFtZSBpcyBncmVhdGVyIHRoYW4gdGhlIHN1 cHBvcnRlZCBzaXplICIKKysJICAgICAib24gZXhwcmVzc2lvbiBgJXMnLiIpLCBldmFsX2luZm8t PnNhdmVkX2V4cHIpOworKworKyAgc3RybmNweSAocmVnbmFtZSwgc3RhcnQsIGxlbik7CisrICBy ZWduYW1lW2xlbl0gPSAnXDAnOworKworKyAgLyogVHJhbnNsYXRpbmcgdGhlIHJlZ2lzdGVyIG5h bWUgaW50byB0aGUgY29ycmVzcG9uZGluZyBudW1iZXIuICAqLworKyAgcmVnbnVtID0gdXNlcl9y ZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBsZW4pOworKworKyAgaWYg KHJlZ251bSA9PSAtMSkKKysgICAgZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0ZXIgbmFtZSBgJXMn IG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJICAgcmVnbmFtZSwgZXZhbF9pbmZvLT5zYXZlZF9l eHByKTsKKysKKysgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKyAgICBheF9yZWcgKGV2 YWxfaW5mby0+YWV4cHIsIHJlZ251bSk7CisrICBlbHNlCisrICAgIHJldCA9IHZhbHVlX29mX3Jl Z2lzdGVyIChyZWdudW0sIGZyYW1lKTsKKysKKysgIGlmIChpbmRpcmVjdF9wKQorKyAgICB7Cisr ICAgICAgc3RydWN0IHR5cGUgKnQgPSBOVUxMOworKyAgICAgIGVudW0gYWdlbnRfb3AgYW9wOwor KworKyAgICAgIC8qIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhhdCB0aGUgcmVnaXN0ZXIg bXVzdCBiZSBpbmRpcmVjdGVkLAorKwkgd2Ugc2hvdWxkIGtub3cgd2hhdCdzIHRoZSBjb3JyZWN0 IHR5cGUgdG8gY2FzdCBpdCBiZWZvcmUgbWFraW5nCisrCSB0aGUgaW5kaXJlY3Rpb24uICBUaGlz IHR5cGUgY29ycmVzcG9uZHMgdG8gdGhlIGJpdG5lc3Mgc3BlY2lmaWVkCisrCSBiZWZvcmUgdGhl IGBAJyBzaWduIG9uIHRoZSBhcmd1bWVudCBzdHJpbmcsIG9yIGl0IGRlZmF1bHRzIHRvCisrCSBg dW5zaWduZWQgbG9uZycgaWYgdGhlIGBAJyB3ZXJlIG5vdCBwcmVzZW50LiAgKi8KKysKKysgICAg ICBzd2l0Y2ggKGJpdG5lc3MpCisrCXsKKysJY2FzZSBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5F RDoKKysJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICAgIGFvcCA9IGFvcF9yZWYz MjsKKysJICBlbHNlCisrCSAgICB0ID0gbG9va3VwX3BvaW50ZXJfdHlwZQorKwkgICAgICAoYnVp bHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91bnNpZ25lZF9sb25nKTsKKysJICBicmVhazsK KysKKysJY2FzZSBTVEFQX0FSR19CSVRORVNTXzMyQklUX1NJR05FRDoKKysJICBpZiAoZXZhbF9p bmZvLT5jb21waWxpbmdfcCkKKysJICAgIGFvcCA9IGFvcF9yZWYzMjsKKysJICBlbHNlCisrCSAg ICB0ID0gbG9va3VwX3BvaW50ZXJfdHlwZQorKwkgICAgICAoYnVpbHRpbl90eXBlIChnZGJhcmNo KS0+YnVpbHRpbl9pbnQzMik7CisrCSAgYnJlYWs7CisrCisrCWNhc2UgU1RBUF9BUkdfQklUTkVT U18zMkJJVF9VTlNJR05FRDoKKysJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJICAg IGFvcCA9IGFvcF9yZWYzMjsKKysJICBlbHNlCisrCSAgICB0ID0gbG9va3VwX3BvaW50ZXJfdHlw ZQorKwkgICAgICAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91aW50MzIpOworKwkg IGJyZWFrOworKworKwljYXNlIFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfU0lHTkVEOgorKwkgIGlm IChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkgICAgYW9wID0gYW9wX3JlZjY0OworKwkgIGVs c2UKKysJICAgIHQgPSBsb29rdXBfcG9pbnRlcl90eXBlCisrCSAgICAgIChidWlsdGluX3R5cGUg KGdkYmFyY2gpLT5idWlsdGluX2ludDY0KTsKKysJICBicmVhazsKKysKKysJY2FzZSBTVEFQX0FS R19CSVRORVNTXzY0QklUX1VOU0lHTkVEOgorKwkgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19w KQorKwkgICAgYW9wID0gYW9wX3JlZjY0OworKwkgIGVsc2UKKysJICAgIHQgPSBsb29rdXBfcG9p bnRlcl90eXBlCisrCSAgICAgIChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX3VpbnQ2 NCk7CisrCSAgYnJlYWs7CisrCisrCWRlZmF1bHQ6CisrCSAgaW50ZXJuYWxfZXJyb3IgKF9fRklM RV9fLCBfX0xJTkVfXywKKysJCQkgIF8oIlVuZGVmaW5lZCBiaXRuZXNzIGZvciBwcm9iZS4iKSk7 CisrCSAgYnJlYWs7CisrCX0KKysKKysgICAgICBpZiAoZGlzcGxhY2VtZW50KQorKwl7CisrCSAg aWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrCSAgICB7CisrCSAgICAgIGF4X2NvbnN0X2wg KGV2YWxfaW5mby0+YWV4cHIsIHZhbHVlX2FzX2xvbmcgKGRpc3BsYWNlbWVudCkpOworKwkgICAg ICAvKiBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyAgKi8KKysJICAgICAgYXhfc2ltcGxlIChldmFs X2luZm8tPmFleHByLCBhb3BfYWRkKTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICByZXQgPSB2 YWx1ZV9wdHJhZGQgKHJldCwgdmFsdWVfYXNfbG9uZyAoZGlzcGxhY2VtZW50KSk7CisrCX0KKysK KysgICAgICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJYXhfc2ltcGxlIChldmFsX2lu Zm8tPmFleHByLCBhb3ApOworKyAgICAgIGVsc2UKKysJeworKwkgIHJldCA9IHZhbHVlX2Nhc3Qg KHQsIHJldCk7CisrCSAgcmV0ID0gdmFsdWVfaW5kIChyZXQpOworKwl9CisrICAgIH0KKysKKysg IC8qIFVwZGF0aW5nIHRoZSBleHByZXNzaW9uIGJ1ZmZlciBwb2ludGVyLCBiZWNhdXNlIHdlIGhh dmUgbWFkZQorKyAgICAgc29tZSBtb2RpZmljYXRpb25zIHRvIGl0IGJlZm9yZS4gICovCisrICBl dmFsX2luZm8tPmV4cF9idWYgPSBzOworKworKyAgcmV0dXJuIGV2YWxfaW5mby0+Y29tcGlsaW5n X3AgPyAoc3RydWN0IHZhbHVlICopIDEgOiByZXQ7CisrfQorKworKy8qIFRoaXMgZnVuY3Rpb24g dHJpZXMgdG8gZXZhbHVhdGUgYSBzaW5nbGUgb3BlcmFuZCBvZiB0aGUgZXhwcmVzc2lvbi4KKysK KysgICBTaW5nbGUgb3BlcmFuZHMgY2FuIGJlOgorKworKyAgIC0gdW5hcnkgb3BlcmF0b3JzIGAt JyBhbmQgYH4nOworKyAgIC0gaW50ZWdlciBjb25zdGFudHMgKGJlZ2lubmluZyB3aXRoIGAkJyk7 CisrICAgLSByZWdpc3RlciBhY2Nlc3MsIHdpdGgvb3V0IGRpc3BsYWNlbWVudCBhbmQgaW5kaXJl Y3Rpb24uICAqLworKworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK3N0YXBfZXZhbHVhdGVfc2lu Z2xlX29wZXJhbmQgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvKQorK3sK KysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZXZhbF9pbmZvLT5nZGJhcmNoOworKyAgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lID0gZXZhbF9pbmZvLT5mcmFtZTsKKysgIGVudW0gc3RhcF9h cmdfYml0bmVzcyBiaXRuZXNzID0gZXZhbF9pbmZvLT5iaXRuZXNzOworKyAgc3RydWN0IHZhbHVl ICpyZXM7CisrCisrICBzd2l0Y2ggKCpldmFsX2luZm8tPmV4cF9idWYpCisrICAgIHsKKysgICAg Y2FzZSAnLSc6IGNhc2UgJ34nOgorKwl7CisrCSAgY2hhciBjID0gKmV2YWxfaW5mby0+ZXhwX2J1 ZjsKKysKKysJICAvKiBUaGlzIGlzIGEgYmluYXJ5IG9wZXJhdG9yIChlaXRoZXIgYC0nIG9yIGB+ JykuCisrCisrCSAgICAgSWYgaXQgaXMgZm9sbG93ZWQgYnkgYSBwYXJlbnRoZXNpcywgYW5kIHRo aXMgcGFyZW50aGVzaXMKKysJICAgICBpcyBOT1QgZm9sbG93ZWQgYnkgYSBgJScsIHRoZW4gd2Ug YXJlIGRlYWxpbmcgd2l0aCBhbiBleHByZXNzaW9uCisrCSAgICAgbGlrZSBgLSgyICsgMyknIG9y IGB+KDIgKyAzKScuICBXZSBqdXN0IGhhdmUgdG8gdHJlYXQgc2VwYXJhdGVseQorKwkgICAgIGFu ZCByZXR1cm4gdGhlIHJlc3VsdCBhZnRlciBhcHBseWluZyB0aGUgb3BlcmF0aW9uIChgLScgb3Ig YH4nKS4KKysKKysJICAgICBJZiBpdCBpcyBmb2xsb3dlZCBieSBhIGRpZ2l0LCB0aGVuIHdlIGhh dmUgb25seSBvbmUgY2hvaWNlOiAgaXQKKysJICAgICBpcyBhIGRpc3BsYWNlbWVudCBhcmd1bWVu dCBmb3IgYSByZWdpc3RlciBhY2Nlc3MsIGxpa2UKKysJICAgICBgLTQoJWVheCknLiAgSXQgYWxz byBtZWFucyB0aGF0IHRoZSBvcGVyYXRvciBjYW4gKm9ubHkqIGJlIGAtJywKKysJICAgICBhbmQg dGhlIGNoYXJhY3RlcnMgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIG51bWJlciAqbXVzdCogYmUgYCgl Jy4KKysKKysJICAgICBJZiBpdCBpcyBmb2xsb3dlZCBieSBhIGAkJywgdGhlbiBpdCBpcyBhbiBp bnRlZ2VyIGNvbnN0YW50LCBhbmQKKysJICAgICB3ZSBzaG91bGQgYXBwbHkgdGhlIGNvcnJlY3Qg b3BlcmF0aW9uIHRvIGl0LiAgKi8KKysKKysJICArK2V2YWxfaW5mby0+ZXhwX2J1ZjsKKysJICBl dmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysJ ICBpZiAoKmV2YWxfaW5mby0+ZXhwX2J1ZgorKwkgICAgICAmJiAqZXZhbF9pbmZvLT5leHBfYnVm ID09ICcoJworKwkgICAgICAmJiBldmFsX2luZm8tPmV4cF9idWZbMV0gIT0gJyUnKQorKwkgICAg eworKwkgICAgICBzdHJ1Y3QgdmFsdWUgKnRtcF9yZXM7CisrCisrCSAgICAgIC8qIFdlJ3JlIG5v dCBkZWFsaW5nIHdpdGggYSByZWdpc3RlciBuYW1lLCBidXQgd2l0aCBhbgorKwkJIGV4cHJlc3Np b24gbGlrZSBgLSgyICsgMyknIG9yIGB+KDIgKyAzKScuICBXZSBmaXJzdCBoYXZlCisrCQkgdG8g ZXZhbHVhdGUgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGV4cHJlc3Npb24gKGkuZS4sIHRoZQorKwkJ IHBhcmVudGhlc2lzKSwgYW5kIHRoZW4gYXBwbHkgdGhlIHNwZWNpZmllZCBvcGVyYXRpb24KKysJ CSAoZWl0aGVyIGAtJyBvciBgficpIHRvIGl0LiAgKi8KKysJICAgICAgdG1wX3JlcyA9IHN0YXBf ZXZhbHVhdGVfY29uZGl0aW9uYWxseSAoZXZhbF9pbmZvKTsKKysKKysJICAgICAgaWYgKGMgPT0g Jy0nKQorKwkJeworKwkJICBpZiAoZXZhbF9pbmZvLT5jb21waWxpbmdfcCkKKysJCSAgICB7Cisr CQkgICAgICAvKiBXZSBoYXZlIHRvIGFkZCBgLTEnIHRvIHRoZSBzdGFjaywgYW5kIG11bHRpcGx5 CisrCQkJIHRoZSB0d28gdmFsdWVzLiAgKi8KKysJCSAgICAgIGF4X2NvbnN0X2wgKGV2YWxfaW5m by0+YWV4cHIsIC0xKTsKKysJCSAgICAgIGF4X3NpbXBsZSAoZXZhbF9pbmZvLT5hZXhwciwgYW9w X211bCk7CisrCQkgICAgfQorKwkJICBlbHNlCisrCQkgICAgcmVzID0gdmFsdWVfbmVnICh0bXBf cmVzKTsKKysJCX0KKysJICAgICAgZWxzZQorKwkJeworKwkJICBpZiAoZXZhbF9pbmZvLT5jb21w aWxpbmdfcCkKKysJCSAgICBheF9zaW1wbGUgKGV2YWxfaW5mby0+YWV4cHIsIGFvcF9iaXRfbm90 KTsKKysJCSAgZWxzZQorKwkJICAgIHJlcyA9IHZhbHVlX2NvbXBsZW1lbnQgKHRtcF9yZXMpOwor KwkJfQorKwkgICAgfQorKwkgIGVsc2UgaWYgKGlzZGlnaXQgKCpldmFsX2luZm8tPmV4cF9idWYp KQorKwkgICAgeworKwkgICAgICBpbnQgbnVtYmVyOworKworKwkgICAgICAvKiBUaGlzIGlzIGEg bnVtYmVyLCBzbyBpdCBNVVNUIGJlIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50LgorKwkJIFRoZSBv bmx5IG9wZXJhdG9yIGFsbG93ZWQgaGVyZSBpcyBgLScsIGl0IE1VU1QgYmUKKysJCSBmb2xsb3dl ZCBieSBhIG51bWJlciwgYW5kIHRoZSBudW1iZXIgTVVTVCBiZSBmb2xsb3dlZCBieQorKwkJIGAo JScuICAqLworKwkgICAgICBpZiAoYyAhPSAnLScpCisrCQllcnJvciAoXygiSW52YWxpZCBvcGVy YXRvciBgJWMnIGZvciByZWdpc3RlciBkaXNwbGFjZW1lbnQgIgorKwkJCSAib24gZXhwcmVzc2lv biBgJXMnLiIpLCBjLCBldmFsX2luZm8tPnNhdmVkX2V4cHIpOworKworKwkgICAgICBudW1iZXIg PSBzdHJ0b2wgKGV2YWxfaW5mby0+ZXhwX2J1ZiwKKysJCQkgICAgICAgJmV2YWxfaW5mby0+ZXhw X2J1ZiwgMCkgKiAtMTsKKysKKysJICAgICAgaWYgKCEqZXZhbF9pbmZvLT5leHBfYnVmCisrCQkg IHx8ICpldmFsX2luZm8tPmV4cF9idWYgIT0gJygnCisrCQkgIHx8ICgqZXZhbF9pbmZvLT5leHBf YnVmID09ICcoJworKwkJICAgICAgJiYgZXZhbF9pbmZvLT5leHBfYnVmWzFdICE9ICclJykpCisr CQllcnJvciAoXygiSW52YWxpZCBtZXRob2Qgb2YgaW5kaXJlY3RpbmcgYSByZWdpc3RlciBvbiAi CisrCQkJICJleHByZXNzaW9uIGAlcycuIiksIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrCisr CSAgICAgIHJlcworKwkJPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJj aCktPmJ1aWx0aW5faW50LAorKwkJCQkgICAgICBudW1iZXIpOworKworKwkgICAgICByZXMgPSBz dGFwX2ZldGNoX3JlZ192YWx1ZSAoZXZhbF9pbmZvLCByZXMpOworKwkgICAgfQorKwkgIGVsc2Ug aWYgKCpldmFsX2luZm8tPmV4cF9idWYgPT0gJyQnKQorKwkgICAgeworKwkgICAgICBpbnQgbnVt YmVyOworKworKwkgICAgICAvKiBMYXN0IGNhc2UuICBXZSBhcmUgZGVhbGluZyB3aXRoIGFuIGlu dGVnZXIgY29uc3RhbnQsIHNvCisrCQkgd2UgbXVzdCByZWFkIGl0IGFuZCB0aGVuIGFwcGx5IHRo ZSBuZWNlc3Nhcnkgb3BlcmF0aW9uLAorKwkJIGVpdGhlciBgLScgb3IgYH4nLiAgKi8KKysJICAg ICAgKytldmFsX2luZm8tPmV4cF9idWY7CisrCSAgICAgIG51bWJlciA9IHN0cnRvbCAoZXZhbF9p bmZvLT5leHBfYnVmLAorKwkJCSAgICAgICAmZXZhbF9pbmZvLT5leHBfYnVmLCAwKTsKKysKKysJ ICAgICAgaWYgKCFldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkJcmVzCisrCQkgID0gdmFsdWVf ZnJvbV9sb25nZXN0IChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJ CW51bWJlcik7CisrCisrCSAgICAgIGlmIChldmFsX2luZm8tPmNvbXBpbGluZ19wKQorKwkJYXhf Y29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgbnVtYmVyKTsKKysKKysJICAgICAgZXZhbF9pbmZv LT5leHBfYnVmID0gc2tpcF9zcGFjZXMgKGV2YWxfaW5mby0+ZXhwX2J1Zik7CisrCisrCSAgICAg IGlmIChjID09ICctJykKKysJCXsKKysJCSAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisr CQkgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfbG9nX25vdCk7CisrCQkgIGVs c2UKKysJCSAgICByZXMgPSB2YWx1ZV9uZWcgKHJlcyk7CisrCQl9CisrCSAgICAgIGVsc2UKKysJ CXsKKysJCSAgaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5nX3ApCisrCQkgICAgYXhfc2ltcGxlIChl dmFsX2luZm8tPmFleHByLCBhb3BfYml0X25vdCk7CisrCQkgIGVsc2UKKysJCSAgICByZXMgPSB2 YWx1ZV9jb21wbGVtZW50IChyZXMpOworKwkJfQorKwkgICAgfQorKwkgIGVsc2UKKysJICAgIGVy cm9yIChfKCJJbnZhbGlkIG9wZXJhbmQgdG8gdW5hcnkgb3BlcmF0b3IgYCVjJyBvbiAiCisrCQkg ICAgICJleHByZXNzaW9uIGAlcycuIiksIGMsIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrCX0K KysgICAgICBicmVhazsKKysKKysgICAgY2FzZSAnMCc6IGNhc2UgJzEnOiBjYXNlICcyJzogY2Fz ZSAnMyc6IGNhc2UgJzQnOgorKyAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNl ICc4JzogY2FzZSAnOSc6CisrICAgICAgeworKwlpbnQgbnVtYmVyID0gc3RydG9sIChldmFsX2lu Zm8tPmV4cF9idWYsICZldmFsX2luZm8tPmV4cF9idWYsIDApOworKworKwkvKiBUaGlzIGlzIGEg cmVnaXN0ZXIgZGlzcGxhY2VtZW50IHdpdGggYSBwb3NpdGl2ZSB2YWx1ZS4gIFdlIHJlYWQKKysJ ICAgdGhlIG51bWJlciwgYW5kIHRoZW4gY2hlY2sgZm9yIHRoZSBtYW5kYXRvcnkgYCglJyBwYXJ0 LiAgKi8KKysJaWYgKCEqZXZhbF9pbmZvLT5leHBfYnVmCisrCSAgICB8fCAhKCpldmFsX2luZm8t PmV4cF9idWYgPT0gJygnCisrCQkgJiYgZXZhbF9pbmZvLT5leHBfYnVmWzFdID09ICclJykpCisr CSAgZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0ZXIgYWNjZXNzIG9uIGV4cHJlc3Npb24gYCVzJy4i KSwKKysJCSBldmFsX2luZm8tPnNhdmVkX2V4cHIpOworKworKwlyZXMgPSB2YWx1ZV9mcm9tX2xv bmdlc3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50LAorKwkJCQkgIG51bWJl cik7CisrCisrCXJlcyA9IHN0YXBfZmV0Y2hfcmVnX3ZhbHVlIChldmFsX2luZm8sIHJlcyk7Cisr ICAgICAgfQorKyAgICBicmVhazsKKysKKysgICAgY2FzZSAnJCc6CisrICAgICAgeworKwlpbnQg bnVtYmVyOworKworKwkvKiBUaGlzIGlzIGFuIGludGVnZXIgY29uc3RhbnQuICBXZSBqdXN0IGhh dmUgdG8gcmVhZCB0aGUgbnVtYmVyCisrCSAgIGFuZCByZXR1cm4gaXQuICAqLworKwkrK2V2YWxf aW5mby0+ZXhwX2J1ZjsKKysJZXZhbF9pbmZvLT5leHBfYnVmID0gc2tpcF9zcGFjZXMgKGV2YWxf aW5mby0+ZXhwX2J1Zik7CisrCisrCW51bWJlciA9IHN0cnRvbCAoZXZhbF9pbmZvLT5leHBfYnVm LCAmZXZhbF9pbmZvLT5leHBfYnVmLCAwKTsKKysKKysJaWYgKGV2YWxfaW5mby0+Y29tcGlsaW5n X3ApCisrCSAgYXhfY29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgbnVtYmVyKTsKKysJZWxzZQor KwkgIHJlcyA9IHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl9pbnQsCisrCQkJCSAgICBudW1iZXIpOworKworKwlldmFsX2luZm8tPmV4cF9idWYgPSBz a2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysgICAgICB9CisrICAgIGJyZWFrOwor KworKyAgICBjYXNlICcoJzogY2FzZSAnJSc6CisrICAgICAgeworKwkvKiBSZWdpc3RlciBhY2Nl c3MsIHdpdGggb3Igd2l0aG91dCBpbmRpcmVjdGlvbi4gICovCisrCXJlcyA9IHN0YXBfZmV0Y2hf cmVnX3ZhbHVlIChldmFsX2luZm8sIC8qZGlzcGxhY2VtZW50PSovTlVMTCk7CisrICAgICAgfQor KyAgICBicmVhazsKKysKKysgICAgZGVmYXVsdDoKKysgICAgICB7CisrCWVycm9yIChfKCJPcGVy YXRvciBgJWMnIG5vdCByZWNvZ25pemVkIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJICAgICAg ICpldmFsX2luZm8tPmV4cF9idWYsIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrICAgICAgfQor KyAgICB9CisrCisrICByZXR1cm4gZXZhbF9pbmZvLT5jb21waWxpbmdfcCA/IChzdHJ1Y3QgdmFs dWUgKikgMSA6IHJlczsKKyt9CisrCisrLyogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBm b3IgY2hlY2tpbmcgdGhlIG5lY2Vzc2FyeSB0eXBlIG9mIGV2YWx1YXRpb24KKysgICBkZXBlbmRp bmcgb24gd2hhdCBpcyB0aGUgbmV4dCAidGhpbmciIGluIHRoZSBidWZmZXIuICBWYWxpZCB2YWx1 ZXMgYXJlOgorKworKyAgIC0gVW5hcnkgb3BlcmF0b3JzOworKyAgIC0gSW50ZWdlciBjb25zdGFu dHM7CisrICAgLSBSZWdpc3RlciBkaXNwbGFjZW1lbnQsIGluZGlyZWN0aW9uLCBhbmQgZGlyZWN0 IGFjY2VzczsKKysgICAtIFBhcmVudGhlc2l6ZWQgb3BlcmFuZC4gICovCisrCisrc3RhdGljIHN0 cnVjdCB2YWx1ZSAqCisrc3RhcF9ldmFsdWF0ZV9jb25kaXRpb25hbGx5IChzdHJ1Y3Qgc3RhcF9l dmFsdWF0aW9uX2luZm8gKmV2YWxfaW5mbykKKyt7CisrICBjaGFyICpzID0gZXZhbF9pbmZvLT5l eHBfYnVmOworKyAgc3RydWN0IHZhbHVlICpyZXQgPSBOVUxMOworKworKyAgaWYgKCpzID09ICct JyB8fCAqcyA9PSAnficgLyogVW5hcnkgb3BlcmF0b3JzLiAgKi8KKysgICAgICB8fCAqcyA9PSAn JCcgLyogTnVtYmVyIChpbnRlZ2VyIGNvbnN0YW50KS4gICovCisrICAgICAgfHwgKGlzZGlnaXQg KCpzKSAmJiBzWzFdID09ICcoJyAmJiBzWzJdID09ICclJykgLyogRGlzcGxhY2VtZW50LiAgKi8K KysgICAgICB8fCAoKnMgPT0gJygnICYmIHNbMV0gPT0gJyUnKSAvKiBSZWdpc3RlciBpbmRpcmVj dGlvbi4gICovCisrICAgICAgfHwgKCpzID09ICclJyAmJiBpc2FscGhhIChzWzFdKSkpIC8qIFJl Z2lzdGVyIHZhbHVlLiAgKi8KKysgICAgLyogVGhpcyBpcyBhIHNpbmdsZSBvcGVyYW5kLCBzbyBq dXN0IGV2YWx1YXRlIGl0IGFuZCByZXR1cm4uICAqLworKyAgICByZXQgPSBzdGFwX2V2YWx1YXRl X3NpbmdsZV9vcGVyYW5kIChldmFsX2luZm8pOworKyAgZWxzZSBpZiAoKnMgPT0gJygnKQorKyAg ICB7CisrICAgICAgLyogV2UgYXJlIGRlYWxpbmcgd2l0aCBhIHBhcmVudGhlc2l6ZWQgb3BlcmFu ZC4gIEl0IG1lYW5zIHdlCisrCSBoYXZlIHRvIGV2YWx1YXRlIGl0IGFzIGl0IHdhcyBhIHNlcGFy YXRlIGV4cHJlc3Npb24sIHdpdGhvdXQKKysJIGxlZnQtc2lkZSBvciBwcmVjZWRlbmNlLiAgKi8K KysgICAgICArK2V2YWxfaW5mby0+ZXhwX2J1ZjsKKysgICAgICBldmFsX2luZm8tPmV4cF9idWYg PSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysKKysgICAgICByZXQgPSBzdGFw X2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50XzIgKGV2YWxfaW5mbywKKysJCQkJCSAgICAvKmxocz0q L05VTEwsIC8qcHJlYz0qLzApOworKworKyAgICAgIGlmICgqZXZhbF9pbmZvLT5leHBfYnVmICE9 ICcpJykKKysJZXJyb3IgKF8oIk1pc3NpZ24gY2xvc2UtcGFyZW4gb24gZXhwcmVzc2lvbiBgJXMn LiIpLAorKwkgICAgICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysgICAgICArK2V2YWxfaW5m by0+ZXhwX2J1ZjsKKysgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZh bF9pbmZvLT5leHBfYnVmKTsKKysgICAgfQorKyAgZWxzZQorKyAgICBlcnJvciAoXygiQ2Fubm90 IGV2YWx1YXRlIGV4cHJlc3Npb24gYCVzJy4iKSwKKysJICAgZXZhbF9pbmZvLT5zYXZlZF9leHBy KTsKKysKKysgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorK3N0 YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZv ICpldmFsX2luZm8sCisrCQkJCXN0cnVjdCB2YWx1ZSAqbGhzLCBpbnQgcHJlYykKKyt7CisrICBz dHJ1Y3QgdmFsdWUgKnJocyA9IE5VTEw7CisrICBpbnQgY29tcGlsaW5nX3AgPSBldmFsX2luZm8t PmNvbXBpbGluZ19wOworKworKyAgLyogVGhpcyBpcyBhbiBvcGVyYXRvci1wcmVjZWRlbmNlIHBh cnNlciBhbmQgZXZhbHVhdG9yLgorKworKyAgICAgV2Ugd29yayB3aXRoIGxlZnQtIGFuZCByaWdo dC1zaWRlcyBvZiBleHByZXNzaW9ucywgYW5kCisrICAgICBldmFsdWF0ZSB0aGVtIGRlcGVuZGlu ZyBvbiB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgb3BlcmF0b3JzCisrICAgICB3ZSBmaW5kLiAgKi8K KysKKysgIGV2YWxfaW5mby0+ZXhwX2J1ZiA9IHNraXBfc3BhY2VzIChldmFsX2luZm8tPmV4cF9i dWYpOworKworKyAgaWYgKCFsaHMpCisrICAgIC8qIFdlIHdlcmUgY2FsbGVkIHdpdGhvdXQgYSBs ZWZ0LXNpZGUsIGVpdGhlciBiZWNhdXNlIHRoaXMgaXMgdGhlCisrICAgICAgIGZpcnN0IGNhbGws IG9yIGJlY2F1c2Ugd2Ugd2VyZSBjYWxsZWQgdG8gZXZhbHVhdGUgYSBwYXJlbnRoZXNpemVkCisr ICAgICAgIGV4cHJlc3Npb24uICBJdCBkb2Vzbid0IHJlYWxseSBtYXR0ZXI7IHdlIGhhdmUgdG8g ZXZhbHVhdGUgdGhlCisrICAgICAgIGxlZnQtc2lkZSBpbiBvcmRlciB0byBjb250aW51ZSB0aGUg cHJvY2Vzcy4gICovCisrICAgIGxocyA9IHN0YXBfZXZhbHVhdGVfY29uZGl0aW9uYWxseSAoZXZh bF9pbmZvKTsKKysKKysgIC8qIFN0YXJ0IHRvIGV2YWx1YXRlIHRoZSByaWdodC1zaWRlLCBhbmQg dG8gImpvaW4iIGxlZnQgYW5kIHJpZ2h0IHNpZGVzCisrICAgICBkZXBlbmRpbmcgb24gdGhlIG9w ZXJhdGlvbiBzcGVjaWZpZWQuCisrCisrICAgICBUaGlzIGxvb3Agc2hhbGwgY29udGludWUgdW50 aWwgd2UgcnVuIG91dCBvZiBjaGFyYWN0ZXJzIGluIHRoZSBpbnB1dCwKKysgICAgIG9yIHVudGls IHdlIGZpbmQgYSBjbG9zZS1wYXJlbnRoZXNpcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSd2ZSByZWFj aGVkCisrICAgICB0aGUgZW5kIG9mIGEgc3ViLWV4cHJlc3Npb24uICAqLworKyAgd2hpbGUgKGV2 YWxfaW5mby0+ZXhwX2J1ZgorKwkgJiYgKmV2YWxfaW5mby0+ZXhwX2J1ZgorKwkgJiYgKmV2YWxf aW5mby0+ZXhwX2J1ZiAhPSAnKScpCisrICAgIHsKKysgICAgICBjaGFyICp0bXBfZXhwX2J1ZjsK KysgICAgICBlbnVtIGV4cF9vcGNvZGUgb3Bjb2RlOworKyAgICAgIGludCBjdXJfcHJlYzsKKysK KysgICAgICBpZiAoIXN0YXBfaXNfb3BlcmF0b3IgKGV2YWxfaW5mby0+ZXhwX2J1ZikpCisrCWVy cm9yIChfKCJJbnZhbGlkIG9wZXJhdG9yIGAlYycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkg ICAgICAgKmV2YWxfaW5mby0+ZXhwX2J1ZiwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysKKysg ICAgICAvKiBXZSBoYXZlIHRvIHNhdmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV4cHJlc3Np b24gYnVmZmVyIGJlY2F1c2UKKysJIHRoZSBgc3RhcF9nZXRfb3Bjb2RlJyBtb2RpZmllcyBpdCBp biBvcmRlciB0byBnZXQgdGhlIGN1cnJlbnQKKysJIG9wZXJhdG9yLiAgSWYgdGhpcyBvcGVyYXRv cidzIHByZWNlZGVuY2UgaXMgbG93ZXIgdGhhbiBQUkVDLCB3ZQorKwkgc2hvdWxkIHJldHVybiBh bmQgbm90IGFkdmFuY2UgdGhlIGV4cHJlc3Npb24gYnVmZmVyIHBvaW50ZXIuICAqLworKyAgICAg IHRtcF9leHBfYnVmID0gZXZhbF9pbmZvLT5leHBfYnVmOworKyAgICAgIHN0YXBfZ2V0X29wY29k ZSAoJnRtcF9leHBfYnVmLCAmb3Bjb2RlKTsKKysKKysgICAgICBjdXJfcHJlYyA9IHN0YXBfZ2V0 X29wZXJhdG9yX3ByZWMgKG9wY29kZSk7CisrICAgICAgaWYgKGN1cl9wcmVjIDwgcHJlYykKKysJ LyogSWYgdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9yIHRoYXQgd2UgYXJlIHNlZWluZyBu b3cgaXMKKysJICAgbG93ZXIgdGhhbiB0aGUgcHJlY2VkZW5jZSBvZiB0aGUgZmlyc3Qgb3BlcmF0 b3Igc2VlbiBiZWZvcmUKKysJICAgdGhpcyBldmFsdWF0aW9uIHByb2Nlc3MgYmVnYW4sIGl0IG1l YW5zIHdlIHNob3VsZCBzdG9wIGV2YWx1YXRpbmcKKysJICAgYW5kIHJldHVybi4gICovCisrCWJy ZWFrOworKworKyAgICAgIGV2YWxfaW5mby0+ZXhwX2J1ZiA9IHRtcF9leHBfYnVmOworKyAgICAg IGV2YWxfaW5mby0+ZXhwX2J1ZiA9IHNraXBfc3BhY2VzIChldmFsX2luZm8tPmV4cF9idWYpOwor KworKyAgICAgIC8qIEV2YWx1YXRlIHRoZSByaWdodC1zaWRlIG9mIHRoZSBleHByZXNzaW9uLiAg Ki8KKysgICAgICByaHMgPSBzdGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkgKGV2YWxfaW5mbyk7 CisrCisrICAgICAgLyogV2hpbGUgd2Ugc3RpbGwgaGF2ZSBvcGVyYXRvcnMsIHRyeSB0byBldmFs dWF0ZSBhbm90aGVyCisrCSByaWdodC1zaWRlLCBidXQgdXNpbmcgdGhlIGN1cnJlbnQgcmlnaHQt c2lkZSBhcyBhIGxlZnQtc2lkZS4gICovCisrICAgICAgd2hpbGUgKCpldmFsX2luZm8tPmV4cF9i dWYKKysJICAgICAmJiBzdGFwX2lzX29wZXJhdG9yIChldmFsX2luZm8tPmV4cF9idWYpKQorKwl7 CisrCSAgZW51bSBleHBfb3Bjb2RlIGxvb2thaGVhZF9vcGNvZGU7CisrCSAgaW50IGxvb2thaGVh ZF9wcmVjOworKworKwkgIC8qIFNhdmluZyB0aGUgY3VycmVudCBleHByZXNzaW9uIGJ1ZmZlciBw b3NpdGlvbi4gIFRoZSBleHBsYW5hdGlvbgorKwkgICAgIGlzIHRoZSBzYW1lIGFzIGFib3ZlLiAg Ki8KKysJICB0bXBfZXhwX2J1ZiA9IGV2YWxfaW5mby0+ZXhwX2J1ZjsKKysJICBzdGFwX2dldF9v cGNvZGUgKCZ0bXBfZXhwX2J1ZiwgJmxvb2thaGVhZF9vcGNvZGUpOworKwkgIGxvb2thaGVhZF9w cmVjID0gc3RhcF9nZXRfb3BlcmF0b3JfcHJlYyAobG9va2FoZWFkX29wY29kZSk7CisrCisrCSAg aWYgKGxvb2thaGVhZF9wcmVjIDw9IHByZWMpCisrCSAgICAvKiBJZiB3ZSBhcmUgZGVhbGluZyB3 aXRoIGFuIG9wZXJhdG9yIHdob3NlIHByZWNlZGVuY2UgaXMgbG93ZXIKKysJICAgICAgIHRoYW4g dGhlIGZpcnN0IG9uZSwganVzdCBhYmFuZG9uIHRoZSBhdHRlbXB0LiAgKi8KKysJICAgIGJyZWFr OworKworKwkgIHJocyA9IHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoZXZhbF9pbmZv LAorKwkJCQkJCXJocywgbG9va2FoZWFkX3ByZWMpOworKwl9CisrCisrICAgICAgLyogTm93LCAi am9pbiIgYm90aCBsZWZ0IGFuZCByaWdodCBzaWRlcyBpbnRvIG9uZSBsZWZ0LXNpZGUsIHVzaW5n CisrCSB0aGUgc3BlY2lmaWVkIG9wZXJhdG9yLiAgKi8KKysgICAgICBpZiAoY29tcGlsaW5nX3Ap CisrCXN0YXBfb3Bjb2RlX3RvX2F4IChldmFsX2luZm8sIG9wY29kZSk7CisrICAgICAgZWxzZQor KwlsaHMgPSB2YWx1ZV9iaW5vcCAobGhzLCByaHMsIG9wY29kZSk7CisrICAgIH0KKysKKysgIHJl dHVybiBsaHM7CisrfQorKworKy8qIFRoaXMgZnVuY3Rpb24gZmlsbHMgdGhlIG5lY2Vzc2FyeSBh cmd1bWVudHMgZm9yIHRoZSBldmFsdWF0aW9uIGZ1bmN0aW9uCisrICAgdG8gd29yay4gICovCisr CisrI2RlZmluZSBURVNUIDAKKytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytzdGFwX2V2YWx1YXRl X3Byb2JlX2FyZ3VtZW50XzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQljb25zdCBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCisrCQkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK KysJCQkJaW50IG4pCisreworKyAgc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvIGV2YWxfaW5m bzsKKysgIGNoYXIgKnMgPSAoY2hhciAqKSBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ1tuXS5hcmdf c3RyOworKyAgc3RydWN0IHZhbHVlICpyZXMsICp2c1s0XTsKKysjaWYgVEVTVCAvKlRFU1RJTkcq LworKyAgY29uc3QgY2hhciAqYXJnc1s0XSA9IHsgIiQyIiwKKysgICAgICAiJDIgKyAkMyAqICQ0 ICsgJDUiLAorKyAgICAgICItKCQyICsgJDMpIiwKKysgICAgICAiKH4oJDIpICogJDMpIC8gKCQx ICsgJDEpIiB9OworKyAgaW50IGk7CisrI2VuZGlmCisrCisrICAvKiBGaWxsaW5nIG5lY2Vzc2Fy eSBpbmZvcm1hdGlvbiBmb3IgZXZhbHVhdGlvbiBmdW5jdGlvbi4gICovCisrICBldmFsX2luZm8u c2F2ZWRfZXhwciA9IHM7CisrICBldmFsX2luZm8uZXhwX2J1ZiA9IHM7CisrICBldmFsX2luZm8u Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworKyAgZXZhbF9pbmZvLmZyYW1l ID0gZnJhbWU7CisrICBldmFsX2luZm8uYml0bmVzcyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJn W25dLmJpdG5lc3M7CisrICAvKiBXZSBhcmUgbm90IGNvbXBpbGluZyB0byBhbiBhZ2VudCBleHBy ZXNzaW9uLiAgKi8KKysgIGV2YWxfaW5mby5jb21waWxpbmdfcCA9IDA7CisrICBldmFsX2luZm8u YWV4cHIgPSBOVUxMOworKworKyAgcmVzID0gc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8y ICgmZXZhbF9pbmZvLAorKwkJCQkJLypsaHM9Ki9OVUxMLCAvKnByZWM9Ki8wKTsKKysjaWYgVEVT VCAvKiBURVNUSU5HICovCisrICBmb3IgKGkgPSAwOyBpIDwgNDsgaSsrKQorKyAgICB7CisrICAg ICAgZXZhbF9pbmZvLnNhdmVkX2V4cHIgPSAoY29uc3QgY2hhciAqKSBhcmdzW2ldOworKyAgICAg IGV2YWxfaW5mby5leHBfYnVmID0gKGNoYXIgKikgYXJnc1tpXTsKKysgICAgICB2c1tpXSA9IHN0 YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoJmV2YWxfaW5mbywKKysJCQkJCSAgICAgIC8q bGhzPSovTlVMTCwgLypwcmVjPSovMCk7CisrCisrICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3Rkb3V0LCAiJWxkXG4iLCB2YWx1ZV9hc19sb25nICh2c1tpXSkpOworKyAgICB9CisrI2Vu ZGlmCisrCisrICBpZiAoIXJlcykKKysgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBldmFsdWF0ZSBl eHByZXNzaW9uIGAlcycuIiksCisrCSAgIGV2YWxfaW5mby5zYXZlZF9leHByKTsKKysKKysgIHJl dHVybiByZXM7CisrfQorKworK3N0cnVjdCB2YWx1ZSAqCisrc3RhcF9ldmFsdWF0ZV9wcm9iZV9h cmd1bWVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJICAgICAgY29uc3Qgc3RydWN0 IHN0YXBfcHJvYmUgKnByb2JlLAorKwkJCSAgICAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK KysJCQkgICAgICBpbnQgbikKKyt7CisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykKKysgICAg c3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBwcm9iZSk7 CisrCisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncy0+YXJnCisrICAgICAgfHwgbiA+PSBwcm9i ZS0+cGFyc2VkX2FyZ3MtPm5fYXJncykKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICByZXR1cm4g c3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8xIChvYmpmaWxlLCBwcm9iZSwgZnJhbWUsIG4p OworK30KKysKKytzdGF0aWMgdm9pZAorK3N0YXBfY29tcGlsZV90b19heF8xIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKKysJCSAgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwK KysJCSAgICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJICAgICAgc3RydWN0IGF4c192 YWx1ZSAqdmFsdWUsCisrCQkgICAgICBpbnQgbikKKyt7CisrICBzdHJ1Y3Qgc3RhcF9ldmFsdWF0 aW9uX2luZm8gZXZhbF9pbmZvOworKyAgY2hhciAqcyA9IChjaGFyICopIHByb2JlLT5wYXJzZWRf YXJncy0+YXJnW25dLmFyZ19zdHI7CisrCisrICAvKiBGaWxsaW5nIG5lY2Vzc2FyeSBpbmZvcm1h dGlvbiBmb3IgZXZhbHVhdGlvbiBmdW5jdGlvbi4gICovCisrICBldmFsX2luZm8uc2F2ZWRfZXhw ciA9IHM7CisrICBldmFsX2luZm8uZXhwX2J1ZiA9IHM7CisrICBldmFsX2luZm8uZ2RiYXJjaCA9 IGV4cHItPmdkYmFyY2g7CisrICBldmFsX2luZm8uZnJhbWUgPSBOVUxMOworKyAgZXZhbF9pbmZv LmJpdG5lc3MgPSBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ1tuXS5iaXRuZXNzOworKyAgLyogV2Ug YXJlIGNvbXBpbGluZyB0byBhbiBhZ2VudCBleHByZXNzaW9uLiAgKi8KKysgIGV2YWxfaW5mby5j b21waWxpbmdfcCA9IDE7CisrICBldmFsX2luZm8uYWV4cHIgPSBleHByOworKworKyAgc3RhcF9l dmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yICgmZXZhbF9pbmZvLAorKwkJCQkgIC8qbGhzPSovTlVM TCwgLypwcmVjPSovMCk7CisrfQorKworK3ZvaWQKKytzdGFwX2NvbXBpbGVfdG9fYXggKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAorKwkJICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZSwKKysJCSAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKKysJCSAgICBzdHJ1Y3QgYXhzX3Zh bHVlICp2YWx1ZSwKKysJCSAgICBpbnQgbikKKyt7CisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJn cykKKysgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3RhcF9wcm9iZSAq KSBwcm9iZSk7CisrCisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncy0+YXJnCisrICAgICAgfHwg biA+PSBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJncykKKysgICAgcmV0dXJuOworKworKyAgc3Rh cF9jb21waWxlX3RvX2F4XzEgKG9iamZpbGUsIHByb2JlLCBleHByLCB2YWx1ZSwgbik7CisrfQor KworKy8qIFNlZSBkb2N1bWVudGF0aW9uIGluIHN0YXAtcHJvYmUuaC4gICovCisrCisrc3RydWN0 IHZhbHVlICoKKytzdGFwX3NhZmVfZXZhbHVhdGVfYXRfcGMgKHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSwgaW50IG4pCisreworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKyAg c3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisrICBpbnQgbl9wcm9iZXM7CisrCisrICBwcm9iZSA9 IGZpbmRfcHJvYmVfYnlfcGMgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAmb2JqZmlsZSk7CisrICBp ZiAoIXByb2JlKQorKyAgICByZXR1cm4gTlVMTDsKKysgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNm ICYmIG9iamZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKTsKKysKKysgIG5fcHJvYmVzCisrICAgID0g b2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQg KG9iamZpbGUsCisrCQkJCQkJCQlwcm9iZSk7CisrICBpZiAobiA+PSBuX3Byb2JlcykKKysgICAg cmV0dXJuIE5VTEw7CisrCisrICByZXR1cm4gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5 bV9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAob2JqZmlsZSwKKysJCQkJCQkJCSAgcHJvYmUsCisr CQkJCQkJCQkgIGZyYW1lLAorKwkJCQkJCQkJICBuKTsKKyt9CisrCisrdm9pZAorK3N0YXBfZnJl ZV9wYXJzZWRfYXJncyAoc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJzZWRfYXJncykKKyt7Cisr ICBpZiAoIXBhcnNlZF9hcmdzCisrICAgICAgfHwgcGFyc2VkX2FyZ3MgPT0gJmR1bW15X3N0YXBf YXJnc19pbmZvCisrICAgICAgfHwgcGFyc2VkX2FyZ3MtPm5fYXJncyA9PSAwKQorKyAgICByZXR1 cm47CisrCisrICB4ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZyk7CisrICB4ZnJlZSAocGFyc2VkX2Fy Z3MpOworK30KKysKKysvKiBBIGhlbHBlciBmdW5jdGlvbiB0byBleHRyYWN0IGFuIGFyZ3VtZW50 IGZyb20gKkFSRy4gIEFuIGFyZ3VtZW50IGlzCisrICAgZGVsaW1pdGVkIGJ5IHdoaXRlc3BhY2Uu ICBUaGUgcmV0dXJuIHZhbHVlIGlzIGVpdGhlciBOVUxMIGlmIG5vCisrICAgYXJndW1lbnQgd2Fz IGZvdW5kLCBvciBhbiB4bWFsbG9jJ2Qgc3RyaW5nLiAgKi8KKysKKytzdGF0aWMgY2hhciAqCisr ZXh0cmFjdF9hcmcgKGNoYXIgKiphcmcpCisreworKyAgY2hhciAqcmVzdWx0LCAqY29weTsKKysK KysgIGlmICghKmFyZykKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICAvKiBGaW5kIHRoZSBzdGFy dCBvZiB0aGUgYXJndW1lbnQuICAqLworKyAgKmFyZyA9IHNraXBfc3BhY2VzICgqYXJnKTsKKysg IGlmICghICoqYXJnKQorKyAgICByZXR1cm4gTlVMTDsKKysgIHJlc3VsdCA9ICphcmc7CisrCisr ICAvKiBGaW5kIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50LiAgKi8KKysgICphcmcgPSBza2lwX3Rv X3NwYWNlICgqYXJnICsgMSk7CisrCisrICBpZiAocmVzdWx0ID09ICphcmcpCisrICAgIHJldHVy biBOVUxMOworKworKyAgY29weSA9IHhtYWxsb2MgKCphcmcgLSByZXN1bHQgKyAxKTsKKysgIG1l bWNweSAoY29weSwgcmVzdWx0LCAqYXJnIC0gcmVzdWx0KTsKKysgIGNvcHlbKmFyZyAtIHJlc3Vs dF0gPSAnXDAnOworKworKyAgcmV0dXJuIGNvcHk7CisrfQorKworKy8qIEEgdXRpbGl0eSBzdHJ1 Y3R1cmUuICBBIFZFQyBvZiB0aGVzZSBpcyBidWlsdCB3aGVuIGhhbmRsaW5nICJpbmZvCisrICAg cHJvYmVzIi4gICovCisrCisrc3RydWN0IHN0YXBfcHJvYmVfYW5kX29iamZpbGUKKyt7CisrICAv KiBUaGUgcHJvYmUuICAqLworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKyAg LyogVGhlIHByb2JlJ3Mgb2JqZmlsZS4gICovCisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsK Kyt9OworKworK3R5cGVkZWYgc3RydWN0IHN0YXBfcHJvYmVfYW5kX29iamZpbGUgc3RhcF9lbnRy eTsKKytERUZfVkVDX08gKHN0YXBfZW50cnkpOworKworKy8qIEEgaGVscGVyIGZ1bmN0aW9uIGZv ciBjb2xsZWN0X3Byb2JlcyB0aGF0IGNvbXBpbGVzIGEgcmVnZXhwIGFuZAorKyAgIHRocm93cyBh biBleGNlcHRpb24gb24gZXJyb3IuICBUaGlzIGluc3RhbGxzIGEgY2xlYW51cCB0byBmcmVlIHRo ZQorKyAgIHJlc3VsdGluZyBwYXR0ZXJuIG9uIHN1Y2Nlc3MuICBJZiBSWCBpcyBOVUxMLCB0aGlz IGRvZXMgbm90aGluZy4gICovCisrCisrc3RhdGljIHZvaWQKKytjb21waWxlX3J4X29yX2Vycm9y IChyZWdleF90ICpwYXR0ZXJuLCBjb25zdCBjaGFyICpyeCwgY29uc3QgY2hhciAqbWVzc2FnZSkK Kyt7CisrICBpbnQgY29kZTsKKysKKysgIGlmICghcngpCisrICAgIHJldHVybjsKKysKKysgIGNv ZGUgPSByZWdjb21wIChwYXR0ZXJuLCByeCwgUkVHX05PU1VCKTsKKysgIGlmIChjb2RlID09IDAp CisrICAgIG1ha2VfcmVnZnJlZV9jbGVhbnVwIChwYXR0ZXJuKTsKKysgIGVsc2UKKysgICAgewor KyAgICAgIGNoYXIgKmVyciA9IGdldF9yZWdjb21wX2Vycm9yIChjb2RlLCBwYXR0ZXJuKTsKKysK KysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCBlcnIpOworKyAgICAgIGVycm9yIChfKCIlczog JXMiKSwgbWVzc2FnZSwgZXJyKTsKKysgICAgfQorK30KKysKKysvKiBNYWtlIGEgdmVjdG9yIG9m IHByb2JlcyBtYXRjaGluZyBPQkpOQU1FLCBQUk9WSURFUiwgYW5kIFBST0JFLgorKyAgIEVhY2gg YXJndW1lbnQgaXMgYSByZWdleHAsIG9yIE5VTEwsIHdoaWNoIG1hdGNoZXMgYW55dGhpbmcuICAq LworKworK3N0YXRpYyBWRUMgKHN0YXBfZW50cnkpICoKKytjb2xsZWN0X3Byb2JlcyAoY2hhciAq b2JqbmFtZSwgY2hhciAqcHJvdmlkZXIsIGNoYXIgKnByb2JlKQorK3sKKysgIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlOworKyAgVkVDIChzdGFwX2VudHJ5KSAqcmVzdWx0ID0gTlVMTDsKKysgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOworKyAgcmVnZXhfdCBvYmpfcGF0LCBwcm92X3BhdCwgcHJv YmVfcGF0OworKworKyAgY2xlYW51cCA9IG1ha2VfY2xlYW51cCAoVkVDX2NsZWFudXAgKHN0YXBf ZW50cnkpLCAmcmVzdWx0KTsKKysKKysgIGNvbXBpbGVfcnhfb3JfZXJyb3IgKCZwcm92X3BhdCwg cHJvdmlkZXIsIF8oIkludmFsaWQgcHJvdmlkZXIgcmVnZXhwIikpOworKyAgY29tcGlsZV9yeF9v cl9lcnJvciAoJnByb2JlX3BhdCwgcHJvYmUsIF8oIkludmFsaWQgcHJvYmUgcmVnZXhwIikpOwor KyAgY29tcGlsZV9yeF9vcl9lcnJvciAoJm9ial9wYXQsIG9iam5hbWUsIF8oIkludmFsaWQgb2Jq ZWN0IGZpbGUgcmVnZXhwIikpOworKworKyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorKyAgewor KyAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOworKyAgICBpbnQgaSwgbnVtX3By b2JlczsKKysKKysgICAgaWYgKCEgb2JqZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3By b2JlX2ZucykKKysgICAgICBjb250aW51ZTsKKysKKysgICAgaWYgKG9iam5hbWUpCisrICAgICAg eworKwlpZiAocmVnZXhlYyAoJm9ial9wYXQsIG9iamZpbGUtPm5hbWUsIDAsIE5VTEwsIDApICE9 IDApCisrCSAgY29udGludWU7CisrICAgICAgfQorKworKyAgICBwcm9iZXMgPSBvYmpmaWxlLT5z Zi0+c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9iZXMgKG9iamZpbGUsICZudW1fcHJvYmVzKTsK KysgICAgZm9yIChpID0gMDsgaSA8IG51bV9wcm9iZXM7ICsraSkKKysgICAgICB7CisrCXN0YXBf ZW50cnkgZW50cnk7CisrCisrCWlmIChwcm92aWRlcikKKysJICB7CisrCSAgICBpZiAocmVnZXhl YyAoJnByb3ZfcGF0LCBwcm9iZXNbaV0ucHJvdmlkZXIsIDAsIE5VTEwsIDApICE9IDApCisrCSAg ICAgIGNvbnRpbnVlOworKwkgIH0KKysKKysJaWYgKHByb2JlKQorKwkgIHsKKysJICAgIGlmIChy ZWdleGVjICgmcHJvYmVfcGF0LCBwcm9iZXNbaV0ubmFtZSwgMCwgTlVMTCwgMCkgIT0gMCkKKysJ ICAgICAgY29udGludWU7CisrCSAgfQorKworKwllbnRyeS5wcm9iZSA9ICZwcm9iZXNbaV07Cisr CWVudHJ5Lm9iamZpbGUgPSBvYmpmaWxlOworKwlWRUNfc2FmZV9wdXNoIChzdGFwX2VudHJ5LCBy ZXN1bHQsICZlbnRyeSk7CisrICAgICAgfQorKyAgfQorKworKyAgZGlzY2FyZF9jbGVhbnVwcyAo Y2xlYW51cCk7CisrICByZXR1cm4gcmVzdWx0OworK30KKysKKysvKiBBIHFzb3J0IGNvbXBhcmlz b24gZnVuY3Rpb24gZm9yIHN0YXBfZW50cnkgb2JqZWN0cy4gICovCisrCisrc3RhdGljIGludAor K2NvbXBhcmVfZW50cmllcyAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKKyt7CisrICBj b25zdCBzdGFwX2VudHJ5ICplYSA9IGE7CisrICBjb25zdCBzdGFwX2VudHJ5ICplYiA9IGI7Cisr ICBpbnQgdjsKKysKKysgIHYgPSBzdHJjbXAgKGVhLT5wcm9iZS0+cHJvdmlkZXIsIGViLT5wcm9i ZS0+cHJvdmlkZXIpOworKyAgaWYgKHYpCisrICAgIHJldHVybiB2OworKworKyAgdiA9IHN0cmNt cCAoZWEtPnByb2JlLT5uYW1lLCBlYi0+cHJvYmUtPm5hbWUpOworKyAgaWYgKHYpCisrICAgIHJl dHVybiB2OworKworKyAgaWYgKGVhLT5wcm9iZS0+YWRkcmVzcyA8IGViLT5wcm9iZS0+YWRkcmVz cykKKysgICAgcmV0dXJuIC0xOworKyAgaWYgKGVhLT5wcm9iZS0+YWRkcmVzcyA+IGViLT5wcm9i ZS0+YWRkcmVzcykKKysgICAgcmV0dXJuIDE7CisrCisrICByZXR1cm4gc3RyY21wIChlYS0+b2Jq ZmlsZS0+bmFtZSwgZWItPm9iamZpbGUtPm5hbWUpOworK30KKysKKysvKiBJbXBsZW1lbnRhdGlv biBvZiB0aGUgImluZm8gcHJvYmVzIiBjb21tYW5kLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2lu Zm9fcHJvYmVzX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorK3sKKysgIGNoYXIg KnByb3ZpZGVyLCAqcHJvYmUgPSBOVUxMLCAqb2JqbmFtZSA9IE5VTEw7CisrICBzdHJ1Y3QgY2xl YW51cCAqY2xlYW51cCA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsKKysgIFZF QyAoc3RhcF9lbnRyeSkgKml0ZW1zOworKyAgaW50IGksIGFkZHJfd2lkdGgsIGFueV9mb3VuZDsK KysgIHN0YXBfZW50cnkgKmVudHJ5OworKworKyAgcHJvdmlkZXIgPSBleHRyYWN0X2FyZyAoJmFy Zyk7CisrICBpZiAocHJvdmlkZXIpCisrICAgIHsKKysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVl LCBwcm92aWRlcik7CisrCisrICAgICAgcHJvYmUgPSBleHRyYWN0X2FyZyAoJmFyZyk7CisrICAg ICAgaWYgKHByb2JlKQorKwl7CisrCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgcHJvYmUpOworKwor KwkgIG9iam5hbWUgPSBleHRyYWN0X2FyZyAoJmFyZyk7CisrCSAgaWYgKG9iam5hbWUpCisrCSAg ICBtYWtlX2NsZWFudXAgKHhmcmVlLCBvYmpuYW1lKTsKKysJfQorKyAgICB9CisrCisrICBpdGVt cyA9IGNvbGxlY3RfcHJvYmVzIChvYmpuYW1lLCBwcm92aWRlciwgcHJvYmUpOworKyAgbWFrZV9j bGVhbnVwIChWRUNfY2xlYW51cCAoc3RhcF9lbnRyeSksICZpdGVtcyk7CisrICBtYWtlX2NsZWFu dXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQsIDUsCisrCQkJCSAgICAgICBWRUNfbGVu Z3RoIChzdGFwX2VudHJ5LCBpdGVtcyksCisrCQkJCSAgICAgICAiU3lzdGVtVGFwUHJvYmVzIik7 CisrCisrICBpZiAoISBWRUNfZW1wdHkgKHN0YXBfZW50cnksIGl0ZW1zKSkKKysgICAgcXNvcnQg KFZFQ19hZGRyZXNzIChzdGFwX2VudHJ5LCBpdGVtcyksCisrCSAgIFZFQ19sZW5ndGggKHN0YXBf ZW50cnksIGl0ZW1zKSwKKysJICAgc2l6ZW9mIChzdGFwX2VudHJ5KSwKKysJICAgY29tcGFyZV9l bnRyaWVzKTsKKysKKysgIGFkZHJfd2lkdGggPSA0ICsgKGdkYmFyY2hfcHRyX2JpdCAoZ2V0X2N1 cnJlbnRfYXJjaCAoKSkgLyA0KTsKKysKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCAx MCwgdWlfbGVmdCwgInByb3ZpZGVyIiwgXygiUHJvdmlkZXIiKSk7CisrICB1aV9vdXRfdGFibGVf aGVhZGVyICh1aW91dCwgMTAsIHVpX2xlZnQsICJuYW1lIiwgXygiTmFtZSIpKTsKKysgIHVpX291 dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBhZGRyX3dpZHRoIC0gMSwgdWlfbGVmdCwgImFkZHIiLCBf KCJXaGVyZSIpKTsKKysgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBhZGRyX3dpZHRoIC0g MSwgdWlfbGVmdCwgInNlbWFwaG9yZSIsCisrCQkgICAgICAgXygiU2VtYXBob3JlIikpOworKyAg dWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDMwLCB1aV9sZWZ0LCAib2JqZWN0IiwgXygiT2Jq ZWN0IikpOworKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysKKysgIGZvciAoaSA9IDA7 IFZFQ19pdGVyYXRlIChzdGFwX2VudHJ5LCBpdGVtcywgaSwgZW50cnkpOyArK2kpCisrICAgIHsK KysgICAgICBzdHJ1Y3QgY2xlYW51cCAqaW5uZXI7CisrCisrICAgICAgaW5uZXIgPSBtYWtlX2Ns ZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAodWlvdXQsICJwcm9iZSIpOworKworKyAgICAg IHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAicHJvdmlkZXIiLCBlbnRyeS0+cHJvYmUtPnBy b3ZpZGVyKTsKKysgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgIm5hbWUiLCBlbnRy eS0+cHJvYmUtPm5hbWUpOworKyAgICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIgKHVpb3V0LCAi YWRkciIsIGdldF9jdXJyZW50X2FyY2ggKCksCisrCQkJICAgICAgZW50cnktPnByb2JlLT5hZGRy ZXNzKTsKKysgICAgICBpZiAoZW50cnktPnByb2JlLT5zZW1fYWRkciA9PSAwKQorKwl1aV9vdXRf ZmllbGRfc2tpcCAodWlvdXQsICJzZW1hcGhvcmUiKTsKKysgICAgICBlbHNlCisrICAgICAgdWlf b3V0X2ZpZWxkX2NvcmVfYWRkciAodWlvdXQsICJzZW1hcGhvcmUiLCBnZXRfY3VycmVudF9hcmNo ICgpLAorKwkJCSAgICAgIGVudHJ5LT5wcm9iZS0+c2VtX2FkZHIpOworKyAgICAgIHVpX291dF9m aWVsZF9zdHJpbmcgKHVpb3V0LCAib2JqZWN0IiwgZW50cnktPm9iamZpbGUtPm5hbWUpOworKyAg ICAgIHVpX291dF90ZXh0ICh1aW91dCwgIlxuIik7CisrCisrICAgICAgZG9fY2xlYW51cHMgKGlu bmVyKTsKKysgICAgfQorKworKyAgYW55X2ZvdW5kID0gISBWRUNfZW1wdHkgKHN0YXBfZW50cnks IGl0ZW1zKTsKKysgIGRvX2NsZWFudXBzIChjbGVhbnVwKTsKKysKKysgIGlmICghIGFueV9mb3Vu ZCkKKysgICAgdWlfb3V0X21lc3NhZ2UgKHVpb3V0LCAwLCBfKCJObyBwcm9iZXMgbWF0Y2hlZC5c biIpKTsKKyt9CisrCisrDAorKworK2NvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICoKKytmaW5kX3By b2JlX2luX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJICAgICAgIGNvbnN0 IGNoYXIgKnByb3ZpZGVyLAorKwkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpCisreworKyAgY29u c3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlczsKKysgIGludCBpLCBudW1fcHJvYmVzOworKwor KyAgaWYgKCEgb2JqZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2ZucykKKysg ICAgcmV0dXJuIE5VTEw7CisrCisrICBwcm9iZXMgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zu cy0+c3ltX2dldF9wcm9iZXMgKG9iamZpbGUsICZudW1fcHJvYmVzKTsKKysgIGZvciAoaSA9IDA7 IGkgPCBudW1fcHJvYmVzOyArK2kpCisrICAgIHsKKysgICAgICBpZiAoc3RyY21wIChwcm9iZXNb aV0ucHJvdmlkZXIsIHByb3ZpZGVyKSAhPSAwKQorKwljb250aW51ZTsKKysKKysgICAgICBpZiAo c3RyY21wIChwcm9iZXNbaV0ubmFtZSwgbmFtZSkgIT0gMCkKKysJY29udGludWU7CisrCisrICAg ICAgcmV0dXJuICZwcm9iZXNbaV07CisrICAgIH0KKysKKysgIHJldHVybiBOVUxMOworK30KKysK KytzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMKKytwYXJzZV9zdGFwX3Byb2JlIChjaGFyICoqYXJn cHRyKQorK3sKKysgIGNoYXIgKmFyZyA9IGV4dHJhY3RfYXJnIChhcmdwdHIpOworKyAgY2hhciAq b2JqZmlsZV9uYW1lID0gTlVMTCwgKnByb3ZpZGVyID0gTlVMTCwgKm5hbWUsICpwOworKyAgc3Ry dWN0IGNsZWFudXAgKmNsZWFudXA7CisrICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgcmVzdWx0 OworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisrCisrICByZXN1bHQuc2FscyA9IE5VTEw7 CisrICByZXN1bHQubmVsdHMgPSAwOworKworKyAgLyogVGhlIGNhbGxlciBlbnN1cmVkIHRoYXQg dGhpcyBzdGFydHMgd2l0aCAncHJvYmU6Jy4gICovCisrICBnZGJfYXNzZXJ0IChhcmcgJiYgc3Ry bmNtcCAoYXJnLCAicHJvYmU6IiwgNikgPT0gMCk7CisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVw ICh4ZnJlZSwgYXJnKTsKKysgIGFyZyArPSA2OworKworKyAgLyogRXh0cmFjdCBlYWNoIHdvcmQg ZnJvbSB0aGUgYXJndW1lbnQsIHNlcGFyYXRlZCBieSAiOiJzLiAgKi8KKysgIHAgPSBzdHJjaHIg KGFyZywgJzonKTsKKysgIGlmIChwID09IE5VTEwpCisrICAgIHsKKysgICAgICAvKiBUaGlzIGlz IGBwcm9iZTpuYW1lJy4gICovCisrICAgICAgbmFtZSA9IGFyZzsKKysgICAgfQorKyAgZWxzZQor KyAgICB7CisrICAgICAgY2hhciAqaG9sZCA9IHAgKyAxOworKworKyAgICAgICpwID0gJ1wwJzsK KysgICAgICBwID0gc3RyY2hyIChob2xkLCAnOicpOworKyAgICAgIGlmIChwID09IE5VTEwpCisr CXsKKysJICAvKiBUaGlzIGlzIGBwcm9iZTpwcm92aWRlcjpuYW1lJy4gICovCisrCSAgcHJvdmlk ZXIgPSBhcmc7CisrCSAgbmFtZSA9IGhvbGQ7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICAv KiBUaGlzIGlzIGBwcm9iZTpvYmpmaWxlOnByb3ZpZGVyOm5hbWUnLiAgKi8KKysJICAqcCA9ICdc MCc7CisrCSAgb2JqZmlsZV9uYW1lID0gYXJnOworKwkgIHByb3ZpZGVyID0gaG9sZDsKKysJICBu YW1lID0gcCArIDE7CisrCX0KKysgICAgfQorKworKyAgaWYgKCpuYW1lID09ICdcMCcpCisrICAg IGVycm9yIChfKCJubyBwcm9iZSBuYW1lIHNwZWNpZmllZCIpKTsKKysgIGlmIChwcm92aWRlciAm JiAqcHJvdmlkZXIgPT0gJ1wwJykKKysgICAgZXJyb3IgKF8oImludmFsaWQgcHJvdmlkZXIgbmFt ZSIpKTsKKysgIGlmIChvYmpmaWxlX25hbWUgJiYgKm9iamZpbGVfbmFtZSA9PSAnXDAnKQorKyAg ICBlcnJvciAoXygiaW52YWxpZCBvYmpmaWxlIG5hbWUiKSk7CisrCisrICBBTExfT0JKRklMRVMg KG9iamZpbGUpCisrICB7CisrICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7Cisr ICAgIGludCBpLCBudW1fcHJvYmVzOworKworKyAgICBpZiAoISBvYmpmaWxlLT5zZiB8fCAhIG9i amZpbGUtPnNmLT5zeW1fcHJvYmVfZm5zKQorKyAgICAgIGNvbnRpbnVlOworKworKyAgICBpZiAo b2JqZmlsZV9uYW1lCisrCSYmIEZJTEVOQU1FX0NNUCAob2JqZmlsZS0+bmFtZSwgb2JqZmlsZV9u YW1lKSAhPSAwCisrCSYmIEZJTEVOQU1FX0NNUCAobGJhc2VuYW1lIChvYmpmaWxlLT5uYW1lKSwg b2JqZmlsZV9uYW1lKSAhPSAwKQorKyAgICAgIGNvbnRpbnVlOworKworKyAgICBwcm9iZXMgPSBv YmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9iZXMgKG9iamZpbGUsICZudW1f cHJvYmVzKTsKKysgICAgZm9yIChpID0gMDsgaSA8IG51bV9wcm9iZXM7ICsraSkKKysgICAgICB7 CisrCXN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbDsKKysKKysJaWYgKHByb3ZpZGVyICYmIHN0 cmNtcCAocHJvYmVzW2ldLnByb3ZpZGVyLCBwcm92aWRlcikgIT0gMCkKKysJICBjb250aW51ZTsK KysKKysJaWYgKHN0cmNtcCAocHJvYmVzW2ldLm5hbWUsIG5hbWUpICE9IDApCisrCSAgY29udGlu dWU7CisrCisrCSsrcmVzdWx0Lm5lbHRzOworKwlyZXN1bHQuc2FscyA9IHhyZWFsbG9jIChyZXN1 bHQuc2FscywKKysJCQkJcmVzdWx0Lm5lbHRzICogc2l6ZW9mIChzdHJ1Y3Qgc3ltdGFiX2FuZF9s aW5lKSk7CisrCXNhbCA9ICZyZXN1bHQuc2Fsc1tyZXN1bHQubmVsdHMgLSAxXTsKKysKKysJaW5p dF9zYWwgKHNhbCk7CisrCisrCXNhbC0+cGMgPSBwcm9iZXNbaV0uYWRkcmVzczsKKysJc2FsLT5l eHBsaWNpdF9wYyA9IDE7CisrCXNhbC0+c2VjdGlvbiA9IGZpbmRfcGNfb3ZlcmxheSAoc2FsLT5w Yyk7CisrCXNhbC0+cHNwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOworKwlzYWwtPnNlbWFw aG9yZSA9IHByb2Jlc1tpXS5zZW1fYWRkcjsKKysgICAgICB9CisrICB9CisrCisrICBpZiAocmVz dWx0Lm5lbHRzID09IDApCisrICAgIHRocm93X2Vycm9yIChOT1RfRk9VTkRfRVJST1IsCisrCQkg XygiTm8gcHJvYmUgbWF0Y2hpbmcgb2JqZmlsZT1gJXMnLCBwcm92aWRlcj1gJXMnLCBuYW1lPWAl cyciKSwKKysJCSBvYmpmaWxlX25hbWUgPyBvYmpmaWxlX25hbWUgOiBfKCI8YW55PiIpLAorKwkJ IHByb3ZpZGVyID8gcHJvdmlkZXIgOiBfKCI8YW55PiIpLAorKwkJIG5hbWUpOworKworKyAgZG9f Y2xlYW51cHMgKGNsZWFudXApOworKworKyAgcmV0dXJuIHJlc3VsdDsKKyt9CisrCisrDAorKwor K2NvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICoKKytmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIg cGMsIHN0cnVjdCBvYmpmaWxlICoqb2JqZmlsZV9vdXQpCisreworKyAgc3RydWN0IG9iamZpbGUg Km9iamZpbGU7CisrCisrICBBTExfT0JKRklMRVMgKG9iamZpbGUpCisrICB7CisrICAgIGNvbnN0 IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7CisrICAgIGludCBpLCBudW1fcHJvYmVzOworKyAg ICBzdGFwX2VudHJ5IGVudHJ5OworKworKyAgICBpZiAoISBvYmpmaWxlLT5zZiB8fCAhIG9iamZp bGUtPnNmLT5zeW1fcHJvYmVfZm5zKQorKyAgICAgIGNvbnRpbnVlOworKworKyAgICAvKiBJZiB0 aGlzIHByb3ZlcyB0b28gaW5lZmZpY2llbnQsIHdlIGNhbiByZXBsYWNlIHdpdGggYSBoYXNoLiAg Ki8KKysgICAgcHJvYmVzID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJv YmVzIChvYmpmaWxlLCAmbnVtX3Byb2Jlcyk7CisrICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcHJv YmVzOyArK2kpCisrICAgICAgeworKwlpZiAocHJvYmVzW2ldLmFkZHJlc3MgPT0gcGMpCisrCSAg eworKwkgICAgKm9iamZpbGVfb3V0ID0gb2JqZmlsZTsKKysJICAgIHJldHVybiAmcHJvYmVzW2ld OworKwkgIH0KKysgICAgICB9CisrICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrLyog VGhpcyBpcyBjYWxsZWQgdG8gY29tcHV0ZSB0aGUgdmFsdWUgb2Ygb25lIG9mIHRoZSAkX3Byb2Jl X2FyZyoKKysgICBjb252ZW5pZW5jZSB2YXJpYWJsZXMuICAqLworKworK3N0YXRpYyBzdHJ1Y3Qg dmFsdWUgKgorK2NvbXB1dGVfcHJvYmVfYXJnIChzdHJ1Y3QgZ2RiYXJjaCAqYXJjaCwgc3RydWN0 IGludGVybmFsdmFyICppdmFyLAorKwkJICAgdm9pZCAqZGF0YSkKKyt7CisrICBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKF8oIk5vIGZyYW1lIHNlbGVjdGVk IikpOworKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChmcmFtZSk7CisrICBpbnQgc2Vs ID0gKGludCkgKHVpbnRwdHJfdCkgZGF0YTsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwor KyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnBjX3Byb2JlOworKyAgaW50IG5fcHJvYmVzOwor KworKyAgLyogU0VMPT0xMCBtZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8KKysgIGdkYl9hc3NlcnQg KHNlbCA+PSAwICYmIHNlbCA8PSAxMCk7CisrCisrICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlf cGMgKHBjLCAmb2JqZmlsZSk7CisrICBpZiAocGNfcHJvYmUgPT0gTlVMTCkKKysgICAgZXJyb3Ig KF8oIk5vIFN5c3RlbVRhcCBwcm9iZSBhdCBQQyAlcyIpLCBjb3JlX2FkZHJfdG9fc3RyaW5nIChw YykpOworKworKyAgbl9wcm9iZXMKKysgICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+ c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKKysJCQkJCQkJCXBjX3Byb2Jl KTsKKysgIGlmIChzZWwgPT0gMTApCisrICAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1 aWx0aW5fdHlwZSAoYXJjaCktPmJ1aWx0aW5faW50LCBuX3Byb2Jlcyk7CisrCisrICBnZGJfYXNz ZXJ0IChzZWwgPj0gMCk7CisrICBpZiAoc2VsID49IG5fcHJvYmVzKQorKyAgICBlcnJvciAoXygi SW52YWxpZCBwcm9iZSBhcmd1bWVudCAlZCAtLSBwcm9iZSBoYXMgJWQgYXJndW1lbnRzIGF2YWls YWJsZSIpLAorKwkgICBzZWwsIG5fcHJvYmVzKTsKKysKKysgIHJldHVybiBvYmpmaWxlLT5zZi0+ c3ltX3Byb2JlX2Zucy0+c3ltX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50IChvYmpmaWxlLAorKwkJ CQkJCQkJICBwY19wcm9iZSwKKysJCQkJCQkJCSAgZnJhbWUsIHNlbCk7CisrfQorKworKy8qIFRo aXMgaXMgY2FsbGVkIHRvIGNvbXBpbGUgb25lIG9mIHRoZSAkX3Byb2JlX2FyZyogY29udmVuaWVu Y2UKKysgICB2YXJpYWJsZXMgaW50byBhbiBhZ2VudCBleHByZXNzaW9uLiAgKi8KKysKKytzdGF0 aWMgdm9pZAorK2NvbXBpbGVfcHJvYmVfYXJnIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKml2YXIsIHN0 cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsIHZv aWQgKmRhdGEpCisreworKyAgQ09SRV9BRERSIHBjID0gZXhwci0+c2NvcGU7CisrICBpbnQgc2Vs ID0gKGludCkgKHVpbnRwdHJfdCkgZGF0YTsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwor KyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnBjX3Byb2JlOworKyAgaW50IG5fcHJvYmVzOwor KworKyAgLyogU0VMPT0xMCBtZWFucyAiX3Byb2JlX2FyZ2MiLiAgKi8KKysgIGdkYl9hc3NlcnQg KHNlbCA+PSAwICYmIHNlbCA8PSAxMCk7CisrCisrICBwY19wcm9iZSA9IGZpbmRfcHJvYmVfYnlf cGMgKHBjLCAmb2JqZmlsZSk7CisrICBpZiAocGNfcHJvYmUgPT0gTlVMTCkKKysgICAgZXJyb3Ig KF8oIk5vIFN5c3RlbVRhcCBwcm9iZSBhdCBQQyAlcyIpLCBjb3JlX2FkZHJfdG9fc3RyaW5nIChw YykpOworKworKyAgbl9wcm9iZXMKKysgICAgPSBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+ c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKKysJCQkJCQkJCXBjX3Byb2Jl KTsKKysgIGlmIChzZWwgPT0gMTApCisrICAgIHsKKysgICAgICB2YWx1ZS0+a2luZCA9IGF4c19y dmFsdWU7CisrICAgICAgdmFsdWUtPnR5cGUgPSBidWlsdGluX3R5cGUgKGV4cHItPmdkYmFyY2gp LT5idWlsdGluX2ludDsKKysgICAgICBheF9jb25zdF9sIChleHByLCBuX3Byb2Jlcyk7CisrICAg ICAgcmV0dXJuOworKyAgICB9CisrCisrICBnZGJfYXNzZXJ0IChzZWwgPj0gMCk7CisrICBpZiAo c2VsID49IG5fcHJvYmVzKQorKyAgICBlcnJvciAoXygiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAl ZCAtLSBwcm9iZSBoYXMgJWQgYXJndW1lbnRzIGF2YWlsYWJsZSIpLAorKwkgICBzZWwsIG5fcHJv YmVzKTsKKysKKysgIC8qIEZJWE1FOiB0aGlzIGlzIHRlbXBvcmFyeSB1bnRpbCBBWCB0cmFuc2xh dGlvbiBpcyBpbXBsZW1lbnRlZC4gICovCisrICBpZiAoIW9iamZpbGUtPnNmLT5zeW1fcHJvYmVf Zm5zLT5zeW1fY29tcGlsZV90b19heCkKKysgICAgZXJyb3IgKF8oImNhbm5vdCB0cmFuc2xhdGUg YCRfcHJvYmVfYXJnJWQnIHRvIGJ5dGVjb2RlIiksIHNlbCk7CisrICBvYmpmaWxlLT5zZi0+c3lt X3Byb2JlX2Zucy0+c3ltX2NvbXBpbGVfdG9fYXggKG9iamZpbGUsIHBjX3Byb2JlLAorKwkJCQkJ CSBleHByLCB2YWx1ZSwgc2VsKTsKKyt9CisrCisrDAorKworK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg aW50ZXJuYWx2YXJfZnVuY3MgcHJvYmVfZnVuY3MgPQorK3sKKysgIGNvbXB1dGVfcHJvYmVfYXJn LAorKyAgY29tcGlsZV9wcm9iZV9hcmcsCisrICBOVUxMCisrfTsKKysKKyt2b2lkCisrX2luaXRp YWxpemVfc3RhcF9wcm9iZSAodm9pZCkKKyt7CisrICBhZGRfaW5mbyAoInByb2JlcyIsIGluZm9f cHJvYmVzX2NvbW1hbmQsIF8oIlwKKytTaG93IGF2YWlsYWJsZSBzdGF0aWMgcHJvYmVzLlxuXAor K1VzYWdlOiBpbmZvIHByb2JlcyBbUFJPVklERVIgW05BTUUgW09CSkVDVF1dXVxuXAorK0VhY2gg YXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24sIHVzZWQgdG8gc2VsZWN0IHByb2Jlcy5c blwKKytQUk9WSURFUiBtYXRjaGVzIHByb2JlIHByb3ZpZGVyIG5hbWVzLlxuXAorK05BTUUgbWF0 Y2hlcyB0aGUgcHJvYmUgbmFtZXMuXG5cCisrT0JKRUNUIG1hdGNoIHRoZSBleGVjdXRhYmxlIG9y IHNoYXJlZCBsaWJyYXJ5IG5hbWUuIikpOworKworKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVf bGF6eSAoIl9wcm9iZV9hcmdjIiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9pZCAqKSAodWludHB0 cl90KSAxMCk7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzAi LCAmcHJvYmVfZnVuY3MsCisrCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDApOworKyAgY3JlYXRl X2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl9wcm9iZV9hcmcxIiwgJnByb2JlX2Z1bmNzLAorKwkJ CQkodm9pZCAqKSAodWludHB0cl90KSAxKTsKKysgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xh enkgKCJfcHJvYmVfYXJnMiIsICZwcm9iZV9mdW5jcywKKysJCQkJKHZvaWQgKikgKHVpbnRwdHJf dCkgMik7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzMiLCAm cHJvYmVfZnVuY3MsCisrCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDMpOworKyAgY3JlYXRlX2lu dGVybmFsdmFyX3R5cGVfbGF6eSAoIl9wcm9iZV9hcmc0IiwgJnByb2JlX2Z1bmNzLAorKwkJCQko dm9pZCAqKSAodWludHB0cl90KSA0KTsKKysgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkg KCJfcHJvYmVfYXJnNSIsICZwcm9iZV9mdW5jcywKKysJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkg NSk7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzYiLCAmcHJv YmVfZnVuY3MsCisrCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDYpOworKyAgY3JlYXRlX2ludGVy bmFsdmFyX3R5cGVfbGF6eSAoIl9wcm9iZV9hcmc3IiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9p ZCAqKSAodWludHB0cl90KSA3KTsKKysgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJf cHJvYmVfYXJnOCIsICZwcm9iZV9mdW5jcywKKysJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgOCk7 CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzkiLCAmcHJvYmVf ZnVuY3MsCisrCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDkpOworK30KK2RpZmYgLS1naXQgYS9n ZGIvc3RhcC1wcm9iZS5oIGIvZ2RiL3N0YXAtcHJvYmUuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLjNhNzk0MWYKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9zdGFwLXBy b2JlLmgKK0BAIC0wLDAgKzEsMTEwIEBACisrLyogU3lzdGVtdGFwIHByb2JlIHN1cHBvcnQgZm9y IEdEQi4KKysKKysgICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisrCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaWYgIWRlZmluZWQgKFNUQVBfUFJP QkVfSCkKKysjZGVmaW5lIFNUQVBfUFJPQkVfSCAxCisrCisrc3RydWN0IHN0YXBfYXJnc19pbmZv OworK3N0cnVjdCBheHNfdmFsdWU7CisrCisrc3RydWN0IHN0YXBfcHJvYmUKKyt7CisrICAvKiBU aGUgcHJvdmlkZXIgb2YgdGhpcyBwcm9iZS4gICovCisrICBjb25zdCBjaGFyICpwcm92aWRlcjsK KysKKysgIC8qIFRoZSBuYW1lIG9mIHRoZSBwcm9iZS4gICovCisrICBjb25zdCBjaGFyICpuYW1l OworKworKyAgLyogVGhlIGFkZHJlc3Mgd2hlcmUgdGhlIHByb2JlIGlzIGluc2VydGVkLiAgKi8K KysgIENPUkVfQUREUiBhZGRyZXNzOworKworKyAgLyogVGhlIGFkZHJlc3Mgb2YgdGhlIHByb2Jl J3Mgc2VtYXBob3JlLCBvciAwIGlmIHRoaXMgcHJvYmUgZG9lcyBub3QKKysgICAgIGhhdmUgYW4g YXNzb2NpYXRlZCBzZW1hcGhvcmUuICAqLworKyAgQ09SRV9BRERSIHNlbV9hZGRyOworKworKyAg LyogUHJvYmUncyBhcmd1bWVudHMuICBVc2VycyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBleGFtaW5l IHRoaXMsIGJ1dAorKyAgICAgc2hvdWxkIGluc3RlYWQgZXh0cmFjdCBpbmZvcm1hdGlvbiBhYm91 dCB0aGUgYXJndW1lbnRzIHVzaW5nIHRoZQorKyAgICAgbWV0aG9kcyBwcm92aWRlZCBpbiBzeW1f cHJvYmVfZm5zLiAgKi8KKysgIGNvbnN0IGNoYXIgKmFyZ3M7CisrCisrICAvKiBQcm9iZSdzIGFy Z3VtZW50cyBhZnRlciBwYXJzaW5nLiAgVGhpcyBpcyBhbiBvcGFxdWUgc3RydWN0dXJlIHRoYXQK KysgICAgIHdpbGwgaG9sZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXJndW1lbnRzIHBvaW50ZWQg YnkgQVJHUy4gICovCisrICBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKnBhcnNlZF9hcmdzOworK307 CisrCisrCisrLyogQSBoZWxwZXIgZm9yIGxpbmVzcGVjIHRoYXQgZGVjb2RlcyBhIHN0YXAgcHJv YmUgc3BlY2lmaWNhdGlvbi4gIEl0CisrICAgcmV0dXJucyBhIHN5bXRhYnNfYW5kX2xpbmVzIG9i amVjdCBhbmQgdXBkYXRlcyAqQVJHUFRSIG9yIHRocm93cyBhbgorKyAgIGVycm9yLiAgKi8KKysK KytleHRlcm4gc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzIHBhcnNlX3N0YXBfcHJvYmUgKGNoYXIg KiphcmdwdHIpOworKworKy8qIFNlYXJjaCBPQkpGSUxFIGZvciBhIHByb2JlIHdpdGggdGhlIGdp dmVuIFBST1ZJREVSIGFuZCBOQU1FLiAgSWYgYQorKyAgIHByb2JlIGlzIGZvdW5kLCByZXR1cm4g aXQuICBJZiBubyBwcm9iZSBpcyBmb3VuZCwgcmV0dXJuIE5VTEwuICAqLworKworK2V4dGVybiBj b25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqZmluZF9wcm9iZV9pbl9vYmpmaWxlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKKysJCQkJCQkgICAgICAgY29uc3QgY2hhciAqcHJvdmlkZXIsCisrCQkJ CQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUpOworKworKy8qIEdpdmVuIGEgUEMsIGZpbmQgYW4g YXNzb2NpYXRlZCBTeXN0ZW1UYXAgcHJvYmUuICBJZiBhIHByb2JlIGlzCisrICAgZm91bmQsIHNl dCAqT0JKRklMRV9PVVQgdG8gdGhlIHByb2JlJ3Mgb2JqZmlsZSwgYW5kIHJldHVybiB0aGUKKysg ICBwcm9iZS4gIElmIG5vIHByb2JlIGlzIGZvdW5kLCByZXR1cm4gTlVMTC4gICovCisrCisrZXh0 ZXJuIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpmaW5kX3Byb2JlX2J5X3BjIChDT1JFX0FERFIg cGMsCisrCQkJCQkJICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKKysKKysvKiBHaXZl biBQUk9CRSwgdGhpcyBmdW5jdGlvbiB3aWxsIHBhcnNlIGl0cyBhcmd1bWVudHMgYW5kIGZpbGwg dGhlCisrICAgYHN0cnVjdCBzdGFwX2FyZ3NfaW5mbycgd2l0aCBwcm9wZXIgaW5mb3JtYXRpb24g YWJvdXQgdGhlbS4gICovCisrCisrZXh0ZXJuIHZvaWQgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVu dHMgKHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSk7CisrCisrLyogR2l2ZW4gUFJPQkUsIHJldHVy bnMgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgcHJlc2VudCBpbiB0aGF0IHByb2JlJ3MKKysgICBh cmd1bWVudCBzdHJpbmcuICAqLworKworK2V4dGVybiBpbnQgc3RhcF9nZXRfcHJvYmVfYXJndW1l bnRfY291bnQgKGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSk7CisrCisrLyogR2l2ZW4g UEFSU0VEX0FSR1MsIGZyZWVzIHRoZSBzcGFjZSBhbGxvY2F0ZWQgdG8gaG9sZCBpbmZvcm1hdGlv biBhYm91dAorKyAgIHRoZSBwcm9iZSdzIHBhcnNlZCBhcmd1bWVudHMuICAqLworKworK2V4dGVy biB2b2lkIHN0YXBfZnJlZV9wYXJzZWRfYXJncyAoc3RydWN0IHN0YXBfYXJnc19pbmZvICpwYXJz ZWRfYXJncyk7CisrCisrLyogRXZhbHVhdGVzIHRoZSBwcm9iZSdzIGFyZ3VtZW50IE4sIHJldHVy bmluZyBhIHZhbHVlIGNvcnJlc3BvbmRpbmcKKysgICB0byBpdC4gICovCisrCisrZXh0ZXJuIHN0 cnVjdCB2YWx1ZSAqc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudCAoc3RydWN0IG9iamZpbGUg Km9iamZpbGUsCisrCQkJCQkJICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAorKwkJ CQkJCSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkJCQkgICBpbnQgbik7CisrCisr LyogQ29tcGlsZSB0aGUgcHJvYmUncyBhcmd1bWVudCBOIHRvIGFnZW50IGV4cHJlc3Npb24uICAq LworKworK2V4dGVybiB2b2lkIHN0YXBfY29tcGlsZV90b19heCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCisrCQkJCWNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCQkJc3RydWN0 IGFnZW50X2V4cHIgKmV4cHIsCisrCQkJCXN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAorKwkJCQlp bnQgbik7CisrCisrLyogQSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGZpbmRzIGEgcHJvYmUg YXQgdGhlIFBDIGluIEZSQU1FIGFuZAorKyAgIGV2YWx1YXRlcyBhcmd1bWVudCBOLiAgSWYgdGhl cmUgaXMgbm8gcHJvYmUgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYKKysgICB0aGUgcHJvYmUgZG9l cyBub3QgaGF2ZSBlbm91Z2ggYXJndW1lbnRzLCB0aGlzIHJldHVybnMgTlVMTC4gICovCisrCisr ZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqc3RhcF9zYWZlX2V2YWx1YXRlX2F0X3BjIChzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCisrCQkJCQkgICAgICAgaW50IG4pOworKworKyNlbmRpZiAvKiAhZGVm aW5lZCAoU1RBUF9QUk9CRV9IKSAqLworZGlmZiAtLWdpdCBhL2dkYi9zeW1maWxlLmggYi9nZGIv c3ltZmlsZS5oCitpbmRleCBhMDE1MWVhLi43NTJjNDZhIDEwMDY0NAorLS0tIGEvZ2RiL3N5bWZp bGUuaAorKysrIGIvZ2RiL3N5bWZpbGUuaAorQEAgLTMxLDYgKzMxLDExIEBAIHN0cnVjdCBvYmpm aWxlOworIHN0cnVjdCBvYmpfc2VjdGlvbjsKKyBzdHJ1Y3Qgb2JzdGFjazsKKyBzdHJ1Y3QgYmxv Y2s7Cisrc3RydWN0IHN0YXBfcHJvYmU7Cisrc3RydWN0IHZhbHVlOworK3N0cnVjdCBmcmFtZV9p bmZvOworK3N0cnVjdCBhZ2VudF9leHByOworK3N0cnVjdCBheHNfdmFsdWU7CisgCisgLyogQ29t cGFyaXNvbiBmdW5jdGlvbiBmb3Igc3ltYm9sIGxvb2sgdXBzLiAgKi8KKyAKK0BAIC0yOTYsNiAr MzAxLDUyIEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCisgCQkJCXZvaWQgKmRhdGEp OworIH07CisgCisrLyogU3RydWN0dXJlIG9mIGZ1bmN0aW9ucyB1c2VkIGZvciBTeXN0ZW1UYXAg cHJvYmUgc3VwcG9ydC4gIElmIG9uZSBvZgorKyAgIHRoZXNlIGZ1bmN0aW9ucyBpcyBwcm92aWRl ZCwgYWxsIG11c3QgYmUuICAqLworKworK3N0cnVjdCBzeW1fcHJvYmVfZm5zCisreworKyAgLyog SWYgbm9uLU5VTEwsIHJldHVybiBhbiBhcnJheSBvZiBTeXN0ZW1UYXAgcHJvYmUgb2JqZWN0cy4g IFRoZQorKyAgICAgbnVtYmVyIG9mIG9iamVjdHMgaXMgcmV0dXJuZWQgaW4gKk5VTV9QUk9CRVMu ICAqLworKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKigqc3ltX2dldF9wcm9iZXMpIChzdHJ1 Y3Qgb2JqZmlsZSAqLAorKwkJCQkJICAgICAgaW50ICpudW1fcHJvYmVzKTsKKysKKysgIC8qIFJl dHVybiB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBhdmFpbGFibGUgdG8gUFJPQkUuICBQUk9CRSB3 aWxsCisrICAgICBoYXZlIGNvbWUgZnJvbSBhIGNhbGwgdG8gdGhpcyBvYmpmaWxlJ3Mgc3ltX2dl dF9wcm9iZXMgbWV0aG9kLgorKyAgICAgSWYgeW91IHByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24g b2Ygc3ltX2dldF9wcm9iZXMsIHlvdSBtdXN0CisrICAgICBpbXBsZW1lbnQgdGhpcyBtZXRob2Qg YXMgd2VsbC4gICovCisrICBpbnQgKCpzeW1fZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50KSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCSAgICAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9i ZSAqcHJvYmUpOworKworKyAgLyogRXZhbHVhdGUgdGhlIE50aCBhcmd1bWVudCBhdmFpbGFibGUg dG8gUFJPQkUuICBQUk9CRSB3aWxsIGhhdmUKKysgICAgIGNvbWUgZnJvbSBhIGNhbGwgdG8gdGhp cyBvYmpmaWxlJ3Mgc3ltX2dldF9wcm9iZXMgbWV0aG9kLiAgTiB3aWxsCisrICAgICBiZSBiZXR3 ZWVuIDAgYW5kIHRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGF2YWlsYWJsZSB0byB0aGlzIHByb2Jl LgorKyAgICAgRlJBTUUgaXMgdGhlIGZyYW1lIGluIHdoaWNoIHRoZSBldmFsdWF0aW9uIGlzIGRv bmU7IHRoZSBmcmFtZSdzCisrICAgICBQQyB3aWxsIG1hdGNoIHRoZSBhZGRyZXNzIG9mIHRoZSBw cm9iZS4gIElmIHlvdSBwcm92aWRlIGFuCisrICAgICBpbXBsZW1lbnRhdGlvbiBvZiBzeW1fZ2V0 X3Byb2JlcywgeW91IG11c3QgaW1wbGVtZW50IHRoaXMgbWV0aG9kCisrICAgICBhcyB3ZWxsLiAg Ki8KKysgIHN0cnVjdCB2YWx1ZSAqKCpzeW1fZXZhbHVhdGVfcHJvYmVfYXJndW1lbnQpIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkJCQljb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJv YmUsCisrCQkJCQkJc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorKwkJCQkJCWludCBuKTsKKysK KysgIC8qIENvbXBpbGUgdGhlIE50aCBwcm9iZSBhcmd1bWVudCB0byBhbiBhZ2VudCBleHByZXNz aW9uLiAgUFJPQkUKKysgICAgIHdpbGwgaGF2ZSBjb21lIGZyb20gYSBjYWxsIHRvIHRoaXMgb2Jq ZmlsZSdzIHN5bV9nZXRfcHJvYmVzCisrICAgICBtZXRob2QuICBOIHdpbGwgYmUgYmV0d2VlbiAw IGFuZCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cworKyAgICAgYXZhaWxhYmxlIHRvIHRoaXMgcHJv YmUuICBFWFBSIGFuZCBWQUxVRSBhcmUgdGhlIGFnZW50IGV4cHJlc3Npb24KKysgICAgIHRoYXQg aXMgYmVpbmcgdXBkYXRlZC4gICovCisrICB2b2lkICgqc3ltX2NvbXBpbGVfdG9fYXgpIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZSwKKysJCQkgICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAorKwkJCSAgICAgc3RydWN0 IGF4c192YWx1ZSAqdmFsdWUsCisrCQkJICAgICBpbnQgbik7CisrCisrICAvKiBSZWxvY2F0ZSB0 aGUgcHJvYmUgc2VjdGlvbiBvZiBPQkpGSUxFLiAgKi8KKysgIHZvaWQgKCpzeW1fcmVsb2NhdGVf cHJvYmUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgICBzdHJ1Y3Qgc2VjdGlv bl9vZmZzZXRzICpuZXdfb2Zmc2V0cywKKysJCQkgICAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRz ICpkZWx0YSk7CisrfTsKKysKKyAvKiBTdHJ1Y3R1cmUgdG8ga2VlcCB0cmFjayBvZiBzeW1ib2wg cmVhZGluZyBmdW5jdGlvbnMgZm9yIHZhcmlvdXMKKyAgICBvYmplY3QgZmlsZSB0eXBlcy4gICov CisgCitAQCAtMzY2LDYgKzQxNywxMCBAQCBzdHJ1Y3Qgc3ltX2ZucworIAorICAgYmZkX2J5dGUg Kigqc3ltX3JlbG9jYXRlKSAoc3RydWN0IG9iamZpbGUgKiwgYXNlY3Rpb24gKnNlY3RwLCBiZmRf Ynl0ZSAqYnVmKTsKKyAKKysgIC8qIElmIG5vbi1OVUxMLCB0aGlzIG9iamZpbGUgaGFzIHByb2Jl IHN1cHBvcnQsIGFuZCBhbGwgdGhlIHByb2JlCisrICAgICBmdW5jdGlvbnMgcmVmZXJyZWQgdG8g aGVyZSB3aWxsIGJlIG5vbi1OVUxMLiAgKi8KKysgIGNvbnN0IHN0cnVjdCBzeW1fcHJvYmVfZm5z ICpzeW1fcHJvYmVfZm5zOworKworICAgLyogVGhlICJxdWljayIgKGFrYSBwYXJ0aWFsKSBzeW1i b2wgZnVuY3Rpb25zIGZvciB0aGlzIHN5bWJvbAorICAgICAgcmVhZGVyLiAgKi8KKyAgIGNvbnN0 IHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zICpxZjsKIGRpZmYgLS1naXQgYS9nZGIvc3lt bWlzYy5jIGIvZ2RiL3N5bW1pc2MuYwogaW5kZXggNGJlODEwNi4uMDgxYjUzMiAxMDA2NDQKIC0t LSBhL2dkYi9zeW1taXNjLmMKQEAgLTc1MDcsMTAgKzEwODU3LDE4IEBAIGluZGV4IDRiZTgxMDYu LjA4MWI1MzIgMTAwNjQ0CiAgCSAgbXNfdHlwZSA9ICdTJzsKICAJICBicmVhazsKIGRpZmYgLS1n aXQgYS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDYwYmM1ODUuLjVlZTA0NTkg MTAwNjQ0CitpbmRleCA2MGJjNTg1Li43MzRkMzEyIDEwMDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5j CiArKysgYi9nZGIvc3ltdGFiLmMKLUBAIC0zMDA2LDcgKzMwMDYsNyBAQCBzZWFyY2hfc3ltYm9s cyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxl c1tdLAorQEAgLTc3MCw2ICs3NzAsNyBAQCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGlu ZSAqc2FsKQorICAgc2FsLT5lbmQgPSAwOworICAgc2FsLT5leHBsaWNpdF9wYyA9IDA7CisgICBz YWwtPmV4cGxpY2l0X2xpbmUgPSAwOworKyAgc2FsLT5zZW1hcGhvcmUgPSAwOworIH0KKyAMCisg CitAQCAtMzAwNiw3ICszMDA3LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9t YWluX2VudW0ga2luZCwgaW50IG5maWxlcywgY2hhciAqZmlsZXNbXSwKICAgIHN0YXRpYyBjb25z dCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgdHlwZXMzW10KICAgICAgPSB7bXN0X2ZpbGVfZGF0 YSwgbXN0X3NvbGliX3RyYW1wb2xpbmUsIG1zdF9hYnMsIG1zdF91bmtub3dufTsKICAgIHN0YXRp YyBjb25zdCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgdHlwZXM0W10KQEAgLTc1MjAsNyArMTA4 NzgsNyBAQCBpbmRleCA2MGJjNTg1Li41ZWUwNDU5IDEwMDY0NAogICAgZW51bSBtaW5pbWFsX3N5 bWJvbF90eXBlIG91cnR5cGUyOwogICAgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUz OwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuaCBiL2dkYi9zeW10YWIuaAotaW5kZXggZTk0NmM2 NS4uZjQwZTNkNCAxMDA2NDQKK2luZGV4IGU5NDZjNjUuLjYyMzlmN2YgMTAwNjQ0CiAtLS0gYS9n ZGIvc3ltdGFiLmgKICsrKyBiL2dkYi9zeW10YWIuaAogQEAgLTI5MCw2ICsyOTAsOSBAQCBlbnVt IG1pbmltYWxfc3ltYm9sX3R5cGUKQEAgLTc1MjksNDcgKzEwODg3LDY5IEBAIGluZGV4IGU5NDZj NjUuLmY0MGUzZDQgMTAwNjQ0CiAgICBtc3RfdGV4dCwJCQkvKiBHZW5lcmFsbHkgZXhlY3V0YWJs ZSBpbnN0cnVjdGlvbnMgKi8KICsgIG1zdF90ZXh0X2dudV9pZnVuYywJCS8qIEV4ZWN1dGFibGUg Y29kZSByZXR1cm5pbmcgYWRkcmVzcwogKwkJCQkgICBvZiBleGVjdXRhYmxlIGNvZGUgKi8KLSsg IG1zdF9zbG90X2dvdF9wbHQsCisrICBtc3Rfc2xvdF9nb3RfcGx0LAkJLyogR09UIGVudHJpZXMg Zm9yIC5wbHQgc2VjdGlvbnMgKi8KICAgIG1zdF9kYXRhLAkJCS8qIEdlbmVyYWxseSBpbml0aWFs aXplZCBkYXRhICovCiAgICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxseSB1bmluaXRpYWxpemVkIGRh dGEgKi8KICAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29sdXRlIChub25yZWxvY2F0YWJs ZSkgKi8KLUBAIC05NTUsMTEgKzk1OCwyNSBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqZmluZF9w Y19zZWN0X2Z1bmN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKLSAKLSAv KiBsb29rdXAgZnVuY3Rpb24gZnJvbSBhZGRyZXNzLCByZXR1cm4gbmFtZSwgc3RhcnQgYWRkciBh bmQgZW5kIGFkZHIuICAqLwotIAotLWV4dGVybiBpbnQgZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9u IChDT1JFX0FERFIsIGNoYXIgKiosIENPUkVfQUREUiAqLAotLQkJCQkgICAgIENPUkVfQUREUiAq KTsKLStleHRlcm4gZW51bSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb25fdHlwZQotKyAgewotKyAg ICBGSU5EX1BDX1BBUlRJQUxfRlVOQ1RJT05fTk9UX0ZPVU5EID0gMCwKLSsgICAgRklORF9QQ19Q QVJUSUFMX0ZVTkNUSU9OX05PUk1BTCwKLSsgICAgRklORF9QQ19QQVJUSUFMX0ZVTkNUSU9OX0dO VV9JRlVOQwotKyAgfSBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKENPUkVfQUREUiwgY2hhciAq KiwgQ09SRV9BRERSICosIENPUkVfQUREUiAqKTsKK0BAIC05NTMsNiArOTU2LDExIEBAIGV4dGVy biBzdHJ1Y3Qgc3ltYm9sICpmaW5kX3BjX2Z1bmN0aW9uIChDT1JFX0FERFIpOwogIAotIGV4dGVy biB2b2lkIGNsZWFyX3BjX2Z1bmN0aW9uX2NhY2hlICh2b2lkKTsKKyBleHRlcm4gc3RydWN0IHN5 bWJvbCAqZmluZF9wY19zZWN0X2Z1bmN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlv biAqKTsKICAKLStleHRlcm4gaW50IHJlc29sdmVfZ251X2lmdW5jIChjb25zdCBjaGFyICpmdW5j dGlvbl9uYW1lLAotKwkJCSAgICAgIENPUkVfQUREUiAqZnVuY3Rpb25fYWRkcmVzc3ApOwotKwot K2V4dGVybiBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKnJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hl Ci0rICAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSk7CisrZXh0ZXJuIGludCBmaW5kX3BjX3Bh cnRpYWxfZnVuY3Rpb25fZ251X2lmdW5jIChDT1JFX0FERFIgcGMsIGNoYXIgKipuYW1lLAorKwkJ CQkJICAgICAgIENPUkVfQUREUiAqYWRkcmVzcywKKysJCQkJCSAgICAgICBDT1JFX0FERFIgKmVu ZGFkZHIsCisrCQkJCQkgICAgICAgaW50ICppc19nbnVfaWZ1bmNfcCk7CiArCi0rZXh0ZXJuIHZv aWQgZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rCQkJ CSAgICBjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLAotKwkJCQkgICAgQ09SRV9BRERSIGZ1bmN0 aW9uX2FkZHJlc3MpOwotKwotIC8qIGxvb2t1cCBwYXJ0aWFsIHN5bWJvbCB0YWJsZSBieSBhZGRy ZXNzIGFuZCBzZWN0aW9uLiAgKi8KKyAvKiBsb29rdXAgZnVuY3Rpb24gZnJvbSBhZGRyZXNzLCBy ZXR1cm4gbmFtZSwgc3RhcnQgYWRkciBhbmQgZW5kIGFkZHIuICAqLwogIAotIGV4dGVybiBzdHJ1 Y3Qgc3ltdGFiICpmaW5kX3BjX3NlY3Rfc3ltdGFiX3ZpYV9wYXJ0aWFsIChDT1JFX0FERFIsCi1A QCAtMTAzNCw2ICsxMDUxLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3Vw X21pbmltYWxfc3ltYm9sX2J5X3BjX25hbWUKKyBleHRlcm4gaW50IGZpbmRfcGNfcGFydGlhbF9m dW5jdGlvbiAoQ09SRV9BRERSLCBjaGFyICoqLCBDT1JFX0FERFIgKiwKK0BAIC0xMDM0LDYgKzEw NDIsMzUgQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxfc3lt Ym9sX2J5X3BjX25hbWUKICAKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29rdXBf bWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUik7CiAgCiArZXh0ZXJuIGludCBpbl9nbnVf aWZ1bmNfc3R1YiAoQ09SRV9BRERSIHBjKTsKICsKKysvKiBGdW5jdGlvbnMgZm9yIHJlc29sdmlu ZyBTVFRfR05VX0lGVU5DIHN5bWJvbHMgd2hpY2ggYXJlIGltcGxlbWVudGVkIG9ubHkKKysgICBm b3IgRUxGIHN5bWJvbCBmaWxlcy4gICovCisrCisrc3RydWN0IGdudV9pZnVuY19mbnMKKyt7Cisr ICAvKiBTZWUgZWxmX2dudV9pZnVuY19yZXNvbHZlX2FkZHIgZm9yIGl0cyByZWFsIGltcGxlbWVu dGF0aW9uLiAgKi8KKysgIENPUkVfQUREUiAoKmdudV9pZnVuY19yZXNvbHZlX2FkZHIpIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgQ09SRV9BRERSIHBjKTsKKysKKysgIC8qIFNlZSBlbGZfZ251 X2lmdW5jX3Jlc29sdmVfbmFtZSBmb3IgaXRzIHJlYWwgaW1wbGVtZW50YXRpb24uICAqLworKyAg aW50ICgqZ251X2lmdW5jX3Jlc29sdmVfbmFtZSkgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUs CisrCQkJCSBDT1JFX0FERFIgKmZ1bmN0aW9uX2FkZHJlc3NfcCk7CisrCisrICAvKiBTZWUgZWxm X2dudV9pZnVuY19yZXNvbHZlcl9zdG9wIGZvciBpdHMgcmVhbCBpbXBsZW1lbnRhdGlvbi4gICov CisrICB2b2lkICgqZ251X2lmdW5jX3Jlc29sdmVyX3N0b3ApIChzdHJ1Y3QgYnJlYWtwb2ludCAq Yik7CisrCisrICAvKiBTZWUgZWxmX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCBmb3Ig aXRzIHJlYWwgaW1wbGVtZW50YXRpb24uICAqLworKyAgdm9pZCAoKmdudV9pZnVuY19yZXNvbHZl cl9yZXR1cm5fc3RvcCkgKHN0cnVjdCBicmVha3BvaW50ICpiKTsKKyt9OworKworKyNkZWZpbmUg Z251X2lmdW5jX3Jlc29sdmVfYWRkciBnbnVfaWZ1bmNfZm5zX3AtPmdudV9pZnVuY19yZXNvbHZl X2FkZHIKKysjZGVmaW5lIGdudV9pZnVuY19yZXNvbHZlX25hbWUgZ251X2lmdW5jX2Zuc19wLT5n bnVfaWZ1bmNfcmVzb2x2ZV9uYW1lCisrI2RlZmluZSBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCBn bnVfaWZ1bmNfZm5zX3AtPmdudV9pZnVuY19yZXNvbHZlcl9zdG9wCisrI2RlZmluZSBnbnVfaWZ1 bmNfcmVzb2x2ZXJfcmV0dXJuX3N0b3AgXAorKyAgZ251X2lmdW5jX2Zuc19wLT5nbnVfaWZ1bmNf cmVzb2x2ZXJfcmV0dXJuX3N0b3AKKysKKytleHRlcm4gY29uc3Qgc3RydWN0IGdudV9pZnVuY19m bnMgKmdudV9pZnVuY19mbnNfcDsKKysKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICoK ICAgICAgbG9va3VwX21pbmltYWxfc3ltYm9sX2FuZF9vYmpmaWxlIChjb25zdCBjaGFyICosCiAg CQkJCSAgICAgICBzdHJ1Y3Qgb2JqZmlsZSAqKik7CitAQCAtMTA3Miw2ICsxMTA5LDEwIEBAIHN0 cnVjdCBzeW10YWJfYW5kX2xpbmUKKyAgIENPUkVfQUREUiBlbmQ7CisgICBpbnQgZXhwbGljaXRf cGM7CisgICBpbnQgZXhwbGljaXRfbGluZTsKKysKKysgIC8qIElmIG5vbi16ZXJvLCB0aGUgc2Vt YXBob3JlIGxvY2F0aW9uIGFzc29jaWF0ZWQgd2l0aCBhIFN5c3RlbVRhcAorKyAgICAgcHJvYmUu ICAqLworKyAgQ09SRV9BRERSIHNlbWFwaG9yZTsKKyB9OworIAorIGV4dGVybiB2b2lkIGluaXRf c2FsIChzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lICpzYWwpOwogZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBp bmRleCAwMDAwMDAwLi44M2ZhYWY2CkBAIC04NzcyLDEzICsxMjE1MiwxMyBAQCBpbmRleCBkOGVl NWMwLi5kZTRiYTc1IDEwMDY0NAogK30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dudS1pZnVuYy1saWIuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLWxp Yi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjgwNTMwYQoraW5kZXgg MDAwMDAwMC4uZGM2NzEwZQogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nbnUtaWZ1bmMtbGliLmMKIEBAIC0wLDAgKzEsMzMgQEAKICsvKiBUaGlzIHRlc3RjYXNl IGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDA5 LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDA5 LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwogKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTg4MTEsMTMgKzEyMTkxLDEzIEBAIGluZGV4IDAw MDAwMDAuLjY4MDUzMGEKICt9CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9n bnUtaWZ1bmMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmMKIG5ldyBmaWxl IG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4xMDYyNzFmCitpbmRleCAwMDAwMDAwLi4wZWU3 NDFmCiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dudS1pZnVu Yy5jCiBAQCAtMCwwICsxLDYxIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwg dGhlIEdOVSBkZWJ1Z2dlci4KICsKLSsgICBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgMjAwOSwgMjAxMCwgMjAxMSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CkBAIC04ODc4LDExICsxMjI1OCwxMSBAQCBpbmRleCAwMDAwMDAwLi4xMDYyNzFmCiAr fQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQK LWluZGV4IDAwMDAwMDAuLmRlNTk3ODUKK2luZGV4IDAwMDAwMDAuLjRmY2MzYmYKIC0tLSAvZGV2 L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ251LWlmdW5jLmV4cAotQEAgLTAs MCArMSwxMzAgQEAKLSsjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KK0BAIC0wLDAgKzEsMTQ2IEBACisrIyBDb3B5cmlnaHQgKEMpIDIwMDks IDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQogKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTg5MTEsNyArMTIyOTEsNyBAQCBpbmRleCAwMDAwMDAw Li5kZTU5Nzg1CiArc2V0IGxpYmZpbGUgIiR7dGVzdGZpbGV9LWxpYiIKICtzZXQgbGlic3JjICR7 bGliZmlsZX0uYwogK3NldCBsaWJfc28gJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2xpYmZpbGV9LnNv Ci0rIyAkbGliX28gbXVzdCBub3QgaGF2ZSB7ZGVidWd9LCBpdCB3b3VsZCBvdmVycmlkZSB0aGUg Z251LWlmdW5jIEVMRiBtYXJrZXJzLgorKyMgJGxpYl9vIG11c3Qgbm90IGhhdmUge2RlYnVnfSwg aXQgd291bGQgb3ZlcnJpZGUgdGhlIFNUVF9HTlVfSUZVTkMgRUxGIG1hcmtlcnMuCiArc2V0IGxp Yl9vICR7b2JqZGlyfS8ke3N1YmRpcn0vJHtsaWJmaWxlfS5vCiArCiArIyBXZSBuZWVkIERXQVJG IGZvciB0aGUgImZpbmFsIiBmdW5jdGlvbiBhcyB3ZSAic3RlcCIgaW50byB0aGUgZnVuY3Rpb24g YW5kIEdEQgpAQCAtODkxOSwxMyArMTIyOTksMTQgQEAgaW5kZXggMDAwMDAwMC4uZGU1OTc4NQog KyMgaW5mb3JtYXRpb24gKERXQVJGKSBhdmFpbGFibGUuCiArIwogKyMgV2UgbXVzdCBub3QgaGF2 ZSBEV0FSRiBmb3IgdGhlICJnbnVfaWZ1bmMiIGZ1bmN0aW9uIGFzIERXQVJGIGhhcyBubyB3YXkg dG8KLSsjIGV4cHJlc3MgdGhlIGdudS1pZnVuYyB0eXBlIGFuZCBpdCB3b3VsZCBiZSBjb25zaWRl cmVkIGFzIGEgcmVndWxhciBmdW5jdGlvbgotKyMgZHVlIHRvIERXQVJGIGJ5IEdEQi4gIEluIEVM RiBnbnUtaWZ1bmMgaXMgZXhwcmVzc2VkIGJ5IHRoZSBTVFRfR05VX0lGVU5DIHR5cGUuCisrIyBl eHByZXNzIHRoZSBTVFRfR05VX0lGVU5DIHR5cGUgYW5kIGl0IHdvdWxkIGJlIGNvbnNpZGVyZWQg YXMgYSByZWd1bGFyCisrIyBmdW5jdGlvbiBkdWUgdG8gRFdBUkYgYnkgR0RCLiAgSW4gRUxGIGdu dS1pZnVuYyBpcyBleHByZXNzZWQgYnkgdGhlCisrIyBTVFRfR05VX0lGVU5DIHR5cGUuCiArIwog KyMgQm90aCBmdW5jdGlvbnMgbmVlZCB0byBiZSBpbiB0aGUgc2FtZSBzaGFyZWQgbGlicmFyeSBm aWxlIGJ1dAogKyMgZ2RiX2NvbXBpbGVfc2hsaWIgaGFzIG5vIHdheSB0byBzcGVjaWZ5IHNvdXJj ZS1zcGVjaWZpYyBjb21waWxhdGlvbiBvcHRpb25zLgogKyMKLSsjIFRoZXJlZm9yZSAkbGliZmls ZSBjb250YWlucyBvbmx5IHRoZSBnbnUtaWZ1bmMgZnVuY3Rpb24gd2l0aCBubyBEV0FSRgorKyMg VGhlcmVmb3JlICRsaWJmaWxlIGNvbnRhaW5zIG9ubHkgdGhlIFNUVF9HTlVfSUZVTkMgZnVuY3Rp b24gd2l0aCBubyBEV0FSRgogKyMgcmVmZXJlbmNpbmcgYWxsIHRoZSBvdGhlciBwYXJ0cyBmcm9t IHRoZSBtYWluIGV4ZWN1dGFibGUgd2l0aCBEV0FSRi4KICsKICtzZXQgbGliX29wdHMge30KQEAg LTg5MzYsMTAgKzEyMzE3LDggQEAgaW5kZXggMDAwMDAwMC4uZGU1OTc4NQogK30KICsKICtpZiB7 IFtnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyRsaWJzcmMgJGxpYl9zbyAk bGliX29wdHNdICE9ICIiCi0rICAgICB8fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGly fS8kc3JjZmlsZSAkYmluZmlsZSBleGVjdXRhYmxlICRleGVjX29wdHNdICE9ICIiCi0rICAgICB8 fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfbyBvYmplY3Qg e31dICE9ICIiCi0rICAgICB8fCBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHNy Y2ZpbGUgJGxpYl9vIiAkc3RhdGljYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIifSB7 Ci0rICAgIHVudGVzdGVkICJDb3VsZCBub3QgY29tcGlsZSBlaXRoZXIgJGxpYnNyYyBvciAkc3Jj ZmlsZS4iCisrICAgICB8fCBbZ2RiX2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kc3JjZmls ZSAkYmluZmlsZSBleGVjdXRhYmxlICRleGVjX29wdHNdICE9ICIifSB7CisrICAgIHVudGVzdGVk ICJDb3VsZCBub3QgY29tcGlsZSBkeW5hbWljIGV4ZWN1dGFibGUgJGJpbmZpbGUuIgogKyAgICBy ZXR1cm4gLTEKICt9CiArCkBAIC04OTg2LDEwICsxMjM2NSwxOCBAQCBpbmRleCAwMDAwMDAwLi5k ZTU5Nzg1CiArZ2RiX3Rlc3QgImZyYW1lIiAiIzAgKygweFxbMC05YS1mXF0rIGluICspP2ZpbmFs IFxcKC4qIiAibmV4dGNhbGwgZ251X2lmdW5jIHNraXBwZWQiCiArCiArCi0rIyBDaGVjayBhbnkg Y29tbWFuZHMgbm90IGRvaW5nIGFuIGluZmVyaW9yIGNhbGwgc3RpbGwgY29tcHV0ZSB3aXRoIGFk ZHJlc3Mgb2YKLSsjIHRoZSBnbnUtaWZ1bmMgcmVzb2x2ZXIuCisrIyBDaGVjayBhbnkgY29tbWFu ZHMgbm90IGRvaW5nIGFuIGluZmVyaW9yIGNhbGwgYWNjZXNzIHRoZSBhZGRyZXNzIG9mIHRoZQor KyMgU1RUX0dOVV9JRlVOQyByZXNvbHZlciwgbm90IHRoZSB0YXJnZXQgZnVuY3Rpb24uCisrCisr aWYge1tpc3RhcmdldCBwb3dlcnBjNjQtKl0gJiYgW2lzX2xwNjRfdGFyZ2V0XX0geworKyAgICAj IFdpdGggb25seSBtaW5pbWFsIHN5bWJvbHMgR0RCIHByb3ZpZGVzIHRoZSBmdW5jdGlvbiBkZXNj cmlwdG9ycy4gIFdpdGgKKysgICAgIyBmdWxsIGRlYnVnIGluZm8gdGhlIGZ1bmN0aW9uIGNvZGUg d291bGQgYmUgZGlzcGxheWVkLgorKyAgICBzZXQgZnVuY19wcmVmaXgge1wufQorK30gZWxzZSB7 CisrICAgIHNldCBmdW5jX3ByZWZpeCB7fQorK30KICsKLStnZGJfdGVzdCAicCBnbnVfaWZ1bmMi ICIgPSB7PHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZv Pn0gMHhcWzAtOWEtZlxdKyA8Z251X2lmdW5jPiIgInAgZ251X2lmdW5jIGV4ZWN1dGluZyIKKytn ZGJfdGVzdCAicCBnbnVfaWZ1bmMiICIgPSB7PHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZh cmlhYmxlLCBubyBkZWJ1ZyBpbmZvPn0gMHhcWzAtOWEtZlxdKyA8JHtmdW5jX3ByZWZpeH1nbnVf aWZ1bmM+IiAicCBnbnVfaWZ1bmMgZXhlY3V0aW5nIgogK2dkYl90ZXN0ICJpbmZvIHN5bSBnbnVf aWZ1bmMiICJnbnVfaWZ1bmMgaW4gc2VjdGlvbiAuKiIgImluZm8gc3ltIGdudV9pZnVuYyBleGVj dXRpbmciCiArCiArc2V0IHRlc3QgImluZm8gYWRkciBnbnVfaWZ1bmMiCkBAIC05MDA1LDYgKzEy MzkyLDE1IEBAIGluZGV4IDAwMDAwMDAuLmRlNTk3ODUKICsjIGh0dHBzOi8vYnVnemlsbGEucmVk aGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjI0OTY3CiArCiAraWYgIVt0YXJnZXRfaW5mbyBleGlz dHMgZ2RiX3N0dWJdIHsKKysKKysgICAgIyBDb21waWxlICRzdGF0aWNiaW5maWxlIHNlcGFyYXRl bHkgYXMgaXQgbWF5IGV4aXQgb24gZXJyb3IgKGxkLzEyNTk1KS4KKysKKysgICAgaWYgeyBbZ2Ri X2NvbXBpbGUgJHtzcmNkaXJ9LyR7c3ViZGlyfS8kbGlic3JjICRsaWJfbyBvYmplY3Qge31dICE9 ICIiCisrCSB8fCBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHNyY2ZpbGUgJGxp Yl9vIiAkc3RhdGljYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1Z31dICE9ICIiIH0geworKwl1bnRl c3RlZCAiQ291bGQgbm90IGNvbXBpbGUgc3RhdGljIGV4ZWN1dGFibGUgJHN0YXRpY2JpbmZpbGUu IgorKwlyZXR1cm4gLTEKKysgICAgfQorKwogKyAgICBjbGVhbl9yZXN0YXJ0ICRzdGF0aWNleGVj dXRhYmxlCiArCiArICAgIGdkYl9icmVha3BvaW50ICJnbnVfaWZ1bmMiCkBAIC05MDcwLDYgKzEy NDY2LDE1OSBAQCBpbmRleCAwMDAwMDAwLi42ZDgyZTczCiArCiArZ2RiX3Rlc3Qge3NldCAkdmFy c3RydWN0ID0gc3RhdGljc3RydWN0fQogK2dkYl90ZXN0IHtwICR2YXJzdHJ1Y3QuZmllbGR9ICIg PSAxIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0 CitpbmRleCAwMDAwMDAwLi40N2U0YjM5CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuYworQEAgLTAsMCArMSw2OSBAQAorKy8qIFRoaXMgdGVz dGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisrICAgQ29weXJpZ2h0 IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgICBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKworKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpZiBVU0VfUFJPQkVTCisrCisrI2RlZmlu ZSBfU0RUX0hBU19TRU1BUEhPUkVTCisrX19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0 ZV91c2VyX3NlbWFwaG9yZSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkgX19hdHRyaWJ1dGVfXyAo KHNlY3Rpb24gKCIucHJvYmVzIikpKTsKKysjZGVmaW5lIFRFU1QgdGVzdGVfdXNlcl9zZW1hcGhv cmUKKysKKytfX2V4dGVuc2lvbl9fIHVuc2lnbmVkIHNob3J0IHRlc3RlX3R3b19zZW1hcGhvcmUg X19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2Jl cyIpKSk7CisrI2RlZmluZSBURVNUMiB0ZXN0ZV90d29fc2VtYXBob3JlCisrCisrI2Vsc2UKKysK KysjZGVmaW5lIFRFU1QgMQorKyNkZWZpbmUgVEVTVDIgMQorKworKyNlbmRpZgorKworKyNpbmNs dWRlIDxzeXMvc2R0Lmg+CisrCisrLyogV2Ugb25seSBzdXBwb3J0IFN5c3RlbVRhcCBhbmQgb25s eSB0aGUgdjMgZm9ybS4gICovCisrI2lmIF9TRFRfTk9URV9UWVBFICE9IDMKKysjZXJyb3IgIm5v dCB1c2luZyBTeXN0ZW1UYXAgdjMgcHJvYmVzIgorKyNlbmRpZgorKworK3ZvaWQKKyttMSAodm9p ZCkKKyt7CisrICBpZiAoVEVTVDIpCisrICAgIFNUQVBfUFJPQkUgKHRlc3RlLCB0d28pOworK30K KysKKyt2b2lkCisrbTIgKHZvaWQpCisreworKyAgaWYgKFRFU1QyKQorKyAgICBTVEFQX1BST0JF ICh0ZXN0ZSwgdHdvKTsKKyt9CisrCisraW50CisrZiAoaW50IHgpCisreworKyAgaWYgKFRFU1Qp CisrICAgIFNUQVBfUFJPQkUxKHRlc3RlLCB1c2VyLCB4KTsKKysgIHJldHVybiB4KzU7CisrfQor KworK2ludAorK21haW4oKQorK3sKKysgIGYoZigyMykpOworKyAgbTEoKTsKKysgIG0yKCk7Cisr fQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5leHAgYi9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uYmMzZDQwYworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAorQEAgLTAsMCArMSw3MiBAQAorKyMgQ29weXJp Z2h0IChDKSAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgc3RhcC1wcm9iZQorKworKyMg UnVuIHRoZSB0ZXN0cy4gIFdlIHJ1biB0aGUgdGVzdHMgdHdvIGRpZmZlcmVudCB3YXlzOiBvbmNl IHdpdGggYQorKyMgcGxhaW4gcHJvYmUsIGFuZCBvbmNlIHdpdGggYSBwcm9iZSB0aGF0IGhhcyBh biBhc3NvY2lhdGVkIHNlbWFwaG9yZS4KKysjIFRoaXMgcmV0dXJucyAtMSBvbiBmYWlsdXJlIHRv IGNvbXBpbGUgb3Igc3RhcnQsIDAgb3RoZXJ3aXNlLgorK3Byb2Mgc3RhcF90ZXN0IHt7YXJnICIi fX0geworKyAgICBnbG9iYWwgdGVzdGZpbGUgaGV4CisrCisrICAgIGlmIHskYXJnICE9ICIifSB7 CisrICAgIAlzZXQgYXJnICJhZGRpdGlvbmFsX2ZsYWdzPSRhcmciCisrCXNldCBhZGRlbmR1bSAi LCB3aXRoIHNlbWFwaG9yZSIKKysgICAgfSBlbHNlIHsKKysJc2V0IGFkZGVuZHVtICIsIG5vIHNl bWFwaG9yZSIKKysgICAgfQorKworKyAgICBpZiB7W3ByZXBhcmVfZm9yX3Rlc3RpbmcgJHt0ZXN0 ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7dGVzdGZpbGV9LmMgXAorKwkgICBbY29uY2F0ICRhcmcg ZGVidWddXX0geworKwlyZXR1cm4gLTEKKysgICAgfQorKworKyAgICBpZiAhW3J1bnRvX21haW5d IHsKKysJcmV0dXJuIC0xCisrICAgIH0KKysKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2Jl X2FyZ2MiICJObyBTeXN0ZW1UYXAgcHJvYmUgYXQgUEMgJGhleCIgXAorKwkiY2hlY2sgYXJndW1l bnQgbm90IGF0IHByb2JlIHBvaW50JGFkZGVuZHVtIgorKworKyAgICBnZGJfdGVzdCAiaW5mbyBw cm9iZXMiIFwKKysJInRlc3RlICp1c2VyICokaGV4IC4qIiBcCisrCSJpbmZvIHByb2JlcyRhZGRl bmR1bSIKKysgICAgCisrICAgIGlmIHtbcnVudG8gInByb2JlOnRlc3RlOnVzZXIiXX0geworKwlw YXNzICJydW4gdG8gcHJvYmU6dGVzdGU6dXNlciRhZGRlbmR1bSIKKysgICAgfSBlbHNlIHsKKysJ ZmFpbCAicnVuIHRvIHByb2JlOnRlc3RlOnVzZXIkYWRkZW5kdW0iCisrICAgIH0KKysKKysgICAg IyBUZXN0IHByb2JlIGFyZ3VtZW50cy4KKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2Fy Z2MiICIgPSAxIiAicHJpbnQgXCRfcHJvYmVfYXJnYyRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3Qg InByaW50IFwkX3Byb2JlX2FyZzAgPT0geCIgIiA9IDEiICJjaGVjayBcJF9wcm9iZV9hcmcwJGFk ZGVuZHVtIgorKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnMSIgXAorKyAgICAJIklu dmFsaWQgcHJvYmUgYXJndW1lbnQgMSAtLSBwcm9iZSBoYXMgMSBhcmd1bWVudHMgYXZhaWxhYmxl IiBcCisrICAgIAkiY2hlY2sgXCRfcHJvYmVfYXJnMSRhZGRlbmR1bSIKKysKKysgICAgIyBTZXQg YSBicmVha3BvaW50IHdpdGggbXVsdGlwbGUgcHJvYmUgbG9jYXRpb25zLgorKyAgICBnZGJfdGVz dCAiYnJlYWsgcHJvYmU6dGVzdGU6dHdvIiBcCisrCSJCcmVha3BvaW50IC4qIGF0ICRoZXguKkJy ZWFrcG9pbnQgLiogYXQgJGhleC4qIiBcCisrCSJzZXQgbXVsdGktbG9jYXRpb24gcHJvYmUgYnJl YWtwb2ludCRhZGRlbmR1bSIKKysKKysgICAgcmV0dXJuIDAKKyt9CisrCisraWYge1tzdGFwX3Rl c3RdID09IC0xfSB7CisrICAgIHVudGVzdGVkIHN0YXAtcHJvYmUuZXhwCisrICAgIHJldHVybiAt MQorK30KKytzdGFwX3Rlc3QgIi1EVVNFX1BST0JFUyIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEt b3ZlcmZsb3cuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmM1ZDVlZTAK QEAgLTkzNTIsMTMgKzEyOTAxLDEzIEBAIGluZGV4IDAwMDAwMDAuLjVkYTczNzgKICtnZGJfdGVz dCAicCB0ZW1wMyIgIiA9ICczJyA8cmVwZWF0cyA0OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRl bXAzIgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxl dGUuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuYwogbmV3IGZp bGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjAzMWVmOTIKK2luZGV4IDAwMDAwMDAuLjIw Yzk5MjkKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hw b2ludC1kZWxldGUuYwogQEAgLTAsMCArMSwzMyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMTAsIDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQpAQCAtOTM5MSwxMSArMTI5NDAsMTEgQEAgaW5kZXggMDAwMDAwMC4uMDMxZWY5MgogK30K IGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmV4 cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDViYzY1MAoraW5kZXggMDAwMDAwMC4uN2Fh ZGY0ZQogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBv aW50LWRlbGV0ZS5leHAKIEBAIC0wLDAgKzEsMzggQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgQ29weXJpZ2h0IDIwMTAsIDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKQEAgLTk0MzMsNiArMTI5ODIsMjggQEAgaW5kZXggMDAwMDAwMC4uNDViYzY1MAogK2dkYl90 ZXN0ICJ3YXRjaCB4IiB7V2F0Y2hwb2ludCBbMC05XSs6IHh9CiArCiArZ2RiX3Rlc3Rfbm9fb3V0 cHV0IHtkZWxldGUgJGJwbnVtfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25l eHRvdmVydGhyb3cuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAK K2luZGV4IDg5YzAyZDYuLmE5NzBiYjkgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5j cC9uZXh0b3ZlcnRocm93LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0 aHJvdy5leHAKK0BAIC01Myw2ICs1MywxNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAicHJpbnQgX1Vu d2luZF9EZWJ1Z0hvb2siICJjaGVjayBmb3IgdW53aW5kZXIgaG9vayIgeworICAgICB9CisgfQor IGlmIHshJG9rfSB7CisrICAgIGdkYl90ZXN0X211bHRpcGxlICJpbmZvIHByb2JlIiAiY2hlY2sg Zm9yIHN0YXAgcHJvYmUgaW4gdW53aW5kZXIiIHsKKysJLXJlICIuKmxpYmdjYy4qdW53aW5kLipc clxuJGdkYl9wcm9tcHQgJCIgeworKwkgICAgcGFzcyAiY2hlY2sgZm9yIHN0YXAgcHJvYmUgaW4g dW53aW5kZXIiCisrCSAgICBzZXQgb2sgMQorKwl9CisrCS1yZSAiXHJcbiRnZGJfcHJvbXB0ICQi IHsKKysJfQorKyAgICB9CisrfQorKworK2lmIHshJG9rfSB7CisgICAgIHVuc3VwcG9ydGVkICJu ZXh0b3ZlcnRocm93LmV4cCBjb3VsZCBub3QgZmluZCBfVW53aW5kX0RlYnVnSG9vayIKKyAgICAg cmV0dXJuIC0xCisgfQogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt Ym91bmQtbG9jbGlzdC5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2Ns aXN0LlMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi5hYWMzYmFhCkBAIC0x MDY5Nyw2ICsxNDI2OCwxMDEgQEAgaW5kZXggMzBhNzFkZC4uNGJiOGU3ZCAxMDA2NDQKICAJICAg IC1yZSAiLipwcmVfc3RhdF9jaGFpbiA9IG1ha2VfY29tbWFuZF9zdGF0c19jbGVhbnVwLiokZ2Ri X3Byb21wdCAkIiB7CiAgCQlzZXQgZGVzY3JpcHRpb24gIm5leHQgb3ZlciBtYWtlX2NvbW1hbmRf c3RhdHNfY2xlYW51cCBhbmQgZXZlcnl0aGluZyBpdCBjYWxscyIKICAJCXNldCBjb21tYW5kICJu ZXh0IgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlw ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmMKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lYmNlZDNjCistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYworQEAgLTAsMCArMSwy NiBAQAorKy8qIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgor KworKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK KysgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4gICovCisrCisraW50CisrbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiph cmd2KQorK3sKKysgIGNoYXIgdmxhW2FyZ2NdOworKworKyAgdmxhWzBdID0gMDsJLyogYnJlYWst aGVyZSAqLworKworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUv Z2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTIt dmFyLXN0YWxlLXR5cGUuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u NzRhMTA0ZQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZh ci1zdGFsZS10eXBlLmV4cAorQEAgLTAsMCArMSw1NyBAQAorKyMgQ29weXJpZ2h0IDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlz aGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KKysKKytsb2FkX2xpYiBtaS1zdXBwb3J0LmV4cAorK3NldCBNSUZMQUdTICItaT1taTIi CisrCisrZ2RiX2V4aXQKKytpZiBbbWlfZ2RiX3N0YXJ0XSB7CisrICAgIGNvbnRpbnVlCisrfQor KworK3NldCB0ZXN0ZmlsZSAibWkyLXZhci1zdGFsZS10eXBlIgorK3NldCBzcmNmaWxlICR7dGVz dGZpbGV9LmMKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Cisr aWYge1tidWlsZF9leGVjdXRhYmxlICR7dGVzdGZpbGV9LmV4cCAkdGVzdGZpbGUgJHNyY2ZpbGVd ID09IC0xfSB7CisrICAgIHJldHVybiAtMQorK30KKysKKyttaV9kZWxldGVfYnJlYWtwb2ludHMK KyttaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKyttaV9nZGJfbG9hZCAk e2JpbmZpbGV9CisrCisrbWlfZ2RiX3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1h aW50ZW5hbmNlIHNldCBpbnRlcm5hbC1lcnJvciBxdWl0IHllcyJ9IFwKKysgIHtcXmRvbmV9IFwK KysgICJtYWludGVuYW5jZSBzZXQgaW50ZXJuYWwtZXJyb3IgcXVpdCB5ZXMiCisrCisrbWlfZ2Ri X3Rlc3Qgey1pbnRlcnByZXRlci1leGVjIGNvbnNvbGUgIm1haW50ZW5hbmNlIHNldCBpbnRlcm5h bC1lcnJvciBjb3JlZmlsZSB5ZXMifSBcCisrICB7XF5kb25lfSBcCisrICAibWFpbnRlbmFuY2Ug c2V0IGludGVybmFsLWVycm9yIGNvcmVmaWxlIHllcyIKKysKKytzZXQgbGluZSBbZ2RiX2dldF9s aW5lX251bWJlciAiYnJlYWstaGVyZSJdCisrc2V0IGZ1bmMgIm1haW4iCisrCisrbWlfZ2RiX3Rl c3QgIi1icmVhay1pbnNlcnQgLXQgJHNyY2ZpbGU6JGxpbmUiIFwKKysgICJcXF5kb25lLGJrcHQ9 XHtudW1iZXI9XCJcWzAtOVxdK1wiLHR5cGU9XCJicmVha3BvaW50XCIsZGlzcD1cImRlbFwiLGVu YWJsZWQ9XCJ5XCIsYWRkcj1cIiRoZXhcIixmdW5jPVwiJGZ1bmNcKFxcXCguKlxcXClcKT9cIixm aWxlPVwiLipcIixsaW5lPVwiJGxpbmVcIix0aW1lcz1cIjBcIixvcmlnaW5hbC1sb2NhdGlvbj1c Ii4qXCJcfSIgXAorKyAgImJyZWFrcG9pbnQgYXQgJGZ1bmMiCisrCisraWYgeyBbbWlfcnVuX2Nt ZF0gPCAwIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrbWlfZXhwZWN0X3N0b3AgImJyZWFrcG9p bnQtaGl0IiAkZnVuYyAiLioiICIuKiIgIlxbMC05XF0rIiB7ICIiICJkaXNwPVwiZGVsXCIiIH0g InN0b3AgYWZ0ZXIgaW5pdGlhbGl6aW5nIHZsYSIKKysKKyttaV9jcmVhdGVfdmFyb2JqICJ2bGEi ICJ2bGEiICJjcmVhdGUgbG9jYWwgdmFyaWFibGUgdmxhIgorKworK21pX2dkYl90ZXN0ICItdmFy LXVwZGF0ZSAqIiAiXFxeZG9uZSxjaGFuZ2VsaXN0PS4qIiAiLXZhci11cGRhdGUgKiIKIGRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMgYi9nZGIv dGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMKIG5ldyBmaWxlIG1vZGUgMTAw NjQ0CiBpbmRleCAwMDAwMDAwLi4xNTNjMThiCkBAIC0xMTg4MSwxMSArMTU1NDcsMTEgQEAgaW5k ZXggMDAwMDAwMC4uMzFmNzY1NgogK2V4dGVybiB2b2lkIG1hcmtlciAodm9pZCk7CiArZXh0ZXJu IHZvaWQgZm9ya29mZiAoaW50IG5yKTsKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9n ZGIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotaW5kZXggNDRkNDQ5YS4uZDhjNTBm MiAxMDA2NDQKK2luZGV4IDZhMmYxYTIuLmM3NWE3ZjAgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1 aXRlL2xpYi9nZGIuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1AQCAtMTQw LDYgKzE0MCwxMSBAQCBwcm9jIGdkYl91bmxvYWQge30gewotIAkJdmVyYm9zZSAiXHRcdEtpbGxp bmcgcHJldmlvdXMgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCIKK0BAIC0xNDEsNiArMTQxLDExIEBA IHByb2MgZ2RiX3VubG9hZCB7fSB7CisgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2Nv bnRpbnVlCiAgCX0KICsJLXJlICJBIHByb2dyYW0gaXMgYmVpbmcgZGVidWdnZWQgYWxyZWFkeS4u KkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjaGFuZ2UgdGhlIGZpbGUuKnkgb3Igbi4gJCJcCkBA IC0xMTkzMSw4ICsxNTU5Nyw0MyBAQCBpbmRleCA4OTFkYTM3Li4yMzZjNWNhIDEwMDY0NAogICAg ICB9CiAgICAgIHNldCBwYXNjYWxfaW5pdF9kb25lIDEKICB9ICAgCitkaWZmIC0tZ2l0IGEvZ2Ri L3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCitpbmRleCA2YWQxODA3Li45MWZlMDU2IDEwMDY0NAor LS0tIGEvZ2RiL3RocmVhZC5jCisrKysgYi9nZGIvdGhyZWFkLmMKK0BAIC0xNDM4LDcgKzE0Mzgs OCBAQCB1cGRhdGVfdGhyZWFkX2xpc3QgKHZvaWQpCisgICAgbm8gdGhyZWFkIGlzIHNlbGVjdGVk LCBvciBubyB0aHJlYWRzIGV4aXN0LiAgKi8KKyAKKyBzdGF0aWMgc3RydWN0IHZhbHVlICoKKy10 aHJlYWRfaWRfbWFrZV92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRl cm5hbHZhciAqdmFyKQorK3RocmVhZF9pZF9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIsCisrCQkgICAgICB2b2lkICppZ25vcmUpCisg eworICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGZpbmRfdGhyZWFkX3B0aWQgKGluZmVyaW9y X3B0aWQpOworIAorQEAgLTE0NDksNiArMTQ1MCwxMyBAQCB0aHJlYWRfaWRfbWFrZV92YWx1ZSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyKQorIC8qIENv bW1hbmRzIHdpdGggYSBwcmVmaXggb2YgYHRocmVhZCcuICAqLworIHN0cnVjdCBjbWRfbGlzdF9l bGVtZW50ICp0aHJlYWRfY21kX2xpc3QgPSBOVUxMOworIAorK3N0YXRpYyBzdHJ1Y3QgaW50ZXJu YWx2YXJfZnVuY3MgdGhyZWFkX2Z1bmNzID0KKyt7CisrICB0aHJlYWRfaWRfbWFrZV92YWx1ZSwK KysgIE5VTEwsCisrICBOVUxMCisrfTsKKysKKyB2b2lkCisgX2luaXRpYWxpemVfdGhyZWFkICh2 b2lkKQorIHsKK0BAIC0xNDk0LDUgKzE1MDIsNSBAQCBTaG93IHByaW50aW5nIG9mIHRocmVhZCBl dmVudHMgKHN1Y2ggYXMgdGhyZWFkIHN0YXJ0IGFuZCBleGl0KS4iKSwgTlVMTCwKKyAgICAgICAg ICBzaG93X3ByaW50X3RocmVhZF9ldmVudHMsCisgICAgICAgICAgJnNldHByaW50bGlzdCwgJnNo b3dwcmludGxpc3QpOworIAorLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90aHJl YWQiLCB0aHJlYWRfaWRfbWFrZV92YWx1ZSk7CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9s YXp5ICgiX3RocmVhZCIsICZ0aHJlYWRfZnVuY3MsIE5VTEwpOworIH0KIGRpZmYgLS1naXQgYS9n ZGIvdG9wLmMgYi9nZGIvdG9wLmMKLWluZGV4IGRmMmIxNjMuLjYwNjFiMzMgMTAwNjQ0CitpbmRl eCBhMjU1NTBmLi44N2YwYjQxIDEwMDY0NAogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9w LmMKIEBAIC0zNDMsNiArMzQzLDkgQEAgdm9pZApAQCAtMTE5NDUsNiArMTU2NDYsNDMgQEAgaW5k ZXggZGYyYjE2My4uNjA2MWIzMyAxMDA2NDQKICAKICAgIC8qIFdpdGggbXVsdGlwbGUgdGhyZWFk cyBydW5uaW5nIHdoaWxlIHRoZSBvbmUgd2UncmUgZXhhbWluaW5nIGlzCiAgICAgICBzdG9wcGVk LCB0aGUgZGNhY2hlIGNhbiBnZXQgc3RhbGUgd2l0aG91dCB1cyBiZWluZyBhYmxlIHRvIGRldGVj dAorZGlmZiAtLWdpdCBhL2dkYi90cmFjZXBvaW50LmMgYi9nZGIvdHJhY2Vwb2ludC5jCitpbmRl eCAzYWUzNWQwLi5lMWQyZTgyIDEwMDY0NAorLS0tIGEvZ2RiL3RyYWNlcG9pbnQuYworKysrIGIv Z2RiL3RyYWNlcG9pbnQuYworQEAgLTQ0OTcsNyArNDQ5Nyw4IEBAIGluZm9fc3RhdGljX3RyYWNl cG9pbnRfbWFya2Vyc19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAgICBhdmFp bGFibGUuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXNkYXRhX21ha2VfdmFsdWUg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKKytzZGF0 YV9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFy ICp2YXIsCisrCQkgIHZvaWQgKmlnbm9yZSkKKyB7CisgICBMT05HRVNUIHNpemU7CisgICBnZGJf Ynl0ZSAqYnVmOworQEAgLTQ2NzYsNiArNDY3NywxMyBAQCB0cmFjZWZyYW1lX2F2YWlsYWJsZV9t ZW1vcnkgKFZFQyhtZW1fcmFuZ2VfcykgKipyZXN1bHQsCisgICByZXR1cm4gMDsKKyB9CisgCisr c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyBzZGF0YV9mdW5jcyA9Cisrewor KyAgc2RhdGFfbWFrZV92YWx1ZSwKKysgIE5VTEwsCisrICBOVUxMCisrfTsKKysKKyAvKiBtb2R1 bGUgaW5pdGlhbGl6YXRpb24gKi8KKyB2b2lkCisgX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9p ZCkKK0BAIC00Njg2LDcgKzQ2OTQsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQor ICAgICAgdmFsdWUgd2l0aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJl LCBnZGJhcmNoCisgICAgICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3 ZSdyZSBxdWl0ZSBzdXJlIHRoZXJlCisgICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZh cmlhYmxlIG9mIHRoZSBzYW1lIG5hbWUuICAqLworLSAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVf bGF6eSAoIl9zZGF0YSIsIHNkYXRhX21ha2VfdmFsdWUpOworKyAgY3JlYXRlX2ludGVybmFsdmFy X3R5cGVfbGF6eSAoIl9zZGF0YSIsICZzZGF0YV9mdW5jcywgTlVMTCk7CisgCisgICB0cmFjZWZy YW1lX251bWJlciA9IC0xOworICAgdHJhY2Vwb2ludF9udW1iZXIgPSAtMTsKIGRpZmYgLS1naXQg YS9nZGIvdHlwZXByaW50LmMgYi9nZGIvdHlwZXByaW50LmMKIGluZGV4IDAzZTYzMzIuLmNlNmQx ZTAgMTAwNjQ0CiAtLS0gYS9nZGIvdHlwZXByaW50LmMKQEAgLTEyMDAzLDcgKzE1NzQxLDcgQEAg aW5kZXggMDNlNjMzMi4uY2U2ZDFlMCAxMDA2NDQKICAKICBzdGF0aWMgdm9pZAogZGlmZiAtLWdp dCBhL2dkYi91dGlscy5jIGIvZ2RiL3V0aWxzLmMKLWluZGV4IDkxZTZhZjQuLjg4YjgyZjUgMTAw NjQ0CitpbmRleCBlNjg4ZDE5Li5mMWZjNTA3IDEwMDY0NAogLS0tIGEvZ2RiL3V0aWxzLmMKICsr KyBiL2dkYi91dGlscy5jCiBAQCAtMjI0Myw2ICsyMjQzLDM2IEBAIHNldF9iYXRjaF9mbGFnX2Fu ZF9tYWtlX2NsZWFudXBfcmVzdG9yZV9wYWdlX2luZm8gKHZvaWQpCkBAIC0xMjA3MSw3ICsxNTgw OSw3IEBAIGluZGV4IDY4ZjY0OWYuLmFhYTQ0ODcgMTAwNjQ0CiAgfQogIAogZGlmZiAtLWdpdCBh L2dkYi92YWxvcHMuYyBiL2dkYi92YWxvcHMuYwotaW5kZXggMGMwN2U1Yy4uNTc0OWNjZSAxMDA2 NDQKK2luZGV4IGI5ZjU1MDguLjFiN2VkNzYgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsb3BzLmMKICsr KyBiL2dkYi92YWxvcHMuYwogQEAgLTQ3LDYgKzQ3LDcgQEAKQEAgLTEyMTc0LDcgKzE1OTEyLDcg QEAgaW5kZXggMGMwN2U1Yy4uNTc0OWNjZSAxMDA2NDQKICAgICAgfQogICAgZWxzZSBpZiAoVkFM VUVfTFZBTCAodmFsKSA9PSBsdmFsX3JlZ2lzdGVyKQogICAgICB7Ci1AQCAtMTUyMCw3ICsxNTg4 LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJs b2NrICpiKQorQEAgLTE1MjgsNyArMTU5NiwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBibG9jayAqYikKICAgIGlmICgoVkFMVUVfTFZBTCAodmFs KSA9PSBsdmFsX21lbW9yeSAmJiB2YWx1ZV9sYXp5ICh2YWwpKQogICAgICAgIHx8IFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMpCiAgICAgIHsKQEAgLTEyMTk0LDcgKzE1OTMyLDcg QEAgaW5kZXggMGMwN2U1Yy4uNTc0OWNjZSAxMDA2NDQKICAKICAgICAgICByZXR1cm4gdmFsdWVf ZnJvbV9wb2ludGVyIChsb29rdXBfcG9pbnRlcl90eXBlICh0eXBlKSwgYWRkcik7CiAgICAgIH0K LUBAIC0xNjI3LDYgKzE3MDYsNyBAQCBzdHJ1Y3QgdmFsdWUgKgorQEAgLTE2MzUsNiArMTcxNCw3 IEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFy ZzEpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBl IChhcmcxKSk7CkBAIC0xMjIwMiw3ICsxNTk0MCw3IEBAIGluZGV4IDBjMDdlNWMuLjU3NDljY2Ug MTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21ldGhpbmcgcmVxdWly aW5nIGEgcG9pbnRlciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBub3QgeWV0IGJlZW4g cHVzaGVkIHRvIHRoZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE2MzYsOCArMTcxNiwx MiBAQCB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKK0BAIC0xNjQ0LDgg KzE3MjQsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgICBp ZiAoVkFMVUVfTFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVycm9yIChfKCJBdHRl bXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuIikpOwog IApAQCAtMTIyMTYsNyArMTU5NTQsNyBAQCBpbmRleCAwYzA3ZTVjLi41NzQ5Y2NlIDEwMDY0NAog IH0KICAKICAvKiBHaXZlbiBhIHZhbHVlIHdoaWNoIGlzIGEgZnVuY3Rpb24sIHJldHVybiBhIHZh bHVlIHdoaWNoIGlzIGEgcG9pbnRlcgotQEAgLTM2ODAsNiArMzc2NCw4IEBAIHZhbHVlX3NsaWNl IChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCitAQCAtMzY4 OCw2ICszNzcyLDggQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIGludCBsb3di b3VuZCwgaW50IGxlbmd0aCkKICAJCQkJCVRZUEVfVEFSR0VUX1RZUEUgKHJhbmdlX3R5cGUpLAog IAkJCQkJbG93Ym91bmQsIAogIAkJCQkJbG93Ym91bmQgKyBsZW5ndGggLSAxKTsKQEAgLTEyMjk5 LDcgKzE2MDM3LDcgQEAgaW5kZXggMjg2ZWY5ZS4uMWZlNThiMSAxMDA2NDQKICAKICAvKiBSZWFk IExFTiBieXRlcyBvZiB0YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0 aGUKIGRpZmYgLS1naXQgYS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCAyYWNiMWRm Li5kMWRiOGY1IDEwMDY0NAoraW5kZXggMmFjYjFkZi4uYWJlNzc0ZSAxMDA2NDQKIC0tLSBhL2dk Yi92YWx1ZS5jCiArKysgYi9nZGIvdmFsdWUuYwogQEAgLTQzLDYgKzQzLDcgQEAKQEAgLTEyMzcx LDcgKzE2MTA5LDg2IEBAIGluZGV4IDJhY2IxZGYuLmQxZGI4ZjUgMTAwNjQ0CiAgDAogIC8qIElu dGVybmFsIHZhcmlhYmxlcy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dl cgogICAgIHRoYXQgaG9sZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1A QCAtMTk2Myw2ICsxOTk4LDM4IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLAorQEAgLTE1MzAsNyArMTU2NSwxNCBAQCBzdHJ1Y3QgaW50ZXJuYWx2YXIK KyAgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbHVlOworIAorICAgICAgIC8qIFRoZSBjYWxsLWJhY2sg cm91dGluZSB1c2VkIHdpdGggSU5URVJOQUxWQVJfTUFLRV9WQUxVRS4gICovCistICAgICAgaW50 ZXJuYWx2YXJfbWFrZV92YWx1ZSBtYWtlX3ZhbHVlOworKyAgICAgIHN0cnVjdAorKyAgICAgICAg eworKwkgIC8qIFRoZSBmdW5jdGlvbnMgdG8gY2FsbC4gICovCisrCSAgY29uc3Qgc3RydWN0IGlu dGVybmFsdmFyX2Z1bmNzICpmdW5jdGlvbnM7CisrCisrCSAgLyogVGhlIGZ1bmN0aW9uJ3MgdXNl ci1kYXRhLiAgKi8KKysJICB2b2lkICpkYXRhOworKyAgICAgICAgfSBtYWtlX3ZhbHVlOworIAor ICAgICAgIC8qIFRoZSBpbnRlcm5hbCBmdW5jdGlvbiB1c2VkIHdpdGggSU5URVJOQUxWQVJfRlVO Q1RJT04uICAqLworICAgICAgIHN0cnVjdAorQEAgLTE2MjksMTggKzE2NzEsMzcgQEAgY3JlYXRl X2ludGVybmFsdmFyIChjb25zdCBjaGFyICpuYW1lKQorIC8qIENyZWF0ZSBhbiBpbnRlcm5hbCB2 YXJpYWJsZSB3aXRoIG5hbWUgTkFNRSBhbmQgcmVnaXN0ZXIgRlVOIGFzIHRoZQorICAgIGZ1bmN0 aW9uIHRoYXQgdmFsdWVfb2ZfaW50ZXJuYWx2YXIgdXNlcyB0byBjcmVhdGUgYSB2YWx1ZSB3aGVu ZXZlcgorICAgIHRoaXMgdmFyaWFibGUgaXMgcmVmZXJlbmNlZC4gIE5BTUUgc2hvdWxkIG5vdCBu b3JtYWxseSBpbmNsdWRlIGEKKy0gICBkb2xsYXIgc2lnbi4gICovCisrICAgZG9sbGFyIHNpZ24u ICBEQVRBIGlzIHBhc3NlZCB1bmludGVycHJldGVkIHRvIEZVTiB3aGVuIGl0IGlzCisrICAgY2Fs bGVkLiAgQ0xFQU5VUCwgaWYgbm90IE5VTEwsIGlzIGNhbGxlZCB3aGVuIHRoZSBpbnRlcm5hbCB2 YXJpYWJsZQorKyAgIGlzIGRlc3Ryb3llZC4gIEl0IGlzIHBhc3NlZCBEQVRBIGFzIGl0cyBvbmx5 IGFyZ3VtZW50LiAgKi8KKyAKKyBzdHJ1Y3QgaW50ZXJuYWx2YXIgKgorLWNyZWF0ZV9pbnRlcm5h bHZhcl90eXBlX2xhenkgKGNoYXIgKm5hbWUsIGludGVybmFsdmFyX21ha2VfdmFsdWUgZnVuKQor K2NyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKGNvbnN0IGNoYXIgKm5hbWUsCisrCQkJICAg ICAgY29uc3Qgc3RydWN0IGludGVybmFsdmFyX2Z1bmNzICpmdW5jcywKKysJCQkgICAgICB2b2lk ICpkYXRhKQorIHsKKyAgIHN0cnVjdCBpbnRlcm5hbHZhciAqdmFyID0gY3JlYXRlX2ludGVybmFs dmFyIChuYW1lKTsKKyAKKyAgIHZhci0+a2luZCA9IElOVEVSTkFMVkFSX01BS0VfVkFMVUU7Cist ICB2YXItPnUubWFrZV92YWx1ZSA9IGZ1bjsKKysgIHZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9u cyA9IGZ1bmNzOworKyAgdmFyLT51Lm1ha2VfdmFsdWUuZGF0YSA9IGRhdGE7CisgICByZXR1cm4g dmFyOworIH0KKyAKKytpbnQKKytjb21waWxlX2ludGVybmFsdmFyX3RvX2F4IChzdHJ1Y3QgaW50 ZXJuYWx2YXIgKnZhciwKKysJCQkgICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKKysJCQkgICBz dHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSkKKyt7CisrICBpZiAodmFyLT5raW5kICE9IElOVEVSTkFM VkFSX01BS0VfVkFMVUUKKysgICAgICB8fCB2YXItPnUubWFrZV92YWx1ZS5mdW5jdGlvbnMtPmNv bXBpbGVfdG9fYXggPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisrICB2YXItPnUubWFrZV92 YWx1ZS5mdW5jdGlvbnMtPmNvbXBpbGVfdG9fYXggKHZhciwgZXhwciwgdmFsdWUsCisrCQkJCQkg ICAgICB2YXItPnUubWFrZV92YWx1ZS5kYXRhKTsKKysgIHJldHVybiAxOworK30KKysKKyAvKiBM b29rIHVwIGFuIGludGVybmFsIHZhcmlhYmxlIHdpdGggbmFtZSBOQU1FLiAgTkFNRSBzaG91bGQg bm90CisgICAgbm9ybWFsbHkgaW5jbHVkZSBhIGRvbGxhciBzaWduLgorIAorQEAgLTE3MTMsNyAr MTc3NCw4IEBAIHZhbHVlX29mX2ludGVybmFsdmFyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg c3RydWN0IGludGVybmFsdmFyICp2YXIpCisgICAgICAgYnJlYWs7CisgCisgICAgIGNhc2UgSU5U RVJOQUxWQVJfTUFLRV9WQUxVRToKKy0gICAgICB2YWwgPSAoKnZhci0+dS5tYWtlX3ZhbHVlKSAo Z2RiYXJjaCwgdmFyKTsKKysgICAgICB2YWwgPSAoKnZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9u cy0+bWFrZV92YWx1ZSkgKGdkYmFyY2gsIHZhciwKKysJCQkJCQkJdmFyLT51Lm1ha2VfdmFsdWUu ZGF0YSk7CisgICAgICAgYnJlYWs7CisgCisgICAgIGRlZmF1bHQ6CitAQCAtMTkwOSw2ICsxOTcx LDExIEBAIGNsZWFyX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhcikKKyAgICAg ICB4ZnJlZSAodmFyLT51LnN0cmluZyk7CisgICAgICAgYnJlYWs7CisgCisrICAgIGNhc2UgSU5U RVJOQUxWQVJfTUFLRV9WQUxVRToKKysgICAgICBpZiAodmFyLT51Lm1ha2VfdmFsdWUuZnVuY3Rp b25zLT5kZXN0cm95ICE9IE5VTEwpCisrCXZhci0+dS5tYWtlX3ZhbHVlLmZ1bmN0aW9ucy0+ZGVz dHJveSAodmFyLT51Lm1ha2VfdmFsdWUuZGF0YSk7CisrICAgICAgYnJlYWs7CisrCisgICAgIGRl ZmF1bHQ6CisgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC0xOTYzLDYgKzIwMzAsMzggQEAgY2Fs bF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICByZXR1cm4g KCppZm4tPmhhbmRsZXIpIChnZGJhcmNoLCBsYW5ndWFnZSwgaWZuLT5jb29raWUsIGFyZ2MsIGFy Z3YpOwogIH0KICAKQEAgLTEyNDEwLDcgKzE2MjI3LDcgQEAgaW5kZXggMmFjYjFkZi4uZDFkYjhm NSAxMDA2NDQKICAvKiBUaGUgJ2Z1bmN0aW9uJyBjb21tYW5kLiAgVGhpcyBkb2VzIG5vdGhpbmcg LS0gaXQgaXMganVzdCBhCiAgICAgcGxhY2Vob2xkZXIgdG8gbGV0ICJoZWxwIGZ1bmN0aW9uIE5B TUUiIHdvcmsuICBUaGlzIGlzIGFsc28gdXNlZCBhcwogICAgIHRoZSBpbXBsZW1lbnRhdGlvbiBv ZiB0aGUgc3ViLWNvbW1hbmQgdGhhdCBpcyBjcmVhdGVkIHdoZW4KLUBAIC0yMDEwLDExICsyMDc3 LDEwIEBAIHByZXNlcnZlX29uZV92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9i amZpbGUgKm9iamZpbGUsCitAQCAtMjAxMCwxMSArMjEwOSwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFs dWUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJICAg IGh0YWJfdCBjb3BpZWRfdHlwZXMpCiAgewogICAgaWYgKFRZUEVfT0JKRklMRSAodmFsdWUtPnR5 cGUpID09IG9iamZpbGUpCkBAIC0xMjQyNCw3ICsxNjI0MSw3IEBAIGluZGV4IDJhY2IxZGYuLmQx ZGI4ZjUgMTAwNjQ0CiAgCQkJCQkJIGNvcGllZF90eXBlcyk7CiAgfQogIAotQEAgLTIwMjksNyAr MjA5NSw3IEBAIHByZXNlcnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2 YXIsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTIwMjksNyArMjEyNyw3IEBAIHByZXNl cnZlX29uZV9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFsdmFyICp2YXIsIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAogICAgICBjYXNlIElOVEVSTkFMVkFSX0lOVEVHRVI6CiAgICAgICAgaWYg KHZhci0+dS5pbnRlZ2VyLnR5cGUgJiYgVFlQRV9PQkpGSUxFICh2YXItPnUuaW50ZWdlci50eXBl KSA9PSBvYmpmaWxlKQogIAl2YXItPnUuaW50ZWdlci50eXBlCkBAIC0xMjQzMyw3ICsxNjI1MCw3 IEBAIGluZGV4IDJhY2IxZGYuLmQxZGI4ZjUgMTAwNjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAg IGNhc2UgSU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAtMzA0Nyw3ICszMTEzLDI0IEBAIHZhbHVlX2Zy b21faGlzdG9yeV9yZWYgKGNoYXIgKmgsIGNoYXIgKiplbmRwKQorQEAgLTMwNDcsNyArMzE0NSwy NCBAQCB2YWx1ZV9mcm9tX2hpc3RvcnlfcmVmIChjaGFyICpoLCBjaGFyICoqZW5kcCkKICBzdHJ1 Y3QgdmFsdWUgKgogIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTEyNDU5 LDcgKzE2Mjc2LDcgQEAgaW5kZXggMmFjYjFkZi4uZDFkYjhmNSAxMDA2NDQKICAKICAgIGlmIChU WVBFX0NPREUgKHZhbHVlX3R5cGVfYXJnX3RtcCkgPT0gVFlQRV9DT0RFX1JFRikKICAgICAgYXJn ID0gdmFsdWVfYXRfbGF6eSAoVFlQRV9UQVJHRVRfVFlQRSAodmFsdWVfdHlwZV9hcmdfdG1wKSwK LUBAIC0zMTQ1LDQgKzMyMjgsMTAgQEAgVkFSSUFCTEUgaXMgYWxyZWFkeSBpbml0aWFsaXplZC4i KSk7CitAQCAtMzE0NSw0ICszMjYwLDEwIEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6 ZWQuIikpOwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBmdW5jdGlv bl9jb21tYW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBoZWxwIG9u IGNvbnZlbmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1bmN0aW9u ICIsIDAsICZjbWRsaXN0KTsKQEAgLTEyNDcxLDcgKzE2Mjg4LDcgQEAgaW5kZXggMmFjYjFkZi4u ZDFkYjhmNSAxMDA2NDQKICsjZW5kaWYKICB9CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9n ZGIvdmFsdWUuaAotaW5kZXggMDg4OWNlZi4uMWJlN2YwYiAxMDA2NDQKK2luZGV4IDA4ODljZWYu LjRiNTFhNGEgMTAwNjQ0CiAtLS0gYS9nZGIvdmFsdWUuaAogKysrIGIvZ2RiL3ZhbHVlLmgKIEBA IC00NzMsNiArNDczLDEwIEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxv YXQgKHN0cnVjdCB0eXBlICp0eXBlLApAQCAtMTI0ODUsMyArMTYzMDIsMTA1IEBAIGluZGV4IDA4 ODljZWYuLjFiZTdmMGIgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXQgKHN0 cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAq dmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICAKK0BA IC02OTcsMTAgKzcwMSw1MiBAQCBleHRlcm4gc3RydWN0IGludGVybmFsdmFyICpsb29rdXBfb25s eV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7CisgCisgZXh0ZXJuIHN0cnVjdCBpbnRl cm5hbHZhciAqY3JlYXRlX2ludGVybmFsdmFyIChjb25zdCBjaGFyICpuYW1lKTsKKyAKKy10eXBl ZGVmIHN0cnVjdCB2YWx1ZSAqICgqaW50ZXJuYWx2YXJfbWFrZV92YWx1ZSkgKHN0cnVjdCBnZGJh cmNoICosCistCQkJCQkJICBzdHJ1Y3QgaW50ZXJuYWx2YXIgKik7CisrLyogQW4gaW50ZXJuYWx2 YXIgY2FuIGJlIGR5bmFtaWNhbGx5IGNvbXB1dGVkIGJ5IHN1cHBseWluZyBhIHZlY3RvciBvZgor KyAgIGZ1bmN0aW9uIHBvaW50ZXJzIHRvIHBlcmZvcm0gdmFyaW91cyBvcGVyYXRpb25zLiAgKi8K KysKKytzdHJ1Y3QgaW50ZXJuYWx2YXJfZnVuY3MKKyt7CisrICAvKiBDb21wdXRlIHRoZSB2YWx1 ZSBvZiB0aGUgdmFyaWFibGUuICBUaGUgREFUQSBhcmd1bWVudCBwYXNzZWQgdG8KKysgICAgIHRo ZSBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcmd1bWVudCB0aGF0IHdhcyBwYXNzZWQgdG8KKysgICAg IGBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5Jy4gICovCisrCisrICBzdHJ1Y3QgdmFsdWUg KigqbWFrZV92YWx1ZSkgKHN0cnVjdCBnZGJhcmNoICphcmNoLAorKwkJCSAgICAgICBzdHJ1Y3Qg aW50ZXJuYWx2YXIgKnZhciwKKysJCQkgICAgICAgdm9pZCAqZGF0YSk7CisrCisrICAvKiBVcGRh dGUgdGhlIGFnZW50IGV4cHJlc3Npb24gRVhQUiB3aXRoIGJ5dGVjb2RlIHRvIGNvbXB1dGUgdGhl CisrICAgICB2YWx1ZS4gIFZBTFVFIGlzIHRoZSBhZ2VudCB2YWx1ZSB3ZSBhcmUgdXBkYXRpbmcu ICBUaGUgREFUQQorKyAgICAgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gaXMgdGhl IHNhbWUgYXJndW1lbnQgdGhhdCB3YXMKKysgICAgIHBhc3NlZCB0byBgY3JlYXRlX2ludGVybmFs dmFyX3R5cGVfbGF6eScuICBJZiB0aGlzIHBvaW50ZXIgaXMKKysgICAgIE5VTEwsIHRoZW4gdGhl IGludGVybmFsdmFyIGNhbm5vdCBiZSBjb21waWxlZCB0byBhbiBhZ2VudAorKyAgICAgZXhwcmVz c2lvbi4gICovCisrCisrICB2b2lkICgqY29tcGlsZV90b19heCkgKHN0cnVjdCBpbnRlcm5hbHZh ciAqdmFyLAorKwkJCSBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciwKKysJCQkgc3RydWN0IGF4c192 YWx1ZSAqdmFsdWUsCisrCQkJIHZvaWQgKmRhdGEpOworKworKyAgLyogSWYgbm9uLU5VTEwsIHRo aXMgaXMgY2FsbGVkIHRvIGRlc3Ryb3kgREFUQS4gIFRoZSBEQVRBIGFyZ3VtZW50CisrICAgICBw YXNzZWQgdG8gdGhpcyBmdW5jdGlvbiBpcyB0aGUgc2FtZSBhcmd1bWVudCB0aGF0IHdhcyBwYXNz ZWQgdG8KKysgICAgIGBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5Jy4gICovCisrCisrICB2 b2lkICgqZGVzdHJveSkgKHZvaWQgKmRhdGEpOworK307CisrCisgZXh0ZXJuIHN0cnVjdCBpbnRl cm5hbHZhciAqCistICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5IChjaGFyICpuYW1lLCBp bnRlcm5hbHZhcl9tYWtlX3ZhbHVlIGZ1bik7CisrY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6 eSAoY29uc3QgY2hhciAqbmFtZSwKKysJCQkgICAgICBjb25zdCBzdHJ1Y3QgaW50ZXJuYWx2YXJf ZnVuY3MgKmZ1bmNzLAorKwkJCSAgICAgIHZvaWQgKmRhdGEpOworKworKy8qIENvbXBpbGUgYW4g aW50ZXJuYWwgdmFyaWFibGUgdG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4gIFZBUiBpcyB0aGUKKysg ICB2YXJpYWJsZSB0byBjb21waWxlOyBFWFBSIGFuZCBWQUxVRSBhcmUgdGhlIGFnZW50IGV4cHJl c3Npb24gd2UgYXJlCisrICAgdXBkYXRpbmcuICBUaGlzIHdpbGwgcmV0dXJuIDAgaWYgdGhlcmUg aXMgbm8ga25vd24gd2F5IHRvIGNvbXBpbGUKKysgICBWQVIsIGFuZCAxIGlmIFZBUiB3YXMgc3Vj Y2Vzc2Z1bGx5IGNvbXBpbGVkLiAgSXQgbWF5IGFsc28gdGhyb3cgYW4KKysgICBleGNlcHRpb24g b24gZXJyb3IuICAqLworKworK2V4dGVybiBpbnQgY29tcGlsZV9pbnRlcm5hbHZhcl90b19heCAo c3RydWN0IGludGVybmFsdmFyICp2YXIsCisrCQkJCSAgICAgIHN0cnVjdCBhZ2VudF9leHByICpl eHByLAorKwkJCQkgICAgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSk7CisgCisgZXh0ZXJuIHN0 cnVjdCBpbnRlcm5hbHZhciAqbG9va3VwX2ludGVybmFsdmFyIChjb25zdCBjaGFyICpuYW1lKTsK KyAKK2RpZmYgLS1naXQgYS9nZGIvd2luZG93cy10ZGVwLmMgYi9nZGIvd2luZG93cy10ZGVwLmMK K2luZGV4IDMxZGRkMTQuLmIzNmU0Y2EgMTAwNjQ0CistLS0gYS9nZGIvd2luZG93cy10ZGVwLmMK KysrKyBiL2dkYi93aW5kb3dzLXRkZXAuYworQEAgLTI2OCw3ICsyNjgsNyBAQCBzdGF0aWMgc3Ry dWN0IGx2YWxfZnVuY3MgdGxiX3ZhbHVlX2Z1bmNzID0KKyAgICBpZiB0aGVyZSdzIG5vIG9iamVj dCBhdmFpbGFibGUuICAqLworIAorIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgorLXRsYl9tYWtlX3Zh bHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IGludGVybmFsdmFyICp2YXIpCisr dGxiX21ha2VfdmFsdWUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgaW50ZXJuYWx2 YXIgKnZhciwgdm9pZCAqaWdub3JlKQorIHsKKyAgIGlmICh0YXJnZXRfaGFzX3N0YWNrICYmICFw dGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxsX3B0aWQpKQorICAgICB7CitAQCAtNDI1LDYg KzQyNSwxMyBAQCBpbml0X3czMl9jb21tYW5kX2xpc3QgKHZvaWQpCisgICAgIH0KKyB9CisgCisr c3RhdGljIGNvbnN0IHN0cnVjdCBpbnRlcm5hbHZhcl9mdW5jcyB0bGJfZnVuY3MgPQorK3sKKysg IHRsYl9tYWtlX3ZhbHVlLAorKyAgTlVMTCwKKysgIE5VTEwKKyt9OworKworIHZvaWQKKyBfaW5p dGlhbGl6ZV93aW5kb3dzX3RkZXAgKHZvaWQpCisgeworQEAgLTQ1MSw1ICs0NTgsNSBAQCBldmVu IGlmIHRoZWlyIG1lYW5pbmcgaXMgdW5rbm93bi4iKSwKKyAgICAgIHZhbHVlIHdpdGggYSB2b2lk IHR5cGVkIHZhbHVlLCBhbmQgd2hlbiB3ZSBnZXQgaGVyZSwgZ2RiYXJjaAorICAgICAgaXNuJ3Qg aW5pdGlhbGl6ZWQgeWV0LiAgQXQgdGhpcyBwb2ludCwgd2UncmUgcXVpdGUgc3VyZSB0aGVyZQor ICAgICAgaXNuJ3QgYW5vdGhlciBjb252ZW5pZW5jZSB2YXJpYWJsZSBvZiB0aGUgc2FtZSBuYW1l LiAgKi8KKy0gIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfdGxiIiwgdGxiX21ha2Vf dmFsdWUpOworKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl90bGIiLCAmdGxiX2Z1 bmNzLCBOVUxMKTsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL3hjb2ZmcmVhZC5jIGIvZ2RiL3hjb2Zm cmVhZC5jCitpbmRleCAwODEwODBjLi5mNzFkYmZlIDEwMDY0NAorLS0tIGEvZ2RiL3hjb2ZmcmVh ZC5jCisrKysgYi9nZGIveGNvZmZyZWFkLmMKK0BAIC0zMDkwLDYgKzMwOTAsNyBAQCBzdGF0aWMg Y29uc3Qgc3RydWN0IHN5bV9mbnMgeGNvZmZfc3ltX2ZucyA9CisgICBkZWZhdWx0X3N5bWZpbGVf c2VnbWVudHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KKyAg IGFpeF9wcm9jZXNzX2xpbmVub3MsCisgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJl bG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCisrICBOVUxMLAkJCQkvKiBzeW1fcHJvYmVfZm5z ICovCisgICAmcHN5bV9mdW5jdGlvbnMKKyB9OworIAoKZGlmZiAtLWdpdCBhL2dkYi1waHlzbmFt ZS1wcjExNzM0LTFvZjIucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIxMTczNC0xb2YyLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmE2OWI3Li4wMDAwMDAwCi0tLSBhL2dkYi1w aHlzbmFtZS1wcjExNzM0LTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTkgKzAsMCBA QAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMTIvbXNnMDAyNjMu aHRtbAotCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvY3Atc3VwcG9ydC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9jcC1zdXBwb3J0LmMJMjAx MS0wMi0wNiAyMzoxMjoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2 L2dkYi9jcC1zdXBwb3J0LmMJMjAxMS0wMi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKLUBA IC0zNSw2ICszNSw3IEBACi0gI2luY2x1ZGUgImV4Y2VwdGlvbnMuaCIKLSAjaW5jbHVkZSAiZXhw cmVzc2lvbi5oIgotICNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJsYW5ndWFnZS5oIgot IAotICNpbmNsdWRlICJzYWZlLWN0eXBlLmgiCi0gCi1AQCAtOTM2LDcgKzkzNyw4IEBAIG1ha2Vf c3ltYm9sX292ZXJsb2FkX2xpc3RfcXVhbGlmaWVkIChjb24KLSAgIEFMTF9PQkpGSUxFUyAob2Jq ZmlsZSkKLSAgIHsKLSAgICAgaWYgKG9iamZpbGUtPnNmKQotLSAgICAgIG9iamZpbGUtPnNmLT5x Zi0+ZXhwYW5kX3N5bXRhYnNfZm9yX2Z1bmN0aW9uIChvYmpmaWxlLCBmdW5jX25hbWUpOwotKyAg ICAgIG9iamZpbGUtPnNmLT5xZi0+ZXhwYW5kX3N5bXRhYnNfZm9yX2Z1bmN0aW9uIChvYmpmaWxl LCBmdW5jX25hbWUsCi0rCQkJCQkJICAgIGxhbmd1YWdlX2NwbHVzKTsKLSAgIH0KLSAKLSAgIC8q IFNlYXJjaCB1cHdhcmRzIGZyb20gY3VycmVudGx5IHNlbGVjdGVkIGZyYW1lIChzbyB0aGF0IHdl IGNhbgotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL2R3YXJmMnJlYWQuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAyMDYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEt MDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9n ZGIvZHdhcmYycmVhZC5jCTIwMTEtMDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCi1AQCAt MjM3Myw3ICsyMzczLDggQEAgZHcyX2xvb2t1cF9zeW10YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpm aQotIAotIHN0YXRpYyBzdHJ1Y3Qgc3ltdGFiICoKLSBkdzJfbG9va3VwX3N5bWJvbCAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIGludCBibG9ja19pbmRleCwKLS0JCSAgIGNvbnN0IGNoYXIgKm5h bWUsIGRvbWFpbl9lbnVtIGRvbWFpbikKLSsJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGRvbWFpbl9l bnVtIGRvbWFpbiwKLSsJCSAgIGVudW0gbGFuZ3VhZ2UgbGFuZ3VhZ2UpCi0gewotICAgLyogV2Ug ZG8gYWxsIHRoZSB3b3JrIGluIHRoZSBwcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgaG9vawot ICAgICAgaW5zdGVhZC4gICovCi1AQCAtMjQ0OSw3ICsyNDUwLDggQEAgZHcyX3JlbG9jYXRlIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgcwotIAotIHN0YXRpYyB2b2lkCi0gZHcyX2V4cGFuZF9z eW10YWJzX2Zvcl9mdW5jdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0tCQkJCSBjb25z dCBjaGFyICpmdW5jX25hbWUpCi0rCQkJCSBjb25zdCBjaGFyICpmdW5jX25hbWUsCi0rCQkJCSBl bnVtIGxhbmd1YWdlIGxhbmd1YWdlKQotIHsKLSAgIGR3Ml9kb19leHBhbmRfc3ltdGFic19tYXRj aGluZyAob2JqZmlsZSwgZnVuY19uYW1lKTsKLSB9Ci1AQCAtMjUwOSw3ICsyNTExLDggQEAgZHcy X2V4cGFuZF9zeW10YWJzX3dpdGhfZmlsZW5hbWUgKHN0cnVjdAotIH0KLSAKLSBzdGF0aWMgY29u c3QgY2hhciAqCi0tZHcyX2ZpbmRfc3ltYm9sX2ZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBjb25zdCBjaGFyICpuYW1lKQotK2R3Ml9maW5kX3N5bWJvbF9maWxlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSwKLSsJCSAgICAgIGVudW0gbGFuZ3VhZ2UgbGFu Z3VhZ2UpCi0gewotICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1OwotICAgb2Zm c2V0X3R5cGUgKnZlYzsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9saW5lc3BlYy5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIwNi5vcmlnL2dkYi9saW5lc3BlYy5j CTIwMTEtMDItMDYgMjM6MTI6MTYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEx MDIwNi9nZGIvbGluZXNwZWMuYwkyMDExLTAyLTA2IDIzOjEyOjI2LjAwMDAwMDAwMCArMDEwMAot QEAgLTEyMjYsNyArMTIyNiw3IEBAIGRlY29kZV9vYmpjIChjaGFyICoqYXJncHRyLCBpbnQgZnVu Zmlyc3QKLSAKLSBzdGF0aWMgc3RydWN0IHN5bXRhYnNfYW5kX2xpbmVzCi0gZGVjb2RlX2NvbXBv dW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZmlyc3RsaW5lLCBjaGFyICoqKmNhbm9uaWNhbCwK LS0JCSBjaGFyICpzYXZlZF9hcmcsIGNoYXIgKnAsIGludCAqbm90X2ZvdW5kX3B0cikKLSsJCSBj aGFyICp0aGVfcmVhbF9zYXZlZF9hcmcsIGNoYXIgKnAsIGludCAqbm90X2ZvdW5kX3B0cikKLSB7 Ci0gICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgdmFsdWVzOwotICAgY2hhciAqcDI7Ci1AQCAt MTIzNyw3ICsxMjM3LDIzIEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1 bmYKLSAgIHN0cnVjdCBzeW1ib2wgKnN5bV9jbGFzczsKLSAgIHN0cnVjdCB0eXBlICp0OwotICAg Y2hhciAqc2F2ZWRfamF2YV9hcmdwdHIgPSBOVUxMOwotKyAgY2hhciAqc2F2ZWRfYXJnOwotIAot KyAgLyogVEhFX1JFQUxfU0FWRURfQVJHIGNhbm5vdCBiZSBhbHRlcmVkLCBzbyBtYWtlIGEgY29w eSB0aGF0IGNhbiBiZS4gICovCi0rICBzYXZlZF9hcmcgPSBhbGxvY2EgKHN0cmxlbiAodGhlX3Jl YWxfc2F2ZWRfYXJnKSArIDEpOwotKyAgc3RyY3B5IChzYXZlZF9hcmcsIHRoZV9yZWFsX3NhdmVk X2FyZyk7Ci0rCi0rICAvKiBJZiB0aGUgdXNlciBzcGVjaWZpZWQgIidmb286OmJhcihiYXopJyIg KG5vdGUgdGhlIHF1b3RlcyAtLSBvZnRlbgotKyAgICAgYWRkZWQgdG8gd29ya2Fyb3VuZCBjb21w bGV0ZXIgaXNzdWVzKSAtLSBzYXZlZF9hcmcgd2lsbCBiZQotKyAgICAgZW5jYXBzdWxhdGVkIGlu IHNpbmdsZS1xdW90ZXMuICBUaGV5IGFyZSBzdXBlcmZsdW91cywgc28ganVzdCBzdHJpcAotKyAg ICAgdGhlbSBvZmYuICAqLwotKyAgaWYgKCpzYXZlZF9hcmcgPT0gJ1wnJykKLSsgICAgewotKyAg ICAgIGNoYXIgKmVuZCA9IHNraXBfcXVvdGVkIChzYXZlZF9hcmcpOwotKyAgICAgIG1lbW1vdmUg KHNhdmVkX2FyZywgc2F2ZWRfYXJnICsgMSwgZW5kIC0gc2F2ZWRfYXJnKTsKLSsgICAgICBtZW1t b3ZlIChlbmQgLSAyLCBlbmQsIHN0cmxlbiAoc2F2ZWRfYXJnKSArIDEpOwotKyAgICB9Ci0rICAg ICAgCi0gICAvKiBGaXJzdCBjaGVjayBmb3IgImdsb2JhbCIgbmFtZXNwYWNlIHNwZWNpZmljYXRp b24sIG9mIHRoZSBmb3JtCi0gICAgICAiOjpmb28iLiAgSWYgZm91bmQsIHNraXAgb3ZlciB0aGUg Y29sb25zIGFuZCBqdW1wIHRvIG5vcm1hbAotICAgICAgc3ltYm9sIHByb2Nlc3NpbmcuICBJLmUu IHRoZSB3aG9sZSBsaW5lIHNwZWNpZmljYXRpb24gc3RhcnRzIHdpdGgKLUBAIC0xNDg5LDcgKzE1 MDUsNyBAQCBkZWNvZGVfY29tcG91bmQgKGNoYXIgKiphcmdwdHIsIGludCBmdW5mCi0gICAgICB1 cC4gIFRoZSBxdW90ZXMgYXJlIGltcG9ydGFudCBpZiBjb3B5IGlzIGVtcHR5LiAgKi8KLSAgIGlm IChub3RfZm91bmRfcHRyKQotICAgICAqbm90X2ZvdW5kX3B0ciA9IDE7Ci0tICBjcGx1c3BsdXNf ZXJyb3IgKHNhdmVkX2FyZywKLSsgIGNwbHVzcGx1c19lcnJvciAodGhlX3JlYWxfc2F2ZWRfYXJn LAotIAkJICAgIkNhbid0IGZpbmQgbWVtYmVyIG9mIG5hbWVzcGFjZSwgIgotIAkJICAgImNsYXNz LCBzdHJ1Y3QsIG9yIHVuaW9uIG5hbWVkIFwiJXNcIlxuIiwKLSAJCSAgIGNvcHkpOwotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3BzeW10YWIuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjIuNTAuMjAxMTAyMDYub3JpZy9nZGIvcHN5bXRhYi5jCTIwMTEtMDItMDYgMjM6MTI6MTYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvcHN5bXRhYi5jCTIwMTEt MDItMDYgMjM6MTI6NTQuMDAwMDAwMDAwICswMTAwCi1AQCAtMzMsNiArMzMsOCBAQAotICNpbmNs dWRlICJyZWFkbGluZS9yZWFkbGluZS5oIgotICNpbmNsdWRlICJnZGJfcmVnZXguaCIKLSAjaW5j bHVkZSAiZGljdGlvbmFyeS5oIgotKyNpbmNsdWRlICJsYW5ndWFnZS5oIgotKyNpbmNsdWRlICJj cC1zdXBwb3J0LmgiCi0gCi0gI2lmbmRlZiBERVZfVFRZCi0gI2RlZmluZSBERVZfVFRZICIvZGV2 L3R0eSIKLUBAIC01NSw3ICs1Nyw4IEBAIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKm1h dGNoX3BhcnQKLSAKLSBzdGF0aWMgc3RydWN0IHBhcnRpYWxfc3ltYm9sICpsb29rdXBfcGFydGlh bF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqLAotIAkJCQkJCSAgICAgY29uc3QgY2hh ciAqLCBpbnQsCi0tCQkJCQkJICAgICBkb21haW5fZW51bSk7Ci0rCQkJCQkJICAgICBkb21haW5f ZW51bSwKLSsJCQkJCQkgICAgIGVudW0gbGFuZ3VhZ2UpOwotIAotIHN0YXRpYyBjaGFyICpwc3lt dGFiX3RvX2Z1bGxuYW1lIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzKTsKLSAKLUBAIC00MTgs MTUgKzQyMSwzNSBAQCBmaXh1cF9wc3ltYm9sX3NlY3Rpb24gKHN0cnVjdCBwYXJ0aWFsX3N5Ci0g c3RhdGljIHN0cnVjdCBzeW10YWIgKgotIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCQkgICAgaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFy ICpuYW1lLAotLQkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0rCQkJICAgIGNvbnN0 IGRvbWFpbl9lbnVtIGRvbWFpbiwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkKLSB7Ci0gICBzdHJ1 Y3QgcGFydGlhbF9zeW10YWIgKnBzOwotICAgY29uc3QgaW50IHBzeW10YWJfaW5kZXggPSAoYmxv Y2tfaW5kZXggPT0gR0xPQkFMX0JMT0NLID8gMSA6IDApOwotIAotICAgQUxMX09CSkZJTEVfUFNZ TVRBQlMgKG9iamZpbGUsIHBzKQotICAgewotLSAgICBpZiAoIXBzLT5yZWFkaW4gJiYgbG9va3Vw X3BhcnRpYWxfc3ltYm9sIChwcywgbmFtZSwgcHN5bXRhYl9pbmRleCwgZG9tYWluKSkKLS0gICAg ICByZXR1cm4gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSsgICAgaWYgKCFwcy0+cmVhZGluCi0r CSYmIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIG5hbWUsIHBzeW10YWJfaW5kZXgsIGRvbWFp biwgbGFuZ3VhZ2UpKQotKyAgICAgIHsKLSsJc3RydWN0IHN5bWJvbCAqc3ltOwotKwlzdHJ1Y3Qg c3ltdGFiICpzdGFiID0gUFNZTVRBQl9UT19TWU1UQUIgKHBzKTsKLSsJc3ltID0gTlVMTDsKLSsK LSsJLyogU29tZSBjYXV0aW9uIG11c3QgYmUgb2JzZXJ2ZWQgd2l0aCBvdmVybG9hZGVkIGZ1bmN0 aW9ucwotKwkgICBhbmQgbWV0aG9kcywgc2luY2UgdGhlIHBzeW10YWIgd2lsbCBub3QgY29udGFp biBhbnkgb3ZlcmxvYWQKLSsJICAgaW5mb3JtYXRpb24gKGJ1dCBOQU1FIG1pZ2h0IGNvbnRhaW4g aXQpLiAgKi8KLSsJaWYgKHN0YWItPnByaW1hcnkpCi0rCSAgewotKwkgICAgc3RydWN0IGJsb2Nr dmVjdG9yICpidiA9IEJMT0NLVkVDVE9SIChzdGFiKTsKLSsJICAgIHN0cnVjdCBibG9jayAqYmxv Y2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLSsJICAgIHN5bSA9IGxv b2t1cF9ibG9ja19zeW1ib2wgKGJsb2NrLCBuYW1lLCBkb21haW4pOwotKwkgIH0KLSsKLSsJaWYg KHN5bSAmJiBzdHJjbXBfaXcgKFNZTUJPTF9TRUFSQ0hfTkFNRSAoc3ltKSwgbmFtZSkgPT0gMCkK LSsJICByZXR1cm4gc3RhYjsKLSsKLSsJLyogS2VlcCBsb29raW5nIHRocm91Z2ggb3RoZXIgcHN5 bXRhYnMuICAqLwotKyAgICAgIH0KLSAgIH0KLSAKLSAgIHJldHVybiBOVUxMOwotQEAgLTUxOSwy MiArNTQyLDU4IEBAIHByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZ19wc3ltdGFicyAoc3QKLSAg IC8qIE5vdGhpbmcuICAqLwotIH0KLSAKLSsvKiBSZXR1cm5zIHRoZSBuYW1lIHVzZWQgdG8gc2Vh cmNoIHBzeW10YWJzLiAgVW5saWtlIHN5bXRhYnMsIHBzeW10YWJzIGRvCi0rICAgbm90IGNvbnRh aW4gYW55IG1ldGhvZC9mdW5jdGlvbiBpbnN0YW5jZSBpbmZvcm1hdGlvbiAoc2luY2UgdGhpcyB3 b3VsZAotKyAgIGZvcmNlIHJlYWRpbmcgdHlwZSBpbmZvcm1hdGlvbiB3aGlsZSByZWFkaW5nIHBz eW10YWJzKS4gIFRoZXJlZm9yZSwKLSsgICBpZiBOQU1FIGNvbnRhaW5zIG92ZXJsb2FkIGluZm9y bWF0aW9uLCBpdCBtdXN0IGJlIHN0cmlwcGVkIGJlZm9yZSBzZWFyY2hpbmcKLSsgICBwc3ltdGFi cy4KLSsKLSsgICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBmcmVlaW5nIHRoZSByZXR1 cm4gcmVzdWx0LiAgKi8KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rcHN5bXRhYl9zZWFyY2hf bmFtZSAoY29uc3QgY2hhciAqbmFtZSwgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSkKLSt7Ci0rICBz d2l0Y2ggKGxhbmd1YWdlKQotKyAgICB7Ci0rICAgIGNhc2UgbGFuZ3VhZ2VfY3BsdXM6Ci0rICAg IGNhc2UgbGFuZ3VhZ2VfamF2YToKLSsgICAgICB7Ci0rICAgICAgIGlmIChzdHJjaHIgKG5hbWUs ICcoJykpCi0rICAgICAgICAgewotKyAgICAgICAgICAgY2hhciAqcmV0ID0gY3BfcmVtb3ZlX3Bh cmFtcyAobmFtZSk7Ci0rICAgICAgICAgICBpZiAocmV0KQotKyAgICAgICAgICAgICByZXR1cm4g cmV0OwotKyAgICAgICAgIH0KLSsgICAgICB9Ci0rCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJl YWs7Ci0rICAgIH0KLSsKLSsgIHJldHVybiB4c3RyZHVwIChuYW1lKTsKLSt9Ci0rCi0gLyogTG9v aywgaW4gcGFydGlhbF9zeW10YWIgUFNULCBmb3Igc3ltYm9sIHdob3NlIG5hdHVyYWwgbmFtZSBp cyBOQU1FLgotICAgIENoZWNrIHRoZSBnbG9iYWwgc3ltYm9scyBpZiBHTE9CQUwsIHRoZSBzdGF0 aWMgc3ltYm9scyBpZiBub3QuICAqLwotIAotIHN0YXRpYyBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wg KgotIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QsIGNv bnN0IGNoYXIgKm5hbWUsCi0tCQkgICAgICAgaW50IGdsb2JhbCwgZG9tYWluX2VudW0gZG9tYWlu KQotKwkJICAgICAgIGludCBnbG9iYWwsIGRvbWFpbl9lbnVtIGRvbWFpbiwgZW51bSBsYW5ndWFn ZSBsYW5ndWFnZSkKLSB7Ci0gICBzdHJ1Y3QgcGFydGlhbF9zeW1ib2wgKipzdGFydCwgKipwc3lt OwotICAgc3RydWN0IHBhcnRpYWxfc3ltYm9sICoqdG9wLCAqKnJlYWxfdG9wLCAqKmJvdHRvbSwg KipjZW50ZXI7Ci0gICBpbnQgbGVuZ3RoID0gKGdsb2JhbCA/IHBzdC0+bl9nbG9iYWxfc3ltcyA6 IHBzdC0+bl9zdGF0aWNfc3ltcyk7Ci0gICBpbnQgZG9fbGluZWFyX3NlYXJjaCA9IDE7Ci0rICBj b25zdCBjaGFyICpzZWFyY2hfbmFtZTsKLSsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotIAot ICAgaWYgKGxlbmd0aCA9PSAwKQotICAgICB7Ci0gICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICAg fQotKwotKyAgc2VhcmNoX25hbWUgPSBwc3ltdGFiX3NlYXJjaF9uYW1lIChuYW1lLCBsYW5ndWFn ZSk7Ci0rICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwgKHZvaWQgKikgc2VhcmNoX25h bWUpOwotICAgc3RhcnQgPSAoZ2xvYmFsID8KLSAJICAgcHN0LT5vYmpmaWxlLT5nbG9iYWxfcHN5 bWJvbHMubGlzdCArIHBzdC0+Z2xvYmFsc19vZmZzZXQgOgotIAkgICBwc3QtPm9iamZpbGUtPnN0 YXRpY19wc3ltYm9scy5saXN0ICsgcHN0LT5zdGF0aWNzX29mZnNldCk7Ci1AQCAtNTYzLDcgKzYy Miw4IEBAIGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAoc3RydWN0IHBhcnRpYWxfc3kKLSAJICAgIHsK LSAJICAgICAgZG9fbGluZWFyX3NlYXJjaCA9IDE7Ci0gCSAgICB9Ci0tCSAgaWYgKHN0cmNtcF9p d19vcmRlcmVkIChTWU1CT0xfU0VBUkNIX05BTUUgKCpjZW50ZXIpLCBuYW1lKSA+PSAwKQotKwkg IGlmIChzdHJjbXBfaXdfb3JkZXJlZCAoU1lNQk9MX1NFQVJDSF9OQU1FICgqY2VudGVyKSwKLSsJ CQkJIHNlYXJjaF9uYW1lKSA+PSAwKQotIAkgICAgewotIAkgICAgICB0b3AgPSBjZW50ZXI7Ci0g CSAgICB9Ci1AQCAtNTc3LDExICs2MzcsMTQgQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1 Y3QgcGFydGlhbF9zeQotIAkJCV8oImZhaWxlZCBpbnRlcm5hbCBjb25zaXN0ZW5jeSBjaGVjayIp KTsKLSAKLSAgICAgICB3aGlsZSAodG9wIDw9IHJlYWxfdG9wCi0tCSAgICAgJiYgU1lNQk9MX01B VENIRVNfU0VBUkNIX05BTUUgKCp0b3AsIG5hbWUpKQotKwkgICAgICYmIFNZTUJPTF9NQVRDSEVT X1NFQVJDSF9OQU1FICgqdG9wLCBzZWFyY2hfbmFtZSkpCi0gCXsKLSAJICBpZiAoc3ltYm9sX21h dGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKCp0b3ApLAotIAkJCQkgICAgIFNZTUJPTF9E T01BSU4gKCp0b3ApLCBkb21haW4pKQotLQkgICAgcmV0dXJuICgqdG9wKTsKLSsJICAgIHsKLSsJ ICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwkgICAgICByZXR1cm4gKCp0b3ApOwotKwkg ICAgfQotIAkgIHRvcCsrOwotIAl9Ci0gICAgIH0KLUBAIC01OTUsMTEgKzY1OCwxNSBAQCBsb29r dXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5Ci0gCXsKLSAJICBpZiAoc3ltYm9s X21hdGNoZXNfZG9tYWluIChTWU1CT0xfTEFOR1VBR0UgKCpwc3ltKSwKLSAJCQkJICAgICBTWU1C T0xfRE9NQUlOICgqcHN5bSksIGRvbWFpbikKLS0JICAgICAgJiYgU1lNQk9MX01BVENIRVNfU0VB UkNIX05BTUUgKCpwc3ltLCBuYW1lKSkKLS0JICAgIHJldHVybiAoKnBzeW0pOwotKwkgICAgICAm JiBTWU1CT0xfTUFUQ0hFU19TRUFSQ0hfTkFNRSAoKnBzeW0sIHNlYXJjaF9uYW1lKSkKLSsJICAg IHsKLSsJICAgICAgZG9fY2xlYW51cHMgKGNsZWFudXApOwotKwkgICAgICByZXR1cm4gKCpwc3lt KTsKLSsJICAgIH0KLSAJfQotICAgICB9Ci0gCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0g ICByZXR1cm4gKE5VTEwpOwotIH0KLSAKLUBAIC05MTEsNyArOTc4LDggQEAgZHVtcF9wc3ltdGFi c19mb3Jfb2JqZmlsZSAoc3RydWN0IG9iamZpbAotICAgIGJ5IG1hdGNoaW5nIEZVTkNfTkFNRS4g IE1ha2Ugc3VyZSB3ZSByZWFkIHRoYXQgc3ltYm9sIHRhYmxlIGluLiAgKi8KLSAKLSBzdGF0aWMg dm9pZAotLXJlYWRfc3ltdGFic19mb3JfZnVuY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBjb25zdCBjaGFyICpmdW5jX25hbWUpCi0rcmVhZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSwKLSsJCQkgICBlbnVt IGxhbmd1YWdlIGxhbmd1YWdlKQotIHsKLSAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHM7Ci0g Ci1AQCAtOTIwLDkgKzk4OCw5IEBAIHJlYWRfc3ltdGFic19mb3JfZnVuY3Rpb24gKHN0cnVjdCBv YmpmaWwKLSAgICAgaWYgKHBzLT5yZWFkaW4pCi0gICAgICAgY29udGludWU7Ci0gCi0tICAgIGlm ICgobG9va3VwX3BhcnRpYWxfc3ltYm9sIChwcywgZnVuY19uYW1lLCAxLCBWQVJfRE9NQUlOKQot KyAgICBpZiAoKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHMsIGZ1bmNfbmFtZSwgMSwgVkFSX0RP TUFJTiwgbGFuZ3VhZ2UpCi0gCSAhPSBOVUxMKQotLQl8fCAobG9va3VwX3BhcnRpYWxfc3ltYm9s IChwcywgZnVuY19uYW1lLCAwLCBWQVJfRE9NQUlOKQotKwl8fCAobG9va3VwX3BhcnRpYWxfc3lt Ym9sIChwcywgZnVuY19uYW1lLCAwLCBWQVJfRE9NQUlOLCBsYW5ndWFnZSkKLSAJICAgICE9IE5V TEwpKQotICAgICAgIHBzeW10YWJfdG9fc3ltdGFiIChwcyk7Ci0gICB9Ci1AQCAtMTA0MiwxMyAr MTExMCwxNCBAQCBwc3ltdGFiX3RvX2Z1bGxuYW1lIChzdHJ1Y3QgcGFydGlhbF9zeW10Ci0gfQot IAotIHN0YXRpYyBjb25zdCBjaGFyICoKLS1maW5kX3N5bWJvbF9maWxlX2Zyb21fcGFydGlhbCAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCi0rZmluZF9zeW1ib2xf ZmlsZV9mcm9tX3BhcnRpYWwgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpu YW1lLAotKwkJCSAgICAgICBlbnVtIGxhbmd1YWdlIGxhbmd1YWdlKQotIHsKLSAgIHN0cnVjdCBw YXJ0aWFsX3N5bXRhYiAqcHN0OwotIAotICAgQUxMX09CSkZJTEVfUFNZTVRBQlMgKG9iamZpbGUs IHBzdCkKLSAgICAgewotLSAgICAgIGlmIChsb29rdXBfcGFydGlhbF9zeW1ib2wgKHBzdCwgbmFt ZSwgMSwgVkFSX0RPTUFJTikpCi0rICAgICAgaWYgKGxvb2t1cF9wYXJ0aWFsX3N5bWJvbCAocHN0 LCBuYW1lLCAxLCBWQVJfRE9NQUlOLCBsYW5ndWFnZSkpCi0gCXJldHVybiBwc3QtPmZpbGVuYW1l OwotICAgICB9Ci0gICByZXR1cm4gTlVMTDsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dk Yi9zeW1maWxlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2Ri L3N5bWZpbGUuaAkyMDExLTAyLTA2IDIzOjEyOjE2LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuNTAuMjAxMTAyMDYvZ2RiL3N5bWZpbGUuaAkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAw MCArMDEwMAotQEAgLTE2NywxNCArMTY3LDE1IEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rp b25zCi0gICAvKiBDaGVjayB0byBzZWUgaWYgdGhlIHN5bWJvbCBpcyBkZWZpbmVkIGluIGEgInBh cnRpYWwiIHN5bWJvbCB0YWJsZQotICAgICAgb2YgT0JKRklMRS4gIEtJTkQgc2hvdWxkIGJlIGVp dGhlciBHTE9CQUxfQkxPQ0sgb3IgU1RBVElDX0JMT0NLLAotICAgICAgZGVwZW5kaW5nIG9uIHdo ZXRoZXIgd2Ugd2FudCB0byBzZWFyY2ggZ2xvYmFsIHN5bWJvbHMgb3Igc3RhdGljCi0tICAgICBz eW1ib2xzLiAgTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgc3ltYm9sIHRvIGxvb2sgZm9yLiAgRE9N QUlOCi0tICAgICBpbmRpY2F0ZXMgd2hhdCBzb3J0IG9mIHN5bWJvbCB0byBzZWFyY2ggZm9yLgot KyAgICAgc3ltYm9scy4gIE5BTUUgKHZhbGlkIGluIExBTkdVQUdFKSBpcyB0aGUgbmFtZSBvZiB0 aGUgc3ltYm9sIHRvIGxvb2sgZm9yLgotKyAgICAgRE9NQUlOIGluZGljYXRlcyB3aGF0IHNvcnQg b2Ygc3ltYm9sIHRvIHNlYXJjaCBmb3IuCi0gCi0gICAgICBSZXR1cm5zIHRoZSBuZXdseS1leHBh bmRlZCBzeW1ib2wgdGFibGUgaW4gd2hpY2ggdGhlIHN5bWJvbCBpcwotICAgICAgZGVmaW5lZCwg b3IgTlVMTCBpZiBubyBzdWNoIHN5bWJvbCB0YWJsZSBleGlzdHMuICAqLwotICAgc3RydWN0IHN5 bXRhYiAqKCpsb29rdXBfc3ltYm9sKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCSAg IGludCBraW5kLCBjb25zdCBjaGFyICpuYW1lLAotLQkJCQkgICBkb21haW5fZW51bSBkb21haW4p OwotKwkJCQkgICBkb21haW5fZW51bSBkb21haW4sCi0rCQkJCSAgIGVudW0gbGFuZ3VhZ2UgbGFu Z3VhZ2UpOwotIAotICAgLyogVGhpcyBpcyBjYWxsZWQgdG8gZXhwYW5kIHN5bWJvbCB0YWJsZXMg YmVmb3JlIGxvb2tpbmcgdXAgYQotICAgICAgc3ltYm9sLiAgQSBiYWNrZW5kIGNhbiBjaG9vc2Ug dG8gaW1wbGVtZW50IHRoaXMgYW5kIHRoZW4gaGF2ZSBpdHMKLUBAIC0yMDAsMTAgKzIwMSwxMSBA QCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucwotIAkJICAgIHN0cnVjdCBzZWN0aW9uX29m ZnNldHMgKm5ld19vZmZzZXRzLAotIAkJICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKmRlbHRh KTsKLSAKLS0gIC8qIEZpbmQgYWxsIHRoZSBzeW1ib2xzIGluIE9CSkZJTEUgbmFtZWQgRlVOQ19O QU1FLCBhbmQgZW5zdXJlIHRoYXQKLS0gICAgIHRoZSBjb3JyZXNwb25kaW5nIHN5bWJvbCB0YWJs ZXMgYXJlIGxvYWRlZC4gICovCi0rICAvKiBGaW5kIGFsbCB0aGUgc3ltYm9scyBpbiBPQkpGSUxF IG5hbWVkIEZVTkNfTkFNRSAodmFsaWQgaW4gTEFOR1VBR0UpLAotKyAgICAgYW5kIGVuc3VyZSB0 aGF0IHRoZSBjb3JyZXNwb25kaW5nIHN5bWJvbCB0YWJsZXMgYXJlIGxvYWRlZC4gICovCi0gICB2 b2lkICgqZXhwYW5kX3N5bXRhYnNfZm9yX2Z1bmN0aW9uKSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCi0tCQkJCSAgICAgICBjb25zdCBjaGFyICpmdW5jX25hbWUpOwotKwkJCQkgICAgICAgY29u c3QgY2hhciAqZnVuY19uYW1lLAotKwkJCQkgICAgICAgZW51bSBsYW5ndWFnZSBsYW5ndWFnZSk7 Ci0gCi0gICAvKiBSZWFkIGFsbCBzeW1ib2wgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCBPQkpGSUxF LiAgKi8KLSAgIHZvaWQgKCpleHBhbmRfYWxsX3N5bXRhYnMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSk7Ci1AQCAtMjE3LDggKzIxOSwxMCBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9u cwotIAkJCQkJY29uc3QgY2hhciAqZmlsZW5hbWUpOwotIAotICAgLyogUmV0dXJuIHRoZSBmaWxl IG5hbWUgb2YgdGhlIGZpbGUgaG9sZGluZyB0aGUgc3ltYm9sIGluIE9CSkZJTEUKLS0gICAgIG5h bWVkIE5BTUUuICBJZiBubyBzdWNoIHN5bWJvbCBleGlzdHMgaW4gT0JKRklMRSwgcmV0dXJuIE5V TEwuICAqLwotLSAgY29uc3QgY2hhciAqKCpmaW5kX3N5bWJvbF9maWxlKSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpOwotKyAgICAgbmFtZWQgTkFNRSAodmFsaWQg aW4gTEFOR1VBR0UpLiAgSWYgbm8gc3VjaCBzeW1ib2wgZXhpc3RzIGluIE9CSkZJTEUsCi0rICAg ICByZXR1cm4gTlVMTC4gICovCi0rICBjb25zdCBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSwKLSsJCQkJICAgZW51bSBs YW5ndWFnZSBsYW5ndWFnZSk7Ci0gCi0gICAvKiBGaW5kIGdsb2JhbCBvciBzdGF0aWMgc3ltYm9s cyBpbiBhbGwgdGFibGVzIHRoYXQgYXJlIGluIE5BTUVTUEFDRSAKLSAgICAgIGFuZCBmb3Igd2hp Y2ggTUFUQ0ggKHN5bWJvbCBuYW1lLCBOQU1FKSA9PSAwLCBwYXNzaW5nIGVhY2ggdG8gCi1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvc3ltdGFiLmMKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTEtMDItMDYgMjM6MTI6MTYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvc3ltdGFiLmMJMjAxMS0w Mi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMzgwLDcgKzEzODAsOCBAQCBsb29r dXBfc3ltYm9sX2F1eF9xdWljayAoc3RydWN0IG9iamZpbGUgCi0gCi0gICBpZiAoIW9iamZpbGUt PnNmKQotICAgICByZXR1cm4gTlVMTDsKLS0gIHN5bXRhYiA9IG9iamZpbGUtPnNmLT5xZi0+bG9v a3VwX3N5bWJvbCAob2JqZmlsZSwga2luZCwgbmFtZSwgZG9tYWluKTsKLSsgIHN5bXRhYiA9IG9i amZpbGUtPnNmLT5xZi0+bG9va3VwX3N5bWJvbCAob2JqZmlsZSwga2luZCwgbmFtZSwgZG9tYWlu LAotKwkJCQkJICAgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UpOwotICAgaWYgKCFzeW10 YWIpCi0gICAgIHJldHVybiBOVUxMOwotIAotQEAgLTE1NTQsNyArMTU1NSw4IEBAIGJhc2ljX2xv b2t1cF90cmFuc3BhcmVudF90eXBlX3F1aWNrIChzdHIKLSAKLSAgIGlmICghb2JqZmlsZS0+c2Yp Ci0gICAgIHJldHVybiBOVUxMOwotLSAgc3ltdGFiID0gb2JqZmlsZS0+c2YtPnFmLT5sb29rdXBf c3ltYm9sIChvYmpmaWxlLCBraW5kLCBuYW1lLCBTVFJVQ1RfRE9NQUlOKTsKLSsgIHN5bXRhYiA9 IG9iamZpbGUtPnNmLT5xZi0+bG9va3VwX3N5bWJvbCAob2JqZmlsZSwga2luZCwgbmFtZSwgU1RS VUNUX0RPTUFJTiwKLSsJCQkJCSAgIGN1cnJlbnRfbGFuZ3VhZ2UtPmxhX2xhbmd1YWdlKTsKLSAg IGlmICghc3ltdGFiKQotICAgICByZXR1cm4gTlVMTDsKLSAKLUBAIC0xNjg2LDcgKzE2ODgsOCBA QCBmaW5kX21haW5fZmlsZW5hbWUgKHZvaWQpCi0gCi0gICAgIGlmICghb2JqZmlsZS0+c2YpCi0g ICAgICAgY29udGludWU7Ci0tICAgIHJlc3VsdCA9IG9iamZpbGUtPnNmLT5xZi0+ZmluZF9zeW1i b2xfZmlsZSAob2JqZmlsZSwgbmFtZSk7Ci0rICAgIHJlc3VsdCA9IG9iamZpbGUtPnNmLT5xZi0+ ZmluZF9zeW1ib2xfZmlsZSAob2JqZmlsZSwgbmFtZSwKLSsJCQkJCQljdXJyZW50X2xhbmd1YWdl LT5sYV9sYW5ndWFnZSk7Ci0gICAgIGlmIChyZXN1bHQpCi0gICAgICAgcmV0dXJuIHJlc3VsdDsK LSAgIH0KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3By MTE3MzQtMS5jYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9n ZGIuY3AvcHIxMTczNC0xLmNjCTIwMTEtMDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCi1A QCAtMCwwICsxLDMwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsg ICBQbGVhc2UgZW1haWwgYW55IGJ1Z3MsIGNvbW1lbnRzLCBhbmQvb3IgYWRkaXRpb25zIHRvIHRo aXMgZmlsZSB0bzoKLSsgICBidWctZ2RiQGdudS5vcmcgICovCi0rCi0rI2luY2x1ZGUgInByMTE3 MzQuaCIKLSsKLStpbnQKLSttYWluICgpCi0rewotKyAgcHIxMTczNCAqcCA9IG5ldyBwcjExNzM0 OwotKyAgcC0+Zm9vICgpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotSW5kZXg6IGdkYi03LjIuNTAu MjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTczNC0yLmNjCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTIuY2MJMjAxMS0w Mi0wNiAyMzoxMjoyMi4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMjcgQEAKLSsvKiBUaGlz IHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHly aWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZ b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6 Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyAgIFBsZWFzZSBlbWFpbCBhbnkgYnVncywg Y29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyAgIGJ1Zy1nZGJA Z251Lm9yZyAgKi8KLSsKLSsjaW5jbHVkZSAicHIxMTczNC5oIgotKwotK3ZvaWQKLStwcjExNzM0 Ojpmb28odm9pZCkKLSt7Ci0rfQotKwotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvcHIxMTczNC0zLmNjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDIw Ni9nZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LTMuY2MJMjAxMS0wMi0wNiAyMzoxMjoyMi4w MDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMjcgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5k ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNo ZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFs b25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgotKwotKyAgIFBsZWFzZSBlbWFpbCBhbnkgYnVncywgY29tbWVudHMsIGFuZC9v ciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyAgIGJ1Zy1nZGJAZ251Lm9yZyAgKi8KLSsK LSsjaW5jbHVkZSAicHIxMTczNC5oIgotKwotK3ZvaWQKLStwcjExNzM0Ojpmb28gKGludCBhKQot K3sKLSt9Ci0rCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9wcjExNzM0LTQuY2MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3Vp dGUvZ2RiLmNwL3ByMTE3MzQtNC5jYwkyMDExLTAyLTA2IDIzOjEyOjIyLjAwMDAwMDAwMCArMDEw MAotQEAgLTAsMCArMSwyNyBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRo ZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRo ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlz IHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0r Ci0rICAgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29yIGFkZGl0aW9ucyB0 byB0aGlzIGZpbGUgdG86Ci0rICAgYnVnLWdkYkBnbnUub3JnICAqLwotKwotKyNpbmNsdWRlICJw cjExNzM0LmgiCi0rCi0rdm9pZAotK3ByMTE3MzQ6OmZvbyAoY2hhciAqYSkKLSt7Ci0rfQotKwot SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMTczNC5l eHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3By MTE3MzQuZXhwCTIwMTEtMDItMDYgMjM6MTI6MjIuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsx LDU1IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K LSsjCi0rIyBDb250cmlidXRlZCBieSBSZWQgSGF0LCBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgS2Vp dGggU2VpdHouCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK LSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIHRoZSBnZGIgdGVzdHN1aXRlLgotKwotK2lmIHsgW3NraXBfY3BsdXNf dGVzdHNdIH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IHRlc3RmaWxlICJwcjExNzM0IgotK3NldCBj bGFzcyAkdGVzdGZpbGUKLSsKLStzZXQgc3JjZmlsZXMge30KLStmb3Ige3NldCBpIDF9IHskaSA8 IDV9IHtpbmNyIGl9IHsKLSsgICAgbGFwcGVuZCBzcmNmaWxlcyAkdGVzdGZpbGUtJGkuY2MKLSt9 Ci0rCi0rcHJlcGFyZV9mb3JfdGVzdGluZyBwcjExNzM0ICR0ZXN0ZmlsZSAkc3JjZmlsZXMge2Mr KyBkZWJ1Z30KLSsKLStpZiB7IVtydW50b19tYWluXX0gewotKyAgICBwZXJyb3IgImNvdWxkbid0 IHJ1biB0byBicmVha3BvaW50IgotKyAgICBjb250aW51ZQotK30KLSsKLSsjIEFuIGFycmF5IGhv bGRpbmcgdGhlIG92ZXJsb2FkIHR5cGVzIGZvciB0aGUgbWV0aG9kIHByMTE3MzQ6OmZvby4gIFRo ZQotKyMgZmlyc3QgZWxlbWVudCBpcyB0aGUgb3ZlcmxvYWRlZCBtZXRob2QgcGFyYW1ldGVyLiAg VGhlIHNlY29uZCBlbGVtZW50Ci0rIyBpcyB0aGUgZXhwZWN0ZWQgc291cmNlIGZpbGUgbnVtYmVy LCBlLmcuICJwcjExNzM0LT8uY2MiLgotK2FycmF5IHNldCB0ZXN0cyB7Ci0rICAgICJjaGFyKiIg IDQKLSsgICAgImludCIgICAgMwotKyAgICAiIiAgICAgICAyCi0rfQotKwotKyMgVGVzdCBlYWNo IG92ZXJsb2FkIGluc3RhbmNlIHR3aWNlOiBvbmNlIHF1b3RlZCwgb25jZSB1bnF1b3RlZAotK2Zv cmVhY2ggb3ZsZCBbYXJyYXkgbmFtZXMgdGVzdHNdIHsKLSsgICAgc2V0IG1ldGhvZCAiJHtjbGFz c306OmZvb1woJG92bGRcKSIKLSsgICAgc2V0IHJlc3VsdCAiQnJlYWtwb2ludCAoXFswLTlcXSku KmZpbGUgLiovJGNsYXNzLSR0ZXN0cygkb3ZsZCkuKiIKLSsgICAgZ2RiX3Rlc3QgImJyZWFrICRt ZXRob2QiICRyZXN1bHQKLSsgICAgZ2RiX3Rlc3QgImJyZWFrICckbWV0aG9kJyIgJHJlc3VsdAot K30KLSsKLStnZGJfZXhpdAotK3JldHVybiAwCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDIwNi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9wcjExNzM0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEw MjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTE3MzQuaAkyMDExLTAyLTA2IDIzOjEyOjIyLjAw MDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwyOCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFy dCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMg b2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv bi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCi0rCi0rICAgUGxlYXNlIGVtYWlsIGFueSBidWdzLCBjb21tZW50cywgYW5kL29y IGFkZGl0aW9ucyB0byB0aGlzIGZpbGUgdG86Ci0rICAgYnVnLWdkYkBnbnUub3JnICAqLwotKwot K2NsYXNzIHByMTE3MzQKLSt7Ci0rIHB1YmxpYzoKLSsgIHZvaWQgZm9vICgpOwotKyAgdm9pZCBm b28gKGludCk7Ci0rICB2b2lkIGZvbyAoY2hhciAqKTsKLSt9OwotKwoKZGlmZiAtLWdpdCBhL2dk Yi1waHlzbmFtZS1wcjExNzM0LTJvZjIucGF0Y2ggYi9nZGItcGh5c25hbWUtcHIxMTczNC0yb2Yy LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2VlYzlmLi4wMDAwMDAwCi0t LSBhL2dkYi1waHlzbmFtZS1wcjExNzM0LTJvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx OCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMS9t c2cwMDQ2MC5odG1sCi0KLUluZGV4OiBnZGItNy4yL2dkYi9saW5lc3BlYy5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9saW5lc3BlYy5jCTIwMTEtMDItMDMgMjI6NTk6NDYuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi9nZGIvbGluZXNwZWMuYwkyMDExLTAyLTAzIDIzOjAz OjI4LjAwMDAwMDAwMCArMDEwMAotQEAgLTEyMzAsNyArMTIzMCwxMCBAQCBkZWNvZGVfY29tcG91 bmQgKGNoYXIgKiphcmdwdHIsIGludCBmdW5mCi0gICAgIHsKLSAgICAgICBjaGFyICplbmQgPSBz a2lwX3F1b3RlZCAoc2F2ZWRfYXJnKTsKLSAgICAgICBtZW1tb3ZlIChzYXZlZF9hcmcsIHNhdmVk X2FyZyArIDEsIGVuZCAtIHNhdmVkX2FyZyk7Ci0tICAgICAgbWVtbW92ZSAoZW5kIC0gMiwgZW5k LCBzdHJsZW4gKHNhdmVkX2FyZykgKyAxKTsKLSsgICAgICBpZiAoJmVuZFstMl0gPj0gc2F2ZWRf YXJnICYmIGVuZFstMl0gPT0gJ1wnJykKLSsJbWVtbW92ZSAoZW5kIC0gMiwgZW5kLCBzdHJsZW4g KGVuZCkgKyAxKTsKLSsgICAgICBlbHNlCi0rCW1lbW1vdmUgKGVuZCAtIDEsIGVuZCwgc3RybGVu IChlbmQpICsgMSk7Ci0gICAgIH0KLSAgICAgICAKLSAgIC8qIEZpcnN0IGNoZWNrIGZvciAiZ2xv YmFsIiBuYW1lc3BhY2Ugc3BlY2lmaWNhdGlvbiwgb2YgdGhlIGZvcm0KCmRpZmYgLS1naXQgYS9n ZGItcGh5c25hbWUtcHIxMjI3My5wYXRjaCBiL2dkYi1waHlzbmFtZS1wcjEyMjczLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2VjNjJiLi4wMDAwMDAwCi0tLSBhL2dkYi1w aHlzbmFtZS1wcjEyMjczLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTEyL21zZzAwMjY0Lmh0bWwK LQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL2xpbmVzcGVjLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLjUwLjIwMTEwMjA2Lm9yaWcvZ2RiL2xpbmVzcGVjLmMJMjAxMS0wMi0wNiAy MzowNjoyNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMjA2L2dkYi9saW5l c3BlYy5jCTIwMTEtMDItMDYgMjM6MDg6MjMuMDAwMDAwMDAwICswMTAwCi1AQCAtMTA1Nyw2ICsx MDU3LDEwIEBAIGxvY2F0ZV9maXJzdF9oYWxmIChjaGFyICoqYXJncHRyLCBpbnQgKmkKLSAJICAg IGVycm9yIChfKCJtYWxmb3JtZWQgdGVtcGxhdGUgc3BlY2lmaWNhdGlvbiBpbiBjb21tYW5kIikp OwotIAkgIHAgPSB0ZW1wX2VuZDsKLSAJfQotKwotKyAgICAgIGlmIChwWzBdID09ICcoJykKLSsJ cCA9IGZpbmRfbWV0aG9kX292ZXJsb2FkX2VuZCAocCk7Ci0rCi0gICAgICAgLyogQ2hlY2sgZm9y IGEgY29sb24gYW5kIGEgcGx1cyBvciBtaW51cyBhbmQgYSBbICh3aGljaAotICAgICAgICAgIGlu ZGljYXRlcyBhbiBPYmplY3RpdmUtQyBtZXRob2QpLiAgKi8KLSAgICAgICBpZiAoaXNfb2JqY19t ZXRob2RfZm9ybWF0IChwKSkKLUBAIC0xMjcyLDggKzEyNzYsMTAgQEAgZGVjb2RlX2NvbXBvdW5k IChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgotICAgICAgICAgZmluZF9tZXRob2QuCi0gCi0gICAg ICAyKSBBQUE6OmluQSBpc24ndCB0aGUgbmFtZSBvZiBhIGNsYXNzLiAgSW4gdGhhdCBjYXNlLCBl aXRoZXIgdGhlCi0tICAgICAgICB1c2VyIG1hZGUgYSB0eXBvIG9yIEFBQTo6aW5BIGlzIHRoZSBu YW1lIG9mIGEgbmFtZXNwYWNlLgotLSAgICAgICAgRWl0aGVyIHdheSwgd2UganVzdCBsb29rIHVw IEFBQTo6aW5BOjpmdW4gd2l0aCBsb29rdXBfc3ltYm9sLgotKyAgICAgICAgdXNlciBtYWRlIGEg dHlwbywgQUFBOjppbkEgaXMgdGhlIG5hbWUgb2YgYSBuYW1lc3BhY2UsIG9yIGl0IGlzCi0rICAg ICAgICB0aGUgbmFtZSBvZiBhIG1pbmltYWwgc3ltYm9sLgotKyAgICAgICAgV2UganVzdCBsb29r IHVwIEFBQTo6aW5BOjpmdW4gd2l0aCBsb29rdXBfc3ltYm9sLiAgSWYgdGhhdCBmYWlscywKLSsg ICAgICAgIHRyeSBsb29rdXBfbWluaW1hbF9zeW1ib2wuCi0gCi0gICAgICBUaHVzLCBvdXIgZmly c3QgdGFzayBpcyB0byBmaW5kIGV2ZXJ5dGhpbmcgYmVmb3JlIHRoZSBsYXN0IHNldCBvZgotICAg ICAgZG91YmxlLWNvbG9ucyBhbmQgZmlndXJlIG91dCBpZiBpdCdzIHRoZSBuYW1lIG9mIGEgY2xh c3MuICBTbyB3ZQotQEAgLTEyOTQsNiArMTMwMCw4IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAq KmFyZ3B0ciwgaW50IGZ1bmYKLSAKLSAgIHdoaWxlICgxKQotICAgICB7Ci0rICAgICAgc3RhdGlj IGNoYXIgKmJyZWFrX2NoYXJhY3RlcnMgPSAiIFx0XCcoIjsKLSsKLSAgICAgICAvKiBNb3ZlIHBv aW50ZXIgdXAgdG8gbmV4dCBwb3NzaWJsZSBjbGFzcy9uYW1lc3BhY2UgdG9rZW4uICAqLwotIAot ICAgICAgIHAgPSBwMiArIDE7CS8qIFJlc3RhcnQgd2l0aCBvbGQgdmFsdWUgKzEuICAqLwotQEAg LTEzMDQsOCArMTMxMiw3IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1 bmYKLSAgICAgICAvKiBQQVNTMjogcDItPiI6OmZ1biIsIHAtPiI6ZnVuIiAqLwotIAotICAgICAg IC8qIE1vdmUgcG9pbnRlciBhaGVhZCB0byBuZXh0IGRvdWJsZS1jb2xvbi4gICovCi0tICAgICAg d2hpbGUgKCpwICYmIChwWzBdICE9ICcgJykgJiYgKHBbMF0gIT0gJ1x0JykgJiYgKHBbMF0gIT0g J1wnJykKLS0JICAgICAmJiAoKnAgIT0gJygnKSkKLSsgICAgICB3aGlsZSAoKnAgJiYgc3RyY2hy IChicmVha19jaGFyYWN0ZXJzLCAqcCkgPT0gTlVMTCkKLSAJewotIAkgIGlmIChjdXJyZW50X2xh bmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cykKLSAJICAgIHAgKz0gY3BfdmFs aWRhdGVfb3BlcmF0b3IgKHApOwotQEAgLTEzMjksOSArMTMzNiwxMiBAQCBkZWNvZGVfY29tcG91 bmQgKGNoYXIgKiphcmdwdHIsIGludCBmdW5mCi0gCSAgZWxzZSBpZiAoKHBbMF0gPT0gJzonKSAm JiAocFsxXSA9PSAnOicpKQotIAkgICAgYnJlYWs7CS8qIEZvdW5kIGRvdWJsZS1jb2xvbi4gICov Ci0gCSAgZWxzZQotLQkgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAgZ2V0dGluZyBoZXJlLCB1bnRp bCBwLT4iIiwgYXQgd2hpY2ggcG9pbnQKLS0JICAgICAgIHdlIGV4aXQgdGhpcyBsb29wLiAgKi8K LS0JICAgIHArKzsKLSsJICAgIHsKLSsJICAgICAgLyogUEFTUzI6IFdlJ2xsIGtlZXAgZ2V0dGlu ZyBoZXJlLCB1bnRpbCBQIHBvaW50cyB0byBvbmUgb2YgdGhlCi0rCQkgYnJlYWsgY2hhcmFjdGVy cywgYXQgd2hpY2ggcG9pbnQgd2UgZXhpdCB0aGlzIGxvb3AuICAqLwotKwkgICAgICBpZiAoc3Ry Y2hyIChicmVha19jaGFyYWN0ZXJzLCAqcCkgPT0gTlVMTCkKLSsJCXArKzsKLSsJICAgIH0KLSAJ fQotIAotICAgICAgIGlmICgqcCAhPSAnOicpCi1AQCAtMTM0MCw3ICsxMzUwLDcgQEAgZGVjb2Rl X2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgotIAkJCSAgIHVuc3VjY2Vzc2Z1bGx5 IGFsbCB0aGUgY29tcG9uZW50cyBvZiB0aGUKLSAJCQkgICBzdHJpbmcsIGFuZCBwLT4iIihQQVNT MikuICAqLwotIAotLSAgICAgIC8qIFdlIGdldCBoZXJlIGlmIHAgcG9pbnRzIHRvICcgJywgJ1x0 JywgJ1wnJywgIjo6IiBvciAiIihpLmUKLSsgICAgICAvKiBXZSBnZXQgaGVyZSBpZiBwIHBvaW50 cyB0byBvbmUgb2YgdGhlIGJyZWFrIGNoYXJhY3RlcnMgb3IgIiIoaS5lCi0gCSBzdHJpbmcgZW5k ZWQpLiAgKi8KLSAgICAgICAvKiBTYXZlIHJlc3RhcnQgZm9yIG5leHQgdGltZSBhcm91bmQuICAq LwotICAgICAgIHAyID0gcDsKLUBAIC0xNDkxLDYgKzE1MDEsMTggQEAgZGVjb2RlX2NvbXBvdW5k IChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgotICAgLyogV2UgY291bGRuJ3QgZmluZCBhIGNsYXNz LCBzbyB3ZSdyZSBpbiBjYXNlIDIgYWJvdmUuICBXZSBjaGVjayB0aGUKLSAgICAgIGVudGlyZSBu YW1lIGFzIGEgc3ltYm9sIGluc3RlYWQuICAqLwotIAotKyAgaWYgKGN1cnJlbnRfbGFuZ3VhZ2Ut PmxhX2xhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzCi0rICAgICAgfHwgY3VycmVudF9sYW5ndWFn ZS0+bGFfbGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfamF2YSkKLSsgICAgewotKyAgICAgIGNoYXIgKnBh cmVuID0gc3RyY2hyIChwLCAnKCcpOwotKyAgICAgIGlmIChwYXJlbiAhPSBOVUxMKQotKwlwID0g ZmluZF9tZXRob2Rfb3ZlcmxvYWRfZW5kIChwYXJlbik7Ci0rCi0rICAgICAgLyogTWFrZSBzdXJl IHdlIGtlZXAgaW1wb3J0YW50IGtld29yZHMgbGlrZSAiY29uc3QiICovCi0rICAgICAgaWYgKHN0 cm5jbXAgKHAsICIgY29uc3QiLCA2KSA9PSAwKQotKwlwICs9IDY7Ci0rICAgIH0KLSsKLSAgIGNv cHkgPSAoY2hhciAqKSBhbGxvY2EgKHAgLSBzYXZlZF9hcmcyICsgMSk7Ci0gICBtZW1jcHkgKGNv cHksIHNhdmVkX2FyZzIsIHAgLSBzYXZlZF9hcmcyKTsKLSAgIC8qIE5vdGU6IGlmIGlzX3F1b3Rl ZCBzaG91bGQgYmUgdHJ1ZSwgd2Ugc251ZmYgb3V0IHF1b3RlIGhlcmUKLUBAIC0xNTAzLDkgKzE1 MjUsMTggQEAgZGVjb2RlX2NvbXBvdW5kIChjaGFyICoqYXJncHRyLCBpbnQgZnVuZgotICAgc3lt ID0gbG9va3VwX3N5bWJvbCAoY29weSwgMCwgVkFSX0RPTUFJTiwgMCk7Ci0gICBpZiAoc3ltKQot ICAgICByZXR1cm4gc3ltYm9sX2ZvdW5kIChmdW5maXJzdGxpbmUsIGNhbm9uaWNhbCwgY29weSwg c3ltLCBOVUxMKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJv bCAqbXN5bTsKLSsKLSsgICAgICAvKiBDb3VsZG4ndCBmaW5kIGFueSBpbnRlcnByZXRhdGlvbiBh cyBjbGFzc2VzL25hbWVzcGFjZXMuICBBcyBhIGxhc3QKLSsJIHJlc29ydCwgdHJ5IHRoZSBtaW5p bWFsIHN5bWJvbCB0YWJsZXMuICAqLwotKyAgICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1i b2wgKGNvcHksIE5VTEwsIE5VTEwpOwotKyAgICAgIGlmIChtc3ltICE9IE5VTEwpCi0rCXJldHVy biBtaW5zeW1fZm91bmQgKGZ1bmZpcnN0bGluZSwgbXN5bSk7Ci0rICAgIH0gICAgCi0gCi0tICAv KiBDb3VsZG4ndCBmaW5kIGFueSBpbnRlcnByZXRhdGlvbiBhcyBjbGFzc2VzL25hbWVzcGFjZXMs IHNvIGdpdmUKLS0gICAgIHVwLiAgVGhlIHF1b3RlcyBhcmUgaW1wb3J0YW50IGlmIGNvcHkgaXMg ZW1wdHkuICAqLwotKyAgLyogQ291bGRuJ3QgZmluZCBhIG1pbmltYWwgc3ltYm9sLCBlaXRoZXIs IHNvIGdpdmUgdXAuICAqLwotICAgaWYgKG5vdF9mb3VuZF9wdHIpCi0gICAgICpub3RfZm91bmRf cHRyID0gMTsKLSAgIGNwbHVzcGx1c19lcnJvciAodGhlX3JlYWxfc2F2ZWRfYXJnLAotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5jYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjIuNTAuMjAxMTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5j YwkyMDExLTAyLTA2IDIzOjA3OjE5LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwzNyBAQAot Ky8qIFRoaXMgdGVzdCBjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwot KyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSt0ZW1wbGF0ZSA8dHlw ZW5hbWUgVD4KLStjbGFzcyBHREIKLSt7Ci0rIHB1YmxpYzoKLSsgICBzdGF0aWMgaW50IHNpbXBs ZSAodm9pZCkgeyByZXR1cm4gMDsgfQotKyAgIHN0YXRpYyBpbnQgaGFyZGVyIChUIGEpIHsgcmV0 dXJuIDE7IH0KLSsgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgWD4KLSsgICBzdGF0aWMgWCBldmVuX2hh cmRlciAoVCBhKSB7IHJldHVybiBzdGF0aWNfY2FzdDxYPiAoYSk7IH0KLSsgICBpbnQgb3BlcmF0 b3IgPT0gKEdEQiBjb25zdCYgb3RoZXIpCi0rICAgeyByZXR1cm4gMTsgfQotK307Ci0rCi0raW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotK3sKLSsgICBHREI8aW50PiBhLCBiOwotKyAg IGlmIChhID09IGIpCi0rICAgICByZXR1cm4gR0RCPGNoYXI+OjpoYXJkZXIoJ2EnKSArIEdEQjxp bnQ+OjpoYXJkZXIoMykKLSsJKyBHREI8Y2hhcj46OmV2ZW5faGFyZGVyPGludD4gKCdhJyk7Ci0r ICAgcmV0dXJuIEdEQjxpbnQ+OjpzaW1wbGUgKCk7Ci0rfQotSW5kZXg6IGdkYi03LjIuNTAuMjAx MTAyMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjI3My5leHAKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4y LjUwLjIwMTEwMjA2L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIyNzMuZXhwCTIwMTEtMDItMDYg MjM6MDc6MTkuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDQ2IEBACi0rIyBDb3B5cmlnaHQg MjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBDb250cmlidXRlZCBi eSBSZWQgSGF0LCBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgS2VpdGggU2VpdHouCi0rIwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBn ZGIgdGVzdHN1aXRlLgotKwotK2lmIHtbc2tpcF9jcGx1c190ZXN0c119IHsgY29udGludWUgfQot KwotK3NldCB0ZXN0ZmlsZSAicHIxMjI3MyIKLSsjIERvIE5PVCBjb21waWxlIHdpdGggZGVidWcg ZmxhZy4KLStwcmVwYXJlX2Zvcl90ZXN0aW5nIHByMTIyNzMgJHRlc3RmaWxlICR0ZXN0ZmlsZS5j YyB7YysrfQotKwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGxhbmd1YWdlIGMrKyIKLSsKLSsj IEEgbGlzdCBvZiBtaW5pbWFsIHN5bWJvbCBuYW1lcyB0byBjaGVjay4KLSsjIE5vdGUgdGhhdCBH REI8Y2hhcj46OmV2ZW5faGFyZGVyPGludD4oY2hhcikgaXMgcXVvdGVkIGFuZCBpbmNsdWRlcwot KyMgdGhlIHJldHVybiB0eXBlLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGlzIGlzIHRo ZSBkZW1hbmdsZWQgbmFtZQotKyMgb2YgdGhlIG1pbmltYWwgc3ltYm9sLgotK3NldCBtaW5fc3lt cyBbbGlzdCBcCi0rCQkgICJHREI8aW50Pjo6b3BlcmF0b3IgPT0iIFwKLSsJCSAgIkdEQjxpbnQ+ OjpvcGVyYXRvcj09KEdEQjxpbnQ+IGNvbnN0JikiIFwKLSsJCSAgIkdEQjxjaGFyPjo6aGFyZGVy KGNoYXIpIiBcCi0rCQkgICJHREI8aW50Pjo6aGFyZGVyKGludCkiIFwKLSsJCSAgeyJpbnQgR0RC PGNoYXI+OjpldmVuX2hhcmRlcjxpbnQ+KGNoYXIpIn0gXAotKwkJICAiR0RCPGludD46OnNpbXBs ZSgpIl0KLSsKLStmb3JlYWNoIHN5bSAkbWluX3N5bXMgewotKyAgICBpZiB7W2dkYl9icmVha3Bv aW50ICRzeW1dfSB7Ci0rCXBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCAkc3ltIgotKyAgICB9 Ci0rfQotKwotK2dkYl9leGl0CgpkaWZmIC0tZ2l0IGEvZ2RiLXB5dGhvbi1uZXdiYWNrdHJhY2Uu cGF0Y2ggYi9nZGItcHl0aG9uLW5ld2JhY2t0cmFjZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggYzA3NzU3Yy4uMDAwMDAwMAotLS0gYS9nZGItcHl0aG9uLW5ld2JhY2t0cmFj ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi1odHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvYXJjaGVyLzIwMTEtcTEvbXNnMDAwMjQuaHRtbAotU3ViamVjdDogW3BhdGNoXSBG aXggUkggQlogNjcyMjM1Ci0KLQotQnVnOgotCi1odHRwOi8vYnVnemlsbGEucmVkaGF0LmNvbS9z aG93X2J1Zy5jZ2k/aWQ9NjcyMjM1Ci0KLVRoZSBsYXR0ZXIgaGFsZiBvZiB0aGlzIGJ1ZyB3YXMg Y2F1c2VkIGJ5IHJlbW92aW5nIHRoZSB2YWx1ZSBmdW5jdGlvbgotZnJvbSBnZGIuU3ltYm9sLiAg VGhpcyBoYXBwZW5lZCBxdWl0ZSBzb21lIHRpbWUgYWdvLCBzbyBJIGFtIGEgbGl0dGxlCi1zdXJw cmlzZWQgaXQgdG9vayB0aGlzIGxvbmcgdG8gc3VyZmFjZS4KLQotVGhlIG9sZCBTeW1ib2wudmFs dWUgZnVuY3Rpb24gbmV2ZXIgcmV0dXJuZWQgYW55dGhpbmcgZXhjZXB0IGEgZ2RiLkJsb2NrCi1p ZiB0aGUgc3ltYm9sIGhhcHBlbmVkIHRvIHJlcHJlc2VudCBhIGZ1bmN0aW9uIGEgYmxvY2suICBB bnl0aGluZyBlbHNlCi1yYWlzZWQgYW4gZXJyb3IuICBXYXkgYmFjayB3aGVuLCBJIHJlbW92ZWQg dGhpcyBmdW5jdGlvbiBhcyBpdCB3YXMgYW4KLW9idmlvdXMgc3R1YiwgYW5kIGl0IHdhcyBzdXBl cnNlZGVkIGJ5IGZyYW1lLnJlYWRfdmFyKCkgd2hpY2ggaXMgYSBtb3JlCi1hY2N1cmF0ZSBtZXRo b2Qgb2YgZGV0ZXJtaW5pbmcgdGhlIHZhbHVlIG9mIGEgc3ltYm9sLgotCi1XaW5kIGZvcndhcmQg dG8gdG9kYXksIGFuZCBpdCB0dXJucyBvdXQgb25lIG9mIHRoZSB1bnBvcnRlZAotYXJjaGVyLXRy b21leS1weXRob24gc2NyaXB0cyB3ZSBzaGlwIGluIEZlZG9yYSByZWxpZXMgb24gdGhpcyAoc3lt Ym9sIC0+Ci1ibG9jaykgQVBJLiAgSSB0aG91Z2h0IGFib3V0IHdheXMgb2YgdHJ5aW5nIHRvIGZp eCB0aGlzLiBJIHRob3VnaHQgYWJvdXQKLWp1c3QgY2hhbmdpbmcgRnJhbWVXcmFwcGVyIHRvIGp1 c3QgdGFrZSBhIGJsb2NrIGluc3RlYWQgb2YgYSBzeW1ib2wKLXJlcHJlc2VudGluZyBhIGZ1bmN0 aW9uLiAgQnV0IEZyYW1lV3JhcHBlciBoYXMgYW4gQVBJIHRoYXQgd2Ugc2hpcHBlZC4KLUkgdHJp ZWQgdG8gZmluZCB0aGUgYmxvY2sgdGhyb3VnaCB0aGUgZXhpc3RpbmcgQVBJLCBidXQgdGhhdCBk aWQgbm90Ci13b3JrIHRvbyB3ZWxsLiAgVGhlIGdkYi5CbG9jayBtZXRob2QgYmxvY2tfZm9yX3Bj IGNhbiByZXR1cm4gYSBibG9jawotZnJvbSBhIHBjIGJ1dCB0aGlzIGp1c3QgdHVybmVkIG91dCB0 byBiZSBleHBlbnNpdmUgYW5kIGNvbnZvbHV0ZWQuICBJCi1ldmVudHVhbGx5IGp1c3QgZWxlY3Rl ZCB0byBhZGQgYSBibG9jaygpIGZ1bmN0aW9uIHRvIGdkYi5TeW1ib2wgd2hpY2gsCi1pZiB0aGUg c3ltYm9sIHJlcHJlc2VudGVkIGEgbWV0aG9kIG9yIGEgZnVuY3Rpb24sIHdvdWxkIHJldHVybiB0 aGUgYmxvY2suCi1ZZXQgSSBhbSBzdGlsbCBub3QgZW50aXJlbHkgc2F0aXNmaWVkLiAgSXQgc2Vl bXMgd2VpcmQgdG8gYXNrIHRoZSB1c2VyCi10byByZXRyaWV2ZSBzeW1ib2wgdmFsdWUgZnJvbSBm cmFtZS5yZWFkX3ZhciBmb3IgbW9zdCBzeW1ib2xzLCBidXQgaW4KLXRoZSBjYXNlIG9mIGEgZnVu Y3Rpb24gb3IgbWV0aG9kLCB1c2UgYmxvY2soKS4gIEkgdHJpZWQgdG8gdXNlIHJlYWRfdmFyCi1m b3IgdGhpcywgYnV0IGl0IHJldHVybnMgYSBnZGIuVmFsdWUsIGFuZCBJIGNvdWxkIG5vdCBmaWd1 cmUgb3V0IGEgd2F5IHRvCi10cmFuc2Zvcm0gYSBnZGIuVmFsdWUgdG8gYSBnZGIuQmxvY2suCi0K LUJlZm9yZSBJIHN1Ym1pdCB0aGlzIGZvciB1cHN0cmVhbSByZXZpZXcgSSdkIGxpa2UgdG8gc2Vl IGlmIGFueW9uZSBoYXMKLWFueSBjb21tZW50cy4KLQotQ2hlZXJzCi0KLVBoaWwKLQotLS0KLQot SW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMDUvZ2RiL2RvYy9nZGIudGV4aW5mbwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMDUub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEt MDMtMDUgMDg6Mjc6MDkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMwNS9n ZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDMtMDUgMDg6Mjg6MzMuMDAwMDAwMDAwICswMTAwCi1A QCAtMjI5MTksNiArMjI5MTksMTMgQEAgVGhlIHJlc3VsdCBpcyBhIEBjb2Rle2dkYi5TeW1ib2x9 IG9iamVjdAotIGlzIG5vdCBmb3VuZC4KLSBAZW5kIGRlZnVuCi0gCi0rQSBAY29kZXtnZGIuU3lt Ym9sfSBvYmplY3QgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLSsKLStAZGVmbWV0aG9kIFN5 bWJvbCBibG9jawotK1JldHVybnMgYSBAY29kZXtnZGIuQmxvY2t9IG9iamVjdCBpZiB0aGUgc3lt Ym9sIGlzIGEgZnVuY3Rpb24gb3IgYQotK21ldGhvZC4gIEB4cmVme0Jsb2NrcyBJbiBQeXRob259 LgotK0BlbmQgZGVmbWV0aG9kCi0rCi0gQSBAY29kZXtnZGIuU3ltYm9sfSBvYmplY3QgaGFzIHRo ZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKLSAKLSBAdGFibGUgQGNvZGUKLUluZGV4OiBnZGItNy4y LjUwLjIwMTEwMzA1L2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMzA1Lm9yaWcvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1l V3JhcHBlci5weQkyMDExLTAzLTA1IDA4OjI2OjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuNTAuMjAxMTAzMDUvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQkyMDExLTAz LTA1IDA4OjI3OjIyLjAwMDAwMDAwMCArMDEwMAotQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgRnJh bWVXcmFwcGVyOgotICAgICAgICAgICAgIHJldHVybgotIAotICAgICAgICAgZmlyc3QgPSBUcnVl Ci0tICAgICAgICBibG9jayA9IGZ1bmMudmFsdWUKLSsgICAgICAgIGJsb2NrID0gZnVuYy5ibG9j ayAoKQotIAotICAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKLSAgICAgICAgICAgICBpZiBzeW0u aXNfYXJndW1lbnQ6Ci1AQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBGcmFtZVdyYXBwZXI6Ci0gICAg ICAgICAgICAgcmV0dXJuCi0gCi0gICAgICAgICBmaXJzdCA9IFRydWUKLS0gICAgICAgIGJsb2Nr ID0gZnVuYy52YWx1ZQotKyAgICAgICAgYmxvY2sgPSBmdW5jLmJsb2NrICgpCi0gCi0gICAgICAg ICBmb3Igc3ltIGluIGJsb2NrOgotICAgICAgICAgICAgIGlmIG5vdCBzeW0uaXNfYXJndW1lbnQ6 Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMwNS9nZGIvcHl0aG9uL3B5LXN5bWJvbC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMwNS5vcmlnL2dkYi9weXRob24vcHktc3ltYm9s LmMJMjAxMS0wMi0yNiAwMzowNzowOS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIw MTEwMzA1L2dkYi9weXRob24vcHktc3ltYm9sLmMJMjAxMS0wMy0wNSAwODoyNzoyMi4wMDAwMDAw MDAgKzAxMDAKLUBAIC0xNjcsNiArMTY3LDI3IEBAIHN5bXB5X2lzX3ZhcmlhYmxlIChQeU9iamVj dCAqc2VsZiwgdm9pZCAKLSAJCQkgICAgICB8fCBjbGFzcyA9PSBMT0NfT1BUSU1JWkVEX09VVCkp OwotIH0KLSAKLStzdGF0aWMgUHlPYmplY3QgKgotK3N5bXB5X2dldF9ibG9jayAoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bWJvbCA9IE5V TEw7Ci0rCi0rICBTWU1QWV9SRVFVSVJFX1ZBTElEIChzZWxmLCBzeW1ib2wpOwotKwotKyAgaWYg KFNZTUJPTF9DTEFTUyAoc3ltYm9sKSA9PSBMT0NfQkxPQ0spCi0rICAgIHsKLSsgICAgICBzdHJ1 Y3Qgc3ltdGFiICpzeW10ID0gU1lNQk9MX1NZTVRBQiAoc3ltYm9sKTsKLSsKLSsgICAgICByZXR1 cm4gYmxvY2tfdG9fYmxvY2tfb2JqZWN0IChTWU1CT0xfQkxPQ0tfVkFMVUUgKHN5bWJvbCksCi0r CQkJCSAgICBzeW10LT5vYmpmaWxlKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBQeUVycl9TZXRT dHJpbmcgKFB5RXhjX1J1bnRpbWVFcnJvciwKLSsJCSAgICAgXygiU3ltYm9sIGlzIG5vdCBhIGJs b2NrIGNsYXNzLiIpKTsKLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSAvKiBHaXZlbiBhIHN5 bWJvbCwgYW5kIGEgc3ltYm9sX29iamVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4KLSAgICBh bGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkLCBwb3B1bGF0ZSB0aGUgc3ltYm9sX29iamVjdCB3aXRo IHRoZQotICAgIHN0cnVjdCBzeW1ib2wgZGF0YS4gIEFsc28sIHJlZ2lzdGVyIHRoZSBzeW1ib2xf b2JqZWN0IGxpZmUtY3ljbGUKLUBAIC0zOTYsNiArNDE3LDEzIEBAIGdkYnB5X2luaXRpYWxpemVf c3ltYm9scyAodm9pZCkKLSAKLSAMCi0gCi0rc3RhdGljIFB5TWV0aG9kRGVmIHN5bWJvbF9vYmpl Y3RfbWV0aG9kc1tdID0gewotKyAgeyAiYmxvY2siLCBzeW1weV9nZXRfYmxvY2ssIE1FVEhfTk9B UkdTLAotKyAgICAiYmxvY2sgKCkgLT4gZ2RiLkJsb2NrLlxuXAotK1JldHVybiB0aGUgYmxvY2sg b2YgdGhpcyBzeW1ib2wsIGlmIHRoZSBzeW1ib2wgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLiIgfSwK LSsgIHtOVUxMfSAgLyogU2VudGluZWwgKi8KLSt9OwotKwotIHN0YXRpYyBQeUdldFNldERlZiBz eW1ib2xfb2JqZWN0X2dldHNldFtdID0gewotICAgeyAic3ltdGFiIiwgc3ltcHlfZ2V0X3N5bXRh YiwgTlVMTCwKLSAgICAgIlN5bWJvbCB0YWJsZSBpbiB3aGljaCB0aGUgc3ltYm9sIGFwcGVhcnMu IiwgTlVMTCB9LAotQEAgLTQ0OSw3ICs0NzcsNyBAQCBQeVR5cGVPYmplY3Qgc3ltYm9sX29iamVj dF90eXBlID0gewotICAgMCwJCQkJICAvKnRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAwLAkJCQkg IC8qdHBfaXRlciAqLwotICAgMCwJCQkJICAvKnRwX2l0ZXJuZXh0ICovCi0tICAwLAkJCQkgIC8q dHBfbWV0aG9kcyAqLwotKyAgc3ltYm9sX29iamVjdF9tZXRob2RzLAkgIC8qdHBfbWV0aG9kcyAq LwotICAgMCwJCQkJICAvKnRwX21lbWJlcnMgKi8KLSAgIHN5bWJvbF9vYmplY3RfZ2V0c2V0CQkg IC8qdHBfZ2V0c2V0ICovCi0gfTsKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzA1L2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1zeW1ib2wuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41 MC4yMDExMDMwNS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1zeW1ib2wuZXhwCTIw MTEtMDItMjIgMjM6NDg6MTIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMw NS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktc3ltYm9sLmV4cAkyMDExLTAzLTA1IDA4OjI3 OjIyLjAwMDAwMDAwMCArMDEwMAotQEAgLTc2LDYgKzc2LDEwIEBAIGdkYl90ZXN0ICJweXRob24g cHJpbnQgZnVuYy5wcmludF9uYW1lIiAKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50IGZ1bmMubGlu a2FnZV9uYW1lIiAiZnVuYyIgIlRlc3QgZnVuYy5saW5rYWdlX25hbWUiCi0gZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCBmdW5jLmFkZHJfY2xhc3MgPT0gZ2RiLlNZTUJPTF9MT0NfQkxPQ0siICJUcnVl IiAiVGVzdCBmdW5jLmFkZHJfY2xhc3MiCi0gCi0rIyBUZXN0IGJsb2NrKCkgbWV0aG9kCi0rZ2Ri X3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0aG9uIGZ1bmMgPSBmcmFtZS5ibG9jaygpLmZ1bmN0aW9u IiAiR2V0IGJsb2NrIiAwCi0rZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBmdW5jLmJsb2NrKCkuZnVu Y3Rpb24ubmFtZSIgImZ1bmMiICJUZXN0IGJsb2NrIG1ldGhvZCIKLSsKLSBnZGJfYnJlYWtwb2lu dCBbZ2RiX2dldF9saW5lX251bWJlciAiQnJlYWsgYXQgZW5kLiJdCi0gZ2RiX2NvbnRpbnVlX3Rv X2JyZWFrcG9pbnQgIkJyZWFrIGF0IGVuZC4iCi0gZ2RiX3B5X3Rlc3Rfc2lsZW50X2NtZCAicHl0 aG9uIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lKCkiICJHZXQgRnJhbWUiIDAKCmRpZmYgLS1n aXQgYS9nZGItc3RhcC13YXJuaW5ncy5wYXRjaCBiL2dkYi1zdGFwLXdhcm5pbmdzLnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhlMDdlMDgKLS0tIC9kZXYvbnVsbAor KysgYi9nZGItc3RhcC13YXJuaW5ncy5wYXRjaApAQCAtMCwwICsxLDU5IEBACitodHRwOi8vc291 cmNld2FyZS5vcmcvbWwvYXJjaGVyLzIwMTEtcTEvbXNnMDAxMzYuaHRtbAorU3ViamVjdDogYXJj aGVyLXNlcmdpb2RqLXN0YXAgLU8yIC1XYWxsIHdhcm5pbmdzPWVycm9ycworCitIaSBTZXJnaW8s CisKK3dpdGggLU8yICgrc29tZSAtV2FsbCBvciBzbyBvcHRpb25zIHBvc3NpYmx5IC0gd2hhdCBh cHBsaWVzIGZvciBGZWRvcmEgYnVpbGRzKQorb25lIGdldHM6CisKK2djYy00LjYuMC0wLjE0LmZj MTUueDg2XzY0CitzdGFwLXByb2JlLmM6IEluIGZ1bmN0aW9uIBskQiFGGyhCc3RhcF9mZXRjaF9y ZWdfdmFsdWUbJEIhRxsoQjoKK3N0YXAtcHJvYmUuYzo5MjM6MTI6IGVycm9yOiAbJEIhRhsoQmFv cBskQiFHGyhCIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbiBbLVdl cnJvcj11bmluaXRpYWxpemVkXQorc3RhcC1wcm9iZS5jOjkxOToxMDogZXJyb3I6IBskQiFGGyhC cmV0GyRCIUcbKEIgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFst V2Vycm9yPXVuaW5pdGlhbGl6ZWRdCitzdGFwLXByb2JlLmM6IEluIGZ1bmN0aW9uIBskQiFGGyhC c3RhcF9ldmFsdWF0ZV9jb25kaXRpb25hbGx5GyRCIUcbKEI6CitzdGFwLXByb2JlLmM6MTE4NDoz OiBlcnJvcjogGyRCIUYbKEJyZXMbJEIhRxsoQiBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGlu IHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9dW5pbml0aWFsaXplZF0KKworVGhlIGF0dGFjaGVkIHBh dGNoIG5lZWRzIGEgcmV2aWV3LCBJIGhhdmUgb25seSBicmllZmx5IGNoZWNrZWQgaXQgaXMgbm90 Citjb21wbGV0ZWx5IGJvZ3VzLgorCisKK1RoYW5rcywKK0phbgorCisKKy0tLSBhL2dkYi9zdGFw LXByb2JlLmMKKysrKyBiL2dkYi9zdGFwLXByb2JlLmMKK0BAIC03ODAsNyArNzgwLDkgQEAgc3Rh cF9mZXRjaF9yZWdfdmFsdWUgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZv LAorICNkZWZpbmUgUkVHX05BTUVfTUFYX1NJWkUgMjAKKyAgIGNoYXIgcmVnbmFtZVtSRUdfTkFN RV9NQVhfU0laRSArIDFdOworICAgaW50IGxlbiwgcmVnbnVtLCBpbmRpcmVjdF9wID0gMDsKKy0g IHN0cnVjdCB2YWx1ZSAqcmV0OworKyAgLyogR0NDIGZhbHNlIHdhcm5pbmc6IBskQiFGGyhCcmV0 GyRCIUcbKEIgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCisrICAg ICAqLworKyAgc3RydWN0IHZhbHVlICpyZXQgPSBOVUxMOworICAgCisgICAvKiBUaGUgZnVuY3Rp b24gd2hpY2ggY2FsbGVkIHVzIGRpZCBub3QgY2hlY2sgaWYgdGhlIGV4cHJlc3Npb24KKyAgICAg IGJ1ZmZlciB3YXMgZW1wdHkuICAqLworQEAgLTg1MSw3ICs4NTMsOSBAQCBzdGFwX2ZldGNoX3Jl Z192YWx1ZSAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8sCisgICBpZiAo aW5kaXJlY3RfcCkKKyAgICAgeworICAgICAgIHN0cnVjdCB0eXBlICp0ID0gTlVMTDsKKy0gICAg ICBlbnVtIGFnZW50X29wIGFvcDsKKysgICAgICAvKiBHQ0MgZmFsc2Ugd2FybmluZzogGyRCIUYb KEJhb3AbJEIhRxsoQiBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24u CisrICAgICAgICAgKi8KKysgICAgICBlbnVtIGFnZW50X29wIGFvcCA9IDA7CisgCisgICAgICAg LyogSWYgdGhlIHVzZXIgaGFzIHNwZWNpZmllZCB0aGF0IHRoZSByZWdpc3RlciBtdXN0IGJlIGlu ZGlyZWN0ZWQsCisgCSB3ZSBzaG91bGQga25vdyB3aGF0J3MgdGhlIGNvcnJlY3QgdHlwZSB0byBj YXN0IGl0IGJlZm9yZSBtYWtpbmcKK0BAIC05NDksNyArOTUzLDkgQEAgc3RhcF9ldmFsdWF0ZV9z aW5nbGVfb3BlcmFuZCAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8pCisg ICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGV2YWxfaW5mby0+Z2RiYXJjaDsKKyAgIHN0cnVj dCBmcmFtZV9pbmZvICpmcmFtZSA9IGV2YWxfaW5mby0+ZnJhbWU7CisgICBlbnVtIHN0YXBfYXJn X2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVzczsKKy0gIHN0cnVjdCB2YWx1ZSAq cmVzOworKyAgLyogR0NDIGZhbHNlIHdhcm5pbmc6IBskQiFGGyhCcmVzGyRCIUcbKEIgbWF5IGJl IHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCisrICAgICAqLworKyAgc3RydWN0 IHZhbHVlICpyZXMgPSBOVUxMOworIAorICAgc3dpdGNoICgqZXZhbF9pbmZvLT5leHBfYnVmKQor ICAgICB7CisKCmRpZmYgLS1naXQgYS9nZGItdXBzdHJlYW0ucGF0Y2ggYi9nZGItdXBzdHJlYW0u cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlMzQ5ZGYuLjAwMDAwMDAKLS0t IGEvZ2RiLXVwc3RyZWFtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMS0wMy9tc2cwMDA3Ny5odG1sCi0KLSMj IyBzcmMvZ2RiL2dkYnNlcnZlci9DaGFuZ2VMb2cJMjAxMS8wMy8wNCAwNjozMTo1NAkxLjQ2Mwot IyMjIHNyYy9nZGIvZ2Ric2VydmVyL0NoYW5nZUxvZwkyMDExLzAzLzA1IDAzOjQ1OjI2CTEuNDY0 Ci0jIyAtMSwzICsxLDEwIEBACi0rMjAxMS0wMy0wNSAgWWFvIFFpICA8eWFvQGNvZGVzb3VyY2Vy eS5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW4gKENMRUFORElSUywgUkVRVUlSRURfU1VCRElSUyk6 IE5ldyB2YXJpYWJsZS4KLSsJKHN1YmRpcl9kbyk6IE5ldyBtYWtlIHRhcmdldC4gIENvcGllZCBm cm9tIGdkYi9NYWtlZmlsZS4KLSsJKG1haW50YWluZXItY2xlYW4sIHJlYWxjbGVhbiwgZGlzdGNs ZWFuLCBjbGVhbik6IENhbGwgY29ycmVzcG9uZGluZwotKwltYWtlIHRhcmdldHMgaW4gY29tbW9u L01ha2VmaWxlLgotKwotIDIwMTEtMDMtMDQgIFlhbyBRaSAgPHlhb0Bjb2Rlc291cmNlcnkuY29t PgotIAotIAkqIE1ha2VmaWxlLmluOiBSZW1vdmUgR05VIG1ha2UgZmVhdHVyZSAtLWRpcmVjdG9y eS4KLS0tLSBzcmMvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgkyMDExLzAzLzA0IDA2OjMxOjU0 CTEuMTA0Ci0rKysgc3JjL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4JMjAxMS8wMy8wNSAwMzo0 NToyNgkxLjEwNQotQEAgLTEzNiw2ICsxMzYsOSBAQAotIExJQkNPTU1PTiA9ICQoTElCQ09NTU9O X0RJUikvbGliY29tbW9uLmEKLSBMSUJDT01NT05fU1JDID0gJChzcmNkaXIpLyQoTElCQ09NTU9O X0RJUikKLSAKLStDTEVBTkRJUlMgPSAkKExJQkNPTU1PTl9ESVIpCi0rUkVRVUlSRURfU1VCRElS UyA9ICQoTElCQ09NTU9OX0RJUikKLSsKLSBTT1VSQ0VTID0gJChTRklMRVMpCi0gVEFHRklMRVMg PSAkKFNPVVJDRVMpICR7SEZJTEVTfSAke0FMTFBBUkFNfSAke1BPU1NMSUJTfQotIAotQEAgLTI5 MSw2ICsyOTQsNyBAQAotIHRhZ3M6IFRBR1MKLSAKLSBjbGVhbjoKLSsJQCQoTUFLRSkgJChGTEFH U19UT19QQVNTKSBETz1jbGVhbiAiRE9ESVJTPSQoQ0xFQU5ESVJTKSIgc3ViZGlyX2RvCi0gCXJt IC1mICoubyAke0FERF9GSUxFU30gKn4KLSAJcm0gLWYgdmVyc2lvbi5jCi0gCXJtIC1mIGdkYnNl cnZlciQoRVhFRVhUKSBnZGJyZXBsYXkkKEVYRUVYVCkgY29yZSBtYWtlLmxvZwotQEAgLTMxNCw2 ICszMTgsNyBAQAotIAlybSAtZiBpMzg2LW1teC5jIGkzODYtbW14LWxpbnV4LmMKLSAKLSBtYWlu dGFpbmVyLWNsZWFuIHJlYWxjbGVhbiBkaXN0Y2xlYW46IGNsZWFuCi0rCUAkKE1BS0UpICQoRkxB R1NfVE9fUEFTUykgRE89JEAgIkRPRElSUz0kKENMRUFORElSUykiIHN1YmRpcl9kbwotIAlybSAt ZiBubS5oIHRtLmggeG0uaCBjb25maWcuc3RhdHVzIGNvbmZpZy5oIHN0YW1wLWggY29uZmlnLmxv ZwotIAlybSAtZiBNYWtlZmlsZQotIAotQEAgLTMyMSw2ICszMjYsMjIgQEAKLSBzdGFtcC1oOiBj b25maWcuaW4gY29uZmlnLnN0YXR1cwotIAlDT05GSUdfRklMRVM9IiIgQ09ORklHX0hFQURFUlM9 Y29uZmlnLmg6Y29uZmlnLmluICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotIAotK3N1YmRpcl9k bzogZm9yY2UKLSsJQGZvciBpIGluICQoRE9ESVJTKTsgZG8gXAotKwkJY2FzZSAkJGkgaW4gXAot KwkJJChSRVFVSVJFRF9TVUJESVJTKSkgXAotKwkJCWlmIFsgISAtZiAuLyQkaS9NYWtlZmlsZSBd IDsgdGhlbiBcCi0rCQkJCWVjaG8gIk1pc3NpbmcgJCRpL01ha2VmaWxlIiA+JjIgOyBcCi0rCQkJ CWV4aXQgMSA7IFwKLSsJCQlmaSA7OyBcCi0rCQllc2FjIDsgXAotKwkJaWYgWyAtZiAuLyQkaS9N YWtlZmlsZSBdIDsgdGhlbiBcCi0rCQkJaWYgKGNkIC4vJCRpOyBcCi0rCQkJCSQoTUFLRSkgJChG TEFHU19UT19QQVNTKSAkKERPKSkgOyB0aGVuIHRydWUgOyBcCi0rCQkJZWxzZSBleGl0IDEgOyBm aSA7IFwKLSsJCWVsc2UgdHJ1ZSA7IGZpIDsgXAotKwlkb25lCi0rCi0gTWFrZWZpbGU6IE1ha2Vm aWxlLmluIGNvbmZpZy5zdGF0dXMKLSAJQ09ORklHX0hFQURFUlM9IiIgJChTSEVMTCkgLi9jb25m aWcuc3RhdHVzCi0gCgpkaWZmIC0tZ2l0IGEvZ2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA5M2Ri NjlhLi40ODhjNjlhIDEwMDY0NAotLS0gYS9nZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMjMs MTEgKzIzLDExIEBAIE5hbWU6IGdkYiV7P193aXRoX2RlYnVnOi1kZWJ1Z30KICMgU2V0IHZlcnNp b24gdG8gY29udGVudHMgb2YgZ2RiL3ZlcnNpb24uaW4uCiAjIE5PVEU6IHRoZSBGU0YgZ2RiIHZl cnNpb25zIGFyZSBudW1iZXJlZCBOLk0gZm9yIG9mZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMwog IyBhbmQsIHNpbmNlIEphbnVhcnkgMjAwNSwgWC5ZLlouZGF0ZSBmb3IgZGFpbHkgc25hcHNob3Rz LCBsaWtlIDYuMy41MC4yMDA1MDExMiAjIChkYWlseSBzbmFwc2hvdCBmcm9tIG1haWxpbmUpLCBv ciA2LjMuMC4yMDA0MDExMiAoaGVhZCBvZiB0aGUgcmVsZWFzZSBicmFuY2gpLgotVmVyc2lvbjog Ny4yLjUwLjIwMTEwMzA1CitWZXJzaW9uOiA3LjIuNTAuMjAxMTAzMjAKIAogIyBUaGUgcmVsZWFz ZSBhbHdheXMgY29udGFpbnMgYSBsZWFkaW5nIHJlc2VydmVkIG51bWJlciwgc3RhcnQgaXQgYXQg MS4KICMgYHVwc3RyZWFtJyBpcyBub3QgYSBwYXJ0IG9mIGBuYW1lJyB0byBzdGF5IGZ1bGx5IHJw bSBkZXBlbmRlbmNpZXMgY29tcGF0aWJsZSBmb3IgdGhlIHRlc3RpbmcuCi1SZWxlYXNlOiAyOCV7 P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0lez9kaXN0fQorUmVsZWFzZTogMjklez9fd2l0aF91 cHN0cmVhbToudXBzdHJlYW19JXs/ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysg d2l0aCBleGNlcHRpb25zIGFuZCBHUEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5k IEdQTCsgYW5kIExHUEx2MisgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbgogR3JvdXA6IERldmVs b3BtZW50L0RlYnVnZ2VycwpAQCAtMjY0LDcgKzI2NCw3IEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6 MjAyNjg5LWV4ZWMtZnJvbS1wdGhyZWFkLXRlc3QucGF0Y2gKIAogIyBCYWNrcG9ydGVkIGZpeHVw cyBwb3N0IHRoZSBzb3VyY2UgdGFyYmFsbC4KICNYZHJvcDogSnVzdCBiYWNrcG9ydHMuCi1QYXRj aDIzMjogZ2RiLXVwc3RyZWFtLnBhdGNoCisjUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAog CiAjIFRlc3RjYXNlIGZvciBQUEMgUG93ZXI2L0RGUCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkg KEJaIDIzMDAwMCkuCiAjPWZlZG9yYXRlc3QrcHBjCkBAIC01NDksMTggKzU0OSwxNSBAQCBQYXRj aDU1NTogZ2RiLWdjYzQ2LXR5cGVkZWYucGF0Y2gKICMgPXB1c2gKIFBhdGNoNTU2OiBnZGItZ2Nj NDYtc3RkYXJnLXByb2xvZ3VlLnBhdGNoCiAKLSMgRml4IFB5dGhvbiBuZXctYmFja3RyYWNlIGNv bW1hbmQgKEJaIDY3MjIzNSwgUGhpbCBNdWxkb29uKS4KLSMgPXB1c2gKLVBhdGNoNTU3OiBnZGIt cHl0aG9uLW5ld2JhY2t0cmFjZS5wYXRjaAotCi0jIEZpeCByZWdyZXNzaW9ucyBvbiBDKysgbmFt ZXMgcmVzb2x2aW5nIChQUiAxMTczNCwgUFIgMTIyNzMsIEtlaXRoIFNlaXR6KS4KLVBhdGNoNTY1 OiBnZGItcGh5c25hbWUtcHIxMTczNC0xb2YyLnBhdGNoCi1QYXRjaDU2NjogZ2RiLXBoeXNuYW1l LXByMTE3MzQtMm9mMi5wYXRjaAotUGF0Y2g1Njc6IGdkYi1waHlzbmFtZS1wcjEyMjczLnBhdGNo Ci0KICMgRml4IGF0dGFjaC9jb3JlLWxvYWQgb2Ygeyx1bn1wcmVsaW5rZWQgaTM4NiBsaWJzIChi dWdyZXBvcnQgYnkgTWljaGFsIFRvbWFuKS4KIFBhdGNoNTcxOiBnZGItcHJlbGluay1yZWxhLnBh dGNoCiAKKyMgW3N0YXBdIEZpeCAtTzIgd2FybmluZ3MuCitQYXRjaDU3NjogZ2RiLXN0YXAtd2Fy bmluZ3MucGF0Y2gKKworIyBGaXggQWRhIHN1cHBvcnQgY3Jhc2ggb24gdW5pbml0aWFsaXplZCBn ZGJhcmNoLgorUGF0Y2g1Nzc6IGdkYi1hZGEtZ2RiYXJjaC1jcmFzaC5wYXRjaAorCiBCdWlsZFJl cXVpcmVzOiBuY3Vyc2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXggYmlzb24g ZXhwYXQtZGV2ZWwlez9faXNhfQogUmVxdWlyZXM6IHJlYWRsaW5lJXs/X2lzYX0KIEJ1aWxkUmVx dWlyZXM6IHJlYWRsaW5lLWRldmVsJXs/X2lzYX0KQEAgLTcxNyw3ICs3MTQsNyBAQCBybSAtZiBn ZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAKICVp ZiAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEK ICVwYXRjaDM0OSAtcDEKICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQpAQCAtODI4LDExICs4MjUs OSBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9w LWV4cC5jCiAlcGF0Y2g1NTQgLXAxCiAlcGF0Y2g1NTUgLXAxCiAlcGF0Y2g1NTYgLXAxCi0lcGF0 Y2g1NTcgLXAxCi0lcGF0Y2g1NjUgLXAxCi0lcGF0Y2g1NjYgLXAxCi0lcGF0Y2g1NjcgLXAxCiAl cGF0Y2g1NzEgLXAxCislcGF0Y2g1NzYgLXAxCislcGF0Y2g1NzcgLXAxCiAKICVwYXRjaDM5MCAt cDEKICVwYXRjaDM5MyAtcDEKQEAgLTEyNTgsNiArMTI1MywxMiBAQCBmaQogJXtfaW5mb2Rpcn0v Z2RiLmluZm8qCiAKICVjaGFuZ2Vsb2cKKyogU3VuIE1hciAyMCAyMDExIEphbiBLcmF0b2Nodmls IDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMi41MC4yMDExMDMyMC0yOS5mYzE1Cist IFJlYmFzZSB0byBGU0YgR0RCIDcuMi41MC4yMDExMDMyMCAod2hpY2ggaXMgYSA3LjMgcHJlLXJl bGVhc2UpLgorLSBNZXJnZSBhcmNoZXItc2VyZ2lvZGotc3RhcCwgdGhlIFN5c3RlbVRhcCBwcm9i ZXMgYnJlYWtwb2ludHMgZmVhdHVyZS4KKyAgLSBbc3RhcF0gRml4IC1PMiB3YXJuaW5ncy4KKy0g Rml4IEFkYSBzdXBwb3J0IGNyYXNoIG9uIHVuaW5pdGlhbGl6ZWQgZ2RiYXJjaC4KKwogKiBTYXQg TWFyICA1IDIwMTEgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0g Ny4yLjUwLjIwMTEwMzA1LTI4LmZjMTUKIC0gUmViYXNlIHRvIEZTRiBHREIgNy4yLjUwLjIwMTEw MzA1ICh3aGljaCBpcyBhIDcuMyBwcmUtcmVsZWFzZSkuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2Vz IGIvc291cmNlcwppbmRleCBkMjlhMmJkLi5mZWMyMWMzIDEwMDY0NAotLS0gYS9zb3VyY2VzCisr KyBiL3NvdXJjZXMKQEAgLTEsMiArMSwyIEBACiAwNGU1YzRiMWI5ZTYzMzQyMmNjNDg5OTBmZTYx OTU4ZCAgbGlic3RkYysrLXYzLXB5dGhvbi1yMTU1OTc4LnRhci5iejIKLTE0M2FiMDllODcyNGIw MDU4ZmJmODgyODMyZjZkMmYzICBnZGItNy4yLjUwLjIwMTEwMzA1LnRhci5iejIKK2NjNDhkNjJi MjNiNTM4MTZlYjk2MzlhOGU5NTA0ZDQ3ICBnZGItNy4yLjUwLjIwMTEwMzIwLnRhci5iejIK