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: Jakub Filak To: git-commits@fedoraproject.org Subject: [rpms/abrt] update-2.17.8: systemd-journal koops, python exceptions without traceback Date: Mon, 03 Aug 2026 10:22:55 GMT Message-ID: <178575257546.1.16602475312723263906.rpms-abrt-f4e24995ef9f@fedoraproject.org> List-ID: X-Git-Repo: rpms/abrt X-Git-Branch: update-2.17.8 X-Git-Rev: f4e24995ef9f0681f1f548a15e9f0e333b0e5d12 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvYWJydApCcmFuY2gg OiB1cGRhdGUtMi4xNy44CkNvbW1pdCA6IGY0ZTI0OTk1ZWY5ZjA2ODFmMWY1NDhhMTVlOWYwZTMz M2IwZTVkMTIKQXV0aG9yIDogSmFrdWIgRmlsYWsgPGpmaWxha0ByZWRoYXQuY29tPgpEYXRlICAg OiAyMDE0LTA3LTE2VDE1OjM5OjMzKzAyOjAwClN0YXRzICA6ICsyMDgwLy0xIGluIDQgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2FicnQvYy9mNGUy NDk5NWVmOWYwNjgxZjFmNTQ4YTE1ZTlmMGUzMzNiMGU1ZDEyP2JyYW5jaD11cGRhdGUtMi4xNy44 CgpMb2c6CnN5c3RlbWQtam91cm5hbCBrb29wcywgcHl0aG9uIGV4Y2VwdGlvbnMgd2l0aG91dCB0 cmFjZWJhY2sKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMi1weXRob24tc3VwcG9ydC1leGNlcHRpb25z LXdpdGhvdXQtdHJhY2ViYWNrLnBhdGNoIGIvMDAwMi1weXRob24tc3VwcG9ydC1leGNlcHRpb25z LXdpdGhvdXQtdHJhY2ViYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjFiMGIyYTAKLS0tIC9kZXYvbnVsbAorKysgYi8wMDAyLXB5dGhvbi1zdXBwb3J0LWV4Y2Vw dGlvbnMtd2l0aG91dC10cmFjZWJhY2sucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSA2YjU3 Y2VlYmIxMzY2ZTIzMzIxYjFmZTQwZDE1Mjg1NzA4ZTE2ODY5IE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQorRnJvbTogSmFrdWIgRmlsYWsgPGpmaWxha0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCA5 IEp1bCAyMDE0IDE3OjU1OjM2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi85XSBweXRob246IHN1 cHBvcnQgZXhjZXB0aW9ucyB3aXRob3V0IHRyYWNlYmFjaworCitlLmcuIFN5bnRheEVycm9yIChw eXRob24tMi43LjUtMTMuZmMyMCwgcHl0aG9uLTIuNy43LTIuZmMyMSkKKworU2lnbmVkLW9mZi1i eTogSmFrdWIgRmlsYWsgPGpmaWxha0ByZWRoYXQuY29tPgorLS0tCisgc3JjL2hvb2tzL2FicnRf ZXhjZXB0aW9uX2hhbmRsZXIucHkuaW4gfCAxNCArKysrKysrKy0tLS0tLQorIDEgZmlsZSBjaGFu Z2VkLCA4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMv aG9va3MvYWJydF9leGNlcHRpb25faGFuZGxlci5weS5pbiBiL3NyYy9ob29rcy9hYnJ0X2V4Y2Vw dGlvbl9oYW5kbGVyLnB5LmluCitpbmRleCBjYjMyZTE0Li5mYTRmMzRmIDEwMDY0NAorLS0tIGEv c3JjL2hvb2tzL2FicnRfZXhjZXB0aW9uX2hhbmRsZXIucHkuaW4KKysrKyBiL3NyYy9ob29rcy9h YnJ0X2V4Y2VwdGlvbl9oYW5kbGVyLnB5LmluCitAQCAtNTUsMTIgKzU1LDE0IEBAIGRlZiB3cml0 ZV9kdW1wKHRiX3RleHQsIHRiKToKKyAgICAgICAgIGV4ZWN1dGFibGUgPSBzeXMuYXJndlswXQor IAorICAgICBkc29fbGlzdCA9IE5vbmUKKy0gICAgdHJ5OgorLSAgICAgICAgaW1wb3J0IHJwbQor LSAgICAgICAgZHNvX2xpc3QgPSBnZXRfZHNvX2xpc3QodGIpCistICAgIGV4Y2VwdCBJbXBvcnRF cnJvciBhcyBpbXBlcnI6CistICAgICAgICBzeXNsb2coIlJQTSBtb2R1bGUgbm90IGF2YWlsYWJs ZSwgY2Fubm90IHF1ZXJ5IFJQTSBkYiBmb3IgcGFja2FnZSAiXAorLSAgICAgICAgICAgICAgICJu YW1lcyIpCisrICAgICMgVHJhY2UgYmFjayBpcyBOb25lIGluIGNhc2Ugb2YgU3ludGF4RXJyb3Ig ZXhjZXB0aW9uLgorKyAgICBpZiB0YjoKKysgICAgICAgIHRyeToKKysgICAgICAgICAgICBpbXBv cnQgcnBtCisrICAgICAgICAgICAgZHNvX2xpc3QgPSBnZXRfZHNvX2xpc3QodGIpCisrICAgICAg ICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgaW1wZXJyOgorKyAgICAgICAgICAgIHN5c2xvZygiUlBN IG1vZHVsZSBub3QgYXZhaWxhYmxlLCBjYW5ub3QgcXVlcnkgUlBNIGRiIGZvciBwYWNrYWdlICJc CisrICAgICAgICAgICAgICAgICAgICJuYW1lcyIpCisgCisgICAgICMgT3BlbiBBQlJUIGRhZW1v bidzIHNvY2tldCBhbmQgd3JpdGUgZGF0YSB0byBpdAorICAgICB0cnk6CistLSAKKzEuOS4zCisK CmRpZmYgLS1naXQgYS8wMDA0LWtvb3BzLWR1bXAtb29wc2VzLWZyb20tc3lzdGVtZC1qb3VybmFs LnBhdGNoIGIvMDAwNC1rb29wcy1kdW1wLW9vcHNlcy1mcm9tLXN5c3RlbWQtam91cm5hbC5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2UwNDg3Ci0tLSAvZGV2L251 bGwKKysrIGIvMDAwNC1rb29wcy1kdW1wLW9vcHNlcy1mcm9tLXN5c3RlbWQtam91cm5hbC5wYXRj aApAQCAtMCwwICsxLDE5ODcgQEAKK0Zyb20gYzAzNjYwOWQzNGRmYmZkZWQ5ODkxYmU4M2Q1ZTQz ZGIwYTlmZWFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpha3ViIEZpbGFrIDxq ZmlsYWtAcmVkaGF0LmNvbT4KK0RhdGU6IE1vbiwgNyBKdWwgMjAxNCAxODoxMToxMyArMDIwMAor U3ViamVjdDogW1BBVENIIDQvOV0ga29vcHM6IGR1bXAgb29wc2VzIGZyb20gc3lzdGVtZC1qb3Vy bmFsCisKK1Jlc29sdmVzIHJoYnojMTA1OTcyNAorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAzICsKKyBkb2MvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAg ICAgICAgfCAgIDEgKworIGRvYy9hYnJ0LWR1bXAtam91cm5hbC1vb3BzLnR4dCAgICAgICB8ICA2 OCArKysrKysKKyBpbml0LXNjcmlwdHMvYWJydC1vb3BzLnNlcnZpY2UgICAgICAgfCAgIDQgKy0K KyBwby9QT1RGSUxFUy5pbiAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKworIHNyYy9pbmNs dWRlL2xpYmFicnQuaCAgICAgICAgICAgICAgICB8ICAxOSArKworIHNyYy9saWIva2VybmVsLmMg ICAgICAgICAgICAgICAgICAgICB8IDEwMyArKysrKy0tLS0KKyBzcmMvcGx1Z2lucy9NYWtlZmls ZS5hbSAgICAgICAgICAgICAgfCAgMjMgKysKKyBzcmMvcGx1Z2lucy9hYnJ0LWR1bXAtam91cm5h bC1vb3BzLmMgfCAzOTQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMv cGx1Z2lucy9hYnJ0LWR1bXAtb29wcy5jICAgICAgICAgfCAzMTMgKysrKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIHNyYy9wbHVnaW5zL2FicnQtam91cm5hbC5jICAgICAgICAgICB8IDI5NSAr KysrKysrKysrKysrKysrKysrKysrKysrKworIHNyYy9wbHVnaW5zL2FicnQtam91cm5hbC5oICAg ICAgICAgICB8IDExMCArKysrKysrKysrCisgc3JjL3BsdWdpbnMvb29wcy11dGlscy5jICAgICAg ICAgICAgIHwgMjc5ICsrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvcGx1Z2lucy9vb3Bz LXV0aWxzLmggICAgICAgICAgICAgfCAgNDggKysrKysKKyAxNSBmaWxlcyBjaGFuZ2VkLCAxMzUz IGluc2VydGlvbnMoKyksIDMxMCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZG9j L2FicnQtZHVtcC1qb3VybmFsLW9vcHMudHh0CisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9wbHVn aW5zL2FicnQtZHVtcC1qb3VybmFsLW9vcHMuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGx1 Z2lucy9hYnJ0LWpvdXJuYWwuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGx1Z2lucy9hYnJ0 LWpvdXJuYWwuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvcGx1Z2lucy9vb3BzLXV0aWxzLmMK KyBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3BsdWdpbnMvb29wcy11dGlscy5oCisKK2RpZmYgLS1n aXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGMwNTFlYzUuLjAzODgyZTkg MTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE0MCw2 ICsxNDAsNyBAQCBQS0dfQ0hFQ0tfTU9EVUxFUyhbTElCUkVQT1JUX0dUS10sIFtsaWJyZXBvcnQt Z3RrXSkKKyBQS0dfQ0hFQ0tfTU9EVUxFUyhbUE9MS0lUXSwgW3BvbGtpdC1nb2JqZWN0LTFdKQor IFBLR19DSEVDS19NT0RVTEVTKFtHSU9dLCBbZ2lvLTIuMF0pCisgUEtHX0NIRUNLX01PRFVMRVMo W1NBVFlSXSwgW3NhdHlyXSkKKytQS0dfQ0hFQ0tfTU9EVUxFUyhbU1lTVEVNRF9KT1VSTkFMXSwg W2xpYnN5c3RlbWQtam91cm5hbF0pCisgCisgUEtHX1BST0dfUEtHX0NPTkZJRworIEFDX0FSR19X SVRIKFtzeXN0ZW1kc3lzdGVtdW5pdGRpcl0sCitAQCAtMTY3LDYgKzE2OCw3IEBAIEFDX0NIRUNL X0hFQURFUlMoW2xvY2FsZS5oXSkKKyBDT05GX0RJUj0nJHtzeXNjb25mZGlyfS8ke1BBQ0tBR0Vf TkFNRX0nCisgREVGQVVMVF9DT05GX0RJUj0nJHtkYXRhZGlyfS8ke1BBQ0tBR0VfTkFNRX0vY29u Zi5kJworIFZBUl9SVU49JyR7bG9jYWxzdGF0ZWRpcn0vcnVuJworK1ZBUl9TVEFURT0nJHtsb2Nh bHN0YXRlZGlyfS9saWIvJHtQQUNLQUdFX05BTUV9JworIFBMVUdJTlNfQ09ORl9ESVI9JyR7c3lz Y29uZmRpcn0vJHtQQUNLQUdFX05BTUV9L3BsdWdpbnMnCisgREVGQVVMVF9QTFVHSU5TX0NPTkZf RElSPScke2RhdGFkaXJ9LyR7UEFDS0FHRV9OQU1FfS9jb25mLmQvcGx1Z2lucycKKyBFVkVOVFNf RElSPScke2RhdGFkaXJ9L2xpYnJlcG9ydC9ldmVudHMnCitAQCAtMjU1LDYgKzI1Nyw3IEBAIEFD X0FSR19FTkFCTEUoW25hdGl2ZS11bndpbmRlcl0sCisgQUNfU1VCU1QoQ09ORl9ESVIpCisgQUNf U1VCU1QoREVGQVVMVF9DT05GX0RJUikKKyBBQ19TVUJTVChWQVJfUlVOKQorK0FDX1NVQlNUKFZB Ul9TVEFURSkKKyBBQ19TVUJTVChQTFVHSU5TX0NPTkZfRElSKQorIEFDX1NVQlNUKERFRkFVTFRf UExVR0lOU19DT05GX0RJUikKKyBBQ19TVUJTVChFVkVOVFNfQ09ORl9ESVIpCitkaWZmIC0tZ2l0 IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCitpbmRleCA1NWNiMGYzLi4wNjRl MmJhIDEwMDY0NAorLS0tIGEvZG9jL01ha2VmaWxlLmFtCisrKysgYi9kb2MvTWFrZWZpbGUuYW0K K0BAIC0xOSw2ICsxOSw3IEBAIE1BTjFfVFhUICs9IGFicnQtYWN0aW9uLXBlcmZvcm0tY2NwcC1h bmFseXNpcy50eHQKKyBNQU4xX1RYVCArPSBhYnJ0LWFjdGlvbi1ub3RpZnkudHh0CisgTUFOMV9U WFQgKz0gYWJydC1hcHBsZXQudHh0CisgTUFOMV9UWFQgKz0gYWJydC1kdW1wLW9vcHMudHh0Cisr TUFOMV9UWFQgKz0gYWJydC1kdW1wLWpvdXJuYWwtb29wcy50eHQKKyBNQU4xX1RYVCArPSBhYnJ0 LWR1bXAteG9yZy50eHQKKyBNQU4xX1RYVCArPSBhYnJ0LWF1dG8tcmVwb3J0aW5nLnR4dAorIE1B TjFfVFhUICs9IGFicnQtcmV0cmFjZS1jbGllbnQudHh0CitkaWZmIC0tZ2l0IGEvZG9jL2FicnQt ZHVtcC1qb3VybmFsLW9vcHMudHh0IGIvZG9jL2FicnQtZHVtcC1qb3VybmFsLW9vcHMudHh0Citu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTBiOGQ3OQorLS0tIC9kZXYvbnVs bAorKysrIGIvZG9jL2FicnQtZHVtcC1qb3VybmFsLW9vcHMudHh0CitAQCAtMCwwICsxLDY4IEBA CisrYWJydC1kdW1wLWpvdXJuYWwtb29wcygxKQorKz09PT09PT09PT09PT09PT09PT09PT09PT0K KysKKytOQU1FCisrLS0tLQorK2FicnQtZHVtcC1qb3VybmFsLW9vcHMgLSBFeHRyYWN0IG9vcHMg ZnJvbSBzeXN0ZW1kLWpvdXJuYWwKKysKKytTWU5PUFNJUworKy0tLS0tLS0tCisrJ2FicnQtZHVt cC1qb3VybmFsLW9vcHMnIFstdnNveHRmXSBbLWVdL1stYyBDVVJTT1JdIFstZCBESVJdL1stRF0K KysKKytERVNDUklQVElPTgorKy0tLS0tLS0tLS0tCisrVGhpcyB0b29sIGNyZWF0ZXMgcHJvYmxl bSBkaXJlY3RvcnkgZnJvbSBvb3BzIGV4dHJhY3RlZCBmcm9tIHN5c3RlbWQtam91cm5hbC4KKytU aGUgdG9vbCBjYW4gZm9sbG93IHN5c3RlbWQtam91cm5hbCBhbmQgZXh0cmFjdCBvb3BzZXMgaW4g dGltZSBvZiB0aGVpcgorK29jY3VycmVuY2UuCisrCisrVGhlIGZvbGxvd2luZyBzdGFydCBmcm9t IHRoZSBsYXN0IHNlZW4gY3Vyc29yLiBJZiB0aGUgbGFzdCBzZWVuIGN1cnNvciBmaWxlCisrZG9l cyBub3QgZXhpc3QsIHRoZSBmb2xsb3dpbmcgc3RhcnQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSBz eXRlbWQtam91cm5hbCBvcgorK2Zyb20gdGhlIGVuZCBpZiAnLWUnIG9wdGlvbiBpcyBzcGVjaWZp ZWQuCisrCisrRklMRVMKKystLS0tLQorKy9ldGMvYWJydC9wbHVnaW5zL29vcHMuY29uZjo6Cisr ICAgQ29uZmlndXJhdGlvbiBmaWxlIHdoZXJlIHVzZXIgY2FuIGRpc2FibGUgZGV0ZWN0aW9uIG9m IG5vbi1mYXRhbCBNQ0VzCisrCisrL3Zhci9saWIvYWJydC9hYnJ0LWR1bXAtam91cm5hbC1vb3Bz LnN0YXRlOjoKKysgICBTdGF0ZSBmaWxlIHdoZXJlIHN5c3RlbWQtam91cm5hbCBjdXJzb3IgdG8g dGhlIGxhc3Qgc2VlbiBtZXNzYWdlIGlzIHNhdmVkCisrCisrT1BUSU9OUworKy0tLS0tLS0KKyst diwgLS12ZXJib3NlOjoKKysgICBCZSBtb3JlIHZlcmJvc2UuIENhbiBiZSBnaXZlbiBtdWx0aXBs ZSB0aW1lcy4KKysKKystczo6CisrICAgTG9nIHRvIHN5c2xvZworKworKy1vOjoKKysgICBQcmlu dCBmb3VuZCBvb3BzZXMgb24gc3RhbmRhcmQgb3V0cHV0CisrCisrLWQgRElSOjoKKysgICBDcmVh dGUgbmV3IHByb2JsZW0gZGlyZWN0b3J5IGluIERJUiBmb3IgZXZlcnkgb29wcyBmb3VuZAorKwor Ky1EOjoKKysgICBTYW1lIGFzIC1kIER1bXBMb2NhdGlvbiwgRHVtcExvY2F0aW9uIGlzIHNwZWNp ZmllZCBpbiBhYnJ0LmNvbmYKKysKKystcyBDVVJTT1I6OgorKyAgIFN0YXJ0cyBzY2FubmlnIHN5 c3RlbWQtam91cm5hbCBmcm9tIENVUlNPUgorKworKy1lOjoKKysgICBTdGFydHMgZm9sbG93aW5n IHN5c3RlbWQtam91cm5hbCBmcm9tIHRoZSBlbmQKKysKKysteDo6CisrICAgTWFrZSB0aGUgcHJv YmxlbSBkaXJlY3Rvcnkgd29ybGQgcmVhZGFibGUuIFVzYWJsZSBvbmx5IHdpdGggLWQvLUQKKysK KystdDo6CisrICAgVGhyb3R0bGUgcHJvYmxlbSBkaXJlY3RvcnkgY3JlYXRpb24gdG8gMSBwZXIg c2Vjb25kCisrCisrLWY6OgorKyAgIEZvbGxvdyBzeXN0ZW1kLWpvdXJuYWwKKysKKytTRUUgQUxT TworKy0tLS0tLS0tCisrYWJydC5jb25mKDUpCisrCisrQVVUSE9SUworKy0tLS0tLS0KKysqIEFC UlQgdGVhbQorZGlmZiAtLWdpdCBhL2luaXQtc2NyaXB0cy9hYnJ0LW9vcHMuc2VydmljZSBiL2lu aXQtc2NyaXB0cy9hYnJ0LW9vcHMuc2VydmljZQoraW5kZXggZDhhYzAyOC4uNjlhYWFhOSAxMDA2 NDQKKy0tLSBhL2luaXQtc2NyaXB0cy9hYnJ0LW9vcHMuc2VydmljZQorKysrIGIvaW5pdC1zY3Jp cHRzL2FicnQtb29wcy5zZXJ2aWNlCitAQCAtNCw4ICs0LDggQEAgQWZ0ZXI9YWJydGQuc2Vydmlj ZQorIFJlcXVpc2l0ZT1hYnJ0ZC5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCistIyBUT0RPOiBkbyB3 ZSByZWFsbHkgbmVlZCBhYnNvbHV0ZSBwYXRocyBoZXJlPworLUV4ZWNTdGFydD0vYmluL3NoIC1j ICcvYmluL2RtZXNnIHwgL3Vzci9iaW4vYWJydC1kdW1wLW9vcHMgLXhEOyBleGVjIC91c3IvYmlu L2FicnQtd2F0Y2gtbG9nIC1GICJgL3Vzci9iaW4vYWJydC1kdW1wLW9vcHMgLW1gIiAvdmFyL2xv Zy9tZXNzYWdlcyAtLSAvdXNyL2Jpbi9hYnJ0LWR1bXAtb29wcyAteHREJworKyMgc3lzdGVtZCBy ZXF1aXJlcyBhYnNvbHV0ZSBwYXRocyB0byBleGVjdXRhYmxlcworK0V4ZWNTdGFydD0vdXNyL2Jp bi9hYnJ0LWR1bXAtam91cm5hbC1vb3BzIC1meHRECisgCisgW0luc3RhbGxdCisgV2FudGVkQnk9 bXVsdGktdXNlci50YXJnZXQKK2RpZmYgLS1naXQgYS9wby9QT1RGSUxFUy5pbiBiL3BvL1BPVEZJ TEVTLmluCitpbmRleCBmZjliOTdhLi4xNjBjZDhiIDEwMDY0NAorLS0tIGEvcG8vUE9URklMRVMu aW4KKysrKyBiL3BvL1BPVEZJTEVTLmluCitAQCAtMzUsMTIgKzM1LDE0IEBAIHNyYy9wbHVnaW5z L2FicnQtYWN0aW9uLXRyaW0tZmlsZXMuYworIHNyYy9wbHVnaW5zL2FicnQtZ2RiLWV4cGxvaXRh YmxlCisgc3JjL3BsdWdpbnMvYWJydC13YXRjaC1sb2cuYworIHNyYy9wbHVnaW5zL2FicnQtZHVt cC1vb3BzLmMKKytzcmMvcGx1Z2lucy9hYnJ0LWR1bXAtam91cm5hbC1vb3BzLmMKKyBzcmMvcGx1 Z2lucy9hYnJ0LWR1bXAteG9yZy5jCisgc3JjL3BsdWdpbnMvYWJydC1yZXRyYWNlLWNsaWVudC5j Cisgc3JjL3BsdWdpbnMvYW5hbHl6ZV9Mb2NhbEdEQi54bWwuaW4KKyBzcmMvcGx1Z2lucy9hbmFs eXplX1JldHJhY2VTZXJ2ZXIueG1sLmluCisgc3JjL3BsdWdpbnMvY29sbGVjdF94c2Vzc2lvbl9l cnJvcnMueG1sLmluCisgc3JjL3BsdWdpbnMvaHR0cHMtdXRpbHMuYworK3NyYy9wbHVnaW5zL29v cHMtdXRpbHMuYworIHNyYy9wbHVnaW5zL2JvZGhpLmMKKyAKKyBzcmMvaG9va3MvYWJydC1tZXJn ZS1wc3RvcmVvb3BzLmMKK2RpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9saWJhYnJ0LmggYi9zcmMv aW5jbHVkZS9saWJhYnJ0LmgKK2luZGV4IGQ2ZWI0YTUuLjM3NzA0ZGQgMTAwNjQ0CistLS0gYS9z cmMvaW5jbHVkZS9saWJhYnJ0LmgKKysrKyBiL3NyYy9pbmNsdWRlL2xpYmFicnQuaAorQEAgLTEw OSw4ICsxMDksMjcgQEAgY2hhciAqa2VybmVsX3RhaW50ZWRfbG9uZyhjb25zdCBjaGFyICp0YWlu dGVkX3Nob3J0KTsKKyBpbnQga29vcHNfaGFzaF9zdHJfZXh0KGNoYXIgaGFzaF9zdHJbU0hBMV9S RVNVTFRfTEVOKjIgKyAxXSwgY29uc3QgY2hhciAqb29wc19idWYsIGludCBmcmFtZV9jb3VudCwg aW50IGR1cGhhc19mbGFncyk7CisgI2RlZmluZSBrb29wc19oYXNoX3N0ciBhYnJ0X2tvb3BzX2hh c2hfc3RyCisgaW50IGtvb3BzX2hhc2hfc3RyKGNoYXIgaGFzaF9zdHJbU0hBMV9SRVNVTFRfTEVO KjIgKyAxXSwgY29uc3QgY2hhciAqb29wc19idWYpOworKworKworKyNkZWZpbmUga29vcHNfbGlu ZV9za2lwX2xldmVsIGFicnRfa29vcHNfbGluZV9za2lwX2xldmVsCisraW50IGtvb3BzX2xpbmVf c2tpcF9sZXZlbChjb25zdCBjaGFyICoqYyk7CisrI2RlZmluZSBrb29wc19saW5lX3NraXBfamlm ZmllcyBhYnJ0X2tvb3BzX2xpbmVfc2tpcF9qaWZmaWVzCisrdm9pZCBrb29wc19saW5lX3NraXBf amlmZmllcyhjb25zdCBjaGFyICoqYyk7CisrCisrLyoKKysgKiBleHRyYWN0X29vcHMgdHJpZXMg dG8gZmluZCBvb3BzIHNpZ25hdHVyZXMgaW4gYSBsb2cKKysgKi8KKytzdHJ1Y3QgYWJydF9rb29w c19saW5lX2luZm8geworKyAgICBjaGFyICpwdHI7CisrICAgIGludCBsZXZlbDsKKyt9OworKwor KyNkZWZpbmUga29vcHNfZXh0cmFjdF9vb3BzZXNfZnJvbV9saW5lcyBhYnJ0X2tvb3BzX2V4dHJh Y3Rfb29wc2VzX2Zyb21fbGluZXMKKyt2b2lkIGtvb3BzX2V4dHJhY3Rfb29wc2VzX2Zyb21fbGlu ZXMoR0xpc3QgKipvb3BzX2xpc3QsIGNvbnN0IHN0cnVjdCBhYnJ0X2tvb3BzX2xpbmVfaW5mbyAq bGluZXNfaW5mbywgaW50IGxpbmVzX2luZm9fc2l6ZSk7CisgI2RlZmluZSBrb29wc19leHRyYWN0 X29vcHNlcyBhYnJ0X2tvb3BzX2V4dHJhY3Rfb29wc2VzCisgdm9pZCBrb29wc19leHRyYWN0X29v cHNlcyhHTGlzdCAqKm9vcHNfbGlzdCwgY2hhciAqYnVmZmVyLCBzaXplX3QgYnVmbGVuKTsKKysj ZGVmaW5lIGtvb3BzX3N1c3BpY2lvdXNfc3RyaW5nc19saXN0IGFicnRfa29vcHNfc3VzcGljaW91 c19zdHJpbmdzX2xpc3QKKytHTGlzdCAqa29vcHNfc3VzcGljaW91c19zdHJpbmdzX2xpc3Qodm9p ZCk7CisgI2RlZmluZSBrb29wc19wcmludF9zdXNwaWNpb3VzX3N0cmluZ3MgYWJydF9rb29wc19w cmludF9zdXNwaWNpb3VzX3N0cmluZ3MKKyB2b2lkIGtvb3BzX3ByaW50X3N1c3BpY2lvdXNfc3Ry aW5ncyh2b2lkKTsKKyAvKioKK2RpZmYgLS1naXQgYS9zcmMvbGliL2tlcm5lbC5jIGIvc3JjL2xp Yi9rZXJuZWwuYworaW5kZXggYjJkNzJiNi4uYmU4MGNiYyAxMDA2NDQKKy0tLSBhL3NyYy9saWIv a2VybmVsLmMKKysrKyBiL3NyYy9saWIva2VybmVsLmMKK0BAIC0yMiwyMSArMjIsMTIgQEAKKyAj ZGVmaW5lIF9HTlVfU09VUkNFIDEgLyogZm9yIHN0cmNhc2VzdHIgKi8KKyAjaW5jbHVkZSAibGli YWJydC5oIgorIAorLS8qCistICogZXh0cmFjdF9vb3BzIHRyaWVzIHRvIGZpbmQgb29wcyBzaWdu YXR1cmVzIGluIGEgbG9nCistICovCistCistc3RydWN0IGxpbmVfaW5mbyB7CistICAgIGNoYXIg KnB0cjsKKy0gICAgY2hhciBsZXZlbDsKKy19OworLQorIC8qIFVzZWQgdG8gYmUgMTAwLCBidXQg c29tZSBNQ0Ugb29wc2VzIGFyZSBzaG9ydDoKKyAgKiAiQ1BVIDA6IE1hY2hpbmUgQ2hlY2sgRXhj ZXB0aW9uOiAwMDAwMDAwMDAwMDAwMDA3IgorICAqLworICNkZWZpbmUgU0FORV9NSU5fT09QU19M RU4gMzAKKyAKKy1zdGF0aWMgdm9pZCByZWNvcmRfb29wcyhHTGlzdCAqKm9vcHNfbGlzdCwgc3Ry dWN0IGxpbmVfaW5mbyogbGluZXNfaW5mbywgaW50IG9vcHNzdGFydCwgaW50IG9vcHNlbmQpCisr c3RhdGljIHZvaWQgcmVjb3JkX29vcHMoR0xpc3QgKipvb3BzX2xpc3QsIGNvbnN0IHN0cnVjdCBh YnJ0X2tvb3BzX2xpbmVfaW5mbyogbGluZXNfaW5mbywgaW50IG9vcHNzdGFydCwgaW50IG9vcHNl bmQpCisgeworICAgICBpbnQgcTsKKyAgICAgaW50IGxlbjsKK0BAIC0xNjEsNiArMTUyLDE1IEBA IHZvaWQga29vcHNfcHJpbnRfc3VzcGljaW91c19zdHJpbmdzKHZvaWQpCisgICAgIGtvb3BzX3By aW50X3N1c3BpY2lvdXNfc3RyaW5nc19maWx0ZXJlZChOVUxMKTsKKyB9CisgCisrR0xpc3QgKmtv b3BzX3N1c3BpY2lvdXNfc3RyaW5nc19saXN0KHZvaWQpCisreworKyAgICBHTGlzdCAqc3RyaW5n cyA9IE5VTEw7CisrICAgIGZvciAoY29uc3QgY2hhciAqY29uc3QgKnN0ciA9IHNfa29vcHNfc3Vz cGljaW91c19zdHJpbmdzOyAqc3RyOyArK3N0cikKKysgICAgICAgIHN0cmluZ3MgPSBnX2xpc3Rf cHJlcGVuZChzdHJpbmdzLCAoZ3BvaW50ZXIpKnN0cik7CisrCisrICAgIHJldHVybiBzdHJpbmdz OworK30KKysKKyBzdGF0aWMgYm9vbCBtYXRjaF9hbnkoY29uc3QgcmVnZXhfdCAqKnJlcywgY29u c3QgY2hhciAqc3RyKQorIHsKKyAgICAgZm9yIChjb25zdCByZWdleF90ICoqciA9IHJlczsgKnIg IT0gTlVMTDsgKytyKQorQEAgLTE4OSwxMiArMTg5LDU3IEBAIHZvaWQga29vcHNfcHJpbnRfc3Vz cGljaW91c19zdHJpbmdzX2ZpbHRlcmVkKGNvbnN0IHJlZ2V4X3QgKipmaWx0ZXJvdXQpCisgICAg IH0KKyB9CisgCisrCisrdm9pZCBrb29wc19saW5lX3NraXBfamlmZmllcyhjb25zdCBjaGFyICoq YykKKyt7CisrICAgIC8qIHJlbW92ZSBqaWZmaWVzIHRpbWUgc3RhbXAgY291bnRlciBpZiBwcmVz ZW50CisrICAgICAqIGppZmZpZXMgYXJlIHVuc2lnbmVkIGxvbmcsIHNvIGl0IGNhbiBiZSAyXjY0 IGxvbmcsIHdoaWNoIGlzCisrICAgICAqIDIwIGRlY2ltYWwgZGlnaXRzCisrICAgICAqLworKyAg ICBpZiAoKipjID09ICdbJykKKysgICAgeworKyAgICAgICAgY29uc3QgY2hhciAqYzIgPSBzdHJj aHIoKmMsICcuJyk7CisrICAgICAgICBjb25zdCBjaGFyICpjMyA9IHN0cmNocigqYywgJ10nKTsK KysgICAgICAgIGlmIChjMiAmJiBjMyAmJiAoYzIgPCBjMykgJiYgKGMzLSpjKSA8IDIxKQorKyAg ICAgICAgeworKyAgICAgICAgICAgICpjID0gYzMgKyAxOworKyAgICAgICAgICAgIGlmICgqKmMg PT0gJyAnKQorKyAgICAgICAgICAgICAgICAoKmMpKys7CisrICAgICAgICB9CisrICAgIH0KKyt9 CisrCisraW50IGtvb3BzX2xpbmVfc2tpcF9sZXZlbChjb25zdCBjaGFyICoqYykKKyt7CisrICAg IGludCBsaW5lbGV2ZWwgPSAwOworKyAgICBpZiAoKipjID09ICc8JykKKysgICAgeworKyAgICAg ICAgY29uc3QgY2hhciAqcHRyID0gKmMgKyAxOworKyAgICAgICAgd2hpbGUgKGlzZGlnaXQoKnB0 cikpCisrICAgICAgICAgICAgKytwdHI7CisrCisrICAgICAgICBpZiAoKnB0ciA9PSAnPicgJiYg KHB0ciAtICpjID4gMSkpCisrICAgICAgICB7CisrICAgICAgICAgICAgY29uc3QgY2hhciAqY29u c3QgYmNrID0gcHRyICsgMTsKKysgICAgICAgICAgICB1bnNpZ25lZCBleHAgPSAxOworKyAgICAg ICAgICAgIHdoaWxlICgtLXB0ciAhPSAqYykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAg ICAgIGxpbmVsZXZlbCArPSAoKnB0ciAtICcwJykgKiBleHA7CisrICAgICAgICAgICAgICAgIGV4 cCAqPSAxMDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgKmMgPSBiY2s7CisrICAgICAg ICB9CisrICAgIH0KKysKKysgICAgcmV0dXJuIGxpbmVsZXZlbDsKKyt9CisrCisgdm9pZCBrb29w c19leHRyYWN0X29vcHNlcyhHTGlzdCAqKm9vcHNfbGlzdCwgY2hhciAqYnVmZmVyLCBzaXplX3Qg YnVmbGVuKQorIHsKKyAgICAgY2hhciAqYzsKKyAgICAgaW50IGxpbmVjb3VudCA9IDA7CisgICAg IGludCBsaW5lc19pbmZvX3NpemUgPSAwOworLSAgICBzdHJ1Y3QgbGluZV9pbmZvICpsaW5lc19p bmZvID0gTlVMTDsKKysgICAgc3RydWN0IGFicnRfa29vcHNfbGluZV9pbmZvICpsaW5lc19pbmZv ID0gTlVMTDsKKyAKKyAgICAgLyogU3BsaXQgYnVmZmVyIGludG8gbGluZXMgKi8KKyAKK0BAIC0y NTQsMjggKzI5OSwxMCBAQCB2b2lkIGtvb3BzX2V4dHJhY3Rfb29wc2VzKEdMaXN0ICoqb29wc19s aXN0LCBjaGFyICpidWZmZXIsIHNpemVfdCBidWZsZW4pCisgICAgICAgICAgICAgYyA9IGtlcm5l bF9zdHIgKyBzaXplb2YoImtlcm5lbDogIiktMTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGxp bmVsZXZlbCA9IDA7CisgICAgICAgICAvKiBzdG9yZSBhbmQgcmVtb3ZlIGtlcm5lbCBsb2cgbGV2 ZWwgKi8KKy0gICAgICAgIGlmICgqYyA9PSAnPCcgJiYgY1sxXSAmJiBjWzJdID09ICc+JykKKy0g ICAgICAgIHsKKy0gICAgICAgICAgICBsaW5lbGV2ZWwgPSBjWzFdOworLSAgICAgICAgICAgIGMg Kz0gMzsKKy0gICAgICAgIH0KKy0gICAgICAgIC8qIHJlbW92ZSBqaWZmaWVzIHRpbWUgc3RhbXAg Y291bnRlciBpZiBwcmVzZW50CistICAgICAgICAgKiBqaWZmaWVzIGFyZSB1bnNpZ25lZCBsb25n LCBzbyBpdCBjYW4gYmUgMl42NCBsb25nLCB3aGljaCBpcworLSAgICAgICAgICogMjAgZGVjaW1h bCBkaWdpdHMKKy0gICAgICAgICAqLworLSAgICAgICAgaWYgKCpjID09ICdbJykKKy0gICAgICAg IHsKKy0gICAgICAgICAgICBjaGFyICpjMiA9IHN0cmNocihjLCAnLicpOworLSAgICAgICAgICAg IGNoYXIgKmMzID0gc3RyY2hyKGMsICddJyk7CistICAgICAgICAgICAgaWYgKGMyICYmIGMzICYm IChjMiA8IGMzKSAmJiAoYzMtYykgPCAyMSkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAg ICAgIGMgPSBjMyArIDE7CistICAgICAgICAgICAgICAgIGlmICgqYyA9PSAnICcpCistICAgICAg ICAgICAgICAgICAgICBjKys7CistICAgICAgICAgICAgfQorLSAgICAgICAgfQorKyAgICAgICAg bGluZWxldmVsID0ga29vcHNfbGluZV9za2lwX2xldmVsKChjb25zdCBjaGFyICoqKSZjKTsKKysg ICAgICAgIGtvb3BzX2xpbmVfc2tpcF9qaWZmaWVzKChjb25zdCBjaGFyICoqKSZjKTsKKysKKyAg ICAgICAgIGlmICgobGluZXNfaW5mb19zaXplICYgMHhmZmYpID09IDApCisgICAgICAgICB7Cisg ICAgICAgICAgICAgbGluZXNfaW5mbyA9IHhyZWFsbG9jKGxpbmVzX2luZm8sIChsaW5lc19pbmZv X3NpemUgKyAweDEwMDApICogc2l6ZW9mKGxpbmVzX2luZm9bMF0pKTsKK0BAIC0yODcsNiArMzE0 LDEyIEBAIG5leHRfbGluZToKKyAgICAgICAgIGMgPSBjOSArIDE7CisgICAgIH0KKyAKKysgICAg a29vcHNfZXh0cmFjdF9vb3BzZXNfZnJvbV9saW5lcyhvb3BzX2xpc3QsIGxpbmVzX2luZm8sIGxp bmVzX2luZm9fc2l6ZSk7CisrICAgIGZyZWUobGluZXNfaW5mbyk7CisrfQorKworK3ZvaWQga29v cHNfZXh0cmFjdF9vb3BzZXNfZnJvbV9saW5lcyhHTGlzdCAqKm9vcHNfbGlzdCwgY29uc3Qgc3Ry dWN0IGFicnRfa29vcHNfbGluZV9pbmZvICpsaW5lc19pbmZvLCBpbnQgbGluZXNfaW5mb19zaXpl KQorK3sKKyAgICAgLyogQW5hbHl6ZSBsaW5lcyAqLworIAorICAgICBpbnQgaTsKK0BAIC0zMjMs OCArMzU2LDYgQEAgbmV4dF9saW5lOgorICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAg LyogZGVidWcgaW5mb3JtYXRpb24gKi8KKyAgICAgICAgICAgICAgICAgbG9nX2RlYnVnKCJGb3Vu ZCBvb3BzIGF0IGxpbmUgJWQ6ICclcyciLCBvb3Bzc3RhcnQsIGxpbmVzX2luZm9bb29wc3N0YXJ0 XS5wdHIpOworLSAgICAgICAgICAgICAgICBpZiAob29wc3N0YXJ0ICE9IGkpCistICAgICAgICAg ICAgICAgICAgICAgICAgbG9nX2RlYnVnKCJUcmlnZ2VyIGxpbmUgaXMgJWQ6ICclcyciLCBpLCBj KTsKKyAgICAgICAgICAgICAgICAgLyogdHJ5IHRvIGZpbmQgdGhlIGVuZCBtYXJrZXIgKi8KKyAg ICAgICAgICAgICAgICAgaW50IGkyID0gaSArIDE7CisgICAgICAgICAgICAgICAgIHdoaWxlIChp MiA8IGxpbmVzX2luZm9fc2l6ZSAmJiBpMiA8IChpKzUwKSkKK0BAIC00NzEsMTAgKzUwMiw3IEBA IG5leHRfbGluZToKKyAgICAgICAgICAgICByZWNvcmRfb29wcyhvb3BzX2xpc3QsIGxpbmVzX2lu Zm8sIG9vcHNzdGFydCwgb29wc3N0YXJ0KTsKKyAgICAgICAgIH0KKyAgICAgfQorLQorLSAgICBm cmVlKGxpbmVzX2luZm8pOworIH0KKy0KKyBpbnQga29vcHNfaGFzaF9zdHJfZXh0KGNoYXIgcmVz dWx0W1NIQTFfUkVTVUxUX0xFTioyICsgMV0sIGNvbnN0IGNoYXIgKm9vcHNfYnVmLCBpbnQgZnJh bWVfY291bnQsIGludCBkdXBoYXNoX2ZsYWdzKQorIHsKKyAgICAgY2hhciAqaGFzaF9zdHIgPSBO VUxMLCAqZXJyb3IgPSBOVUxMOworQEAgLTUwNyw2ICs1MzUsNyBAQCBpbnQga29vcHNfaGFzaF9z dHJfZXh0KGNoYXIgcmVzdWx0W1NIQTFfUkVTVUxUX0xFTioyICsgMV0sIGNvbnN0IGNoYXIgKm9v cHNfYnVmLAorICAgICAgICAgZWxzZQorICAgICAgICAgICAgIGxvZygiTm90aGluZyB1c2VmdWwg Zm9yIGR1cGhhc2giKTsKKyAKKysKKyAgICAgICAgIGZyZWUoaGFzaF9zdHIpOworICAgICB9Cisg CitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvTWFrZWZpbGUuYW0gYi9zcmMvcGx1Z2lucy9NYWtl ZmlsZS5hbQoraW5kZXggMTRiNmZlMC4uYTgwNGY4MiAxMDA2NDQKKy0tLSBhL3NyYy9wbHVnaW5z L01ha2VmaWxlLmFtCisrKysgYi9zcmMvcGx1Z2lucy9NYWtlZmlsZS5hbQorQEAgLTE1LDYgKzE1 LDcgQEAgYmluX1NDUklQVFMgPSBcCisgYmluX1BST0dSQU1TID0gXAorICAgICBhYnJ0LXdhdGNo LWxvZyBcCisgICAgIGFicnQtZHVtcC1vb3BzIFwKKysgICAgYWJydC1kdW1wLWpvdXJuYWwtb29w cyBcCisgICAgIGFicnQtZHVtcC14b3JnIFwKKyAgICAgYWJydC1hY3Rpb24tYW5hbHl6ZS1jIFwK KyAgICAgYWJydC1hY3Rpb24tYW5hbHl6ZS1weXRob24gXAorQEAgLTk3LDYgKzk4LDggQEAgRVhU UkFfRElTVCA9IFwKKyAgICAgYWJydC1hY3Rpb24tdXJlcG9ydCBcCisgICAgIGFicnQtZ2RiLWV4 cGxvaXRhYmxlIFwKKyAgICAgaHR0cHMtdXRpbHMuaCBcCisrICAgIG9vcHMtdXRpbHMuaCBcCisr ICAgIGFicnQtam91cm5hbC5oIFwKKyAgICAgcG9zdF9yZXBvcnQueG1sLmluIFwKKyAgICAgYWJy dC1hY3Rpb24tYW5hbHl6ZS1jY3BwLWxvY2FsLmluCisgCitAQCAtMTIwLDYgKzEyMyw3IEBAIGFi cnRfd2F0Y2hfbG9nX0xEQUREID0gXAorICAgICAuLi9saWIvbGliYWJydC5sYQorIAorIGFicnRf ZHVtcF9vb3BzX1NPVVJDRVMgPSBcCisrICAgIG9vcHMtdXRpbHMuYyBcCisgICAgIGFicnQtZHVt cC1vb3BzLmMKKyBhYnJ0X2R1bXBfb29wc19DUFBGTEFHUyA9IFwKKyAgICAgLUkkKHNyY2Rpcikv Li4vaW5jbHVkZSBcCitAQCAtMTMzLDYgKzEzNywyNSBAQCBhYnJ0X2R1bXBfb29wc19MREFERCA9 IFwKKyAgICAgJChMSUJSRVBPUlRfTElCUykgXAorICAgICAuLi9saWIvbGliYWJydC5sYQorIAor K2FicnRfZHVtcF9qb3VybmFsX29vcHNfU09VUkNFUyA9IFwKKysgICAgb29wcy11dGlscy5jIFwK KysgICAgYWJydC1qb3VybmFsLmMgXAorKyAgICBhYnJ0LWR1bXAtam91cm5hbC1vb3BzLmMKKyth YnJ0X2R1bXBfam91cm5hbF9vb3BzX0NQUEZMQUdTID0gXAorKyAgICAtSSQoc3JjZGlyKS8uLi9p bmNsdWRlIFwKKysgICAgLUkkKHNyY2RpcikvLi4vbGliIFwKKysgICAgJChHTElCX0NGTEFHUykg XAorKyAgICAkKExJQlJFUE9SVF9DRkxBR1MpIFwKKysgICAgJChTWVNURU1EX0pPVVJOQUxfQ0ZM QUdTKSBcCisrICAgIC1EREVGQVVMVF9EVU1QX0RJUl9NT0RFPSQoREVGQVVMVF9EVU1QX0RJUl9N T0RFKSBcCisrICAgIC1EVkFSX1NUQVRFPVwiJChWQVJfU1RBVEUpXCIgXAorKyAgICAtRF9HTlVf U09VUkNFCisrYWJydF9kdW1wX2pvdXJuYWxfb29wc19MREFERCA9IFwKKysgICAgJChHTElCX0xJ QlMpIFwKKysgICAgJChMSUJSRVBPUlRfTElCUykgXAorKyAgICAkKFNZU1RFTURfSk9VUk5BTF9M SUJTKSBcCisrICAgIC4uL2xpYi9saWJhYnJ0LmxhCisrCisgYWJydF9kdW1wX3hvcmdfU09VUkNF UyA9IFwKKyAgICAgYWJydC1kdW1wLXhvcmcuYworIGFicnRfZHVtcF94b3JnX0NQUEZMQUdTID0g XAorZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2FicnQtZHVtcC1qb3VybmFsLW9vcHMuYyBiL3Ny Yy9wbHVnaW5zL2FicnQtZHVtcC1qb3VybmFsLW9vcHMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQK K2luZGV4IDAwMDAwMDAuLjNmMWY0MTkKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9wbHVnaW5z L2FicnQtZHVtcC1qb3VybmFsLW9vcHMuYworQEAgLTAsMCArMSwzOTQgQEAKKysvKgorKyAqIENv cHlyaWdodCAoQykgMjAxNCAgQUJSVCB0ZWFtCisrICogQ29weXJpZ2h0IChDKSAyMDE0ICBSZWRI YXQgSW5jCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg b3IKKysgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKysgKi8KKysjaW5jbHVkZSAibGliYWJydC5oIgorKyNpbmNsdWRl ICJhYnJ0LWpvdXJuYWwuaCIKKysjaW5jbHVkZSAib29wcy11dGlscy5oIgorKworKyNkZWZpbmUg QUJSVF9KT1VSTkFMX1dBVENIX1NUQVRFX0ZJTEUgVkFSX1NUQVRFIi9hYnJ0LWR1bXAtam91cm5h bC1vb3BzLnN0YXRlIgorKyNkZWZpbmUgQUJSVF9KT1VSTkFMX1dBVENIX1NUQVRFX0ZJTEVfTU9E RSAwNjAwCisrI2RlZmluZSBBQlJUX0pPVVJOQUxfV0FUQ0hfU1RBVEVfRklMRV9NQVhfU1ogKDQg KiAxMDI0KQorKworKy8qIExpbWl0IG51bWJlciBvZiBidWZmZXJlZCBsaW5lcyAqLworKyNkZWZp bmUgQUJSVF9KT1VSTkFMX01BWF9SRUFEX0xJTkVTICgxMDI0ICogMTAyNCkKKysKKysvKiBGb3J3 YXJkIGRlY2xhcmF0aW9ucyAqLworK3N0YXRpYyB2b2lkIHNhdmVfYWJydF9qb3VybmFsX3dhdGNo X3Bvc2l0aW9uKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFyICpmaWxlX25hbWUp OworKworKy8qCisrICogS29vcHMgZXh0cmFjdG9yCisrICovCisrCisrc3RhdGljIEdMaXN0KiBh YnJ0X2pvdXJuYWxfZXh0cmFjdF9rZXJuZWxfb29wcyhhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCkK Kyt7CisrICAgIHNpemVfdCBsaW5lc19pbmZvX2NvdW50ID0gMDsKKysgICAgc2l6ZV90IGxpbmVz X2luZm9fc2l6ZSA9IDMyOworKyAgICBzdHJ1Y3QgYWJydF9rb29wc19saW5lX2luZm8gKmxpbmVz X2luZm8gPSB4bWFsbG9jKGxpbmVzX2luZm9fc2l6ZSAqIHNpemVvZihsaW5lc19pbmZvWzBdKSk7 CisrCisrICAgIGRvCisrICAgIHsKKysgICAgICAgIGNvbnN0IGNoYXIgKmxpbmUgPSBOVUxMOwor KyAgICAgICAgaWYgKGFicnRfam91cm5hbF9nZXRfbG9nX2xpbmUoam91cm5hbCwgJmxpbmUpIDwg MCkKKysgICAgICAgICAgICBlcnJvcl9tc2dfYW5kX2RpZShfKCJDYW5ub3QgcmVhZCBqb3VybmFs IGRhdGEuIikpOworKworKyAgICAgICAgaWYgKGxpbmVzX2luZm9fY291bnQgPT0gbGluZXNfaW5m b19zaXplKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGxpbmVzX2luZm9fc2l6ZSAqPSAyOwor KyAgICAgICAgICAgIGxpbmVzX2luZm8gPSB4cmVhbGxvYyhsaW5lc19pbmZvLCBsaW5lc19pbmZv X3NpemUgKiBzaXplb2YobGluZXNfaW5mb1swXSkpOworKyAgICAgICAgfQorKworKyAgICAgICAg bGluZXNfaW5mb1tsaW5lc19pbmZvX2NvdW50XS5sZXZlbCA9IGtvb3BzX2xpbmVfc2tpcF9sZXZl bCgmbGluZSk7CisrICAgICAgICBrb29wc19saW5lX3NraXBfamlmZmllcygmbGluZSk7CisrCisr ICAgICAgICBsaW5lc19pbmZvW2xpbmVzX2luZm9fY291bnRdLnB0ciA9IHhzdHJkdXAobGluZSk7 CisrCisrICAgICAgICArK2xpbmVzX2luZm9fY291bnQ7CisrICAgIH0KKysgICAgd2hpbGUgKGxp bmVzX2luZm9fY291bnQgPCBBQlJUX0pPVVJOQUxfTUFYX1JFQURfTElORVMKKysgICAgICAgICAg ICAmJiBhYnJ0X2pvdXJuYWxfbmV4dChqb3VybmFsKSA+IDApOworKworKyAgICBHTGlzdCAqb29w c19saXN0ID0gTlVMTDsKKysgICAga29vcHNfZXh0cmFjdF9vb3BzZXNfZnJvbV9saW5lcygmb29w c19saXN0LCBsaW5lc19pbmZvLCBsaW5lc19pbmZvX2NvdW50KTsKKysKKysgICAgbG9nX2RlYnVn KCJFeHRyYWN0ZWQ6ICVkIG9vcHNlcyIsIGdfbGlzdF9sZW5ndGgob29wc19saXN0KSk7CisrCisr ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGluZXNfaW5mb19jb3VudDsgKytpKQorKyAgICAg ICAgZnJlZShsaW5lc19pbmZvW2ldLnB0cik7CisrCisrICAgIGZyZWUobGluZXNfaW5mbyk7Cisr CisrICAgIHJldHVybiBvb3BzX2xpc3Q7CisrfQorKworKy8qCisrICogQW4gYWRhdGFwdGVyIG9m IGFicnRfam91cm5hbF9leHRyYWN0X2tlcm5lbF9vb3BzIGZvciBhYnJ0X2pvdXJuYWxfd2F0Y2hf Y2FsbGJhY2sKKysgKi8KKytzdHJ1Y3Qgd2F0Y2hfam91cm5hbGRfc2V0dGluZ3MKKyt7CisrICAg IGNvbnN0IGNoYXIgKmR1bXBfbG9jYXRpb247CisrICAgIGludCBvb3BzX3V0aWxzX2ZsYWdzOwor K307CisrCisrc3RhdGljIHZvaWQgYWJydF9qb3VybmFsX3dhdGNoX2V4dHJhY3Rfa2VybmVsX29v cHMoYWJydF9qb3VybmFsX3dhdGNoX3QgKndhdGNoLCB2b2lkICpkYXRhKQorK3sKKysgICAgY29u c3Qgc3RydWN0IHdhdGNoX2pvdXJuYWxkX3NldHRpbmdzICpjb25mID0gKGNvbnN0IHN0cnVjdCB3 YXRjaF9qb3VybmFsZF9zZXR0aW5ncyAqKWRhdGE7CisrCisrICAgIGFicnRfam91cm5hbF90ICpq b3VybmFsID0gYWJydF9qb3VybmFsX3dhdGNoX2dldF9qb3VybmFsKHdhdGNoKTsKKysKKysgICAg LyogR2l2ZSBzeXN0ZW1kLWpvdXJuYWwgb25lIHNlY29uZCB0byBzdWNrIGluIGFsbCBrZXJuZWwn cyBzdHJpbmdzICovCisrICAgIGlmIChhYnJ0X29vcHNfc2lnbmFsZWRfc2xlZXAoMSkgPiAwKQor KyAgICB7CisrICAgICAgICBhYnJ0X2pvdXJuYWxfd2F0Y2hfc3RvcCh3YXRjaCk7CisrICAgICAg ICByZXR1cm47CisrICAgIH0KKysKKysgICAgR0xpc3QgKm9vcHNlcyA9IGFicnRfam91cm5hbF9l eHRyYWN0X2tlcm5lbF9vb3BzKGpvdXJuYWwpOworKyAgICBhYnJ0X29vcHNfcHJvY2Vzc19saXN0 KG9vcHNlcywgY29uZi0+ZHVtcF9sb2NhdGlvbiwgY29uZi0+b29wc191dGlsc19mbGFncyk7Cisr ICAgIGdfbGlzdF9mcmVlX2Z1bGwob29wc2VzLCAoR0Rlc3Ryb3lOb3RpZnkpZnJlZSk7CisrCisr ICAgIC8qIFNraXAgc3R1ZmYgd2hpY2ggYXBwZWFyZWQgd2hpbGUgcHJvY2Vzc2luZyBvb3BzIGFz IGl0IGlzIG5vdCBuZWNlc3NhcnkgKi8KKysgICAgLyogdG8gY2F0Y2ggYWxsIGNvbnNlY3V0aXZl IG9vcHNlcyAoYW55d2F5IHN1Y2ggb29wc2VzIGFyZSBhbG1vc3QgKi8KKysgICAgLyogY2VydGFp bmx5IGR1cGxpY2F0ZXMgb2YgdGhlIGFscmVhZHkgZXh0cmFjdGVkIG9uZXMpICovCisrICAgIGFi cnRfam91cm5hbF9zZWVrX3RhaWwoam91cm5hbCk7CisrCisrICAgIC8qIEluIGNhc2Ugb2YgZGlz YXN0ZXIsIGxldHMgbWFrZSBzdXJlIHdlIHdvbid0IHJlYWQgdGhlIGpvdXJuYWwgbWVzc2FnZXMg Ki8KKysgICAgLyogYWdhaW4uICovCisrICAgIHNhdmVfYWJydF9qb3VybmFsX3dhdGNoX3Bvc2l0 aW9uKGpvdXJuYWwsIEFCUlRfSk9VUk5BTF9XQVRDSF9TVEFURV9GSUxFKTsKKysKKysgICAgaWYg KGdfYWJydF9vb3BzX3NsZWVwX3dva2VfdXBfb25fc2lnbmFsID4gMCkKKysgICAgICAgIGFicnRf am91cm5hbF93YXRjaF9zdG9wKHdhdGNoKTsKKyt9CisrCisrLyoKKysgKiBLb29wcyBleHRyYWN0 b3IgZW5kCisrICovCisrCisrc3RhdGljIHZvaWQgdHJ5X3Jlc3RvcmVfYWJydF9qb3VybmFsX3dh dGNoX3Bvc2l0aW9uKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFyICpmaWxlX25h bWUpCisreworKyAgICBzdHJ1Y3Qgc3RhdCBidWY7CisrICAgIGlmIChsc3RhdChmaWxlX25hbWUs ICZidWYpIDwgMCkKKysgICAgeworKyAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCkKKysgICAg ICAgIHsKKysgICAgICAgICAgICAvKiBPbmx5IG5vdGljZSBiZWNhdXNlIHRoaXMgaXMgZXhwZWN0 ZWQgKi8KKysgICAgICAgICAgICBsb2dfbm90aWNlKF8oIk5vdCByZXN0b3Jpbmcgam91cm5hbCB3 YXRjaCdzIHBvc2l0aW9uOiBmaWxlICclcycgZG9lcyBub3QgZXhpc3QiKSwgZmlsZV9uYW1lKTsK KysgICAgICAgICAgICByZXR1cm47CisrICAgICAgICB9CisrCisrICAgICAgICBwZXJyb3JfbXNn KF8oIkNhbm5vdCByZXN0b3JlIGpvdXJuYWwgd2F0Y2gncyBwb3NpdGlvbiBmb3JtIGZpbGUgJyVz JyIpLCBmaWxlX25hbWUpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGlmICgh KGJ1Zi5zdF9tb2RlICYgU19JRlJFRykpCisrICAgIHsKKysgICAgICAgIGVycm9yX21zZyhfKCJD YW5ub3QgcmVzdG9yZSBqb3VybmFsIHdhdGNoJ3MgcG9zaXRpb246IHBhdGggJyVzJyBpcyBub3Qg cmVndWxhciBmaWxlIiksIGZpbGVfbmFtZSk7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysK KysgICAgaWYgKGJ1Zi5zdF9zaXplID4gQUJSVF9KT1VSTkFMX1dBVENIX1NUQVRFX0ZJTEVfTUFY X1NaKQorKyAgICB7CisrICAgICAgICBlcnJvcl9tc2coXygiQ2Fubm90IHJlc3RvcmUgam91cm5h bCB3YXRjaCdzIHBvc2l0aW9uOiBmaWxlICclcycgZXhjZWVkcyAlZEIgc2l6ZSBsaW1pdCIpLAor KyAgICAgICAgICAgICAgICBmaWxlX25hbWUsIEFCUlRfSk9VUk5BTF9XQVRDSF9TVEFURV9GSUxF X01BWF9TWik7CisrICAgICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgaW50IHN0YXRlX2Zk ID0gb3BlbihmaWxlX25hbWUsIE9fUkRPTkxZIHwgT19OT0ZPTExPVyk7CisrICAgIGlmIChzdGF0 ZV9mZCA8IDApCisrICAgIHsKKysgICAgICAgIHBlcnJvcl9tc2coXygiQ2Fubm90IHJlc3RvcmUg am91cm5hbCB3YXRjaCdzIHBvc2l0aW9uOiBvcGVuKCclcycpIiksIGZpbGVfbmFtZSk7CisrICAg ICAgICByZXR1cm47CisrICAgIH0KKysKKysgICAgY2hhciAqY3JzciA9IHhtYWxsb2MoYnVmLnN0 X3NpemUgKyAxKTsKKysKKysgICAgY29uc3QgaW50IHN6ID0gZnVsbF9yZWFkKHN0YXRlX2ZkLCBj cnNyLCBidWYuc3Rfc2l6ZSk7CisrICAgIGlmIChzeiAhPSBidWYuc3Rfc2l6ZSkKKysgICAgewor KyAgICAgICAgZXJyb3JfbXNnKF8oIkNhbm5vdCByZXN0b3JlIGpvdXJuYWwgd2F0Y2gncyBwb3Np dGlvbjogY2Fubm90IHJlYWQgZW50aXJlIGZpbGUgJyVzJyIpLCBmaWxlX25hbWUpOworKyAgICAg ICAgY2xvc2Uoc3RhdGVfZmQpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAgIGNy c3Jbc3pdID0gJ1wwJzsKKysgICAgY2xvc2Uoc3RhdGVfZmQpOworKworKyAgICBjb25zdCBpbnQg ciA9IGFicnRfam91cm5hbF9zZXRfY3Vyc29yKGpvdXJuYWwsIGNyc3IpOworKyAgICBpZiAociA8 IDApCisrICAgIHsKKysgICAgICAgIC8qIGFicnRfam91cm5hbF9zZXRfY3Vyc29yKCkgcHJpbnRz IGVycm9yIG1lc3NhZ2UgaW4gdmVyYm9zZSBtb2RlICovCisrICAgICAgICBlcnJvcl9tc2coXygi RmFpbGVkIHRvIG1vdmUgdGhlIGpvdXJuYWwgdG8gYSBjdXJzb3IgZnJvbSBmaWxlICclcyciKSwg ZmlsZV9uYW1lKTsKKysgICAgICAgIHJldHVybjsKKysgICAgfQorKworKyAgICBmcmVlKGNyc3Ip OworK30KKysKKytzdGF0aWMgdm9pZCBzYXZlX2FicnRfam91cm5hbF93YXRjaF9wb3NpdGlvbihh YnJ0X2pvdXJuYWxfdCAqam91cm5hbCwgY29uc3QgY2hhciAqZmlsZV9uYW1lKQorK3sKKysgICAg Y2hhciAqY3JzciA9IE5VTEw7CisrICAgIGNvbnN0IGludCByID0gYWJydF9qb3VybmFsX2dldF9j dXJzb3Ioam91cm5hbCwgJmNyc3IpOworKworKyAgICBpZiAociA8IDApCisrICAgIHsKKysgICAg ICAgIC8qIGFicnRfam91cm5hbF9zZXRfY3Vyc29yKCkgcHJpbnRzIGVycm9yIG1lc3NhZ2UgaW4g dmVyYm9zZSBtb2RlICovCisrICAgICAgICBlcnJvcl9tc2coXygiQ2Fubm90IHNhdmUgam91cm5h bCB3YXRjaCdzIHBvc2l0aW9uIikpOworKyAgICAgICAgcmV0dXJuOworKyAgICB9CisrCisrICAg IGludCBzdGF0ZV9mZCA9IG9wZW4oZmlsZV9uYW1lLAorKyAgICAgICAgICAgIE9fV1JPTkxZIHwg T19DUkVBVCB8IE9fVFJVTkMgfCBPX05PRk9MTE9XLAorKyAgICAgICAgICAgIEFCUlRfSk9VUk5B TF9XQVRDSF9TVEFURV9GSUxFX01PREUpOworKworKyAgICBpZiAoc3RhdGVfZmQgPCAwKQorKyAg ICB7CisrICAgICAgICBwZXJyb3JfbXNnKF8oIkNhbm5vdCBzYXZlIGpvdXJuYWwgd2F0Y2gncyBw b3NpdGlvbjogb3BlbignJXMnKSIpLCBmaWxlX25hbWUpOworKyAgICAgICAgcmV0dXJuOworKyAg ICB9CisrCisrICAgIGZ1bGxfd3JpdGVfc3RyKHN0YXRlX2ZkLCBjcnNyKTsKKysgICAgY2xvc2Uo c3RhdGVfZmQpOworKworKyAgICBmcmVlKGNyc3IpOworK30KKysKKytzdGF0aWMgdm9pZCB3YXRj aF9qb3VybmFsZChhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCwgY29uc3QgY2hhciAqZHVtcF9sb2Nh dGlvbiwgaW50IGZsYWdzKQorK3sKKysgICAgR0xpc3QgKmtvb3BzX3N0cmluZ3MgPSBrb29wc19z dXNwaWNpb3VzX3N0cmluZ3NfbGlzdCgpOworKworKyAgICBjaGFyICpvb3BzX3N0cmluZ19maWx0 ZXJfcmVnZXggPSBhYnJ0X29vcHNfc3RyaW5nX2ZpbHRlcl9yZWdleCgpOworKyAgICBpZiAob29w c19zdHJpbmdfZmlsdGVyX3JlZ2V4KQorKyAgICB7CisrICAgICAgICByZWdleF90IGZpbHRlcl9y ZTsKKysgICAgICAgIGlmIChyZWdjb21wKCZmaWx0ZXJfcmUsIG9vcHNfc3RyaW5nX2ZpbHRlcl9y ZWdleCwgUkVHX05PU1VCKSAhPSAwKQorKyAgICAgICAgICAgIHBlcnJvcl9tc2dfYW5kX2RpZShf KCJGYWlsZWQgdG8gY29tcGlsZSByZWdleCIpKTsKKysKKysgICAgICAgIEdMaXN0ICppdGVyID0g a29vcHNfc3RyaW5nczsKKysgICAgICAgIHdoaWxlKGl0ZXIgIT0gTlVMTCkKKysgICAgICAgIHsK KysgICAgICAgICAgICBHTGlzdCAqbmV4dCA9IGdfbGlzdF9uZXh0KGl0ZXIpOworKworKyAgICAg ICAgICAgIGNvbnN0IGludCByZXRpID0gcmVnZXhlYygmZmlsdGVyX3JlLCAoY29uc3QgY2hhciAq KWl0ZXItPmRhdGEsIDAsIE5VTEwsIDApOworKyAgICAgICAgICAgIGlmIChyZXRpID09IDApCisr ICAgICAgICAgICAgICAgIGtvb3BzX3N0cmluZ3MgPSBnX2xpc3RfZGVsZXRlX2xpbmsoa29vcHNf c3RyaW5ncywgaXRlcik7CisrICAgICAgICAgICAgZWxzZSBpZiAocmV0aSAhPSBSRUdfTk9NQVRD SCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGNoYXIgbXNnYnVmWzEwMF07Cisr ICAgICAgICAgICAgICAgIHJlZ2Vycm9yKHJldGksICZmaWx0ZXJfcmUsIG1zZ2J1Ziwgc2l6ZW9m KG1zZ2J1ZikpOworKyAgICAgICAgICAgICAgICBlcnJvcl9tc2dfYW5kX2RpZSgiUmVnZXggbWF0 Y2ggZmFpbGVkOiAlcyIsIG1zZ2J1Zik7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAg IGl0ZXIgPSBuZXh0OworKyAgICAgICAgfQorKworKyAgICAgICAgcmVnZnJlZSgmZmlsdGVyX3Jl KTsKKysgICAgICAgIGZyZWUob29wc19zdHJpbmdfZmlsdGVyX3JlZ2V4KTsKKysgICAgfQorKwor KyAgICBzdHJ1Y3Qgd2F0Y2hfam91cm5hbGRfc2V0dGluZ3Mgd2F0Y2hfY29uZiA9IHsKKysgICAg ICAgIC5kdW1wX2xvY2F0aW9uID0gZHVtcF9sb2NhdGlvbiwKKysgICAgICAgIC5vb3BzX3V0aWxz X2ZsYWdzID0gZmxhZ3MsCisrICAgIH07CisrCisrICAgIHN0cnVjdCBhYnJ0X2pvdXJuYWxfd2F0 Y2hfbm90aWZ5X3N0cmluZ3Mgbm90aWZ5X3N0cmluZ3NfY29uZiA9IHsKKysgICAgICAgIC5kZWNv cmF0ZWRfY2IgPSBhYnJ0X2pvdXJuYWxfd2F0Y2hfZXh0cmFjdF9rZXJuZWxfb29wcywKKysgICAg ICAgIC5kZWNvcmF0ZWRfY2JfZGF0YSA9ICZ3YXRjaF9jb25mLAorKyAgICAgICAgLnN0cmluZ3Mg PSBrb29wc19zdHJpbmdzLAorKyAgICB9OworKworKyAgICBhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAq d2F0Y2ggPSBOVUxMOworKyAgICBpZiAoYWJydF9qb3VybmFsX3dhdGNoX25ldygmd2F0Y2gsIGpv dXJuYWwsIGFicnRfam91cm5hbF93YXRjaF9ub3RpZnlfc3RyaW5ncywgJm5vdGlmeV9zdHJpbmdz X2NvbmYpIDwgMCkKKysgICAgICAgIGVycm9yX21zZ19hbmRfZGllKF8oIkZhaWxlZCB0byBpbml0 aWFsaXplIHN5c3RlbWQtam91cm5hbCB3YXRjaCIpKTsKKysKKysgICAgYWJydF9qb3VybmFsX3dh dGNoX3J1bl9zeW5jKHdhdGNoKTsKKysgICAgYWJydF9qb3VybmFsX3dhdGNoX2ZyZWUod2F0Y2gp OworKworKyAgICBnX2xpc3RfZnJlZShrb29wc19zdHJpbmdzKTsKKyt9CisrCisraW50IG1haW4o aW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKKyt7CisrICAgIC8qIEkxOG4gKi8KKysgICAgc2V0bG9j YWxlKExDX0FMTCwgIiIpOworKyNpZiBFTkFCTEVfTkxTCisrICAgIGJpbmR0ZXh0ZG9tYWluKFBB Q0tBR0UsIExPQ0FMRURJUik7CisrICAgIHRleHRkb21haW4oUEFDS0FHRSk7CisrI2VuZGlmCisr CisrICAgIGFicnRfaW5pdChhcmd2KTsKKysKKysgICAgLyogQ2FuJ3Qga2VlcCB0aGVzZSBzdHJp bmdzL3N0cnVjdHMgc3RhdGljOiBfKCkgZG9lc24ndCBzdXBwb3J0IHRoYXQgKi8KKysgICAgY29u c3QgY2hhciAqcHJvZ3JhbV91c2FnZV9zdHJpbmcgPSBfKAorKyAgICAgICAgIiYgWy12c294dGZd IFstZV0vWy1jIENVUlNPUl0gWy1kIERJUl0vWy1EXVxuIgorKyAgICAgICAgIlxuIgorKyAgICAg ICAgIkV4dHJhY3Qgb29wcyBmcm9tIHN5c3RlbWQtam91cm5hbFxuIgorKyAgICAgICAgIlxuIgor KyAgICAgICAgIi1jIGFuZCAtZSBvcHRpb25zIGNvbmZsaWN0cyBiZWNhdXNlIGJvdGggc3BlY2lm aWVzIHRoZSBmaXJzdCByZWFkIG1lc3NhZ2UuXG4iCisrICAgICAgICAiXG4iCisrICAgICAgICAi LWUgaXMgdXNlZnVsIG9ubHkgZm9yIC1mIGJlY2F1c2UgdGhlIGZvbGxvd2luZyBvZiBqb3VybmFs IHN0YXJ0cyBieSByZWFkaW5nIFxuIgorKyAgICAgICAgInRoZSBlbnRpcmUgam91cm5hbCBpZiB0 aGUgbGFzdCBzZWVuIHBvc3NpdGlvbiBpcyBub3QgYXZhaWxhYmxlLlxuIgorKyAgICAgICAgIlxu IgorKyAgICAgICAgIlRoZSBsYXN0IHNlZW4gcG9zaXRpb24gaXMgc2F2ZWQgaW4gIkFCUlRfSk9V Uk5BTF9XQVRDSF9TVEFURV9GSUxFIlxuIgorKyAgICApOworKyAgICBlbnVtIHsKKysgICAgICAg IE9QVF92ID0gMSA8PCAwLAorKyAgICAgICAgT1BUX3MgPSAxIDw8IDEsCisrICAgICAgICBPUFRf byA9IDEgPDwgMiwKKysgICAgICAgIE9QVF9kID0gMSA8PCAzLAorKyAgICAgICAgT1BUX0QgPSAx IDw8IDQsCisrICAgICAgICBPUFRfeCA9IDEgPDwgNSwKKysgICAgICAgIE9QVF90ID0gMSA8PCA2 LAorKyAgICAgICAgT1BUX2MgPSAxIDw8IDcsCisrICAgICAgICBPUFRfZSA9IDEgPDwgOCwKKysg ICAgICAgIE9QVF9mID0gMSA8PCA5LAorKyAgICB9OworKworKyAgICBjaGFyICpjdXJzb3IgPSBO VUxMOworKyAgICBjaGFyICpkdW1wX2xvY2F0aW9uID0gTlVMTDsKKysKKysgICAgLyogS2VlcCBl bnVtIGFib3ZlIGFuZCBvcmRlciBvZiBvcHRpb25zIGJlbG93IGluIHN5bmMhICovCisrICAgIHN0 cnVjdCBvcHRpb25zIHByb2dyYW1fb3B0aW9uc1tdID0geworKyAgICAgICAgT1BUX19WRVJCT1NF KCZnX3ZlcmJvc2UpLAorKyAgICAgICAgT1BUX0JPT0woICAncycsIE5VTEwsIE5VTEwsIF8oIkxv ZyB0byBzeXNsb2ciKSksCisrICAgICAgICBPUFRfQk9PTCggICdvJywgTlVMTCwgTlVMTCwgXygi UHJpbnQgZm91bmQgb29wc2VzIG9uIHN0YW5kYXJkIG91dHB1dCIpKSwKKysgICAgICAgIC8qIG9v cHNlcyBkb24ndCBjb250YWluIGFueSBzZW5zaXRpdmUgaW5mbywgYW5kIGV2ZW4KKysgICAgICAg ICAqIHRoZSBvbGQga29vcHMgYXBwIHdhcyBzaG93aW5nIHRoZSBvb3BzZXMgdG8gYWxsIHVzZXJz CisrICAgICAgICAgKi8KKysgICAgICAgIE9QVF9TVFJJTkcoJ2QnLCBOVUxMLCAmZHVtcF9sb2Nh dGlvbiwgIkRJUiIsIF8oIkNyZWF0ZSBuZXcgcHJvYmxlbSBkaXJlY3RvcnkgaW4gRElSIGZvciBl dmVyeSBvb3BzIGZvdW5kIikpLAorKyAgICAgICAgT1BUX0JPT0woICAnRCcsIE5VTEwsIE5VTEws IF8oIlNhbWUgYXMgLWQgRHVtcExvY2F0aW9uLCBEdW1wTG9jYXRpb24gaXMgc3BlY2lmaWVkIGlu IGFicnQuY29uZiIpKSwKKysgICAgICAgIE9QVF9CT09MKCAgJ3gnLCBOVUxMLCBOVUxMLCBfKCJN YWtlIHRoZSBwcm9ibGVtIGRpcmVjdG9yeSB3b3JsZCByZWFkYWJsZSIpKSwKKysgICAgICAgIE9Q VF9CT09MKCAgJ3QnLCBOVUxMLCBOVUxMLCBfKCJUaHJvdHRsZSBwcm9ibGVtIGRpcmVjdG9yeSBj cmVhdGlvbiB0byAxIHBlciBzZWNvbmQiKSksCisrICAgICAgICBPUFRfU1RSSU5HKCdjJywgTlVM TCwgJmN1cnNvciwgIkNVUlNPUiIsIF8oIlN0YXJ0IHJlYWRpbmcgc3lzdGVtZC1qb3VybmFsIGZy b20gdGhlIENVUlNPUiBwb3NpdGlvbiIpKSwKKysgICAgICAgIE9QVF9CT09MKCAgJ2UnLCBOVUxM LCBOVUxMLCBfKCJTdGFydCByZWFkaW5nIHN5c3RlbWQtam91cm5hbCBmcm9tIHRoZSBlbmQiKSks CisrICAgICAgICBPUFRfQk9PTCggICdmJywgTlVMTCwgTlVMTCwgXygiRm9sbG93IHN5c3RlbWQt am91cm5hbCBmcm9tIHRoZSBsYXN0IHNlZW4gcG9zaXRpb24gKGlmIGF2YWlsYWJsZSkiKSksCisr ICAgICAgICBPUFRfRU5EKCkKKysgICAgfTsKKysgICAgdW5zaWduZWQgb3B0cyA9IHBhcnNlX29w dHMoYXJnYywgYXJndiwgcHJvZ3JhbV9vcHRpb25zLCBwcm9ncmFtX3VzYWdlX3N0cmluZyk7Cisr CisrICAgIGV4cG9ydF9hYnJ0X2VudnZhcnMoMCk7CisrCisrICAgIG1zZ19wcmVmaXggPSBnX3By b2duYW1lOworKyAgICBpZiAoKG9wdHMgJiBPUFRfcykgfHwgZ2V0ZW52KCJBQlJUX1NZU0xPRyIp KQorKyAgICB7CisrICAgICAgICBsb2dtb2RlID0gTE9HTU9ERV9KT1VSTkFMOworKyAgICB9Cisr CisrICAgIGlmICgob3B0cyAmIE9QVF9jKSAmJiAob3B0cyAmIE9QVF9lKSkKKysgICAgICAgIGVy cm9yX21zZ19hbmRfZGllKF8oIllvdSBuZWVkIHRvIHNwZWNpZnkgZWl0aGVyIC1jIENVUlNPUiBv ciAtZSIpKTsKKysKKysgICAgaWYgKG9wdHMgJiBPUFRfRCkKKysgICAgeworKyAgICAgICAgaWYg KG9wdHMgJiBPUFRfZCkKKysgICAgICAgICAgICBzaG93X3VzYWdlX2FuZF9kaWUocHJvZ3JhbV91 c2FnZV9zdHJpbmcsIHByb2dyYW1fb3B0aW9ucyk7CisrICAgICAgICBsb2FkX2FicnRfY29uZigp OworKyAgICAgICAgZHVtcF9sb2NhdGlvbiA9IGdfc2V0dGluZ3NfZHVtcF9sb2NhdGlvbjsKKysg ICAgICAgIGdfc2V0dGluZ3NfZHVtcF9sb2NhdGlvbiA9IE5VTEw7CisrICAgICAgICBmcmVlX2Fi cnRfY29uZl9kYXRhKCk7CisrICAgIH0KKysKKysgICAgaW50IG9vcHNfdXRpbHNfZmxhZ3MgPSAw OworKyAgICBpZiAoKG9wdHMgJiBPUFRfeCkpCisrICAgICAgICBvb3BzX3V0aWxzX2ZsYWdzIHw9 IEFCUlRfT09QU19XT1JMRF9SRUFEQUJMRTsKKysKKysgICAgaWYgKChvcHRzICYgT1BUX3QpKQor KyAgICAgICAgb29wc191dGlsc19mbGFncyB8PSBBQlJUX09PUFNfVEhST1RUTEVfQ1JFQVRJT047 CisrCisrICAgIGlmICgob3B0cyAmIE9QVF9vKSkKKysgICAgICAgIG9vcHNfdXRpbHNfZmxhZ3Mg fD0gQUJSVF9PT1BTX1BSSU5UX1NURE9VVDsKKysKKysgICAgY29uc3QgY2hhciAqY29uc3QgZW52 X2pvdXJuYWxfZmlsdGVyID0gZ2V0ZW52KCJBQlJUX0RVTVBfSk9VUk5BTF9PT1BTX0RFQlVHX0ZJ TFRFUiIpOworKyAgICBzdGF0aWMgY29uc3QgY2hhciAqa2VybmVsX2pvdXJuYWxfZmlsdGVyWzJd ID0geyAwIH07CisrICAgIGtlcm5lbF9qb3VybmFsX2ZpbHRlclswXSA9IChlbnZfam91cm5hbF9m aWx0ZXIgPyBlbnZfam91cm5hbF9maWx0ZXIgOiAiU1lTTE9HX0lERU5USUZJRVI9a2VybmVsIik7 CisrICAgIGxvZ19kZWJ1ZygiVXNpbmcgam91cm5hbCBtYXRjaDogJyVzJyIsIGtlcm5lbF9qb3Vy bmFsX2ZpbHRlclswXSk7CisrCisrICAgIGFicnRfam91cm5hbF90ICpqb3VybmFsID0gTlVMTDsK KysgICAgaWYgKGFicnRfam91cm5hbF9uZXcoJmpvdXJuYWwpKQorKyAgICAgICAgZXJyb3JfbXNn X2FuZF9kaWUoXygiQ2Fubm90IG9wZW4gc3lzdGVtZC1qb3VybmFsIikpOworKworKyAgICBpZiAo YWJydF9qb3VybmFsX3NldF9qb3VybmFsX2ZpbHRlcihqb3VybmFsLCBrZXJuZWxfam91cm5hbF9m aWx0ZXIpIDwgMCkKKysgICAgICAgIGVycm9yX21zZ19hbmRfZGllKF8oIkNhbm5vdCBmaWx0ZXIg c3lzdGVtZC1qb3VybmFsIHRvIGtlcm5lbCBkYXRhIG9ubHkiKSk7CisrCisrICAgIGlmICgob3B0 cyAmIE9QVF9lKSAmJiBhYnJ0X2pvdXJuYWxfc2Vla190YWlsKGpvdXJuYWwpIDwgMCkKKysgICAg ICAgIGVycm9yX21zZ19hbmRfZGllKF8oIkNhbm5vdCBzZWVrIHRvIHRoZSBlbmQgb2Ygam91cm5h bCIpKTsKKysKKysgICAgaWYgKChvcHRzICYgT1BUX2YpKQorKyAgICB7CisrICAgICAgICBpZiAo IWN1cnNvcikKKysgICAgICAgICAgICB0cnlfcmVzdG9yZV9hYnJ0X2pvdXJuYWxfd2F0Y2hfcG9z aXRpb24oam91cm5hbCwgQUJSVF9KT1VSTkFMX1dBVENIX1NUQVRFX0ZJTEUpOworKyAgICAgICAg ZWxzZSBpZihhYnJ0X2pvdXJuYWxfc2V0X2N1cnNvcihqb3VybmFsLCBjdXJzb3IpKQorKyAgICAg ICAgICAgIGVycm9yX21zZ19hbmRfZGllKF8oIkZhaWxlZCB0byBzdGFydCB3YXRjaCBmcm9tIGN1 cnNvciAnJXMnIiksIGN1cnNvcik7CisrCisrICAgICAgICB3YXRjaF9qb3VybmFsZChqb3VybmFs LCBkdW1wX2xvY2F0aW9uLCBvb3BzX3V0aWxzX2ZsYWdzKTsKKysKKysgICAgICAgIHNhdmVfYWJy dF9qb3VybmFsX3dhdGNoX3Bvc2l0aW9uKGpvdXJuYWwsIEFCUlRfSk9VUk5BTF9XQVRDSF9TVEFU RV9GSUxFKTsKKysgICAgfQorKyAgICBlbHNlCisrICAgIHsKKysgICAgICAgIGlmIChjdXJzb3Ig JiYgYWJydF9qb3VybmFsX3NldF9jdXJzb3Ioam91cm5hbCwgY3Vyc29yKSkKKysgICAgICAgICAg ICBlcnJvcl9tc2dfYW5kX2RpZShfKCJGYWlsZWQgdG8gc2V0IHN5c3RlbWQtam91cm5hbCBjdXJz b3IgJyVzJyIpLCBjdXJzb3IpOworKworKyAgICAgICAgLyogQ29tcGF0aWJpbGl0eSBoYWNrLCBh IHdhdGNoJ3MgY2FsbGJhY2sgZ2V0cyB0aGUgam91cm5hbCBhbHJlYWR5IG1vdmVkCisrICAgICAg ICAgKiB0byBhIG5leHQgbWVzc2FnZS4qLworKyAgICAgICAgYWJydF9qb3VybmFsX25leHQoam91 cm5hbCk7CisrCisrICAgICAgICBHTGlzdCAqb29wc2VzID0gYWJydF9qb3VybmFsX2V4dHJhY3Rf a2VybmVsX29vcHMoam91cm5hbCk7CisrICAgICAgICBjb25zdCBpbnQgZXJyb3JzID0gYWJydF9v b3BzX3Byb2Nlc3NfbGlzdChvb3BzZXMsIGR1bXBfbG9jYXRpb24sIG9vcHNfdXRpbHNfZmxhZ3Mp OworKyAgICAgICAgZ19saXN0X2ZyZWVfZnVsbChvb3BzZXMsIChHRGVzdHJveU5vdGlmeSlmcmVl KTsKKysKKysgICAgICAgIHJldHVybiBlcnJvcnM7CisrICAgIH0KKysKKysgICAgYWJydF9qb3Vy bmFsX2ZyZWUoam91cm5hbCk7CisrCisrICAgIHJldHVybiBFWElUX1NVQ0NFU1M7CisrfQorZGlm ZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2FicnQtZHVtcC1vb3BzLmMgYi9zcmMvcGx1Z2lucy9hYnJ0 LWR1bXAtb29wcy5jCitpbmRleCA5ZjBkYzg3Li5iMTAzMWVhIDEwMDY0NAorLS0tIGEvc3JjL3Bs dWdpbnMvYWJydC1kdW1wLW9vcHMuYworKysrIGIvc3JjL3BsdWdpbnMvYWJydC1kdW1wLW9vcHMu YworQEAgLTEsNiArMSw2IEBACisgLyoKKy0gICAgQ29weXJpZ2h0IChDKSAyMDExICBBQlJUIHRl YW0KKy0gICAgQ29weXJpZ2h0IChDKSAyMDExICBSZWRIYXQgSW5jCisrICAgIENvcHlyaWdodCAo QykgMjAxMSwyMDE0ICBBQlJUIHRlYW0KKysgICAgQ29weXJpZ2h0IChDKSAyMDExLDIwMTQgIFJl ZEhhdCBJbmMKKyAKKyAgICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAgICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKK0BAIC0xOCwx NiArMTgsNyBAQAorICAqLworICNpbmNsdWRlIDxzeXNsb2cuaD4KKyAjaW5jbHVkZSAibGliYWJy dC5oIgorLQorLS8qIEhvdyBtYW55IHByb2JsZW0gZGlycyB0byBjcmVhdGUgYXQgbW9zdD8KKy0g KiBBbHNvIGNhdXNlcyBjb29sZG93biBzbGVlcCB3aXRoIC10IGlmIGV4Y2VlZGVkIC0KKy0gKiB1 c2VmdWwgd2hlbiBjYWxsZWQgZnJvbSBhIGxvZyB3YXRjaGVyLgorLSAqLworLSNkZWZpbmUgTUFY X0RVTVBFRF9ERF9DT1VOVCAgNQorLQorLXN0YXRpYyBib29sIHdvcmxkX3JlYWRhYmxlX2R1bXAg PSBmYWxzZTsKKy1zdGF0aWMgYm9vbCB0aHJvdHRsZV9kZF9jcmVhdGlvbiA9IGZhbHNlOworLXN0 YXRpYyBjb25zdCBjaGFyICpkZWJ1Z19kdW1wc19kaXIgPSAiLiI7CisrI2luY2x1ZGUgIm9vcHMt dXRpbHMuaCIKKyAKKyAjZGVmaW5lIE1BWF9TQ0FOX0JMT0NLICAoNCoxMDI0KjEwMjQpCisgI2Rl ZmluZSBSRUFEX0FIRUFEICAgICAgICAgICgxMCoxMDI0KQorQEAgLTY5LDE3NSArNjAsNiBAQCBz dGF0aWMgdm9pZCBzY2FuX3N5c2xvZ19maWxlKEdMaXN0ICoqb29wc19saXN0LCBpbnQgZmQpCisg ICAgIGZyZWUoYnVmZmVyKTsKKyB9CisgCistc3RhdGljIGNoYXIgKmxpc3Rfb2ZfdGFpbnRlZF9t b2R1bGVzKGNvbnN0IGNoYXIgKnByb2NfbW9kdWxlcykKKy17CistICAgIHN0cnVjdCBzdHJidWYg KnJlc3VsdCA9IHN0cmJ1Zl9uZXcoKTsKKy0KKy0gICAgY29uc3QgY2hhciAqcCA9IHByb2NfbW9k dWxlczsKKy0gICAgZm9yICg7OykKKy0gICAgeworLSAgICAgICAgY29uc3QgY2hhciAqZW5kID0g c3RyY2hybnVsKHAsICdcbicpOworLSAgICAgICAgY29uc3QgY2hhciAqcGFyZW4gPSBzdHJjaHJu dWwocCwgJygnKTsKKy0gICAgICAgIC8qIFdlIGxvb2sgZm9yIGEgbGluZSB3aXRoIHRoaXMgZm9y bWF0OgorLSAgICAgICAgICogImt2bV9pbnRlbCAxMjYyODkgMCAtIExpdmUgMHhmODI5ZTAwMCAo dGFpbnRfZmxhZ3MpIgorLSAgICAgICAgICogd2hlcmUgdGFpbnRfZmxhZ3MgaGF2ZSBsZXR0ZXJz CistICAgICAgICAgKiAoZmxhZ3MgJysnIGFuZCAnLScgaW5kaWNhdGUgKHVuKWxvYWRpbmcsIHdl IG11c3QgaWdub3JlIHRoZW0pLgorLSAgICAgICAgICovCistICAgICAgICB3aGlsZSAoKytwYXJl biA8IGVuZCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpZiAoKHVuc2lnbmVkKSh0b3VwcGVy KCpwYXJlbikgLSAnQScpIDw9ICdaJy0nQScpCistICAgICAgICAgICAgeworLSAgICAgICAgICAg ICAgICBzdHJidWZfYXBwZW5kX3N0cmYocmVzdWx0LCByZXN1bHQtPmxlbiA9PSAwID8gIiUuKnMi IDogIiwlLipzIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAoaW50KShzdHJjaHJudWwocCwn ICcpIC0gcCksIHAKKy0gICAgICAgICAgICAgICAgKTsKKy0gICAgICAgICAgICAgICAgYnJlYWs7 CistICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGlmICgqcGFyZW4gPT0gJyknKQorLSAgICAg ICAgICAgICAgICBicmVhazsKKy0gICAgICAgIH0KKy0KKy0gICAgICAgIGlmICgqZW5kID09ICdc MCcpCistICAgICAgICAgICAgYnJlYWs7CistICAgICAgICBwID0gZW5kICsgMTsKKy0gICAgfQor LQorLSAgICBpZiAocmVzdWx0LT5sZW4gPT0gMCkKKy0gICAgeworLSAgICAgICAgc3RyYnVmX2Zy ZWUocmVzdWx0KTsKKy0gICAgICAgIHJldHVybiBOVUxMOworLSAgICB9CistICAgIHJldHVybiBz dHJidWZfZnJlZV9ub2J1ZihyZXN1bHQpOworLX0KKy0KKy1zdGF0aWMgdm9pZCBzYXZlX29vcHNf ZGF0YV9pbl9kdW1wX2RpcihzdHJ1Y3QgZHVtcF9kaXIgKmRkLCBjaGFyICpvb3BzLCBjb25zdCBj aGFyICpwcm9jX21vZHVsZXMpCisteworLSAgICBjaGFyICpmaXJzdF9saW5lID0gb29wczsKKy0g ICAgY2hhciAqc2Vjb25kX2xpbmUgPSAoY2hhciopc3RyY2hyKGZpcnN0X2xpbmUsICdcbicpOyAv KiBuZXZlciBOVUxMICovCistICAgICpzZWNvbmRfbGluZSsrID0gJ1wwJzsKKy0KKy0gICAgaWYg KGZpcnN0X2xpbmVbMF0pCistICAgICAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVOQU1FX0tFUk5F TCwgZmlyc3RfbGluZSk7CistICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfQkFDS1RSQUNF LCBzZWNvbmRfbGluZSk7CistCistICAgIC8qIGNoZWNrIGlmIHRyYWNlIGRvZXNuJ3QgaGF2ZSBs aW5lOiAnWW91ciBCSU9TIGlzIGJyb2tlbicgKi8KKy0gICAgaWYgKHN0cnN0cihzZWNvbmRfbGlu ZSwgIllvdXIgQklPUyBpcyBicm9rZW4iKSkKKy0gICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklM RU5BTUVfTk9UX1JFUE9SVEFCTEUsCistICAgICAgICAgICAgICAgIF8oIkEga2VybmVsIHByb2Js ZW0gb2NjdXJyZWQgYmVjYXVzZSBvZiBicm9rZW4gQklPUy4gIgorLSAgICAgICAgICAgICAgICAg ICJVbmZvcnR1bmF0ZWx5LCBzdWNoIHByb2JsZW1zIGFyZSBub3QgZml4YWJsZSBieSBrZXJuZWwg bWFpbnRhaW5lcnMuIikpOworLSAgICAvKiBjaGVjayBpZiB0cmFjZSBkb2Vzbid0IGhhdmUgbGlu ZTogJ1lvdXIgaGFyZHdhcmUgaXMgdW5zdXBwb3J0ZWQnICovCistICAgIGVsc2UgaWYgKHN0cnN0 cihzZWNvbmRfbGluZSwgIllvdXIgaGFyZHdhcmUgaXMgdW5zdXBwb3J0ZWQiKSkKKy0gICAgICAg IGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfTk9UX1JFUE9SVEFCTEUsCistICAgICAgICAgICAg ICAgIF8oIkEga2VybmVsIHByb2JsZW0gb2NjdXJyZWQsIGJ1dCB5b3VyIGhhcmR3YXJlIGlzIHVu c3VwcG9ydGVkLCAiCistICAgICAgICAgICAgICAgICAgInRoZXJlZm9yZSBrZXJuZWwgbWFpbnRh aW5lcnMgYXJlIHVuYWJsZSB0byBmaXggdGhpcyBwcm9ibGVtLiIpKTsKKy0gICAgZWxzZQorLSAg ICB7CistICAgICAgICBjaGFyICp0YWludGVkX3Nob3J0ID0ga2VybmVsX3RhaW50ZWRfc2hvcnQo c2Vjb25kX2xpbmUpOworLSAgICAgICAgaWYgKHRhaW50ZWRfc2hvcnQpCistICAgICAgICB7Cist ICAgICAgICAgICAgbG9nX25vdGljZSgiS2VybmVsIGlzIHRhaW50ZWQgJyVzJyIsIHRhaW50ZWRf c2hvcnQpOworLSAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfVEFJTlRFRF9T SE9SVCwgdGFpbnRlZF9zaG9ydCk7CistCistICAgICAgICAgICAgY2hhciAqdG50X2xvbmcgPSBr ZXJuZWxfdGFpbnRlZF9sb25nKHRhaW50ZWRfc2hvcnQpOworLSAgICAgICAgICAgIGRkX3NhdmVf dGV4dChkZCwgRklMRU5BTUVfVEFJTlRFRF9MT05HLCB0bnRfbG9uZyk7CistICAgICAgICAgICAg ZnJlZSh0bnRfbG9uZyk7CistCistICAgICAgICAgICAgc3RydWN0IHN0cmJ1ZiAqcmVhc29uID0g c3RyYnVmX25ldygpOworLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZtdCA9IF8oIkEga2VybmVs IHByb2JsZW0gb2NjdXJyZWQsIGJ1dCB5b3VyIGtlcm5lbCBoYXMgYmVlbiAiCistICAgICAgICAg ICAgICAgICAgICAidGFpbnRlZCAoZmxhZ3M6JXMpLiBLZXJuZWwgbWFpbnRhaW5lcnMgYXJlIHVu YWJsZSB0byAiCistICAgICAgICAgICAgICAgICAgICAiZGlhZ25vc2UgdGFpbnRlZCByZXBvcnRz LiIpOworLSAgICAgICAgICAgIHN0cmJ1Zl9hcHBlbmRfc3RyZihyZWFzb24sIGZtdCwgdGFpbnRl ZF9zaG9ydCk7CistCistICAgICAgICAgICAgY2hhciAqbW9kbGlzdCA9ICFwcm9jX21vZHVsZXMg PyBOVUxMIDogbGlzdF9vZl90YWludGVkX21vZHVsZXMocHJvY19tb2R1bGVzKTsKKy0gICAgICAg ICAgICBpZiAobW9kbGlzdCkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIHN0cmJ1 Zl9hcHBlbmRfc3RyZihyZWFzb24sIF8oIiBUYWludGVkIG1vZHVsZXM6ICVzLiIpLCBtb2RsaXN0 KTsKKy0gICAgICAgICAgICAgICAgZnJlZShtb2RsaXN0KTsKKy0gICAgICAgICAgICB9CistCist ICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9OT1RfUkVQT1JUQUJMRSwgcmVh c29uLT5idWYpOworLSAgICAgICAgICAgIHN0cmJ1Zl9mcmVlKHJlYXNvbik7CistICAgICAgICAg ICAgZnJlZSh0YWludGVkX3Nob3J0KTsKKy0gICAgICAgIH0KKy0gICAgfQorLQorLSAgICAvLyBU T0RPOiBhZGQgIktlcm5lbCBvb3BzOiAiIHByZWZpeCwgc28gdGhhdCBhbGwgb29wc2VzIGhhdmUg cmVjb2duaXphYmxlIEZJTEVOQU1FX1JFQVNPTj8KKy0gICAgLy8ga2VybmVsIG9vcHMgMXN0IGxp bmUgbWF5IGxvb2sgcXVpdGUgcHV6emxpbmcgb3RoZXJ3aXNlLi4uCistICAgIHN0cmNocm51bChz ZWNvbmRfbGluZSwgJ1xuJylbMF0gPSAnXDAnOworLSAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVO QU1FX1JFQVNPTiwgc2Vjb25kX2xpbmUpOworLX0KKy0KKy0vKiByZXR1cm5zIG51bWJlciBvZiBl cnJvcnMgKi8KKy1zdGF0aWMgdW5zaWduZWQgY3JlYXRlX29vcHNfZHVtcF9kaXJzKEdMaXN0ICpv b3BzX2xpc3QsIHVuc2lnbmVkIG9vcHNfY250KQorLXsKKy0gICAgdW5zaWduZWQgY291bnRkb3du ID0gTUFYX0RVTVBFRF9ERF9DT1VOVDsgLyogZG8gbm90IHJlcG9ydCBodW5kcmVkcyBvZiBvb3Bz ZXMgKi8KKy0KKy0gICAgbG9nX25vdGljZSgiU2F2aW5nICV1IG9vcHNlcyBhcyBwcm9ibGVtIGRp cnMiLCBvb3BzX2NudCA+PSBjb3VudGRvd24gPyBjb3VudGRvd24gOiBvb3BzX2NudCk7CistCist ICAgIGNoYXIgKmNtZGxpbmVfc3RyID0geG1hbGxvY19mb3Blbl9mZ2V0bGluZV9mY2xvc2UoIi9w cm9jL2NtZGxpbmUiKTsKKy0gICAgY2hhciAqZmlwc19lbmFibGVkID0geG1hbGxvY19mb3Blbl9m Z2V0bGluZV9mY2xvc2UoIi9wcm9jL3N5cy9jcnlwdG8vZmlwc19lbmFibGVkIik7CistICAgIGNo YXIgKnByb2NfbW9kdWxlcyA9IHhtYWxsb2Nfb3Blbl9yZWFkX2Nsb3NlKCIvcHJvYy9tb2R1bGVz IiwgLyptYXhzaXplOiovIE5VTEwpOworLSAgICBjaGFyICpzdXNwZW5kX3N0YXRzID0geG1hbGxv Y19vcGVuX3JlYWRfY2xvc2UoIi9zeXMva2VybmVsL2RlYnVnL3N1c3BlbmRfc3RhdHMiLCAvKm1h eHNpemU6Ki8gTlVMTCk7CistCistICAgIHRpbWVfdCB0ID0gdGltZShOVUxMKTsKKy0gICAgY29u c3QgY2hhciAqaXNvX2RhdGUgPSBpc29fZGF0ZV9zdHJpbmcoJnQpOworLSAgICAvKiBkdW1wIHNo b3VsZCBiZSByZWFkYWJsZSBieSBhbGwgaWYgd2UncmUgcnVuIHdpdGggLXggKi8KKy0gICAgdWlk X3QgbXlfZXVpZCA9ICh1aWRfdCktMUw7CistICAgIG1vZGVfdCBtb2RlID0gREVGQVVMVF9EVU1Q X0RJUl9NT0RFIHwgU19JUk9USDsKKy0gICAgLyogYW5kIHJlYWRhYmxlIG9ubHkgZm9yIHRoZSBv d25lciBvdGhlcndpc2UgKi8KKy0gICAgaWYgKCF3b3JsZF9yZWFkYWJsZV9kdW1wKQorLSAgICB7 CistICAgICAgICBtb2RlID0gREVGQVVMVF9EVU1QX0RJUl9NT0RFOworLSAgICAgICAgbXlfZXVp ZCA9IGdldGV1aWQoKTsKKy0gICAgfQorLQorLSAgICBwaWRfdCBteV9waWQgPSBnZXRwaWQoKTsK Ky0gICAgdW5zaWduZWQgaWR4ID0gMDsKKy0gICAgdW5zaWduZWQgZXJyb3JzID0gMDsKKy0gICAg d2hpbGUgKGlkeCA8IG9vcHNfY250KQorLSAgICB7CistICAgICAgICBjaGFyIGJhc2Vbc2l6ZW9m KCJvb3BzLVlZWVktTU0tREQtaGg6bW06c3MtJWx1LSVsdSIpICsgMiAqIHNpemVvZihsb25nKSoz XTsKKy0gICAgICAgIHNwcmludGYoYmFzZSwgIm9vcHMtJXMtJWx1LSVsdSIsIGlzb19kYXRlLCAo bG9uZylteV9waWQsIChsb25nKWlkeCk7CistICAgICAgICBjaGFyICpwYXRoID0gY29uY2F0X3Bh dGhfZmlsZShkZWJ1Z19kdW1wc19kaXIsIGJhc2UpOworLQorLSAgICAgICAgc3RydWN0IGR1bXBf ZGlyICpkZCA9IGRkX2NyZWF0ZShwYXRoLCAvKnVpZDoqLyBteV9ldWlkLCBtb2RlKTsKKy0gICAg ICAgIGlmIChkZCkKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBkZF9jcmVhdGVfYmFzaWNfZmls ZXMoZGQsIC8qdWlkOiovIG15X2V1aWQsIE5VTEwpOworLSAgICAgICAgICAgIHNhdmVfb29wc19k YXRhX2luX2R1bXBfZGlyKGRkLCAoY2hhciopZ19saXN0X250aF9kYXRhKG9vcHNfbGlzdCwgaWR4 KyspLCBwcm9jX21vZHVsZXMpOworLSAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5B TUVfQUJSVF9WRVJTSU9OLCBWRVJTSU9OKTsKKy0gICAgICAgICAgICBkZF9zYXZlX3RleHQoZGQs IEZJTEVOQU1FX0FOQUxZWkVSLCAiS2VybmVsb29wcyIpOworLSAgICAgICAgICAgIGRkX3NhdmVf dGV4dChkZCwgRklMRU5BTUVfVFlQRSwgIktlcm5lbG9vcHMiKTsKKy0gICAgICAgICAgICBpZiAo Y21kbGluZV9zdHIpCistICAgICAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVf Q01ETElORSwgY21kbGluZV9zdHIpOworLSAgICAgICAgICAgIGlmIChwcm9jX21vZHVsZXMpCist ICAgICAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgInByb2NfbW9kdWxlcyIsIHByb2NfbW9k dWxlcyk7CistICAgICAgICAgICAgaWYgKGZpcHNfZW5hYmxlZCAmJiBzdHJjbXAoZmlwc19lbmFi bGVkLCAiMCIpICE9IDApCistICAgICAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgImZpcHNf ZW5hYmxlZCIsIGZpcHNfZW5hYmxlZCk7CistICAgICAgICAgICAgaWYgKHN1c3BlbmRfc3RhdHMp CistICAgICAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgInN1c3BlbmRfc3RhdHMiLCBzdXNw ZW5kX3N0YXRzKTsKKy0gICAgICAgICAgICBkZF9jbG9zZShkZCk7CistICAgICAgICAgICAgbm90 aWZ5X25ld19wYXRoKHBhdGgpOworLSAgICAgICAgfQorLSAgICAgICAgZWxzZQorLSAgICAgICAg ICAgIGVycm9ycysrOworLQorLSAgICAgICAgZnJlZShwYXRoKTsKKy0KKy0gICAgICAgIGlmICgt LWNvdW50ZG93biA9PSAwKQorLSAgICAgICAgICAgIGJyZWFrOworLQorLSAgICAgICAgaWYgKGRk ICYmIHRocm90dGxlX2RkX2NyZWF0aW9uKQorLSAgICAgICAgICAgIHNsZWVwKDEpOworLSAgICB9 CistCistICAgIGZyZWUoY21kbGluZV9zdHIpOworLSAgICBmcmVlKHByb2NfbW9kdWxlcyk7Cist ICAgIGZyZWUoZmlwc19lbmFibGVkKTsKKy0gICAgZnJlZShzdXNwZW5kX3N0YXRzKTsKKy0KKy0g ICAgcmV0dXJuIGVycm9yczsKKy19CistCisgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2 KQorIHsKKyAgICAgLyogSTE4biAqLworQEAgLTI2Nyw2ICs4OSw3IEBAIGludCBtYWluKGludCBh cmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgIE9QVF9tID0gMSA8PCA4LAorICAgICB9OworICAg ICBjaGFyICpwcm9ibGVtX2RpciA9IE5VTEw7CisrICAgIGNoYXIgKmR1bXBfbG9jYXRpb24gPSBO VUxMOworICAgICAvKiBLZWVwIGVudW0gYWJvdmUgYW5kIG9yZGVyIG9mIG9wdGlvbnMgYmVsb3cg aW4gc3luYyEgKi8KKyAgICAgc3RydWN0IG9wdGlvbnMgcHJvZ3JhbV9vcHRpb25zW10gPSB7Cisg ICAgICAgICBPUFRfX1ZFUkJPU0UoJmdfdmVyYm9zZSksCitAQCAtMjc1LDcgKzk4LDcgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgICAgLyogb29wc2VzIGRvbid0IGNv bnRhaW4gYW55IHNlbnNpdGl2ZSBpbmZvLCBhbmQgZXZlbgorICAgICAgICAgICogdGhlIG9sZCBr b29wcyBhcHAgd2FzIHNob3dpbmcgdGhlIG9vcHNlcyB0byBhbGwgdXNlcnMKKyAgICAgICAgICAq LworLSAgICAgICAgT1BUX1NUUklORygnZCcsIE5VTEwsICZkZWJ1Z19kdW1wc19kaXIsICJESVIi LCBfKCJDcmVhdGUgbmV3IHByb2JsZW0gZGlyZWN0b3J5IGluIERJUiBmb3IgZXZlcnkgb29wcyBm b3VuZCIpKSwKKysgICAgICAgIE9QVF9TVFJJTkcoJ2QnLCBOVUxMLCAmZHVtcF9sb2NhdGlvbiwg IkRJUiIsIF8oIkNyZWF0ZSBuZXcgcHJvYmxlbSBkaXJlY3RvcnkgaW4gRElSIGZvciBldmVyeSBv b3BzIGZvdW5kIikpLAorICAgICAgICAgT1BUX0JPT0woICAnRCcsIE5VTEwsIE5VTEwsIF8oIlNh bWUgYXMgLWQgRHVtcExvY2F0aW9uLCBEdW1wTG9jYXRpb24gaXMgc3BlY2lmaWVkIGluIGFicnQu Y29uZiIpKSwKKyAgICAgICAgIE9QVF9TVFJJTkcoJ3UnLCBOVUxMLCAmcHJvYmxlbV9kaXIsICJQ Uk9CTEVNIiwgXygiU2F2ZSB0aGUgZXh0cmFjdGVkIGluZm9ybWF0aW9uIGluIFBST0JMRU0iKSks CisgICAgICAgICBPUFRfQk9PTCggICd4JywgTlVMTCwgTlVMTCwgXygiTWFrZSB0aGUgcHJvYmxl bSBkaXJlY3Rvcnkgd29ybGQgcmVhZGFibGUiKSksCitAQCAtMjk1LDI2ICsxMTgsMTkgQEAgaW50 IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAorICAgICBpZiAob3B0cyAmIE9QVF9tKQor ICAgICB7CistICAgICAgICBtYXBfc3RyaW5nX3QgKnNldHRpbmdzID0gbmV3X21hcF9zdHJpbmco KTsKKy0KKy0gICAgICAgIGxvYWRfYWJydF9wbHVnaW5fY29uZl9maWxlKCJvb3BzLmNvbmYiLCBz ZXR0aW5ncyk7CistCistICAgICAgICBpbnQgb25seV9mYXRhbF9tY2UgPSAxOworLSAgICAgICAg dHJ5X2dldF9tYXBfc3RyaW5nX2l0ZW1fYXNfYm9vbChzZXR0aW5ncywgIk9ubHlGYXRhbE1DRSIs ICZvbmx5X2ZhdGFsX21jZSk7CistCistICAgICAgICBmcmVlX21hcF9zdHJpbmcoc2V0dGluZ3Mp OworLQorLSAgICAgICAgaWYgKG9ubHlfZmF0YWxfbWNlKQorKyAgICAgICAgY2hhciAqb29wc19z dHJpbmdfZmlsdGVyX3JlZ2V4ID0gYWJydF9vb3BzX3N0cmluZ19maWx0ZXJfcmVnZXgoKTsKKysg ICAgICAgIGlmIChvb3BzX3N0cmluZ19maWx0ZXJfcmVnZXgpCisgICAgICAgICB7CistICAgICAg ICAgICAgcmVnZXhfdCBtY2VfcmU7CistICAgICAgICAgICAgaWYgKHJlZ2NvbXAoJm1jZV9yZSwg Il5NYWNoaW5lIC4qJCIsIFJFR19OT1NVQikgIT0gMCkKKysgICAgICAgICAgICByZWdleF90IGZp bHRlcl9yZTsKKysgICAgICAgICAgICBpZiAocmVnY29tcCgmZmlsdGVyX3JlLCBvb3BzX3N0cmlu Z19maWx0ZXJfcmVnZXgsIFJFR19OT1NVQikgIT0gMCkKKyAgICAgICAgICAgICAgICAgcGVycm9y X21zZ19hbmRfZGllKF8oIkZhaWxlZCB0byBjb21waWxlIHJlZ2V4IikpOworIAorLSAgICAgICAg ICAgIGNvbnN0IHJlZ2V4X3QgKmZpbHRlcltdID0geyAmbWNlX3JlLCBOVUxMIH07CisrICAgICAg ICAgICAgY29uc3QgcmVnZXhfdCAqZmlsdGVyW10gPSB7ICZmaWx0ZXJfcmUsIE5VTEwgfTsKKyAK KyAgICAgICAgICAgICBrb29wc19wcmludF9zdXNwaWNpb3VzX3N0cmluZ3NfZmlsdGVyZWQoZmls dGVyKTsKKyAKKy0gICAgICAgICAgICByZWdmcmVlKCZtY2VfcmUpOworKyAgICAgICAgICAgIHJl Z2ZyZWUoJmZpbHRlcl9yZSk7CisrICAgICAgICAgICAgZnJlZShvb3BzX3N0cmluZ19maWx0ZXJf cmVnZXgpOworICAgICAgICAgfQorICAgICAgICAgZWxzZQorICAgICAgICAgICAgIGtvb3BzX3By aW50X3N1c3BpY2lvdXNfc3RyaW5ncygpOworQEAgLTMyNywxMDAgKzE0Myw1NSBAQCBpbnQgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgICAgICAgICBpZiAob3B0cyAmIE9QVF9kKQorICAg ICAgICAgICAgIHNob3dfdXNhZ2VfYW5kX2RpZShwcm9ncmFtX3VzYWdlX3N0cmluZywgcHJvZ3Jh bV9vcHRpb25zKTsKKyAgICAgICAgIGxvYWRfYWJydF9jb25mKCk7CistICAgICAgICBkZWJ1Z19k dW1wc19kaXIgPSBnX3NldHRpbmdzX2R1bXBfbG9jYXRpb247CisrICAgICAgICBkdW1wX2xvY2F0 aW9uID0gZ19zZXR0aW5nc19kdW1wX2xvY2F0aW9uOworICAgICAgICAgZ19zZXR0aW5nc19kdW1w X2xvY2F0aW9uID0gTlVMTDsKKyAgICAgICAgIGZyZWVfYWJydF9jb25mX2RhdGEoKTsKKyAgICAg fQorIAorKyAgICBpbnQgb29wc191dGlsc19mbGFncyA9IDA7CisrICAgIGlmICgob3B0cyAmIE9Q VF94KSkKKysgICAgICAgIG9vcHNfdXRpbHNfZmxhZ3MgfD0gQUJSVF9PT1BTX1dPUkxEX1JFQURB QkxFOworKworKyAgICBpZiAoKG9wdHMgJiBPUFRfdCkpCisrICAgICAgICBvb3BzX3V0aWxzX2Zs YWdzIHw9IEFCUlRfT09QU19USFJPVFRMRV9DUkVBVElPTjsKKysKKysgICAgaWYgKChvcHRzICYg T1BUX28pKQorKyAgICAgICAgb29wc191dGlsc19mbGFncyB8PSBBQlJUX09PUFNfUFJJTlRfU1RE T1VUOworKworICAgICBhcmd2ICs9IG9wdGluZDsKKyAgICAgaWYgKGFyZ3ZbMF0pCisgICAgICAg ICB4bW92ZV9mZCh4b3Blbihhcmd2WzBdLCBPX1JET05MWSksIFNURElOX0ZJTEVOTyk7CisgCist ICAgIHdvcmxkX3JlYWRhYmxlX2R1bXAgPSAob3B0cyAmIE9QVF94KTsKKy0gICAgdGhyb3R0bGVf ZGRfY3JlYXRpb24gPSAob3B0cyAmIE9QVF90KTsKKy0gICAgdW5zaWduZWQgZXJyb3JzID0gMDsK KyAgICAgR0xpc3QgKm9vcHNfbGlzdCA9IE5VTEw7CisgICAgIHNjYW5fc3lzbG9nX2ZpbGUoJm9v cHNfbGlzdCwgU1RESU5fRklMRU5PKTsKKyAKKy0gICAgaW50IG9vcHNfY250ID0gZ19saXN0X2xl bmd0aChvb3BzX2xpc3QpOworLSAgICBpZiAob29wc19jbnQgIT0gMCkKKysgICAgdW5zaWduZWQg ZXJyb3JzID0gMDsKKysgICAgaWYgKG9wdHMgJiBPUFRfdSkKKyAgICAgeworLSAgICAgICAgbG9n KCJGb3VuZCBvb3BzZXM6ICVkIiwgb29wc19jbnQpOworLSAgICAgICAgaWYgKG9wdHMgJiBPUFRf bykKKy0gICAgICAgIHsKKy0gICAgICAgICAgICBpbnQgaSA9IDA7CistICAgICAgICAgICAgd2hp bGUgKGkgPCBvb3BzX2NudCkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGNoYXIg Kmtlcm5lbF9idCA9IChjaGFyKilnX2xpc3RfbnRoX2RhdGEob29wc19saXN0LCBpKyspOworLSAg ICAgICAgICAgICAgICBjaGFyICp0YWludGVkX3Nob3J0ID0ga2VybmVsX3RhaW50ZWRfc2hvcnQo a2VybmVsX2J0KTsKKy0gICAgICAgICAgICAgICAgaWYgKHRhaW50ZWRfc2hvcnQpCistICAgICAg ICAgICAgICAgICAgICBsb2coIktlcm5lbCBpcyB0YWludGVkICclcyciLCB0YWludGVkX3Nob3J0 KTsKKy0KKy0gICAgICAgICAgICAgICAgZnJlZSh0YWludGVkX3Nob3J0KTsKKy0gICAgICAgICAg ICAgICAgcHJpbnRmKCJcblZlcnNpb246ICVzIiwga2VybmVsX2J0KTsKKy0gICAgICAgICAgICB9 CistICAgICAgICB9CistICAgICAgICBpZiAob3B0cyAmIChPUFRfZHxPUFRfRCkpCistICAgICAg ICB7CistICAgICAgICAgICAgaWYgKG9wdHMgJiBPUFRfRCkKKy0gICAgICAgICAgICB7CistICAg ICAgICAgICAgICAgIGxvYWRfYWJydF9jb25mKCk7CistICAgICAgICAgICAgICAgIGRlYnVnX2R1 bXBzX2RpciA9IGdfc2V0dGluZ3NfZHVtcF9sb2NhdGlvbjsKKy0gICAgICAgICAgICB9CistCist ICAgICAgICAgICAgbG9nKCJDcmVhdGluZyBwcm9ibGVtIGRpcmVjdG9yaWVzIik7CistICAgICAg ICAgICAgZXJyb3JzID0gY3JlYXRlX29vcHNfZHVtcF9kaXJzKG9vcHNfbGlzdCwgb29wc19jbnQp OworLSAgICAgICAgICAgIGlmIChlcnJvcnMpCistICAgICAgICAgICAgICAgIGxvZygiJWQgZXJy b3JzIHdoaWxlIGR1bXBpbmcgb29wc2VzIiwgZXJyb3JzKTsKKy0gICAgICAgICAgICAvKgorLSAg ICAgICAgICAgICAqIFRoaXMgbWFya2VyIGluIHN5c2xvZyBmaWxlIHByZXZlbnRzIHVzIGZyb20K Ky0gICAgICAgICAgICAgKiByZS1wYXJzaW5nIG9sZCBvb3BzZXMuIFRoZSBvbmx5IHByb2JsZW0g aXMgdGhhdCB3ZQorLSAgICAgICAgICAgICAqIGNhbid0IGJlIHN1cmUgaGVyZSB0aGF0IHRoZSBm aWxlIHdlIGFyZSB3YXRjaGluZworLSAgICAgICAgICAgICAqIGlzIHRoZSBzYW1lIGZpbGUgd2hl cmUgc3lzbG9nKHh4eCkgc3R1ZmYgZW5kcyB1cC4KKy0gICAgICAgICAgICAgKi8KKy0gICAgICAg ICAgICBzeXNsb2coTE9HX1dBUk5JTkcsCistICAgICAgICAgICAgICAgICAgICAiUmVwb3J0ZWQg JXUga2VybmVsIG9vcHNlcyB0byBBYnJ0IiwKKy0gICAgICAgICAgICAgICAgICAgIG9vcHNfY250 CistICAgICAgICAgICAgKTsKKy0gICAgICAgIH0KKy0gICAgICAgIGlmIChvcHRzICYgT1BUX3Up CisrICAgICAgICBsb2coIlVwZGF0aW5nIHByb2JsZW0gZGlyZWN0b3J5Iik7CisrICAgICAgICBz d2l0Y2ggKGdfbGlzdF9sZW5ndGgob29wc19saXN0KSkKKyAgICAgICAgIHsKKy0gICAgICAgICAg ICBsb2coIlVwZGF0aW5nIHByb2JsZW0gZGlyZWN0b3J5Iik7CistICAgICAgICAgICAgc3dpdGNo IChvb3BzX2NudCkKKy0gICAgICAgICAgICB7CistICAgICAgICAgICAgICAgIGNhc2UgMToKKysg ICAgICAgICAgICBjYXNlIDE6CisrICAgICAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCBkdW1wX2RpciAqZGQgPSBkZF9vcGVuZGlyKHByb2JsZW1fZGlyLCAvKm9wZW4g Zm9yIHdyaXRpbmcqLzApOworKyAgICAgICAgICAgICAgICAgICAgaWYgKGRkKQorICAgICAgICAg ICAgICAgICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkdW1wX2RpciAq ZGQgPSBkZF9vcGVuZGlyKHByb2JsZW1fZGlyLCAvKm9wZW4gZm9yIHdyaXRpbmcqLzApOworLSAg ICAgICAgICAgICAgICAgICAgICAgIGlmIChkZCkKKy0gICAgICAgICAgICAgICAgICAgICAgICB7 CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVfb29wc19kYXRhX2luX2R1bXBfZGly KGRkLCAoY2hhciAqKW9vcHNfbGlzdC0+ZGF0YSwgLypubyBwcm9jIG1vZHVsZXMqL05VTEwpOwor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZF9jbG9zZShkZCk7CistICAgICAgICAgICAg ICAgICAgICAgICAgfQorKyAgICAgICAgICAgICAgICAgICAgICAgIGFicnRfb29wc19zYXZlX2Rh dGFfaW5fZHVtcF9kaXIoZGQsIChjaGFyICopb29wc19saXN0LT5kYXRhLCAvKm5vIHByb2MgbW9k dWxlcyovTlVMTCk7CisrICAgICAgICAgICAgICAgICAgICAgICAgZGRfY2xvc2UoZGQpOworICAg ICAgICAgICAgICAgICAgICAgfQorLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CistICAgICAg ICAgICAgICAgIGRlZmF1bHQ6CistICAgICAgICAgICAgICAgICAgICBlcnJvcl9tc2coXygiQ2Fu J3QgdXBkYXRlIHRoZSBwcm9ibGVtOiBtb3JlIHRoYW4gb25lIG9vcHMgZm91bmQiKSk7CistICAg ICAgICAgICAgICAgICAgICBicmVhazsKKy0gICAgICAgICAgICB9CisrICAgICAgICAgICAgICAg IH0KKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAgICAgZGVmYXVsdDoKKysgICAg ICAgICAgICAgICAgZXJyb3JfbXNnKF8oIkNhbid0IHVwZGF0ZSB0aGUgcHJvYmxlbTogbW9yZSB0 aGFuIG9uZSBvb3BzIGZvdW5kIikpOworKyAgICAgICAgICAgICAgICBlcnJvcnMgPSAxOworKyAg ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICBlbHNlCisrICAg ICAgICBlcnJvcnMgPSBhYnJ0X29vcHNfcHJvY2Vzc19saXN0KG9vcHNfbGlzdCwgZHVtcF9sb2Nh dGlvbiwgb29wc191dGlsc19mbGFncyk7CisrCisgICAgIGxpc3RfZnJlZV93aXRoX2ZyZWUob29w c19saXN0KTsKKyAgICAgLy9vb3BzX2xpc3QgPSBOVUxMOworIAorLSAgICAvKiBJZiB3ZSBhcmUg cnVuIGJ5IGEgbG9nIHdhdGNoZXIsIHRoaXMgZGVsYXlzIGxvZyByZXNjYW4KKy0gICAgICogKGJl Y2F1c2UgbG9nIHdhdGNoZXIgd2FpdHMgdG8gdXMgdG8gdGVybWluYXRlKQorLSAgICAgKiBhbmQg cG9zc2libHkgcHJldmVudHMgZHJlYWRlZCAiYWJydCBzdG9ybSIuCistICAgICAqLworLSAgICBp bnQgdW5yZXBvcnRlZF9jbnQgPSBvb3BzX2NudCAtIE1BWF9EVU1QRURfRERfQ09VTlQ7CistICAg IGlmICh1bnJlcG9ydGVkX2NudCA+IDAgJiYgdGhyb3R0bGVfZGRfY3JlYXRpb24pCistICAgIHsK Ky0gICAgICAgIC8qIFF1YWRyYXRpYyB0aHJvdHRsZSB0aW1lIGdyb3d0aCwgYnV0IGNhcmVmdWwg dG8gbm90IG92ZXJmbG93IGluICJuKm4iICovCistICAgICAgICBpbnQgbiA9IHVucmVwb3J0ZWRf Y250ID4gMzAgPyAzMCA6IHVucmVwb3J0ZWRfY250OworLSAgICAgICAgbiA9IG4gKiBuOworLSAg ICAgICAgaWYgKG4gPiA5KQorLSAgICAgICAgICAgIGxvZyhfKCJTbGVlcGluZyBmb3IgJWQgc2Vj b25kcyIpLCBuKTsKKy0gICAgICAgIHNsZWVwKG4pOyAvKiBtYXggMTUgbWlucyAqLworLSAgICB9 CistCisgICAgIHJldHVybiBlcnJvcnM7CisgfQorZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2Fi cnQtam91cm5hbC5jIGIvc3JjL3BsdWdpbnMvYWJydC1qb3VybmFsLmMKK25ldyBmaWxlIG1vZGUg MTAwNjQ0CitpbmRleCAwMDAwMDAwLi40NzIzNTdkCistLS0gL2Rldi9udWxsCisrKysgYi9zcmMv cGx1Z2lucy9hYnJ0LWpvdXJuYWwuYworQEAgLTAsMCArMSwyOTUgQEAKKysvKgorKyAqIENvcHly aWdodCAoQykgMjAxNCAgQUJSVCB0ZWFtCisrICogQ29weXJpZ2h0IChDKSAyMDE0ICBSZWRIYXQg SW5jCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogdGhlIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IK KysgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAqCisrICogVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysgKi8KKysjaW5jbHVkZSA8dW5pc3RkLmg+CisrI2luY2x1ZGUgPHNp Z25hbC5oPgorKyNpbmNsdWRlIDxwb2xsLmg+CisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNs dWRlIDxhYnJ0L2xpYmFicnQuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysKKysjaW5jbHVkZSAi YWJydC1qb3VybmFsLmgiCisrCisrI2luY2x1ZGUgPHN5c3RlbWQvc2Qtam91cm5hbC5oPgorKwor KworK3N0cnVjdCBhYnJ0X2pvdXJuYWwKKyt7CisrICAgIHNkX2pvdXJuYWwgKmo7CisrfTsKKysK KytpbnQgYWJydF9qb3VybmFsX25ldyhhYnJ0X2pvdXJuYWxfdCAqKmpvdXJuYWwpCisreworKyAg ICBzZF9qb3VybmFsICpqOworKyAgICBjb25zdCBpbnQgciA9IHNkX2pvdXJuYWxfb3Blbigmaiwg U0RfSk9VUk5BTF9MT0NBTF9PTkxZKTsKKysgICAgaWYgKHIgPCAwKQorKyAgICB7CisrICAgICAg ICBsb2dfbm90aWNlKCJGYWlsZWQgdG8gb3BlbiBqb3VybmFsOiAlcyIsIHN0cmVycm9yKC1yKSk7 CisrICAgICAgICByZXR1cm4gcjsKKysgICAgfQorKworKyAgICAqam91cm5hbCA9IHh6YWxsb2Mo c2l6ZW9mKCoqam91cm5hbCkpOworKyAgICAoKmpvdXJuYWwpLT5qID0gajsKKysKKysgICAgcmV0 dXJuIDA7CisrfQorKworK3ZvaWQgYWJydF9qb3VybmFsX2ZyZWUoYWJydF9qb3VybmFsX3QgKmpv dXJuYWwpCisreworKyAgICBzZF9qb3VybmFsX2Nsb3NlKGpvdXJuYWwtPmopOworKyAgICBqb3Vy bmFsLT5qID0gKHZvaWQgKikweERFQURCRUFGOworKworKyAgICBmcmVlKGpvdXJuYWwpOworK30K KysKKytpbnQgYWJydF9qb3VybmFsX3NldF9qb3VybmFsX2ZpbHRlcihhYnJ0X2pvdXJuYWxfdCAq am91cm5hbCwgY29uc3QgY2hhciAqY29uc3QgKmpvdXJuYWxfZmlsdGVyX2xpc3QpCisreworKyAg ICBjb25zdCBjaGFyICpjb25zdCAqY3Vyc29yID0gam91cm5hbF9maWx0ZXJfbGlzdDsKKysKKysg ICAgd2hpbGUgKCpjdXJzb3IpCisrICAgIHsKKysgICAgICAgIGNvbnN0IGludCByID0gc2Rfam91 cm5hbF9hZGRfbWF0Y2goam91cm5hbC0+aiwgKmN1cnNvciwgc3RybGVuKCpjdXJzb3IpKTsKKysg ICAgICAgIGlmIChyIDwgMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBsb2dfbm90aWNlKCJG YWlsZWQgdG8gc2V0IGpvdXJuYWwgZmlsdGVyOiAlcyIsIHN0cmVycm9yKC1yKSk7CisrICAgICAg ICAgICAgcmV0dXJuIHI7CisrICAgICAgICB9CisrCisrICAgICAgICArK2N1cnNvcjsKKysgICAg fQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IGFicnRfam91cm5hbF9nZXRfZmllbGQo YWJydF9qb3VybmFsX3QgKmpvdXJuYWwsIGNvbnN0IGNoYXIgKmZpZWxkLCBjb25zdCB2b2lkICoq dmFsdWUsIHNpemVfdCAqdmFsdWVfbGVuKQorK3sKKysgICAgY29uc3QgaW50IHIgPSBzZF9qb3Vy bmFsX2dldF9kYXRhKGpvdXJuYWwtPmosIGZpZWxkLCB2YWx1ZSwgdmFsdWVfbGVuKTsKKysgICAg aWYgKHIgPCAwKQorKyAgICB7CisrICAgICAgICBsb2dfbm90aWNlKCJGYWlsZWQgdG8gcmVhZCAn JXMnIGZpZWxkOiAlcyIsIGZpZWxkLCBzdHJlcnJvcigtcikpOworKyAgICAgICAgcmV0dXJuIHI7 CisrICAgIH0KKysKKysgICAgcmV0dXJuIDA7CisrfQorKworK2ludCBhYnJ0X2pvdXJuYWxfZ2V0 X3N0cmluZ19maWVsZChhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCwgY29uc3QgY2hhciAqZmllbGQs IGNvbnN0IGNoYXIgKip2YWx1ZSkKKyt7CisrICAgIHNpemVfdCB2YWx1ZV9sZW47CisrICAgIGNv bnN0IGludCByID0gYWJydF9qb3VybmFsX2dldF9maWVsZChqb3VybmFsLCBmaWVsZCwgKGNvbnN0 IHZvaWQgKiopdmFsdWUsICZ2YWx1ZV9sZW4pOworKyAgICBpZiAociA8IDApCisrICAgIHsKKysg ICAgICAgIHJldHVybiByOworKyAgICB9CisrCisrICAgIGNvbnN0IHNpemVfdCBwZnhfbGVuID0g c3RybGVuKGZpZWxkKSArIDE7CisrICAgIGlmICh2YWx1ZV9sZW4gPCBwZnhfbGVuKQorKyAgICB7 CisrICAgICAgICBlcnJvcl9tc2coIkludmFsaWQgZGF0YSBmb3JtYXQgZnJvbSBqb3VybmFsOiBm aWVsZCBkYXRhIGFyZSBub3QgcHJlZml4ZWQgd2l0aCBmaWVsZCBuYW1lIik7CisrICAgICAgICBy ZXR1cm4gLUVCQURNU0c7CisrICAgIH0KKysKKysgICAgKnZhbHVlICs9IHBmeF9sZW47CisrICAg IHJldHVybiAwOworK30KKysKKytpbnQgYWJydF9qb3VybmFsX2dldF9sb2dfbGluZShhYnJ0X2pv dXJuYWxfdCAqam91cm5hbCwgY29uc3QgY2hhciAqKmxpbmUpCisreworKyAgICBjb25zdCBpbnQg ciA9IGFicnRfam91cm5hbF9nZXRfc3RyaW5nX2ZpZWxkKGpvdXJuYWwsICJNRVNTQUdFIiwgbGlu ZSk7CisrICAgIGlmIChyIDwgMCkKKysgICAgICAgIGxvZ19ub3RpY2UoIkNhbm5vdCByZWFkIGpv dXJuYWwgZGF0YS4gRXhpdGluZyIpOworKworKyAgICByZXR1cm4gcjsKKyt9CisrCisraW50IGFi cnRfam91cm5hbF9nZXRfY3Vyc29yKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjaGFyICoqY3Vy c29yKQorK3sKKysgICAgY29uc3QgaW50IHIgPSBzZF9qb3VybmFsX2dldF9jdXJzb3Ioam91cm5h bC0+aiwgY3Vyc29yKTsKKysKKysgICAgaWYgKHIgPCAwKQorKyAgICB7CisrICAgICAgICBsb2df bm90aWNlKCJDb3VsZCBub3QgZ2V0IGpvdXJuYWwgY3Vyc29yOiAnJXMnIiwgc3RyZXJyb3IoLXIp KTsKKysgICAgICAgIHJldHVybiByOworKyAgICB9CisrCisrICAgIHJldHVybiAwOworK30KKysK KytpbnQgYWJydF9qb3VybmFsX3NldF9jdXJzb3IoYWJydF9qb3VybmFsX3QgKmpvdXJuYWwsIGNv bnN0IGNoYXIgKmN1cnNvcikKKyt7CisrICAgIGNvbnN0IGludCByID0gc2Rfam91cm5hbF9zZWVr X2N1cnNvcihqb3VybmFsLT5qLCBjdXJzb3IpOworKyAgICBpZiAociA8IDApCisrICAgIHsKKysg ICAgICAgIGxvZ19ub3RpY2UoIkZhaWxlZCB0byBzZWVrIGpvdXJuYWwgdG8gY3Vyc29yICclcyc6 ICVzXG4iLCBjdXJzb3IsIHN0cmVycm9yKC1yKSk7CisrICAgICAgICByZXR1cm4gcjsKKysgICAg fQorKworKyAgICByZXR1cm4gMDsKKyt9CisrCisraW50IGFicnRfam91cm5hbF9zZWVrX3RhaWwo YWJydF9qb3VybmFsX3QgKmpvdXJuYWwpCisreworKyAgICBjb25zdCBpbnQgciA9IHNkX2pvdXJu YWxfc2Vla190YWlsKGpvdXJuYWwtPmopOworKyAgICBpZiAociA8IDApCisrICAgIHsKKysgICAg ICAgIGxvZ19ub3RpY2UoIkZhaWxlZCB0byBzZWVrIGpvdXJuYWwgdG8gdGhlIGVuZDogJXNcbiIs IHN0cmVycm9yKC1yKSk7CisrICAgICAgICByZXR1cm4gcjsKKysgICAgfQorKworKyAgICAvKiBC VUc6IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9OTc5NDg3ICov CisrICAgIHNkX2pvdXJuYWxfcHJldmlvdXNfc2tpcChqb3VybmFsLT5qLCAxKTsKKysgICAgcmV0 dXJuIDA7CisrfQorKworK2ludCBhYnJ0X2pvdXJuYWxfbmV4dChhYnJ0X2pvdXJuYWxfdCAqam91 cm5hbCkKKyt7CisrICAgIGNvbnN0IGludCByID0gc2Rfam91cm5hbF9uZXh0KGpvdXJuYWwtPmop OworKyAgICBpZiAociA8IDApCisrICAgICAgICBsb2dfbm90aWNlKCJGYWlsZWQgdG8gaXRlcmF0 ZSB0byBuZXh0IGVudHJ5OiAlcyIsIHN0cmVycm9yKC1yKSk7CisrICAgIHJldHVybiByOworK30K KysKKysvKgorKyAqIEFCUlQgc3lzdGVtZC1qb3VybmFsIHdyYXBwZXIgZW5kCisrICovCisrCisr c3RhdGljIHZvbGF0aWxlIGludCBzX2xvb3BfdGVybWluYXRlZDsKKyt2b2lkIHNpZ25hbF9sb29w X3RvX3Rlcm1pbmF0ZShpbnQgc2lnbnVtKQorK3sKKysgICAgc2lnbnVtID0gc2lnbnVtOworKyAg ICBzX2xvb3BfdGVybWluYXRlZCA9IDE7CisrfQorKworK2VudW0gYWJydF9qb3VybmFsX3dhdGNo X3N0YXRlCisreworKyAgICBBQlJUX0pPVVJOQUxfV0FUQ0hfUkVBRFksCisrICAgIEFCUlRfSk9V Uk5BTF9XQVRDSF9TVE9QUEVELAorK307CisrCisrc3RydWN0IGFicnRfam91cm5hbF93YXRjaAor K3sKKysgICAgYWJydF9qb3VybmFsX3QgKmo7CisrICAgIGludCBzdGF0ZTsKKysKKysgICAgYWJy dF9qb3VybmFsX3dhdGNoX2NhbGxiYWNrIGNhbGxiYWNrOworKyAgICB2b2lkICpjYWxsYmFja19k YXRhOworK307CisrCisraW50IGFicnRfam91cm5hbF93YXRjaF9uZXcoYWJydF9qb3VybmFsX3dh dGNoX3QgKip3YXRjaCwgYWJydF9qb3VybmFsX3QgKmpvdXJuYWwsIGFicnRfam91cm5hbF93YXRj aF9jYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqY2FsbGJhY2tfZGF0YSkKKyt7CisrICAgIGFzc2Vy dChjYWxsYmFjayAhPSBOVUxMIHx8ICEiQUJSVCB3YXRjaCBuZWVkcyB2YWxpZCBjYWxsYmFjayBw dHIiKTsKKysKKysgICAgKndhdGNoID0geHphbGxvYyhzaXplb2YoKip3YXRjaCkpOworKyAgICAo KndhdGNoKS0+aiA9IGpvdXJuYWw7CisrICAgICgqd2F0Y2gpLT5jYWxsYmFjayA9IGNhbGxiYWNr OworKyAgICAoKndhdGNoKS0+Y2FsbGJhY2tfZGF0YSA9IGNhbGxiYWNrX2RhdGE7CisrCisrICAg IHJldHVybiAwOworK30KKysKKyt2b2lkIGFicnRfam91cm5hbF93YXRjaF9mcmVlKGFicnRfam91 cm5hbF93YXRjaF90ICp3YXRjaCkKKyt7CisrICAgIHdhdGNoLT5qID0gKHZvaWQgKikweERFQURC RUFGOworKyAgICBmcmVlKHdhdGNoKTsKKyt9CisrCisrYWJydF9qb3VybmFsX3QgKmFicnRfam91 cm5hbF93YXRjaF9nZXRfam91cm5hbChhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gpCisrewor KyAgICByZXR1cm4gd2F0Y2gtPmo7CisrfQorKworK2ludCBhYnJ0X2pvdXJuYWxfd2F0Y2hfcnVu X3N5bmMoYWJydF9qb3VybmFsX3dhdGNoX3QgKndhdGNoKQorK3sKKysgICAgc2lnc2V0X3QgbWFz azsKKysgICAgc2lnZmlsbHNldCgmbWFzayk7CisrCisrICAgIC8qIEV4aXQgZ3JhY2VmdWxseTog Ki8KKysgICAgLyogc2VydmljZXMgdXN1YWxseSBleGl0IG9uIFNJR1RFUk0gYW5kIFNJR0hVUCAq LworKyAgICBzaWdkZWxzZXQoJm1hc2ssIFNJR1RFUk0pOworKyAgICBzaWduYWwoU0lHVEVSTSwg c2lnbmFsX2xvb3BfdG9fdGVybWluYXRlKTsKKysgICAgc2lnZGVsc2V0KCZtYXNrLCBTSUdIVVAp OworKyAgICBzaWduYWwoU0lHSFVQLCBzaWduYWxfbG9vcF90b190ZXJtaW5hdGUpOworKyAgICAv KiBDdHJsLUMgZm9yIGVhc2llciBkZWJ1Z2dpbmcgKi8KKysgICAgc2lnZGVsc2V0KCZtYXNrLCBT SUdJTlQpOworKyAgICBzaWduYWwoU0lHSU5ULCBzaWduYWxfbG9vcF90b190ZXJtaW5hdGUpOwor KworKyAgICAvKiBEaWUgb24ga2lsbCAkUElEICovCisrICAgIHNpZ2RlbHNldCgmbWFzaywgU0lH S0lMTCk7CisrCisrICAgIHN0cnVjdCBwb2xsZmQgcG9sbGZkOworKyAgICBwb2xsZmQuZmQgPSBz ZF9qb3VybmFsX2dldF9mZCh3YXRjaC0+ai0+aik7CisrICAgIHBvbGxmZC5ldmVudHMgPSBzZF9q b3VybmFsX2dldF9ldmVudHMod2F0Y2gtPmotPmopOworKworKyAgICBpbnQgciA9IDA7CisrCisr ICAgIHdoaWxlICghc19sb29wX3Rlcm1pbmF0ZWQgJiYgd2F0Y2gtPnN0YXRlID09IEFCUlRfSk9V Uk5BTF9XQVRDSF9SRUFEWSkKKysgICAgeworKyAgICAgICAgciA9IHNkX2pvdXJuYWxfbmV4dCh3 YXRjaC0+ai0+aik7CisrICAgICAgICBpZiAociA8IDApCisrICAgICAgICB7CisrICAgICAgICAg ICAgbG9nX3dhcm5pbmcoIkZhaWxlZCB0byBpdGVyYXRlIHRvIG5leHQgZW50cnk6ICVzIiwgc3Ry ZXJyb3IoLXIpKTsKKysgICAgICAgICAgICBicmVhazsKKysgICAgICAgIH0KKysgICAgICAgIGVs c2UgaWYgKHIgPT0gMCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBwcG9sbCgmcG9sbGZkLCAx LCBOVUxMLCAmbWFzayk7CisrICAgICAgICAgICAgciA9IHNkX2pvdXJuYWxfcHJvY2Vzcyh3YXRj aC0+ai0+aik7CisrICAgICAgICAgICAgaWYgKHIgPCAwKQorKyAgICAgICAgICAgIHsKKysgICAg ICAgICAgICAgICAgbG9nX3dhcm5pbmcoIkZhaWxlZCB0byBnZXQgam91cm5hbCBjaGFuZ2VzOiAl c1xuIiwgc3RyZXJyb3IoLXIpKTsKKysgICAgICAgICAgICAgICAgYnJlYWs7CisrICAgICAgICAg ICAgfQorKyAgICAgICAgICAgIGNvbnRpbnVlOworKyAgICAgICAgfQorKworKyAgICAgICAgd2F0 Y2gtPmNhbGxiYWNrKHdhdGNoLCB3YXRjaC0+Y2FsbGJhY2tfZGF0YSk7CisrICAgIH0KKysKKysg ICAgcmV0dXJuIHI7CisrfQorKworK3ZvaWQgYWJydF9qb3VybmFsX3dhdGNoX3N0b3AoYWJydF9q b3VybmFsX3dhdGNoX3QgKndhdGNoKQorK3sKKysgICAgd2F0Y2gtPnN0YXRlID0gQUJSVF9KT1VS TkFMX1dBVENIX1NUT1BQRUQ7CisrfQorKworKy8qCisrICogQUJSVCBzeXN0ZW1kLWpvdXJuYWwg d2F0Y2ggLSBlbmQKKysgKi8KKysKKyt2b2lkIGFicnRfam91cm5hbF93YXRjaF9ub3RpZnlfc3Ry aW5ncyhhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gsIHZvaWQgKmRhdGEpCisreworKyAgICBz dHJ1Y3QgYWJydF9qb3VybmFsX3dhdGNoX25vdGlmeV9zdHJpbmdzICpjb25mID0gKHN0cnVjdCBh YnJ0X2pvdXJuYWxfd2F0Y2hfbm90aWZ5X3N0cmluZ3MgKilkYXRhOworKworKyAgICBjb25zdCBj aGFyICptZXNzYWdlID0gTlVMTDsKKysKKysgICAgaWYgKGFicnRfam91cm5hbF9nZXRfc3RyaW5n X2ZpZWxkKGFicnRfam91cm5hbF93YXRjaF9nZXRfam91cm5hbCh3YXRjaCksICJNRVNTQUdFIiwg Jm1lc3NhZ2UpIDwgMCkKKysgICAgICAgIGVycm9yX21zZ19hbmRfZGllKCJDYW5ub3QgcmVhZCBq b3VybmFsIGRhdGEuIik7CisrCisrICAgIEdMaXN0ICpjdXIgPSBjb25mLT5zdHJpbmdzOworKyAg ICB3aGlsZSAoY3VyKQorKyAgICB7CisrICAgICAgICBpZiAoc3Ryc3RyKG1lc3NhZ2UsIGN1ci0+ ZGF0YSkgIT0gTlVMTCkKKysgICAgICAgICAgICBicmVhazsKKysKKysgICAgICAgIGN1ciA9IGdf bGlzdF9uZXh0KGN1cik7CisrICAgIH0KKysKKysgICAgaWYgKGN1cikKKysgICAgICAgIGNvbmYt PmRlY29yYXRlZF9jYih3YXRjaCwgY29uZi0+ZGVjb3JhdGVkX2NiX2RhdGEpOworK30KKysKKysv KgorKyAqIEFCUlQgc3lzdGVtZC1qb3VybmFsIHN0cmluZ3Mgbm90aWZpZXIgLSBlbmQKKysgKi8K K2RpZmYgLS1naXQgYS9zcmMvcGx1Z2lucy9hYnJ0LWpvdXJuYWwuaCBiL3NyYy9wbHVnaW5zL2Fi cnQtam91cm5hbC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjE5Y2Y2 MAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3JjL3BsdWdpbnMvYWJydC1qb3VybmFsLmgKK0BAIC0w LDAgKzEsMTEwIEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTQgIEFCUlQgdGVhbQorKyAq IENvcHlyaWdodCAoQykgMjAxNCAgUmVkSGF0IEluYworKyAqCisrICogVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysg KiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisrICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICovCisrI2lmbmRl ZiBfQUJSVF9KT1VSTkFMX0hfCisrI2RlZmluZSBfQUJSVF9KT1VSTkFMX0hfCisrCisrI2luY2x1 ZGUgPGdsaWIuaD4KKysKKysjaWZkZWYgX19jcGx1c3BsdXMKKytleHRlcm4gIkMiIHsKKysjZW5k aWYKKysKKysvKgorKyAqIEEgc3lzdGVtZC1qb3VybmFsIHdyYXBwZXIKKysgKiAoaXNvbGF0ZXMg c3lzdGVtZCBBUEkgaW4gYSBzaW5nbGUgY29tcGlsZSB1bml0KQorKyAqLworK3N0cnVjdCBhYnJ0 X2pvdXJuYWw7CisrdHlwZWRlZiBzdHJ1Y3QgYWJydF9qb3VybmFsIGFicnRfam91cm5hbF90Owor KworK2ludCBhYnJ0X2pvdXJuYWxfbmV3KGFicnRfam91cm5hbF90ICoqam91cm5hbCk7CisrCisr dm9pZCBhYnJ0X2pvdXJuYWxfZnJlZShhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCk7CisrCisraW50 IGFicnRfam91cm5hbF9zZXRfam91cm5hbF9maWx0ZXIoYWJydF9qb3VybmFsX3QgKmpvdXJuYWws CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29uc3Qg KmpvdXJuYWxfZmlsdGVyX2xpc3QpOworKworK2ludCBhYnJ0X2pvdXJuYWxfZ2V0X2ZpZWxkKGFi cnRfam91cm5hbF90ICpqb3VybmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKmZpZWxkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKip2 YWx1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKnZhbHVlX2xlbik7Cisr CisraW50IGFicnRfam91cm5hbF9nZXRfc3RyaW5nX2ZpZWxkKGFicnRfam91cm5hbF90ICpqb3Vy bmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWVs ZCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKnZhbHVl KTsKKysKKytpbnQgYWJydF9qb3VybmFsX2dldF9sb2dfbGluZShhYnJ0X2pvdXJuYWxfdCAqam91 cm5hbCwgY29uc3QgY2hhciAqKmxpbmUpOworKworK2ludCBhYnJ0X2pvdXJuYWxfZ2V0X2N1cnNv cihhYnJ0X2pvdXJuYWxfdCAqam91cm5hbCwgY2hhciAqKmN1cnNvcik7CisrCisraW50IGFicnRf am91cm5hbF9zZXRfY3Vyc29yKGFicnRfam91cm5hbF90ICpqb3VybmFsLCBjb25zdCBjaGFyICpj dXJzb3IpOworKworK2ludCBhYnJ0X2pvdXJuYWxfc2Vla190YWlsKGFicnRfam91cm5hbF90ICpq b3VybmFsKTsKKysKKytpbnQgYWJydF9qb3VybmFsX25leHQoYWJydF9qb3VybmFsX3QgKmpvdXJu YWwpOworKworKy8qCisrICogQSBzeXN0ZW1kLWpvdXJuYWwgbGlzdGVuZXIgd2hpY2ggd2FpdHMg Zm9yIG5ldyBtZXNzYWdlcyBhIGxvb3AgYW5kIG5vdGlmaWVzCisrICogdGhlbSB2aWEgYSBjYWxs IGJhY2sKKysgKi8KKytzdHJ1Y3QgYWJydF9qb3VybmFsX3dhdGNoOworK3R5cGVkZWYgc3RydWN0 IGFicnRfam91cm5hbF93YXRjaCBhYnJ0X2pvdXJuYWxfd2F0Y2hfdDsKKysKKyt0eXBlZGVmIHZv aWQgKCogYWJydF9qb3VybmFsX3dhdGNoX2NhbGxiYWNrKShzdHJ1Y3QgYWJydF9qb3VybmFsX3dh dGNoICp3YXRjaCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpkYXRhKTsKKysKKytpbnQgYWJydF9qb3VybmFsX3dhdGNoX25ldyhhYnJ0X2pvdXJu YWxfd2F0Y2hfdCAqKndhdGNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicnRfam91 cm5hbF90ICpqb3VybmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFicnRfam91cm5h bF93YXRjaF9jYWxsYmFjayBjYWxsYmFjaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICB2 b2lkICpjYWxsYmFja19kYXRhKTsKKysKKyt2b2lkIGFicnRfam91cm5hbF93YXRjaF9mcmVlKGFi cnRfam91cm5hbF93YXRjaF90ICp3YXRjaCk7CisrCisrLyoKKysgKiBSZXR1cm5zIHRoZSB3YXRj aGVkIGpvdXJuYWwuCisrICovCisrYWJydF9qb3VybmFsX3QgKmFicnRfam91cm5hbF93YXRjaF9n ZXRfam91cm5hbChhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gpOworKworKy8qCisrICogU3Rh cnRzIHJlYWRpbmcgam91cm5hbCBtZXNzYWdlcyBhbmQgd2FpdGluZyBmb3IgbmV3IG1lc3NhZ2Vz IGluIGEgbG9vcC4KKysgKgorKyAqIFNJR1RFUk0gYW5kIFNJR0lOVCB0ZXJtaW5hdGVzIHRoZSBs b29wIGdyYWNlZnVsbHkuCisrICovCisraW50IGFicnRfam91cm5hbF93YXRjaF9ydW5fc3luYyhh YnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0Y2gpOworKworKy8qCisrICogQ2FuIGJlIHVzZWQgdG8g dGVybWluYXRlIHRoZSBsb29wIGluIGFicnRfam91cm5hbF93YXRjaF9ydW5fc3luYygpCisrICov Cisrdm9pZCBhYnJ0X2pvdXJuYWxfd2F0Y2hfc3RvcChhYnJ0X2pvdXJuYWxfd2F0Y2hfdCAqd2F0 Y2gpOworKworKworKy8qCisrICogQSBkZWNvcmF0b3IgZm9yIGFicnRfam91cm5hbF93YXRjaCBj YWxsIGJhY2tzIHdoaWNoIGNhbGxzIHRoZSBkZWNvcmF0ZWQgY2FsbAorKyAqIGJhY2sgaW4gY2Fz ZSB3aGVyZSBqb3VybmFsIG1lc3NhZ2UgY29udGFpbnMgYSBzdHJpbmcgZnJvbSB0aGUgaW50ZXJl c3RlZAorKyAqIGxpc3QuCisrICovCisrc3RydWN0IGFicnRfam91cm5hbF93YXRjaF9ub3RpZnlf c3RyaW5ncworK3sKKysgICAgYWJydF9qb3VybmFsX3dhdGNoX2NhbGxiYWNrIGRlY29yYXRlZF9j YjsKKysgICAgdm9pZCAqZGVjb3JhdGVkX2NiX2RhdGE7CisrICAgIEdMaXN0ICpzdHJpbmdzOwor K307CisrCisrdm9pZCBhYnJ0X2pvdXJuYWxfd2F0Y2hfbm90aWZ5X3N0cmluZ3MoYWJydF9qb3Vy bmFsX3dhdGNoX3QgKndhdGNoLCB2b2lkICpkYXRhKTsKKysKKysjaWZkZWYgX19jcGx1c3BsdXMK Kyt9CisrI2VuZGlmCisrCisrI2VuZGlmIC8qX0FCUlRfSk9VUk5BTF9IXyovCitkaWZmIC0tZ2l0 IGEvc3JjL3BsdWdpbnMvb29wcy11dGlscy5jIGIvc3JjL3BsdWdpbnMvb29wcy11dGlscy5jCitu ZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOWUyMzU1ZQorLS0tIC9kZXYvbnVs bAorKysrIGIvc3JjL3BsdWdpbnMvb29wcy11dGlscy5jCitAQCAtMCwwICsxLDI3OSBAQAorKy8q CisrICogQ29weXJpZ2h0IChDKSAyMDE0ICBBQlJUIHRlYW0KKysgKiBDb3B5cmlnaHQgKEMpIDIw MTQgIFJlZEhhdCBJbmMKKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoK KysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0 aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqLworKyNpbmNsdWRlICJvb3BzLXV0aWxzLmgi CisrI2luY2x1ZGUgImxpYmFicnQuaCIKKysKKytpbnQgYWJydF9vb3BzX3Byb2Nlc3NfbGlzdChH TGlzdCAqb29wc19saXN0LCBjb25zdCBjaGFyICpkdW1wX2xvY2F0aW9uLCBpbnQgZmxhZ3MpCisr eworKyAgICB1bnNpZ25lZCBlcnJvcnMgPSAwOworKworKyAgICBpbnQgb29wc19jbnQgPSBnX2xp c3RfbGVuZ3RoKG9vcHNfbGlzdCk7CisrICAgIGlmIChvb3BzX2NudCAhPSAwKQorKyAgICB7Cisr ICAgICAgICBsb2coIkZvdW5kIG9vcHNlczogJWQiLCBvb3BzX2NudCk7CisrICAgICAgICBpZiAo KGZsYWdzICYgQUJSVF9PT1BTX1BSSU5UX1NURE9VVCkpCisrICAgICAgICB7CisrICAgICAgICAg ICAgaW50IGkgPSAwOworKyAgICAgICAgICAgIHdoaWxlIChpIDwgb29wc19jbnQpCisrICAgICAg ICAgICAgeworKyAgICAgICAgICAgICAgICBjaGFyICprZXJuZWxfYnQgPSAoY2hhciopZ19saXN0 X250aF9kYXRhKG9vcHNfbGlzdCwgaSsrKTsKKysgICAgICAgICAgICAgICAgY2hhciAqdGFpbnRl ZF9zaG9ydCA9IGtlcm5lbF90YWludGVkX3Nob3J0KGtlcm5lbF9idCk7CisrICAgICAgICAgICAg ICAgIGlmICh0YWludGVkX3Nob3J0KQorKyAgICAgICAgICAgICAgICAgICAgbG9nKCJLZXJuZWwg aXMgdGFpbnRlZCAnJXMnIiwgdGFpbnRlZF9zaG9ydCk7CisrCisrICAgICAgICAgICAgICAgIGZy ZWUodGFpbnRlZF9zaG9ydCk7CisrICAgICAgICAgICAgICAgIHByaW50ZigiXG5WZXJzaW9uOiAl cyIsIGtlcm5lbF9idCk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKyAgICAgICAgaWYg KGR1bXBfbG9jYXRpb24gIT0gTlVMTCkKKysgICAgICAgIHsKKysgICAgICAgICAgICBsb2coIkNy ZWF0aW5nIHByb2JsZW0gZGlyZWN0b3JpZXMiKTsKKysgICAgICAgICAgICBlcnJvcnMgPSBhYnJ0 X29vcHNfY3JlYXRlX2R1bXBfZGlycyhvb3BzX2xpc3QsIGR1bXBfbG9jYXRpb24sIGZsYWdzKTsK KysgICAgICAgICAgICBpZiAoZXJyb3JzKQorKyAgICAgICAgICAgICAgICBsb2coIiVkIGVycm9y cyB3aGlsZSBkdW1waW5nIG9vcHNlcyIsIGVycm9ycyk7CisrICAgICAgICAgICAgLyoKKysgICAg ICAgICAgICAgKiBUaGlzIG1hcmtlciBpbiBzeXNsb2cgZmlsZSBwcmV2ZW50cyB1cyBmcm9tCisr ICAgICAgICAgICAgICogcmUtcGFyc2luZyBvbGQgb29wc2VzLiBUaGUgb25seSBwcm9ibGVtIGlz IHRoYXQgd2UKKysgICAgICAgICAgICAgKiBjYW4ndCBiZSBzdXJlIGhlcmUgdGhhdCB0aGUgZmls ZSB3ZSBhcmUgd2F0Y2hpbmcKKysgICAgICAgICAgICAgKiBpcyB0aGUgc2FtZSBmaWxlIHdoZXJl IHN5c2xvZyh4eHgpIHN0dWZmIGVuZHMgdXAuCisrICAgICAgICAgICAgICovCisrICAgICAgICAg ICAgc3lzbG9nKExPR19XQVJOSU5HLAorKyAgICAgICAgICAgICAgICAgICAgIlJlcG9ydGVkICV1 IGtlcm5lbCBvb3BzZXMgdG8gQWJydCIsCisrICAgICAgICAgICAgICAgICAgICBvb3BzX2NudAor KyAgICAgICAgICAgICk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgLyogSWYgd2UgYXJl IHJ1biBieSBhIGxvZyB3YXRjaGVyLCB0aGlzIGRlbGF5cyBsb2cgcmVzY2FuCisrICAgICAqIChi ZWNhdXNlIGxvZyB3YXRjaGVyIHdhaXRzIHRvIHVzIHRvIHRlcm1pbmF0ZSkKKysgICAgICogYW5k IHBvc3NpYmx5IHByZXZlbnRzIGRyZWFkZWQgImFicnQgc3Rvcm0iLgorKyAgICAgKi8KKysgICAg aW50IHVucmVwb3J0ZWRfY250ID0gb29wc19jbnQgLSBBQlJUX09PUFNfTUFYX0RVTVBFRF9DT1VO VDsKKysgICAgaWYgKGdfYWJydF9vb3BzX3NsZWVwX3dva2VfdXBfb25fc2lnbmFsIDw9IDAgJiYK KysgICAgICAgICAgICAodW5yZXBvcnRlZF9jbnQgPiAwICYmIChmbGFncyAmIEFCUlRfT09QU19U SFJPVFRMRV9DUkVBVElPTikpKQorKyAgICB7CisrICAgICAgICAvKiBRdWFkcmF0aWMgdGhyb3R0 bGUgdGltZSBncm93dGgsIGJ1dCBjYXJlZnVsIHRvIG5vdCBvdmVyZmxvdyBpbiAibipuIiAqLwor KyAgICAgICAgaW50IG4gPSB1bnJlcG9ydGVkX2NudCA+IDMwID8gMzAgOiB1bnJlcG9ydGVkX2Nu dDsKKysgICAgICAgIG4gPSBuICogbjsKKysgICAgICAgIGlmIChuID4gOSkKKysgICAgICAgICAg ICBsb2coXygiU2xlZXBpbmcgZm9yICVkIHNlY29uZHMiKSwgbik7CisrICAgICAgICBhYnJ0X29v cHNfc2lnbmFsZWRfc2xlZXAobik7IC8qIG1heCAxNSBtaW5zICovCisrICAgIH0KKysKKysgICAg cmV0dXJuIGVycm9yczsKKyt9CisrCisrLyogcmV0dXJucyBudW1iZXIgb2YgZXJyb3JzICovCisr dW5zaWduZWQgYWJydF9vb3BzX2NyZWF0ZV9kdW1wX2RpcnMoR0xpc3QgKm9vcHNfbGlzdCwgY29u c3QgY2hhciAqZHVtcF9sb2NhdGlvbiwgaW50IGZsYWdzKQorK3sKKysgICAgY29uc3QgaW50IG9v cHNfY250ID0gZ19saXN0X2xlbmd0aChvb3BzX2xpc3QpOworKyAgICB1bnNpZ25lZCBjb3VudGRv d24gPSBBQlJUX09PUFNfTUFYX0RVTVBFRF9DT1VOVDsgLyogZG8gbm90IHJlcG9ydCBodW5kcmVk cyBvZiBvb3BzZXMgKi8KKysKKysgICAgbG9nX25vdGljZSgiU2F2aW5nICV1IG9vcHNlcyBhcyBw cm9ibGVtIGRpcnMiLCBvb3BzX2NudCA+PSBjb3VudGRvd24gPyBjb3VudGRvd24gOiBvb3BzX2Nu dCk7CisrCisrICAgIGNoYXIgKmNtZGxpbmVfc3RyID0geG1hbGxvY19mb3Blbl9mZ2V0bGluZV9m Y2xvc2UoIi9wcm9jL2NtZGxpbmUiKTsKKysgICAgY2hhciAqZmlwc19lbmFibGVkID0geG1hbGxv Y19mb3Blbl9mZ2V0bGluZV9mY2xvc2UoIi9wcm9jL3N5cy9jcnlwdG8vZmlwc19lbmFibGVkIik7 CisrICAgIGNoYXIgKnByb2NfbW9kdWxlcyA9IHhtYWxsb2Nfb3Blbl9yZWFkX2Nsb3NlKCIvcHJv Yy9tb2R1bGVzIiwgLyptYXhzaXplOiovIE5VTEwpOworKyAgICBjaGFyICpzdXNwZW5kX3N0YXRz ID0geG1hbGxvY19vcGVuX3JlYWRfY2xvc2UoIi9zeXMva2VybmVsL2RlYnVnL3N1c3BlbmRfc3Rh dHMiLCAvKm1heHNpemU6Ki8gTlVMTCk7CisrCisrICAgIHRpbWVfdCB0ID0gdGltZShOVUxMKTsK KysgICAgY29uc3QgY2hhciAqaXNvX2RhdGUgPSBpc29fZGF0ZV9zdHJpbmcoJnQpOworKyAgICAv KiBkdW1wIHNob3VsZCBiZSByZWFkYWJsZSBieSBhbGwgaWYgd2UncmUgcnVuIHdpdGggLXggKi8K KysgICAgdWlkX3QgbXlfZXVpZCA9ICh1aWRfdCktMUw7CisrICAgIG1vZGVfdCBtb2RlID0gREVG QVVMVF9EVU1QX0RJUl9NT0RFIHwgU19JUk9USDsKKysgICAgLyogYW5kIHJlYWRhYmxlIG9ubHkg Zm9yIHRoZSBvd25lciBvdGhlcndpc2UgKi8KKysgICAgaWYgKCEoZmxhZ3MgJiBBQlJUX09PUFNf V09STERfUkVBREFCTEUpKQorKyAgICB7CisrICAgICAgICBtb2RlID0gREVGQVVMVF9EVU1QX0RJ Ul9NT0RFOworKyAgICAgICAgbXlfZXVpZCA9IGdldGV1aWQoKTsKKysgICAgfQorKworKyAgICBw aWRfdCBteV9waWQgPSBnZXRwaWQoKTsKKysgICAgdW5zaWduZWQgaWR4ID0gMDsKKysgICAgdW5z aWduZWQgZXJyb3JzID0gMDsKKysgICAgd2hpbGUgKGlkeCA8IG9vcHNfY250KQorKyAgICB7Cisr ICAgICAgICBjaGFyIGJhc2Vbc2l6ZW9mKCJvb3BzLVlZWVktTU0tREQtaGg6bW06c3MtJWx1LSVs dSIpICsgMiAqIHNpemVvZihsb25nKSozXTsKKysgICAgICAgIHNwcmludGYoYmFzZSwgIm9vcHMt JXMtJWx1LSVsdSIsIGlzb19kYXRlLCAobG9uZylteV9waWQsIChsb25nKWlkeCk7CisrICAgICAg ICBjaGFyICpwYXRoID0gY29uY2F0X3BhdGhfZmlsZShkdW1wX2xvY2F0aW9uLCBiYXNlKTsKKysK KysgICAgICAgIHN0cnVjdCBkdW1wX2RpciAqZGQgPSBkZF9jcmVhdGUocGF0aCwgLyp1aWQ6Ki8g bXlfZXVpZCwgbW9kZSk7CisrICAgICAgICBpZiAoZGQpCisrICAgICAgICB7CisrICAgICAgICAg ICAgZGRfY3JlYXRlX2Jhc2ljX2ZpbGVzKGRkLCAvKnVpZDoqLyBteV9ldWlkLCBOVUxMKTsKKysg ICAgICAgICAgICBhYnJ0X29vcHNfc2F2ZV9kYXRhX2luX2R1bXBfZGlyKGRkLCAoY2hhciopZ19s aXN0X250aF9kYXRhKG9vcHNfbGlzdCwgaWR4KyspLCBwcm9jX21vZHVsZXMpOworKyAgICAgICAg ICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfQUJSVF9WRVJTSU9OLCBWRVJTSU9OKTsKKysg ICAgICAgICAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVOQU1FX0FOQUxZWkVSLCAiS2VybmVsb29w cyIpOworKyAgICAgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfVFlQRSwgIktlcm5l bG9vcHMiKTsKKysgICAgICAgICAgICBpZiAoY21kbGluZV9zdHIpCisrICAgICAgICAgICAgICAg IGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfQ01ETElORSwgY21kbGluZV9zdHIpOworKyAgICAg ICAgICAgIGlmIChwcm9jX21vZHVsZXMpCisrICAgICAgICAgICAgICAgIGRkX3NhdmVfdGV4dChk ZCwgInByb2NfbW9kdWxlcyIsIHByb2NfbW9kdWxlcyk7CisrICAgICAgICAgICAgaWYgKGZpcHNf ZW5hYmxlZCAmJiBzdHJjbXAoZmlwc19lbmFibGVkLCAiMCIpICE9IDApCisrICAgICAgICAgICAg ICAgIGRkX3NhdmVfdGV4dChkZCwgImZpcHNfZW5hYmxlZCIsIGZpcHNfZW5hYmxlZCk7CisrICAg ICAgICAgICAgaWYgKHN1c3BlbmRfc3RhdHMpCisrICAgICAgICAgICAgICAgIGRkX3NhdmVfdGV4 dChkZCwgInN1c3BlbmRfc3RhdHMiLCBzdXNwZW5kX3N0YXRzKTsKKysgICAgICAgICAgICBkZF9j bG9zZShkZCk7CisrICAgICAgICAgICAgbm90aWZ5X25ld19wYXRoKHBhdGgpOworKyAgICAgICAg fQorKyAgICAgICAgZWxzZQorKyAgICAgICAgICAgIGVycm9ycysrOworKworKyAgICAgICAgZnJl ZShwYXRoKTsKKysKKysgICAgICAgIGlmICgtLWNvdW50ZG93biA9PSAwKQorKyAgICAgICAgICAg IGJyZWFrOworKworKyAgICAgICAgaWYgKGRkICYmIChmbGFncyAmIEFCUlRfT09QU19USFJPVFRM RV9DUkVBVElPTikpCisrICAgICAgICAgICAgaWYgKGFicnRfb29wc19zaWduYWxlZF9zbGVlcCgx KSA+IDApCisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICB9CisrCisrICAgIGZyZWUoY21k bGluZV9zdHIpOworKyAgICBmcmVlKHByb2NfbW9kdWxlcyk7CisrICAgIGZyZWUoZmlwc19lbmFi bGVkKTsKKysgICAgZnJlZShzdXNwZW5kX3N0YXRzKTsKKysKKysgICAgcmV0dXJuIGVycm9yczsK Kyt9CisrCisrc3RhdGljIGNoYXIgKmFicnRfb29wc19saXN0X29mX3RhaW50ZWRfbW9kdWxlcyhj b25zdCBjaGFyICpwcm9jX21vZHVsZXMpCisreworKyAgICBzdHJ1Y3Qgc3RyYnVmICpyZXN1bHQg PSBzdHJidWZfbmV3KCk7CisrCisrICAgIGNvbnN0IGNoYXIgKnAgPSBwcm9jX21vZHVsZXM7Cisr ICAgIGZvciAoOzspCisrICAgIHsKKysgICAgICAgIGNvbnN0IGNoYXIgKmVuZCA9IHN0cmNocm51 bChwLCAnXG4nKTsKKysgICAgICAgIGNvbnN0IGNoYXIgKnBhcmVuID0gc3RyY2hybnVsKHAsICco Jyk7CisrICAgICAgICAvKiBXZSBsb29rIGZvciBhIGxpbmUgd2l0aCB0aGlzIGZvcm1hdDoKKysg ICAgICAgICAqICJrdm1faW50ZWwgMTI2Mjg5IDAgLSBMaXZlIDB4ZjgyOWUwMDAgKHRhaW50X2Zs YWdzKSIKKysgICAgICAgICAqIHdoZXJlIHRhaW50X2ZsYWdzIGhhdmUgbGV0dGVycworKyAgICAg ICAgICogKGZsYWdzICcrJyBhbmQgJy0nIGluZGljYXRlICh1bilsb2FkaW5nLCB3ZSBtdXN0IGln bm9yZSB0aGVtKS4KKysgICAgICAgICAqLworKyAgICAgICAgd2hpbGUgKCsrcGFyZW4gPCBlbmQp CisrICAgICAgICB7CisrICAgICAgICAgICAgaWYgKCh1bnNpZ25lZCkodG91cHBlcigqcGFyZW4p IC0gJ0EnKSA8PSAnWictJ0EnKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgICAgc3Ry YnVmX2FwcGVuZF9zdHJmKHJlc3VsdCwgcmVzdWx0LT5sZW4gPT0gMCA/ICIlLipzIiA6ICIsJS4q cyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoc3RyY2hybnVsKHAsJyAnKSAtIHAp LCBwCisrICAgICAgICAgICAgICAgICk7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAg ICAgICAgIH0KKysgICAgICAgICAgICBpZiAoKnBhcmVuID09ICcpJykKKysgICAgICAgICAgICAg ICAgYnJlYWs7CisrICAgICAgICB9CisrCisrICAgICAgICBpZiAoKmVuZCA9PSAnXDAnKQorKyAg ICAgICAgICAgIGJyZWFrOworKyAgICAgICAgcCA9IGVuZCArIDE7CisrICAgIH0KKysKKysgICAg aWYgKHJlc3VsdC0+bGVuID09IDApCisrICAgIHsKKysgICAgICAgIHN0cmJ1Zl9mcmVlKHJlc3Vs dCk7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKyAgICByZXR1cm4gc3RyYnVmX2Zy ZWVfbm9idWYocmVzdWx0KTsKKyt9CisrCisrdm9pZCBhYnJ0X29vcHNfc2F2ZV9kYXRhX2luX2R1 bXBfZGlyKHN0cnVjdCBkdW1wX2RpciAqZGQsIGNoYXIgKm9vcHMsIGNvbnN0IGNoYXIgKnByb2Nf bW9kdWxlcykKKyt7CisrICAgIGNoYXIgKmZpcnN0X2xpbmUgPSBvb3BzOworKyAgICBjaGFyICpz ZWNvbmRfbGluZSA9IChjaGFyKilzdHJjaHIoZmlyc3RfbGluZSwgJ1xuJyk7IC8qIG5ldmVyIE5V TEwgKi8KKysgICAgKnNlY29uZF9saW5lKysgPSAnXDAnOworKworKyAgICBpZiAoZmlyc3RfbGlu ZVswXSkKKysgICAgICAgIGRkX3NhdmVfdGV4dChkZCwgRklMRU5BTUVfS0VSTkVMLCBmaXJzdF9s aW5lKTsKKysgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9CQUNLVFJBQ0UsIHNlY29uZF9s aW5lKTsKKysKKysgICAgLyogY2hlY2sgaWYgdHJhY2UgZG9lc24ndCBoYXZlIGxpbmU6ICdZb3Vy IEJJT1MgaXMgYnJva2VuJyAqLworKyAgICBpZiAoc3Ryc3RyKHNlY29uZF9saW5lLCAiWW91ciBC SU9TIGlzIGJyb2tlbiIpKQorKyAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9OT1Rf UkVQT1JUQUJMRSwKKysgICAgICAgICAgICAgICAgXygiQSBrZXJuZWwgcHJvYmxlbSBvY2N1cnJl ZCBiZWNhdXNlIG9mIGJyb2tlbiBCSU9TLiAiCisrICAgICAgICAgICAgICAgICAgIlVuZm9ydHVu YXRlbHksIHN1Y2ggcHJvYmxlbXMgYXJlIG5vdCBmaXhhYmxlIGJ5IGtlcm5lbCBtYWludGFpbmVy cy4iKSk7CisrICAgIC8qIGNoZWNrIGlmIHRyYWNlIGRvZXNuJ3QgaGF2ZSBsaW5lOiAnWW91ciBo YXJkd2FyZSBpcyB1bnN1cHBvcnRlZCcgKi8KKysgICAgZWxzZSBpZiAoc3Ryc3RyKHNlY29uZF9s aW5lLCAiWW91ciBoYXJkd2FyZSBpcyB1bnN1cHBvcnRlZCIpKQorKyAgICAgICAgZGRfc2F2ZV90 ZXh0KGRkLCBGSUxFTkFNRV9OT1RfUkVQT1JUQUJMRSwKKysgICAgICAgICAgICAgICAgXygiQSBr ZXJuZWwgcHJvYmxlbSBvY2N1cnJlZCwgYnV0IHlvdXIgaGFyZHdhcmUgaXMgdW5zdXBwb3J0ZWQs ICIKKysgICAgICAgICAgICAgICAgICAidGhlcmVmb3JlIGtlcm5lbCBtYWludGFpbmVycyBhcmUg dW5hYmxlIHRvIGZpeCB0aGlzIHByb2JsZW0uIikpOworKyAgICBlbHNlCisrICAgIHsKKysgICAg ICAgIGNoYXIgKnRhaW50ZWRfc2hvcnQgPSBrZXJuZWxfdGFpbnRlZF9zaG9ydChzZWNvbmRfbGlu ZSk7CisrICAgICAgICBpZiAodGFpbnRlZF9zaG9ydCkKKysgICAgICAgIHsKKysgICAgICAgICAg ICBsb2dfbm90aWNlKCJLZXJuZWwgaXMgdGFpbnRlZCAnJXMnIiwgdGFpbnRlZF9zaG9ydCk7Cisr ICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9UQUlOVEVEX1NIT1JULCB0YWlu dGVkX3Nob3J0KTsKKysKKysgICAgICAgICAgICBjaGFyICp0bnRfbG9uZyA9IGtlcm5lbF90YWlu dGVkX2xvbmcodGFpbnRlZF9zaG9ydCk7CisrICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBG SUxFTkFNRV9UQUlOVEVEX0xPTkcsIHRudF9sb25nKTsKKysgICAgICAgICAgICBmcmVlKHRudF9s b25nKTsKKysKKysgICAgICAgICAgICBzdHJ1Y3Qgc3RyYnVmICpyZWFzb24gPSBzdHJidWZfbmV3 KCk7CisrICAgICAgICAgICAgY29uc3QgY2hhciAqZm10ID0gXygiQSBrZXJuZWwgcHJvYmxlbSBv Y2N1cnJlZCwgYnV0IHlvdXIga2VybmVsIGhhcyBiZWVuICIKKysgICAgICAgICAgICAgICAgICAg ICJ0YWludGVkIChmbGFnczolcykuIEtlcm5lbCBtYWludGFpbmVycyBhcmUgdW5hYmxlIHRvICIK KysgICAgICAgICAgICAgICAgICAgICJkaWFnbm9zZSB0YWludGVkIHJlcG9ydHMuIik7CisrICAg ICAgICAgICAgc3RyYnVmX2FwcGVuZF9zdHJmKHJlYXNvbiwgZm10LCB0YWludGVkX3Nob3J0KTsK KysKKysgICAgICAgICAgICBjaGFyICptb2RsaXN0ID0gIXByb2NfbW9kdWxlcyA/IE5VTEwgOiBh YnJ0X29vcHNfbGlzdF9vZl90YWludGVkX21vZHVsZXMocHJvY19tb2R1bGVzKTsKKysgICAgICAg ICAgICBpZiAobW9kbGlzdCkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIHN0cmJ1 Zl9hcHBlbmRfc3RyZihyZWFzb24sIF8oIiBUYWludGVkIG1vZHVsZXM6ICVzLiIpLCBtb2RsaXN0 KTsKKysgICAgICAgICAgICAgICAgZnJlZShtb2RsaXN0KTsKKysgICAgICAgICAgICB9CisrCisr ICAgICAgICAgICAgZGRfc2F2ZV90ZXh0KGRkLCBGSUxFTkFNRV9OT1RfUkVQT1JUQUJMRSwgcmVh c29uLT5idWYpOworKyAgICAgICAgICAgIHN0cmJ1Zl9mcmVlKHJlYXNvbik7CisrICAgICAgICAg ICAgZnJlZSh0YWludGVkX3Nob3J0KTsKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvLyBU T0RPOiBhZGQgIktlcm5lbCBvb3BzOiAiIHByZWZpeCwgc28gdGhhdCBhbGwgb29wc2VzIGhhdmUg cmVjb2duaXphYmxlIEZJTEVOQU1FX1JFQVNPTj8KKysgICAgLy8ga2VybmVsIG9vcHMgMXN0IGxp bmUgbWF5IGxvb2sgcXVpdGUgcHV6emxpbmcgb3RoZXJ3aXNlLi4uCisrICAgIHN0cmNocm51bChz ZWNvbmRfbGluZSwgJ1xuJylbMF0gPSAnXDAnOworKyAgICBkZF9zYXZlX3RleHQoZGQsIEZJTEVO QU1FX1JFQVNPTiwgc2Vjb25kX2xpbmUpOworK30KKysKKytpbnQgYWJydF9vb3BzX3NpZ25hbGVk X3NsZWVwKGludCBzZWNvbmRzKQorK3sKKysgICAgc2lnc2V0X3Qgc2V0OworKyAgICBzaWdlbXB0 eXNldCgmc2V0KTsKKysgICAgc2lnYWRkc2V0KCZzZXQsIFNJR1RFUk0pOworKyAgICBzaWdhZGRz ZXQoJnNldCwgU0lHSU5UKTsKKysgICAgc2lnYWRkc2V0KCZzZXQsIFNJR0hVUCk7CisrCisrICAg IHN0cnVjdCB0aW1lc3BlYyB0aW1lb3V0OworKyAgICB0aW1lb3V0LnR2X3NlYyA9IHNlY29uZHM7 CisrICAgIHRpbWVvdXQudHZfbnNlYyA9IDA7CisrCisrICAgIHJldHVybiBnX2FicnRfb29wc19z bGVlcF93b2tlX3VwX29uX3NpZ25hbCA9IHNpZ3RpbWVkd2FpdCgmc2V0LCBOVUxMLCAmdGltZW91 dCk7CisrfQorKworK2NoYXIgKmFicnRfb29wc19zdHJpbmdfZmlsdGVyX3JlZ2V4KHZvaWQpCisr eworKyAgICBtYXBfc3RyaW5nX3QgKnNldHRpbmdzID0gbmV3X21hcF9zdHJpbmcoKTsKKysKKysg ICAgbG9hZF9hYnJ0X3BsdWdpbl9jb25mX2ZpbGUoIm9vcHMuY29uZiIsIHNldHRpbmdzKTsKKysK KysgICAgaW50IG9ubHlfZmF0YWxfbWNlID0gMTsKKysgICAgdHJ5X2dldF9tYXBfc3RyaW5nX2l0 ZW1fYXNfYm9vbChzZXR0aW5ncywgIk9ubHlGYXRhbE1DRSIsICZvbmx5X2ZhdGFsX21jZSk7Cisr CisrICAgIGZyZWVfbWFwX3N0cmluZyhzZXR0aW5ncyk7CisrCisrICAgIGlmIChvbmx5X2ZhdGFs X21jZSkKKysgICAgICAgIHJldHVybiB4c3RyZHVwKCJeTWFjaGluZSAuKiQiKTsKKysKKysgICAg cmV0dXJuIE5VTEw7CisrfQorZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL29vcHMtdXRpbHMuaCBi L3NyYy9wbHVnaW5zL29vcHMtdXRpbHMuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjk0N2Y2NTIKKy0tLSAvZGV2L251bGwKKysrKyBiL3NyYy9wbHVnaW5zL29vcHMtdXRp bHMuaAorQEAgLTAsMCArMSw0OCBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE0ICBBQlJU IHRlYW0KKysgKiBDb3B5cmlnaHQgKEMpIDIwMTQgIFJlZEhhdCBJbmMKKysgKgorKyAqIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgKiBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAq LworKyNpZm5kZWYgX0FCUlRfT09QU19VVElMU19IXworKyNkZWZpbmUgX0FCUlRfT09QU19VVElM U19IXworKworKyNpbmNsdWRlICJsaWJhYnJ0LmgiCisrCisrLyogSG93IG1hbnkgcHJvYmxlbSBk aXJzIHRvIGNyZWF0ZSBhdCBtb3N0PworKyAqIEFsc28gY2F1c2VzIGNvb2xkb3duIHNsZWVwIHdp dGggLXQgaWYgZXhjZWVkZWQgLQorKyAqIHVzZWZ1bCB3aGVuIGNhbGxlZCBmcm9tIGEgbG9nIHdh dGNoZXIuCisrICovCisrI2RlZmluZSBBQlJUX09PUFNfTUFYX0RVTVBFRF9DT1VOVCAgNQorKwor KyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorKworK2VudW0gewor KyAgICBBQlJUX09PUFNfVEhST1RUTEVfQ1JFQVRJT04gPSAxIDw8IDAsCisrICAgIEFCUlRfT09Q U19XT1JMRF9SRUFEQUJMRSAgICA9IDEgPDwgMSwKKysgICAgQUJSVF9PT1BTX1BSSU5UX1NURE9V VCAgICAgID0gMSA8PCAyLAorK307CisrCisraW50IGdfYWJydF9vb3BzX3NsZWVwX3dva2VfdXBf b25fc2lnbmFsOworKworK2ludCBhYnJ0X29vcHNfcHJvY2Vzc19saXN0KEdMaXN0ICpvb3BzX2xp c3QsIGNvbnN0IGNoYXIgKmR1bXBfbG9jYXRpb24sIGludCBmbGFncyk7CisrdW5zaWduZWQgYWJy dF9vb3BzX2NyZWF0ZV9kdW1wX2RpcnMoR0xpc3QgKm9vcHNfbGlzdCwgY29uc3QgY2hhciAqZHVt cF9sb2NhdGlvbiwgaW50IGZsYWdzKTsKKyt2b2lkIGFicnRfb29wc19zYXZlX2RhdGFfaW5fZHVt cF9kaXIoc3RydWN0IGR1bXBfZGlyICpkZCwgY2hhciAqb29wcywgY29uc3QgY2hhciAqcHJvY19t b2R1bGVzKTsKKytpbnQgYWJydF9vb3BzX3NpZ25hbGVkX3NsZWVwKGludCBzZWNvbmRzKTsKKytj aGFyICphYnJ0X29vcHNfc3RyaW5nX2ZpbHRlcl9yZWdleCh2b2lkKTsKKysKKysjaWZkZWYgX19j cGx1c3BsdXMKKyt9CisrI2VuZGlmCisrCisrI2VuZGlmIC8qX0FCUlRfT09QU19VVElMU19IXyov CistLSAKKzEuOS4zCisKCmRpZmYgLS1naXQgYS8wMDA4LWFicnQtam91cm5hbC1maXgtaW5jbHVk ZXMucGF0Y2ggYi8wMDA4LWFicnQtam91cm5hbC1maXgtaW5jbHVkZXMucGF0Y2gKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRlOTdlOAotLS0gL2Rldi9udWxsCisrKyBiLzAw MDgtYWJydC1qb3VybmFsLWZpeC1pbmNsdWRlcy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9t IDY1ODFhYTlhMjUzMzRhYWE5YWJkMWU0MDY3NjY2NDYwMmIzNGVhMGIgTW9uIFNlcCAxNyAwMDow MDowMCAyMDAxCitGcm9tOiBKYWt1YiBGaWxhayA8amZpbGFrQHJlZGhhdC5jb20+CitEYXRlOiBU dWUsIDE1IEp1bCAyMDE0IDEzOjEwOjA0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggOC85XSBhYnJ0 LWpvdXJuYWw6IGZpeCBpbmNsdWRlcworCitSZWxhdGVkIHRvIHJoYnojMTA1OTcyNAorCitTaWdu ZWQtb2ZmLWJ5OiBKYWt1YiBGaWxhayA8amZpbGFrQHJlZGhhdC5jb20+CistLS0KKyBzcmMvcGx1 Z2lucy9hYnJ0LWpvdXJuYWwuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24o KyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wbHVnaW5zL2FicnQtam91cm5h bC5jIGIvc3JjL3BsdWdpbnMvYWJydC1qb3VybmFsLmMKK2luZGV4IDQ3MjM1N2QuLjg5YzgzOTMg MTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9hYnJ0LWpvdXJuYWwuYworKysrIGIvc3JjL3BsdWdp bnMvYWJydC1qb3VybmFsLmMKK0BAIC0xNiwxMCArMTYsMTAgQEAKKyAjaW5jbHVkZSA8c2lnbmFs Lmg+CisgI2luY2x1ZGUgPHBvbGwuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUg PGFicnQvbGliYWJydC5oPgorICNpbmNsdWRlIDxzdGRpby5oPgorIAorICNpbmNsdWRlICJhYnJ0 LWpvdXJuYWwuaCIKKysjaW5jbHVkZSAibGliYWJydC5oIgorIAorICNpbmNsdWRlIDxzeXN0ZW1k L3NkLWpvdXJuYWwuaD4KKyAKKy0tIAorMS45LjMKKwoKZGlmZiAtLWdpdCBhL2FicnQuc3BlYyBi L2FicnQuc3BlYwppbmRleCAwZDQwMzNjLi4xY2QyZWJlIDEwMDY0NAotLS0gYS9hYnJ0LnNwZWMK KysrIGIvYWJydC5zcGVjCkBAIC00MCw3ICs0MCw3IEBACiBTdW1tYXJ5OiBBdXRvbWF0aWMgYnVn IGRldGVjdGlvbiBhbmQgcmVwb3J0aW5nIHRvb2wKIE5hbWU6IGFicnQKIFZlcnNpb246IDIuMi4y Ci1SZWxlYXNlOiAzJXs/ZGlzdH0KK1JlbGVhc2U6IDQlez9kaXN0fQogTGljZW5zZTogR1BMdjIr CiBHcm91cDogQXBwbGljYXRpb25zL1N5c3RlbQogVVJMOiBodHRwczovL2ZlZG9yYWhvc3RlZC5v cmcvYWJydC8KQEAgLTQ4LDYgKzQ4LDE2IEBAIFNvdXJjZTogaHR0cHM6Ly9mZWRvcmFob3N0ZWQu b3JnL3JlbGVhc2VkLyV7bmFtZX0vJXtuYW1lfS0le3ZlcnNpb259LnRhci5negogIyBkb24ndCBy ZW1vdmUgdGhpcyBwYXRjaCwgcGFja2FnZXMgaW4gcmF3aGlkZSBhcmUgbm90IHNpZ25lZCEKIFBh dGNoMDogZGlzYWJsZS1PcGVuR1BHQ2hlY2staW4tRmVkb3JhLVJhd2hpZGUucGF0Y2gKIAorI1Bh dGNoMTogMDAwMS11cGRhdGUtLmdpdGlnbm9yZS5wYXRjaAorUGF0Y2gyOiAwMDAyLXB5dGhvbi1z dXBwb3J0LWV4Y2VwdGlvbnMtd2l0aG91dC10cmFjZWJhY2sucGF0Y2gKKyNQYXRjaDM6IDAwMDMt dXNlLXNhdHlyLXdpdGgtbmF0aXZlLXVud2lkZXIucGF0Y2gKK1BhdGNoNDogMDAwNC1rb29wcy1k dW1wLW9vcHNlcy1mcm9tLXN5c3RlbWQtam91cm5hbC5wYXRjaAorI1BhdGNoNTogMDAwNS1zcGVj LWFkZC10aGUtam91cm5hbC1vb3BzLXN0dWZmLnBhdGNoCisjUGF0Y2g2OiAwMDA2LXRlc3RzdWl0 ZS1hZGQtdGVzdHMtZm9yLWFicnQtZHVtcC1qb3VybmFsLW9vcHMucGF0Y2gKKyNQYXRjaDc6IDAw MDctc3BlYy1hZGQtYS1idWlsZC1yZXF1aXJlLWl0ZW0tZm9yLXN5c3RlbWQtam91cm5hbC5wYXRj aAorUGF0Y2g4OiAwMDA4LWFicnQtam91cm5hbC1maXgtaW5jbHVkZXMucGF0Y2gKKyNQYXRjaDk6 IDAwMDktc3BlYy1kb24tdC11c2UtbmF0aXZlLXVud2luZGVyLW9uLWFybS1hcmNoLnBhdGNoCisK ICMgJyUlYXV0b3NldHVwIC1TIGdpdCcgLT4gZ2l0CiBCdWlsZFJlcXVpcmVzOiBnaXQKIApAQCAt MTgxLDYgKzE5MSw3IEBAIHdoaWNoIGlzIGFibGUgdG8gYW5hbHl6ZSBDL0MrKyBjcmFzaGVzIHJl bW90ZWx5LgogJXBhY2thZ2UgYWRkb24ta2VybmVsb29wcwogU3VtbWFyeTogJXtuYW1lfSdzIGtl cm5lbG9vcHMgYWRkb24KIEdyb3VwOiBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCitCdWls ZFJlcXVpcmVzOiBzeXN0ZW1kLWRldmVsCiBSZXF1aXJlczogY3VybAogUmVxdWlyZXM6ICV7bmFt ZX0gPSAle3ZlcnNpb259LSV7cmVsZWFzZX0KICVpZiAwJXshP3JoZWw6MX0KQEAgLTQ1OSw2ICs0 NzAsNyBAQCBta2RpciAtcCAkUlBNX0JVSUxEX1JPT1QvdmFyL2NhY2hlL2FicnQtZGkKIG1rZGly IC1wICRSUE1fQlVJTERfUk9PVC92YXIvcnVuL2FicnQKIG1rZGlyIC1wICRSUE1fQlVJTERfUk9P VC92YXIvdG1wL2FicnQKIG1rZGlyIC1wICRSUE1fQlVJTERfUk9PVC92YXIvc3Bvb2wvYWJydC11 cGxvYWQKK21rZGlyIC1wICRSUE1fQlVJTERfUk9PVCV7X2xvY2Fsc3RhdGVkaXJ9L2xpYi9hYnJ0 CiAKIGRlc2t0b3AtZmlsZS1pbnN0YWxsIFwKICAgICAgICAgLS1kaXIgJHtSUE1fQlVJTERfUk9P VH0le19kYXRhZGlyfS9hcHBsaWNhdGlvbnMgXApAQCAtNzk4LDEwICs4MTAsMTUgQEAgZ3RrLXVw ZGF0ZS1pY29uLWNhY2hlICV7X2RhdGFkaXJ9L2ljb25zL2hpY29sb3IgJj4vZGV2L251bGwgfHwg OgogJWVsc2UKICV7X2luaXRyZGRpcn0vYWJydC1vb3BzCiAlZW5kaWYKKworJWRpciAle19sb2Nh bHN0YXRlZGlyfS9saWIvYWJydAorCiAle19iaW5kaXJ9L2FicnQtZHVtcC1vb3BzCisle19iaW5k aXJ9L2FicnQtZHVtcC1qb3VybmFsLW9vcHMKICV7X2JpbmRpcn0vYWJydC1hY3Rpb24tYW5hbHl6 ZS1vb3BzCiAle19iaW5kaXJ9L2FicnQtYWN0aW9uLXNhdmUta2VybmVsLWRhdGEKICV7X21hbmRp cn0vbWFuMS9hYnJ0LWR1bXAtb29wcy4xKgorJXtfbWFuZGlyfS9tYW4xL2FicnQtZHVtcC1qb3Vy bmFsLW9vcHMuMSoKICV7X21hbmRpcn0vbWFuMS9hYnJ0LWFjdGlvbi1hbmFseXplLW9vcHMuMSoK ICV7X21hbmRpcn0vbWFuMS9hYnJ0LWFjdGlvbi1zYXZlLWtlcm5lbC1kYXRhLjEqCiAKQEAgLTky Nyw2ICs5NDQsMTAgQEAgZ3RrLXVwZGF0ZS1pY29uLWNhY2hlICV7X2RhdGFkaXJ9L2ljb25zL2hp Y29sb3IgJj4vZGV2L251bGwgfHwgOgogJWNvbmZpZyhub3JlcGxhY2UpICV7X3N5c2NvbmZkaXJ9 L3Byb2ZpbGUuZC9hYnJ0LWNvbnNvbGUtbm90aWZpY2F0aW9uLnNoCiAKICVjaGFuZ2Vsb2cKKyog V2VkIEp1bCAxNiAyMDE0IEpha3ViIEZpbGFrIDxqZmlsYWtAcmVkaGF0LmNvbT4gMi4yLjItNAor LSBkdW1wIGtlcm5lbCBvb3BzZXMgZnJvbSBzeXN0ZW1kLWpvdXJuYWwKKy0gc3VwcG9ydCBTeW50 YXhFcnJvciBQeXRob24gZXhjZXB0aW9ucworCiAqIFdlZCBKdWwgMTYgMjAxNCBKYWt1YiBGaWxh ayA8amZpbGFrQHJlZGhhdC5jb20+IDIuMi4yLTMKIC0gZG9uJ3QgdXNlIG5hdGl2ZSB1bndpbmRl ciBvbiBhcm0KIAo=